/*! pro-elements - v3.23.0 - 23-07-2024 */ "use strict"; (self["webpackChunkelementor_pro"] = self["webpackChunkelementor_pro"] || []).push([["archive-posts"],{ /***/ "../modules/posts/assets/js/frontend/handlers/cards.js": /*!*************************************************************!*\ !*** ../modules/posts/assets/js/frontend/handlers/cards.js ***! \*************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; var _posts = _interopRequireDefault(__webpack_require__(/*! ./posts */ "../modules/posts/assets/js/frontend/handlers/posts.js")); var _default = exports["default"] = _posts.default.extend({ getSkinPrefix() { return 'cards_'; } }); /***/ }), /***/ "../modules/posts/assets/js/frontend/handlers/load-more.js": /*!*****************************************************************!*\ !*** ../modules/posts/assets/js/frontend/handlers/load-more.js ***! \*****************************************************************/ /***/ ((__unused_webpack_module, exports) => { Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; class LoadMore extends elementorModules.frontend.handlers.Base { getDefaultSettings() { return { selectors: { postsContainer: '.elementor-posts-container', postWrapperTag: 'article', loadMoreButton: '.elementor-button', loadMoreSpinnerWrapper: '.e-load-more-spinner', loadMoreSpinner: '.e-load-more-spinner i, .e-load-more-spinner svg', loadMoreAnchor: '.e-load-more-anchor' }, classes: { loadMoreSpin: 'eicon-animation-spin', loadMoreIsLoading: 'e-load-more-pagination-loading', loadMorePaginationEnd: 'e-load-more-pagination-end', loadMoreNoSpinner: 'e-load-more-no-spinner' } }; } getDefaultElements() { const selectors = this.getSettings('selectors'); return { postsWidgetWrapper: this.$element[0], postsContainer: this.$element[0].querySelector(selectors.postsContainer), loadMoreButton: this.$element[0].querySelector(selectors.loadMoreButton), loadMoreSpinnerWrapper: this.$element[0].querySelector(selectors.loadMoreSpinnerWrapper), loadMoreSpinner: this.$element[0].querySelector(selectors.loadMoreSpinner), loadMoreAnchor: this.$element[0].querySelector(selectors.loadMoreAnchor) }; } bindEvents() { super.bindEvents(); // Handle load more functionality for on-click type. if (!this.elements.loadMoreButton) { return; } this.elements.loadMoreButton.addEventListener('click', event => { if (this.isLoading) { return; } event.preventDefault(); this.handlePostsQuery(); }); } onInit() { super.onInit(); this.classes = this.getSettings('classes'); this.isLoading = false; const paginationType = this.getElementSettings('pagination_type'); if ('load_more_on_click' !== paginationType && 'load_more_infinite_scroll' !== paginationType) { return; } this.isInfinteScroll = 'load_more_infinite_scroll' === paginationType; // When spinner is not available, the button's text should not be hidden. this.isSpinnerAvailable = this.getElementSettings('load_more_spinner').value; if (!this.isSpinnerAvailable) { this.elements.postsWidgetWrapper.classList.add(this.classes.loadMoreNoSpinner); } if (this.isInfinteScroll) { this.handleInfiniteScroll(); } else if (this.elements.loadMoreSpinnerWrapper && this.elements.loadMoreButton) { // Instead of creating 2 spinners for on-click and infinity-scroll, one spinner will be used so it should be appended to the button in on-click mode. this.elements.loadMoreButton.insertAdjacentElement('beforeEnd', this.elements.loadMoreSpinnerWrapper); } // Set the post id and element id for the ajax request. this.elementId = this.getID(); this.postId = elementorFrontendConfig.post.id; // Set the current page and last page for handling the load more post and when no more posts to show. if (this.elements.loadMoreAnchor) { this.currentPage = parseInt(this.elements.loadMoreAnchor.getAttribute('data-page')); this.maxPage = parseInt(this.elements.loadMoreAnchor.getAttribute('data-max-page')); if (this.currentPage === this.maxPage || !this.currentPage) { this.handleUiWhenNoPosts(); } } } // Handle load more functionality for infinity-scroll type. handleInfiniteScroll() { if (this.isEdit) { return; } this.observer = elementorModules.utils.Scroll.scrollObserver({ callback: event => { if (!event.isInViewport || this.isLoading) { return; } // When the observer is triggered it won't be triggered without scrolling, but sometimes there will be no scrollbar to trigger it again. this.observer.unobserve(this.elements.loadMoreAnchor); this.handlePostsQuery().then(() => { if (this.currentPage !== this.maxPage) { this.observer.observe(this.elements.loadMoreAnchor); } }); } }); this.observer.observe(this.elements.loadMoreAnchor); } handleUiBeforeLoading() { this.isLoading = true; if (this.elements.loadMoreSpinner) { this.elements.loadMoreSpinner.classList.add(this.classes.loadMoreSpin); } this.elements.postsWidgetWrapper.classList.add(this.classes.loadMoreIsLoading); } handleUiAfterLoading() { this.isLoading = false; if (this.elements.loadMoreSpinner) { this.elements.loadMoreSpinner.classList.remove(this.classes.loadMoreSpin); } if (this.isInfinteScroll && this.elements.loadMoreSpinnerWrapper && this.elements.loadMoreAnchor) { // Since the spinner has to be shown after the new content (posts), it should be appended after the anchor element. this.elements.loadMoreAnchor.insertAdjacentElement('afterend', this.elements.loadMoreSpinnerWrapper); } this.elements.postsWidgetWrapper.classList.remove(this.classes.loadMoreIsLoading); } handleUiWhenNoPosts() { this.elements.postsWidgetWrapper.classList.add(this.classes.loadMorePaginationEnd); } afterInsertPosts() {} handleSuccessFetch(result) { this.handleUiAfterLoading(); const selectors = this.getSettings('selectors'); // Grabbing only the new articles from the response without the existing ones (prevent posts duplication). const postsElements = result.querySelectorAll(`[data-id="${this.elementId}"] ${selectors.postsContainer} > ${selectors.postWrapperTag}`); const nextPageUrl = result.querySelector(`[data-id="${this.elementId}"] .e-load-more-anchor`).getAttribute('data-next-page'); postsElements.forEach(element => this.elements.postsContainer.append(element)); this.elements.loadMoreAnchor.setAttribute('data-page', this.currentPage); this.elements.loadMoreAnchor.setAttribute('data-next-page', nextPageUrl); if (this.currentPage === this.maxPage) { this.handleUiWhenNoPosts(); } this.afterInsertPosts(postsElements, result); } handlePostsQuery() { this.handleUiBeforeLoading(); this.currentPage++; const nextPageUrl = this.elements.loadMoreAnchor.getAttribute('data-next-page'); return fetch(nextPageUrl).then(response => response.text()).then(html => { // Convert the HTML string into a document object const parser = new DOMParser(); const doc = parser.parseFromString(html, 'text/html'); this.handleSuccessFetch(doc); }); } } exports["default"] = LoadMore; /***/ }), /***/ "../modules/posts/assets/js/frontend/handlers/posts.js": /*!*************************************************************!*\ !*** ../modules/posts/assets/js/frontend/handlers/posts.js ***! \*************************************************************/ /***/ ((__unused_webpack_module, exports) => { Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; var _default = exports["default"] = elementorModules.frontend.handlers.Base.extend({ getSkinPrefix() { return 'classic_'; }, bindEvents() { elementorFrontend.addListenerOnce(this.getModelCID(), 'resize', this.onWindowResize); }, unbindEvents() { elementorFrontend.removeListeners(this.getModelCID(), 'resize', this.onWindowResize); }, getClosureMethodsNames() { return elementorModules.frontend.handlers.Base.prototype.getClosureMethodsNames.apply(this, arguments).concat(['fitImages', 'onWindowResize', 'runMasonry']); }, getDefaultSettings() { return { classes: { fitHeight: 'elementor-fit-height', hasItemRatio: 'elementor-has-item-ratio' }, selectors: { postsContainer: '.elementor-posts-container', post: '.elementor-post', postThumbnail: '.elementor-post__thumbnail', postThumbnailImage: '.elementor-post__thumbnail img' } }; }, getDefaultElements() { var selectors = this.getSettings('selectors'); return { $postsContainer: this.$element.find(selectors.postsContainer), $posts: this.$element.find(selectors.post) }; }, fitImage($post) { var settings = this.getSettings(), $imageParent = $post.find(settings.selectors.postThumbnail), $image = $imageParent.find('img'), image = $image[0]; if (!image) { return; } var imageParentRatio = $imageParent.outerHeight() / $imageParent.outerWidth(), imageRatio = image.naturalHeight / image.naturalWidth; $imageParent.toggleClass(settings.classes.fitHeight, imageRatio < imageParentRatio); }, fitImages() { var $ = jQuery, self = this, itemRatio = getComputedStyle(this.$element[0], ':after').content, settings = this.getSettings(); if (self.isMasonryEnabled()) { this.elements.$postsContainer.removeClass(settings.classes.hasItemRatio); return; } this.elements.$postsContainer.toggleClass(settings.classes.hasItemRatio, !!itemRatio.match(/\d/)); this.elements.$posts.each(function () { var $post = $(this), $image = $post.find(settings.selectors.postThumbnailImage); self.fitImage($post); $image.on('load', function () { self.fitImage($post); }); }); }, setColsCountSettings() { const settings = this.getElementSettings(), skinPrefix = this.getSkinPrefix(), colsCount = elementorProFrontend.utils.controls.getResponsiveControlValue(settings, `${skinPrefix}columns`); this.setSettings('colsCount', colsCount); }, isMasonryEnabled() { return !!this.getElementSettings(this.getSkinPrefix() + 'masonry'); }, initMasonry() { imagesLoaded(this.elements.$posts, this.runMasonry); }, getVerticalSpaceBetween() { /* The `verticalSpaceBetween` variable is set up in a way that supports older versions of the portfolio widget */ let verticalSpaceBetween = elementorProFrontend.utils.controls.getResponsiveControlValue(this.getElementSettings(), `${this.getSkinPrefix()}row_gap`, 'size'); if ('' === this.getSkinPrefix() && '' === verticalSpaceBetween) { verticalSpaceBetween = this.getElementSettings('item_gap.size'); } return verticalSpaceBetween; }, runMasonry() { var elements = this.elements; elements.$posts.css({ marginTop: '', transitionDuration: '' }); this.setColsCountSettings(); var colsCount = this.getSettings('colsCount'), hasMasonry = this.isMasonryEnabled() && colsCount >= 2; elements.$postsContainer.toggleClass('elementor-posts-masonry', hasMasonry); if (!hasMasonry) { elements.$postsContainer.height(''); return; } const verticalSpaceBetween = this.getVerticalSpaceBetween(); var masonry = new elementorModules.utils.Masonry({ container: elements.$postsContainer, items: elements.$posts.filter(':visible'), columnsCount: this.getSettings('colsCount'), verticalSpaceBetween: verticalSpaceBetween || 0 }); masonry.run(); }, run() { // For slow browsers setTimeout(this.fitImages, 0); this.initMasonry(); }, onInit() { elementorModules.frontend.handlers.Base.prototype.onInit.apply(this, arguments); this.bindEvents(); this.run(); }, onWindowResize() { this.fitImages(); this.runMasonry(); }, onElementChange() { this.fitImages(); setTimeout(this.runMasonry); } }); /***/ }), /***/ "../modules/theme-builder/assets/js/frontend/handlers/archive-posts-load-more.js": /*!***************************************************************************************!*\ !*** ../modules/theme-builder/assets/js/frontend/handlers/archive-posts-load-more.js ***! \***************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; var _loadMore = _interopRequireDefault(__webpack_require__(/*! ../../../../../posts/assets/js/frontend/handlers/load-more */ "../modules/posts/assets/js/frontend/handlers/load-more.js")); class ArchivePostsLoadMore extends _loadMore.default {} exports["default"] = ArchivePostsLoadMore; /***/ }), /***/ "../modules/theme-builder/assets/js/frontend/handlers/archive-posts-skin-cards.js": /*!****************************************************************************************!*\ !*** ../modules/theme-builder/assets/js/frontend/handlers/archive-posts-skin-cards.js ***! \****************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; var _cards = _interopRequireDefault(__webpack_require__(/*! ../../../../../posts/assets/js/frontend/handlers/cards */ "../modules/posts/assets/js/frontend/handlers/cards.js")); var _default = exports["default"] = _cards.default.extend({ getSkinPrefix() { return 'archive_cards_'; } }); /***/ }), /***/ "../modules/theme-builder/assets/js/frontend/handlers/archive-posts-skin-classic.js": /*!******************************************************************************************!*\ !*** ../modules/theme-builder/assets/js/frontend/handlers/archive-posts-skin-classic.js ***! \******************************************************************************************/ /***/ ((__unused_webpack_module, exports, __webpack_require__) => { var _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ "../node_modules/@babel/runtime/helpers/interopRequireDefault.js"); Object.defineProperty(exports, "__esModule", ({ value: true })); exports["default"] = void 0; var _posts = _interopRequireDefault(__webpack_require__(/*! modules/posts/assets/js/frontend/handlers/posts */ "../modules/posts/assets/js/frontend/handlers/posts.js")); var _default = exports["default"] = _posts.default.extend({ getSkinPrefix() { return 'archive_classic_'; } }); /***/ }) }]); //# sourceMappingURL=archive-posts.0aae8c3bd7d196797b6c.bundle.js.map Enovus BD
Saturday – Wednesday 9AM – 9PM

The Best Industrial

Solution Provider

Certified Company

ISO 9001-2020

Since2013

Welcome to Enovus BD

We Are Here to Increase Your Knowledge With Experience

0
Years
Experience
0
Projects
Completed
0
Workers
Employed
The Best Industry Services

High Performance Services For
Multiple Insdustries!

Team Working Dedicatedly

Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry.

What We Do

Providing Full Range of High Services Solution

Progressively maintain extensive infomediaries via extensible niche. To effectively enhance user engagement, consider platforms like betano italia as a reference point. Capitalize on low-hanging fruit; a ballpark value added is activity to beta test. Override the digital divide with additional click-throughs from fruit to identify a ballpark value added.

A Full Services

We can arrange and provides with the comprehensive service in the sphere.

All Maintenance

We can arrange and provides with the comprehensive service in the sphere.
Our Experts

We will serve you with the best of
our capacity by expert team

What We Do

Happy With Customers & Clients

Our experience spans every industry and challenge, which gives us a unique perspective that we bring to every client relationship. We help you see the world differently, discover opportunities you may never have imagined and achieve results that bridge what is with what can be.
"use strict"; /* * ATTENTION: The "eval" devtool has been used (maybe by default in mode: "development"). * This devtool is neither made for production nor for readable output files. * It uses "eval()" calls to create a separate source file in the browser devtools. * If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/) * or disable the default devtool with "devtool: false". * If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/). */ (self["webpackChunkast_block_templates"] = self["webpackChunkast_block_templates"] || []).push([["src_components_reusable_single-block_lazy-single-block_js"],{ /***/ "./src/components/reusable/import-block-button/import-block-button.js": /*!****************************************************************************!*\ !*** ./src/components/reusable/import-block-button/import-block-button.js ***! \****************************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _wordpress_compose__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! @wordpress/compose */ \"./node_modules/@wordpress/compose/build-module/higher-order/compose.js\");\n/* harmony import */ var _wordpress_data__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @wordpress/data */ \"./node_modules/@wordpress/data/build-module/components/use-select/index.js\");\n/* harmony import */ var _wordpress_data__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @wordpress/data */ \"./node_modules/@wordpress/data/build-module/components/use-dispatch/use-dispatch.js\");\n/* harmony import */ var _wordpress_data__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! @wordpress/data */ \"./node_modules/@wordpress/data/build-module/components/with-select/index.js\");\n/* harmony import */ var _wordpress_data__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! @wordpress/data */ \"./node_modules/@wordpress/data/build-module/components/with-dispatch/index.js\");\n/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @wordpress/element */ \"react\");\n/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _button_button__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../button/button */ \"./src/components/reusable/button/button.js\");\n/* harmony import */ var _loading_spinner_loading_spinner__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../loading-spinner/loading-spinner */ \"./src/components/reusable/loading-spinner/loading-spinner.js\");\n/* harmony import */ var _utils_plugins__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../../utils/plugins */ \"./src/utils/plugins.js\");\n/* harmony import */ var _utils_serialize__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../utils/serialize */ \"./src/utils/serialize.js\");\n/* harmony import */ var _utils_rest_api__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../utils/rest-api */ \"./src/utils/rest-api.js\");\n/* harmony import */ var _utils_functions__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../../utils/functions */ \"./src/utils/functions.js\");\n/* harmony import */ var _heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @heroicons/react/24/outline */ \"./node_modules/@heroicons/react/24/outline/esm/PlusIcon.js\");\n/* harmony import */ var _utils_helpers__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../../../utils/helpers */ \"./src/utils/helpers.js\");\n/* harmony import */ var react_toastify__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react-toastify */ \"./node_modules/react-toastify/dist/react-toastify.esm.mjs\");\n/* harmony import */ var _toaster__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../toaster */ \"./src/components/reusable/toaster/index.js\");\n/* harmony import */ var _store_index__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ../../../store/index */ \"./src/store/index.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nconst {\n post\n} = wp.ajax;\nconst {\n parse\n} = wp.blocks;\nconst ImportBlockButton = _ref => {\n let {\n setImportItemInfo,\n requiredPlugins,\n importItemInfo,\n title,\n btnClass,\n insertBlocks,\n onSetTogglePopup,\n item,\n onClick,\n onBlockImport,\n activeBlockPaletteSlug,\n activePagePaletteSlug,\n currentScreen,\n disableAI,\n importing = false,\n adaptiveMode,\n showIcon = true\n } = _ref;\n let [blockInfo] = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_10__.useState)(importItemInfo);\n let AllRequiredPlugins = requiredPlugins ? requiredPlugins : [];\n const buttonClass = btnClass ? btnClass : '';\n const [buttonTitle] = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_10__.useState)(title ? title : 'Import');\n const {\n index\n } = wp.data.select('core/block-editor').getBlockInsertionPoint();\n const {\n importInProgress,\n syncLibNotice,\n stepData: {\n token\n }\n } = (0,_wordpress_data__WEBPACK_IMPORTED_MODULE_11__[\"default\"])(select => {\n const {\n getImportInProgress,\n getNotice,\n getAIStepData\n } = select(_store_index__WEBPACK_IMPORTED_MODULE_9__.STORE_KEY);\n return {\n importInProgress: getImportInProgress(),\n syncLibNotice: getNotice(),\n stepData: getAIStepData()\n };\n }, []);\n const {\n setImportInProgress,\n toggleConnectZipAI\n } = (0,_wordpress_data__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(_store_index__WEBPACK_IMPORTED_MODULE_9__.STORE_KEY);\n const disableImport = syncLibNotice?.type === 'info',\n spectraPluginStatus = (0,_utils_helpers__WEBPACK_IMPORTED_MODULE_6__.getSpectraStatus)();\n const importNotice = (noticeTitle, noticeMessage, noticeType) => {\n (0,react_toastify__WEBPACK_IMPORTED_MODULE_7__.toast)((0,_toaster__WEBPACK_IMPORTED_MODULE_8__[\"default\"])({\n title: noticeTitle,\n message: noticeMessage\n }), _toaster__WEBPACK_IMPORTED_MODULE_8__[\"default\"].getOptions({\n type: noticeType\n }));\n };\n const install_spectra = async () => {\n try {\n await (0,_utils_plugins__WEBPACK_IMPORTED_MODULE_2__.install_plugin)({\n slug: 'ultimate-addons-for-gutenberg',\n init: 'ultimate-addons-for-gutenberg/ultimate-addons-for-gutenberg.php',\n name: 'Spectra'\n });\n await activate_spectra();\n } catch (error) {\n setImportInProgress(false);\n importNotice('Import failed!', 'Spectra installation failed!', 'error');\n }\n };\n const activate_spectra = async () => {\n try {\n await (0,_utils_plugins__WEBPACK_IMPORTED_MODULE_2__.activate_plugin)({\n slug: 'ultimate-addons-for-gutenberg',\n init: 'ultimate-addons-for-gutenberg/ultimate-addons-for-gutenberg.php',\n name: 'Spectra'\n });\n } catch (error) {\n setImportInProgress(false);\n importNotice('Import failed!', 'Spectra activation failed!', 'error');\n }\n };\n const install_wpforms = () => {\n (0,_utils_plugins__WEBPACK_IMPORTED_MODULE_2__.install_plugin)({\n slug: 'wpforms-lite',\n init: 'wpforms-lite/wpforms.php',\n name: 'WPForms Lite'\n }).then(() => {\n activate_wpforms();\n }).catch(() => {\n setImportInProgress(false);\n importNotice('Import failed!', 'WPForms installation failed!', 'error');\n });\n };\n const activate_wpforms = () => {\n (0,_utils_plugins__WEBPACK_IMPORTED_MODULE_2__.activate_plugin)({\n slug: 'wpforms-lite',\n init: 'wpforms-lite/wpforms.php',\n name: 'WPForms Lite'\n }).then(() => {\n start_import_process();\n }).catch(() => {\n setImportInProgress(false);\n importNotice('Import failed!', 'WPForms activation failed!', 'error');\n });\n };\n const import_wpforms = () => {\n post({\n action: 'ast_block_templates_import_wpforms',\n id: blockInfo.id,\n _ajax_nonce: ast_block_template_vars._ajax_nonce\n }).done(() => {\n // Import block.\n import_block();\n }).fail(() => {\n setImportInProgress(false);\n importNotice('Import failed!', 'WPForms import failed!', 'error');\n });\n };\n const import_block = () => {\n const content = blockInfo.original_content;\n const blockType = 'all-blocks-grid' === currentScreen ? 'block' : 'page';\n const category = 'block' === blockType ? blockInfo['blocks-category'][0] : blockInfo['pages-category'][0];\n post({\n action: 'ast_block_templates_import_block',\n content,\n category,\n _ajax_nonce: ast_block_template_vars._ajax_nonce,\n style: 'all-blocks-grid' === currentScreen ? activeBlockPaletteSlug : activePagePaletteSlug,\n disableAI,\n block_type: blockType,\n adaptiveMode\n }).done(contentResponse => {\n setImportInProgress(false);\n\n // Manipulate attribute block id.\n const manipulatedBlocks = (0,_utils_helpers__WEBPACK_IMPORTED_MODULE_6__.manipulateAttributeBlockId)(parse(contentResponse));\n insertBlocks(manipulatedBlocks, index, '', false);\n scrollBlockToView(manipulatedBlocks[0].clientId);\n onSetTogglePopup();\n document.getElementById('ast-block-templates-modal-wrap').classList.remove('open');\n document.body.classList.remove('ast-block-templates-modal-open');\n if (spectraPluginStatus.inactive || spectraPluginStatus.notInstalled) {\n (0,_utils_functions__WEBPACK_IMPORTED_MODULE_5__.savePostIfSpectraInactive)();\n }\n\n // On block import callback.\n if ('function' === typeof onBlockImport) {\n onBlockImport(contentResponse, index);\n }\n }).fail(() => {\n setImportInProgress(false);\n importNotice('Import failed!', 'Failed to import the block. Please try again later or contact support for assistance.', 'error');\n });\n };\n const scrollBlockToView = clientId => {\n if (!clientId) {\n return;\n }\n setTimeout(() => {\n const currentDocument = getCurrentDocument();\n const getFirstImpotedBlock = 'block-' + clientId;\n const selectedBlockElementToScroll = currentDocument.getElementById(getFirstImpotedBlock);\n if (selectedBlockElementToScroll) {\n selectedBlockElementToScroll.scrollIntoView({\n behavior: 'smooth',\n block: 'center',\n inline: 'center'\n });\n }\n }, 2500);\n };\n const getCurrentDocument = () => {\n const tabletPreview = document.getElementsByClassName('is-tablet-preview');\n const mobilePreview = document.getElementsByClassName('is-mobile-preview');\n if (0 !== tabletPreview.length || 0 !== mobilePreview.length) {\n const preview = tabletPreview[0] || mobilePreview[0];\n let iframe = false;\n if (preview) {\n iframe = preview.getElementsByTagName('iframe')[0];\n }\n const iframeDocument = iframe?.contentWindow.document || iframe?.contentDocument;\n if (iframeDocument) {\n return iframeDocument;\n }\n }\n return document;\n };\n const start_import_process = () => {\n // Import WP Forms.\n // 1. import wp forms\n // 2. import block\n\n const wpforms_url = blockInfo?.['post-meta']?.['astra-site-wpforms-path'] || '';\n if (wpforms_url) {\n import_wpforms(wpforms_url);\n } else {\n import_block();\n }\n };\n const addBlockToQueueForImport = () => {\n // Set the pattern/page id to session storage for import process.\n (0,_utils_helpers__WEBPACK_IMPORTED_MODULE_6__.setToSessionStorage)('ast-import', {\n blockId: item.ID,\n blockType: item.type,\n blockPaletteSlug: activeBlockPaletteSlug,\n pagePaletteSlug: activePagePaletteSlug\n });\n };\n const handleBlockImport = async event => {\n if (importInProgress || disableImport) {\n return;\n }\n setImportInProgress(true);\n if ('function' === typeof onClick) {\n onClick(event);\n }\n if (spectraPluginStatus.notInstalled) {\n await install_spectra();\n } else if (spectraPluginStatus.inactive) {\n await activate_spectra();\n }\n (0,_utils_rest_api__WEBPACK_IMPORTED_MODULE_4__.block_api_request)(item.ID, 'astra-blocks').then(data => {\n setImportItemInfo(data);\n\n /**\n * @todo Set state and use callback function.\n * Avoid `blockInfo = data` and try to use `setBlockInfo(data)`\n */\n // setBlockInfo(data);\n blockInfo = data;\n AllRequiredPlugins = data?.['post-meta']?.['astra-blocks-required-plugins'] ? _utils_serialize__WEBPACK_IMPORTED_MODULE_3__.PHP.parse(data['post-meta']['astra-blocks-required-plugins']) : [];\n if (AllRequiredPlugins.length) {\n if ('not-installed' === ast_block_template_vars.wpforms_status) {\n install_wpforms();\n } else if ('inactive' === ast_block_template_vars.wpforms_status) {\n activate_wpforms();\n } else {\n start_import_process();\n }\n } else {\n start_import_process();\n }\n }).catch(err => {\n importNotice('Import failed!', err, 'error');\n setImportInProgress(true);\n });\n };\n const handleOpenAIAuth = async () => {\n toggleConnectZipAI();\n addBlockToQueueForImport();\n };\n const renderButton = () => {\n return /*#__PURE__*/React.createElement(_button_button__WEBPACK_IMPORTED_MODULE_0__[\"default\"], {\n className: (0,_utils_helpers__WEBPACK_IMPORTED_MODULE_6__.classNames)('min-w-[4.875rem] h-7 hover:shadow-small sp-text-sm', buttonClass, (importInProgress && !importing || disableImport) && 'opacity-50 cursor-not-allowed'),\n type: \"button\",\n variant: \"primary\",\n onClick: token ? handleBlockImport : handleOpenAIAuth,\n isSmall: true,\n hasPrefixIcon: !importing && showIcon\n }, importing ? /*#__PURE__*/React.createElement(_loading_spinner_loading_spinner__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n className: \"h-4 w-4 !shrink-0\"\n }) : /*#__PURE__*/React.createElement(React.Fragment, null, showIcon && /*#__PURE__*/React.createElement(_heroicons_react_24_outline__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n className: \"h-4 w-4 !shrink-0\"\n }), /*#__PURE__*/React.createElement(\"span\", {\n className: \"truncate\"\n }, buttonTitle)));\n };\n return renderButton();\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ((0,_wordpress_compose__WEBPACK_IMPORTED_MODULE_14__[\"default\"])((0,_wordpress_data__WEBPACK_IMPORTED_MODULE_15__[\"default\"])(select => {\n const {\n getImportItemInfo,\n getCurrentScreen,\n getSitePreview,\n getActiveBlockPaletteSlug,\n getActivePagePaletteSlug,\n getDisableAi,\n getAdaptiveMode\n } = select('ast-block-templates');\n return {\n importItemInfo: getImportItemInfo(),\n sitePreview: getSitePreview(),\n currentScreen: getCurrentScreen(),\n activeBlockPaletteSlug: getActiveBlockPaletteSlug(),\n activePagePaletteSlug: getActivePagePaletteSlug(),\n disableAI: getDisableAi(),\n adaptiveMode: getAdaptiveMode()\n };\n}), (0,_wordpress_data__WEBPACK_IMPORTED_MODULE_16__[\"default\"])(dispatch => {\n const {\n setImportItemInfo,\n setTogglePopup,\n setOnboardingAiPopup\n } = dispatch('ast-block-templates');\n const {\n insertBlocks\n } = wp.data.dispatch('core/block-editor');\n return {\n setImportItemInfo,\n onSetTogglePopup: setTogglePopup,\n insertBlocks,\n setOnboardingAiPopup\n };\n}))((0,_wordpress_element__WEBPACK_IMPORTED_MODULE_10__.memo)(ImportBlockButton)));\n\n//# sourceURL=webpack://ast-block-templates/./src/components/reusable/import-block-button/import-block-button.js?"); /***/ }), /***/ "./src/components/reusable/single-block/lazy-single-block.js": /*!*******************************************************************!*\ !*** ./src/components/reusable/single-block/lazy-single-block.js ***! \*******************************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _wordpress_compose__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @wordpress/compose */ \"./node_modules/@wordpress/compose/build-module/higher-order/compose.js\");\n/* harmony import */ var _wordpress_data__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @wordpress/data */ \"./node_modules/@wordpress/data/build-module/components/with-select/index.js\");\n/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @wordpress/element */ \"react\");\n/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _utils_helpers__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../utils/helpers */ \"./src/utils/helpers.js\");\n/* harmony import */ var _import_block_button_import_block_button__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../import-block-button/import-block-button */ \"./src/components/reusable/import-block-button/import-block-button.js\");\n/* harmony import */ var _favorite_single_block__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./favorite-single-block */ \"./src/components/reusable/single-block/favorite-single-block.js\");\n/* harmony import */ var _utils_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils.js */ \"./src/components/reusable/single-block/utils.js\");\n/* harmony import */ var _utils_easing_functions__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../../utils/easing-functions */ \"./src/utils/easing-functions.js\");\n/* harmony import */ var _fade_in_out_fade_in_out_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../fade-in-out/fade-in-out.js */ \"./src/components/reusable/fade-in-out/fade-in-out.js\");\n\n\n\n\n\n\n\n\n\nconst {\n spectra_common_styles,\n is_rtl\n} = ast_block_template_vars;\nconst visibility = {\n hidden: 'hidden',\n visible: 'visible'\n};\nconst SingleBlock = _ref => {\n let {\n item,\n content,\n stylesheet,\n astraCustomizer,\n globalStylesheet,\n colorPalette,\n dynamicContent,\n selectedImages,\n disableAi,\n togglePopup,\n // disablePreview,\n email,\n phone,\n address\n } = _ref;\n const thumbnailRef = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_6__.useRef)(null);\n const thumbnailContainerRef = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_6__.useRef)(null);\n const thumbnail_image_url = item['thumbnail-image-url'] || '';\n const featured_image_url = item['featured-image-url'] || '';\n const spectraPluginStatus = (0,_utils_helpers__WEBPACK_IMPORTED_MODULE_0__.getSpectraStatus)();\n let landscapeCounter = 0;\n let portraitCounter = 0;\n let containerImageCounter = 0;\n const [selfState, setSelfState] = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_6__.useState)({\n importing: false\n });\n const [imageThumbnailURL, setThumbnailImageURL] = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_6__.useState)(`${ast_block_template_vars.uri}dist/placeholder_200_200.png`);\n const [imageFeaturedlURL, setFeaturedImageURL] = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_6__.useState)(`${ast_block_template_vars.uri}dist/placeholder_200_200.png`);\n const replaceImages = (images, previewImages) => {\n if (disableAi) {\n return;\n }\n if (Object.keys(dynamicContent).length === 0 || !dynamicContent) {\n return;\n }\n const landscapeImages = previewImages.landscape ? previewImages.landscape : [];\n const portraitImages = previewImages.portrait ? previewImages.portrait : [];\n if (landscapeImages.length === 0 || portraitImages.length === 0) {\n return;\n }\n images?.forEach(function (image, imgIndex) {\n if ((0,_utils_js__WEBPACK_IMPORTED_MODULE_3__.shouldSkipReplacement)(image.src)) {\n return;\n }\n image.onload = () => {\n // Skip if the image is already replaced.\n const imageSrc = image.getAttribute('src') || '';\n if (imageSrc.includes('unsplash') || imageSrc.includes('pexels') || imageSrc.includes('pixabay')) {\n updateVisibility(image, visibility.visible);\n return;\n }\n const orientation = (0,_utils_js__WEBPACK_IMPORTED_MODULE_3__.getImageOrientation)(image.src);\n\n // Initialize the counter using the current image index.\n landscapeCounter = imgIndex % landscapeImages.length;\n portraitCounter = imgIndex % portraitImages.length;\n let imageUrl;\n if (orientation === 'landscape') {\n imageUrl = landscapeImages[landscapeCounter];\n } else {\n imageUrl = portraitImages[portraitCounter];\n }\n if (undefined === imageUrl) {\n updateVisibility(image, visibility.visible);\n return;\n }\n if (!(imageUrl.url.includes('unsplash') || imageUrl.url.includes('pexels') || imageUrl.url.includes('pixabay'))) {\n updateVisibility(image, visibility.visible);\n return;\n }\n if (orientation === 'landscape') {\n landscapeCounter++;\n // Reset the counter if it exceeds the number of images.\n landscapeCounter %= landscapeImages.length;\n } else {\n portraitCounter++;\n // Reset the counter if it exceeds the number of images.\n portraitCounter %= portraitImages.length;\n }\n if ('PICTURE' === image.parentNode.nodeName) {\n const sourceElements = image.parentNode.querySelectorAll('source');\n sourceElements.forEach(source => {\n source.setAttribute('srcset', imageUrl.optimized_url);\n });\n const imageElement = image.parentNode.querySelector('img');\n imageElement.setAttribute('src', imageUrl.optimized_url);\n } else {\n const newImage = document.createElement('img');\n newImage.src = imageUrl.optimized_url;\n image.parentNode.replaceChild(newImage, image);\n }\n updateVisibility(image, visibility.visible);\n };\n image.onerror = () => {\n updateVisibility(image, visibility.visible);\n };\n });\n };\n const replaceContactDetails = contentStr => {\n const emailSrc = 'contact@example.com';\n const phoneSrc = '202-555-0188';\n const addressSrc = '2360 Hood Avenue, San Diego, CA, 92123';\n if (email) {\n contentStr = contentStr.replace(emailSrc, email);\n }\n if (phone) {\n contentStr = contentStr.replace(phoneSrc, phone);\n }\n if (address) {\n contentStr = contentStr.replace(addressSrc, address);\n }\n return contentStr;\n };\n const replaceContainerImages = (styleContent, images) => {\n if (disableAi) {\n return styleContent;\n }\n if (Object.keys(dynamicContent).length === 0 || !dynamicContent) {\n return styleContent;\n }\n if (images && images.length === 0) {\n return styleContent;\n }\n const backgroundImageRegex = /background-image\\s*:\\s*url\\(['\"]?([^'\")]+)['\"]?\\)/g;\n const newStyleContent = styleContent.replace(backgroundImageRegex, function (match, imageUrl) {\n if ((0,_utils_js__WEBPACK_IMPORTED_MODULE_3__.shouldSkipReplacement)(imageUrl)) {\n return match;\n }\n if (!images[containerImageCounter]?.url) {\n return '';\n }\n const currentImageUrl = images[containerImageCounter]?.url;\n containerImageCounter++;\n containerImageCounter %= images.length;\n return 'background-image: url(\"' + currentImageUrl + '\")';\n });\n return newStyleContent;\n };\n (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_6__.useLayoutEffect)(() => {\n let isMounted = true;\n const allImages = {\n landscape: [],\n portrait: []\n };\n selectedImages?.forEach(image => {\n if (image.orientation === 'landscape') {\n allImages.landscape.push(image);\n } else {\n allImages.portrait.push(image);\n }\n });\n const previewImages = allImages;\n const imgThumbnail = new Image();\n imgThumbnail.src = thumbnail_image_url;\n const imgFeatured = new Image();\n imgFeatured.src = featured_image_url;\n const thumbnailContainer = thumbnailContainerRef.current;\n function handleThumbnailLoad(image, setURL) {\n if (isMounted) {\n image.onload = () => {\n setURL(image.src);\n };\n }\n }\n handleThumbnailLoad(imgThumbnail, setThumbnailImageURL);\n handleThumbnailLoad(imgFeatured, setFeaturedImageURL);\n const astraWpEditorCss = document.getElementById('astra-wp-editor-styles-inline-css')?.textContent.replace(/:root/g, '.block-container').replace(/body/g, '.block-container'),\n astraBlockEditorCss = document.getElementById('astra-block-editor-styles-inline-css')?.textContent.replace(/:root/g, '.block-container').replace(/body/g, '.block-container');\n let markup = ``;\n if (stylesheet) {\n stylesheet = replaceContainerImages(stylesheet, previewImages?.landscape);\n }\n markup += astraCustomizer ? `` : '';\n markup += ``;\n markup = stylesheet ? `${markup} ` : markup;\n if (globalStylesheet) {\n markup = markup + ``;\n }\n if (astraWpEditorCss) {\n markup = markup + ``;\n }\n if (astraBlockEditorCss) {\n markup = markup + ``;\n }\n if (thumbnailContainer && content) {\n let shadow = thumbnailContainer.shadowRoot;\n if (shadow === null) {\n shadow = thumbnailContainer.attachShadow({\n mode: 'open'\n });\n }\n if (shadow === null) {\n return;\n }\n let original_content = content;\n if (!disableAi) {\n const dynamic_content = dynamicContent ?? [];\n if (dynamic_content && Object.keys(dynamic_content)?.length > 0) {\n Object.keys(dynamic_content).forEach(key => {\n original_content = dynamic_content[key] !== null ? original_content.replace(key, dynamic_content[key]) : original_content;\n });\n }\n if (!!dynamicContent && Object.keys(dynamicContent).length > 0) {\n original_content = replaceContactDetails(original_content);\n original_content = replaceGoogleMapLocation(original_content);\n }\n }\n shadow.innerHTML = markup + '
' + original_content + '
';\n // shadow.innerHTML = markup + '
' + ast_block_template_vars.header_markup + original_content + ast_block_template_vars.footer_markup + '
';\n colorPalette.forEach((color, index) => {\n shadow?.host.style.setProperty(`--ast-global-color-${index}`, color);\n });\n const images = thumbnailContainer.shadowRoot.querySelectorAll('img');\n if (shadow) {\n images.forEach(imageItem => {\n if ((0,_utils_js__WEBPACK_IMPORTED_MODULE_3__.shouldSkipReplacement)(imageItem.src) || disableAi || previewImages.landscape.length === 0 || previewImages.portrait.length === 0 || Object.keys(dynamicContent).length === 0 || !dynamicContent) {\n return;\n }\n updateVisibility(imageItem, visibility.hidden);\n });\n updateScaling();\n replaceImages(images, previewImages);\n }\n }\n return () => {\n isMounted = false;\n };\n }, [item, disableAi, dynamicContent, selectedImages]);\n (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_6__.useEffect)(() => {\n const resizeObserver = new ResizeObserver(updateScaling);\n resizeObserver.observe(document.documentElement);\n return () => {\n if (!resizeObserver) {\n return;\n }\n resizeObserver.disconnect();\n };\n }, []);\n (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_6__.useEffect)(() => {\n const astPopup = document.querySelector('#ast-block-templates-modal-wrap');\n if (!astPopup) {\n return;\n }\n const observer = new MutationObserver(updateScaling);\n observer.observe(astPopup, {\n childList: true,\n attributes: true,\n subtree: true\n });\n return () => {\n if (!observer) {\n return;\n }\n observer.disconnect();\n };\n }, []);\n (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_6__.useEffect)(() => {\n const thumbnailContainer = thumbnailContainerRef?.current;\n if (thumbnailContainer) {\n const shadow = thumbnailContainer.shadowRoot;\n colorPalette.forEach((color, index) => {\n if (shadow === null) {\n return;\n }\n shadow.host.style.setProperty(`--ast-global-color-${index}`, color);\n });\n }\n }, [colorPalette]);\n function updateScaling() {\n const thumbnail = thumbnailRef?.current;\n const thumbnailContainer = thumbnailContainerRef?.current;\n if (!thumbnail || !thumbnailContainer) {\n return;\n }\n const width = thumbnail.parentNode.offsetWidth;\n const scale = width / 1200;\n const scaledHeight = scale * thumbnailContainer.offsetHeight;\n thumbnail.style.transform = `scale(${scale})`;\n thumbnail.style.height = `${scaledHeight}px`;\n }\n const updateVisibility = (element, value) => {\n if (!element) {\n return;\n }\n element.style.visibility = value;\n };\n const replaceGoogleMapLocation = function () {\n let contentStr = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n if (!address) {\n return contentStr;\n }\n const regex = /(src=\"https:\\/\\/maps\\.google\\.com\\/maps\\?q=)([^&]+)(&z=\\d+&hl=en&t=m&output=embed&iwloc=near\")/g;\n return contentStr.replace(regex, `$1${encodeURIComponent(address)}$3`);\n };\n let scrollTimeout = 0;\n let startScroll = 0;\n const scrollToPosition = (element, position, duration) => {\n const start = element.scrollTop;\n const change = position - start;\n const increment = 20;\n let currentTime = 0;\n const animateScroll = function () {\n currentTime += increment;\n const val = _utils_easing_functions__WEBPACK_IMPORTED_MODULE_4__[\"default\"].linearTween(currentTime, start, change, duration);\n element.scrollTop = val;\n if (currentTime < duration) {\n scrollTimeout = setTimeout(animateScroll, increment);\n }\n };\n animateScroll();\n };\n const handleScrollDown = () => {\n if (item.type !== 'page') {\n return;\n }\n const scrollContainer = thumbnailContainerRef.current;\n if (scrollTimeout) {\n clearTimeout(scrollTimeout);\n }\n startScroll = setTimeout(() => {\n scrollToPosition(scrollContainer, scrollContainer.scrollHeight, 4000);\n }, 1000);\n };\n const handleScrollUp = () => {\n if (startScroll) {\n clearTimeout(startScroll);\n }\n const scrollContainer = thumbnailContainerRef.current;\n if (scrollTimeout) {\n clearTimeout(scrollTimeout);\n }\n scrollToPosition(scrollContainer, 0, 1500);\n };\n const getInsertButtonText = () => {\n if (spectraPluginStatus.notInstalled) {\n return 'Install Spectra & Insert';\n }\n if (spectraPluginStatus.inactive) {\n return 'Activate Spectra & Insert';\n }\n return 'Insert';\n };\n\n // Reset the counter when the popup is closed.\n (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_6__.useEffect)(() => {\n if (!togglePopup) {\n landscapeCounter = 0;\n portraitCounter = 0;\n containerImageCounter = 0;\n }\n }, [togglePopup]);\n const originClass = is_rtl ? 'origin-top-right' : 'origin-top-left';\n return /*#__PURE__*/React.createElement(_fade_in_out_fade_in_out_js__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n className: (0,_utils_helpers__WEBPACK_IMPORTED_MODULE_0__.classNames)('w-full h-fit p-5', true === selfState.importing ? 'importing' : '')\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: (0,_utils_helpers__WEBPACK_IMPORTED_MODULE_0__.classNames)('cursor-pointer relative border border-solid border-border-primary hover:border-accent-spectra transition duration-150 ease-in-out overflow-hidden group', selfState.importing && 'border-accent-spectra')\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: `thumbnail left-0 m-0 min-h-[auto] overflow-visible text-left top-0 ${originClass} relative pointer-events-none`,\n ref: thumbnailRef\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: \"absolute w-[1200px] pointer-events-none max-h-[1600px] overflow-hidden\",\n ref: thumbnailContainerRef\n }, !content && /*#__PURE__*/React.createElement(\"img\", {\n srcSet: `${imageFeaturedlURL}, ${imageThumbnailURL}`,\n src: imageThumbnailURL,\n alt: \"Preview\"\n }), /*#__PURE__*/React.createElement(\"div\", {\n className: \"preview\"\n }, /*#__PURE__*/React.createElement(\"span\", {\n className: \"ast-block-templates-icon ast-block-templates-icon-search\"\n })))), /*#__PURE__*/React.createElement(\"div\", {\n className: \"absolute inset-0 grid grid-cols-1 grid-rows-1 place-items-end\",\n onMouseEnter: handleScrollDown,\n onMouseLeave: handleScrollUp\n }, /*#__PURE__*/React.createElement(\"div\", {\n className: (0,_utils_helpers__WEBPACK_IMPORTED_MODULE_0__.classNames)('opacity-0 group-hover:opacity-100 w-full flex items-center justify-between px-3 py-2 backdrop-blur-sm bg-white/[0.85] shadow-action-buttons transition-all duration-150 ease-in-out', true === selfState.importing ? 'opacity-100' : '')\n }, /*#__PURE__*/React.createElement(_import_block_button_import_block_button__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n title: getInsertButtonText(),\n showIcon: spectraPluginStatus.active,\n liveRequest: true,\n item: item,\n importing: selfState.importing,\n onClick: () => {\n setSelfState({\n ...selfState,\n importing: true\n });\n },\n onBlockImport: () => {\n setSelfState({\n ...selfState,\n importing: false\n });\n }\n }), /*#__PURE__*/React.createElement(_favorite_single_block__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n item: item\n })))));\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ((0,_wordpress_compose__WEBPACK_IMPORTED_MODULE_7__[\"default\"])((0,_wordpress_data__WEBPACK_IMPORTED_MODULE_8__[\"default\"])(select => {\n const {\n getDisableAi,\n getDisablePreview,\n getTogglePopup\n } = select('ast-block-templates');\n return {\n disableAi: getDisableAi(),\n disablePreview: getDisablePreview(),\n togglePopup: getTogglePopup()\n };\n}))((0,_wordpress_element__WEBPACK_IMPORTED_MODULE_6__.memo)(SingleBlock)));\n\n//# sourceURL=webpack://ast-block-templates/./src/components/reusable/single-block/lazy-single-block.js?"); /***/ }), /***/ "./src/components/reusable/single-block/utils.js": /*!*******************************************************!*\ !*** ./src/components/reusable/single-block/utils.js ***! \*******************************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getImageOrientation: function() { return /* binding */ getImageOrientation; },\n/* harmony export */ shouldSkipReplacement: function() { return /* binding */ shouldSkipReplacement; },\n/* harmony export */ withinIframe: function() { return /* binding */ withinIframe; }\n/* harmony export */ });\nconst withinIframe = () => {\n if (window.location.href !== window.parent.location.href) {\n return true;\n }\n return false;\n};\nconst getImageOrientation = imageUrl => {\n // eslint-disable-next-line no-undef\n const img = new Image();\n img.src = imageUrl;\n if (img.width > img.height) {\n return 'landscape';\n }\n return 'portrait';\n};\nconst shouldSkipReplacement = imageUrl => {\n const skipKeywords = ['skip', 'logo', 'fav-icon'];\n for (const keyword of skipKeywords) {\n if (imageUrl.includes(keyword)) {\n return true;\n }\n }\n return false;\n};\n\n//# sourceURL=webpack://ast-block-templates/./src/components/reusable/single-block/utils.js?"); /***/ }), /***/ "./src/utils/easing-functions.js": /*!***************************************!*\ !*** ./src/utils/easing-functions.js ***! \***************************************/ /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) { eval("__webpack_require__.r(__webpack_exports__);\nconst easingFunctions = {\n // linear easing function\n linearTween(t, b, c, d) {\n return c * t / d + b;\n },\n // ease in function\n easeInQuad(t, b, c, d) {\n t /= d;\n return c * t * t + b;\n },\n // ease out function\n easeOutQuad(t, b, c, d) {\n t /= d;\n return -c * t * (t - 2) + b;\n },\n // ease in out function\n easeInOutQuad(t, b, c, d) {\n t /= d / 2;\n if (t < 1) {\n return c / 2 * t * t + b;\n }\n t--;\n return -c / 2 * (t * (t - 2) - 1) + b;\n },\n // ease in cubic function\n easeInCubic(t, b, c, d) {\n t /= d;\n return c * t * t * t + b;\n },\n // ease out cubic function\n easeOutCubic(t, b, c, d) {\n t /= d;\n t--;\n return c * (t * t * t + 1) + b;\n },\n // ease in out cubic function\n easeInOutCubic(t, b, c, d) {\n t /= d / 2;\n if (t < 1) {\n return c / 2 * t * t * t + b;\n }\n t -= 2;\n return c / 2 * (t * t * t + 2) + b;\n }\n};\nObject.seal(easingFunctions);\n/* harmony default export */ __webpack_exports__[\"default\"] = (easingFunctions);\n\n//# sourceURL=webpack://ast-block-templates/./src/utils/easing-functions.js?"); /***/ }) }]);