UNPKG

10.6 kBJavaScriptView Raw
1"use strict";
2
3var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
4
5var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
6
7Object.defineProperty(exports, "__esModule", {
8 value: true
9});
10exports.settings = exports.name = void 0;
11
12var _element = require("@wordpress/element");
13
14var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
15
16var _objectSpread2 = _interopRequireDefault(require("@babel/runtime/helpers/objectSpread"));
17
18var _lodash = require("lodash");
19
20var _classnames3 = _interopRequireDefault(require("classnames"));
21
22var _blocks = require("@wordpress/blocks");
23
24var _blockEditor = require("@wordpress/block-editor");
25
26var _i18n = require("@wordpress/i18n");
27
28var _icon = _interopRequireDefault(require("./icon"));
29
30var _edit = _interopRequireWildcard(require("./edit"));
31
32/**
33 * External dependencies
34 */
35
36/**
37 * WordPress dependencies
38 */
39
40/**
41 * Internal dependencies
42 */
43var blockAttributes = {
44 url: {
45 type: 'string'
46 },
47 id: {
48 type: 'number'
49 },
50 hasParallax: {
51 type: 'boolean',
52 default: false
53 },
54 dimRatio: {
55 type: 'number',
56 default: 50
57 },
58 overlayColor: {
59 type: 'string'
60 },
61 customOverlayColor: {
62 type: 'string'
63 },
64 backgroundType: {
65 type: 'string',
66 default: 'image'
67 },
68 focalPoint: {
69 type: 'object'
70 }
71};
72var name = 'core/cover';
73exports.name = name;
74var settings = {
75 title: (0, _i18n.__)('Cover'),
76 description: (0, _i18n.__)('Add an image or video with a text overlay — great for headers.'),
77 icon: _icon.default,
78 category: 'common',
79 attributes: blockAttributes,
80 supports: {
81 align: true
82 },
83 transforms: {
84 from: [{
85 type: 'block',
86 blocks: ['core/image'],
87 transform: function transform(_ref) {
88 var caption = _ref.caption,
89 url = _ref.url,
90 align = _ref.align,
91 id = _ref.id;
92 return (0, _blocks.createBlock)('core/cover', {
93 title: caption,
94 url: url,
95 align: align,
96 id: id
97 });
98 }
99 }, {
100 type: 'block',
101 blocks: ['core/video'],
102 transform: function transform(_ref2) {
103 var caption = _ref2.caption,
104 src = _ref2.src,
105 align = _ref2.align,
106 id = _ref2.id;
107 return (0, _blocks.createBlock)('core/cover', {
108 title: caption,
109 url: src,
110 align: align,
111 id: id,
112 backgroundType: _edit.VIDEO_BACKGROUND_TYPE
113 });
114 }
115 }],
116 to: [{
117 type: 'block',
118 blocks: ['core/image'],
119 isMatch: function isMatch(_ref3) {
120 var backgroundType = _ref3.backgroundType,
121 url = _ref3.url;
122 return !url || backgroundType === _edit.IMAGE_BACKGROUND_TYPE;
123 },
124 transform: function transform(_ref4) {
125 var title = _ref4.title,
126 url = _ref4.url,
127 align = _ref4.align,
128 id = _ref4.id;
129 return (0, _blocks.createBlock)('core/image', {
130 caption: title,
131 url: url,
132 align: align,
133 id: id
134 });
135 }
136 }, {
137 type: 'block',
138 blocks: ['core/video'],
139 isMatch: function isMatch(_ref5) {
140 var backgroundType = _ref5.backgroundType,
141 url = _ref5.url;
142 return !url || backgroundType === _edit.VIDEO_BACKGROUND_TYPE;
143 },
144 transform: function transform(_ref6) {
145 var title = _ref6.title,
146 url = _ref6.url,
147 align = _ref6.align,
148 id = _ref6.id;
149 return (0, _blocks.createBlock)('core/video', {
150 caption: title,
151 src: url,
152 id: id,
153 align: align
154 });
155 }
156 }]
157 },
158 save: function save(_ref7) {
159 var attributes = _ref7.attributes;
160 var backgroundType = attributes.backgroundType,
161 customOverlayColor = attributes.customOverlayColor,
162 dimRatio = attributes.dimRatio,
163 focalPoint = attributes.focalPoint,
164 hasParallax = attributes.hasParallax,
165 overlayColor = attributes.overlayColor,
166 url = attributes.url;
167 var overlayColorClass = (0, _blockEditor.getColorClassName)('background-color', overlayColor);
168 var style = backgroundType === _edit.IMAGE_BACKGROUND_TYPE ? (0, _edit.backgroundImageStyles)(url) : {};
169
170 if (!overlayColorClass) {
171 style.backgroundColor = customOverlayColor;
172 }
173
174 if (focalPoint && !hasParallax) {
175 style.backgroundPosition = "".concat(focalPoint.x * 100, "% ").concat(focalPoint.y * 100, "%");
176 }
177
178 var classes = (0, _classnames3.default)((0, _edit.dimRatioToClass)(dimRatio), overlayColorClass, {
179 'has-background-dim': dimRatio !== 0,
180 'has-parallax': hasParallax
181 });
182 return (0, _element.createElement)("div", {
183 className: classes,
184 style: style
185 }, _edit.VIDEO_BACKGROUND_TYPE === backgroundType && url && (0, _element.createElement)("video", {
186 className: "wp-block-cover__video-background",
187 autoPlay: true,
188 muted: true,
189 loop: true,
190 src: url
191 }), (0, _element.createElement)("div", {
192 className: "wp-block-cover__inner-container"
193 }, (0, _element.createElement)(_blockEditor.InnerBlocks.Content, null)));
194 },
195 edit: _edit.default,
196 deprecated: [{
197 attributes: (0, _objectSpread2.default)({}, blockAttributes, {
198 title: {
199 type: 'string',
200 source: 'html',
201 selector: 'p'
202 },
203 contentAlign: {
204 type: 'string',
205 default: 'center'
206 }
207 }),
208 supports: {
209 align: true
210 },
211 save: function save(_ref8) {
212 var attributes = _ref8.attributes;
213 var backgroundType = attributes.backgroundType,
214 contentAlign = attributes.contentAlign,
215 customOverlayColor = attributes.customOverlayColor,
216 dimRatio = attributes.dimRatio,
217 focalPoint = attributes.focalPoint,
218 hasParallax = attributes.hasParallax,
219 overlayColor = attributes.overlayColor,
220 title = attributes.title,
221 url = attributes.url;
222 var overlayColorClass = (0, _blockEditor.getColorClassName)('background-color', overlayColor);
223 var style = backgroundType === _edit.IMAGE_BACKGROUND_TYPE ? (0, _edit.backgroundImageStyles)(url) : {};
224
225 if (!overlayColorClass) {
226 style.backgroundColor = customOverlayColor;
227 }
228
229 if (focalPoint && !hasParallax) {
230 style.backgroundPosition = "".concat(focalPoint.x * 100, "% ").concat(focalPoint.y * 100, "%");
231 }
232
233 var classes = (0, _classnames3.default)((0, _edit.dimRatioToClass)(dimRatio), overlayColorClass, (0, _defineProperty2.default)({
234 'has-background-dim': dimRatio !== 0,
235 'has-parallax': hasParallax
236 }, "has-".concat(contentAlign, "-content"), contentAlign !== 'center'));
237 return (0, _element.createElement)("div", {
238 className: classes,
239 style: style
240 }, _edit.VIDEO_BACKGROUND_TYPE === backgroundType && url && (0, _element.createElement)("video", {
241 className: "wp-block-cover__video-background",
242 autoPlay: true,
243 muted: true,
244 loop: true,
245 src: url
246 }), !_blockEditor.RichText.isEmpty(title) && (0, _element.createElement)(_blockEditor.RichText.Content, {
247 tagName: "p",
248 className: "wp-block-cover-text",
249 value: title
250 }));
251 },
252 migrate: function migrate(attributes) {
253 return [(0, _lodash.omit)(attributes, ['title', 'contentAlign']), [(0, _blocks.createBlock)('core/paragraph', {
254 content: attributes.title,
255 align: attributes.contentAlign,
256 fontSize: 'large',
257 placeholder: (0, _i18n.__)('Write title…')
258 })]];
259 }
260 }, {
261 attributes: (0, _objectSpread2.default)({}, blockAttributes, {
262 title: {
263 type: 'string',
264 source: 'html',
265 selector: 'p'
266 },
267 contentAlign: {
268 type: 'string',
269 default: 'center'
270 },
271 align: {
272 type: 'string'
273 }
274 }),
275 supports: {
276 className: false
277 },
278 save: function save(_ref9) {
279 var attributes = _ref9.attributes;
280 var url = attributes.url,
281 title = attributes.title,
282 hasParallax = attributes.hasParallax,
283 dimRatio = attributes.dimRatio,
284 align = attributes.align,
285 contentAlign = attributes.contentAlign,
286 overlayColor = attributes.overlayColor,
287 customOverlayColor = attributes.customOverlayColor;
288 var overlayColorClass = (0, _blockEditor.getColorClassName)('background-color', overlayColor);
289 var style = (0, _edit.backgroundImageStyles)(url);
290
291 if (!overlayColorClass) {
292 style.backgroundColor = customOverlayColor;
293 }
294
295 var classes = (0, _classnames3.default)('wp-block-cover-image', (0, _edit.dimRatioToClass)(dimRatio), overlayColorClass, (0, _defineProperty2.default)({
296 'has-background-dim': dimRatio !== 0,
297 'has-parallax': hasParallax
298 }, "has-".concat(contentAlign, "-content"), contentAlign !== 'center'), align ? "align".concat(align) : null);
299 return (0, _element.createElement)("div", {
300 className: classes,
301 style: style
302 }, !_blockEditor.RichText.isEmpty(title) && (0, _element.createElement)(_blockEditor.RichText.Content, {
303 tagName: "p",
304 className: "wp-block-cover-image-text",
305 value: title
306 }));
307 }
308 }, {
309 attributes: (0, _objectSpread2.default)({}, blockAttributes, {
310 align: {
311 type: 'string'
312 },
313 title: {
314 type: 'string',
315 source: 'html',
316 selector: 'h2'
317 },
318 contentAlign: {
319 type: 'string',
320 default: 'center'
321 }
322 }),
323 save: function save(_ref10) {
324 var attributes = _ref10.attributes;
325 var url = attributes.url,
326 title = attributes.title,
327 hasParallax = attributes.hasParallax,
328 dimRatio = attributes.dimRatio,
329 align = attributes.align;
330 var style = (0, _edit.backgroundImageStyles)(url);
331 var classes = (0, _classnames3.default)((0, _edit.dimRatioToClass)(dimRatio), {
332 'has-background-dim': dimRatio !== 0,
333 'has-parallax': hasParallax
334 }, align ? "align".concat(align) : null);
335 return (0, _element.createElement)("section", {
336 className: classes,
337 style: style
338 }, (0, _element.createElement)(_blockEditor.RichText.Content, {
339 tagName: "h2",
340 value: title
341 }));
342 }
343 }]
344};
345exports.settings = settings;
346//# sourceMappingURL=index.js.map
\No newline at end of file