@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,5 @@
|
|
|
1
|
+
import type { OptionalPeerApi } from '../../internal/optional-peer-types.js';
|
|
2
|
+
export declare function loadIcalDeps(importIcal?: () => Promise<OptionalPeerApi>): Promise<OptionalPeerApi | null>;
|
|
3
|
+
export declare function loadIcal(): Promise<OptionalPeerApi | null>;
|
|
4
|
+
export declare function clearIcalCache(): void;
|
|
5
|
+
//# sourceMappingURL=calendar-loader.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar-loader.d.ts","sourceRoot":"","sources":["../../../src/components/calendar-viewer/calendar-loader.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uCAAuC,CAAC;AAI7E,wBAAsB,YAAY,CAChC,UAAU,GAAE,MAAM,OAAO,CAAC,eAAe,CAAuD,GAC/F,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAWjC;AAED,wBAAgB,QAAQ,IAAI,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAG1D;AAED,wBAAgB,cAAc,IAAI,IAAI,CAAwB"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
let cached;
|
|
2
|
+
export async function loadIcalDeps(importIcal = () => import('ical.js')) {
|
|
3
|
+
try {
|
|
4
|
+
const module = await importIcal();
|
|
5
|
+
return module.default ?? module;
|
|
6
|
+
}
|
|
7
|
+
catch (error) {
|
|
8
|
+
console.warn('<lyra-calendar-viewer> needs the optional peer dependency `ical.js` to parse .ics calendars — install it with `pnpm add ical.js`:', error);
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
export function loadIcal() {
|
|
13
|
+
if (!cached)
|
|
14
|
+
cached = loadIcalDeps();
|
|
15
|
+
return cached;
|
|
16
|
+
}
|
|
17
|
+
export function clearIcalCache() { cached = undefined; }
|
|
18
|
+
//# sourceMappingURL=calendar-loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar-loader.js","sourceRoot":"","sources":["../../../src/components/calendar-viewer/calendar-loader.ts"],"names":[],"mappings":"AAEA,IAAI,MAAmD,CAAC;AAExD,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,UAAU,GAAmC,GAAG,EAAE,CAAC,MAAM,CAAC,SAAS,CAA6B;IAEhG,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,UAAU,EAAE,CAAC;QAClC,OAAO,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC;IAClC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CACV,mIAAmI,EACnI,KAAK,CACN,CAAC;QACF,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,QAAQ;IACtB,IAAI,CAAC,MAAM;QAAE,MAAM,GAAG,YAAY,EAAE,CAAC;IACrC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,UAAU,cAAc,KAAW,MAAM,GAAG,SAAS,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import { type PropertyValues, type TemplateResult } from 'lit';
|
|
2
|
+
import { LyraElement } from '../../internal/lyra-element.js';
|
|
3
|
+
export interface ParsedCalendarEvent {
|
|
4
|
+
uid: string;
|
|
5
|
+
summary: string;
|
|
6
|
+
start: Date | null;
|
|
7
|
+
end: Date | null;
|
|
8
|
+
location: string;
|
|
9
|
+
description: string;
|
|
10
|
+
}
|
|
11
|
+
export interface LyraCalendarViewerEventMap {
|
|
12
|
+
'lyra-render-error': CustomEvent<{
|
|
13
|
+
error: unknown;
|
|
14
|
+
}>;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Parses `.ics` calendars with the optional `ical.js` peer and renders each
|
|
18
|
+
* VEVENT as plain text, preserving summaries, times, locations, and details.
|
|
19
|
+
*
|
|
20
|
+
* @customElement lyra-calendar-viewer
|
|
21
|
+
* @event lyra-render-error - Fired when fetching or parsing the calendar fails.
|
|
22
|
+
* @csspart base - The root container.
|
|
23
|
+
* @csspart body - The scrollable calendar body.
|
|
24
|
+
* @csspart event-list - The event list.
|
|
25
|
+
* @csspart event - One calendar event.
|
|
26
|
+
* @csspart event-summary - The event title.
|
|
27
|
+
* @csspart event-time - The formatted event time.
|
|
28
|
+
* @csspart event-location - The event location.
|
|
29
|
+
* @csspart event-description - The event description.
|
|
30
|
+
* @csspart error - The error region.
|
|
31
|
+
* @csspart spinner - The loading region.
|
|
32
|
+
*/
|
|
33
|
+
export declare class LyraCalendarViewer extends LyraElement<LyraCalendarViewerEventMap> {
|
|
34
|
+
static styles: import("lit").CSSResultGroup[];
|
|
35
|
+
/** URL to fetch and parse as an iCalendar document. */
|
|
36
|
+
src: string;
|
|
37
|
+
/** Display name associated with the calendar. */
|
|
38
|
+
name: string;
|
|
39
|
+
/** CSS length that caps the scrollable event body. */
|
|
40
|
+
maxHeight: string;
|
|
41
|
+
private fetchState;
|
|
42
|
+
private generation;
|
|
43
|
+
protected willUpdate(changed: PropertyValues): void;
|
|
44
|
+
private load;
|
|
45
|
+
private parse;
|
|
46
|
+
private renderEvent;
|
|
47
|
+
private renderBody;
|
|
48
|
+
render(): TemplateResult;
|
|
49
|
+
}
|
|
50
|
+
declare global {
|
|
51
|
+
interface HTMLElementTagNameMap {
|
|
52
|
+
'lyra-calendar-viewer': LyraCalendarViewer;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=calendar-viewer.class.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar-viewer.class.d.ts","sourceRoot":"","sources":["../../../src/components/calendar-viewer/calendar-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;AAK7D,MAAM,WAAW,mBAAmB;IAAG,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,IAAI,GAAG,IAAI,CAAC;IAAC,GAAG,EAAE,IAAI,GAAG,IAAI,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;CAAE;AAEnJ,MAAM,WAAW,0BAA0B;IAAG,mBAAmB,EAAE,WAAW,CAAC;QAAE,KAAK,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CAAE;AAQrG;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,kBAAmB,SAAQ,WAAW,CAAC,0BAA0B,CAAC;IAC7E,MAAM,CAAC,MAAM,iCAAwC;IACrD,uDAAuD;IAC3C,GAAG,SAAM;IACrB,iDAAiD;IACrC,IAAI,SAAM;IACtB,sDAAsD;IACf,SAAS,SAAM;IAC7C,OAAO,CAAC,UAAU,CAAwC;IACnE,OAAO,CAAC,UAAU,CAAK;IAEvB,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAAkE;YAEvG,IAAI;YAkBJ,KAAK;IAiBnB,OAAO,CAAC,WAAW;IAInB,OAAO,CAAC,UAAU;IASlB,MAAM,IAAI,cAAc,CAA+K;CACxM;AAED,OAAO,CAAC,MAAM,CAAC;IAAE,UAAU,qBAAqB;QAAG,sBAAsB,EAAE,kBAAkB,CAAC;KAAE;CAAE"}
|
|
@@ -0,0 +1,123 @@
|
|
|
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 { srOnly } from '../../internal/a11y.js';
|
|
10
|
+
import { LyraElement } from '../../internal/lyra-element.js';
|
|
11
|
+
import { safeFetchUrl } from '../../internal/safe-url.js';
|
|
12
|
+
import { loadIcal } from './calendar-loader.js';
|
|
13
|
+
import { styles } from './calendar-viewer.styles.js';
|
|
14
|
+
function formatEventTime(start, end) {
|
|
15
|
+
if (!start)
|
|
16
|
+
return '';
|
|
17
|
+
const formatter = new Intl.DateTimeFormat(undefined, { dateStyle: 'medium', timeStyle: 'short' });
|
|
18
|
+
return end ? `${formatter.format(start)} – ${formatter.format(end)}` : formatter.format(start);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Parses `.ics` calendars with the optional `ical.js` peer and renders each
|
|
22
|
+
* VEVENT as plain text, preserving summaries, times, locations, and details.
|
|
23
|
+
*
|
|
24
|
+
* @customElement lyra-calendar-viewer
|
|
25
|
+
* @event lyra-render-error - Fired when fetching or parsing the calendar fails.
|
|
26
|
+
* @csspart base - The root container.
|
|
27
|
+
* @csspart body - The scrollable calendar body.
|
|
28
|
+
* @csspart event-list - The event list.
|
|
29
|
+
* @csspart event - One calendar event.
|
|
30
|
+
* @csspart event-summary - The event title.
|
|
31
|
+
* @csspart event-time - The formatted event time.
|
|
32
|
+
* @csspart event-location - The event location.
|
|
33
|
+
* @csspart event-description - The event description.
|
|
34
|
+
* @csspart error - The error region.
|
|
35
|
+
* @csspart spinner - The loading region.
|
|
36
|
+
*/
|
|
37
|
+
export class LyraCalendarViewer extends LyraElement {
|
|
38
|
+
constructor() {
|
|
39
|
+
super(...arguments);
|
|
40
|
+
/** URL to fetch and parse as an iCalendar document. */
|
|
41
|
+
this.src = '';
|
|
42
|
+
/** Display name associated with the calendar. */
|
|
43
|
+
this.name = '';
|
|
44
|
+
/** CSS length that caps the scrollable event body. */
|
|
45
|
+
this.maxHeight = '';
|
|
46
|
+
this.fetchState = { kind: 'idle' };
|
|
47
|
+
this.generation = 0;
|
|
48
|
+
}
|
|
49
|
+
static { this.styles = [LyraElement.styles, styles, srOnly]; }
|
|
50
|
+
willUpdate(changed) { if (!this.hasUpdated || changed.has('src'))
|
|
51
|
+
void this.load(); }
|
|
52
|
+
async load() {
|
|
53
|
+
const generation = ++this.generation;
|
|
54
|
+
if (!this.src) {
|
|
55
|
+
this.fetchState = { kind: 'idle' };
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
const url = safeFetchUrl(this.src);
|
|
59
|
+
if (!url) {
|
|
60
|
+
this.fetchState = { kind: 'error', message: this.localize('documentPreviewUrlNotAllowed') };
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
this.fetchState = { kind: 'loading' };
|
|
64
|
+
try {
|
|
65
|
+
const response = await fetch(url);
|
|
66
|
+
if (!response.ok)
|
|
67
|
+
throw new Error(`${response.status} ${response.statusText}`);
|
|
68
|
+
const events = await this.parse(await response.text());
|
|
69
|
+
if (generation === this.generation)
|
|
70
|
+
this.fetchState = { kind: 'loaded', events };
|
|
71
|
+
}
|
|
72
|
+
catch (error) {
|
|
73
|
+
if (generation !== this.generation)
|
|
74
|
+
return;
|
|
75
|
+
this.fetchState = { kind: 'error', message: error instanceof Error ? error.message : this.localize('documentPreviewFailedToLoad') };
|
|
76
|
+
this.emit('lyra-render-error', { error });
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
async parse(source) {
|
|
80
|
+
const ical = await loadIcal();
|
|
81
|
+
if (!ical)
|
|
82
|
+
throw new Error(this.localize('calendarViewerMissingParser'));
|
|
83
|
+
const component = new ical.Component(ical.parse(source));
|
|
84
|
+
const events = component.getAllSubcomponents('vevent').map((subcomponent) => {
|
|
85
|
+
const event = new ical.Event(subcomponent);
|
|
86
|
+
return {
|
|
87
|
+
uid: event.uid ?? '', summary: event.summary ?? '',
|
|
88
|
+
start: event.startDate ? event.startDate.toJSDate() : null,
|
|
89
|
+
end: event.endDate ? event.endDate.toJSDate() : null,
|
|
90
|
+
location: event.location ?? '', description: event.description ?? '',
|
|
91
|
+
};
|
|
92
|
+
});
|
|
93
|
+
if (!events.length)
|
|
94
|
+
throw new Error(this.localize('calendarViewerEmpty'));
|
|
95
|
+
return events;
|
|
96
|
+
}
|
|
97
|
+
renderEvent(event) {
|
|
98
|
+
return html `<li part="event"><span part="event-summary">${event.summary || this.localize('calendarViewerNoSummary')}</span><span part="event-time">${formatEventTime(event.start, event.end)}</span>${event.location ? html `<span part="event-location">${event.location}</span>` : nothing}${event.description ? html `<p part="event-description">${event.description}</p>` : nothing}</li>`;
|
|
99
|
+
}
|
|
100
|
+
renderBody() {
|
|
101
|
+
switch (this.fetchState.kind) {
|
|
102
|
+
case 'loaded': return html `<ul part="event-list">${this.fetchState.events.map((event) => this.renderEvent(event))}</ul>`;
|
|
103
|
+
case 'loading': return html `<div part="spinner" role="status"><span class="sr-only">${this.localize('loadingDocument')}</span></div>`;
|
|
104
|
+
case 'error': return html `<div part="error" role="alert">${this.fetchState.message}</div>`;
|
|
105
|
+
case 'idle':
|
|
106
|
+
default: return html `<p class="empty-note">${this.localize('documentPreviewEmpty', undefined, { type: this.localize('documentPreviewTypeCalendar') })}</p>`;
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
render() { return html `<div part="base" style=${this.maxHeight ? `--lyra-calendar-viewer-max-height:${this.maxHeight}` : nothing}><div part="body">${this.renderBody()}</div></div>`; }
|
|
110
|
+
}
|
|
111
|
+
__decorate([
|
|
112
|
+
property()
|
|
113
|
+
], LyraCalendarViewer.prototype, "src", void 0);
|
|
114
|
+
__decorate([
|
|
115
|
+
property()
|
|
116
|
+
], LyraCalendarViewer.prototype, "name", void 0);
|
|
117
|
+
__decorate([
|
|
118
|
+
property({ attribute: 'max-height' })
|
|
119
|
+
], LyraCalendarViewer.prototype, "maxHeight", void 0);
|
|
120
|
+
__decorate([
|
|
121
|
+
state()
|
|
122
|
+
], LyraCalendarViewer.prototype, "fetchState", void 0);
|
|
123
|
+
//# sourceMappingURL=calendar-viewer.class.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar-viewer.class.js","sourceRoot":"","sources":["../../../src/components/calendar-viewer/calendar-viewer.class.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAA4C,MAAM,KAAK,CAAC;AAC9E,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,MAAM,EAAE,MAAM,6BAA6B,CAAC;AAMrD,SAAS,eAAe,CAAC,KAAkB,EAAE,GAAgB;IAC3D,IAAI,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC;IACtB,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAC;IAClG,OAAO,GAAG,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACjG,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,kBAAmB,SAAQ,WAAuC;IAA/E;;QAEE,uDAAuD;QAC3C,QAAG,GAAG,EAAE,CAAC;QACrB,iDAAiD;QACrC,SAAI,GAAG,EAAE,CAAC;QACtB,sDAAsD;QACf,cAAS,GAAG,EAAE,CAAC;QACrC,eAAU,GAAuB,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;QAC3D,eAAU,GAAG,CAAC,CAAC;IAqDzB,CAAC;aA7DQ,WAAM,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,AAAvC,CAAwC;IAU3C,UAAU,CAAC,OAAuB,IAAU,IAAI,CAAC,IAAI,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;QAAE,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IAE7G,KAAK,CAAC,IAAI;QAChB,MAAM,UAAU,GAAG,EAAE,IAAI,CAAC,UAAU,CAAC;QACrC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAAC,IAAI,CAAC,UAAU,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YAAC,OAAO;QAAC,CAAC;QAC9D,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACnC,IAAI,CAAC,GAAG,EAAE,CAAC;YAAC,IAAI,CAAC,UAAU,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,8BAA8B,CAAC,EAAE,CAAC;YAAC,OAAO;QAAC,CAAC;QAClH,IAAI,CAAC,UAAU,GAAG,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;YAClC,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,GAAG,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;YAC/E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;YACvD,IAAI,UAAU,KAAK,IAAI,CAAC,UAAU;gBAAE,IAAI,CAAC,UAAU,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,UAAU,KAAK,IAAI,CAAC,UAAU;gBAAE,OAAO;YAC3C,IAAI,CAAC,UAAU,GAAG,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,6BAA6B,CAAC,EAAE,CAAC;YACpI,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,KAAK,CAAC,MAAc;QAChC,MAAM,IAAI,GAAG,MAAM,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,IAAI;YAAE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,6BAA6B,CAAC,CAAC,CAAC;QACzE,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;QACzD,MAAM,MAAM,GAAI,SAAS,CAAC,mBAAmB,CAAC,QAAQ,CAAe,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE;YACzF,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YAC3C,OAAO;gBACL,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,IAAI,EAAE;gBAClD,KAAK,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI;gBAC1D,GAAG,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,IAAI;gBACpD,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,WAAW,IAAI,EAAE;aAC9C,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,MAAM;YAAE,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,CAAC,CAAC;QAC1E,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,WAAW,CAAC,KAA0B;QAC5C,OAAO,IAAI,CAAA,+CAA+C,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,yBAAyB,CAAC,kCAAkC,eAAe,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,UAAU,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAA,+BAA+B,KAAK,CAAC,QAAQ,SAAS,CAAC,CAAC,CAAC,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAA,+BAA+B,KAAK,CAAC,WAAW,MAAM,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC;IAChY,CAAC;IAEO,UAAU;QAChB,QAAQ,IAAI,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;YAC7B,KAAK,QAAQ,EAAE,OAAO,IAAI,CAAA,yBAAyB,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC;YACzH,KAAK,SAAS,EAAE,OAAO,IAAI,CAAA,2DAA2D,IAAI,CAAC,QAAQ,CAAC,iBAAiB,CAAC,eAAe,CAAC;YACtI,KAAK,OAAO,EAAE,OAAO,IAAI,CAAA,kCAAkC,IAAI,CAAC,UAAU,CAAC,OAAO,QAAQ,CAAC;YAC3F,KAAK,MAAM,CAAC;YAAC,SAAS,OAAO,IAAI,CAAA,yBAAyB,IAAI,CAAC,QAAQ,CAAC,sBAAsB,EAAE,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,6BAA6B,CAAC,EAAE,CAAC,MAAM,CAAC;QAC3K,CAAC;IACH,CAAC;IAED,MAAM,KAAqB,OAAO,IAAI,CAAA,0BAA0B,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,qCAAqC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,OAAO,qBAAqB,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC,CAAC;CACxM;AA3Da;IAAX,QAAQ,EAAE;+CAAU;AAET;IAAX,QAAQ,EAAE;gDAAW;AAEiB;IAAtC,QAAQ,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;qDAAgB;AACrC;IAAhB,KAAK,EAAE;sDAA2D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar-viewer.d.ts","sourceRoot":"","sources":["../../../src/components/calendar-viewer/calendar-viewer.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export * from './calendar-loader.js';
|
|
2
|
+
export * from './calendar-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 { LyraCalendarViewer } from './calendar-viewer.class.js';
|
|
7
|
+
defineElement('calendar-viewer', LyraCalendarViewer);
|
|
8
|
+
registerDocumentRenderer('text/calendar', {
|
|
9
|
+
matches: (file) => file.name.toLowerCase().endsWith('.ics'),
|
|
10
|
+
render: (file) => html `<lyra-calendar-viewer src=${file.src} name=${file.name}></lyra-calendar-viewer>`,
|
|
11
|
+
});
|
|
12
|
+
//# sourceMappingURL=calendar-viewer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar-viewer.js","sourceRoot":"","sources":["../../../src/components/calendar-viewer/calendar-viewer.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,4BAA4B,CAAC;AAC3C,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,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,aAAa,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,CAAC;AACrD,wBAAwB,CAAC,eAAe,EAAE;IACxC,OAAO,EAAE,CAAC,IAAkB,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC;IACzE,MAAM,EAAE,CAAC,IAAkB,EAAE,EAAE,CAAC,IAAI,CAAA,6BAA6B,IAAI,CAAC,GAAG,SAAS,IAAI,CAAC,IAAI,0BAA0B;CACtH,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar-viewer.styles.d.ts","sourceRoot":"","sources":["../../../src/components/calendar-viewer/calendar-viewer.styles.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,MAAM,yBAalB,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { css } from 'lit';
|
|
2
|
+
export const styles = css `
|
|
3
|
+
:host { display: block; --lyra-calendar-viewer-max-height: none; }
|
|
4
|
+
[part='base'] { display: flex; flex-direction: column; box-sizing: border-box; border: var(--lyra-border-width-thin) solid var(--lyra-color-border); border-radius: var(--lyra-radius); background: var(--lyra-color-surface); overflow: hidden; }
|
|
5
|
+
[part='body'] { box-sizing: border-box; max-block-size: var(--lyra-calendar-viewer-max-height); overflow: auto; }
|
|
6
|
+
[part='event-list'] { display: flex; flex-direction: column; margin: 0; padding: 0; list-style: none; }
|
|
7
|
+
[part='event'] { display: flex; flex-direction: column; gap: var(--lyra-space-2xs); padding: var(--lyra-space-m); border-block-end: var(--lyra-border-width-thin) solid var(--lyra-color-border); }
|
|
8
|
+
[part='event']:last-child { border-block-end: none; }
|
|
9
|
+
[part='event-summary'] { font-weight: var(--lyra-font-weight-semibold); font-size: var(--lyra-font-size-md); }
|
|
10
|
+
[part='event-time'], [part='event-location'] { color: var(--lyra-color-text-quiet); font-size: var(--lyra-font-size-sm); }
|
|
11
|
+
[part='event-description'] { margin: 0; color: var(--lyra-color-text); font-size: var(--lyra-font-size-md-sm); line-height: var(--lyra-line-height-normal); white-space: pre-wrap; overflow-wrap: anywhere; }
|
|
12
|
+
.empty-note { margin: 0; padding: var(--lyra-space-m); color: var(--lyra-color-text-quiet); font-size: var(--lyra-font-size-md-sm); }
|
|
13
|
+
[part='error'] { margin: 0; padding: var(--lyra-space-l); color: var(--lyra-color-danger); font-size: var(--lyra-font-size-md-sm); text-align: center; }
|
|
14
|
+
[part='spinner'] { display: flex; justify-content: center; padding: var(--lyra-space-l); }
|
|
15
|
+
`;
|
|
16
|
+
//# sourceMappingURL=calendar-viewer.styles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calendar-viewer.styles.js","sourceRoot":"","sources":["../../../src/components/calendar-viewer/calendar-viewer.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,KAAK,CAAC;AAE1B,MAAM,CAAC,MAAM,MAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;CAaxB,CAAC"}
|
|
@@ -87,6 +87,8 @@ export declare class LyraCodeBlockCore extends LyraElement<LyraCodeBlockCoreEven
|
|
|
87
87
|
/** A CSS length (e.g. `"20rem"`); once set, the code scrolls internally
|
|
88
88
|
* past this height instead of growing the page. */
|
|
89
89
|
maxHeight: string;
|
|
90
|
+
/** Whether to display one-based line numbers beside the code. */
|
|
91
|
+
lineNumbers: boolean;
|
|
90
92
|
/** Grammar definitions this instance can highlight, e.g. `{ json: jsonGrammar }` (import from
|
|
91
93
|
* `shiki/langs/<name>.mjs`). This component has no default/full-table fallback highlighter --
|
|
92
94
|
* a `language` absent from this map always renders the plain-text fallback. Empty (the
|
|
@@ -106,6 +108,7 @@ export declare class LyraCodeBlockCore extends LyraElement<LyraCodeBlockCoreEven
|
|
|
106
108
|
protected updated(): void;
|
|
107
109
|
private syncHighlight;
|
|
108
110
|
private tokenize;
|
|
111
|
+
private renderPlainCode;
|
|
109
112
|
private writeClipboard;
|
|
110
113
|
private copy;
|
|
111
114
|
private toggleCollapsed;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-block-core.class.d.ts","sourceRoot":"","sources":["../../../src/components/code-block/code-block-core.class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAG9E,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAI7D,OAAO,
|
|
1
|
+
{"version":3,"file":"code-block-core.class.d.ts","sourceRoot":"","sources":["../../../src/components/code-block/code-block-core.class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAG9E,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAI7D,OAAO,EAKL,KAAK,kBAAkB,EACxB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,+BAA+B,CAAC;AAsCvC,MAAM,WAAW,yBAAyB;IACxC,WAAW,EAAE,WAAW,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3C,aAAa,EAAE,WAAW,CAAC;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACpD;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG;AACH,qBAAa,iBAAkB,SAAQ,WAAW,CAAC,yBAAyB,CAAC;IAC3E,MAAM,CAAC,MAAM,iCAAgC;IAE7C,2BAA2B;IACf,IAAI,SAAM;IAEtB;;;2EAGuE;IAC3D,QAAQ,SAAM;IAE1B,oDAAoD;IACxC,QAAQ,SAAM;IAE1B;;uCAEmC;IACI,eAAe,SAAM;IAE5D,oEAAoE;IACxB,WAAW,UAAS;IAEhE;4CACwC;IACI,SAAS,UAAS;IAE9D,sDAAsD;IACV,QAAQ,UAAQ;IAE5D;wDACoD;IACb,SAAS,SAAM;IAEtD,iEAAiE;IACM,WAAW,UAAS;IAE3F;;;4CAGwC;IACR,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAM;IAO1E,OAAO,CAAC,eAAe,CAAuB;IAK9C,OAAO,CAAC,UAAU,CAAS;IAE3B,OAAO,CAAC,UAAU,CAAS;IAEpC,OAAO,CAAC,WAAW,CAAC,CAA8B;IAKlD,OAAO,CAAC,cAAc,CAAK;IAE3B,OAAO,CAAC,aAAa,CAAC,CAAgC;IAEtD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6B;IAEpD,iBAAiB,IAAI,IAAI,CAQxB;IAED,oBAAoB,IAAI,IAAI,CAG3B;IAKD,OAAO,CAAC,kBAAkB;IAU1B,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAKlD;IAED,SAAS,CAAC,OAAO,IAAI,IAAI,CAIxB;IAED,OAAO,CAAC,aAAa;IA0CrB,OAAO,CAAC,QAAQ;IAoBhB,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,IAAI,CAQV;IAEF,OAAO,CAAC,eAAe,CAGrB;IAEF,OAAO,CAAC,YAAY;IA4CpB,MAAM,IAAI,cAAc,CA2BvB;CACF;AAGD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,sBAAsB,EAAE,iBAAiB,CAAC;KAC3C;CACF"}
|
|
@@ -10,7 +10,7 @@ import { unsafeHTML } from 'lit/directives/unsafe-html.js';
|
|
|
10
10
|
import { LyraElement } from '../../internal/lyra-element.js';
|
|
11
11
|
import { nextId } from '../../internal/a11y.js';
|
|
12
12
|
import { chevronIcon } from '../../internal/icons.js';
|
|
13
|
-
import { loadShikiHighlighterCore, SHIKI_THEMES } from './code-loader.js';
|
|
13
|
+
import { loadShikiHighlighterCore, normalizeShikiLanguage, SHIKI_THEMES, } from './code-loader.js';
|
|
14
14
|
import { styles } from './code-block.styles.js';
|
|
15
15
|
import { codeBlockToggleLabel, codeBlockCopyLabel, codeBlockBodyLabel } from './code-block-shared.js';
|
|
16
16
|
import '../skeleton/skeleton.class.js';
|
|
@@ -28,16 +28,26 @@ const COPY_CONFIRM_MS = 1500;
|
|
|
28
28
|
* tabindex in place would add a second, redundant tab stop over the same
|
|
29
29
|
* scrollable content.
|
|
30
30
|
*/
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
node
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
31
|
+
function partTransformer(lineNumbers) {
|
|
32
|
+
return {
|
|
33
|
+
name: 'lyra-code-block-parts',
|
|
34
|
+
pre(node) {
|
|
35
|
+
node.properties.part = ['pre'];
|
|
36
|
+
if (lineNumbers) {
|
|
37
|
+
const classes = Array.isArray(node.properties.class)
|
|
38
|
+
? node.properties.class
|
|
39
|
+
: node.properties.class
|
|
40
|
+
? [node.properties.class]
|
|
41
|
+
: [];
|
|
42
|
+
node.properties.class = [...classes, 'line-numbers'];
|
|
43
|
+
}
|
|
44
|
+
delete node.properties.tabindex;
|
|
45
|
+
},
|
|
46
|
+
code(node) {
|
|
47
|
+
node.properties.part = ['code'];
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
}
|
|
41
51
|
/**
|
|
42
52
|
* `<lyra-code-block-core>` — a build-lean variant of `<lyra-code-block>` for
|
|
43
53
|
* a consumer whose `languages` map already covers every language it will
|
|
@@ -116,6 +126,8 @@ export class LyraCodeBlockCore extends LyraElement {
|
|
|
116
126
|
/** A CSS length (e.g. `"20rem"`); once set, the code scrolls internally
|
|
117
127
|
* past this height instead of growing the page. */
|
|
118
128
|
this.maxHeight = '';
|
|
129
|
+
/** Whether to display one-based line numbers beside the code. */
|
|
130
|
+
this.lineNumbers = false;
|
|
119
131
|
/** Grammar definitions this instance can highlight, e.g. `{ json: jsonGrammar }` (import from
|
|
120
132
|
* `shiki/langs/<name>.mjs`). This component has no default/full-table fallback highlighter --
|
|
121
133
|
* a `language` absent from this map always renders the plain-text fallback. Empty (the
|
|
@@ -170,7 +182,8 @@ export class LyraCodeBlockCore extends LyraElement {
|
|
|
170
182
|
// `willUpdate()`/`updated()`/`render()`/`syncHighlight()` so they all agree
|
|
171
183
|
// on whether this language is highlightable at all.
|
|
172
184
|
preSuppliedGrammar() {
|
|
173
|
-
|
|
185
|
+
const language = normalizeShikiLanguage(this.language);
|
|
186
|
+
return this.languages?.[language] ?? this.languages?.[this.language];
|
|
174
187
|
}
|
|
175
188
|
// Mutating `highlightedHtml` here (rather than in `updated()`) absorbs the
|
|
176
189
|
// synchronous case -- language already loaded, see `syncHighlight()` --
|
|
@@ -199,13 +212,13 @@ export class LyraCodeBlockCore extends LyraElement {
|
|
|
199
212
|
// after a newer call has already rendered correct synchronous output,
|
|
200
213
|
// and overwrite it with stale tokenization.
|
|
201
214
|
const token = ++this.highlightToken;
|
|
202
|
-
const lang = this.language;
|
|
215
|
+
const lang = normalizeShikiLanguage(this.language);
|
|
203
216
|
if (!lang) {
|
|
204
217
|
this.highlightedHtml = null;
|
|
205
218
|
return;
|
|
206
219
|
}
|
|
207
220
|
const languages = this.languages;
|
|
208
|
-
if (!languages?.[lang]) {
|
|
221
|
+
if (!languages?.[lang] && !languages?.[this.language]) {
|
|
209
222
|
// Not in the supplied languages map -- there is no default
|
|
210
223
|
// highlighter to fall back to in this variant, so this always
|
|
211
224
|
// renders the plain-text fallback, unlike <lyra-code-block>'s
|
|
@@ -242,7 +255,7 @@ export class LyraCodeBlockCore extends LyraElement {
|
|
|
242
255
|
// a --lyra-* token. See the dark-mode override in
|
|
243
256
|
// code-block.styles.ts for how the dark half of this activates.
|
|
244
257
|
themes: SHIKI_THEMES,
|
|
245
|
-
transformers: [partTransformer],
|
|
258
|
+
transformers: [partTransformer(this.lineNumbers)],
|
|
246
259
|
});
|
|
247
260
|
}
|
|
248
261
|
catch {
|
|
@@ -251,6 +264,15 @@ export class LyraCodeBlockCore extends LyraElement {
|
|
|
251
264
|
return null;
|
|
252
265
|
}
|
|
253
266
|
}
|
|
267
|
+
renderPlainCode() {
|
|
268
|
+
if (!this.lineNumbers)
|
|
269
|
+
return html `<code part="code">${this.code}</code>`;
|
|
270
|
+
return html `
|
|
271
|
+
<code part="code" class="line-numbered-code">
|
|
272
|
+
${this.code.split(/\r\n|\r|\n/).map((line) => html `<span class="line">${line}</span>`)}
|
|
273
|
+
</code>
|
|
274
|
+
`;
|
|
275
|
+
}
|
|
254
276
|
writeClipboard(text) {
|
|
255
277
|
try {
|
|
256
278
|
// navigator.clipboard is absent in insecure contexts / older browsers,
|
|
@@ -328,7 +350,7 @@ export class LyraCodeBlockCore extends LyraElement {
|
|
|
328
350
|
? html `<lyra-skeleton variant="rect"></lyra-skeleton>`
|
|
329
351
|
: this.highlightedHtml !== null
|
|
330
352
|
? unsafeHTML(this.highlightedHtml)
|
|
331
|
-
: html `<pre part="pre"
|
|
353
|
+
: html `<pre part="pre" class=${this.lineNumbers ? 'line-numbers' : nothing}>${this.renderPlainCode()}</pre>`}
|
|
332
354
|
</div>
|
|
333
355
|
</div>
|
|
334
356
|
`;
|
|
@@ -358,6 +380,9 @@ __decorate([
|
|
|
358
380
|
__decorate([
|
|
359
381
|
property({ attribute: 'max-height' })
|
|
360
382
|
], LyraCodeBlockCore.prototype, "maxHeight", void 0);
|
|
383
|
+
__decorate([
|
|
384
|
+
property({ type: Boolean, attribute: 'line-numbers', reflect: true })
|
|
385
|
+
], LyraCodeBlockCore.prototype, "lineNumbers", void 0);
|
|
361
386
|
__decorate([
|
|
362
387
|
property({ attribute: false })
|
|
363
388
|
], LyraCodeBlockCore.prototype, "languages", void 0);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-block-core.class.js","sourceRoot":"","sources":["../../../src/components/code-block/code-block-core.class.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAE,IAAI,EAAE,OAAO,EAA4C,MAAM,KAAK,CAAC;AAC9E,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,+BAA+B,CAAC;AAC3D,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAEtD,OAAO,
|
|
1
|
+
{"version":3,"file":"code-block-core.class.js","sourceRoot":"","sources":["../../../src/components/code-block/code-block-core.class.ts"],"names":[],"mappings":"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"}
|
|
@@ -105,6 +105,8 @@ export declare class LyraCodeBlock extends LyraElement<LyraCodeBlockEventMap> {
|
|
|
105
105
|
/** A CSS length (e.g. `"20rem"`); once set, the code scrolls internally
|
|
106
106
|
* past this height instead of growing the page. */
|
|
107
107
|
maxHeight: string;
|
|
108
|
+
/** Whether to display one-based line numbers beside the code. */
|
|
109
|
+
lineNumbers: boolean;
|
|
108
110
|
/** A map of language id to an already-imported shiki grammar module's
|
|
109
111
|
* default export (e.g. `{ bash: bashGrammar }` where `bashGrammar` came
|
|
110
112
|
* from a module-scope `import bash from 'shiki/langs/bash.mjs'`). When
|
|
@@ -139,6 +141,7 @@ export declare class LyraCodeBlock extends LyraElement<LyraCodeBlockEventMap> {
|
|
|
139
141
|
protected updated(): void;
|
|
140
142
|
private syncHighlight;
|
|
141
143
|
private tokenize;
|
|
144
|
+
private renderPlainCode;
|
|
142
145
|
private writeClipboard;
|
|
143
146
|
private copy;
|
|
144
147
|
private toggleCollapsed;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"code-block.class.d.ts","sourceRoot":"","sources":["../../../src/components/code-block/code-block.class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAG9E,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAI7D,OAAO,
|
|
1
|
+
{"version":3,"file":"code-block.class.d.ts","sourceRoot":"","sources":["../../../src/components/code-block/code-block.class.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAG9E,OAAO,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAI7D,OAAO,EAQL,KAAK,kBAAkB,EACxB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,+BAA+B,CAAC;AAsCvC,MAAM,WAAW,qBAAqB;IACpC,WAAW,EAAE,WAAW,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC3C,aAAa,EAAE,WAAW,CAAC;QAAE,SAAS,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;CACpD;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqEG;AACH,qBAAa,aAAc,SAAQ,WAAW,CAAC,qBAAqB,CAAC;IACnE,MAAM,CAAC,MAAM,iCAAgC;IAE7C,2BAA2B;IACf,IAAI,SAAM;IAEtB;;;qCAGiC;IACrB,QAAQ,SAAM;IAE1B,oDAAoD;IACxC,QAAQ,SAAM;IAE1B;;uCAEmC;IACI,eAAe,SAAM;IAE5D,oEAAoE;IACxB,WAAW,UAAS;IAEhE;4CACwC;IACI,SAAS,UAAS;IAE9D,sDAAsD;IACV,QAAQ,UAAQ;IAE5D;wDACoD;IACb,SAAS,SAAM;IAEtD,iEAAiE;IACM,WAAW,UAAS;IAE3F;;;;;;;;;;8DAU0D;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;IAE/E;;;;;;iDAM6C;IACa,aAAa,UAAS;IAMvE,OAAO,CAAC,eAAe,CAAuB;IAK9C,OAAO,CAAC,UAAU,CAAS;IAE3B,OAAO,CAAC,UAAU,CAAS;IAEpC,OAAO,CAAC,WAAW,CAAC,CAA0B;IAK9C,OAAO,CAAC,cAAc,CAAK;IAE3B,OAAO,CAAC,aAAa,CAAC,CAAgC;IAEtD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6B;IAEpD,iBAAiB,IAAI,IAAI,CAQxB;IAED,oBAAoB,IAAI,IAAI,CAG3B;IAMD,OAAO,CAAC,kBAAkB;IAU1B,SAAS,CAAC,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI,CAWlD;IAED,SAAS,CAAC,OAAO,IAAI,IAAI,CAOxB;IAED,OAAO,CAAC,aAAa;IA6CrB,OAAO,CAAC,QAAQ;IAoBhB,OAAO,CAAC,eAAe;IASvB,OAAO,CAAC,cAAc;IAatB,OAAO,CAAC,IAAI,CAQV;IAEF,OAAO,CAAC,eAAe,CAGrB;IAEF,OAAO,CAAC,YAAY;IA4CpB,MAAM,IAAI,cAAc,CA4BvB;CACF;AAGD,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,iBAAiB,EAAE,aAAa,CAAC;KAClC;CACF"}
|
|
@@ -10,7 +10,7 @@ import { unsafeHTML } from 'lit/directives/unsafe-html.js';
|
|
|
10
10
|
import { LyraElement } from '../../internal/lyra-element.js';
|
|
11
11
|
import { nextId } from '../../internal/a11y.js';
|
|
12
12
|
import { chevronIcon } from '../../internal/icons.js';
|
|
13
|
-
import { loadShikiHighlighter, loadShikiLanguage, loadShikiHighlighterCore, SHIKI_THEMES, } from './code-loader.js';
|
|
13
|
+
import { loadShikiHighlighter, loadShikiLanguage, loadShikiHighlighterCore, normalizeShikiLanguage, SHIKI_THEMES, } from './code-loader.js';
|
|
14
14
|
import { styles } from './code-block.styles.js';
|
|
15
15
|
import { codeBlockToggleLabel, codeBlockCopyLabel, codeBlockBodyLabel } from './code-block-shared.js';
|
|
16
16
|
import '../skeleton/skeleton.class.js';
|
|
@@ -28,16 +28,26 @@ const COPY_CONFIRM_MS = 1500;
|
|
|
28
28
|
* tabindex in place would add a second, redundant tab stop over the same
|
|
29
29
|
* scrollable content.
|
|
30
30
|
*/
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
node
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
31
|
+
function partTransformer(lineNumbers) {
|
|
32
|
+
return {
|
|
33
|
+
name: 'lyra-code-block-parts',
|
|
34
|
+
pre(node) {
|
|
35
|
+
node.properties.part = ['pre'];
|
|
36
|
+
if (lineNumbers) {
|
|
37
|
+
const classes = Array.isArray(node.properties.class)
|
|
38
|
+
? node.properties.class
|
|
39
|
+
: node.properties.class
|
|
40
|
+
? [node.properties.class]
|
|
41
|
+
: [];
|
|
42
|
+
node.properties.class = [...classes, 'line-numbers'];
|
|
43
|
+
}
|
|
44
|
+
delete node.properties.tabindex;
|
|
45
|
+
},
|
|
46
|
+
code(node) {
|
|
47
|
+
node.properties.part = ['code'];
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
}
|
|
41
51
|
/**
|
|
42
52
|
* `<lyra-code-block>` — fenced code display with optional lazy syntax
|
|
43
53
|
* highlighting and a copy button. No highlighting grammar ships in this
|
|
@@ -134,6 +144,8 @@ export class LyraCodeBlock extends LyraElement {
|
|
|
134
144
|
/** A CSS length (e.g. `"20rem"`); once set, the code scrolls internally
|
|
135
145
|
* past this height instead of growing the page. */
|
|
136
146
|
this.maxHeight = '';
|
|
147
|
+
/** Whether to display one-based line numbers beside the code. */
|
|
148
|
+
this.lineNumbers = false;
|
|
137
149
|
/** When `true`, skips the default `loadShikiHighlighter()` call in `connectedCallback()`
|
|
138
150
|
* entirely — for a consumer whose `languages` map already covers every language every instance
|
|
139
151
|
* will ever render, so the bundler has no reachable path from this component to shiki's
|
|
@@ -191,7 +203,8 @@ export class LyraCodeBlock extends LyraElement {
|
|
|
191
203
|
// on whether this render is taking the fine-grained `languages` path or
|
|
192
204
|
// the default `loadShikiHighlighter()` one.
|
|
193
205
|
preSuppliedGrammar() {
|
|
194
|
-
|
|
206
|
+
const language = normalizeShikiLanguage(this.language);
|
|
207
|
+
return this.languages?.[language] ?? this.languages?.[this.language];
|
|
195
208
|
}
|
|
196
209
|
// Mutating `highlightedHtml` here (rather than in `updated()`) absorbs the
|
|
197
210
|
// synchronous case -- language already loaded, see `syncHighlight()` --
|
|
@@ -229,13 +242,13 @@ export class LyraCodeBlock extends LyraElement {
|
|
|
229
242
|
// after a newer call has already rendered correct synchronous output,
|
|
230
243
|
// and overwrite it with stale tokenization.
|
|
231
244
|
const token = ++this.highlightToken;
|
|
232
|
-
const lang = this.language;
|
|
245
|
+
const lang = normalizeShikiLanguage(this.language);
|
|
233
246
|
if (!lang) {
|
|
234
247
|
this.highlightedHtml = null;
|
|
235
248
|
return;
|
|
236
249
|
}
|
|
237
250
|
const languages = this.languages;
|
|
238
|
-
if (languages?.[lang]) {
|
|
251
|
+
if (languages?.[lang] ?? languages?.[this.language]) {
|
|
239
252
|
// Fine-grained opt-in path -- entirely separate from `this.highlighter`
|
|
240
253
|
// below, see `loadShikiHighlighterCore()`'s doc comment for why.
|
|
241
254
|
this.highlightedHtml = null;
|
|
@@ -276,7 +289,7 @@ export class LyraCodeBlock extends LyraElement {
|
|
|
276
289
|
// a --lyra-* token. See the dark-mode override in
|
|
277
290
|
// code-block.styles.ts for how the dark half of this activates.
|
|
278
291
|
themes: SHIKI_THEMES,
|
|
279
|
-
transformers: [partTransformer],
|
|
292
|
+
transformers: [partTransformer(this.lineNumbers)],
|
|
280
293
|
});
|
|
281
294
|
}
|
|
282
295
|
catch {
|
|
@@ -285,6 +298,15 @@ export class LyraCodeBlock extends LyraElement {
|
|
|
285
298
|
return null;
|
|
286
299
|
}
|
|
287
300
|
}
|
|
301
|
+
renderPlainCode() {
|
|
302
|
+
if (!this.lineNumbers)
|
|
303
|
+
return html `<code part="code">${this.code}</code>`;
|
|
304
|
+
return html `
|
|
305
|
+
<code part="code" class="line-numbered-code">
|
|
306
|
+
${this.code.split(/\r\n|\r|\n/).map((line) => html `<span class="line">${line}</span>`)}
|
|
307
|
+
</code>
|
|
308
|
+
`;
|
|
309
|
+
}
|
|
288
310
|
writeClipboard(text) {
|
|
289
311
|
try {
|
|
290
312
|
// navigator.clipboard is absent in insecure contexts / older browsers,
|
|
@@ -363,7 +385,7 @@ export class LyraCodeBlock extends LyraElement {
|
|
|
363
385
|
? html `<lyra-skeleton variant="rect"></lyra-skeleton>`
|
|
364
386
|
: this.highlightedHtml !== null
|
|
365
387
|
? unsafeHTML(this.highlightedHtml)
|
|
366
|
-
: html `<pre part="pre"
|
|
388
|
+
: html `<pre part="pre" class=${this.lineNumbers ? 'line-numbers' : nothing}>${this.renderPlainCode()}</pre>`}
|
|
367
389
|
</div>
|
|
368
390
|
</div>
|
|
369
391
|
`;
|
|
@@ -393,6 +415,9 @@ __decorate([
|
|
|
393
415
|
__decorate([
|
|
394
416
|
property({ attribute: 'max-height' })
|
|
395
417
|
], LyraCodeBlock.prototype, "maxHeight", void 0);
|
|
418
|
+
__decorate([
|
|
419
|
+
property({ type: Boolean, attribute: 'line-numbers', reflect: true })
|
|
420
|
+
], LyraCodeBlock.prototype, "lineNumbers", void 0);
|
|
396
421
|
__decorate([
|
|
397
422
|
property({ attribute: false })
|
|
398
423
|
], LyraCodeBlock.prototype, "languages", void 0);
|