@codingfactory/mediables-vue 2.0.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/PixiFrameExporter-BTU38EVl.cjs +2 -0
- package/dist/PixiFrameExporter-BTU38EVl.cjs.map +1 -0
- package/dist/PixiFrameExporter-Bb3QNWP-.js +199 -0
- package/dist/PixiFrameExporter-Bb3QNWP-.js.map +1 -0
- package/dist/adapters/MediablesAdapter.d.ts +19 -0
- package/dist/adapters/SpatieAdapter.d.ts +18 -0
- package/dist/adapters/index.d.ts +18 -0
- package/dist/components/AdminMediaBrowser.vue.d.ts +11 -0
- package/dist/components/AdminMediaBrowserExample.vue.d.ts +2 -0
- package/dist/components/AdminMediaBulkActionsToolbar.vue.d.ts +2 -0
- package/dist/components/AdminMediaGrid.vue.d.ts +17 -0
- package/dist/components/AdminMediaListItem.vue.d.ts +10 -0
- package/dist/components/AdminMediaManager.vue.d.ts +25 -0
- package/dist/components/AdminMediaUploader.vue.d.ts +11 -0
- package/dist/components/AlbumBrowser.vue.d.ts +17 -0
- package/dist/components/AlbumManager.vue.d.ts +16 -0
- package/dist/components/AlbumMediaGrid.vue.d.ts +28 -0
- package/dist/components/AlbumTree.vue.d.ts +35 -0
- package/dist/components/BulkActionsToolbar.vue.d.ts +2 -0
- package/dist/components/ConversionProgressIndicator.vue.d.ts +2 -0
- package/dist/components/Editor.vue.d.ts +29 -0
- package/dist/components/ExampleGridAndList.vue.d.ts +2 -0
- package/dist/components/ExampleUsage.vue.d.ts +2 -0
- package/dist/components/Grid.vue.d.ts +2 -0
- package/dist/components/ImageEditor/ImageEditor.vue.d.ts +3 -0
- package/dist/components/ImageEditorModal.vue.d.ts +16 -0
- package/dist/components/ImagePicker.vue.d.ts +32 -0
- package/dist/components/ImageUploadZone.vue.d.ts +7 -0
- package/dist/components/Item.vue.d.ts +2 -0
- package/dist/components/Library.vue.d.ts +2 -0
- package/dist/components/ManagedMediaGallery.vue.d.ts +12 -0
- package/dist/components/MediaAttacher.vue.d.ts +21 -0
- package/dist/components/MediaBrowser.vue.d.ts +2 -0
- package/dist/components/MediaCard.vue.d.ts +2 -0
- package/dist/components/MediaFilters.vue.d.ts +2 -0
- package/dist/components/MediaGrid.vue.d.ts +31 -0
- package/dist/components/MediaInfoEditor.vue.d.ts +7 -0
- package/dist/components/MediaManager.vue.d.ts +2 -0
- package/dist/components/MediaUploadWithProgress.vue.d.ts +2 -0
- package/dist/components/MediaUploader.vue.d.ts +2 -0
- package/dist/components/MediaWorkspace.vue.d.ts +19 -0
- package/dist/components/Modal.vue.d.ts +2 -0
- package/dist/components/ModelMediaManager.vue.d.ts +80 -0
- package/dist/components/Pagination.vue.d.ts +2 -0
- package/dist/components/Search.vue.d.ts +2 -0
- package/dist/components/VideoEditorSimple.vue.d.ts +2 -0
- package/dist/components/VideoExportPanel.vue.d.ts +2 -0
- package/dist/components/VideoTimeline.vue.d.ts +2 -0
- package/dist/components/VideoTimelineSimple.vue.d.ts +2 -0
- package/dist/components/VideoToolsPanel.vue.d.ts +2 -0
- package/dist/components/albums/AlbumTreeNode.vue.d.ts +23 -0
- package/dist/components/attachment/MediaAttachment.vue.d.ts +23 -0
- package/dist/components/attachment/index.d.ts +4 -0
- package/dist/components/collection/MediaCollection.vue.d.ts +27 -0
- package/dist/components/collection/MediaCollectionDropzone.vue.d.ts +18 -0
- package/dist/components/collection/MediaCollectionItem.vue.d.ts +2 -0
- package/dist/components/collection/index.d.ts +6 -0
- package/dist/components/form/MediaHiddenFields.vue.d.ts +2 -0
- package/dist/components/form/index.d.ts +4 -0
- package/dist/components/image/ImageEditor.vue.d.ts +2 -0
- package/dist/components/image/ImageItem.vue.d.ts +2 -0
- package/dist/components/renderless/MediaAttachmentProvider.vue.d.ts +12 -0
- package/dist/components/renderless/MediaCollectionProvider.vue.d.ts +12 -0
- package/dist/components/renderless/index.d.ts +7 -0
- package/dist/components/timeline/TimeRuler.vue.d.ts +2 -0
- package/dist/components/timeline/VideoTrack.vue.d.ts +2 -0
- package/dist/components/tools/VideoFiltersPanel.vue.d.ts +7 -0
- package/dist/components/tools/VideoTextPanel.vue.d.ts +2 -0
- package/dist/components/video/AudioTrackManager.vue.d.ts +2 -0
- package/dist/components/video/EditorControls.vue.d.ts +2 -0
- package/dist/components/video/ExportPanel.vue.d.ts +2 -0
- package/dist/components/video/FilterSelector.vue.d.ts +2 -0
- package/dist/components/video/LiveStreamManager.vue.d.ts +2 -0
- package/dist/components/video/StreamCredentials.vue.d.ts +2 -0
- package/dist/components/video/StreamStatus.vue.d.ts +2 -0
- package/dist/components/video/TextOverlayPanel.vue.d.ts +2 -0
- package/dist/components/video/ThumbnailPicker.vue.d.ts +2 -0
- package/dist/components/video/TimelineClip.vue.d.ts +2 -0
- package/dist/components/video/TimelineControls.vue.d.ts +2 -0
- package/dist/components/video/TransitionSelector.vue.d.ts +2 -0
- package/dist/components/video/VideoControls.vue.d.ts +2 -0
- package/dist/components/video/VideoEditor.vue.d.ts +8 -0
- package/dist/components/video/VideoEditorDialog.vue.d.ts +12 -0
- package/dist/components/video/VideoFilterCarousel.vue.d.ts +2 -0
- package/dist/components/video/VideoFilterPreview.vue.d.ts +18 -0
- package/dist/components/video/VideoPlayer.vue.d.ts +2 -0
- package/dist/components/video/VideoPreview.vue.d.ts +3 -0
- package/dist/components/video/VideoPreviewCSS.vue.d.ts +2 -0
- package/dist/components/video/VideoPreviewEngine.vue.d.ts +3 -0
- package/dist/components/video/VideoTimeline.vue.d.ts +2 -0
- package/dist/components/video/VideoUploadProgress.vue.d.ts +2 -0
- package/dist/components/video/VideoUploader.vue.d.ts +29 -0
- package/dist/components/video/index.d.ts +19 -0
- package/dist/composables/useAccordion.d.ts +138 -0
- package/dist/composables/useAlbumDragDrop.d.ts +24 -0
- package/dist/composables/useAlbums.d.ts +17 -0
- package/dist/composables/useFloatingPills.d.ts +111 -0
- package/dist/composables/useHaptic.d.ts +10 -0
- package/dist/composables/useImageEditorModal.d.ts +277 -0
- package/dist/composables/useLiveStream.d.ts +66 -0
- package/dist/composables/useMediaAttachment.d.ts +105 -0
- package/dist/composables/useMediaCollection.d.ts +122 -0
- package/dist/composables/useMediaConversionProgress.d.ts +31 -0
- package/dist/composables/useMediaDragSort.d.ts +56 -0
- package/dist/composables/useMediaSelection.d.ts +27 -0
- package/dist/composables/useMediaUploadQueue.d.ts +61 -0
- package/dist/composables/useMediaValidation.d.ts +59 -0
- package/dist/composables/useRadialMenu.d.ts +116 -0
- package/dist/composables/useSanctumClient.d.ts +31 -0
- package/dist/composables/useTheme.d.ts +7 -0
- package/dist/composables/useToast.d.ts +25 -0
- package/dist/composables/useVideoEditor.d.ts +127 -0
- package/dist/composables/useVideoFilters.d.ts +176 -0
- package/dist/composables/useVideoPlayer.d.ts +50 -0
- package/dist/composables/useVideoUpload.d.ts +134 -0
- package/dist/filters/controlMapping.d.ts +31 -0
- package/dist/filters/css-registry.d.ts +83 -0
- package/dist/filters/definitions/adjustment.d.ts +2 -0
- package/dist/filters/definitions/adjustmentAdvanced.d.ts +2 -0
- package/dist/filters/definitions/advancedBloom.d.ts +2 -0
- package/dist/filters/definitions/alpha.d.ts +2 -0
- package/dist/filters/definitions/ascii.d.ts +2 -0
- package/dist/filters/definitions/backdropBlur.d.ts +2 -0
- package/dist/filters/definitions/bevel.d.ts +2 -0
- package/dist/filters/definitions/bloom.d.ts +2 -0
- package/dist/filters/definitions/blur.d.ts +2 -0
- package/dist/filters/definitions/bulgePinch.d.ts +2 -0
- package/dist/filters/definitions/colorGradient.d.ts +2 -0
- package/dist/filters/definitions/colorMap.d.ts +2 -0
- package/dist/filters/definitions/colorMatrix.d.ts +2 -0
- package/dist/filters/definitions/colorOverlay.d.ts +2 -0
- package/dist/filters/definitions/colorReplace.d.ts +2 -0
- package/dist/filters/definitions/convolution.d.ts +2 -0
- package/dist/filters/definitions/crossHatch.d.ts +2 -0
- package/dist/filters/definitions/crt.d.ts +2 -0
- package/dist/filters/definitions/displacement.d.ts +2 -0
- package/dist/filters/definitions/dot.d.ts +2 -0
- package/dist/filters/definitions/dropShadow.d.ts +2 -0
- package/dist/filters/definitions/emboss.d.ts +2 -0
- package/dist/filters/definitions/glitch.d.ts +2 -0
- package/dist/filters/definitions/glow.d.ts +2 -0
- package/dist/filters/definitions/godray.d.ts +2 -0
- package/dist/filters/definitions/grayscale.d.ts +2 -0
- package/dist/filters/definitions/hslAdjustment.d.ts +2 -0
- package/dist/filters/definitions/kawaseBlur.d.ts +2 -0
- package/dist/filters/definitions/lightmap.d.ts +2 -0
- package/dist/filters/definitions/motionBlur.d.ts +2 -0
- package/dist/filters/definitions/multiColorReplace.d.ts +2 -0
- package/dist/filters/definitions/noise.d.ts +2 -0
- package/dist/filters/definitions/oldFilm.d.ts +2 -0
- package/dist/filters/definitions/outline.d.ts +2 -0
- package/dist/filters/definitions/pixelate.d.ts +2 -0
- package/dist/filters/definitions/radialBlur.d.ts +2 -0
- package/dist/filters/definitions/reflection.d.ts +2 -0
- package/dist/filters/definitions/rgbSplit.d.ts +2 -0
- package/dist/filters/definitions/shockwave.d.ts +2 -0
- package/dist/filters/definitions/simplexNoise.d.ts +2 -0
- package/dist/filters/definitions/tiltShift.d.ts +2 -0
- package/dist/filters/definitions/twist.d.ts +2 -0
- package/dist/filters/definitions/vignette.d.ts +2 -0
- package/dist/filters/definitions/zoomBlur.d.ts +2 -0
- package/dist/filters/factory.d.ts +38 -0
- package/dist/filters/filters/controlMapping.d.ts +31 -0
- package/dist/filters/filters/definitions/adjustment.d.ts +2 -0
- package/dist/filters/filters/definitions/adjustmentAdvanced.d.ts +2 -0
- package/dist/filters/filters/definitions/advancedBloom.d.ts +2 -0
- package/dist/filters/filters/definitions/alpha.d.ts +2 -0
- package/dist/filters/filters/definitions/ascii.d.ts +2 -0
- package/dist/filters/filters/definitions/backdropBlur.d.ts +2 -0
- package/dist/filters/filters/definitions/bevel.d.ts +2 -0
- package/dist/filters/filters/definitions/bloom.d.ts +2 -0
- package/dist/filters/filters/definitions/blur.d.ts +2 -0
- package/dist/filters/filters/definitions/bulgePinch.d.ts +2 -0
- package/dist/filters/filters/definitions/colorGradient.d.ts +2 -0
- package/dist/filters/filters/definitions/colorMap.d.ts +2 -0
- package/dist/filters/filters/definitions/colorMatrix.d.ts +2 -0
- package/dist/filters/filters/definitions/colorOverlay.d.ts +2 -0
- package/dist/filters/filters/definitions/colorReplace.d.ts +2 -0
- package/dist/filters/filters/definitions/convolution.d.ts +2 -0
- package/dist/filters/filters/definitions/crossHatch.d.ts +2 -0
- package/dist/filters/filters/definitions/crt.d.ts +2 -0
- package/dist/filters/filters/definitions/displacement.d.ts +2 -0
- package/dist/filters/filters/definitions/dot.d.ts +2 -0
- package/dist/filters/filters/definitions/dropShadow.d.ts +2 -0
- package/dist/filters/filters/definitions/emboss.d.ts +2 -0
- package/dist/filters/filters/definitions/glitch.d.ts +2 -0
- package/dist/filters/filters/definitions/glow.d.ts +2 -0
- package/dist/filters/filters/definitions/godray.d.ts +2 -0
- package/dist/filters/filters/definitions/grayscale.d.ts +2 -0
- package/dist/filters/filters/definitions/hslAdjustment.d.ts +2 -0
- package/dist/filters/filters/definitions/kawaseBlur.d.ts +2 -0
- package/dist/filters/filters/definitions/lightmap.d.ts +2 -0
- package/dist/filters/filters/definitions/motionBlur.d.ts +2 -0
- package/dist/filters/filters/definitions/multiColorReplace.d.ts +2 -0
- package/dist/filters/filters/definitions/noise.d.ts +2 -0
- package/dist/filters/filters/definitions/oldFilm.d.ts +2 -0
- package/dist/filters/filters/definitions/outline.d.ts +2 -0
- package/dist/filters/filters/definitions/pixelate.d.ts +2 -0
- package/dist/filters/filters/definitions/radialBlur.d.ts +2 -0
- package/dist/filters/filters/definitions/reflection.d.ts +2 -0
- package/dist/filters/filters/definitions/rgbSplit.d.ts +2 -0
- package/dist/filters/filters/definitions/shockwave.d.ts +2 -0
- package/dist/filters/filters/definitions/simplexNoise.d.ts +2 -0
- package/dist/filters/filters/definitions/tiltShift.d.ts +2 -0
- package/dist/filters/filters/definitions/twist.d.ts +2 -0
- package/dist/filters/filters/definitions/vignette.d.ts +2 -0
- package/dist/filters/filters/definitions/zoomBlur.d.ts +2 -0
- package/dist/filters/filters/factory.d.ts +36 -0
- package/dist/filters/filters/index.d.ts +93 -0
- package/dist/filters/filters/registry.d.ts +89 -0
- package/dist/filters/index.d.ts +93 -0
- package/dist/filters/registry.d.ts +89 -0
- package/dist/filters/video-compatible.d.ts +77 -0
- package/dist/filters/video-css-filters.d.ts +153 -0
- package/dist/index-6yUGA--H.cjs +42 -0
- package/dist/index-6yUGA--H.cjs.map +1 -0
- package/dist/index-CcGWfCCV.js +7799 -0
- package/dist/index-CcGWfCCV.js.map +1 -0
- package/dist/index-DTUgsw7J.cjs +76 -0
- package/dist/index-DTUgsw7J.cjs.map +1 -0
- package/dist/index-VrUG0lmk.js +28655 -0
- package/dist/index-VrUG0lmk.js.map +1 -0
- package/dist/index.d.ts +62 -0
- package/dist/js/workers/material-color-extractor.js +215 -0
- package/dist/mediables-vanilla.cjs +2 -0
- package/dist/mediables-vanilla.cjs.map +1 -0
- package/dist/mediables-vanilla.mjs +12 -0
- package/dist/mediables-vanilla.mjs.map +1 -0
- package/dist/mediables-vue.cjs +2 -0
- package/dist/mediables-vue.cjs.map +1 -0
- package/dist/mediables-vue.mjs +67 -0
- package/dist/mediables-vue.mjs.map +1 -0
- package/dist/render-page/assets/index-hBfvGPpt.js +48933 -0
- package/dist/render-page/index.html +18 -0
- package/dist/services/VideoJobClient.d.ts +79 -0
- package/dist/stores/albumStore.d.ts +4 -0
- package/dist/stores/mediaVariantStore.d.ts +1 -0
- package/dist/stores/useAdminMediaStore.d.ts +16 -0
- package/dist/stores/useMediaStore.d.ts +25 -0
- package/dist/stores/useVideoStore.d.ts +21 -0
- package/dist/stores/variantPollStore.d.ts +5 -0
- package/dist/stores/video.d.ts +1 -0
- package/dist/style.css +1 -0
- package/dist/types/adapter.d.ts +181 -0
- package/dist/types/album.d.ts +28 -0
- package/dist/types/api.d.ts +88 -0
- package/dist/types/collection.d.ts +306 -0
- package/dist/types/editor.d.ts +172 -0
- package/dist/types/image.d.ts +210 -0
- package/dist/types/index.d.ts +5 -0
- package/dist/types/media.d.ts +107 -0
- package/dist/types/types/address.d.ts +66 -0
- package/dist/types/types/admin/intelligent-po.d.ts +47 -0
- package/dist/types/types/admin/products/index.d.ts +17 -0
- package/dist/types/types/admin/purchase-order.d.ts +50 -0
- package/dist/types/types/admin/receipt.d.ts +86 -0
- package/dist/types/types/admin/vendor.d.ts +61 -0
- package/dist/types/types/ai.d.ts +63 -0
- package/dist/types/types/aiActions.d.ts +42 -0
- package/dist/types/types/aiDesigner.d.ts +77 -0
- package/dist/types/types/api-errors.d.ts +6 -0
- package/dist/types/types/api.d.ts +109 -0
- package/dist/types/types/bundle.d.ts +131 -0
- package/dist/types/types/bundles/analytics.d.ts +64 -0
- package/dist/types/types/bundles.d.ts +108 -0
- package/dist/types/types/cart.d.ts +81 -0
- package/dist/types/types/checkout.d.ts +40 -0
- package/dist/types/types/component-config.d.ts +26 -0
- package/dist/types/types/components.d.ts +32 -0
- package/dist/types/types/content.d.ts +138 -0
- package/dist/types/types/coupon.d.ts +32 -0
- package/dist/types/types/customer-product-history.d.ts +210 -0
- package/dist/types/types/drag-contracts.d.ts +40 -0
- package/dist/types/types/drag-drop.d.ts +19 -0
- package/dist/types/types/editor.d.ts +127 -0
- package/dist/types/types/errors.d.ts +36 -0
- package/dist/types/types/feedback.d.ts +122 -0
- package/dist/types/types/image.d.ts +210 -0
- package/dist/types/types/index.d.ts +62 -0
- package/dist/types/types/instagram.d.ts +86 -0
- package/dist/types/types/ionic-components.d.ts +152 -0
- package/dist/types/types/layout.d.ts +127 -0
- package/dist/types/types/media-gateway.d.ts +34 -0
- package/dist/types/types/media.d.ts +178 -0
- package/dist/types/types/notifications.d.ts +123 -0
- package/dist/types/types/order-management.d.ts +245 -0
- package/dist/types/types/pageBuilder/block.d.ts +34 -0
- package/dist/types/types/pageBuilder/blocks.d.ts +82 -0
- package/dist/types/types/pageBuilder/cache.d.ts +33 -0
- package/dist/types/types/pageBuilder/editor.d.ts +15 -0
- package/dist/types/types/pageBuilder/field.d.ts +11 -0
- package/dist/types/types/pageBuilder/index.d.ts +24 -0
- package/dist/types/types/pageBuilder/revisions.d.ts +40 -0
- package/dist/types/types/pageBuilder/templates.d.ts +62 -0
- package/dist/types/types/pattern.d.ts +40 -0
- package/dist/types/types/payment.d.ts +21 -0
- package/dist/types/types/payments.d.ts +10 -0
- package/dist/types/types/pipeline.d.ts +12 -0
- package/dist/types/types/pixi/filter-args.d.ts +274 -0
- package/dist/types/types/pixi/filters-extended.d.ts +157 -0
- package/dist/types/types/pixi/filters.d.ts +38 -0
- package/dist/types/types/preview.d.ts +36 -0
- package/dist/types/types/pricing.d.ts +31 -0
- package/dist/types/types/quickbooks.d.ts +43 -0
- package/dist/types/types/receipt.d.ts +121 -0
- package/dist/types/types/rewards.d.ts +110 -0
- package/dist/types/types/saved-cart.d.ts +51 -0
- package/dist/types/types/settings.d.ts +63 -0
- package/dist/types/types/shipment.d.ts +62 -0
- package/dist/types/types/shipping.d.ts +98 -0
- package/dist/types/types/sidebar-variations.d.ts +226 -0
- package/dist/types/types/slots.d.ts +2 -0
- package/dist/types/types/specification-types.d.ts +70 -0
- package/dist/types/types/specifications.d.ts +163 -0
- package/dist/types/types/store.d.ts +64 -0
- package/dist/types/types/template.d.ts +8 -0
- package/dist/types/types/user.d.ts +47 -0
- package/dist/types/types/variant-groups.d.ts +158 -0
- package/dist/types/types/wishlist.d.ts +73 -0
- package/dist/types/types/workflow-wizard.d.ts +12 -0
- package/dist/types/video.d.ts +449 -0
- package/dist/utils/category-tree-constants.d.ts +42 -0
- package/dist/utils/cookies.d.ts +3 -0
- package/dist/utils/crypto-polyfill.d.ts +4 -0
- package/dist/utils/datetime.d.ts +43 -0
- package/dist/utils/debounce.d.ts +10 -0
- package/dist/utils/debugConsole.d.ts +69 -0
- package/dist/utils/editor/argHelpers.d.ts +6 -0
- package/dist/utils/formatters.d.ts +105 -0
- package/dist/utils/isPresignedAwsUrl.d.ts +67 -0
- package/dist/utils/media-helpers.d.ts +34 -0
- package/dist/utils/normalisePricing.d.ts +11 -0
- package/dist/utils/recipe-generator.d.ts +34 -0
- package/dist/utils/string.d.ts +29 -0
- package/dist/utils/unwrapApiResponse.d.ts +5 -0
- package/dist/utils/uuid.d.ts +30 -0
- package/dist/utils/validators.d.ts +28 -0
- package/dist/utils/video-export.d.ts +60 -0
- package/dist/v3-ionic-1-demo.html +440 -0
- package/dist/video-engine/VideoEngine.d.ts +267 -0
- package/dist/video-engine/adapters/AudioManager.d.ts +106 -0
- package/dist/video-engine/adapters/CSSFilterAdapter.d.ts +106 -0
- package/dist/video-engine/adapters/ExportManager.d.ts +88 -0
- package/dist/video-engine/adapters/FilterBridge.d.ts +96 -0
- package/dist/video-engine/adapters/MediablesCompositionAdapter.d.ts +56 -0
- package/dist/video-engine/adapters/PixiFrameExporter.d.ts +52 -0
- package/dist/video-engine/adapters/RenderQueue.d.ts +119 -0
- package/dist/video-engine/adapters/TextOverlayManager.d.ts +93 -0
- package/dist/video-engine/adapters/TimelineAdapter.d.ts +58 -0
- package/dist/video-engine/adapters/TransitionManager.d.ts +76 -0
- package/dist/video-engine/adapters/WebCodecsExport.d.ts +36 -0
- package/dist/video-engine/compositions/examples/example.d.ts +2 -0
- package/dist/video-engine/filters/CSSFilterSystem.d.ts +213 -0
- package/dist/video-engine/index.d.ts +14 -0
- package/dist/video-engine/presets/ExportPresets.d.ts +70 -0
- package/dist/video-engine/types/index.d.ts +96 -0
- package/dist/video-engine/types.d.ts +1 -0
- package/dist/video-engine/utils/EventEmitter.d.ts +12 -0
- package/dist/video-engine/utils/MediaSourceResolver.d.ts +9 -0
- package/dist/video-engine/utils/error-reporter.d.ts +159 -0
- package/dist/video-engine/utils/keyboard-shortcuts.d.ts +120 -0
- package/dist/video-engine/utils/pixi-video-fallback.d.ts +2 -0
- package/docs/video-subsystem/README.md +490 -0
- package/docs/video-subsystem/api-reference.md +747 -0
- package/docs/video-subsystem/component-examples.md +1477 -0
- package/docs/video-subsystem/integration-guide.md +1021 -0
- package/package.json +102 -0
|
@@ -0,0 +1,490 @@
|
|
|
1
|
+
# Mediables Video Subsystem
|
|
2
|
+
|
|
3
|
+
**Version**: 2.0.0
|
|
4
|
+
**Status**: Production Ready
|
|
5
|
+
**Last Updated**: January 2025
|
|
6
|
+
|
|
7
|
+
## Overview
|
|
8
|
+
|
|
9
|
+
The Mediables Video Subsystem provides comprehensive video management capabilities for Laravel applications, treating video as a first-class media type alongside images. Built with a provider-agnostic architecture, it supports both Video on Demand (VOD) and live streaming through providers like Bunny, while maintaining the familiar patterns of the mediables package.
|
|
10
|
+
|
|
11
|
+
## Key Features
|
|
12
|
+
|
|
13
|
+
### 🎬 Video Management
|
|
14
|
+
- **Upload**: Direct-to-provider uploads with resumable support
|
|
15
|
+
- **Processing**: Automatic encoding with adaptive bitrate streaming
|
|
16
|
+
- **Playback**: Secure, token-based playback with automatic refresh
|
|
17
|
+
- **Storage**: Provider-based storage with CDN distribution
|
|
18
|
+
|
|
19
|
+
### ✂️ Video Editor
|
|
20
|
+
- **Timeline Editing**: Trim, split, and rearrange clips
|
|
21
|
+
- **Filters**: 15 deterministic filters that work identically in preview and export
|
|
22
|
+
- **Export**: Server-side processing with FFmpeg
|
|
23
|
+
- **Real-time Preview**: PIXI.js-based frame filtering
|
|
24
|
+
|
|
25
|
+
### 📡 Live Streaming
|
|
26
|
+
- **Low Latency**: 5-7 second delay option
|
|
27
|
+
- **Auto-Recording**: Automatic VOD archive creation
|
|
28
|
+
- **RTMP Support**: Standard streaming protocol support
|
|
29
|
+
- **Real-time Metrics**: Viewer count and stream health
|
|
30
|
+
|
|
31
|
+
### 🔐 Security & Privacy
|
|
32
|
+
- **Signed URLs**: Time-limited, secure playback URLs
|
|
33
|
+
- **Token Refresh**: Automatic token renewal without interruption
|
|
34
|
+
- **Webhook Validation**: Cryptographic signature verification
|
|
35
|
+
- **Access Control**: Integration with application permissions
|
|
36
|
+
|
|
37
|
+
## Architecture
|
|
38
|
+
|
|
39
|
+
### Provider Abstraction
|
|
40
|
+
|
|
41
|
+
The video subsystem uses a provider-agnostic architecture that allows swapping video providers without changing application code:
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
Application Code
|
|
45
|
+
↓
|
|
46
|
+
VideoProviderInterface
|
|
47
|
+
↓
|
|
48
|
+
Provider Implementation (Bunny, custom, etc.)
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### Database Schema
|
|
52
|
+
|
|
53
|
+
Two main tables handle video data:
|
|
54
|
+
|
|
55
|
+
**Media Table Extensions**: Adds video-specific fields to existing media table
|
|
56
|
+
- `duration`, `aspect_ratio`, `width`, `height`
|
|
57
|
+
- `frame_rate`, `bitrate`, `has_audio`
|
|
58
|
+
- `provider`, `provider_asset_id`, `playback_id`
|
|
59
|
+
- `processing_status`, `processing_progress`
|
|
60
|
+
|
|
61
|
+
**Live Streams Table**: Dedicated table for streaming data
|
|
62
|
+
- Stream credentials (`stream_key`, `rtmp_url`)
|
|
63
|
+
- Stream state (`status`, `started_at`, `ended_at`)
|
|
64
|
+
- Metrics (`viewer_count`, `peak_viewers`)
|
|
65
|
+
- Configuration (`auto_record`, `low_latency`)
|
|
66
|
+
|
|
67
|
+
## Technology Stack
|
|
68
|
+
|
|
69
|
+
### Backend (Laravel)
|
|
70
|
+
- **Laravel 11/12**: Framework foundation
|
|
71
|
+
- **FFmpeg**: Server-side video processing
|
|
72
|
+
- **Bunny.net Video API**: Default provider integration
|
|
73
|
+
- **Queue Workers**: Background job processing
|
|
74
|
+
- **PostgreSQL**: Database with UUID primary keys
|
|
75
|
+
|
|
76
|
+
### Frontend (Vue 3)
|
|
77
|
+
- **Vue 3**: Composition API with TypeScript
|
|
78
|
+
- **PIXI.js**: GPU-accelerated preview rendering
|
|
79
|
+
- **Ionic Framework**: Mobile-optimized UI components
|
|
80
|
+
- **Pinia**: State management
|
|
81
|
+
- **Vite**: Build tooling with HMR
|
|
82
|
+
|
|
83
|
+
## Quick Start
|
|
84
|
+
|
|
85
|
+
### Installation
|
|
86
|
+
|
|
87
|
+
1. **Install the package**:
|
|
88
|
+
```bash
|
|
89
|
+
composer require mediables/mediables:^2.0
|
|
90
|
+
npm install @mediables/vue@^2.0
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
2. **Run migrations**:
|
|
94
|
+
```bash
|
|
95
|
+
php artisan migrate
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
3. **Configure provider** (`.env`):
|
|
99
|
+
```env
|
|
100
|
+
VIDEO_PROVIDER=bunny
|
|
101
|
+
BUNNY_VIDEO_API_KEY=your-api-key
|
|
102
|
+
BUNNY_VIDEO_LIBRARY_ID=your-library-id
|
|
103
|
+
BUNNY_VIDEO_CDN_HOSTNAME=your-cdn.b-cdn.net
|
|
104
|
+
BUNNY_VIDEO_WEBHOOK_SECRET=your-secret
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
### Basic Usage
|
|
108
|
+
|
|
109
|
+
#### Upload a Video
|
|
110
|
+
```vue
|
|
111
|
+
<template>
|
|
112
|
+
<VideoUploader
|
|
113
|
+
:collection="'videos'"
|
|
114
|
+
@uploaded="handleUploaded"
|
|
115
|
+
@error="handleError"
|
|
116
|
+
/>
|
|
117
|
+
</template>
|
|
118
|
+
|
|
119
|
+
<script setup>
|
|
120
|
+
import { VideoUploader } from '@mediables/vue'
|
|
121
|
+
|
|
122
|
+
function handleUploaded(media) {
|
|
123
|
+
console.log('Video uploaded:', media.uuid)
|
|
124
|
+
}
|
|
125
|
+
</script>
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
#### Play a Video
|
|
129
|
+
```vue
|
|
130
|
+
<template>
|
|
131
|
+
<VideoPlayer
|
|
132
|
+
:media="videoMedia"
|
|
133
|
+
:controls="true"
|
|
134
|
+
:autoplay="false"
|
|
135
|
+
/>
|
|
136
|
+
</template>
|
|
137
|
+
|
|
138
|
+
<script setup>
|
|
139
|
+
import { VideoPlayer } from '@mediables/vue'
|
|
140
|
+
import { ref } from 'vue'
|
|
141
|
+
|
|
142
|
+
const videoMedia = ref({
|
|
143
|
+
uuid: 'video-uuid-here',
|
|
144
|
+
playback_url: 'https://...'
|
|
145
|
+
})
|
|
146
|
+
</script>
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
#### Edit a Video
|
|
150
|
+
```vue
|
|
151
|
+
<template>
|
|
152
|
+
<VideoEditor
|
|
153
|
+
:media-uuid="videoUuid"
|
|
154
|
+
@export="handleExport"
|
|
155
|
+
/>
|
|
156
|
+
</template>
|
|
157
|
+
|
|
158
|
+
<script setup>
|
|
159
|
+
import { VideoEditor } from '@mediables/vue'
|
|
160
|
+
|
|
161
|
+
const videoUuid = 'your-video-uuid'
|
|
162
|
+
|
|
163
|
+
async function handleExport(recipe) {
|
|
164
|
+
// Recipe contains timeline edits and filters
|
|
165
|
+
const response = await api.post(`/video/${videoUuid}/export`, { recipe })
|
|
166
|
+
console.log('Export job started:', response.job_id)
|
|
167
|
+
}
|
|
168
|
+
</script>
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
## Component Reference
|
|
172
|
+
|
|
173
|
+
### VideoUploader
|
|
174
|
+
Handles direct-to-provider video uploads with progress tracking.
|
|
175
|
+
|
|
176
|
+
**Props**:
|
|
177
|
+
- `collection` (string): Media collection name
|
|
178
|
+
- `multiple` (boolean): Allow multiple file selection
|
|
179
|
+
- `maxSize` (number): Maximum file size in bytes
|
|
180
|
+
- `acceptedFormats` (array): Allowed video formats
|
|
181
|
+
|
|
182
|
+
**Events**:
|
|
183
|
+
- `@uploaded`: Fired when upload completes
|
|
184
|
+
- `@progress`: Upload progress updates
|
|
185
|
+
- `@error`: Upload errors
|
|
186
|
+
|
|
187
|
+
### VideoPlayer
|
|
188
|
+
Provider-agnostic video player with automatic token refresh.
|
|
189
|
+
|
|
190
|
+
**Props**:
|
|
191
|
+
- `media` (object): Media object with playback URL
|
|
192
|
+
- `playbackUrl` (string): Direct playback URL
|
|
193
|
+
- `controls` (boolean): Show player controls
|
|
194
|
+
- `autoplay` (boolean): Start playing automatically
|
|
195
|
+
- `muted` (boolean): Start muted
|
|
196
|
+
- `isLive` (boolean): Live stream mode
|
|
197
|
+
|
|
198
|
+
**Events**:
|
|
199
|
+
- `@play`: Playback started
|
|
200
|
+
- `@pause`: Playback paused
|
|
201
|
+
- `@ended`: Playback completed
|
|
202
|
+
- `@error`: Playback error
|
|
203
|
+
|
|
204
|
+
### VideoEditor
|
|
205
|
+
Full-featured video editor with timeline and filters.
|
|
206
|
+
|
|
207
|
+
**Props**:
|
|
208
|
+
- `mediaUuid` (string): UUID of video to edit
|
|
209
|
+
- `initialRecipe` (object): Pre-load edit recipe
|
|
210
|
+
|
|
211
|
+
**Events**:
|
|
212
|
+
- `@export`: Export requested with recipe
|
|
213
|
+
- `@save-draft`: Draft save requested
|
|
214
|
+
- `@change`: Edit state changed
|
|
215
|
+
|
|
216
|
+
### LiveStreamManager
|
|
217
|
+
Manages live streaming setup and monitoring.
|
|
218
|
+
|
|
219
|
+
**Props**:
|
|
220
|
+
- `mediaUuid` (string): Media UUID for stream
|
|
221
|
+
|
|
222
|
+
**Events**:
|
|
223
|
+
- `@stream-created`: Stream credentials ready
|
|
224
|
+
- `@stream-started`: Stream went live
|
|
225
|
+
- `@stream-ended`: Stream stopped
|
|
226
|
+
|
|
227
|
+
## Filter Reference
|
|
228
|
+
|
|
229
|
+
The video subsystem includes 15 deterministic filters that produce identical results in both preview (PIXI.js) and export (FFmpeg):
|
|
230
|
+
|
|
231
|
+
### Color Adjustments
|
|
232
|
+
- `brightness`: Adjust brightness (-1 to 1)
|
|
233
|
+
- `contrast`: Adjust contrast (0 to 2)
|
|
234
|
+
- `saturation`: Adjust color saturation (0 to 2)
|
|
235
|
+
- `hue`: Rotate hue angle (-180 to 180)
|
|
236
|
+
|
|
237
|
+
### Blur Effects
|
|
238
|
+
- `gaussian-blur`: Gaussian blur (sigma: 0 to 10)
|
|
239
|
+
- `motion-blur`: Motion blur effect
|
|
240
|
+
|
|
241
|
+
### Stylize Filters
|
|
242
|
+
- `vintage`: Vintage film look
|
|
243
|
+
- `sepia`: Sepia tone effect
|
|
244
|
+
- `grayscale`: Convert to grayscale
|
|
245
|
+
|
|
246
|
+
### Effects
|
|
247
|
+
- `vignette`: Add vignette overlay
|
|
248
|
+
- `sharpen`: Sharpen details
|
|
249
|
+
- `denoise`: Reduce noise
|
|
250
|
+
|
|
251
|
+
### Transform
|
|
252
|
+
- `flip-horizontal`: Mirror horizontally
|
|
253
|
+
- `flip-vertical`: Mirror vertically
|
|
254
|
+
- `rotate`: Rotate by degrees
|
|
255
|
+
|
|
256
|
+
## Recipe Format
|
|
257
|
+
|
|
258
|
+
The video editor generates a JSON recipe that describes all edits:
|
|
259
|
+
|
|
260
|
+
```json
|
|
261
|
+
{
|
|
262
|
+
"version": "1.0",
|
|
263
|
+
"source": {
|
|
264
|
+
"media_uuid": "uuid-here",
|
|
265
|
+
"duration": 120.5
|
|
266
|
+
},
|
|
267
|
+
"timeline": [
|
|
268
|
+
{
|
|
269
|
+
"type": "clip",
|
|
270
|
+
"id": "clip-1",
|
|
271
|
+
"start": 0,
|
|
272
|
+
"end": 30,
|
|
273
|
+
"source_in": 10,
|
|
274
|
+
"source_out": 40,
|
|
275
|
+
"speed": 1.0
|
|
276
|
+
}
|
|
277
|
+
],
|
|
278
|
+
"filters": [
|
|
279
|
+
{
|
|
280
|
+
"id": "vintage",
|
|
281
|
+
"params": {},
|
|
282
|
+
"intensity": 0.8,
|
|
283
|
+
"ffmpeg": "curves=preset=vintage"
|
|
284
|
+
}
|
|
285
|
+
],
|
|
286
|
+
"audio": {
|
|
287
|
+
"volume": 1.0,
|
|
288
|
+
"fade_in": 0,
|
|
289
|
+
"fade_out": 0
|
|
290
|
+
},
|
|
291
|
+
"output": {
|
|
292
|
+
"format": "mp4",
|
|
293
|
+
"codec": "h264",
|
|
294
|
+
"quality": "1080p",
|
|
295
|
+
"fps": 30
|
|
296
|
+
}
|
|
297
|
+
}
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
## Performance Considerations
|
|
301
|
+
|
|
302
|
+
### Upload Performance
|
|
303
|
+
- **Resumable Uploads**: Automatic retry on network failure
|
|
304
|
+
- **Direct Upload**: Bypass application server for large files
|
|
305
|
+
- **Background Processing**: Non-blocking asset processing
|
|
306
|
+
|
|
307
|
+
### Playback Performance
|
|
308
|
+
- **Adaptive Bitrate**: Automatic quality adjustment
|
|
309
|
+
- **CDN Delivery**: Global edge caching
|
|
310
|
+
- **Token Caching**: Minimize API calls
|
|
311
|
+
|
|
312
|
+
### Editor Performance
|
|
313
|
+
- **Frame Sampling**: Process every 3rd frame on mobile
|
|
314
|
+
- **GPU Acceleration**: PIXI.js WebGL rendering
|
|
315
|
+
- **Lazy Loading**: Load components on demand
|
|
316
|
+
|
|
317
|
+
### Mobile Optimization
|
|
318
|
+
- **Touch Gestures**: Native gesture support
|
|
319
|
+
- **Reduced Quality**: Lower preview quality on mobile
|
|
320
|
+
- **Battery Awareness**: Throttle processing on low battery
|
|
321
|
+
|
|
322
|
+
## Security Best Practices
|
|
323
|
+
|
|
324
|
+
### API Security
|
|
325
|
+
- Always validate webhook signatures
|
|
326
|
+
- Use time-limited signed URLs
|
|
327
|
+
- Implement rate limiting on endpoints
|
|
328
|
+
- Validate file types and sizes
|
|
329
|
+
|
|
330
|
+
### Token Management
|
|
331
|
+
- Tokens expire after 60 minutes
|
|
332
|
+
- Automatic refresh at 50-minute mark
|
|
333
|
+
- Secure token storage in memory
|
|
334
|
+
- No token persistence to disk
|
|
335
|
+
|
|
336
|
+
### Access Control
|
|
337
|
+
```php
|
|
338
|
+
// Example policy integration
|
|
339
|
+
class VideoPolicy
|
|
340
|
+
{
|
|
341
|
+
public function view(User $user, Media $media): bool
|
|
342
|
+
{
|
|
343
|
+
return $media->user_id === $user->id ||
|
|
344
|
+
$media->visibility === 'public';
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
public function edit(User $user, Media $media): bool
|
|
348
|
+
{
|
|
349
|
+
return $media->user_id === $user->id;
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
## Troubleshooting
|
|
355
|
+
|
|
356
|
+
### Common Issues
|
|
357
|
+
|
|
358
|
+
**Upload fails immediately**
|
|
359
|
+
- Check CORS configuration on provider
|
|
360
|
+
- Verify API credentials
|
|
361
|
+
- Check file size limits
|
|
362
|
+
|
|
363
|
+
**Playback shows black screen**
|
|
364
|
+
- Video still processing
|
|
365
|
+
- Token expired (check console)
|
|
366
|
+
- Unsupported codec
|
|
367
|
+
|
|
368
|
+
**Export never completes**
|
|
369
|
+
- Check queue worker is running
|
|
370
|
+
- Verify FFmpeg installation
|
|
371
|
+
- Check disk space
|
|
372
|
+
|
|
373
|
+
**Live stream won't connect**
|
|
374
|
+
- Verify RTMP URL format
|
|
375
|
+
- Check firewall settings
|
|
376
|
+
- Confirm stream key
|
|
377
|
+
|
|
378
|
+
### Debug Mode
|
|
379
|
+
|
|
380
|
+
Enable debug logging:
|
|
381
|
+
```php
|
|
382
|
+
// config/mediables.php
|
|
383
|
+
'video' => [
|
|
384
|
+
'debug' => env('MEDIABLES_VIDEO_DEBUG', false),
|
|
385
|
+
'log_webhooks' => env('MEDIABLES_LOG_WEBHOOKS', false),
|
|
386
|
+
]
|
|
387
|
+
```
|
|
388
|
+
|
|
389
|
+
### Health Checks
|
|
390
|
+
|
|
391
|
+
```php
|
|
392
|
+
// Check provider connectivity
|
|
393
|
+
app(VideoProviderInterface::class)->healthCheck();
|
|
394
|
+
|
|
395
|
+
// Verify FFmpeg
|
|
396
|
+
app(VideoProcessor::class)->verifyFFmpeg();
|
|
397
|
+
|
|
398
|
+
// Test webhook signature
|
|
399
|
+
app(WebhookValidator::class)->testSignature($payload, $signature);
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
## Migration Guide
|
|
403
|
+
|
|
404
|
+
### From v1.x to v2.0
|
|
405
|
+
|
|
406
|
+
1. **Database Migration**:
|
|
407
|
+
```bash
|
|
408
|
+
php artisan migrate
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
2. **Update Imports**:
|
|
412
|
+
```javascript
|
|
413
|
+
// Old
|
|
414
|
+
import { ImageEditor } from '@mediables/vue'
|
|
415
|
+
|
|
416
|
+
// New
|
|
417
|
+
import { ImageEditor, VideoEditor, VideoPlayer } from '@mediables/vue'
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
3. **Configuration Changes**:
|
|
421
|
+
```env
|
|
422
|
+
VIDEO_PROVIDER=bunny
|
|
423
|
+
BUNNY_VIDEO_API_KEY=your-api-key
|
|
424
|
+
BUNNY_VIDEO_LIBRARY_ID=your-library-id
|
|
425
|
+
BUNNY_VIDEO_CDN_HOSTNAME=your-cdn.b-cdn.net
|
|
426
|
+
BUNNY_VIDEO_WEBHOOK_SECRET=your-secret
|
|
427
|
+
```
|
|
428
|
+
|
|
429
|
+
## Browser Compatibility
|
|
430
|
+
|
|
431
|
+
### Supported Browsers
|
|
432
|
+
- Chrome 90+ (recommended)
|
|
433
|
+
- Safari 14+ (iOS 14+)
|
|
434
|
+
- Firefox 88+
|
|
435
|
+
- Edge 90+
|
|
436
|
+
|
|
437
|
+
### Required Features
|
|
438
|
+
- WebGL 2.0 (for editor)
|
|
439
|
+
- Media Source Extensions
|
|
440
|
+
- Web Workers
|
|
441
|
+
- IndexedDB
|
|
442
|
+
|
|
443
|
+
### Progressive Enhancement
|
|
444
|
+
The video subsystem gracefully degrades:
|
|
445
|
+
- No WebGL: Disable preview filters
|
|
446
|
+
- No MSE: Fallback to progressive download
|
|
447
|
+
- No Workers: Process on main thread
|
|
448
|
+
- Mobile: Reduced quality settings
|
|
449
|
+
|
|
450
|
+
## Contributing
|
|
451
|
+
|
|
452
|
+
We welcome contributions! Please see our [Contributing Guide](../CONTRIBUTING.md) for details.
|
|
453
|
+
|
|
454
|
+
### Development Setup
|
|
455
|
+
```bash
|
|
456
|
+
# Clone repository
|
|
457
|
+
git clone https://github.com/mediables/mediables.git
|
|
458
|
+
|
|
459
|
+
# Install dependencies
|
|
460
|
+
composer install
|
|
461
|
+
npm install
|
|
462
|
+
|
|
463
|
+
# Run tests
|
|
464
|
+
composer test
|
|
465
|
+
npm run test
|
|
466
|
+
|
|
467
|
+
# Build assets
|
|
468
|
+
npm run build
|
|
469
|
+
```
|
|
470
|
+
|
|
471
|
+
## License
|
|
472
|
+
|
|
473
|
+
The Mediables package is open-sourced software licensed under the [MIT license](../../LICENSE.md).
|
|
474
|
+
|
|
475
|
+
## Support
|
|
476
|
+
|
|
477
|
+
- **Documentation**: [Full Documentation](https://mediables.dev/docs)
|
|
478
|
+
- **Issues**: [GitHub Issues](https://github.com/mediables/mediables/issues)
|
|
479
|
+
- **Discord**: [Community Discord](https://discord.gg/mediables)
|
|
480
|
+
- **Email**: support@mediables.dev
|
|
481
|
+
|
|
482
|
+
## Credits
|
|
483
|
+
|
|
484
|
+
Created and maintained by the Mediables Team.
|
|
485
|
+
|
|
486
|
+
Special thanks to:
|
|
487
|
+
- Laravel team for the framework
|
|
488
|
+
- Bunny.net for video infrastructure
|
|
489
|
+
- PIXI.js team for rendering engine
|
|
490
|
+
- FFmpeg project for video processing
|