@wordpress/editor
Version:
Enhanced block editor for WordPress posts.
89 lines (77 loc) • 3.62 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _lodash = require("lodash");
var _element = require("@wordpress/element");
var _data = require("@wordpress/data");
var _coreData = require("@wordpress/core-data");
var _utils = require("../../utils");
var _store = require("../../store");
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
/**
* React hook used to compute the block editor settings to use for the post editor.
*
* @param {Object} settings EditorProvider settings prop.
* @param {boolean} hasTemplate Whether template mode is enabled.
*
* @return {Object} Block Editor Settings.
*/
function useBlockEditorSettings(settings, hasTemplate) {
const {
reusableBlocks,
hasUploadPermissions,
canUseUnfilteredHTML,
isTitleSelected
} = (0, _data.useSelect)(select => {
const {
canUserUseUnfilteredHTML,
isPostTitleSelected
} = select(_store.store);
const {
canUser
} = select(_coreData.store);
return {
canUseUnfilteredHTML: canUserUseUnfilteredHTML(),
reusableBlocks: select(_coreData.store).getEntityRecords('postType', 'wp_block',
/**
* Unbounded queries are not supported on native so as a workaround, we set per_page with the maximum value that native version can handle.
* Related issue: https://github.com/wordpress-mobile/gutenberg-mobile/issues/2661
*/
{
per_page: _element.Platform.select({
web: -1,
native: 10
})
}),
hasUploadPermissions: (0, _lodash.defaultTo)(canUser('create', 'media'), true),
// This selector is only defined on mobile.
isTitleSelected: isPostTitleSelected && isPostTitleSelected()
};
}, []);
const {
undo
} = (0, _data.useDispatch)(_store.store);
return (0, _element.useMemo)(() => ({ ...(0, _lodash.pick)(settings, ['__experimentalBlockDirectory', '__experimentalBlockPatternCategories', '__experimentalBlockPatterns', '__experimentalFeatures', '__experimentalGlobalStylesBaseStyles', '__experimentalGlobalStylesUserEntityId', '__experimentalPreferredStyleVariations', '__experimentalSetIsInserterOpened', 'alignWide', 'allowedBlockTypes', 'bodyPlaceholder', 'codeEditingEnabled', 'colors', 'disableCustomColors', 'disableCustomFontSizes', 'disableCustomGradients', 'enableCustomLineHeight', 'enableCustomSpacing', 'enableCustomUnits', 'focusMode', 'fontSizes', 'gradients', 'hasFixedToolbar', 'hasReducedUI', 'imageDefaultSize', 'imageDimensions', 'imageEditing', 'imageSizes', 'isRTL', 'keepCaretInsideBlock', 'maxWidth', 'onUpdateDefaultBlockStyles', 'styles', 'template', 'templateLock', 'titlePlaceholder', 'supportsLayout', 'widgetTypesToHideFromLegacyWidgetBlock']),
mediaUpload: hasUploadPermissions ? _utils.mediaUpload : undefined,
__experimentalReusableBlocks: reusableBlocks,
__experimentalFetchLinkSuggestions: (search, searchOptions) => (0, _coreData.__experimentalFetchLinkSuggestions)(search, searchOptions, settings),
__experimentalFetchRemoteUrlData: url => (0, _coreData.__experimentalFetchRemoteUrlData)(url),
__experimentalCanUserUseUnfilteredHTML: canUseUnfilteredHTML,
__experimentalUndo: undo,
__experimentalShouldInsertAtTheTop: isTitleSelected,
outlineMode: hasTemplate
}), [settings, hasUploadPermissions, reusableBlocks, canUseUnfilteredHTML, undo, isTitleSelected, hasTemplate]);
}
var _default = useBlockEditorSettings;
exports.default = _default;
//# sourceMappingURL=use-block-editor-settings.js.map