@wordpress/block-library
Version:
Block library for the WordPress editor.
180 lines (178 loc) • 5.72 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/file/transforms.js
var transforms_exports = {};
__export(transforms_exports, {
default: () => transforms_default
});
module.exports = __toCommonJS(transforms_exports);
var import_blob = require("@wordpress/blob");
var import_blocks = require("@wordpress/blocks");
var import_data = require("@wordpress/data");
var import_core_data = require("@wordpress/core-data");
var import_url = require("@wordpress/url");
var transforms = {
from: [
{
type: "files",
isMatch(files) {
return files.length > 0;
},
// We define a lower priority (higher number) than the default of 10. This
// ensures that the File block is only created as a fallback.
priority: 15,
transform: (files) => {
const blocks = [];
files.forEach((file) => {
const blobURL = (0, import_blob.createBlobURL)(file);
if (file.type.startsWith("video/")) {
blocks.push(
(0, import_blocks.createBlock)("core/video", {
blob: (0, import_blob.createBlobURL)(file)
})
);
} else if (file.type.startsWith("image/")) {
blocks.push(
(0, import_blocks.createBlock)("core/image", {
blob: (0, import_blob.createBlobURL)(file)
})
);
} else if (file.type.startsWith("audio/")) {
blocks.push(
(0, import_blocks.createBlock)("core/audio", {
blob: (0, import_blob.createBlobURL)(file)
})
);
} else {
blocks.push(
(0, import_blocks.createBlock)("core/file", {
blob: blobURL,
fileName: file.name
})
);
}
});
return blocks;
}
},
{
type: "block",
blocks: ["core/audio"],
transform: (attributes) => {
return (0, import_blocks.createBlock)("core/file", {
href: attributes.src,
fileName: attributes.caption,
textLinkHref: attributes.src,
id: attributes.id,
anchor: attributes.anchor
});
}
},
{
type: "block",
blocks: ["core/video"],
transform: (attributes) => {
return (0, import_blocks.createBlock)("core/file", {
href: attributes.src,
fileName: attributes.caption,
textLinkHref: attributes.src,
id: attributes.id,
anchor: attributes.anchor
});
}
},
{
type: "block",
blocks: ["core/image"],
transform: (attributes) => {
return (0, import_blocks.createBlock)("core/file", {
href: attributes.url,
fileName: attributes.caption || (0, import_url.getFilename)(attributes.url),
textLinkHref: attributes.url,
id: attributes.id,
anchor: attributes.anchor
});
}
}
],
to: [
{
type: "block",
blocks: ["core/audio"],
isMatch: ({ id }) => {
if (!id) {
return false;
}
const { getEntityRecord } = (0, import_data.select)(import_core_data.store);
const media = getEntityRecord("postType", "attachment", id);
return !!media && media.mime_type.includes("audio");
},
transform: (attributes) => {
return (0, import_blocks.createBlock)("core/audio", {
src: attributes.href,
caption: attributes.fileName,
id: attributes.id,
anchor: attributes.anchor
});
}
},
{
type: "block",
blocks: ["core/video"],
isMatch: ({ id }) => {
if (!id) {
return false;
}
const { getEntityRecord } = (0, import_data.select)(import_core_data.store);
const media = getEntityRecord("postType", "attachment", id);
return !!media && media.mime_type.includes("video");
},
transform: (attributes) => {
return (0, import_blocks.createBlock)("core/video", {
src: attributes.href,
caption: attributes.fileName,
id: attributes.id,
anchor: attributes.anchor
});
}
},
{
type: "block",
blocks: ["core/image"],
isMatch: ({ id }) => {
if (!id) {
return false;
}
const { getEntityRecord } = (0, import_data.select)(import_core_data.store);
const media = getEntityRecord("postType", "attachment", id);
return !!media && media.mime_type.includes("image");
},
transform: (attributes) => {
return (0, import_blocks.createBlock)("core/image", {
url: attributes.href,
caption: attributes.fileName,
id: attributes.id,
anchor: attributes.anchor
});
}
}
]
};
var transforms_default = transforms;
//# sourceMappingURL=transforms.js.map