@wordpress/editor
Version:
Enhanced block editor for WordPress posts.
8 lines (7 loc) • 11.2 kB
Source Map (JSON)
{
"version": 3,
"sources": ["../../../src/components/media-categories/index.js"],
"sourcesContent": ["/**\n * The `editor` settings here need to be in sync with the corresponding ones in `editor` package.\n * See `packages/editor/src/components/media-categories/index.js`.\n *\n * In the future we could consider creating an Openvese package that can be used in both `editor` and `site-editor`.\n * The rest of the settings would still need to be in sync though.\n */\n\n/**\n * WordPress dependencies\n */\nimport { __, sprintf, _x } from '@wordpress/i18n';\nimport { resolveSelect } from '@wordpress/data';\nimport { decodeEntities } from '@wordpress/html-entities';\n\n/**\n * Internal dependencies\n */\nimport { store as coreStore } from '@wordpress/core-data';\n\n/** @typedef {import('@wordpress/block-editor').InserterMediaRequest} InserterMediaRequest */\n/** @typedef {import('@wordpress/block-editor').InserterMediaItem} InserterMediaItem */\n/** @typedef {import('@wordpress/block-editor').InserterMediaCategory} InserterMediaCategory */\n\nconst getExternalLink = ( url, text ) =>\n\t`<a ${ getExternalLinkAttributes( url ) }>${ text }</a>`;\n\nconst getExternalLinkAttributes = ( url ) =>\n\t`href=\"${ url }\" target=\"_blank\" rel=\"noreferrer noopener\"`;\n\nconst getOpenverseLicense = ( license, licenseVersion ) => {\n\tlet licenseName = license.trim();\n\t// PDM has no abbreviation\n\tif ( license !== 'pdm' ) {\n\t\tlicenseName = license.toUpperCase().replace( 'SAMPLING', 'Sampling' );\n\t}\n\t// If version is known, append version to the name.\n\t// The license has to have a version to be valid. Only\n\t// PDM (public domain mark) doesn't have a version.\n\tif ( licenseVersion ) {\n\t\tlicenseName += ` ${ licenseVersion }`;\n\t}\n\t// For licenses other than public-domain marks, prepend 'CC' to the name.\n\tif ( ! [ 'pdm', 'cc0' ].includes( license ) ) {\n\t\tlicenseName = `CC ${ licenseName }`;\n\t}\n\treturn licenseName;\n};\n\nconst getOpenverseCaption = ( item ) => {\n\tconst {\n\t\ttitle,\n\t\tforeign_landing_url: foreignLandingUrl,\n\t\tcreator,\n\t\tcreator_url: creatorUrl,\n\t\tlicense,\n\t\tlicense_version: licenseVersion,\n\t\tlicense_url: licenseUrl,\n\t} = item;\n\tconst fullLicense = getOpenverseLicense( license, licenseVersion );\n\tconst _creator = decodeEntities( creator );\n\tlet _caption;\n\tif ( _creator ) {\n\t\t_caption = title\n\t\t\t? sprintf(\n\t\t\t\t\t// translators: %1s: Title of a media work from Openverse; %2$s: Name of the work's creator; %3s: Work's licence e.g: \"CC0 1.0\".\n\t\t\t\t\t_x( '\"%1$s\" by %2$s/ %3$s', 'caption' ),\n\t\t\t\t\tgetExternalLink(\n\t\t\t\t\t\tforeignLandingUrl,\n\t\t\t\t\t\tdecodeEntities( title )\n\t\t\t\t\t),\n\t\t\t\t\tcreatorUrl\n\t\t\t\t\t\t? getExternalLink( creatorUrl, _creator )\n\t\t\t\t\t\t: _creator,\n\t\t\t\t\tlicenseUrl\n\t\t\t\t\t\t? getExternalLink(\n\t\t\t\t\t\t\t\t`${ licenseUrl }?ref=openverse`,\n\t\t\t\t\t\t\t\tfullLicense\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: fullLicense\n\t\t\t )\n\t\t\t: sprintf(\n\t\t\t\t\t// translators: %1s: Link attributes for a given Openverse media work; %2s: Name of the work's creator; %3s: Works's licence e.g: \"CC0 1.0\".\n\t\t\t\t\t_x( '<a %1$s>Work</a> by %2$s/ %3$s', 'caption' ),\n\t\t\t\t\tgetExternalLinkAttributes( foreignLandingUrl ),\n\t\t\t\t\tcreatorUrl\n\t\t\t\t\t\t? getExternalLink( creatorUrl, _creator )\n\t\t\t\t\t\t: _creator,\n\t\t\t\t\tlicenseUrl\n\t\t\t\t\t\t? getExternalLink(\n\t\t\t\t\t\t\t\t`${ licenseUrl }?ref=openverse`,\n\t\t\t\t\t\t\t\tfullLicense\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: fullLicense\n\t\t\t );\n\t} else {\n\t\t_caption = title\n\t\t\t? sprintf(\n\t\t\t\t\t// translators: %1s: Title of a media work from Openverse; %2s: Work's licence e.g: \"CC0 1.0\".\n\t\t\t\t\t_x( '\"%1$s\"/ %2$s', 'caption' ),\n\t\t\t\t\tgetExternalLink(\n\t\t\t\t\t\tforeignLandingUrl,\n\t\t\t\t\t\tdecodeEntities( title )\n\t\t\t\t\t),\n\t\t\t\t\tlicenseUrl\n\t\t\t\t\t\t? getExternalLink(\n\t\t\t\t\t\t\t\t`${ licenseUrl }?ref=openverse`,\n\t\t\t\t\t\t\t\tfullLicense\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: fullLicense\n\t\t\t )\n\t\t\t: sprintf(\n\t\t\t\t\t// translators: %1s: Link attributes for a given Openverse media work; %2s: Works's licence e.g: \"CC0 1.0\".\n\t\t\t\t\t_x( '<a %1$s>Work</a>/ %2$s', 'caption' ),\n\t\t\t\t\tgetExternalLinkAttributes( foreignLandingUrl ),\n\t\t\t\t\tlicenseUrl\n\t\t\t\t\t\t? getExternalLink(\n\t\t\t\t\t\t\t\t`${ licenseUrl }?ref=openverse`,\n\t\t\t\t\t\t\t\tfullLicense\n\t\t\t\t\t\t )\n\t\t\t\t\t\t: fullLicense\n\t\t\t );\n\t}\n\treturn _caption.replace( /\\s{2}/g, ' ' );\n};\n\nconst coreMediaFetch = async ( query = {} ) => {\n\tconst mediaItems = await resolveSelect( coreStore ).getEntityRecords(\n\t\t'postType',\n\t\t'attachment',\n\t\t{\n\t\t\t...query,\n\t\t\torderBy: !! query?.search ? 'relevance' : 'date',\n\t\t}\n\t);\n\treturn mediaItems.map( ( mediaItem ) => ( {\n\t\t...mediaItem,\n\t\talt: mediaItem.alt_text,\n\t\turl: mediaItem.source_url,\n\t\tpreviewUrl: mediaItem.media_details?.sizes?.medium?.source_url,\n\t\tcaption: mediaItem.caption?.raw,\n\t} ) );\n};\n\n/** @type {InserterMediaCategory[]} */\nconst inserterMediaCategories = [\n\t{\n\t\tname: 'images',\n\t\tlabels: {\n\t\t\tname: __( 'Images' ),\n\t\t\tsearch_items: __( 'Search images' ),\n\t\t},\n\t\tmediaType: 'image',\n\t\tasync fetch( query = {} ) {\n\t\t\treturn coreMediaFetch( { ...query, media_type: 'image' } );\n\t\t},\n\t},\n\t{\n\t\tname: 'videos',\n\t\tlabels: {\n\t\t\tname: __( 'Videos' ),\n\t\t\tsearch_items: __( 'Search videos' ),\n\t\t},\n\t\tmediaType: 'video',\n\t\tasync fetch( query = {} ) {\n\t\t\treturn coreMediaFetch( { ...query, media_type: 'video' } );\n\t\t},\n\t},\n\t{\n\t\tname: 'audio',\n\t\tlabels: {\n\t\t\tname: __( 'Audio' ),\n\t\t\tsearch_items: __( 'Search audio' ),\n\t\t},\n\t\tmediaType: 'audio',\n\t\tasync fetch( query = {} ) {\n\t\t\treturn coreMediaFetch( { ...query, media_type: 'audio' } );\n\t\t},\n\t},\n\t{\n\t\tname: 'openverse',\n\t\tlabels: {\n\t\t\tname: __( 'Openverse' ),\n\t\t\tsearch_items: __( 'Search Openverse' ),\n\t\t},\n\t\tmediaType: 'image',\n\t\tasync fetch( query = {} ) {\n\t\t\tconst defaultArgs = {\n\t\t\t\tmature: false,\n\t\t\t\texcluded_source: 'flickr,inaturalist,wikimedia',\n\t\t\t\tlicense: 'pdm,cc0',\n\t\t\t};\n\t\t\tconst finalQuery = { ...query, ...defaultArgs };\n\t\t\tconst mapFromInserterMediaRequest = {\n\t\t\t\tper_page: 'page_size',\n\t\t\t\tsearch: 'q',\n\t\t\t};\n\t\t\tconst url = new URL( 'https://api.openverse.org/v1/images/' );\n\t\t\tObject.entries( finalQuery ).forEach( ( [ key, value ] ) => {\n\t\t\t\tconst queryKey = mapFromInserterMediaRequest[ key ] || key;\n\t\t\t\turl.searchParams.set( queryKey, value );\n\t\t\t} );\n\t\t\tconst response = await window.fetch( url, {\n\t\t\t\theaders: {\n\t\t\t\t\t'User-Agent': 'WordPress/inserter-media-fetch',\n\t\t\t\t},\n\t\t\t} );\n\t\t\tconst jsonResponse = await response.json();\n\t\t\tconst results = jsonResponse.results;\n\t\t\treturn results.map( ( result ) => ( {\n\t\t\t\t...result,\n\t\t\t\t// This is a temp solution for better titles, until Openverse API\n\t\t\t\t// completes the cleaning up of some titles of their upstream data.\n\t\t\t\ttitle: result.title?.toLowerCase().startsWith( 'file:' )\n\t\t\t\t\t? result.title.slice( 5 )\n\t\t\t\t\t: result.title,\n\t\t\t\tsourceId: result.id,\n\t\t\t\tid: undefined,\n\t\t\t\tcaption: getOpenverseCaption( result ),\n\t\t\t\tpreviewUrl: result.thumbnail,\n\t\t\t} ) );\n\t\t},\n\t\tgetReportUrl: ( { sourceId } ) =>\n\t\t\t`https://wordpress.org/openverse/image/${ sourceId }/report/`,\n\t\tisExternalResource: true,\n\t},\n];\n\nexport default inserterMediaCategories;\n"],
"mappings": "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",
"names": ["coreStore"]
}