@wordpress/block-library 8.25.1-next.79a6196f.0 → 8.27.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/CHANGELOG.md +4 -0
- package/build/avatar/edit.js +2 -2
- package/build/avatar/edit.js.map +1 -1
- package/build/block/edit.js +75 -12
- package/build/block/edit.js.map +1 -1
- package/build/block/{v1/edit.native.js → edit.native.js} +4 -4
- package/build/block/edit.native.js.map +1 -0
- package/build/block/index.js +5 -3
- package/build/block/index.js.map +1 -1
- package/build/button/edit.js +24 -6
- package/build/button/edit.js.map +1 -1
- package/build/button/index.js +1 -0
- package/build/button/index.js.map +1 -1
- package/build/button/save.js +3 -1
- package/build/button/save.js.map +1 -1
- package/build/embed/edit.js +3 -2
- package/build/embed/edit.js.map +1 -1
- package/build/file/index.js +0 -1
- package/build/file/index.js.map +1 -1
- package/build/footnotes/edit.js +2 -1
- package/build/footnotes/edit.js.map +1 -1
- package/build/footnotes/format.js +17 -19
- package/build/footnotes/format.js.map +1 -1
- package/build/heading/edit.js +2 -1
- package/build/heading/edit.js.map +1 -1
- package/build/heading/edit.native.js +141 -0
- package/build/heading/edit.native.js.map +1 -0
- package/build/heading/index.js +1 -0
- package/build/heading/index.js.map +1 -1
- package/build/image/edit.js +8 -4
- package/build/image/edit.js.map +1 -1
- package/build/image/image.js +33 -7
- package/build/image/image.js.map +1 -1
- package/build/image/index.js +6 -3
- package/build/image/index.js.map +1 -1
- package/build/more/index.js +4 -0
- package/build/more/index.js.map +1 -1
- package/build/navigation/edit/index.js +2 -2
- package/build/navigation/edit/index.js.map +1 -1
- package/build/navigation/index.js +0 -1
- package/build/navigation/index.js.map +1 -1
- package/build/paragraph/edit.js +2 -1
- package/build/paragraph/edit.js.map +1 -1
- package/build/paragraph/index.js +1 -1
- package/build/paragraph/transforms.js +1 -1
- package/build/post-content/edit.js +2 -2
- package/build/post-content/edit.js.map +1 -1
- package/build/post-date/edit.js +1 -1
- package/build/post-date/edit.js.map +1 -1
- package/build/post-navigation-link/edit.js +43 -2
- package/build/post-navigation-link/edit.js.map +1 -1
- package/build/post-navigation-link/index.js +8 -0
- package/build/post-navigation-link/index.js.map +1 -1
- package/build/pullquote/index.js +4 -0
- package/build/pullquote/index.js.map +1 -1
- package/build/query/edit/inspector-controls/index.js +3 -3
- package/build/query/edit/inspector-controls/index.js.map +1 -1
- package/build/query/edit/query-content.js +2 -2
- package/build/query/edit/query-content.js.map +1 -1
- package/build/query/edit/query-placeholder.js +6 -7
- package/build/query/edit/query-placeholder.js.map +1 -1
- package/build/query/index.js +1 -2
- package/build/query/index.js.map +1 -1
- package/build/query/variations.js +8 -1
- package/build/query/variations.js.map +1 -1
- package/build/query/view.js +31 -12
- package/build/query/view.js.map +1 -1
- package/build/search/index.js +0 -1
- package/build/search/index.js.map +1 -1
- package/build/table-of-contents/hooks.js +2 -2
- package/build/table-of-contents/hooks.js.map +1 -1
- package/build/template-part/edit/advanced-controls.js +1 -4
- package/build/template-part/edit/advanced-controls.js.map +1 -1
- package/build/template-part/edit/index.js +39 -17
- package/build/template-part/edit/index.js.map +1 -1
- package/build/video/edit.native.js +7 -2
- package/build/video/edit.native.js.map +1 -1
- package/build/video/transforms.js +17 -0
- package/build/video/transforms.js.map +1 -1
- package/build-module/avatar/edit.js +2 -2
- package/build-module/avatar/edit.js.map +1 -1
- package/build-module/block/edit.js +74 -11
- package/build-module/block/edit.js.map +1 -1
- package/build-module/block/{v1/edit.native.js → edit.native.js} +3 -3
- package/build-module/block/edit.native.js.map +1 -0
- package/build-module/block/index.js +5 -3
- package/build-module/block/index.js.map +1 -1
- package/build-module/button/edit.js +25 -7
- package/build-module/button/edit.js.map +1 -1
- package/build-module/button/index.js +1 -0
- package/build-module/button/index.js.map +1 -1
- package/build-module/button/save.js +4 -2
- package/build-module/button/save.js.map +1 -1
- package/build-module/embed/edit.js +3 -2
- package/build-module/embed/edit.js.map +1 -1
- package/build-module/file/index.js +0 -1
- package/build-module/file/index.js.map +1 -1
- package/build-module/footnotes/edit.js +2 -1
- package/build-module/footnotes/edit.js.map +1 -1
- package/build-module/footnotes/format.js +17 -19
- package/build-module/footnotes/format.js.map +1 -1
- package/build-module/heading/edit.js +3 -2
- package/build-module/heading/edit.js.map +1 -1
- package/build-module/heading/edit.native.js +132 -0
- package/build-module/heading/edit.native.js.map +1 -0
- package/build-module/heading/index.js +1 -0
- package/build-module/heading/index.js.map +1 -1
- package/build-module/image/edit.js +9 -5
- package/build-module/image/edit.js.map +1 -1
- package/build-module/image/image.js +33 -7
- package/build-module/image/image.js.map +1 -1
- package/build-module/image/index.js +6 -3
- package/build-module/image/index.js.map +1 -1
- package/build-module/more/index.js +4 -0
- package/build-module/more/index.js.map +1 -1
- package/build-module/navigation/edit/index.js +1 -1
- package/build-module/navigation/edit/index.js.map +1 -1
- package/build-module/navigation/index.js +0 -1
- package/build-module/navigation/index.js.map +1 -1
- package/build-module/paragraph/edit.js +3 -2
- package/build-module/paragraph/edit.js.map +1 -1
- package/build-module/paragraph/index.js +1 -1
- package/build-module/paragraph/transforms.js +1 -1
- package/build-module/post-content/edit.js +1 -1
- package/build-module/post-content/edit.js.map +1 -1
- package/build-module/post-date/edit.js +1 -1
- package/build-module/post-date/edit.js.map +1 -1
- package/build-module/post-navigation-link/edit.js +44 -3
- package/build-module/post-navigation-link/edit.js.map +1 -1
- package/build-module/post-navigation-link/index.js +8 -0
- package/build-module/post-navigation-link/index.js.map +1 -1
- package/build-module/pullquote/index.js +4 -0
- package/build-module/pullquote/index.js.map +1 -1
- package/build-module/query/edit/inspector-controls/index.js +4 -4
- package/build-module/query/edit/inspector-controls/index.js.map +1 -1
- package/build-module/query/edit/query-content.js +2 -2
- package/build-module/query/edit/query-content.js.map +1 -1
- package/build-module/query/edit/query-placeholder.js +7 -8
- package/build-module/query/edit/query-placeholder.js.map +1 -1
- package/build-module/query/index.js +1 -2
- package/build-module/query/index.js.map +1 -1
- package/build-module/query/variations.js +8 -1
- package/build-module/query/variations.js.map +1 -1
- package/build-module/query/view.js +30 -9
- package/build-module/query/view.js.map +1 -1
- package/build-module/search/index.js +0 -1
- package/build-module/search/index.js.map +1 -1
- package/build-module/table-of-contents/hooks.js +2 -2
- package/build-module/table-of-contents/hooks.js.map +1 -1
- package/build-module/template-part/edit/advanced-controls.js +1 -4
- package/build-module/template-part/edit/advanced-controls.js.map +1 -1
- package/build-module/template-part/edit/index.js +38 -16
- package/build-module/template-part/edit/index.js.map +1 -1
- package/build-module/video/edit.native.js +7 -2
- package/build-module/video/edit.native.js.map +1 -1
- package/build-module/video/transforms.js +17 -0
- package/build-module/video/transforms.js.map +1 -1
- package/build-style/common-rtl.css +4 -2
- package/build-style/common.css +4 -2
- package/build-style/cover/style-rtl.css +1 -2
- package/build-style/cover/style.css +1 -2
- package/build-style/editor-rtl.css +6 -4
- package/build-style/editor.css +6 -4
- package/build-style/gallery/style-rtl.css +2 -4
- package/build-style/gallery/style.css +2 -4
- package/build-style/image/editor-rtl.css +6 -0
- package/build-style/image/editor.css +6 -0
- package/build-style/page-list/editor-rtl.css +0 -4
- package/build-style/page-list/editor.css +0 -4
- package/build-style/pullquote/style-rtl.css +10 -1
- package/build-style/pullquote/style.css +10 -1
- package/build-style/search/style-rtl.css +2 -1
- package/build-style/search/style.css +2 -1
- package/build-style/style-rtl.css +19 -11
- package/build-style/style.css +19 -11
- package/build-style/video/style-rtl.css +1 -2
- package/build-style/video/style.css +1 -2
- package/package.json +34 -32
- package/src/avatar/edit.js +16 -18
- package/src/block/block.json +3 -0
- package/src/block/edit.js +96 -14
- package/src/block/{v1/edit.native.js → edit.native.js} +4 -4
- package/src/block/index.js +2 -3
- package/src/block/index.php +3 -31
- package/src/button/block.json +1 -0
- package/src/button/edit.js +76 -43
- package/src/button/save.js +3 -0
- package/src/embed/edit.js +3 -2
- package/src/file/block.json +0 -1
- package/src/file/index.php +11 -57
- package/src/footnotes/edit.js +2 -1
- package/src/footnotes/format.js +34 -31
- package/src/footnotes/index.php +20 -11
- package/src/heading/block.json +1 -0
- package/src/heading/edit.js +18 -14
- package/src/heading/edit.native.js +144 -0
- package/src/image/block.json +7 -3
- package/src/image/edit.js +19 -6
- package/src/image/editor.scss +6 -1
- package/src/image/image.js +101 -42
- package/src/image/index.js +6 -0
- package/src/image/index.php +14 -51
- package/src/more/index.js +6 -0
- package/src/navigation/block.json +0 -1
- package/src/navigation/edit/index.js +2 -2
- package/src/navigation/index.php +777 -28
- package/src/navigation-link/index.php +78 -16
- package/src/page-list/editor.scss +0 -4
- package/src/paragraph/block.json +1 -1
- package/src/paragraph/edit.js +23 -19
- package/src/post-content/edit.js +2 -2
- package/src/post-date/edit.js +38 -33
- package/src/post-navigation-link/block.json +8 -0
- package/src/post-navigation-link/edit.js +63 -1
- package/src/post-navigation-link/index.php +17 -3
- package/src/post-terms/index.php +13 -4
- package/src/pullquote/block.json +4 -0
- package/src/pullquote/style.scss +13 -1
- package/src/query/block.json +1 -2
- package/src/query/edit/inspector-controls/index.js +137 -146
- package/src/query/edit/query-content.js +9 -7
- package/src/query/edit/query-placeholder.js +11 -11
- package/src/query/index.php +33 -71
- package/src/query/variations.js +4 -0
- package/src/query/view.js +24 -19
- package/src/search/block.json +0 -1
- package/src/search/index.php +18 -36
- package/src/table-of-contents/hooks.js +2 -2
- package/src/template-part/edit/advanced-controls.js +2 -3
- package/src/template-part/edit/index.js +77 -50
- package/src/template-part/index.php +2 -2
- package/src/video/edit.native.js +5 -2
- package/src/video/test/edit.native.js +38 -0
- package/src/video/transforms.js +32 -0
- package/tsconfig.json +1 -0
- package/build/block/v1/edit.js +0 -116
- package/build/block/v1/edit.js.map +0 -1
- package/build/block/v1/edit.native.js.map +0 -1
- package/build-module/block/v1/edit.js +0 -108
- package/build-module/block/v1/edit.js.map +0 -1
- package/build-module/block/v1/edit.native.js.map +0 -1
- package/src/block/v1/edit.js +0 -163
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _react = require("react");
|
|
9
|
+
var _classnames = _interopRequireDefault(require("classnames"));
|
|
10
|
+
var _i18n = require("@wordpress/i18n");
|
|
11
|
+
var _element = require("@wordpress/element");
|
|
12
|
+
var _data = require("@wordpress/data");
|
|
13
|
+
var _blocks = require("@wordpress/blocks");
|
|
14
|
+
var _blockEditor = require("@wordpress/block-editor");
|
|
15
|
+
var _autogenerateAnchors = require("./autogenerate-anchors");
|
|
16
|
+
/**
|
|
17
|
+
* External dependencies
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* WordPress dependencies
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
/**
|
|
25
|
+
* Internal dependencies
|
|
26
|
+
*/
|
|
27
|
+
|
|
28
|
+
function HeadingEdit({
|
|
29
|
+
attributes,
|
|
30
|
+
setAttributes,
|
|
31
|
+
mergeBlocks,
|
|
32
|
+
onReplace,
|
|
33
|
+
style,
|
|
34
|
+
clientId
|
|
35
|
+
}) {
|
|
36
|
+
const {
|
|
37
|
+
textAlign,
|
|
38
|
+
content,
|
|
39
|
+
level,
|
|
40
|
+
placeholder,
|
|
41
|
+
anchor
|
|
42
|
+
} = attributes;
|
|
43
|
+
const tagName = 'h' + level;
|
|
44
|
+
const blockProps = (0, _blockEditor.useBlockProps)({
|
|
45
|
+
className: (0, _classnames.default)({
|
|
46
|
+
[`has-text-align-${textAlign}`]: textAlign
|
|
47
|
+
}),
|
|
48
|
+
style
|
|
49
|
+
});
|
|
50
|
+
const {
|
|
51
|
+
canGenerateAnchors
|
|
52
|
+
} = (0, _data.useSelect)(select => {
|
|
53
|
+
const {
|
|
54
|
+
getGlobalBlockCount,
|
|
55
|
+
getSettings
|
|
56
|
+
} = select(_blockEditor.store);
|
|
57
|
+
const settings = getSettings();
|
|
58
|
+
return {
|
|
59
|
+
canGenerateAnchors: !!settings.generateAnchors || getGlobalBlockCount('core/table-of-contents') > 0
|
|
60
|
+
};
|
|
61
|
+
}, []);
|
|
62
|
+
const {
|
|
63
|
+
__unstableMarkNextChangeAsNotPersistent
|
|
64
|
+
} = (0, _data.useDispatch)(_blockEditor.store);
|
|
65
|
+
|
|
66
|
+
// Initially set anchor for headings that have content but no anchor set.
|
|
67
|
+
// This is used when transforming a block to heading, or for legacy anchors.
|
|
68
|
+
(0, _element.useEffect)(() => {
|
|
69
|
+
if (!canGenerateAnchors) {
|
|
70
|
+
return;
|
|
71
|
+
}
|
|
72
|
+
if (!anchor && content) {
|
|
73
|
+
// This side-effect should not create an undo level.
|
|
74
|
+
__unstableMarkNextChangeAsNotPersistent();
|
|
75
|
+
setAttributes({
|
|
76
|
+
anchor: (0, _autogenerateAnchors.generateAnchor)(clientId, content)
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
(0, _autogenerateAnchors.setAnchor)(clientId, anchor);
|
|
80
|
+
|
|
81
|
+
// Remove anchor map when block unmounts.
|
|
82
|
+
return () => (0, _autogenerateAnchors.setAnchor)(clientId, null);
|
|
83
|
+
}, [anchor, content, clientId, canGenerateAnchors]);
|
|
84
|
+
const onContentChange = value => {
|
|
85
|
+
const newAttrs = {
|
|
86
|
+
content: value
|
|
87
|
+
};
|
|
88
|
+
if (canGenerateAnchors && (!anchor || !value || (0, _autogenerateAnchors.generateAnchor)(clientId, content) === anchor)) {
|
|
89
|
+
newAttrs.anchor = (0, _autogenerateAnchors.generateAnchor)(clientId, value);
|
|
90
|
+
}
|
|
91
|
+
setAttributes(newAttrs);
|
|
92
|
+
};
|
|
93
|
+
return (0, _react.createElement)(_react.Fragment, null, (0, _react.createElement)(_blockEditor.BlockControls, {
|
|
94
|
+
group: "block"
|
|
95
|
+
}, (0, _react.createElement)(_blockEditor.HeadingLevelDropdown, {
|
|
96
|
+
value: level,
|
|
97
|
+
onChange: newLevel => setAttributes({
|
|
98
|
+
level: newLevel
|
|
99
|
+
})
|
|
100
|
+
}), (0, _react.createElement)(_blockEditor.AlignmentControl, {
|
|
101
|
+
value: textAlign,
|
|
102
|
+
onChange: nextAlign => {
|
|
103
|
+
setAttributes({
|
|
104
|
+
textAlign: nextAlign
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
})), (0, _react.createElement)(_blockEditor.RichText, {
|
|
108
|
+
identifier: "content",
|
|
109
|
+
tagName: tagName,
|
|
110
|
+
value: content,
|
|
111
|
+
onChange: onContentChange,
|
|
112
|
+
onMerge: mergeBlocks,
|
|
113
|
+
onSplit: (value, isOriginal) => {
|
|
114
|
+
let block;
|
|
115
|
+
if (isOriginal || value) {
|
|
116
|
+
block = (0, _blocks.createBlock)('core/heading', {
|
|
117
|
+
...attributes,
|
|
118
|
+
content: value
|
|
119
|
+
});
|
|
120
|
+
} else {
|
|
121
|
+
var _getDefaultBlockName;
|
|
122
|
+
block = (0, _blocks.createBlock)((_getDefaultBlockName = (0, _blocks.getDefaultBlockName)()) !== null && _getDefaultBlockName !== void 0 ? _getDefaultBlockName : 'core/heading');
|
|
123
|
+
}
|
|
124
|
+
if (isOriginal) {
|
|
125
|
+
block.clientId = clientId;
|
|
126
|
+
}
|
|
127
|
+
return block;
|
|
128
|
+
},
|
|
129
|
+
onReplace: onReplace,
|
|
130
|
+
onRemove: () => onReplace([]),
|
|
131
|
+
placeholder: placeholder || (0, _i18n.__)('Heading'),
|
|
132
|
+
textAlign: textAlign,
|
|
133
|
+
...(_element.Platform.isNative && {
|
|
134
|
+
deleteEnter: true
|
|
135
|
+
}),
|
|
136
|
+
...blockProps
|
|
137
|
+
}));
|
|
138
|
+
}
|
|
139
|
+
var _default = HeadingEdit;
|
|
140
|
+
exports.default = _default;
|
|
141
|
+
//# sourceMappingURL=edit.native.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_classnames","_interopRequireDefault","require","_i18n","_element","_data","_blocks","_blockEditor","_autogenerateAnchors","HeadingEdit","attributes","setAttributes","mergeBlocks","onReplace","style","clientId","textAlign","content","level","placeholder","anchor","tagName","blockProps","useBlockProps","className","classnames","canGenerateAnchors","useSelect","select","getGlobalBlockCount","getSettings","blockEditorStore","settings","generateAnchors","__unstableMarkNextChangeAsNotPersistent","useDispatch","useEffect","generateAnchor","setAnchor","onContentChange","value","newAttrs","_react","createElement","Fragment","BlockControls","group","HeadingLevelDropdown","onChange","newLevel","AlignmentControl","nextAlign","RichText","identifier","onMerge","onSplit","isOriginal","block","createBlock","_getDefaultBlockName","getDefaultBlockName","onRemove","__","Platform","isNative","deleteEnter","_default","exports","default"],"sources":["@wordpress/block-library/src/heading/edit.native.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { useEffect, Platform } from '@wordpress/element';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport { createBlock, getDefaultBlockName } from '@wordpress/blocks';\nimport {\n\tAlignmentControl,\n\tBlockControls,\n\tRichText,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n\tHeadingLevelDropdown,\n} from '@wordpress/block-editor';\n\n/**\n * Internal dependencies\n */\nimport { generateAnchor, setAnchor } from './autogenerate-anchors';\n\nfunction HeadingEdit( {\n\tattributes,\n\tsetAttributes,\n\tmergeBlocks,\n\tonReplace,\n\tstyle,\n\tclientId,\n} ) {\n\tconst { textAlign, content, level, placeholder, anchor } = attributes;\n\tconst tagName = 'h' + level;\n\tconst blockProps = useBlockProps( {\n\t\tclassName: classnames( {\n\t\t\t[ `has-text-align-${ textAlign }` ]: textAlign,\n\t\t} ),\n\t\tstyle,\n\t} );\n\n\tconst { canGenerateAnchors } = useSelect( ( select ) => {\n\t\tconst { getGlobalBlockCount, getSettings } = select( blockEditorStore );\n\t\tconst settings = getSettings();\n\n\t\treturn {\n\t\t\tcanGenerateAnchors:\n\t\t\t\t!! settings.generateAnchors ||\n\t\t\t\tgetGlobalBlockCount( 'core/table-of-contents' ) > 0,\n\t\t};\n\t}, [] );\n\n\tconst { __unstableMarkNextChangeAsNotPersistent } =\n\t\tuseDispatch( blockEditorStore );\n\n\t// Initially set anchor for headings that have content but no anchor set.\n\t// This is used when transforming a block to heading, or for legacy anchors.\n\tuseEffect( () => {\n\t\tif ( ! canGenerateAnchors ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( ! anchor && content ) {\n\t\t\t// This side-effect should not create an undo level.\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tsetAttributes( {\n\t\t\t\tanchor: generateAnchor( clientId, content ),\n\t\t\t} );\n\t\t}\n\t\tsetAnchor( clientId, anchor );\n\n\t\t// Remove anchor map when block unmounts.\n\t\treturn () => setAnchor( clientId, null );\n\t}, [ anchor, content, clientId, canGenerateAnchors ] );\n\n\tconst onContentChange = ( value ) => {\n\t\tconst newAttrs = { content: value };\n\t\tif (\n\t\t\tcanGenerateAnchors &&\n\t\t\t( ! anchor ||\n\t\t\t\t! value ||\n\t\t\t\tgenerateAnchor( clientId, content ) === anchor )\n\t\t) {\n\t\t\tnewAttrs.anchor = generateAnchor( clientId, value );\n\t\t}\n\t\tsetAttributes( newAttrs );\n\t};\n\n\treturn (\n\t\t<>\n\t\t\t<BlockControls group=\"block\">\n\t\t\t\t<HeadingLevelDropdown\n\t\t\t\t\tvalue={ level }\n\t\t\t\t\tonChange={ ( newLevel ) =>\n\t\t\t\t\t\tsetAttributes( { level: newLevel } )\n\t\t\t\t\t}\n\t\t\t\t/>\n\t\t\t\t<AlignmentControl\n\t\t\t\t\tvalue={ textAlign }\n\t\t\t\t\tonChange={ ( nextAlign ) => {\n\t\t\t\t\t\tsetAttributes( { textAlign: nextAlign } );\n\t\t\t\t\t} }\n\t\t\t\t/>\n\t\t\t</BlockControls>\n\t\t\t<RichText\n\t\t\t\tidentifier=\"content\"\n\t\t\t\ttagName={ tagName }\n\t\t\t\tvalue={ content }\n\t\t\t\tonChange={ onContentChange }\n\t\t\t\tonMerge={ mergeBlocks }\n\t\t\t\tonSplit={ ( value, isOriginal ) => {\n\t\t\t\t\tlet block;\n\n\t\t\t\t\tif ( isOriginal || value ) {\n\t\t\t\t\t\tblock = createBlock( 'core/heading', {\n\t\t\t\t\t\t\t...attributes,\n\t\t\t\t\t\t\tcontent: value,\n\t\t\t\t\t\t} );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tblock = createBlock(\n\t\t\t\t\t\t\tgetDefaultBlockName() ?? 'core/heading'\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tif ( isOriginal ) {\n\t\t\t\t\t\tblock.clientId = clientId;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn block;\n\t\t\t\t} }\n\t\t\t\tonReplace={ onReplace }\n\t\t\t\tonRemove={ () => onReplace( [] ) }\n\t\t\t\tplaceholder={ placeholder || __( 'Heading' ) }\n\t\t\t\ttextAlign={ textAlign }\n\t\t\t\t{ ...( Platform.isNative && { deleteEnter: true } ) } // setup RichText on native mobile to delete the \"Enter\" key as it's handled by the JS/RN side\n\t\t\t\t{ ...blockProps }\n\t\t\t/>\n\t\t</>\n\t);\n}\n\nexport default HeadingEdit;\n"],"mappings":"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"}
|
package/build/heading/index.js
CHANGED
|
@@ -27,6 +27,7 @@ const metadata = {
|
|
|
27
27
|
description: "Introduce new sections and organize content to help visitors (and search engines) understand the structure of your content.",
|
|
28
28
|
keywords: ["title", "subtitle"],
|
|
29
29
|
textdomain: "default",
|
|
30
|
+
usesContext: ["pattern/overrides"],
|
|
30
31
|
attributes: {
|
|
31
32
|
textAlign: {
|
|
32
33
|
type: "string"
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_icons","require","_i18n","_initBlock","_interopRequireDefault","_deprecated","_edit","_save","_transforms","metadata","$schema","apiVersion","name","title","category","description","keywords","textdomain","attributes","textAlign","type","content","source","selector","__experimentalRole","level","placeholder","supports","align","anchor","className","color","gradients","link","__experimentalDefaultControls","background","text","spacing","margin","padding","typography","fontSize","lineHeight","__experimentalFontFamily","__experimentalFontStyle","__experimentalFontWeight","__experimentalLetterSpacing","__experimentalTextTransform","__experimentalTextDecoration","__experimentalWritingMode","__unstablePasteTextInline","__experimentalSlashInserter","editorStyle","style","exports","settings","icon","example","__","__experimentalLabel","context","customName","length","sprintf","transforms","deprecated","merge","attributesToMerge","edit","save","init","initBlock"],"sources":["@wordpress/block-library/src/heading/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { heading as icon } from '@wordpress/icons';\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport deprecated from './deprecated';\nimport edit from './edit';\nimport metadata from './block.json';\nimport save from './save';\nimport transforms from './transforms';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\texample: {\n\t\tattributes: {\n\t\t\tcontent: __( 'Code is Poetry' ),\n\t\t\tlevel: 2,\n\t\t},\n\t},\n\t__experimentalLabel( attributes, { context } ) {\n\t\tconst { content, level } = attributes;\n\n\t\tconst customName = attributes?.metadata?.name;\n\n\t\t// In the list view, use the block's content as the label.\n\t\t// If the content is empty, fall back to the default label.\n\t\tif ( context === 'list-view' && ( customName || content ) ) {\n\t\t\treturn attributes?.metadata?.name || content;\n\t\t}\n\n\t\tif ( context === 'accessibility' ) {\n\t\t\treturn ! content || content.length === 0\n\t\t\t\t? sprintf(\n\t\t\t\t\t\t/* translators: accessibility text. %s: heading level. */\n\t\t\t\t\t\t__( 'Level %s. Empty.' ),\n\t\t\t\t\t\tlevel\n\t\t\t\t )\n\t\t\t\t: sprintf(\n\t\t\t\t\t\t/* translators: accessibility text. 1: heading level. 2: heading content. */\n\t\t\t\t\t\t__( 'Level %1$s. %2$s' ),\n\t\t\t\t\t\tlevel,\n\t\t\t\t\t\tcontent\n\t\t\t\t );\n\t\t}\n\t},\n\ttransforms,\n\tdeprecated,\n\tmerge( attributes, attributesToMerge ) {\n\t\treturn {\n\t\t\tcontent:\n\t\t\t\t( attributes.content || '' ) +\n\t\t\t\t( attributesToMerge.content || '' ),\n\t\t};\n\t},\n\tedit,\n\tsave,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"],"mappings":";;;;;;;AAGA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,KAAA,GAAAD,OAAA;AAKA,IAAAE,UAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,WAAA,GAAAD,sBAAA,CAAAH,OAAA;AACA,IAAAK,KAAA,GAAAF,sBAAA,CAAAH,OAAA;AAEA,IAAAM,KAAA,GAAAH,sBAAA,CAAAH,OAAA;AACA,IAAAO,WAAA,GAAAJ,sBAAA,CAAAH,OAAA;AAdA;AACA;AACA;AAIA;AACA;AACA;AAFA,MAAAQ,QAAA;EAAAC,OAAA;EAAAC,UAAA;EAAAC,IAAA;EAAAC,KAAA;EAAAC,QAAA;EAAAC,WAAA;EAAAC,QAAA;EAAAC,UAAA;EAAAC,UAAA;IAAAC,SAAA;MAAAC,IAAA;IAAA;IAAAC,OAAA;MAAAD,IAAA;MAAAE,MAAA;MAAAC,QAAA;MAAAC,kBAAA;IAAA;IAAAC,KAAA;MAAAL,IAAA;MAAA;IAAA;IAAAM,WAAA;MAAAN,IAAA;IAAA;EAAA;EAAAO,QAAA;IAAAC,KAAA;IAAAC,MAAA;IAAAC,SAAA;IAAAC,KAAA;MAAAC,SAAA;MAAAC,IAAA;MAAAC,6BAAA;QAAAC,UAAA;QAAAC,IAAA;MAAA;IAAA;IAAAC,OAAA;MAAAC,MAAA;MAAAC,OAAA;MAAAL,6BAAA;QAAAI,MAAA;QAAAC,OAAA;MAAA;IAAA;IAAAC,UAAA;MAAAC,QAAA;MAAAC,UAAA;MAAAC,wBAAA;MAAAC,uBAAA;MAAAC,wBAAA;MAAAC,2BAAA;MAAAC,2BAAA;MAAAC,4BAAA;MAAAC,yBAAA;MAAAf,6BAAA;QAAAO,QAAA;MAAA;IAAA;IAAAS,yBAAA;IAAAC,2BAAA;EAAA;EAAAC,WAAA;EAAAC,KAAA;AAAA;AAAAC,OAAA,
|
|
1
|
+
{"version":3,"names":["_icons","require","_i18n","_initBlock","_interopRequireDefault","_deprecated","_edit","_save","_transforms","metadata","$schema","apiVersion","name","title","category","description","keywords","textdomain","usesContext","attributes","textAlign","type","content","source","selector","__experimentalRole","level","placeholder","supports","align","anchor","className","color","gradients","link","__experimentalDefaultControls","background","text","spacing","margin","padding","typography","fontSize","lineHeight","__experimentalFontFamily","__experimentalFontStyle","__experimentalFontWeight","__experimentalLetterSpacing","__experimentalTextTransform","__experimentalTextDecoration","__experimentalWritingMode","__unstablePasteTextInline","__experimentalSlashInserter","editorStyle","style","exports","settings","icon","example","__","__experimentalLabel","context","customName","length","sprintf","transforms","deprecated","merge","attributesToMerge","edit","save","init","initBlock"],"sources":["@wordpress/block-library/src/heading/index.js"],"sourcesContent":["/**\n * WordPress dependencies\n */\nimport { heading as icon } from '@wordpress/icons';\nimport { __, sprintf } from '@wordpress/i18n';\n\n/**\n * Internal dependencies\n */\nimport initBlock from '../utils/init-block';\nimport deprecated from './deprecated';\nimport edit from './edit';\nimport metadata from './block.json';\nimport save from './save';\nimport transforms from './transforms';\n\nconst { name } = metadata;\n\nexport { metadata, name };\n\nexport const settings = {\n\ticon,\n\texample: {\n\t\tattributes: {\n\t\t\tcontent: __( 'Code is Poetry' ),\n\t\t\tlevel: 2,\n\t\t},\n\t},\n\t__experimentalLabel( attributes, { context } ) {\n\t\tconst { content, level } = attributes;\n\n\t\tconst customName = attributes?.metadata?.name;\n\n\t\t// In the list view, use the block's content as the label.\n\t\t// If the content is empty, fall back to the default label.\n\t\tif ( context === 'list-view' && ( customName || content ) ) {\n\t\t\treturn attributes?.metadata?.name || content;\n\t\t}\n\n\t\tif ( context === 'accessibility' ) {\n\t\t\treturn ! content || content.length === 0\n\t\t\t\t? sprintf(\n\t\t\t\t\t\t/* translators: accessibility text. %s: heading level. */\n\t\t\t\t\t\t__( 'Level %s. Empty.' ),\n\t\t\t\t\t\tlevel\n\t\t\t\t )\n\t\t\t\t: sprintf(\n\t\t\t\t\t\t/* translators: accessibility text. 1: heading level. 2: heading content. */\n\t\t\t\t\t\t__( 'Level %1$s. %2$s' ),\n\t\t\t\t\t\tlevel,\n\t\t\t\t\t\tcontent\n\t\t\t\t );\n\t\t}\n\t},\n\ttransforms,\n\tdeprecated,\n\tmerge( attributes, attributesToMerge ) {\n\t\treturn {\n\t\t\tcontent:\n\t\t\t\t( attributes.content || '' ) +\n\t\t\t\t( attributesToMerge.content || '' ),\n\t\t};\n\t},\n\tedit,\n\tsave,\n};\n\nexport const init = () => initBlock( { name, metadata, settings } );\n"],"mappings":"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"}
|
package/build/image/edit.js
CHANGED
|
@@ -97,7 +97,8 @@ function ImageEdit({
|
|
|
97
97
|
sizeSlug,
|
|
98
98
|
aspectRatio,
|
|
99
99
|
scale,
|
|
100
|
-
align
|
|
100
|
+
align,
|
|
101
|
+
metadata
|
|
101
102
|
} = attributes;
|
|
102
103
|
const [temporaryURL, setTemporaryURL] = (0, _element.useState)();
|
|
103
104
|
const altRef = (0, _element.useRef)();
|
|
@@ -304,15 +305,16 @@ function ImageEdit({
|
|
|
304
305
|
});
|
|
305
306
|
|
|
306
307
|
// Much of this description is duplicated from MediaPlaceholder.
|
|
308
|
+
const isUrlAttributeConnected = !!metadata?.bindings?.url;
|
|
307
309
|
const placeholder = content => {
|
|
308
310
|
return (0, _react.createElement)(_components.Placeholder, {
|
|
309
311
|
className: (0, _classnames.default)('block-editor-media-placeholder', {
|
|
310
312
|
[borderProps.className]: !!borderProps.className && !isSelected
|
|
311
313
|
}),
|
|
312
314
|
withIllustration: true,
|
|
313
|
-
icon: _icons.image,
|
|
315
|
+
icon: isUrlAttributeConnected ? _icons.plugins : _icons.image,
|
|
314
316
|
label: (0, _i18n.__)('Image'),
|
|
315
|
-
instructions: (0, _i18n.__)('Upload an image file, pick one from your media library, or add one with a URL.'),
|
|
317
|
+
instructions: !isUrlAttributeConnected && (0, _i18n.__)('Upload an image file, pick one from your media library, or add one with a URL.'),
|
|
316
318
|
style: {
|
|
317
319
|
aspectRatio: !(width && height) && aspectRatio ? aspectRatio : undefined,
|
|
318
320
|
width: height && aspectRatio ? '100%' : width,
|
|
@@ -320,7 +322,9 @@ function ImageEdit({
|
|
|
320
322
|
objectFit: scale,
|
|
321
323
|
...borderProps.style
|
|
322
324
|
}
|
|
323
|
-
},
|
|
325
|
+
}, isUrlAttributeConnected ? (0, _react.createElement)("span", {
|
|
326
|
+
className: 'block-bindings-media-placeholder-message'
|
|
327
|
+
}, (0, _i18n.__)('Connected to a custom field')) : content);
|
|
324
328
|
};
|
|
325
329
|
return (0, _react.createElement)("figure", {
|
|
326
330
|
...blockProps
|
package/build/image/edit.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_classnames","_interopRequireDefault","require","_blob","_components","_data","_blockEditor","_element","_i18n","_icons","_notices","_image","_constants","pickRelevantMediaFiles","image","size","imageProps","Object","fromEntries","entries","filter","key","includes","url","sizes","media_details","source_url","exports","isTemporaryImage","id","isBlobURL","isExternalImage","hasSize","_image$sizes$size","_image$media_details$","ImageEdit","attributes","setAttributes","isSelected","className","insertBlocksAfter","onReplace","context","clientId","alt","caption","width","height","sizeSlug","aspectRatio","scale","align","temporaryURL","setTemporaryURL","useState","altRef","useRef","useEffect","current","captionRef","__unstableMarkNextChangeAsNotPersistent","useDispatch","blockEditorStore","undefined","ref","imageDefaultSize","mediaUpload","useSelect","select","getSettings","settings","blockEditingMode","useBlockEditingMode","createErrorNotice","noticesStore","onUploadError","message","type","src","onSelectImage","media","title","newSize","mediaAttributes","omittedCaption","restMediaAttributes","additionalAttributes","linkDestination","window","wp","view","defaultProps","link","LINK_DESTINATION_NONE","LINK_DESTINATION_MEDIA","LINK_DESTINATION_ATTACHMENT","LINK_DESTINATION_CUSTOM","href","onSelectURL","newURL","isTemp","file","getBlobByURL","filesList","onFileChange","img","allowedTypes","ALLOWED_MEDIA_TYPES","onError","revokeBlobURL","isExternal","mediaPreview","_react","createElement","__","borderProps","useBorderProps","classes","classnames","style","keys","length","blockProps","useBlockProps","placeholder","content","Placeholder","withIllustration","icon","label","instructions","objectFit","default","containerRef","MediaPlaceholder","BlockIcon","onSelect","accept","value","disableMediaButtons","_default"],"sources":["@wordpress/block-library/src/image/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { getBlobByURL, isBlobURL, revokeBlobURL } from '@wordpress/blob';\nimport { Placeholder } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport {\n\tBlockIcon,\n\tMediaPlaceholder,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n\t__experimentalUseBorderProps as useBorderProps,\n\tuseBlockEditingMode,\n} from '@wordpress/block-editor';\nimport { useEffect, useRef, useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { image as icon } from '@wordpress/icons';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport Image from './image';\n\n/**\n * Module constants\n */\nimport {\n\tLINK_DESTINATION_ATTACHMENT,\n\tLINK_DESTINATION_CUSTOM,\n\tLINK_DESTINATION_MEDIA,\n\tLINK_DESTINATION_NONE,\n\tALLOWED_MEDIA_TYPES,\n} from './constants';\n\nexport const pickRelevantMediaFiles = ( image, size ) => {\n\tconst imageProps = Object.fromEntries(\n\t\tObject.entries( image ?? {} ).filter( ( [ key ] ) =>\n\t\t\t[ 'alt', 'id', 'link', 'caption' ].includes( key )\n\t\t)\n\t);\n\n\timageProps.url =\n\t\timage?.sizes?.[ size ]?.url ||\n\t\timage?.media_details?.sizes?.[ size ]?.source_url ||\n\t\timage.url;\n\treturn imageProps;\n};\n\n/**\n * Is the URL a temporary blob URL? A blob URL is one that is used temporarily\n * while the image is being uploaded and will not have an id yet allocated.\n *\n * @param {number=} id The id of the image.\n * @param {string=} url The url of the image.\n *\n * @return {boolean} Is the URL a Blob URL\n */\nconst isTemporaryImage = ( id, url ) => ! id && isBlobURL( url );\n\n/**\n * Is the url for the image hosted externally. An externally hosted image has no\n * id and is not a blob url.\n *\n * @param {number=} id The id of the image.\n * @param {string=} url The url of the image.\n *\n * @return {boolean} Is the url an externally hosted url?\n */\nexport const isExternalImage = ( id, url ) => url && ! id && ! isBlobURL( url );\n\n/**\n * Checks if WP generated the specified image size. Size generation is skipped\n * when the image is smaller than the said size.\n *\n * @param {Object} image\n * @param {string} size\n *\n * @return {boolean} Whether or not it has default image size.\n */\nfunction hasSize( image, size ) {\n\treturn (\n\t\t'url' in ( image?.sizes?.[ size ] ?? {} ) ||\n\t\t'source_url' in ( image?.media_details?.sizes?.[ size ] ?? {} )\n\t);\n}\n\nexport function ImageEdit( {\n\tattributes,\n\tsetAttributes,\n\tisSelected,\n\tclassName,\n\tinsertBlocksAfter,\n\tonReplace,\n\tcontext,\n\tclientId,\n} ) {\n\tconst {\n\t\turl = '',\n\t\talt,\n\t\tcaption,\n\t\tid,\n\t\twidth,\n\t\theight,\n\t\tsizeSlug,\n\t\taspectRatio,\n\t\tscale,\n\t\talign,\n\t} = attributes;\n\tconst [ temporaryURL, setTemporaryURL ] = useState();\n\n\tconst altRef = useRef();\n\tuseEffect( () => {\n\t\taltRef.current = alt;\n\t}, [ alt ] );\n\n\tconst captionRef = useRef();\n\tuseEffect( () => {\n\t\tcaptionRef.current = caption;\n\t}, [ caption ] );\n\n\tconst { __unstableMarkNextChangeAsNotPersistent } =\n\t\tuseDispatch( blockEditorStore );\n\n\tuseEffect( () => {\n\t\tif ( [ 'wide', 'full' ].includes( align ) ) {\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tsetAttributes( {\n\t\t\t\twidth: undefined,\n\t\t\t\theight: undefined,\n\t\t\t\taspectRatio: undefined,\n\t\t\t\tscale: undefined,\n\t\t\t} );\n\t\t}\n\t}, [ align ] );\n\n\tconst ref = useRef();\n\tconst { imageDefaultSize, mediaUpload } = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\tconst settings = getSettings();\n\t\treturn {\n\t\t\timageDefaultSize: settings.imageDefaultSize,\n\t\t\tmediaUpload: settings.mediaUpload,\n\t\t};\n\t}, [] );\n\tconst blockEditingMode = useBlockEditingMode();\n\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tfunction onUploadError( message ) {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t\tsetAttributes( {\n\t\t\tsrc: undefined,\n\t\t\tid: undefined,\n\t\t\turl: undefined,\n\t\t} );\n\t\tsetTemporaryURL( undefined );\n\t}\n\n\tfunction onSelectImage( media ) {\n\t\tif ( ! media || ! media.url ) {\n\t\t\tsetAttributes( {\n\t\t\t\turl: undefined,\n\t\t\t\talt: undefined,\n\t\t\t\tid: undefined,\n\t\t\t\ttitle: undefined,\n\t\t\t\tcaption: undefined,\n\t\t\t} );\n\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isBlobURL( media.url ) ) {\n\t\t\tsetTemporaryURL( media.url );\n\t\t\treturn;\n\t\t}\n\n\t\tsetTemporaryURL();\n\n\t\t// Try to use the previous selected image size if its available\n\t\t// otherwise try the default image size or fallback to \"full\"\n\t\tlet newSize = 'full';\n\t\tif ( sizeSlug && hasSize( media, sizeSlug ) ) {\n\t\t\tnewSize = sizeSlug;\n\t\t} else if ( hasSize( media, imageDefaultSize ) ) {\n\t\t\tnewSize = imageDefaultSize;\n\t\t}\n\n\t\tlet mediaAttributes = pickRelevantMediaFiles( media, newSize );\n\n\t\t// If a caption text was meanwhile written by the user,\n\t\t// make sure the text is not overwritten by empty captions.\n\t\tif ( captionRef.current && ! mediaAttributes.caption ) {\n\t\t\tconst { caption: omittedCaption, ...restMediaAttributes } =\n\t\t\t\tmediaAttributes;\n\t\t\tmediaAttributes = restMediaAttributes;\n\t\t}\n\n\t\tlet additionalAttributes;\n\t\t// Reset the dimension attributes if changing to a different image.\n\t\tif ( ! media.id || media.id !== id ) {\n\t\t\tadditionalAttributes = {\n\t\t\t\tsizeSlug: newSize,\n\t\t\t};\n\t\t} else {\n\t\t\t// Keep the same url when selecting the same file, so \"Resolution\"\n\t\t\t// option is not changed.\n\t\t\tadditionalAttributes = { url };\n\t\t}\n\n\t\t// Check if default link setting should be used.\n\t\tlet linkDestination = attributes.linkDestination;\n\t\tif ( ! linkDestination ) {\n\t\t\t// Use the WordPress option to determine the proper default.\n\t\t\t// The constants used in Gutenberg do not match WP options so a little more complicated than ideal.\n\t\t\t// TODO: fix this in a follow up PR, requires updating media-text and ui component.\n\t\t\tswitch (\n\t\t\t\twindow?.wp?.media?.view?.settings?.defaultProps?.link ||\n\t\t\t\tLINK_DESTINATION_NONE\n\t\t\t) {\n\t\t\t\tcase 'file':\n\t\t\t\tcase LINK_DESTINATION_MEDIA:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_MEDIA;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'post':\n\t\t\t\tcase LINK_DESTINATION_ATTACHMENT:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_ATTACHMENT;\n\t\t\t\t\tbreak;\n\t\t\t\tcase LINK_DESTINATION_CUSTOM:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_CUSTOM;\n\t\t\t\t\tbreak;\n\t\t\t\tcase LINK_DESTINATION_NONE:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_NONE;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// Check if the image is linked to it's media.\n\t\tlet href;\n\t\tswitch ( linkDestination ) {\n\t\t\tcase LINK_DESTINATION_MEDIA:\n\t\t\t\thref = media.url;\n\t\t\t\tbreak;\n\t\t\tcase LINK_DESTINATION_ATTACHMENT:\n\t\t\t\thref = media.link;\n\t\t\t\tbreak;\n\t\t}\n\t\tmediaAttributes.href = href;\n\n\t\tsetAttributes( {\n\t\t\t...mediaAttributes,\n\t\t\t...additionalAttributes,\n\t\t\tlinkDestination,\n\t\t} );\n\t}\n\n\tfunction onSelectURL( newURL ) {\n\t\tif ( newURL !== url ) {\n\t\t\tsetAttributes( {\n\t\t\t\turl: newURL,\n\t\t\t\tid: undefined,\n\t\t\t\tsizeSlug: imageDefaultSize,\n\t\t\t} );\n\t\t}\n\t}\n\n\tlet isTemp = isTemporaryImage( id, url );\n\n\t// Upload a temporary image on mount.\n\tuseEffect( () => {\n\t\tif ( ! isTemp ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst file = getBlobByURL( url );\n\n\t\tif ( file ) {\n\t\t\tmediaUpload( {\n\t\t\t\tfilesList: [ file ],\n\t\t\t\tonFileChange: ( [ img ] ) => {\n\t\t\t\t\tonSelectImage( img );\n\t\t\t\t},\n\t\t\t\tallowedTypes: ALLOWED_MEDIA_TYPES,\n\t\t\t\tonError: ( message ) => {\n\t\t\t\t\tisTemp = false;\n\t\t\t\t\tonUploadError( message );\n\t\t\t\t},\n\t\t\t} );\n\t\t}\n\t}, [] );\n\n\t// If an image is temporary, revoke the Blob url when it is uploaded (and is\n\t// no longer temporary).\n\tuseEffect( () => {\n\t\tif ( isTemp ) {\n\t\t\tsetTemporaryURL( url );\n\t\t\treturn;\n\t\t}\n\t\trevokeBlobURL( temporaryURL );\n\t}, [ isTemp, url ] );\n\n\tconst isExternal = isExternalImage( id, url );\n\tconst src = isExternal ? url : undefined;\n\tconst mediaPreview = !! url && (\n\t\t<img\n\t\t\talt={ __( 'Edit image' ) }\n\t\t\ttitle={ __( 'Edit image' ) }\n\t\t\tclassName={ 'edit-image-preview' }\n\t\t\tsrc={ url }\n\t\t/>\n\t);\n\n\tconst borderProps = useBorderProps( attributes );\n\n\tconst classes = classnames( className, {\n\t\t'is-transient': temporaryURL,\n\t\t'is-resized': !! width || !! height,\n\t\t[ `size-${ sizeSlug }` ]: sizeSlug,\n\t\t'has-custom-border':\n\t\t\t!! borderProps.className ||\n\t\t\t( borderProps.style &&\n\t\t\t\tObject.keys( borderProps.style ).length > 0 ),\n\t} );\n\n\tconst blockProps = useBlockProps( {\n\t\tref,\n\t\tclassName: classes,\n\t} );\n\n\t// Much of this description is duplicated from MediaPlaceholder.\n\tconst placeholder = ( content ) => {\n\t\treturn (\n\t\t\t<Placeholder\n\t\t\t\tclassName={ classnames( 'block-editor-media-placeholder', {\n\t\t\t\t\t[ borderProps.className ]:\n\t\t\t\t\t\t!! borderProps.className && ! isSelected,\n\t\t\t\t} ) }\n\t\t\t\twithIllustration={ true }\n\t\t\t\ticon={ icon }\n\t\t\t\tlabel={ __( 'Image' ) }\n\t\t\t\tinstructions={ __(\n\t\t\t\t\t'Upload an image file, pick one from your media library, or add one with a URL.'\n\t\t\t\t) }\n\t\t\t\tstyle={ {\n\t\t\t\t\taspectRatio:\n\t\t\t\t\t\t! ( width && height ) && aspectRatio\n\t\t\t\t\t\t\t? aspectRatio\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\twidth: height && aspectRatio ? '100%' : width,\n\t\t\t\t\theight: width && aspectRatio ? '100%' : height,\n\t\t\t\t\tobjectFit: scale,\n\t\t\t\t\t...borderProps.style,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ content }\n\t\t\t</Placeholder>\n\t\t);\n\t};\n\n\treturn (\n\t\t<figure { ...blockProps }>\n\t\t\t<Image\n\t\t\t\ttemporaryURL={ temporaryURL }\n\t\t\t\tattributes={ attributes }\n\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\tisSelected={ isSelected }\n\t\t\t\tinsertBlocksAfter={ insertBlocksAfter }\n\t\t\t\tonReplace={ onReplace }\n\t\t\t\tonSelectImage={ onSelectImage }\n\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\tonUploadError={ onUploadError }\n\t\t\t\tcontainerRef={ ref }\n\t\t\t\tcontext={ context }\n\t\t\t\tclientId={ clientId }\n\t\t\t\tblockEditingMode={ blockEditingMode }\n\t\t\t/>\n\t\t\t<MediaPlaceholder\n\t\t\t\ticon={ <BlockIcon icon={ icon } /> }\n\t\t\t\tonSelect={ onSelectImage }\n\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\tonError={ onUploadError }\n\t\t\t\tplaceholder={ placeholder }\n\t\t\t\taccept=\"image/*\"\n\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\tvalue={ { id, src } }\n\t\t\t\tmediaPreview={ mediaPreview }\n\t\t\t\tdisableMediaButtons={ temporaryURL || url }\n\t\t\t/>\n\t\t</figure>\n\t);\n}\n\nexport default ImageEdit;\n"],"mappings":";;;;;;;;;AAGA,IAAAA,WAAA,GAAAC,sBAAA,CAAAC,OAAA;AAKA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AACA,IAAAI,YAAA,GAAAJ,OAAA;AAQA,IAAAK,QAAA,GAAAL,OAAA;AACA,IAAAM,KAAA,GAAAN,OAAA;AACA,IAAAO,MAAA,GAAAP,OAAA;AACA,IAAAQ,QAAA,GAAAR,OAAA;AAKA,IAAAS,MAAA,GAAAV,sBAAA,CAAAC,OAAA;AAKA,IAAAU,UAAA,GAAAV,OAAA;AAhCA;AACA;AACA;;AAGA;AACA;AACA;;AAiBA;AACA;AACA;;AAGA;AACA;AACA;;AASO,MAAMW,sBAAsB,GAAGA,CAAEC,KAAK,EAAEC,IAAI,KAAM;EACxD,MAAMC,UAAU,GAAGC,MAAM,CAACC,WAAW,CACpCD,MAAM,CAACE,OAAO,CAAEL,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,CAAC,CAAE,CAAC,CAACM,MAAM,CAAE,CAAE,CAAEC,GAAG,CAAE,KAC9C,CAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,CAAE,CAACC,QAAQ,CAAED,GAAI,CAClD,CACD,CAAC;EAEDL,UAAU,CAACO,GAAG,GACbT,KAAK,EAAEU,KAAK,GAAIT,IAAI,CAAE,EAAEQ,GAAG,IAC3BT,KAAK,EAAEW,aAAa,EAAED,KAAK,GAAIT,IAAI,CAAE,EAAEW,UAAU,IACjDZ,KAAK,CAACS,GAAG;EACV,OAAOP,UAAU;AAClB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AARAW,OAAA,CAAAd,sBAAA,GAAAA,sBAAA;AASA,MAAMe,gBAAgB,GAAGA,CAAEC,EAAE,EAAEN,GAAG,KAAM,CAAEM,EAAE,IAAI,IAAAC,eAAS,EAAEP,GAAI,CAAC;;AAEhE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMQ,eAAe,GAAGA,CAAEF,EAAE,EAAEN,GAAG,KAAMA,GAAG,IAAI,CAAEM,EAAE,IAAI,CAAE,IAAAC,eAAS,EAAEP,GAAI,CAAC;;AAE/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AARAI,OAAA,CAAAI,eAAA,GAAAA,eAAA;AASA,SAASC,OAAOA,CAAElB,KAAK,EAAEC,IAAI,EAAG;EAAA,IAAAkB,iBAAA,EAAAC,qBAAA;EAC/B,OACC,KAAK,MAAAD,iBAAA,GAAMnB,KAAK,EAAEU,KAAK,GAAIT,IAAI,CAAE,cAAAkB,iBAAA,cAAAA,iBAAA,GAAI,CAAC,CAAC,CAAE,IACzC,YAAY,MAAAC,qBAAA,GAAMpB,KAAK,EAAEW,aAAa,EAAED,KAAK,GAAIT,IAAI,CAAE,cAAAmB,qBAAA,cAAAA,qBAAA,GAAI,CAAC,CAAC,CAAE;AAEjE;AAEO,SAASC,SAASA,CAAE;EAC1BC,UAAU;EACVC,aAAa;EACbC,UAAU;EACVC,SAAS;EACTC,iBAAiB;EACjBC,SAAS;EACTC,OAAO;EACPC;AACD,CAAC,EAAG;EACH,MAAM;IACLpB,GAAG,GAAG,EAAE;IACRqB,GAAG;IACHC,OAAO;IACPhB,EAAE;IACFiB,KAAK;IACLC,MAAM;IACNC,QAAQ;IACRC,WAAW;IACXC,KAAK;IACLC;EACD,CAAC,GAAGf,UAAU;EACd,MAAM,CAAEgB,YAAY,EAAEC,eAAe,CAAE,GAAG,IAAAC,iBAAQ,EAAC,CAAC;EAEpD,MAAMC,MAAM,GAAG,IAAAC,eAAM,EAAC,CAAC;EACvB,IAAAC,kBAAS,EAAE,MAAM;IAChBF,MAAM,CAACG,OAAO,GAAGd,GAAG;EACrB,CAAC,EAAE,CAAEA,GAAG,CAAG,CAAC;EAEZ,MAAMe,UAAU,GAAG,IAAAH,eAAM,EAAC,CAAC;EAC3B,IAAAC,kBAAS,EAAE,MAAM;IAChBE,UAAU,CAACD,OAAO,GAAGb,OAAO;EAC7B,CAAC,EAAE,CAAEA,OAAO,CAAG,CAAC;EAEhB,MAAM;IAAEe;EAAwC,CAAC,GAChD,IAAAC,iBAAW,EAAEC,kBAAiB,CAAC;EAEhC,IAAAL,kBAAS,EAAE,MAAM;IAChB,IAAK,CAAE,MAAM,EAAE,MAAM,CAAE,CAACnC,QAAQ,CAAE6B,KAAM,CAAC,EAAG;MAC3CS,uCAAuC,CAAC,CAAC;MACzCvB,aAAa,CAAE;QACdS,KAAK,EAAEiB,SAAS;QAChBhB,MAAM,EAAEgB,SAAS;QACjBd,WAAW,EAAEc,SAAS;QACtBb,KAAK,EAAEa;MACR,CAAE,CAAC;IACJ;EACD,CAAC,EAAE,CAAEZ,KAAK,CAAG,CAAC;EAEd,MAAMa,GAAG,GAAG,IAAAR,eAAM,EAAC,CAAC;EACpB,MAAM;IAAES,gBAAgB;IAAEC;EAAY,CAAC,GAAG,IAAAC,eAAS,EAAIC,MAAM,IAAM;IAClE,MAAM;MAAEC;IAAY,CAAC,GAAGD,MAAM,CAAEN,kBAAiB,CAAC;IAClD,MAAMQ,QAAQ,GAAGD,WAAW,CAAC,CAAC;IAC9B,OAAO;MACNJ,gBAAgB,EAAEK,QAAQ,CAACL,gBAAgB;MAC3CC,WAAW,EAAEI,QAAQ,CAACJ;IACvB,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;EACP,MAAMK,gBAAgB,GAAG,IAAAC,gCAAmB,EAAC,CAAC;EAE9C,MAAM;IAAEC;EAAkB,CAAC,GAAG,IAAAZ,iBAAW,EAAEa,cAAa,CAAC;EACzD,SAASC,aAAaA,CAAEC,OAAO,EAAG;IACjCH,iBAAiB,CAAEG,OAAO,EAAE;MAAEC,IAAI,EAAE;IAAW,CAAE,CAAC;IAClDxC,aAAa,CAAE;MACdyC,GAAG,EAAEf,SAAS;MACdlC,EAAE,EAAEkC,SAAS;MACbxC,GAAG,EAAEwC;IACN,CAAE,CAAC;IACHV,eAAe,CAAEU,SAAU,CAAC;EAC7B;EAEA,SAASgB,aAAaA,CAAEC,KAAK,EAAG;IAC/B,IAAK,CAAEA,KAAK,IAAI,CAAEA,KAAK,CAACzD,GAAG,EAAG;MAC7Bc,aAAa,CAAE;QACdd,GAAG,EAAEwC,SAAS;QACdnB,GAAG,EAAEmB,SAAS;QACdlC,EAAE,EAAEkC,SAAS;QACbkB,KAAK,EAAElB,SAAS;QAChBlB,OAAO,EAAEkB;MACV,CAAE,CAAC;MAEH;IACD;IAEA,IAAK,IAAAjC,eAAS,EAAEkD,KAAK,CAACzD,GAAI,CAAC,EAAG;MAC7B8B,eAAe,CAAE2B,KAAK,CAACzD,GAAI,CAAC;MAC5B;IACD;IAEA8B,eAAe,CAAC,CAAC;;IAEjB;IACA;IACA,IAAI6B,OAAO,GAAG,MAAM;IACpB,IAAKlC,QAAQ,IAAIhB,OAAO,CAAEgD,KAAK,EAAEhC,QAAS,CAAC,EAAG;MAC7CkC,OAAO,GAAGlC,QAAQ;IACnB,CAAC,MAAM,IAAKhB,OAAO,CAAEgD,KAAK,EAAEf,gBAAiB,CAAC,EAAG;MAChDiB,OAAO,GAAGjB,gBAAgB;IAC3B;IAEA,IAAIkB,eAAe,GAAGtE,sBAAsB,CAAEmE,KAAK,EAAEE,OAAQ,CAAC;;IAE9D;IACA;IACA,IAAKvB,UAAU,CAACD,OAAO,IAAI,CAAEyB,eAAe,CAACtC,OAAO,EAAG;MACtD,MAAM;QAAEA,OAAO,EAAEuC,cAAc;QAAE,GAAGC;MAAoB,CAAC,GACxDF,eAAe;MAChBA,eAAe,GAAGE,mBAAmB;IACtC;IAEA,IAAIC,oBAAoB;IACxB;IACA,IAAK,CAAEN,KAAK,CAACnD,EAAE,IAAImD,KAAK,CAACnD,EAAE,KAAKA,EAAE,EAAG;MACpCyD,oBAAoB,GAAG;QACtBtC,QAAQ,EAAEkC;MACX,CAAC;IACF,CAAC,MAAM;MACN;MACA;MACAI,oBAAoB,GAAG;QAAE/D;MAAI,CAAC;IAC/B;;IAEA;IACA,IAAIgE,eAAe,GAAGnD,UAAU,CAACmD,eAAe;IAChD,IAAK,CAAEA,eAAe,EAAG;MACxB;MACA;MACA;MACA,QACCC,MAAM,EAAEC,EAAE,EAAET,KAAK,EAAEU,IAAI,EAAEpB,QAAQ,EAAEqB,YAAY,EAAEC,IAAI,IACrDC,gCAAqB;QAErB,KAAK,MAAM;QACX,KAAKC,iCAAsB;UAC1BP,eAAe,GAAGO,iCAAsB;UACxC;QACD,KAAK,MAAM;QACX,KAAKC,sCAA2B;UAC/BR,eAAe,GAAGQ,sCAA2B;UAC7C;QACD,KAAKC,kCAAuB;UAC3BT,eAAe,GAAGS,kCAAuB;UACzC;QACD,KAAKH,gCAAqB;UACzBN,eAAe,GAAGM,gCAAqB;UACvC;MACF;IACD;;IAEA;IACA,IAAII,IAAI;IACR,QAASV,eAAe;MACvB,KAAKO,iCAAsB;QAC1BG,IAAI,GAAGjB,KAAK,CAACzD,GAAG;QAChB;MACD,KAAKwE,sCAA2B;QAC/BE,IAAI,GAAGjB,KAAK,CAACY,IAAI;QACjB;IACF;IACAT,eAAe,CAACc,IAAI,GAAGA,IAAI;IAE3B5D,aAAa,CAAE;MACd,GAAG8C,eAAe;MAClB,GAAGG,oBAAoB;MACvBC;IACD,CAAE,CAAC;EACJ;EAEA,SAASW,WAAWA,CAAEC,MAAM,EAAG;IAC9B,IAAKA,MAAM,KAAK5E,GAAG,EAAG;MACrBc,aAAa,CAAE;QACdd,GAAG,EAAE4E,MAAM;QACXtE,EAAE,EAAEkC,SAAS;QACbf,QAAQ,EAAEiB;MACX,CAAE,CAAC;IACJ;EACD;EAEA,IAAImC,MAAM,GAAGxE,gBAAgB,CAAEC,EAAE,EAAEN,GAAI,CAAC;;EAExC;EACA,IAAAkC,kBAAS,EAAE,MAAM;IAChB,IAAK,CAAE2C,MAAM,EAAG;MACf;IACD;IAEA,MAAMC,IAAI,GAAG,IAAAC,kBAAY,EAAE/E,GAAI,CAAC;IAEhC,IAAK8E,IAAI,EAAG;MACXnC,WAAW,CAAE;QACZqC,SAAS,EAAE,CAAEF,IAAI,CAAE;QACnBG,YAAY,EAAEA,CAAE,CAAEC,GAAG,CAAE,KAAM;UAC5B1B,aAAa,CAAE0B,GAAI,CAAC;QACrB,CAAC;QACDC,YAAY,EAAEC,8BAAmB;QACjCC,OAAO,EAAIhC,OAAO,IAAM;UACvBwB,MAAM,GAAG,KAAK;UACdzB,aAAa,CAAEC,OAAQ,CAAC;QACzB;MACD,CAAE,CAAC;IACJ;EACD,CAAC,EAAE,EAAG,CAAC;;EAEP;EACA;EACA,IAAAnB,kBAAS,EAAE,MAAM;IAChB,IAAK2C,MAAM,EAAG;MACb/C,eAAe,CAAE9B,GAAI,CAAC;MACtB;IACD;IACA,IAAAsF,mBAAa,EAAEzD,YAAa,CAAC;EAC9B,CAAC,EAAE,CAAEgD,MAAM,EAAE7E,GAAG,CAAG,CAAC;EAEpB,MAAMuF,UAAU,GAAG/E,eAAe,CAAEF,EAAE,EAAEN,GAAI,CAAC;EAC7C,MAAMuD,GAAG,GAAGgC,UAAU,GAAGvF,GAAG,GAAGwC,SAAS;EACxC,MAAMgD,YAAY,GAAG,CAAC,CAAExF,GAAG,IAC1B,IAAAyF,MAAA,CAAAC,aAAA;IACCrE,GAAG,EAAG,IAAAsE,QAAE,EAAE,YAAa,CAAG;IAC1BjC,KAAK,EAAG,IAAAiC,QAAE,EAAE,YAAa,CAAG;IAC5B3E,SAAS,EAAG,oBAAsB;IAClCuC,GAAG,EAAGvD;EAAK,CACX,CACD;EAED,MAAM4F,WAAW,GAAG,IAAAC,yCAAc,EAAEhF,UAAW,CAAC;EAEhD,MAAMiF,OAAO,GAAG,IAAAC,mBAAU,EAAE/E,SAAS,EAAE;IACtC,cAAc,EAAEa,YAAY;IAC5B,YAAY,EAAE,CAAC,CAAEN,KAAK,IAAI,CAAC,CAAEC,MAAM;IACnC,CAAG,QAAQC,QAAU,EAAC,GAAIA,QAAQ;IAClC,mBAAmB,EAClB,CAAC,CAAEmE,WAAW,CAAC5E,SAAS,IACtB4E,WAAW,CAACI,KAAK,IAClBtG,MAAM,CAACuG,IAAI,CAAEL,WAAW,CAACI,KAAM,CAAC,CAACE,MAAM,GAAG;EAC7C,CAAE,CAAC;EAEH,MAAMC,UAAU,GAAG,IAAAC,0BAAa,EAAE;IACjC3D,GAAG;IACHzB,SAAS,EAAE8E;EACZ,CAAE,CAAC;;EAEH;EACA,MAAMO,WAAW,GAAKC,OAAO,IAAM;IAClC,OACC,IAAAb,MAAA,CAAAC,aAAA,EAAC7G,WAAA,CAAA0H,WAAW;MACXvF,SAAS,EAAG,IAAA+E,mBAAU,EAAE,gCAAgC,EAAE;QACzD,CAAEH,WAAW,CAAC5E,SAAS,GACtB,CAAC,CAAE4E,WAAW,CAAC5E,SAAS,IAAI,CAAED;MAChC,CAAE,CAAG;MACLyF,gBAAgB,EAAG,IAAM;MACzBC,IAAI,EAAGA,YAAM;MACbC,KAAK,EAAG,IAAAf,QAAE,EAAE,OAAQ,CAAG;MACvBgB,YAAY,EAAG,IAAAhB,QAAE,EAChB,gFACD,CAAG;MACHK,KAAK,EAAG;QACPtE,WAAW,EACV,EAAIH,KAAK,IAAIC,MAAM,CAAE,IAAIE,WAAW,GACjCA,WAAW,GACXc,SAAS;QACbjB,KAAK,EAAEC,MAAM,IAAIE,WAAW,GAAG,MAAM,GAAGH,KAAK;QAC7CC,MAAM,EAAED,KAAK,IAAIG,WAAW,GAAG,MAAM,GAAGF,MAAM;QAC9CoF,SAAS,EAAEjF,KAAK;QAChB,GAAGiE,WAAW,CAACI;MAChB;IAAG,GAEDM,OACU,CAAC;EAEhB,CAAC;EAED,OACC,IAAAb,MAAA,CAAAC,aAAA;IAAA,GAAaS;EAAU,GACtB,IAAAV,MAAA,CAAAC,aAAA,EAACtG,MAAA,CAAAyH,OAAK;IACLhF,YAAY,EAAGA,YAAc;IAC7BhB,UAAU,EAAGA,UAAY;IACzBC,aAAa,EAAGA,aAAe;IAC/BC,UAAU,EAAGA,UAAY;IACzBE,iBAAiB,EAAGA,iBAAmB;IACvCC,SAAS,EAAGA,SAAW;IACvBsC,aAAa,EAAGA,aAAe;IAC/BmB,WAAW,EAAGA,WAAa;IAC3BvB,aAAa,EAAGA,aAAe;IAC/B0D,YAAY,EAAGrE,GAAK;IACpBtB,OAAO,EAAGA,OAAS;IACnBC,QAAQ,EAAGA,QAAU;IACrB4B,gBAAgB,EAAGA;EAAkB,CACrC,CAAC,EACF,IAAAyC,MAAA,CAAAC,aAAA,EAAC3G,YAAA,CAAAgI,gBAAgB;IAChBN,IAAI,EAAG,IAAAhB,MAAA,CAAAC,aAAA,EAAC3G,YAAA,CAAAiI,SAAS;MAACP,IAAI,EAAGA;IAAM,CAAE,CAAG;IACpCQ,QAAQ,EAAGzD,aAAe;IAC1BmB,WAAW,EAAGA,WAAa;IAC3BU,OAAO,EAAGjC,aAAe;IACzBiD,WAAW,EAAGA,WAAa;IAC3Ba,MAAM,EAAC,SAAS;IAChB/B,YAAY,EAAGC,8BAAqB;IACpC+B,KAAK,EAAG;MAAE7G,EAAE;MAAEiD;IAAI,CAAG;IACrBiC,YAAY,EAAGA,YAAc;IAC7B4B,mBAAmB,EAAGvF,YAAY,IAAI7B;EAAK,CAC3C,CACM,CAAC;AAEX;AAAC,IAAAqH,QAAA,GAEczG,SAAS;AAAAR,OAAA,CAAAyG,OAAA,GAAAQ,QAAA"}
|
|
1
|
+
{"version":3,"names":["_classnames","_interopRequireDefault","require","_blob","_components","_data","_blockEditor","_element","_i18n","_icons","_notices","_image","_constants","pickRelevantMediaFiles","image","size","imageProps","Object","fromEntries","entries","filter","key","includes","url","sizes","media_details","source_url","exports","isTemporaryImage","id","isBlobURL","isExternalImage","hasSize","_image$sizes$size","_image$media_details$","ImageEdit","attributes","setAttributes","isSelected","className","insertBlocksAfter","onReplace","context","clientId","alt","caption","width","height","sizeSlug","aspectRatio","scale","align","metadata","temporaryURL","setTemporaryURL","useState","altRef","useRef","useEffect","current","captionRef","__unstableMarkNextChangeAsNotPersistent","useDispatch","blockEditorStore","undefined","ref","imageDefaultSize","mediaUpload","useSelect","select","getSettings","settings","blockEditingMode","useBlockEditingMode","createErrorNotice","noticesStore","onUploadError","message","type","src","onSelectImage","media","title","newSize","mediaAttributes","omittedCaption","restMediaAttributes","additionalAttributes","linkDestination","window","wp","view","defaultProps","link","LINK_DESTINATION_NONE","LINK_DESTINATION_MEDIA","LINK_DESTINATION_ATTACHMENT","LINK_DESTINATION_CUSTOM","href","onSelectURL","newURL","isTemp","file","getBlobByURL","filesList","onFileChange","img","allowedTypes","ALLOWED_MEDIA_TYPES","onError","revokeBlobURL","isExternal","mediaPreview","_react","createElement","__","borderProps","useBorderProps","classes","classnames","style","keys","length","blockProps","useBlockProps","isUrlAttributeConnected","bindings","placeholder","content","Placeholder","withIllustration","icon","pluginsIcon","label","instructions","objectFit","default","containerRef","MediaPlaceholder","BlockIcon","onSelect","accept","value","disableMediaButtons","_default"],"sources":["@wordpress/block-library/src/image/edit.js"],"sourcesContent":["/**\n * External dependencies\n */\nimport classnames from 'classnames';\n\n/**\n * WordPress dependencies\n */\nimport { getBlobByURL, isBlobURL, revokeBlobURL } from '@wordpress/blob';\nimport { Placeholder } from '@wordpress/components';\nimport { useDispatch, useSelect } from '@wordpress/data';\nimport {\n\tBlockIcon,\n\tMediaPlaceholder,\n\tuseBlockProps,\n\tstore as blockEditorStore,\n\t__experimentalUseBorderProps as useBorderProps,\n\tuseBlockEditingMode,\n} from '@wordpress/block-editor';\nimport { useEffect, useRef, useState } from '@wordpress/element';\nimport { __ } from '@wordpress/i18n';\nimport { image as icon, plugins as pluginsIcon } from '@wordpress/icons';\nimport { store as noticesStore } from '@wordpress/notices';\n\n/**\n * Internal dependencies\n */\nimport Image from './image';\n\n/**\n * Module constants\n */\nimport {\n\tLINK_DESTINATION_ATTACHMENT,\n\tLINK_DESTINATION_CUSTOM,\n\tLINK_DESTINATION_MEDIA,\n\tLINK_DESTINATION_NONE,\n\tALLOWED_MEDIA_TYPES,\n} from './constants';\n\nexport const pickRelevantMediaFiles = ( image, size ) => {\n\tconst imageProps = Object.fromEntries(\n\t\tObject.entries( image ?? {} ).filter( ( [ key ] ) =>\n\t\t\t[ 'alt', 'id', 'link', 'caption' ].includes( key )\n\t\t)\n\t);\n\n\timageProps.url =\n\t\timage?.sizes?.[ size ]?.url ||\n\t\timage?.media_details?.sizes?.[ size ]?.source_url ||\n\t\timage.url;\n\treturn imageProps;\n};\n\n/**\n * Is the URL a temporary blob URL? A blob URL is one that is used temporarily\n * while the image is being uploaded and will not have an id yet allocated.\n *\n * @param {number=} id The id of the image.\n * @param {string=} url The url of the image.\n *\n * @return {boolean} Is the URL a Blob URL\n */\nconst isTemporaryImage = ( id, url ) => ! id && isBlobURL( url );\n\n/**\n * Is the url for the image hosted externally. An externally hosted image has no\n * id and is not a blob url.\n *\n * @param {number=} id The id of the image.\n * @param {string=} url The url of the image.\n *\n * @return {boolean} Is the url an externally hosted url?\n */\nexport const isExternalImage = ( id, url ) => url && ! id && ! isBlobURL( url );\n\n/**\n * Checks if WP generated the specified image size. Size generation is skipped\n * when the image is smaller than the said size.\n *\n * @param {Object} image\n * @param {string} size\n *\n * @return {boolean} Whether or not it has default image size.\n */\nfunction hasSize( image, size ) {\n\treturn (\n\t\t'url' in ( image?.sizes?.[ size ] ?? {} ) ||\n\t\t'source_url' in ( image?.media_details?.sizes?.[ size ] ?? {} )\n\t);\n}\n\nexport function ImageEdit( {\n\tattributes,\n\tsetAttributes,\n\tisSelected,\n\tclassName,\n\tinsertBlocksAfter,\n\tonReplace,\n\tcontext,\n\tclientId,\n} ) {\n\tconst {\n\t\turl = '',\n\t\talt,\n\t\tcaption,\n\t\tid,\n\t\twidth,\n\t\theight,\n\t\tsizeSlug,\n\t\taspectRatio,\n\t\tscale,\n\t\talign,\n\t\tmetadata,\n\t} = attributes;\n\tconst [ temporaryURL, setTemporaryURL ] = useState();\n\n\tconst altRef = useRef();\n\tuseEffect( () => {\n\t\taltRef.current = alt;\n\t}, [ alt ] );\n\n\tconst captionRef = useRef();\n\tuseEffect( () => {\n\t\tcaptionRef.current = caption;\n\t}, [ caption ] );\n\n\tconst { __unstableMarkNextChangeAsNotPersistent } =\n\t\tuseDispatch( blockEditorStore );\n\n\tuseEffect( () => {\n\t\tif ( [ 'wide', 'full' ].includes( align ) ) {\n\t\t\t__unstableMarkNextChangeAsNotPersistent();\n\t\t\tsetAttributes( {\n\t\t\t\twidth: undefined,\n\t\t\t\theight: undefined,\n\t\t\t\taspectRatio: undefined,\n\t\t\t\tscale: undefined,\n\t\t\t} );\n\t\t}\n\t}, [ align ] );\n\n\tconst ref = useRef();\n\tconst { imageDefaultSize, mediaUpload } = useSelect( ( select ) => {\n\t\tconst { getSettings } = select( blockEditorStore );\n\t\tconst settings = getSettings();\n\t\treturn {\n\t\t\timageDefaultSize: settings.imageDefaultSize,\n\t\t\tmediaUpload: settings.mediaUpload,\n\t\t};\n\t}, [] );\n\tconst blockEditingMode = useBlockEditingMode();\n\n\tconst { createErrorNotice } = useDispatch( noticesStore );\n\tfunction onUploadError( message ) {\n\t\tcreateErrorNotice( message, { type: 'snackbar' } );\n\t\tsetAttributes( {\n\t\t\tsrc: undefined,\n\t\t\tid: undefined,\n\t\t\turl: undefined,\n\t\t} );\n\t\tsetTemporaryURL( undefined );\n\t}\n\n\tfunction onSelectImage( media ) {\n\t\tif ( ! media || ! media.url ) {\n\t\t\tsetAttributes( {\n\t\t\t\turl: undefined,\n\t\t\t\talt: undefined,\n\t\t\t\tid: undefined,\n\t\t\t\ttitle: undefined,\n\t\t\t\tcaption: undefined,\n\t\t\t} );\n\n\t\t\treturn;\n\t\t}\n\n\t\tif ( isBlobURL( media.url ) ) {\n\t\t\tsetTemporaryURL( media.url );\n\t\t\treturn;\n\t\t}\n\n\t\tsetTemporaryURL();\n\n\t\t// Try to use the previous selected image size if its available\n\t\t// otherwise try the default image size or fallback to \"full\"\n\t\tlet newSize = 'full';\n\t\tif ( sizeSlug && hasSize( media, sizeSlug ) ) {\n\t\t\tnewSize = sizeSlug;\n\t\t} else if ( hasSize( media, imageDefaultSize ) ) {\n\t\t\tnewSize = imageDefaultSize;\n\t\t}\n\n\t\tlet mediaAttributes = pickRelevantMediaFiles( media, newSize );\n\n\t\t// If a caption text was meanwhile written by the user,\n\t\t// make sure the text is not overwritten by empty captions.\n\t\tif ( captionRef.current && ! mediaAttributes.caption ) {\n\t\t\tconst { caption: omittedCaption, ...restMediaAttributes } =\n\t\t\t\tmediaAttributes;\n\t\t\tmediaAttributes = restMediaAttributes;\n\t\t}\n\n\t\tlet additionalAttributes;\n\t\t// Reset the dimension attributes if changing to a different image.\n\t\tif ( ! media.id || media.id !== id ) {\n\t\t\tadditionalAttributes = {\n\t\t\t\tsizeSlug: newSize,\n\t\t\t};\n\t\t} else {\n\t\t\t// Keep the same url when selecting the same file, so \"Resolution\"\n\t\t\t// option is not changed.\n\t\t\tadditionalAttributes = { url };\n\t\t}\n\n\t\t// Check if default link setting should be used.\n\t\tlet linkDestination = attributes.linkDestination;\n\t\tif ( ! linkDestination ) {\n\t\t\t// Use the WordPress option to determine the proper default.\n\t\t\t// The constants used in Gutenberg do not match WP options so a little more complicated than ideal.\n\t\t\t// TODO: fix this in a follow up PR, requires updating media-text and ui component.\n\t\t\tswitch (\n\t\t\t\twindow?.wp?.media?.view?.settings?.defaultProps?.link ||\n\t\t\t\tLINK_DESTINATION_NONE\n\t\t\t) {\n\t\t\t\tcase 'file':\n\t\t\t\tcase LINK_DESTINATION_MEDIA:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_MEDIA;\n\t\t\t\t\tbreak;\n\t\t\t\tcase 'post':\n\t\t\t\tcase LINK_DESTINATION_ATTACHMENT:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_ATTACHMENT;\n\t\t\t\t\tbreak;\n\t\t\t\tcase LINK_DESTINATION_CUSTOM:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_CUSTOM;\n\t\t\t\t\tbreak;\n\t\t\t\tcase LINK_DESTINATION_NONE:\n\t\t\t\t\tlinkDestination = LINK_DESTINATION_NONE;\n\t\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// Check if the image is linked to it's media.\n\t\tlet href;\n\t\tswitch ( linkDestination ) {\n\t\t\tcase LINK_DESTINATION_MEDIA:\n\t\t\t\thref = media.url;\n\t\t\t\tbreak;\n\t\t\tcase LINK_DESTINATION_ATTACHMENT:\n\t\t\t\thref = media.link;\n\t\t\t\tbreak;\n\t\t}\n\t\tmediaAttributes.href = href;\n\n\t\tsetAttributes( {\n\t\t\t...mediaAttributes,\n\t\t\t...additionalAttributes,\n\t\t\tlinkDestination,\n\t\t} );\n\t}\n\n\tfunction onSelectURL( newURL ) {\n\t\tif ( newURL !== url ) {\n\t\t\tsetAttributes( {\n\t\t\t\turl: newURL,\n\t\t\t\tid: undefined,\n\t\t\t\tsizeSlug: imageDefaultSize,\n\t\t\t} );\n\t\t}\n\t}\n\n\tlet isTemp = isTemporaryImage( id, url );\n\n\t// Upload a temporary image on mount.\n\tuseEffect( () => {\n\t\tif ( ! isTemp ) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst file = getBlobByURL( url );\n\n\t\tif ( file ) {\n\t\t\tmediaUpload( {\n\t\t\t\tfilesList: [ file ],\n\t\t\t\tonFileChange: ( [ img ] ) => {\n\t\t\t\t\tonSelectImage( img );\n\t\t\t\t},\n\t\t\t\tallowedTypes: ALLOWED_MEDIA_TYPES,\n\t\t\t\tonError: ( message ) => {\n\t\t\t\t\tisTemp = false;\n\t\t\t\t\tonUploadError( message );\n\t\t\t\t},\n\t\t\t} );\n\t\t}\n\t}, [] );\n\n\t// If an image is temporary, revoke the Blob url when it is uploaded (and is\n\t// no longer temporary).\n\tuseEffect( () => {\n\t\tif ( isTemp ) {\n\t\t\tsetTemporaryURL( url );\n\t\t\treturn;\n\t\t}\n\t\trevokeBlobURL( temporaryURL );\n\t}, [ isTemp, url ] );\n\n\tconst isExternal = isExternalImage( id, url );\n\tconst src = isExternal ? url : undefined;\n\tconst mediaPreview = !! url && (\n\t\t<img\n\t\t\talt={ __( 'Edit image' ) }\n\t\t\ttitle={ __( 'Edit image' ) }\n\t\t\tclassName={ 'edit-image-preview' }\n\t\t\tsrc={ url }\n\t\t/>\n\t);\n\n\tconst borderProps = useBorderProps( attributes );\n\n\tconst classes = classnames( className, {\n\t\t'is-transient': temporaryURL,\n\t\t'is-resized': !! width || !! height,\n\t\t[ `size-${ sizeSlug }` ]: sizeSlug,\n\t\t'has-custom-border':\n\t\t\t!! borderProps.className ||\n\t\t\t( borderProps.style &&\n\t\t\t\tObject.keys( borderProps.style ).length > 0 ),\n\t} );\n\n\tconst blockProps = useBlockProps( {\n\t\tref,\n\t\tclassName: classes,\n\t} );\n\n\t// Much of this description is duplicated from MediaPlaceholder.\n\tconst isUrlAttributeConnected = !! metadata?.bindings?.url;\n\tconst placeholder = ( content ) => {\n\t\treturn (\n\t\t\t<Placeholder\n\t\t\t\tclassName={ classnames( 'block-editor-media-placeholder', {\n\t\t\t\t\t[ borderProps.className ]:\n\t\t\t\t\t\t!! borderProps.className && ! isSelected,\n\t\t\t\t} ) }\n\t\t\t\twithIllustration={ true }\n\t\t\t\ticon={ isUrlAttributeConnected ? pluginsIcon : icon }\n\t\t\t\tlabel={ __( 'Image' ) }\n\t\t\t\tinstructions={\n\t\t\t\t\t! isUrlAttributeConnected &&\n\t\t\t\t\t__(\n\t\t\t\t\t\t'Upload an image file, pick one from your media library, or add one with a URL.'\n\t\t\t\t\t)\n\t\t\t\t}\n\t\t\t\tstyle={ {\n\t\t\t\t\taspectRatio:\n\t\t\t\t\t\t! ( width && height ) && aspectRatio\n\t\t\t\t\t\t\t? aspectRatio\n\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\twidth: height && aspectRatio ? '100%' : width,\n\t\t\t\t\theight: width && aspectRatio ? '100%' : height,\n\t\t\t\t\tobjectFit: scale,\n\t\t\t\t\t...borderProps.style,\n\t\t\t\t} }\n\t\t\t>\n\t\t\t\t{ isUrlAttributeConnected ? (\n\t\t\t\t\t<span\n\t\t\t\t\t\tclassName={ 'block-bindings-media-placeholder-message' }\n\t\t\t\t\t>\n\t\t\t\t\t\t{ __( 'Connected to a custom field' ) }\n\t\t\t\t\t</span>\n\t\t\t\t) : (\n\t\t\t\t\tcontent\n\t\t\t\t) }\n\t\t\t</Placeholder>\n\t\t);\n\t};\n\n\treturn (\n\t\t<figure { ...blockProps }>\n\t\t\t<Image\n\t\t\t\ttemporaryURL={ temporaryURL }\n\t\t\t\tattributes={ attributes }\n\t\t\t\tsetAttributes={ setAttributes }\n\t\t\t\tisSelected={ isSelected }\n\t\t\t\tinsertBlocksAfter={ insertBlocksAfter }\n\t\t\t\tonReplace={ onReplace }\n\t\t\t\tonSelectImage={ onSelectImage }\n\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\tonUploadError={ onUploadError }\n\t\t\t\tcontainerRef={ ref }\n\t\t\t\tcontext={ context }\n\t\t\t\tclientId={ clientId }\n\t\t\t\tblockEditingMode={ blockEditingMode }\n\t\t\t/>\n\t\t\t<MediaPlaceholder\n\t\t\t\ticon={ <BlockIcon icon={ icon } /> }\n\t\t\t\tonSelect={ onSelectImage }\n\t\t\t\tonSelectURL={ onSelectURL }\n\t\t\t\tonError={ onUploadError }\n\t\t\t\tplaceholder={ placeholder }\n\t\t\t\taccept=\"image/*\"\n\t\t\t\tallowedTypes={ ALLOWED_MEDIA_TYPES }\n\t\t\t\tvalue={ { id, src } }\n\t\t\t\tmediaPreview={ mediaPreview }\n\t\t\t\tdisableMediaButtons={ temporaryURL || url }\n\t\t\t/>\n\t\t</figure>\n\t);\n}\n\nexport default ImageEdit;\n"],"mappings":";;;;;;;;;AAGA,IAAAA,WAAA,GAAAC,sBAAA,CAAAC,OAAA;AAKA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AACA,IAAAG,KAAA,GAAAH,OAAA;AACA,IAAAI,YAAA,GAAAJ,OAAA;AAQA,IAAAK,QAAA,GAAAL,OAAA;AACA,IAAAM,KAAA,GAAAN,OAAA;AACA,IAAAO,MAAA,GAAAP,OAAA;AACA,IAAAQ,QAAA,GAAAR,OAAA;AAKA,IAAAS,MAAA,GAAAV,sBAAA,CAAAC,OAAA;AAKA,IAAAU,UAAA,GAAAV,OAAA;AAhCA;AACA;AACA;;AAGA;AACA;AACA;;AAiBA;AACA;AACA;;AAGA;AACA;AACA;;AASO,MAAMW,sBAAsB,GAAGA,CAAEC,KAAK,EAAEC,IAAI,KAAM;EACxD,MAAMC,UAAU,GAAGC,MAAM,CAACC,WAAW,CACpCD,MAAM,CAACE,OAAO,CAAEL,KAAK,aAALA,KAAK,cAALA,KAAK,GAAI,CAAC,CAAE,CAAC,CAACM,MAAM,CAAE,CAAE,CAAEC,GAAG,CAAE,KAC9C,CAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,CAAE,CAACC,QAAQ,CAAED,GAAI,CAClD,CACD,CAAC;EAEDL,UAAU,CAACO,GAAG,GACbT,KAAK,EAAEU,KAAK,GAAIT,IAAI,CAAE,EAAEQ,GAAG,IAC3BT,KAAK,EAAEW,aAAa,EAAED,KAAK,GAAIT,IAAI,CAAE,EAAEW,UAAU,IACjDZ,KAAK,CAACS,GAAG;EACV,OAAOP,UAAU;AAClB,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AARAW,OAAA,CAAAd,sBAAA,GAAAA,sBAAA;AASA,MAAMe,gBAAgB,GAAGA,CAAEC,EAAE,EAAEN,GAAG,KAAM,CAAEM,EAAE,IAAI,IAAAC,eAAS,EAAEP,GAAI,CAAC;;AAEhE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO,MAAMQ,eAAe,GAAGA,CAAEF,EAAE,EAAEN,GAAG,KAAMA,GAAG,IAAI,CAAEM,EAAE,IAAI,CAAE,IAAAC,eAAS,EAAEP,GAAI,CAAC;;AAE/E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AARAI,OAAA,CAAAI,eAAA,GAAAA,eAAA;AASA,SAASC,OAAOA,CAAElB,KAAK,EAAEC,IAAI,EAAG;EAAA,IAAAkB,iBAAA,EAAAC,qBAAA;EAC/B,OACC,KAAK,MAAAD,iBAAA,GAAMnB,KAAK,EAAEU,KAAK,GAAIT,IAAI,CAAE,cAAAkB,iBAAA,cAAAA,iBAAA,GAAI,CAAC,CAAC,CAAE,IACzC,YAAY,MAAAC,qBAAA,GAAMpB,KAAK,EAAEW,aAAa,EAAED,KAAK,GAAIT,IAAI,CAAE,cAAAmB,qBAAA,cAAAA,qBAAA,GAAI,CAAC,CAAC,CAAE;AAEjE;AAEO,SAASC,SAASA,CAAE;EAC1BC,UAAU;EACVC,aAAa;EACbC,UAAU;EACVC,SAAS;EACTC,iBAAiB;EACjBC,SAAS;EACTC,OAAO;EACPC;AACD,CAAC,EAAG;EACH,MAAM;IACLpB,GAAG,GAAG,EAAE;IACRqB,GAAG;IACHC,OAAO;IACPhB,EAAE;IACFiB,KAAK;IACLC,MAAM;IACNC,QAAQ;IACRC,WAAW;IACXC,KAAK;IACLC,KAAK;IACLC;EACD,CAAC,GAAGhB,UAAU;EACd,MAAM,CAAEiB,YAAY,EAAEC,eAAe,CAAE,GAAG,IAAAC,iBAAQ,EAAC,CAAC;EAEpD,MAAMC,MAAM,GAAG,IAAAC,eAAM,EAAC,CAAC;EACvB,IAAAC,kBAAS,EAAE,MAAM;IAChBF,MAAM,CAACG,OAAO,GAAGf,GAAG;EACrB,CAAC,EAAE,CAAEA,GAAG,CAAG,CAAC;EAEZ,MAAMgB,UAAU,GAAG,IAAAH,eAAM,EAAC,CAAC;EAC3B,IAAAC,kBAAS,EAAE,MAAM;IAChBE,UAAU,CAACD,OAAO,GAAGd,OAAO;EAC7B,CAAC,EAAE,CAAEA,OAAO,CAAG,CAAC;EAEhB,MAAM;IAAEgB;EAAwC,CAAC,GAChD,IAAAC,iBAAW,EAAEC,kBAAiB,CAAC;EAEhC,IAAAL,kBAAS,EAAE,MAAM;IAChB,IAAK,CAAE,MAAM,EAAE,MAAM,CAAE,CAACpC,QAAQ,CAAE6B,KAAM,CAAC,EAAG;MAC3CU,uCAAuC,CAAC,CAAC;MACzCxB,aAAa,CAAE;QACdS,KAAK,EAAEkB,SAAS;QAChBjB,MAAM,EAAEiB,SAAS;QACjBf,WAAW,EAAEe,SAAS;QACtBd,KAAK,EAAEc;MACR,CAAE,CAAC;IACJ;EACD,CAAC,EAAE,CAAEb,KAAK,CAAG,CAAC;EAEd,MAAMc,GAAG,GAAG,IAAAR,eAAM,EAAC,CAAC;EACpB,MAAM;IAAES,gBAAgB;IAAEC;EAAY,CAAC,GAAG,IAAAC,eAAS,EAAIC,MAAM,IAAM;IAClE,MAAM;MAAEC;IAAY,CAAC,GAAGD,MAAM,CAAEN,kBAAiB,CAAC;IAClD,MAAMQ,QAAQ,GAAGD,WAAW,CAAC,CAAC;IAC9B,OAAO;MACNJ,gBAAgB,EAAEK,QAAQ,CAACL,gBAAgB;MAC3CC,WAAW,EAAEI,QAAQ,CAACJ;IACvB,CAAC;EACF,CAAC,EAAE,EAAG,CAAC;EACP,MAAMK,gBAAgB,GAAG,IAAAC,gCAAmB,EAAC,CAAC;EAE9C,MAAM;IAAEC;EAAkB,CAAC,GAAG,IAAAZ,iBAAW,EAAEa,cAAa,CAAC;EACzD,SAASC,aAAaA,CAAEC,OAAO,EAAG;IACjCH,iBAAiB,CAAEG,OAAO,EAAE;MAAEC,IAAI,EAAE;IAAW,CAAE,CAAC;IAClDzC,aAAa,CAAE;MACd0C,GAAG,EAAEf,SAAS;MACdnC,EAAE,EAAEmC,SAAS;MACbzC,GAAG,EAAEyC;IACN,CAAE,CAAC;IACHV,eAAe,CAAEU,SAAU,CAAC;EAC7B;EAEA,SAASgB,aAAaA,CAAEC,KAAK,EAAG;IAC/B,IAAK,CAAEA,KAAK,IAAI,CAAEA,KAAK,CAAC1D,GAAG,EAAG;MAC7Bc,aAAa,CAAE;QACdd,GAAG,EAAEyC,SAAS;QACdpB,GAAG,EAAEoB,SAAS;QACdnC,EAAE,EAAEmC,SAAS;QACbkB,KAAK,EAAElB,SAAS;QAChBnB,OAAO,EAAEmB;MACV,CAAE,CAAC;MAEH;IACD;IAEA,IAAK,IAAAlC,eAAS,EAAEmD,KAAK,CAAC1D,GAAI,CAAC,EAAG;MAC7B+B,eAAe,CAAE2B,KAAK,CAAC1D,GAAI,CAAC;MAC5B;IACD;IAEA+B,eAAe,CAAC,CAAC;;IAEjB;IACA;IACA,IAAI6B,OAAO,GAAG,MAAM;IACpB,IAAKnC,QAAQ,IAAIhB,OAAO,CAAEiD,KAAK,EAAEjC,QAAS,CAAC,EAAG;MAC7CmC,OAAO,GAAGnC,QAAQ;IACnB,CAAC,MAAM,IAAKhB,OAAO,CAAEiD,KAAK,EAAEf,gBAAiB,CAAC,EAAG;MAChDiB,OAAO,GAAGjB,gBAAgB;IAC3B;IAEA,IAAIkB,eAAe,GAAGvE,sBAAsB,CAAEoE,KAAK,EAAEE,OAAQ,CAAC;;IAE9D;IACA;IACA,IAAKvB,UAAU,CAACD,OAAO,IAAI,CAAEyB,eAAe,CAACvC,OAAO,EAAG;MACtD,MAAM;QAAEA,OAAO,EAAEwC,cAAc;QAAE,GAAGC;MAAoB,CAAC,GACxDF,eAAe;MAChBA,eAAe,GAAGE,mBAAmB;IACtC;IAEA,IAAIC,oBAAoB;IACxB;IACA,IAAK,CAAEN,KAAK,CAACpD,EAAE,IAAIoD,KAAK,CAACpD,EAAE,KAAKA,EAAE,EAAG;MACpC0D,oBAAoB,GAAG;QACtBvC,QAAQ,EAAEmC;MACX,CAAC;IACF,CAAC,MAAM;MACN;MACA;MACAI,oBAAoB,GAAG;QAAEhE;MAAI,CAAC;IAC/B;;IAEA;IACA,IAAIiE,eAAe,GAAGpD,UAAU,CAACoD,eAAe;IAChD,IAAK,CAAEA,eAAe,EAAG;MACxB;MACA;MACA;MACA,QACCC,MAAM,EAAEC,EAAE,EAAET,KAAK,EAAEU,IAAI,EAAEpB,QAAQ,EAAEqB,YAAY,EAAEC,IAAI,IACrDC,gCAAqB;QAErB,KAAK,MAAM;QACX,KAAKC,iCAAsB;UAC1BP,eAAe,GAAGO,iCAAsB;UACxC;QACD,KAAK,MAAM;QACX,KAAKC,sCAA2B;UAC/BR,eAAe,GAAGQ,sCAA2B;UAC7C;QACD,KAAKC,kCAAuB;UAC3BT,eAAe,GAAGS,kCAAuB;UACzC;QACD,KAAKH,gCAAqB;UACzBN,eAAe,GAAGM,gCAAqB;UACvC;MACF;IACD;;IAEA;IACA,IAAII,IAAI;IACR,QAASV,eAAe;MACvB,KAAKO,iCAAsB;QAC1BG,IAAI,GAAGjB,KAAK,CAAC1D,GAAG;QAChB;MACD,KAAKyE,sCAA2B;QAC/BE,IAAI,GAAGjB,KAAK,CAACY,IAAI;QACjB;IACF;IACAT,eAAe,CAACc,IAAI,GAAGA,IAAI;IAE3B7D,aAAa,CAAE;MACd,GAAG+C,eAAe;MAClB,GAAGG,oBAAoB;MACvBC;IACD,CAAE,CAAC;EACJ;EAEA,SAASW,WAAWA,CAAEC,MAAM,EAAG;IAC9B,IAAKA,MAAM,KAAK7E,GAAG,EAAG;MACrBc,aAAa,CAAE;QACdd,GAAG,EAAE6E,MAAM;QACXvE,EAAE,EAAEmC,SAAS;QACbhB,QAAQ,EAAEkB;MACX,CAAE,CAAC;IACJ;EACD;EAEA,IAAImC,MAAM,GAAGzE,gBAAgB,CAAEC,EAAE,EAAEN,GAAI,CAAC;;EAExC;EACA,IAAAmC,kBAAS,EAAE,MAAM;IAChB,IAAK,CAAE2C,MAAM,EAAG;MACf;IACD;IAEA,MAAMC,IAAI,GAAG,IAAAC,kBAAY,EAAEhF,GAAI,CAAC;IAEhC,IAAK+E,IAAI,EAAG;MACXnC,WAAW,CAAE;QACZqC,SAAS,EAAE,CAAEF,IAAI,CAAE;QACnBG,YAAY,EAAEA,CAAE,CAAEC,GAAG,CAAE,KAAM;UAC5B1B,aAAa,CAAE0B,GAAI,CAAC;QACrB,CAAC;QACDC,YAAY,EAAEC,8BAAmB;QACjCC,OAAO,EAAIhC,OAAO,IAAM;UACvBwB,MAAM,GAAG,KAAK;UACdzB,aAAa,CAAEC,OAAQ,CAAC;QACzB;MACD,CAAE,CAAC;IACJ;EACD,CAAC,EAAE,EAAG,CAAC;;EAEP;EACA;EACA,IAAAnB,kBAAS,EAAE,MAAM;IAChB,IAAK2C,MAAM,EAAG;MACb/C,eAAe,CAAE/B,GAAI,CAAC;MACtB;IACD;IACA,IAAAuF,mBAAa,EAAEzD,YAAa,CAAC;EAC9B,CAAC,EAAE,CAAEgD,MAAM,EAAE9E,GAAG,CAAG,CAAC;EAEpB,MAAMwF,UAAU,GAAGhF,eAAe,CAAEF,EAAE,EAAEN,GAAI,CAAC;EAC7C,MAAMwD,GAAG,GAAGgC,UAAU,GAAGxF,GAAG,GAAGyC,SAAS;EACxC,MAAMgD,YAAY,GAAG,CAAC,CAAEzF,GAAG,IAC1B,IAAA0F,MAAA,CAAAC,aAAA;IACCtE,GAAG,EAAG,IAAAuE,QAAE,EAAE,YAAa,CAAG;IAC1BjC,KAAK,EAAG,IAAAiC,QAAE,EAAE,YAAa,CAAG;IAC5B5E,SAAS,EAAG,oBAAsB;IAClCwC,GAAG,EAAGxD;EAAK,CACX,CACD;EAED,MAAM6F,WAAW,GAAG,IAAAC,yCAAc,EAAEjF,UAAW,CAAC;EAEhD,MAAMkF,OAAO,GAAG,IAAAC,mBAAU,EAAEhF,SAAS,EAAE;IACtC,cAAc,EAAEc,YAAY;IAC5B,YAAY,EAAE,CAAC,CAAEP,KAAK,IAAI,CAAC,CAAEC,MAAM;IACnC,CAAG,QAAQC,QAAU,EAAC,GAAIA,QAAQ;IAClC,mBAAmB,EAClB,CAAC,CAAEoE,WAAW,CAAC7E,SAAS,IACtB6E,WAAW,CAACI,KAAK,IAClBvG,MAAM,CAACwG,IAAI,CAAEL,WAAW,CAACI,KAAM,CAAC,CAACE,MAAM,GAAG;EAC7C,CAAE,CAAC;EAEH,MAAMC,UAAU,GAAG,IAAAC,0BAAa,EAAE;IACjC3D,GAAG;IACH1B,SAAS,EAAE+E;EACZ,CAAE,CAAC;;EAEH;EACA,MAAMO,uBAAuB,GAAG,CAAC,CAAEzE,QAAQ,EAAE0E,QAAQ,EAAEvG,GAAG;EAC1D,MAAMwG,WAAW,GAAKC,OAAO,IAAM;IAClC,OACC,IAAAf,MAAA,CAAAC,aAAA,EAAC9G,WAAA,CAAA6H,WAAW;MACX1F,SAAS,EAAG,IAAAgF,mBAAU,EAAE,gCAAgC,EAAE;QACzD,CAAEH,WAAW,CAAC7E,SAAS,GACtB,CAAC,CAAE6E,WAAW,CAAC7E,SAAS,IAAI,CAAED;MAChC,CAAE,CAAG;MACL4F,gBAAgB,EAAG,IAAM;MACzBC,IAAI,EAAGN,uBAAuB,GAAGO,cAAW,GAAGD,YAAM;MACrDE,KAAK,EAAG,IAAAlB,QAAE,EAAE,OAAQ,CAAG;MACvBmB,YAAY,EACX,CAAET,uBAAuB,IACzB,IAAAV,QAAE,EACD,gFACD,CACA;MACDK,KAAK,EAAG;QACPvE,WAAW,EACV,EAAIH,KAAK,IAAIC,MAAM,CAAE,IAAIE,WAAW,GACjCA,WAAW,GACXe,SAAS;QACblB,KAAK,EAAEC,MAAM,IAAIE,WAAW,GAAG,MAAM,GAAGH,KAAK;QAC7CC,MAAM,EAAED,KAAK,IAAIG,WAAW,GAAG,MAAM,GAAGF,MAAM;QAC9CwF,SAAS,EAAErF,KAAK;QAChB,GAAGkE,WAAW,CAACI;MAChB;IAAG,GAEDK,uBAAuB,GACxB,IAAAZ,MAAA,CAAAC,aAAA;MACC3E,SAAS,EAAG;IAA4C,GAEtD,IAAA4E,QAAE,EAAE,6BAA8B,CAC/B,CAAC,GAEPa,OAEW,CAAC;EAEhB,CAAC;EAED,OACC,IAAAf,MAAA,CAAAC,aAAA;IAAA,GAAaS;EAAU,GACtB,IAAAV,MAAA,CAAAC,aAAA,EAACvG,MAAA,CAAA6H,OAAK;IACLnF,YAAY,EAAGA,YAAc;IAC7BjB,UAAU,EAAGA,UAAY;IACzBC,aAAa,EAAGA,aAAe;IAC/BC,UAAU,EAAGA,UAAY;IACzBE,iBAAiB,EAAGA,iBAAmB;IACvCC,SAAS,EAAGA,SAAW;IACvBuC,aAAa,EAAGA,aAAe;IAC/BmB,WAAW,EAAGA,WAAa;IAC3BvB,aAAa,EAAGA,aAAe;IAC/B6D,YAAY,EAAGxE,GAAK;IACpBvB,OAAO,EAAGA,OAAS;IACnBC,QAAQ,EAAGA,QAAU;IACrB6B,gBAAgB,EAAGA;EAAkB,CACrC,CAAC,EACF,IAAAyC,MAAA,CAAAC,aAAA,EAAC5G,YAAA,CAAAoI,gBAAgB;IAChBP,IAAI,EAAG,IAAAlB,MAAA,CAAAC,aAAA,EAAC5G,YAAA,CAAAqI,SAAS;MAACR,IAAI,EAAGA;IAAM,CAAE,CAAG;IACpCS,QAAQ,EAAG5D,aAAe;IAC1BmB,WAAW,EAAGA,WAAa;IAC3BU,OAAO,EAAGjC,aAAe;IACzBmD,WAAW,EAAGA,WAAa;IAC3Bc,MAAM,EAAC,SAAS;IAChBlC,YAAY,EAAGC,8BAAqB;IACpCkC,KAAK,EAAG;MAAEjH,EAAE;MAAEkD;IAAI,CAAG;IACrBiC,YAAY,EAAGA,YAAc;IAC7B+B,mBAAmB,EAAG1F,YAAY,IAAI9B;EAAK,CAC3C,CACM,CAAC;AAEX;AAAC,IAAAyH,QAAA,GAEc7G,SAAS;AAAAR,OAAA,CAAA6G,OAAA,GAAAQ,QAAA"}
|
package/build/image/image.js
CHANGED
|
@@ -106,7 +106,8 @@ function Image({
|
|
|
106
106
|
scale,
|
|
107
107
|
linkTarget,
|
|
108
108
|
sizeSlug,
|
|
109
|
-
lightbox
|
|
109
|
+
lightbox,
|
|
110
|
+
metadata
|
|
110
111
|
} = attributes;
|
|
111
112
|
|
|
112
113
|
// The only supported unit is px, so we can parseInt to strip the px here.
|
|
@@ -301,7 +302,7 @@ function Image({
|
|
|
301
302
|
const [lightboxSetting] = (0, _blockEditor.useSettings)('lightbox');
|
|
302
303
|
const showLightboxToggle = !!lightbox || lightboxSetting?.allowEditing === true;
|
|
303
304
|
const lightboxChecked = !!lightbox?.enabled || !lightbox && !!lightboxSetting?.enabled;
|
|
304
|
-
const lightboxToggleDisabled = linkDestination !== 'none';
|
|
305
|
+
const lightboxToggleDisabled = linkDestination && linkDestination !== 'none';
|
|
305
306
|
const dimensionsControl = (0, _react.createElement)(DimensionsTool, {
|
|
306
307
|
value: {
|
|
307
308
|
width,
|
|
@@ -349,9 +350,31 @@ function Image({
|
|
|
349
350
|
resetAll: resetAll,
|
|
350
351
|
dropdownMenuProps: _constants.TOOLSPANEL_DROPDOWNMENU_PROPS
|
|
351
352
|
}, isResizable && dimensionsControl));
|
|
353
|
+
const {
|
|
354
|
+
lockUrlControls = false,
|
|
355
|
+
lockAltControls = false,
|
|
356
|
+
lockTitleControls = false
|
|
357
|
+
} = (0, _data.useSelect)(select => {
|
|
358
|
+
if (!isSelected) {
|
|
359
|
+
return {};
|
|
360
|
+
}
|
|
361
|
+
const {
|
|
362
|
+
getBlockBindingsSource
|
|
363
|
+
} = (0, _lockUnlock.unlock)(select(_blockEditor.store));
|
|
364
|
+
const {
|
|
365
|
+
url: urlBinding,
|
|
366
|
+
alt: altBinding,
|
|
367
|
+
title: titleBinding
|
|
368
|
+
} = metadata?.bindings || {};
|
|
369
|
+
return {
|
|
370
|
+
lockUrlControls: !!urlBinding && getBlockBindingsSource(urlBinding?.source?.name)?.lockAttributesEditing === true,
|
|
371
|
+
lockAltControls: !!altBinding && getBlockBindingsSource(altBinding?.source?.name)?.lockAttributesEditing === true,
|
|
372
|
+
lockTitleControls: !!titleBinding && getBlockBindingsSource(titleBinding?.source?.name)?.lockAttributesEditing === true
|
|
373
|
+
};
|
|
374
|
+
}, [isSelected]);
|
|
352
375
|
const controls = (0, _react.createElement)(_react.Fragment, null, (0, _react.createElement)(_blockEditor.BlockControls, {
|
|
353
376
|
group: "block"
|
|
354
|
-
}, !multiImageSelection && !isEditingImage && (0, _react.createElement)(_blockEditor.__experimentalImageURLInputUI, {
|
|
377
|
+
}, !multiImageSelection && !isEditingImage && !lockUrlControls && (0, _react.createElement)(_blockEditor.__experimentalImageURLInputUI, {
|
|
355
378
|
url: href || '',
|
|
356
379
|
onChangeUrl: onSetHref,
|
|
357
380
|
linkDestination: linkDestination,
|
|
@@ -368,7 +391,7 @@ function Image({
|
|
|
368
391
|
icon: _icons.overlayText,
|
|
369
392
|
label: (0, _i18n.__)('Add text over image'),
|
|
370
393
|
onClick: switchToCover
|
|
371
|
-
})), !multiImageSelection && !isEditingImage && (0, _react.createElement)(_blockEditor.BlockControls, {
|
|
394
|
+
})), !multiImageSelection && !isEditingImage && !lockUrlControls && (0, _react.createElement)(_blockEditor.BlockControls, {
|
|
372
395
|
group: "other"
|
|
373
396
|
}, (0, _react.createElement)(_blockEditor.MediaReplaceFlow, {
|
|
374
397
|
mediaId: id,
|
|
@@ -397,7 +420,8 @@ function Image({
|
|
|
397
420
|
label: (0, _i18n.__)('Alternative text'),
|
|
398
421
|
value: alt || '',
|
|
399
422
|
onChange: updateAlt,
|
|
400
|
-
|
|
423
|
+
disabled: lockAltControls,
|
|
424
|
+
help: lockAltControls ? (0, _react.createElement)(_react.Fragment, null, (0, _i18n.__)('Connected to a custom field')) : (0, _react.createElement)(_react.Fragment, null, (0, _react.createElement)(_components.ExternalLink, {
|
|
401
425
|
href: "https://www.w3.org/WAI/tutorials/images/decision-tree"
|
|
402
426
|
}, (0, _i18n.__)('Describe the purpose of the image.')), (0, _react.createElement)("br", null), (0, _i18n.__)('Leave empty if decorative.')),
|
|
403
427
|
__nextHasNoMarginBottom: true
|
|
@@ -433,7 +457,8 @@ function Image({
|
|
|
433
457
|
label: (0, _i18n.__)('Title attribute'),
|
|
434
458
|
value: title || '',
|
|
435
459
|
onChange: onSetTitle,
|
|
436
|
-
|
|
460
|
+
disabled: lockTitleControls,
|
|
461
|
+
help: lockTitleControls ? (0, _react.createElement)(_react.Fragment, null, (0, _i18n.__)('Connected to a custom field')) : (0, _react.createElement)(_react.Fragment, null, (0, _i18n.__)('Describe the role of this image on the page.'), (0, _react.createElement)(_components.ExternalLink, {
|
|
437
462
|
href: "https://www.w3.org/TR/html52/dom.html#the-title-attribute"
|
|
438
463
|
}, (0, _i18n.__)('(Note: many devices and browsers do not display this text.)')))
|
|
439
464
|
})));
|
|
@@ -593,7 +618,8 @@ function Image({
|
|
|
593
618
|
}, img));
|
|
594
619
|
}
|
|
595
620
|
if (!url && !temporaryURL) {
|
|
596
|
-
|
|
621
|
+
// Add all controls if the image attributes are connected.
|
|
622
|
+
return metadata?.bindings ? controls : sizeControls;
|
|
597
623
|
}
|
|
598
624
|
return (0, _react.createElement)(_react.Fragment, null, !temporaryURL && controls, img, (0, _react.createElement)(_caption.Caption, {
|
|
599
625
|
attributes: attributes,
|