', {
class: classes.videoWrapper
}),
$playIcon = $activeSlide.children('.' + classes.playButton);
var videoType, apiProvider;
$videoContainer.append($videoWrapper);
$activeSlide.append($videoContainer);
if (-1 !== videoURL.indexOf('vimeo.com')) {
videoType = 'vimeo';
apiProvider = elementorFrontend.utils.vimeo;
} else if (videoURL.match(/^(?:https?:\/\/)?(?:www\.)?(?:m\.)?(?:youtu\.be\/|youtube\.com)/)) {
videoType = 'youtube';
apiProvider = elementorFrontend.utils.youtube;
}
var videoID = apiProvider.getVideoIDFromURL(videoURL);
apiProvider.onApiReady(function (apiObject) {
if ('youtube' === videoType) {
_this4.prepareYTVideo(apiObject, videoID, $videoContainer, $videoWrapper, $playIcon);
} else if ('vimeo' === videoType) {
_this4.prepareVimeoVideo(apiObject, videoID, $videoContainer, $videoWrapper, $playIcon);
}
});
$playIcon.addClass(classes.playing).removeClass(classes.hidden);
},
prepareYTVideo: function prepareYTVideo(YT, videoID, $videoContainer, $videoWrapper, $playIcon) {
var _this5 = this;
var classes = this.getSettings('classes'),
$videoPlaceholderElement = jQuery('
');
var startStateCode = YT.PlayerState.PLAYING;
$videoWrapper.append($videoPlaceholderElement); // Since version 67, Chrome doesn't fire the `PLAYING` state at start time
if (window.chrome) {
startStateCode = YT.PlayerState.UNSTARTED;
}
$videoContainer.addClass('elementor-loading' + ' ' + classes.invisible);
this.player = new YT.Player($videoPlaceholderElement[0], {
videoId: videoID,
events: {
onReady: function onReady() {
$playIcon.addClass(classes.hidden);
$videoContainer.removeClass(classes.invisible);
_this5.player.playVideo();
},
onStateChange: function onStateChange(event) {
if (event.data === startStateCode) {
$videoContainer.removeClass('elementor-loading' + ' ' + classes.invisible);
}
}
},
playerVars: {
controls: 0,
rel: 0
}
});
},
prepareVimeoVideo: function prepareVimeoVideo(Vimeo, videoId, $videoContainer, $videoWrapper, $playIcon) {
var classes = this.getSettings('classes'),
vimeoOptions = {
id: videoId,
autoplay: true,
transparent: false,
playsinline: false
};
this.player = new Vimeo.Player($videoWrapper, vimeoOptions);
this.player.ready().then(function () {
$playIcon.addClass(classes.hidden);
$videoContainer.removeClass(classes.invisible);
});
},
setEntranceAnimation: function setEntranceAnimation(animation) {
animation = animation || elementorFrontend.getCurrentDeviceSetting(this.getSettings('modalOptions'), 'entranceAnimation');
var $widgetMessage = this.getModal().getElements('message');
if (this.oldAnimation) {
$widgetMessage.removeClass(this.oldAnimation);
}
this.oldAnimation = animation;
if (animation) {
$widgetMessage.addClass('animated ' + animation);
}
},
openSlideshow: function openSlideshow(slideshowID, initialSlideURL) {
var $allSlideshowLinks = jQuery(this.getSettings('selectors.links')).filter(function (index, element) {
var $element = jQuery(element);
return slideshowID === element.dataset.elementorLightboxSlideshow && !$element.parent('.swiper-slide-duplicate').length && !$element.parents('.slick-cloned').length;
});
var slides = [];
var initialSlideIndex = 0;
$allSlideshowLinks.each(function () {
var slideVideo = this.dataset.elementorLightboxVideo;
var slideIndex = this.dataset.elementorLightboxIndex;
if (undefined === slideIndex) {
slideIndex = $allSlideshowLinks.index(this);
}
if (initialSlideURL === this.href || slideVideo && initialSlideURL === slideVideo) {
initialSlideIndex = slideIndex;
}
var slideData = {
image: this.href,
index: slideIndex,
title: this.dataset.elementorLightboxTitle,
description: this.dataset.elementorLightboxDescription
};
if (slideVideo) {
slideData.video = slideVideo;
}
slides.push(slideData);
});
slides.sort(function (a, b) {
return a.index - b.index;
});
this.showModal({
type: 'slideshow',
id: slideshowID,
modalOptions: {
id: 'elementor-lightbox-slideshow-' + slideshowID
},
slideshow: {
slides: slides,
swiper: {
initialSlide: +initialSlideIndex
}
}
});
},
onSlideChange: function onSlideChange() {
this.getSlide('prev').add(this.getSlide('next')).add(this.getSlide('active')).find('.' + this.getSettings('classes.videoWrapper')).remove();
this.playSlideVideo();
this.updateFooterText();
}
});
/***/ }),
/***/ "../assets/dev/js/frontend/utils/lightbox/screenfull.js":
/*!**************************************************************!*\
!*** ../assets/dev/js/frontend/utils/lightbox/screenfull.js ***!
\**************************************************************/
/*! unknown exports (runtime-defined) */
/*! runtime requirements: module, __webpack_require__ */
/*! CommonJS bailout: module.exports is used directly at 13:52-66 */
/*! CommonJS bailout: module.exports is used directly at 104:6-20 */
/*! CommonJS bailout: module.exports is used directly at 138:4-18 */
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var _interopRequireDefault = __webpack_require__(/*! @babel/runtime-corejs2/helpers/interopRequireDefault */ "../node_modules/@babel/runtime-corejs2/helpers/interopRequireDefault.js");
var _defineProperties = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/object/define-properties */ "../node_modules/@babel/runtime-corejs2/core-js/object/define-properties.js"));
var _promise = _interopRequireDefault(__webpack_require__(/*! @babel/runtime-corejs2/core-js/promise */ "../node_modules/@babel/runtime-corejs2/core-js/promise.js"));
(function () {
'use strict';
var document = typeof window !== 'undefined' && typeof window.document !== 'undefined' ? window.document : {};
var isCommonjs = true && module.exports;
var fn = function () {
var val;
var fnMap = [['requestFullscreen', 'exitFullscreen', 'fullscreenElement', 'fullscreenEnabled', 'fullscreenchange', 'fullscreenerror'], // New WebKit
['webkitRequestFullscreen', 'webkitExitFullscreen', 'webkitFullscreenElement', 'webkitFullscreenEnabled', 'webkitfullscreenchange', 'webkitfullscreenerror'], // Old WebKit
['webkitRequestFullScreen', 'webkitCancelFullScreen', 'webkitCurrentFullScreenElement', 'webkitCancelFullScreen', 'webkitfullscreenchange', 'webkitfullscreenerror'], ['mozRequestFullScreen', 'mozCancelFullScreen', 'mozFullScreenElement', 'mozFullScreenEnabled', 'mozfullscreenchange', 'mozfullscreenerror'], ['msRequestFullscreen', 'msExitFullscreen', 'msFullscreenElement', 'msFullscreenEnabled', 'MSFullscreenChange', 'MSFullscreenError']];
var i = 0;
var l = fnMap.length;
var ret = {};
for (; i < l; i++) {
val = fnMap[i];
if (val && val[1] in document) {
var valLength = val.length;
for (i = 0; i < valLength; i++) {
ret[fnMap[0][i]] = val[i];
}
return ret;
}
}
return false;
}();
var eventNameMap = {
change: fn.fullscreenchange,
error: fn.fullscreenerror
};
var screenfull = {
request: function request(element) {
return new _promise.default(function (resolve, reject) {
var onFullScreenEntered = function () {
this.off('change', onFullScreenEntered);
resolve();
}.bind(this);
this.on('change', onFullScreenEntered);
element = element || document.documentElement;
_promise.default.resolve(element[fn.requestFullscreen]()).catch(reject);
}.bind(this));
},
exit: function exit() {
return new _promise.default(function (resolve, reject) {
if (!this.isFullscreen) {
resolve();
return;
}
var onFullScreenExit = function () {
this.off('change', onFullScreenExit);
resolve();
}.bind(this);
this.on('change', onFullScreenExit);
_promise.default.resolve(document[fn.exitFullscreen]()).catch(reject);
}.bind(this));
},
toggle: function toggle(element) {
return this.isFullscreen ? this.exit() : this.request(element);
},
onchange: function onchange(callback) {
this.on('change', callback);
},
onerror: function onerror(callback) {
this.on('error', callback);
},
on: function on(event, callback) {
var eventName = eventNameMap[event];
if (eventName) {
document.addEventListener(eventName, callback, false);
}
},
off: function off(event, callback) {
var eventName = eventNameMap[event];
if (eventName) {
document.removeEventListener(eventName, callback, false);
}
},
raw: fn
};
if (!fn) {
if (isCommonjs) {
module.exports = {
isEnabled: false
};
} else {
window.screenfull = {
isEnabled: false
};
}
return;
}
(0, _defineProperties.default)(screenfull, {
isFullscreen: {
get: function get() {
return Boolean(document[fn.fullscreenElement]);
}
},
element: {
enumerable: true,
get: function get() {
return document[fn.fullscreenElement];
}
},
isEnabled: {
enumerable: true,
get: function get() {
// Coerce to boolean in case of old WebKit
return Boolean(document[fn.fullscreenEnabled]);
}
}
});
if (isCommonjs) {
module.exports = screenfull;
} else {
window.screenfull = screenfull;
}
})();
/***/ }),
/***/ "../node_modules/core-js/modules/es6.regexp.match.js":
/*!***********************************************************!*\
!*** ../node_modules/core-js/modules/es6.regexp.match.js ***!
\***********************************************************/
/*! unknown exports (runtime-defined) */
/*! runtime requirements: __webpack_require__ */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/modules/_an-object.js");
var toLength = __webpack_require__(/*! ./_to-length */ "../node_modules/core-js/modules/_to-length.js");
var advanceStringIndex = __webpack_require__(/*! ./_advance-string-index */ "../node_modules/core-js/modules/_advance-string-index.js");
var regExpExec = __webpack_require__(/*! ./_regexp-exec-abstract */ "../node_modules/core-js/modules/_regexp-exec-abstract.js");
// @@match logic
__webpack_require__(/*! ./_fix-re-wks */ "../node_modules/core-js/modules/_fix-re-wks.js")('match', 1, function (defined, MATCH, $match, maybeCallNative) {
return [
// `String.prototype.match` method
// https://tc39.github.io/ecma262/#sec-string.prototype.match
function match(regexp) {
var O = defined(this);
var fn = regexp == undefined ? undefined : regexp[MATCH];
return fn !== undefined ? fn.call(regexp, O) : new RegExp(regexp)[MATCH](String(O));
},
// `RegExp.prototype[@@match]` method
// https://tc39.github.io/ecma262/#sec-regexp.prototype-@@match
function (regexp) {
var res = maybeCallNative($match, regexp, this);
if (res.done) return res.value;
var rx = anObject(regexp);
var S = String(this);
if (!rx.global) return regExpExec(rx, S);
var fullUnicode = rx.unicode;
rx.lastIndex = 0;
var A = [];
var n = 0;
var result;
while ((result = regExpExec(rx, S)) !== null) {
var matchStr = String(result[0]);
A[n] = matchStr;
if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);
n++;
}
return n === 0 ? null : A;
}
];
});
/***/ }),
/***/ "../node_modules/core-js/modules/es6.regexp.replace.js":
/*!*************************************************************!*\
!*** ../node_modules/core-js/modules/es6.regexp.replace.js ***!
\*************************************************************/
/*! unknown exports (runtime-defined) */
/*! runtime requirements: __webpack_require__ */
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
var anObject = __webpack_require__(/*! ./_an-object */ "../node_modules/core-js/modules/_an-object.js");
var toObject = __webpack_require__(/*! ./_to-object */ "../node_modules/core-js/modules/_to-object.js");
var toLength = __webpack_require__(/*! ./_to-length */ "../node_modules/core-js/modules/_to-length.js");
var toInteger = __webpack_require__(/*! ./_to-integer */ "../node_modules/core-js/modules/_to-integer.js");
var advanceStringIndex = __webpack_require__(/*! ./_advance-string-index */ "../node_modules/core-js/modules/_advance-string-index.js");
var regExpExec = __webpack_require__(/*! ./_regexp-exec-abstract */ "../node_modules/core-js/modules/_regexp-exec-abstract.js");
var max = Math.max;
var min = Math.min;
var floor = Math.floor;
var SUBSTITUTION_SYMBOLS = /\$([$&`']|\d\d?|<[^>]*>)/g;
var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&`']|\d\d?)/g;
var maybeToString = function (it) {
return it === undefined ? it : String(it);
};
// @@replace logic
__webpack_require__(/*! ./_fix-re-wks */ "../node_modules/core-js/modules/_fix-re-wks.js")('replace', 2, function (defined, REPLACE, $replace, maybeCallNative) {
return [
// `String.prototype.replace` method
// https://tc39.github.io/ecma262/#sec-string.prototype.replace
function replace(searchValue, replaceValue) {
var O = defined(this);
var fn = searchValue == undefined ? undefined : searchValue[REPLACE];
return fn !== undefined
? fn.call(searchValue, O, replaceValue)
: $replace.call(String(O), searchValue, replaceValue);
},
// `RegExp.prototype[@@replace]` method
// https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace
function (regexp, replaceValue) {
var res = maybeCallNative($replace, regexp, this, replaceValue);
if (res.done) return res.value;
var rx = anObject(regexp);
var S = String(this);
var functionalReplace = typeof replaceValue === 'function';
if (!functionalReplace) replaceValue = String(replaceValue);
var global = rx.global;
if (global) {
var fullUnicode = rx.unicode;
rx.lastIndex = 0;
}
var results = [];
while (true) {
var result = regExpExec(rx, S);
if (result === null) break;
results.push(result);
if (!global) break;
var matchStr = String(result[0]);
if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);
}
var accumulatedResult = '';
var nextSourcePosition = 0;
for (var i = 0; i < results.length; i++) {
result = results[i];
var matched = String(result[0]);
var position = max(min(toInteger(result.index), S.length), 0);
var captures = [];
// NOTE: This is equivalent to
// captures = result.slice(1).map(maybeToString)
// but for some reason `nativeSlice.call(result, 1, result.length)` (called in
// the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and
// causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.
for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));
var namedCaptures = result.groups;
if (functionalReplace) {
var replacerArgs = [matched].concat(captures, position, S);
if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);
var replacement = String(replaceValue.apply(undefined, replacerArgs));
} else {
replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);
}
if (position >= nextSourcePosition) {
accumulatedResult += S.slice(nextSourcePosition, position) + replacement;
nextSourcePosition = position + matched.length;
}
}
return accumulatedResult + S.slice(nextSourcePosition);
}
];
// https://tc39.github.io/ecma262/#sec-getsubstitution
function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {
var tailPos = position + matched.length;
var m = captures.length;
var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;
if (namedCaptures !== undefined) {
namedCaptures = toObject(namedCaptures);
symbols = SUBSTITUTION_SYMBOLS;
}
return $replace.call(replacement, symbols, function (match, ch) {
var capture;
switch (ch.charAt(0)) {
case '$': return '$';
case '&': return matched;
case '`': return str.slice(0, position);
case "'": return str.slice(tailPos);
case '<':
capture = namedCaptures[ch.slice(1, -1)];
break;
default: // \d\d?
var n = +ch;
if (n === 0) return match;
if (n > m) {
var f = floor(n / 10);
if (f === 0) return match;
if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);
return match;
}
capture = captures[n - 1];
}
return capture === undefined ? '' : capture;
});
}
});
/***/ })
}]);
//# sourceMappingURL=lightbox.48b7d7dfa0c8ff9ab7ae.bundle.js.map@font-face{font-family:piotnet;src:url(../../fonts/piotnet.eot);src:url(../../fonts/piotnet.eot?#iefix) format("embedded-opentype"),url(../../fonts/piotnet.woff) format("woff"),url(../../fonts/piotnet.ttf) format("truetype"),url(../../fonts/piotnet.svg#piotnetgrid) format("svg");font-weight:400;font-style:normal}@font-face{font-family:piotnet-widgets;src:url(../../fonts/widgets.eot);src:url(../../fonts/widgets.eot?#iefix) format("embedded-opentype"),url(../../fonts/widgets.woff) format("woff"),url(../../fonts/widgets.ttf) format("truetype"),url(../../fonts/widgets.svg#piotnetgrid) format("svg");font-weight:400;font-style:normal}[class*=icon-w-],[class^=icon-w-]{font-family:piotnet-widgets!important;speak:never;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.icon-w-form:before{content:"\e909"}.icon-w-next-step:before{content:"\e90a"}.icon-w-prev-step:before{content:"\e90b"}.icon-w-booking:before{content:"\e900"}.icon-w-button:before{content:"\e901"}.icon-w-field:before{content:"\e902"}.icon-w-form-entries:before{content:"\e903"}.icon-w-form-step:before{content:"\e904"}.icon-w-lost-password:before{content:"\e905"}.icon-w-multi-step-form:before{content:"\e906"}.icon-w-preview:before{content:"\e907"}.icon-w-woocommerce-checkout:before{content:"\e908"}.elementor-control-pafe_responsive_background_color.elementor-control-type-color>.elementor-control-content>.elementor-control-field>.elementor-control-title{width:60px}.elementor-panel .elementor-tab-control-tab_pafe{height:59px;transform:translateY(2px)}.elementor-panel .elementor-tab-control-tab_pafe a:before{display:inline-block;font-family:piotnet!important;font-style:normal;font-weight:400;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;content:"\e900"}.forms-field-shortcode-edit-post.elementor-control-content{-ms-flex-wrap:wrap;flex-wrap:wrap}.forms-field-shortcode-edit-post .elementor-control-content .elementor-control-title{margin-bottom:10px!important}.pafe-ajax-active-campaign-list,.pafe-getresponse-custom-fields__inner,.pafe-getresponse-list__inner,.pafe-sendinblue-item{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:center;align-items:center}.pafe-active-campaign-list{margin-top:10px}button.pafe-admin-button-ajax i{display:none}button.pafe-admin-button-ajax.elementor-button.elementor-button-default.loading i{display:inline-block}.pafe-mailchimp-list__item{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:center;align-items:center}.elementor-control-mailchimp_get_merge_fields i{display:none}.elementor-control-mailchimp_get_merge_fields.loading i{display:inline-block}.data-mailchimp-merge-field__inner,.piotnet-mailchimp-api__inner{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:center;align-items:center}.mailchimp-fields-title,.mailchimp-group-title{margin-bottom:5px;font-weight:700}.piotnet-button-mailpoet-get-fields i{display:none}button.elementor-button.elementor-button-default.piotnet-button-mailpoet-get-fields.loading i{display:-ms-inline-flexbox;display:inline-flex}.pafe-mailerlite-fields-result-item,.pafe-mailerlite-group-result-item,.piotnet-mailpoet-custom-field__inner,.piotnet-zoho-field{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:center;align-items:center}.pafe-mailerlite-group-result{margin-top:10px}.mailerlite-title{font-weight:600!important;margin-bottom:5px}.pafe-sendinblue-group-result{margin-top:10px}.pafe-sendinblue-title{font-weight:700!important;font-size:14px!important}.pafe-sendinblue-item{margin-left:10px}.pafe-convertkit-field,.pafe-convertkit-form-item,.pafe-metadata-shortcode-item,.pafe-multiselectpicklist-field,.pafe-paypal-plan-item{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:center;align-items:center}.pafe-multiselectpicklist-field{margin-left:10px;font-style:italic}.pafe-converkit-title{font-size:14px;font-weight:600;margin-bottom:10px}.piotnet-constant-contact-item,.piotnet-constant-contact-list-item{display:-ms-flexbox;display:flex;-ms-flex-pack:justify;justify-content:space-between;-ms-flex-align:center;align-items:center}.piotnet-constant-contact-list-item:first-child{margin-top:10px}.pafe-icon{width:28px;height:28px;display:block;margin:0 auto;background-size:contain;background-repeat:no-repeat;background-position:50%}.pafe-icon--field{background-image:url(../../icons/w-field.svg)}.pafe-icon--submit{background-image:url(../../icons/w-button.svg)}.pafe-icon--multi-step-form{background-image:url(../../icons/w-multi-step-form.svg)}.pafe-icon--lost-password{background-image:url(../../icons/w-lost-password.svg)}.pafe-icon--preview{background-image:url(../../icons/w-preview.svg)}.pafe-icon--booking{background-image:url(../../icons/w-booking.svg)}.pafe-icon--form-entries{background-image:url(../../icons/w-form-entries.svg)}.pafe-icon--woocommerce-checkout{background-image:url(../../icons/w-woocommerce-checkout.svg)}.pafe-dynamic-tags{display:inline-block;margin-left:5px;position:relative}.pafe-dynamic-tags__button{padding:3px 5px;font-size:10px;background:#70d8f6;color:#fff;cursor:pointer;border-radius:2px}.pafe-dynamic-tags__menu{display:none;position:absolute;top:20px;left:0;width:200px;max-height:300px;overflow-y:auto;font-size:11px;z-index:99999;background:#fff;list-style:none;margin:0;box-shadow:0 1px 10px 0 rgba(0,0,0,.1);padding:5px 0;color:#6d7882}.pafe-dynamic-tags__menu.pafe-dynamic-tags__menu--open{display:block}.pafe-dynamic-tags__menu>li>span{font-weight:700}.pafe-dynamic-tags__menu li{background:#fff}.pafe-dynamic-tags__menu li:hover{background:#f1f1f1}.pafe-dynamic-tags__menu li span{display:block;padding:5px 10px}.pafe-dynamic-tags__submenu li{cursor:pointer}.pafe-dynamic-tags__submenu li span{padding:5px 10px 5px 20px}.elementor-control-type-hidden.pafe-widget-creator-assets{display:block!important}.pafe-widget-creator-assets-folder{list-style:none;line-height:2}.pafe-widget-creator-assets-folder>li:before{content:"\f07b";font-family:Font Awesome\ 5 Free;font-weight:900;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1;margin-right:5px;font-size:16px}.pafe-widget-creator-assets-folder>li ul li{padding-left:21px}.pafe-widget-creator-assets-folder>li ul li *{vertical-align:middle}.pafe-widget-creator-assets-folder>li ul li input{margin-right:5px}.elementor-control-pafe_widget_creator_assets .elementor-control-title{line-height:1.5!important}
import { DropZone, Dialog, Checkbox } from '@elementor/app-ui';
import { Context as TemplatesContext, TemplatesProvider } from '../context/templates';
import BackButton from '../molecules/back-button';
import { useConfirmAction as useConfirmActionBase } from '@elementor/hooks';
// The hook `useConfirmAction` comes from the core plugin, so it is possible that it is not available.
const useConfirmActionFallback = ( { action } ) => ( {
runAction: action,
dialog: { isOpen: false },
} );
const useConfirmAction = useConfirmActionBase ?? useConfirmActionFallback;
export default function Import() {
const { importTemplates, action, resetActionState } = React.useContext( TemplatesContext ),
[ importedTemplate, setImportedTemplate ] = React.useState( null ),
isImport = action.current === TemplatesProvider.actions.IMPORT,
isUploading = isImport && action.loading,
hasError = isImport && action.error;
const upload = React.useCallback( ( file ) => {
if ( isUploading ) {
return;
}
readFile( file )
.then( ( fileData ) => importTemplates( { fileName: file.name, fileData } ) )
.then( ( response ) => {
// For now it show a dialog for the first template ONLY!
setImportedTemplate( response.data[ 0 ] );
} );
}, [] );
const {
runAction: uploadFile,
dialog,
checkbox,
} = useConfirmAction( {
doNotShowAgainKey: 'upload_json_warning_generic_message',
action: upload,
} );
return (
{
importedTemplate &&
);
}
function readFile( file ) {
return new Promise( ( ( resolve ) => {
const fileReader = new FileReader();
fileReader.readAsDataURL( file );
fileReader.onload = ( event ) => {
// Replace the mime type that prepended to the base64 with empty string and return a
// resolved promise only with the base64 string.
resolve( event.target.result.replace( /^[^,]+,/, '' ) );
};
} ) );
}