@aceshooting/lyra-ui 3.0.0 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -3
- package/custom-elements.json +12254 -4196
- package/dist/components/archive-viewer/archive-loader.d.ts +8 -0
- package/dist/components/archive-viewer/archive-loader.d.ts.map +1 -0
- package/dist/components/archive-viewer/archive-loader.js +19 -0
- package/dist/components/archive-viewer/archive-loader.js.map +1 -0
- package/dist/components/archive-viewer/archive-viewer-register.d.ts +2 -0
- package/dist/components/archive-viewer/archive-viewer-register.d.ts.map +1 -0
- package/dist/components/archive-viewer/archive-viewer-register.js +8 -0
- package/dist/components/archive-viewer/archive-viewer-register.js.map +1 -0
- package/dist/components/archive-viewer/archive-viewer.class.d.ts +47 -0
- package/dist/components/archive-viewer/archive-viewer.class.d.ts.map +1 -0
- package/dist/components/archive-viewer/archive-viewer.class.js +115 -0
- package/dist/components/archive-viewer/archive-viewer.class.js.map +1 -0
- package/dist/components/archive-viewer/archive-viewer.d.ts +4 -0
- package/dist/components/archive-viewer/archive-viewer.d.ts.map +1 -0
- package/dist/components/archive-viewer/archive-viewer.js +7 -0
- package/dist/components/archive-viewer/archive-viewer.js.map +1 -0
- package/dist/components/archive-viewer/archive-viewer.styles.d.ts +2 -0
- package/dist/components/archive-viewer/archive-viewer.styles.d.ts.map +1 -0
- package/dist/components/archive-viewer/archive-viewer.styles.js +14 -0
- package/dist/components/archive-viewer/archive-viewer.styles.js.map +1 -0
- package/dist/components/attachment-chip/attachment-chip.class.d.ts +16 -0
- package/dist/components/attachment-chip/attachment-chip.class.d.ts.map +1 -1
- package/dist/components/attachment-chip/attachment-chip.class.js +54 -3
- package/dist/components/attachment-chip/attachment-chip.class.js.map +1 -1
- package/dist/components/attachment-chip/attachment-chip.d.ts +2 -0
- package/dist/components/attachment-chip/attachment-chip.d.ts.map +1 -1
- package/dist/components/attachment-chip/attachment-chip.js +2 -0
- package/dist/components/attachment-chip/attachment-chip.js.map +1 -1
- package/dist/components/attachment-chip/attachment-chip.styles.d.ts.map +1 -1
- package/dist/components/attachment-chip/attachment-chip.styles.js +8 -0
- package/dist/components/attachment-chip/attachment-chip.styles.js.map +1 -1
- package/dist/components/calendar-viewer/calendar-loader.d.ts +5 -0
- package/dist/components/calendar-viewer/calendar-loader.d.ts.map +1 -0
- package/dist/components/calendar-viewer/calendar-loader.js +18 -0
- package/dist/components/calendar-viewer/calendar-loader.js.map +1 -0
- package/dist/components/calendar-viewer/calendar-viewer.class.d.ts +55 -0
- package/dist/components/calendar-viewer/calendar-viewer.class.d.ts.map +1 -0
- package/dist/components/calendar-viewer/calendar-viewer.class.js +123 -0
- package/dist/components/calendar-viewer/calendar-viewer.class.js.map +1 -0
- package/dist/components/calendar-viewer/calendar-viewer.d.ts +3 -0
- package/dist/components/calendar-viewer/calendar-viewer.d.ts.map +1 -0
- package/dist/components/calendar-viewer/calendar-viewer.js +12 -0
- package/dist/components/calendar-viewer/calendar-viewer.js.map +1 -0
- package/dist/components/calendar-viewer/calendar-viewer.styles.d.ts +2 -0
- package/dist/components/calendar-viewer/calendar-viewer.styles.d.ts.map +1 -0
- package/dist/components/calendar-viewer/calendar-viewer.styles.js +16 -0
- package/dist/components/calendar-viewer/calendar-viewer.styles.js.map +1 -0
- package/dist/components/code-block/code-block-core.class.d.ts +3 -0
- package/dist/components/code-block/code-block-core.class.d.ts.map +1 -1
- package/dist/components/code-block/code-block-core.class.js +41 -16
- package/dist/components/code-block/code-block-core.class.js.map +1 -1
- package/dist/components/code-block/code-block.class.d.ts +3 -0
- package/dist/components/code-block/code-block.class.d.ts.map +1 -1
- package/dist/components/code-block/code-block.class.js +41 -16
- package/dist/components/code-block/code-block.class.js.map +1 -1
- package/dist/components/code-block/code-block.styles.d.ts.map +1 -1
- package/dist/components/code-block/code-block.styles.js +16 -0
- package/dist/components/code-block/code-block.styles.js.map +1 -1
- package/dist/components/code-block/code-loader.d.ts +2 -0
- package/dist/components/code-block/code-loader.d.ts.map +1 -1
- package/dist/components/code-block/code-loader.js +14 -4
- package/dist/components/code-block/code-loader.js.map +1 -1
- package/dist/components/code-block/greycat-language.d.ts +9 -0
- package/dist/components/code-block/greycat-language.d.ts.map +1 -0
- package/dist/components/code-block/greycat-language.js +73 -0
- package/dist/components/code-block/greycat-language.js.map +1 -0
- package/dist/components/contact-viewer/contact-viewer.class.d.ts +31 -0
- package/dist/components/contact-viewer/contact-viewer.class.d.ts.map +1 -0
- package/dist/components/contact-viewer/contact-viewer.class.js +92 -0
- package/dist/components/contact-viewer/contact-viewer.class.js.map +1 -0
- package/dist/components/contact-viewer/contact-viewer.d.ts +3 -0
- package/dist/components/contact-viewer/contact-viewer.d.ts.map +1 -0
- package/dist/components/contact-viewer/contact-viewer.js +13 -0
- package/dist/components/contact-viewer/contact-viewer.js.map +1 -0
- package/dist/components/contact-viewer/contact-viewer.styles.d.ts +2 -0
- package/dist/components/contact-viewer/contact-viewer.styles.d.ts.map +1 -0
- package/dist/components/contact-viewer/contact-viewer.styles.js +16 -0
- package/dist/components/contact-viewer/contact-viewer.styles.js.map +1 -0
- package/dist/components/contact-viewer/vcard.d.ts +31 -0
- package/dist/components/contact-viewer/vcard.d.ts.map +1 -0
- package/dist/components/contact-viewer/vcard.js +87 -0
- package/dist/components/contact-viewer/vcard.js.map +1 -0
- package/dist/components/csv-viewer/csv-loader.d.ts +8 -0
- package/dist/components/csv-viewer/csv-loader.d.ts.map +1 -0
- package/dist/components/csv-viewer/csv-loader.js +19 -0
- package/dist/components/csv-viewer/csv-loader.js.map +1 -0
- package/dist/components/csv-viewer/csv-viewer.class.d.ts +31 -0
- package/dist/components/csv-viewer/csv-viewer.class.d.ts.map +1 -0
- package/dist/components/csv-viewer/csv-viewer.class.js +108 -0
- package/dist/components/csv-viewer/csv-viewer.class.js.map +1 -0
- package/dist/components/csv-viewer/csv-viewer.d.ts +3 -0
- package/dist/components/csv-viewer/csv-viewer.d.ts.map +1 -0
- package/dist/components/csv-viewer/csv-viewer.js +9 -0
- package/dist/components/csv-viewer/csv-viewer.js.map +1 -0
- package/dist/components/csv-viewer/csv-viewer.styles.d.ts +2 -0
- package/dist/components/csv-viewer/csv-viewer.styles.d.ts.map +1 -0
- package/dist/components/csv-viewer/csv-viewer.styles.js +14 -0
- package/dist/components/csv-viewer/csv-viewer.styles.js.map +1 -0
- package/dist/components/dataset-viewer/dataset-loader.d.ts +7 -0
- package/dist/components/dataset-viewer/dataset-loader.d.ts.map +1 -0
- package/dist/components/dataset-viewer/dataset-loader.js +19 -0
- package/dist/components/dataset-viewer/dataset-loader.js.map +1 -0
- package/dist/components/dataset-viewer/dataset-viewer.class.d.ts +34 -0
- package/dist/components/dataset-viewer/dataset-viewer.class.d.ts.map +1 -0
- package/dist/components/dataset-viewer/dataset-viewer.class.js +93 -0
- package/dist/components/dataset-viewer/dataset-viewer.class.js.map +1 -0
- package/dist/components/dataset-viewer/dataset-viewer.d.ts +3 -0
- package/dist/components/dataset-viewer/dataset-viewer.d.ts.map +1 -0
- package/dist/components/dataset-viewer/dataset-viewer.js +13 -0
- package/dist/components/dataset-viewer/dataset-viewer.js.map +1 -0
- package/dist/components/dataset-viewer/dataset-viewer.styles.d.ts +2 -0
- package/dist/components/dataset-viewer/dataset-viewer.styles.d.ts.map +1 -0
- package/dist/components/dataset-viewer/dataset-viewer.styles.js +13 -0
- package/dist/components/dataset-viewer/dataset-viewer.styles.js.map +1 -0
- package/dist/components/document-viewer/document-viewer.class.d.ts +55 -0
- package/dist/components/document-viewer/document-viewer.class.d.ts.map +1 -0
- package/dist/components/document-viewer/document-viewer.class.js +160 -0
- package/dist/components/document-viewer/document-viewer.class.js.map +1 -0
- package/dist/components/document-viewer/document-viewer.d.ts +5 -0
- package/dist/components/document-viewer/document-viewer.d.ts.map +1 -0
- package/dist/components/document-viewer/document-viewer.js +8 -0
- package/dist/components/document-viewer/document-viewer.js.map +1 -0
- package/dist/components/document-viewer/document-viewer.styles.d.ts +2 -0
- package/dist/components/document-viewer/document-viewer.styles.d.ts.map +1 -0
- package/dist/components/document-viewer/document-viewer.styles.js +48 -0
- package/dist/components/document-viewer/document-viewer.styles.js.map +1 -0
- package/dist/components/document-viewer/registry.d.ts +30 -0
- package/dist/components/document-viewer/registry.d.ts.map +1 -0
- package/dist/components/document-viewer/registry.js +42 -0
- package/dist/components/document-viewer/registry.js.map +1 -0
- package/dist/components/docx-viewer/docx-loader.d.ts +11 -0
- package/dist/components/docx-viewer/docx-loader.d.ts.map +1 -0
- package/dist/components/docx-viewer/docx-loader.js +39 -0
- package/dist/components/docx-viewer/docx-loader.js.map +1 -0
- package/dist/components/docx-viewer/docx-viewer.class.d.ts +42 -0
- package/dist/components/docx-viewer/docx-viewer.class.d.ts.map +1 -0
- package/dist/components/docx-viewer/docx-viewer.class.js +131 -0
- package/dist/components/docx-viewer/docx-viewer.class.js.map +1 -0
- package/dist/components/docx-viewer/docx-viewer.d.ts +3 -0
- package/dist/components/docx-viewer/docx-viewer.d.ts.map +1 -0
- package/dist/components/docx-viewer/docx-viewer.js +12 -0
- package/dist/components/docx-viewer/docx-viewer.js.map +1 -0
- package/dist/components/docx-viewer/docx-viewer.styles.d.ts +2 -0
- package/dist/components/docx-viewer/docx-viewer.styles.d.ts.map +1 -0
- package/dist/components/docx-viewer/docx-viewer.styles.js +99 -0
- package/dist/components/docx-viewer/docx-viewer.styles.js.map +1 -0
- package/dist/components/docx-viewer/fixtures/minimal-docx-fixture.d.ts +2 -0
- package/dist/components/docx-viewer/fixtures/minimal-docx-fixture.d.ts.map +1 -0
- package/dist/components/docx-viewer/fixtures/minimal-docx-fixture.js +3 -0
- package/dist/components/docx-viewer/fixtures/minimal-docx-fixture.js.map +1 -0
- package/dist/components/ebook-viewer/ebook-loader.d.ts +9 -0
- package/dist/components/ebook-viewer/ebook-loader.d.ts.map +1 -0
- package/dist/components/ebook-viewer/ebook-loader.js +21 -0
- package/dist/components/ebook-viewer/ebook-loader.js.map +1 -0
- package/dist/components/ebook-viewer/ebook-viewer-register.d.ts +2 -0
- package/dist/components/ebook-viewer/ebook-viewer-register.d.ts.map +1 -0
- package/dist/components/ebook-viewer/ebook-viewer-register.js +9 -0
- package/dist/components/ebook-viewer/ebook-viewer-register.js.map +1 -0
- package/dist/components/ebook-viewer/ebook-viewer.class.d.ts +51 -0
- package/dist/components/ebook-viewer/ebook-viewer.class.d.ts.map +1 -0
- package/dist/components/ebook-viewer/ebook-viewer.class.js +164 -0
- package/dist/components/ebook-viewer/ebook-viewer.class.js.map +1 -0
- package/dist/components/ebook-viewer/ebook-viewer.d.ts +2 -0
- package/dist/components/ebook-viewer/ebook-viewer.d.ts.map +1 -0
- package/dist/components/ebook-viewer/ebook-viewer.js +5 -0
- package/dist/components/ebook-viewer/ebook-viewer.js.map +1 -0
- package/dist/components/ebook-viewer/ebook-viewer.styles.d.ts +2 -0
- package/dist/components/ebook-viewer/ebook-viewer.styles.d.ts.map +1 -0
- package/dist/components/ebook-viewer/ebook-viewer.styles.js +73 -0
- package/dist/components/ebook-viewer/ebook-viewer.styles.js.map +1 -0
- package/dist/components/ebook-viewer/fixtures/minimal-epub-fixture.d.ts +2 -0
- package/dist/components/ebook-viewer/fixtures/minimal-epub-fixture.d.ts.map +1 -0
- package/dist/components/ebook-viewer/fixtures/minimal-epub-fixture.js +2 -0
- package/dist/components/ebook-viewer/fixtures/minimal-epub-fixture.js.map +1 -0
- package/dist/components/email-viewer/email-loader.d.ts +10 -0
- package/dist/components/email-viewer/email-loader.d.ts.map +1 -0
- package/dist/components/email-viewer/email-loader.js +38 -0
- package/dist/components/email-viewer/email-loader.js.map +1 -0
- package/dist/components/email-viewer/email-viewer.class.d.ts +72 -0
- package/dist/components/email-viewer/email-viewer.class.d.ts.map +1 -0
- package/dist/components/email-viewer/email-viewer.class.js +154 -0
- package/dist/components/email-viewer/email-viewer.class.js.map +1 -0
- package/dist/components/email-viewer/email-viewer.d.ts +3 -0
- package/dist/components/email-viewer/email-viewer.d.ts.map +1 -0
- package/dist/components/email-viewer/email-viewer.js +12 -0
- package/dist/components/email-viewer/email-viewer.js.map +1 -0
- package/dist/components/email-viewer/email-viewer.styles.d.ts +2 -0
- package/dist/components/email-viewer/email-viewer.styles.d.ts.map +1 -0
- package/dist/components/email-viewer/email-viewer.styles.js +35 -0
- package/dist/components/email-viewer/email-viewer.styles.js.map +1 -0
- package/dist/components/file-icon/file-icon.class.d.ts +31 -0
- package/dist/components/file-icon/file-icon.class.d.ts.map +1 -0
- package/dist/components/file-icon/file-icon.class.js +74 -0
- package/dist/components/file-icon/file-icon.class.js.map +1 -0
- package/dist/components/file-icon/file-icon.d.ts +3 -0
- package/dist/components/file-icon/file-icon.d.ts.map +1 -0
- package/dist/components/file-icon/file-icon.js +6 -0
- package/dist/components/file-icon/file-icon.js.map +1 -0
- package/dist/components/file-icon/file-icon.styles.d.ts +2 -0
- package/dist/components/file-icon/file-icon.styles.d.ts.map +1 -0
- package/dist/components/file-icon/file-icon.styles.js +23 -0
- package/dist/components/file-icon/file-icon.styles.js.map +1 -0
- package/dist/components/file-icon/file-type-metadata.d.ts +14 -0
- package/dist/components/file-icon/file-type-metadata.d.ts.map +1 -0
- package/dist/components/file-icon/file-type-metadata.js +81 -0
- package/dist/components/file-icon/file-type-metadata.js.map +1 -0
- package/dist/components/html-viewer/dompurify-loader.d.ts +7 -0
- package/dist/components/html-viewer/dompurify-loader.d.ts.map +1 -0
- package/dist/components/html-viewer/dompurify-loader.js +19 -0
- package/dist/components/html-viewer/dompurify-loader.js.map +1 -0
- package/dist/components/html-viewer/html-viewer.class.d.ts +29 -0
- package/dist/components/html-viewer/html-viewer.class.d.ts.map +1 -0
- package/dist/components/html-viewer/html-viewer.class.js +88 -0
- package/dist/components/html-viewer/html-viewer.class.js.map +1 -0
- package/dist/components/html-viewer/html-viewer.d.ts +2 -0
- package/dist/components/html-viewer/html-viewer.d.ts.map +1 -0
- package/dist/components/html-viewer/html-viewer.js +15 -0
- package/dist/components/html-viewer/html-viewer.js.map +1 -0
- package/dist/components/html-viewer/html-viewer.styles.d.ts +2 -0
- package/dist/components/html-viewer/html-viewer.styles.d.ts.map +1 -0
- package/dist/components/html-viewer/html-viewer.styles.js +26 -0
- package/dist/components/html-viewer/html-viewer.styles.js.map +1 -0
- package/dist/components/pdf-viewer/pdf-loader.d.ts +6 -0
- package/dist/components/pdf-viewer/pdf-loader.d.ts.map +1 -0
- package/dist/components/pdf-viewer/pdf-loader.js +22 -0
- package/dist/components/pdf-viewer/pdf-loader.js.map +1 -0
- package/dist/components/pdf-viewer/pdf-viewer.class.d.ts +80 -0
- package/dist/components/pdf-viewer/pdf-viewer.class.d.ts.map +1 -0
- package/dist/components/pdf-viewer/pdf-viewer.class.js +296 -0
- package/dist/components/pdf-viewer/pdf-viewer.class.js.map +1 -0
- package/dist/components/pdf-viewer/pdf-viewer.d.ts +2 -0
- package/dist/components/pdf-viewer/pdf-viewer.d.ts.map +1 -0
- package/dist/components/pdf-viewer/pdf-viewer.js +13 -0
- package/dist/components/pdf-viewer/pdf-viewer.js.map +1 -0
- package/dist/components/pdf-viewer/pdf-viewer.styles.d.ts +2 -0
- package/dist/components/pdf-viewer/pdf-viewer.styles.d.ts.map +1 -0
- package/dist/components/pdf-viewer/pdf-viewer.styles.js +19 -0
- package/dist/components/pdf-viewer/pdf-viewer.styles.js.map +1 -0
- package/dist/components/pptx-viewer/pptx-loader.d.ts +5 -0
- package/dist/components/pptx-viewer/pptx-loader.d.ts.map +1 -0
- package/dist/components/pptx-viewer/pptx-loader.js +20 -0
- package/dist/components/pptx-viewer/pptx-loader.js.map +1 -0
- package/dist/components/pptx-viewer/pptx-viewer.class.d.ts +68 -0
- package/dist/components/pptx-viewer/pptx-viewer.class.d.ts.map +1 -0
- package/dist/components/pptx-viewer/pptx-viewer.class.js +205 -0
- package/dist/components/pptx-viewer/pptx-viewer.class.js.map +1 -0
- package/dist/components/pptx-viewer/pptx-viewer.d.ts +2 -0
- package/dist/components/pptx-viewer/pptx-viewer.d.ts.map +1 -0
- package/dist/components/pptx-viewer/pptx-viewer.js +11 -0
- package/dist/components/pptx-viewer/pptx-viewer.js.map +1 -0
- package/dist/components/pptx-viewer/pptx-viewer.styles.d.ts +2 -0
- package/dist/components/pptx-viewer/pptx-viewer.styles.d.ts.map +1 -0
- package/dist/components/pptx-viewer/pptx-viewer.styles.js +66 -0
- package/dist/components/pptx-viewer/pptx-viewer.styles.js.map +1 -0
- package/dist/components/spreadsheet-viewer/spreadsheet-loader.d.ts +8 -0
- package/dist/components/spreadsheet-viewer/spreadsheet-loader.d.ts.map +1 -0
- package/dist/components/spreadsheet-viewer/spreadsheet-loader.js +19 -0
- package/dist/components/spreadsheet-viewer/spreadsheet-loader.js.map +1 -0
- package/dist/components/spreadsheet-viewer/spreadsheet-viewer.class.d.ts +32 -0
- package/dist/components/spreadsheet-viewer/spreadsheet-viewer.class.d.ts.map +1 -0
- package/dist/components/spreadsheet-viewer/spreadsheet-viewer.class.js +99 -0
- package/dist/components/spreadsheet-viewer/spreadsheet-viewer.class.js.map +1 -0
- package/dist/components/spreadsheet-viewer/spreadsheet-viewer.d.ts +3 -0
- package/dist/components/spreadsheet-viewer/spreadsheet-viewer.d.ts.map +1 -0
- package/dist/components/spreadsheet-viewer/spreadsheet-viewer.js +12 -0
- package/dist/components/spreadsheet-viewer/spreadsheet-viewer.js.map +1 -0
- package/dist/components/spreadsheet-viewer/spreadsheet-viewer.styles.d.ts +2 -0
- package/dist/components/spreadsheet-viewer/spreadsheet-viewer.styles.d.ts.map +1 -0
- package/dist/components/spreadsheet-viewer/spreadsheet-viewer.styles.js +14 -0
- package/dist/components/spreadsheet-viewer/spreadsheet-viewer.styles.js.map +1 -0
- package/dist/components/svg-viewer/dompurify-loader.d.ts +7 -0
- package/dist/components/svg-viewer/dompurify-loader.d.ts.map +1 -0
- package/dist/components/svg-viewer/dompurify-loader.js +19 -0
- package/dist/components/svg-viewer/dompurify-loader.js.map +1 -0
- package/dist/components/svg-viewer/svg-viewer.class.d.ts +29 -0
- package/dist/components/svg-viewer/svg-viewer.class.d.ts.map +1 -0
- package/dist/components/svg-viewer/svg-viewer.class.js +95 -0
- package/dist/components/svg-viewer/svg-viewer.class.js.map +1 -0
- package/dist/components/svg-viewer/svg-viewer.d.ts +2 -0
- package/dist/components/svg-viewer/svg-viewer.d.ts.map +1 -0
- package/dist/components/svg-viewer/svg-viewer.js +15 -0
- package/dist/components/svg-viewer/svg-viewer.js.map +1 -0
- package/dist/components/svg-viewer/svg-viewer.styles.d.ts +2 -0
- package/dist/components/svg-viewer/svg-viewer.styles.d.ts.map +1 -0
- package/dist/components/svg-viewer/svg-viewer.styles.js +50 -0
- package/dist/components/svg-viewer/svg-viewer.styles.js.map +1 -0
- package/dist/internal/localization.d.ts +1 -1
- package/dist/internal/localization.d.ts.map +1 -1
- package/dist/internal/localization.js +65 -0
- package/dist/internal/localization.js.map +1 -1
- package/dist/internal/root-registration-allowlist.d.ts +1 -1
- package/dist/internal/root-registration-allowlist.d.ts.map +1 -1
- package/dist/internal/root-registration-allowlist.js +15 -0
- package/dist/internal/root-registration-allowlist.js.map +1 -1
- package/dist/lyra.d.ts +44 -1
- package/dist/lyra.d.ts.map +1 -1
- package/dist/lyra.js +32 -0
- package/dist/lyra.js.map +1 -1
- package/llms-full.txt +331 -8
- package/llms.txt +2 -1
- package/package.json +83 -3
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { html, nothing } from 'lit';
|
|
8
|
+
import { property, state } from 'lit/decorators.js';
|
|
9
|
+
import { LyraElement } from '../../internal/lyra-element.js';
|
|
10
|
+
import { safeLinkHref } from '../../internal/safe-url.js';
|
|
11
|
+
import { findDocumentRenderer, getDefaultDocumentRendererRegistry, loadDocumentRenderer, } from './registry.js';
|
|
12
|
+
import { styles } from './document-viewer.styles.js';
|
|
13
|
+
/**
|
|
14
|
+
* A dialog-hosted document viewer with a pluggable MIME-type renderer registry.
|
|
15
|
+
* A registered renderer receives the current file; files without a matching
|
|
16
|
+
* renderer use `<lyra-document-preview>` as a safe built-in fallback.
|
|
17
|
+
*
|
|
18
|
+
* @customElement lyra-document-viewer
|
|
19
|
+
* @event lyra-close - Fired when the nested dialog dismisses the viewer. The
|
|
20
|
+
* detail is the dialog close reason.
|
|
21
|
+
* @event lyra-download - Fired when the viewer's safe download action is
|
|
22
|
+
* activated. The browser download itself is handled by the native link.
|
|
23
|
+
* @csspart body - Wrapper around the active renderer or fallback preview.
|
|
24
|
+
* @csspart download-link - The native download action shown when `src` is safe.
|
|
25
|
+
*/
|
|
26
|
+
export class LyraDocumentViewer extends LyraElement {
|
|
27
|
+
constructor() {
|
|
28
|
+
super(...arguments);
|
|
29
|
+
/** Whether the viewer is open. */
|
|
30
|
+
this.open = false;
|
|
31
|
+
/** Display name passed to the renderer and shown as the dialog heading. */
|
|
32
|
+
this.name = '';
|
|
33
|
+
/** MIME type used for renderer dispatch. */
|
|
34
|
+
this.mimeType = '';
|
|
35
|
+
/** Source URL passed to the renderer or fallback preview. */
|
|
36
|
+
this.src = '';
|
|
37
|
+
this.renderState = { kind: 'fallback' };
|
|
38
|
+
this.generation = 0;
|
|
39
|
+
this.onDialogClose = (event) => {
|
|
40
|
+
this.open = false;
|
|
41
|
+
this.emit('lyra-close', event.detail);
|
|
42
|
+
};
|
|
43
|
+
this.onDownload = () => {
|
|
44
|
+
this.emit('lyra-download', { src: this.src, filename: this.name });
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
static { this.styles = [LyraElement.styles, styles]; }
|
|
48
|
+
willUpdate(changed) {
|
|
49
|
+
if (!this.hasUpdated || changed.has('name') || changed.has('mimeType') || changed.has('src') || changed.has('registry')) {
|
|
50
|
+
void this.resolve();
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
currentFile() {
|
|
54
|
+
return { name: this.name, mimeType: this.mimeType, src: this.src };
|
|
55
|
+
}
|
|
56
|
+
async resolve() {
|
|
57
|
+
const generation = ++this.generation;
|
|
58
|
+
const file = this.currentFile();
|
|
59
|
+
const registry = this.registry ?? getDefaultDocumentRendererRegistry();
|
|
60
|
+
const def = findDocumentRenderer(file, registry);
|
|
61
|
+
if (!def) {
|
|
62
|
+
this.resolvedLazy = undefined;
|
|
63
|
+
this.renderState = { kind: 'fallback' };
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
if (this.resolvedLazy?.def === def) {
|
|
67
|
+
this.renderWith(this.resolvedLazy.resolved, file);
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
if (!def.load) {
|
|
71
|
+
this.resolvedLazy = { def, resolved: def };
|
|
72
|
+
this.renderWith(def, file);
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
this.renderState = { kind: 'loading' };
|
|
76
|
+
let resolved;
|
|
77
|
+
try {
|
|
78
|
+
resolved = await loadDocumentRenderer(def);
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
if (generation === this.generation)
|
|
82
|
+
this.renderState = { kind: 'error' };
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
if (generation !== this.generation)
|
|
86
|
+
return;
|
|
87
|
+
this.resolvedLazy = { def, resolved };
|
|
88
|
+
this.renderWith(resolved, file);
|
|
89
|
+
}
|
|
90
|
+
renderWith(def, file) {
|
|
91
|
+
if (!def.render) {
|
|
92
|
+
this.renderState = { kind: 'error' };
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
this.renderState = { kind: 'rendered', template: def.render(file) };
|
|
96
|
+
}
|
|
97
|
+
renderBody() {
|
|
98
|
+
switch (this.renderState.kind) {
|
|
99
|
+
case 'rendered':
|
|
100
|
+
return this.renderState.template;
|
|
101
|
+
case 'loading':
|
|
102
|
+
return html `<p>${this.localize('loadingDocument')}</p>`;
|
|
103
|
+
case 'error':
|
|
104
|
+
return html `<div role="alert">${this.localize('documentPreviewGenericError')}</div>`;
|
|
105
|
+
case 'fallback':
|
|
106
|
+
default:
|
|
107
|
+
return html `
|
|
108
|
+
<lyra-document-preview
|
|
109
|
+
src=${this.src}
|
|
110
|
+
mime-type=${this.mimeType}
|
|
111
|
+
filename=${this.name}
|
|
112
|
+
></lyra-document-preview>
|
|
113
|
+
`;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
render() {
|
|
117
|
+
const downloadHref = safeLinkHref(this.src);
|
|
118
|
+
return html `
|
|
119
|
+
<lyra-dialog
|
|
120
|
+
?open=${this.open}
|
|
121
|
+
heading=${this.name || nothing}
|
|
122
|
+
label=${this.localize('documentViewerLabel')}
|
|
123
|
+
closable
|
|
124
|
+
@lyra-dialog-close=${this.onDialogClose}
|
|
125
|
+
>
|
|
126
|
+
<div part="body">${this.renderBody()}</div>
|
|
127
|
+
${downloadHref
|
|
128
|
+
? html `
|
|
129
|
+
<a
|
|
130
|
+
slot="footer"
|
|
131
|
+
part="download-link"
|
|
132
|
+
href=${downloadHref}
|
|
133
|
+
download=${this.name || nothing}
|
|
134
|
+
@click=${this.onDownload}
|
|
135
|
+
>${this.localize('download')}</a>
|
|
136
|
+
`
|
|
137
|
+
: nothing}
|
|
138
|
+
</lyra-dialog>
|
|
139
|
+
`;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
__decorate([
|
|
143
|
+
property({ type: Boolean, reflect: true })
|
|
144
|
+
], LyraDocumentViewer.prototype, "open", void 0);
|
|
145
|
+
__decorate([
|
|
146
|
+
property()
|
|
147
|
+
], LyraDocumentViewer.prototype, "name", void 0);
|
|
148
|
+
__decorate([
|
|
149
|
+
property({ attribute: 'mime-type' })
|
|
150
|
+
], LyraDocumentViewer.prototype, "mimeType", void 0);
|
|
151
|
+
__decorate([
|
|
152
|
+
property()
|
|
153
|
+
], LyraDocumentViewer.prototype, "src", void 0);
|
|
154
|
+
__decorate([
|
|
155
|
+
property({ attribute: false })
|
|
156
|
+
], LyraDocumentViewer.prototype, "registry", void 0);
|
|
157
|
+
__decorate([
|
|
158
|
+
state()
|
|
159
|
+
], LyraDocumentViewer.prototype, "renderState", void 0);
|
|
160
|
+
//# sourceMappingURL=document-viewer.class.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document-viewer.class.js","sourceRoot":"","sources":["../../../src/components/document-viewer/document-viewer.class.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document-viewer.d.ts","sourceRoot":"","sources":["../../../src/components/document-viewer/document-viewer.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,eAAe,CAAC;AAG9B,OAAO,qBAAqB,CAAC;AAC7B,OAAO,yCAAyC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export * from './document-viewer.class.js';
|
|
2
|
+
export * from './registry.js';
|
|
3
|
+
import { LyraDocumentViewer } from './document-viewer.class.js';
|
|
4
|
+
import { defineElement } from '../../internal/prefix.js';
|
|
5
|
+
import '../dialog/dialog.js';
|
|
6
|
+
import '../document-preview/document-preview.js';
|
|
7
|
+
defineElement('document-viewer', LyraDocumentViewer);
|
|
8
|
+
//# sourceMappingURL=document-viewer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document-viewer.js","sourceRoot":"","sources":["../../../src/components/document-viewer/document-viewer.ts"],"names":[],"mappings":"AAAA,cAAc,4BAA4B,CAAC;AAC3C,cAAc,eAAe,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,qBAAqB,CAAC;AAC7B,OAAO,yCAAyC,CAAC;AAEjD,aAAa,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document-viewer.styles.d.ts","sourceRoot":"","sources":["../../../src/components/document-viewer/document-viewer.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,yBA6ClB,CAAC"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { css } from 'lit';
|
|
2
|
+
export const styles = css `
|
|
3
|
+
:host {
|
|
4
|
+
display: contents;
|
|
5
|
+
--lyra-document-viewer-max-height: 70vh;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
[part='body'] {
|
|
9
|
+
display: flex;
|
|
10
|
+
flex-direction: column;
|
|
11
|
+
min-block-size: var(--lyra-size-12rem);
|
|
12
|
+
max-block-size: var(--lyra-document-viewer-max-height);
|
|
13
|
+
overflow: auto;
|
|
14
|
+
padding-inline: var(--lyra-space-l);
|
|
15
|
+
padding-block: var(--lyra-space-l);
|
|
16
|
+
min-inline-size: 0;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
[part='body'] img {
|
|
20
|
+
max-inline-size: 100%;
|
|
21
|
+
block-size: auto;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
[part='download-link'] {
|
|
25
|
+
display: inline-flex;
|
|
26
|
+
align-items: center;
|
|
27
|
+
justify-content: center;
|
|
28
|
+
min-block-size: var(--lyra-size-2rem);
|
|
29
|
+
padding-inline: var(--lyra-space-m);
|
|
30
|
+
border: var(--lyra-border-width-thin) solid var(--lyra-color-brand);
|
|
31
|
+
border-radius: var(--lyra-radius);
|
|
32
|
+
background: var(--lyra-color-brand);
|
|
33
|
+
color: var(--lyra-color-on-brand);
|
|
34
|
+
font: inherit;
|
|
35
|
+
font-weight: var(--lyra-font-weight-semibold);
|
|
36
|
+
text-decoration: none;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
[part='download-link']:hover {
|
|
40
|
+
background: color-mix(in srgb, var(--lyra-color-brand) 85%, var(--lyra-color-shadow));
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
[part='download-link']:focus-visible {
|
|
44
|
+
outline: var(--lyra-focus-ring-width) solid var(--lyra-focus-ring-color);
|
|
45
|
+
outline-offset: var(--lyra-focus-ring-offset);
|
|
46
|
+
}
|
|
47
|
+
`;
|
|
48
|
+
//# sourceMappingURL=document-viewer.styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"document-viewer.styles.js","sourceRoot":"","sources":["../../../src/components/document-viewer/document-viewer.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6CxB,CAAC"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/** A file supplied to a document renderer. */
|
|
2
|
+
export interface DocumentFile {
|
|
3
|
+
name: string;
|
|
4
|
+
mimeType: string;
|
|
5
|
+
src: string;
|
|
6
|
+
}
|
|
7
|
+
/** A renderer for one document format or a family of related formats. */
|
|
8
|
+
export interface DocumentRendererDefinition {
|
|
9
|
+
/** Renders the file as Lit-compatible content, a DOM node, or plain text. */
|
|
10
|
+
render?: (file: DocumentFile) => unknown;
|
|
11
|
+
/** Matches files that do not have an exact MIME-type registration. */
|
|
12
|
+
matches?: (file: DocumentFile) => boolean;
|
|
13
|
+
/** Lazily loads the renderer definition when a matching file is opened. */
|
|
14
|
+
load?: () => Promise<DocumentRendererDefinition | {
|
|
15
|
+
default: DocumentRendererDefinition;
|
|
16
|
+
}>;
|
|
17
|
+
}
|
|
18
|
+
/** MIME-type to renderer-definition registry. */
|
|
19
|
+
export type DocumentRendererRegistry = Map<string, DocumentRendererDefinition>;
|
|
20
|
+
/** Registers or replaces a renderer in the module-level default registry. */
|
|
21
|
+
export declare function registerDocumentRenderer(key: string, def: DocumentRendererDefinition): void;
|
|
22
|
+
/** Returns the module-level registry used by default by `<lyra-document-viewer>`. */
|
|
23
|
+
export declare function getDefaultDocumentRendererRegistry(): DocumentRendererRegistry;
|
|
24
|
+
/** Finds an exact MIME-type renderer, then the first matching shape-based renderer. */
|
|
25
|
+
export declare function findDocumentRenderer(file: DocumentFile, registry?: DocumentRendererRegistry): DocumentRendererDefinition | undefined;
|
|
26
|
+
/** Resolves and identity-caches a lazy renderer. Rejected loads are retried. */
|
|
27
|
+
export declare function loadDocumentRenderer(def: DocumentRendererDefinition): Promise<DocumentRendererDefinition>;
|
|
28
|
+
/** Clears the default registry and lazy-load cache for isolated tests. */
|
|
29
|
+
export declare function clearDocumentRenderers(): void;
|
|
30
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/components/document-viewer/registry.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,yEAAyE;AACzE,MAAM,WAAW,0BAA0B;IACzC,6EAA6E;IAC7E,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,OAAO,CAAC;IACzC,sEAAsE;IACtE,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,YAAY,KAAK,OAAO,CAAC;IAC1C,2EAA2E;IAC3E,IAAI,CAAC,EAAE,MAAM,OAAO,CAAC,0BAA0B,GAAG;QAAE,OAAO,EAAE,0BAA0B,CAAA;KAAE,CAAC,CAAC;CAC5F;AAED,iDAAiD;AACjD,MAAM,MAAM,wBAAwB,GAAG,GAAG,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;AAK/E,6EAA6E;AAC7E,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,0BAA0B,GAAG,IAAI,CAE3F;AAED,qFAAqF;AACrF,wBAAgB,kCAAkC,IAAI,wBAAwB,CAE7E;AAED,uFAAuF;AACvF,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,YAAY,EAClB,QAAQ,GAAE,wBAA0C,GACnD,0BAA0B,GAAG,SAAS,CAOxC;AAQD,gFAAgF;AAChF,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,0BAA0B,GAAG,OAAO,CAAC,0BAA0B,CAAC,CASzG;AAED,0EAA0E;AAC1E,wBAAgB,sBAAsB,IAAI,IAAI,CAG7C"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
const defaultRegistry = new Map();
|
|
2
|
+
let loadCache = new WeakMap();
|
|
3
|
+
/** Registers or replaces a renderer in the module-level default registry. */
|
|
4
|
+
export function registerDocumentRenderer(key, def) {
|
|
5
|
+
defaultRegistry.set(key, def);
|
|
6
|
+
}
|
|
7
|
+
/** Returns the module-level registry used by default by `<lyra-document-viewer>`. */
|
|
8
|
+
export function getDefaultDocumentRendererRegistry() {
|
|
9
|
+
return defaultRegistry;
|
|
10
|
+
}
|
|
11
|
+
/** Finds an exact MIME-type renderer, then the first matching shape-based renderer. */
|
|
12
|
+
export function findDocumentRenderer(file, registry = defaultRegistry) {
|
|
13
|
+
const exact = registry.get(file.mimeType);
|
|
14
|
+
if (exact)
|
|
15
|
+
return exact;
|
|
16
|
+
for (const def of registry.values()) {
|
|
17
|
+
if (def.matches?.(file))
|
|
18
|
+
return def;
|
|
19
|
+
}
|
|
20
|
+
return undefined;
|
|
21
|
+
}
|
|
22
|
+
function isModuleWrapper(value) {
|
|
23
|
+
return 'default' in value && typeof value.default === 'object' && value.default !== null;
|
|
24
|
+
}
|
|
25
|
+
/** Resolves and identity-caches a lazy renderer. Rejected loads are retried. */
|
|
26
|
+
export function loadDocumentRenderer(def) {
|
|
27
|
+
if (!def.load)
|
|
28
|
+
return Promise.resolve(def);
|
|
29
|
+
const cached = loadCache.get(def);
|
|
30
|
+
if (cached)
|
|
31
|
+
return cached;
|
|
32
|
+
const promise = def.load().then((value) => (isModuleWrapper(value) ? value.default : value));
|
|
33
|
+
loadCache.set(def, promise);
|
|
34
|
+
promise.catch(() => loadCache.delete(def));
|
|
35
|
+
return promise;
|
|
36
|
+
}
|
|
37
|
+
/** Clears the default registry and lazy-load cache for isolated tests. */
|
|
38
|
+
export function clearDocumentRenderers() {
|
|
39
|
+
defaultRegistry.clear();
|
|
40
|
+
loadCache = new WeakMap();
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/components/document-viewer/registry.ts"],"names":[],"mappings":"AAoBA,MAAM,eAAe,GAA6B,IAAI,GAAG,EAAE,CAAC;AAC5D,IAAI,SAAS,GAAG,IAAI,OAAO,EAAmE,CAAC;AAE/F,6EAA6E;AAC7E,MAAM,UAAU,wBAAwB,CAAC,GAAW,EAAE,GAA+B;IACnF,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;AAChC,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,kCAAkC;IAChD,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,oBAAoB,CAClC,IAAkB,EAClB,QAAQ,GAA6B,eAAe;IAEpD,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC1C,IAAI,KAAK;QAAE,OAAO,KAAK,CAAC;IACxB,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC;QACpC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC;YAAE,OAAO,GAAG,CAAC;IACtC,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,eAAe,CACtB,KAA2E;IAE3E,OAAO,SAAS,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,KAAK,IAAI,CAAC;AAC3F,CAAC;AAED,gFAAgF;AAChF,MAAM,UAAU,oBAAoB,CAAC,GAA+B;IAClE,IAAI,CAAC,GAAG,CAAC,IAAI;QAAE,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAE1B,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7F,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;IAC5B,OAAO,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3C,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,sBAAsB;IACpC,eAAe,CAAC,KAAK,EAAE,CAAC;IACxB,SAAS,GAAG,IAAI,OAAO,EAAE,CAAC;AAC5B,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { OptionalPeerApi } from '../../internal/optional-peer-types.js';
|
|
2
|
+
export type MammothApi = OptionalPeerApi;
|
|
3
|
+
export interface DocxDeps {
|
|
4
|
+
mammoth: MammothApi | undefined;
|
|
5
|
+
DOMPurify: OptionalPeerApi | undefined;
|
|
6
|
+
}
|
|
7
|
+
export declare function loadMammothAndSanitizer(importMammoth?: () => Promise<OptionalPeerApi>, importDompurify?: () => Promise<OptionalPeerApi>): Promise<DocxDeps>;
|
|
8
|
+
export declare function loadDocxDeps(): Promise<DocxDeps>;
|
|
9
|
+
export declare function getDocxDepsIfLoaded(): DocxDeps | undefined;
|
|
10
|
+
export declare function clearDocxDepsCache(): void;
|
|
11
|
+
//# sourceMappingURL=docx-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docx-loader.d.ts","sourceRoot":"","sources":["../../../src/components/docx-viewer/docx-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAE7E,MAAM,MAAM,UAAU,GAAG,eAAe,CAAC;AAEzC,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,UAAU,GAAG,SAAS,CAAC;IAChC,SAAS,EAAE,eAAe,GAAG,SAAS,CAAC;CACxC;AASD,wBAAsB,uBAAuB,CAC3C,aAAa,GAAE,MAAM,OAAO,CAAC,eAAe,CACsB,EAClE,eAAe,GAAE,MAAM,OAAO,CAAC,eAAe,CACG,GAChD,OAAO,CAAC,QAAQ,CAAC,CAsBnB;AAED,wBAAgB,YAAY,IAAI,OAAO,CAAC,QAAQ,CAAC,CAQhD;AAED,wBAAgB,mBAAmB,IAAI,QAAQ,GAAG,SAAS,CAE1D;AAED,wBAAgB,kBAAkB,IAAI,IAAI,CAGzC"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
let depsPromise;
|
|
2
|
+
let resolvedDeps;
|
|
3
|
+
function unwrapDefault(value) {
|
|
4
|
+
return value.default ?? value;
|
|
5
|
+
}
|
|
6
|
+
export async function loadMammothAndSanitizer(importMammoth = () => import('mammoth/mammoth.browser.js'), importDompurify = () => import('dompurify')) {
|
|
7
|
+
let mammoth;
|
|
8
|
+
try {
|
|
9
|
+
mammoth = unwrapDefault(await importMammoth());
|
|
10
|
+
}
|
|
11
|
+
catch (error) {
|
|
12
|
+
console.warn('<lyra-docx-viewer> needs the optional peer dependency `mammoth` to convert DOCX documents — install it with `pnpm add mammoth`:', error);
|
|
13
|
+
}
|
|
14
|
+
let DOMPurify;
|
|
15
|
+
try {
|
|
16
|
+
DOMPurify = unwrapDefault(await importDompurify());
|
|
17
|
+
}
|
|
18
|
+
catch (error) {
|
|
19
|
+
console.warn('<lyra-docx-viewer> needs the optional peer dependency `dompurify` to sanitize converted HTML — install it with `pnpm add dompurify`:', error);
|
|
20
|
+
}
|
|
21
|
+
return { mammoth, DOMPurify };
|
|
22
|
+
}
|
|
23
|
+
export function loadDocxDeps() {
|
|
24
|
+
if (!depsPromise) {
|
|
25
|
+
depsPromise = loadMammothAndSanitizer().then((resolved) => {
|
|
26
|
+
resolvedDeps = resolved;
|
|
27
|
+
return resolved;
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
return depsPromise;
|
|
31
|
+
}
|
|
32
|
+
export function getDocxDepsIfLoaded() {
|
|
33
|
+
return resolvedDeps;
|
|
34
|
+
}
|
|
35
|
+
export function clearDocxDepsCache() {
|
|
36
|
+
depsPromise = undefined;
|
|
37
|
+
resolvedDeps = undefined;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=docx-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docx-loader.js","sourceRoot":"","sources":["../../../src/components/docx-viewer/docx-loader.ts"],"names":[],"mappings":"AASA,IAAI,WAA0C,CAAC;AAC/C,IAAI,YAAkC,CAAC;AAEvC,SAAS,aAAa,CAAC,KAAsB;IAC3C,OAAO,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC;AAChC,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,aAAa,GAAmC,GAAG,EAAE,CACnD,MAAM,CAAC,4BAA4B,CAA6B,EAClE,eAAe,GAAmC,GAAG,EAAE,CACrD,MAAM,CAAC,WAAW,CAA6B;IAEjD,IAAI,OAA+B,CAAC;IACpC,IAAI,CAAC;QACH,OAAO,GAAG,aAAa,CAAC,MAAM,aAAa,EAAE,CAAC,CAAC;IACjD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CACV,iIAAiI,EACjI,KAAK,CACN,CAAC;IACJ,CAAC;IAED,IAAI,SAAsC,CAAC;IAC3C,IAAI,CAAC;QACH,SAAS,GAAG,aAAa,CAAC,MAAM,eAAe,EAAE,CAAC,CAAC;IACrD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CACV,sIAAsI,EACtI,KAAK,CACN,CAAC;IACJ,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;AAChC,CAAC;AAED,MAAM,UAAU,YAAY;IAC1B,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,WAAW,GAAG,uBAAuB,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE;YACxD,YAAY,GAAG,QAAQ,CAAC;YACxB,OAAO,QAAQ,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,kBAAkB;IAChC,WAAW,GAAG,SAAS,CAAC;IACxB,YAAY,GAAG,SAAS,CAAC;AAC3B,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { type PropertyValues, type TemplateResult } from 'lit';
|
|
2
|
+
import { LyraElement } from '../../internal/lyra-element.js';
|
|
3
|
+
export interface LyraDocxViewerEventMap {
|
|
4
|
+
'lyra-render-error': CustomEvent<{
|
|
5
|
+
error: unknown;
|
|
6
|
+
}>;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Renders a DOCX document as sanitized semantic HTML using the optional
|
|
10
|
+
* `mammoth` converter and `dompurify` sanitizer peers. DOCX content is always
|
|
11
|
+
* sanitized; there is no unsanitized rendering mode for uploaded documents.
|
|
12
|
+
*
|
|
13
|
+
* @customElement lyra-docx-viewer
|
|
14
|
+
* @event lyra-render-error - Fired when loading, conversion, sanitization, or a non-fatal Mammoth message occurs.
|
|
15
|
+
* @csspart base - The root container.
|
|
16
|
+
* @csspart body - The scrollable document body.
|
|
17
|
+
* @csspart content - The semantic document content.
|
|
18
|
+
* @csspart error - The error message region.
|
|
19
|
+
* @csspart spinner - The loading status region.
|
|
20
|
+
*/
|
|
21
|
+
export declare class LyraDocxViewer extends LyraElement<LyraDocxViewerEventMap> {
|
|
22
|
+
static styles: import("lit").CSSResultGroup[];
|
|
23
|
+
/** URL to fetch and convert as a DOCX document. */
|
|
24
|
+
src: string;
|
|
25
|
+
/** Accessible name for the rendered document. */
|
|
26
|
+
name: string;
|
|
27
|
+
/** CSS length that caps the scrollable document body. */
|
|
28
|
+
maxHeight: string;
|
|
29
|
+
private fetchState;
|
|
30
|
+
private generation;
|
|
31
|
+
private loadLibrary;
|
|
32
|
+
protected willUpdate(changed: PropertyValues): void;
|
|
33
|
+
private load;
|
|
34
|
+
private renderBody;
|
|
35
|
+
render(): TemplateResult;
|
|
36
|
+
}
|
|
37
|
+
declare global {
|
|
38
|
+
interface HTMLElementTagNameMap {
|
|
39
|
+
'lyra-docx-viewer': LyraDocxViewer;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=docx-viewer.class.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docx-viewer.class.d.ts","sourceRoot":"","sources":["../../../src/components/docx-viewer/docx-viewer.class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAG9E,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAY7D,MAAM,WAAW,sBAAsB;IACrC,mBAAmB,EAAE,WAAW,CAAC;QAAE,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACtD;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,cAAe,SAAQ,WAAW,CAAC,sBAAsB,CAAC;IACrE,MAAM,CAAC,MAAM,iCAAwC;IAErD,mDAAmD;IACvC,GAAG,SAAM;IAErB,iDAAiD;IACrC,IAAI,SAAM;IAEtB,yDAAyD;IAClB,SAAS,SAAM;IAE7C,OAAO,CAAC,UAAU,CAAgC;IAE3D,OAAO,CAAC,UAAU,CAAK;IACvB,OAAO,CAAC,WAAW,CAAyC;IAE5D,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAElD;YAEa,IAAI;IA2ClB,OAAO,CAAC,UAAU;IAkBlB,MAAM,IAAI,cAAc,CASvB;CACF;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,kBAAkB,EAAE,cAAc,CAAC;KACpC;CACF"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
import { html, nothing } from 'lit';
|
|
8
|
+
import { property, state } from 'lit/decorators.js';
|
|
9
|
+
import { unsafeHTML } from 'lit/directives/unsafe-html.js';
|
|
10
|
+
import { LyraElement } from '../../internal/lyra-element.js';
|
|
11
|
+
import { srOnly } from '../../internal/a11y.js';
|
|
12
|
+
import { safeFetchUrl } from '../../internal/safe-url.js';
|
|
13
|
+
import { loadDocxDeps } from './docx-loader.js';
|
|
14
|
+
import { styles } from './docx-viewer.styles.js';
|
|
15
|
+
/**
|
|
16
|
+
* Renders a DOCX document as sanitized semantic HTML using the optional
|
|
17
|
+
* `mammoth` converter and `dompurify` sanitizer peers. DOCX content is always
|
|
18
|
+
* sanitized; there is no unsanitized rendering mode for uploaded documents.
|
|
19
|
+
*
|
|
20
|
+
* @customElement lyra-docx-viewer
|
|
21
|
+
* @event lyra-render-error - Fired when loading, conversion, sanitization, or a non-fatal Mammoth message occurs.
|
|
22
|
+
* @csspart base - The root container.
|
|
23
|
+
* @csspart body - The scrollable document body.
|
|
24
|
+
* @csspart content - The semantic document content.
|
|
25
|
+
* @csspart error - The error message region.
|
|
26
|
+
* @csspart spinner - The loading status region.
|
|
27
|
+
*/
|
|
28
|
+
export class LyraDocxViewer extends LyraElement {
|
|
29
|
+
constructor() {
|
|
30
|
+
super(...arguments);
|
|
31
|
+
/** URL to fetch and convert as a DOCX document. */
|
|
32
|
+
this.src = '';
|
|
33
|
+
/** Accessible name for the rendered document. */
|
|
34
|
+
this.name = '';
|
|
35
|
+
/** CSS length that caps the scrollable document body. */
|
|
36
|
+
this.maxHeight = '';
|
|
37
|
+
this.fetchState = { kind: 'idle' };
|
|
38
|
+
this.generation = 0;
|
|
39
|
+
this.loadLibrary = loadDocxDeps;
|
|
40
|
+
}
|
|
41
|
+
static { this.styles = [LyraElement.styles, styles, srOnly]; }
|
|
42
|
+
willUpdate(changed) {
|
|
43
|
+
if (!this.hasUpdated || changed.has('src'))
|
|
44
|
+
void this.load();
|
|
45
|
+
}
|
|
46
|
+
async load() {
|
|
47
|
+
const generation = ++this.generation;
|
|
48
|
+
if (!this.src) {
|
|
49
|
+
this.fetchState = { kind: 'idle' };
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
const url = safeFetchUrl(this.src);
|
|
53
|
+
if (!url) {
|
|
54
|
+
this.fetchState = { kind: 'error', message: this.localize('documentPreviewUrlNotAllowed') };
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
this.fetchState = { kind: 'loading' };
|
|
58
|
+
try {
|
|
59
|
+
const response = await fetch(url);
|
|
60
|
+
if (!response.ok)
|
|
61
|
+
throw new Error(`${response.status} ${response.statusText}`);
|
|
62
|
+
const arrayBuffer = await response.arrayBuffer();
|
|
63
|
+
const { mammoth, DOMPurify } = await this.loadLibrary();
|
|
64
|
+
if (generation !== this.generation)
|
|
65
|
+
return;
|
|
66
|
+
if (!mammoth) {
|
|
67
|
+
this.fetchState = { kind: 'error', message: this.localize('docxViewerMissingConverter') };
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
if (!DOMPurify) {
|
|
71
|
+
this.fetchState = { kind: 'error', message: this.localize('documentViewerMissingSanitizer') };
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
const converted = (await mammoth.convertToHtml({ arrayBuffer }));
|
|
75
|
+
if (generation !== this.generation)
|
|
76
|
+
return;
|
|
77
|
+
this.fetchState = { kind: 'loaded', markup: DOMPurify.sanitize(converted.value) };
|
|
78
|
+
if (converted.messages.length > 0)
|
|
79
|
+
this.emit('lyra-render-error', { error: converted.messages });
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
if (generation !== this.generation)
|
|
83
|
+
return;
|
|
84
|
+
this.fetchState = {
|
|
85
|
+
kind: 'error',
|
|
86
|
+
message: error instanceof Error ? error.message : this.localize('documentPreviewFailedToLoad'),
|
|
87
|
+
};
|
|
88
|
+
this.emit('lyra-render-error', { error });
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
renderBody() {
|
|
92
|
+
switch (this.fetchState.kind) {
|
|
93
|
+
case 'loaded':
|
|
94
|
+
return html `
|
|
95
|
+
<div part="content" role="document" aria-label=${this.name || this.localize('docxViewerLabel')}>
|
|
96
|
+
${unsafeHTML(this.fetchState.markup)}
|
|
97
|
+
</div>
|
|
98
|
+
`;
|
|
99
|
+
case 'loading':
|
|
100
|
+
return html `<div part="spinner" role="status"><span class="sr-only">${this.localize('loadingDocument')}</span></div>`;
|
|
101
|
+
case 'error':
|
|
102
|
+
return html `<div part="error" role="alert">${this.fetchState.message}</div>`;
|
|
103
|
+
case 'idle':
|
|
104
|
+
default:
|
|
105
|
+
return html `<p class="empty-note">${this.localize('documentPreviewEmpty', undefined, { type: this.localize('documentPreviewTypeDocument') })}</p>`;
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
render() {
|
|
109
|
+
return html `
|
|
110
|
+
<div
|
|
111
|
+
part="base"
|
|
112
|
+
style=${this.maxHeight ? `--lyra-docx-viewer-max-height:${this.maxHeight}` : nothing}
|
|
113
|
+
>
|
|
114
|
+
<div part="body">${this.renderBody()}</div>
|
|
115
|
+
</div>
|
|
116
|
+
`;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
__decorate([
|
|
120
|
+
property()
|
|
121
|
+
], LyraDocxViewer.prototype, "src", void 0);
|
|
122
|
+
__decorate([
|
|
123
|
+
property()
|
|
124
|
+
], LyraDocxViewer.prototype, "name", void 0);
|
|
125
|
+
__decorate([
|
|
126
|
+
property({ attribute: 'max-height' })
|
|
127
|
+
], LyraDocxViewer.prototype, "maxHeight", void 0);
|
|
128
|
+
__decorate([
|
|
129
|
+
state()
|
|
130
|
+
], LyraDocxViewer.prototype, "fetchState", void 0);
|
|
131
|
+
//# sourceMappingURL=docx-viewer.class.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docx-viewer.class.js","sourceRoot":"","sources":["../../../src/components/docx-viewer/docx-viewer.class.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docx-viewer.d.ts","sourceRoot":"","sources":["../../../src/components/docx-viewer/docx-viewer.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export * from './docx-loader.js';
|
|
2
|
+
export * from './docx-viewer.class.js';
|
|
3
|
+
import { html } from 'lit';
|
|
4
|
+
import { defineElement } from '../../internal/prefix.js';
|
|
5
|
+
import { registerDocumentRenderer } from '../document-viewer/registry.js';
|
|
6
|
+
import { LyraDocxViewer } from './docx-viewer.class.js';
|
|
7
|
+
defineElement('docx-viewer', LyraDocxViewer);
|
|
8
|
+
registerDocumentRenderer('application/vnd.openxmlformats-officedocument.wordprocessingml.document', {
|
|
9
|
+
matches: (file) => file.name.toLowerCase().endsWith('.docx'),
|
|
10
|
+
render: (file) => html `<lyra-docx-viewer src=${file.src} name=${file.name}></lyra-docx-viewer>`,
|
|
11
|
+
});
|
|
12
|
+
//# sourceMappingURL=docx-viewer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docx-viewer.js","sourceRoot":"","sources":["../../../src/components/docx-viewer/docx-viewer.ts"],"names":[],"mappings":"AAAA,cAAc,kBAAkB,CAAC;AACjC,cAAc,wBAAwB,CAAC;AAEvC,OAAO,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAC3B,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAqB,MAAM,gCAAgC,CAAC;AAC7F,OAAO,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAC;AAExD,aAAa,CAAC,aAAa,EAAE,cAAc,CAAC,CAAC;AAE7C,wBAAwB,CAAC,yEAAyE,EAAE;IAClG,OAAO,EAAE,CAAC,IAAkB,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC;IAC1E,MAAM,EAAE,CAAC,IAAkB,EAAE,EAAE,CAAC,IAAI,CAAA,yBAAyB,IAAI,CAAC,GAAG,SAAS,IAAI,CAAC,IAAI,sBAAsB;CAC9G,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"docx-viewer.styles.d.ts","sourceRoot":"","sources":["../../../src/components/docx-viewer/docx-viewer.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,yBAgGlB,CAAC"}
|