@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,56 @@
|
|
|
1
|
+
import * as core from '../core/mediables-engine.js';
|
|
2
|
+
import type { VideoRecipe, AppliedFilter } from '../../types/video';
|
|
3
|
+
import { TimelineResolvedFrame } from '../types';
|
|
4
|
+
export declare class MediablesCompositionAdapter {
|
|
5
|
+
readonly composition: core.Composition;
|
|
6
|
+
private player;
|
|
7
|
+
private clips;
|
|
8
|
+
private clipTimelineStart;
|
|
9
|
+
private initPromise;
|
|
10
|
+
private fitMode;
|
|
11
|
+
private fps;
|
|
12
|
+
private resizeObserver;
|
|
13
|
+
private filterCache;
|
|
14
|
+
constructor(width?: number, height?: number, fps?: number, options?: {
|
|
15
|
+
fitMode?: 'none' | 'contain' | 'cover';
|
|
16
|
+
});
|
|
17
|
+
private isDebug;
|
|
18
|
+
private dbg;
|
|
19
|
+
private setupEventHandlers;
|
|
20
|
+
private onPlay;
|
|
21
|
+
private onPause;
|
|
22
|
+
private onFrameUpdate;
|
|
23
|
+
attachPlayer(element: HTMLDivElement): Promise<void>;
|
|
24
|
+
private setupResponsiveScaling;
|
|
25
|
+
loadFromRecipe(recipe: VideoRecipe): Promise<void>;
|
|
26
|
+
private addTimelineClip;
|
|
27
|
+
private addTextOverlay;
|
|
28
|
+
private applyFiltersToClip;
|
|
29
|
+
private updateExistingFilterInstance;
|
|
30
|
+
setClipFilters(clipId: string, filters: AppliedFilter[]): void;
|
|
31
|
+
private createPixiFilter;
|
|
32
|
+
play(): void;
|
|
33
|
+
pause(): void;
|
|
34
|
+
seek(frame: number): void;
|
|
35
|
+
seekToTime(seconds: number): void;
|
|
36
|
+
get currentFrame(): number;
|
|
37
|
+
get currentTime(): string;
|
|
38
|
+
get currentTimeInSeconds(): number;
|
|
39
|
+
get duration(): number;
|
|
40
|
+
get durationInSeconds(): number;
|
|
41
|
+
export(options?: {
|
|
42
|
+
fps?: number;
|
|
43
|
+
onProgress?: (percent: number) => void;
|
|
44
|
+
}): Promise<Blob>;
|
|
45
|
+
destroy(): void;
|
|
46
|
+
private animationFrameId;
|
|
47
|
+
private startRenderLoop;
|
|
48
|
+
private stopRenderLoop;
|
|
49
|
+
private lastRenderedFrame;
|
|
50
|
+
moveClip(clipId: string, newTimelineStart: number): void;
|
|
51
|
+
setFitMode(mode: 'none' | 'contain' | 'cover'): void;
|
|
52
|
+
private applyFitModeToClips;
|
|
53
|
+
private applyFitToClip;
|
|
54
|
+
trimClip(clipId: string, sourceIn: number, sourceOut: number): void;
|
|
55
|
+
resolveSourceFrame(timelineFrame: number): TimelineResolvedFrame;
|
|
56
|
+
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PIXI Frame-by-Frame Video Exporter
|
|
3
|
+
*
|
|
4
|
+
* Captures each frame from the PIXI canvas (which already has filters applied)
|
|
5
|
+
* and encodes them with WebCodecs + mp4-muxer for exact 1:1 preview-to-export parity.
|
|
6
|
+
*
|
|
7
|
+
* Audio is extracted from the source video, trimmed to match, and muxed alongside
|
|
8
|
+
* the video frames. If the source has no audio or AudioEncoder is unavailable,
|
|
9
|
+
* the export proceeds silently (video-only).
|
|
10
|
+
*/
|
|
11
|
+
export interface PixiExportOptions {
|
|
12
|
+
/** Width of the output video in pixels */
|
|
13
|
+
width: number;
|
|
14
|
+
/** Height of the output video in pixels */
|
|
15
|
+
height: number;
|
|
16
|
+
/** Frames per second */
|
|
17
|
+
fps: number;
|
|
18
|
+
/** Video bitrate in bps (default: 5 Mbps) */
|
|
19
|
+
bitrate?: number;
|
|
20
|
+
/** Audio bitrate in bps (default: 128 kbps) */
|
|
21
|
+
audioBitrate?: number;
|
|
22
|
+
/** Trim start in seconds (source time, default: 0) */
|
|
23
|
+
trimStart?: number;
|
|
24
|
+
/** Trim end in seconds (source time, default: full duration) */
|
|
25
|
+
trimEnd?: number;
|
|
26
|
+
/** Source video URL (needed to extract audio) */
|
|
27
|
+
sourceUrl?: string;
|
|
28
|
+
/** Progress callback (0-100) */
|
|
29
|
+
onProgress?: (percent: number) => void;
|
|
30
|
+
/** Abort signal for cancellation */
|
|
31
|
+
signal?: AbortSignal;
|
|
32
|
+
}
|
|
33
|
+
export interface PixiFrameProvider {
|
|
34
|
+
/**
|
|
35
|
+
* Seek the underlying video to `timeSec`, render through PIXI with filters,
|
|
36
|
+
* and return the PIXI canvas with the rendered frame.
|
|
37
|
+
*/
|
|
38
|
+
captureFrameAt(timeSec: number): Promise<HTMLCanvasElement | null>;
|
|
39
|
+
/** Video duration in seconds (reactive ref) */
|
|
40
|
+
duration: {
|
|
41
|
+
value: number;
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Check if the browser supports the required WebCodecs APIs.
|
|
46
|
+
*/
|
|
47
|
+
export declare function isWebCodecsSupported(): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Export a video by capturing frames from a PIXI preview (with filters applied)
|
|
50
|
+
* and encoding them into an MP4 file, with audio from the source.
|
|
51
|
+
*/
|
|
52
|
+
export declare function exportWithPixiFrames(provider: PixiFrameProvider, options: PixiExportOptions): Promise<Blob>;
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RenderQueue - Manages multiple export jobs with concurrency control
|
|
3
|
+
* Tracks job status, handles retries, and maintains export history
|
|
4
|
+
*/
|
|
5
|
+
import { EventEmitter } from '../utils/EventEmitter';
|
|
6
|
+
import { type ExportOptions, type ExportResult } from './ExportManager';
|
|
7
|
+
import type { Composition } from '../core/mediables-engine.js';
|
|
8
|
+
export interface RenderJob {
|
|
9
|
+
id: string;
|
|
10
|
+
name: string;
|
|
11
|
+
composition: Composition;
|
|
12
|
+
options: ExportOptions;
|
|
13
|
+
status: 'pending' | 'processing' | 'completed' | 'failed' | 'canceled';
|
|
14
|
+
progress: number;
|
|
15
|
+
result?: ExportResult;
|
|
16
|
+
error?: Error;
|
|
17
|
+
createdAt: Date;
|
|
18
|
+
startedAt?: Date;
|
|
19
|
+
completedAt?: Date;
|
|
20
|
+
retryCount: number;
|
|
21
|
+
maxRetries: number;
|
|
22
|
+
}
|
|
23
|
+
export interface QueueOptions {
|
|
24
|
+
maxConcurrent?: number;
|
|
25
|
+
maxRetries?: number;
|
|
26
|
+
retryDelay?: number;
|
|
27
|
+
autoStart?: boolean;
|
|
28
|
+
persistHistory?: boolean;
|
|
29
|
+
maxHistorySize?: number;
|
|
30
|
+
}
|
|
31
|
+
export declare class RenderQueue extends EventEmitter {
|
|
32
|
+
private jobs;
|
|
33
|
+
private queue;
|
|
34
|
+
private activeJobs;
|
|
35
|
+
private history;
|
|
36
|
+
private options;
|
|
37
|
+
private isRunning;
|
|
38
|
+
private localStorage;
|
|
39
|
+
constructor(options?: QueueOptions);
|
|
40
|
+
/**
|
|
41
|
+
* Add a job to the queue
|
|
42
|
+
*/
|
|
43
|
+
addJob(name: string, composition: Composition, options?: ExportOptions): string;
|
|
44
|
+
/**
|
|
45
|
+
* Start processing the queue
|
|
46
|
+
*/
|
|
47
|
+
start(): void;
|
|
48
|
+
/**
|
|
49
|
+
* Stop processing the queue
|
|
50
|
+
*/
|
|
51
|
+
stop(): void;
|
|
52
|
+
/**
|
|
53
|
+
* Process next jobs in the queue
|
|
54
|
+
*/
|
|
55
|
+
private processNextJobs;
|
|
56
|
+
/**
|
|
57
|
+
* Process a single job
|
|
58
|
+
*/
|
|
59
|
+
private processJob;
|
|
60
|
+
/**
|
|
61
|
+
* Cancel a specific job
|
|
62
|
+
*/
|
|
63
|
+
cancelJob(jobId: string): boolean;
|
|
64
|
+
/**
|
|
65
|
+
* Cancel all pending jobs
|
|
66
|
+
*/
|
|
67
|
+
cancelAll(): void;
|
|
68
|
+
/**
|
|
69
|
+
* Get job by ID
|
|
70
|
+
*/
|
|
71
|
+
getJob(jobId: string): RenderJob | undefined;
|
|
72
|
+
/**
|
|
73
|
+
* Get all jobs
|
|
74
|
+
*/
|
|
75
|
+
getAllJobs(): RenderJob[];
|
|
76
|
+
/**
|
|
77
|
+
* Get queue status
|
|
78
|
+
*/
|
|
79
|
+
getStatus(): {
|
|
80
|
+
isRunning: boolean;
|
|
81
|
+
pendingCount: number;
|
|
82
|
+
activeCount: number;
|
|
83
|
+
completedCount: number;
|
|
84
|
+
failedCount: number;
|
|
85
|
+
};
|
|
86
|
+
/**
|
|
87
|
+
* Add job to history
|
|
88
|
+
*/
|
|
89
|
+
private addToHistory;
|
|
90
|
+
/**
|
|
91
|
+
* Get export history
|
|
92
|
+
*/
|
|
93
|
+
getHistory(): RenderJob[];
|
|
94
|
+
/**
|
|
95
|
+
* Clear export history
|
|
96
|
+
*/
|
|
97
|
+
clearHistory(): void;
|
|
98
|
+
/**
|
|
99
|
+
* Save history to localStorage
|
|
100
|
+
*/
|
|
101
|
+
private saveHistory;
|
|
102
|
+
/**
|
|
103
|
+
* Load history from localStorage
|
|
104
|
+
*/
|
|
105
|
+
private loadHistory;
|
|
106
|
+
/**
|
|
107
|
+
* Generate unique job ID
|
|
108
|
+
*/
|
|
109
|
+
private generateJobId;
|
|
110
|
+
/**
|
|
111
|
+
* Get queue statistics
|
|
112
|
+
*/
|
|
113
|
+
getStatistics(): {
|
|
114
|
+
totalJobs: number;
|
|
115
|
+
avgExportTime: number;
|
|
116
|
+
successRate: number;
|
|
117
|
+
totalExportSize: number;
|
|
118
|
+
};
|
|
119
|
+
}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import * as core from '../core/mediables-engine.js';
|
|
2
|
+
type Composition = core.Composition;
|
|
3
|
+
type TextClip = core.TextClip;
|
|
4
|
+
export interface TextOverlayConfig {
|
|
5
|
+
text: string;
|
|
6
|
+
fontFamily?: string;
|
|
7
|
+
fontSize?: number;
|
|
8
|
+
fontWeight?: string;
|
|
9
|
+
color?: string;
|
|
10
|
+
position?: 'center' | 'top' | 'bottom' | 'left' | 'right' | {
|
|
11
|
+
x: number | string;
|
|
12
|
+
y: number | string;
|
|
13
|
+
};
|
|
14
|
+
startTime?: number;
|
|
15
|
+
duration?: number;
|
|
16
|
+
animation?: {
|
|
17
|
+
type: 'fade-in' | 'fade-out' | 'rotate' | 'scale' | 'slide' | 'typewriter' | 'custom';
|
|
18
|
+
duration?: number;
|
|
19
|
+
easing?: 'linear' | 'easeIn' | 'easeOut' | 'easeInOut';
|
|
20
|
+
rotation?: {
|
|
21
|
+
from: number;
|
|
22
|
+
to: number;
|
|
23
|
+
};
|
|
24
|
+
scale?: {
|
|
25
|
+
from: number;
|
|
26
|
+
to: number;
|
|
27
|
+
};
|
|
28
|
+
translate?: {
|
|
29
|
+
fromX: number;
|
|
30
|
+
toX: number;
|
|
31
|
+
fromY: number;
|
|
32
|
+
toY: number;
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
textAlign?: 'left' | 'center' | 'right';
|
|
36
|
+
textBaseline?: 'top' | 'middle' | 'bottom';
|
|
37
|
+
}
|
|
38
|
+
export declare class TextOverlayManager {
|
|
39
|
+
private composition;
|
|
40
|
+
private textClips;
|
|
41
|
+
private fonts;
|
|
42
|
+
private nextId;
|
|
43
|
+
constructor(composition: Composition);
|
|
44
|
+
private initializeDefaultFonts;
|
|
45
|
+
/**
|
|
46
|
+
* Load a custom web font
|
|
47
|
+
*/
|
|
48
|
+
loadWebFont(name: string, url: string, family: string, weight?: string): Promise<void>;
|
|
49
|
+
/**
|
|
50
|
+
* Load a local font
|
|
51
|
+
*/
|
|
52
|
+
loadLocalFont(name: string, family: string, weight?: string): void;
|
|
53
|
+
/**
|
|
54
|
+
* Add a text overlay to the composition
|
|
55
|
+
*/
|
|
56
|
+
addTextOverlay(config: TextOverlayConfig): Promise<string>;
|
|
57
|
+
/**
|
|
58
|
+
* Apply animation to text clip configuration
|
|
59
|
+
*/
|
|
60
|
+
private applyAnimation;
|
|
61
|
+
/**
|
|
62
|
+
* Update an existing text overlay
|
|
63
|
+
*/
|
|
64
|
+
updateTextOverlay(id: string, config: Partial<TextOverlayConfig>): Promise<void>;
|
|
65
|
+
/**
|
|
66
|
+
* Remove a text overlay
|
|
67
|
+
*/
|
|
68
|
+
removeTextOverlay(id: string): Promise<void>;
|
|
69
|
+
/**
|
|
70
|
+
* Get all text overlays
|
|
71
|
+
*/
|
|
72
|
+
getTextOverlays(): Map<string, TextClip>;
|
|
73
|
+
/**
|
|
74
|
+
* Clear all text overlays
|
|
75
|
+
*/
|
|
76
|
+
clearAllTextOverlays(): Promise<void>;
|
|
77
|
+
/**
|
|
78
|
+
* Get all text overlays as an array (for VideoEditorModal compatibility)
|
|
79
|
+
*/
|
|
80
|
+
getOverlays(): Array<{
|
|
81
|
+
id: string;
|
|
82
|
+
config: TextOverlayConfig;
|
|
83
|
+
}>;
|
|
84
|
+
/**
|
|
85
|
+
* Create animated captions from transcript
|
|
86
|
+
*/
|
|
87
|
+
addCaptions(transcript: any, // Would be core.Transcript type
|
|
88
|
+
preset?: 'classic' | 'cascade' | 'guinea' | 'solar' | 'spotlight' | 'whisper', position?: {
|
|
89
|
+
x?: string | number;
|
|
90
|
+
y?: string | number;
|
|
91
|
+
}): Promise<void>;
|
|
92
|
+
}
|
|
93
|
+
export {};
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import * as core from '../core/mediables-engine.js';
|
|
2
|
+
import type { TimelineClip, VideoRecipe } from '../../types/video';
|
|
3
|
+
/**
|
|
4
|
+
* Adapter for converting between mediables timeline format and video engine clips
|
|
5
|
+
* Handles frame/second conversion and clip transformations
|
|
6
|
+
*/
|
|
7
|
+
export declare class TimelineAdapter {
|
|
8
|
+
private fps;
|
|
9
|
+
constructor(fps?: number);
|
|
10
|
+
/**
|
|
11
|
+
* Update the working FPS
|
|
12
|
+
*/
|
|
13
|
+
setFps(fps: number): void;
|
|
14
|
+
/**
|
|
15
|
+
* Convert mediables timeline clip to video engine clip
|
|
16
|
+
*/
|
|
17
|
+
convertTimelineClipToEngine(clip: TimelineClip, source: core.VideoSource): Promise<core.VideoClip>;
|
|
18
|
+
/**
|
|
19
|
+
* Convert video engine clip back to mediables timeline format
|
|
20
|
+
*/
|
|
21
|
+
convertEngineClipToTimeline(engineClip: core.VideoClip, id: string, url: string): TimelineClip;
|
|
22
|
+
/**
|
|
23
|
+
* Convert entire recipe timeline to video engine composition
|
|
24
|
+
*/
|
|
25
|
+
buildCompositionFromRecipe(recipe: VideoRecipe, composition: core.Composition): Promise<void>;
|
|
26
|
+
/**
|
|
27
|
+
* Extract timeline from composition
|
|
28
|
+
*/
|
|
29
|
+
extractTimelineFromComposition(composition: core.Composition): TimelineClip[];
|
|
30
|
+
/**
|
|
31
|
+
* Apply transformations to a clip
|
|
32
|
+
*/
|
|
33
|
+
private applyTransformations;
|
|
34
|
+
/**
|
|
35
|
+
* Convert seconds to frames
|
|
36
|
+
*/
|
|
37
|
+
secondsToFrames(seconds: number): number;
|
|
38
|
+
/**
|
|
39
|
+
* Convert frames to seconds
|
|
40
|
+
*/
|
|
41
|
+
framesToSeconds(frames: number): number;
|
|
42
|
+
/**
|
|
43
|
+
* Get human-readable time from frames
|
|
44
|
+
*/
|
|
45
|
+
framesToTime(frames: number): string;
|
|
46
|
+
/**
|
|
47
|
+
* Format seconds to HH:MM:SS format
|
|
48
|
+
*/
|
|
49
|
+
formatTime(seconds: number): string;
|
|
50
|
+
/**
|
|
51
|
+
* Parse HH:MM:SS or MM:SS format to seconds
|
|
52
|
+
*/
|
|
53
|
+
parseTime(timeString: string): number;
|
|
54
|
+
/**
|
|
55
|
+
* Parse time string to frames
|
|
56
|
+
*/
|
|
57
|
+
timeToFrames(time: string): number;
|
|
58
|
+
}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import * as core from '../core/mediables-engine.js';
|
|
2
|
+
type Composition = core.Composition;
|
|
3
|
+
type Clip = core.Clip;
|
|
4
|
+
export type TransitionType = 'fade' | 'dissolve' | 'wipe-left' | 'wipe-right' | 'wipe-up' | 'wipe-down' | 'slide-left' | 'slide-right' | 'slide-up' | 'slide-down' | 'zoom-in' | 'zoom-out' | 'cross-fade' | 'dip-to-black' | 'dip-to-white';
|
|
5
|
+
export type EasingType = 'linear' | 'easeIn' | 'easeOut' | 'easeInOut';
|
|
6
|
+
export interface TransitionConfig {
|
|
7
|
+
type: TransitionType;
|
|
8
|
+
duration: number;
|
|
9
|
+
easing?: EasingType;
|
|
10
|
+
}
|
|
11
|
+
export interface TransitionPreview {
|
|
12
|
+
type: TransitionType;
|
|
13
|
+
name: string;
|
|
14
|
+
description: string;
|
|
15
|
+
thumbnail?: string;
|
|
16
|
+
}
|
|
17
|
+
export declare class TransitionManager {
|
|
18
|
+
private composition;
|
|
19
|
+
private transitions;
|
|
20
|
+
private nextId;
|
|
21
|
+
static readonly TRANSITIONS: TransitionPreview[];
|
|
22
|
+
constructor(composition: Composition);
|
|
23
|
+
/**
|
|
24
|
+
* Apply a transition between two clips
|
|
25
|
+
*/
|
|
26
|
+
applyTransition(fromClip: Clip, toClip: Clip, config: TransitionConfig): Promise<string>;
|
|
27
|
+
/**
|
|
28
|
+
* Apply fade transition
|
|
29
|
+
*/
|
|
30
|
+
private applyFadeTransition;
|
|
31
|
+
/**
|
|
32
|
+
* Apply cross-fade/dissolve transition
|
|
33
|
+
*/
|
|
34
|
+
private applyCrossFadeTransition;
|
|
35
|
+
/**
|
|
36
|
+
* Apply wipe transition
|
|
37
|
+
*/
|
|
38
|
+
private applyWipeTransition;
|
|
39
|
+
/**
|
|
40
|
+
* Apply slide transition
|
|
41
|
+
*/
|
|
42
|
+
private applySlideTransition;
|
|
43
|
+
/**
|
|
44
|
+
* Apply zoom transition
|
|
45
|
+
*/
|
|
46
|
+
private applyZoomTransition;
|
|
47
|
+
/**
|
|
48
|
+
* Apply dip transition (fade through color)
|
|
49
|
+
*/
|
|
50
|
+
private applyDipTransition;
|
|
51
|
+
/**
|
|
52
|
+
* Find the track containing a clip
|
|
53
|
+
*/
|
|
54
|
+
private findTrackForClip;
|
|
55
|
+
/**
|
|
56
|
+
* Remove a transition
|
|
57
|
+
*/
|
|
58
|
+
removeTransition(id: string): void;
|
|
59
|
+
/**
|
|
60
|
+
* Get all transitions
|
|
61
|
+
*/
|
|
62
|
+
getTransitions(): Map<string, TransitionConfig>;
|
|
63
|
+
/**
|
|
64
|
+
* Get available transition types
|
|
65
|
+
*/
|
|
66
|
+
static getAvailableTransitions(): TransitionPreview[];
|
|
67
|
+
/**
|
|
68
|
+
* Preview a transition (returns a description)
|
|
69
|
+
*/
|
|
70
|
+
static previewTransition(type: TransitionType): TransitionPreview | undefined;
|
|
71
|
+
/**
|
|
72
|
+
* Type guard to check if a clip is a VideoClip
|
|
73
|
+
*/
|
|
74
|
+
private isVideoClip;
|
|
75
|
+
}
|
|
76
|
+
export {};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WebCodecs-based video export using VideoFrame API
|
|
3
|
+
* WebCodecs is the only supported client-side export path.
|
|
4
|
+
*/
|
|
5
|
+
import { MediablesCompositionAdapter } from './MediablesCompositionAdapter';
|
|
6
|
+
interface WebCodecsExportOptions {
|
|
7
|
+
width: number;
|
|
8
|
+
height: number;
|
|
9
|
+
fps: number;
|
|
10
|
+
bitrate?: number;
|
|
11
|
+
onProgress?: (percent: number) => void;
|
|
12
|
+
signal?: AbortSignal;
|
|
13
|
+
}
|
|
14
|
+
export declare class WebCodecsExporter {
|
|
15
|
+
private adapter;
|
|
16
|
+
private composition;
|
|
17
|
+
private videoEncoder;
|
|
18
|
+
private muxer;
|
|
19
|
+
private tempContainerEl;
|
|
20
|
+
constructor(adapter: MediablesCompositionAdapter);
|
|
21
|
+
private isDebug;
|
|
22
|
+
private dbg;
|
|
23
|
+
/**
|
|
24
|
+
* Check if WebCodecs is supported
|
|
25
|
+
*/
|
|
26
|
+
static isSupported(): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Export video using WebCodecs VideoEncoder
|
|
29
|
+
*/
|
|
30
|
+
export(options: WebCodecsExportOptions): Promise<Blob>;
|
|
31
|
+
/**
|
|
32
|
+
* Clean up resources
|
|
33
|
+
*/
|
|
34
|
+
dispose(): void;
|
|
35
|
+
}
|
|
36
|
+
export {};
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Comprehensive CSS Filter System for Video
|
|
3
|
+
* Replaces PIXI filters with native CSS filters for better performance and reliability
|
|
4
|
+
*/
|
|
5
|
+
export interface CSSFilterDefinition {
|
|
6
|
+
id: string;
|
|
7
|
+
name: string;
|
|
8
|
+
category: 'color' | 'blur' | 'distort' | 'stylize' | 'light' | 'adjust';
|
|
9
|
+
cssFunction: (params: any) => string;
|
|
10
|
+
defaultParams: Record<string, any>;
|
|
11
|
+
controls: FilterControl[];
|
|
12
|
+
svgFilter?: (params: any) => string;
|
|
13
|
+
}
|
|
14
|
+
export interface FilterControl {
|
|
15
|
+
id: string;
|
|
16
|
+
type: 'slider' | 'color' | 'select' | 'checkbox';
|
|
17
|
+
label: string;
|
|
18
|
+
property: string;
|
|
19
|
+
min?: number;
|
|
20
|
+
max?: number;
|
|
21
|
+
step?: number;
|
|
22
|
+
default: any;
|
|
23
|
+
unit?: string;
|
|
24
|
+
}
|
|
25
|
+
export interface AppliedCSSFilter {
|
|
26
|
+
id: string;
|
|
27
|
+
filterId: string;
|
|
28
|
+
params: Record<string, any>;
|
|
29
|
+
enabled: boolean;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Comprehensive CSS Filter Definitions
|
|
33
|
+
* Maps all common video effects to CSS/SVG filters
|
|
34
|
+
*/
|
|
35
|
+
export declare const CSS_FILTER_DEFINITIONS: Record<string, CSSFilterDefinition>;
|
|
36
|
+
/**
|
|
37
|
+
* CSS Filter Manager - Handles filter application and combination
|
|
38
|
+
*/
|
|
39
|
+
export declare class CSSFilterManager {
|
|
40
|
+
private filters;
|
|
41
|
+
private svgContainer;
|
|
42
|
+
private instanceCounter;
|
|
43
|
+
constructor();
|
|
44
|
+
/**
|
|
45
|
+
* Initialize SVG container for complex filters
|
|
46
|
+
*/
|
|
47
|
+
private initSVGContainer;
|
|
48
|
+
/**
|
|
49
|
+
* Add or update a filter
|
|
50
|
+
*/
|
|
51
|
+
addFilter(filterId: string, params?: Record<string, any>): string;
|
|
52
|
+
/**
|
|
53
|
+
* Update filter parameters
|
|
54
|
+
*/
|
|
55
|
+
updateFilter(instanceId: string, params: Record<string, any>): void;
|
|
56
|
+
/**
|
|
57
|
+
* Remove a filter
|
|
58
|
+
*/
|
|
59
|
+
removeFilter(instanceId: string): void;
|
|
60
|
+
/**
|
|
61
|
+
* Generate combined CSS filter string
|
|
62
|
+
*/
|
|
63
|
+
getCSSFilterString(): string;
|
|
64
|
+
/**
|
|
65
|
+
* Apply filters to a canvas context
|
|
66
|
+
*/
|
|
67
|
+
applyToContext(ctx: CanvasRenderingContext2D): void;
|
|
68
|
+
/**
|
|
69
|
+
* Clear all filters
|
|
70
|
+
*/
|
|
71
|
+
clear(): void;
|
|
72
|
+
/**
|
|
73
|
+
* Get all active filters
|
|
74
|
+
*/
|
|
75
|
+
getFilters(): AppliedCSSFilter[];
|
|
76
|
+
/**
|
|
77
|
+
* Enable/disable a filter
|
|
78
|
+
*/
|
|
79
|
+
toggleFilter(instanceId: string, enabled?: boolean): void;
|
|
80
|
+
/**
|
|
81
|
+
* Create a preset from current filters
|
|
82
|
+
*/
|
|
83
|
+
createPreset(): AppliedCSSFilter[];
|
|
84
|
+
/**
|
|
85
|
+
* Load a preset
|
|
86
|
+
*/
|
|
87
|
+
loadPreset(preset: AppliedCSSFilter[]): void;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Predefined filter presets for quick application
|
|
91
|
+
*/
|
|
92
|
+
export declare const CSS_FILTER_PRESETS: {
|
|
93
|
+
warmSunset: {
|
|
94
|
+
filterId: string;
|
|
95
|
+
params: {
|
|
96
|
+
value: number;
|
|
97
|
+
};
|
|
98
|
+
}[];
|
|
99
|
+
coolMorning: {
|
|
100
|
+
filterId: string;
|
|
101
|
+
params: {
|
|
102
|
+
value: number;
|
|
103
|
+
};
|
|
104
|
+
}[];
|
|
105
|
+
hollywood: ({
|
|
106
|
+
filterId: string;
|
|
107
|
+
params: {
|
|
108
|
+
value: number;
|
|
109
|
+
color?: undefined;
|
|
110
|
+
intensity?: undefined;
|
|
111
|
+
};
|
|
112
|
+
} | {
|
|
113
|
+
filterId: string;
|
|
114
|
+
params: {
|
|
115
|
+
color: string;
|
|
116
|
+
intensity: number;
|
|
117
|
+
value?: undefined;
|
|
118
|
+
};
|
|
119
|
+
})[];
|
|
120
|
+
valencia: ({
|
|
121
|
+
filterId: string;
|
|
122
|
+
params: {
|
|
123
|
+
amount: number;
|
|
124
|
+
value?: undefined;
|
|
125
|
+
};
|
|
126
|
+
} | {
|
|
127
|
+
filterId: string;
|
|
128
|
+
params: {
|
|
129
|
+
value: number;
|
|
130
|
+
amount?: undefined;
|
|
131
|
+
};
|
|
132
|
+
})[];
|
|
133
|
+
nashville: ({
|
|
134
|
+
filterId: string;
|
|
135
|
+
params: {
|
|
136
|
+
amount: number;
|
|
137
|
+
value?: undefined;
|
|
138
|
+
degrees?: undefined;
|
|
139
|
+
};
|
|
140
|
+
} | {
|
|
141
|
+
filterId: string;
|
|
142
|
+
params: {
|
|
143
|
+
value: number;
|
|
144
|
+
amount?: undefined;
|
|
145
|
+
degrees?: undefined;
|
|
146
|
+
};
|
|
147
|
+
} | {
|
|
148
|
+
filterId: string;
|
|
149
|
+
params: {
|
|
150
|
+
degrees: number;
|
|
151
|
+
amount?: undefined;
|
|
152
|
+
value?: undefined;
|
|
153
|
+
};
|
|
154
|
+
})[];
|
|
155
|
+
oldFilm: ({
|
|
156
|
+
filterId: string;
|
|
157
|
+
params: {
|
|
158
|
+
amount: number;
|
|
159
|
+
value?: undefined;
|
|
160
|
+
radius?: undefined;
|
|
161
|
+
darkness?: undefined;
|
|
162
|
+
};
|
|
163
|
+
} | {
|
|
164
|
+
filterId: string;
|
|
165
|
+
params: {
|
|
166
|
+
value: number;
|
|
167
|
+
amount?: undefined;
|
|
168
|
+
radius?: undefined;
|
|
169
|
+
darkness?: undefined;
|
|
170
|
+
};
|
|
171
|
+
} | {
|
|
172
|
+
filterId: string;
|
|
173
|
+
params: {
|
|
174
|
+
radius: number;
|
|
175
|
+
darkness: number;
|
|
176
|
+
amount?: undefined;
|
|
177
|
+
value?: undefined;
|
|
178
|
+
};
|
|
179
|
+
})[];
|
|
180
|
+
cyberpunk: ({
|
|
181
|
+
filterId: string;
|
|
182
|
+
params: {
|
|
183
|
+
value: number;
|
|
184
|
+
color?: undefined;
|
|
185
|
+
intensity?: undefined;
|
|
186
|
+
offset?: undefined;
|
|
187
|
+
};
|
|
188
|
+
} | {
|
|
189
|
+
filterId: string;
|
|
190
|
+
params: {
|
|
191
|
+
color: string;
|
|
192
|
+
intensity: number;
|
|
193
|
+
value?: undefined;
|
|
194
|
+
offset?: undefined;
|
|
195
|
+
};
|
|
196
|
+
} | {
|
|
197
|
+
filterId: string;
|
|
198
|
+
params: {
|
|
199
|
+
offset: number;
|
|
200
|
+
value?: undefined;
|
|
201
|
+
color?: undefined;
|
|
202
|
+
intensity?: undefined;
|
|
203
|
+
};
|
|
204
|
+
})[];
|
|
205
|
+
};
|
|
206
|
+
/**
|
|
207
|
+
* Export all filter IDs for UI
|
|
208
|
+
*/
|
|
209
|
+
export declare const VIDEO_CSS_FILTER_IDS: string[];
|
|
210
|
+
/**
|
|
211
|
+
* Helper to convert PIXI filter names to CSS filter IDs
|
|
212
|
+
*/
|
|
213
|
+
export declare const PIXI_TO_CSS_FILTER_MAP: Record<string, string | null>;
|