UNPKG

@wordpress/block-library

Version:
93 lines (91 loc) • 2.67 kB
"use strict"; 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/block-library/src/gallery/order-images.js var order_images_exports = {}; __export(order_images_exports, { hasSortableImages: () => hasSortableImages, sortImageBlocks: () => sortImageBlocks }); module.exports = __toCommonJS(order_images_exports); function getSortKey(block, media, orderby) { const { id } = block.attributes; if (id === void 0) { return void 0; } const record = media.find((item) => item.id === id); if (!record) { return void 0; } if (orderby === "title") { return record.title?.raw ?? record.title?.rendered ?? ""; } return record.date ?? ""; } function hasSortableImages(blocks, media) { const mediaIds = new Set(media.map((item) => item.id)); let sortableCount = 0; for (const block of blocks) { if (!mediaIds.has(block.attributes.id)) { continue; } sortableCount++; if (sortableCount > 1) { return true; } } return false; } function compareKeys(a, b, orderby) { if (orderby === "title") { return a.localeCompare(b, void 0, { numeric: true, sensitivity: "base" }); } if (a === b) { return 0; } return a < b ? -1 : 1; } function sortImageBlocks(blocks, media, { orderby, order }) { const direction = order === "desc" ? -1 : 1; const keys = new Map( blocks.map((block) => [ block, getSortKey(block, media, orderby) ]) ); return [...blocks].sort((a, b) => { const keyA = keys.get(a); const keyB = keys.get(b); if (keyA === void 0 || keyB === void 0) { if (keyA === keyB) { return 0; } return keyA === void 0 ? 1 : -1; } return compareKeys(keyA, keyB, orderby) * direction; }); } // Annotate the CommonJS export names for ESM import in node: 0 && (module.exports = { hasSortableImages, sortImageBlocks }); //# sourceMappingURL=order-images.cjs.map