Files
2024-09-17 10:43:54 -04:00

281 lines
13 KiB
JavaScript

'use strict';
var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }
function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }
(function (wpI18n, wpBlocks, wpElement, wpEditor, wpBlockEditor, wpComponents) {
var __ = wpI18n.__;
var Component = wpElement.Component,
Fragment = wpElement.Fragment;
var registerBlockType = wpBlocks.registerBlockType;
var InspectorControls = wpBlockEditor.InspectorControls,
MediaUpload = wpBlockEditor.MediaUpload,
BlockControls = wpBlockEditor.BlockControls;
var PanelBody = wpComponents.PanelBody,
SelectControl = wpComponents.SelectControl,
ToolbarGroup = wpComponents.ToolbarGroup,
TextControl = wpComponents.TextControl,
Button = wpComponents.Button,
IconButton = wpComponents.IconButton,
Placeholder = wpComponents.Placeholder;
var $ = jQuery;
var wpmfPdfEmbed = function (_Component) {
_inherits(wpmfPdfEmbed, _Component);
function wpmfPdfEmbed() {
_classCallCheck(this, wpmfPdfEmbed);
return _possibleConstructorReturn(this, (wpmfPdfEmbed.__proto__ || Object.getPrototypeOf(wpmfPdfEmbed)).apply(this, arguments));
}
_createClass(wpmfPdfEmbed, [{
key: 'componentDidMount',
value: function componentDidMount() {
var _props = this.props,
attributes = _props.attributes,
clientId = _props.clientId;
var id = attributes.id,
embed = attributes.embed,
target = attributes.target,
width = attributes.width,
height = attributes.height;
this.doPdfEmbed(id, embed, target, width, height, clientId);
}
}, {
key: 'componentDidUpdate',
value: function componentDidUpdate(prevProps) {
var _props2 = this.props,
attributes = _props2.attributes,
clientId = _props2.clientId;
var id = attributes.id,
embed = attributes.embed,
target = attributes.target,
width = attributes.width,
height = attributes.height;
if (attributes.embed != prevProps.attributes.embed || attributes.id != prevProps.attributes.id || attributes.width != prevProps.attributes.width || attributes.height != prevProps.attributes.height) {
this.doPdfEmbed(id, embed, target, width, height, clientId);
}
}
}, {
key: 'doPdfEmbed',
value: function doPdfEmbed(id, embed, target, width, height, clientId) {
var $container = $('#block-' + clientId + ' .wpmf_block_pdf_wrap');
fetch(wpmf_pdf_blocks.vars.ajaxurl + ('?action=wpmf_load_pdf_embed&id=' + id + '&embed=' + embed + '&target=' + target + '&width=' + width + '&height=' + height + '&wpmf_nonce=' + wpmf_pdf_blocks.vars.wpmf_nonce)).then(function (res) {
return res.json();
}).then(function (result) {
if (result.status) {
$container.html(result.html);
if($container.find('.wpmf-pdfemb-viewer').length) {
$container.find('.wpmf-pdfemb-viewer').pdfEmbedder();
}
}
},
// errors
function (error) {});
}
}, {
key: 'render',
value: function render() {
var _props3 = this.props,
attributes = _props3.attributes,
setAttributes = _props3.setAttributes,
className = _props3.className;
var id = attributes.id,
embed = attributes.embed,
target = attributes.target,
width = attributes.width,
height = attributes.height;
var controls = React.createElement(
BlockControls,
null,
id !== 0 && React.createElement(
ToolbarGroup,
null,
React.createElement(MediaUpload, {
onSelect: function onSelect(file) {
return setAttributes({ id: parseInt(file.id) });
},
accept: 'application/pdf',
allowedTypes: 'application/pdf',
render: function render(_ref) {
var open = _ref.open;
return React.createElement(IconButton, {
className: 'components-toolbar__control wpmf-pdf-button',
label: __('Edit', 'wpmf'),
icon: 'edit',
onClick: open
});
}
})
)
);
var pdf_shortcode = '[wpmfpdf';
pdf_shortcode += ' id="' + id + '"';
pdf_shortcode += ' embed="' + embed + '"';
pdf_shortcode += ' target="' + target + '"';
if (width !== '') {
pdf_shortcode += ' width="' + width + '"';
}
if (height !== '') {
pdf_shortcode += ' height="' + height + '"';
}
pdf_shortcode += ']';
if (id == 0) {
return React.createElement(
Placeholder,
{
icon: 'pdf',
label: __('WP Media Folder PDF Embed', 'wpmf'),
instructions: __('Select a PDF file from your media library.', 'wpmf'),
className: className
},
React.createElement(MediaUpload, {
onSelect: function onSelect(file) {
return setAttributes({ id: parseInt(file.id) });
},
accept: 'application/pdf',
allowedTypes: 'application/pdf',
render: function render(_ref2) {
var open = _ref2.open;
return React.createElement(
Button,
{
islarge: 'true',
className: 'is-tertiary editor-media-placeholder__button wpmfLibrary',
onClick: open
},
__('Add PDF', 'wpmf')
);
}
})
);
}
return React.createElement(
Fragment,
null,
React.createElement(
'div',
{ className: 'wp-block-shortcode' },
id !== 0 && React.createElement(
'div',
{ className: 'wpmf-pdf-block' },
React.createElement(
InspectorControls,
null,
React.createElement(
PanelBody,
{ title: __('PDF Settings', 'wpmf') },
React.createElement(SelectControl, {
label: __('Embed', 'wpmf'),
value: embed,
options: [{ label: __('On', 'wpmf'), value: 1 }, { label: __('Off', 'wpmf'), value: 0 }],
onChange: function onChange(value) {
return setAttributes({ embed: parseInt(value) });
}
}),
React.createElement(SelectControl, {
label: __('Target', 'wpmf'),
value: target,
options: [{ label: __('Same Window', 'wpmf'), value: '' }, { label: __('New Window', 'wpmf'), value: '_blank' }],
onChange: function onChange(value) {
return setAttributes({ target: value });
}
}),
React.createElement(TextControl, {
label: __('Width', 'wpmf'),
value: width,
onChange: function onChange(value) {
return setAttributes({ width: value });
}
}),
React.createElement(TextControl, {
className: 'wpmf_pdf_embed_shortcode_input',
label: __('Height', 'wpmf'),
value: height,
onChange: function onChange(value) {
return setAttributes({ height: value });
}
})
)
),
React.createElement(TextControl, {
value: pdf_shortcode,
className: 'wpmf_pdf_value',
autoComplete: 'off',
readOnly: true
}),
id !== 0 && React.createElement('div', { className: 'wpmf_block_pdf_wrap' })
)
),
controls
);
}
}]);
return wpmfPdfEmbed;
}(Component);
registerBlockType('wpmf/pdfembed', {
title: wpmf_pdf_blocks.l18n.block_pdf_title,
icon: 'media-code',
category: 'wp-media-folder',
attributes: {
id: {
type: 'number',
default: 0
},
embed: {
type: 'number',
default: 1
},
target: {
type: 'string',
default: ''
},
width: {
type: 'string',
default: ''
},
height: {
type: 'string',
default: ''
}
},
edit: wpmfPdfEmbed,
save: function save(_ref3) {
var attributes = _ref3.attributes;
var id = attributes.id,
embed = attributes.embed,
target = attributes.target,
width = attributes.width,
height = attributes.height;
var pdf_shortcode = '[wpmfpdf';
pdf_shortcode += ' id="' + id + '"';
pdf_shortcode += ' embed="' + embed + '"';
pdf_shortcode += ' target="' + target + '"';
if (width !== '') {
pdf_shortcode += ' width="' + width + '"';
}
if (height !== '') {
pdf_shortcode += ' height="' + height + '"';
}
pdf_shortcode += ']';
return pdf_shortcode;
}
});
})(wp.i18n, wp.blocks, wp.element, wp.editor, wp.blockEditor, wp.components);