@wordpress/block-library
Version:
Block library for the WordPress editor.
396 lines (390 loc) • 11.5 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _i18n = require("@wordpress/i18n");
var _icons = require("./icons");
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
/** @typedef {import('@wordpress/blocks').WPBlockVariation} WPBlockVariation */
function getTitle(providerName) {
return (0, _i18n.sprintf)(/* translators: %s: provider name */
(0, _i18n.__)('%s Embed'), providerName);
}
/**
* The embed provider services.
*
* @type {WPBlockVariation[]}
*/
const variations = [{
name: 'twitter',
title: getTitle('Twitter'),
icon: _icons.embedTwitterIcon,
keywords: ['tweet', (0, _i18n.__)('social')],
description: (0, _i18n.__)('Embed a tweet.'),
patterns: [/^https?:\/\/(www\.)?twitter\.com\/.+/i],
attributes: {
providerNameSlug: 'twitter',
responsive: true
}
}, {
name: 'youtube',
title: getTitle('YouTube'),
icon: _icons.embedYouTubeIcon,
keywords: [(0, _i18n.__)('music'), (0, _i18n.__)('video')],
description: (0, _i18n.__)('Embed a YouTube video.'),
patterns: [/^https?:\/\/((m|www)\.)?youtube\.com\/.+/i, /^https?:\/\/youtu\.be\/.+/i],
attributes: {
providerNameSlug: 'youtube',
responsive: true
}
}, {
// Deprecate Facebook Embed per FB policy
// See: https://developers.facebook.com/docs/plugins/oembed-legacy
name: 'facebook',
title: getTitle('Facebook'),
icon: _icons.embedFacebookIcon,
keywords: [(0, _i18n.__)('social')],
description: (0, _i18n.__)('Embed a Facebook post.'),
scope: ['block'],
patterns: [],
attributes: {
providerNameSlug: 'facebook',
previewable: false,
responsive: true
}
}, {
// Deprecate Instagram per FB policy
// See: https://developers.facebook.com/docs/instagram/oembed-legacy
name: 'instagram',
title: getTitle('Instagram'),
icon: _icons.embedInstagramIcon,
keywords: [(0, _i18n.__)('image'), (0, _i18n.__)('social')],
description: (0, _i18n.__)('Embed an Instagram post.'),
scope: ['block'],
patterns: [],
attributes: {
providerNameSlug: 'instagram',
responsive: true
}
}, {
name: 'wordpress',
title: getTitle('WordPress'),
icon: _icons.embedWordPressIcon,
keywords: [(0, _i18n.__)('post'), (0, _i18n.__)('blog')],
description: (0, _i18n.__)('Embed a WordPress post.'),
attributes: {
providerNameSlug: 'wordpress'
}
}, {
name: 'soundcloud',
title: getTitle('SoundCloud'),
icon: _icons.embedAudioIcon,
keywords: [(0, _i18n.__)('music'), (0, _i18n.__)('audio')],
description: (0, _i18n.__)('Embed SoundCloud content.'),
patterns: [/^https?:\/\/(www\.)?soundcloud\.com\/.+/i],
attributes: {
providerNameSlug: 'soundcloud',
responsive: true
}
}, {
name: 'spotify',
title: getTitle('Spotify'),
icon: _icons.embedSpotifyIcon,
keywords: [(0, _i18n.__)('music'), (0, _i18n.__)('audio')],
description: (0, _i18n.__)('Embed Spotify content.'),
patterns: [/^https?:\/\/(open|play)\.spotify\.com\/.+/i],
attributes: {
providerNameSlug: 'spotify',
responsive: true
}
}, {
name: 'flickr',
title: getTitle('Flickr'),
icon: _icons.embedFlickrIcon,
keywords: [(0, _i18n.__)('image')],
description: (0, _i18n.__)('Embed Flickr content.'),
patterns: [/^https?:\/\/(www\.)?flickr\.com\/.+/i, /^https?:\/\/flic\.kr\/.+/i],
attributes: {
providerNameSlug: 'flickr',
responsive: true
}
}, {
name: 'vimeo',
title: getTitle('Vimeo'),
icon: _icons.embedVimeoIcon,
keywords: [(0, _i18n.__)('video')],
description: (0, _i18n.__)('Embed a Vimeo video.'),
patterns: [/^https?:\/\/(www\.)?vimeo\.com\/.+/i],
attributes: {
providerNameSlug: 'vimeo',
responsive: true
}
}, {
name: 'animoto',
title: getTitle('Animoto'),
icon: _icons.embedAnimotoIcon,
description: (0, _i18n.__)('Embed an Animoto video.'),
patterns: [/^https?:\/\/(www\.)?(animoto|video214)\.com\/.+/i],
attributes: {
providerNameSlug: 'animoto',
responsive: true
}
}, {
name: 'cloudup',
title: getTitle('Cloudup'),
icon: _icons.embedContentIcon,
description: (0, _i18n.__)('Embed Cloudup content.'),
patterns: [/^https?:\/\/cloudup\.com\/.+/i],
attributes: {
providerNameSlug: 'cloudup',
responsive: true
}
}, {
// Deprecated since CollegeHumor content is now powered by YouTube.
name: 'collegehumor',
title: getTitle('CollegeHumor'),
icon: _icons.embedVideoIcon,
description: (0, _i18n.__)('Embed CollegeHumor content.'),
scope: ['block'],
patterns: [],
attributes: {
providerNameSlug: 'collegehumor',
responsive: true
}
}, {
name: 'crowdsignal',
title: getTitle('Crowdsignal'),
icon: _icons.embedContentIcon,
keywords: ['polldaddy', (0, _i18n.__)('survey')],
description: (0, _i18n.__)('Embed Crowdsignal (formerly Polldaddy) content.'),
patterns: [/^https?:\/\/((.+\.)?polldaddy\.com|poll\.fm|.+\.crowdsignal\.net|.+\.survey\.fm)\/.+/i],
attributes: {
providerNameSlug: 'crowdsignal',
responsive: true
}
}, {
name: 'dailymotion',
title: getTitle('Dailymotion'),
icon: _icons.embedDailymotionIcon,
keywords: [(0, _i18n.__)('video')],
description: (0, _i18n.__)('Embed a Dailymotion video.'),
patterns: [/^https?:\/\/(www\.)?dailymotion\.com\/.+/i],
attributes: {
providerNameSlug: 'dailymotion',
responsive: true
}
}, {
name: 'imgur',
title: getTitle('Imgur'),
icon: _icons.embedPhotoIcon,
description: (0, _i18n.__)('Embed Imgur content.'),
patterns: [/^https?:\/\/(.+\.)?imgur\.com\/.+/i],
attributes: {
providerNameSlug: 'imgur',
responsive: true
}
}, {
name: 'issuu',
title: getTitle('Issuu'),
icon: _icons.embedContentIcon,
description: (0, _i18n.__)('Embed Issuu content.'),
patterns: [/^https?:\/\/(www\.)?issuu\.com\/.+/i],
attributes: {
providerNameSlug: 'issuu',
responsive: true
}
}, {
name: 'kickstarter',
title: getTitle('Kickstarter'),
icon: _icons.embedContentIcon,
description: (0, _i18n.__)('Embed Kickstarter content.'),
patterns: [/^https?:\/\/(www\.)?kickstarter\.com\/.+/i, /^https?:\/\/kck\.st\/.+/i],
attributes: {
providerNameSlug: 'kickstarter',
responsive: true
}
}, {
name: 'mixcloud',
title: getTitle('Mixcloud'),
icon: _icons.embedAudioIcon,
keywords: [(0, _i18n.__)('music'), (0, _i18n.__)('audio')],
description: (0, _i18n.__)('Embed Mixcloud content.'),
patterns: [/^https?:\/\/(www\.)?mixcloud\.com\/.+/i],
attributes: {
providerNameSlug: 'mixcloud',
responsive: true
}
}, {
name: 'pocket-casts',
title: getTitle('Pocket Casts'),
icon: _icons.embedPocketCastsIcon,
keywords: [(0, _i18n.__)('podcast'), (0, _i18n.__)('audio')],
description: (0, _i18n.__)('Embed a podcast player from Pocket Casts.'),
patterns: [/^https:\/\/pca.st\/\w+/i],
attributes: {
providerNameSlug: 'pocket-casts',
responsive: true
}
}, {
name: 'reddit',
title: getTitle('Reddit'),
icon: _icons.embedRedditIcon,
description: (0, _i18n.__)('Embed a Reddit thread.'),
patterns: [/^https?:\/\/(www\.)?reddit\.com\/.+/i],
attributes: {
providerNameSlug: 'reddit',
responsive: true
}
}, {
name: 'reverbnation',
title: getTitle('ReverbNation'),
icon: _icons.embedAudioIcon,
description: (0, _i18n.__)('Embed ReverbNation content.'),
patterns: [/^https?:\/\/(www\.)?reverbnation\.com\/.+/i],
attributes: {
providerNameSlug: 'reverbnation',
responsive: true
}
}, {
name: 'scribd',
title: getTitle('Scribd'),
icon: _icons.embedContentIcon,
description: (0, _i18n.__)('Embed Scribd content.'),
patterns: [/^https?:\/\/(www\.)?scribd\.com\/.+/i],
attributes: {
providerNameSlug: 'scribd',
responsive: true
}
}, {
name: 'smugmug',
title: getTitle('SmugMug'),
icon: _icons.embedPhotoIcon,
description: (0, _i18n.__)('Embed SmugMug content.'),
patterns: [/^https?:\/\/(.+\.)?smugmug\.com\/.*/i],
attributes: {
providerNameSlug: 'smugmug',
previewable: false,
responsive: true
}
}, {
name: 'speaker-deck',
title: getTitle('Speaker Deck'),
icon: _icons.embedContentIcon,
description: (0, _i18n.__)('Embed Speaker Deck content.'),
patterns: [/^https?:\/\/(www\.)?speakerdeck\.com\/.+/i],
attributes: {
providerNameSlug: 'speaker-deck',
responsive: true
}
}, {
name: 'tiktok',
title: getTitle('TikTok'),
icon: _icons.embedVideoIcon,
keywords: [(0, _i18n.__)('video')],
description: (0, _i18n.__)('Embed a TikTok video.'),
patterns: [/^https?:\/\/(www\.)?tiktok\.com\/.+/i],
attributes: {
providerNameSlug: 'tiktok',
responsive: true
}
}, {
name: 'ted',
title: getTitle('TED'),
icon: _icons.embedVideoIcon,
description: (0, _i18n.__)('Embed a TED video.'),
patterns: [/^https?:\/\/(www\.|embed\.)?ted\.com\/.+/i],
attributes: {
providerNameSlug: 'ted',
responsive: true
}
}, {
name: 'tumblr',
title: getTitle('Tumblr'),
icon: _icons.embedTumblrIcon,
keywords: [(0, _i18n.__)('social')],
description: (0, _i18n.__)('Embed a Tumblr post.'),
patterns: [/^https?:\/\/(.+)\.tumblr\.com\/.+/i],
attributes: {
providerNameSlug: 'tumblr',
responsive: true
}
}, {
name: 'videopress',
title: getTitle('VideoPress'),
icon: _icons.embedVideoIcon,
keywords: [(0, _i18n.__)('video')],
description: (0, _i18n.__)('Embed a VideoPress video.'),
patterns: [/^https?:\/\/videopress\.com\/.+/i],
attributes: {
providerNameSlug: 'videopress',
responsive: true
}
}, {
name: 'wordpress-tv',
title: getTitle('WordPress.tv'),
icon: _icons.embedVideoIcon,
description: (0, _i18n.__)('Embed a WordPress.tv video.'),
patterns: [/^https?:\/\/wordpress\.tv\/.+/i],
attributes: {
providerNameSlug: 'wordpress-tv',
responsive: true
}
}, {
name: 'amazon-kindle',
title: getTitle('Amazon Kindle'),
icon: _icons.embedAmazonIcon,
keywords: [(0, _i18n.__)('ebook')],
description: (0, _i18n.__)('Embed Amazon Kindle content.'),
patterns: [/^https?:\/\/([a-z0-9-]+\.)?(amazon|amzn)(\.[a-z]{2,4})+\/.+/i, /^https?:\/\/(www\.)?(a\.co|z\.cn)\/.+/i],
attributes: {
providerNameSlug: 'amazon-kindle'
}
}, {
name: 'pinterest',
title: getTitle('Pinterest'),
icon: _icons.embedPinterestIcon,
keywords: [(0, _i18n.__)('social'), (0, _i18n.__)('bookmark')],
description: (0, _i18n.__)('Embed Pinterest pins, boards, and profiles.'),
patterns: [/^https?:\/\/([a-z]{2}|www)\.pinterest\.com(\.(au|mx))?\/.*/i],
attributes: {
providerNameSlug: 'pinterest'
}
}, {
name: 'wolfram-cloud',
title: getTitle('Wolfram'),
icon: _icons.embedWolframIcon,
description: (0, _i18n.__)('Embed Wolfram notebook content.'),
patterns: [/^https?:\/\/(www\.)?wolframcloud\.com\/obj\/.+/i],
attributes: {
providerNameSlug: 'wolfram-cloud',
responsive: true
}
}, {
name: 'bluesky',
title: getTitle('Bluesky'),
icon: _icons.embedBlueskyIcon,
description: (0, _i18n.__)('Embed a Bluesky post.'),
patterns: [/^https?:\/\/bsky\.app\/profile\/.+\/post\/.+/i],
attributes: {
providerNameSlug: 'bluesky'
}
}];
/**
* Add `isActive` function to all `embed` variations, if not defined.
* `isActive` function is used to find a variation match from a created
* Block by providing its attributes.
*/
variations.forEach(variation => {
if (variation.isActive) {
return;
}
variation.isActive = (blockAttributes, variationAttributes) => blockAttributes.providerNameSlug === variationAttributes.providerNameSlug;
});
var _default = exports.default = variations;
//# sourceMappingURL=variations.js.map