UNPKG

4.45 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
4
5Object.defineProperty(exports, "__esModule", {
6 value: true
7});
8exports.settings = exports.name = void 0;
9
10var _element = require("@wordpress/element");
11
12var _blob = require("@wordpress/blob");
13
14var _blocks = require("@wordpress/blocks");
15
16var _blockEditor = require("@wordpress/block-editor");
17
18var _i18n = require("@wordpress/i18n");
19
20var _edit = _interopRequireDefault(require("./edit"));
21
22var _icon = _interopRequireDefault(require("./icon"));
23
24/**
25 * WordPress dependencies
26 */
27
28/**
29 * Internal dependencies
30 */
31var name = 'core/video';
32exports.name = name;
33var settings = {
34 title: (0, _i18n.__)('Video'),
35 description: (0, _i18n.__)('Embed a video from your media library or upload a new one.'),
36 icon: _icon.default,
37 keywords: [(0, _i18n.__)('movie')],
38 category: 'common',
39 attributes: {
40 autoplay: {
41 type: 'boolean',
42 source: 'attribute',
43 selector: 'video',
44 attribute: 'autoplay'
45 },
46 caption: {
47 type: 'string',
48 source: 'html',
49 selector: 'figcaption'
50 },
51 controls: {
52 type: 'boolean',
53 source: 'attribute',
54 selector: 'video',
55 attribute: 'controls',
56 default: true
57 },
58 id: {
59 type: 'number'
60 },
61 loop: {
62 type: 'boolean',
63 source: 'attribute',
64 selector: 'video',
65 attribute: 'loop'
66 },
67 muted: {
68 type: 'boolean',
69 source: 'attribute',
70 selector: 'video',
71 attribute: 'muted'
72 },
73 poster: {
74 type: 'string',
75 source: 'attribute',
76 selector: 'video',
77 attribute: 'poster'
78 },
79 preload: {
80 type: 'string',
81 source: 'attribute',
82 selector: 'video',
83 attribute: 'preload',
84 default: 'metadata'
85 },
86 src: {
87 type: 'string',
88 source: 'attribute',
89 selector: 'video',
90 attribute: 'src'
91 }
92 },
93 transforms: {
94 from: [{
95 type: 'files',
96 isMatch: function isMatch(files) {
97 return files.length === 1 && files[0].type.indexOf('video/') === 0;
98 },
99 transform: function transform(files) {
100 var file = files[0]; // We don't need to upload the media directly here
101 // It's already done as part of the `componentDidMount`
102 // in the video block
103
104 var block = (0, _blocks.createBlock)('core/video', {
105 src: (0, _blob.createBlobURL)(file)
106 });
107 return block;
108 }
109 }, {
110 type: 'shortcode',
111 tag: 'video',
112 attributes: {
113 src: {
114 type: 'string',
115 shortcode: function shortcode(_ref) {
116 var src = _ref.named.src;
117 return src;
118 }
119 },
120 poster: {
121 type: 'string',
122 shortcode: function shortcode(_ref2) {
123 var poster = _ref2.named.poster;
124 return poster;
125 }
126 },
127 loop: {
128 type: 'string',
129 shortcode: function shortcode(_ref3) {
130 var loop = _ref3.named.loop;
131 return loop;
132 }
133 },
134 autoplay: {
135 type: 'string',
136 shortcode: function shortcode(_ref4) {
137 var autoplay = _ref4.named.autoplay;
138 return autoplay;
139 }
140 },
141 preload: {
142 type: 'string',
143 shortcode: function shortcode(_ref5) {
144 var preload = _ref5.named.preload;
145 return preload;
146 }
147 }
148 }
149 }]
150 },
151 supports: {
152 align: true
153 },
154 edit: _edit.default,
155 save: function save(_ref6) {
156 var attributes = _ref6.attributes;
157 var autoplay = attributes.autoplay,
158 caption = attributes.caption,
159 controls = attributes.controls,
160 loop = attributes.loop,
161 muted = attributes.muted,
162 poster = attributes.poster,
163 preload = attributes.preload,
164 src = attributes.src;
165 return (0, _element.createElement)("figure", null, src && (0, _element.createElement)("video", {
166 autoPlay: autoplay,
167 controls: controls,
168 loop: loop,
169 muted: muted,
170 poster: poster,
171 preload: preload !== 'metadata' ? preload : undefined,
172 src: src
173 }), !_blockEditor.RichText.isEmpty(caption) && (0, _element.createElement)(_blockEditor.RichText.Content, {
174 tagName: "figcaption",
175 value: caption
176 }));
177 }
178};
179exports.settings = settings;
180//# sourceMappingURL=index.js.map
\No newline at end of file