Plugin Directory

Changeset 3232408


Ignore:
Timestamp:
01/31/2025 06:00:46 AM (14 months ago)
Author:
xssdevelopment
Message:

Deploying new version of merge-pdf

Location:
merge-pdf/trunk
Files:
4 added
38 edited

Legend:

Unmodified
Added
Removed
  • merge-pdf/trunk/build/index-rtl.css

    r3225930 r3232408  
    1 .solution__merge-pdf{margin:1rem}
     1/*!****************************************************************************************************************************************************************************************************************************************************!*\
     2  !*** css ../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[2]!../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!./src/editor.scss ***!
     3  \****************************************************************************************************************************************************************************************************************************************************/
     4.solution__merge-pdf {
     5  margin: 1rem;
     6}
  • merge-pdf/trunk/build/index.asset.php

    r3225930 r3232408  
    1 <?php return array('dependencies' => array('react-jsx-runtime', 'wp-blocks', 'wp-element', 'wp-i18n'), 'version' => '6ff31f488d2444aef4c0');
     1<?php return array('dependencies' => array('react-jsx-runtime', 'wp-blocks', 'wp-element', 'wp-i18n'), 'version' => '971621e220fab65d6c23');
  • merge-pdf/trunk/build/index.css

    r3225930 r3232408  
    1 .solution__merge-pdf{margin:1rem}
     1/*!****************************************************************************************************************************************************************************************************************************************************!*\
     2  !*** css ../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[2]!../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!./src/editor.scss ***!
     3  \****************************************************************************************************************************************************************************************************************************************************/
     4.solution__merge-pdf {
     5  margin: 1rem;
     6}
     7
     8/*# sourceMappingURL=index.css.map*/
  • merge-pdf/trunk/build/index.js

    r3225930 r3232408  
    1 (()=>{"use strict";var e,i={354:()=>{const e=window.wp.blocks,i=window.wp.element,r=window.wp.i18n,n=window.ReactJSXRuntime,t=(0,i.createElement)("svg",{width:32,height:33,viewBox:"0 0 32 33",fill:"none",xmlns:"http://www.w3.org/2000/svg"},(0,i.createElement)("ellipse",{cx:"15.8843",cy:"16.5014",rx:"13.2358",ry:"13.3335",fill:"#E3FAFC"}),(0,i.createElement)("path",{d:"M14.4364 11.3L12.9609 10.5623V22.3659L14.4364 21.6282",stroke:"#0C8599","stroke-width":"1.32791","stroke-linecap":"round","stroke-linejoin":"round"}),(0,i.createElement)("path",{d:"M10.0106 11.3L8.53516 10.5623V22.3659L10.0106 21.6282",stroke:"#0C8599","stroke-width":"1.32791","stroke-linecap":"round","stroke-linejoin":"round"}),(0,i.createElement)("path",{d:"M23.2886 20.1527L17.3867 22.3659V10.5623L23.2886 12.7754V20.1527Z",stroke:"#0C8599","stroke-width":"1.32791","stroke-linecap":"round","stroke-linejoin":"round","fill-rule":"evenodd","clip-rule":"evenodd"})),l=JSON.parse('{"$schema":"https://schemas.wp.org/trunk/block.json","apiVersion":3,"name":"create-block/merge-pdf","version":"1.0.0","title":"Merge Pdf","category":"widgets","description":"Seamlessly combine multiple PDFs into a single file for easy sharing, organizing, and storage, all while preserving original formatting and quality.","example":{},"supports":{"html":false},"textdomain":"merge-pdf","editorScript":"file:./index.js","editorStyle":"file:./index.css","style":"file:./style-index.css","render":"file:./render.php","viewScript":"file:./view.js"}');(0,e.registerBlockType)(l,{icon:t,edit:function(){return(0,i.createElement)("div",null,(0,n.jsx)("div",{className:"solution__merge-pdf",children:(0,n.jsx)("div",{className:"solution__container__wrapper",children:(0,n.jsxs)("div",{className:"solution__container",children:[(0,n.jsx)("div",{className:"solution__header",children:(0,r.__)("Merge PDF","merge-pdf")}),(0,n.jsxs)("div",{className:"solution__form",children:[(0,n.jsxs)("label",{htmlFor:"file",className:"solution__label",children:[(0,n.jsx)("span",{children:(0,r.__)("File:","merge-pdf")}),(0,n.jsx)("input",{type:"file",id:"file",name:"file",required:!0,className:"solution__file-input",disabled:!0})]}),(0,n.jsx)("button",{disabled:!0,className:"solution__btn",children:(0,r.__)("Submit","merge-pdf")})]})]})})}))}})}},r={};function n(e){var t=r[e];if(void 0!==t)return t.exports;var l=r[e]={exports:{}};return i[e](l,l.exports,n),l.exports}n.m=i,e=[],n.O=(i,r,t,l)=>{if(!r){var s=1/0;for(c=0;c<e.length;c++){r=e[c][0],t=e[c][1],l=e[c][2];for(var o=!0,a=0;a<r.length;a++)(!1&l||s>=l)&&Object.keys(n.O).every((e=>n.O[e](r[a])))?r.splice(a--,1):(o=!1,l<s&&(s=l));if(o){e.splice(c--,1);var d=t();void 0!==d&&(i=d)}}return i}l=l||0;for(var c=e.length;c>0&&e[c-1][2]>l;c--)e[c]=e[c-1];e[c]=[r,t,l]},n.o=(e,i)=>Object.prototype.hasOwnProperty.call(e,i),(()=>{var e={57:0,350:0};n.O.j=i=>0===e[i];var i=(i,r)=>{var t,l,s=r[0],o=r[1],a=r[2],d=0;if(s.some((i=>0!==e[i]))){for(t in o)n.o(o,t)&&(n.m[t]=o[t]);if(a)var c=a(n)}for(i&&i(r);d<s.length;d++)l=s[d],n.o(e,l)&&e[l]&&e[l][0](),e[l]=0;return n.O(c)},r=self.webpackChunk=self.webpackChunk||[];r.forEach(i.bind(null,0)),r.push=i.bind(null,r.push.bind(r))})();var t=n.O(void 0,[350],(()=>n(354)));t=n.O(t)})();
     1/******/ (() => { // webpackBootstrap
     2/******/    "use strict";
     3/******/    var __webpack_modules__ = ({
     4
     5/***/ "./src/edit.js":
     6/*!*********************!*\
     7  !*** ./src/edit.js ***!
     8  \*********************/
     9/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
     10
     11__webpack_require__.r(__webpack_exports__);
     12/* harmony export */ __webpack_require__.d(__webpack_exports__, {
     13/* harmony export */   "default": () => (/* binding */ Edit),
     14/* harmony export */   mergePDFIcon: () => (/* binding */ mergePDFIcon)
     15/* harmony export */ });
     16/* harmony import */ var _editor_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./editor.scss */ "./src/editor.scss");
     17/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/element */ "@wordpress/element");
     18/* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_1__);
     19/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @wordpress/i18n */ "@wordpress/i18n");
     20/* harmony import */ var _wordpress_i18n__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__);
     21/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react/jsx-runtime */ "react/jsx-runtime");
     22/* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__);
     23/**
     24 * Lets webpack process CSS, SASS or SCSS files referenced in JavaScript files.
     25 * Those files can contain any CSS code that gets applied to the editor.
     26 *
     27 * @see https://www.npmjs.com/package/@wordpress/scripts#using-css
     28 */
     29
     30
     31
     32
     33function Edit() {
     34  return (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_1__.createElement)('div', null, /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("div", {
     35    className: "solution__merge-pdf",
     36    children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("div", {
     37      className: "solution__container__wrapper",
     38      children: /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)("div", {
     39        className: "solution__container",
     40        children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("div", {
     41          className: "solution__header",
     42          children: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)('Merge PDF', 'merge-pdf')
     43        }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)("div", {
     44          className: "solution__form",
     45          children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsxs)("label", {
     46            htmlFor: "file",
     47            className: "solution__label",
     48            children: [/*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("span", {
     49              children: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)('File:', 'merge-pdf')
     50            }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("input", {
     51              type: "file",
     52              id: "file",
     53              name: "file",
     54              required: true,
     55              className: "solution__file-input",
     56              disabled: true
     57            })]
     58          }), /*#__PURE__*/(0,react_jsx_runtime__WEBPACK_IMPORTED_MODULE_3__.jsx)("button", {
     59            disabled: true,
     60            className: "solution__btn",
     61            children: (0,_wordpress_i18n__WEBPACK_IMPORTED_MODULE_2__.__)('Submit', 'merge-pdf')
     62          })]
     63        })]
     64      })
     65    })
     66  }));
     67}
     68const mergePDFIcon = (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_1__.createElement)('svg', {
     69  width: 32,
     70  height: 33,
     71  viewBox: '0 0 32 33',
     72  fill: 'none',
     73  xmlns: 'http://www.w3.org/2000/svg'
     74}, (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_1__.createElement)('ellipse', {
     75  cx: '15.8843',
     76  cy: '16.5014',
     77  rx: '13.2358',
     78  ry: '13.3335',
     79  fill: '#E3FAFC'
     80}), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_1__.createElement)('path', {
     81  d: 'M14.4364 11.3L12.9609 10.5623V22.3659L14.4364 21.6282',
     82  stroke: '#0C8599',
     83  'stroke-width': '1.32791',
     84  'stroke-linecap': 'round',
     85  'stroke-linejoin': 'round'
     86}), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_1__.createElement)('path', {
     87  d: 'M10.0106 11.3L8.53516 10.5623V22.3659L10.0106 21.6282',
     88  stroke: '#0C8599',
     89  'stroke-width': '1.32791',
     90  'stroke-linecap': 'round',
     91  'stroke-linejoin': 'round'
     92}), (0,_wordpress_element__WEBPACK_IMPORTED_MODULE_1__.createElement)('path', {
     93  d: 'M23.2886 20.1527L17.3867 22.3659V10.5623L23.2886 12.7754V20.1527Z',
     94  stroke: '#0C8599',
     95  'stroke-width': '1.32791',
     96  'stroke-linecap': 'round',
     97  'stroke-linejoin': 'round',
     98  'fill-rule': 'evenodd',
     99  'clip-rule': 'evenodd'
     100}));
     101
     102/***/ }),
     103
     104/***/ "./src/index.js":
     105/*!**********************!*\
     106  !*** ./src/index.js ***!
     107  \**********************/
     108/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
     109
     110__webpack_require__.r(__webpack_exports__);
     111/* harmony import */ var _style_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./style.scss */ "./src/style.scss");
     112/* harmony import */ var _wordpress_blocks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/blocks */ "@wordpress/blocks");
     113/* harmony import */ var _wordpress_blocks__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_blocks__WEBPACK_IMPORTED_MODULE_1__);
     114/* harmony import */ var _edit__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./edit */ "./src/edit.js");
     115/* harmony import */ var _block_json__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./block.json */ "./src/block.json");
     116
     117
     118
     119
     120(0,_wordpress_blocks__WEBPACK_IMPORTED_MODULE_1__.registerBlockType)(_block_json__WEBPACK_IMPORTED_MODULE_3__, {
     121  icon: _edit__WEBPACK_IMPORTED_MODULE_2__.mergePDFIcon,
     122  edit: _edit__WEBPACK_IMPORTED_MODULE_2__["default"]
     123});
     124
     125/***/ }),
     126
     127/***/ "./src/editor.scss":
     128/*!*************************!*\
     129  !*** ./src/editor.scss ***!
     130  \*************************/
     131/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
     132
     133__webpack_require__.r(__webpack_exports__);
     134// extracted by mini-css-extract-plugin
     135
     136
     137/***/ }),
     138
     139/***/ "./src/style.scss":
     140/*!************************!*\
     141  !*** ./src/style.scss ***!
     142  \************************/
     143/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
     144
     145__webpack_require__.r(__webpack_exports__);
     146// extracted by mini-css-extract-plugin
     147
     148
     149/***/ }),
     150
     151/***/ "react/jsx-runtime":
     152/*!**********************************!*\
     153  !*** external "ReactJSXRuntime" ***!
     154  \**********************************/
     155/***/ ((module) => {
     156
     157module.exports = window["ReactJSXRuntime"];
     158
     159/***/ }),
     160
     161/***/ "@wordpress/blocks":
     162/*!********************************!*\
     163  !*** external ["wp","blocks"] ***!
     164  \********************************/
     165/***/ ((module) => {
     166
     167module.exports = window["wp"]["blocks"];
     168
     169/***/ }),
     170
     171/***/ "@wordpress/element":
     172/*!*********************************!*\
     173  !*** external ["wp","element"] ***!
     174  \*********************************/
     175/***/ ((module) => {
     176
     177module.exports = window["wp"]["element"];
     178
     179/***/ }),
     180
     181/***/ "@wordpress/i18n":
     182/*!******************************!*\
     183  !*** external ["wp","i18n"] ***!
     184  \******************************/
     185/***/ ((module) => {
     186
     187module.exports = window["wp"]["i18n"];
     188
     189/***/ }),
     190
     191/***/ "./src/block.json":
     192/*!************************!*\
     193  !*** ./src/block.json ***!
     194  \************************/
     195/***/ ((module) => {
     196
     197module.exports = /*#__PURE__*/JSON.parse('{"$schema":"https://schemas.wp.org/trunk/block.json","apiVersion":3,"name":"create-block/merge-pdf","version":"1.0.0","title":"Merge Pdf","category":"widgets","description":"Seamlessly combine multiple PDFs into a single file for easy sharing, organizing, and storage, all while preserving original formatting and quality.","example":{},"supports":{"html":false},"textdomain":"merge-pdf","editorScript":"file:./index.js","editorStyle":"file:./index.css","style":"file:./style-index.css","render":"file:./render.php","viewScript":"file:./view.js"}');
     198
     199/***/ })
     200
     201/******/    });
     202/************************************************************************/
     203/******/    // The module cache
     204/******/    var __webpack_module_cache__ = {};
     205/******/   
     206/******/    // The require function
     207/******/    function __webpack_require__(moduleId) {
     208/******/        // Check if module is in cache
     209/******/        var cachedModule = __webpack_module_cache__[moduleId];
     210/******/        if (cachedModule !== undefined) {
     211/******/            return cachedModule.exports;
     212/******/        }
     213/******/        // Create a new module (and put it into the cache)
     214/******/        var module = __webpack_module_cache__[moduleId] = {
     215/******/            // no module.id needed
     216/******/            // no module.loaded needed
     217/******/            exports: {}
     218/******/        };
     219/******/   
     220/******/        // Execute the module function
     221/******/        __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
     222/******/   
     223/******/        // Return the exports of the module
     224/******/        return module.exports;
     225/******/    }
     226/******/   
     227/******/    // expose the modules object (__webpack_modules__)
     228/******/    __webpack_require__.m = __webpack_modules__;
     229/******/   
     230/************************************************************************/
     231/******/    /* webpack/runtime/chunk loaded */
     232/******/    (() => {
     233/******/        var deferred = [];
     234/******/        __webpack_require__.O = (result, chunkIds, fn, priority) => {
     235/******/            if(chunkIds) {
     236/******/                priority = priority || 0;
     237/******/                for(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];
     238/******/                deferred[i] = [chunkIds, fn, priority];
     239/******/                return;
     240/******/            }
     241/******/            var notFulfilled = Infinity;
     242/******/            for (var i = 0; i < deferred.length; i++) {
     243/******/                var chunkIds = deferred[i][0];
     244/******/                var fn = deferred[i][1];
     245/******/                var priority = deferred[i][2];
     246/******/                var fulfilled = true;
     247/******/                for (var j = 0; j < chunkIds.length; j++) {
     248/******/                    if ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {
     249/******/                        chunkIds.splice(j--, 1);
     250/******/                    } else {
     251/******/                        fulfilled = false;
     252/******/                        if(priority < notFulfilled) notFulfilled = priority;
     253/******/                    }
     254/******/                }
     255/******/                if(fulfilled) {
     256/******/                    deferred.splice(i--, 1)
     257/******/                    var r = fn();
     258/******/                    if (r !== undefined) result = r;
     259/******/                }
     260/******/            }
     261/******/            return result;
     262/******/        };
     263/******/    })();
     264/******/   
     265/******/    /* webpack/runtime/compat get default export */
     266/******/    (() => {
     267/******/        // getDefaultExport function for compatibility with non-harmony modules
     268/******/        __webpack_require__.n = (module) => {
     269/******/            var getter = module && module.__esModule ?
     270/******/                () => (module['default']) :
     271/******/                () => (module);
     272/******/            __webpack_require__.d(getter, { a: getter });
     273/******/            return getter;
     274/******/        };
     275/******/    })();
     276/******/   
     277/******/    /* webpack/runtime/define property getters */
     278/******/    (() => {
     279/******/        // define getter functions for harmony exports
     280/******/        __webpack_require__.d = (exports, definition) => {
     281/******/            for(var key in definition) {
     282/******/                if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
     283/******/                    Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
     284/******/                }
     285/******/            }
     286/******/        };
     287/******/    })();
     288/******/   
     289/******/    /* webpack/runtime/hasOwnProperty shorthand */
     290/******/    (() => {
     291/******/        __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
     292/******/    })();
     293/******/   
     294/******/    /* webpack/runtime/make namespace object */
     295/******/    (() => {
     296/******/        // define __esModule on exports
     297/******/        __webpack_require__.r = (exports) => {
     298/******/            if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
     299/******/                Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
     300/******/            }
     301/******/            Object.defineProperty(exports, '__esModule', { value: true });
     302/******/        };
     303/******/    })();
     304/******/   
     305/******/    /* webpack/runtime/jsonp chunk loading */
     306/******/    (() => {
     307/******/        // no baseURI
     308/******/       
     309/******/        // object to store loaded and loading chunks
     310/******/        // undefined = chunk not loaded, null = chunk preloaded/prefetched
     311/******/        // [resolve, reject, Promise] = chunk loading, 0 = chunk loaded
     312/******/        var installedChunks = {
     313/******/            "index": 0,
     314/******/            "./style-index": 0
     315/******/        };
     316/******/       
     317/******/        // no chunk on demand loading
     318/******/       
     319/******/        // no prefetching
     320/******/       
     321/******/        // no preloaded
     322/******/       
     323/******/        // no HMR
     324/******/       
     325/******/        // no HMR manifest
     326/******/       
     327/******/        __webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);
     328/******/       
     329/******/        // install a JSONP callback for chunk loading
     330/******/        var webpackJsonpCallback = (parentChunkLoadingFunction, data) => {
     331/******/            var chunkIds = data[0];
     332/******/            var moreModules = data[1];
     333/******/            var runtime = data[2];
     334/******/            // add "moreModules" to the modules object,
     335/******/            // then flag all "chunkIds" as loaded and fire callback
     336/******/            var moduleId, chunkId, i = 0;
     337/******/            if(chunkIds.some((id) => (installedChunks[id] !== 0))) {
     338/******/                for(moduleId in moreModules) {
     339/******/                    if(__webpack_require__.o(moreModules, moduleId)) {
     340/******/                        __webpack_require__.m[moduleId] = moreModules[moduleId];
     341/******/                    }
     342/******/                }
     343/******/                if(runtime) var result = runtime(__webpack_require__);
     344/******/            }
     345/******/            if(parentChunkLoadingFunction) parentChunkLoadingFunction(data);
     346/******/            for(;i < chunkIds.length; i++) {
     347/******/                chunkId = chunkIds[i];
     348/******/                if(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {
     349/******/                    installedChunks[chunkId][0]();
     350/******/                }
     351/******/                installedChunks[chunkId] = 0;
     352/******/            }
     353/******/            return __webpack_require__.O(result);
     354/******/        }
     355/******/       
     356/******/        var chunkLoadingGlobal = self["webpackChunk"] = self["webpackChunk"] || [];
     357/******/        chunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));
     358/******/        chunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));
     359/******/    })();
     360/******/   
     361/************************************************************************/
     362/******/   
     363/******/    // startup
     364/******/    // Load entry module and return exports
     365/******/    // This entry module depends on other loaded chunks and execution need to be delayed
     366/******/    var __webpack_exports__ = __webpack_require__.O(undefined, ["./style-index"], () => (__webpack_require__("./src/index.js")))
     367/******/    __webpack_exports__ = __webpack_require__.O(__webpack_exports__);
     368/******/   
     369/******/ })()
     370;
     371//# sourceMappingURL=index.js.map
  • merge-pdf/trunk/build/style-index-rtl.css

    r3225930 r3232408  
    1 :root{--solution-merge-pdf-primary-color:#4f46e5;--solution-merge-pdf-secondary-color:#eef2ff;--solution-merge-pdf-tertiary-color:#000;--solution-merge-pdf-background-color:#fff;--solution-merge-pdf-border-color:#e5e7eb;--solution-merge-pdf-input-border-color:#d1d5db;--solution-merge-pdf-shadow-color:hsla(210,8%,62%,.2);--solution-merge-pdf-btn-shadow-color:rgba(0,0,0,.05);--solution-merge-pdf-dropdown-bg-color:#fff;--solution-merge-pdf-dropdown-shadow-color-1:rgba(0,0,0,.1);--solution-merge-pdf-dropdown-shadow-color-2:rgba(0,0,0,.1)}.solution__merge-pdf .solution__container-wrapper{color:var(--solution-merge-pdf-tertiary-color);display:flex;flex-direction:column;gap:1rem;padding:1rem}.solution__merge-pdf .solution__container{background-color:var(--solution-merge-pdf-background-color);border:1px solid var(--solution-merge-pdf-border-color);border-radius:.75rem;box-shadow:var(--solution-merge-pdf-shadow-color) 0 8px 24px;display:flex;flex-direction:column;gap:1rem;min-height:180px;padding:1.5rem 1.5rem .5rem;position:relative}.solution__merge-pdf .solution__header{font-size:1.25rem;font-weight:500;letter-spacing:.05em}.solution__merge-pdf .solution__content{display:grid;flex-grow:1}.solution__merge-pdf .solution__form{display:flex;flex-direction:column;gap:1rem}.solution__merge-pdf .solution__label{display:flex;flex-direction:column;font-size:.75rem;font-weight:500;gap:.3rem;white-space:nowrap;width:100%}.solution__merge-pdf .solution__hint{color:var(--solution-merge-pdf-primary-color);font-size:.75rem;font-weight:500;white-space:wrap}.solution__merge-pdf .solution__input{border:1px solid var(--solution-merge-pdf-input-border-color);border-radius:.375rem;font-size:1rem;line-height:32px;outline:1px solid transparent;outline-offset:-1px;padding:.25rem .5rem}.solution__merge-pdf .solution__file-input::-webkit-file-upload-button{background-color:var(--solution-merge-pdf-secondary-color);border:none;border-radius:.75rem;color:var(--solution-merge-pdf-primary-color);cursor:pointer;font-weight:500;margin-left:1rem;padding:.5rem 1rem}.solution__merge-pdf .solution__file-input:hover::-webkit-file-upload-button{background-color:var(--solution-merge-pdf-secondary-color)}.solution__merge-pdf .solution__btn{align-items:center;background:var(--solution-merge-pdf-secondary-color);border:none;border-radius:1rem;box-shadow:0 1px 2px 0 var(--solution-merge-pdf-btn-shadow-color);color:var(--solution-merge-pdf-primary-color);cursor:pointer;display:inline-flex;font-weight:600;gap:.5rem;justify-content:center;padding:.5rem 1rem}.solution__merge-pdf .solution__btn:hover{filter:brightness(.98)}.solution__merge-pdf .solution__btn .dashicons{font-size:1.2rem;vertical-align:middle}.solution__merge-pdf .solution__dropdown-wrapper{position:relative}.solution__merge-pdf .solution__dropdown{background-color:transparent;border-radius:.75rem;box-shadow:none;max-height:15rem;overflow:visible;position:relative;width:100%;z-index:10}.solution__merge-pdf .solution__dropdown--hidden{display:none}.solution__merge-pdf .solution__loading-section{display:none;right:50%;position:absolute;top:50%;transform:translate(50%,-50%)}.solution__merge-pdf .solution__loading-container{align-items:center;display:flex;gap:1rem;justify-content:center;transition:2s ease}.solution__merge-pdf .solution__download-section{align-items:center;display:flex;flex-direction:column;gap:2rem;height:100%;justify-content:center}.solution__merge-pdf .solution__download-section:last-child{margin-top:auto}.solution__merge-pdf .solution__download-container{align-items:center;display:flex;flex-direction:column;flex-grow:1;gap:1rem;justify-content:center}.solution__merge-pdf .solution__download-file-container{display:flex;flex-wrap:wrap;gap:1rem;justify-content:flex-start}.solution__merge-pdf .solution__download-file-name{max-width:12rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.solution__merge-pdf .solution__title-text{font-weight:600}.solution__merge-pdf .solution__text{font-weight:500}.solution__merge-pdf .solution__provided-text{display:flex;font-size:.7rem;justify-content:center;margin-top:.5rem}.solution__merge-pdf .solution__error-section{align-self:center;display:flex;flex-direction:column;justify-self:center}.solution__merge-pdf .solution__dot{animation:move .6s ease infinite;background:var(--solution-merge-pdf-tertiary-color);border-radius:50%;height:.65em;width:.65em}.solution__merge-pdf .solution__link{color:var(--solution-merge-pdf-tertiary-color)}.solution__merge-pdf .solution__select{display:flex;flex-direction:column;gap:.3rem;position:relative}.solution__merge-pdf .solution__select .solution__select-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 fill=%27%234f46e5%27 viewBox=%270 0 24 24%27%3E%3Cpath d=%27M7.41 8.58 12 13.17l4.59-4.59L18 10l-6 6-6-6z%27/%3E%3C/svg%3E");background-position:left 1rem center;background-repeat:no-repeat;background-size:1rem;border:1px solid var(--solution-merge-pdf-input-border-color);border-radius:.375rem;box-shadow:0 1px 2px 0 var(--solution-merge-pdf-shadow-color);color:var(--solution-merge-pdf-tertiary-color);cursor:pointer;height:42px;padding:0 .5rem}.solution__merge-pdf .solution__select .solution__select-input:focus{box-shadow:0 0 0 3px var(--solution-merge-pdf-secondary-color);outline:1px solid var(--solution-merge-pdf-primary-color)}.solution__merge-pdf .solution__select .solution__select-input option{padding:1rem}.solution__merge-pdf .solution__select .solution__select-input option[disabled]{color:var(--solution-merge-pdf-input-border-color)}.solution__merge-pdf .solution__select .solution__select-input:required:invalid{color:var(--solution-merge-pdf-input-border-color)}.solution__merge-pdf .solution__select .solution__select-input option:not([disabled]){color:var(--solution-merge-pdf-tertiary-color)}.solution__merge-pdf .solution_dropdown button{width:100%}.solution__merge-pdf .solution__dropdown-content{background-color:#fff;border-radius:10px;box-shadow:0 8px 16px 0 rgba(0,0,0,.2);display:none;flex-direction:column;right:50%;margin-top:3px;max-height:150px;min-width:100%;overflow:auto;padding:.5rem 0;position:absolute;top:100%;transform:translate(50%);z-index:10}.solution__merge-pdf .solution__dropdown-content label{display:block;margin-top:10px;padding:0 1rem}.solution__merge-pdf .solution__dropdown-button{min-width:100%}.solution__merge-pdf .solution__dropdown-button:focus+.solution__dropdown-content,.solution__merge-pdf .solution__dropdown-content:hover{display:flex}.solution__merge-pdf .solution__group{display:flex;flex-wrap:wrap;gap:10px}.solution__merge-pdf .solution__group>div,.solution__merge-pdf .solution__group>label{flex:1}.solution__merge-pdf .solution__sortable-container{align-items:center;border:1px dashed var(--solution-merge-pdf-primary-color);border-radius:.375rem;cursor:move;display:flex;gap:2rem;margin:.5rem 0;padding:1rem}.solution__merge-pdf .solution__preview-container{align-items:center;background-color:#e2eff9;border-radius:.25rem;display:flex;justify-content:center;max-height:60px;max-width:60px;min-height:60px;min-width:60px;padding:1px 0;position:relative}.solution__merge-pdf .solution__preview-image{height:60px;-o-object-fit:contain;object-fit:contain;width:60px}.solution__merge-pdf .solution__file-info{display:flex;flex-direction:column;gap:.5rem}.solution__merge-pdf .solution__actions-group{display:flex;gap:1rem;margin-right:auto}@media(max-width:500px){.solution__merge-pdf .solution__sortable-container{flex-wrap:wrap;gap:1rem;justify-content:center}.solution__merge-pdf .solution__sortable-container>:first-child,.solution__merge-pdf .solution__sortable-container>:nth-child(2){flex:1 1 calc(50% - 0.5rem)}.solution__merge-pdf .solution__sortable-container>:nth-child(3){flex:1 1 100%;justify-content:center}.solution__merge-pdf .solution__actions-group{margin-right:0}}.solution__modal{background-color:rgba(0,0,0,.7);display:none;height:100%;right:0;position:fixed;width:100%}.solution__modal,.solution__toolbar{align-items:center;justify-content:center;top:0;z-index:1000}.solution__toolbar{background-color:hsla(0,0%,94%,.8);border-bottom-right-radius:.375rem;border-bottom-left-radius:.375rem;display:flex;gap:.1rem;right:50%;position:absolute;transform:translateX(50%)}.solution__toolbar-button{background-color:transparent;border:none;border-radius:4px;color:#000;cursor:pointer;padding:10px 15px;transition:background-color .3s}.solution__toolbar-button:hover{color:#fff}.solution__pdf-renderer{align-items:center;background-color:#f4f4f4;border:1px solid #ddd;box-shadow:0 4px 8px rgba(0,0,0,.1);display:flex;justify-content:center;max-height:80%;max-width:80%;overflow:auto}.solution__page-indicator{align-self:center;color:#000;font-size:16px;text-align:center;white-space:nowrap}.solution__interactive-image{max-height:80%;max-width:80%;fit-object:contain}@keyframes rotation{0%{transform:rotate(0deg)}to{transform:rotate(-1turn)}}@keyframes move{0%{transform:translateX(-50%)}50%{transform:translateX(50%)}to{transform:translateX(-50%)}}
     1/*!***************************************************************************************************************************************************************************************************************************************************!*\
     2  !*** css ../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[2]!../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!./src/style.scss ***!
     3  \***************************************************************************************************************************************************************************************************************************************************/
     4:root {
     5  --solution-merge-pdf-primary-color: #4f46e5;
     6  --solution-merge-pdf-secondary-color: #eef2ff;
     7  --solution-merge-pdf-tertiary-color: #000;
     8  --solution-merge-pdf-background-color: #fff;
     9  --solution-merge-pdf-border-color: #e5e7eb;
     10  --solution-merge-pdf-input-border-color: #d1d5db;
     11  --solution-merge-pdf-shadow-color: rgba(149, 157, 165, 0.2);
     12  --solution-merge-pdf-btn-shadow-color: rgba(0, 0, 0, 0.05);
     13  --solution-merge-pdf-dropdown-bg-color: #fff;
     14  --solution-merge-pdf-dropdown-shadow-color-1: rgba(0, 0, 0, 0.1);
     15  --solution-merge-pdf-dropdown-shadow-color-2: rgba(0, 0, 0, 0.1);
     16}
     17
     18.solution__merge-pdf .solution__container-wrapper {
     19  padding: 1rem;
     20  display: flex;
     21  flex-direction: column;
     22  gap: 1rem;
     23  color: var(--solution-merge-pdf-tertiary-color);
     24}
     25.solution__merge-pdf .solution__container {
     26  box-shadow: var(--solution-merge-pdf-shadow-color) 0 8px 24px;
     27  border: 1px solid var(--solution-merge-pdf-border-color);
     28  background-color: var(--solution-merge-pdf-background-color);
     29  border-radius: 0.75rem;
     30  padding: 1.5rem 1.5rem 0.5rem;
     31  position: relative;
     32  display: flex;
     33  flex-direction: column;
     34  min-height: 180px;
     35  gap: 1rem;
     36}
     37.solution__merge-pdf .solution__header {
     38  font-size: 1.25rem;
     39  letter-spacing: 0.05em;
     40  font-weight: 500;
     41}
     42.solution__merge-pdf .solution__content {
     43  flex-grow: 1;
     44  display: grid;
     45}
     46.solution__merge-pdf .solution__form {
     47  display: flex;
     48  flex-direction: column;
     49  gap: 1rem;
     50}
     51.solution__merge-pdf .solution__label {
     52  white-space: nowrap;
     53  width: 100%;
     54  font-size: 0.75rem;
     55  font-weight: 500;
     56  display: flex;
     57  flex-direction: column;
     58  gap: 0.3rem;
     59}
     60.solution__merge-pdf .solution__hint {
     61  font-size: 0.75rem;
     62  font-weight: 500;
     63  color: var(--solution-merge-pdf-primary-color);
     64  white-space: wrap;
     65}
     66.solution__merge-pdf .solution__input {
     67  border: 1px solid var(--solution-merge-pdf-input-border-color);
     68  border-radius: 0.375rem;
     69  padding: 0.25rem 0.5rem;
     70  font-size: 1rem;
     71  line-height: 32px;
     72  outline: 1px solid transparent;
     73  outline-offset: -1px;
     74}
     75.solution__merge-pdf .solution__file-input::-webkit-file-upload-button {
     76  margin-left: 1rem;
     77  padding: 0.5rem 1rem;
     78  border-radius: 0.75rem;
     79  border: none;
     80  background-color: var(--solution-merge-pdf-secondary-color);
     81  color: var(--solution-merge-pdf-primary-color);
     82  font-weight: 500;
     83  cursor: pointer;
     84}
     85.solution__merge-pdf .solution__file-input:hover::-webkit-file-upload-button {
     86  background-color: var(--solution-merge-pdf-secondary-color);
     87}
     88.solution__merge-pdf .solution__btn {
     89  display: inline-flex;
     90  align-items: center; /* Ensures the icon and text are aligned */
     91  justify-content: center;
     92  gap: 0.5rem; /* Adds space between the icon and the text */
     93  box-shadow: 0 1px 2px 0 var(--solution-merge-pdf-btn-shadow-color);
     94  background: var(--solution-merge-pdf-secondary-color);
     95  color: var(--solution-merge-pdf-primary-color);
     96  padding: 0.5rem 1rem;
     97  border-radius: 1rem;
     98  font-weight: 600;
     99  cursor: pointer;
     100  border: none;
     101}
     102.solution__merge-pdf .solution__btn:hover {
     103  filter: brightness(0.98);
     104}
     105.solution__merge-pdf .solution__btn .dashicons {
     106  font-size: 1.2rem; /* Adjust the size of the icon */
     107  vertical-align: middle; /* Aligns the icon vertically with the text */
     108}
     109.solution__merge-pdf .solution__dropdown-wrapper {
     110  position: relative;
     111}
     112.solution__merge-pdf .solution__dropdown {
     113  position: relative;
     114  overflow: visible;
     115  background-color: transparent;
     116  box-shadow: none;
     117  width: 100%;
     118  border-radius: 0.75rem;
     119  max-height: 15rem;
     120  z-index: 10;
     121}
     122.solution__merge-pdf .solution__dropdown--hidden {
     123  display: none;
     124}
     125.solution__merge-pdf .solution__loading-section {
     126  display: none;
     127  position: absolute;
     128  top: 50%;
     129  right: 50%;
     130  transform: translate(50%, -50%);
     131}
     132.solution__merge-pdf .solution__loading-container {
     133  display: flex;
     134  justify-content: center;
     135  align-items: center;
     136  gap: 1rem;
     137  transition: 2s ease;
     138}
     139.solution__merge-pdf .solution__download-section {
     140  display: flex;
     141  justify-content: center;
     142  align-items: center;
     143  flex-direction: column;
     144  gap: 2rem;
     145  height: 100%;
     146}
     147.solution__merge-pdf .solution__download-section:last-child {
     148  margin-top: auto;
     149}
     150.solution__merge-pdf .solution__download-container {
     151  display: flex;
     152  flex-direction: column;
     153  flex-grow: 1;
     154  justify-content: center;
     155  align-items: center;
     156  gap: 1rem;
     157}
     158.solution__merge-pdf .solution__download-file-container {
     159  display: flex;
     160  flex-wrap: wrap;
     161  justify-content: flex-start;
     162  gap: 1rem;
     163}
     164.solution__merge-pdf .solution__download-file-name {
     165  white-space: nowrap;
     166  overflow: hidden;
     167  text-overflow: ellipsis;
     168  max-width: 12rem;
     169}
     170.solution__merge-pdf .solution__title-text {
     171  font-weight: 600;
     172}
     173.solution__merge-pdf .solution__text {
     174  font-weight: 500;
     175}
     176.solution__merge-pdf .solution__provided-text {
     177  display: flex;
     178  justify-content: center;
     179  font-size: 0.7rem;
     180  margin-top: 0.5rem;
     181}
     182.solution__merge-pdf .solution__error-section {
     183  display: flex;
     184  flex-direction: column;
     185  justify-self: center;
     186  align-self: center;
     187}
     188.solution__merge-pdf .solution__dot {
     189  background: var(--solution-merge-pdf-tertiary-color);
     190  height: 0.65em;
     191  width: 0.65em;
     192  border-radius: 50%;
     193  animation: move 0.6s ease infinite;
     194}
     195.solution__merge-pdf .solution__link {
     196  color: var(--solution-merge-pdf-tertiary-color);
     197}
     198.solution__merge-pdf .solution__select {
     199  display: flex;
     200  flex-direction: column;
     201  position: relative;
     202  gap: 0.3rem;
     203  /* Placeholder color */
     204  /* Style for selected option */
     205}
     206.solution__merge-pdf .solution__select .solution__select-input {
     207  height: 42px;
     208  padding: 0 0.5rem;
     209  border-radius: 0.375rem;
     210  border: 1px solid var(--solution-merge-pdf-input-border-color);
     211  color: var(--solution-merge-pdf-tertiary-color);
     212  box-shadow: 0 1px 2px 0 var(--solution-merge-pdf-shadow-color);
     213  -webkit-appearance: none;
     214     -moz-appearance: none;
     215          appearance: none;
     216  cursor: pointer;
     217  /* Arrow styling */
     218  background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 fill=%27%234f46e5%27 viewBox=%270 0 24 24%27%3E%3Cpath d=%27M7.41 8.58L12 13.17l4.59-4.59L18 10l-6 6-6-6z%27/%3E%3C/svg%3E");
     219  background-repeat: no-repeat;
     220  background-position: left 1rem center;
     221  background-size: 1rem;
     222}
     223.solution__merge-pdf .solution__select .solution__select-input:focus {
     224  outline: 1px solid var(--solution-merge-pdf-primary-color);
     225  box-shadow: 0 0 0 3px var(--solution-merge-pdf-secondary-color);
     226}
     227.solution__merge-pdf .solution__select .solution__select-input option {
     228  padding: 1rem;
     229}
     230.solution__merge-pdf .solution__select .solution__select-input option[disabled] {
     231  color: var(--solution-merge-pdf-input-border-color);
     232}
     233.solution__merge-pdf .solution__select .solution__select-input:required:invalid {
     234  color: var(--solution-merge-pdf-input-border-color);
     235}
     236.solution__merge-pdf .solution__select .solution__select-input option:not([disabled]) {
     237  color: var(--solution-merge-pdf-tertiary-color);
     238}
     239.solution__merge-pdf .solution_dropdown button {
     240  width: 100%;
     241}
     242.solution__merge-pdf .solution__dropdown-content {
     243  display: none;
     244  position: absolute;
     245  flex-direction: column;
     246  min-width: 100%;
     247  max-height: 150px;
     248  padding: 0.5rem 0;
     249  overflow: auto;
     250  background-color: #fff;
     251  box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0.2);
     252  z-index: 10;
     253  margin-top: 3px;
     254  border-radius: 10px;
     255  top: 100%;
     256  right: 50%;
     257  transform: translate(50%, 0);
     258}
     259.solution__merge-pdf .solution__dropdown-content label {
     260  display: block;
     261  margin-top: 10px;
     262  padding: 0 1rem;
     263}
     264.solution__merge-pdf .solution__dropdown-button {
     265  min-width: 100%;
     266}
     267.solution__merge-pdf .solution__dropdown-content:hover,
     268.solution__merge-pdf .solution__dropdown-button:focus + .solution__dropdown-content {
     269  display: flex;
     270}
     271.solution__merge-pdf .solution__group {
     272  display: flex;
     273  flex-wrap: wrap;
     274  gap: 10px;
     275}
     276.solution__merge-pdf .solution__group > div,
     277.solution__merge-pdf .solution__group > label {
     278  flex: 1;
     279}
     280.solution__merge-pdf .solution__sortable-container {
     281  cursor: move;
     282  display: flex;
     283  padding: 1rem;
     284  margin: 0.5rem 0;
     285  border: 1px dashed var(--solution-merge-pdf-primary-color);
     286  border-radius: 0.375rem;
     287  align-items: center;
     288  gap: 2rem;
     289}
     290.solution__merge-pdf .solution__preview-container {
     291  position: relative;
     292  padding: 1px 0;
     293  background-color: #E2EFF9;
     294  border-radius: 0.25rem;
     295  min-height: 60px;
     296  min-width: 60px;
     297  max-width: 60px;
     298  max-height: 60px;
     299  display: flex;
     300  align-items: center;
     301  justify-content: center;
     302}
     303.solution__merge-pdf .solution__preview-image {
     304  width: 60px;
     305  height: 60px;
     306  -o-object-fit: contain;
     307     object-fit: contain;
     308}
     309.solution__merge-pdf .solution__file-info {
     310  display: flex;
     311  flex-direction: column;
     312  gap: 0.5rem;
     313}
     314.solution__merge-pdf .solution__actions-group {
     315  display: flex;
     316  gap: 1rem;
     317  margin-right: auto;
     318}
     319@media (max-width: 500px) {
     320  .solution__merge-pdf .solution__sortable-container {
     321    flex-wrap: wrap; /* Allow items to wrap to the next line */
     322    justify-content: center; /* Center item content */
     323    gap: 1rem;
     324  }
     325  .solution__merge-pdf .solution__sortable-container > :nth-child(1),
     326  .solution__merge-pdf .solution__sortable-container > :nth-child(2) {
     327    flex: 1 1 calc(50% - 0.5rem); /* Each takes 50% of the container width, minus gap */
     328  }
     329  .solution__merge-pdf .solution__sortable-container > :nth-child(3) {
     330    flex: 1 1 100%; /* Full width for the third item */
     331    justify-content: center; /* Center item content */
     332  }
     333  .solution__merge-pdf .solution__actions-group {
     334    margin-right: 0;
     335  }
     336}
     337
     338.solution__modal {
     339  display: none; /* Initially hidden */
     340  position: fixed;
     341  top: 0;
     342  right: 0;
     343  width: 100%; /* Full screen width */
     344  height: 100%; /* Full screen height */
     345  background-color: rgba(0, 0, 0, 0.7); /* Semi-transparent background */
     346  justify-content: center; /* Center content horizontally */
     347  align-items: center; /* Center content vertically */
     348  z-index: 1000; /* Ensures modal appears on top */
     349}
     350
     351/* Modal content styling */
     352.solution__toolbar {
     353  display: flex;
     354  position: absolute;
     355  justify-content: center;
     356  align-items: center;
     357  gap: 0.1rem;
     358  top: 0;
     359  right: 50%;
     360  transform: translateX(50%);
     361  background-color: rgba(240, 240, 240, 0.8);
     362  border-bottom-right-radius: 0.375rem;
     363  border-bottom-left-radius: 0.375rem;
     364  z-index: 1000;
     365}
     366
     367.solution__toolbar-button {
     368  padding: 10px 15px;
     369  cursor: pointer;
     370  color: black;
     371  border: none;
     372  border-radius: 4px;
     373  transition: background-color 0.3s;
     374  background-color: transparent;
     375}
     376
     377.solution__toolbar-button:hover {
     378  color: white;
     379}
     380
     381.solution__pdf-renderer {
     382  display: flex;
     383  justify-content: center;
     384  align-items: center;
     385  overflow: auto;
     386  background-color: #f4f4f4;
     387  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
     388  border: 1px solid #ddd;
     389  max-width: 80%;
     390  max-height: 80%;
     391}
     392
     393.solution__page-indicator {
     394  color: black;
     395  font-size: 16px;
     396  align-self: center;
     397  text-align: center;
     398  white-space: nowrap;
     399}
     400
     401.solution__interactive-image {
     402  max-width: 80%;
     403  max-height: 80%;
     404  fit-object: contain;
     405}
     406
     407@keyframes rotation {
     408  0% {
     409    transform: rotate(0deg);
     410  }
     411  100% {
     412    transform: rotate(-360deg);
     413  }
     414}
     415@keyframes move {
     416  0% {
     417    transform: translateX(-50%);
     418  }
     419  50% {
     420    transform: translateX(50%);
     421  }
     422  100% {
     423    transform: translateX(-50%);
     424  }
     425}
  • merge-pdf/trunk/build/style-index.css

    r3225930 r3232408  
    1 :root{--solution-merge-pdf-primary-color:#4f46e5;--solution-merge-pdf-secondary-color:#eef2ff;--solution-merge-pdf-tertiary-color:#000;--solution-merge-pdf-background-color:#fff;--solution-merge-pdf-border-color:#e5e7eb;--solution-merge-pdf-input-border-color:#d1d5db;--solution-merge-pdf-shadow-color:hsla(210,8%,62%,.2);--solution-merge-pdf-btn-shadow-color:rgba(0,0,0,.05);--solution-merge-pdf-dropdown-bg-color:#fff;--solution-merge-pdf-dropdown-shadow-color-1:rgba(0,0,0,.1);--solution-merge-pdf-dropdown-shadow-color-2:rgba(0,0,0,.1)}.solution__merge-pdf .solution__container-wrapper{color:var(--solution-merge-pdf-tertiary-color);display:flex;flex-direction:column;gap:1rem;padding:1rem}.solution__merge-pdf .solution__container{background-color:var(--solution-merge-pdf-background-color);border:1px solid var(--solution-merge-pdf-border-color);border-radius:.75rem;box-shadow:var(--solution-merge-pdf-shadow-color) 0 8px 24px;display:flex;flex-direction:column;gap:1rem;min-height:180px;padding:1.5rem 1.5rem .5rem;position:relative}.solution__merge-pdf .solution__header{font-size:1.25rem;font-weight:500;letter-spacing:.05em}.solution__merge-pdf .solution__content{display:grid;flex-grow:1}.solution__merge-pdf .solution__form{display:flex;flex-direction:column;gap:1rem}.solution__merge-pdf .solution__label{display:flex;flex-direction:column;font-size:.75rem;font-weight:500;gap:.3rem;white-space:nowrap;width:100%}.solution__merge-pdf .solution__hint{color:var(--solution-merge-pdf-primary-color);font-size:.75rem;font-weight:500;white-space:wrap}.solution__merge-pdf .solution__input{border:1px solid var(--solution-merge-pdf-input-border-color);border-radius:.375rem;font-size:1rem;line-height:32px;outline:1px solid transparent;outline-offset:-1px;padding:.25rem .5rem}.solution__merge-pdf .solution__file-input::-webkit-file-upload-button{background-color:var(--solution-merge-pdf-secondary-color);border:none;border-radius:.75rem;color:var(--solution-merge-pdf-primary-color);cursor:pointer;font-weight:500;margin-right:1rem;padding:.5rem 1rem}.solution__merge-pdf .solution__file-input:hover::-webkit-file-upload-button{background-color:var(--solution-merge-pdf-secondary-color)}.solution__merge-pdf .solution__btn{align-items:center;background:var(--solution-merge-pdf-secondary-color);border:none;border-radius:1rem;box-shadow:0 1px 2px 0 var(--solution-merge-pdf-btn-shadow-color);color:var(--solution-merge-pdf-primary-color);cursor:pointer;display:inline-flex;font-weight:600;gap:.5rem;justify-content:center;padding:.5rem 1rem}.solution__merge-pdf .solution__btn:hover{filter:brightness(.98)}.solution__merge-pdf .solution__btn .dashicons{font-size:1.2rem;vertical-align:middle}.solution__merge-pdf .solution__dropdown-wrapper{position:relative}.solution__merge-pdf .solution__dropdown{background-color:transparent;border-radius:.75rem;box-shadow:none;max-height:15rem;overflow:visible;position:relative;width:100%;z-index:10}.solution__merge-pdf .solution__dropdown--hidden{display:none}.solution__merge-pdf .solution__loading-section{display:none;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%)}.solution__merge-pdf .solution__loading-container{align-items:center;display:flex;gap:1rem;justify-content:center;transition:2s ease}.solution__merge-pdf .solution__download-section{align-items:center;display:flex;flex-direction:column;gap:2rem;height:100%;justify-content:center}.solution__merge-pdf .solution__download-section:last-child{margin-top:auto}.solution__merge-pdf .solution__download-container{align-items:center;display:flex;flex-direction:column;flex-grow:1;gap:1rem;justify-content:center}.solution__merge-pdf .solution__download-file-container{display:flex;flex-wrap:wrap;gap:1rem;justify-content:flex-start}.solution__merge-pdf .solution__download-file-name{max-width:12rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.solution__merge-pdf .solution__title-text{font-weight:600}.solution__merge-pdf .solution__text{font-weight:500}.solution__merge-pdf .solution__provided-text{display:flex;font-size:.7rem;justify-content:center;margin-top:.5rem}.solution__merge-pdf .solution__error-section{align-self:center;display:flex;flex-direction:column;justify-self:center}.solution__merge-pdf .solution__dot{animation:move .6s ease infinite;background:var(--solution-merge-pdf-tertiary-color);border-radius:50%;height:.65em;width:.65em}.solution__merge-pdf .solution__link{color:var(--solution-merge-pdf-tertiary-color)}.solution__merge-pdf .solution__select{display:flex;flex-direction:column;gap:.3rem;position:relative}.solution__merge-pdf .solution__select .solution__select-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 fill=%27%234f46e5%27 viewBox=%270 0 24 24%27%3E%3Cpath d=%27M7.41 8.58 12 13.17l4.59-4.59L18 10l-6 6-6-6z%27/%3E%3C/svg%3E");background-position:right 1rem center;background-repeat:no-repeat;background-size:1rem;border:1px solid var(--solution-merge-pdf-input-border-color);border-radius:.375rem;box-shadow:0 1px 2px 0 var(--solution-merge-pdf-shadow-color);color:var(--solution-merge-pdf-tertiary-color);cursor:pointer;height:42px;padding:0 .5rem}.solution__merge-pdf .solution__select .solution__select-input:focus{box-shadow:0 0 0 3px var(--solution-merge-pdf-secondary-color);outline:1px solid var(--solution-merge-pdf-primary-color)}.solution__merge-pdf .solution__select .solution__select-input option{padding:1rem}.solution__merge-pdf .solution__select .solution__select-input option[disabled]{color:var(--solution-merge-pdf-input-border-color)}.solution__merge-pdf .solution__select .solution__select-input:required:invalid{color:var(--solution-merge-pdf-input-border-color)}.solution__merge-pdf .solution__select .solution__select-input option:not([disabled]){color:var(--solution-merge-pdf-tertiary-color)}.solution__merge-pdf .solution_dropdown button{width:100%}.solution__merge-pdf .solution__dropdown-content{background-color:#fff;border-radius:10px;box-shadow:0 8px 16px 0 rgba(0,0,0,.2);display:none;flex-direction:column;left:50%;margin-top:3px;max-height:150px;min-width:100%;overflow:auto;padding:.5rem 0;position:absolute;top:100%;transform:translate(-50%);z-index:10}.solution__merge-pdf .solution__dropdown-content label{display:block;margin-top:10px;padding:0 1rem}.solution__merge-pdf .solution__dropdown-button{min-width:100%}.solution__merge-pdf .solution__dropdown-button:focus+.solution__dropdown-content,.solution__merge-pdf .solution__dropdown-content:hover{display:flex}.solution__merge-pdf .solution__group{display:flex;flex-wrap:wrap;gap:10px}.solution__merge-pdf .solution__group>div,.solution__merge-pdf .solution__group>label{flex:1}.solution__merge-pdf .solution__sortable-container{align-items:center;border:1px dashed var(--solution-merge-pdf-primary-color);border-radius:.375rem;cursor:move;display:flex;gap:2rem;margin:.5rem 0;padding:1rem}.solution__merge-pdf .solution__preview-container{align-items:center;background-color:#e2eff9;border-radius:.25rem;display:flex;justify-content:center;max-height:60px;max-width:60px;min-height:60px;min-width:60px;padding:1px 0;position:relative}.solution__merge-pdf .solution__preview-image{height:60px;-o-object-fit:contain;object-fit:contain;width:60px}.solution__merge-pdf .solution__file-info{display:flex;flex-direction:column;gap:.5rem}.solution__merge-pdf .solution__actions-group{display:flex;gap:1rem;margin-left:auto}@media(max-width:500px){.solution__merge-pdf .solution__sortable-container{flex-wrap:wrap;gap:1rem;justify-content:center}.solution__merge-pdf .solution__sortable-container>:first-child,.solution__merge-pdf .solution__sortable-container>:nth-child(2){flex:1 1 calc(50% - 0.5rem)}.solution__merge-pdf .solution__sortable-container>:nth-child(3){flex:1 1 100%;justify-content:center}.solution__merge-pdf .solution__actions-group{margin-left:0}}.solution__modal{background-color:rgba(0,0,0,.7);display:none;height:100%;left:0;position:fixed;width:100%}.solution__modal,.solution__toolbar{align-items:center;justify-content:center;top:0;z-index:1000}.solution__toolbar{background-color:hsla(0,0%,94%,.8);border-bottom-left-radius:.375rem;border-bottom-right-radius:.375rem;display:flex;gap:.1rem;left:50%;position:absolute;transform:translateX(-50%)}.solution__toolbar-button{background-color:transparent;border:none;border-radius:4px;color:#000;cursor:pointer;padding:10px 15px;transition:background-color .3s}.solution__toolbar-button:hover{color:#fff}.solution__pdf-renderer{align-items:center;background-color:#f4f4f4;border:1px solid #ddd;box-shadow:0 4px 8px rgba(0,0,0,.1);display:flex;justify-content:center;max-height:80%;max-width:80%;overflow:auto}.solution__page-indicator{align-self:center;color:#000;font-size:16px;text-align:center;white-space:nowrap}.solution__interactive-image{max-height:80%;max-width:80%;fit-object:contain}@keyframes rotation{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes move{0%{transform:translateX(50%)}50%{transform:translateX(-50%)}to{transform:translateX(50%)}}
     1/*!***************************************************************************************************************************************************************************************************************************************************!*\
     2  !*** css ../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[4].use[1]!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[4].use[2]!../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[4].use[3]!./src/style.scss ***!
     3  \***************************************************************************************************************************************************************************************************************************************************/
     4:root {
     5  --solution-merge-pdf-primary-color: #4f46e5;
     6  --solution-merge-pdf-secondary-color: #eef2ff;
     7  --solution-merge-pdf-tertiary-color: #000;
     8  --solution-merge-pdf-background-color: #fff;
     9  --solution-merge-pdf-border-color: #e5e7eb;
     10  --solution-merge-pdf-input-border-color: #d1d5db;
     11  --solution-merge-pdf-shadow-color: rgba(149, 157, 165, 0.2);
     12  --solution-merge-pdf-btn-shadow-color: rgba(0, 0, 0, 0.05);
     13  --solution-merge-pdf-dropdown-bg-color: #fff;
     14  --solution-merge-pdf-dropdown-shadow-color-1: rgba(0, 0, 0, 0.1);
     15  --solution-merge-pdf-dropdown-shadow-color-2: rgba(0, 0, 0, 0.1);
     16}
     17
     18.solution__merge-pdf .solution__container-wrapper {
     19  padding: 1rem;
     20  display: flex;
     21  flex-direction: column;
     22  gap: 1rem;
     23  color: var(--solution-merge-pdf-tertiary-color);
     24}
     25.solution__merge-pdf .solution__container {
     26  box-shadow: var(--solution-merge-pdf-shadow-color) 0 8px 24px;
     27  border: 1px solid var(--solution-merge-pdf-border-color);
     28  background-color: var(--solution-merge-pdf-background-color);
     29  border-radius: 0.75rem;
     30  padding: 1.5rem 1.5rem 0.5rem;
     31  position: relative;
     32  display: flex;
     33  flex-direction: column;
     34  min-height: 180px;
     35  gap: 1rem;
     36}
     37.solution__merge-pdf .solution__header {
     38  font-size: 1.25rem;
     39  letter-spacing: 0.05em;
     40  font-weight: 500;
     41}
     42.solution__merge-pdf .solution__content {
     43  flex-grow: 1;
     44  display: grid;
     45}
     46.solution__merge-pdf .solution__form {
     47  display: flex;
     48  flex-direction: column;
     49  gap: 1rem;
     50}
     51.solution__merge-pdf .solution__label {
     52  white-space: nowrap;
     53  width: 100%;
     54  font-size: 0.75rem;
     55  font-weight: 500;
     56  display: flex;
     57  flex-direction: column;
     58  gap: 0.3rem;
     59}
     60.solution__merge-pdf .solution__hint {
     61  font-size: 0.75rem;
     62  font-weight: 500;
     63  color: var(--solution-merge-pdf-primary-color);
     64  white-space: wrap;
     65}
     66.solution__merge-pdf .solution__input {
     67  border: 1px solid var(--solution-merge-pdf-input-border-color);
     68  border-radius: 0.375rem;
     69  padding: 0.25rem 0.5rem;
     70  font-size: 1rem;
     71  line-height: 32px;
     72  outline: 1px solid transparent;
     73  outline-offset: -1px;
     74}
     75.solution__merge-pdf .solution__file-input::-webkit-file-upload-button {
     76  margin-right: 1rem;
     77  padding: 0.5rem 1rem;
     78  border-radius: 0.75rem;
     79  border: none;
     80  background-color: var(--solution-merge-pdf-secondary-color);
     81  color: var(--solution-merge-pdf-primary-color);
     82  font-weight: 500;
     83  cursor: pointer;
     84}
     85.solution__merge-pdf .solution__file-input:hover::-webkit-file-upload-button {
     86  background-color: var(--solution-merge-pdf-secondary-color);
     87}
     88.solution__merge-pdf .solution__btn {
     89  display: inline-flex;
     90  align-items: center; /* Ensures the icon and text are aligned */
     91  justify-content: center;
     92  gap: 0.5rem; /* Adds space between the icon and the text */
     93  box-shadow: 0 1px 2px 0 var(--solution-merge-pdf-btn-shadow-color);
     94  background: var(--solution-merge-pdf-secondary-color);
     95  color: var(--solution-merge-pdf-primary-color);
     96  padding: 0.5rem 1rem;
     97  border-radius: 1rem;
     98  font-weight: 600;
     99  cursor: pointer;
     100  border: none;
     101}
     102.solution__merge-pdf .solution__btn:hover {
     103  filter: brightness(0.98);
     104}
     105.solution__merge-pdf .solution__btn .dashicons {
     106  font-size: 1.2rem; /* Adjust the size of the icon */
     107  vertical-align: middle; /* Aligns the icon vertically with the text */
     108}
     109.solution__merge-pdf .solution__dropdown-wrapper {
     110  position: relative;
     111}
     112.solution__merge-pdf .solution__dropdown {
     113  position: relative;
     114  overflow: visible;
     115  background-color: transparent;
     116  box-shadow: none;
     117  width: 100%;
     118  border-radius: 0.75rem;
     119  max-height: 15rem;
     120  z-index: 10;
     121}
     122.solution__merge-pdf .solution__dropdown--hidden {
     123  display: none;
     124}
     125.solution__merge-pdf .solution__loading-section {
     126  display: none;
     127  position: absolute;
     128  top: 50%;
     129  left: 50%;
     130  transform: translate(-50%, -50%);
     131}
     132.solution__merge-pdf .solution__loading-container {
     133  display: flex;
     134  justify-content: center;
     135  align-items: center;
     136  gap: 1rem;
     137  transition: 2s ease;
     138}
     139.solution__merge-pdf .solution__download-section {
     140  display: flex;
     141  justify-content: center;
     142  align-items: center;
     143  flex-direction: column;
     144  gap: 2rem;
     145  height: 100%;
     146}
     147.solution__merge-pdf .solution__download-section:last-child {
     148  margin-top: auto;
     149}
     150.solution__merge-pdf .solution__download-container {
     151  display: flex;
     152  flex-direction: column;
     153  flex-grow: 1;
     154  justify-content: center;
     155  align-items: center;
     156  gap: 1rem;
     157}
     158.solution__merge-pdf .solution__download-file-container {
     159  display: flex;
     160  flex-wrap: wrap;
     161  justify-content: flex-start;
     162  gap: 1rem;
     163}
     164.solution__merge-pdf .solution__download-file-name {
     165  white-space: nowrap;
     166  overflow: hidden;
     167  text-overflow: ellipsis;
     168  max-width: 12rem;
     169}
     170.solution__merge-pdf .solution__title-text {
     171  font-weight: 600;
     172}
     173.solution__merge-pdf .solution__text {
     174  font-weight: 500;
     175}
     176.solution__merge-pdf .solution__provided-text {
     177  display: flex;
     178  justify-content: center;
     179  font-size: 0.7rem;
     180  margin-top: 0.5rem;
     181}
     182.solution__merge-pdf .solution__error-section {
     183  display: flex;
     184  flex-direction: column;
     185  justify-self: center;
     186  align-self: center;
     187}
     188.solution__merge-pdf .solution__dot {
     189  background: var(--solution-merge-pdf-tertiary-color);
     190  height: 0.65em;
     191  width: 0.65em;
     192  border-radius: 50%;
     193  animation: move 0.6s ease infinite;
     194}
     195.solution__merge-pdf .solution__link {
     196  color: var(--solution-merge-pdf-tertiary-color);
     197}
     198.solution__merge-pdf .solution__select {
     199  display: flex;
     200  flex-direction: column;
     201  position: relative;
     202  gap: 0.3rem;
     203  /* Placeholder color */
     204  /* Style for selected option */
     205}
     206.solution__merge-pdf .solution__select .solution__select-input {
     207  height: 42px;
     208  padding: 0 0.5rem;
     209  border-radius: 0.375rem;
     210  border: 1px solid var(--solution-merge-pdf-input-border-color);
     211  color: var(--solution-merge-pdf-tertiary-color);
     212  box-shadow: 0 1px 2px 0 var(--solution-merge-pdf-shadow-color);
     213  -webkit-appearance: none;
     214     -moz-appearance: none;
     215          appearance: none;
     216  cursor: pointer;
     217  /* Arrow styling */
     218  background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns=%27http://www.w3.org/2000/svg%27 fill=%27%234f46e5%27 viewBox=%270 0 24 24%27%3E%3Cpath d=%27M7.41 8.58L12 13.17l4.59-4.59L18 10l-6 6-6-6z%27/%3E%3C/svg%3E");
     219  background-repeat: no-repeat;
     220  background-position: right 1rem center;
     221  background-size: 1rem;
     222}
     223.solution__merge-pdf .solution__select .solution__select-input:focus {
     224  outline: 1px solid var(--solution-merge-pdf-primary-color);
     225  box-shadow: 0 0 0 3px var(--solution-merge-pdf-secondary-color);
     226}
     227.solution__merge-pdf .solution__select .solution__select-input option {
     228  padding: 1rem;
     229}
     230.solution__merge-pdf .solution__select .solution__select-input option[disabled] {
     231  color: var(--solution-merge-pdf-input-border-color);
     232}
     233.solution__merge-pdf .solution__select .solution__select-input:required:invalid {
     234  color: var(--solution-merge-pdf-input-border-color);
     235}
     236.solution__merge-pdf .solution__select .solution__select-input option:not([disabled]) {
     237  color: var(--solution-merge-pdf-tertiary-color);
     238}
     239.solution__merge-pdf .solution_dropdown button {
     240  width: 100%;
     241}
     242.solution__merge-pdf .solution__dropdown-content {
     243  display: none;
     244  position: absolute;
     245  flex-direction: column;
     246  min-width: 100%;
     247  max-height: 150px;
     248  padding: 0.5rem 0;
     249  overflow: auto;
     250  background-color: #fff;
     251  box-shadow: 0 8px 16px 0 rgba(0, 0, 0, 0.2);
     252  z-index: 10;
     253  margin-top: 3px;
     254  border-radius: 10px;
     255  top: 100%;
     256  left: 50%;
     257  transform: translate(-50%, 0);
     258}
     259.solution__merge-pdf .solution__dropdown-content label {
     260  display: block;
     261  margin-top: 10px;
     262  padding: 0 1rem;
     263}
     264.solution__merge-pdf .solution__dropdown-button {
     265  min-width: 100%;
     266}
     267.solution__merge-pdf .solution__dropdown-content:hover,
     268.solution__merge-pdf .solution__dropdown-button:focus + .solution__dropdown-content {
     269  display: flex;
     270}
     271.solution__merge-pdf .solution__group {
     272  display: flex;
     273  flex-wrap: wrap;
     274  gap: 10px;
     275}
     276.solution__merge-pdf .solution__group > div,
     277.solution__merge-pdf .solution__group > label {
     278  flex: 1;
     279}
     280.solution__merge-pdf .solution__sortable-container {
     281  cursor: move;
     282  display: flex;
     283  padding: 1rem;
     284  margin: 0.5rem 0;
     285  border: 1px dashed var(--solution-merge-pdf-primary-color);
     286  border-radius: 0.375rem;
     287  align-items: center;
     288  gap: 2rem;
     289}
     290.solution__merge-pdf .solution__preview-container {
     291  position: relative;
     292  padding: 1px 0;
     293  background-color: #E2EFF9;
     294  border-radius: 0.25rem;
     295  min-height: 60px;
     296  min-width: 60px;
     297  max-width: 60px;
     298  max-height: 60px;
     299  display: flex;
     300  align-items: center;
     301  justify-content: center;
     302}
     303.solution__merge-pdf .solution__preview-image {
     304  width: 60px;
     305  height: 60px;
     306  -o-object-fit: contain;
     307     object-fit: contain;
     308}
     309.solution__merge-pdf .solution__file-info {
     310  display: flex;
     311  flex-direction: column;
     312  gap: 0.5rem;
     313}
     314.solution__merge-pdf .solution__actions-group {
     315  display: flex;
     316  gap: 1rem;
     317  margin-left: auto;
     318}
     319@media (max-width: 500px) {
     320  .solution__merge-pdf .solution__sortable-container {
     321    flex-wrap: wrap; /* Allow items to wrap to the next line */
     322    justify-content: center; /* Center item content */
     323    gap: 1rem;
     324  }
     325  .solution__merge-pdf .solution__sortable-container > :nth-child(1),
     326  .solution__merge-pdf .solution__sortable-container > :nth-child(2) {
     327    flex: 1 1 calc(50% - 0.5rem); /* Each takes 50% of the container width, minus gap */
     328  }
     329  .solution__merge-pdf .solution__sortable-container > :nth-child(3) {
     330    flex: 1 1 100%; /* Full width for the third item */
     331    justify-content: center; /* Center item content */
     332  }
     333  .solution__merge-pdf .solution__actions-group {
     334    margin-left: 0;
     335  }
     336}
     337
     338.solution__modal {
     339  display: none; /* Initially hidden */
     340  position: fixed;
     341  top: 0;
     342  left: 0;
     343  width: 100%; /* Full screen width */
     344  height: 100%; /* Full screen height */
     345  background-color: rgba(0, 0, 0, 0.7); /* Semi-transparent background */
     346  justify-content: center; /* Center content horizontally */
     347  align-items: center; /* Center content vertically */
     348  z-index: 1000; /* Ensures modal appears on top */
     349}
     350
     351/* Modal content styling */
     352.solution__toolbar {
     353  display: flex;
     354  position: absolute;
     355  justify-content: center;
     356  align-items: center;
     357  gap: 0.1rem;
     358  top: 0;
     359  left: 50%;
     360  transform: translateX(-50%);
     361  background-color: rgba(240, 240, 240, 0.8);
     362  border-bottom-left-radius: 0.375rem;
     363  border-bottom-right-radius: 0.375rem;
     364  z-index: 1000;
     365}
     366
     367.solution__toolbar-button {
     368  padding: 10px 15px;
     369  cursor: pointer;
     370  color: black;
     371  border: none;
     372  border-radius: 4px;
     373  transition: background-color 0.3s;
     374  background-color: transparent;
     375}
     376
     377.solution__toolbar-button:hover {
     378  color: white;
     379}
     380
     381.solution__pdf-renderer {
     382  display: flex;
     383  justify-content: center;
     384  align-items: center;
     385  overflow: auto;
     386  background-color: #f4f4f4;
     387  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
     388  border: 1px solid #ddd;
     389  max-width: 80%;
     390  max-height: 80%;
     391}
     392
     393.solution__page-indicator {
     394  color: black;
     395  font-size: 16px;
     396  align-self: center;
     397  text-align: center;
     398  white-space: nowrap;
     399}
     400
     401.solution__interactive-image {
     402  max-width: 80%;
     403  max-height: 80%;
     404  fit-object: contain;
     405}
     406
     407@keyframes rotation {
     408  0% {
     409    transform: rotate(0deg);
     410  }
     411  100% {
     412    transform: rotate(360deg);
     413  }
     414}
     415@keyframes move {
     416  0% {
     417    transform: translateX(50%);
     418  }
     419  50% {
     420    transform: translateX(-50%);
     421  }
     422  100% {
     423    transform: translateX(50%);
     424  }
     425}
     426
     427/*# sourceMappingURL=style-index.css.map*/
  • merge-pdf/trunk/build/view.asset.php

    r3225930 r3232408  
    1 <?php return array('dependencies' => array(), 'version' => 'd1a661c289727180ca90');
     1<?php return array('dependencies' => array(), 'version' => 'd3134df337a43cf2ea57');
  • merge-pdf/trunk/build/view.js

    r3225930 r3232408  
    1 document.querySelectorAll(".solution__merge-pdf .solution__form").forEach((e=>{e.addEventListener("submit",(function(t){t.preventDefault();const n=e.getAttribute("id"),o=e.querySelector('[name="file"]'),i=document.getElementById(`loadingSection_${n}`),s=document.getElementById(`errorSection_${n}`),l=document.getElementById(`resultMessage_${n}`),d=document.getElementById(`downloadSection_${n}`);e.style.display="none",i.style.display="flex",s.style.display="none",d.style.display="none";const c=new FormData;Array.from(o.files).forEach(((e,t)=>{c.append(`file[${t}]`,e)})),c.append("mergePDFFormNonce",wpApiSettings.mergePDFNonce),fetch(`${wpApiSettings.root}merge-pdf/v1/send-data`,{method:"POST",body:c}).then((e=>e.json())).then((e=>{e.id?function(e,t){const n=document.getElementById(`loadingSection_${t}`),o=document.getElementById(`errorSection_${t}`),a=document.getElementById(`resultMessage_${t}`),i=document.getElementById(`downloadSection_${t}`),s=document.getElementById(`downloadFilesContainer_${t}`);!function t(){fetch(`${wpApiSettings.root}merge-pdf/v1/status/${e}`).then((e=>e.json())).then((e=>{if("done"===e.status)n.style.display="none",s.innerHTML="",e.output&&e.output.files&&e.output.files.length>0?(e.output.files.forEach((e=>{const t=document.createElement("button");t.type="button",t.className="solution__btn",t.innerHTML=`\n                                <div class="dashicons dashicons-download"></div>\n                                <span class="solution__download-file-name">${e.name}</span>\n                            `,t.addEventListener("click",(t=>{t.preventDefault();const n=document.createElement("a");n.href=e.path,n.target="_blank",document.body.appendChild(n),n.click(),document.body.removeChild(n)}));const n=document.createElement("div");n.className="solution__download-file-container",n.appendChild(t),s.appendChild(n)})),i.style.display="flex"):(o.style.display="flex",a.innerText="No files available for download.");else{if("error"===e.status)throw new Error("Processing failed: "+e.message);setTimeout(t,500)}})).catch((()=>{n.style.display="none",o.style.display="flex",a.innerText="An unexpected error occurred. Please try again."}))}()}(e.id,n):(i.style.display="none",s.style.display="flex",l.innerText="An unexpected error occurred. Please try again.",document.getElementById(`${a}-file-list-container`).innerHTML="")})).catch((()=>{i.style.display="none",s.style.display="flex",l.innerText="An unexpected error occurred. Please try again.",document.getElementById(`${a}-file-list-container`).innerHTML=""}))}));const t=document.getElementById(`restartDownloadBtn_${e.id}`),n=document.getElementById(`restartErrorBtn_${e.id}`);function o(){e.reset(),e.style.display="flex",document.getElementById(`loadingSection_${e.id}`).style.display="none",document.getElementById(`downloadSection_${e.id}`).style.display="none",document.getElementById(`errorSection_${e.id}`).style.display="none",document.getElementById(`${a}-file-list-container`).innerHTML=""}t&&t.addEventListener("click",o),n&&n.addEventListener("click",o),pdfjsLib.GlobalWorkerOptions.workerSrc=wpApiSettings.pdfWorkerSrc;const a=e.getAttribute("id");let i,s,l,d,c,r=[];const u=document.createElement("div");u.setAttribute("id",`${a}-file-list-container`);const m=document.getElementById(`${a}-files-input`);async function p(e,t){const n=document.createElement("div");n.classList.add("solution__sortable-container");const o=document.createElement("div");o.classList.add("solution__preview-container"),e.type&&e.type.match(/image.*/)?function(e,t){const n=URL.createObjectURL(t),o=document.createElement("img");o.classList.add("solution__preview-image"),o.src=n,e.appendChild(o)}(o,e):e.type&&e.type.match("application/pdf")&&await async function(e,t){try{const n=URL.createObjectURL(t),o=await pdfjsLib.getDocument(n).promise,a=await o.getPage(1),i=a.getViewport({scale:1}),s=60/i.height,l=60/i.width,d=Math.min(s,l),c=a.getViewport({scale:d}),r=document.createElement("canvas");r.className="page",r.width=c.width,r.height=c.height;const u={canvasContext:r.getContext("2d"),viewport:c};await a.render(u).promise,e.appendChild(r)}catch(e){console.log(e)}}(o,e);const a=e.size>1048576?(e.size/1048576).toFixed(2)+" MB":(e.size/1024).toFixed(2)+" KB",u=`\n    <div class="solution__file-info">\n        <div class="solution__file-name">${e.name}</div>\n        <div class="solution__file-size">${a}</div>\n    </div>\n  `,m=document.createElement("div");m.classList.add("solution__file-info"),m.innerHTML=u;const p=function(e){const t=document.createElement("button");t.classList.add("solution__btn");const n=document.createElement("i");return n.className="fas fa-eye",n.title="View File",t.appendChild(n),t.addEventListener("click",(async t=>{t.preventDefault(),t.stopPropagation(),await async function(e){const t=document.createElement("div");if(t.id="solution__fullscreen-modal",t.classList.add("solution__modal"),t.style.display="flex",e.type&&e.type.match(/image.*/)){const n=function(e){const t=document.createElement("img");t.classList.add("solution__interactive-image"),t.style.transformOrigin="center center",t.setAttribute("data-scale","1"),t.setAttribute("data-rotation","0");const n=new FileReader;return n.onload=e=>{t.src=e.target.result},n.readAsDataURL(e),t}(e),o=_();t.appendChild(o),t.appendChild(n)}if(e.type&&e.type.match("application/pdf")){const n=await async function(e){const t=document.createElement("div");t.classList.add("solution__pdf-renderer");const n=document.createElement("canvas");n.id="solution__pdf-canvas",t.appendChild(n);const o=n.getContext("2d"),a=await pdfjsLib.getDocument(URL.createObjectURL(e)).promise;return i=a,s=1,l=a.numPages,d=0,c=1,await f(o),t}(e),o=_();t.appendChild(o),t.appendChild(n)}document.body.appendChild(t),t.addEventListener("click",(e=>{!function(e,t){e.target===t&&t.remove()}(e,t)}))}(e)})),t}(e),g=function(e,t){const n=document.createElement("button");n.className="solution__btn";const o=document.createElement("i");return o.className="fas fa-trash",o.title="Remove File",n.appendChild(o),n.addEventListener("click",(n=>{n.preventDefault(),n.stopPropagation(),r=r.filter((t=>t.name!==e.name));const o=new DataTransfer;r.forEach((e=>o.items.add(e))),t.target.files=o.files;const a=n.target.closest(".solution__sortable-container");a?.parentElement?.removeChild(a)})),n}(e,t),y=document.createElement("div");return y.classList.add("solution__actions-group"),y.appendChild(p),y.appendChild(g),n.appendChild(o),n.appendChild(m),n.appendChild(y),n}async function f(e){const t=await i.getPage(s),n=t.getViewport({scale:c,rotation:d}),o=e.canvas;o.width=n.width,o.height=n.height;const a={canvasContext:e,viewport:n};await t.render(a).promise;const r=document.getElementById("solution__page-indicator");r&&(r.textContent=`${s} / ${l}`)}function _(){const e=document.createElement("div");e.classList.add("solution__toolbar");const t=[{text:"Left",id:"solution__previous-btn",icon:"fa-solid fa-chevron-left"},{text:"Right",id:"solution__next-btn",icon:"fa-solid fa-chevron-right"},{text:"Zoom In",id:"solution__zoom-in-btn",icon:"fa-solid fa-magnifying-glass-plus"},{text:"Zoom Out",id:"solution__zoom-out-btn",icon:"fa-solid fa-magnifying-glass-minus"},{text:"Rotate Left",id:"solution__rotate-left-btn",icon:"fa-solid fa-arrow-rotate-left"},{text:"Rotate Right",id:"solution__rotate-right-btn",icon:"fa-solid fa-arrow-rotate-right"},{text:"Close",id:"close-modal-btn",icon:"fa-solid fa-xmark"}],n=g(t[0]);e.appendChild(n);const o=document.createElement("span");o.id="solution__page-indicator",o.textContent=`${s||1} / ${l||1}`,o.classList.add("solution__page-indicator"),e.appendChild(o);const a=g(t[1]);return e.appendChild(a),t.slice(2).forEach((t=>{const n=g(t);e.appendChild(n)})),e}function g(e){const t=document.createElement("button");t.id=e.id,t.classList.add("solution__toolbar-button");const n=document.createElement("i");return n.className=e.icon,t.appendChild(n),t.addEventListener("click",(async t=>{t.preventDefault(),t.stopPropagation(),await async function(e){const t=document.querySelector("#solution__pdf-canvas"),n=document.querySelector(".solution__interactive-image");"close-modal-btn"!==e?t?await async function(e){const t=document.getElementById("solution__pdf-canvas").getContext("2d");switch(e){case"solution__previous-btn":s>1&&(s--,await f(t));break;case"solution__next-btn":s<l&&(s++,await f(t));break;case"solution__zoom-in-btn":c+=.2,await f(t);break;case"solution__zoom-out-btn":c-=.2,await f(t);break;case"solution__rotate-left-btn":d-=90,await f(t);break;case"solution__rotate-right-btn":d+=90,await f(t);break;case"close-modal-btn":break;default:console.log(`Unknown action: ${e}`)}}(e):n&&function(e,t){let n=parseFloat(t.getAttribute("data-scale"))||1,o=parseInt(t.getAttribute("data-rotation"))||0;const a=t.naturalWidth,i=t.naturalHeight,s=t.parentElement,l=s.offsetWidth,d=s.offsetHeight;switch(e){case"solution__zoom-in-btn":n=Math.min(n+.1,5);break;case"solution__zoom-out-btn":n=Math.max(n-.1,.1);break;case"solution__rotate-left-btn":o=(o-90)%360;break;case"solution__rotate-right-btn":o=(o+90)%360}let c=a*n,r=i*n;90===Math.abs(o%180)&&([c,r]=[r,c],c=.8*l,r=c/a*i,r=.8*d,r=r/a*i),t.style.transform=`scale(${n}) rotate(${o}deg)`,t.style.width=`${c}px`,t.style.height=`${r}px`,t.style.objectFit="contain",t.setAttribute("data-scale",n),t.setAttribute("data-rotation",o)}(e,n):document.getElementById("solution__fullscreen-modal")?.remove()}(e.id)})),t}m.parentElement.appendChild(u),m.addEventListener("change",(async e=>{const t=document.getElementById(`${a}-file-list-container`),n=Array.from(e.target.files).filter((e=>!r.some((t=>t.name===e.name&&t.size===e.size))));r=[...r,...n];const o=new DataTransfer;r.forEach((e=>{o.items.add(e)})),e.target.files=o.files;for(const o of n){const n=await p(o,e);t.appendChild(n)}!function(e,t){e._sortableInstance&&e._sortableInstance.destroy(),e._sortableInstance=new Sortable(e,{animation:150,onEnd:()=>{const n=new DataTransfer;Array.from(e.children).map((e=>{const t=e.querySelector(`#${a}-file-list-container .solution__file-name`);return t?t.textContent:null})).forEach((e=>{const o=Array.from(t.target.files).find((t=>t.name===e));o&&n.items.add(o)})),t.target.files=n.files}})}(t,e)}))}));
     1/******/ (() => { // webpackBootstrap
     2/*!*********************!*\
     3  !*** ./src/view.js ***!
     4  \*********************/
     5document.querySelectorAll('.solution__merge-pdf .solution__form').forEach(form => {
     6  form.addEventListener('submit', function (event) {
     7    event.preventDefault();
     8    const formId = form.getAttribute('id');
     9    const fileInput = form.querySelector('[name="file"]');
     10    const loadingSection = document.getElementById(`loadingSection_${formId}`);
     11    const errorSection = document.getElementById(`errorSection_${formId}`);
     12    const resultMessage = document.getElementById(`resultMessage_${formId}`);
     13    const downloadSection = document.getElementById(`downloadSection_${formId}`);
     14
     15    // Hide the form, show the loading indicator, hide error and download sections
     16    form.style.display = 'none';
     17    loadingSection.style.display = 'flex';
     18    errorSection.style.display = 'none'; // Hide error section
     19    downloadSection.style.display = 'none';
     20    const formData = new FormData();
     21    Array.from(fileInput.files).forEach((file, index) => {
     22      formData.append(`file[${index}]`, file);
     23    });
     24    formData.append('mergePDFFormNonce', wpApiSettings.mergePDFNonce);
     25    fetch(`${wpApiSettings.root}merge-pdf/v1/send-data`, {
     26      method: 'POST',
     27      body: formData
     28    }).then(response => response.json()).then(data => {
     29      if (data.id) {
     30        pollStatus(data.id, formId);
     31      } else {
     32        loadingSection.style.display = 'none';
     33        errorSection.style.display = 'flex';
     34        resultMessage.innerText = 'An unexpected error occurred. Please try again.';
     35        const fileListContainer = document.getElementById(`${containerId}-file-list-container`);
     36        fileListContainer.innerHTML = '';
     37      }
     38    }).catch(() => {
     39      loadingSection.style.display = 'none';
     40      errorSection.style.display = 'flex';
     41      resultMessage.innerText = 'An unexpected error occurred. Please try again.';
     42      const fileListContainer = document.getElementById(`${containerId}-file-list-container`);
     43      fileListContainer.innerHTML = '';
     44    });
     45  });
     46
     47  // Add event listener for restart buttons
     48  const restartDownloadBtn = document.getElementById(`restartDownloadBtn_${form.id}`);
     49  const restartErrorBtn = document.getElementById(`restartErrorBtn_${form.id}`);
     50
     51  // Function to restart the process and reset the form
     52  function resetForm() {
     53    form.reset();
     54    form.style.display = 'flex';
     55    document.getElementById(`loadingSection_${form.id}`).style.display = 'none'; // Hide loading
     56    document.getElementById(`downloadSection_${form.id}`).style.display = 'none'; // Hide download
     57    document.getElementById(`errorSection_${form.id}`).style.display = 'none'; // Hide error section
     58    const fileListContainer = document.getElementById(`${containerId}-file-list-container`);
     59    fileListContainer.innerHTML = '';
     60  }
     61  if (restartDownloadBtn) {
     62    restartDownloadBtn.addEventListener('click', resetForm);
     63  }
     64  if (restartErrorBtn) {
     65    restartErrorBtn.addEventListener('click', resetForm);
     66  }
     67  pdfjsLib.GlobalWorkerOptions.workerSrc = wpApiSettings.pdfWorkerSrc;
     68  const containerId = form.getAttribute('id');
     69  let currentPdf, currentPage, totalPages, rotation, scale;
     70  let allFiles = [];
     71  const fileListContainer = document.createElement("div");
     72  fileListContainer.setAttribute(`id`, `${containerId}-file-list-container`);
     73  const formField = document.getElementById(`${containerId}-files-input`);
     74  const formFieldParent = formField.parentElement;
     75  formFieldParent.appendChild(fileListContainer);
     76  formField.addEventListener("change", async event => {
     77    const fileListContainer = document.getElementById(`${containerId}-file-list-container`);
     78    const newFiles = Array.from(event.target.files);
     79
     80    // Merge new files with the existing files but remove duplicates within new files
     81    const uniqueNewFiles = newFiles.filter(file => !allFiles.some(existingFile => existingFile.name === file.name && existingFile.size === file.size));
     82
     83    // Merge the unique new files with the existing files
     84    allFiles = [...allFiles, ...uniqueNewFiles];
     85    const dataTransfer = new DataTransfer();
     86
     87    // Add all unique files to DataTransfer
     88    allFiles.forEach(file => {
     89      dataTransfer.items.add(file);
     90    });
     91    event.target.files = dataTransfer.files;
     92
     93    // Only create and append list items for new files that aren't already in the list
     94    for (const file of uniqueNewFiles) {
     95      const listItem = await createFileListItem(file, event);
     96      fileListContainer.appendChild(listItem);
     97    }
     98    createSortableInstance(fileListContainer, event);
     99  });
     100  async function createFileListItem(file, event) {
     101    const listItem = document.createElement("div");
     102    listItem.classList.add("solution__sortable-container");
     103    const previewContainer = document.createElement("div");
     104    previewContainer.classList.add("solution__preview-container");
     105    if (file.type && file.type.match(/image.*/)) {
     106      createPreviewImage(previewContainer, file);
     107    } else if (file.type && file.type.match("application/pdf")) {
     108      await createPreviewPdf(previewContainer, file);
     109    }
     110    const fileSize = file.size > 1024 * 1024 ? (file.size / (1024 * 1024)).toFixed(2) + " MB" : (file.size / 1024).toFixed(2) + " KB";
     111    const fileInfoContent = `
     112    <div class="solution__file-info">
     113        <div class="solution__file-name">${file.name}</div>
     114        <div class="solution__file-size">${fileSize}</div>
     115    </div>
     116  `;
     117    const fileInfo = document.createElement("div");
     118    fileInfo.classList.add("solution__file-info");
     119    fileInfo.innerHTML = fileInfoContent;
     120    const previewButton = createPreviewButton(file);
     121    const removeButton = createRemoveButton(file, event);
     122    const actionContainer = document.createElement("div");
     123    actionContainer.classList.add("solution__actions-group");
     124    actionContainer.appendChild(previewButton);
     125    actionContainer.appendChild(removeButton);
     126    listItem.appendChild(previewContainer);
     127    listItem.appendChild(fileInfo);
     128    listItem.appendChild(actionContainer);
     129    return listItem;
     130  }
     131  function createRemoveButton(file, event) {
     132    const removeButton = document.createElement("button");
     133    removeButton.className = "solution__btn";
     134    const removeIcon = document.createElement("i");
     135    removeIcon.className = "fas fa-trash";
     136    removeIcon.title = "Remove File";
     137    removeButton.appendChild(removeIcon);
     138    removeButton.addEventListener("click", e => {
     139      e.preventDefault();
     140      e.stopPropagation();
     141
     142      // Remove the file from allFiles as well
     143      allFiles = allFiles.filter(f => f.name !== file.name); // Update the array directly
     144
     145      const dataTransfer = new DataTransfer();
     146      allFiles.forEach(f => dataTransfer.items.add(f));
     147      event.target.files = dataTransfer.files;
     148      const listItem = e.target.closest(".solution__sortable-container");
     149      listItem?.parentElement?.removeChild(listItem);
     150    });
     151    return removeButton;
     152  }
     153  function createPreviewButton(file) {
     154    const previewButton = document.createElement("button");
     155    previewButton.classList.add("solution__btn");
     156    const viewIcon = document.createElement("i");
     157    viewIcon.className = "fas fa-eye";
     158    viewIcon.title = "View File";
     159    previewButton.appendChild(viewIcon);
     160    previewButton.addEventListener("click", async e => {
     161      e.preventDefault();
     162      e.stopPropagation();
     163      await showModal(file);
     164    });
     165    return previewButton;
     166  }
     167  function createSortableInstance(element, event) {
     168    if (element._sortableInstance) {
     169      element._sortableInstance.destroy();
     170    }
     171    element._sortableInstance = new Sortable(element, {
     172      animation: 150,
     173      onEnd: () => {
     174        const dataTransfer = new DataTransfer();
     175        const newFileList = Array.from(element.children).map(item => {
     176          const fileNameElement = item.querySelector(`#${containerId}-file-list-container .solution__file-name`);
     177          return fileNameElement ? fileNameElement.textContent : null;
     178        });
     179        newFileList.forEach(fileName => {
     180          const file = Array.from(event.target.files).find(f => f.name === fileName);
     181          if (file) {
     182            dataTransfer.items.add(file);
     183          }
     184        });
     185        event.target.files = dataTransfer.files;
     186      }
     187    });
     188  }
     189  function createPreviewImage(element, file) {
     190    const fileURL = URL.createObjectURL(file);
     191    const img = document.createElement("img");
     192    img.classList.add("solution__preview-image");
     193    img.src = fileURL;
     194    element.appendChild(img);
     195  }
     196  async function createPreviewPdf(element, file) {
     197    try {
     198      const fileURL = URL.createObjectURL(file);
     199      const pdf = await pdfjsLib.getDocument(fileURL).promise;
     200      const page = await pdf.getPage(1); // Render the first page only
     201
     202      const preCalculateViewport = page.getViewport({
     203        scale: 1
     204      });
     205      const scaleHeight = 60 / preCalculateViewport.height;
     206      const scaleWidth = 60 / preCalculateViewport.width;
     207      const scale = Math.min(scaleHeight, scaleWidth);
     208      const viewport = page.getViewport({
     209        scale
     210      });
     211      const canvas = document.createElement("canvas");
     212      canvas.className = "page";
     213      canvas.width = viewport.width;
     214      canvas.height = viewport.height;
     215      const context = canvas.getContext("2d");
     216      const renderContext = {
     217        canvasContext: context,
     218        viewport: viewport
     219      };
     220      await page.render(renderContext).promise;
     221      element.appendChild(canvas);
     222    } catch (error) {
     223      console.log(error);
     224    }
     225  }
     226  async function showModal(file) {
     227    const fullscreenModal = document.createElement("div");
     228    fullscreenModal.id = "solution__fullscreen-modal";
     229    fullscreenModal.classList.add("solution__modal");
     230    fullscreenModal.style.display = "flex"; // Show the modal when opened
     231
     232    if (file.type && file.type.match(/image.*/)) {
     233      const imageContent = createImageRenderer(file);
     234      const toolbar = createToolbar();
     235      fullscreenModal.appendChild(toolbar); // Add toolbar to the top of the modal content
     236      fullscreenModal.appendChild(imageContent); // Render the image content
     237    }
     238    if (file.type && file.type.match("application/pdf")) {
     239      const pdfContent = await createPdfRenderer(file);
     240      const toolbar = createToolbar();
     241      fullscreenModal.appendChild(toolbar); // Add toolbar to the top of the modal content
     242      fullscreenModal.appendChild(pdfContent); // Render the PDF content
     243    }
     244    document.body.appendChild(fullscreenModal); // Add the modal to the body
     245
     246    // Add event listener to close the modal when clicking outside the content or toolbar
     247    fullscreenModal.addEventListener("click", event => {
     248      closeModal(event, fullscreenModal);
     249    });
     250  }
     251  function closeModal(event, modal) {
     252    if (event.target === modal) {
     253      modal.remove();
     254    }
     255  }
     256  function createImageRenderer(file) {
     257    const image = document.createElement("img");
     258    image.classList.add("solution__interactive-image");
     259    image.style.transformOrigin = "center center"; // Proper zoom/rotation pivot
     260    image.setAttribute("data-scale", "1"); // Initialize scale
     261    image.setAttribute("data-rotation", "0"); // Initialize rotation
     262
     263    // Load the image content
     264    const reader = new FileReader();
     265    reader.onload = event => {
     266      image.src = event.target.result; // Set image source
     267    };
     268    reader.readAsDataURL(file);
     269    return image;
     270  }
     271  async function createPdfRenderer(file) {
     272    const pdfRendererDiv = document.createElement("div");
     273    pdfRendererDiv.classList.add("solution__pdf-renderer");
     274
     275    // Create a canvas for rendering
     276    const canvas = document.createElement("canvas");
     277    canvas.id = "solution__pdf-canvas";
     278    pdfRendererDiv.appendChild(canvas);
     279    const ctx = canvas.getContext("2d");
     280
     281    // Load the PDF using PDF.js
     282    const pdf = await pdfjsLib.getDocument(URL.createObjectURL(file)).promise;
     283
     284    // Store PDF and page details in the instance
     285    currentPdf = pdf;
     286    currentPage = 1;
     287    totalPages = pdf.numPages;
     288    rotation = 0;
     289    scale = 1;
     290
     291    // Render the first page
     292    await renderPage(ctx);
     293    return pdfRendererDiv;
     294  }
     295  async function renderPage(ctx) {
     296    const page = await currentPdf.getPage(currentPage);
     297
     298    // Adjust canvas size based on the PDF page
     299    const viewport = page.getViewport({
     300      scale,
     301      rotation
     302    });
     303    const canvas = ctx.canvas;
     304    canvas.width = viewport.width;
     305    canvas.height = viewport.height;
     306    const renderContext = {
     307      canvasContext: ctx,
     308      viewport: viewport
     309    };
     310    await page.render(renderContext).promise;
     311
     312    // Update toolbar state (for buttons and page indicator)
     313    const pageIndicator = document.getElementById("solution__page-indicator");
     314    if (pageIndicator) {
     315      pageIndicator.textContent = `${currentPage} / ${totalPages}`;
     316    }
     317  }
     318  function createToolbar() {
     319    const toolbar = document.createElement("div");
     320    toolbar.classList.add("solution__toolbar");
     321
     322    // Buttons for toolbar
     323    const buttons = [{
     324      text: "Left",
     325      id: "solution__previous-btn",
     326      icon: "fa-solid fa-chevron-left"
     327    }, {
     328      text: "Right",
     329      id: "solution__next-btn",
     330      icon: "fa-solid fa-chevron-right"
     331    }, {
     332      text: "Zoom In",
     333      id: "solution__zoom-in-btn",
     334      icon: "fa-solid fa-magnifying-glass-plus"
     335    }, {
     336      text: "Zoom Out",
     337      id: "solution__zoom-out-btn",
     338      icon: "fa-solid fa-magnifying-glass-minus"
     339    }, {
     340      text: "Rotate Left",
     341      id: "solution__rotate-left-btn",
     342      icon: "fa-solid fa-arrow-rotate-left"
     343    }, {
     344      text: "Rotate Right",
     345      id: "solution__rotate-right-btn",
     346      icon: "fa-solid fa-arrow-rotate-right"
     347    }, {
     348      text: "Close",
     349      id: "close-modal-btn",
     350      icon: "fa-solid fa-xmark"
     351    }];
     352
     353    // Create Left button
     354    const leftBtn = createToolbarButton(buttons[0]);
     355    toolbar.appendChild(leftBtn);
     356
     357    // Create page indicator
     358    const pageIndicator = document.createElement("span");
     359    pageIndicator.id = "solution__page-indicator";
     360    pageIndicator.textContent = `${currentPage || 1} / ${totalPages || 1}`;
     361    pageIndicator.classList.add("solution__page-indicator");
     362    toolbar.appendChild(pageIndicator);
     363
     364    // Create Right button
     365    const rightBtn = createToolbarButton(buttons[1]);
     366    toolbar.appendChild(rightBtn);
     367
     368    // Add remaining buttons
     369    buttons.slice(2).forEach(button => {
     370      const btn = createToolbarButton(button);
     371      toolbar.appendChild(btn);
     372    });
     373    return toolbar;
     374  }
     375  function createToolbarButton(buttonConfig) {
     376    const btn = document.createElement("button");
     377    btn.id = buttonConfig.id;
     378    btn.classList.add("solution__toolbar-button");
     379
     380    // Create the icon element
     381    const icon = document.createElement("i");
     382    icon.className = buttonConfig.icon; // Use the icon class from buttonConfig
     383    btn.appendChild(icon);
     384
     385    // Assign the event listener
     386    btn.addEventListener("click", async e => {
     387      e.preventDefault();
     388      e.stopPropagation();
     389      await handleToolbarAction(buttonConfig.id); // Handle action here
     390    });
     391    return btn;
     392  }
     393  async function handleToolbarAction(actionId) {
     394    const pdfCanvas = document.querySelector("#solution__pdf-canvas");
     395    const image = document.querySelector(".solution__interactive-image");
     396    if (actionId === "close-modal-btn") {
     397      document.getElementById("solution__fullscreen-modal")?.remove();
     398      return;
     399    }
     400    if (pdfCanvas) {
     401      // Handle PDF-specific actions (left, right, etc.)
     402      await handlePdfToolbarAction(actionId);
     403    } else if (image) {
     404      // Handle image-specific actions (zoom, rotate, etc.)
     405      handleImageToolbarActions(actionId, image);
     406    }
     407  }
     408  function handleImageToolbarActions(actionId, image) {
     409    let scale = parseFloat(image.getAttribute("data-scale")) || 1;
     410    let rotation = parseInt(image.getAttribute("data-rotation")) || 0;
     411
     412    // Store original dimensions
     413    const originalWidth = image.naturalWidth;
     414    const originalHeight = image.naturalHeight;
     415
     416    // Get parent element's dimensions
     417    const parent = image.parentElement;
     418    const parentWidth = parent.offsetWidth;
     419    const parentHeight = parent.offsetHeight;
     420    switch (actionId) {
     421      case "solution__zoom-in-btn":
     422        scale = Math.min(scale + 0.1, 5); // Cap zoom at 5x
     423        break;
     424      case "solution__zoom-out-btn":
     425        scale = Math.max(scale - 0.1, 0.1); // Minimum zoom to 0.1x
     426        break;
     427      case "solution__rotate-left-btn":
     428        rotation = (rotation - 90) % 360; // Rotate counter-clockwise
     429        break;
     430      case "solution__rotate-right-btn":
     431        rotation = (rotation + 90) % 360; // Rotate clockwise
     432        break;
     433    }
     434
     435    // Determine whether to swap width and height
     436    let adjustedWidth = originalWidth * scale;
     437    let adjustedHeight = originalHeight * scale;
     438    if (Math.abs(rotation % 180) === 90) {
     439      // Swap width and height if rotated 90 or 270 degrees
     440      [adjustedWidth, adjustedHeight] = [adjustedHeight, adjustedWidth];
     441      adjustedWidth = parentWidth * 0.8;
     442      adjustedHeight = adjustedWidth / originalWidth * originalHeight;
     443      adjustedHeight = parentHeight * 0.8;
     444      adjustedHeight = adjustedHeight / originalWidth * originalHeight;
     445    }
     446
     447    // Apply updated dimensions
     448    image.style.transform = `scale(${scale}) rotate(${rotation}deg)`;
     449    image.style.width = `${adjustedWidth}px`;
     450    image.style.height = `${adjustedHeight}px`;
     451    image.style.objectFit = "contain";
     452
     453    // Update rotation data (only for internal tracking)
     454    image.setAttribute("data-scale", scale); // Store current scale
     455    image.setAttribute("data-rotation", rotation); // Store current rotation
     456  }
     457  async function handlePdfToolbarAction(actionId) {
     458    const canvas = document.getElementById("solution__pdf-canvas");
     459    const ctx = canvas.getContext("2d");
     460    switch (actionId) {
     461      case "solution__previous-btn":
     462        if (currentPage > 1) {
     463          currentPage--;
     464          await renderPage(ctx);
     465        }
     466        break;
     467      case "solution__next-btn":
     468        if (currentPage < totalPages) {
     469          currentPage++;
     470          await renderPage(ctx);
     471        }
     472        break;
     473      case "solution__zoom-in-btn":
     474        scale += 0.2;
     475        await renderPage(ctx);
     476        break;
     477      case "solution__zoom-out-btn":
     478        scale -= 0.2;
     479        await renderPage(ctx);
     480        break;
     481      case "solution__rotate-left-btn":
     482        rotation -= 90;
     483        await renderPage(ctx);
     484        break;
     485      case "solution__rotate-right-btn":
     486        rotation += 90;
     487        await renderPage(ctx);
     488        break;
     489      case "close-modal-btn":
     490        break;
     491      default:
     492        console.log(`Unknown action: ${actionId}`);
     493    }
     494  }
     495});
     496function pollStatus(id, formId) {
     497  const loadingSection = document.getElementById(`loadingSection_${formId}`);
     498  const errorSection = document.getElementById(`errorSection_${formId}`);
     499  const resultMessage = document.getElementById(`resultMessage_${formId}`);
     500  const downloadSection = document.getElementById(`downloadSection_${formId}`);
     501  const downloadFilesContainer = document.getElementById(`downloadFilesContainer_${formId}`);
     502  function checkStatus() {
     503    fetch(`${wpApiSettings.root}merge-pdf/v1/status/${id}`).then(response => response.json()).then(data => {
     504      if (data.status === 'done') {
     505        loadingSection.style.display = 'none';
     506        downloadFilesContainer.innerHTML = ''; // Clear previous downloads
     507
     508        if (data.output && data.output.files && data.output.files.length > 0) {
     509          data.output.files.forEach(file => {
     510            // Create download button
     511            const downloadButton = document.createElement('button');
     512            downloadButton.type = 'button';
     513            downloadButton.className = 'solution__btn';
     514            downloadButton.innerHTML = `
     515                                <div class="dashicons dashicons-download"></div>
     516                                <span class="solution__download-file-name">${file.name}</span>
     517                            `;
     518
     519            // Set download functionality
     520            downloadButton.addEventListener('click', event => {
     521              event.preventDefault();
     522              const anchor = document.createElement('a');
     523              anchor.href = file.path;
     524              anchor.target = '_blank';
     525              document.body.appendChild(anchor);
     526              anchor.click();
     527              document.body.removeChild(anchor);
     528            });
     529
     530            // Append elements to the container
     531            const fileContainer = document.createElement('div');
     532            fileContainer.className = 'solution__download-file-container';
     533            fileContainer.appendChild(downloadButton);
     534            downloadFilesContainer.appendChild(fileContainer);
     535          });
     536          downloadSection.style.display = 'flex'; // Show download section
     537        } else {
     538          errorSection.style.display = 'flex';
     539          resultMessage.innerText = 'No files available for download.';
     540        }
     541      } else if (data.status === 'error') {
     542        throw new Error('Processing failed: ' + data.message);
     543      } else {
     544        setTimeout(checkStatus, 500);
     545      }
     546    }).catch(() => {
     547      loadingSection.style.display = 'none';
     548      errorSection.style.display = 'flex';
     549      resultMessage.innerText = 'An unexpected error occurred. Please try again.';
     550    });
     551  }
     552  checkStatus();
     553}
     554/******/ })()
     555;
     556//# sourceMappingURL=view.js.map
  • merge-pdf/trunk/languages/merge-pdf-ar.po

    r3225930 r3232408  
    3131#. Author of the plugin
    3232#: merge-pdf.php
    33 msgid "The WordPress Contributors"
    34 msgstr "مساهمو ووردبريس"
     33msgid "Cross Service Solutions"
     34msgstr "Cross Service Solutions"
    3535
    3636#: build/render.php:72 src/render.php:72 build/index.js:46 src/edit.js:21
  • merge-pdf/trunk/languages/merge-pdf-de_DE.po

    r3225930 r3232408  
    3131#. Author of the plugin
    3232#: merge-pdf.php
    33 msgid "The WordPress Contributors"
    34 msgstr "Die WordPress-Mitwirkenden"
     33msgid "Cross Service Solutions"
     34msgstr "Cross Service Solutions"
    3535
    3636#: build/render.php:72 src/render.php:72 build/index.js:46 src/edit.js:21
  • merge-pdf/trunk/languages/merge-pdf-es_ES.po

    r3225930 r3232408  
    3131#. Author of the plugin
    3232#: merge-pdf.php
    33 msgid "The WordPress Contributors"
    34 msgstr "Los Colaboradores de WordPress"
     33msgid "Cross Service Solutions"
     34msgstr "Cross Service Solutions"
    3535
    3636#: build/render.php:72 src/render.php:72 build/index.js:46 src/edit.js:21
  • merge-pdf/trunk/languages/merge-pdf-fr_FR.po

    r3225930 r3232408  
    3131#. Author of the plugin
    3232#: merge-pdf.php
    33 msgid "The WordPress Contributors"
    34 msgstr "Les Contributeurs WordPress"
     33msgid "Cross Service Solutions"
     34msgstr "Cross Service Solutions"
    3535
    3636#: build/render.php:72 src/render.php:72 build/index.js:46 src/edit.js:21
  • merge-pdf/trunk/languages/merge-pdf-id_ID.po

    r3225930 r3232408  
    3131#. Author of the plugin
    3232#: merge-pdf.php
    33 msgid "The WordPress Contributors"
    34 msgstr "Para Kontributor WordPress"
     33msgid "Cross Service Solutions"
     34msgstr "Cross Service Solutions"
    3535
    3636#: build/render.php:72 src/render.php:72 build/index.js:46 src/edit.js:21
  • merge-pdf/trunk/languages/merge-pdf-it_IT.po

    r3225930 r3232408  
    3131#. Author of the plugin
    3232#: merge-pdf.php
    33 msgid "The WordPress Contributors"
    34 msgstr "I contributori di WordPress"
     33msgid "Cross Service Solutions"
     34msgstr "Cross Service Solutions"
    3535
    3636#: build/render.php:72 src/render.php:72 build/index.js:46 src/edit.js:21
  • merge-pdf/trunk/languages/merge-pdf-ja.po

    r3225930 r3232408  
    3131#. Author of the plugin
    3232#: merge-pdf.php
    33 msgid "The WordPress Contributors"
    34 msgstr "WordPressの貢献者たち"
     33msgid "Cross Service Solutions"
     34msgstr "Cross Service Solutions"
    3535
    3636#: build/render.php:72 src/render.php:72 build/index.js:46 src/edit.js:21
  • merge-pdf/trunk/languages/merge-pdf-ko_KR.po

    r3225930 r3232408  
    3131#. Author of the plugin
    3232#: merge-pdf.php
    33 msgid "The WordPress Contributors"
    34 msgstr "워드프레스 기여자들"
     33msgid "Cross Service Solutions"
     34msgstr "Cross Service Solutions"
    3535
    3636#: build/render.php:72 src/render.php:72 build/index.js:46 src/edit.js:21
  • merge-pdf/trunk/languages/merge-pdf-pt_PT.po

    r3225930 r3232408  
    3131#. Author of the plugin
    3232#: merge-pdf.php
    33 msgid "The WordPress Contributors"
    34 msgstr "Os Colaboradores do WordPress"
     33msgid "Cross Service Solutions"
     34msgstr "Cross Service Solutions"
    3535
    3636#: build/render.php:72 src/render.php:72 build/index.js:46 src/edit.js:21
  • merge-pdf/trunk/languages/merge-pdf-ru_RU.po

    r3225930 r3232408  
    3131#. Author of the plugin
    3232#: merge-pdf.php
    33 msgid "The WordPress Contributors"
    34 msgstr "Участники WordPress"
     33msgid "Cross Service Solutions"
     34msgstr "Cross Service Solutions"
    3535
    3636#: build/render.php:72 src/render.php:72 build/index.js:46 src/edit.js:21
  • merge-pdf/trunk/languages/merge-pdf-th.po

    r3225930 r3232408  
    3131#. Author of the plugin
    3232#: merge-pdf.php
    33 msgid "The WordPress Contributors"
    34 msgstr "ผู้มีส่วนร่วมใน WordPress"
     33msgid "Cross Service Solutions"
     34msgstr "Cross Service Solutions"
    3535
    3636#: build/render.php:72 src/render.php:72 build/index.js:46 src/edit.js:21
  • merge-pdf/trunk/languages/merge-pdf-tr_TR.po

    r3225930 r3232408  
    3131#. Author of the plugin
    3232#: merge-pdf.php
    33 msgid "The WordPress Contributors"
    34 msgstr "WordPress Katkıda Bulunanlar"
     33msgid "Cross Service Solutions"
     34msgstr "Cross Service Solutions"
    3535
    3636#: build/render.php:72 src/render.php:72 build/index.js:46 src/edit.js:21
  • merge-pdf/trunk/languages/merge-pdf-vi.po

    r3225930 r3232408  
    3131#. Author of the plugin
    3232#: merge-pdf.php
    33 msgid "The WordPress Contributors"
    34 msgstr "Những Người Đóng Góp WordPress"
     33msgid "Cross Service Solutions"
     34msgstr "Cross Service Solutions"
    3535
    3636#: build/render.php:72 src/render.php:72 build/index.js:46 src/edit.js:21
  • merge-pdf/trunk/languages/merge-pdf-zh_CN.po

    r3225930 r3232408  
    3131#. Author of the plugin
    3232#: merge-pdf.php
    33 msgid "The WordPress Contributors"
    34 msgstr "WordPress贡献者"
     33msgid "Cross Service Solutions"
     34msgstr "Cross Service Solutions"
    3535
    3636#: build/render.php:72 src/render.php:72 build/index.js:46 src/edit.js:21
  • merge-pdf/trunk/languages/merge-pdf.pot

    r3225930 r3232408  
    3232#. Author of the plugin
    3333#: merge-pdf.php
    34 msgid "The WordPress Contributors"
     34msgid "Cross Service Solutions"
    3535msgstr ""
    3636
  • merge-pdf/trunk/merge-pdf.php

    r3225930 r3232408  
    66 * Requires PHP:      7.2.24
    77 * Version:           1.0.0
    8  * Author:            The WordPress Contributors
     8 * Author:            Cross Service Solutions
    99 * License:           GPL-2.0-or-later
    1010 * License URI:       https://www.gnu.org/licenses/gpl-2.0.html
Note: See TracChangeset for help on using the changeset viewer.