@wordpress/block-editor
Version:
69 lines (65 loc) • 2.04 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _apiFetch = _interopRequireDefault(require("@wordpress/api-fetch"));
var _url = require("@wordpress/url");
var _icons = require("@wordpress/icons");
var _htmlEntities = require("@wordpress/html-entities");
var _jsxRuntime = require("react/jsx-runtime");
/**
* WordPress dependencies
*/
// Disable Reason: Needs to be refactored.
// eslint-disable-next-line no-restricted-imports
const SHOWN_SUGGESTIONS = 10;
/**
* Creates a suggestion list for links to posts or pages.
*
* @return {Object} A links completer.
*/
function createLinkCompleter() {
return {
name: 'links',
className: 'block-editor-autocompleters__link',
triggerPrefix: '[[',
options: async letters => {
let options = await (0, _apiFetch.default)({
path: (0, _url.addQueryArgs)('/wp/v2/search', {
per_page: SHOWN_SUGGESTIONS,
search: letters,
type: 'post',
order_by: 'menu_order'
})
});
options = options.filter(option => option.title !== '');
return options;
},
getOptionKeywords(item) {
const expansionWords = item.title.split(/\s+/);
return [...expansionWords];
},
getOptionLabel(item) {
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_icons.Icon, {
icon: item.subtype === 'page' ? _icons.page : _icons.post
}, "icon"), (0, _htmlEntities.decodeEntities)(item.title)]
});
},
getOptionCompletion(item) {
return /*#__PURE__*/(0, _jsxRuntime.jsx)("a", {
href: item.url,
children: item.title
});
}
};
}
/**
* Creates a suggestion list for links to posts or pages..
*
* @return {Object} A link completer.
*/
var _default = exports.default = createLinkCompleter();
//# sourceMappingURL=link.js.map
;