UNPKG

@wordpress/block-editor

Version:
8 lines (7 loc) 6.69 kB
{ "version": 3, "sources": ["../../../src/components/link-control/search-item.js"], "sourcesContent": ["/**\n * WordPress dependencies\n */\nimport { __ } from '@wordpress/i18n';\nimport { MenuItem, TextHighlight } from '@wordpress/components';\nimport {\n\tIcon,\n\tglobe,\n\tpage,\n\ttag,\n\tpostList,\n\tcategory,\n\tfile,\n\thome,\n\tverse,\n} from '@wordpress/icons';\nimport { __unstableStripHTML as stripHTML } from '@wordpress/dom';\nimport { safeDecodeURI, filterURLForDisplay, getPath } from '@wordpress/url';\nimport { pipe } from '@wordpress/compose';\nimport deprecated from '@wordpress/deprecated';\n\nconst TYPES = {\n\tpost: {\n\t\ticon: postList,\n\t\tlabel: __( 'Post' ),\n\t},\n\tpage: {\n\t\ticon: page,\n\t\tlabel: __( 'Page' ),\n\t},\n\tpost_tag: {\n\t\ticon: tag,\n\t\tlabel: __( 'Tag' ),\n\t},\n\tcategory: {\n\t\ticon: category,\n\t\tlabel: __( 'Category' ),\n\t},\n\tattachment: {\n\t\ticon: file,\n\t\tlabel: __( 'Attachment' ),\n\t},\n};\n\nfunction SearchItemIcon( { isURL, suggestion } ) {\n\tlet icon = null;\n\n\tif ( isURL ) {\n\t\ticon = globe;\n\t} else if ( suggestion.type in TYPES ) {\n\t\ticon = TYPES[ suggestion.type ].icon;\n\t\tif ( suggestion.type === 'page' ) {\n\t\t\tif ( suggestion.isFrontPage ) {\n\t\t\t\ticon = home;\n\t\t\t}\n\t\t\tif ( suggestion.isBlogHome ) {\n\t\t\t\ticon = verse;\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( icon ) {\n\t\treturn (\n\t\t\t<Icon\n\t\t\t\tclassName=\"block-editor-link-control__search-item-icon\"\n\t\t\t\ticon={ icon }\n\t\t\t/>\n\t\t);\n\t}\n\n\treturn null;\n}\n\n/**\n * Adds a leading slash to a url if it doesn't already have one.\n * @param {string} url the url to add a leading slash to.\n * @return {string} the url with a leading slash.\n */\nfunction addLeadingSlash( url ) {\n\tconst trimmedURL = url?.trim();\n\n\tif ( ! trimmedURL?.length ) {\n\t\treturn url;\n\t}\n\n\treturn url?.replace( /^\\/?/, '/' );\n}\n\nfunction removeTrailingSlash( url ) {\n\tconst trimmedURL = url?.trim();\n\n\tif ( ! trimmedURL?.length ) {\n\t\treturn url;\n\t}\n\n\treturn url?.replace( /\\/$/, '' );\n}\n\nconst partialRight =\n\t( fn, ...partialArgs ) =>\n\t( ...args ) =>\n\t\tfn( ...args, ...partialArgs );\n\nconst defaultTo = ( d ) => ( v ) => {\n\treturn v === null || v === undefined || v !== v ? d : v;\n};\n\n/**\n * Prepares a URL for display in the UI.\n * - decodes the URL.\n * - filters it (removes protocol, www, etc.).\n * - truncates it if necessary.\n * - adds a leading slash.\n * @param {string} url the url.\n * @return {string} the processed url to display.\n */\nfunction getURLForDisplay( url ) {\n\tif ( ! url ) {\n\t\treturn url;\n\t}\n\n\treturn pipe(\n\t\tsafeDecodeURI,\n\t\tgetPath,\n\t\tdefaultTo( '' ),\n\t\tpartialRight( filterURLForDisplay, 24 ),\n\t\tremoveTrailingSlash,\n\t\taddLeadingSlash\n\t)( url );\n}\n\nexport const LinkControlSearchItem = ( {\n\titemProps,\n\tsuggestion,\n\tsearchTerm,\n\tonClick,\n\tisURL = false,\n\tshouldShowType = false,\n} ) => {\n\tconst info = isURL\n\t\t? __( 'Press ENTER to add this link' )\n\t\t: getURLForDisplay( suggestion.url );\n\n\treturn (\n\t\t<MenuItem\n\t\t\t{ ...itemProps }\n\t\t\tinfo={ info }\n\t\t\ticonPosition=\"left\"\n\t\t\ticon={\n\t\t\t\t<SearchItemIcon suggestion={ suggestion } isURL={ isURL } />\n\t\t\t}\n\t\t\tonClick={ onClick }\n\t\t\tshortcut={ shouldShowType && getVisualTypeName( suggestion ) }\n\t\t\tclassName=\"block-editor-link-control__search-item\"\n\t\t>\n\t\t\t<TextHighlight\n\t\t\t\t// The component expects a plain text string.\n\t\t\t\ttext={ stripHTML( suggestion.title ) }\n\t\t\t\thighlight={ searchTerm }\n\t\t\t/>\n\t\t</MenuItem>\n\t);\n};\n\nfunction getVisualTypeName( suggestion ) {\n\tif ( suggestion.isFrontPage ) {\n\t\treturn __( 'Front page' );\n\t}\n\n\tif ( suggestion.isBlogHome ) {\n\t\treturn __( 'Blog home' );\n\t}\n\n\t// Provide translated labels for built-in post types. Ideally, the API would return the localised CPT or taxonomy label.\n\tif ( suggestion.type in TYPES ) {\n\t\treturn TYPES[ suggestion.type ].label;\n\t}\n\n\treturn suggestion.type;\n}\n\nexport default LinkControlSearchItem;\n\nexport const __experimentalLinkControlSearchItem = ( props ) => {\n\tdeprecated( 'wp.blockEditor.__experimentalLinkControlSearchItem', {\n\t\tsince: '6.8',\n\t} );\n\n\treturn <LinkControlSearchItem { ...props } />;\n};\n"], "mappings": "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", "names": ["stripHTML", "deprecated"] }