@leavepulse/ui 0.82.0 → 0.83.1
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/dist/assets/LpVideoTrim-BcGs3Sh0.css +8 -0
- package/dist/assets/VideoFlash-VuPkC7QV.css +23 -0
- package/dist/chunks/{ContextMenuItems-kRVTuSZd.js → ContextMenuItems-h-apPY2d.js} +1 -1
- package/dist/chunks/{DropzoneLinkField-CvMUu8HQ.js → DropzoneLinkField-_Op8b_ee.js} +1 -1
- package/dist/chunks/{FieldLeading-CNN_5Dp1.js → FieldLeading-mOMcwNqi.js} +1 -1
- package/dist/chunks/{FieldWrapper-BBJPEVHr.js → FieldWrapper-DtT-AIcn.js} +1 -1
- package/dist/chunks/{IconCloseButton-C59_etp2.js → IconCloseButton-YmisskyZ.js} +1 -1
- package/dist/chunks/{LayoutCanvas-BIY74SUe.js → LayoutCanvas-BrISZEBr.js} +1 -1
- package/dist/chunks/{LayoutNode-CTlKlhb-.js → LayoutNode-CwMQ8ACa.js} +1 -1
- package/dist/chunks/{LpActionBar-Cowb-28D.js → LpActionBar-CVVC6YbC.js} +1 -1
- package/dist/chunks/{LpAddressInput-nTJlUQ6K.js → LpAddressInput-tiuJ-bru.js} +7 -7
- package/dist/chunks/{LpAlert-DhZdjekN.js → LpAlert-8-x4H_Nk.js} +1 -1
- package/dist/chunks/{LpAppShell-CK9hTgQ1.js → LpAppShell-BW2YMq-A.js} +4 -4
- package/dist/chunks/{LpAutocomplete--PaZkQoU.js → LpAutocomplete-BZODIops.js} +4 -4
- package/dist/chunks/{LpAvatar-DVCld_L2.js → LpAvatar-BZq4nH53.js} +1 -1
- package/dist/chunks/{LpBadge-DXvpxk6z.js → LpBadge-Cz0pSSUu.js} +1 -1
- package/dist/chunks/{LpBottomNav-COQiBNUN.js → LpBottomNav-DVdR5Mry.js} +1 -1
- package/dist/chunks/{LpBreadcrumbs-Dt1O5G4O.js → LpBreadcrumbs-B2jphAel.js} +1 -1
- package/dist/chunks/{LpCalendar-C8Xlukd2.js → LpCalendar-C0_N5LVT.js} +1 -1
- package/dist/chunks/{LpCheckbox-Dpybd3oV.js → LpCheckbox-CwqLNdw4.js} +2 -2
- package/dist/chunks/{LpCodeBlock-C1Hu5RyT.js → LpCodeBlock-Dcss6bnl.js} +2 -2
- package/dist/chunks/{LpCodeDisplay-BVruT3-A.js → LpCodeDisplay-CLms1zDY.js} +4 -4
- package/dist/chunks/{LpColorPicker-BK-NRaGK.js → LpColorPicker-CbIY450X.js} +3 -3
- package/dist/chunks/{LpConfirmDialog-2CQFKtqU.js → LpConfirmDialog-RmP4z6va.js} +2 -2
- package/dist/chunks/{LpConfirmHost-CTkSytVl.js → LpConfirmHost-DheBgRMB.js} +1 -1
- package/dist/chunks/{LpContextMenu-DcHPdW-t.js → LpContextMenu-DIYhlap8.js} +2 -2
- package/dist/chunks/{LpContextSwitcher-C_nnDbeI.js → LpContextSwitcher-fDA6ERl-.js} +2 -2
- package/dist/chunks/{LpCopyButton-De7_elaO.js → LpCopyButton-DSqKFGEb.js} +1 -1
- package/dist/chunks/{LpDataList-BjZPfQjO.js → LpDataList-f9UjSx9m.js} +2 -2
- package/dist/chunks/{LpDatePicker-wOrHd0fg.js → LpDatePicker-3kDQLVbg.js} +5 -5
- package/dist/chunks/{LpDateRangePicker-CVMvvo5t.js → LpDateRangePicker-DUPiTt0_.js} +3 -3
- package/dist/chunks/{LpDisclosure-CtQ63LeO.js → LpDisclosure-C5WZjhbQ.js} +1 -1
- package/dist/chunks/{LpDrawer-TZBPzyOM.js → LpDrawer-CkYvIGIa.js} +1 -1
- package/dist/chunks/{LpDropdownMenu-DL9LgkS8.js → LpDropdownMenu-zSsK2Xra.js} +6 -3
- package/dist/chunks/{LpEditable-DuPE2tkl.js → LpEditable-CP7Y_lKg.js} +2 -2
- package/dist/chunks/{LpEmptyState-W1U_tKg-.js → LpEmptyState-dsc5x-ya.js} +1 -1
- package/dist/chunks/{LpFieldNotice-BLKlYLwu.js → LpFieldNotice-TOTbWvgv.js} +1 -1
- package/dist/chunks/{LpFileTree-CEiRIpj1.js → LpFileTree-BPjnOTln.js} +4 -4
- package/dist/chunks/{LpFileTreeNode-C0292AU2.js → LpFileTreeNode-_-MiWmie.js} +4 -4
- package/dist/chunks/{LpFormField-Bhgi0idH.js → LpFormField-BJwD1iEF.js} +1 -1
- package/dist/chunks/{LpHintLayer-D8ZKsvsT.js → LpHintLayer-CmfGnxYu.js} +1 -1
- package/dist/chunks/{LpHints-DbIV-wk4.js → LpHints-C2Xvc1Fd.js} +3 -3
- package/dist/chunks/{LpIcon-CytpcLmS.js → LpIcon-CoOLz1oJ.js} +1 -1
- package/dist/chunks/{LpInfraNode-8cGoY87Q.js → LpInfraNode-CW3qsM-U.js} +2 -2
- package/dist/chunks/{LpInput-P2C12X7s.js → LpInput-BVWhkPuN.js} +3 -3
- package/dist/chunks/{LpInspector-DjfMa4tD.js → LpInspector-REmoX_es.js} +4 -4
- package/dist/chunks/{LpLightbox-BEQtCz0m.js → LpLightbox-C3FFTYP5.js} +65 -20
- package/dist/chunks/{LpLogInspector-CyxK1d-V.js → LpLogInspector-Cs8Z_fM0.js} +2 -2
- package/dist/chunks/{LpLogViewer-CZrc_HG7.js → LpLogViewer-DQRGe-ZK.js} +6 -6
- package/dist/chunks/{LpMapPicker-CbTfFcEu.js → LpMapPicker-CQnQPgKm.js} +1 -1
- package/dist/chunks/{LpMediaGallery-C_SwNR4y.js → LpMediaGallery-DkKqTy9P.js} +20 -8
- package/dist/chunks/{LpModal-B6Yt0G7E.js → LpModal-DwejR7VP.js} +1 -1
- package/dist/chunks/{LpModalNav-CMYWEiUs.js → LpModalNav-D1-dSe6f.js} +3 -3
- package/dist/chunks/{LpNotificationBell-BJKPx0X1.js → LpNotificationBell-EKLkN0sp.js} +4 -4
- package/dist/chunks/{LpNotificationFeed-orWISVez.js → LpNotificationFeed-Dc-yQ4NH.js} +4 -4
- package/dist/chunks/{LpNumberField-C5MeLsoE.js → LpNumberField-DvUjEMp-.js} +3 -3
- package/dist/chunks/{LpOtpInput-6SCQ64uK.js → LpOtpInput-xvDO14f4.js} +1 -1
- package/dist/chunks/{LpPagination-CkwbdFa9.js → LpPagination-BFZY8dFn.js} +1 -1
- package/dist/chunks/{LpPaletteTheme-RWgbWFOz.js → LpPaletteTheme-EBJv0Bwz.js} +2 -2
- package/dist/chunks/{LpPasswordInput-DJBRo5lt.js → LpPasswordInput-DRJR3fF1.js} +2 -2
- package/dist/chunks/{LpPhoneInput-DcmcJwos.js → LpPhoneInput-BGOOtUoW.js} +3 -3
- package/dist/chunks/{LpPie-DmMlhgo2.js → LpPie-Deyn8h5J.js} +2 -2
- package/dist/chunks/{LpPipeline-BXcp2shV.js → LpPipeline-9ChjeNh5.js} +2 -2
- package/dist/chunks/{LpQuota-CtEiqRg4.js → LpQuota-CNh5eF_p.js} +1 -1
- package/dist/chunks/{LpRadioGroup-Ubkk_eSq.js → LpRadioGroup-Br2Nl9Gr.js} +2 -2
- package/dist/chunks/{LpRangeCalendar-DCswVYbU.js → LpRangeCalendar-D66Y3U_w.js} +1 -1
- package/dist/chunks/{LpRangeSlider-DM1qy5Tp.js → LpRangeSlider-eX-fIlOw.js} +1 -1
- package/dist/chunks/{LpRepeater-BMo2Eabn.js → LpRepeater-0XvnlVd_.js} +2 -2
- package/dist/chunks/{LpSecretField-SSRGVqRc.js → LpSecretField-1RCooChq.js} +5 -5
- package/dist/chunks/{LpSection-C3bTxD7t.js → LpSection-B9gbJJcP.js} +1 -1
- package/dist/chunks/{LpSegmented-C1DF6m6A.js → LpSegmented-hIjGzGTo.js} +2 -2
- package/dist/chunks/{LpSelect-DvDr1VPn.js → LpSelect-DugubwTc.js} +4 -4
- package/dist/chunks/{LpSidebar-Bql881r6.js → LpSidebar-DevSoN8W.js} +4 -4
- package/dist/chunks/{LpSidebarNav-CKx2KJvr.js → LpSidebarNav-DwQQ3KXe.js} +3 -3
- package/dist/chunks/{LpSidebarRow-BMOL9kOG.js → LpSidebarRow-CAGgtJCS.js} +3 -3
- package/dist/chunks/{LpSlider-DsSMe4b5.js → LpSlider-1fHpVxpB.js} +1 -1
- package/dist/chunks/{LpStat-CQYYDMS6.js → LpStat-Cm9-FaWQ.js} +2 -2
- package/dist/chunks/{LpStatus-g5nSJfU3.js → LpStatus-CE8FSAT1.js} +1 -1
- package/dist/chunks/{LpStepMark-seVNOuNJ.js → LpStepMark-BWSlV69R.js} +1 -1
- package/dist/chunks/{LpStepper-D6qEXihZ.js → LpStepper-1D0ZA7Nx.js} +1 -1
- package/dist/chunks/{LpSwitch-DM5CVm31.js → LpSwitch-D_kvE0oQ.js} +1 -1
- package/dist/chunks/{LpTabFace-ZWwelqRU.js → LpTabFace-CpbFKi-N.js} +2 -2
- package/dist/chunks/{LpTableFilter-CWU9Dmk-.js → LpTableFilter-BYHyCu38.js} +2 -2
- package/dist/chunks/{LpTagsInput-C2qVF2ax.js → LpTagsInput-Cqm38t5N.js} +5 -5
- package/dist/chunks/{LpTextarea-C3EoV_xv.js → LpTextarea-DaSKBkiV.js} +1 -1
- package/dist/chunks/{LpThemeStudio-BIBahaIs.js → LpThemeStudio-BNdfi-Ds.js} +5 -5
- package/dist/chunks/{LpThemeSwitcher-D4MqFLGS.js → LpThemeSwitcher-CbC1nqBP.js} +3 -3
- package/dist/chunks/{LpTimeField-DPOkbvyP.js → LpTimeField-CCfPCWPT.js} +2 -2
- package/dist/chunks/{LpToaster-Dj1VKxFv.js → LpToaster-BhlI7h-h.js} +2 -2
- package/dist/chunks/{LpTopologyCanvas-Bspzwm7x.js → LpTopologyCanvas-DlKbu7E5.js} +4 -4
- package/dist/chunks/{LpTour-CwpVdVN-.js → LpTour-CSLerA1B.js} +1 -1
- package/dist/chunks/{LpTruncate-JSaIW25q.js → LpTruncate-Ct26BSYB.js} +1 -1
- package/dist/chunks/{LpVideoBackdrop-Ct4St4ZL.js → LpVideoBackdrop-57i8RY8g.js} +1 -2
- package/dist/chunks/LpVideoPlayer-DcWd9DDW.js +813 -0
- package/dist/chunks/{LpWindow-RVcP436Z.js → LpWindow-YnF_knSj.js} +2 -2
- package/dist/chunks/{LpWorkspaceSwitcher-D0WOz1Fg.js → LpWorkspaceSwitcher-B-5UU6o4.js} +3 -3
- package/dist/chunks/{MenuTitle-D8Umab23.js → MenuTitle-BnZbFSwq.js} +1 -1
- package/dist/chunks/{OptionContent-DCnX_KRK.js → OptionContent-D5e_eklA.js} +1 -1
- package/dist/chunks/{PickerField-ChjY27bm.js → PickerField-KpHiowNI.js} +1 -1
- package/dist/chunks/{RevealToggle-MaL7PEjr.js → RevealToggle-CE1hAIJB.js} +1 -1
- package/dist/chunks/SteadyText-CwH-kduj.js +25 -0
- package/dist/chunks/{TourCard-oXZSpHKb.js → TourCard-t2csiTDS.js} +1 -1
- package/dist/chunks/VideoThumb-Csf9bUz3.js +67 -0
- package/dist/chunks/VideoVolume-B4_DNmNi.js +68 -0
- package/dist/chunks/icons-CdSlCrle.js +59 -0
- package/dist/component-names.d.ts +1 -1
- package/dist/components/ContextMenuItems.vue.js +1 -1
- package/dist/components/DropzoneLinkField.vue.js +1 -1
- package/dist/components/FieldLeading.vue.js +1 -1
- package/dist/components/FieldWrapper.vue.js +1 -1
- package/dist/components/IconCloseButton.vue.js +1 -1
- package/dist/components/LayoutCanvas.vue.js +1 -1
- package/dist/components/LayoutNode.vue.js +1 -1
- package/dist/components/LpActionBar.vue.js +1 -1
- package/dist/components/LpAddressInput.vue.js +1 -1
- package/dist/components/LpAlert.vue.js +1 -1
- package/dist/components/LpAppShell.vue.js +1 -1
- package/dist/components/LpAutocomplete.vue.js +1 -1
- package/dist/components/LpAvatar.vue.js +1 -1
- package/dist/components/LpBadge.vue.js +1 -1
- package/dist/components/LpBottomNav.vue.js +1 -1
- package/dist/components/LpBreadcrumbs.vue.js +1 -1
- package/dist/components/LpCalendar.vue.js +1 -1
- package/dist/components/LpChart.vue.js +2 -2
- package/dist/components/LpCheckbox.vue.js +1 -1
- package/dist/components/LpCodeBlock.vue.js +1 -1
- package/dist/components/LpCodeDisplay.vue.js +1 -1
- package/dist/components/LpColorPicker.vue.js +1 -1
- package/dist/components/LpCommandPalette.vue.js +2 -2
- package/dist/components/LpConfirmDialog.vue.js +1 -1
- package/dist/components/LpConfirmHost.vue.js +1 -1
- package/dist/components/LpContextMenu.vue.js +1 -1
- package/dist/components/LpContextSwitcher.vue.js +1 -1
- package/dist/components/LpCopyButton.vue.js +1 -1
- package/dist/components/LpDataList.vue.js +1 -1
- package/dist/components/LpDatePicker.vue.js +1 -1
- package/dist/components/LpDateRangePicker.vue.js +1 -1
- package/dist/components/LpDisclosure.vue.js +1 -1
- package/dist/components/LpDock.vue.js +1 -1
- package/dist/components/LpDrawer.vue.js +1 -1
- package/dist/components/LpDropdownMenu.vue.d.ts +5 -1
- package/dist/components/LpDropdownMenu.vue.js +1 -1
- package/dist/components/LpDropzone.vue.js +2 -2
- package/dist/components/LpEditable.vue.js +1 -1
- package/dist/components/LpEmptyState.vue.js +1 -1
- package/dist/components/LpFieldNotice.vue.js +1 -1
- package/dist/components/LpFileTree.vue.js +1 -1
- package/dist/components/LpFileTreeNode.vue.js +1 -1
- package/dist/components/LpFormField.vue.js +1 -1
- package/dist/components/LpHintLayer.vue.js +1 -1
- package/dist/components/LpHints.vue.js +1 -1
- package/dist/components/LpIcon.vue.js +1 -1
- package/dist/components/LpImageEditor.vue.js +1 -1
- package/dist/components/LpInfraNode.vue.js +1 -1
- package/dist/components/LpInput.vue.js +1 -1
- package/dist/components/LpInspector.vue.js +1 -1
- package/dist/components/LpLightbox.vue.js +1 -1
- package/dist/components/LpLogInspector.vue.js +1 -1
- package/dist/components/LpLogViewer.vue.js +1 -1
- package/dist/components/LpMapPicker.vue.js +1 -1
- package/dist/components/LpMediaGallery.vue.d.ts +1 -1
- package/dist/components/LpMediaGallery.vue.js +1 -1
- package/dist/components/LpModal.vue.js +1 -1
- package/dist/components/LpModalNav.vue.js +1 -1
- package/dist/components/LpNotificationBell.vue.js +1 -1
- package/dist/components/LpNotificationFeed.vue.js +1 -1
- package/dist/components/LpNumberField.vue.js +1 -1
- package/dist/components/LpOtpInput.vue.js +1 -1
- package/dist/components/LpPagination.vue.js +1 -1
- package/dist/components/LpPaletteFacts.vue.js +1 -1
- package/dist/components/LpPaletteHeader.vue.js +2 -2
- package/dist/components/LpPaletteTheme.vue.js +1 -1
- package/dist/components/LpPasswordInput.vue.js +1 -1
- package/dist/components/LpPhoneInput.vue.js +1 -1
- package/dist/components/LpPie.vue.js +1 -1
- package/dist/components/LpPipeline.vue.js +1 -1
- package/dist/components/LpQuota.vue.js +1 -1
- package/dist/components/LpRadioGroup.vue.js +1 -1
- package/dist/components/LpRangeCalendar.vue.js +1 -1
- package/dist/components/LpRangeSlider.vue.js +1 -1
- package/dist/components/LpRepeater.vue.js +1 -1
- package/dist/components/LpSecretField.vue.js +1 -1
- package/dist/components/LpSection.vue.js +1 -1
- package/dist/components/LpSegmented.vue.js +1 -1
- package/dist/components/LpSelect.vue.js +1 -1
- package/dist/components/LpShortcutsDialog.vue.js +1 -1
- package/dist/components/LpSidebar.vue.js +1 -1
- package/dist/components/LpSidebarNav.vue.js +1 -1
- package/dist/components/LpSidebarRow.vue.js +1 -1
- package/dist/components/LpSlider.vue.js +1 -1
- package/dist/components/LpStat.vue.js +1 -1
- package/dist/components/LpStatus.vue.js +1 -1
- package/dist/components/LpStepMark.vue.js +1 -1
- package/dist/components/LpStepper.vue.js +1 -1
- package/dist/components/LpSwitch.vue.js +1 -1
- package/dist/components/LpTabFace.vue.js +1 -1
- package/dist/components/LpTable.vue.js +9 -9
- package/dist/components/LpTableFilter.vue.js +1 -1
- package/dist/components/LpTabs.vue.js +2 -2
- package/dist/components/LpTagsInput.vue.js +1 -1
- package/dist/components/LpTextarea.vue.js +1 -1
- package/dist/components/LpThemeStudio.vue.js +1 -1
- package/dist/components/LpThemeSwitcher.vue.js +1 -1
- package/dist/components/LpTimeField.vue.js +1 -1
- package/dist/components/LpToaster.vue.js +1 -1
- package/dist/components/LpTopologyCanvas.vue.js +1 -1
- package/dist/components/LpTour.vue.js +1 -1
- package/dist/components/LpTruncate.vue.js +1 -1
- package/dist/components/LpVideoBackdrop.vue.js +1 -1
- package/dist/components/LpVideoPlayer.vue.d.ts +111 -0
- package/dist/components/LpVideoPlayer.vue.js +4 -0
- package/dist/components/LpVideoTrim.vue.d.ts +19 -5
- package/dist/components/LpVideoTrim.vue.js +596 -445
- package/dist/components/LpWindow.vue.js +1 -1
- package/dist/components/LpWorkspaceSwitcher.vue.js +1 -1
- package/dist/components/MenuTitle.vue.js +1 -1
- package/dist/components/OptionContent.vue.js +1 -1
- package/dist/components/PickerField.vue.js +1 -1
- package/dist/components/RevealToggle.vue.js +1 -1
- package/dist/components/SteadyText.vue.d.ts +7 -0
- package/dist/components/SteadyText.vue.js +4 -0
- package/dist/components/TourCard.vue.js +1 -1
- package/dist/components/VideoFlash.vue.d.ts +10 -0
- package/dist/components/VideoFlash.vue.js +33 -0
- package/dist/components/VideoThumb.vue.d.ts +12 -0
- package/dist/components/VideoThumb.vue.js +4 -0
- package/dist/components/VideoVolume.vue.d.ts +15 -0
- package/dist/components/VideoVolume.vue.js +4 -0
- package/dist/components/lightbox.d.ts +13 -0
- package/dist/components/lightbox.js +11 -1
- package/dist/components/menuWhen.js +1 -1
- package/dist/components/videoBackdrop.d.ts +15 -2
- package/dist/components/videoBackdrop.js +8 -2
- package/dist/components/videoMotion.d.ts +28 -0
- package/dist/components/videoMotion.js +26 -0
- package/dist/components/videoTrim.d.ts +2 -9
- package/dist/components/videoTrim.js +0 -6
- package/dist/composables/useVideoMedia.d.ts +74 -0
- package/dist/composables/useVideoMedia.js +291 -0
- package/dist/icons-all.js +1 -1
- package/dist/index.d.ts +4 -1
- package/dist/index.js +173 -168
- package/package.json +5 -2
- package/src/component-names.ts +1 -0
- package/src/components/LpDropdownMenu.vue +4 -0
- package/src/components/LpLightbox.vue +61 -8
- package/src/components/LpMediaGallery.vue +19 -2
- package/src/components/LpVideoBackdrop.vue +1 -7
- package/src/components/LpVideoPlayer.vue +774 -0
- package/src/components/LpVideoTrim.vue +437 -295
- package/src/components/SteadyText.vue +21 -0
- package/src/components/VideoFlash.vue +52 -0
- package/src/components/VideoThumb.vue +66 -0
- package/src/components/VideoVolume.vue +63 -0
- package/src/components/lightbox.ts +23 -0
- package/src/components/videoBackdrop.ts +20 -3
- package/src/components/videoMotion.ts +38 -0
- package/src/components/videoTrim.ts +2 -14
- package/src/composables/useVideoMedia.ts +411 -0
- package/src/index.ts +4 -1
- package/src/kit-icons.ts +1 -1
- package/dist/assets/LpVideoTrim-Ci6IIHW0.css +0 -8
- package/dist/chunks/icons-BOdqDUii.js +0 -59
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
type __VLS_Props = {
|
|
2
|
+
text: string;
|
|
3
|
+
widest: string;
|
|
4
|
+
};
|
|
5
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
6
|
+
declare const _default: typeof __VLS_export;
|
|
7
|
+
export default _default;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
type __VLS_Props = {
|
|
2
|
+
/** What happened, and a count that changes on every press so the same icon twice still plays twice. */
|
|
3
|
+
flash: {
|
|
4
|
+
icon: string;
|
|
5
|
+
n: number;
|
|
6
|
+
} | null;
|
|
7
|
+
};
|
|
8
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
9
|
+
declare const _default: typeof __VLS_export;
|
|
10
|
+
export default _default;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { defineComponent, openBlock, createElementBlock, createVNode, normalizeClass, createCommentVNode } from "vue";
|
|
2
|
+
import { _ as _sfc_main$1 } from "../chunks/LpIcon-CoOLz1oJ.js";
|
|
3
|
+
import { _ as _export_sfc } from "../chunks/_plugin-vue_export-helper-1tPrXgE0.js";
|
|
4
|
+
import '../assets/VideoFlash-VuPkC7QV.css';const _hoisted_1 = {
|
|
5
|
+
class: "pointer-events-none absolute inset-0 flex items-center justify-center motion-reduce:hidden",
|
|
6
|
+
"aria-hidden": "true"
|
|
7
|
+
};
|
|
8
|
+
const _sfc_main = /* @__PURE__ */ defineComponent({
|
|
9
|
+
__name: "VideoFlash",
|
|
10
|
+
props: {
|
|
11
|
+
flash: {}
|
|
12
|
+
},
|
|
13
|
+
setup(__props) {
|
|
14
|
+
return (_ctx, _cache) => {
|
|
15
|
+
return openBlock(), createElementBlock("div", _hoisted_1, [
|
|
16
|
+
__props.flash ? (openBlock(), createElementBlock("span", {
|
|
17
|
+
key: __props.flash.n,
|
|
18
|
+
class: "lp-video-flash flex size-16 items-center justify-center rounded-full bg-black/50 text-white opacity-0"
|
|
19
|
+
}, [
|
|
20
|
+
createVNode(_sfc_main$1, {
|
|
21
|
+
name: __props.flash.icon,
|
|
22
|
+
size: 28,
|
|
23
|
+
class: normalizeClass(__props.flash.icon === "lucide:play" ? "translate-x-0.5" : "")
|
|
24
|
+
}, null, 8, ["name", "class"])
|
|
25
|
+
])) : createCommentVNode("", true)
|
|
26
|
+
]);
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
const VideoFlash = /* @__PURE__ */ _export_sfc(_sfc_main, [["__scopeId", "data-v-5cab097a"]]);
|
|
31
|
+
export {
|
|
32
|
+
VideoFlash as default
|
|
33
|
+
};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { LightboxItem } from "./lightbox";
|
|
2
|
+
type __VLS_Props = {
|
|
3
|
+
item: LightboxItem;
|
|
4
|
+
/** Classes for the picture itself (the gallery's blur and dimming ride on it). */
|
|
5
|
+
mediaClass?: string | (string | false | undefined)[];
|
|
6
|
+
/** A small thumbnail: the badge shrinks and the length is left out. */
|
|
7
|
+
compact?: boolean;
|
|
8
|
+
alt?: string;
|
|
9
|
+
};
|
|
10
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
11
|
+
declare const _default: typeof __VLS_export;
|
|
12
|
+
export default _default;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { VideoMedia } from "../composables/useVideoMedia";
|
|
2
|
+
type __VLS_Props = {
|
|
3
|
+
media: VideoMedia;
|
|
4
|
+
labels: {
|
|
5
|
+
mute: string;
|
|
6
|
+
unmute: string;
|
|
7
|
+
volume: string;
|
|
8
|
+
};
|
|
9
|
+
disabled?: boolean;
|
|
10
|
+
/** Over the picture (white on the video) rather than on the page. */
|
|
11
|
+
overlay?: boolean;
|
|
12
|
+
};
|
|
13
|
+
declare const __VLS_export: import("vue").DefineComponent<__VLS_Props, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
14
|
+
declare const _default: typeof __VLS_export;
|
|
15
|
+
export default _default;
|
|
@@ -19,6 +19,19 @@ export interface LightboxItem {
|
|
|
19
19
|
* a marked picture sitting beside plain ones.
|
|
20
20
|
*/
|
|
21
21
|
spoiler?: boolean;
|
|
22
|
+
/**
|
|
23
|
+
* A video rather than a picture: shown in LpVideoPlayer, with a play badge
|
|
24
|
+
* on its tile and its strip thumbnail. Left out, an address ending in a
|
|
25
|
+
* video extension (.mp4, .webm, .mov…) counts as one; set it for an address
|
|
26
|
+
* that does not say (an API route, a blob: URL).
|
|
27
|
+
*/
|
|
28
|
+
kind?: "image" | "video";
|
|
29
|
+
/** A still for a video's tile and thumbnail; the video's first frame when absent. */
|
|
30
|
+
poster?: string;
|
|
31
|
+
/** A video's length in seconds, for the badge on its tile, when known up front. */
|
|
32
|
+
duration?: number;
|
|
22
33
|
}
|
|
34
|
+
/** Whether the item is a video: said outright by `kind`, else told by its address's extension. */
|
|
35
|
+
export declare function isVideoItem(item: Pick<LightboxItem, "src" | "kind">): boolean;
|
|
23
36
|
/** Last path segment of a URL, or a fallback — used to name a download. */
|
|
24
37
|
export declare function fileNameOf(item: LightboxItem, fallback?: string): string;
|
|
@@ -1,3 +1,12 @@
|
|
|
1
|
+
const VIDEO_EXTENSION = /\.(mp4|m4v|webm|mov|ogv|ogg|mkv)$/i;
|
|
2
|
+
function isVideoItem(item) {
|
|
3
|
+
if (item.kind) return item.kind === "video";
|
|
4
|
+
try {
|
|
5
|
+
return VIDEO_EXTENSION.test(new URL(item.src, "http://x").pathname);
|
|
6
|
+
} catch {
|
|
7
|
+
return false;
|
|
8
|
+
}
|
|
9
|
+
}
|
|
1
10
|
function fileNameOf(item, fallback = "image") {
|
|
2
11
|
if (item.filename) return item.filename;
|
|
3
12
|
try {
|
|
@@ -9,5 +18,6 @@ function fileNameOf(item, fallback = "image") {
|
|
|
9
18
|
return fallback;
|
|
10
19
|
}
|
|
11
20
|
export {
|
|
12
|
-
fileNameOf
|
|
21
|
+
fileNameOf,
|
|
22
|
+
isVideoItem
|
|
13
23
|
};
|
|
@@ -33,5 +33,18 @@ export declare function seamReached(plan: LoopPlan, time: number): boolean;
|
|
|
33
33
|
export declare function seamProgress(plan: LoopPlan, incomingTime: number): number;
|
|
34
34
|
/** Whether the whole clip loops with nothing cut and no overlap, which the media element does natively. */
|
|
35
35
|
export declare function isNativeLoop(plan: LoopPlan, duration: number): boolean;
|
|
36
|
-
/**
|
|
37
|
-
|
|
36
|
+
/**
|
|
37
|
+
* "1:05", "0:07.5": a position on a clip as a range slider labels it.
|
|
38
|
+
* `precise` adds tenths when there are any; "fixed" always writes them, for a
|
|
39
|
+
* time that changes while it is read, so it keeps one length ("0:05.0", not
|
|
40
|
+
* "0:05" between "0:04.9" and "0:05.1").
|
|
41
|
+
*/
|
|
42
|
+
export declare function formatClipTime(seconds: number, precise?: boolean | "fixed"): string;
|
|
43
|
+
/** The widest a clip time up to `seconds` gets, its digits as zeros: what SteadyText reserves. */
|
|
44
|
+
export declare function widestClipTime(seconds: number): string;
|
|
45
|
+
/**
|
|
46
|
+
* The slowest rate a pause eases down to before the element is paused, and a
|
|
47
|
+
* start eases up from. Chromium refuses a rate below a sixteenth; past that
|
|
48
|
+
* point the picture is all but still anyway.
|
|
49
|
+
*/
|
|
50
|
+
export declare const SLOWEST_RATE: number;
|
|
@@ -29,12 +29,18 @@ function formatClipTime(seconds, precise = false) {
|
|
|
29
29
|
const minutes = (t.days * 24 + t.hours) * 60 + t.minutes;
|
|
30
30
|
const secs = String(t.seconds).padStart(2, "0");
|
|
31
31
|
const tenth = Math.floor(t.ms / 100);
|
|
32
|
-
return precise && tenth ? `${minutes}:${secs}.${tenth}` : `${minutes}:${secs}`;
|
|
32
|
+
return precise === "fixed" || precise && tenth ? `${minutes}:${secs}.${tenth}` : `${minutes}:${secs}`;
|
|
33
33
|
}
|
|
34
|
+
function widestClipTime(seconds) {
|
|
35
|
+
return formatClipTime(seconds, "fixed").replace(/\d/g, "0");
|
|
36
|
+
}
|
|
37
|
+
const SLOWEST_RATE = 1 / 16;
|
|
34
38
|
export {
|
|
39
|
+
SLOWEST_RATE,
|
|
35
40
|
formatClipTime,
|
|
36
41
|
isNativeLoop,
|
|
37
42
|
planLoop,
|
|
38
43
|
seamProgress,
|
|
39
|
-
seamReached
|
|
44
|
+
seamReached,
|
|
45
|
+
widestClipTime
|
|
40
46
|
};
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export declare const FADE: {
|
|
2
|
+
readonly enterActiveClass: "transition-opacity duration-(--duration-medium) ease-(--ease-emphasized) motion-reduce:transition-none";
|
|
3
|
+
readonly leaveActiveClass: "transition-opacity duration-(--duration-fast) ease-(--ease-emphasized) motion-reduce:transition-none";
|
|
4
|
+
readonly enterFromClass: "opacity-0";
|
|
5
|
+
readonly leaveToClass: "opacity-0";
|
|
6
|
+
};
|
|
7
|
+
/** A fade with a small settle in scale: for a button or a box, which reads as arriving rather than blinking on. */
|
|
8
|
+
export declare const FADE_SCALE: {
|
|
9
|
+
readonly enterActiveClass: "transition-[opacity,scale] duration-(--duration-medium) ease-(--ease-emphasized) motion-reduce:transition-none";
|
|
10
|
+
readonly leaveActiveClass: "transition-[opacity,scale] duration-(--duration-fast) ease-(--ease-emphasized) motion-reduce:transition-none";
|
|
11
|
+
readonly enterFromClass: "scale-90 opacity-0";
|
|
12
|
+
readonly leaveToClass: "scale-90 opacity-0";
|
|
13
|
+
};
|
|
14
|
+
/** One icon handing over to another in the same spot (play and pause, sound on and off). */
|
|
15
|
+
export declare const ICON_SWAP: {
|
|
16
|
+
readonly mode: "out-in";
|
|
17
|
+
readonly enterActiveClass: "transition-[opacity,scale] duration-(--duration-fast) ease-(--ease-emphasized) motion-reduce:transition-none";
|
|
18
|
+
readonly leaveActiveClass: "transition-[opacity,scale] duration-(--duration-fast) ease-(--ease-emphasized) motion-reduce:transition-none";
|
|
19
|
+
readonly enterFromClass: "scale-75 opacity-0";
|
|
20
|
+
readonly leaveToClass: "scale-75 opacity-0";
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* A ghost button over the picture: white on the video in every theme, as the
|
|
24
|
+
* lightbox's are. The players' own buttons use it, and their `#actions` and
|
|
25
|
+
* `#controls` slots hand it out as `buttonClass`, so an app's button there
|
|
26
|
+
* (a bin that takes the video back out of a dropzone) looks like theirs.
|
|
27
|
+
*/
|
|
28
|
+
export declare const OVERLAY_BUTTON = "text-white/85 hover:bg-white/15 hover:text-white";
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
const FADE = {
|
|
2
|
+
enterActiveClass: "transition-opacity duration-(--duration-medium) ease-(--ease-emphasized) motion-reduce:transition-none",
|
|
3
|
+
leaveActiveClass: "transition-opacity duration-(--duration-fast) ease-(--ease-emphasized) motion-reduce:transition-none",
|
|
4
|
+
enterFromClass: "opacity-0",
|
|
5
|
+
leaveToClass: "opacity-0"
|
|
6
|
+
};
|
|
7
|
+
const FADE_SCALE = {
|
|
8
|
+
enterActiveClass: "transition-[opacity,scale] duration-(--duration-medium) ease-(--ease-emphasized) motion-reduce:transition-none",
|
|
9
|
+
leaveActiveClass: "transition-[opacity,scale] duration-(--duration-fast) ease-(--ease-emphasized) motion-reduce:transition-none",
|
|
10
|
+
enterFromClass: "scale-90 opacity-0",
|
|
11
|
+
leaveToClass: "scale-90 opacity-0"
|
|
12
|
+
};
|
|
13
|
+
const ICON_SWAP = {
|
|
14
|
+
mode: "out-in",
|
|
15
|
+
enterActiveClass: "transition-[opacity,scale] duration-(--duration-fast) ease-(--ease-emphasized) motion-reduce:transition-none",
|
|
16
|
+
leaveActiveClass: "transition-[opacity,scale] duration-(--duration-fast) ease-(--ease-emphasized) motion-reduce:transition-none",
|
|
17
|
+
enterFromClass: "scale-75 opacity-0",
|
|
18
|
+
leaveToClass: "scale-75 opacity-0"
|
|
19
|
+
};
|
|
20
|
+
const OVERLAY_BUTTON = "text-white/85 hover:bg-white/15 hover:text-white";
|
|
21
|
+
export {
|
|
22
|
+
FADE,
|
|
23
|
+
FADE_SCALE,
|
|
24
|
+
ICON_SWAP,
|
|
25
|
+
OVERLAY_BUTTON
|
|
26
|
+
};
|
|
@@ -64,12 +64,5 @@ export declare function regionBetween(ax: number, ay: number, bx: number, by: nu
|
|
|
64
64
|
export type RegionHandle = "move" | "nw" | "ne" | "sw" | "se";
|
|
65
65
|
/** The region after one of its handles moved by (dx, dy), fractions of the frame. */
|
|
66
66
|
export declare function adjustRegion(r: FrameRegion, handle: RegionHandle, dx: number, dy: number, minSize?: number): FrameRegion;
|
|
67
|
-
/**
|
|
68
|
-
|
|
69
|
-
* - "load": the address did not answer (network, 404, an expired session);
|
|
70
|
-
* - "decode": the file arrived but is damaged;
|
|
71
|
-
* - "unsupported": a format or codec this browser cannot play (H.265 in
|
|
72
|
-
* Chromium without hardware support, ProRes anywhere).
|
|
73
|
-
*/
|
|
74
|
-
export type VideoTrimErrorCause = "load" | "decode" | "unsupported";
|
|
75
|
-
export declare function mediaErrorCause(error: MediaError | null): VideoTrimErrorCause;
|
|
67
|
+
/** Why the editor has no video to show; see `VideoErrorCause`. */
|
|
68
|
+
export type { VideoErrorCause as VideoTrimErrorCause } from "../composables/useVideoMedia";
|
|
@@ -104,17 +104,11 @@ function adjustRegion(r, handle, dx, dy, minSize = 0.02) {
|
|
|
104
104
|
else y1 = clamp(y1 + dy, y0 + minSize, 1);
|
|
105
105
|
return { x: fix(x0), y: fix(y0), w: fix(x1 - x0), h: fix(y1 - y0) };
|
|
106
106
|
}
|
|
107
|
-
function mediaErrorCause(error) {
|
|
108
|
-
if (error?.code === 3) return "decode";
|
|
109
|
-
if (error?.code === 4) return "unsupported";
|
|
110
|
-
return "load";
|
|
111
|
-
}
|
|
112
107
|
export {
|
|
113
108
|
adjustRegion,
|
|
114
109
|
clampRegion,
|
|
115
110
|
containRect,
|
|
116
111
|
dragEnd,
|
|
117
|
-
mediaErrorCause,
|
|
118
112
|
normalizeRange,
|
|
119
113
|
parseClipTime,
|
|
120
114
|
regionBetween,
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { type Ref } from "vue";
|
|
2
|
+
/**
|
|
3
|
+
* Why there is no video to show:
|
|
4
|
+
* - "load": the address did not answer (network, 404, an expired session);
|
|
5
|
+
* - "decode": the file arrived but is damaged;
|
|
6
|
+
* - "unsupported": a format or codec this browser cannot play (H.265 in
|
|
7
|
+
* Chromium without hardware support, ProRes anywhere).
|
|
8
|
+
*/
|
|
9
|
+
export type VideoErrorCause = "load" | "decode" | "unsupported";
|
|
10
|
+
export declare function mediaErrorCause(error: MediaError | null): VideoErrorCause;
|
|
11
|
+
export interface UseVideoMediaOptions {
|
|
12
|
+
src: () => string;
|
|
13
|
+
/** Every frame while playing, after `time` is updated. */
|
|
14
|
+
onFrame?: () => void;
|
|
15
|
+
onError?: (cause: VideoErrorCause) => void;
|
|
16
|
+
/** Ease starts and stops (true by default); false cuts in and out at once. */
|
|
17
|
+
ease?: () => boolean;
|
|
18
|
+
/**
|
|
19
|
+
* Keep volume, mute and speed between videos on this device, shared by every
|
|
20
|
+
* player and editor of the kit: someone who turned the sound down turned it
|
|
21
|
+
* down, whichever component the next video is in. False forgets.
|
|
22
|
+
*/
|
|
23
|
+
remember?: () => boolean;
|
|
24
|
+
}
|
|
25
|
+
export declare function useVideoMedia(el: Ref<HTMLVideoElement | null>, options: UseVideoMediaOptions): {
|
|
26
|
+
duration: Ref<number, number>;
|
|
27
|
+
time: Ref<number, number>;
|
|
28
|
+
playing: Ref<boolean, boolean>;
|
|
29
|
+
wantsPlay: Ref<boolean, boolean>;
|
|
30
|
+
waiting: Ref<boolean, boolean>;
|
|
31
|
+
ended: Ref<boolean, boolean>;
|
|
32
|
+
muted: Ref<boolean, boolean>;
|
|
33
|
+
volume: Ref<number, number>;
|
|
34
|
+
rate: Ref<number, number>;
|
|
35
|
+
buffered: Ref<[number, number][], [number, number][]>;
|
|
36
|
+
failure: Ref<VideoErrorCause | null, VideoErrorCause | null>;
|
|
37
|
+
size: Ref<{
|
|
38
|
+
width: number;
|
|
39
|
+
height: number;
|
|
40
|
+
}, {
|
|
41
|
+
width: number;
|
|
42
|
+
height: number;
|
|
43
|
+
} | {
|
|
44
|
+
width: number;
|
|
45
|
+
height: number;
|
|
46
|
+
}>;
|
|
47
|
+
listeners: {
|
|
48
|
+
loadedmetadata(): void;
|
|
49
|
+
durationchange(): void;
|
|
50
|
+
seeked(): void;
|
|
51
|
+
play(): void;
|
|
52
|
+
pause(): void;
|
|
53
|
+
ended(): void;
|
|
54
|
+
waiting(): void;
|
|
55
|
+
playing(): void;
|
|
56
|
+
canplay(): void;
|
|
57
|
+
timeupdate(): void;
|
|
58
|
+
progress(): void;
|
|
59
|
+
volumechange(): void;
|
|
60
|
+
ratechange(): void;
|
|
61
|
+
error(): Promise<void>;
|
|
62
|
+
};
|
|
63
|
+
seek: (t: number) => void;
|
|
64
|
+
play: () => void;
|
|
65
|
+
pause: (options?: {
|
|
66
|
+
instant?: boolean;
|
|
67
|
+
}) => void;
|
|
68
|
+
toggle: () => void;
|
|
69
|
+
setMuted: (value: boolean) => void;
|
|
70
|
+
setVolume: (value: number) => void;
|
|
71
|
+
setRate: (value: number) => void;
|
|
72
|
+
captureFrame: () => Promise<Blob | null>;
|
|
73
|
+
};
|
|
74
|
+
export type VideoMedia = ReturnType<typeof useVideoMedia>;
|