@wix/auto-patterns 1.55.0 → 1.56.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/assets/locale/messages_en.json +7 -0
- package/dist/cjs/cms-fields/components/address/input/address-input.st.css.js +3 -3
- package/dist/cjs/cms-fields/components/address/input/address-input.st.css.js.map +1 -1
- package/dist/cjs/cms-fields/components/audio/actions/actions-menu/actions-menu.st.css.js +3 -3
- package/dist/cjs/cms-fields/components/audio/actions/actions-menu/actions-menu.st.css.js.map +1 -1
- package/dist/cjs/cms-fields/components/audio/audio-field/form-audio-field.st.css.js +4 -4
- package/dist/cjs/cms-fields/components/audio/audio-field/form-audio-field.st.css.js.map +1 -1
- package/dist/cjs/cms-fields/components/audio/audio-player/audio-player.st.css.js +2 -2
- package/dist/cjs/cms-fields/components/audio/audio-player/audio-player.st.css.js.map +1 -1
- package/dist/cjs/cms-fields/components/color-view/color-view.st.css.js +4 -4
- package/dist/cjs/cms-fields/components/color-view/color-view.st.css.js.map +1 -1
- package/dist/cjs/cms-fields/components/delete-dialog/delete-dialog.st.css.js +3 -3
- package/dist/cjs/cms-fields/components/delete-dialog/delete-dialog.st.css.js.map +1 -1
- package/dist/cjs/cms-fields/components/document/form-document-field.st.css.js +7 -7
- package/dist/cjs/cms-fields/components/document/form-document-field.st.css.js.map +1 -1
- package/dist/cjs/cms-fields/components/exclamation/exclamation.st.css.js +5 -5
- package/dist/cjs/cms-fields/components/exclamation/exclamation.st.css.js.map +1 -1
- package/dist/cjs/cms-fields/components/highlighted-text/highlighted-text.st.css.js +5 -5
- package/dist/cjs/cms-fields/components/highlighted-text/highlighted-text.st.css.js.map +1 -1
- package/dist/cjs/cms-fields/components/index.js +6 -0
- package/dist/cjs/cms-fields/components/index.js.map +1 -1
- package/dist/cjs/cms-fields/components/media-control/paste-url-button.st.css.js +4 -4
- package/dist/cjs/cms-fields/components/media-control/paste-url-button.st.css.js.map +1 -1
- package/dist/cjs/cms-fields/components/media-gallery/form-media-gallery-field.st.css.js +10 -10
- package/dist/cjs/cms-fields/components/media-gallery/form-media-gallery-field.st.css.js.map +1 -1
- package/dist/cjs/cms-fields/components/media-image/media-image.st.css.js +4 -4
- package/dist/cjs/cms-fields/components/media-image/media-image.st.css.js.map +1 -1
- package/dist/cjs/cms-fields/components/media-image/overlays/index.js +7 -0
- package/dist/cjs/cms-fields/components/media-image/overlays/index.js.map +1 -0
- package/dist/cjs/cms-fields/components/media-image/overlays/overlay.st.css +41 -0
- package/dist/cjs/cms-fields/components/media-image/overlays/overlay.st.css.js +28 -0
- package/dist/cjs/cms-fields/components/media-image/overlays/overlay.st.css.js.map +1 -0
- package/dist/cjs/cms-fields/components/media-image/overlays/types.js +4 -0
- package/dist/cjs/cms-fields/components/media-image/overlays/types.js.map +1 -0
- package/dist/cjs/cms-fields/components/media-image/overlays/video-indicator-overlay.js +30 -0
- package/dist/cjs/cms-fields/components/media-image/overlays/video-indicator-overlay.js.map +1 -0
- package/dist/cjs/cms-fields/components/media-loader/media-loader.st.css.js +3 -3
- package/dist/cjs/cms-fields/components/media-loader/media-loader.st.css.js.map +1 -1
- package/dist/cjs/cms-fields/components/media-tag/web-media-tag/media-tag.st.css.js +2 -2
- package/dist/cjs/cms-fields/components/media-tag/web-media-tag/media-tag.st.css.js.map +1 -1
- package/dist/cjs/cms-fields/components/multi-document/multi-document-input/form-multi-document.st.css.js +5 -5
- package/dist/cjs/cms-fields/components/multi-document/multi-document-input/form-multi-document.st.css.js.map +1 -1
- package/dist/cjs/cms-fields/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.js +6 -6
- package/dist/cjs/cms-fields/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.js.map +1 -1
- package/dist/cjs/cms-fields/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.js +5 -5
- package/dist/cjs/cms-fields/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.js.map +1 -1
- package/dist/cjs/cms-fields/components/rich-content/rich-content-input/form-read-only-input/rich-content-form-read-only-input.st.css.js +2 -2
- package/dist/cjs/cms-fields/components/rich-content/rich-content-input/form-read-only-input/rich-content-form-read-only-input.st.css.js.map +1 -1
- package/dist/cjs/cms-fields/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.js +3 -3
- package/dist/cjs/cms-fields/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.js.map +1 -1
- package/dist/cjs/cms-fields/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.js +3 -3
- package/dist/cjs/cms-fields/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.js.map +1 -1
- package/dist/cjs/cms-fields/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.js +2 -2
- package/dist/cjs/cms-fields/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.js.map +1 -1
- package/dist/cjs/cms-fields/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.js +9 -9
- package/dist/cjs/cms-fields/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.js.map +1 -1
- package/dist/cjs/cms-fields/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.js +4 -4
- package/dist/cjs/cms-fields/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.js.map +1 -1
- package/dist/cjs/cms-fields/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.js +4 -4
- package/dist/cjs/cms-fields/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.js.map +1 -1
- package/dist/cjs/cms-fields/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.js +18 -18
- package/dist/cjs/cms-fields/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.js.map +1 -1
- package/dist/cjs/cms-fields/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.js +4 -4
- package/dist/cjs/cms-fields/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.js.map +1 -1
- package/dist/cjs/cms-fields/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.js +18 -18
- package/dist/cjs/cms-fields/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.js.map +1 -1
- package/dist/cjs/cms-fields/components/text/text-view.st.css.js +3 -3
- package/dist/cjs/cms-fields/components/text/text-view.st.css.js.map +1 -1
- package/dist/cjs/cms-fields/components/video/index.js +7 -0
- package/dist/cjs/cms-fields/components/video/index.js.map +1 -0
- package/dist/cjs/cms-fields/components/video/video-view.js +54 -0
- package/dist/cjs/cms-fields/components/video/video-view.js.map +1 -0
- package/dist/cjs/cms-fields/validations/video.js +23 -0
- package/dist/cjs/cms-fields/validations/video.js.map +1 -0
- package/dist/cjs/components/fields/DateInput.js +2 -1
- package/dist/cjs/components/fields/DateInput.js.map +1 -1
- package/dist/cjs/components/fields/ImageInput.js +16 -6
- package/dist/cjs/components/fields/ImageInput.js.map +1 -1
- package/dist/cjs/components/fields/ImageViewField.js +58 -0
- package/dist/cjs/components/fields/ImageViewField.js.map +1 -0
- package/dist/cjs/components/fields/Video.js +367 -0
- package/dist/cjs/components/fields/Video.js.map +1 -0
- package/dist/cjs/components/fields/VideoViewField.js +205 -0
- package/dist/cjs/components/fields/VideoViewField.js.map +1 -0
- package/dist/cjs/components/fields/index.js +10 -1
- package/dist/cjs/components/fields/index.js.map +1 -1
- package/dist/cjs/components/fields/mediaConstants.js +19 -0
- package/dist/cjs/components/fields/mediaConstants.js.map +1 -0
- package/dist/cjs/components/fields/useVideoPreview.js +79 -0
- package/dist/cjs/components/fields/useVideoPreview.js.map +1 -0
- package/dist/cjs/components/layouts/ContentCardSkeleton.js +156 -0
- package/dist/cjs/components/layouts/ContentCardSkeleton.js.map +1 -0
- package/dist/cjs/components/layouts/ContentSkeleton.js +3 -3
- package/dist/cjs/components/layouts/ContentSkeleton.js.map +1 -1
- package/dist/cjs/components/layouts/FormField.js +2 -1
- package/dist/cjs/components/layouts/FormField.js.map +1 -1
- package/dist/cjs/components/layouts/ViewField.js +104 -109
- package/dist/cjs/components/layouts/ViewField.js.map +1 -1
- package/dist/cjs/dataSourceAdapters/cms/cmsAdapter.js +1 -0
- package/dist/cjs/dataSourceAdapters/cms/cmsAdapter.js.map +1 -1
- package/dist/cjs/hooks/useColumns.js +42 -20
- package/dist/cjs/hooks/useColumns.js.map +1 -1
- package/dist/cjs/services/translations.js.map +1 -1
- package/dist/cjs/styles.global.css +1 -1
- package/dist/cjs/types/CollectionPageConfig.js.map +1 -1
- package/dist/cjs/types/SchemaConfig.js.map +1 -1
- package/dist/cjs/utils/filterCreators.js +4 -2
- package/dist/cjs/utils/filterCreators.js.map +1 -1
- package/dist/esm/assets/locale/messages_en.json +7 -0
- package/dist/esm/cms-fields/components/address/input/address-input.st.css.js +3 -3
- package/dist/esm/cms-fields/components/address/input/address-input.st.css.js.map +1 -1
- package/dist/esm/cms-fields/components/audio/actions/actions-menu/actions-menu.st.css.js +3 -3
- package/dist/esm/cms-fields/components/audio/actions/actions-menu/actions-menu.st.css.js.map +1 -1
- package/dist/esm/cms-fields/components/audio/audio-field/form-audio-field.st.css.js +4 -4
- package/dist/esm/cms-fields/components/audio/audio-field/form-audio-field.st.css.js.map +1 -1
- package/dist/esm/cms-fields/components/audio/audio-player/audio-player.st.css.js +2 -2
- package/dist/esm/cms-fields/components/audio/audio-player/audio-player.st.css.js.map +1 -1
- package/dist/esm/cms-fields/components/color-view/color-view.st.css.js +4 -4
- package/dist/esm/cms-fields/components/color-view/color-view.st.css.js.map +1 -1
- package/dist/esm/cms-fields/components/delete-dialog/delete-dialog.st.css.js +3 -3
- package/dist/esm/cms-fields/components/delete-dialog/delete-dialog.st.css.js.map +1 -1
- package/dist/esm/cms-fields/components/document/form-document-field.st.css.js +7 -7
- package/dist/esm/cms-fields/components/document/form-document-field.st.css.js.map +1 -1
- package/dist/esm/cms-fields/components/exclamation/exclamation.st.css.js +5 -5
- package/dist/esm/cms-fields/components/exclamation/exclamation.st.css.js.map +1 -1
- package/dist/esm/cms-fields/components/highlighted-text/highlighted-text.st.css.js +5 -5
- package/dist/esm/cms-fields/components/highlighted-text/highlighted-text.st.css.js.map +1 -1
- package/dist/esm/cms-fields/components/index.js +1 -0
- package/dist/esm/cms-fields/components/index.js.map +1 -1
- package/dist/esm/cms-fields/components/media-control/paste-url-button.st.css.js +4 -4
- package/dist/esm/cms-fields/components/media-control/paste-url-button.st.css.js.map +1 -1
- package/dist/esm/cms-fields/components/media-gallery/form-media-gallery-field.st.css.js +10 -10
- package/dist/esm/cms-fields/components/media-gallery/form-media-gallery-field.st.css.js.map +1 -1
- package/dist/esm/cms-fields/components/media-image/media-image.st.css.js +4 -4
- package/dist/esm/cms-fields/components/media-image/media-image.st.css.js.map +1 -1
- package/dist/esm/cms-fields/components/media-image/overlays/index.js +2 -0
- package/dist/esm/cms-fields/components/media-image/overlays/index.js.map +1 -0
- package/dist/esm/cms-fields/components/media-image/overlays/overlay.st.css +41 -0
- package/dist/esm/cms-fields/components/media-image/overlays/overlay.st.css.js +24 -0
- package/dist/esm/cms-fields/components/media-image/overlays/overlay.st.css.js.map +1 -0
- package/dist/esm/cms-fields/components/media-image/overlays/types.js +2 -0
- package/dist/esm/cms-fields/components/media-image/overlays/types.js.map +1 -0
- package/dist/esm/cms-fields/components/media-image/overlays/video-indicator-overlay.js +18 -0
- package/dist/esm/cms-fields/components/media-image/overlays/video-indicator-overlay.js.map +1 -0
- package/dist/esm/cms-fields/components/media-loader/media-loader.st.css.js +3 -3
- package/dist/esm/cms-fields/components/media-loader/media-loader.st.css.js.map +1 -1
- package/dist/esm/cms-fields/components/media-tag/web-media-tag/media-tag.st.css.js +2 -2
- package/dist/esm/cms-fields/components/media-tag/web-media-tag/media-tag.st.css.js.map +1 -1
- package/dist/esm/cms-fields/components/multi-document/multi-document-input/form-multi-document.st.css.js +5 -5
- package/dist/esm/cms-fields/components/multi-document/multi-document-input/form-multi-document.st.css.js.map +1 -1
- package/dist/esm/cms-fields/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.js +6 -6
- package/dist/esm/cms-fields/components/rich-content/rich-content-input/default-value-input/rich-content-default-value-input.st.css.js.map +1 -1
- package/dist/esm/cms-fields/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.js +5 -5
- package/dist/esm/cms-fields/components/rich-content/rich-content-input/form-input/rich-content-form-input.st.css.js.map +1 -1
- package/dist/esm/cms-fields/components/rich-content/rich-content-input/form-read-only-input/rich-content-form-read-only-input.st.css.js +2 -2
- package/dist/esm/cms-fields/components/rich-content/rich-content-input/form-read-only-input/rich-content-form-read-only-input.st.css.js.map +1 -1
- package/dist/esm/cms-fields/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.js +3 -3
- package/dist/esm/cms-fields/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.js.map +1 -1
- package/dist/esm/cms-fields/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.js +3 -3
- package/dist/esm/cms-fields/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.js.map +1 -1
- package/dist/esm/cms-fields/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.js +2 -2
- package/dist/esm/cms-fields/components/rich-content/rich-content-input/rich-content-common/toggle-fullscreen-button/toggle-fullscreen-button.st.css.js.map +1 -1
- package/dist/esm/cms-fields/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.js +9 -9
- package/dist/esm/cms-fields/components/rich-content/rich-content-input/rich-content-editor/rich-content-editor.st.css.js.map +1 -1
- package/dist/esm/cms-fields/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.js +4 -4
- package/dist/esm/cms-fields/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.js.map +1 -1
- package/dist/esm/cms-fields/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.js +4 -4
- package/dist/esm/cms-fields/components/rich-content/rich-content-input/rich-content-viewer/rich-content-viewer.st.css.js.map +1 -1
- package/dist/esm/cms-fields/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.js +18 -18
- package/dist/esm/cms-fields/components/rich-text/rich-text-input/rich-text-editor/rich-editor.st.css.js.map +1 -1
- package/dist/esm/cms-fields/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.js +4 -4
- package/dist/esm/cms-fields/components/rich-text/rich-text-input/rich-text-editor/rich-text-editor.st.css.js.map +1 -1
- package/dist/esm/cms-fields/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.js +18 -18
- package/dist/esm/cms-fields/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.js.map +1 -1
- package/dist/esm/cms-fields/components/text/text-view.st.css.js +3 -3
- package/dist/esm/cms-fields/components/text/text-view.st.css.js.map +1 -1
- package/dist/esm/cms-fields/components/video/index.js +2 -0
- package/dist/esm/cms-fields/components/video/index.js.map +1 -0
- package/dist/esm/cms-fields/components/video/video-view.js +30 -0
- package/dist/esm/cms-fields/components/video/video-view.js.map +1 -0
- package/dist/esm/cms-fields/validations/video.js +17 -0
- package/dist/esm/cms-fields/validations/video.js.map +1 -0
- package/dist/esm/components/fields/DateInput.js +1 -0
- package/dist/esm/components/fields/DateInput.js.map +1 -1
- package/dist/esm/components/fields/ImageInput.js +8 -4
- package/dist/esm/components/fields/ImageInput.js.map +1 -1
- package/dist/esm/components/fields/ImageViewField.js +33 -0
- package/dist/esm/components/fields/ImageViewField.js.map +1 -0
- package/dist/esm/components/fields/Video.js +189 -0
- package/dist/esm/components/fields/Video.js.map +1 -0
- package/dist/esm/components/fields/VideoViewField.js +94 -0
- package/dist/esm/components/fields/VideoViewField.js.map +1 -0
- package/dist/esm/components/fields/index.js +3 -0
- package/dist/esm/components/fields/index.js.map +1 -1
- package/dist/esm/components/fields/mediaConstants.js +15 -0
- package/dist/esm/components/fields/mediaConstants.js.map +1 -0
- package/dist/esm/components/fields/useVideoPreview.js +75 -0
- package/dist/esm/components/fields/useVideoPreview.js.map +1 -0
- package/dist/esm/components/layouts/ContentCardSkeleton.js +81 -0
- package/dist/esm/components/layouts/ContentCardSkeleton.js.map +1 -0
- package/dist/esm/components/layouts/ContentSkeleton.js +3 -3
- package/dist/esm/components/layouts/ContentSkeleton.js.map +1 -1
- package/dist/esm/components/layouts/FormField.js +2 -1
- package/dist/esm/components/layouts/FormField.js.map +1 -1
- package/dist/esm/components/layouts/ViewField.js +49 -54
- package/dist/esm/components/layouts/ViewField.js.map +1 -1
- package/dist/esm/dataSourceAdapters/cms/cmsAdapter.js +1 -0
- package/dist/esm/dataSourceAdapters/cms/cmsAdapter.js.map +1 -1
- package/dist/esm/hooks/useColumns.js +14 -4
- package/dist/esm/hooks/useColumns.js.map +1 -1
- package/dist/esm/services/translations.js.map +1 -1
- package/dist/esm/styles.global.css +1 -1
- package/dist/esm/types/CollectionPageConfig.js.map +1 -1
- package/dist/esm/types/SchemaConfig.js.map +1 -1
- package/dist/esm/utils/filterCreators.js +3 -1
- package/dist/esm/utils/filterCreators.js.map +1 -1
- package/dist/types/cms-fields/components/audio/audio-field/form-audio-field.st.css.d.ts.map +1 -1
- package/dist/types/cms-fields/components/color-view/color-view.st.css.d.ts.map +1 -1
- package/dist/types/cms-fields/components/index.d.ts +1 -0
- package/dist/types/cms-fields/components/index.d.ts.map +1 -1
- package/dist/types/cms-fields/components/media-control/paste-url-button.st.css.d.ts.map +1 -1
- package/dist/types/cms-fields/components/media-gallery/form-media-gallery-field.st.css.d.ts.map +1 -1
- package/dist/types/cms-fields/components/media-gallery/media-gallery-dialog/use-add-link-modal.d.ts +1 -1
- package/dist/types/cms-fields/components/media-image/media-image.st.css.d.ts.map +1 -1
- package/dist/types/cms-fields/components/media-image/overlays/index.d.ts +3 -0
- package/dist/types/cms-fields/components/media-image/overlays/index.d.ts.map +1 -0
- package/dist/types/cms-fields/components/media-image/overlays/overlay.st.css.d.ts +19 -0
- package/dist/types/cms-fields/components/media-image/overlays/overlay.st.css.d.ts.map +1 -0
- package/dist/types/cms-fields/components/media-image/overlays/types.d.ts +10 -0
- package/dist/types/cms-fields/components/media-image/overlays/types.d.ts.map +1 -0
- package/dist/types/cms-fields/components/media-image/overlays/video-indicator-overlay.d.ts +4 -0
- package/dist/types/cms-fields/components/media-image/overlays/video-indicator-overlay.d.ts.map +1 -0
- package/dist/types/cms-fields/components/multi-document/multi-document-input/form-multi-document.st.css.d.ts.map +1 -1
- package/dist/types/cms-fields/components/rich-content/rich-content-input/rich-content-common/fullscreen-modal/fullscreen-modal.st.css.d.ts.map +1 -1
- package/dist/types/cms-fields/components/rich-content/rich-content-input/rich-content-common/publish-loader/publish-loader.st.css.d.ts.map +1 -1
- package/dist/types/cms-fields/components/rich-content/rich-content-input/rich-content-editor/rich-content-toolbar.st.css.d.ts.map +1 -1
- package/dist/types/cms-fields/components/rich-text/rich-text-input/rich-text-editor/toolbar/toolbar.st.css.d.ts.map +1 -1
- package/dist/types/cms-fields/components/text/text-view.st.css.d.ts.map +1 -1
- package/dist/types/cms-fields/components/video/index.d.ts +3 -0
- package/dist/types/cms-fields/components/video/index.d.ts.map +1 -0
- package/dist/types/cms-fields/components/video/video-view.d.ts +9 -0
- package/dist/types/cms-fields/components/video/video-view.d.ts.map +1 -0
- package/dist/types/cms-fields/validations/video.d.ts +3 -0
- package/dist/types/cms-fields/validations/video.d.ts.map +1 -0
- package/dist/types/components/fields/DateInput.d.ts.map +1 -1
- package/dist/types/components/fields/ImageInput.d.ts.map +1 -1
- package/dist/types/components/fields/ImageViewField.d.ts +8 -0
- package/dist/types/components/fields/ImageViewField.d.ts.map +1 -0
- package/dist/types/components/fields/Video.d.ts +6 -0
- package/dist/types/components/fields/Video.d.ts.map +1 -0
- package/dist/types/components/fields/VideoViewField.d.ts +8 -0
- package/dist/types/components/fields/VideoViewField.d.ts.map +1 -0
- package/dist/types/components/fields/index.d.ts +3 -0
- package/dist/types/components/fields/index.d.ts.map +1 -1
- package/dist/types/components/fields/mediaConstants.d.ts +12 -0
- package/dist/types/components/fields/mediaConstants.d.ts.map +1 -0
- package/dist/types/components/fields/useVideoPreview.d.ts +12 -0
- package/dist/types/components/fields/useVideoPreview.d.ts.map +1 -0
- package/dist/types/components/layouts/ContentCardSkeleton.d.ts +11 -0
- package/dist/types/components/layouts/ContentCardSkeleton.d.ts.map +1 -0
- package/dist/types/components/layouts/FormField.d.ts.map +1 -1
- package/dist/types/components/layouts/ViewField.d.ts +1 -1
- package/dist/types/components/layouts/ViewField.d.ts.map +1 -1
- package/dist/types/dataSourceAdapters/cms/cmsAdapter.d.ts.map +1 -1
- package/dist/types/hooks/useColumns.d.ts.map +1 -1
- package/dist/types/services/translations.d.ts +1 -1
- package/dist/types/services/translations.d.ts.map +1 -1
- package/dist/types/types/CollectionPageConfig.d.ts +10 -0
- package/dist/types/types/CollectionPageConfig.d.ts.map +1 -1
- package/dist/types/types/SchemaConfig.d.ts +1 -1
- package/dist/types/types/SchemaConfig.d.ts.map +1 -1
- package/dist/types/utils/filterCreators.d.ts +2 -0
- package/dist/types/utils/filterCreators.d.ts.map +1 -1
- package/mcp-docs/app_config_structure.md +4 -0
- package/mcp-docs/auto-patterns-guide.md +4 -0
- package/package.json +2 -2
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { isMediaVideoURI } from '../auto-cms-field-types';
|
|
2
|
+
export const isValid = data => {
|
|
3
|
+
if (data === null || data === undefined || data === '') {
|
|
4
|
+
return true;
|
|
5
|
+
}
|
|
6
|
+
if (typeof data !== 'string') {
|
|
7
|
+
return false;
|
|
8
|
+
}
|
|
9
|
+
return isMediaVideoURI(data);
|
|
10
|
+
};
|
|
11
|
+
export const hardConvert = data => {
|
|
12
|
+
if (isValid(data)) {
|
|
13
|
+
return data;
|
|
14
|
+
}
|
|
15
|
+
throw new Error(`Cannot convert "${data}" into a video URI`);
|
|
16
|
+
};
|
|
17
|
+
//# sourceMappingURL=video.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["isMediaVideoURI","isValid","data","undefined","hardConvert","Error"],"sources":["../../../../src/cms-fields/validations/video.ts"],"sourcesContent":["import { isMediaVideoURI } from '../auto-cms-field-types';\n\nexport const isValid = (data: unknown): data is string => {\n if (data === null || data === undefined || data === '') {\n return true;\n }\n if (typeof data !== 'string') {\n return false;\n }\n return isMediaVideoURI(data);\n};\n\nexport const hardConvert = (data: unknown): string | null => {\n if (isValid(data)) {\n return data as string;\n }\n throw new Error(`Cannot convert \"${data}\" into a video URI`);\n};\n"],"mappings":"AAAA,SAASA,eAAe,QAAQ,yBAAyB;AAEzD,OAAO,MAAMC,OAAO,GAAIC,IAAa,IAAqB;EACxD,IAAIA,IAAI,KAAK,IAAI,IAAIA,IAAI,KAAKC,SAAS,IAAID,IAAI,KAAK,EAAE,EAAE;IACtD,OAAO,IAAI;EACb;EACA,IAAI,OAAOA,IAAI,KAAK,QAAQ,EAAE;IAC5B,OAAO,KAAK;EACd;EACA,OAAOF,eAAe,CAACE,IAAI,CAAC;AAC9B,CAAC;AAED,OAAO,MAAME,WAAW,GAAIF,IAAa,IAAoB;EAC3D,IAAID,OAAO,CAACC,IAAI,CAAC,EAAE;IACjB,OAAOA,IAAI;EACb;EACA,MAAM,IAAIG,KAAK,CAAC,mBAAmBH,IAAI,oBAAoB,CAAC;AAC9D,CAAC","ignoreList":[]}
|
|
@@ -49,6 +49,7 @@ export const DateInput = props => {
|
|
|
49
49
|
return /*#__PURE__*/React.createElement(FormField, {
|
|
50
50
|
label: field.displayName,
|
|
51
51
|
required: (_field$validation = field.validation) == null ? void 0 : _field$validation.required,
|
|
52
|
+
statusMessage: errorMessage,
|
|
52
53
|
dataHook: dataHook
|
|
53
54
|
}, /*#__PURE__*/React.createElement(DatePicker, {
|
|
54
55
|
ref: internalRef => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","useState","useRef","FormField","DatePicker","getDateWithoutTimezone","getISODateStringWithFixedTimezone","useSelector","useWixPatternsContainer","useController","validateDateField","value","validation","t","format","validationType","required","undefined","dateFormat","DateInput","props","_field$validation","field","dataHook","inputRef","formControl","data","translate","container","initTask","status","controller","name","id","control","defaultValue","rules","validate","error","date","setDate","ref","errorMessage","setErrorMessage","createElement","label","displayName","internalRef","current","focus","_internalRef$state","state","width","onChange","newValue","formattedDate","split","onValidate","_ref","invalid"
|
|
1
|
+
{"version":3,"names":["React","useState","useRef","FormField","DatePicker","getDateWithoutTimezone","getISODateStringWithFixedTimezone","useSelector","useWixPatternsContainer","useController","validateDateField","value","validation","t","format","validationType","required","undefined","dateFormat","DateInput","props","_field$validation","field","dataHook","inputRef","formControl","data","translate","container","initTask","status","controller","name","id","control","defaultValue","rules","validate","error","date","setDate","ref","errorMessage","setErrorMessage","createElement","label","displayName","statusMessage","internalRef","current","focus","_internalRef$state","state","width","onChange","newValue","formattedDate","split","onValidate","_ref","invalid"],"sources":["../../../../src/components/fields/DateInput.tsx"],"sourcesContent":["import React, { useState, useRef } from 'react';\nimport { FormField, DatePicker } from '@wix/design-system';\nimport {\n getDateWithoutTimezone,\n getISODateStringWithFixedTimezone,\n} from './utils/dates';\nimport { BaseInputProps, BaseInputRef } from './types';\nimport { useSelector, useWixPatternsContainer } from '@wix/patterns';\nimport { useController } from '@wix/patterns/form';\nimport { Translate } from '@wix/patterns/core';\n\nexport interface DateProps extends BaseInputProps<string | null> {}\n\nfunction validateDateField(\n value: string | null | undefined,\n validation: DateProps['field']['validation'],\n t: Translate,\n format?: string,\n validationType?: 'outOfBoundsError' | 'formatError' | 'valid',\n) {\n if (\n validation?.required &&\n (value === null || value === undefined || value === '')\n ) {\n return t('cairo.fieldValidation.requiredField');\n } else if (validationType === 'formatError' && format) {\n return t('cairo.customFields.fieldType.date.invalid.value', {\n dateFormat: format,\n });\n }\n\n return '';\n}\n\nexport const DateInput = (props: DateProps) => {\n const { field, dataHook, inputRef, formControl, data } = props;\n const { translate: t, ...container } = useWixPatternsContainer();\n useSelector(() => container.initTask.status);\n\n const controller = useController({\n name: field?.id ?? '',\n control: formControl,\n defaultValue: data?.[field?.id ?? ''],\n rules: {\n validate: (value) => {\n const error = validateDateField(value, field.validation, t);\n return error || true;\n },\n },\n });\n\n const [date, setDate] = useState<Date | undefined>(() => {\n if (controller.field.value) {\n return getDateWithoutTimezone(\n getISODateStringWithFixedTimezone(controller.field.value),\n );\n }\n return undefined;\n });\n\n const ref = useRef<BaseInputRef>({});\n const [errorMessage, setErrorMessage] = useState<string>('');\n\n return (\n <FormField\n label={field.displayName}\n required={field.validation?.required}\n statusMessage={errorMessage}\n dataHook={dataHook}\n >\n <DatePicker\n ref={(internalRef) => {\n inputRef?.(ref.current);\n // @ts-expect-error: WSR internal API hack for focusing\n ref.current.focus = () => internalRef?.state?.inputRef?.focus?.();\n }}\n dataHook={`date-${field.id}`}\n width=\"100%\"\n value={date}\n onChange={(newValue: Date) => {\n setDate(newValue);\n if (newValue) {\n const formattedDate = getISODateStringWithFixedTimezone(newValue);\n controller.field.onChange(formattedDate.split('T')[0]);\n } else {\n controller.field.onChange(null);\n }\n }}\n onValidate={({ validationType, value: newValue, format }) => {\n const error = validateDateField(\n newValue,\n field.validation,\n t,\n format,\n validationType,\n );\n setErrorMessage(error);\n ref.current.invalid = !!error;\n\n if (validationType === 'formatError' && newValue === '') {\n setDate(undefined);\n controller.field.onChange(null);\n }\n }}\n status={errorMessage ? 'error' : undefined}\n statusMessage={errorMessage}\n />\n </FormField>\n );\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
|
-
import { FormField, ImageViewer } from '@wix/design-system';
|
|
2
|
+
import { Box, FormField, ImageViewer } from '@wix/design-system';
|
|
3
3
|
import { dashboard } from '@wix/dashboard';
|
|
4
4
|
import { useIsMobile, useSelector, useWixPatternsContainer } from '@wix/patterns';
|
|
5
5
|
import { useController } from '@wix/patterns/form';
|
|
6
6
|
import { getImageUrl } from '../../utils/media/getImageUrl';
|
|
7
|
+
import { MEDIA_HEIGHT, MEDIA_MAX_WIDTH } from './mediaConstants';
|
|
7
8
|
export const ImageInput = props => {
|
|
8
9
|
var _field$validation2, _controller$fieldStat;
|
|
9
10
|
const {
|
|
@@ -52,6 +53,9 @@ export const ImageInput = props => {
|
|
|
52
53
|
status: controller.fieldState.error ? 'error' : undefined,
|
|
53
54
|
statusMessage: (_controller$fieldStat = controller.fieldState.error) == null ? void 0 : _controller$fieldStat.message,
|
|
54
55
|
dataHook: dataHook
|
|
56
|
+
}, /*#__PURE__*/React.createElement(Box, {
|
|
57
|
+
width: "100%",
|
|
58
|
+
maxWidth: MEDIA_MAX_WIDTH
|
|
55
59
|
}, /*#__PURE__*/React.createElement(ImageViewer, {
|
|
56
60
|
imageUrl: imageUrl,
|
|
57
61
|
dataHook: `image-${field.id}`,
|
|
@@ -60,10 +64,10 @@ export const ImageInput = props => {
|
|
|
60
64
|
updateImageInfo: t('cairo.replace-image.tooltip'),
|
|
61
65
|
removeImageInfo: t('cairo.remove-image.tooltip'),
|
|
62
66
|
addImageInfo: t('cairo.add-image.tooltip'),
|
|
63
|
-
height:
|
|
64
|
-
width: "
|
|
67
|
+
height: MEDIA_HEIGHT,
|
|
68
|
+
width: "100%",
|
|
65
69
|
fit: "cover",
|
|
66
70
|
onRemoveImage: () => controller.field.onChange(null)
|
|
67
|
-
}));
|
|
71
|
+
})));
|
|
68
72
|
};
|
|
69
73
|
//# sourceMappingURL=ImageInput.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","FormField","ImageViewer","dashboard","useIsMobile","useSelector","useWixPatternsContainer","useController","getImageUrl","ImageInput","props","_field$validation2","_controller$fieldStat","field","dataHook","formControl","data","translate","t","container","initTask","status","isMobile","openMedia","_chosenMediaItems$ite","chosenMediaItems","openMediaManager","multiSelect","category","newImage","items","media","image","controller","onChange","error","console","name","id","control","defaultValue","rules","validate","value","_field$validation","validation","required","undefined","imageUrl","createElement","label","displayName","fieldState","statusMessage","message","onAddImage","onUpdateImage","updateImageInfo","removeImageInfo","addImageInfo","height","
|
|
1
|
+
{"version":3,"names":["React","Box","FormField","ImageViewer","dashboard","useIsMobile","useSelector","useWixPatternsContainer","useController","getImageUrl","MEDIA_HEIGHT","MEDIA_MAX_WIDTH","ImageInput","props","_field$validation2","_controller$fieldStat","field","dataHook","formControl","data","translate","t","container","initTask","status","isMobile","openMedia","_chosenMediaItems$ite","chosenMediaItems","openMediaManager","multiSelect","category","newImage","items","media","image","controller","onChange","error","console","name","id","control","defaultValue","rules","validate","value","_field$validation","validation","required","undefined","imageUrl","createElement","label","displayName","fieldState","statusMessage","message","width","maxWidth","onAddImage","onUpdateImage","updateImageInfo","removeImageInfo","addImageInfo","height","fit","onRemoveImage"],"sources":["../../../../src/components/fields/ImageInput.tsx"],"sourcesContent":["import React from 'react';\nimport { Box, FormField, ImageViewer } from '@wix/design-system';\nimport { dashboard } from '@wix/dashboard';\nimport {\n useIsMobile,\n useSelector,\n useWixPatternsContainer,\n} from '@wix/patterns';\nimport { useController } from '@wix/patterns/form';\nimport { getImageUrl } from '../../utils/media/getImageUrl';\nimport { BaseInputProps } from './types';\nimport { MEDIA_HEIGHT, MEDIA_MAX_WIDTH } from './mediaConstants';\n\nexport interface ImageInputProps extends BaseInputProps<string> {}\n\nexport const ImageInput = (props: ImageInputProps) => {\n const { field, dataHook, formControl, data } = props;\n\n const { translate: t, ...container } = useWixPatternsContainer();\n useSelector(() => container.initTask.status);\n const isMobile = useIsMobile();\n\n async function openMedia() {\n try {\n const chosenMediaItems = await dashboard.openMediaManager({\n multiSelect: false,\n category: 'IMAGE',\n });\n\n const newImage = chosenMediaItems?.items[0]?.media?.image?.image;\n\n controller.field.onChange(newImage);\n } catch (error) {\n console.error('Error opening Media Manager or no files selected:', error);\n }\n }\n\n const controller = useController({\n name: field?.id ?? '',\n control: formControl,\n defaultValue: data?.[field?.id ?? ''],\n rules: {\n validate: (value) => {\n if (\n field.validation?.required &&\n (value === null || value === undefined || value === '')\n ) {\n return t('cairo.fieldValidation.requiredField');\n }\n\n return true;\n },\n },\n });\n\n const imageUrl =\n controller.field.value && getImageUrl(controller.field.value);\n\n return (\n <FormField\n label={field.displayName}\n required={field.validation?.required}\n status={controller.fieldState.error ? 'error' : undefined}\n statusMessage={controller.fieldState.error?.message}\n dataHook={dataHook}\n >\n <Box width=\"100%\" maxWidth={MEDIA_MAX_WIDTH}>\n <ImageViewer\n imageUrl={imageUrl}\n dataHook={`image-${field.id}`}\n onAddImage={isMobile ? undefined : () => openMedia()}\n onUpdateImage={isMobile ? undefined : () => openMedia()}\n updateImageInfo={t('cairo.replace-image.tooltip')}\n removeImageInfo={t('cairo.remove-image.tooltip')}\n addImageInfo={t('cairo.add-image.tooltip')}\n height={MEDIA_HEIGHT}\n width=\"100%\"\n fit=\"cover\"\n onRemoveImage={() => controller.field.onChange(null)}\n />\n </Box>\n </FormField>\n );\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Box, Text } from '@wix/design-system';
|
|
3
|
+
import { getImageUrl } from '../../utils/media/getImageUrl';
|
|
4
|
+
import { MEDIA_HEIGHT, MEDIA_MAX_WIDTH, MEDIA_BORDER_RADIUS } from './mediaConstants';
|
|
5
|
+
export const ImageViewField = _ref => {
|
|
6
|
+
let {
|
|
7
|
+
value,
|
|
8
|
+
displayName,
|
|
9
|
+
id
|
|
10
|
+
} = _ref;
|
|
11
|
+
const imageValue = typeof value === 'string' ? value : undefined;
|
|
12
|
+
const imageUrl = getImageUrl(imageValue);
|
|
13
|
+
if (!imageUrl) {
|
|
14
|
+
return /*#__PURE__*/React.createElement(Text, null, "-");
|
|
15
|
+
}
|
|
16
|
+
return /*#__PURE__*/React.createElement(Box, {
|
|
17
|
+
height: MEDIA_HEIGHT,
|
|
18
|
+
width: "100%",
|
|
19
|
+
maxWidth: MEDIA_MAX_WIDTH,
|
|
20
|
+
borderRadius: MEDIA_BORDER_RADIUS,
|
|
21
|
+
overflow: "hidden"
|
|
22
|
+
}, /*#__PURE__*/React.createElement("img", {
|
|
23
|
+
src: imageUrl,
|
|
24
|
+
alt: displayName || id,
|
|
25
|
+
style: {
|
|
26
|
+
height: '100%',
|
|
27
|
+
width: '100%',
|
|
28
|
+
objectFit: 'cover',
|
|
29
|
+
display: 'block'
|
|
30
|
+
}
|
|
31
|
+
}));
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=ImageViewField.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","Box","Text","getImageUrl","MEDIA_HEIGHT","MEDIA_MAX_WIDTH","MEDIA_BORDER_RADIUS","ImageViewField","_ref","value","displayName","id","imageValue","undefined","imageUrl","createElement","height","width","maxWidth","borderRadius","overflow","src","alt","style","objectFit","display"],"sources":["../../../../src/components/fields/ImageViewField.tsx"],"sourcesContent":["import React from 'react';\nimport { Box, Text } from '@wix/design-system';\nimport { getImageUrl } from '../../utils/media/getImageUrl';\nimport {\n MEDIA_HEIGHT,\n MEDIA_MAX_WIDTH,\n MEDIA_BORDER_RADIUS,\n} from './mediaConstants';\n\nexport interface ImageViewFieldProps {\n value: unknown;\n displayName: string;\n id: string;\n}\n\nexport const ImageViewField: React.FC<ImageViewFieldProps> = ({\n value,\n displayName,\n id,\n}) => {\n const imageValue = typeof value === 'string' ? value : undefined;\n const imageUrl = getImageUrl(imageValue);\n\n if (!imageUrl) {\n return <Text>-</Text>;\n }\n\n return (\n <Box\n height={MEDIA_HEIGHT}\n width=\"100%\"\n maxWidth={MEDIA_MAX_WIDTH}\n borderRadius={MEDIA_BORDER_RADIUS}\n overflow=\"hidden\"\n >\n <img\n src={imageUrl}\n alt={displayName || id}\n style={{\n height: '100%',\n width: '100%',\n objectFit: 'cover',\n display: 'block',\n }}\n />\n </Box>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SAASC,GAAG,EAAEC,IAAI,QAAQ,oBAAoB;AAC9C,SAASC,WAAW,QAAQ,+BAA+B;AAC3D,SACEC,YAAY,EACZC,eAAe,EACfC,mBAAmB,QACd,kBAAkB;AAQzB,OAAO,MAAMC,cAA6C,GAAGC,IAAA,IAIvD;EAAA,IAJwD;IAC5DC,KAAK;IACLC,WAAW;IACXC;EACF,CAAC,GAAAH,IAAA;EACC,MAAMI,UAAU,GAAG,OAAOH,KAAK,KAAK,QAAQ,GAAGA,KAAK,GAAGI,SAAS;EAChE,MAAMC,QAAQ,GAAGX,WAAW,CAACS,UAAU,CAAC;EAExC,IAAI,CAACE,QAAQ,EAAE;IACb,oBAAOd,KAAA,CAAAe,aAAA,CAACb,IAAI,QAAC,GAAO,CAAC;EACvB;EAEA,oBACEF,KAAA,CAAAe,aAAA,CAACd,GAAG;IACFe,MAAM,EAAEZ,YAAa;IACrBa,KAAK,EAAC,MAAM;IACZC,QAAQ,EAAEb,eAAgB;IAC1Bc,YAAY,EAAEb,mBAAoB;IAClCc,QAAQ,EAAC;EAAQ,gBAEjBpB,KAAA,CAAAe,aAAA;IACEM,GAAG,EAAEP,QAAS;IACdQ,GAAG,EAAEZ,WAAW,IAAIC,EAAG;IACvBY,KAAK,EAAE;MACLP,MAAM,EAAE,MAAM;MACdC,KAAK,EAAE,MAAM;MACbO,SAAS,EAAE,OAAO;MAClBC,OAAO,EAAE;IACX;EAAE,CACH,CACE,CAAC;AAEV,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { FormField, ImageViewer, Modal, CustomModalLayout, MediaOverlay, Box, Tooltip, IconButton, PopoverMenu, Image } from '@wix/design-system';
|
|
3
|
+
import { Replace, More, Download, Delete, Maximize } from '@wix/wix-ui-icons-common';
|
|
4
|
+
import { dashboard } from '@wix/dashboard';
|
|
5
|
+
import { useIsMobile, useSelector, useWixPatternsContainer } from '@wix/patterns';
|
|
6
|
+
import { useController } from '@wix/patterns/form';
|
|
7
|
+
import { MEDIA_HEIGHT, MEDIA_MAX_WIDTH } from './mediaConstants';
|
|
8
|
+
import { useVideoPreview } from './useVideoPreview';
|
|
9
|
+
import { useAutoPatternsAppContainer } from '../AutoPatternsApp/AutoPatternsAppContainerProvider';
|
|
10
|
+
import { isDataValidOrNotSet } from '../../cms-fields/validations/validations';
|
|
11
|
+
import { TypeMismatchExclamation } from '../../cms-fields';
|
|
12
|
+
import * as videoValidation from '../../cms-fields/validations/video';
|
|
13
|
+
|
|
14
|
+
/** Media descriptor from Wix Media Manager for video files */
|
|
15
|
+
|
|
16
|
+
/** Media item returned from openMediaManager for video category */
|
|
17
|
+
|
|
18
|
+
export const Video = props => {
|
|
19
|
+
var _field$validation2, _controller$fieldStat;
|
|
20
|
+
const {
|
|
21
|
+
field,
|
|
22
|
+
dataHook,
|
|
23
|
+
formControl,
|
|
24
|
+
data
|
|
25
|
+
} = props;
|
|
26
|
+
const {
|
|
27
|
+
translate: t
|
|
28
|
+
} = useAutoPatternsAppContainer();
|
|
29
|
+
const {
|
|
30
|
+
translate: pt,
|
|
31
|
+
...container
|
|
32
|
+
} = useWixPatternsContainer();
|
|
33
|
+
useSelector(() => container.initTask.status);
|
|
34
|
+
const isMobile = useIsMobile();
|
|
35
|
+
const controller = useController({
|
|
36
|
+
name: (field == null ? void 0 : field.id) ?? '',
|
|
37
|
+
control: formControl,
|
|
38
|
+
defaultValue: data == null ? void 0 : data[(field == null ? void 0 : field.id) ?? ''],
|
|
39
|
+
rules: {
|
|
40
|
+
validate: value => {
|
|
41
|
+
var _field$validation;
|
|
42
|
+
if ((_field$validation = field.validation) != null && _field$validation.required && (value === null || value === undefined || value === '')) {
|
|
43
|
+
return pt('cairo.fieldValidation.requiredField');
|
|
44
|
+
}
|
|
45
|
+
return true;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
async function openMedia() {
|
|
50
|
+
try {
|
|
51
|
+
var _chosenMediaItems$ite, _mediaItem$media;
|
|
52
|
+
const chosenMediaItems = await dashboard.openMediaManager({
|
|
53
|
+
multiSelect: false,
|
|
54
|
+
category: 'VIDEO'
|
|
55
|
+
});
|
|
56
|
+
const mediaItem = chosenMediaItems == null || (_chosenMediaItems$ite = chosenMediaItems.items) == null ? void 0 : _chosenMediaItems$ite[0];
|
|
57
|
+
const newVideo = mediaItem == null || (_mediaItem$media = mediaItem.media) == null ? void 0 : _mediaItem$media.video;
|
|
58
|
+
if (newVideo) {
|
|
59
|
+
controller.field.onChange(newVideo);
|
|
60
|
+
}
|
|
61
|
+
} catch (error) {
|
|
62
|
+
console.error('Error opening Media Manager or no files selected:', error);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
const {
|
|
66
|
+
videoUrl,
|
|
67
|
+
posterUrl: imageUrl,
|
|
68
|
+
isPreviewOpen,
|
|
69
|
+
openPreview: handlePreview,
|
|
70
|
+
closePreview: handleClosePreview,
|
|
71
|
+
handleDownload
|
|
72
|
+
} = useVideoPreview({
|
|
73
|
+
videoUri: controller.field.value
|
|
74
|
+
});
|
|
75
|
+
return /*#__PURE__*/React.createElement(FormField, {
|
|
76
|
+
label: field.displayName,
|
|
77
|
+
required: (_field$validation2 = field.validation) == null ? void 0 : _field$validation2.required,
|
|
78
|
+
status: controller.fieldState.error ? 'error' : undefined,
|
|
79
|
+
statusMessage: (_controller$fieldStat = controller.fieldState.error) == null ? void 0 : _controller$fieldStat.message,
|
|
80
|
+
dataHook: dataHook,
|
|
81
|
+
suffix: isDataValidOrNotSet(controller.field.value, videoValidation) ? undefined : /*#__PURE__*/React.createElement(TypeMismatchExclamation, {
|
|
82
|
+
typeName: t('auto-patterns.fields.field_type_video_title'),
|
|
83
|
+
clearButtonText: t('auto-patterns.fields.type_mismatch_clear'),
|
|
84
|
+
convertButtonText: t('auto-patterns.fields.type_mismatch_convert'),
|
|
85
|
+
onClear: () => controller.field.onChange(undefined),
|
|
86
|
+
onChange: value => controller.field.onChange(value),
|
|
87
|
+
convertDisabledText: t('auto-patterns.fields.type_mismatch_convert_disabled'),
|
|
88
|
+
fieldName: field.displayName,
|
|
89
|
+
isConverted: false,
|
|
90
|
+
isConverting: false,
|
|
91
|
+
convertedValue: null,
|
|
92
|
+
tooltipText: t('auto-patterns.fields.type_mismatch_tip', {
|
|
93
|
+
typeName: 'Video'
|
|
94
|
+
})
|
|
95
|
+
})
|
|
96
|
+
}, controller.field.value ? /*#__PURE__*/React.createElement(Box, {
|
|
97
|
+
width: "100%",
|
|
98
|
+
maxWidth: MEDIA_MAX_WIDTH,
|
|
99
|
+
height: MEDIA_HEIGHT
|
|
100
|
+
}, /*#__PURE__*/React.createElement(MediaOverlay, {
|
|
101
|
+
dataHook: `video-${field.id}`,
|
|
102
|
+
hoverSkin: "dark",
|
|
103
|
+
media: /*#__PURE__*/React.createElement(Image, {
|
|
104
|
+
src: imageUrl,
|
|
105
|
+
width: "100%",
|
|
106
|
+
height: MEDIA_HEIGHT,
|
|
107
|
+
fit: "cover"
|
|
108
|
+
})
|
|
109
|
+
}, /*#__PURE__*/React.createElement(MediaOverlay.Content, {
|
|
110
|
+
placement: "middle",
|
|
111
|
+
visible: "hover"
|
|
112
|
+
}, /*#__PURE__*/React.createElement(Box, {
|
|
113
|
+
gap: "SP2"
|
|
114
|
+
}, /*#__PURE__*/React.createElement(Tooltip, {
|
|
115
|
+
content: t('auto-patterns.fields.replace_video_tooltip')
|
|
116
|
+
}, /*#__PURE__*/React.createElement(IconButton, {
|
|
117
|
+
onClick: () => openMedia(),
|
|
118
|
+
skin: "light",
|
|
119
|
+
priority: "secondary",
|
|
120
|
+
disabled: isMobile,
|
|
121
|
+
ariaLabel: t('auto-patterns.fields.replace_video_tooltip'),
|
|
122
|
+
dataHook: `video-replace-${field.id}`
|
|
123
|
+
}, /*#__PURE__*/React.createElement(Replace, null))), /*#__PURE__*/React.createElement(PopoverMenu, {
|
|
124
|
+
triggerElement: _ref => {
|
|
125
|
+
let {
|
|
126
|
+
toggle
|
|
127
|
+
} = _ref;
|
|
128
|
+
return /*#__PURE__*/React.createElement(Tooltip, {
|
|
129
|
+
content: t('auto-patterns.fields.more_actions_tooltip')
|
|
130
|
+
}, /*#__PURE__*/React.createElement(IconButton, {
|
|
131
|
+
priority: "secondary",
|
|
132
|
+
onClick: toggle,
|
|
133
|
+
skin: "light",
|
|
134
|
+
ariaLabel: t('auto-patterns.fields.more_actions_tooltip'),
|
|
135
|
+
dataHook: `video-more-${field.id}`
|
|
136
|
+
}, /*#__PURE__*/React.createElement(More, null)));
|
|
137
|
+
}
|
|
138
|
+
}, /*#__PURE__*/React.createElement(PopoverMenu.MenuItem, {
|
|
139
|
+
prefixIcon: /*#__PURE__*/React.createElement(Maximize, null),
|
|
140
|
+
text: t('auto-patterns.fields.preview_video'),
|
|
141
|
+
onClick: handlePreview,
|
|
142
|
+
disabled: !videoUrl,
|
|
143
|
+
dataHook: `video-preview-${field.id}`
|
|
144
|
+
}), /*#__PURE__*/React.createElement(PopoverMenu.MenuItem, {
|
|
145
|
+
prefixIcon: /*#__PURE__*/React.createElement(Download, null),
|
|
146
|
+
text: t('auto-patterns.fields.download_video'),
|
|
147
|
+
onClick: handleDownload,
|
|
148
|
+
dataHook: `video-download-${field.id}`
|
|
149
|
+
}), /*#__PURE__*/React.createElement(PopoverMenu.Divider, null), /*#__PURE__*/React.createElement(PopoverMenu.MenuItem, {
|
|
150
|
+
prefixIcon: /*#__PURE__*/React.createElement(Delete, null),
|
|
151
|
+
text: t('auto-patterns.fields.remove_video'),
|
|
152
|
+
onClick: () => controller.field.onChange(null),
|
|
153
|
+
dataHook: `video-delete-${field.id}`
|
|
154
|
+
})))))) : /*#__PURE__*/React.createElement(Box, {
|
|
155
|
+
width: "100%",
|
|
156
|
+
maxWidth: MEDIA_MAX_WIDTH
|
|
157
|
+
}, /*#__PURE__*/React.createElement(ImageViewer, {
|
|
158
|
+
dataHook: `video-${field.id}`,
|
|
159
|
+
onAddImage: isMobile ? undefined : () => openMedia(),
|
|
160
|
+
addImageInfo: t('auto-patterns.fields.add_video_tooltip'),
|
|
161
|
+
height: MEDIA_HEIGHT,
|
|
162
|
+
width: "100%"
|
|
163
|
+
})), isPreviewOpen && /*#__PURE__*/React.createElement(Modal, {
|
|
164
|
+
isOpen: isPreviewOpen,
|
|
165
|
+
onRequestClose: handleClosePreview
|
|
166
|
+
}, /*#__PURE__*/React.createElement(CustomModalLayout, {
|
|
167
|
+
title: field.displayName,
|
|
168
|
+
onCloseButtonClick: handleClosePreview,
|
|
169
|
+
content: /*#__PURE__*/React.createElement("div", {
|
|
170
|
+
style: {
|
|
171
|
+
display: 'flex',
|
|
172
|
+
justifyContent: 'center',
|
|
173
|
+
padding: '24px'
|
|
174
|
+
}
|
|
175
|
+
}, /*#__PURE__*/React.createElement("video", {
|
|
176
|
+
controls: true,
|
|
177
|
+
autoPlay: true,
|
|
178
|
+
style: {
|
|
179
|
+
maxWidth: '100%',
|
|
180
|
+
maxHeight: '70vh'
|
|
181
|
+
},
|
|
182
|
+
poster: imageUrl
|
|
183
|
+
}, videoUrl && /*#__PURE__*/React.createElement("source", {
|
|
184
|
+
src: videoUrl,
|
|
185
|
+
type: "video/mp4"
|
|
186
|
+
}), "Your browser does not support the video tag."))
|
|
187
|
+
})));
|
|
188
|
+
};
|
|
189
|
+
//# sourceMappingURL=Video.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","FormField","ImageViewer","Modal","CustomModalLayout","MediaOverlay","Box","Tooltip","IconButton","PopoverMenu","Image","Replace","More","Download","Delete","Maximize","dashboard","useIsMobile","useSelector","useWixPatternsContainer","useController","MEDIA_HEIGHT","MEDIA_MAX_WIDTH","useVideoPreview","useAutoPatternsAppContainer","isDataValidOrNotSet","TypeMismatchExclamation","videoValidation","Video","props","_field$validation2","_controller$fieldStat","field","dataHook","formControl","data","translate","t","pt","container","initTask","status","isMobile","controller","name","id","control","defaultValue","rules","validate","value","_field$validation","validation","required","undefined","openMedia","_chosenMediaItems$ite","_mediaItem$media","chosenMediaItems","openMediaManager","multiSelect","category","mediaItem","items","newVideo","media","video","onChange","error","console","videoUrl","posterUrl","imageUrl","isPreviewOpen","openPreview","handlePreview","closePreview","handleClosePreview","handleDownload","videoUri","createElement","label","displayName","fieldState","statusMessage","message","suffix","typeName","clearButtonText","convertButtonText","onClear","convertDisabledText","fieldName","isConverted","isConverting","convertedValue","tooltipText","width","maxWidth","height","hoverSkin","src","fit","Content","placement","visible","gap","content","onClick","skin","priority","disabled","ariaLabel","triggerElement","_ref","toggle","MenuItem","prefixIcon","text","Divider","onAddImage","addImageInfo","isOpen","onRequestClose","title","onCloseButtonClick","style","display","justifyContent","padding","controls","autoPlay","maxHeight","poster","type"],"sources":["../../../../src/components/fields/Video.tsx"],"sourcesContent":["import React from 'react';\nimport {\n FormField,\n ImageViewer,\n Modal,\n CustomModalLayout,\n MediaOverlay,\n Box,\n Tooltip,\n IconButton,\n PopoverMenu,\n Image,\n} from '@wix/design-system';\nimport {\n Replace,\n More,\n Download,\n Delete,\n Maximize,\n} from '@wix/wix-ui-icons-common';\nimport { dashboard } from '@wix/dashboard';\nimport {\n useIsMobile,\n useSelector,\n useWixPatternsContainer,\n} from '@wix/patterns';\nimport { useController } from '@wix/patterns/form';\nimport { BaseInputProps } from './types';\nimport { MEDIA_HEIGHT, MEDIA_MAX_WIDTH } from './mediaConstants';\nimport { useVideoPreview } from './useVideoPreview';\nimport { useAutoPatternsAppContainer } from '../AutoPatternsApp/AutoPatternsAppContainerProvider';\nimport { isDataValidOrNotSet } from '../../cms-fields/validations/validations';\nimport { TypeMismatchExclamation } from '../../cms-fields';\nimport * as videoValidation from '../../cms-fields/validations/video';\n\n/** Media descriptor from Wix Media Manager for video files */\ninterface VideoMediaDescriptor {\n video?: string;\n}\n\n/** Media item returned from openMediaManager for video category */\ninterface MediaManagerVideoItem {\n _id?: string;\n displayName?: string;\n mediaType?: string;\n media?: VideoMediaDescriptor;\n}\n\nexport interface VideoProps extends BaseInputProps<string> {}\n\nexport const Video = (props: VideoProps) => {\n const { field, dataHook, formControl, data } = props;\n\n const { translate: t } = useAutoPatternsAppContainer();\n const { translate: pt, ...container } = useWixPatternsContainer();\n useSelector(() => container.initTask.status);\n const isMobile = useIsMobile();\n\n const controller = useController({\n name: field?.id ?? '',\n control: formControl,\n defaultValue: data?.[field?.id ?? ''],\n rules: {\n validate: (value) => {\n if (\n field.validation?.required &&\n (value === null || value === undefined || value === '')\n ) {\n return pt('cairo.fieldValidation.requiredField');\n }\n\n return true;\n },\n },\n });\n\n async function openMedia() {\n try {\n const chosenMediaItems = await dashboard.openMediaManager({\n multiSelect: false,\n category: 'VIDEO',\n });\n\n const mediaItem = chosenMediaItems?.items?.[0] as MediaManagerVideoItem | undefined;\n const newVideo = mediaItem?.media?.video;\n if (newVideo) {\n controller.field.onChange(newVideo);\n }\n } catch (error) {\n console.error('Error opening Media Manager or no files selected:', error);\n }\n }\n\n const {\n videoUrl,\n posterUrl: imageUrl,\n isPreviewOpen,\n openPreview: handlePreview,\n closePreview: handleClosePreview,\n handleDownload,\n } = useVideoPreview({ videoUri: controller.field.value });\n\n return (\n <FormField\n label={field.displayName}\n required={field.validation?.required}\n status={controller.fieldState.error ? 'error' : undefined}\n statusMessage={controller.fieldState.error?.message}\n dataHook={dataHook}\n suffix={\n isDataValidOrNotSet(\n controller.field.value,\n videoValidation,\n ) ? undefined : (\n <TypeMismatchExclamation\n typeName={t('auto-patterns.fields.field_type_video_title')}\n clearButtonText={t('auto-patterns.fields.type_mismatch_clear')}\n convertButtonText={t('auto-patterns.fields.type_mismatch_convert')}\n onClear={() => controller.field.onChange(undefined)}\n onChange={(value) => controller.field.onChange(value)}\n convertDisabledText={t(\n 'auto-patterns.fields.type_mismatch_convert_disabled',\n )}\n fieldName={field.displayName}\n isConverted={false}\n isConverting={false}\n convertedValue={null}\n tooltipText={t('auto-patterns.fields.type_mismatch_tip', {\n typeName: 'Video',\n })}\n />\n )\n }\n >\n {controller.field.value ? (\n <Box width=\"100%\" maxWidth={MEDIA_MAX_WIDTH} height={MEDIA_HEIGHT}>\n <MediaOverlay\n dataHook={`video-${field.id}`}\n hoverSkin=\"dark\"\n media={\n <Image\n src={imageUrl}\n width=\"100%\"\n height={MEDIA_HEIGHT}\n fit=\"cover\"\n />\n }\n >\n <MediaOverlay.Content placement=\"middle\" visible=\"hover\">\n <Box gap=\"SP2\">\n <Tooltip content={t('auto-patterns.fields.replace_video_tooltip')}>\n <IconButton\n onClick={() => openMedia()}\n skin=\"light\"\n priority=\"secondary\"\n disabled={isMobile}\n ariaLabel={t('auto-patterns.fields.replace_video_tooltip')}\n dataHook={`video-replace-${field.id}`}\n >\n <Replace />\n </IconButton>\n </Tooltip>\n <PopoverMenu\n triggerElement={({ toggle }) => (\n <Tooltip content={t('auto-patterns.fields.more_actions_tooltip')}>\n <IconButton\n priority=\"secondary\"\n onClick={toggle}\n skin=\"light\"\n ariaLabel={t('auto-patterns.fields.more_actions_tooltip')}\n dataHook={`video-more-${field.id}`}\n >\n <More />\n </IconButton>\n </Tooltip>\n )}\n >\n <PopoverMenu.MenuItem\n prefixIcon={<Maximize />}\n text={t('auto-patterns.fields.preview_video')}\n onClick={handlePreview}\n disabled={!videoUrl}\n dataHook={`video-preview-${field.id}`}\n />\n <PopoverMenu.MenuItem\n prefixIcon={<Download />}\n text={t('auto-patterns.fields.download_video')}\n onClick={handleDownload}\n dataHook={`video-download-${field.id}`}\n />\n <PopoverMenu.Divider />\n <PopoverMenu.MenuItem\n prefixIcon={<Delete />}\n text={t('auto-patterns.fields.remove_video')}\n onClick={() => controller.field.onChange(null)}\n dataHook={`video-delete-${field.id}`}\n />\n </PopoverMenu>\n </Box>\n </MediaOverlay.Content>\n </MediaOverlay>\n </Box>\n ) : (\n <Box width=\"100%\" maxWidth={MEDIA_MAX_WIDTH}>\n <ImageViewer\n dataHook={`video-${field.id}`}\n onAddImage={isMobile ? undefined : () => openMedia()}\n addImageInfo={t('auto-patterns.fields.add_video_tooltip')}\n height={MEDIA_HEIGHT}\n width=\"100%\"\n />\n </Box>\n )}\n {isPreviewOpen && (\n <Modal isOpen={isPreviewOpen} onRequestClose={handleClosePreview}>\n <CustomModalLayout\n title={field.displayName}\n onCloseButtonClick={handleClosePreview}\n content={\n <div\n style={{\n display: 'flex',\n justifyContent: 'center',\n padding: '24px',\n }}\n >\n <video\n controls\n autoPlay\n style={{ maxWidth: '100%', maxHeight: '70vh' }}\n poster={imageUrl}\n >\n {videoUrl && <source src={videoUrl} type=\"video/mp4\" />}\n Your browser does not support the video tag.\n </video>\n </div>\n }\n />\n </Modal>\n )}\n </FormField>\n );\n};\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { Box, CustomModalLayout, IconButton, MediaOverlay, Modal, Text, Tooltip } from '@wix/design-system';
|
|
3
|
+
import { Download, Maximize } from '@wix/wix-ui-icons-common';
|
|
4
|
+
import { VideoView } from '../../cms-fields';
|
|
5
|
+
import { useVideoPreview } from './useVideoPreview';
|
|
6
|
+
import { MEDIA_HEIGHT, MEDIA_MAX_WIDTH, MEDIA_BORDER_RADIUS } from './mediaConstants';
|
|
7
|
+
import { useAutoPatternsAppContainer } from '../AutoPatternsApp/AutoPatternsAppContainerProvider';
|
|
8
|
+
export const VideoViewField = _ref => {
|
|
9
|
+
let {
|
|
10
|
+
value,
|
|
11
|
+
displayName,
|
|
12
|
+
id
|
|
13
|
+
} = _ref;
|
|
14
|
+
const {
|
|
15
|
+
translate: t
|
|
16
|
+
} = useAutoPatternsAppContainer();
|
|
17
|
+
const videoUri = typeof value === 'string' ? value : undefined;
|
|
18
|
+
const {
|
|
19
|
+
videoUrl,
|
|
20
|
+
posterUrl,
|
|
21
|
+
isPreviewOpen,
|
|
22
|
+
openPreview,
|
|
23
|
+
closePreview,
|
|
24
|
+
handleDownload
|
|
25
|
+
} = useVideoPreview({
|
|
26
|
+
videoUri
|
|
27
|
+
});
|
|
28
|
+
if (value === null || value === undefined) {
|
|
29
|
+
return /*#__PURE__*/React.createElement(Text, null, "-");
|
|
30
|
+
}
|
|
31
|
+
return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Box, {
|
|
32
|
+
height: MEDIA_HEIGHT,
|
|
33
|
+
width: "100%",
|
|
34
|
+
maxWidth: MEDIA_MAX_WIDTH,
|
|
35
|
+
borderRadius: MEDIA_BORDER_RADIUS,
|
|
36
|
+
overflow: "hidden"
|
|
37
|
+
}, /*#__PURE__*/React.createElement(MediaOverlay, {
|
|
38
|
+
hoverSkin: "dark",
|
|
39
|
+
media: /*#__PURE__*/React.createElement(VideoView, {
|
|
40
|
+
data: videoUri,
|
|
41
|
+
height: "100%",
|
|
42
|
+
width: "100%",
|
|
43
|
+
borderRadius: MEDIA_BORDER_RADIUS
|
|
44
|
+
})
|
|
45
|
+
}, /*#__PURE__*/React.createElement(MediaOverlay.Content, {
|
|
46
|
+
placement: "middle",
|
|
47
|
+
visible: "hover"
|
|
48
|
+
}, /*#__PURE__*/React.createElement(Box, {
|
|
49
|
+
gap: "12px"
|
|
50
|
+
}, /*#__PURE__*/React.createElement(Tooltip, {
|
|
51
|
+
content: t('auto-patterns.fields.preview_video')
|
|
52
|
+
}, /*#__PURE__*/React.createElement(IconButton, {
|
|
53
|
+
priority: "secondary",
|
|
54
|
+
skin: "light",
|
|
55
|
+
ariaLabel: t('auto-patterns.fields.preview_video'),
|
|
56
|
+
dataHook: `view-video-preview-${id}`,
|
|
57
|
+
onClick: openPreview,
|
|
58
|
+
disabled: !videoUrl
|
|
59
|
+
}, /*#__PURE__*/React.createElement(Maximize, null))), /*#__PURE__*/React.createElement(Tooltip, {
|
|
60
|
+
content: t('auto-patterns.fields.download_video')
|
|
61
|
+
}, /*#__PURE__*/React.createElement(IconButton, {
|
|
62
|
+
priority: "secondary",
|
|
63
|
+
skin: "light",
|
|
64
|
+
ariaLabel: t('auto-patterns.fields.download_video'),
|
|
65
|
+
dataHook: `view-video-download-${id}`,
|
|
66
|
+
onClick: handleDownload,
|
|
67
|
+
disabled: !videoUrl
|
|
68
|
+
}, /*#__PURE__*/React.createElement(Download, null))))))), isPreviewOpen && /*#__PURE__*/React.createElement(Modal, {
|
|
69
|
+
isOpen: isPreviewOpen,
|
|
70
|
+
onRequestClose: closePreview
|
|
71
|
+
}, /*#__PURE__*/React.createElement(CustomModalLayout, {
|
|
72
|
+
title: displayName || id,
|
|
73
|
+
onCloseButtonClick: closePreview,
|
|
74
|
+
content: /*#__PURE__*/React.createElement("div", {
|
|
75
|
+
style: {
|
|
76
|
+
display: 'flex',
|
|
77
|
+
justifyContent: 'center',
|
|
78
|
+
padding: '24px'
|
|
79
|
+
}
|
|
80
|
+
}, /*#__PURE__*/React.createElement("video", {
|
|
81
|
+
controls: true,
|
|
82
|
+
autoPlay: true,
|
|
83
|
+
style: {
|
|
84
|
+
maxWidth: '100%',
|
|
85
|
+
maxHeight: '70vh'
|
|
86
|
+
},
|
|
87
|
+
poster: posterUrl
|
|
88
|
+
}, videoUrl && /*#__PURE__*/React.createElement("source", {
|
|
89
|
+
src: videoUrl,
|
|
90
|
+
type: "video/mp4"
|
|
91
|
+
}), "Your browser does not support the video tag."))
|
|
92
|
+
})));
|
|
93
|
+
};
|
|
94
|
+
//# sourceMappingURL=VideoViewField.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","Box","CustomModalLayout","IconButton","MediaOverlay","Modal","Text","Tooltip","Download","Maximize","VideoView","useVideoPreview","MEDIA_HEIGHT","MEDIA_MAX_WIDTH","MEDIA_BORDER_RADIUS","useAutoPatternsAppContainer","VideoViewField","_ref","value","displayName","id","translate","t","videoUri","undefined","videoUrl","posterUrl","isPreviewOpen","openPreview","closePreview","handleDownload","createElement","Fragment","height","width","maxWidth","borderRadius","overflow","hoverSkin","media","data","Content","placement","visible","gap","content","priority","skin","ariaLabel","dataHook","onClick","disabled","isOpen","onRequestClose","title","onCloseButtonClick","style","display","justifyContent","padding","controls","autoPlay","maxHeight","poster","src","type"],"sources":["../../../../src/components/fields/VideoViewField.tsx"],"sourcesContent":["import React from 'react';\nimport {\n Box,\n CustomModalLayout,\n IconButton,\n MediaOverlay,\n Modal,\n Text,\n Tooltip,\n} from '@wix/design-system';\nimport { Download, Maximize } from '@wix/wix-ui-icons-common';\nimport { VideoView } from '../../cms-fields';\nimport { useVideoPreview } from './useVideoPreview';\nimport { MEDIA_HEIGHT, MEDIA_MAX_WIDTH, MEDIA_BORDER_RADIUS } from './mediaConstants';\nimport { useAutoPatternsAppContainer } from '../AutoPatternsApp/AutoPatternsAppContainerProvider';\n\nexport interface VideoViewFieldProps {\n value: unknown;\n displayName: string;\n id: string;\n}\n\nexport const VideoViewField: React.FC<VideoViewFieldProps> = ({\n value,\n displayName,\n id,\n}) => {\n const { translate: t } = useAutoPatternsAppContainer();\n const videoUri = typeof value === 'string' ? value : undefined;\n\n const {\n videoUrl,\n posterUrl,\n isPreviewOpen,\n openPreview,\n closePreview,\n handleDownload,\n } = useVideoPreview({ videoUri });\n\n if (value === null || value === undefined) {\n return <Text>-</Text>;\n }\n\n return (\n <>\n <Box\n height={MEDIA_HEIGHT}\n width=\"100%\"\n maxWidth={MEDIA_MAX_WIDTH}\n borderRadius={MEDIA_BORDER_RADIUS}\n overflow=\"hidden\"\n >\n <MediaOverlay\n hoverSkin=\"dark\"\n media={\n <VideoView\n data={videoUri}\n height=\"100%\"\n width=\"100%\"\n borderRadius={MEDIA_BORDER_RADIUS}\n />\n }\n >\n <MediaOverlay.Content placement=\"middle\" visible=\"hover\">\n <Box gap=\"12px\">\n <Tooltip content={t('auto-patterns.fields.preview_video')}>\n <IconButton\n priority=\"secondary\"\n skin=\"light\"\n ariaLabel={t('auto-patterns.fields.preview_video')}\n dataHook={`view-video-preview-${id}`}\n onClick={openPreview}\n disabled={!videoUrl}\n >\n <Maximize />\n </IconButton>\n </Tooltip>\n <Tooltip content={t('auto-patterns.fields.download_video')}>\n <IconButton\n priority=\"secondary\"\n skin=\"light\"\n ariaLabel={t('auto-patterns.fields.download_video')}\n dataHook={`view-video-download-${id}`}\n onClick={handleDownload}\n disabled={!videoUrl}\n >\n <Download />\n </IconButton>\n </Tooltip>\n </Box>\n </MediaOverlay.Content>\n </MediaOverlay>\n </Box>\n {isPreviewOpen && (\n <Modal isOpen={isPreviewOpen} onRequestClose={closePreview}>\n <CustomModalLayout\n title={displayName || id}\n onCloseButtonClick={closePreview}\n content={\n <div\n style={{\n display: 'flex',\n justifyContent: 'center',\n padding: '24px',\n }}\n >\n <video\n controls\n autoPlay\n style={{ maxWidth: '100%', maxHeight: '70vh' }}\n poster={posterUrl}\n >\n {videoUrl && <source src={videoUrl} type=\"video/mp4\" />}\n Your browser does not support the video tag.\n </video>\n </div>\n }\n />\n </Modal>\n )}\n </>\n );\n};\n"],"mappings":"AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SACEC,GAAG,EACHC,iBAAiB,EACjBC,UAAU,EACVC,YAAY,EACZC,KAAK,EACLC,IAAI,EACJC,OAAO,QACF,oBAAoB;AAC3B,SAASC,QAAQ,EAAEC,QAAQ,QAAQ,0BAA0B;AAC7D,SAASC,SAAS,QAAQ,kBAAkB;AAC5C,SAASC,eAAe,QAAQ,mBAAmB;AACnD,SAASC,YAAY,EAAEC,eAAe,EAAEC,mBAAmB,QAAQ,kBAAkB;AACrF,SAASC,2BAA2B,QAAQ,qDAAqD;AAQjG,OAAO,MAAMC,cAA6C,GAAGC,IAAA,IAIvD;EAAA,IAJwD;IAC5DC,KAAK;IACLC,WAAW;IACXC;EACF,CAAC,GAAAH,IAAA;EACC,MAAM;IAAEI,SAAS,EAAEC;EAAE,CAAC,GAAGP,2BAA2B,CAAC,CAAC;EACtD,MAAMQ,QAAQ,GAAG,OAAOL,KAAK,KAAK,QAAQ,GAAGA,KAAK,GAAGM,SAAS;EAE9D,MAAM;IACJC,QAAQ;IACRC,SAAS;IACTC,aAAa;IACbC,WAAW;IACXC,YAAY;IACZC;EACF,CAAC,GAAGnB,eAAe,CAAC;IAAEY;EAAS,CAAC,CAAC;EAEjC,IAAIL,KAAK,KAAK,IAAI,IAAIA,KAAK,KAAKM,SAAS,EAAE;IACzC,oBAAOxB,KAAA,CAAA+B,aAAA,CAACzB,IAAI,QAAC,GAAO,CAAC;EACvB;EAEA,oBACEN,KAAA,CAAA+B,aAAA,CAAA/B,KAAA,CAAAgC,QAAA,qBACEhC,KAAA,CAAA+B,aAAA,CAAC9B,GAAG;IACFgC,MAAM,EAAErB,YAAa;IACrBsB,KAAK,EAAC,MAAM;IACZC,QAAQ,EAAEtB,eAAgB;IAC1BuB,YAAY,EAAEtB,mBAAoB;IAClCuB,QAAQ,EAAC;EAAQ,gBAEjBrC,KAAA,CAAA+B,aAAA,CAAC3B,YAAY;IACXkC,SAAS,EAAC,MAAM;IAChBC,KAAK,eACHvC,KAAA,CAAA+B,aAAA,CAACrB,SAAS;MACR8B,IAAI,EAAEjB,QAAS;MACfU,MAAM,EAAC,MAAM;MACbC,KAAK,EAAC,MAAM;MACZE,YAAY,EAAEtB;IAAoB,CACnC;EACF,gBAEDd,KAAA,CAAA+B,aAAA,CAAC3B,YAAY,CAACqC,OAAO;IAACC,SAAS,EAAC,QAAQ;IAACC,OAAO,EAAC;EAAO,gBACtD3C,KAAA,CAAA+B,aAAA,CAAC9B,GAAG;IAAC2C,GAAG,EAAC;EAAM,gBACb5C,KAAA,CAAA+B,aAAA,CAACxB,OAAO;IAACsC,OAAO,EAAEvB,CAAC,CAAC,oCAAoC;EAAE,gBACxDtB,KAAA,CAAA+B,aAAA,CAAC5B,UAAU;IACT2C,QAAQ,EAAC,WAAW;IACpBC,IAAI,EAAC,OAAO;IACZC,SAAS,EAAE1B,CAAC,CAAC,oCAAoC,CAAE;IACnD2B,QAAQ,EAAE,sBAAsB7B,EAAE,EAAG;IACrC8B,OAAO,EAAEtB,WAAY;IACrBuB,QAAQ,EAAE,CAAC1B;EAAS,gBAEpBzB,KAAA,CAAA+B,aAAA,CAACtB,QAAQ,MAAE,CACD,CACL,CAAC,eACVT,KAAA,CAAA+B,aAAA,CAACxB,OAAO;IAACsC,OAAO,EAAEvB,CAAC,CAAC,qCAAqC;EAAE,gBACzDtB,KAAA,CAAA+B,aAAA,CAAC5B,UAAU;IACT2C,QAAQ,EAAC,WAAW;IACpBC,IAAI,EAAC,OAAO;IACZC,SAAS,EAAE1B,CAAC,CAAC,qCAAqC,CAAE;IACpD2B,QAAQ,EAAE,uBAAuB7B,EAAE,EAAG;IACtC8B,OAAO,EAAEpB,cAAe;IACxBqB,QAAQ,EAAE,CAAC1B;EAAS,gBAEpBzB,KAAA,CAAA+B,aAAA,CAACvB,QAAQ,MAAE,CACD,CACL,CACN,CACe,CACV,CACX,CAAC,EACLmB,aAAa,iBACZ3B,KAAA,CAAA+B,aAAA,CAAC1B,KAAK;IAAC+C,MAAM,EAAEzB,aAAc;IAAC0B,cAAc,EAAExB;EAAa,gBACzD7B,KAAA,CAAA+B,aAAA,CAAC7B,iBAAiB;IAChBoD,KAAK,EAAEnC,WAAW,IAAIC,EAAG;IACzBmC,kBAAkB,EAAE1B,YAAa;IACjCgB,OAAO,eACL7C,KAAA,CAAA+B,aAAA;MACEyB,KAAK,EAAE;QACLC,OAAO,EAAE,MAAM;QACfC,cAAc,EAAE,QAAQ;QACxBC,OAAO,EAAE;MACX;IAAE,gBAEF3D,KAAA,CAAA+B,aAAA;MACE6B,QAAQ;MACRC,QAAQ;MACRL,KAAK,EAAE;QAAErB,QAAQ,EAAE,MAAM;QAAE2B,SAAS,EAAE;MAAO,CAAE;MAC/CC,MAAM,EAAErC;IAAU,GAEjBD,QAAQ,iBAAIzB,KAAA,CAAA+B,aAAA;MAAQiC,GAAG,EAAEvC,QAAS;MAACwC,IAAI,EAAC;IAAW,CAAE,CAAC,EAAC,8CAEnD,CACJ;EACN,CACF,CACI,CAET,CAAC;AAEP,CAAC","ignoreList":[]}
|
|
@@ -18,7 +18,10 @@ export { Object } from './Object';
|
|
|
18
18
|
export { Address } from './Address';
|
|
19
19
|
export { RichContent } from './RichContent';
|
|
20
20
|
export { RichText } from './RichText';
|
|
21
|
+
export { Video } from './Video';
|
|
21
22
|
export { MediaGallery } from './MediaGallery';
|
|
23
|
+
export { ImageViewField } from './ImageViewField';
|
|
24
|
+
export { VideoViewField } from './VideoViewField';
|
|
22
25
|
export { Array } from './Array';
|
|
23
26
|
export * from './types';
|
|
24
27
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Audio","Checkbox","Color","Email","DateInput","DateTime","Document","MultiDocument","ImageInput","LongText","Number","Reference","MultiReference","ShortText","Time","Url","Object","Address","RichContent","RichText","MediaGallery","Array"],"sources":["../../../../src/components/fields/index.ts"],"sourcesContent":["export { Audio } from './Audio';\nexport { Checkbox } from './Checkbox';\nexport { Color } from './Color';\nexport { Email } from './Email';\nexport { DateInput } from './DateInput';\nexport { DateTime } from './DateTime';\nexport { Document } from './Document';\nexport { MultiDocument } from './MultiDocument';\nexport { ImageInput } from './ImageInput';\nexport { LongText } from './LongText';\nexport { Number } from './Number';\nexport { Reference } from './Reference';\nexport { MultiReference } from './MultiReference';\nexport { ShortText } from './ShortText';\nexport { Time } from './Time';\nexport { Url } from './Url';\nexport { Object } from './Object';\nexport { Address } from './Address';\nexport { RichContent } from './RichContent';\nexport { RichText } from './RichText';\nexport { MediaGallery } from './MediaGallery';\nexport { Array } from './Array';\nexport * from './types';\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,SAAS;AAC/B,SAASC,QAAQ,QAAQ,YAAY;AACrC,SAASC,KAAK,QAAQ,SAAS;AAC/B,SAASC,KAAK,QAAQ,SAAS;AAC/B,SAASC,SAAS,QAAQ,aAAa;AACvC,SAASC,QAAQ,QAAQ,YAAY;AACrC,SAASC,QAAQ,QAAQ,YAAY;AACrC,SAASC,aAAa,QAAQ,iBAAiB;AAC/C,SAASC,UAAU,QAAQ,cAAc;AACzC,SAASC,QAAQ,QAAQ,YAAY;AACrC,SAASC,MAAM,QAAQ,UAAU;AACjC,SAASC,SAAS,QAAQ,aAAa;AACvC,SAASC,cAAc,QAAQ,kBAAkB;AACjD,SAASC,SAAS,QAAQ,aAAa;AACvC,SAASC,IAAI,QAAQ,QAAQ;AAC7B,SAASC,GAAG,QAAQ,OAAO;AAC3B,SAASC,MAAM,QAAQ,UAAU;AACjC,SAASC,OAAO,QAAQ,WAAW;AACnC,SAASC,WAAW,QAAQ,eAAe;AAC3C,SAASC,QAAQ,QAAQ,YAAY;AACrC,SAASC,YAAY,QAAQ,gBAAgB;AAC7C,SAASC,KAAK,QAAQ,SAAS;AAC/B,cAAc,SAAS","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["Audio","Checkbox","Color","Email","DateInput","DateTime","Document","MultiDocument","ImageInput","LongText","Number","Reference","MultiReference","ShortText","Time","Url","Object","Address","RichContent","RichText","Video","MediaGallery","ImageViewField","VideoViewField","Array"],"sources":["../../../../src/components/fields/index.ts"],"sourcesContent":["export { Audio } from './Audio';\nexport { Checkbox } from './Checkbox';\nexport { Color } from './Color';\nexport { Email } from './Email';\nexport { DateInput } from './DateInput';\nexport { DateTime } from './DateTime';\nexport { Document } from './Document';\nexport { MultiDocument } from './MultiDocument';\nexport { ImageInput } from './ImageInput';\nexport { LongText } from './LongText';\nexport { Number } from './Number';\nexport { Reference } from './Reference';\nexport { MultiReference } from './MultiReference';\nexport { ShortText } from './ShortText';\nexport { Time } from './Time';\nexport { Url } from './Url';\nexport { Object } from './Object';\nexport { Address } from './Address';\nexport { RichContent } from './RichContent';\nexport { RichText } from './RichText';\nexport { Video } from './Video';\nexport { MediaGallery } from './MediaGallery';\nexport { ImageViewField } from './ImageViewField';\nexport { VideoViewField } from './VideoViewField';\nexport { Array } from './Array';\nexport * from './types';\n"],"mappings":"AAAA,SAASA,KAAK,QAAQ,SAAS;AAC/B,SAASC,QAAQ,QAAQ,YAAY;AACrC,SAASC,KAAK,QAAQ,SAAS;AAC/B,SAASC,KAAK,QAAQ,SAAS;AAC/B,SAASC,SAAS,QAAQ,aAAa;AACvC,SAASC,QAAQ,QAAQ,YAAY;AACrC,SAASC,QAAQ,QAAQ,YAAY;AACrC,SAASC,aAAa,QAAQ,iBAAiB;AAC/C,SAASC,UAAU,QAAQ,cAAc;AACzC,SAASC,QAAQ,QAAQ,YAAY;AACrC,SAASC,MAAM,QAAQ,UAAU;AACjC,SAASC,SAAS,QAAQ,aAAa;AACvC,SAASC,cAAc,QAAQ,kBAAkB;AACjD,SAASC,SAAS,QAAQ,aAAa;AACvC,SAASC,IAAI,QAAQ,QAAQ;AAC7B,SAASC,GAAG,QAAQ,OAAO;AAC3B,SAASC,MAAM,QAAQ,UAAU;AACjC,SAASC,OAAO,QAAQ,WAAW;AACnC,SAASC,WAAW,QAAQ,eAAe;AAC3C,SAASC,QAAQ,QAAQ,YAAY;AACrC,SAASC,KAAK,QAAQ,SAAS;AAC/B,SAASC,YAAY,QAAQ,gBAAgB;AAC7C,SAASC,cAAc,QAAQ,kBAAkB;AACjD,SAASC,cAAc,QAAQ,kBAAkB;AACjD,SAASC,KAAK,QAAQ,SAAS;AAC/B,cAAc,SAAS","ignoreList":[]}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared media dimension constants for consistent sizing across form fields.
|
|
3
|
+
* These values ensure media thumbnails maintain a consistent appearance
|
|
4
|
+
* in entity page forms, matching CMS-WEB behavior.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/** Height for media thumbnails in form fields */
|
|
8
|
+
export const MEDIA_HEIGHT = '120px';
|
|
9
|
+
|
|
10
|
+
/** Maximum width for media thumbnails to prevent oversized display */
|
|
11
|
+
export const MEDIA_MAX_WIDTH = '240px';
|
|
12
|
+
|
|
13
|
+
/** Border radius for media thumbnails in view mode */
|
|
14
|
+
export const MEDIA_BORDER_RADIUS = '8px';
|
|
15
|
+
//# sourceMappingURL=mediaConstants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["MEDIA_HEIGHT","MEDIA_MAX_WIDTH","MEDIA_BORDER_RADIUS"],"sources":["../../../../src/components/fields/mediaConstants.ts"],"sourcesContent":["/**\n * Shared media dimension constants for consistent sizing across form fields.\n * These values ensure media thumbnails maintain a consistent appearance\n * in entity page forms, matching CMS-WEB behavior.\n */\n\n/** Height for media thumbnails in form fields */\nexport const MEDIA_HEIGHT = '120px';\n\n/** Maximum width for media thumbnails to prevent oversized display */\nexport const MEDIA_MAX_WIDTH = '240px';\n\n/** Border radius for media thumbnails in view mode */\nexport const MEDIA_BORDER_RADIUS = '8px';\n"],"mappings":"AAAA;AACA;AACA;AACA;AACA;;AAEA;AACA,OAAO,MAAMA,YAAY,GAAG,OAAO;;AAEnC;AACA,OAAO,MAAMC,eAAe,GAAG,OAAO;;AAEtC;AACA,OAAO,MAAMC,mBAAmB,GAAG,KAAK","ignoreList":[]}
|