@eternalheart/angular-file-preview 1.6.5 → 1.6.6
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/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-UobTf36G.mjs → eternalheart-angular-file-preview-eternalheart-angular-file-preview-RPRQhVCg.mjs} +39 -32
- package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-RPRQhVCg.mjs.map +1 -0
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-pG0Ko5mI-DthQJg-X.mjs → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-3-0UYUJy-CD5hv6Xd.mjs} +27 -8
- package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-3-0UYUJy-CD5hv6Xd.mjs.map +1 -0
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-D35x1nwM-CugEEXjg.mjs → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-5zqP72gq-lAwuxCQV.mjs} +2 -2
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-D35x1nwM-CugEEXjg.mjs.map → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-5zqP72gq-lAwuxCQV.mjs.map} +1 -1
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CDjKPqyW-CmX5sdkL.mjs → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-71x_jK0V-BwzFr9L0.mjs} +2 -2
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CDjKPqyW-CmX5sdkL.mjs.map → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-71x_jK0V-BwzFr9L0.mjs.map} +1 -1
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-Bv3JRXKn-B4Wewc-4.mjs → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-7KavuB8u-CFBWzMGm.mjs} +2 -2
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-Bv3JRXKn-B4Wewc-4.mjs.map → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-7KavuB8u-CFBWzMGm.mjs.map} +1 -1
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-DsNNZ59Q-C8MaSME6.mjs → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-B-TVstXS-Dh1KMX_8.mjs} +2 -2
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-DsNNZ59Q-C8MaSME6.mjs.map → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-B-TVstXS-Dh1KMX_8.mjs.map} +1 -1
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-6dZS_Cfs-B1itLV5R.mjs → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-B4L1kfY--BHy3x_oj.mjs} +2 -2
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-6dZS_Cfs-B1itLV5R.mjs.map → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-B4L1kfY--BHy3x_oj.mjs.map} +1 -1
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-D9jJNzeM-mWX59Aj2.mjs → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-B56pscOG-ClsvukS5.mjs} +4 -5
- package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-B56pscOG-ClsvukS5.mjs.map +1 -0
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-DbmuvdvN-C29uLyt2.mjs → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-BNU3NWQp-C5U5krn9.mjs} +2 -2
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-DbmuvdvN-C29uLyt2.mjs.map → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-BNU3NWQp-C5U5krn9.mjs.map} +1 -1
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-B1ANUCTy-BRs7TMLn.mjs → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-BbRwLog8-B9Sw6HEr.mjs} +2 -2
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-B1ANUCTy-BRs7TMLn.mjs.map → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-BbRwLog8-B9Sw6HEr.mjs.map} +1 -1
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-BGqTRZbm-CAOLRw20.mjs → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-BeL4xzpS-eYswtncp.mjs} +2 -2
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-BGqTRZbm-CAOLRw20.mjs.map → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-BeL4xzpS-eYswtncp.mjs.map} +1 -1
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-C518mdUd-B5SCzrzU.mjs → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-BeTNUne--CwUzGLn3.mjs} +2 -2
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-C518mdUd-B5SCzrzU.mjs.map → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-BeTNUne--CwUzGLn3.mjs.map} +1 -1
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-DufW2Fuc-CTosCut6.mjs → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-C3uCX4wD-CoZ795pn.mjs} +3 -3
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-DufW2Fuc-CTosCut6.mjs.map → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-C3uCX4wD-CoZ795pn.mjs.map} +1 -1
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-C0McUoqT-DJ35bhIz.mjs → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CBbnvps8-ClkiJKQ9.mjs} +2 -2
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-C0McUoqT-DJ35bhIz.mjs.map → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CBbnvps8-ClkiJKQ9.mjs.map} +1 -1
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-Cb1RLXeO-Bj9gjS1Z.mjs → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CMeATokn-iD-SSbnK.mjs} +2 -2
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-Cb1RLXeO-Bj9gjS1Z.mjs.map → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CMeATokn-iD-SSbnK.mjs.map} +1 -1
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CHi9tOe0-NOeQYAnM.mjs → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CZQnGY6g-DexFUJLU.mjs} +2 -2
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CHi9tOe0-NOeQYAnM.mjs.map → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CZQnGY6g-DexFUJLU.mjs.map} +1 -1
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-TSTa_Q7E-DBhkL6pV.mjs → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-Cjjsjooa-24Qg-LjD.mjs} +2 -2
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-TSTa_Q7E-DBhkL6pV.mjs.map → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-Cjjsjooa-24Qg-LjD.mjs.map} +1 -1
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CSCTj7ft-BfqruUyY.mjs → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CpiK7yUb-T48dTv66.mjs} +3 -3
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CSCTj7ft-BfqruUyY.mjs.map → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CpiK7yUb-T48dTv66.mjs.map} +1 -1
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index--7d8Hgi0-D-sg24Qs.mjs → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CyO8N29I-CMesNfcT.mjs} +2 -2
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index--7d8Hgi0-D-sg24Qs.mjs.map → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CyO8N29I-CMesNfcT.mjs.map} +1 -1
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-Cw90Kdyg-BzrW_cyx.mjs → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-D6UfVKL_-CAqlAQIN.mjs} +2 -2
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-Cw90Kdyg-BzrW_cyx.mjs.map → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-D6UfVKL_-CAqlAQIN.mjs.map} +1 -1
- package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-DWe1kVtU-CJlU6sOy.mjs +597 -0
- package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-DWe1kVtU-CJlU6sOy.mjs.map +1 -0
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-BEaqpRV8-BidVIVlO.mjs → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-QydIBtJH-Dw052TRv.mjs} +2 -2
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-BEaqpRV8-BidVIVlO.mjs.map → eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-QydIBtJH-Dw052TRv.mjs.map} +1 -1
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-shiki-highlight-CL9cG481-BKfwdOpN.mjs → eternalheart-angular-file-preview-eternalheart-angular-file-preview-shiki-highlight-CE3FZF7D-BjdXRpvN.mjs} +2 -2
- package/lib/fesm2022/{eternalheart-angular-file-preview-eternalheart-angular-file-preview-shiki-highlight-CL9cG481-BKfwdOpN.mjs.map → eternalheart-angular-file-preview-eternalheart-angular-file-preview-shiki-highlight-CE3FZF7D-BjdXRpvN.mjs.map} +1 -1
- package/lib/fesm2022/eternalheart-angular-file-preview.mjs +1 -1
- package/lib/index.css +340 -60
- package/lib/index.d.ts +1 -1
- package/lib/renderers/Audio/index.d.ts +1 -18
- package/lib/renderers/Cad/index.d.ts +1 -0
- package/lib/version.d.ts +1 -0
- package/package.json +2 -1
- package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-UobTf36G.mjs.map +0 -1
- package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CQwhffym-DAGw4Xy_.mjs +0 -823
- package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CQwhffym-DAGw4Xy_.mjs.map +0 -1
- package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-D9jJNzeM-mWX59Aj2.mjs.map +0 -1
- package/lib/fesm2022/eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-pG0Ko5mI-DthQJg-X.mjs.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-C518mdUd-B5SCzrzU.mjs","sources":["../fesm2022/eternalheart-angular-file-preview-index-C518mdUd.mjs"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { input, viewChild, afterNextRender, effect, inject, DestroyRef, ChangeDetectionStrategy, Component, signal, computed, untracked } from '@angular/core';\nimport { parse } from 'opentype.js';\nimport { L as LocaleService, R as RequestService, T as ThemeService, g as getFallbackTranslator } from './eternalheart-angular-file-preview-eternalheart-angular-file-preview-DXwNhxAB.mjs';\nimport { R as RendererError } from './eternalheart-angular-file-preview-RendererError-DtNihCIX.mjs';\n\nclass FontPreviewLine {\n constructor() {\n this.font = input(null);\n this.text = input.required();\n this.fontSize = input.required();\n this.renderMode = input.required();\n this.theme = input.required();\n this.wrapper = viewChild('wrapperRef');\n this.canvas = viewChild('canvasRef');\n this.resizeObserver = null;\n afterNextRender(() => {\n if (this.renderMode() === 'canvas') {\n this.drawCanvas();\n this.setupObserver();\n }\n });\n effect(() => {\n this.text();\n this.fontSize();\n this.renderMode();\n this.theme();\n this.font();\n if (this.renderMode() === 'canvas') {\n requestAnimationFrame(() => {\n this.drawCanvas();\n this.setupObserver();\n });\n }\n });\n inject(DestroyRef).onDestroy(() => this.teardownObserver());\n }\n teardownObserver() {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n this.resizeObserver = null;\n }\n }\n drawCanvas() {\n const wrapper = this.wrapper()?.nativeElement;\n const canvas = this.canvas()?.nativeElement;\n const font = this.font();\n if (!wrapper || !canvas || this.renderMode() !== 'canvas' || !font)\n return;\n const containerWidth = wrapper.clientWidth || 600;\n const dpr = window.devicePixelRatio || 1;\n const fontSize = this.fontSize();\n const lineHeight = fontSize * 1.4;\n const fillColor = this.theme() === 'light' ? '#1f2937' : '#f3f4f6';\n const wrapLine = (line) => {\n if (!line)\n return [''];\n const result = [];\n let buf = '';\n for (const ch of Array.from(line)) {\n const next = buf + ch;\n const w = font.getAdvanceWidth(next, fontSize);\n if (w > containerWidth && buf) {\n result.push(buf);\n buf = ch;\n }\n else {\n buf = next;\n }\n }\n if (buf)\n result.push(buf);\n return result;\n };\n const wrappedLines = [];\n this.text().split('\\n').forEach((seg) => {\n wrapLine(seg).forEach((l) => wrappedLines.push(l));\n });\n const width = containerWidth;\n const height = lineHeight * wrappedLines.length + 4;\n canvas.width = Math.max(1, Math.floor(width * dpr));\n canvas.height = Math.max(1, Math.floor(height * dpr));\n canvas.style.width = `${width}px`;\n canvas.style.height = `${height}px`;\n const ctx = canvas.getContext('2d');\n if (!ctx)\n return;\n ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n ctx.clearRect(0, 0, width, height);\n wrappedLines.forEach((line, idx) => {\n const path = font.getPath(line, 0, fontSize + idx * lineHeight, fontSize);\n path.fill = fillColor;\n path.draw(ctx);\n });\n }\n setupObserver() {\n this.teardownObserver();\n if (this.renderMode() !== 'canvas')\n return;\n if (typeof ResizeObserver === 'undefined')\n return;\n const wrapper = this.wrapper()?.nativeElement;\n if (!wrapper)\n return;\n this.resizeObserver = new ResizeObserver(() => this.drawCanvas());\n this.resizeObserver.observe(wrapper);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.25\", ngImport: i0, type: FontPreviewLine, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"19.2.25\", type: FontPreviewLine, isStandalone: true, selector: \"afp-font-preview-line\", inputs: { font: { classPropertyName: \"font\", publicName: \"font\", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: \"text\", publicName: \"text\", isSignal: true, isRequired: true, transformFunction: null }, fontSize: { classPropertyName: \"fontSize\", publicName: \"fontSize\", isSignal: true, isRequired: true, transformFunction: null }, renderMode: { classPropertyName: \"renderMode\", publicName: \"renderMode\", isSignal: true, isRequired: true, transformFunction: null }, theme: { classPropertyName: \"theme\", publicName: \"theme\", isSignal: true, isRequired: true, transformFunction: null } }, viewQueries: [{ propertyName: \"wrapper\", first: true, predicate: [\"wrapperRef\"], descendants: true, isSignal: true }, { propertyName: \"canvas\", first: true, predicate: [\"canvasRef\"], descendants: true, isSignal: true }], ngImport: i0, template: `\n <div #wrapperRef class=\"afp-w-full\">\n @if (renderMode() === 'canvas') {\n <canvas #canvasRef class=\"afp-block\"></canvas>\n } @else {\n <div\n class=\"afp-w-full afp-text-fg-primary afp-whitespace-pre-wrap afp-break-words\"\n [style.fontFamily]=\"'PreviewFont, sans-serif'\"\n [style.fontSize]=\"fontSize() + 'px'\"\n [style.lineHeight]=\"1.4\"\n >{{ text() }}</div>\n }\n </div>\n `, isInline: true, styles: [\":host{display:block;width:100%}\\n\"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.25\", ngImport: i0, type: FontPreviewLine, decorators: [{\n type: Component,\n args: [{ selector: 'afp-font-preview-line', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: `\n <div #wrapperRef class=\"afp-w-full\">\n @if (renderMode() === 'canvas') {\n <canvas #canvasRef class=\"afp-block\"></canvas>\n } @else {\n <div\n class=\"afp-w-full afp-text-fg-primary afp-whitespace-pre-wrap afp-break-words\"\n [style.fontFamily]=\"'PreviewFont, sans-serif'\"\n [style.fontSize]=\"fontSize() + 'px'\"\n [style.lineHeight]=\"1.4\"\n >{{ text() }}</div>\n }\n </div>\n `, styles: [\":host{display:block;width:100%}\\n\"] }]\n }], ctorParameters: () => [] });\n\nconst MAGIC_WOFF2 = 0x774f4632;\nconst MAGIC_WOFF = 0x774f4646;\nconst MAGIC_OTTO = 0x4f54544f;\nconst MAGIC_TTF1 = 0x00010000;\nconst MAGIC_TRUE = 0x74727565;\nconst detectMagic = (buf) => {\n if (buf.byteLength < 4)\n return 'unknown';\n const m = new DataView(buf).getUint32(0);\n if (m === MAGIC_WOFF2)\n return 'woff2';\n if (m === MAGIC_WOFF)\n return 'woff';\n if (m === MAGIC_OTTO)\n return 'otf';\n if (m === MAGIC_TTF1 || m === MAGIC_TRUE)\n return 'ttf';\n return 'unknown';\n};\nconst DEFAULT_SAMPLES = {\n latin: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ\\nabcdefghijklmnopqrstuvwxyz\\n0123456789 .,;:!?@#$%&*()[]{}',\n chinese: '春夏秋冬东南西北天地人和风雨雷电山水日月',\n mixed: 'The Quick Brown Fox Jumps Over The Lazy Dog\\n敏捷的棕色狐狸跳过了懒狗',\n};\nconst SIZES = [72, 48, 36, 24, 18];\nclass FontRenderer {\n constructor() {\n this.url = input.required();\n this.locale = inject(LocaleService, { optional: true });\n this.request = inject(RequestService, { optional: true });\n this.theme = inject(ThemeService, { optional: true });\n this.t = this.locale?.t() ?? getFallbackTranslator();\n this.sizes = SIZES;\n this.samples = DEFAULT_SAMPLES;\n this.font = signal(null);\n this.metadata = signal(null);\n this.metadataStatus = signal('loading');\n this.loading = signal(true);\n this.error = signal(null);\n this.customText = signal('');\n this.renderMode = signal('fontface');\n this.displayText = computed(() => this.customText() || DEFAULT_SAMPLES.mixed);\n this.showMetaPlaceholder = computed(() => this.metadataStatus() !== 'ready');\n this.metaPlaceholder = computed(() => this.metadataStatus() === 'loading' ? this.t('font.metadata_loading') : this.t('font.metadata_unavailable'));\n this.effectiveRenderMode = computed(() => (this.renderMode() === 'canvas' && this.font() ? 'canvas' : 'fontface'));\n this.resolvedTheme = computed(() => this.theme?.theme() ?? 'dark');\n this.fontFace = null;\n this.getToolbarGroups = () => [];\n effect(() => {\n const url = this.url();\n if (!url)\n return;\n untracked(() => { void this.loadFont(); });\n });\n inject(DestroyRef).onDestroy(() => this.releaseFontFace());\n }\n onCustomInput(ev) {\n this.customText.set(ev.target.value);\n }\n releaseFontFace() {\n if (this.fontFace) {\n document.fonts.delete(this.fontFace);\n this.fontFace = null;\n }\n }\n detectFormat(url) {\n const ext = url.split('.').pop()?.toLowerCase().split('?')[0] || '';\n const formatMap = {\n ttf: 'TrueType (TTF)',\n otf: 'OpenType (OTF)',\n woff: 'Web Open Font Format (WOFF)',\n woff2: 'Web Open Font Format 2 (WOFF2)',\n };\n return formatMap[ext] || 'TTF';\n }\n formatLabel(magic, url) {\n const labels = {\n woff2: 'Web Open Font Format 2 (WOFF2)',\n woff: 'Web Open Font Format (WOFF)',\n otf: 'OpenType (OTF)',\n ttf: 'TrueType (TTF)',\n unknown: null,\n };\n return labels[magic] ?? this.detectFormat(url);\n }\n async loadFontFace(faceBuffer) {\n try {\n this.fontFace = new FontFace('PreviewFont', faceBuffer);\n await this.fontFace.load();\n document.fonts.add(this.fontFace);\n this.renderMode.set('fontface');\n }\n catch (faceErr) {\n console.warn('[FontRenderer] FontFace API rejected, fallback to Canvas:', faceErr);\n this.renderMode.set('canvas');\n throw faceErr;\n }\n }\n async loadMetadata(arrayBuffer, magic) {\n if (magic === 'woff2') {\n throw new Error('WOFF2 metadata parsing intentionally skipped');\n }\n const fontData = parse(arrayBuffer);\n if (!fontData) {\n throw new Error('Font data is invalid');\n }\n const rawNames = (fontData.names || {});\n const platformTables = ['windows', 'macintosh', 'unicode']\n .map((k) => rawNames[k])\n .filter((t) => !!t && typeof t === 'object');\n const pickName = (key) => {\n for (const table of platformTables) {\n const entry = table[key];\n const val = entry?.en || entry?.['zh-Hans'];\n if (val)\n return val;\n }\n const flat = rawNames[key];\n return flat?.en || flat?.['zh-Hans'] || '';\n };\n const meta = {\n family: pickName('fontFamily') || pickName('postScriptName') || 'Unknown',\n subfamily: pickName('fontSubfamily'),\n version: pickName('version'),\n designer: pickName('designer'),\n glyphCount: fontData.numGlyphs || 0,\n format: this.formatLabel(magic, this.url()),\n };\n this.font.set(fontData);\n this.metadata.set(meta);\n this.metadataStatus.set('ready');\n }\n async loadFont() {\n this.releaseFontFace();\n this.font.set(null);\n try {\n this.loading.set(true);\n this.error.set(null);\n this.metadataStatus.set('loading');\n const fetcher = this.request?.fetcher() ?? ((u, init) => fetch(u, init));\n const response = await fetcher(this.url());\n if (!response.ok) {\n throw new Error('Failed to load font file');\n }\n const arrayBuffer = await response.arrayBuffer();\n const faceBuffer = arrayBuffer.slice(0);\n const magic = detectMagic(arrayBuffer);\n const facePromise = this.loadFontFace(faceBuffer);\n const metadataPromise = this.loadMetadata(arrayBuffer, magic);\n await facePromise.catch(() => {\n // FontFace 失败由 metadata 兜底\n });\n this.loading.set(false);\n try {\n await metadataPromise;\n }\n catch (metaErr) {\n if (magic !== 'woff2') {\n console.warn('[FontRenderer] Metadata parse failed, font is still rendered via FontFace:', metaErr instanceof Error ? metaErr.message : String(metaErr));\n }\n this.metadataStatus.set('unavailable');\n this.metadata.set({\n family: 'Unknown',\n subfamily: '',\n version: '',\n designer: '',\n glyphCount: 0,\n format: this.formatLabel(magic, this.url()),\n });\n }\n }\n catch (err) {\n console.warn('[FontRenderer] Failed to load font:', err instanceof Error ? err.message : String(err));\n this.error.set(this.t('font.load_failed'));\n this.loading.set(false);\n this.metadataStatus.set('unavailable');\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.25\", ngImport: i0, type: FontRenderer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"19.2.25\", type: FontRenderer, isStandalone: true, selector: \"afp-font-renderer\", inputs: { url: { classPropertyName: \"url\", publicName: \"url\", isSignal: true, isRequired: true, transformFunction: null } }, host: { classAttribute: \"afp-block afp-w-full afp-h-full\" }, ngImport: i0, template: `\n <div class=\"afp-flex afp-flex-col afp-w-full afp-h-full afp-overflow-hidden\">\n @if (loading()) {\n <div class=\"afp-flex afp-items-center afp-justify-center afp-w-full afp-h-full\">\n <div class=\"afp-text-fg-secondary\">{{ t('font.loading') }}</div>\n </div>\n } @else if (error() || !metadata()) {\n <afp-renderer-error [message]=\"error() || t('font.parse_failed')\" />\n } @else {\n <div class=\"afp-flex-shrink-0 afp-px-6 afp-py-4 afp-bg-surface-1 afp-border-b afp-border-line-weak afp-min-w-0\">\n <div class=\"afp-grid afp-grid-cols-2 afp-gap-x-6 afp-gap-y-2 afp-text-sm afp-min-w-0\">\n <div class=\"afp-flex afp-items-center afp-gap-2 afp-min-w-0\">\n <span class=\"afp-text-fg-tertiary afp-flex-shrink-0\">{{ t('font.meta.family') }}:</span>\n <span class=\"afp-text-fg-primary afp-font-semibold afp-truncate\">\n {{ showMetaPlaceholder() ? metaPlaceholder() : metadata()!.family }}\n </span>\n </div>\n @if (metadata()!.subfamily) {\n <div class=\"afp-flex afp-items-center afp-gap-2 afp-min-w-0\">\n <span class=\"afp-text-fg-tertiary afp-flex-shrink-0\">{{ t('font.meta.subfamily') }}:</span>\n <span class=\"afp-text-fg-primary afp-truncate\">{{ metadata()!.subfamily }}</span>\n </div>\n }\n <div class=\"afp-flex afp-items-center afp-gap-2 afp-min-w-0\">\n <span class=\"afp-text-fg-tertiary afp-flex-shrink-0\">{{ t('font.meta.format') }}:</span>\n <span class=\"afp-text-fg-primary afp-truncate\">{{ metadata()!.format }}</span>\n </div>\n <div class=\"afp-flex afp-items-center afp-gap-2 afp-min-w-0\">\n <span class=\"afp-text-fg-tertiary afp-flex-shrink-0\">{{ t('font.meta.glyphs') }}:</span>\n <span class=\"afp-text-fg-primary afp-truncate\">\n {{ showMetaPlaceholder() ? metaPlaceholder() : metadata()!.glyphCount }}\n </span>\n </div>\n @if (metadata()!.designer) {\n <div class=\"afp-flex afp-items-center afp-gap-2 afp-min-w-0\">\n <span class=\"afp-text-fg-tertiary afp-flex-shrink-0\">{{ t('font.meta.designer') }}:</span>\n <span class=\"afp-text-fg-primary afp-truncate\">{{ metadata()!.designer }}</span>\n </div>\n }\n @if (metadata()!.version) {\n <div class=\"afp-flex afp-items-center afp-gap-2 afp-min-w-0\">\n <span class=\"afp-text-fg-tertiary afp-flex-shrink-0\">{{ t('font.meta.version') }}:</span>\n <span class=\"afp-text-fg-primary afp-truncate\">{{ metadata()!.version }}</span>\n </div>\n }\n </div>\n </div>\n\n <div class=\"afp-flex-1 afp-overflow-auto afp-min-w-0\">\n <div class=\"afp-px-6 afp-py-6 afp-space-y-8 afp-min-w-0\">\n <div class=\"afp-min-w-0\">\n <label class=\"afp-block afp-text-xs afp-text-fg-tertiary afp-mb-2\">\n {{ t('font.sample_text_placeholder') }}\n </label>\n <textarea\n [value]=\"customText()\"\n class=\"afp-block afp-w-full afp-box-border afp-px-3 afp-py-2.5 afp-bg-surface-2 afp-text-fg-primary afp-text-sm afp-leading-relaxed afp-border afp-border-line afp-rounded-md afp-resize-y focus:afp-outline-none focus:afp-border-line-strong\"\n rows=\"2\"\n [placeholder]=\"t('font.sample_text_placeholder')\"\n [style.minHeight]=\"'64px'\"\n [style.maxHeight]=\"'160px'\"\n (input)=\"onCustomInput($event)\"\n ></textarea>\n </div>\n\n <div class=\"afp-space-y-6 afp-min-w-0\">\n @for (size of sizes; track size) {\n <div class=\"afp-space-y-2 afp-min-w-0\">\n <div class=\"afp-text-xs afp-text-fg-tertiary\">{{ size }}px</div>\n <afp-font-preview-line\n [font]=\"font()\"\n [text]=\"displayText()\"\n [fontSize]=\"size\"\n [renderMode]=\"effectiveRenderMode()\"\n [theme]=\"resolvedTheme()\"\n />\n </div>\n }\n </div>\n\n <div class=\"afp-space-y-6 afp-pt-6 afp-border-t afp-border-line-weak afp-min-w-0\">\n <div class=\"afp-min-w-0\">\n <div class=\"afp-text-sm afp-text-fg-tertiary afp-mb-3\">Latin Alphabet</div>\n <afp-font-preview-line\n [font]=\"font()\"\n [text]=\"samples.latin\"\n [fontSize]=\"24\"\n [renderMode]=\"effectiveRenderMode()\"\n [theme]=\"resolvedTheme()\"\n />\n </div>\n\n <div class=\"afp-min-w-0\">\n <div class=\"afp-text-sm afp-text-fg-tertiary afp-mb-3\">Chinese Characters</div>\n <afp-font-preview-line\n [font]=\"font()\"\n [text]=\"samples.chinese\"\n [fontSize]=\"24\"\n [renderMode]=\"effectiveRenderMode()\"\n [theme]=\"resolvedTheme()\"\n />\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n `, isInline: true, dependencies: [{ kind: \"component\", type: RendererError, selector: \"afp-renderer-error\", inputs: [\"message\", \"detail\", \"showIcon\"] }, { kind: \"component\", type: FontPreviewLine, selector: \"afp-font-preview-line\", inputs: [\"font\", \"text\", \"fontSize\", \"renderMode\", \"theme\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.25\", ngImport: i0, type: FontRenderer, decorators: [{\n type: Component,\n args: [{\n selector: 'afp-font-renderer',\n standalone: true,\n imports: [RendererError, FontPreviewLine],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'afp-block afp-w-full afp-h-full' },\n template: `\n <div class=\"afp-flex afp-flex-col afp-w-full afp-h-full afp-overflow-hidden\">\n @if (loading()) {\n <div class=\"afp-flex afp-items-center afp-justify-center afp-w-full afp-h-full\">\n <div class=\"afp-text-fg-secondary\">{{ t('font.loading') }}</div>\n </div>\n } @else if (error() || !metadata()) {\n <afp-renderer-error [message]=\"error() || t('font.parse_failed')\" />\n } @else {\n <div class=\"afp-flex-shrink-0 afp-px-6 afp-py-4 afp-bg-surface-1 afp-border-b afp-border-line-weak afp-min-w-0\">\n <div class=\"afp-grid afp-grid-cols-2 afp-gap-x-6 afp-gap-y-2 afp-text-sm afp-min-w-0\">\n <div class=\"afp-flex afp-items-center afp-gap-2 afp-min-w-0\">\n <span class=\"afp-text-fg-tertiary afp-flex-shrink-0\">{{ t('font.meta.family') }}:</span>\n <span class=\"afp-text-fg-primary afp-font-semibold afp-truncate\">\n {{ showMetaPlaceholder() ? metaPlaceholder() : metadata()!.family }}\n </span>\n </div>\n @if (metadata()!.subfamily) {\n <div class=\"afp-flex afp-items-center afp-gap-2 afp-min-w-0\">\n <span class=\"afp-text-fg-tertiary afp-flex-shrink-0\">{{ t('font.meta.subfamily') }}:</span>\n <span class=\"afp-text-fg-primary afp-truncate\">{{ metadata()!.subfamily }}</span>\n </div>\n }\n <div class=\"afp-flex afp-items-center afp-gap-2 afp-min-w-0\">\n <span class=\"afp-text-fg-tertiary afp-flex-shrink-0\">{{ t('font.meta.format') }}:</span>\n <span class=\"afp-text-fg-primary afp-truncate\">{{ metadata()!.format }}</span>\n </div>\n <div class=\"afp-flex afp-items-center afp-gap-2 afp-min-w-0\">\n <span class=\"afp-text-fg-tertiary afp-flex-shrink-0\">{{ t('font.meta.glyphs') }}:</span>\n <span class=\"afp-text-fg-primary afp-truncate\">\n {{ showMetaPlaceholder() ? metaPlaceholder() : metadata()!.glyphCount }}\n </span>\n </div>\n @if (metadata()!.designer) {\n <div class=\"afp-flex afp-items-center afp-gap-2 afp-min-w-0\">\n <span class=\"afp-text-fg-tertiary afp-flex-shrink-0\">{{ t('font.meta.designer') }}:</span>\n <span class=\"afp-text-fg-primary afp-truncate\">{{ metadata()!.designer }}</span>\n </div>\n }\n @if (metadata()!.version) {\n <div class=\"afp-flex afp-items-center afp-gap-2 afp-min-w-0\">\n <span class=\"afp-text-fg-tertiary afp-flex-shrink-0\">{{ t('font.meta.version') }}:</span>\n <span class=\"afp-text-fg-primary afp-truncate\">{{ metadata()!.version }}</span>\n </div>\n }\n </div>\n </div>\n\n <div class=\"afp-flex-1 afp-overflow-auto afp-min-w-0\">\n <div class=\"afp-px-6 afp-py-6 afp-space-y-8 afp-min-w-0\">\n <div class=\"afp-min-w-0\">\n <label class=\"afp-block afp-text-xs afp-text-fg-tertiary afp-mb-2\">\n {{ t('font.sample_text_placeholder') }}\n </label>\n <textarea\n [value]=\"customText()\"\n class=\"afp-block afp-w-full afp-box-border afp-px-3 afp-py-2.5 afp-bg-surface-2 afp-text-fg-primary afp-text-sm afp-leading-relaxed afp-border afp-border-line afp-rounded-md afp-resize-y focus:afp-outline-none focus:afp-border-line-strong\"\n rows=\"2\"\n [placeholder]=\"t('font.sample_text_placeholder')\"\n [style.minHeight]=\"'64px'\"\n [style.maxHeight]=\"'160px'\"\n (input)=\"onCustomInput($event)\"\n ></textarea>\n </div>\n\n <div class=\"afp-space-y-6 afp-min-w-0\">\n @for (size of sizes; track size) {\n <div class=\"afp-space-y-2 afp-min-w-0\">\n <div class=\"afp-text-xs afp-text-fg-tertiary\">{{ size }}px</div>\n <afp-font-preview-line\n [font]=\"font()\"\n [text]=\"displayText()\"\n [fontSize]=\"size\"\n [renderMode]=\"effectiveRenderMode()\"\n [theme]=\"resolvedTheme()\"\n />\n </div>\n }\n </div>\n\n <div class=\"afp-space-y-6 afp-pt-6 afp-border-t afp-border-line-weak afp-min-w-0\">\n <div class=\"afp-min-w-0\">\n <div class=\"afp-text-sm afp-text-fg-tertiary afp-mb-3\">Latin Alphabet</div>\n <afp-font-preview-line\n [font]=\"font()\"\n [text]=\"samples.latin\"\n [fontSize]=\"24\"\n [renderMode]=\"effectiveRenderMode()\"\n [theme]=\"resolvedTheme()\"\n />\n </div>\n\n <div class=\"afp-min-w-0\">\n <div class=\"afp-text-sm afp-text-fg-tertiary afp-mb-3\">Chinese Characters</div>\n <afp-font-preview-line\n [font]=\"font()\"\n [text]=\"samples.chinese\"\n [fontSize]=\"24\"\n [renderMode]=\"effectiveRenderMode()\"\n [theme]=\"resolvedTheme()\"\n />\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n `,\n }]\n }], ctorParameters: () => [] });\n\nexport { FontRenderer };\n//# sourceMappingURL=eternalheart-angular-file-preview-index-C518mdUd.mjs.map\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-BeTNUne--CwUzGLn3.mjs","sources":["../fesm2022/eternalheart-angular-file-preview-index-BeTNUne-.mjs"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { input, viewChild, afterNextRender, effect, inject, DestroyRef, ChangeDetectionStrategy, Component, signal, computed, untracked } from '@angular/core';\nimport { parse } from 'opentype.js';\nimport { L as LocaleService, R as RequestService, T as ThemeService, g as getFallbackTranslator } from './eternalheart-angular-file-preview-eternalheart-angular-file-preview-Dnuf7kun.mjs';\nimport { R as RendererError } from './eternalheart-angular-file-preview-RendererError-DtNihCIX.mjs';\n\nclass FontPreviewLine {\n constructor() {\n this.font = input(null);\n this.text = input.required();\n this.fontSize = input.required();\n this.renderMode = input.required();\n this.theme = input.required();\n this.wrapper = viewChild('wrapperRef');\n this.canvas = viewChild('canvasRef');\n this.resizeObserver = null;\n afterNextRender(() => {\n if (this.renderMode() === 'canvas') {\n this.drawCanvas();\n this.setupObserver();\n }\n });\n effect(() => {\n this.text();\n this.fontSize();\n this.renderMode();\n this.theme();\n this.font();\n if (this.renderMode() === 'canvas') {\n requestAnimationFrame(() => {\n this.drawCanvas();\n this.setupObserver();\n });\n }\n });\n inject(DestroyRef).onDestroy(() => this.teardownObserver());\n }\n teardownObserver() {\n if (this.resizeObserver) {\n this.resizeObserver.disconnect();\n this.resizeObserver = null;\n }\n }\n drawCanvas() {\n const wrapper = this.wrapper()?.nativeElement;\n const canvas = this.canvas()?.nativeElement;\n const font = this.font();\n if (!wrapper || !canvas || this.renderMode() !== 'canvas' || !font)\n return;\n const containerWidth = wrapper.clientWidth || 600;\n const dpr = window.devicePixelRatio || 1;\n const fontSize = this.fontSize();\n const lineHeight = fontSize * 1.4;\n const fillColor = this.theme() === 'light' ? '#1f2937' : '#f3f4f6';\n const wrapLine = (line) => {\n if (!line)\n return [''];\n const result = [];\n let buf = '';\n for (const ch of Array.from(line)) {\n const next = buf + ch;\n const w = font.getAdvanceWidth(next, fontSize);\n if (w > containerWidth && buf) {\n result.push(buf);\n buf = ch;\n }\n else {\n buf = next;\n }\n }\n if (buf)\n result.push(buf);\n return result;\n };\n const wrappedLines = [];\n this.text().split('\\n').forEach((seg) => {\n wrapLine(seg).forEach((l) => wrappedLines.push(l));\n });\n const width = containerWidth;\n const height = lineHeight * wrappedLines.length + 4;\n canvas.width = Math.max(1, Math.floor(width * dpr));\n canvas.height = Math.max(1, Math.floor(height * dpr));\n canvas.style.width = `${width}px`;\n canvas.style.height = `${height}px`;\n const ctx = canvas.getContext('2d');\n if (!ctx)\n return;\n ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n ctx.clearRect(0, 0, width, height);\n wrappedLines.forEach((line, idx) => {\n const path = font.getPath(line, 0, fontSize + idx * lineHeight, fontSize);\n path.fill = fillColor;\n path.draw(ctx);\n });\n }\n setupObserver() {\n this.teardownObserver();\n if (this.renderMode() !== 'canvas')\n return;\n if (typeof ResizeObserver === 'undefined')\n return;\n const wrapper = this.wrapper()?.nativeElement;\n if (!wrapper)\n return;\n this.resizeObserver = new ResizeObserver(() => this.drawCanvas());\n this.resizeObserver.observe(wrapper);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.25\", ngImport: i0, type: FontPreviewLine, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"19.2.25\", type: FontPreviewLine, isStandalone: true, selector: \"afp-font-preview-line\", inputs: { font: { classPropertyName: \"font\", publicName: \"font\", isSignal: true, isRequired: false, transformFunction: null }, text: { classPropertyName: \"text\", publicName: \"text\", isSignal: true, isRequired: true, transformFunction: null }, fontSize: { classPropertyName: \"fontSize\", publicName: \"fontSize\", isSignal: true, isRequired: true, transformFunction: null }, renderMode: { classPropertyName: \"renderMode\", publicName: \"renderMode\", isSignal: true, isRequired: true, transformFunction: null }, theme: { classPropertyName: \"theme\", publicName: \"theme\", isSignal: true, isRequired: true, transformFunction: null } }, viewQueries: [{ propertyName: \"wrapper\", first: true, predicate: [\"wrapperRef\"], descendants: true, isSignal: true }, { propertyName: \"canvas\", first: true, predicate: [\"canvasRef\"], descendants: true, isSignal: true }], ngImport: i0, template: `\n <div #wrapperRef class=\"afp-w-full\">\n @if (renderMode() === 'canvas') {\n <canvas #canvasRef class=\"afp-block\"></canvas>\n } @else {\n <div\n class=\"afp-w-full afp-text-fg-primary afp-whitespace-pre-wrap afp-break-words\"\n [style.fontFamily]=\"'PreviewFont, sans-serif'\"\n [style.fontSize]=\"fontSize() + 'px'\"\n [style.lineHeight]=\"1.4\"\n >{{ text() }}</div>\n }\n </div>\n `, isInline: true, styles: [\":host{display:block;width:100%}\\n\"], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.25\", ngImport: i0, type: FontPreviewLine, decorators: [{\n type: Component,\n args: [{ selector: 'afp-font-preview-line', standalone: true, changeDetection: ChangeDetectionStrategy.OnPush, template: `\n <div #wrapperRef class=\"afp-w-full\">\n @if (renderMode() === 'canvas') {\n <canvas #canvasRef class=\"afp-block\"></canvas>\n } @else {\n <div\n class=\"afp-w-full afp-text-fg-primary afp-whitespace-pre-wrap afp-break-words\"\n [style.fontFamily]=\"'PreviewFont, sans-serif'\"\n [style.fontSize]=\"fontSize() + 'px'\"\n [style.lineHeight]=\"1.4\"\n >{{ text() }}</div>\n }\n </div>\n `, styles: [\":host{display:block;width:100%}\\n\"] }]\n }], ctorParameters: () => [] });\n\nconst MAGIC_WOFF2 = 0x774f4632;\nconst MAGIC_WOFF = 0x774f4646;\nconst MAGIC_OTTO = 0x4f54544f;\nconst MAGIC_TTF1 = 0x00010000;\nconst MAGIC_TRUE = 0x74727565;\nconst detectMagic = (buf) => {\n if (buf.byteLength < 4)\n return 'unknown';\n const m = new DataView(buf).getUint32(0);\n if (m === MAGIC_WOFF2)\n return 'woff2';\n if (m === MAGIC_WOFF)\n return 'woff';\n if (m === MAGIC_OTTO)\n return 'otf';\n if (m === MAGIC_TTF1 || m === MAGIC_TRUE)\n return 'ttf';\n return 'unknown';\n};\nconst DEFAULT_SAMPLES = {\n latin: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ\\nabcdefghijklmnopqrstuvwxyz\\n0123456789 .,;:!?@#$%&*()[]{}',\n chinese: '春夏秋冬东南西北天地人和风雨雷电山水日月',\n mixed: 'The Quick Brown Fox Jumps Over The Lazy Dog\\n敏捷的棕色狐狸跳过了懒狗',\n};\nconst SIZES = [72, 48, 36, 24, 18];\nclass FontRenderer {\n constructor() {\n this.url = input.required();\n this.locale = inject(LocaleService, { optional: true });\n this.request = inject(RequestService, { optional: true });\n this.theme = inject(ThemeService, { optional: true });\n this.t = this.locale?.t() ?? getFallbackTranslator();\n this.sizes = SIZES;\n this.samples = DEFAULT_SAMPLES;\n this.font = signal(null);\n this.metadata = signal(null);\n this.metadataStatus = signal('loading');\n this.loading = signal(true);\n this.error = signal(null);\n this.customText = signal('');\n this.renderMode = signal('fontface');\n this.displayText = computed(() => this.customText() || DEFAULT_SAMPLES.mixed);\n this.showMetaPlaceholder = computed(() => this.metadataStatus() !== 'ready');\n this.metaPlaceholder = computed(() => this.metadataStatus() === 'loading' ? this.t('font.metadata_loading') : this.t('font.metadata_unavailable'));\n this.effectiveRenderMode = computed(() => (this.renderMode() === 'canvas' && this.font() ? 'canvas' : 'fontface'));\n this.resolvedTheme = computed(() => this.theme?.theme() ?? 'dark');\n this.fontFace = null;\n this.getToolbarGroups = () => [];\n effect(() => {\n const url = this.url();\n if (!url)\n return;\n untracked(() => { void this.loadFont(); });\n });\n inject(DestroyRef).onDestroy(() => this.releaseFontFace());\n }\n onCustomInput(ev) {\n this.customText.set(ev.target.value);\n }\n releaseFontFace() {\n if (this.fontFace) {\n document.fonts.delete(this.fontFace);\n this.fontFace = null;\n }\n }\n detectFormat(url) {\n const ext = url.split('.').pop()?.toLowerCase().split('?')[0] || '';\n const formatMap = {\n ttf: 'TrueType (TTF)',\n otf: 'OpenType (OTF)',\n woff: 'Web Open Font Format (WOFF)',\n woff2: 'Web Open Font Format 2 (WOFF2)',\n };\n return formatMap[ext] || 'TTF';\n }\n formatLabel(magic, url) {\n const labels = {\n woff2: 'Web Open Font Format 2 (WOFF2)',\n woff: 'Web Open Font Format (WOFF)',\n otf: 'OpenType (OTF)',\n ttf: 'TrueType (TTF)',\n unknown: null,\n };\n return labels[magic] ?? this.detectFormat(url);\n }\n async loadFontFace(faceBuffer) {\n try {\n this.fontFace = new FontFace('PreviewFont', faceBuffer);\n await this.fontFace.load();\n document.fonts.add(this.fontFace);\n this.renderMode.set('fontface');\n }\n catch (faceErr) {\n console.warn('[FontRenderer] FontFace API rejected, fallback to Canvas:', faceErr);\n this.renderMode.set('canvas');\n throw faceErr;\n }\n }\n async loadMetadata(arrayBuffer, magic) {\n if (magic === 'woff2') {\n throw new Error('WOFF2 metadata parsing intentionally skipped');\n }\n const fontData = parse(arrayBuffer);\n if (!fontData) {\n throw new Error('Font data is invalid');\n }\n const rawNames = (fontData.names || {});\n const platformTables = ['windows', 'macintosh', 'unicode']\n .map((k) => rawNames[k])\n .filter((t) => !!t && typeof t === 'object');\n const pickName = (key) => {\n for (const table of platformTables) {\n const entry = table[key];\n const val = entry?.en || entry?.['zh-Hans'];\n if (val)\n return val;\n }\n const flat = rawNames[key];\n return flat?.en || flat?.['zh-Hans'] || '';\n };\n const meta = {\n family: pickName('fontFamily') || pickName('postScriptName') || 'Unknown',\n subfamily: pickName('fontSubfamily'),\n version: pickName('version'),\n designer: pickName('designer'),\n glyphCount: fontData.numGlyphs || 0,\n format: this.formatLabel(magic, this.url()),\n };\n this.font.set(fontData);\n this.metadata.set(meta);\n this.metadataStatus.set('ready');\n }\n async loadFont() {\n this.releaseFontFace();\n this.font.set(null);\n try {\n this.loading.set(true);\n this.error.set(null);\n this.metadataStatus.set('loading');\n const fetcher = this.request?.fetcher() ?? ((u, init) => fetch(u, init));\n const response = await fetcher(this.url());\n if (!response.ok) {\n throw new Error('Failed to load font file');\n }\n const arrayBuffer = await response.arrayBuffer();\n const faceBuffer = arrayBuffer.slice(0);\n const magic = detectMagic(arrayBuffer);\n const facePromise = this.loadFontFace(faceBuffer);\n const metadataPromise = this.loadMetadata(arrayBuffer, magic);\n await facePromise.catch(() => {\n // FontFace 失败由 metadata 兜底\n });\n this.loading.set(false);\n try {\n await metadataPromise;\n }\n catch (metaErr) {\n if (magic !== 'woff2') {\n console.warn('[FontRenderer] Metadata parse failed, font is still rendered via FontFace:', metaErr instanceof Error ? metaErr.message : String(metaErr));\n }\n this.metadataStatus.set('unavailable');\n this.metadata.set({\n family: 'Unknown',\n subfamily: '',\n version: '',\n designer: '',\n glyphCount: 0,\n format: this.formatLabel(magic, this.url()),\n });\n }\n }\n catch (err) {\n console.warn('[FontRenderer] Failed to load font:', err instanceof Error ? err.message : String(err));\n this.error.set(this.t('font.load_failed'));\n this.loading.set(false);\n this.metadataStatus.set('unavailable');\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.25\", ngImport: i0, type: FontRenderer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"19.2.25\", type: FontRenderer, isStandalone: true, selector: \"afp-font-renderer\", inputs: { url: { classPropertyName: \"url\", publicName: \"url\", isSignal: true, isRequired: true, transformFunction: null } }, host: { classAttribute: \"afp-block afp-w-full afp-h-full\" }, ngImport: i0, template: `\n <div class=\"afp-flex afp-flex-col afp-w-full afp-h-full afp-overflow-hidden\">\n @if (loading()) {\n <div class=\"afp-flex afp-items-center afp-justify-center afp-w-full afp-h-full\">\n <div class=\"afp-text-fg-secondary\">{{ t('font.loading') }}</div>\n </div>\n } @else if (error() || !metadata()) {\n <afp-renderer-error [message]=\"error() || t('font.parse_failed')\" />\n } @else {\n <div class=\"afp-flex-shrink-0 afp-px-6 afp-py-4 afp-bg-surface-1 afp-border-b afp-border-line-weak afp-min-w-0\">\n <div class=\"afp-grid afp-grid-cols-2 afp-gap-x-6 afp-gap-y-2 afp-text-sm afp-min-w-0\">\n <div class=\"afp-flex afp-items-center afp-gap-2 afp-min-w-0\">\n <span class=\"afp-text-fg-tertiary afp-flex-shrink-0\">{{ t('font.meta.family') }}:</span>\n <span class=\"afp-text-fg-primary afp-font-semibold afp-truncate\">\n {{ showMetaPlaceholder() ? metaPlaceholder() : metadata()!.family }}\n </span>\n </div>\n @if (metadata()!.subfamily) {\n <div class=\"afp-flex afp-items-center afp-gap-2 afp-min-w-0\">\n <span class=\"afp-text-fg-tertiary afp-flex-shrink-0\">{{ t('font.meta.subfamily') }}:</span>\n <span class=\"afp-text-fg-primary afp-truncate\">{{ metadata()!.subfamily }}</span>\n </div>\n }\n <div class=\"afp-flex afp-items-center afp-gap-2 afp-min-w-0\">\n <span class=\"afp-text-fg-tertiary afp-flex-shrink-0\">{{ t('font.meta.format') }}:</span>\n <span class=\"afp-text-fg-primary afp-truncate\">{{ metadata()!.format }}</span>\n </div>\n <div class=\"afp-flex afp-items-center afp-gap-2 afp-min-w-0\">\n <span class=\"afp-text-fg-tertiary afp-flex-shrink-0\">{{ t('font.meta.glyphs') }}:</span>\n <span class=\"afp-text-fg-primary afp-truncate\">\n {{ showMetaPlaceholder() ? metaPlaceholder() : metadata()!.glyphCount }}\n </span>\n </div>\n @if (metadata()!.designer) {\n <div class=\"afp-flex afp-items-center afp-gap-2 afp-min-w-0\">\n <span class=\"afp-text-fg-tertiary afp-flex-shrink-0\">{{ t('font.meta.designer') }}:</span>\n <span class=\"afp-text-fg-primary afp-truncate\">{{ metadata()!.designer }}</span>\n </div>\n }\n @if (metadata()!.version) {\n <div class=\"afp-flex afp-items-center afp-gap-2 afp-min-w-0\">\n <span class=\"afp-text-fg-tertiary afp-flex-shrink-0\">{{ t('font.meta.version') }}:</span>\n <span class=\"afp-text-fg-primary afp-truncate\">{{ metadata()!.version }}</span>\n </div>\n }\n </div>\n </div>\n\n <div class=\"afp-flex-1 afp-overflow-auto afp-min-w-0\">\n <div class=\"afp-px-6 afp-py-6 afp-space-y-8 afp-min-w-0\">\n <div class=\"afp-min-w-0\">\n <label class=\"afp-block afp-text-xs afp-text-fg-tertiary afp-mb-2\">\n {{ t('font.sample_text_placeholder') }}\n </label>\n <textarea\n [value]=\"customText()\"\n class=\"afp-block afp-w-full afp-box-border afp-px-3 afp-py-2.5 afp-bg-surface-2 afp-text-fg-primary afp-text-sm afp-leading-relaxed afp-border afp-border-line afp-rounded-md afp-resize-y focus:afp-outline-none focus:afp-border-line-strong\"\n rows=\"2\"\n [placeholder]=\"t('font.sample_text_placeholder')\"\n [style.minHeight]=\"'64px'\"\n [style.maxHeight]=\"'160px'\"\n (input)=\"onCustomInput($event)\"\n ></textarea>\n </div>\n\n <div class=\"afp-space-y-6 afp-min-w-0\">\n @for (size of sizes; track size) {\n <div class=\"afp-space-y-2 afp-min-w-0\">\n <div class=\"afp-text-xs afp-text-fg-tertiary\">{{ size }}px</div>\n <afp-font-preview-line\n [font]=\"font()\"\n [text]=\"displayText()\"\n [fontSize]=\"size\"\n [renderMode]=\"effectiveRenderMode()\"\n [theme]=\"resolvedTheme()\"\n />\n </div>\n }\n </div>\n\n <div class=\"afp-space-y-6 afp-pt-6 afp-border-t afp-border-line-weak afp-min-w-0\">\n <div class=\"afp-min-w-0\">\n <div class=\"afp-text-sm afp-text-fg-tertiary afp-mb-3\">Latin Alphabet</div>\n <afp-font-preview-line\n [font]=\"font()\"\n [text]=\"samples.latin\"\n [fontSize]=\"24\"\n [renderMode]=\"effectiveRenderMode()\"\n [theme]=\"resolvedTheme()\"\n />\n </div>\n\n <div class=\"afp-min-w-0\">\n <div class=\"afp-text-sm afp-text-fg-tertiary afp-mb-3\">Chinese Characters</div>\n <afp-font-preview-line\n [font]=\"font()\"\n [text]=\"samples.chinese\"\n [fontSize]=\"24\"\n [renderMode]=\"effectiveRenderMode()\"\n [theme]=\"resolvedTheme()\"\n />\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n `, isInline: true, dependencies: [{ kind: \"component\", type: RendererError, selector: \"afp-renderer-error\", inputs: [\"message\", \"detail\", \"showIcon\"] }, { kind: \"component\", type: FontPreviewLine, selector: \"afp-font-preview-line\", inputs: [\"font\", \"text\", \"fontSize\", \"renderMode\", \"theme\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.25\", ngImport: i0, type: FontRenderer, decorators: [{\n type: Component,\n args: [{\n selector: 'afp-font-renderer',\n standalone: true,\n imports: [RendererError, FontPreviewLine],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'afp-block afp-w-full afp-h-full' },\n template: `\n <div class=\"afp-flex afp-flex-col afp-w-full afp-h-full afp-overflow-hidden\">\n @if (loading()) {\n <div class=\"afp-flex afp-items-center afp-justify-center afp-w-full afp-h-full\">\n <div class=\"afp-text-fg-secondary\">{{ t('font.loading') }}</div>\n </div>\n } @else if (error() || !metadata()) {\n <afp-renderer-error [message]=\"error() || t('font.parse_failed')\" />\n } @else {\n <div class=\"afp-flex-shrink-0 afp-px-6 afp-py-4 afp-bg-surface-1 afp-border-b afp-border-line-weak afp-min-w-0\">\n <div class=\"afp-grid afp-grid-cols-2 afp-gap-x-6 afp-gap-y-2 afp-text-sm afp-min-w-0\">\n <div class=\"afp-flex afp-items-center afp-gap-2 afp-min-w-0\">\n <span class=\"afp-text-fg-tertiary afp-flex-shrink-0\">{{ t('font.meta.family') }}:</span>\n <span class=\"afp-text-fg-primary afp-font-semibold afp-truncate\">\n {{ showMetaPlaceholder() ? metaPlaceholder() : metadata()!.family }}\n </span>\n </div>\n @if (metadata()!.subfamily) {\n <div class=\"afp-flex afp-items-center afp-gap-2 afp-min-w-0\">\n <span class=\"afp-text-fg-tertiary afp-flex-shrink-0\">{{ t('font.meta.subfamily') }}:</span>\n <span class=\"afp-text-fg-primary afp-truncate\">{{ metadata()!.subfamily }}</span>\n </div>\n }\n <div class=\"afp-flex afp-items-center afp-gap-2 afp-min-w-0\">\n <span class=\"afp-text-fg-tertiary afp-flex-shrink-0\">{{ t('font.meta.format') }}:</span>\n <span class=\"afp-text-fg-primary afp-truncate\">{{ metadata()!.format }}</span>\n </div>\n <div class=\"afp-flex afp-items-center afp-gap-2 afp-min-w-0\">\n <span class=\"afp-text-fg-tertiary afp-flex-shrink-0\">{{ t('font.meta.glyphs') }}:</span>\n <span class=\"afp-text-fg-primary afp-truncate\">\n {{ showMetaPlaceholder() ? metaPlaceholder() : metadata()!.glyphCount }}\n </span>\n </div>\n @if (metadata()!.designer) {\n <div class=\"afp-flex afp-items-center afp-gap-2 afp-min-w-0\">\n <span class=\"afp-text-fg-tertiary afp-flex-shrink-0\">{{ t('font.meta.designer') }}:</span>\n <span class=\"afp-text-fg-primary afp-truncate\">{{ metadata()!.designer }}</span>\n </div>\n }\n @if (metadata()!.version) {\n <div class=\"afp-flex afp-items-center afp-gap-2 afp-min-w-0\">\n <span class=\"afp-text-fg-tertiary afp-flex-shrink-0\">{{ t('font.meta.version') }}:</span>\n <span class=\"afp-text-fg-primary afp-truncate\">{{ metadata()!.version }}</span>\n </div>\n }\n </div>\n </div>\n\n <div class=\"afp-flex-1 afp-overflow-auto afp-min-w-0\">\n <div class=\"afp-px-6 afp-py-6 afp-space-y-8 afp-min-w-0\">\n <div class=\"afp-min-w-0\">\n <label class=\"afp-block afp-text-xs afp-text-fg-tertiary afp-mb-2\">\n {{ t('font.sample_text_placeholder') }}\n </label>\n <textarea\n [value]=\"customText()\"\n class=\"afp-block afp-w-full afp-box-border afp-px-3 afp-py-2.5 afp-bg-surface-2 afp-text-fg-primary afp-text-sm afp-leading-relaxed afp-border afp-border-line afp-rounded-md afp-resize-y focus:afp-outline-none focus:afp-border-line-strong\"\n rows=\"2\"\n [placeholder]=\"t('font.sample_text_placeholder')\"\n [style.minHeight]=\"'64px'\"\n [style.maxHeight]=\"'160px'\"\n (input)=\"onCustomInput($event)\"\n ></textarea>\n </div>\n\n <div class=\"afp-space-y-6 afp-min-w-0\">\n @for (size of sizes; track size) {\n <div class=\"afp-space-y-2 afp-min-w-0\">\n <div class=\"afp-text-xs afp-text-fg-tertiary\">{{ size }}px</div>\n <afp-font-preview-line\n [font]=\"font()\"\n [text]=\"displayText()\"\n [fontSize]=\"size\"\n [renderMode]=\"effectiveRenderMode()\"\n [theme]=\"resolvedTheme()\"\n />\n </div>\n }\n </div>\n\n <div class=\"afp-space-y-6 afp-pt-6 afp-border-t afp-border-line-weak afp-min-w-0\">\n <div class=\"afp-min-w-0\">\n <div class=\"afp-text-sm afp-text-fg-tertiary afp-mb-3\">Latin Alphabet</div>\n <afp-font-preview-line\n [font]=\"font()\"\n [text]=\"samples.latin\"\n [fontSize]=\"24\"\n [renderMode]=\"effectiveRenderMode()\"\n [theme]=\"resolvedTheme()\"\n />\n </div>\n\n <div class=\"afp-min-w-0\">\n <div class=\"afp-text-sm afp-text-fg-tertiary afp-mb-3\">Chinese Characters</div>\n <afp-font-preview-line\n [font]=\"font()\"\n [text]=\"samples.chinese\"\n [fontSize]=\"24\"\n [renderMode]=\"effectiveRenderMode()\"\n [theme]=\"resolvedTheme()\"\n />\n </div>\n </div>\n </div>\n </div>\n }\n </div>\n `,\n }]\n }], ctorParameters: () => [] });\n\nexport { FontRenderer };\n//# sourceMappingURL=eternalheart-angular-file-preview-index-BeTNUne-.mjs.map\n"],"names":[],"mappings":"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"}
|
|
@@ -2,10 +2,10 @@ import * as i0 from '@angular/core';
|
|
|
2
2
|
import { input, inject, signal, computed, effect, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
3
|
import { DomSanitizer } from '@angular/platform-browser';
|
|
4
4
|
import { WrapText, Code, Eye } from 'lucide-angular';
|
|
5
|
-
import { L as LocaleService, R as RequestService, g as getFallbackTranslator, h as a0, e as e0 } from './eternalheart-angular-file-preview-eternalheart-angular-file-preview-
|
|
5
|
+
import { L as LocaleService, R as RequestService, g as getFallbackTranslator, h as a0, e as e0 } from './eternalheart-angular-file-preview-eternalheart-angular-file-preview-RPRQhVCg.mjs';
|
|
6
6
|
import { R as RendererError } from './eternalheart-angular-file-preview-eternalheart-angular-file-preview-RendererError-DtNihCIX-DtNihCIX.mjs';
|
|
7
7
|
import { T as ToolbarEventEmitter } from './eternalheart-angular-file-preview-eternalheart-angular-file-preview-base.types-D5x7QPey-D5x7QPey.mjs';
|
|
8
|
-
import { c as createShikiHighlight } from './eternalheart-angular-file-preview-eternalheart-angular-file-preview-shiki-highlight-
|
|
8
|
+
import { c as createShikiHighlight } from './eternalheart-angular-file-preview-eternalheart-angular-file-preview-shiki-highlight-CE3FZF7D-BjdXRpvN.mjs';
|
|
9
9
|
|
|
10
10
|
class TextRenderer {
|
|
11
11
|
constructor() {
|
|
@@ -190,4 +190,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
190
190
|
}], ctorParameters: () => [] });
|
|
191
191
|
|
|
192
192
|
export { TextRenderer };
|
|
193
|
-
//# sourceMappingURL=eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-
|
|
193
|
+
//# sourceMappingURL=eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-C3uCX4wD-CoZ795pn.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-DufW2Fuc-CTosCut6.mjs","sources":["../fesm2022/eternalheart-angular-file-preview-index-DufW2Fuc.mjs"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { input, inject, signal, computed, effect, ChangeDetectionStrategy, Component } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { WrapText, Code, Eye } from 'lucide-angular';\nimport { L as LocaleService, R as RequestService, g as getFallbackTranslator } from './eternalheart-angular-file-preview-eternalheart-angular-file-preview-DXwNhxAB.mjs';\nimport { R as RendererError } from './eternalheart-angular-file-preview-RendererError-DtNihCIX.mjs';\nimport { T as ToolbarEventEmitter } from './eternalheart-angular-file-preview-base.types-D5x7QPey.mjs';\nimport { c as createShikiHighlight } from './eternalheart-angular-file-preview-shiki-highlight-CL9cG481.mjs';\nimport { getLanguageFromFileName, fetchTextUtf8 } from '@eternalheart/file-preview-core';\n\nclass TextRenderer {\n constructor() {\n this.url = input.required();\n this.fileName = input.required();\n this.emitter = new ToolbarEventEmitter();\n this.locale = inject(LocaleService, { optional: true });\n this.request = inject(RequestService, { optional: true });\n this.sanitizer = inject(DomSanitizer);\n this.t = this.locale?.t() ?? getFallbackTranslator();\n this.wordWrap = signal(true);\n this.htmlPreview = signal(false);\n this.content = signal('');\n this.loading = signal(true);\n this.error = signal(null);\n this.language = computed(() => getLanguageFromFileName(this.fileName()));\n this.isHtml = computed(() => this.language() === 'html');\n this.lines = computed(() => this.content().split('\\n'));\n this.shiki = createShikiHighlight(() => (this.language() !== 'text' ? this.content() : ''), () => this.language());\n this.lineHtmls = this.shiki.lineHtmls;\n this.getToolbarGroups = () => {\n const groups = [\n {\n items: [\n {\n type: 'button',\n icon: WrapText,\n tooltip: this.wordWrap() ? this.t('toolbar.wrap_off') : this.t('toolbar.wrap_on'),\n action: () => this.wordWrap.update((v) => !v),\n active: this.wordWrap(),\n },\n ],\n },\n ];\n if (this.isHtml()) {\n groups.push({\n items: [\n {\n type: 'button',\n icon: this.htmlPreview() ? Code : Eye,\n tooltip: this.htmlPreview() ? this.t('toolbar.source') : this.t('toolbar.preview'),\n action: () => this.htmlPreview.update((v) => !v),\n active: this.htmlPreview(),\n },\n ],\n });\n }\n return groups;\n };\n this.onToolbarChange = (listener) => this.emitter.subscribe(listener);\n effect(() => {\n this.url();\n void this.loadText();\n });\n effect(() => {\n this.content();\n this.language();\n void this.shiki.highlight();\n });\n effect(() => {\n this.wordWrap();\n this.htmlPreview();\n this.loading();\n this.isHtml();\n this.emitter.notify();\n });\n }\n trust(html) {\n return this.sanitizer.bypassSecurityTrustHtml(html);\n }\n async loadText() {\n this.loading.set(true);\n this.error.set(null);\n try {\n const fetcher = this.request?.fetcher() ?? ((u, init) => fetch(u, init));\n const text = await fetchTextUtf8(this.url(), { fetcher });\n this.content.set(text);\n }\n catch (err) {\n console.error(err);\n this.error.set(this.t('text.load_failed'));\n }\n finally {\n this.loading.set(false);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.25\", ngImport: i0, type: TextRenderer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"19.2.25\", type: TextRenderer, isStandalone: true, selector: \"afp-text-renderer\", inputs: { url: { classPropertyName: \"url\", publicName: \"url\", isSignal: true, isRequired: true, transformFunction: null }, fileName: { classPropertyName: \"fileName\", publicName: \"fileName\", isSignal: true, isRequired: true, transformFunction: null } }, host: { classAttribute: \"afp-block afp-w-full afp-h-full\" }, ngImport: i0, template: `\n @if (loading()) {\n <div class=\"afp-flex afp-items-center afp-justify-center afp-w-full afp-h-full\">\n <div class=\"afp-w-12 afp-h-12 afp-border-4 afp-border-line-strong afp-border-t-spinner-head afp-rounded-full afp-animate-spin\"></div>\n </div>\n } @else if (error()) {\n <afp-renderer-error [message]=\"error()!\" />\n } @else if (htmlPreview() && language() === 'html') {\n <div class=\"afp-w-full afp-h-full afp-bg-surface-toolbar\">\n <iframe\n [srcdoc]=\"content()\"\n sandbox=\"allow-same-origin\"\n class=\"afp-w-full afp-h-full afp-border-0\"\n [title]=\"fileName()\"\n ></iframe>\n </div>\n } @else if (language() === 'text' || lineHtmls().length === 0) {\n <div class=\"afp-w-full afp-h-full afp-overflow-auto\" style=\"background: var(--fp-code-bg);\">\n <pre\n class=\"afp-py-6 afp-px-4 afp-text-fg-primary afp-font-mono afp-text-sm\"\n [class.afp-whitespace-pre-wrap]=\"wordWrap()\"\n [class.afp-break-words]=\"wordWrap()\"\n [class.afp-whitespace-pre]=\"!wordWrap()\"\n >{{ content() }}</pre>\n </div>\n } @else {\n <div class=\"afp-w-full afp-h-full afp-overflow-auto\" style=\"background: var(--fp-code-bg);\">\n <div\n class=\"afp-code-block with-line-numbers afp-w-full\"\n [class.no-wrap]=\"!wordWrap()\"\n [style.gridTemplateRows]=\"'repeat(' + lines().length + ', auto) minmax(1.5rem, 1fr)'\"\n >\n @for (line of lines(); track $index) {\n <span class=\"afp-code-gutter\">{{ $index + 1 }}</span>\n <span class=\"afp-code-line\" [innerHTML]=\"trust(lineHtmls()[$index] ?? '')\"></span>\n }\n <span class=\"afp-code-gutter-filler\"></span>\n <span class=\"afp-code-line-filler\"></span>\n </div>\n </div>\n }\n `, isInline: true, dependencies: [{ kind: \"component\", type: RendererError, selector: \"afp-renderer-error\", inputs: [\"message\", \"detail\", \"showIcon\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.25\", ngImport: i0, type: TextRenderer, decorators: [{\n type: Component,\n args: [{\n selector: 'afp-text-renderer',\n standalone: true,\n imports: [RendererError],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'afp-block afp-w-full afp-h-full' },\n template: `\n @if (loading()) {\n <div class=\"afp-flex afp-items-center afp-justify-center afp-w-full afp-h-full\">\n <div class=\"afp-w-12 afp-h-12 afp-border-4 afp-border-line-strong afp-border-t-spinner-head afp-rounded-full afp-animate-spin\"></div>\n </div>\n } @else if (error()) {\n <afp-renderer-error [message]=\"error()!\" />\n } @else if (htmlPreview() && language() === 'html') {\n <div class=\"afp-w-full afp-h-full afp-bg-surface-toolbar\">\n <iframe\n [srcdoc]=\"content()\"\n sandbox=\"allow-same-origin\"\n class=\"afp-w-full afp-h-full afp-border-0\"\n [title]=\"fileName()\"\n ></iframe>\n </div>\n } @else if (language() === 'text' || lineHtmls().length === 0) {\n <div class=\"afp-w-full afp-h-full afp-overflow-auto\" style=\"background: var(--fp-code-bg);\">\n <pre\n class=\"afp-py-6 afp-px-4 afp-text-fg-primary afp-font-mono afp-text-sm\"\n [class.afp-whitespace-pre-wrap]=\"wordWrap()\"\n [class.afp-break-words]=\"wordWrap()\"\n [class.afp-whitespace-pre]=\"!wordWrap()\"\n >{{ content() }}</pre>\n </div>\n } @else {\n <div class=\"afp-w-full afp-h-full afp-overflow-auto\" style=\"background: var(--fp-code-bg);\">\n <div\n class=\"afp-code-block with-line-numbers afp-w-full\"\n [class.no-wrap]=\"!wordWrap()\"\n [style.gridTemplateRows]=\"'repeat(' + lines().length + ', auto) minmax(1.5rem, 1fr)'\"\n >\n @for (line of lines(); track $index) {\n <span class=\"afp-code-gutter\">{{ $index + 1 }}</span>\n <span class=\"afp-code-line\" [innerHTML]=\"trust(lineHtmls()[$index] ?? '')\"></span>\n }\n <span class=\"afp-code-gutter-filler\"></span>\n <span class=\"afp-code-line-filler\"></span>\n </div>\n </div>\n }\n `,\n }]\n }], ctorParameters: () => [] });\n\nexport { TextRenderer };\n//# sourceMappingURL=eternalheart-angular-file-preview-index-DufW2Fuc.mjs.map\n"],"names":["getLanguageFromFileName","fetchTextUtf8"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-C3uCX4wD-CoZ795pn.mjs","sources":["../fesm2022/eternalheart-angular-file-preview-index-C3uCX4wD.mjs"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { input, inject, signal, computed, effect, ChangeDetectionStrategy, Component } from '@angular/core';\nimport { DomSanitizer } from '@angular/platform-browser';\nimport { WrapText, Code, Eye } from 'lucide-angular';\nimport { L as LocaleService, R as RequestService, g as getFallbackTranslator } from './eternalheart-angular-file-preview-eternalheart-angular-file-preview-Dnuf7kun.mjs';\nimport { R as RendererError } from './eternalheart-angular-file-preview-RendererError-DtNihCIX.mjs';\nimport { T as ToolbarEventEmitter } from './eternalheart-angular-file-preview-base.types-D5x7QPey.mjs';\nimport { c as createShikiHighlight } from './eternalheart-angular-file-preview-shiki-highlight-CE3FZF7D.mjs';\nimport { getLanguageFromFileName, fetchTextUtf8 } from '@eternalheart/file-preview-core';\n\nclass TextRenderer {\n constructor() {\n this.url = input.required();\n this.fileName = input.required();\n this.emitter = new ToolbarEventEmitter();\n this.locale = inject(LocaleService, { optional: true });\n this.request = inject(RequestService, { optional: true });\n this.sanitizer = inject(DomSanitizer);\n this.t = this.locale?.t() ?? getFallbackTranslator();\n this.wordWrap = signal(true);\n this.htmlPreview = signal(false);\n this.content = signal('');\n this.loading = signal(true);\n this.error = signal(null);\n this.language = computed(() => getLanguageFromFileName(this.fileName()));\n this.isHtml = computed(() => this.language() === 'html');\n this.lines = computed(() => this.content().split('\\n'));\n this.shiki = createShikiHighlight(() => (this.language() !== 'text' ? this.content() : ''), () => this.language());\n this.lineHtmls = this.shiki.lineHtmls;\n this.getToolbarGroups = () => {\n const groups = [\n {\n items: [\n {\n type: 'button',\n icon: WrapText,\n tooltip: this.wordWrap() ? this.t('toolbar.wrap_off') : this.t('toolbar.wrap_on'),\n action: () => this.wordWrap.update((v) => !v),\n active: this.wordWrap(),\n },\n ],\n },\n ];\n if (this.isHtml()) {\n groups.push({\n items: [\n {\n type: 'button',\n icon: this.htmlPreview() ? Code : Eye,\n tooltip: this.htmlPreview() ? this.t('toolbar.source') : this.t('toolbar.preview'),\n action: () => this.htmlPreview.update((v) => !v),\n active: this.htmlPreview(),\n },\n ],\n });\n }\n return groups;\n };\n this.onToolbarChange = (listener) => this.emitter.subscribe(listener);\n effect(() => {\n this.url();\n void this.loadText();\n });\n effect(() => {\n this.content();\n this.language();\n void this.shiki.highlight();\n });\n effect(() => {\n this.wordWrap();\n this.htmlPreview();\n this.loading();\n this.isHtml();\n this.emitter.notify();\n });\n }\n trust(html) {\n return this.sanitizer.bypassSecurityTrustHtml(html);\n }\n async loadText() {\n this.loading.set(true);\n this.error.set(null);\n try {\n const fetcher = this.request?.fetcher() ?? ((u, init) => fetch(u, init));\n const text = await fetchTextUtf8(this.url(), { fetcher });\n this.content.set(text);\n }\n catch (err) {\n console.error(err);\n this.error.set(this.t('text.load_failed'));\n }\n finally {\n this.loading.set(false);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.25\", ngImport: i0, type: TextRenderer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"19.2.25\", type: TextRenderer, isStandalone: true, selector: \"afp-text-renderer\", inputs: { url: { classPropertyName: \"url\", publicName: \"url\", isSignal: true, isRequired: true, transformFunction: null }, fileName: { classPropertyName: \"fileName\", publicName: \"fileName\", isSignal: true, isRequired: true, transformFunction: null } }, host: { classAttribute: \"afp-block afp-w-full afp-h-full\" }, ngImport: i0, template: `\n @if (loading()) {\n <div class=\"afp-flex afp-items-center afp-justify-center afp-w-full afp-h-full\">\n <div class=\"afp-w-12 afp-h-12 afp-border-4 afp-border-line-strong afp-border-t-spinner-head afp-rounded-full afp-animate-spin\"></div>\n </div>\n } @else if (error()) {\n <afp-renderer-error [message]=\"error()!\" />\n } @else if (htmlPreview() && language() === 'html') {\n <div class=\"afp-w-full afp-h-full afp-bg-surface-toolbar\">\n <iframe\n [srcdoc]=\"content()\"\n sandbox=\"allow-same-origin\"\n class=\"afp-w-full afp-h-full afp-border-0\"\n [title]=\"fileName()\"\n ></iframe>\n </div>\n } @else if (language() === 'text' || lineHtmls().length === 0) {\n <div class=\"afp-w-full afp-h-full afp-overflow-auto\" style=\"background: var(--fp-code-bg);\">\n <pre\n class=\"afp-py-6 afp-px-4 afp-text-fg-primary afp-font-mono afp-text-sm\"\n [class.afp-whitespace-pre-wrap]=\"wordWrap()\"\n [class.afp-break-words]=\"wordWrap()\"\n [class.afp-whitespace-pre]=\"!wordWrap()\"\n >{{ content() }}</pre>\n </div>\n } @else {\n <div class=\"afp-w-full afp-h-full afp-overflow-auto\" style=\"background: var(--fp-code-bg);\">\n <div\n class=\"afp-code-block with-line-numbers afp-w-full\"\n [class.no-wrap]=\"!wordWrap()\"\n [style.gridTemplateRows]=\"'repeat(' + lines().length + ', auto) minmax(1.5rem, 1fr)'\"\n >\n @for (line of lines(); track $index) {\n <span class=\"afp-code-gutter\">{{ $index + 1 }}</span>\n <span class=\"afp-code-line\" [innerHTML]=\"trust(lineHtmls()[$index] ?? '')\"></span>\n }\n <span class=\"afp-code-gutter-filler\"></span>\n <span class=\"afp-code-line-filler\"></span>\n </div>\n </div>\n }\n `, isInline: true, dependencies: [{ kind: \"component\", type: RendererError, selector: \"afp-renderer-error\", inputs: [\"message\", \"detail\", \"showIcon\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.25\", ngImport: i0, type: TextRenderer, decorators: [{\n type: Component,\n args: [{\n selector: 'afp-text-renderer',\n standalone: true,\n imports: [RendererError],\n changeDetection: ChangeDetectionStrategy.OnPush,\n host: { class: 'afp-block afp-w-full afp-h-full' },\n template: `\n @if (loading()) {\n <div class=\"afp-flex afp-items-center afp-justify-center afp-w-full afp-h-full\">\n <div class=\"afp-w-12 afp-h-12 afp-border-4 afp-border-line-strong afp-border-t-spinner-head afp-rounded-full afp-animate-spin\"></div>\n </div>\n } @else if (error()) {\n <afp-renderer-error [message]=\"error()!\" />\n } @else if (htmlPreview() && language() === 'html') {\n <div class=\"afp-w-full afp-h-full afp-bg-surface-toolbar\">\n <iframe\n [srcdoc]=\"content()\"\n sandbox=\"allow-same-origin\"\n class=\"afp-w-full afp-h-full afp-border-0\"\n [title]=\"fileName()\"\n ></iframe>\n </div>\n } @else if (language() === 'text' || lineHtmls().length === 0) {\n <div class=\"afp-w-full afp-h-full afp-overflow-auto\" style=\"background: var(--fp-code-bg);\">\n <pre\n class=\"afp-py-6 afp-px-4 afp-text-fg-primary afp-font-mono afp-text-sm\"\n [class.afp-whitespace-pre-wrap]=\"wordWrap()\"\n [class.afp-break-words]=\"wordWrap()\"\n [class.afp-whitespace-pre]=\"!wordWrap()\"\n >{{ content() }}</pre>\n </div>\n } @else {\n <div class=\"afp-w-full afp-h-full afp-overflow-auto\" style=\"background: var(--fp-code-bg);\">\n <div\n class=\"afp-code-block with-line-numbers afp-w-full\"\n [class.no-wrap]=\"!wordWrap()\"\n [style.gridTemplateRows]=\"'repeat(' + lines().length + ', auto) minmax(1.5rem, 1fr)'\"\n >\n @for (line of lines(); track $index) {\n <span class=\"afp-code-gutter\">{{ $index + 1 }}</span>\n <span class=\"afp-code-line\" [innerHTML]=\"trust(lineHtmls()[$index] ?? '')\"></span>\n }\n <span class=\"afp-code-gutter-filler\"></span>\n <span class=\"afp-code-line-filler\"></span>\n </div>\n </div>\n }\n `,\n }]\n }], ctorParameters: () => [] });\n\nexport { TextRenderer };\n//# sourceMappingURL=eternalheart-angular-file-preview-index-C3uCX4wD.mjs.map\n"],"names":["getLanguageFromFileName","fetchTextUtf8"],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { input, inject, signal, effect, linkedSignal, computed, ChangeDetectionS
|
|
|
3
3
|
import * as i1 from 'lucide-angular';
|
|
4
4
|
import { ChevronRight, ChevronDown, LucideAngularModule } from 'lucide-angular';
|
|
5
5
|
import { parse } from 'jsonc-parser';
|
|
6
|
-
import { L as LocaleService, R as RequestService, g as getFallbackTranslator, e as e0, T as ThemeService } from './eternalheart-angular-file-preview-eternalheart-angular-file-preview-
|
|
6
|
+
import { L as LocaleService, R as RequestService, g as getFallbackTranslator, e as e0, T as ThemeService } from './eternalheart-angular-file-preview-eternalheart-angular-file-preview-RPRQhVCg.mjs';
|
|
7
7
|
import { R as RendererError } from './eternalheart-angular-file-preview-eternalheart-angular-file-preview-RendererError-DtNihCIX-DtNihCIX.mjs';
|
|
8
8
|
|
|
9
9
|
const DARK_COLORS = {
|
|
@@ -285,4 +285,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
285
285
|
}], ctorParameters: () => [] });
|
|
286
286
|
|
|
287
287
|
export { JsonNode, JsonRenderer };
|
|
288
|
-
//# sourceMappingURL=eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-
|
|
288
|
+
//# sourceMappingURL=eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CBbnvps8-ClkiJKQ9.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-C0McUoqT-DJ35bhIz.mjs","sources":["../fesm2022/eternalheart-angular-file-preview-index-C0McUoqT.mjs"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { input, inject, linkedSignal, computed, ChangeDetectionStrategy, Component, signal, effect, ViewEncapsulation } from '@angular/core';\nimport * as i1 from 'lucide-angular';\nimport { ChevronRight, ChevronDown, LucideAngularModule } from 'lucide-angular';\nimport { parse } from 'jsonc-parser';\nimport { L as LocaleService, T as ThemeService, g as getFallbackTranslator, R as RequestService } from './eternalheart-angular-file-preview-eternalheart-angular-file-preview-DXwNhxAB.mjs';\nimport { R as RendererError } from './eternalheart-angular-file-preview-RendererError-DtNihCIX.mjs';\nimport { fetchTextUtf8 } from '@eternalheart/file-preview-core';\n\nconst DARK_COLORS = {\n key: '#9cdcfe',\n string: '#ce9178',\n number: '#b5cea8',\n keyword: '#569cd6',\n bracket: '#d4d4d4',\n colon: 'rgb(255 255 255 / 0.6)',\n collapsed: 'rgb(255 255 255 / 0.4)',\n arrow: 'rgb(255 255 255 / 0.5)',\n};\nconst LIGHT_COLORS = {\n key: '#005cc5',\n string: '#032f62',\n number: '#005cc5',\n keyword: '#d73a49',\n bracket: '#24292e',\n colon: 'rgb(23 23 23 / 0.6)',\n collapsed: 'rgb(23 23 23 / 0.45)',\n arrow: 'rgb(23 23 23 / 0.55)',\n};\nfunction pickColors(theme) {\n return theme === 'light' ? LIGHT_COLORS : DARK_COLORS;\n}\nclass JsonNode {\n constructor() {\n this.keyName = input(undefined);\n this.value = input.required();\n this.depth = input.required();\n this.defaultExpanded = input(false);\n this.locale = inject(LocaleService, { optional: true });\n this.themeService = inject(ThemeService, { optional: true });\n this.t = this.locale?.t() ?? getFallbackTranslator();\n this.chevronRight = ChevronRight;\n this.chevronDown = ChevronDown;\n this.expanded = linkedSignal(() => this.defaultExpanded());\n this.colors = computed(() => pickColors(this.themeService?.theme() ?? 'dark'));\n this.indent = computed(() => this.depth() * 20);\n this.isComposite = computed(() => {\n const v = this.value();\n return v !== null && v !== undefined && typeof v === 'object';\n });\n this.isArr = computed(() => Array.isArray(this.value()));\n this.count = computed(() => {\n const v = this.value();\n if (Array.isArray(v))\n return v.length;\n if (v !== null && typeof v === 'object')\n return Object.keys(v).length;\n return 0;\n });\n this.childEntries = computed(() => {\n const v = this.value();\n if (Array.isArray(v)) {\n return v.map((item, i) => ({ track: i, keyName: undefined, value: item }));\n }\n return Object.entries(v).map(([k, val]) => ({\n track: k,\n keyName: k,\n value: val,\n }));\n });\n }\n openBracket() {\n return this.isArr() ? '[' : '{';\n }\n closeBracket() {\n return this.isArr() ? ']' : '}';\n }\n collapsedLabel() {\n return this.isArr()\n ? `${this.count()} ${this.t('json.items')}`\n : `${this.count()} ${this.t('json.keys')}`;\n }\n isNullish() {\n const v = this.value();\n return v === null || v === undefined;\n }\n primitiveColor() {\n const v = this.value();\n const c = this.colors();\n if (v === null || v === undefined)\n return c.keyword;\n if (typeof v === 'boolean')\n return c.keyword;\n if (typeof v === 'number')\n return c.number;\n if (typeof v === 'string')\n return c.string;\n return c.bracket;\n }\n primitiveText() {\n const v = this.value();\n if (v === null)\n return 'null';\n if (v === undefined)\n return 'undefined';\n if (typeof v === 'string')\n return `\"${v}\"`;\n return String(v);\n }\n toggle() {\n this.expanded.update((v) => !v);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.25\", ngImport: i0, type: JsonNode, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"19.2.25\", type: JsonNode, isStandalone: true, selector: \"afp-json-node\", inputs: { keyName: { classPropertyName: \"keyName\", publicName: \"keyName\", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: \"value\", publicName: \"value\", isSignal: true, isRequired: true, transformFunction: null }, depth: { classPropertyName: \"depth\", publicName: \"depth\", isSignal: true, isRequired: true, transformFunction: null }, defaultExpanded: { classPropertyName: \"defaultExpanded\", publicName: \"defaultExpanded\", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `\n @if (!isComposite()) {\n <div class=\"json-row\" [style.paddingLeft.px]=\"indent()\">\n <span class=\"json-arrow-placeholder\"></span>\n @if (keyName() !== undefined) {\n <span class=\"json-key\" [style.color]=\"colors().key\">\n \"{{ keyName() }}\"<span [style.color]=\"colors().colon\">: </span>\n </span>\n }\n <span [style.color]=\"primitiveColor()\" [class.json-null]=\"isNullish()\">{{ primitiveText() }}</span>\n </div>\n } @else if (count() === 0) {\n <div class=\"json-row\" [style.paddingLeft.px]=\"indent()\">\n <span class=\"json-arrow-placeholder\"></span>\n @if (keyName() !== undefined) {\n <span class=\"json-key\" [style.color]=\"colors().key\">\n \"{{ keyName() }}\"<span [style.color]=\"colors().colon\">: </span>\n </span>\n }\n <span [style.color]=\"colors().bracket\">{{ openBracket() }}{{ closeBracket() }}</span>\n </div>\n } @else {\n <div class=\"json-row json-toggle\" [style.paddingLeft.px]=\"indent()\" (click)=\"toggle()\">\n <span class=\"json-arrow\" [style.color]=\"colors().arrow\">\n <i-lucide [img]=\"expanded() ? chevronDown : chevronRight\" class=\"afp-w-3.5 afp-h-3.5\" />\n </span>\n @if (keyName() !== undefined) {\n <span class=\"json-key\" [style.color]=\"colors().key\">\n \"{{ keyName() }}\"<span [style.color]=\"colors().colon\">: </span>\n </span>\n }\n <span [style.color]=\"colors().bracket\">{{ openBracket() }}</span>\n @if (!expanded()) {\n <span class=\"json-collapsed\" [style.color]=\"colors().collapsed\">\n {{ collapsedLabel() }}<span [style.color]=\"colors().bracket\"> {{ closeBracket() }}</span>\n </span>\n }\n </div>\n @if (expanded()) {\n @for (entry of childEntries(); track entry.track) {\n <afp-json-node\n [keyName]=\"entry.keyName\"\n [value]=\"entry.value\"\n [depth]=\"depth() + 1\"\n [defaultExpanded]=\"depth() < 1\"\n />\n }\n <div class=\"json-row\" [style.paddingLeft.px]=\"indent() + 20\">\n <span [style.color]=\"colors().bracket\">{{ closeBracket() }}</span>\n </div>\n }\n }\n `, isInline: true, styles: [\":host{display:block}\\n\"], dependencies: [{ kind: \"component\", type: JsonNode, selector: \"afp-json-node\", inputs: [\"keyName\", \"value\", \"depth\", \"defaultExpanded\"] }, { kind: \"ngmodule\", type: LucideAngularModule }, { kind: \"component\", type: i1.LucideAngularComponent, selector: \"lucide-angular, lucide-icon, i-lucide, span-lucide\", inputs: [\"class\", \"name\", \"img\", \"color\", \"absoluteStrokeWidth\", \"size\", \"strokeWidth\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.25\", ngImport: i0, type: JsonNode, decorators: [{\n type: Component,\n args: [{ selector: 'afp-json-node', standalone: true, imports: [LucideAngularModule], changeDetection: ChangeDetectionStrategy.OnPush, template: `\n @if (!isComposite()) {\n <div class=\"json-row\" [style.paddingLeft.px]=\"indent()\">\n <span class=\"json-arrow-placeholder\"></span>\n @if (keyName() !== undefined) {\n <span class=\"json-key\" [style.color]=\"colors().key\">\n \"{{ keyName() }}\"<span [style.color]=\"colors().colon\">: </span>\n </span>\n }\n <span [style.color]=\"primitiveColor()\" [class.json-null]=\"isNullish()\">{{ primitiveText() }}</span>\n </div>\n } @else if (count() === 0) {\n <div class=\"json-row\" [style.paddingLeft.px]=\"indent()\">\n <span class=\"json-arrow-placeholder\"></span>\n @if (keyName() !== undefined) {\n <span class=\"json-key\" [style.color]=\"colors().key\">\n \"{{ keyName() }}\"<span [style.color]=\"colors().colon\">: </span>\n </span>\n }\n <span [style.color]=\"colors().bracket\">{{ openBracket() }}{{ closeBracket() }}</span>\n </div>\n } @else {\n <div class=\"json-row json-toggle\" [style.paddingLeft.px]=\"indent()\" (click)=\"toggle()\">\n <span class=\"json-arrow\" [style.color]=\"colors().arrow\">\n <i-lucide [img]=\"expanded() ? chevronDown : chevronRight\" class=\"afp-w-3.5 afp-h-3.5\" />\n </span>\n @if (keyName() !== undefined) {\n <span class=\"json-key\" [style.color]=\"colors().key\">\n \"{{ keyName() }}\"<span [style.color]=\"colors().colon\">: </span>\n </span>\n }\n <span [style.color]=\"colors().bracket\">{{ openBracket() }}</span>\n @if (!expanded()) {\n <span class=\"json-collapsed\" [style.color]=\"colors().collapsed\">\n {{ collapsedLabel() }}<span [style.color]=\"colors().bracket\"> {{ closeBracket() }}</span>\n </span>\n }\n </div>\n @if (expanded()) {\n @for (entry of childEntries(); track entry.track) {\n <afp-json-node\n [keyName]=\"entry.keyName\"\n [value]=\"entry.value\"\n [depth]=\"depth() + 1\"\n [defaultExpanded]=\"depth() < 1\"\n />\n }\n <div class=\"json-row\" [style.paddingLeft.px]=\"indent() + 20\">\n <span [style.color]=\"colors().bracket\">{{ closeBracket() }}</span>\n </div>\n }\n }\n `, styles: [\":host{display:block}\\n\"] }]\n }] });\nclass JsonRenderer {\n constructor() {\n this.url = input.required();\n this.fileName = input.required();\n this.locale = inject(LocaleService, { optional: true });\n this.request = inject(RequestService, { optional: true });\n this.t = this.locale?.t() ?? getFallbackTranslator();\n this.data = signal(null);\n this.loading = signal(true);\n this.error = signal(null);\n this.getToolbarGroups = () => [];\n effect(() => {\n this.url();\n void this.loadJson();\n });\n }\n async loadJson() {\n this.loading.set(true);\n this.error.set(null);\n try {\n const fetcher = this.request?.fetcher() ?? ((u, init) => fetch(u, init));\n const text = await fetchTextUtf8(this.url(), { fetcher });\n this.data.set(parse(text));\n }\n catch (err) {\n console.error(err);\n this.error.set(this.t('json.load_failed'));\n }\n finally {\n this.loading.set(false);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.25\", ngImport: i0, type: JsonRenderer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"19.2.25\", type: JsonRenderer, isStandalone: true, selector: \"afp-json-renderer\", inputs: { url: { classPropertyName: \"url\", publicName: \"url\", isSignal: true, isRequired: true, transformFunction: null }, fileName: { classPropertyName: \"fileName\", publicName: \"fileName\", isSignal: true, isRequired: true, transformFunction: null } }, host: { classAttribute: \"afp-block afp-w-full afp-h-full\" }, ngImport: i0, template: `\n @if (loading()) {\n <div class=\"afp-flex afp-items-center afp-justify-center afp-w-full afp-h-full\">\n <div class=\"afp-w-12 afp-h-12 afp-border-4 afp-border-line-strong afp-border-t-spinner-head afp-rounded-full afp-animate-spin\"></div>\n </div>\n } @else if (error()) {\n <afp-renderer-error [message]=\"error()!\" />\n } @else {\n <div class=\"afp-w-full afp-h-full afp-overflow-auto afp-bg-code-bg afp-py-6 afp-px-4\">\n <afp-json-node [value]=\"data()\" [depth]=\"0\" [defaultExpanded]=\"true\" />\n </div>\n }\n `, isInline: true, styles: [\".afp-root .json-row{display:flex;align-items:flex-start;padding-top:1px;padding-bottom:1px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.875rem;line-height:1.4}.afp-root .json-toggle{cursor:pointer;-webkit-user-select:none;user-select:none}.afp-root .json-toggle:hover{background:var(--fp-surface-1)}.afp-root .json-arrow{width:16px;height:20px;flex-shrink:0;display:flex;align-items:center;justify-content:center}.afp-root .json-arrow-placeholder{width:16px;height:20px;flex-shrink:0}.afp-root .json-key{flex-shrink:0}.afp-root .json-collapsed{margin-left:4px}.afp-root .json-null{font-style:italic}\\n\"], dependencies: [{ kind: \"component\", type: RendererError, selector: \"afp-renderer-error\", inputs: [\"message\", \"detail\", \"showIcon\"] }, { kind: \"component\", type: JsonNode, selector: \"afp-json-node\", inputs: [\"keyName\", \"value\", \"depth\", \"defaultExpanded\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.25\", ngImport: i0, type: JsonRenderer, decorators: [{\n type: Component,\n args: [{ selector: 'afp-json-renderer', standalone: true, imports: [RendererError, JsonNode], changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'afp-block afp-w-full afp-h-full' }, encapsulation: ViewEncapsulation.None, template: `\n @if (loading()) {\n <div class=\"afp-flex afp-items-center afp-justify-center afp-w-full afp-h-full\">\n <div class=\"afp-w-12 afp-h-12 afp-border-4 afp-border-line-strong afp-border-t-spinner-head afp-rounded-full afp-animate-spin\"></div>\n </div>\n } @else if (error()) {\n <afp-renderer-error [message]=\"error()!\" />\n } @else {\n <div class=\"afp-w-full afp-h-full afp-overflow-auto afp-bg-code-bg afp-py-6 afp-px-4\">\n <afp-json-node [value]=\"data()\" [depth]=\"0\" [defaultExpanded]=\"true\" />\n </div>\n }\n `, styles: [\".afp-root .json-row{display:flex;align-items:flex-start;padding-top:1px;padding-bottom:1px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.875rem;line-height:1.4}.afp-root .json-toggle{cursor:pointer;-webkit-user-select:none;user-select:none}.afp-root .json-toggle:hover{background:var(--fp-surface-1)}.afp-root .json-arrow{width:16px;height:20px;flex-shrink:0;display:flex;align-items:center;justify-content:center}.afp-root .json-arrow-placeholder{width:16px;height:20px;flex-shrink:0}.afp-root .json-key{flex-shrink:0}.afp-root .json-collapsed{margin-left:4px}.afp-root .json-null{font-style:italic}\\n\"] }]\n }], ctorParameters: () => [] });\n\nexport { JsonNode, JsonRenderer };\n//# sourceMappingURL=eternalheart-angular-file-preview-index-C0McUoqT.mjs.map\n"],"names":["fetchTextUtf8"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CBbnvps8-ClkiJKQ9.mjs","sources":["../fesm2022/eternalheart-angular-file-preview-index-CBbnvps8.mjs"],"sourcesContent":["import * as i0 from '@angular/core';\nimport { input, inject, linkedSignal, computed, ChangeDetectionStrategy, Component, signal, effect, ViewEncapsulation } from '@angular/core';\nimport * as i1 from 'lucide-angular';\nimport { ChevronRight, ChevronDown, LucideAngularModule } from 'lucide-angular';\nimport { parse } from 'jsonc-parser';\nimport { L as LocaleService, T as ThemeService, g as getFallbackTranslator, R as RequestService } from './eternalheart-angular-file-preview-eternalheart-angular-file-preview-Dnuf7kun.mjs';\nimport { R as RendererError } from './eternalheart-angular-file-preview-RendererError-DtNihCIX.mjs';\nimport { fetchTextUtf8 } from '@eternalheart/file-preview-core';\n\nconst DARK_COLORS = {\n key: '#9cdcfe',\n string: '#ce9178',\n number: '#b5cea8',\n keyword: '#569cd6',\n bracket: '#d4d4d4',\n colon: 'rgb(255 255 255 / 0.6)',\n collapsed: 'rgb(255 255 255 / 0.4)',\n arrow: 'rgb(255 255 255 / 0.5)',\n};\nconst LIGHT_COLORS = {\n key: '#005cc5',\n string: '#032f62',\n number: '#005cc5',\n keyword: '#d73a49',\n bracket: '#24292e',\n colon: 'rgb(23 23 23 / 0.6)',\n collapsed: 'rgb(23 23 23 / 0.45)',\n arrow: 'rgb(23 23 23 / 0.55)',\n};\nfunction pickColors(theme) {\n return theme === 'light' ? LIGHT_COLORS : DARK_COLORS;\n}\nclass JsonNode {\n constructor() {\n this.keyName = input(undefined);\n this.value = input.required();\n this.depth = input.required();\n this.defaultExpanded = input(false);\n this.locale = inject(LocaleService, { optional: true });\n this.themeService = inject(ThemeService, { optional: true });\n this.t = this.locale?.t() ?? getFallbackTranslator();\n this.chevronRight = ChevronRight;\n this.chevronDown = ChevronDown;\n this.expanded = linkedSignal(() => this.defaultExpanded());\n this.colors = computed(() => pickColors(this.themeService?.theme() ?? 'dark'));\n this.indent = computed(() => this.depth() * 20);\n this.isComposite = computed(() => {\n const v = this.value();\n return v !== null && v !== undefined && typeof v === 'object';\n });\n this.isArr = computed(() => Array.isArray(this.value()));\n this.count = computed(() => {\n const v = this.value();\n if (Array.isArray(v))\n return v.length;\n if (v !== null && typeof v === 'object')\n return Object.keys(v).length;\n return 0;\n });\n this.childEntries = computed(() => {\n const v = this.value();\n if (Array.isArray(v)) {\n return v.map((item, i) => ({ track: i, keyName: undefined, value: item }));\n }\n return Object.entries(v).map(([k, val]) => ({\n track: k,\n keyName: k,\n value: val,\n }));\n });\n }\n openBracket() {\n return this.isArr() ? '[' : '{';\n }\n closeBracket() {\n return this.isArr() ? ']' : '}';\n }\n collapsedLabel() {\n return this.isArr()\n ? `${this.count()} ${this.t('json.items')}`\n : `${this.count()} ${this.t('json.keys')}`;\n }\n isNullish() {\n const v = this.value();\n return v === null || v === undefined;\n }\n primitiveColor() {\n const v = this.value();\n const c = this.colors();\n if (v === null || v === undefined)\n return c.keyword;\n if (typeof v === 'boolean')\n return c.keyword;\n if (typeof v === 'number')\n return c.number;\n if (typeof v === 'string')\n return c.string;\n return c.bracket;\n }\n primitiveText() {\n const v = this.value();\n if (v === null)\n return 'null';\n if (v === undefined)\n return 'undefined';\n if (typeof v === 'string')\n return `\"${v}\"`;\n return String(v);\n }\n toggle() {\n this.expanded.update((v) => !v);\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.25\", ngImport: i0, type: JsonNode, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"19.2.25\", type: JsonNode, isStandalone: true, selector: \"afp-json-node\", inputs: { keyName: { classPropertyName: \"keyName\", publicName: \"keyName\", isSignal: true, isRequired: false, transformFunction: null }, value: { classPropertyName: \"value\", publicName: \"value\", isSignal: true, isRequired: true, transformFunction: null }, depth: { classPropertyName: \"depth\", publicName: \"depth\", isSignal: true, isRequired: true, transformFunction: null }, defaultExpanded: { classPropertyName: \"defaultExpanded\", publicName: \"defaultExpanded\", isSignal: true, isRequired: false, transformFunction: null } }, ngImport: i0, template: `\n @if (!isComposite()) {\n <div class=\"json-row\" [style.paddingLeft.px]=\"indent()\">\n <span class=\"json-arrow-placeholder\"></span>\n @if (keyName() !== undefined) {\n <span class=\"json-key\" [style.color]=\"colors().key\">\n \"{{ keyName() }}\"<span [style.color]=\"colors().colon\">: </span>\n </span>\n }\n <span [style.color]=\"primitiveColor()\" [class.json-null]=\"isNullish()\">{{ primitiveText() }}</span>\n </div>\n } @else if (count() === 0) {\n <div class=\"json-row\" [style.paddingLeft.px]=\"indent()\">\n <span class=\"json-arrow-placeholder\"></span>\n @if (keyName() !== undefined) {\n <span class=\"json-key\" [style.color]=\"colors().key\">\n \"{{ keyName() }}\"<span [style.color]=\"colors().colon\">: </span>\n </span>\n }\n <span [style.color]=\"colors().bracket\">{{ openBracket() }}{{ closeBracket() }}</span>\n </div>\n } @else {\n <div class=\"json-row json-toggle\" [style.paddingLeft.px]=\"indent()\" (click)=\"toggle()\">\n <span class=\"json-arrow\" [style.color]=\"colors().arrow\">\n <i-lucide [img]=\"expanded() ? chevronDown : chevronRight\" class=\"afp-w-3.5 afp-h-3.5\" />\n </span>\n @if (keyName() !== undefined) {\n <span class=\"json-key\" [style.color]=\"colors().key\">\n \"{{ keyName() }}\"<span [style.color]=\"colors().colon\">: </span>\n </span>\n }\n <span [style.color]=\"colors().bracket\">{{ openBracket() }}</span>\n @if (!expanded()) {\n <span class=\"json-collapsed\" [style.color]=\"colors().collapsed\">\n {{ collapsedLabel() }}<span [style.color]=\"colors().bracket\"> {{ closeBracket() }}</span>\n </span>\n }\n </div>\n @if (expanded()) {\n @for (entry of childEntries(); track entry.track) {\n <afp-json-node\n [keyName]=\"entry.keyName\"\n [value]=\"entry.value\"\n [depth]=\"depth() + 1\"\n [defaultExpanded]=\"depth() < 1\"\n />\n }\n <div class=\"json-row\" [style.paddingLeft.px]=\"indent() + 20\">\n <span [style.color]=\"colors().bracket\">{{ closeBracket() }}</span>\n </div>\n }\n }\n `, isInline: true, styles: [\":host{display:block}\\n\"], dependencies: [{ kind: \"component\", type: JsonNode, selector: \"afp-json-node\", inputs: [\"keyName\", \"value\", \"depth\", \"defaultExpanded\"] }, { kind: \"ngmodule\", type: LucideAngularModule }, { kind: \"component\", type: i1.LucideAngularComponent, selector: \"lucide-angular, lucide-icon, i-lucide, span-lucide\", inputs: [\"class\", \"name\", \"img\", \"color\", \"absoluteStrokeWidth\", \"size\", \"strokeWidth\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.25\", ngImport: i0, type: JsonNode, decorators: [{\n type: Component,\n args: [{ selector: 'afp-json-node', standalone: true, imports: [LucideAngularModule], changeDetection: ChangeDetectionStrategy.OnPush, template: `\n @if (!isComposite()) {\n <div class=\"json-row\" [style.paddingLeft.px]=\"indent()\">\n <span class=\"json-arrow-placeholder\"></span>\n @if (keyName() !== undefined) {\n <span class=\"json-key\" [style.color]=\"colors().key\">\n \"{{ keyName() }}\"<span [style.color]=\"colors().colon\">: </span>\n </span>\n }\n <span [style.color]=\"primitiveColor()\" [class.json-null]=\"isNullish()\">{{ primitiveText() }}</span>\n </div>\n } @else if (count() === 0) {\n <div class=\"json-row\" [style.paddingLeft.px]=\"indent()\">\n <span class=\"json-arrow-placeholder\"></span>\n @if (keyName() !== undefined) {\n <span class=\"json-key\" [style.color]=\"colors().key\">\n \"{{ keyName() }}\"<span [style.color]=\"colors().colon\">: </span>\n </span>\n }\n <span [style.color]=\"colors().bracket\">{{ openBracket() }}{{ closeBracket() }}</span>\n </div>\n } @else {\n <div class=\"json-row json-toggle\" [style.paddingLeft.px]=\"indent()\" (click)=\"toggle()\">\n <span class=\"json-arrow\" [style.color]=\"colors().arrow\">\n <i-lucide [img]=\"expanded() ? chevronDown : chevronRight\" class=\"afp-w-3.5 afp-h-3.5\" />\n </span>\n @if (keyName() !== undefined) {\n <span class=\"json-key\" [style.color]=\"colors().key\">\n \"{{ keyName() }}\"<span [style.color]=\"colors().colon\">: </span>\n </span>\n }\n <span [style.color]=\"colors().bracket\">{{ openBracket() }}</span>\n @if (!expanded()) {\n <span class=\"json-collapsed\" [style.color]=\"colors().collapsed\">\n {{ collapsedLabel() }}<span [style.color]=\"colors().bracket\"> {{ closeBracket() }}</span>\n </span>\n }\n </div>\n @if (expanded()) {\n @for (entry of childEntries(); track entry.track) {\n <afp-json-node\n [keyName]=\"entry.keyName\"\n [value]=\"entry.value\"\n [depth]=\"depth() + 1\"\n [defaultExpanded]=\"depth() < 1\"\n />\n }\n <div class=\"json-row\" [style.paddingLeft.px]=\"indent() + 20\">\n <span [style.color]=\"colors().bracket\">{{ closeBracket() }}</span>\n </div>\n }\n }\n `, styles: [\":host{display:block}\\n\"] }]\n }] });\nclass JsonRenderer {\n constructor() {\n this.url = input.required();\n this.fileName = input.required();\n this.locale = inject(LocaleService, { optional: true });\n this.request = inject(RequestService, { optional: true });\n this.t = this.locale?.t() ?? getFallbackTranslator();\n this.data = signal(null);\n this.loading = signal(true);\n this.error = signal(null);\n this.getToolbarGroups = () => [];\n effect(() => {\n this.url();\n void this.loadJson();\n });\n }\n async loadJson() {\n this.loading.set(true);\n this.error.set(null);\n try {\n const fetcher = this.request?.fetcher() ?? ((u, init) => fetch(u, init));\n const text = await fetchTextUtf8(this.url(), { fetcher });\n this.data.set(parse(text));\n }\n catch (err) {\n console.error(err);\n this.error.set(this.t('json.load_failed'));\n }\n finally {\n this.loading.set(false);\n }\n }\n static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: \"12.0.0\", version: \"19.2.25\", ngImport: i0, type: JsonRenderer, deps: [], target: i0.ɵɵFactoryTarget.Component }); }\n static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: \"17.0.0\", version: \"19.2.25\", type: JsonRenderer, isStandalone: true, selector: \"afp-json-renderer\", inputs: { url: { classPropertyName: \"url\", publicName: \"url\", isSignal: true, isRequired: true, transformFunction: null }, fileName: { classPropertyName: \"fileName\", publicName: \"fileName\", isSignal: true, isRequired: true, transformFunction: null } }, host: { classAttribute: \"afp-block afp-w-full afp-h-full\" }, ngImport: i0, template: `\n @if (loading()) {\n <div class=\"afp-flex afp-items-center afp-justify-center afp-w-full afp-h-full\">\n <div class=\"afp-w-12 afp-h-12 afp-border-4 afp-border-line-strong afp-border-t-spinner-head afp-rounded-full afp-animate-spin\"></div>\n </div>\n } @else if (error()) {\n <afp-renderer-error [message]=\"error()!\" />\n } @else {\n <div class=\"afp-w-full afp-h-full afp-overflow-auto afp-bg-code-bg afp-py-6 afp-px-4\">\n <afp-json-node [value]=\"data()\" [depth]=\"0\" [defaultExpanded]=\"true\" />\n </div>\n }\n `, isInline: true, styles: [\".afp-root .json-row{display:flex;align-items:flex-start;padding-top:1px;padding-bottom:1px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.875rem;line-height:1.4}.afp-root .json-toggle{cursor:pointer;-webkit-user-select:none;user-select:none}.afp-root .json-toggle:hover{background:var(--fp-surface-1)}.afp-root .json-arrow{width:16px;height:20px;flex-shrink:0;display:flex;align-items:center;justify-content:center}.afp-root .json-arrow-placeholder{width:16px;height:20px;flex-shrink:0}.afp-root .json-key{flex-shrink:0}.afp-root .json-collapsed{margin-left:4px}.afp-root .json-null{font-style:italic}\\n\"], dependencies: [{ kind: \"component\", type: RendererError, selector: \"afp-renderer-error\", inputs: [\"message\", \"detail\", \"showIcon\"] }, { kind: \"component\", type: JsonNode, selector: \"afp-json-node\", inputs: [\"keyName\", \"value\", \"depth\", \"defaultExpanded\"] }], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None }); }\n}\ni0.ɵɵngDeclareClassMetadata({ minVersion: \"12.0.0\", version: \"19.2.25\", ngImport: i0, type: JsonRenderer, decorators: [{\n type: Component,\n args: [{ selector: 'afp-json-renderer', standalone: true, imports: [RendererError, JsonNode], changeDetection: ChangeDetectionStrategy.OnPush, host: { class: 'afp-block afp-w-full afp-h-full' }, encapsulation: ViewEncapsulation.None, template: `\n @if (loading()) {\n <div class=\"afp-flex afp-items-center afp-justify-center afp-w-full afp-h-full\">\n <div class=\"afp-w-12 afp-h-12 afp-border-4 afp-border-line-strong afp-border-t-spinner-head afp-rounded-full afp-animate-spin\"></div>\n </div>\n } @else if (error()) {\n <afp-renderer-error [message]=\"error()!\" />\n } @else {\n <div class=\"afp-w-full afp-h-full afp-overflow-auto afp-bg-code-bg afp-py-6 afp-px-4\">\n <afp-json-node [value]=\"data()\" [depth]=\"0\" [defaultExpanded]=\"true\" />\n </div>\n }\n `, styles: [\".afp-root .json-row{display:flex;align-items:flex-start;padding-top:1px;padding-bottom:1px;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:.875rem;line-height:1.4}.afp-root .json-toggle{cursor:pointer;-webkit-user-select:none;user-select:none}.afp-root .json-toggle:hover{background:var(--fp-surface-1)}.afp-root .json-arrow{width:16px;height:20px;flex-shrink:0;display:flex;align-items:center;justify-content:center}.afp-root .json-arrow-placeholder{width:16px;height:20px;flex-shrink:0}.afp-root .json-key{flex-shrink:0}.afp-root .json-collapsed{margin-left:4px}.afp-root .json-null{font-style:italic}\\n\"] }]\n }], ctorParameters: () => [] });\n\nexport { JsonNode, JsonRenderer };\n//# sourceMappingURL=eternalheart-angular-file-preview-index-CBbnvps8.mjs.map\n"],"names":["fetchTextUtf8"],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import * as i0 from '@angular/core';
|
|
|
2
2
|
import { input, inject, DestroyRef, signal, viewChild, computed, effect, untracked, afterNextRender, ChangeDetectionStrategy, Component } from '@angular/core';
|
|
3
3
|
import * as i1 from 'lucide-angular';
|
|
4
4
|
import { Loader2, ZoomOut, ZoomIn, Scan, Maximize2, RotateCcw, RotateCw, RefreshCw, LucideAngularModule } from 'lucide-angular';
|
|
5
|
-
import { L as LocaleService, R as RequestService, g as getFallbackTranslator, a as R0, i as ig, Z as Zg, W as Wg, p as pg } from './eternalheart-angular-file-preview-eternalheart-angular-file-preview-
|
|
5
|
+
import { L as LocaleService, R as RequestService, g as getFallbackTranslator, a as R0, i as ig, Z as Zg, W as Wg, p as pg } from './eternalheart-angular-file-preview-eternalheart-angular-file-preview-RPRQhVCg.mjs';
|
|
6
6
|
import { R as RendererError } from './eternalheart-angular-file-preview-eternalheart-angular-file-preview-RendererError-DtNihCIX-DtNihCIX.mjs';
|
|
7
7
|
import { T as ToolbarEventEmitter } from './eternalheart-angular-file-preview-eternalheart-angular-file-preview-base.types-D5x7QPey-D5x7QPey.mjs';
|
|
8
8
|
|
|
@@ -652,4 +652,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.25", ngImpo
|
|
|
652
652
|
}], ctorParameters: () => [] });
|
|
653
653
|
|
|
654
654
|
export { ImageRenderer };
|
|
655
|
-
//# sourceMappingURL=eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-
|
|
655
|
+
//# sourceMappingURL=eternalheart-angular-file-preview-eternalheart-angular-file-preview-index-CMeATokn-iD-SSbnK.mjs.map
|