@wordpress/editor
Version:
Enhanced block editor for WordPress posts.
203 lines (201 loc) • 7.19 kB
JavaScript
;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// packages/editor/src/components/media-categories/index.js
var media_categories_exports = {};
__export(media_categories_exports, {
default: () => media_categories_default
});
module.exports = __toCommonJS(media_categories_exports);
var import_i18n = require("@wordpress/i18n");
var import_data = require("@wordpress/data");
var import_html_entities = require("@wordpress/html-entities");
var import_core_data = require("@wordpress/core-data");
var getExternalLink = (url, text) => `<a ${getExternalLinkAttributes(url)}>${text}</a>`;
var getExternalLinkAttributes = (url) => `href="${url}" target="_blank" rel="noreferrer noopener"`;
var getOpenverseLicense = (license, licenseVersion) => {
let licenseName = license.trim();
if (license !== "pdm") {
licenseName = license.toUpperCase().replace("SAMPLING", "Sampling");
}
if (licenseVersion) {
licenseName += ` ${licenseVersion}`;
}
if (!["pdm", "cc0"].includes(license)) {
licenseName = `CC ${licenseName}`;
}
return licenseName;
};
var getOpenverseCaption = (item) => {
const {
title,
foreign_landing_url: foreignLandingUrl,
creator,
creator_url: creatorUrl,
license,
license_version: licenseVersion,
license_url: licenseUrl
} = item;
const fullLicense = getOpenverseLicense(license, licenseVersion);
const _creator = (0, import_html_entities.decodeEntities)(creator);
let _caption;
if (_creator) {
_caption = title ? (0, import_i18n.sprintf)(
// 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".
(0, import_i18n._x)('"%1$s" by %2$s/ %3$s', "caption"),
getExternalLink(
foreignLandingUrl,
(0, import_html_entities.decodeEntities)(title)
),
creatorUrl ? getExternalLink(creatorUrl, _creator) : _creator,
licenseUrl ? getExternalLink(
`${licenseUrl}?ref=openverse`,
fullLicense
) : fullLicense
) : (0, import_i18n.sprintf)(
// 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".
(0, import_i18n._x)("<a %1$s>Work</a> by %2$s/ %3$s", "caption"),
getExternalLinkAttributes(foreignLandingUrl),
creatorUrl ? getExternalLink(creatorUrl, _creator) : _creator,
licenseUrl ? getExternalLink(
`${licenseUrl}?ref=openverse`,
fullLicense
) : fullLicense
);
} else {
_caption = title ? (0, import_i18n.sprintf)(
// translators: %1s: Title of a media work from Openverse; %2s: Work's licence e.g: "CC0 1.0".
(0, import_i18n._x)('"%1$s"/ %2$s', "caption"),
getExternalLink(
foreignLandingUrl,
(0, import_html_entities.decodeEntities)(title)
),
licenseUrl ? getExternalLink(
`${licenseUrl}?ref=openverse`,
fullLicense
) : fullLicense
) : (0, import_i18n.sprintf)(
// translators: %1s: Link attributes for a given Openverse media work; %2s: Works's licence e.g: "CC0 1.0".
(0, import_i18n._x)("<a %1$s>Work</a>/ %2$s", "caption"),
getExternalLinkAttributes(foreignLandingUrl),
licenseUrl ? getExternalLink(
`${licenseUrl}?ref=openverse`,
fullLicense
) : fullLicense
);
}
return _caption.replace(/\s{2}/g, " ");
};
var coreMediaFetch = async (query = {}) => {
const mediaItems = await (0, import_data.resolveSelect)(import_core_data.store).getEntityRecords(
"postType",
"attachment",
{
...query,
orderBy: !!query?.search ? "relevance" : "date"
}
);
return mediaItems.map((mediaItem) => ({
...mediaItem,
alt: mediaItem.alt_text,
url: mediaItem.source_url,
previewUrl: mediaItem.media_details?.sizes?.medium?.source_url,
caption: mediaItem.caption?.raw
}));
};
var inserterMediaCategories = [
{
name: "images",
labels: {
name: (0, import_i18n.__)("Images"),
search_items: (0, import_i18n.__)("Search images")
},
mediaType: "image",
async fetch(query = {}) {
return coreMediaFetch({ ...query, media_type: "image" });
}
},
{
name: "videos",
labels: {
name: (0, import_i18n.__)("Videos"),
search_items: (0, import_i18n.__)("Search videos")
},
mediaType: "video",
async fetch(query = {}) {
return coreMediaFetch({ ...query, media_type: "video" });
}
},
{
name: "audio",
labels: {
name: (0, import_i18n.__)("Audio"),
search_items: (0, import_i18n.__)("Search audio")
},
mediaType: "audio",
async fetch(query = {}) {
return coreMediaFetch({ ...query, media_type: "audio" });
}
},
{
name: "openverse",
labels: {
name: (0, import_i18n.__)("Openverse"),
search_items: (0, import_i18n.__)("Search Openverse")
},
mediaType: "image",
async fetch(query = {}) {
const defaultArgs = {
mature: false,
excluded_source: "flickr,inaturalist,wikimedia",
license: "pdm,cc0"
};
const finalQuery = { ...query, ...defaultArgs };
const mapFromInserterMediaRequest = {
per_page: "page_size",
search: "q"
};
const url = new URL("https://api.openverse.org/v1/images/");
Object.entries(finalQuery).forEach(([key, value]) => {
const queryKey = mapFromInserterMediaRequest[key] || key;
url.searchParams.set(queryKey, value);
});
const response = await window.fetch(url, {
headers: {
"User-Agent": "WordPress/inserter-media-fetch"
}
});
const jsonResponse = await response.json();
const results = jsonResponse.results;
return results.map((result) => ({
...result,
// This is a temp solution for better titles, until Openverse API
// completes the cleaning up of some titles of their upstream data.
title: result.title?.toLowerCase().startsWith("file:") ? result.title.slice(5) : result.title,
sourceId: result.id,
id: void 0,
caption: getOpenverseCaption(result),
previewUrl: result.thumbnail
}));
},
getReportUrl: ({ sourceId }) => `https://wordpress.org/openverse/image/${sourceId}/report/`,
isExternalResource: true
}
];
var media_categories_default = inserterMediaCategories;
//# sourceMappingURL=index.cjs.map