@wordpress/block-library
Version:
Block library for the WordPress editor.
280 lines (265 loc) • 5.58 kB
JavaScript
import { createElement } from "@wordpress/element";
/**
* External dependencies
*/
import classnames from 'classnames';
/**
* WordPress dependencies
*/
import { createBlock, parseWithAttributeSchema } from '@wordpress/blocks';
import { RichText, useBlockProps } from '@wordpress/block-editor';
export const migrateToQuoteV2 = attributes => {
const {
value,
...restAttributes
} = attributes;
return [{ ...restAttributes
}, value ? parseWithAttributeSchema(value, {
type: 'array',
source: 'query',
selector: 'p',
query: {
content: {
type: 'string',
source: 'html'
}
}
}).map(_ref => {
let {
content
} = _ref;
return createBlock('core/paragraph', {
content
});
}) : createBlock('core/paragraph')];
};
const v3 = {
attributes: {
value: {
type: 'string',
source: 'html',
selector: 'blockquote',
multiline: 'p',
default: '',
__experimentalRole: 'content'
},
citation: {
type: 'string',
source: 'html',
selector: 'cite',
default: '',
__experimentalRole: 'content'
},
align: {
type: 'string'
}
},
supports: {
anchor: true,
__experimentalSlashInserter: true,
typography: {
fontSize: true,
lineHeight: true,
__experimentalFontStyle: true,
__experimentalFontWeight: true,
__experimentalLetterSpacing: true,
__experimentalTextTransform: true,
__experimentalDefaultControls: {
fontSize: true,
fontAppearance: true
}
}
},
save(_ref2) {
let {
attributes
} = _ref2;
const {
align,
value,
citation
} = attributes;
const className = classnames({
[`has-text-align-${align}`]: align
});
return createElement("blockquote", useBlockProps.save({
className
}), createElement(RichText.Content, {
multiline: true,
value: value
}), !RichText.isEmpty(citation) && createElement(RichText.Content, {
tagName: "cite",
value: citation
}));
},
migrate: migrateToQuoteV2
};
const v2 = {
attributes: {
value: {
type: 'string',
source: 'html',
selector: 'blockquote',
multiline: 'p',
default: ''
},
citation: {
type: 'string',
source: 'html',
selector: 'cite',
default: ''
},
align: {
type: 'string'
}
},
migrate: migrateToQuoteV2,
save(_ref3) {
let {
attributes
} = _ref3;
const {
align,
value,
citation
} = attributes;
return createElement("blockquote", {
style: {
textAlign: align ? align : null
}
}, createElement(RichText.Content, {
multiline: true,
value: value
}), !RichText.isEmpty(citation) && createElement(RichText.Content, {
tagName: "cite",
value: citation
}));
}
};
const v1 = {
attributes: {
value: {
type: 'string',
source: 'html',
selector: 'blockquote',
multiline: 'p',
default: ''
},
citation: {
type: 'string',
source: 'html',
selector: 'cite',
default: ''
},
align: {
type: 'string'
},
style: {
type: 'number',
default: 1
}
},
migrate(attributes) {
if (attributes.style === 2) {
const {
style,
...restAttributes
} = attributes;
return migrateToQuoteV2({ ...restAttributes,
className: attributes.className ? attributes.className + ' is-style-large' : 'is-style-large'
});
}
return migrateToQuoteV2(attributes);
},
save(_ref4) {
let {
attributes
} = _ref4;
const {
align,
value,
citation,
style
} = attributes;
return createElement("blockquote", {
className: style === 2 ? 'is-large' : '',
style: {
textAlign: align ? align : null
}
}, createElement(RichText.Content, {
multiline: true,
value: value
}), !RichText.isEmpty(citation) && createElement(RichText.Content, {
tagName: "cite",
value: citation
}));
}
};
const v0 = {
attributes: {
value: {
type: 'string',
source: 'html',
selector: 'blockquote',
multiline: 'p',
default: ''
},
citation: {
type: 'string',
source: 'html',
selector: 'footer',
default: ''
},
align: {
type: 'string'
},
style: {
type: 'number',
default: 1
}
},
migrate(attributes) {
if (!isNaN(parseInt(attributes.style))) {
const {
style,
...restAttributes
} = attributes;
return migrateToQuoteV2({ ...restAttributes
});
}
return migrateToQuoteV2(attributes);
},
save(_ref5) {
let {
attributes
} = _ref5;
const {
align,
value,
citation,
style
} = attributes;
return createElement("blockquote", {
className: `blocks-quote-style-${style}`,
style: {
textAlign: align ? align : null
}
}, createElement(RichText.Content, {
multiline: true,
value: value
}), !RichText.isEmpty(citation) && createElement(RichText.Content, {
tagName: "footer",
value: citation
}));
}
};
/**
* New deprecations need to be placed first
* for them to have higher priority.
*
* Old deprecations may need to be updated as well.
*
* See block-deprecation.md
*/
export default [v3, v2, v1, v0];
//# sourceMappingURL=deprecated.js.map