@wordpress/block-editor 15.9.0 → 15.9.1-next.6deb34194.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/README.md +12 -0
- package/build/components/block-alignment-matrix-control/index.js +1 -8
- package/build/components/block-alignment-matrix-control/index.js.map +2 -2
- package/build/components/block-bindings/attribute-control.js +172 -0
- package/build/components/block-bindings/attribute-control.js.map +7 -0
- package/build/components/block-bindings/index.js +47 -0
- package/build/components/block-bindings/index.js.map +7 -0
- package/build/components/block-bindings/source-fields-list.js +135 -0
- package/build/components/block-bindings/source-fields-list.js.map +7 -0
- package/build/components/block-bindings/use-block-bindings-utils.js +66 -0
- package/build/components/block-bindings/use-block-bindings-utils.js.map +7 -0
- package/build/components/block-edit/edit.js +1 -3
- package/build/components/block-edit/edit.js.map +2 -2
- package/build/components/block-styles/preview-panel.js +3 -5
- package/build/components/block-styles/preview-panel.js.map +2 -2
- package/build/components/block-styles/use-styles-for-block.js +2 -2
- package/build/components/block-styles/use-styles-for-block.js.map +2 -2
- package/build/components/block-toolbar/index.js +1 -8
- package/build/components/block-toolbar/index.js.map +3 -3
- package/build/components/content-only-controls/index.js +2 -25
- package/build/components/content-only-controls/index.js.map +2 -2
- package/build/components/content-only-controls/link/index.js +3 -3
- package/build/components/content-only-controls/link/index.js.map +2 -2
- package/build/components/content-only-controls/media/index.js +3 -3
- package/build/components/content-only-controls/media/index.js.map +2 -2
- package/build/components/content-only-controls/rich-text/index.js +3 -2
- package/build/components/content-only-controls/rich-text/index.js.map +2 -2
- package/build/components/dimensions-tool/width-height-tool.js +4 -16
- package/build/components/dimensions-tool/width-height-tool.js.map +3 -3
- package/build/components/image-editor/cropper.js +3 -34
- package/build/components/image-editor/cropper.js.map +3 -3
- package/build/components/image-editor/index.js +9 -3
- package/build/components/image-editor/index.js.map +2 -2
- package/build/components/image-editor/use-transform-image.js +62 -32
- package/build/components/image-editor/use-transform-image.js.map +2 -2
- package/build/components/image-editor/zoom-dropdown.js +2 -2
- package/build/components/image-editor/zoom-dropdown.js.map +2 -2
- package/build/components/index.js +10 -3
- package/build/components/index.js.map +2 -2
- package/build/components/inserter-draggable-blocks/index.js +8 -4
- package/build/components/inserter-draggable-blocks/index.js.map +2 -2
- package/build/components/inspector-controls-tabs/content-tab.js +3 -2
- package/build/components/inspector-controls-tabs/content-tab.js.map +2 -2
- package/build/components/tool-selector/index.js +46 -0
- package/build/components/tool-selector/index.js.map +7 -0
- package/build/hooks/block-bindings.js +22 -260
- package/build/hooks/block-bindings.js.map +3 -3
- package/build/layouts/grid.js +23 -28
- package/build/layouts/grid.js.map +2 -2
- package/build/utils/block-bindings.js +2 -44
- package/build/utils/block-bindings.js.map +3 -3
- package/build/utils/index.js +2 -5
- package/build/utils/index.js.map +2 -2
- package/build-module/components/block-alignment-matrix-control/index.js +1 -8
- package/build-module/components/block-alignment-matrix-control/index.js.map +2 -2
- package/build-module/components/block-bindings/attribute-control.js +150 -0
- package/build-module/components/block-bindings/attribute-control.js.map +7 -0
- package/build-module/components/block-bindings/index.js +10 -0
- package/build-module/components/block-bindings/index.js.map +7 -0
- package/build-module/components/block-bindings/source-fields-list.js +104 -0
- package/build-module/components/block-bindings/source-fields-list.js.map +7 -0
- package/build-module/components/block-bindings/use-block-bindings-utils.js +45 -0
- package/build-module/components/block-bindings/use-block-bindings-utils.js.map +7 -0
- package/build-module/components/block-edit/edit.js +1 -3
- package/build-module/components/block-edit/edit.js.map +2 -2
- package/build-module/components/block-styles/preview-panel.js +3 -5
- package/build-module/components/block-styles/preview-panel.js.map +2 -2
- package/build-module/components/block-styles/use-styles-for-block.js +2 -2
- package/build-module/components/block-styles/use-styles-for-block.js.map +2 -2
- package/build-module/components/block-toolbar/index.js +1 -8
- package/build-module/components/block-toolbar/index.js.map +2 -2
- package/build-module/components/content-only-controls/index.js +2 -25
- package/build-module/components/content-only-controls/index.js.map +2 -2
- package/build-module/components/content-only-controls/link/index.js +3 -3
- package/build-module/components/content-only-controls/link/index.js.map +2 -2
- package/build-module/components/content-only-controls/media/index.js +3 -3
- package/build-module/components/content-only-controls/media/index.js.map +2 -2
- package/build-module/components/content-only-controls/rich-text/index.js +3 -2
- package/build-module/components/content-only-controls/rich-text/index.js.map +2 -2
- package/build-module/components/dimensions-tool/width-height-tool.js +4 -6
- package/build-module/components/dimensions-tool/width-height-tool.js.map +2 -2
- package/build-module/components/image-editor/cropper.js +3 -34
- package/build-module/components/image-editor/cropper.js.map +2 -2
- package/build-module/components/image-editor/index.js +9 -3
- package/build-module/components/image-editor/index.js.map +2 -2
- package/build-module/components/image-editor/use-transform-image.js +63 -33
- package/build-module/components/image-editor/use-transform-image.js.map +2 -2
- package/build-module/components/image-editor/zoom-dropdown.js +2 -2
- package/build-module/components/image-editor/zoom-dropdown.js.map +2 -2
- package/build-module/components/index.js +74 -66
- package/build-module/components/index.js.map +2 -2
- package/build-module/components/inserter-draggable-blocks/index.js +8 -4
- package/build-module/components/inserter-draggable-blocks/index.js.map +2 -2
- package/build-module/components/inspector-controls-tabs/content-tab.js +3 -2
- package/build-module/components/inspector-controls-tabs/content-tab.js.map +2 -2
- package/build-module/components/tool-selector/index.js +15 -0
- package/build-module/components/tool-selector/index.js.map +7 -0
- package/build-module/hooks/block-bindings.js +27 -270
- package/build-module/hooks/block-bindings.js.map +2 -2
- package/build-module/layouts/grid.js +23 -28
- package/build-module/layouts/grid.js.map +2 -2
- package/build-module/utils/block-bindings.js +1 -42
- package/build-module/utils/block-bindings.js.map +2 -2
- package/build-module/utils/index.js +1 -3
- package/build-module/utils/index.js.map +2 -2
- package/build-style/style-rtl.css +6 -6
- package/build-style/style.css +6 -6
- package/package.json +39 -40
- package/src/components/block-alignment-matrix-control/index.js +1 -5
- package/src/components/block-bindings/attribute-control.js +174 -0
- package/src/components/block-bindings/index.js +6 -0
- package/src/components/block-bindings/source-fields-list.js +130 -0
- package/src/components/block-bindings/use-block-bindings-utils.js +156 -0
- package/src/components/block-edit/edit.js +1 -3
- package/src/components/block-styles/preview-panel.js +3 -5
- package/src/components/block-styles/use-styles-for-block.js +2 -2
- package/src/components/block-toolbar/index.js +1 -6
- package/src/components/block-toolbar/style.scss +6 -6
- package/src/components/content-only-controls/index.js +2 -27
- package/src/components/content-only-controls/link/index.js +3 -3
- package/src/components/content-only-controls/media/index.js +3 -3
- package/src/components/content-only-controls/rich-text/index.js +3 -2
- package/src/components/dimensions-tool/width-height-tool.js +6 -13
- package/src/components/image-editor/cropper.js +3 -32
- package/src/components/image-editor/index.js +34 -29
- package/src/components/image-editor/use-transform-image.js +80 -34
- package/src/components/image-editor/zoom-dropdown.js +2 -2
- package/src/components/index.js +9 -1
- package/src/components/inserter/style.scss +1 -1
- package/src/components/inserter-draggable-blocks/index.js +19 -8
- package/src/components/inspector-controls-tabs/content-tab.js +6 -2
- package/src/components/tool-selector/index.js +19 -0
- package/src/hooks/block-bindings.js +27 -347
- package/src/layouts/grid.js +40 -72
- package/src/layouts/test/grid.js +14 -0
- package/src/utils/block-bindings.js +0 -157
- package/src/utils/index.js +0 -1
- package/tsconfig.json +1 -0
- package/build/components/block-toolbar/block-name-context.js +0 -30
- package/build/components/block-toolbar/block-name-context.js.map +0 -7
- package/build-module/components/block-toolbar/block-name-context.js +0 -9
- package/build-module/components/block-toolbar/block-name-context.js.map +0 -7
- package/src/components/block-toolbar/block-name-context.js +0 -9
- /package/src/{utils → components/block-bindings}/test/use-block-bindings-utils.js +0 -0
package/README.md
CHANGED
|
@@ -100,6 +100,14 @@ _Related_
|
|
|
100
100
|
|
|
101
101
|
- <https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-alignment-control/README.md>
|
|
102
102
|
|
|
103
|
+
### BlockBindingsAttributeControl
|
|
104
|
+
|
|
105
|
+
Internal dependencies
|
|
106
|
+
|
|
107
|
+
### BlockBindingsSourceFieldsList
|
|
108
|
+
|
|
109
|
+
Undocumented declaration.
|
|
110
|
+
|
|
103
111
|
### BlockBreadcrumb
|
|
104
112
|
|
|
105
113
|
Block breadcrumb component, displaying the hierarchy of the current block selection as a breadcrumb.
|
|
@@ -847,6 +855,10 @@ _Related_
|
|
|
847
855
|
|
|
848
856
|
- <https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#registerStore>
|
|
849
857
|
|
|
858
|
+
### ToolSelector
|
|
859
|
+
|
|
860
|
+
This component has been deprecated and no longer renders anything.
|
|
861
|
+
|
|
850
862
|
### transformStyles
|
|
851
863
|
|
|
852
864
|
Applies a series of CSS rule transforms to wrap selectors inside a given class and/or rewrite URLs depending on the parameters passed.
|
|
@@ -62,14 +62,7 @@ function BlockAlignmentMatrixControl(props) {
|
|
|
62
62
|
}
|
|
63
63
|
);
|
|
64
64
|
},
|
|
65
|
-
renderContent: () => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
66
|
-
import_components.AlignmentMatrixControl,
|
|
67
|
-
{
|
|
68
|
-
hasFocusBorder: false,
|
|
69
|
-
onChange,
|
|
70
|
-
value
|
|
71
|
-
}
|
|
72
|
-
)
|
|
65
|
+
renderContent: () => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components.AlignmentMatrixControl, { onChange, value })
|
|
73
66
|
}
|
|
74
67
|
);
|
|
75
68
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../src/components/block-alignment-matrix-control/index.js"],
|
|
4
|
-
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { DOWN } from '@wordpress/keycodes';\nimport {\n\tToolbarButton,\n\tDropdown,\n\tAlignmentMatrixControl,\n} from '@wordpress/components';\n\nconst noop = () => {};\n\n/**\n * The alignment matrix control allows users to quickly adjust inner block alignment.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-alignment-matrix-control/README.md\n *\n * @example\n * ```jsx\n * function Example() {\n * return (\n * <BlockControls>\n * <BlockAlignmentMatrixControl\n * label={ __( 'Change content position' ) }\n * value=\"center\"\n * onChange={ ( nextPosition ) =>\n * setAttributes( { contentPosition: nextPosition } )\n * }\n * />\n * </BlockControls>\n * );\n * }\n * ```\n *\n * @param {Object} props Component props.\n * @param {string} props.label Label for the control. Defaults to 'Change matrix alignment'.\n * @param {Function} props.onChange Function to execute upon change of matrix state.\n * @param {string} props.value Content alignment location. One of: 'center', 'center center',\n * 'center left', 'center right', 'top center', 'top left',\n * 'top right', 'bottom center', 'bottom left', 'bottom right'.\n * @param {boolean} props.isDisabled Whether the control should be disabled.\n * @return {Element} The BlockAlignmentMatrixControl component.\n */\nfunction BlockAlignmentMatrixControl( props ) {\n\tconst {\n\t\tlabel = __( 'Change matrix alignment' ),\n\t\tonChange = noop,\n\t\tvalue = 'center',\n\t\tisDisabled,\n\t} = props;\n\n\tconst icon = <AlignmentMatrixControl.Icon value={ value } />;\n\n\treturn (\n\t\t<Dropdown\n\t\t\tpopoverProps={ { placement: 'bottom-start' } }\n\t\t\trenderToggle={ ( { onToggle, isOpen } ) => {\n\t\t\t\tconst openOnArrowDown = ( event ) => {\n\t\t\t\t\tif ( ! isOpen && event.keyCode === DOWN ) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tonToggle();\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\treturn (\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\t\taria-haspopup=\"true\"\n\t\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\t\tonKeyDown={ openOnArrowDown }\n\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\tdisabled={ isDisabled }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} }\n\t\t\trenderContent={ () => (\n\t\t\t\t<AlignmentMatrixControl
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAAmB;AACnB,sBAAqB;AACrB,wBAIO;AA2CO;AAzCd,IAAM,OAAO,MAAM;AAAC;AAiCpB,SAAS,4BAA6B,OAAQ;AAC7C,QAAM;AAAA,IACL,YAAQ,gBAAI,yBAA0B;AAAA,IACtC,WAAW;AAAA,IACX,QAAQ;AAAA,IACR;AAAA,EACD,IAAI;AAEJ,QAAM,OAAO,4CAAC,yCAAuB,MAAvB,EAA4B,OAAgB;AAE1D,SACC;AAAA,IAAC;AAAA;AAAA,MACA,cAAe,EAAE,WAAW,eAAe;AAAA,MAC3C,cAAe,CAAE,EAAE,UAAU,OAAO,MAAO;AAC1C,cAAM,kBAAkB,CAAE,UAAW;AACpC,cAAK,CAAE,UAAU,MAAM,YAAY,sBAAO;AACzC,kBAAM,eAAe;AACrB,qBAAS;AAAA,UACV;AAAA,QACD;AAEA,eACC;AAAA,UAAC;AAAA;AAAA,YACA,SAAU;AAAA,YACV,iBAAc;AAAA,YACd,iBAAgB;AAAA,YAChB,WAAY;AAAA,YACZ;AAAA,YACA;AAAA,YACA,aAAW;AAAA,YACX,UAAW;AAAA;AAAA,QACZ;AAAA,MAEF;AAAA,MACA,eAAgB,MACf
|
|
4
|
+
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { DOWN } from '@wordpress/keycodes';\nimport {\n\tToolbarButton,\n\tDropdown,\n\tAlignmentMatrixControl,\n} from '@wordpress/components';\n\nconst noop = () => {};\n\n/**\n * The alignment matrix control allows users to quickly adjust inner block alignment.\n *\n * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/block-editor/src/components/block-alignment-matrix-control/README.md\n *\n * @example\n * ```jsx\n * function Example() {\n * return (\n * <BlockControls>\n * <BlockAlignmentMatrixControl\n * label={ __( 'Change content position' ) }\n * value=\"center\"\n * onChange={ ( nextPosition ) =>\n * setAttributes( { contentPosition: nextPosition } )\n * }\n * />\n * </BlockControls>\n * );\n * }\n * ```\n *\n * @param {Object} props Component props.\n * @param {string} props.label Label for the control. Defaults to 'Change matrix alignment'.\n * @param {Function} props.onChange Function to execute upon change of matrix state.\n * @param {string} props.value Content alignment location. One of: 'center', 'center center',\n * 'center left', 'center right', 'top center', 'top left',\n * 'top right', 'bottom center', 'bottom left', 'bottom right'.\n * @param {boolean} props.isDisabled Whether the control should be disabled.\n * @return {Element} The BlockAlignmentMatrixControl component.\n */\nfunction BlockAlignmentMatrixControl( props ) {\n\tconst {\n\t\tlabel = __( 'Change matrix alignment' ),\n\t\tonChange = noop,\n\t\tvalue = 'center',\n\t\tisDisabled,\n\t} = props;\n\n\tconst icon = <AlignmentMatrixControl.Icon value={ value } />;\n\n\treturn (\n\t\t<Dropdown\n\t\t\tpopoverProps={ { placement: 'bottom-start' } }\n\t\t\trenderToggle={ ( { onToggle, isOpen } ) => {\n\t\t\t\tconst openOnArrowDown = ( event ) => {\n\t\t\t\t\tif ( ! isOpen && event.keyCode === DOWN ) {\n\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\tonToggle();\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\treturn (\n\t\t\t\t\t<ToolbarButton\n\t\t\t\t\t\tonClick={ onToggle }\n\t\t\t\t\t\taria-haspopup=\"true\"\n\t\t\t\t\t\taria-expanded={ isOpen }\n\t\t\t\t\t\tonKeyDown={ openOnArrowDown }\n\t\t\t\t\t\tlabel={ label }\n\t\t\t\t\t\ticon={ icon }\n\t\t\t\t\t\tshowTooltip\n\t\t\t\t\t\tdisabled={ isDisabled }\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} }\n\t\t\trenderContent={ () => (\n\t\t\t\t<AlignmentMatrixControl onChange={ onChange } value={ value } />\n\t\t\t) }\n\t\t/>\n\t);\n}\n\nexport default BlockAlignmentMatrixControl;\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAAmB;AACnB,sBAAqB;AACrB,wBAIO;AA2CO;AAzCd,IAAM,OAAO,MAAM;AAAC;AAiCpB,SAAS,4BAA6B,OAAQ;AAC7C,QAAM;AAAA,IACL,YAAQ,gBAAI,yBAA0B;AAAA,IACtC,WAAW;AAAA,IACX,QAAQ;AAAA,IACR;AAAA,EACD,IAAI;AAEJ,QAAM,OAAO,4CAAC,yCAAuB,MAAvB,EAA4B,OAAgB;AAE1D,SACC;AAAA,IAAC;AAAA;AAAA,MACA,cAAe,EAAE,WAAW,eAAe;AAAA,MAC3C,cAAe,CAAE,EAAE,UAAU,OAAO,MAAO;AAC1C,cAAM,kBAAkB,CAAE,UAAW;AACpC,cAAK,CAAE,UAAU,MAAM,YAAY,sBAAO;AACzC,kBAAM,eAAe;AACrB,qBAAS;AAAA,UACV;AAAA,QACD;AAEA,eACC;AAAA,UAAC;AAAA;AAAA,YACA,SAAU;AAAA,YACV,iBAAc;AAAA,YACd,iBAAgB;AAAA,YAChB,WAAY;AAAA,YACZ;AAAA,YACA;AAAA,YACA,aAAW;AAAA,YACX,UAAW;AAAA;AAAA,QACZ;AAAA,MAEF;AAAA,MACA,eAAgB,MACf,4CAAC,4CAAuB,UAAsB,OAAgB;AAAA;AAAA,EAEhE;AAEF;AAEA,IAAO,yCAAQ;",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
|
|
30
|
+
// packages/block-editor/src/components/block-bindings/attribute-control.js
|
|
31
|
+
var attribute_control_exports = {};
|
|
32
|
+
__export(attribute_control_exports, {
|
|
33
|
+
default: () => BlockBindingsAttributeControl
|
|
34
|
+
});
|
|
35
|
+
module.exports = __toCommonJS(attribute_control_exports);
|
|
36
|
+
var import_es6 = __toESM(require("fast-deep-equal/es6"));
|
|
37
|
+
var import_i18n = require("@wordpress/i18n");
|
|
38
|
+
var import_blocks = require("@wordpress/blocks");
|
|
39
|
+
var import_components = require("@wordpress/components");
|
|
40
|
+
var import_data = require("@wordpress/data");
|
|
41
|
+
var import_element = require("@wordpress/element");
|
|
42
|
+
var import_compose = require("@wordpress/compose");
|
|
43
|
+
var import_block_context = __toESM(require("../block-context"));
|
|
44
|
+
var import_source_fields_list = __toESM(require("./source-fields-list"));
|
|
45
|
+
var import_use_block_bindings_utils = __toESM(require("./use-block-bindings-utils"));
|
|
46
|
+
var import_lock_unlock = require("../../lock-unlock");
|
|
47
|
+
var import_store = require("../../store");
|
|
48
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
49
|
+
var { Menu } = (0, import_lock_unlock.unlock)(import_components.privateApis);
|
|
50
|
+
function BlockBindingsAttributeControl({
|
|
51
|
+
attribute,
|
|
52
|
+
binding,
|
|
53
|
+
blockName
|
|
54
|
+
}) {
|
|
55
|
+
const { updateBlockBindings } = (0, import_use_block_bindings_utils.default)();
|
|
56
|
+
const isMobile = (0, import_compose.useViewportMatch)("medium", "<");
|
|
57
|
+
const blockContext = (0, import_element.useContext)(import_block_context.default);
|
|
58
|
+
const compatibleFields = (0, import_data.useSelect)(
|
|
59
|
+
(select) => {
|
|
60
|
+
const {
|
|
61
|
+
getAllBlockBindingsSources,
|
|
62
|
+
getBlockBindingsSourceFieldsList,
|
|
63
|
+
getBlockType
|
|
64
|
+
} = (0, import_lock_unlock.unlock)(select(import_blocks.store));
|
|
65
|
+
const _attributeType = getBlockType(blockName).attributes?.[attribute]?.type;
|
|
66
|
+
const attributeType = _attributeType === "rich-text" ? "string" : _attributeType;
|
|
67
|
+
const sourceFields = {};
|
|
68
|
+
Object.entries(getAllBlockBindingsSources()).forEach(
|
|
69
|
+
([sourceName, source2]) => {
|
|
70
|
+
const fieldsList = getBlockBindingsSourceFieldsList(
|
|
71
|
+
source2,
|
|
72
|
+
blockContext
|
|
73
|
+
);
|
|
74
|
+
if (!fieldsList?.length) {
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
const compatibleFieldsList = fieldsList.filter(
|
|
78
|
+
(field) => field.type === attributeType
|
|
79
|
+
);
|
|
80
|
+
if (compatibleFieldsList.length) {
|
|
81
|
+
sourceFields[sourceName] = compatibleFieldsList;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
);
|
|
85
|
+
return sourceFields;
|
|
86
|
+
},
|
|
87
|
+
[attribute, blockName, blockContext]
|
|
88
|
+
);
|
|
89
|
+
const { canUpdateBlockBindings } = (0, import_data.useSelect)((select) => ({
|
|
90
|
+
canUpdateBlockBindings: select(import_store.store).getSettings().canUpdateBlockBindings
|
|
91
|
+
}));
|
|
92
|
+
const hasCompatibleFields = Object.keys(compatibleFields).length > 0;
|
|
93
|
+
const isAttributeReadOnly = !canUpdateBlockBindings || !hasCompatibleFields;
|
|
94
|
+
const { source: boundSourceName, args } = binding || {};
|
|
95
|
+
const source = (0, import_blocks.getBlockBindingsSource)(boundSourceName);
|
|
96
|
+
let displayText;
|
|
97
|
+
let isValid = true;
|
|
98
|
+
if (binding === void 0) {
|
|
99
|
+
if (!hasCompatibleFields) {
|
|
100
|
+
displayText = (0, import_i18n.__)("No sources available");
|
|
101
|
+
} else {
|
|
102
|
+
displayText = (0, import_i18n.__)("Not connected");
|
|
103
|
+
}
|
|
104
|
+
isValid = true;
|
|
105
|
+
} else if (!source) {
|
|
106
|
+
isValid = false;
|
|
107
|
+
displayText = (0, import_i18n.__)("Source not registered");
|
|
108
|
+
} else {
|
|
109
|
+
displayText = compatibleFields?.[boundSourceName]?.find(
|
|
110
|
+
(field) => (0, import_es6.default)(field.args, args)
|
|
111
|
+
)?.label || source?.label || boundSourceName;
|
|
112
|
+
}
|
|
113
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
114
|
+
import_components.__experimentalToolsPanelItem,
|
|
115
|
+
{
|
|
116
|
+
hasValue: () => !!binding,
|
|
117
|
+
label: attribute,
|
|
118
|
+
onDeselect: !!hasCompatibleFields && (() => {
|
|
119
|
+
updateBlockBindings({
|
|
120
|
+
[attribute]: void 0
|
|
121
|
+
});
|
|
122
|
+
}),
|
|
123
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(Menu, { placement: isMobile ? "bottom-start" : "left-start", children: [
|
|
124
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
125
|
+
Menu.TriggerButton,
|
|
126
|
+
{
|
|
127
|
+
render: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components.__experimentalItem, {}),
|
|
128
|
+
disabled: !hasCompatibleFields,
|
|
129
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
130
|
+
import_components.__experimentalVStack,
|
|
131
|
+
{
|
|
132
|
+
className: "block-editor-bindings__item",
|
|
133
|
+
spacing: 0,
|
|
134
|
+
children: [
|
|
135
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_components.__experimentalText, { truncate: true, children: attribute }),
|
|
136
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
137
|
+
import_components.__experimentalText,
|
|
138
|
+
{
|
|
139
|
+
truncate: true,
|
|
140
|
+
variant: isValid ? "muted" : void 0,
|
|
141
|
+
isDestructive: !isValid,
|
|
142
|
+
children: displayText
|
|
143
|
+
}
|
|
144
|
+
)
|
|
145
|
+
]
|
|
146
|
+
}
|
|
147
|
+
)
|
|
148
|
+
}
|
|
149
|
+
),
|
|
150
|
+
!isAttributeReadOnly && /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Menu.Popover, { gutter: isMobile ? 8 : 36, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
151
|
+
Menu,
|
|
152
|
+
{
|
|
153
|
+
placement: isMobile ? "bottom-start" : "left-start",
|
|
154
|
+
children: Object.entries(compatibleFields).map(
|
|
155
|
+
([sourceKey, fields]) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
156
|
+
import_source_fields_list.default,
|
|
157
|
+
{
|
|
158
|
+
args: binding?.args,
|
|
159
|
+
attribute,
|
|
160
|
+
sourceKey,
|
|
161
|
+
fields
|
|
162
|
+
},
|
|
163
|
+
sourceKey
|
|
164
|
+
)
|
|
165
|
+
)
|
|
166
|
+
}
|
|
167
|
+
) })
|
|
168
|
+
] })
|
|
169
|
+
}
|
|
170
|
+
);
|
|
171
|
+
}
|
|
172
|
+
//# sourceMappingURL=attribute-control.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/block-bindings/attribute-control.js"],
|
|
4
|
+
"sourcesContent": ["/**\n * External dependencies\n */\nimport fastDeepEqual from 'fast-deep-equal/es6';\n\n/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport {\n\tgetBlockBindingsSource,\n\tstore as blocksStore,\n} from '@wordpress/blocks';\nimport {\n\t__experimentalItem as Item,\n\t__experimentalText as Text,\n\t__experimentalToolsPanelItem as ToolsPanelItem,\n\t__experimentalVStack as VStack,\n\tprivateApis as componentsPrivateApis,\n} from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport { useContext } from '@wordpress/element';\nimport { useViewportMatch } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport BlockContext from '../block-context';\nimport BlockBindingsSourceFieldsList from './source-fields-list';\nimport useBlockBindingsUtils from './use-block-bindings-utils';\nimport { unlock } from '../../lock-unlock';\nimport { store as blockEditorStore } from '../../store';\n\nconst { Menu } = unlock( componentsPrivateApis );\n\nexport default function BlockBindingsAttributeControl( {\n\tattribute,\n\tbinding,\n\tblockName,\n} ) {\n\tconst { updateBlockBindings } = useBlockBindingsUtils();\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\n\tconst blockContext = useContext( BlockContext );\n\tconst compatibleFields = useSelect(\n\t\t( select ) => {\n\t\t\tconst {\n\t\t\t\tgetAllBlockBindingsSources,\n\t\t\t\tgetBlockBindingsSourceFieldsList,\n\t\t\t\tgetBlockType,\n\t\t\t} = unlock( select( blocksStore ) );\n\n\t\t\tconst _attributeType =\n\t\t\t\tgetBlockType( blockName ).attributes?.[ attribute ]?.type;\n\t\t\tconst attributeType =\n\t\t\t\t_attributeType === 'rich-text' ? 'string' : _attributeType;\n\n\t\t\tconst sourceFields = {};\n\t\t\tObject.entries( getAllBlockBindingsSources() ).forEach(\n\t\t\t\t( [ sourceName, source ] ) => {\n\t\t\t\t\tconst fieldsList = getBlockBindingsSourceFieldsList(\n\t\t\t\t\t\tsource,\n\t\t\t\t\t\tblockContext\n\t\t\t\t\t);\n\t\t\t\t\tif ( ! fieldsList?.length ) {\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t\tconst compatibleFieldsList = fieldsList.filter(\n\t\t\t\t\t\t( field ) => field.type === attributeType\n\t\t\t\t\t);\n\t\t\t\t\tif ( compatibleFieldsList.length ) {\n\t\t\t\t\t\tsourceFields[ sourceName ] = compatibleFieldsList;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t);\n\t\t\treturn sourceFields;\n\t\t},\n\t\t[ attribute, blockName, blockContext ]\n\t);\n\n\tconst { canUpdateBlockBindings } = useSelect( ( select ) => ( {\n\t\tcanUpdateBlockBindings:\n\t\t\tselect( blockEditorStore ).getSettings().canUpdateBlockBindings,\n\t} ) );\n\n\tconst hasCompatibleFields = Object.keys( compatibleFields ).length > 0;\n\n\t// Lock the UI when the user can't update bindings or there are no fields to connect to.\n\tconst isAttributeReadOnly =\n\t\t! canUpdateBlockBindings || ! hasCompatibleFields;\n\n\tconst { source: boundSourceName, args } = binding || {};\n\tconst source = getBlockBindingsSource( boundSourceName );\n\n\tlet displayText;\n\tlet isValid = true;\n\n\tif ( binding === undefined ) {\n\t\tif ( ! hasCompatibleFields ) {\n\t\t\tdisplayText = __( 'No sources available' );\n\t\t} else {\n\t\t\tdisplayText = __( 'Not connected' );\n\t\t}\n\t\tisValid = true;\n\t} else if ( ! source ) {\n\t\t// If there's a binding but the source is not found, it's invalid.\n\t\tisValid = false;\n\t\tdisplayText = __( 'Source not registered' );\n\t} else {\n\t\tdisplayText =\n\t\t\tcompatibleFields?.[ boundSourceName ]?.find( ( field ) =>\n\t\t\t\tfastDeepEqual( field.args, args )\n\t\t\t)?.label ||\n\t\t\tsource?.label ||\n\t\t\tboundSourceName;\n\t}\n\n\treturn (\n\t\t<ToolsPanelItem\n\t\t\thasValue={ () => !! binding }\n\t\t\tlabel={ attribute }\n\t\t\tonDeselect={\n\t\t\t\t!! hasCompatibleFields &&\n\t\t\t\t( () => {\n\t\t\t\t\tupdateBlockBindings( {\n\t\t\t\t\t\t[ attribute ]: undefined,\n\t\t\t\t\t} );\n\t\t\t\t} )\n\t\t\t}\n\t\t>\n\t\t\t<Menu placement={ isMobile ? 'bottom-start' : 'left-start' }>\n\t\t\t\t<Menu.TriggerButton\n\t\t\t\t\trender={ <Item /> }\n\t\t\t\t\tdisabled={ ! hasCompatibleFields }\n\t\t\t\t>\n\t\t\t\t\t<VStack\n\t\t\t\t\t\tclassName=\"block-editor-bindings__item\"\n\t\t\t\t\t\tspacing={ 0 }\n\t\t\t\t\t>\n\t\t\t\t\t\t<Text truncate>{ attribute }</Text>\n\t\t\t\t\t\t<Text\n\t\t\t\t\t\t\ttruncate\n\t\t\t\t\t\t\tvariant={ isValid ? 'muted' : undefined }\n\t\t\t\t\t\t\tisDestructive={ ! isValid }\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ displayText }\n\t\t\t\t\t\t</Text>\n\t\t\t\t\t</VStack>\n\t\t\t\t</Menu.TriggerButton>\n\t\t\t\t{ ! isAttributeReadOnly && (\n\t\t\t\t\t<Menu.Popover gutter={ isMobile ? 8 : 36 }>\n\t\t\t\t\t\t<Menu\n\t\t\t\t\t\t\tplacement={\n\t\t\t\t\t\t\t\tisMobile ? 'bottom-start' : 'left-start'\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{ Object.entries( compatibleFields ).map(\n\t\t\t\t\t\t\t\t( [ sourceKey, fields ] ) => (\n\t\t\t\t\t\t\t\t\t<BlockBindingsSourceFieldsList\n\t\t\t\t\t\t\t\t\t\tkey={ sourceKey }\n\t\t\t\t\t\t\t\t\t\targs={ binding?.args }\n\t\t\t\t\t\t\t\t\t\tattribute={ attribute }\n\t\t\t\t\t\t\t\t\t\tsourceKey={ sourceKey }\n\t\t\t\t\t\t\t\t\t\tfields={ fields }\n\t\t\t\t\t\t\t\t\t/>\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t) }\n\t\t\t\t\t\t</Menu>\n\t\t\t\t\t</Menu.Popover>\n\t\t\t\t) }\n\t\t\t</Menu>\n\t\t</ToolsPanelItem>\n\t);\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["componentsPrivateApis", "useBlockBindingsUtils", "BlockContext", "blocksStore", "source", "blockEditorStore", "fastDeepEqual", "ToolsPanelItem", "Item", "VStack", "Text", "BlockBindingsSourceFieldsList"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
|
|
30
|
+
// packages/block-editor/src/components/block-bindings/index.js
|
|
31
|
+
var block_bindings_exports = {};
|
|
32
|
+
__export(block_bindings_exports, {
|
|
33
|
+
BlockBindingsAttributeControl: () => import_attribute_control.default,
|
|
34
|
+
BlockBindingsSourceFieldsList: () => import_source_fields_list.default,
|
|
35
|
+
useBlockBindingsUtils: () => import_use_block_bindings_utils.default
|
|
36
|
+
});
|
|
37
|
+
module.exports = __toCommonJS(block_bindings_exports);
|
|
38
|
+
var import_attribute_control = __toESM(require("./attribute-control"));
|
|
39
|
+
var import_source_fields_list = __toESM(require("./source-fields-list"));
|
|
40
|
+
var import_use_block_bindings_utils = __toESM(require("./use-block-bindings-utils"));
|
|
41
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
42
|
+
0 && (module.exports = {
|
|
43
|
+
BlockBindingsAttributeControl,
|
|
44
|
+
BlockBindingsSourceFieldsList,
|
|
45
|
+
useBlockBindingsUtils
|
|
46
|
+
});
|
|
47
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/block-bindings/index.js"],
|
|
4
|
+
"sourcesContent": ["/**\n * Internal dependencies\n */\nexport { default as BlockBindingsAttributeControl } from './attribute-control';\nexport { default as BlockBindingsSourceFieldsList } from './source-fields-list';\nexport { default as useBlockBindingsUtils } from './use-block-bindings-utils';\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,+BAAyD;AACzD,gCAAyD;AACzD,sCAAiD;",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __export = (target, all) => {
|
|
9
|
+
for (var name in all)
|
|
10
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
11
|
+
};
|
|
12
|
+
var __copyProps = (to, from, except, desc) => {
|
|
13
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
14
|
+
for (let key of __getOwnPropNames(from))
|
|
15
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
16
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
17
|
+
}
|
|
18
|
+
return to;
|
|
19
|
+
};
|
|
20
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
|
|
21
|
+
// If the importer is in node compatibility mode or this is not an ESM
|
|
22
|
+
// file that has been converted to a CommonJS file using a Babel-
|
|
23
|
+
// compatible transform (i.e. "__esModule" has not been set), then set
|
|
24
|
+
// "default" to the CommonJS "module.exports" for node compatibility.
|
|
25
|
+
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
|
|
26
|
+
mod
|
|
27
|
+
));
|
|
28
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
29
|
+
|
|
30
|
+
// packages/block-editor/src/components/block-bindings/source-fields-list.js
|
|
31
|
+
var source_fields_list_exports = {};
|
|
32
|
+
__export(source_fields_list_exports, {
|
|
33
|
+
default: () => BlockBindingsSourceFieldsList
|
|
34
|
+
});
|
|
35
|
+
module.exports = __toCommonJS(source_fields_list_exports);
|
|
36
|
+
var import_es6 = __toESM(require("fast-deep-equal/es6"));
|
|
37
|
+
var import_blocks = require("@wordpress/blocks");
|
|
38
|
+
var import_components = require("@wordpress/components");
|
|
39
|
+
var import_data = require("@wordpress/data");
|
|
40
|
+
var import_element = require("@wordpress/element");
|
|
41
|
+
var import_compose = require("@wordpress/compose");
|
|
42
|
+
var import_use_block_bindings_utils = __toESM(require("./use-block-bindings-utils"));
|
|
43
|
+
var import_lock_unlock = require("../../lock-unlock");
|
|
44
|
+
var import_block_context = __toESM(require("../block-context"));
|
|
45
|
+
var import_jsx_runtime = require("react/jsx-runtime");
|
|
46
|
+
var { Menu } = (0, import_lock_unlock.unlock)(import_components.privateApis);
|
|
47
|
+
function BlockBindingsSourceFieldsListItem({
|
|
48
|
+
args,
|
|
49
|
+
attribute,
|
|
50
|
+
field,
|
|
51
|
+
source,
|
|
52
|
+
sourceKey
|
|
53
|
+
}) {
|
|
54
|
+
const itemBindings = (0, import_element.useMemo)(
|
|
55
|
+
() => ({
|
|
56
|
+
source: sourceKey,
|
|
57
|
+
args: field.args || {
|
|
58
|
+
key: field.key
|
|
59
|
+
}
|
|
60
|
+
}),
|
|
61
|
+
[field.args, field.key, sourceKey]
|
|
62
|
+
);
|
|
63
|
+
const blockContext = (0, import_element.useContext)(import_block_context.default);
|
|
64
|
+
const values = (0, import_data.useSelect)(
|
|
65
|
+
(select) => source.getValues({
|
|
66
|
+
select,
|
|
67
|
+
context: blockContext,
|
|
68
|
+
bindings: {
|
|
69
|
+
[attribute]: itemBindings
|
|
70
|
+
}
|
|
71
|
+
}),
|
|
72
|
+
[attribute, blockContext, itemBindings, source]
|
|
73
|
+
);
|
|
74
|
+
const { updateBlockBindings } = (0, import_use_block_bindings_utils.default)();
|
|
75
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
76
|
+
Menu.CheckboxItem,
|
|
77
|
+
{
|
|
78
|
+
onChange: () => {
|
|
79
|
+
const isCurrentlySelected = (0, import_es6.default)(args, field.args) ?? // Deprecate key dependency in 7.0.
|
|
80
|
+
field.key === args?.key;
|
|
81
|
+
if (isCurrentlySelected) {
|
|
82
|
+
updateBlockBindings({
|
|
83
|
+
[attribute]: void 0
|
|
84
|
+
});
|
|
85
|
+
} else {
|
|
86
|
+
updateBlockBindings({
|
|
87
|
+
[attribute]: itemBindings
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
},
|
|
91
|
+
name: attribute + "-binding",
|
|
92
|
+
value: values[attribute],
|
|
93
|
+
checked: (0, import_es6.default)(args, field.args) ?? // Deprecate key dependency in 7.0.
|
|
94
|
+
field.key === args?.key,
|
|
95
|
+
children: [
|
|
96
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Menu.ItemLabel, { children: field.label }),
|
|
97
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Menu.ItemHelpText, { children: values[attribute] })
|
|
98
|
+
]
|
|
99
|
+
}
|
|
100
|
+
);
|
|
101
|
+
}
|
|
102
|
+
function BlockBindingsSourceFieldsList({
|
|
103
|
+
args,
|
|
104
|
+
attribute,
|
|
105
|
+
sourceKey,
|
|
106
|
+
fields
|
|
107
|
+
}) {
|
|
108
|
+
const isMobile = (0, import_compose.useViewportMatch)("medium", "<");
|
|
109
|
+
if (!fields || fields.length === 0) {
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
const source = (0, import_blocks.getBlockBindingsSource)(sourceKey);
|
|
113
|
+
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(
|
|
114
|
+
Menu,
|
|
115
|
+
{
|
|
116
|
+
placement: isMobile ? "bottom-start" : "left-start",
|
|
117
|
+
children: [
|
|
118
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Menu.SubmenuTriggerItem, { children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Menu.ItemLabel, { children: source.label }) }),
|
|
119
|
+
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(Menu.Popover, { gutter: 8, children: /* @__PURE__ */ (0, import_jsx_runtime.jsx)(Menu.Group, { children: fields.map((field) => /* @__PURE__ */ (0, import_jsx_runtime.jsx)(
|
|
120
|
+
BlockBindingsSourceFieldsListItem,
|
|
121
|
+
{
|
|
122
|
+
args,
|
|
123
|
+
attribute,
|
|
124
|
+
field,
|
|
125
|
+
source,
|
|
126
|
+
sourceKey
|
|
127
|
+
},
|
|
128
|
+
sourceKey + JSON.stringify(field.args) || field.key
|
|
129
|
+
)) }) })
|
|
130
|
+
]
|
|
131
|
+
},
|
|
132
|
+
sourceKey
|
|
133
|
+
);
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=source-fields-list.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/block-bindings/source-fields-list.js"],
|
|
4
|
+
"sourcesContent": ["/**\n * External dependencies\n */\nimport fastDeepEqual from 'fast-deep-equal/es6';\n\n/**\n * WordPress dependencies\n */\nimport { getBlockBindingsSource } from '@wordpress/blocks';\nimport { privateApis as componentsPrivateApis } from '@wordpress/components';\nimport { useSelect } from '@wordpress/data';\nimport { useContext, useMemo } from '@wordpress/element';\nimport { useViewportMatch } from '@wordpress/compose';\n\n/**\n * Internal dependencies\n */\nimport useBlockBindingsUtils from './use-block-bindings-utils';\nimport { unlock } from '../../lock-unlock';\nimport BlockContext from '../block-context';\n\nconst { Menu } = unlock( componentsPrivateApis );\n\nfunction BlockBindingsSourceFieldsListItem( {\n\targs,\n\tattribute,\n\tfield,\n\tsource,\n\tsourceKey,\n} ) {\n\tconst itemBindings = useMemo(\n\t\t() => ( {\n\t\t\tsource: sourceKey,\n\t\t\targs: field.args || {\n\t\t\t\tkey: field.key,\n\t\t\t},\n\t\t} ),\n\t\t[ field.args, field.key, sourceKey ]\n\t);\n\n\tconst blockContext = useContext( BlockContext );\n\tconst values = useSelect(\n\t\t( select ) =>\n\t\t\tsource.getValues( {\n\t\t\t\tselect,\n\t\t\t\tcontext: blockContext,\n\t\t\t\tbindings: {\n\t\t\t\t\t[ attribute ]: itemBindings,\n\t\t\t\t},\n\t\t\t} ),\n\t\t[ attribute, blockContext, itemBindings, source ]\n\t);\n\tconst { updateBlockBindings } = useBlockBindingsUtils();\n\n\treturn (\n\t\t<Menu.CheckboxItem\n\t\t\tonChange={ () => {\n\t\t\t\tconst isCurrentlySelected =\n\t\t\t\t\tfastDeepEqual( args, field.args ) ??\n\t\t\t\t\t// Deprecate key dependency in 7.0.\n\t\t\t\t\tfield.key === args?.key;\n\n\t\t\t\tif ( isCurrentlySelected ) {\n\t\t\t\t\t// Unset if the same field is selected again.\n\t\t\t\t\tupdateBlockBindings( {\n\t\t\t\t\t\t[ attribute ]: undefined,\n\t\t\t\t\t} );\n\t\t\t\t} else {\n\t\t\t\t\tupdateBlockBindings( {\n\t\t\t\t\t\t[ attribute ]: itemBindings,\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t} }\n\t\t\tname={ attribute + '-binding' }\n\t\t\tvalue={ values[ attribute ] }\n\t\t\tchecked={\n\t\t\t\tfastDeepEqual( args, field.args ) ??\n\t\t\t\t// Deprecate key dependency in 7.0.\n\t\t\t\tfield.key === args?.key\n\t\t\t}\n\t\t>\n\t\t\t<Menu.ItemLabel>{ field.label }</Menu.ItemLabel>\n\t\t\t<Menu.ItemHelpText>{ values[ attribute ] }</Menu.ItemHelpText>\n\t\t</Menu.CheckboxItem>\n\t);\n}\n\nexport default function BlockBindingsSourceFieldsList( {\n\targs,\n\tattribute,\n\tsourceKey,\n\tfields,\n} ) {\n\tconst isMobile = useViewportMatch( 'medium', '<' );\n\n\t// Only render source if it has compatible fields.\n\tif ( ! fields || fields.length === 0 ) {\n\t\treturn null;\n\t}\n\n\tconst source = getBlockBindingsSource( sourceKey );\n\n\treturn (\n\t\t<Menu\n\t\t\tkey={ sourceKey }\n\t\t\tplacement={ isMobile ? 'bottom-start' : 'left-start' }\n\t\t>\n\t\t\t<Menu.SubmenuTriggerItem>\n\t\t\t\t<Menu.ItemLabel>{ source.label }</Menu.ItemLabel>\n\t\t\t</Menu.SubmenuTriggerItem>\n\t\t\t<Menu.Popover gutter={ 8 }>\n\t\t\t\t<Menu.Group>\n\t\t\t\t\t{ fields.map( ( field ) => (\n\t\t\t\t\t\t<BlockBindingsSourceFieldsListItem\n\t\t\t\t\t\t\tkey={\n\t\t\t\t\t\t\t\tsourceKey + JSON.stringify( field.args ) ||\n\t\t\t\t\t\t\t\tfield.key\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\targs={ args }\n\t\t\t\t\t\t\tattribute={ attribute }\n\t\t\t\t\t\t\tfield={ field }\n\t\t\t\t\t\t\tsource={ source }\n\t\t\t\t\t\t\tsourceKey={ sourceKey }\n\t\t\t\t\t\t/>\n\t\t\t\t\t) ) }\n\t\t\t\t</Menu.Group>\n\t\t\t</Menu.Popover>\n\t\t</Menu>\n\t);\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,iBAA0B;AAK1B,oBAAuC;AACvC,wBAAqD;AACrD,kBAA0B;AAC1B,qBAAoC;AACpC,qBAAiC;AAKjC,sCAAkC;AAClC,yBAAuB;AACvB,2BAAyB;AAoCvB;AAlCF,IAAM,EAAE,KAAK,QAAI,2BAAQ,kBAAAA,WAAsB;AAE/C,SAAS,kCAAmC;AAAA,EAC3C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAAI;AACH,QAAM,mBAAe;AAAA,IACpB,OAAQ;AAAA,MACP,QAAQ;AAAA,MACR,MAAM,MAAM,QAAQ;AAAA,QACnB,KAAK,MAAM;AAAA,MACZ;AAAA,IACD;AAAA,IACA,CAAE,MAAM,MAAM,MAAM,KAAK,SAAU;AAAA,EACpC;AAEA,QAAM,mBAAe,2BAAY,qBAAAC,OAAa;AAC9C,QAAM,aAAS;AAAA,IACd,CAAE,WACD,OAAO,UAAW;AAAA,MACjB;AAAA,MACA,SAAS;AAAA,MACT,UAAU;AAAA,QACT,CAAE,SAAU,GAAG;AAAA,MAChB;AAAA,IACD,CAAE;AAAA,IACH,CAAE,WAAW,cAAc,cAAc,MAAO;AAAA,EACjD;AACA,QAAM,EAAE,oBAAoB,QAAI,gCAAAC,SAAsB;AAEtD,SACC;AAAA,IAAC,KAAK;AAAA,IAAL;AAAA,MACA,UAAW,MAAM;AAChB,cAAM,0BACL,WAAAC,SAAe,MAAM,MAAM,IAAK;AAAA,QAEhC,MAAM,QAAQ,MAAM;AAErB,YAAK,qBAAsB;AAE1B,8BAAqB;AAAA,YACpB,CAAE,SAAU,GAAG;AAAA,UAChB,CAAE;AAAA,QACH,OAAO;AACN,8BAAqB;AAAA,YACpB,CAAE,SAAU,GAAG;AAAA,UAChB,CAAE;AAAA,QACH;AAAA,MACD;AAAA,MACA,MAAO,YAAY;AAAA,MACnB,OAAQ,OAAQ,SAAU;AAAA,MAC1B,aACC,WAAAA,SAAe,MAAM,MAAM,IAAK;AAAA,MAEhC,MAAM,QAAQ,MAAM;AAAA,MAGrB;AAAA,oDAAC,KAAK,WAAL,EAAiB,gBAAM,OAAO;AAAA,QAC/B,4CAAC,KAAK,cAAL,EAAoB,iBAAQ,SAAU,GAAG;AAAA;AAAA;AAAA,EAC3C;AAEF;AAEe,SAAR,8BAAgD;AAAA,EACtD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD,GAAI;AACH,QAAM,eAAW,iCAAkB,UAAU,GAAI;AAGjD,MAAK,CAAE,UAAU,OAAO,WAAW,GAAI;AACtC,WAAO;AAAA,EACR;AAEA,QAAM,aAAS,sCAAwB,SAAU;AAEjD,SACC;AAAA,IAAC;AAAA;AAAA,MAEA,WAAY,WAAW,iBAAiB;AAAA,MAExC;AAAA,oDAAC,KAAK,oBAAL,EACA,sDAAC,KAAK,WAAL,EAAiB,iBAAO,OAAO,GACjC;AAAA,QACA,4CAAC,KAAK,SAAL,EAAa,QAAS,GACtB,sDAAC,KAAK,OAAL,EACE,iBAAO,IAAK,CAAE,UACf;AAAA,UAAC;AAAA;AAAA,YAKA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA;AAAA,UAPC,YAAY,KAAK,UAAW,MAAM,IAAK,KACvC,MAAM;AAAA,QAOR,CACC,GACH,GACD;AAAA;AAAA;AAAA,IAtBM;AAAA,EAuBP;AAEF;",
|
|
6
|
+
"names": ["componentsPrivateApis", "BlockContext", "useBlockBindingsUtils", "fastDeepEqual"]
|
|
7
|
+
}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// packages/block-editor/src/components/block-bindings/use-block-bindings-utils.js
|
|
21
|
+
var use_block_bindings_utils_exports = {};
|
|
22
|
+
__export(use_block_bindings_utils_exports, {
|
|
23
|
+
default: () => useBlockBindingsUtils
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(use_block_bindings_utils_exports);
|
|
26
|
+
var import_data = require("@wordpress/data");
|
|
27
|
+
var import_store = require("../../store");
|
|
28
|
+
var import_block_edit = require("../block-edit");
|
|
29
|
+
function isObjectEmpty(object) {
|
|
30
|
+
return !object || Object.keys(object).length === 0;
|
|
31
|
+
}
|
|
32
|
+
function useBlockBindingsUtils(clientId) {
|
|
33
|
+
const { clientId: contextClientId } = (0, import_block_edit.useBlockEditContext)();
|
|
34
|
+
const blockClientId = clientId || contextClientId;
|
|
35
|
+
const { updateBlockAttributes } = (0, import_data.useDispatch)(import_store.store);
|
|
36
|
+
const { getBlockAttributes } = (0, import_data.useRegistry)().select(import_store.store);
|
|
37
|
+
const updateBlockBindings = (bindings) => {
|
|
38
|
+
const { metadata: { bindings: currentBindings, ...metadata } = {} } = getBlockAttributes(blockClientId);
|
|
39
|
+
const newBindings = { ...currentBindings };
|
|
40
|
+
Object.entries(bindings).forEach(([attribute, binding]) => {
|
|
41
|
+
if (!binding && newBindings[attribute]) {
|
|
42
|
+
delete newBindings[attribute];
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
newBindings[attribute] = binding;
|
|
46
|
+
});
|
|
47
|
+
const newMetadata = {
|
|
48
|
+
...metadata,
|
|
49
|
+
bindings: newBindings
|
|
50
|
+
};
|
|
51
|
+
if (isObjectEmpty(newMetadata.bindings)) {
|
|
52
|
+
delete newMetadata.bindings;
|
|
53
|
+
}
|
|
54
|
+
updateBlockAttributes(blockClientId, {
|
|
55
|
+
metadata: isObjectEmpty(newMetadata) ? void 0 : newMetadata
|
|
56
|
+
});
|
|
57
|
+
};
|
|
58
|
+
const removeAllBlockBindings = () => {
|
|
59
|
+
const { metadata: { bindings, ...metadata } = {} } = getBlockAttributes(blockClientId);
|
|
60
|
+
updateBlockAttributes(blockClientId, {
|
|
61
|
+
metadata: isObjectEmpty(metadata) ? void 0 : metadata
|
|
62
|
+
});
|
|
63
|
+
};
|
|
64
|
+
return { updateBlockBindings, removeAllBlockBindings };
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=use-block-bindings-utils.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/block-bindings/use-block-bindings-utils.js"],
|
|
4
|
+
"sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { useDispatch, useRegistry } from '@wordpress/data';\n\n/**\n * Internal dependencies\n */\nimport { store as blockEditorStore } from '../../store';\nimport { useBlockEditContext } from '../block-edit';\n\n/**\n * Checks if the given object is empty.\n *\n * @param {?Object} object The object to check.\n *\n * @return {boolean} Whether the object is empty.\n */\nfunction isObjectEmpty( object ) {\n\treturn ! object || Object.keys( object ).length === 0;\n}\n\n/**\n * Contains utils to update the block `bindings` metadata.\n *\n * @typedef {Object} WPBlockBindingsUtils\n *\n * @property {Function} updateBlockBindings Updates the value of the bindings connected to block attributes.\n * @property {Function} removeAllBlockBindings Removes the bindings property of the `metadata` attribute.\n */\n\n/**\n * Retrieves the existing utils needed to update the block `bindings` metadata.\n * They can be used to create, modify, or remove connections from the existing block attributes.\n *\n * It contains the following utils:\n * - `updateBlockBindings`: Updates the value of the bindings connected to block attributes. It can be used to remove a specific binding by setting the value to `undefined`.\n * - `removeAllBlockBindings`: Removes the bindings property of the `metadata` attribute.\n *\n * @since 6.7.0 Introduced in WordPress core.\n *\n * @param {?string} clientId Optional block client ID. If not set, it will use the current block client ID from the context.\n *\n * @return {?WPBlockBindingsUtils} Object containing the block bindings utils.\n *\n * @example\n * ```js\n * import { useBlockBindingsUtils } from '@wordpress/block-editor'\n * const { updateBlockBindings, removeAllBlockBindings } = useBlockBindingsUtils();\n *\n * // Update url and alt attributes.\n * updateBlockBindings( {\n * url: {\n * source: 'core/post-meta',\n * args: {\n * key: 'url_custom_field',\n * },\n * },\n * alt: {\n * source: 'core/post-meta',\n * args: {\n * key: 'text_custom_field',\n * },\n * },\n * } );\n *\n * // Remove binding from url attribute.\n * updateBlockBindings( { url: undefined } );\n *\n * // Remove bindings from all attributes.\n * removeAllBlockBindings();\n * ```\n */\nexport default function useBlockBindingsUtils( clientId ) {\n\tconst { clientId: contextClientId } = useBlockEditContext();\n\tconst blockClientId = clientId || contextClientId;\n\tconst { updateBlockAttributes } = useDispatch( blockEditorStore );\n\tconst { getBlockAttributes } = useRegistry().select( blockEditorStore );\n\n\t/**\n\t * Updates the value of the bindings connected to block attributes.\n\t * It removes the binding when the new value is `undefined`.\n\t *\n\t * @param {Object} bindings Bindings including the attributes to update and the new object.\n\t * @param {string} bindings.source The source name to connect to.\n\t * @param {Object} [bindings.args] Object containing the arguments needed by the source.\n\t *\n\t * @example\n\t * ```js\n\t * import { useBlockBindingsUtils } from '@wordpress/block-editor'\n\t *\n\t * const { updateBlockBindings } = useBlockBindingsUtils();\n\t * updateBlockBindings( {\n\t * url: {\n\t * source: 'core/post-meta',\n\t * args: {\n\t * key: 'url_custom_field',\n\t * },\n\t * \t },\n\t * alt: {\n\t * source: 'core/post-meta',\n\t * args: {\n\t * key: 'text_custom_field',\n\t * },\n\t * \t }\n\t * } );\n\t * ```\n\t */\n\tconst updateBlockBindings = ( bindings ) => {\n\t\tconst { metadata: { bindings: currentBindings, ...metadata } = {} } =\n\t\t\tgetBlockAttributes( blockClientId );\n\t\tconst newBindings = { ...currentBindings };\n\n\t\tObject.entries( bindings ).forEach( ( [ attribute, binding ] ) => {\n\t\t\tif ( ! binding && newBindings[ attribute ] ) {\n\t\t\t\tdelete newBindings[ attribute ];\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tnewBindings[ attribute ] = binding;\n\t\t} );\n\n\t\tconst newMetadata = {\n\t\t\t...metadata,\n\t\t\tbindings: newBindings,\n\t\t};\n\n\t\tif ( isObjectEmpty( newMetadata.bindings ) ) {\n\t\t\tdelete newMetadata.bindings;\n\t\t}\n\n\t\tupdateBlockAttributes( blockClientId, {\n\t\t\tmetadata: isObjectEmpty( newMetadata ) ? undefined : newMetadata,\n\t\t} );\n\t};\n\n\t/**\n\t * Removes the bindings property of the `metadata` attribute.\n\t *\n\t * @example\n\t * ```js\n\t * import { useBlockBindingsUtils } from '@wordpress/block-editor'\n\t *\n\t * const { removeAllBlockBindings } = useBlockBindingsUtils();\n\t * removeAllBlockBindings();\n\t * ```\n\t */\n\tconst removeAllBlockBindings = () => {\n\t\tconst { metadata: { bindings, ...metadata } = {} } =\n\t\t\tgetBlockAttributes( blockClientId );\n\t\tupdateBlockAttributes( blockClientId, {\n\t\t\tmetadata: isObjectEmpty( metadata ) ? undefined : metadata,\n\t\t} );\n\t};\n\n\treturn { updateBlockBindings, removeAllBlockBindings };\n}\n"],
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,kBAAyC;AAKzC,mBAA0C;AAC1C,wBAAoC;AASpC,SAAS,cAAe,QAAS;AAChC,SAAO,CAAE,UAAU,OAAO,KAAM,MAAO,EAAE,WAAW;AACrD;AAqDe,SAAR,sBAAwC,UAAW;AACzD,QAAM,EAAE,UAAU,gBAAgB,QAAI,uCAAoB;AAC1D,QAAM,gBAAgB,YAAY;AAClC,QAAM,EAAE,sBAAsB,QAAI,yBAAa,aAAAA,KAAiB;AAChE,QAAM,EAAE,mBAAmB,QAAI,yBAAY,EAAE,OAAQ,aAAAA,KAAiB;AA+BtE,QAAM,sBAAsB,CAAE,aAAc;AAC3C,UAAM,EAAE,UAAU,EAAE,UAAU,iBAAiB,GAAG,SAAS,IAAI,CAAC,EAAE,IACjE,mBAAoB,aAAc;AACnC,UAAM,cAAc,EAAE,GAAG,gBAAgB;AAEzC,WAAO,QAAS,QAAS,EAAE,QAAS,CAAE,CAAE,WAAW,OAAQ,MAAO;AACjE,UAAK,CAAE,WAAW,YAAa,SAAU,GAAI;AAC5C,eAAO,YAAa,SAAU;AAC9B;AAAA,MACD;AACA,kBAAa,SAAU,IAAI;AAAA,IAC5B,CAAE;AAEF,UAAM,cAAc;AAAA,MACnB,GAAG;AAAA,MACH,UAAU;AAAA,IACX;AAEA,QAAK,cAAe,YAAY,QAAS,GAAI;AAC5C,aAAO,YAAY;AAAA,IACpB;AAEA,0BAAuB,eAAe;AAAA,MACrC,UAAU,cAAe,WAAY,IAAI,SAAY;AAAA,IACtD,CAAE;AAAA,EACH;AAaA,QAAM,yBAAyB,MAAM;AACpC,UAAM,EAAE,UAAU,EAAE,UAAU,GAAG,SAAS,IAAI,CAAC,EAAE,IAChD,mBAAoB,aAAc;AACnC,0BAAuB,eAAe;AAAA,MACrC,UAAU,cAAe,QAAS,IAAI,SAAY;AAAA,IACnD,CAAE;AAAA,EACH;AAEA,SAAO,EAAE,qBAAqB,uBAAuB;AACtD;",
|
|
6
|
+
"names": ["blockEditorStore"]
|
|
7
|
+
}
|
|
@@ -93,10 +93,10 @@ var EditWithGeneratedProps = (props) => {
|
|
|
93
93
|
)
|
|
94
94
|
};
|
|
95
95
|
}, [
|
|
96
|
-
name,
|
|
97
96
|
blockType?.usesContext,
|
|
98
97
|
blockContext,
|
|
99
98
|
attributes?.metadata?.bindings,
|
|
99
|
+
bindableAttributes,
|
|
100
100
|
registeredSources
|
|
101
101
|
]);
|
|
102
102
|
const computedAttributes = (0, import_data.useSelect)(
|
|
@@ -158,7 +158,6 @@ var EditWithGeneratedProps = (props) => {
|
|
|
158
158
|
blockBindings,
|
|
159
159
|
clientId,
|
|
160
160
|
context,
|
|
161
|
-
name,
|
|
162
161
|
registeredSources
|
|
163
162
|
]
|
|
164
163
|
);
|
|
@@ -227,7 +226,6 @@ var EditWithGeneratedProps = (props) => {
|
|
|
227
226
|
hasPatternOverrides,
|
|
228
227
|
setAttributes,
|
|
229
228
|
registeredSources,
|
|
230
|
-
name,
|
|
231
229
|
registry
|
|
232
230
|
]
|
|
233
231
|
);
|