@sd-angular/core 19.0.0-beta.82 → 19.0.0-beta.84
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/fesm2022/sd-angular-core-components-anchor-v2.mjs +9 -9
- package/fesm2022/sd-angular-core-components-anchor.mjs +12 -12
- package/fesm2022/sd-angular-core-components-avatar.mjs +3 -3
- package/fesm2022/sd-angular-core-components-badge.mjs +3 -3
- package/fesm2022/sd-angular-core-components-base.mjs +3 -3
- package/fesm2022/sd-angular-core-components-button.mjs +3 -3
- package/fesm2022/sd-angular-core-components-chart.mjs +12 -12
- package/fesm2022/sd-angular-core-components-code-editor.mjs +3 -3
- package/fesm2022/sd-angular-core-components-document-builder.mjs +6 -6
- package/fesm2022/sd-angular-core-components-editor.mjs +3 -3
- package/fesm2022/sd-angular-core-components-history.mjs +7 -7
- package/fesm2022/sd-angular-core-components-import-excel.mjs +10 -10
- package/fesm2022/sd-angular-core-components-mini-editor.mjs +3 -3
- package/fesm2022/sd-angular-core-components-modal.mjs +3 -3
- package/fesm2022/sd-angular-core-components-preview.mjs +3 -3
- package/fesm2022/sd-angular-core-components-query-builder.mjs +3 -3
- package/fesm2022/sd-angular-core-components-quick-action.mjs +3 -3
- package/fesm2022/sd-angular-core-components-section.mjs +6 -6
- package/fesm2022/sd-angular-core-components-side-drawer.mjs +3 -3
- package/fesm2022/sd-angular-core-components-tab-router.mjs +104 -51
- package/fesm2022/sd-angular-core-components-tab-router.mjs.map +1 -1
- package/fesm2022/sd-angular-core-components-table.mjs +96 -96
- package/fesm2022/sd-angular-core-components-upload-file.mjs +15 -15
- package/fesm2022/sd-angular-core-components-view.mjs +3 -3
- package/fesm2022/sd-angular-core-components-workflow.mjs +198 -198
- package/fesm2022/sd-angular-core-directives.mjs +21 -21
- package/fesm2022/sd-angular-core-forms-autocomplete.mjs +3 -3
- package/fesm2022/sd-angular-core-forms-checkbox.mjs +3 -3
- package/fesm2022/sd-angular-core-forms-chip-calendar.mjs +6 -6
- package/fesm2022/sd-angular-core-forms-chip.mjs +6 -6
- package/fesm2022/sd-angular-core-forms-date-range.mjs +3 -3
- package/fesm2022/sd-angular-core-forms-date.mjs +3 -3
- package/fesm2022/sd-angular-core-forms-datetime.mjs +3 -3
- package/fesm2022/sd-angular-core-forms-directives.mjs +12 -12
- package/fesm2022/sd-angular-core-forms-input-number.mjs +3 -3
- package/fesm2022/sd-angular-core-forms-input.mjs +3 -3
- package/fesm2022/sd-angular-core-forms-label.mjs +3 -3
- package/fesm2022/sd-angular-core-forms-radio.mjs +3 -3
- package/fesm2022/sd-angular-core-forms-select.mjs +3 -3
- package/fesm2022/sd-angular-core-forms-switch.mjs +3 -3
- package/fesm2022/sd-angular-core-forms-textarea.mjs +3 -3
- package/fesm2022/sd-angular-core-forms.mjs +4 -4
- package/fesm2022/sd-angular-core-handlers.mjs +3 -3
- package/fesm2022/sd-angular-core-interceptors.mjs +3 -3
- package/fesm2022/sd-angular-core-modules-auth.mjs +9 -9
- package/fesm2022/sd-angular-core-modules-authom.mjs +7 -7
- package/fesm2022/sd-angular-core-modules-keycloak.mjs +7 -7
- package/fesm2022/sd-angular-core-modules-layout.mjs +73 -73
- package/fesm2022/sd-angular-core-modules-permission.mjs +9 -9
- package/fesm2022/sd-angular-core-pipes.mjs +14 -14
- package/fesm2022/sd-angular-core-services-api.mjs +10 -10
- package/fesm2022/sd-angular-core-services-cache.mjs +3 -3
- package/fesm2022/sd-angular-core-services-confirm.mjs +6 -6
- package/fesm2022/sd-angular-core-services-docx.mjs +198 -71
- package/fesm2022/sd-angular-core-services-docx.mjs.map +1 -1
- package/fesm2022/sd-angular-core-services-excel.mjs +3 -3
- package/fesm2022/sd-angular-core-services-firebase.mjs +3 -3
- package/fesm2022/sd-angular-core-services-license.mjs +3 -3
- package/fesm2022/sd-angular-core-services-loading.mjs +3 -3
- package/fesm2022/sd-angular-core-services-notify.mjs +9 -9
- package/fesm2022/sd-angular-core-services-storage.mjs +3 -3
- package/package.json +57 -57
- package/sd-angular-core-19.0.0-beta.84.tgz +0 -0
- package/services/docx/src/lib/docx.service.d.ts +4 -2
- package/services/docx/src/lib/pandoc-core.d.ts +11 -0
- package/sd-angular-core-19.0.0-beta.82.tgz +0 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sd-angular-core-services-docx.mjs","sources":["../../../projects/sd-angular/services/docx/src/lib/docx.service.ts","../../../projects/sd-angular/services/docx/sd-angular-core-services-docx.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport * as mammoth from 'mammoth';\r\nimport { docxToHtml } from '@omer-go/docx-parser-converter-ts';\r\nimport { SdDocxConvertOptions, SdDocxConvertResult } from './docx.model';\r\nimport { SdNotifyService } from '@sd-angular/core/services/notify';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SdDocxService {\r\n readonly #DEFAULT_MAX_SIZE_MB = 50;\r\n readonly #VALID_EXTENSIONS = ['.doc', '.docx'];\r\n\r\n readonly #ERROR_INVALID_FORMAT = 'Định dạng không hợp lệ. Vui lòng chọn Mẫu có định dạng DOC hoặc DOCX';\r\n readonly #ERROR_SIZE_EXCEEDED = 'Kích thước tệp mẫu vượt quá tiêu chuẩn hỗ trợ của hệ thống. Vui lòng thử lại';\r\n\r\n #fileInput: HTMLInputElement | null = null;\r\n\r\n constructor(private notifyService: SdNotifyService) {}\r\n\r\n async open(options?: SdDocxConvertOptions): Promise<SdDocxConvertResult | null> {\r\n return new Promise(resolve => {\r\n this.#createFileInput();\r\n if (!this.#fileInput) {\r\n resolve(null);\r\n return;\r\n }\r\n\r\n const handleChange = async (event: Event) => {\r\n const input = event.target as HTMLInputElement;\r\n const file = input.files?.[0];\r\n\r\n if (!file) {\r\n resolve(null);\r\n return;\r\n }\r\n\r\n const result = await this.convertToHtml(file, options);\r\n resolve(result);\r\n\r\n // Cleanup\r\n input.value = '';\r\n input.removeEventListener('change', handleChange);\r\n };\r\n\r\n this.#fileInput.addEventListener('change', handleChange, { once: true });\r\n this.#fileInput.click();\r\n });\r\n }\r\n\r\n #createFileInput(): void {\r\n if (this.#fileInput) {\r\n return;\r\n }\r\n\r\n this.#fileInput = document.createElement('input');\r\n this.#fileInput.type = 'file';\r\n this.#fileInput.accept = '.doc,.docx';\r\n this.#fileInput.style.display = 'none';\r\n document.body.appendChild(this.#fileInput);\r\n }\r\n\r\n async convertToHtml(input: File | Blob | ArrayBuffer, options?: SdDocxConvertOptions): Promise<SdDocxConvertResult | null> {\r\n const opts = {\r\n validateFormat: true,\r\n validateSize: true,\r\n maxSizeInMb: this.#DEFAULT_MAX_SIZE_MB,\r\n ...options,\r\n };\r\n\r\n try {\r\n let fileName: string | undefined;\r\n let fileSize: number | undefined;\r\n let arrayBuffer: ArrayBuffer;\r\n\r\n if (input instanceof File) {\r\n fileName = input.name;\r\n fileSize = input.size;\r\n arrayBuffer = await this.#fileToArrayBuffer(input);\r\n } else if (input instanceof Blob) {\r\n fileSize = input.size;\r\n arrayBuffer = await this.#blobToArrayBuffer(input);\r\n } else {\r\n arrayBuffer = input;\r\n }\r\n\r\n if (opts.validateFormat && fileName) {\r\n if (!this.#isValidFormat(fileName)) {\r\n this.notifyService.error(this.#ERROR_INVALID_FORMAT);\r\n return null;\r\n }\r\n }\r\n\r\n if (opts.validateSize && fileSize !== undefined) {\r\n const maxSizeInBytes = opts.maxSizeInMb! * 1024 * 1024;\r\n if (fileSize > maxSizeInBytes) {\r\n this.notifyService.error(this.#ERROR_SIZE_EXCEEDED);\r\n return null;\r\n }\r\n }\r\n\r\n const { validateFormat, validateSize, maxSizeInMb, ...conversionOptions } = opts;\r\n\r\n // Try @omer-go first for better formatting, fallback to mammoth on BOM error\r\n let html: string;\r\n let messages: string[] = [];\r\n try {\r\n html = await docxToHtml(arrayBuffer, {\r\n styleMode: 'inline',\r\n useSemanticTags: true,\r\n fragmentOnly: true,\r\n ...conversionOptions,\r\n });\r\n } catch (omerError: any) {\r\n console.log(omerError);\r\n // Fallback to mammoth if @omer-go fails (e.g., BOM issue)\r\n console.warn('@omer-go/docx-parser-converter-ts failed, falling back to mammoth:', omerError?.message);\r\n const result = await mammoth.convertToHtml({ arrayBuffer }, conversionOptions as any);\r\n html = result.value;\r\n messages = result.messages.map(m => m.toString());\r\n }\r\n\r\n return {\r\n html,\r\n messages,\r\n };\r\n } catch (error) {\r\n console.error('DocX conversion error:', error);\r\n this.notifyService.error('Có lỗi xảy ra khi chuyển đổi file DOCX');\r\n return null;\r\n }\r\n }\r\n\r\n async convertToHtmlString(input: File | Blob | ArrayBuffer, options?: SdDocxConvertOptions): Promise<string | null> {\r\n const result = await this.convertToHtml(input, options);\r\n return result?.html ?? null;\r\n }\r\n\r\n #isValidFormat(fileName: string): boolean {\r\n const lowerCaseName = fileName.toLowerCase();\r\n return this.#VALID_EXTENSIONS.some(ext => lowerCaseName.endsWith(ext));\r\n }\r\n\r\n #fileToArrayBuffer(file: File): Promise<ArrayBuffer> {\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.onload = e => {\r\n const result = e.target?.result as ArrayBuffer;\r\n if (result) {\r\n resolve(result);\r\n } else {\r\n reject(new Error('Failed to read file'));\r\n }\r\n };\r\n reader.onerror = () => reject(reader.error);\r\n reader.readAsArrayBuffer(file);\r\n });\r\n }\r\n\r\n #blobToArrayBuffer(blob: Blob): Promise<ArrayBuffer> {\r\n return new Promise((resolve, reject) => {\r\n const reader = new FileReader();\r\n reader.onload = e => {\r\n const result = e.target?.result as ArrayBuffer;\r\n if (result) {\r\n resolve(result);\r\n } else {\r\n reject(new Error('Failed to read blob'));\r\n }\r\n };\r\n reader.onerror = () => reject(reader.error);\r\n reader.readAsArrayBuffer(blob);\r\n });\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"sd-angular-core-services-docx.mjs","sources":["../../../projects/sd-angular/services/docx/src/lib/pandoc-core.ts","../../../projects/sd-angular/services/docx/src/lib/docx.service.ts","../../../projects/sd-angular/services/docx/sd-angular-core-services-docx.ts"],"sourcesContent":["/* Pandoc WASM core logic — adapted from pandoc-wasm/src/core.js\r\n *\r\n * This file is a local copy of the environment-agnostic pandoc core.\r\n * It imports @bjorn3/browser_wasi_shim directly, avoiding the pandoc-wasm\r\n * package entry points which use top-level await (incompatible with\r\n * Angular's esbuild/Vite build pipeline).\r\n *\r\n * Source: https://github.com/pandoc/pandoc-wasm (GPL-2.0-or-later)\r\n */\r\n\r\n// @ts-nocheck\r\nimport {\r\n ConsoleStdout,\r\n File,\r\n OpenFile,\r\n PreopenDirectory,\r\n WASI,\r\n} from '@bjorn3/browser_wasi_shim';\r\n\r\nexport interface PandocConvertResult {\r\n stdout: string;\r\n stderr: string;\r\n warnings: any[];\r\n files: Record<string, any>;\r\n mediaFiles: Record<string, any>;\r\n}\r\n\r\nexport interface PandocInstance {\r\n convert(\r\n options: Record<string, any>,\r\n stdin: string | null,\r\n files: Record<string, Blob | string>\r\n ): Promise<PandocConvertResult>;\r\n}\r\n\r\nexport function createPandocInstance(wasmBinary: ArrayBuffer): Promise<PandocInstance> {\r\n const args = ['pandoc.wasm', '+RTS', '-H64m', '-RTS'];\r\n const env: string[] = [];\r\n const fileSystem = new Map();\r\n const fds = [\r\n new OpenFile(new File(new Uint8Array(), { readonly: true })),\r\n ConsoleStdout.lineBuffered((msg: string) => console.log(`[WASI stdout] ${msg}`)),\r\n ConsoleStdout.lineBuffered((msg: string) => console.warn(`[WASI stderr] ${msg}`)),\r\n new PreopenDirectory('/', fileSystem),\r\n ];\r\n const options = { debug: false };\r\n const wasi = new WASI(args, env, fds, options);\r\n\r\n return WebAssembly.instantiate(wasmBinary, {\r\n wasi_snapshot_preview1: wasi.wasiImport,\r\n }).then(({ instance }: any) => {\r\n wasi.initialize(instance);\r\n instance.exports.__wasm_call_ctors();\r\n\r\n function memory_data_view() {\r\n return new DataView(instance.exports.memory.buffer);\r\n }\r\n\r\n const argc_ptr = instance.exports.malloc(4);\r\n memory_data_view().setUint32(argc_ptr, args.length, true);\r\n const argv = instance.exports.malloc(4 * (args.length + 1));\r\n for (let i = 0; i < args.length; ++i) {\r\n const arg = instance.exports.malloc(args[i].length + 1);\r\n new TextEncoder().encodeInto(\r\n args[i],\r\n new Uint8Array(instance.exports.memory.buffer, arg, args[i].length)\r\n );\r\n memory_data_view().setUint8(arg + args[i].length, 0);\r\n memory_data_view().setUint32(argv + 4 * i, arg, true);\r\n }\r\n memory_data_view().setUint32(argv + 4 * args.length, 0, true);\r\n const argv_ptr = instance.exports.malloc(4);\r\n memory_data_view().setUint32(argv_ptr, argv, true);\r\n\r\n instance.exports.hs_init_with_rtsopts(argc_ptr, argv_ptr);\r\n\r\n async function addFile(filename: string, data: Blob | string, readonly: boolean) {\r\n let uint8Array: Uint8Array;\r\n if (typeof data === 'string') {\r\n uint8Array = new TextEncoder().encode(data);\r\n } else {\r\n const buffer = await data.arrayBuffer();\r\n uint8Array = new Uint8Array(buffer);\r\n }\r\n const file = new File(uint8Array, { readonly });\r\n fileSystem.set(filename, file);\r\n }\r\n\r\n async function convert(\r\n options: Record<string, any>,\r\n stdin: string | null,\r\n files: Record<string, Blob | string>\r\n ): Promise<PandocConvertResult> {\r\n const opts_str = JSON.stringify(options);\r\n const encoded = new TextEncoder().encode(opts_str);\r\n const opts_ptr = instance.exports.malloc(encoded.length);\r\n new TextEncoder().encodeInto(\r\n opts_str,\r\n new Uint8Array(instance.exports.memory.buffer, opts_ptr, encoded.length)\r\n );\r\n\r\n files = { ...files };\r\n\r\n fileSystem.clear();\r\n const in_file = new File(new Uint8Array(), { readonly: true });\r\n const out_file = new File(new Uint8Array(), { readonly: false });\r\n const err_file = new File(new Uint8Array(), { readonly: false });\r\n const warnings_file = new File(new Uint8Array(), { readonly: false });\r\n fileSystem.set('stdin', in_file);\r\n fileSystem.set('stdout', out_file);\r\n fileSystem.set('stderr', err_file);\r\n fileSystem.set('warnings', warnings_file);\r\n\r\n const knownFiles = new Set(['stdin', 'stdout', 'stderr', 'warnings']);\r\n\r\n for (const filename in files) {\r\n await addFile(filename, files[filename], true);\r\n knownFiles.add(filename);\r\n }\r\n\r\n const outputFileName = options['output-file'] || null;\r\n const extractMediaPath = options['extract-media'] || null;\r\n\r\n if (outputFileName) {\r\n await addFile(outputFileName, new Blob(), false);\r\n knownFiles.add(outputFileName);\r\n }\r\n\r\n if (extractMediaPath) {\r\n await addFile(extractMediaPath, new Blob(), false);\r\n if (extractMediaPath.endsWith('.zip')) {\r\n knownFiles.add(extractMediaPath);\r\n }\r\n }\r\n\r\n if (stdin) {\r\n in_file.data = new TextEncoder().encode(stdin);\r\n }\r\n\r\n instance.exports.convert(opts_ptr, encoded.length);\r\n\r\n if (options['output-file']) {\r\n const outputFile = fileSystem.get(options['output-file']);\r\n if (outputFile && outputFile.data && outputFile.data.length > 0) {\r\n files[options['output-file']] = new Blob([outputFile.data]);\r\n }\r\n }\r\n\r\n if (options['extract-media']) {\r\n const mediaFile = fileSystem.get(options['extract-media']);\r\n if (mediaFile && mediaFile.data && mediaFile.data.length > 0) {\r\n files[options['extract-media']] = new Blob([mediaFile.data], { type: 'application/zip' });\r\n }\r\n }\r\n\r\n const mediaFiles: Record<string, Blob> = {};\r\n for (const [name, fileData] of fileSystem.entries()) {\r\n if (!knownFiles.has(name) && fileData && fileData.data && fileData.data.length > 0) {\r\n const blob = new Blob([fileData.data]);\r\n files[name] = blob;\r\n if (name !== outputFileName && name !== extractMediaPath) {\r\n mediaFiles[name] = blob;\r\n }\r\n }\r\n }\r\n\r\n const rawWarnings = new TextDecoder('utf-8', { fatal: true }).decode(warnings_file.data);\r\n let warnings: any[] = [];\r\n if (rawWarnings) {\r\n try {\r\n warnings = JSON.parse(rawWarnings);\r\n } catch (e) {\r\n console.warn('Failed to parse warnings:', e);\r\n }\r\n }\r\n\r\n return {\r\n stdout: new TextDecoder('utf-8', { fatal: true }).decode(out_file.data),\r\n stderr: new TextDecoder('utf-8', { fatal: true }).decode(err_file.data),\r\n warnings,\r\n files,\r\n mediaFiles,\r\n };\r\n }\r\n\r\n return { convert } as PandocInstance;\r\n });\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { SdNotifyService } from '@sd-angular/core/services/notify';\r\nimport { SdLoadingService } from '@sd-angular/core/services/loading';\r\n\r\nimport { SdDocxConvertOptions, SdDocxConvertResult } from './docx.model';\r\nimport { createPandocInstance, PandocInstance } from './pandoc-core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class SdDocxService {\r\n readonly #DEFAULT_MAX_SIZE_MB = 50;\r\n readonly #VALID_EXTENSIONS = ['.doc', '.docx'];\r\n\r\n readonly #ERROR_INVALID_FORMAT = 'Định dạng không hợp lệ. Vui lòng chọn Mẫu có định dạng DOC hoặc DOCX';\r\n readonly #ERROR_SIZE_EXCEEDED = 'Kích thước tệp mẫu vượt quá tiêu chuẩn hỗ trợ của hệ thống. Vui lòng thử lại';\r\n\r\n readonly #PANDOC_WASM_URL = 'https://pandoc.github.io/pandoc-wasm/pandoc.wasm';\r\n\r\n #fileInput: HTMLInputElement | null = null;\r\n #pandocInstance: PandocInstance | null = null;\r\n\r\n constructor(\r\n private notifyService: SdNotifyService,\r\n private loadingService: SdLoadingService\r\n ) {}\r\n\r\n async open(options?: SdDocxConvertOptions): Promise<SdDocxConvertResult | null> {\r\n return new Promise(resolve => {\r\n this.#createFileInput();\r\n if (!this.#fileInput) {\r\n resolve(null);\r\n return;\r\n }\r\n\r\n const handleChange = async (event: Event) => {\r\n const input = event.target as HTMLInputElement;\r\n const file = input.files?.[0];\r\n\r\n if (!file) {\r\n resolve(null);\r\n return;\r\n }\r\n\r\n this.loadingService.start();\r\n try {\r\n const result = await this.convertToHtml(file, options);\r\n resolve(result);\r\n } catch (error) {\r\n console.error('[SdDocxService] DocX conversion error:', error);\r\n this.notifyService.error('Có lỗi xảy ra khi chuyển đổi file DOCX');\r\n resolve(null);\r\n } finally {\r\n input.value = '';\r\n input.removeEventListener('change', handleChange);\r\n this.loadingService.stop();\r\n }\r\n };\r\n\r\n this.#fileInput.addEventListener('change', handleChange, { once: true });\r\n this.#fileInput.click();\r\n });\r\n }\r\n\r\n #createFileInput(): void {\r\n if (this.#fileInput) {\r\n return;\r\n }\r\n\r\n this.#fileInput = document.createElement('input');\r\n this.#fileInput.type = 'file';\r\n this.#fileInput.accept = '.doc,.docx';\r\n this.#fileInput.style.display = 'none';\r\n document.body.appendChild(this.#fileInput);\r\n }\r\n\r\n async #getPandocInstance(): Promise<PandocInstance> {\r\n if (this.#pandocInstance) {\r\n return this.#pandocInstance;\r\n }\r\n\r\n console.log('[SdDocxService] Fetching WASM binary from:', this.#PANDOC_WASM_URL);\r\n const wasmResponse = await fetch(this.#PANDOC_WASM_URL);\r\n if (!wasmResponse.ok) {\r\n throw new Error(`Failed to fetch pandoc.wasm: ${wasmResponse.status} ${wasmResponse.statusText}`);\r\n }\r\n console.log('[SdDocxService] WASM fetched, size:', wasmResponse.headers.get('content-length'));\r\n const wasmBinary = await wasmResponse.arrayBuffer();\r\n console.log('[SdDocxService] WASM binary loaded, bytes:', wasmBinary.byteLength);\r\n this.#pandocInstance = await createPandocInstance(wasmBinary);\r\n console.log('[SdDocxService] Pandoc instance created successfully');\r\n return this.#pandocInstance;\r\n }\r\n\r\n async convertToHtml(input: File | Blob | ArrayBuffer, options?: SdDocxConvertOptions): Promise<SdDocxConvertResult | null> {\r\n const opts = {\r\n validateFormat: true,\r\n validateSize: true,\r\n maxSizeInMb: this.#DEFAULT_MAX_SIZE_MB,\r\n ...options,\r\n };\r\n\r\n try {\r\n let fileName: string | undefined;\r\n let fileSize: number | undefined;\r\n let blob: Blob;\r\n\r\n if (input instanceof File) {\r\n fileName = input.name;\r\n fileSize = input.size;\r\n blob = input;\r\n } else if (input instanceof Blob) {\r\n fileSize = input.size;\r\n blob = input;\r\n } else {\r\n blob = new Blob([input], {\r\n type: 'application/vnd.openxmlformats-officedocument.wordprocessingml.document',\r\n });\r\n }\r\n\r\n if (opts.validateFormat && fileName) {\r\n if (!this.#isValidFormat(fileName)) {\r\n this.notifyService.error(this.#ERROR_INVALID_FORMAT);\r\n return null;\r\n }\r\n }\r\n\r\n if (opts.validateSize && fileSize !== undefined) {\r\n const maxSizeInBytes = opts.maxSizeInMb! * 1024 * 1024;\r\n if (fileSize > maxSizeInBytes) {\r\n this.notifyService.error(this.#ERROR_SIZE_EXCEEDED);\r\n return null;\r\n }\r\n }\r\n\r\n console.log('[SdDocxService] Getting pandoc instance...');\r\n const pandoc = await this.#getPandocInstance();\r\n console.log('[SdDocxService] Converting DOCX, blob size:', blob.size);\r\n\r\n const pandocOpts: Record<string, any> = {\r\n from: 'docx',\r\n to: 'html',\r\n 'input-files': ['document.docx'],\r\n standalone: true,\r\n 'embed-resources': true,\r\n };\r\n\r\n const result = await pandoc.convert(pandocOpts, null, { 'document.docx': blob });\r\n console.log('[SdDocxService] Conversion done, stdout length:', result.stdout?.length, 'stderr:', result.stderr);\r\n\r\n return {\r\n html: result.stdout,\r\n messages: result.warnings.map((w: any) => String(w)),\r\n };\r\n } catch (error) {\r\n console.error('[SdDocxService] DocX conversion error:', error);\r\n this.notifyService.error('Có lỗi xảy ra khi chuyển đổi file DOCX');\r\n return null;\r\n }\r\n }\r\n\r\n async convertToHtmlString(input: File | Blob | ArrayBuffer, options?: SdDocxConvertOptions): Promise<string | null> {\r\n const result = await this.convertToHtml(input, options);\r\n return result?.html ?? null;\r\n }\r\n\r\n #isValidFormat(fileName: string): boolean {\r\n const lowerCaseName = fileName.toLowerCase();\r\n return this.#VALID_EXTENSIONS.some(ext => lowerCaseName.endsWith(ext));\r\n }\r\n}\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["File"],"mappings":"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"}
|
|
@@ -397,10 +397,10 @@ class SdExcelService {
|
|
|
397
397
|
reader.readAsArrayBuffer(file);
|
|
398
398
|
});
|
|
399
399
|
};
|
|
400
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
401
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
400
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: SdExcelService, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
401
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: SdExcelService, providedIn: 'root' });
|
|
402
402
|
}
|
|
403
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
403
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: SdExcelService, decorators: [{
|
|
404
404
|
type: Injectable,
|
|
405
405
|
args: [{
|
|
406
406
|
providedIn: 'root',
|
|
@@ -15,10 +15,10 @@ class SdFirebaseService {
|
|
|
15
15
|
uploadFile: () => { },
|
|
16
16
|
removeFile: () => { },
|
|
17
17
|
};
|
|
18
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
19
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
18
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: SdFirebaseService, deps: [{ token: i1.SdApiService }, { token: SD_FIREBASE_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
19
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: SdFirebaseService, providedIn: 'root' });
|
|
20
20
|
}
|
|
21
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
21
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: SdFirebaseService, decorators: [{
|
|
22
22
|
type: Injectable,
|
|
23
23
|
args: [{
|
|
24
24
|
providedIn: 'root',
|
|
@@ -81,10 +81,10 @@ class SdLicenseService {
|
|
|
81
81
|
#throwSecurityError = () => {
|
|
82
82
|
throw new Error(`[Security] Unauthorized usage of UI Lib on domain: ${window.location.hostname}`);
|
|
83
83
|
};
|
|
84
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
85
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
84
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: SdLicenseService, deps: [{ token: SD_CORE_CONFIGURATION, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
85
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: SdLicenseService, providedIn: 'root' });
|
|
86
86
|
}
|
|
87
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
87
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: SdLicenseService, decorators: [{
|
|
88
88
|
type: Injectable,
|
|
89
89
|
args: [{
|
|
90
90
|
providedIn: 'root',
|
|
@@ -74,10 +74,10 @@ class SdLoadingService {
|
|
|
74
74
|
container.appendChild(spinner);
|
|
75
75
|
return container;
|
|
76
76
|
};
|
|
77
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
78
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
77
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: SdLoadingService, deps: [{ token: i0.RendererFactory2 }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
78
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: SdLoadingService, providedIn: 'root' });
|
|
79
79
|
}
|
|
80
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
80
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: SdLoadingService, decorators: [{
|
|
81
81
|
type: Injectable,
|
|
82
82
|
args: [{
|
|
83
83
|
providedIn: 'root',
|
|
@@ -73,8 +73,8 @@ class SdToastComponent {
|
|
|
73
73
|
get hasMore() {
|
|
74
74
|
return this.isMultiMessage && this.messages.length > this.MAX_SHOW;
|
|
75
75
|
}
|
|
76
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
77
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.
|
|
76
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: SdToastComponent, deps: [{ token: SdNotifyService }], target: i0.ɵɵFactoryTarget.Component });
|
|
77
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "17.0.0", version: "19.2.21", type: SdToastComponent, isStandalone: true, selector: "sd-toast", inputs: { data: "data" }, host: { listeners: { "mouseenter": "pauseTimer()", "mouseleave": "resumeTimer()" }, properties: { "@toastAnimation": "true", "class": "\"bg-white sd-toast\"" } }, ngImport: i0, template: "<div class=\"sd-toast__bar\" [class]=\"'bg-' + data.type\"></div>\r\n\r\n<div class=\"sd-toast__icon\" [class]=\"'text-' + data.type\">\r\n @switch (data.type) {\r\n @case ('success') {\r\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm-2 15l-5-5 1.41-1.41L10 14.17l7.59-7.59L19 8l-9 9z\"/></svg>\r\n }\r\n @case ('info') {\r\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-6h2v6zm0-8h-2V7h2v2z\"/></svg>\r\n }\r\n @case ('warning') {\r\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M1 21h22L12 2 1 21zm12-3h-2v-2h2v2zm0-4h-2v-4h2v4z\"/></svg>\r\n }\r\n @case ('error') {\r\n <svg viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm1 15h-2v-2h2v2zm0-4h-2V7h2v6z\"/></svg>\r\n }\r\n }\r\n</div>\r\n\r\n<div class=\"sd-toast__content\">\r\n <div class=\"sd-toast__header\">\r\n <strong class=\"sd-toast__title\">{{ data.title || (data.type | titlecase) }}</strong>\r\n <button class=\"sd-toast__close\" (click)=\"close()\">\u2715</button>\r\n </div>\r\n\r\n <div class=\"sd-toast__body\">\r\n @if (!isMultiMessage) {\r\n <div [innerHTML]=\"data.message\"></div>\r\n } \r\n @else {\r\n <ul class=\"msg-list\">\r\n @for (msg of displayMessages; track msg) {\r\n <li [innerHTML]=\"'- ' + msg\"></li>\r\n }\r\n </ul>\r\n\r\n @if (hasMore) {\r\n <button type=\"button\" \r\n class=\"toggle-more btn-link\" \r\n [class]=\"'text-' + data.type\" \r\n (click)=\"toggleExpand()\">\r\n {{ isExpanded() ? 'Show less' : 'Show more (' + restCount + ')' }}\r\n </button>\r\n }\r\n }\r\n </div>\r\n\r\n @if (data.actionLabel) {\r\n <div class=\"sd-toast__actions\">\r\n <button class=\"btn-action\" \r\n [class]=\"'bg-' + data.type + '-light text-' + data.type\"\r\n (click)=\"onActionClick()\">\r\n {{ data.actionLabel }}\r\n </button>\r\n </div>\r\n }\r\n</div>", styles: ["@charset \"UTF-8\";:host{display:flex;width:350px;border-radius:8px;box-shadow:0 4px 12px #00000026;margin-bottom:12px;overflow:hidden;position:relative;font-family:Roboto,sans-serif;pointer-events:auto}.sd-toast__bar{width:6px;flex-shrink:0}.sd-toast__icon{padding:12px 0 0 12px;flex-shrink:0}.sd-toast__icon svg{width:24px;height:24px}.sd-toast__content{flex-grow:1;padding:12px;display:flex;flex-direction:column}.sd-toast__header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:4px}.sd-toast__title{font-size:16px;font-weight:600}.sd-toast__close{background:none;border:none;font-size:16px;cursor:pointer;line-height:1;padding:0;opacity:.5;transition:opacity .2s}.sd-toast__close:hover{opacity:1}.sd-toast__body{font-size:14px;line-height:1.4;word-break:break-word}.sd-toast__actions{display:flex;justify-content:flex-end;margin-top:8px}.msg-list{padding-left:0;list-style:none;margin:0}.toggle-more{background:none;border:none;padding:0;font:inherit;cursor:pointer;font-size:13px;margin-top:4px;font-weight:500;text-align:left}.toggle-more:hover{text-decoration:underline}.toggle-more:focus-visible{outline:2px solid currentColor;outline-offset:2px}.btn-action{border:none;padding:6px 12px;border-radius:4px;font-weight:600;cursor:pointer;font-size:13px;transition:filter .2s}.btn-action:hover{filter:brightness(.95)}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "pipe", type: i2.TitleCasePipe, name: "titlecase" }], animations: [
|
|
78
78
|
trigger('toastAnimation', [
|
|
79
79
|
transition(':enter', [
|
|
80
80
|
style({ transform: 'translateX(100%)', opacity: 0 }),
|
|
@@ -86,7 +86,7 @@ class SdToastComponent {
|
|
|
86
86
|
])
|
|
87
87
|
] });
|
|
88
88
|
}
|
|
89
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
89
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: SdToastComponent, decorators: [{
|
|
90
90
|
type: Component,
|
|
91
91
|
args: [{ selector: 'sd-toast', standalone: true, imports: [CommonModule], animations: [
|
|
92
92
|
trigger('toastAnimation', [
|
|
@@ -119,14 +119,14 @@ class SdToastContainerComponent {
|
|
|
119
119
|
toasts = signal([]);
|
|
120
120
|
// 2. XÓA constructor inject SdNotifyService
|
|
121
121
|
constructor() { }
|
|
122
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
123
|
-
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.
|
|
122
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: SdToastContainerComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
|
|
123
|
+
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "19.2.21", type: SdToastContainerComponent, isStandalone: true, selector: "sd-toast-container", ngImport: i0, template: `
|
|
124
124
|
<div class="toast-container">
|
|
125
125
|
<sd-toast *ngFor="let toast of toasts()" [data]="toast"> </sd-toast>
|
|
126
126
|
</div>
|
|
127
127
|
`, isInline: true, styles: [".toast-container{position:fixed;top:20px;right:20px;z-index:9999;display:flex;flex-direction:column;pointer-events:none}sd-toast{pointer-events:auto}\n"], dependencies: [{ kind: "ngmodule", type: CommonModule }, { kind: "directive", type: i2.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "component", type: SdToastComponent, selector: "sd-toast", inputs: ["data"] }] });
|
|
128
128
|
}
|
|
129
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
129
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: SdToastContainerComponent, decorators: [{
|
|
130
130
|
type: Component,
|
|
131
131
|
args: [{ selector: 'sd-toast-container', standalone: true, imports: [CommonModule, SdToastComponent], template: `
|
|
132
132
|
<div class="toast-container">
|
|
@@ -247,10 +247,10 @@ class SdNotifyService {
|
|
|
247
247
|
});
|
|
248
248
|
this.#timers = {};
|
|
249
249
|
}
|
|
250
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
251
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
250
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: SdNotifyService, deps: [{ token: i0.ApplicationRef }, { token: i0.EnvironmentInjector }, { token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
251
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: SdNotifyService, providedIn: 'root' });
|
|
252
252
|
}
|
|
253
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
253
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: SdNotifyService, decorators: [{
|
|
254
254
|
type: Injectable,
|
|
255
255
|
args: [{
|
|
256
256
|
providedIn: 'root',
|
|
@@ -146,10 +146,10 @@ class SdStorageService {
|
|
|
146
146
|
return val;
|
|
147
147
|
return JSON.parse(JSON.stringify(val));
|
|
148
148
|
}
|
|
149
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.
|
|
150
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.
|
|
149
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: SdStorageService, deps: [{ token: SD_STORAGE_CONFIG, optional: true }], target: i0.ɵɵFactoryTarget.Injectable });
|
|
150
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: SdStorageService, providedIn: 'root' });
|
|
151
151
|
}
|
|
152
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.
|
|
152
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "19.2.21", ngImport: i0, type: SdStorageService, decorators: [{
|
|
153
153
|
type: Injectable,
|
|
154
154
|
args: [{
|
|
155
155
|
providedIn: 'root',
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sd-angular/core",
|
|
3
|
-
"version": "19.0.0-beta.
|
|
3
|
+
"version": "19.0.0-beta.84",
|
|
4
4
|
"peerDependencies": {
|
|
5
5
|
"@angular/common": "^19.0.0 || ^20.0.0 || ^21.0.0",
|
|
6
6
|
"@angular/core": "^19.0.0 || ^20.0.0 || ^21.0.0",
|
|
@@ -10,11 +10,11 @@
|
|
|
10
10
|
"dependencies": {
|
|
11
11
|
"@ckeditor/ckeditor5-angular": "11.1.2",
|
|
12
12
|
"@omer-go/docx-parser-converter-ts": "^1.0.0",
|
|
13
|
+
"@bjorn3/browser_wasi_shim": "^0.4.2",
|
|
13
14
|
"ckeditor5": "48.0.0",
|
|
14
15
|
"chart.js": "^4.5.1",
|
|
15
16
|
"exceljs": "^4.4.0",
|
|
16
17
|
"export-to-csv": "^1.4.0",
|
|
17
|
-
"mammoth": "^1.11.0",
|
|
18
18
|
"moment": "^2.30.1",
|
|
19
19
|
"keycloak-js": "^26.0.0",
|
|
20
20
|
"prismjs": "^1.30.0",
|
|
@@ -31,17 +31,17 @@
|
|
|
31
31
|
"types": "./index.d.ts",
|
|
32
32
|
"default": "./fesm2022/sd-angular-core.mjs"
|
|
33
33
|
},
|
|
34
|
-
"./
|
|
35
|
-
"types": "./
|
|
36
|
-
"default": "./fesm2022/sd-angular-core-
|
|
34
|
+
"./directives": {
|
|
35
|
+
"types": "./directives/index.d.ts",
|
|
36
|
+
"default": "./fesm2022/sd-angular-core-directives.mjs"
|
|
37
37
|
},
|
|
38
38
|
"./configurations": {
|
|
39
39
|
"types": "./configurations/index.d.ts",
|
|
40
40
|
"default": "./fesm2022/sd-angular-core-configurations.mjs"
|
|
41
41
|
},
|
|
42
|
-
"./
|
|
43
|
-
"types": "./
|
|
44
|
-
"default": "./fesm2022/sd-angular-core-
|
|
42
|
+
"./components": {
|
|
43
|
+
"types": "./components/index.d.ts",
|
|
44
|
+
"default": "./fesm2022/sd-angular-core-components.mjs"
|
|
45
45
|
},
|
|
46
46
|
"./forms": {
|
|
47
47
|
"types": "./forms/index.d.ts",
|
|
@@ -75,6 +75,10 @@
|
|
|
75
75
|
"types": "./components/anchor/index.d.ts",
|
|
76
76
|
"default": "./fesm2022/sd-angular-core-components-anchor.mjs"
|
|
77
77
|
},
|
|
78
|
+
"./components/avatar": {
|
|
79
|
+
"types": "./components/avatar/index.d.ts",
|
|
80
|
+
"default": "./fesm2022/sd-angular-core-components-avatar.mjs"
|
|
81
|
+
},
|
|
78
82
|
"./components/anchor-v2": {
|
|
79
83
|
"types": "./components/anchor-v2/index.d.ts",
|
|
80
84
|
"default": "./fesm2022/sd-angular-core-components-anchor-v2.mjs"
|
|
@@ -83,34 +87,26 @@
|
|
|
83
87
|
"types": "./components/badge/index.d.ts",
|
|
84
88
|
"default": "./fesm2022/sd-angular-core-components-badge.mjs"
|
|
85
89
|
},
|
|
86
|
-
"./components/
|
|
87
|
-
"types": "./components/
|
|
88
|
-
"default": "./fesm2022/sd-angular-core-components-
|
|
90
|
+
"./components/base": {
|
|
91
|
+
"types": "./components/base/index.d.ts",
|
|
92
|
+
"default": "./fesm2022/sd-angular-core-components-base.mjs"
|
|
89
93
|
},
|
|
90
94
|
"./components/button": {
|
|
91
95
|
"types": "./components/button/index.d.ts",
|
|
92
96
|
"default": "./fesm2022/sd-angular-core-components-button.mjs"
|
|
93
97
|
},
|
|
94
|
-
"./components/
|
|
95
|
-
"types": "./components/
|
|
96
|
-
"default": "./fesm2022/sd-angular-core-components-
|
|
98
|
+
"./components/chart": {
|
|
99
|
+
"types": "./components/chart/index.d.ts",
|
|
100
|
+
"default": "./fesm2022/sd-angular-core-components-chart.mjs"
|
|
97
101
|
},
|
|
98
102
|
"./components/code-editor": {
|
|
99
103
|
"types": "./components/code-editor/index.d.ts",
|
|
100
104
|
"default": "./fesm2022/sd-angular-core-components-code-editor.mjs"
|
|
101
105
|
},
|
|
102
|
-
"./components/chart": {
|
|
103
|
-
"types": "./components/chart/index.d.ts",
|
|
104
|
-
"default": "./fesm2022/sd-angular-core-components-chart.mjs"
|
|
105
|
-
},
|
|
106
106
|
"./components/document-builder": {
|
|
107
107
|
"types": "./components/document-builder/index.d.ts",
|
|
108
108
|
"default": "./fesm2022/sd-angular-core-components-document-builder.mjs"
|
|
109
109
|
},
|
|
110
|
-
"./components/history": {
|
|
111
|
-
"types": "./components/history/index.d.ts",
|
|
112
|
-
"default": "./fesm2022/sd-angular-core-components-history.mjs"
|
|
113
|
-
},
|
|
114
110
|
"./components/editor": {
|
|
115
111
|
"types": "./components/editor/index.d.ts",
|
|
116
112
|
"default": "./fesm2022/sd-angular-core-components-editor.mjs"
|
|
@@ -119,6 +115,10 @@
|
|
|
119
115
|
"types": "./components/import-excel/index.d.ts",
|
|
120
116
|
"default": "./fesm2022/sd-angular-core-components-import-excel.mjs"
|
|
121
117
|
},
|
|
118
|
+
"./components/history": {
|
|
119
|
+
"types": "./components/history/index.d.ts",
|
|
120
|
+
"default": "./fesm2022/sd-angular-core-components-history.mjs"
|
|
121
|
+
},
|
|
122
122
|
"./components/mini-editor": {
|
|
123
123
|
"types": "./components/mini-editor/index.d.ts",
|
|
124
124
|
"default": "./fesm2022/sd-angular-core-components-mini-editor.mjs"
|
|
@@ -127,10 +127,6 @@
|
|
|
127
127
|
"types": "./components/modal/index.d.ts",
|
|
128
128
|
"default": "./fesm2022/sd-angular-core-components-modal.mjs"
|
|
129
129
|
},
|
|
130
|
-
"./components/quick-action": {
|
|
131
|
-
"types": "./components/quick-action/index.d.ts",
|
|
132
|
-
"default": "./fesm2022/sd-angular-core-components-quick-action.mjs"
|
|
133
|
-
},
|
|
134
130
|
"./components/preview": {
|
|
135
131
|
"types": "./components/preview/index.d.ts",
|
|
136
132
|
"default": "./fesm2022/sd-angular-core-components-preview.mjs"
|
|
@@ -139,6 +135,10 @@
|
|
|
139
135
|
"types": "./components/query-builder/index.d.ts",
|
|
140
136
|
"default": "./fesm2022/sd-angular-core-components-query-builder.mjs"
|
|
141
137
|
},
|
|
138
|
+
"./components/quick-action": {
|
|
139
|
+
"types": "./components/quick-action/index.d.ts",
|
|
140
|
+
"default": "./fesm2022/sd-angular-core-components-quick-action.mjs"
|
|
141
|
+
},
|
|
142
142
|
"./components/section": {
|
|
143
143
|
"types": "./components/section/index.d.ts",
|
|
144
144
|
"default": "./fesm2022/sd-angular-core-components-section.mjs"
|
|
@@ -147,30 +147,30 @@
|
|
|
147
147
|
"types": "./components/side-drawer/index.d.ts",
|
|
148
148
|
"default": "./fesm2022/sd-angular-core-components-side-drawer.mjs"
|
|
149
149
|
},
|
|
150
|
-
"./components/tab-router": {
|
|
151
|
-
"types": "./components/tab-router/index.d.ts",
|
|
152
|
-
"default": "./fesm2022/sd-angular-core-components-tab-router.mjs"
|
|
153
|
-
},
|
|
154
150
|
"./components/table": {
|
|
155
151
|
"types": "./components/table/index.d.ts",
|
|
156
152
|
"default": "./fesm2022/sd-angular-core-components-table.mjs"
|
|
157
153
|
},
|
|
158
|
-
"./components/
|
|
159
|
-
"types": "./components/
|
|
160
|
-
"default": "./fesm2022/sd-angular-core-components-
|
|
154
|
+
"./components/view": {
|
|
155
|
+
"types": "./components/view/index.d.ts",
|
|
156
|
+
"default": "./fesm2022/sd-angular-core-components-view.mjs"
|
|
161
157
|
},
|
|
162
158
|
"./forms/autocomplete": {
|
|
163
159
|
"types": "./forms/autocomplete/index.d.ts",
|
|
164
160
|
"default": "./fesm2022/sd-angular-core-forms-autocomplete.mjs"
|
|
165
161
|
},
|
|
162
|
+
"./components/workflow": {
|
|
163
|
+
"types": "./components/workflow/index.d.ts",
|
|
164
|
+
"default": "./fesm2022/sd-angular-core-components-workflow.mjs"
|
|
165
|
+
},
|
|
166
|
+
"./components/upload-file": {
|
|
167
|
+
"types": "./components/upload-file/index.d.ts",
|
|
168
|
+
"default": "./fesm2022/sd-angular-core-components-upload-file.mjs"
|
|
169
|
+
},
|
|
166
170
|
"./forms/checkbox": {
|
|
167
171
|
"types": "./forms/checkbox/index.d.ts",
|
|
168
172
|
"default": "./fesm2022/sd-angular-core-forms-checkbox.mjs"
|
|
169
173
|
},
|
|
170
|
-
"./components/view": {
|
|
171
|
-
"types": "./components/view/index.d.ts",
|
|
172
|
-
"default": "./fesm2022/sd-angular-core-components-view.mjs"
|
|
173
|
-
},
|
|
174
174
|
"./forms/chip": {
|
|
175
175
|
"types": "./forms/chip/index.d.ts",
|
|
176
176
|
"default": "./fesm2022/sd-angular-core-forms-chip.mjs"
|
|
@@ -179,10 +179,6 @@
|
|
|
179
179
|
"types": "./forms/chip-calendar/index.d.ts",
|
|
180
180
|
"default": "./fesm2022/sd-angular-core-forms-chip-calendar.mjs"
|
|
181
181
|
},
|
|
182
|
-
"./forms/date-range": {
|
|
183
|
-
"types": "./forms/date-range/index.d.ts",
|
|
184
|
-
"default": "./fesm2022/sd-angular-core-forms-date-range.mjs"
|
|
185
|
-
},
|
|
186
182
|
"./forms/date": {
|
|
187
183
|
"types": "./forms/date/index.d.ts",
|
|
188
184
|
"default": "./fesm2022/sd-angular-core-forms-date.mjs"
|
|
@@ -191,6 +187,10 @@
|
|
|
191
187
|
"types": "./forms/datetime/index.d.ts",
|
|
192
188
|
"default": "./fesm2022/sd-angular-core-forms-datetime.mjs"
|
|
193
189
|
},
|
|
190
|
+
"./forms/date-range": {
|
|
191
|
+
"types": "./forms/date-range/index.d.ts",
|
|
192
|
+
"default": "./fesm2022/sd-angular-core-forms-date-range.mjs"
|
|
193
|
+
},
|
|
194
194
|
"./forms/directives": {
|
|
195
195
|
"types": "./forms/directives/index.d.ts",
|
|
196
196
|
"default": "./fesm2022/sd-angular-core-forms-directives.mjs"
|
|
@@ -239,26 +239,26 @@
|
|
|
239
239
|
"types": "./modules/keycloak/index.d.ts",
|
|
240
240
|
"default": "./fesm2022/sd-angular-core-modules-keycloak.mjs"
|
|
241
241
|
},
|
|
242
|
-
"./modules/permission": {
|
|
243
|
-
"types": "./modules/permission/index.d.ts",
|
|
244
|
-
"default": "./fesm2022/sd-angular-core-modules-permission.mjs"
|
|
245
|
-
},
|
|
246
242
|
"./modules/layout": {
|
|
247
243
|
"types": "./modules/layout/index.d.ts",
|
|
248
244
|
"default": "./fesm2022/sd-angular-core-modules-layout.mjs"
|
|
249
245
|
},
|
|
246
|
+
"./modules/permission": {
|
|
247
|
+
"types": "./modules/permission/index.d.ts",
|
|
248
|
+
"default": "./fesm2022/sd-angular-core-modules-permission.mjs"
|
|
249
|
+
},
|
|
250
250
|
"./services/api": {
|
|
251
251
|
"types": "./services/api/index.d.ts",
|
|
252
252
|
"default": "./fesm2022/sd-angular-core-services-api.mjs"
|
|
253
253
|
},
|
|
254
|
-
"./services/confirm": {
|
|
255
|
-
"types": "./services/confirm/index.d.ts",
|
|
256
|
-
"default": "./fesm2022/sd-angular-core-services-confirm.mjs"
|
|
257
|
-
},
|
|
258
254
|
"./services/cache": {
|
|
259
255
|
"types": "./services/cache/index.d.ts",
|
|
260
256
|
"default": "./fesm2022/sd-angular-core-services-cache.mjs"
|
|
261
257
|
},
|
|
258
|
+
"./services/confirm": {
|
|
259
|
+
"types": "./services/confirm/index.d.ts",
|
|
260
|
+
"default": "./fesm2022/sd-angular-core-services-confirm.mjs"
|
|
261
|
+
},
|
|
262
262
|
"./services/docx": {
|
|
263
263
|
"types": "./services/docx/index.d.ts",
|
|
264
264
|
"default": "./fesm2022/sd-angular-core-services-docx.mjs"
|
|
@@ -279,10 +279,6 @@
|
|
|
279
279
|
"types": "./services/loading/index.d.ts",
|
|
280
280
|
"default": "./fesm2022/sd-angular-core-services-loading.mjs"
|
|
281
281
|
},
|
|
282
|
-
"./services/storage": {
|
|
283
|
-
"types": "./services/storage/index.d.ts",
|
|
284
|
-
"default": "./fesm2022/sd-angular-core-services-storage.mjs"
|
|
285
|
-
},
|
|
286
282
|
"./services/notify": {
|
|
287
283
|
"types": "./services/notify/index.d.ts",
|
|
288
284
|
"default": "./fesm2022/sd-angular-core-services-notify.mjs"
|
|
@@ -291,13 +287,17 @@
|
|
|
291
287
|
"types": "./utilities/extensions/index.d.ts",
|
|
292
288
|
"default": "./fesm2022/sd-angular-core-utilities-extensions.mjs"
|
|
293
289
|
},
|
|
290
|
+
"./services/storage": {
|
|
291
|
+
"types": "./services/storage/index.d.ts",
|
|
292
|
+
"default": "./fesm2022/sd-angular-core-services-storage.mjs"
|
|
293
|
+
},
|
|
294
|
+
"./components/tab-router": {
|
|
295
|
+
"types": "./components/tab-router/index.d.ts",
|
|
296
|
+
"default": "./fesm2022/sd-angular-core-components-tab-router.mjs"
|
|
297
|
+
},
|
|
294
298
|
"./utilities/models": {
|
|
295
299
|
"types": "./utilities/models/index.d.ts",
|
|
296
300
|
"default": "./fesm2022/sd-angular-core-utilities-models.mjs"
|
|
297
|
-
},
|
|
298
|
-
"./components/upload-file": {
|
|
299
|
-
"types": "./components/upload-file/index.d.ts",
|
|
300
|
-
"default": "./fesm2022/sd-angular-core-components-upload-file.mjs"
|
|
301
301
|
}
|
|
302
302
|
}
|
|
303
303
|
}
|
|
Binary file
|
|
@@ -1,10 +1,12 @@
|
|
|
1
|
-
import { SdDocxConvertOptions, SdDocxConvertResult } from './docx.model';
|
|
2
1
|
import { SdNotifyService } from '@sd-angular/core/services/notify';
|
|
2
|
+
import { SdLoadingService } from '@sd-angular/core/services/loading';
|
|
3
|
+
import { SdDocxConvertOptions, SdDocxConvertResult } from './docx.model';
|
|
3
4
|
import * as i0 from "@angular/core";
|
|
4
5
|
export declare class SdDocxService {
|
|
5
6
|
#private;
|
|
6
7
|
private notifyService;
|
|
7
|
-
|
|
8
|
+
private loadingService;
|
|
9
|
+
constructor(notifyService: SdNotifyService, loadingService: SdLoadingService);
|
|
8
10
|
open(options?: SdDocxConvertOptions): Promise<SdDocxConvertResult | null>;
|
|
9
11
|
convertToHtml(input: File | Blob | ArrayBuffer, options?: SdDocxConvertOptions): Promise<SdDocxConvertResult | null>;
|
|
10
12
|
convertToHtmlString(input: File | Blob | ArrayBuffer, options?: SdDocxConvertOptions): Promise<string | null>;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface PandocConvertResult {
|
|
2
|
+
stdout: string;
|
|
3
|
+
stderr: string;
|
|
4
|
+
warnings: any[];
|
|
5
|
+
files: Record<string, any>;
|
|
6
|
+
mediaFiles: Record<string, any>;
|
|
7
|
+
}
|
|
8
|
+
export interface PandocInstance {
|
|
9
|
+
convert(options: Record<string, any>, stdin: string | null, files: Record<string, Blob | string>): Promise<PandocConvertResult>;
|
|
10
|
+
}
|
|
11
|
+
export declare function createPandocInstance(wasmBinary: ArrayBuffer): Promise<PandocInstance>;
|
|
Binary file
|