@wordpress/block-library
Version:
Block library for the WordPress editor.
93 lines (91 loc) • 2.67 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/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