UNPKG

@wordpress/block-editor

Version:
66 lines (57 loc) 1.68 kB
import { createElement, Fragment } from "@wordpress/element"; /** * WordPress dependencies */ // Disable Reason: Needs to be refactored. // eslint-disable-next-line no-restricted-imports import apiFetch from '@wordpress/api-fetch'; import { addQueryArgs } from '@wordpress/url'; import { Icon, page, post } from '@wordpress/icons'; const SHOWN_SUGGESTIONS = 10; /** @typedef {import('@wordpress/components').WPCompleter} WPCompleter */ /** * Creates a suggestion list for links to posts or pages. * * @return {WPCompleter} A links completer. */ function createLinkCompleter() { return { name: 'links', className: 'block-editor-autocompleters__link', triggerPrefix: '[[', options: async letters => { let options = await apiFetch({ path: 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 createElement(Fragment, null, createElement(Icon, { key: "icon", icon: item.subtype === 'page' ? page : post }), item.title); }, getOptionCompletion(item) { return createElement("a", { href: item.url }, item.title); } }; } /** * Creates a suggestion list for links to posts or pages.. * * @return {WPCompleter} A link completer. */ export default createLinkCompleter(); //# sourceMappingURL=link.js.map