From 1008d703ede8bdb8428285b92a9623a37e11f57d Mon Sep 17 00:00:00 2001 From: Andrew Shevchenko Date: Mon, 16 Jun 2025 10:16:59 +0300 Subject: [PATCH 01/13] ADD: StyleManager module --- assets/build/admin/package.asset.php | 2 +- assets/build/admin/package.js | 5819 ++++++- assets/build/admin/pages/jfb-addons.asset.php | 2 +- assets/build/admin/pages/jfb-addons.js | 1797 ++- .../build/admin/pages/jfb-settings.asset.php | 2 +- assets/build/admin/pages/jfb-settings.js | 4496 +++++- assets/build/admin/vuex.package.asset.php | 2 +- assets/build/admin/vuex.package.js | 12657 +++++++++++++++- assets/build/editor/default.builder.asset.php | 2 +- assets/build/editor/default.builder.js | 316 +- assets/build/editor/form.builder.asset.php | 2 +- assets/build/editor/form.builder.css | 7 +- assets/build/editor/form.builder.js | 9718 +++++++++++- assets/build/editor/package.asset.php | 2 +- assets/build/editor/package.js | 12384 ++++++++++++++- .../frontend/advanced.reporting.asset.php | 2 +- assets/build/frontend/advanced.reporting.js | 1398 +- .../build/frontend/calculated.field.asset.php | 2 +- assets/build/frontend/calculated.field.js | 350 +- .../frontend/conditional.block.asset.php | 2 +- assets/build/frontend/conditional.block.js | 905 +- assets/build/frontend/dynamic.value.asset.php | 2 +- assets/build/frontend/dynamic.value.js | 439 +- assets/build/frontend/main.asset.php | 2 +- assets/build/frontend/main.css | 5 + assets/build/frontend/main.js | 5369 ++++++- assets/build/frontend/media.field.asset.php | 2 +- assets/build/frontend/media.field.js | 375 +- .../media.field.restrictions.asset.php | 2 +- .../frontend/media.field.restrictions.js | 465 +- assets/build/frontend/multi.step.asset.php | 2 +- assets/build/frontend/multi.step.js | 686 +- .../components/builder-blocks.pcss | 15 + compatibility/bricks/widgets/form.php | 40 +- compatibility/elementor/widgets/form.php | 62 +- .../jet-style-manager/blocks/form-break.php | 16 +- .../jet-style-manager/blocks/form.php | 38 +- includes/blocks/modules/general-style.php | 10 +- includes/blocks/types/action-button.php | 4 +- includes/blocks/types/base.php | 22 +- includes/blocks/types/conditional-block.php | 2 +- includes/blocks/types/number-field.php | 4 +- includes/blocks/types/textarea-field.php | 2 +- .../actions-v2/assets/build/editor.asset.php | 2 +- modules/actions-v2/assets/build/editor.js | 2 +- .../blocks-v2/repeater-field/block-type.php | 8 +- modules/blocks-v2/text-field/block-type.php | 2 +- .../assets/build/editor-rtl.css | 164 + .../assets/build/editor.asset.php | 1 + .../assets/build/editor.css | 166 + .../assets/build/editor.css.map | 1 + .../assets/build/editor.js | 2130 +++ .../assets/build/editor.js.map | 1 + .../components/common/controls-popover.jsx | 40 + .../common/controls-tabs-navigation.jsx | 22 + .../src/components/common/controls-tabs.jsx | 41 + .../components/common/popover-container.jsx | 33 + .../src/components/control-component.jsx | 196 + .../assets/src/components/control-section.jsx | 26 + .../assets/src/components/control-stack.jsx | 24 + .../assets/src/components/controls/border.jsx | 58 + .../assets/src/components/controls/choose.jsx | 59 + .../assets/src/components/controls/color.jsx | 77 + .../src/components/controls/dimensions.jsx | 20 + .../assets/src/components/controls/range.jsx | 168 + .../assets/src/components/controls/text.jsx | 20 + .../src/components/controls/typography.jsx | 274 + .../src/css-engine/fields/base-field.js | 94 + .../assets/src/css-engine/fields/border.js | 107 + .../assets/src/css-engine/fields/color.js | 7 + .../src/css-engine/fields/dimensions.js | 37 + .../assets/src/css-engine/fields/index.js | 15 + .../assets/src/css-engine/fields/range.js | 15 + .../src/css-engine/fields/typography.js | 24 + .../assets/src/css-engine/generator.js | 159 + .../blocks-style-manager/assets/src/editor.js | 87 + .../assets/src/editor.scss | 181 + .../assets/src/helpers/breakpoints.js | 47 + .../assets/src/helpers/utils.js | 66 + .../src/hoc-wrappers/with-block-class.js | 75 + .../src/hoc-wrappers/with-styles-controls.js | 41 + .../framework/blocks-style-manager/block.php | 436 + .../framework/blocks-style-manager/editor.php | 143 + .../field-handlers/base.php | 113 + .../field-handlers/border.php | 195 + .../field-handlers/dimensions.php | 41 + .../field-handlers/range.php | 17 + .../field-handlers/typography.php | 68 + .../blocks-style-manager/package.json | 22 + .../blocks-style-manager/path-url-trait.php | 78 + .../framework/blocks-style-manager/proxy.php | 149 + .../blocks-style-manager/registry.php | 191 + .../blocks-style-manager/style-cache.php | 100 + .../blocks-style-manager/style-engine.php | 393 + .../blocks-style-manager/style-inserter.php | 78 + .../blocks-style-manager/style-manager.php | 139 + .../blocks-style-manager/webpack.config.js | 18 + modules/jet-style/framework/loader.php | 155 + modules/jet-style/module.php | 3 + modules/jet-style/style-manager.php | 46 + .../blocks/checkbox/block-type.php | 6 +- .../option-field/blocks/radio/block-type.php | 6 +- .../option-field/blocks/select/block-type.php | 2 +- 103 files changed, 64177 insertions(+), 143 deletions(-) create mode 100644 modules/jet-style/framework/blocks-style-manager/assets/build/editor-rtl.css create mode 100644 modules/jet-style/framework/blocks-style-manager/assets/build/editor.asset.php create mode 100644 modules/jet-style/framework/blocks-style-manager/assets/build/editor.css create mode 100644 modules/jet-style/framework/blocks-style-manager/assets/build/editor.css.map create mode 100644 modules/jet-style/framework/blocks-style-manager/assets/build/editor.js create mode 100644 modules/jet-style/framework/blocks-style-manager/assets/build/editor.js.map create mode 100644 modules/jet-style/framework/blocks-style-manager/assets/src/components/common/controls-popover.jsx create mode 100644 modules/jet-style/framework/blocks-style-manager/assets/src/components/common/controls-tabs-navigation.jsx create mode 100644 modules/jet-style/framework/blocks-style-manager/assets/src/components/common/controls-tabs.jsx create mode 100644 modules/jet-style/framework/blocks-style-manager/assets/src/components/common/popover-container.jsx create mode 100644 modules/jet-style/framework/blocks-style-manager/assets/src/components/control-component.jsx create mode 100644 modules/jet-style/framework/blocks-style-manager/assets/src/components/control-section.jsx create mode 100644 modules/jet-style/framework/blocks-style-manager/assets/src/components/control-stack.jsx create mode 100644 modules/jet-style/framework/blocks-style-manager/assets/src/components/controls/border.jsx create mode 100644 modules/jet-style/framework/blocks-style-manager/assets/src/components/controls/choose.jsx create mode 100644 modules/jet-style/framework/blocks-style-manager/assets/src/components/controls/color.jsx create mode 100644 modules/jet-style/framework/blocks-style-manager/assets/src/components/controls/dimensions.jsx create mode 100644 modules/jet-style/framework/blocks-style-manager/assets/src/components/controls/range.jsx create mode 100644 modules/jet-style/framework/blocks-style-manager/assets/src/components/controls/text.jsx create mode 100644 modules/jet-style/framework/blocks-style-manager/assets/src/components/controls/typography.jsx create mode 100644 modules/jet-style/framework/blocks-style-manager/assets/src/css-engine/fields/base-field.js create mode 100644 modules/jet-style/framework/blocks-style-manager/assets/src/css-engine/fields/border.js create mode 100644 modules/jet-style/framework/blocks-style-manager/assets/src/css-engine/fields/color.js create mode 100644 modules/jet-style/framework/blocks-style-manager/assets/src/css-engine/fields/dimensions.js create mode 100644 modules/jet-style/framework/blocks-style-manager/assets/src/css-engine/fields/index.js create mode 100644 modules/jet-style/framework/blocks-style-manager/assets/src/css-engine/fields/range.js create mode 100644 modules/jet-style/framework/blocks-style-manager/assets/src/css-engine/fields/typography.js create mode 100644 modules/jet-style/framework/blocks-style-manager/assets/src/css-engine/generator.js create mode 100644 modules/jet-style/framework/blocks-style-manager/assets/src/editor.js create mode 100644 modules/jet-style/framework/blocks-style-manager/assets/src/editor.scss create mode 100644 modules/jet-style/framework/blocks-style-manager/assets/src/helpers/breakpoints.js create mode 100644 modules/jet-style/framework/blocks-style-manager/assets/src/helpers/utils.js create mode 100644 modules/jet-style/framework/blocks-style-manager/assets/src/hoc-wrappers/with-block-class.js create mode 100644 modules/jet-style/framework/blocks-style-manager/assets/src/hoc-wrappers/with-styles-controls.js create mode 100644 modules/jet-style/framework/blocks-style-manager/block.php create mode 100644 modules/jet-style/framework/blocks-style-manager/editor.php create mode 100644 modules/jet-style/framework/blocks-style-manager/field-handlers/base.php create mode 100644 modules/jet-style/framework/blocks-style-manager/field-handlers/border.php create mode 100644 modules/jet-style/framework/blocks-style-manager/field-handlers/dimensions.php create mode 100644 modules/jet-style/framework/blocks-style-manager/field-handlers/range.php create mode 100644 modules/jet-style/framework/blocks-style-manager/field-handlers/typography.php create mode 100644 modules/jet-style/framework/blocks-style-manager/package.json create mode 100644 modules/jet-style/framework/blocks-style-manager/path-url-trait.php create mode 100644 modules/jet-style/framework/blocks-style-manager/proxy.php create mode 100644 modules/jet-style/framework/blocks-style-manager/registry.php create mode 100644 modules/jet-style/framework/blocks-style-manager/style-cache.php create mode 100644 modules/jet-style/framework/blocks-style-manager/style-engine.php create mode 100644 modules/jet-style/framework/blocks-style-manager/style-inserter.php create mode 100644 modules/jet-style/framework/blocks-style-manager/style-manager.php create mode 100644 modules/jet-style/framework/blocks-style-manager/webpack.config.js create mode 100644 modules/jet-style/framework/loader.php create mode 100644 modules/jet-style/style-manager.php diff --git a/assets/build/admin/package.asset.php b/assets/build/admin/package.asset.php index 18e0cf39a..890420ca2 100644 --- a/assets/build/admin/package.asset.php +++ b/assets/build/admin/package.asset.php @@ -1 +1 @@ - array('wp-i18n'), 'version' => '7e20e1c01900df478b6e'); + array('wp-i18n'), 'version' => '0e9bc789fffe88618d7f'); diff --git a/assets/build/admin/package.js b/assets/build/admin/package.js index 91a41a75f..15eafb266 100644 --- a/assets/build/admin/package.js +++ b/assets/build/admin/package.js @@ -1 +1,5818 @@ -(()=>{var t={611:(t,e,i)=>{"use strict";function a(t,e){for(var i=[],a={},n=0;nf});var n="undefined"!=typeof document;if("undefined"!=typeof DEBUG&&DEBUG&&!n)throw new Error("vue-style-loader cannot be used in a non-browser environment. Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.");var s={},o=n&&(document.head||document.getElementsByTagName("head")[0]),r=null,l=0,c=!1,u=function(){},d=null,p="data-vue-ssr-id",v="undefined"!=typeof navigator&&/msie [6-9]\b/.test(navigator.userAgent.toLowerCase());function f(t,e,i,n){c=i,d=n||{};var o=a(t,e);return h(o),function(e){for(var i=[],n=0;ni.parts.length&&(a.parts.length=i.parts.length)}else{var o=[];for(n=0;n{var a=i(6291);a.__esModule&&(a=a.default),"string"==typeof a&&(a=[[t.id,a,""]]),a.locals&&(t.exports=a.locals),(0,i(611).A)("4168dbce",a,!1,{})},935:t=>{"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var i="",a=void 0!==e[5];return e[4]&&(i+="@supports (".concat(e[4],") {")),e[2]&&(i+="@media ".concat(e[2]," {")),a&&(i+="@layer".concat(e[5].length>0?" ".concat(e[5]):""," {")),i+=t(e),a&&(i+="}"),e[2]&&(i+="}"),e[4]&&(i+="}"),i})).join("")},e.i=function(t,i,a,n,s){"string"==typeof t&&(t=[[null,t,void 0]]);var o={};if(a)for(var r=0;r0?" ".concat(u[5]):""," {").concat(u[1],"}")),u[5]=s),i&&(u[2]?(u[1]="@media ".concat(u[2]," {").concat(u[1],"}"),u[2]=i):u[2]=i),n&&(u[4]?(u[1]="@supports (".concat(u[4],") {").concat(u[1],"}"),u[4]=n):u[4]="".concat(n)),e.push(u))}},e}},1041:(t,e,i)=>{var a=i(5965);a.__esModule&&(a=a.default),"string"==typeof a&&(a=[[t.id,a,""]]),a.locals&&(t.exports=a.locals),(0,i(611).A)("0c7f7908",a,!1,{})},1292:(t,e,i)=>{"use strict";i.r(e),i.d(e,{default:()=>r});var a=i(6758),n=i.n(a),s=i(935),o=i.n(s)()(n());o.push([t.id,".jfb-tooltip[data-v-431c7ba2]{position:relative;display:inline-block}.jfb-tooltip-has-help[data-v-431c7ba2]{cursor:pointer}.jfb-tooltip-has-text[data-v-431c7ba2]{display:flex;column-gap:.5em;align-items:center}.jfb-tooltip--text[data-v-431c7ba2]{text-overflow:ellipsis;overflow:hidden;padding:.1em 0}.jfb-tooltip .dashicons-dismiss[data-v-431c7ba2]{color:#d63638}.jfb-tooltip .dashicons-warning[data-v-431c7ba2]{color:orange}.jfb-tooltip .dashicons-warning.danger[data-v-431c7ba2]{color:#d63638}.jfb-tooltip .dashicons-yes-alt[data-v-431c7ba2]{color:#32cd32}.jfb-tooltip .dashicons-info[data-v-431c7ba2]{color:#90c6db}.jfb-tooltip .dashicons-hourglass[data-v-431c7ba2]{color:#b5b5b5}.jfb-tooltip .dashicons-update.loading[data-v-431c7ba2]{animation:jfb-tooltip-loading-icon-data-v-431c7ba2 1.5s infinite linear}.jfb-tooltip .cx-vui-tooltip[data-v-431c7ba2]{width:fit-content;bottom:calc(100% + 15px);box-sizing:border-box;pointer-events:none;transition:all .18s linear;opacity:0;padding-left:1em;padding-right:1em;position:absolute;z-index:2}.jfb-tooltip .cx-vui-tooltip.tooltip-position-top-right[data-v-431c7ba2]{right:-1.2em}.jfb-tooltip .cx-vui-tooltip.tooltip-position-top-right[data-v-431c7ba2]:after{right:20px;left:unset}.jfb-tooltip .cx-vui-tooltip.tooltip-position-top-left[data-v-431c7ba2]{left:-0.9em}.jfb-tooltip .cx-vui-tooltip.tooltip-position-top-left[data-v-431c7ba2]:after{left:20px;right:unset}.jfb-tooltip:hover .cx-vui-tooltip[data-v-431c7ba2]{opacity:1}.jfb-tooltip:hover .cx-vui-tooltip.tooltip-position-top-right[data-v-431c7ba2]{bottom:100%}.jfb-tooltip:hover .cx-vui-tooltip.tooltip-position-top-left[data-v-431c7ba2]{bottom:100%}.jfb-tooltip-position--top-right[data-v-431c7ba2]{flex-direction:row-reverse}@keyframes jfb-tooltip-loading-icon-data-v-431c7ba2{0%{transform:rotate(0deg)}to{transform:rotate(359deg)}}",""]);const r=o},1418:(t,e,i)=>{"use strict";i.r(e),i.d(e,{default:()=>r});var a=i(6758),n=i.n(a),s=i(935),o=i.n(s)()(n());o.push([t.id,".table-details-row{display:flex;justify-content:space-between;font-size:1.1em}.table-details-row:first-child{font-weight:bold}.table-details-row:nth-child(even){background-color:#eee}.table-details-row-column{padding:.5em 1em}.table-details-row--heading{flex:1;text-align:right}.table-details-row-role--default.table-details-row--heading{font-weight:600}.table-details-row--content{flex:2}.table-details-row--actions{flex:.3}.table-details-row h3{padding:.5em;border-bottom:1px solid #aaa;width:50%;margin:1em auto;text-align:center;color:#aaa;font-weight:400}",""]);const r=o},1618:(t,e,i)=>{"use strict";i.r(e),i.d(e,{default:()=>r});var a=i(6758),n=i.n(a),s=i(935),o=i.n(s)()(n());o.push([t.id,".cx-vui-select[data-v-b31905c2]{line-height:2em;padding:6px 24px 6px 8px}.cx-vui-select.fullwidth[data-v-b31905c2]{width:100%}",""]);const r=o},1700:(t,e,i)=>{"use strict";i.r(e),i.d(e,{default:()=>r});var a=i(6758),n=i.n(a),s=i(935),o=i.n(s)()(n());o.push([t.id,".table-details{display:flex;flex-direction:column}",""]);const r=o},2310:(t,e,i)=>{var a=i(1618);a.__esModule&&(a=a.default),"string"==typeof a&&(a=[[t.id,a,""]]),a.locals&&(t.exports=a.locals),(0,i(611).A)("2e7817a3",a,!1,{})},2373:(t,e,i)=>{"use strict";i.r(e),i.d(e,{default:()=>r});var a=i(6758),n=i.n(a),s=i(935),o=i.n(s)()(n());o.push([t.id,".cx-vui-component[data-v-327e05fd]{flex-direction:column;width:100%;border-top:unset;gap:.7em}.cx-vui-component.padding-side-unset[data-v-327e05fd]{padding-left:unset;padding-right:unset}.padding-top-bottom-unset[data-v-327e05fd]{padding-top:unset;padding-bottom:unset}.padding-unset[data-v-327e05fd]{padding:unset}",""]);const r=o},4244:(t,e,i)=>{"use strict";i.r(e),i.d(e,{default:()=>r});var a=i(6758),n=i.n(a),s=i(935),o=i.n(s)()(n());o.push([t.id,".cx-vui-external-link__icon{width:1em;height:1em;fill:currentcolor;vertical-align:middle}",""]);const r=o},4761:(t,e,i)=>{"use strict";i.r(e),i.d(e,{default:()=>r});var a=i(6758),n=i.n(a),s=i(935),o=i.n(s)()(n());o.push([t.id,"hr.jfb[data-v-362c518d]{border:0;border-top:1px solid #ececec;margin:unset}",""]);const r=o},4965:(t,e,i)=>{"use strict";i.r(e),i.d(e,{default:()=>r});var a=i(6758),n=i.n(a),s=i(935),o=i.n(s)()(n());o.push([t.id,'.fade-enter-active[data-v-7d75afce],.fade-leave-active[data-v-7d75afce]{transition:opacity .5s}.fade-enter[data-v-7d75afce],.fade-leave-to[data-v-7d75afce]{opacity:0}.jfb-recursive-details[data-v-7d75afce]:not(.jfb-recursive-details--indent){margin-top:unset}.jfb-recursive-details--indent[data-v-7d75afce]{margin-left:1.5em;margin-top:.5em}.jfb-recursive-details-row[data-v-7d75afce]:not(:last-child){margin-bottom:.5em;padding-bottom:.5em}.jfb-recursive-details-item--content[data-v-7d75afce]{border-bottom:1px solid #ccc}.jfb-recursive-details-item-without-children>.jfb-recursive-details-item--heading[data-v-7d75afce]::after{content:":"}.jfb-recursive-details-item-with-children>.jfb-recursive-details-item--heading[data-v-7d75afce]{cursor:pointer}.jfb-recursive-details-item-with-children>.jfb-recursive-details-item--heading[data-v-7d75afce]:hover{color:#2271b1;border-bottom-color:#2271b1}',""]);const r=o},5598:(t,e,i)=>{"use strict";i.r(e),i.d(e,{default:()=>r});var a=i(6758),n=i.n(a),s=i(935),o=i.n(s)()(n());o.push([t.id,"\n@media print {\n.cx-vui-button[data-v-aa3950ea] {\n\t\tdisplay: none;\n}\n}\n",""]);const r=o},5965:(t,e,i)=>{"use strict";i.r(e),i.d(e,{default:()=>r});var a=i(6758),n=i.n(a),s=i(935),o=i.n(s)()(n());o.push([t.id,".cx-vui-popup__close[data-v-7acae1c9]{position:unset}.cx-vui-popup__header[data-v-7acae1c9]{display:flex;justify-content:space-between;padding-bottom:10px;margin:unset;border-bottom:1px solid #ececec}.cx-vui-popup.sticky-header .cx-vui-popup__body[data-v-7acae1c9],.cx-vui-popup.sticky-footer .cx-vui-popup__body[data-v-7acae1c9]{max-height:80vh;overflow-y:auto}.cx-vui-popup.sticky-header .cx-vui-popup__header[data-v-7acae1c9]{position:sticky;top:0;background-color:#fff;padding-top:20px;z-index:1}.cx-vui-popup.sticky-header .cx-vui-popup__body[data-v-7acae1c9]{padding-top:0}.cx-vui-popup.sticky-footer .cx-vui-popup__body[data-v-7acae1c9]{padding-bottom:0}.cx-vui-popup.sticky-footer .cx-vui-popup__content[data-v-7acae1c9]{padding-bottom:40px}.cx-vui-popup.sticky-footer .cx-vui-popup__footer[data-v-7acae1c9]{position:sticky;bottom:0;background-color:#fff;padding-bottom:20px;border-top:1px solid #ececec}",""]);const r=o},5981:(t,e,i)=>{var a=i(4761);a.__esModule&&(a=a.default),"string"==typeof a&&(a=[[t.id,a,""]]),a.locals&&(t.exports=a.locals),(0,i(611).A)("8c144c80",a,!1,{})},6168:(t,e,i)=>{var a=i(1700);a.__esModule&&(a=a.default),"string"==typeof a&&(a=[[t.id,a,""]]),a.locals&&(t.exports=a.locals),(0,i(611).A)("206d9f3c",a,!1,{})},6278:(t,e,i)=>{"use strict";i.r(e),i.d(e,{default:()=>r});var a=i(6758),n=i.n(a),s=i(935),o=i.n(s)()(n());o.push([t.id,".cx-vui-input--warning-danger[data-v-13c6d87e]{border:1px solid #d63638}",""]);const r=o},6291:(t,e,i)=>{"use strict";i.r(e),i.d(e,{default:()=>r});var a=i(6758),n=i.n(a),s=i(935),o=i.n(s)()(n());o.push([t.id,".cx-vui-tabs__nav-item--disabled{opacity:.5;cursor:not-allowed}.cx-vui-tabs__nav-item--disabled:hover{color:unset}.cx-vui-tabs__nav-item--has-icon{display:flex;justify-content:space-between;column-gap:1em}.cx-vui-tabs--layout-vertical>.cx-vui-tabs__nav{width:unset;flex:unset;max-width:unset}.cx-vui-tabs--layout-vertical>.cx-vui-tabs__content{flex:1}",""]);const r=o},6608:(t,e,i)=>{var a=i(1292);a.__esModule&&(a=a.default),"string"==typeof a&&(a=[[t.id,a,""]]),a.locals&&(t.exports=a.locals),(0,i(611).A)("3a21f3b2",a,!1,{})},6758:t=>{"use strict";t.exports=function(t){return t[1]}},6945:(t,e,i)=>{var a=i(2373);a.__esModule&&(a=a.default),"string"==typeof a&&(a=[[t.id,a,""]]),a.locals&&(t.exports=a.locals),(0,i(611).A)("b1875a50",a,!1,{})},7393:(t,e,i)=>{var a=i(4965);a.__esModule&&(a=a.default),"string"==typeof a&&(a=[[t.id,a,""]]),a.locals&&(t.exports=a.locals),(0,i(611).A)("29e569e4",a,!1,{})},7922:(t,e,i)=>{var a=i(5598);a.__esModule&&(a=a.default),"string"==typeof a&&(a=[[t.id,a,""]]),a.locals&&(t.exports=a.locals),(0,i(611).A)("7e55f3a9",a,!1,{})},7944:(t,e,i)=>{"use strict";i.r(e),i.d(e,{default:()=>r});var a=i(6758),n=i.n(a),s=i(935),o=i.n(s)()(n());o.push([t.id,".cx-vui-collapse-mini__wrap{padding:0 0 20px}.cx-vui-collapse-mini__item{border-bottom:1px solid #ececec}.cx-vui-collapse-mini__item:first-child{border-top:1px solid #ececec}.cx-vui-collapse-mini__item:last-child{margin-bottom:unset}.cx-vui-collapse-mini__item--active .cx-vui-collapse-mini__header-label>svg{transform:rotate(90deg)}.cx-vui-collapse-mini__header{padding:1.2rem;display:flex;align-items:center;cursor:pointer;column-gap:1em}.cx-vui-collapse-mini__header-label{font-weight:500;font-size:15px;line-height:23px;color:#007cba;display:flex;align-items:center}.cx-vui-collapse-mini__header-desc{font-size:15px;line-height:23px;color:#7b7e81}.cx-vui-collapse-mini__header-label svg{margin:-1px 8px 0 0;transition:.3s}.cx-vui-collapse-mini--disabled{opacity:.5}.cx-vui-collapse-mini--disabled .cx-vui-collapse-mini__header{cursor:not-allowed}.cx-vui-collapse-mini__content{padding:0 1.5rem 1.5rem}",""]);const r=o},8036:(t,e,i)=>{var a=i(8984);a.__esModule&&(a=a.default),"string"==typeof a&&(a=[[t.id,a,""]]),a.locals&&(t.exports=a.locals),(0,i(611).A)("57efcfaf",a,!1,{})},8528:(t,e,i)=>{var a=i(4244);a.__esModule&&(a=a.default),"string"==typeof a&&(a=[[t.id,a,""]]),a.locals&&(t.exports=a.locals),(0,i(611).A)("45767117",a,!1,{})},8862:(t,e,i)=>{var a=i(1418);a.__esModule&&(a=a.default),"string"==typeof a&&(a=[[t.id,a,""]]),a.locals&&(t.exports=a.locals),(0,i(611).A)("6aaa4088",a,!1,{})},8984:(t,e,i)=>{"use strict";i.r(e),i.d(e,{default:()=>r});var a=i(6758),n=i.n(a),s=i(935),o=i.n(s)()(n());o.push([t.id,".size--1-x-2 .cx-vui-component__meta[data-v-6f5201e4]{flex:1}.size--1-x-2 .cx-vui-component__control[data-v-6f5201e4]{flex:2}.padding-side-unset.cx-vui-component[data-v-6f5201e4]{padding-left:unset;padding-right:unset}.cx-vui-component__control-actions[data-v-6f5201e4]{display:flex;justify-content:flex-end;gap:1em;margin-top:.5em}",""]);const r=o},9330:(t,e,i)=>{var a=i(6278);a.__esModule&&(a=a.default),"string"==typeof a&&(a=[[t.id,a,""]]),a.locals&&(t.exports=a.locals),(0,i(611).A)("21fb632e",a,!1,{})},9356:(t,e,i)=>{var a=i(7944);a.__esModule&&(a=a.default),"string"==typeof a&&(a=[[t.id,a,""]]),a.locals&&(t.exports=a.locals),(0,i(611).A)("30df35ee",a,!1,{})}},e={};function i(a){var n=e[a];if(void 0!==n)return n.exports;var s=e[a]={id:a,exports:{}};return t[a](s,s.exports,i),s.exports}i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},i.d=(t,e)=>{for(var a in e)i.o(e,a)&&!i.o(t,a)&&Object.defineProperty(t,a,{enumerable:!0,get:e[a]})},i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},(()=>{"use strict";class t extends Error{constructor(e=!1,i=""){super(i),Error.captureStackTrace&&Error.captureStackTrace(this,t),this.name="ApiInputError",this.noticeOptions=e}}const e=t;var a=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{class:{"cx-vui-panel":t.withPanel,"cx-vui-collapse-mini--disabled":t.disabled,"cx-vui-collapse-mini__item":!0,"cx-vui-collapse-mini__item--active":t.isActive}},[i("div",{staticClass:"cx-vui-collapse-mini__header",on:{click:t.collapse}},[i("div",{staticClass:"cx-vui-collapse-mini__header-label"},[i("svg",{attrs:{width:"14",height:"14",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[i("path",{attrs:{d:"M14 13.9999L14 -0.00012207L0 -0.000121458L6.11959e-07 13.9999L14 13.9999Z",fill:"white"}}),t._v(" "),i("path",{attrs:{d:"M5.32911 1L11 7L5.32911 13L4 11.5938L8.34177 7L4 2.40625L5.32911 1Z",fill:"#007CBA"}})]),t._v("\n\t\t\t"+t._s(t.label)+"\n\t\t")]),t._v(" "),t.icon?i("div",{staticClass:"cx-vui-collapse-mini__header-desc"},["object"==typeof t.icon?i(t.icon,{tag:"component"}):t._e()],1):t.desc?i("div",{staticClass:"cx-vui-collapse-mini__header-desc"},[t._v("\n\t\t\t"+t._s(t.desc)+"\n\t\t")]):t._e(),t._v(" "),t.$slots.description?i("div",{staticClass:"cx-vui-collapse-mini__header-custom-description"},[t._t("description")],2):t._e()]),t._v(" "),t.disabled?t._e():[this.$slots.default?[i("div",{directives:[{name:"show",rawName:"v-show",value:t.isActive,expression:"isActive"}],staticClass:"cx-vui-collapse-mini__content"},[t._t("default")],2)]:[t._t("custom",null,{state:{isActive:t.isActive}})]]],2)};a._withStripped=!0;const n={name:"cx-vui-collapse-mini",props:{withPanel:{type:Boolean,default:!1},initialActive:{type:Boolean,default:!1},label:{type:String,default:"Collapse Mini"},desc:{type:String,default:""},disabled:{type:Boolean,default:!1},icon:{type:[Object,String],default:""}},data:()=>({isActive:!1}),created(){this.isActive=this.initialActive},methods:{collapse(){this.disabled||(this.isActive=!this.isActive,this.$emit("change",this.isActive))}}};function s(t,e,i,a,n,s,o,r){var l,c="function"==typeof t?t.options:t;if(e&&(c.render=e,c.staticRenderFns=i,c._compiled=!0),a&&(c.functional=!0),s&&(c._scopeId="data-v-"+s),o?(l=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),n&&n.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(o)},c._ssrRegister=l):n&&(l=r?function(){n.call(this,(c.functional?this.parent:this).$root.$options.shadowRoot)}:n),l)if(c.functional){c._injectStyles=l;var u=c.render;c.render=function(t,e){return l.call(e),u(t,e)}}else{var d=c.beforeCreate;c.beforeCreate=d?[].concat(d,l):[l]}return{exports:t,options:c}}i(9356);const o=s(n,a,[],!1,null,null,null).exports,r={methods:{getIncoming:t=>t?window.JetFBPageConfig[t]:window.JetFBPageConfig}},l={methods:{saveByAjax(t,e){const i=this;let a={};try{a=this.getAjaxObject(t,e)}catch(t){if(!t)return;return"object"==typeof t.noticeOptions?void i.$CXNotice.add({message:"Invalid request data.",type:"error",duration:2e3,...t.noticeOptions}):void i.$CXNotice.add({message:t,type:"error",duration:2e3})}jfbEventBus.$emit("request-state",{state:"begin",slug:e}),jQuery.ajax(a).done((function(a){"function"==typeof t.onSaveDone?t.onSaveDone(a):a.success?(i.$CXNotice.add({message:a.data.message,type:"success",duration:5e3}),"function"==typeof t.onSaveDoneSuccess&&t.onSaveDoneSuccess(a)):(i.$CXNotice.add({message:a.data.message,type:"error",duration:5e3}),"function"==typeof t.onSaveDoneError&&t.onSaveDoneError(a)),jfbEventBus.$emit("request-state",{state:"end",slug:e})})).fail((function(a,n,s){"function"==typeof t.onSaveFail?t.onSaveFail(a,n,s):i.$CXNotice.add({message:s,type:"error",duration:5e3}),jfbEventBus.$emit("request-state",{state:"end",slug:e})}))},getAjaxObject(t,e){const i={url:window.ajaxurl,type:"POST",dataType:"json",...t.getRequestOnSave()};return i.data={action:`jet_fb_save_tab__${e}`,...i.data},window?.JetFBPageConfigPackage?.nonce&&(i.data._nonce=window.JetFBPageConfigPackage.nonce),i}}},c={props:["value","full-entry","entry-id","scope"],computed:{parsedJson(){return JSON.parse(JSON.stringify(this.value))}}},u={methods:{promiseWrapper(t){const e=t=>"object"==typeof t?t?.message:t;return(i,a,...n)=>{const s=t=>{"function"==typeof i&&i(),this.$CXNotice.add({message:e(t),type:"success",duration:4e3})},o=t=>{"function"==typeof i&&i(),this.$CXNotice.add({message:e(t),type:"error",duration:4e3})};try{t.call(this,{resolve:s,reject:o},...n)}catch(t){o(t.message)}}}}};var d=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("section",{staticClass:"table-details"},t._l(t.columns,(function(e,a){return t.canShow(a)?i("DetailsTableRow",{key:a,attrs:{type:t.getType(a)},scopedSlots:t._u([{key:"name",fn:function(){return[t._v(t._s(e.label))]},proxy:!0},{key:"value",fn:function(){return["object"==typeof t.getColumnValue(a,!1)?[i("DetailsTableRowValue",{attrs:{value:t.getColumnValue(a,!1),columns:e.children||{}}})]:[t._v(t._s(t.getColumnValue(a,"")))]]},proxy:!0}],null,!0)}):t._e()})),1)};d._withStripped=!0;var p=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("ul",{directives:[{name:"show",rawName:"v-show",value:!this.withIndent,expression:"! this.withIndent"}],class:t.rootClasses},t._l(t.value,(function(e,a){return t.isHiddenLevel(a)?i("li",{key:a,staticClass:"jfb-recursive-details-row"},[t.isSkipLevel(a)?[i("DetailsTableRowValue",{attrs:{value:e,columns:t.getChildren(a)}})]:[t.isObject(e)?i("span",{class:t.itemClasses(!0)},[i("span",{staticClass:"jfb-recursive-details-item--heading",on:{click:function(e){return t.toggleNext(a)}}},[t._v("\n\t\t\t\t\t"+t._s(t.getItemLabel(a))+"\n\t\t\t\t\t"),i("span",{class:t.arrowClasses(a)})]),t._v(" "),i("span",{staticClass:"jfb-recursive-details-item--content"},[i("transition",{attrs:{name:"fade"}},[i("DetailsTableRowValue",{directives:[{name:"show",rawName:"v-show",value:t.isShow(a),expression:"isShow( itemName )"}],attrs:{value:e,"with-indent":!0,columns:t.getChildren(a)}})],1)],1)]):i("span",{class:t.itemClasses(!1)},[i("span",{staticClass:"jfb-recursive-details-item--heading"},[t._v(t._s(t.getItemLabel(a)))]),t._v(" \n\t\t\t\t"),i("span",{staticClass:"jfb-recursive-details-item--content"},[t._v(t._s(e))])])]],2):t._e()})),0)};p._withStripped=!0;const v={name:"DetailsTableRowValue",props:{value:Object,withIndent:{type:Boolean,default:!1},columns:{type:Object,default:()=>({})}},data:()=>({showNext:{}}),computed:{rootClasses(){return{"jfb-recursive-details":!0,"jfb-recursive-details--indent":this.withIndent}}},methods:{getChildren(t){return this.columns[t]?.children||[]},getItemLabel(t){return this.columns[t]?this.columns[t].label:t},isObject:t=>"object"==typeof t,toggleNext(t){const e=this.showNext[t]||!1;this.$set(this.showNext,t,!e)},isShow(t){return"undefined"===this.showNext[t]||this.showNext[t]},itemClasses:(t=!0)=>({"jfb-recursive-details-item":!0,"jfb-recursive-details-item-with-children":t,"jfb-recursive-details-item-without-children":!t}),arrowClasses(t){return{dashicons:!0,"dashicons-arrow-down-alt2":!this.isShow(t),"dashicons-arrow-up-alt2":this.isShow(t)}},isSkipLevel(t){return this.columns[t]?.skip_level},isHiddenLevel(t){return!this.columns[t]?.hide}}};i(7393);const f=s(v,p,[],!1,null,"7d75afce",null).exports;var h=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"table-details-row"},["rowValue"===t.type?[i("div",{class:t.headingClasses},["default"!==t.role?[t._v(t._s("Name"))]:[t._t("name"),t._v("\n\t\t\t\t:\n\t\t\t")]],2),t._v(" "),i("div",{class:t.contentClasses},["default"!==t.role?[t._v(t._s("Value"))]:[t._t("value")]],2),t._v(" "),i("div",{class:t.actionClasses},["default"!==t.role?[t._v(t._s("Actions"))]:[t._t("actions")]],2)]:[i("h3",[t._t("name")],2)]],2)};h._withStripped=!0;const m={name:"DetailsTableRow",props:{role:{type:String,default:"default",validator:function(t){return-1!==["header","default","footer"].indexOf(t)}},type:{type:String,default:"rowValue",validator:function(t){return-1!==["rowValue","heading"].indexOf(t)}}},computed:{headingClasses(){return this.classes({"table-details-row--heading":!0})},contentClasses(){return this.classes({"table-details-row--content":!0})},actionClasses(){return this.classes({"table-details-row--actions":!0})}},methods:{classes(t){return{"table-details-row-column":!0,...t,["table-details-row-role--"+this.role]:!0}}}};i(8862);const _={name:"DetailsTable",components:{DetailsTableRow:s(m,h,[],!1,null,null,null).exports,DetailsTableRowValue:f},props:{columns:{type:Object},source:{type:Object}},methods:{getColumnValue(t,e=!1){return this.source[t]?this.source[t].value:e},hasValueOrAnotherType(t){return this.getColumnValue(t)||"rowValue"!==this.getType(t)},getType(t){var e;return null!==(e=this.columns[t].type)&&void 0!==e?e:"rowValue"},canShow(t){const e=this.getType(t),i=!1!==this.columns[t].show_in_details,a=this.getColumnValue(t);return i&&("rowValue"!==e||a)}}};i(6168);const b=s(_,d,[],!1,null,null,null).exports;var g=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{class:t.className},[t.$slots.meta?i("div",{staticClass:"cx-vui-component__meta"},[t._t("meta")],2):t.$slots.label||t.$slots.description?i("div",{staticClass:"cx-vui-component__meta"},[t.$slots.label?i("label",{staticClass:"cx-vui-component__label",attrs:{for:t.elementIdData}},[t.stateType?[i("Tooltip",{attrs:{icon:t.stateType,position:"top-right"},scopedSlots:t._u([{key:"help",fn:function(){return[t._v(t._s(t.stateHelp))]},proxy:!0},{key:"default",fn:function(){return[t._t("label")]},proxy:!0}],null,!0)})]:[t._t("label")]],2):t._e(),t._v(" "),t.$slots.description?i("div",{staticClass:"cx-vui-component__desc"},[t._t("description")],2):t._e()]):t._e(),t._v(" "),i("div",{staticClass:"cx-vui-component__control"},[t._t("default"),t._v(" "),t.$slots.actions?i("div",{staticClass:"cx-vui-component__control-actions"},[t._t("actions")],2):t._e()],2)])};g._withStripped=!0;var y=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{class:t.wrapperClasses},[i("span",{class:t.dashIconClass}),t._v(" "),t.$slots.default?i("span",{staticClass:"jfb-icon-status--text"},[t._t("default")],2):t._e(),t._v(" "),t.$slots.help?i("div",{class:t.tooltipClasses},[t._t("help")],2):t._e()])};y._withStripped=!0;const x={success:"dashicons-yes-alt",warning:"dashicons-warning","warning-danger":["dashicons-warning","danger"],info:"dashicons-info",pending:"dashicons-hourglass",error:"dashicons-dismiss",loading:["dashicons-update","loading"]},w={name:"Tooltip",props:{icon:{type:String,validator:t=>Object.keys(x).includes(t),default:"info"},position:{type:String,validator:t=>["top-right","top-left"].includes(t),default:"top-left"}},computed:{wrapperClasses(){return{"jfb-tooltip":!0,"jfb-tooltip-has-text":!!this.$slots.default,"jfb-tooltip-has-help":!!this.$slots.help,["jfb-tooltip-position--"+this.position]:!0}},dashIconClass(){var t;let e=null!==(t=x[this.icon])&&void 0!==t?t:"";return Array.isArray(e)||(e=[e]),["dashicons",...e]},tooltipClasses(){return{"cx-vui-tooltip":!0,["tooltip-position-"+this.position]:!0}}}};i(6608);const C=s(w,y,[],!1,null,"431c7ba2",null).exports,j={name:"RowWrapper",components:{Tooltip:C},props:{elementId:{type:String},state:{type:[String,Object],validator:t=>(t=>["warning-danger","warning","loading",""].includes(t))("string"==typeof t?t:t.type),default:""},classNames:{type:Object,default:()=>({"cx-vui-component--equalwidth":!0})}},data(){return{elementIdData:`cx_${this.elementId}`}},computed:{className(){return{"cx-vui-component":!0,["cx-vui-component--is-"+this.stateType]:this.stateType,...this.classNames}},stateType(){return"string"==typeof this.state?this.state:this.state.type},stateHelp(){return"string"==typeof this.state?"":this.state.message}},provide(){return{elementId:this.elementIdData,stateType:()=>this.stateType}}};i(8036);const S=s(j,g,[],!1,null,"6f5201e4",null).exports,O=window.wp.i18n,k={methods:{__:(t,e)=>(0,O.__)(t,e),sprintf:(t,...e)=>(0,O.sprintf)(t,...e),__s:(t,e,...i)=>(0,O.sprintf)((0,O.__)(t,e),...i)}},{doAction:$}=wp.hooks;function T(){return window.location.pathname}function L(){const t={};return window.location.search.replace("?","").split("&").forEach((e=>{const[i,a]=e.split("=");t[i]=a})),t}function I(t,e){if("object"!=typeof e)return[[t,e]];const i=[];for(let[a,n]of Object.entries(e))a=`${t}[${a}]`,i.push(...I(a,n));return i}var N=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{staticClass:"jfb-list-components"},[t._l(t.components,(function(e,a){return i("div",{key:"entry_"+a,staticClass:"jfb-list-components-item"},[i("keep-alive",[i(e,{tag:"component",attrs:{scope:t.scope}})],1)],1)})),t._v(" "),t._t("default")],2)};N._withStripped=!0;const A=s({name:"ListComponents",props:{components:Array,scope:String}},N,[],!1,null,null,null).exports;var E=function(){var t=this,e=t.$createElement;return(t._self._c||e)("div",{directives:[{name:"show",rawName:"v-show",value:t.show,expression:"show"}],staticClass:"cx-vui-tabs-panel"},[t._t("default")],2)};E._withStripped=!0;const D=s({name:"cx-vui-tabs-panel",props:{tab:{type:String,default:""},name:{type:String,default:""},label:{type:String,default:""},disabled:{type:Boolean,default:!1},icon:{type:[Object,String],default:""}},data:()=>({show:!1})},E,[],!1,null,null,null).exports;var V=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{class:{"cx-vui-tabs":!0,"cx-vui-tabs--invert":t.invert,"cx-vui-tabs--layout-vertical":"vertical"===this.layout,"cx-vui-tabs--layout-horizontal":"horizontal"===this.layout,"cx-vui-tabs--in-panel":t.inPanel}},[i("div",{staticClass:"cx-vui-tabs__nav"},t._l(t.navList,(function(e){return i("div",{class:{"cx-vui-tabs__nav-item":!0,"cx-vui-tabs__nav-item--active":t.isActive(e.name),"cx-vui-tabs__nav-item--disabled":t.isDisabled(e.name),"cx-vui-tabs__nav-item--has-icon":!!e.icon},on:{click:function(i){return t.onTabClick(e.name)}}},[i("span",{staticClass:"item-label"},[t._v(t._s(e.label))]),t._v(" "),e.icon?i("span",{staticClass:"item-icon"},["object"==typeof e.icon?i(e.icon,{tag:"component",attrs:{"is-active":t.isActive(e.name)}}):t._e()],1):t._e()])})),0),t._v(" "),i("div",{staticClass:"cx-vui-tabs__content"},[t._t("default")],2)])};V._withStripped=!0;const P={name:"cx-vui-tabs",props:{value:{type:[String,Number],default:""},name:{type:String,default:""},invert:{type:Boolean,default:!1},inPanel:{type:Boolean,default:!1},layout:{validator:t=>["horizontal","vertical"].includes(t),default:"horizontal"},conditions:{type:Array,default:()=>[]}},data(){return{navList:[],activeTab:this.value,disabledTabs:[]}},mounted(){const t=this.getTabs();this.disabledTabs=this.getDisabledTabs(),this.navList=t,this.activeTab||(this.activeTab=t[0].name),this.updateState()},methods:{isActive(t){return t===this.activeTab},isDisabled(t){return this.disabledTabs.includes(t)},getDisabledTabs(){const t=[];for(const e of this.$children)e.disabled&&t.push(e.name);return t},onTabClick(t){this.isDisabled(t)||(this.activeTab=t,this.$emit("input",this.activeTab),this.updateState())},updateState(){const t=this.getTabs();this.navList=t,t.forEach((t=>{t.show=this.activeTab===t.name}))},getTabs(){const t=this.$children.filter((t=>"cx-vui-tabs-panel"===t.$options.name)),e=[];return t.forEach((t=>{t.tab&&this.name?t.tab===this.name&&e.push(t):e.push(t)})),e}}};i(799);const B=s(P,V,[],!1,null,null,null).exports,F="JetFBConfig";function M(t){localStorage.setItem(F,JSON.stringify(t))}function R(){const t=localStorage.getItem(F);return null===t?{}:JSON.parse(t)}function z(t,e){let i=R();i={...i,[t]:e},M(i)}function q(t,e=!1){var i;return null!==(i=R()[t])&&void 0!==i?i:e}const J={setStorage:M,getStorage:R,setItem:z,getItem:q,storage:function(t){const e={setStorage(e){z(t,e)},getStorage:()=>q(t,{})};return{...e,setItem(t,i){let a=e.getStorage();a={...a,[t]:i},e.setStorage(a)},getItem(t,i=!1){var a;return null!==(a=e.getStorage()[t])&&void 0!==a?a:i}}}};var U=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("a",{staticClass:"cx-vui-external-link",attrs:{href:t.href,target:"_blank",rel:"external noreferrer noopener"}},[t._t("default"),t._v(" "),i("svg",{staticClass:"cx-vui-external-link__icon",attrs:{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 24 24",width:"24",height:"24","aria-hidden":"true",focusable:"false"}},[i("path",{attrs:{d:"M18.2 17c0 .7-.6 1.2-1.2 1.2H7c-.7 0-1.2-.6-1.2-1.2V7c0-.7.6-1.2 1.2-1.2h3.2V4.2H7C5.5 4.2 4.2 5.5 4.2 7v10c0 1.5 1.2 2.8 2.8 2.8h10c1.5 0 2.8-1.2 2.8-2.8v-3.6h-1.5V17zM14.9 3v1.5h3.7l-6.4 6.4 1.1 1.1 6.4-6.4v3.7h1.5V3h-6.3z"}})])],2)};U._withStripped=!0;const H={name:"ExternalLink",mixins:[k],props:{href:{type:String,default:""}}};i(8528);const W=s(H,U,[],!1,null,null,null).exports;var X=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{class:t.className},[t.$slots.label?i("label",{staticClass:"cx-vui-component__label",attrs:{for:t.elementIdData}},[t._t("label")],2):t._e(),t._v(" "),t._t("default"),t._v(" "),t.$slots.description?i("div",{staticClass:"cx-vui-component__desc"},[t._t("description")],2):t._e()],2)};X._withStripped=!0;const Z={name:"ColumnWrapper",props:{elementId:{type:String,required:!0},classNames:{type:Object,default:()=>({})}},data(){return{elementIdData:`cx_${this.elementId}`}},computed:{className(){return{"cx-vui-component":!0,...this.classNames}}},provide(){return{elementId:this.elementIdData}}};i(6945);const G=s(Z,X,[],!1,null,"327e05fd",null).exports;var Q=function(){var t=this,e=t.$createElement;return(t._self._c||e)("select",{class:t.className,attrs:{name:t.elementId,id:t.elementId},domProps:{value:t.value},on:{input:t.handleInput}},[t._t("default")],2)};Q._withStripped=!0;const K={name:"CxVuiSelect",props:{value:{type:[String,Number],default:""},elementId:{type:String},classNames:{type:Object,default:()=>({})}},computed:{className(){return{"cx-vui-select":!0,...this.classNames}}},methods:{handleInput(t){this.$emit("input",t.target.value)}},inject:["elementId"]};i(2310);const Y=s(K,Q,[],!1,null,"b31905c2",null).exports;var tt=function(){var t=this,e=t.$createElement,i=t._self._c||e;return i("div",{class:t.className},[i("div",{staticClass:"cx-vui-popup__overlay",on:{click:function(e){return t.$emit("close")}}}),t._v(" "),i("div",{staticClass:"cx-vui-popup__body"},[t.$slots.title?i("h2",{staticClass:"cx-vui-popup__header"},[t._t("title"),t._v(" "),t.$slots.close?[t._t("close")]:i("div",{staticClass:"cx-vui-popup__close",on:{click:function(e){return t.$emit("close")}}},[i("svg",{attrs:{width:"20",height:"20",viewBox:"0 0 14 14",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[i("path",{attrs:{d:"M12 3.00671L8.00671 7L12 10.9933L10.9933 12L7 8.00671L3.00671 12L2 10.9933L5.99329 7L2 3.00671L3.00671 2L7 5.99329L10.9933 2L12 3.00671Z"}})])])],2):t._e(),t._v(" "),i("div",{staticClass:"cx-vui-popup__content"},[t._t("content")],2),t._v(" "),t.$slots.footer?i("div",{staticClass:"cx-vui-popup__footer"},[t._t("footer")],2):t._e()])])};tt._withStripped=!0;const et={name:"CxVuiPopup",props:{classNames:{type:Object,default:()=>({})},stickyFooter:{type:Boolean,default:!1}},computed:{className(){return{"cx-vui-popup":!0,...this.classNames}}}};i(1041);const it=s(et,tt,[],!1,null,"7acae1c9",null).exports;var at=function(){var t,e=this,i=e.$createElement,a=e._self._c||i;return a("div",{staticClass:"cx-vui-f-select"},[a("div",{class:{"cx-vui-f-select__selected":!0,"cx-vui-f-select__selected-not-empty":this.value.length>0}},e._l(e.value,(function(t){return a("div",{staticClass:"cx-vui-f-select__selected-option",on:{click:function(i){return e.handleResultClick(t)}}},[e.$slots["option-"+t]?[e._t("option-"+t)]:[e.isNonRemovable(t)?e._e():a("span",{staticClass:"cx-vui-f-select__selected-option-icon"},[a("svg",{attrs:{width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",xmlns:"http://www.w3.org/2000/svg"}},[a("path",{attrs:{d:"M10 1.00671L6.00671 5L10 8.99329L8.99329 10L5 6.00671L1.00671 10L0 8.99329L3.99329 5L0 1.00671L1.00671 0L5 3.99329L8.99329 0L10 1.00671Z"}})])]),e._v("\n\t\t\t\t"+e._s(e.getOptionLabel(t))+"\n\t\t\t")]],2)})),0),e._v(" "),a("div",{directives:[{name:"click-outside",rawName:"v-click-outside.capture",value:e.onClickOutside,expression:"onClickOutside",modifiers:{capture:!0}},{name:"click-outside",rawName:"v-click-outside:mousedown.capture",value:e.onClickOutside,expression:"onClickOutside",arg:"mousedown",modifiers:{capture:!0}},{name:"click-outside",rawName:"v-click-outside:touchstart.capture",value:e.onClickOutside,expression:"onClickOutside",arg:"touchstart",modifiers:{capture:!0}}],staticClass:"cx-vui-f-select__control",on:{keydown:[function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"up",38,t.key,["Up","ArrowUp"])?null:(t.preventDefault(),e.handleOptionsNav.apply(null,arguments))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"down",40,t.key,["Down","ArrowDown"])?null:(t.preventDefault(),e.handleOptionsNav.apply(null,arguments))},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"tab",9,t.key,"Tab")?null:e.handleOptionsNav.apply(null,arguments)},function(t){return!t.type.indexOf("key")&&e._k(t.keyCode,"enter",13,t.key,"Enter")?null:e.handleEnter.apply(null,arguments)}]}},[a("input",{class:(t={"cx-vui-f-select__input":!0,"cx-vui-input--in-focus":e.inFocus,"cx-vui-input":!0},t["cx-vui-input--"+e.stateType()]=e.stateType(),t["size-fullwidth"]=!0,t["has-error"]=e.error,t),attrs:{id:e.elementId,placeholder:e.placeholder,autocomplete:e.autocomplete,type:"text"},domProps:{value:e.query},on:{input:e.handleInput,focus:e.handleFocus}}),e._v(" "),e.inFocus?a("div",{staticClass:"cx-vui-f-select__results"},[e.filteredOptions.length?a("div",e._l(e.filteredOptions,(function(t,i){return a("div",{class:{"cx-vui-f-select__result":!0,"in-focus":i===e.optionInFocus,"is-selected":e.isSelectedOption(t)},on:{click:function(i){return e.handleResultClick(t.value)}}},[e._v(e._s(e.getOptionLabel(t))+"\n\t\t\t\t")])})),0):a("div",{staticClass:"cx-vui-f-select__results-message",domProps:{innerHTML:e._s(e.notFoundMeassge)}})]):e._e()]),e._v(" "),a("select",{staticClass:"cx-vui-f-select__select-tag",attrs:{placeholder:e.placeholder,disabled:e.disabled,readonly:e.readonly,multiple:e.multiple},domProps:{value:e.currentValues}},e._l(e.currentValues,(function(t){return a("option",{attrs:{selected:""},domProps:{value:t}})})),0)])};function nt(t){return nt="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},nt(t)}function st(t,e){var i=Object.keys(t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(t);e&&(a=a.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),i.push.apply(i,a)}return i}function ot(t){for(var e=1;e["on","off"].includes(t),default:"off"},conditions:{type:Array,default:function(){return[]}},remote:{type:Boolean,default:!1},remoteCallback:{type:Function},remoteTrigger:{type:Number,default:3},remoteTriggerMessage:{type:String,default:"Please enter %d char(s) to start search"},notFoundMeassge:{type:String,default:"There is no items find matching this query"},loadingMessage:{type:String,default:"Loading..."},preventWrap:{type:Boolean,default:!1},wrapperCss:{type:Array,default:function(){return[]}},elementId:{type:String},stateType:{type:Function}},data:()=>({query:"",inFocus:!1,optionInFocus:!1,loading:!1,loaded:!1}),created(){this.currentValues||(this.currentValues=[])},computed:{filteredOptions(){return this.query?this.optionsList.filter((t=>t.label.includes(this.query)||t.value.includes(this.query))):this.optionsList}},methods:{handleFocus(t){this.inFocus=!0,this.$emit("on-focus",t)},handleOptionsNav(t){"ArrowUp"!==t.key&&"Tab"!==t.key||this.navigateOptions(-1),"ArrowDown"===t.key&&this.navigateOptions(1)},navigateOptions(t){!1===this.optionInFocus&&(this.optionInFocus=-1);let e=this.optionInFocus+t,i=this.filteredOptions.length-1;i<0&&(i=0),e<0?e=0:e>i&&(e=i),this.optionInFocus=e},onClickOutside(t){this.inFocus&&(this.inFocus=!1,this.$emit("on-blur",t))},handleInput(t){this.$emit("input",t.target.value),this.query=t.target.value,this.inFocus||(this.inFocus=!0)},handleEnter(){if(!1===this.optionInFocus||!this.optionsList[this.optionInFocus])return;let t=this.filteredOptions[this.optionInFocus].value;this.handleResultClick(t)},handleResultClick(t){this.isNonRemovable(t)||(this.value.includes(t)?this.removeValue(t):this.multiple?this.storeValues([...new Set(this.value),t]):this.storeValues(t),this.inFocus=!1,this.optionInFocus=!1,this.query="")},removeValue(t){this.multiple||this.storeValues("");const e=this.value.filter((e=>e!==t));this.storeValues(e)},storeValues(t){this.$emit("change",this.sanitizeValue(t))},getOptionLabel(t){var e;const i="string"==typeof t?t:t.value,a=this.optionsList.find((({value:t})=>t===i));return null!==(e=a?.label)&&void 0!==e?e:""},sanitizeValue(t){return this.multiple?Array.isArray(t)?t:[t].filter(Boolean):Array.isArray(t)?t[0]:t},isSelectedOption(t){const e="string"==typeof t?t:t.value;return this.value.includes(e)},isNonRemovable(t){var e;const i="string"==typeof t?t:t.value,a=this.optionsList.find((({value:t})=>t===i));return null!==(e=a?.nonRemovable)&&void 0!==e&&e}},inject:["elementId","stateType"]};i(9330);const mt=s(ht,at,[],!1,null,"13c6d87e",null).exports;var _t=function(){var t=this,e=t.$createElement;return(t._self._c||e)("input",{staticClass:"cx-vui-input size-fullwidth",attrs:{type:"date",name:t.elementId,id:t.elementId,max:t.max,min:t.min},domProps:{value:t.value},on:{input:t.handleInput}})};_t._withStripped=!0;let bt=new Date(Date.now()-864e4).toJSON();[bt]=bt.split("T");const gt=t=>!!["now"].includes(t)||!Number.isNaN(new Date(t).getTime()),yt=s({name:"CxVuiDate",props:{value:{type:String},maxDate:{validator:gt},minDate:{validator:gt},elementId:{type:String}},data(){return{max:"now"===this.maxDate?bt:this.maxDate,min:"now"===this.minDate?bt:this.minDate}},methods:{handleInput(t){this.$emit("input",t.target.value)}},inject:["elementId"]},_t,[],!1,null,"1707aa50",null).exports;var xt=function(){var t=this.$createElement;return(this._self._c||t)("hr",{staticClass:"jfb"})};xt._withStripped=!0;i(5981);const wt=s({name:"Delimiter"},xt,[],!1,null,"362c518d",null).exports;var Ct=function(){var t=this,e=t.$createElement;return(t._self._c||e)("cx-vui-button",{attrs:{"button-style":"accent",size:"mini"},on:{click:t.print},scopedSlots:t._u([{key:"label",fn:function(){return[t.$slots.default?[t._t("default")]:[t._v("\n\t\t\t"+t._s(t.__("Print","jet-form-builder"))+"\n\t\t")]]},proxy:!0}],null,!0)})};Ct._withStripped=!0;const jt={name:"PrintButton",methods:{print(){window.print()}},mixins:[k]};i(7922);const St=s(jt,Ct,[],!1,null,"aa3950ea",null).exports;window.JetFBActions={renderCurrentPage:function(t,e={}){const i=new Vue({el:"#jet-form-builder_page_"+t.name,render:e=>e(t),...e});$("jet.fb.render.page",i)},getCurrentPath:T,getSearch:L,createPath:function(t={},e={},i=[]){const a=[];t={...L(),...t};for(const[e,n]of Object.entries(t))i.includes(e)||a.push(`${e}=${encodeURIComponent(n)}`);return[T(),a.join("&")].filter((t=>t)).join("?")},addQueryArgs:function(t,e){e=new URL(e);const i=new URLSearchParams(e.search),a=[];for(const[e,i]of Object.entries(t))a.push(...I(e,i));for(const[t,e]of a)e&&i.append(t,e);return e.origin+e.pathname+"?"+i},LocalStorage:J,resolveRestUrl:function(t,e){if("object"!=typeof e||!Object.keys(e)?.length)return t;for(let[i,a]of Object.entries(e)){const e=new RegExp(`\\(\\?P<${i}>(.*?)\\)`),n=t.match(e);if(Array.isArray(n)){if(a=""+a,!new RegExp(n[1]).test(a))throw new Error((0,O.sprintf)((0,O.__)("Invalid parameter for rest url. RegExp: %1$s, Value: %2$s","jet-form-builder"),n[1],a));t=t.replace(e,a)}}return t}},window.JetFBErrors={ApiInputError:e},window.JetFBComponents={CxVuiCollapseMini:o,DetailsTable:b,SimpleWrapperComponent:S,ListComponents:A,CxVuiTabsPanel:D,CxVuiTabs:B,ExternalLink:W,RowWrapper:S,ColumnWrapper:G,CxVuiSelect:Y,CxVuiPopup:it,CxVuiFSelect:mt,CxVuiDate:yt,Tooltip:C,Delimiter:wt,PrintButton:St},window.JetFBMixins={GetIncoming:r,SaveTabByAjax:l,i18n:k,ParseIncomingValueMixin:c,PromiseWrapper:u}})()})(); \ No newline at end of file +/******/ (() => { // webpackBootstrap +/******/ var __webpack_modules__ = ({ + +/***/ "../../node_modules/babel-loader/lib/index.js!../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/ColumnWrapper.vue?vue&type=script&lang=js": +/*!**************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/babel-loader/lib/index.js!../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/ColumnWrapper.vue?vue&type=script&lang=js ***! + \**************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + name: 'ColumnWrapper', + props: { + elementId: { + type: String, + required: true + }, + /** + * Possible values: + * 'padding-top-bottom-unset': true, + * 'padding-unset': true, + * 'padding-side-unset: true, + */ + classNames: { + type: Object, + default: () => ({}) + } + }, + data() { + return { + elementIdData: `cx_${this.elementId}` + }; + }, + computed: { + className() { + return { + 'cx-vui-component': true, + ...this.classNames + }; + } + }, + provide() { + return { + elementId: this.elementIdData + }; + } +}); + +/***/ }), + +/***/ "../../node_modules/babel-loader/lib/index.js!../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/CxVuiCollapseMini.vue?vue&type=script&lang=js": +/*!******************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/babel-loader/lib/index.js!../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/CxVuiCollapseMini.vue?vue&type=script&lang=js ***! + \******************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + name: 'cx-vui-collapse-mini', + props: { + withPanel: { + type: Boolean, + default: false + }, + initialActive: { + type: Boolean, + default: false + }, + label: { + type: String, + default: 'Collapse Mini' + }, + desc: { + type: String, + default: '' + }, + disabled: { + type: Boolean, + default: false + }, + icon: { + type: [Object, String], + default: '' + } + }, + data() { + return { + isActive: false + }; + }, + created() { + this.isActive = this.initialActive; + }, + methods: { + collapse() { + if (this.disabled) { + return; + } + this.isActive = !this.isActive; + this.$emit('change', this.isActive); + } + } +}); + +/***/ }), + +/***/ "../../node_modules/babel-loader/lib/index.js!../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/CxVuiDate.vue?vue&type=script&lang=js": +/*!**********************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/babel-loader/lib/index.js!../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/CxVuiDate.vue?vue&type=script&lang=js ***! + \**********************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +// +// +// +// +// +// +// +// +// +// +// +// +// + +let now = new Date(Date.now() - 8640000).toJSON(); +[now] = now.split('T'); +const dateValidator = value => { + if (['now'].includes(value)) { + return true; + } + return !Number.isNaN(new Date(value).getTime()); +}; +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + name: 'CxVuiDate', + props: { + value: { + type: String + }, + maxDate: { + validator: dateValidator + }, + minDate: { + validator: dateValidator + }, + elementId: { + type: String + } + }, + data() { + return { + max: 'now' === this.maxDate ? now : this.maxDate, + min: 'now' === this.minDate ? now : this.minDate + }; + }, + methods: { + handleInput(event) { + this.$emit('input', event.target.value); + } + }, + inject: ['elementId'] +}); + +/***/ }), + +/***/ "../../node_modules/babel-loader/lib/index.js!../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/CxVuiFSelect.vue?vue&type=script&lang=js": +/*!*************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/babel-loader/lib/index.js!../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/CxVuiFSelect.vue?vue&type=script&lang=js ***! + \*************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var v_click_outside_x__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! v-click-outside-x */ "../../node_modules/v-click-outside-x/dist/v-click-outside-x.esm.js"); +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// + + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + name: 'CxVuiFSelect', + directives: { + clickOutside: v_click_outside_x__WEBPACK_IMPORTED_MODULE_0__.directive + }, + props: { + value: { + type: [String, Number, Array], + default: '' + }, + placeholder: { + type: String, + default: '' + }, + optionsList: { + type: Array, + default: function () { + return []; + } + }, + disabled: { + type: Boolean, + default: false + }, + readonly: { + type: Boolean, + default: false + }, + error: { + type: Boolean, + default: false + }, + multiple: { + type: Boolean, + default: false + }, + autocomplete: { + validator(value) { + return ['on', 'off'].includes(value); + }, + default: 'off' + }, + conditions: { + type: Array, + default: function () { + return []; + } + }, + remote: { + type: Boolean, + default: false + }, + remoteCallback: { + type: Function + }, + remoteTrigger: { + type: Number, + default: 3 + }, + remoteTriggerMessage: { + type: String, + default: 'Please enter %d char(s) to start search' + }, + notFoundMeassge: { + type: String, + default: 'There is no items find matching this query' + }, + loadingMessage: { + type: String, + default: 'Loading...' + }, + preventWrap: { + type: Boolean, + default: false + }, + // Wrapper related props (should be passed into wrapper component) + wrapperCss: { + type: Array, + default: function () { + return []; + } + }, + // basically used from injected + elementId: { + type: String + }, + // basically used from injected + stateType: { + type: Function + } + }, + data() { + return { + query: '', + inFocus: false, + optionInFocus: false, + loading: false, + loaded: false + }; + }, + created() { + if (!this.currentValues) { + this.currentValues = []; + } + }, + computed: { + filteredOptions() { + if (!this.query) { + return this.optionsList; + } else { + return this.optionsList.filter(option => { + return option.label.includes(this.query) || option.value.includes(this.query); + }); + } + } + }, + methods: { + handleFocus(event) { + this.inFocus = true; + this.$emit('on-focus', event); + }, + handleOptionsNav(event) { + // next + if ('ArrowUp' === event.key || 'Tab' === event.key) { + this.navigateOptions(-1); + } + // prev + if ('ArrowDown' === event.key) { + this.navigateOptions(1); + } + }, + navigateOptions(direction) { + if (false === this.optionInFocus) { + this.optionInFocus = -1; + } + let index = this.optionInFocus + direction; + let maxLength = this.filteredOptions.length - 1; + if (maxLength < 0) { + maxLength = 0; + } + if (index < 0) { + index = 0; + } else if (index > maxLength) { + index = maxLength; + } + this.optionInFocus = index; + }, + onClickOutside(event) { + if (this.inFocus) { + this.inFocus = false; + this.$emit('on-blur', event); + } + }, + handleInput(event) { + this.$emit('input', event.target.value); + this.query = event.target.value; + if (!this.inFocus) { + this.inFocus = true; + } + }, + handleEnter() { + if (false === this.optionInFocus || !this.optionsList[this.optionInFocus]) { + return; + } + let value = this.filteredOptions[this.optionInFocus].value; + this.handleResultClick(value); + }, + handleResultClick(value) { + if (this.isNonRemovable(value)) { + return; + } + if (this.value.includes(value)) { + this.removeValue(value); + } else if (this.multiple) { + this.storeValues([...new Set(this.value), value]); + } else { + this.storeValues(value); + } + this.inFocus = false; + this.optionInFocus = false; + this.query = ''; + }, + removeValue(value) { + if (!this.multiple) { + this.storeValues(''); + } + const filtered = this.value.filter(current => current !== value); + this.storeValues(filtered); + }, + storeValues(value) { + this.$emit('change', this.sanitizeValue(value)); + }, + getOptionLabel(option) { + var _find$label; + const optionValue = 'string' === typeof option ? option : option.value; + const find = this.optionsList.find(({ + value + }) => value === optionValue); + return (_find$label = find?.label) !== null && _find$label !== void 0 ? _find$label : ''; + }, + sanitizeValue(value) { + if (this.multiple) { + return Array.isArray(value) ? value : [value].filter(Boolean); + } + return Array.isArray(value) ? value[0] : value; + }, + isSelectedOption(option) { + const optionValue = 'string' === typeof option ? option : option.value; + return this.value.includes(optionValue); + }, + isNonRemovable(option) { + var _find$nonRemovable; + const optionValue = 'string' === typeof option ? option : option.value; + const find = this.optionsList.find(({ + value + }) => value === optionValue); + return (_find$nonRemovable = find?.nonRemovable) !== null && _find$nonRemovable !== void 0 ? _find$nonRemovable : false; + } + }, + inject: ['elementId', 'stateType'] +}); + +/***/ }), + +/***/ "../../node_modules/babel-loader/lib/index.js!../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/CxVuiPopup.vue?vue&type=script&lang=js": +/*!***********************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/babel-loader/lib/index.js!../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/CxVuiPopup.vue?vue&type=script&lang=js ***! + \***********************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + name: 'CxVuiPopup', + props: { + /** + * Possible values: + * 'sticky-footer': true, + */ + classNames: { + type: Object, + default: () => ({}) + }, + stickyFooter: { + type: Boolean, + default: false + } + }, + computed: { + className() { + return { + 'cx-vui-popup': true, + ...this.classNames + }; + } + } +}); + +/***/ }), + +/***/ "../../node_modules/babel-loader/lib/index.js!../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/CxVuiSelect.vue?vue&type=script&lang=js": +/*!************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/babel-loader/lib/index.js!../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/CxVuiSelect.vue?vue&type=script&lang=js ***! + \************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +// +// +// +// +// +// +// +// +// +// +// +// + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + name: 'CxVuiSelect', + props: { + value: { + type: [String, Number], + default: '' + }, + elementId: { + type: String + }, + classNames: { + type: Object, + default: () => ({}) + } + }, + computed: { + className() { + return { + 'cx-vui-select': true, + ...this.classNames + }; + } + }, + methods: { + handleInput(event) { + this.$emit('input', event.target.value); + } + }, + inject: ['elementId'] +}); + +/***/ }), + +/***/ "../../node_modules/babel-loader/lib/index.js!../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/CxVuiTabs.vue?vue&type=script&lang=js": +/*!**********************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/babel-loader/lib/index.js!../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/CxVuiTabs.vue?vue&type=script&lang=js ***! + \**********************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + name: 'cx-vui-tabs', + props: { + value: { + type: [String, Number], + default: '' + }, + name: { + type: String, + default: '' + }, + invert: { + type: Boolean, + default: false + }, + inPanel: { + type: Boolean, + default: false + }, + layout: { + validator(value) { + return ['horizontal', 'vertical'].includes(value); + }, + default: 'horizontal' + }, + conditions: { + type: Array, + default() { + return []; + } + } + }, + data() { + return { + navList: [], + activeTab: this.value, + disabledTabs: [] + }; + }, + mounted() { + const tabs = this.getTabs(); + this.disabledTabs = this.getDisabledTabs(); + this.navList = tabs; + if (!this.activeTab) { + this.activeTab = tabs[0].name; + } + this.updateState(); + }, + methods: { + isActive(name) { + return name === this.activeTab; + }, + isDisabled(name) { + return this.disabledTabs.includes(name); + }, + getDisabledTabs() { + const names = []; + for (const tab of this.$children) { + if (tab.disabled) { + names.push(tab.name); + } + } + return names; + }, + onTabClick(tab) { + if (this.isDisabled(tab)) { + return; + } + this.activeTab = tab; + this.$emit('input', this.activeTab); + this.updateState(); + }, + updateState() { + const tabs = this.getTabs(); + this.navList = tabs; + tabs.forEach(tab => { + tab.show = this.activeTab === tab.name; + }); + }, + getTabs() { + const allTabs = this.$children.filter(item => { + return 'cx-vui-tabs-panel' === item.$options.name; + }); + const tabs = []; + allTabs.forEach(item => { + if (item.tab && this.name) { + if (item.tab === this.name) { + tabs.push(item); + } + } else { + tabs.push(item); + } + }); + return tabs; + } + } +}); + +/***/ }), + +/***/ "../../node_modules/babel-loader/lib/index.js!../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/CxVuiTabsPanel.vue?vue&type=script&lang=js": +/*!***************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/babel-loader/lib/index.js!../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/CxVuiTabsPanel.vue?vue&type=script&lang=js ***! + \***************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +// +// +// +// +// +// + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + name: 'cx-vui-tabs-panel', + props: { + tab: { + type: String, + default: '' + }, + name: { + type: String, + default: '' + }, + label: { + type: String, + default: '' + }, + disabled: { + type: Boolean, + default: false + }, + icon: { + type: [Object, String], + default: '' + } + }, + data() { + return { + show: false + }; + } +}); + +/***/ }), + +/***/ "../../node_modules/babel-loader/lib/index.js!../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/Delimiter.vue?vue&type=script&lang=js": +/*!**********************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/babel-loader/lib/index.js!../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/Delimiter.vue?vue&type=script&lang=js ***! + \**********************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +// +// +// +// + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + name: 'Delimiter' +}); + +/***/ }), + +/***/ "../../node_modules/babel-loader/lib/index.js!../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/DetailsTable.vue?vue&type=script&lang=js": +/*!*************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/babel-loader/lib/index.js!../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/DetailsTable.vue?vue&type=script&lang=js ***! + \*************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _DetailsTableRowValue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./DetailsTableRowValue */ "./admin-package/components/DetailsTableRowValue.vue"); +/* harmony import */ var _DetailsTableRow__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./DetailsTableRow */ "./admin-package/components/DetailsTableRow.vue"); +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// + + + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + name: 'DetailsTable', + components: { + DetailsTableRow: _DetailsTableRow__WEBPACK_IMPORTED_MODULE_1__["default"], + DetailsTableRowValue: _DetailsTableRowValue__WEBPACK_IMPORTED_MODULE_0__["default"] + }, + props: { + columns: { + type: Object + }, + source: { + type: Object + } + }, + methods: { + getColumnValue(column, ifEmpty = false) { + return this.source[column] ? this.source[column].value : ifEmpty; + }, + hasValueOrAnotherType(column) { + return this.getColumnValue(column) || 'rowValue' !== this.getType(column); + }, + getType(column) { + var _this$columns$column$; + return (_this$columns$column$ = this.columns[column].type) !== null && _this$columns$column$ !== void 0 ? _this$columns$column$ : 'rowValue'; + }, + canShow(columnName) { + const type = this.getType(columnName); + const inDetails = false !== this.columns[columnName].show_in_details; + const value = this.getColumnValue(columnName); + return inDetails && ('rowValue' !== type || value); + } + } +}); + +/***/ }), + +/***/ "../../node_modules/babel-loader/lib/index.js!../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/DetailsTableRow.vue?vue&type=script&lang=js": +/*!****************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/babel-loader/lib/index.js!../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/DetailsTableRow.vue?vue&type=script&lang=js ***! + \****************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// + +function defaultColumnClasses() { + return { + 'table-details-row-column': true + }; +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + name: 'DetailsTableRow', + props: { + role: { + type: String, + default: 'default', + validator: function (value) { + return -1 !== ['header', 'default', 'footer'].indexOf(value); + } + }, + type: { + type: String, + default: 'rowValue', + validator: function (value) { + return -1 !== ['rowValue', 'heading'].indexOf(value); + } + } + }, + computed: { + headingClasses() { + return this.classes({ + 'table-details-row--heading': true + }); + }, + contentClasses() { + return this.classes({ + 'table-details-row--content': true + }); + }, + actionClasses() { + return this.classes({ + 'table-details-row--actions': true + }); + } + }, + methods: { + classes(classes) { + return { + ...defaultColumnClasses(), + ...classes, + ['table-details-row-role--' + this.role]: true + }; + } + } +}); + +/***/ }), + +/***/ "../../node_modules/babel-loader/lib/index.js!../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/DetailsTableRowValue.vue?vue&type=script&lang=js": +/*!*********************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/babel-loader/lib/index.js!../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/DetailsTableRowValue.vue?vue&type=script&lang=js ***! + \*********************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + name: 'DetailsTableRowValue', + props: { + value: Object, + withIndent: { + type: Boolean, + default: false + }, + columns: { + type: Object, + default() { + return {}; + } + } + }, + data() { + return { + showNext: {} + }; + }, + computed: { + rootClasses() { + return { + 'jfb-recursive-details': true, + 'jfb-recursive-details--indent': this.withIndent + }; + } + }, + methods: { + getChildren(columnName) { + return this.columns[columnName]?.children || []; + }, + getItemLabel(columnName) { + return this.columns[columnName] ? this.columns[columnName].label : columnName; + }, + isObject(itemValue) { + return 'object' === typeof itemValue; + }, + toggleNext(name) { + const prev = this.showNext[name] || false; + this.$set(this.showNext, name, !prev); + }, + isShow(name) { + return 'undefined' === this.showNext[name] ? true : this.showNext[name]; + }, + itemClasses(isObject = true) { + return { + 'jfb-recursive-details-item': true, + 'jfb-recursive-details-item-with-children': isObject, + 'jfb-recursive-details-item-without-children': !isObject + }; + }, + arrowClasses(columnName) { + return { + dashicons: true, + 'dashicons-arrow-down-alt2': !this.isShow(columnName), + 'dashicons-arrow-up-alt2': this.isShow(columnName) + }; + }, + isSkipLevel(columnName) { + return this.columns[columnName]?.skip_level; + }, + isHiddenLevel(columnName) { + return !this.columns[columnName]?.hide; + } + } +}); + +/***/ }), + +/***/ "../../node_modules/babel-loader/lib/index.js!../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/ExternalLink.vue?vue&type=script&lang=js": +/*!*************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/babel-loader/lib/index.js!../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/ExternalLink.vue?vue&type=script&lang=js ***! + \*************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _mixins_i18n__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../mixins/i18n */ "./admin-package/mixins/i18n.js"); +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// + + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + name: 'ExternalLink', + mixins: [_mixins_i18n__WEBPACK_IMPORTED_MODULE_0__["default"]], + props: { + href: { + type: String, + default: '' + } + } +}); + +/***/ }), + +/***/ "../../node_modules/babel-loader/lib/index.js!../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/ListComponents.vue?vue&type=script&lang=js": +/*!***************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/babel-loader/lib/index.js!../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/ListComponents.vue?vue&type=script&lang=js ***! + \***************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + name: "ListComponents", + props: { + components: Array, + scope: String + } +}); + +/***/ }), + +/***/ "../../node_modules/babel-loader/lib/index.js!../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/PrintButton.vue?vue&type=script&lang=js": +/*!************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/babel-loader/lib/index.js!../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/PrintButton.vue?vue&type=script&lang=js ***! + \************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _mixins_i18n__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../mixins/i18n */ "./admin-package/mixins/i18n.js"); +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// + + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + name: 'PrintButton', + methods: { + print() { + window.print(); + } + }, + mixins: [_mixins_i18n__WEBPACK_IMPORTED_MODULE_0__["default"]] +}); + +/***/ }), + +/***/ "../../node_modules/babel-loader/lib/index.js!../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/RowWrapper.vue?vue&type=script&lang=js": +/*!***********************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/babel-loader/lib/index.js!../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/RowWrapper.vue?vue&type=script&lang=js ***! + \***********************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _Tooltip__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./Tooltip */ "./admin-package/components/Tooltip.vue"); +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// + + +const isCorrectType = value => ['warning-danger', 'warning', 'loading', ''].includes(value); +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + name: 'RowWrapper', + components: { + Tooltip: _Tooltip__WEBPACK_IMPORTED_MODULE_0__["default"] + }, + props: { + elementId: { + type: String + }, + state: { + type: [String, Object], + validator(value) { + if ('string' === typeof value) { + return isCorrectType(value); + } + return isCorrectType(value.type); + }, + default: '' + }, + /** + * Possible values: + * 'size--1-x-2': true, + * 'padding-side-unset': true, + */ + classNames: { + type: Object, + default: () => ({ + 'cx-vui-component--equalwidth': true + }) + } + }, + data() { + return { + elementIdData: `cx_${this.elementId}` + }; + }, + computed: { + className() { + return { + 'cx-vui-component': true, + ['cx-vui-component--is-' + this.stateType]: this.stateType, + ...this.classNames + }; + }, + stateType() { + return 'string' === typeof this.state ? this.state : this.state.type; + }, + stateHelp() { + return 'string' === typeof this.state ? '' : this.state.message; + } + }, + provide() { + return { + elementId: this.elementIdData, + stateType: () => this.stateType + }; + } +}); + +/***/ }), + +/***/ "../../node_modules/babel-loader/lib/index.js!../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/Tooltip.vue?vue&type=script&lang=js": +/*!********************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/babel-loader/lib/index.js!../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/Tooltip.vue?vue&type=script&lang=js ***! + \********************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +// +// +// +// +// +// +// +// +// +// +// +// +// +// +// + +const schema = { + success: 'dashicons-yes-alt', + warning: 'dashicons-warning', + 'warning-danger': ['dashicons-warning', 'danger'], + info: 'dashicons-info', + pending: 'dashicons-hourglass', + error: 'dashicons-dismiss', + loading: ['dashicons-update', 'loading'] +}; +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + name: 'Tooltip', + props: { + icon: { + type: String, + validator(value) { + return Object.keys(schema).includes(value); + }, + default: 'info' + }, + position: { + type: String, + validator(value) { + return ['top-right', 'top-left'].includes(value); + }, + default: 'top-left' + } + }, + computed: { + wrapperClasses() { + return { + 'jfb-tooltip': true, + 'jfb-tooltip-has-text': !!this.$slots.default, + 'jfb-tooltip-has-help': !!this.$slots.help, + ['jfb-tooltip-position--' + this.position]: true + }; + }, + dashIconClass() { + var _schema$this$icon; + let classes = (_schema$this$icon = schema[this.icon]) !== null && _schema$this$icon !== void 0 ? _schema$this$icon : ''; + if (!Array.isArray(classes)) { + classes = [classes]; + } + return ['dashicons', ...classes]; + }, + tooltipClasses() { + return { + 'cx-vui-tooltip': true, + ['tooltip-position-' + this.position]: true + }; + } + } +}); + +/***/ }), + +/***/ "../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/ColumnWrapper.vue?vue&type=style&index=0&id=edf02a0e&lang=scss&scoped=true": +/*!******************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/ColumnWrapper.vue?vue&type=style&index=0&id=edf02a0e&lang=scss&scoped=true ***! + \******************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/sourceMaps.js */ "../../node_modules/css-loader/dist/runtime/sourceMaps.js"); +/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "../../node_modules/css-loader/dist/runtime/api.js"); +/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); +// Imports + + +var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); +// Module +___CSS_LOADER_EXPORT___.push([module.id, `.cx-vui-component[data-v-edf02a0e] { + flex-direction: column; + width: 100%; + border-top: unset; + gap: 0.7em; +} +.cx-vui-component.padding-side-unset[data-v-edf02a0e] { + padding-left: unset; + padding-right: unset; +} +.padding-top-bottom-unset[data-v-edf02a0e] { + padding-top: unset; + padding-bottom: unset; +} +.padding-unset[data-v-edf02a0e] { + padding: unset; +}`, "",{"version":3,"sources":["webpack://./admin-package/components/ColumnWrapper.vue","webpack://./../ColumnWrapper.vue"],"names":[],"mappings":"AA+DA;EACC,sBAAA;EACA,WAAA;EACA,iBAAA;EACA,UAAA;AC9DD;ADgEC;EACC,mBAAA;EACA,oBAAA;AC9DF;ADkEA;EACC,kBAAA;EACA,qBAAA;AC/DD;ADkEA;EACC,cAAA;AC/DD","sourcesContent":["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.cx-vui-component {\n\tflex-direction: column;\n\twidth: 100%;\n\tborder-top: unset;\n\tgap: 0.7em;\n\n\t&.padding-side-unset {\n\t\tpadding-left: unset;\n\t\tpadding-right: unset;\n\t}\n}\n\n.padding-top-bottom-unset {\n\tpadding-top: unset;\n\tpadding-bottom: unset;\n}\n\n.padding-unset {\n\tpadding: unset;\n}\n",".cx-vui-component {\n flex-direction: column;\n width: 100%;\n border-top: unset;\n gap: 0.7em;\n}\n.cx-vui-component.padding-side-unset {\n padding-left: unset;\n padding-right: unset;\n}\n\n.padding-top-bottom-unset {\n padding-top: unset;\n padding-bottom: unset;\n}\n\n.padding-unset {\n padding: unset;\n}"],"sourceRoot":""}]); +// Exports +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); + + +/***/ }), + +/***/ "../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/CxVuiCollapseMini.vue?vue&type=style&index=0&id=eca1c496&lang=scss": +/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/CxVuiCollapseMini.vue?vue&type=style&index=0&id=eca1c496&lang=scss ***! + \**********************************************************************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/sourceMaps.js */ "../../node_modules/css-loader/dist/runtime/sourceMaps.js"); +/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "../../node_modules/css-loader/dist/runtime/api.js"); +/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); +// Imports + + +var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); +// Module +___CSS_LOADER_EXPORT___.push([module.id, `.cx-vui-collapse-mini__wrap { + padding: 0 0 20px; +} +.cx-vui-collapse-mini__item { + border-bottom: 1px solid #ECECEC; +} +.cx-vui-collapse-mini__item:first-child { + border-top: 1px solid #ECECEC; +} +.cx-vui-collapse-mini__item:last-child { + margin-bottom: unset; +} +.cx-vui-collapse-mini__item--active .cx-vui-collapse-mini__header-label > svg { + transform: rotate(90deg); +} +.cx-vui-collapse-mini__header { + padding: 1.2rem; + display: flex; + align-items: center; + cursor: pointer; + column-gap: 1em; +} +.cx-vui-collapse-mini__header-label { + font-weight: 500; + font-size: 15px; + line-height: 23px; + color: #007CBA; + display: flex; + align-items: center; +} +.cx-vui-collapse-mini__header-desc { + font-size: 15px; + line-height: 23px; + color: #7B7E81; +} +.cx-vui-collapse-mini__header-label svg { + margin: -1px 8px 0 0; + transition: 0.3s; +} +.cx-vui-collapse-mini--disabled { + opacity: 0.5; +} +.cx-vui-collapse-mini--disabled .cx-vui-collapse-mini__header { + cursor: not-allowed; +} +.cx-vui-collapse-mini__content { + padding: 0 1.5rem 1.5rem; +}`, "",{"version":3,"sources":["webpack://./admin-package/components/CxVuiCollapseMini.vue","webpack://./../CxVuiCollapseMini.vue"],"names":[],"mappings":"AA6GC;EACC,iBAAA;AC5GF;AD+GC;EAaC,gCAAA;ACzHF;AD6GE;EACC,6BAAA;AC3GH;AD8GE;EACC,oBAAA;AC5GH;AD+GE;EACC,wBAAA;AC7GH;ADmHC;EACC,eAAA;EACA,aAAA;EACA,mBAAA;EACA,eAAA;EACA,eAAA;ACjHF;ADmHE;EACC,gBAAA;EACA,eAAA;EACA,iBAAA;EACA,cAAA;EACA,aAAA;EACA,mBAAA;ACjHH;ADoHE;EACC,eAAA;EACA,iBAAA;EACA,cAAA;AClHH;ADqHE;EACC,oBAAA;EACA,gBAAA;ACnHH;ADuHC;EACC,YAAA;ACrHF;ADuHE;EACC,mBAAA;ACrHH;ADyHC;EACC,wBAAA;ACvHF","sourcesContent":["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.cx-vui-collapse-mini {\n\t&__wrap {\n\t\tpadding: 0 0 20px;\n\t}\n\n\t&__item {\n\t\t&:first-child {\n\t\t\tborder-top: 1px solid #ECECEC;\n\t\t}\n\n\t\t&:last-child {\n\t\t\tmargin-bottom: unset;\n\t\t}\n\n\t\t&--active .cx-vui-collapse-mini__header-label > svg {\n\t\t\ttransform: rotate(90deg);\n\t\t}\n\n\t\tborder-bottom: 1px solid #ECECEC;\n\t}\n\n\t&__header {\n\t\tpadding: 1.2rem;\n\t\tdisplay: flex;\n\t\talign-items: center;\n\t\tcursor: pointer;\n\t\tcolumn-gap: 1em;\n\n\t\t&-label {\n\t\t\tfont-weight: 500;\n\t\t\tfont-size: 15px;\n\t\t\tline-height: 23px;\n\t\t\tcolor: #007CBA;\n\t\t\tdisplay: flex;\n\t\t\talign-items: center;\n\t\t}\n\n\t\t&-desc {\n\t\t\tfont-size: 15px;\n\t\t\tline-height: 23px;\n\t\t\tcolor: #7B7E81;\n\t\t}\n\n\t\t&-label svg {\n\t\t\tmargin: -1px 8px 0 0;\n\t\t\ttransition: 0.3s;\n\t\t}\n\t}\n\n\t&--disabled {\n\t\topacity: 0.5;\n\n\t\t.cx-vui-collapse-mini__header {\n\t\t\tcursor: not-allowed;\n\t\t}\n\t}\n\n\t&__content {\n\t\tpadding: 0 1.5rem 1.5rem;\n\t}\n}\n",".cx-vui-collapse-mini__wrap {\n padding: 0 0 20px;\n}\n.cx-vui-collapse-mini__item {\n border-bottom: 1px solid #ECECEC;\n}\n.cx-vui-collapse-mini__item:first-child {\n border-top: 1px solid #ECECEC;\n}\n.cx-vui-collapse-mini__item:last-child {\n margin-bottom: unset;\n}\n.cx-vui-collapse-mini__item--active .cx-vui-collapse-mini__header-label > svg {\n transform: rotate(90deg);\n}\n.cx-vui-collapse-mini__header {\n padding: 1.2rem;\n display: flex;\n align-items: center;\n cursor: pointer;\n column-gap: 1em;\n}\n.cx-vui-collapse-mini__header-label {\n font-weight: 500;\n font-size: 15px;\n line-height: 23px;\n color: #007CBA;\n display: flex;\n align-items: center;\n}\n.cx-vui-collapse-mini__header-desc {\n font-size: 15px;\n line-height: 23px;\n color: #7B7E81;\n}\n.cx-vui-collapse-mini__header-label svg {\n margin: -1px 8px 0 0;\n transition: 0.3s;\n}\n.cx-vui-collapse-mini--disabled {\n opacity: 0.5;\n}\n.cx-vui-collapse-mini--disabled .cx-vui-collapse-mini__header {\n cursor: not-allowed;\n}\n.cx-vui-collapse-mini__content {\n padding: 0 1.5rem 1.5rem;\n}"],"sourceRoot":""}]); +// Exports +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); + + +/***/ }), + +/***/ "../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/CxVuiFSelect.vue?vue&type=style&index=0&id=e0ca50fe&scoped=true&lang=scss": +/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/CxVuiFSelect.vue?vue&type=style&index=0&id=e0ca50fe&scoped=true&lang=scss ***! + \*****************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/sourceMaps.js */ "../../node_modules/css-loader/dist/runtime/sourceMaps.js"); +/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "../../node_modules/css-loader/dist/runtime/api.js"); +/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); +// Imports + + +var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); +// Module +___CSS_LOADER_EXPORT___.push([module.id, `.cx-vui-input--warning-danger[data-v-e0ca50fe] { + border: 1px solid #d63638; +}`, "",{"version":3,"sources":["webpack://./admin-package/components/CxVuiFSelect.vue","webpack://./../CxVuiFSelect.vue"],"names":[],"mappings":"AAoVC;EACC,yBAAA;ACnVF","sourcesContent":["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.cx-vui-input {\n\t&--warning-danger {\n\t\tborder: 1px solid #d63638;\n\t}\n}\n",".cx-vui-input--warning-danger {\n border: 1px solid #d63638;\n}"],"sourceRoot":""}]); +// Exports +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); + + +/***/ }), + +/***/ "../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/CxVuiPopup.vue?vue&type=style&index=0&id=c40a982a&scoped=true&lang=scss": +/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/CxVuiPopup.vue?vue&type=style&index=0&id=c40a982a&scoped=true&lang=scss ***! + \***************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/sourceMaps.js */ "../../node_modules/css-loader/dist/runtime/sourceMaps.js"); +/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "../../node_modules/css-loader/dist/runtime/api.js"); +/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); +// Imports + + +var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); +// Module +___CSS_LOADER_EXPORT___.push([module.id, `.cx-vui-popup__close[data-v-c40a982a] { + position: unset; +} +.cx-vui-popup__header[data-v-c40a982a] { + display: flex; + justify-content: space-between; + padding-bottom: 10px; + margin: unset; + border-bottom: 1px solid #ECECEC; +} +.cx-vui-popup.sticky-header .cx-vui-popup__body[data-v-c40a982a], .cx-vui-popup.sticky-footer .cx-vui-popup__body[data-v-c40a982a] { + max-height: 80vh; + overflow-y: auto; +} +.cx-vui-popup.sticky-header .cx-vui-popup__header[data-v-c40a982a] { + position: sticky; + top: 0; + background-color: white; + padding-top: 20px; + z-index: 1; +} +.cx-vui-popup.sticky-header .cx-vui-popup__body[data-v-c40a982a] { + padding-top: 0; +} +.cx-vui-popup.sticky-footer .cx-vui-popup__body[data-v-c40a982a] { + padding-bottom: 0; +} +.cx-vui-popup.sticky-footer .cx-vui-popup__content[data-v-c40a982a] { + padding-bottom: 40px; +} +.cx-vui-popup.sticky-footer .cx-vui-popup__footer[data-v-c40a982a] { + position: sticky; + bottom: 0; + background-color: white; + padding-bottom: 20px; + border-top: 1px solid #ECECEC; +}`, "",{"version":3,"sources":["webpack://./admin-package/components/CxVuiPopup.vue","webpack://./../CxVuiPopup.vue"],"names":[],"mappings":"AAiEC;EACC,eAAA;AChEF;ADmEC;EACC,aAAA;EACA,8BAAA;EACA,oBAAA;EACA,aAAA;EACA,gCAAA;ACjEF;ADqEE;EACC,gBAAA;EACA,gBAAA;ACnEH;ADwEE;EACC,gBAAA;EACA,MAAA;EACA,uBAAA;EACA,iBAAA;EACA,UAAA;ACtEH;ADyEE;EACC,cAAA;ACvEH;AD4EE;EACC,iBAAA;AC1EH;AD6EE;EACC,oBAAA;AC3EH;AD8EE;EACC,gBAAA;EACA,SAAA;EACA,uBAAA;EACA,oBAAA;EACA,6BAAA;AC5EH","sourcesContent":["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.cx-vui-popup {\n\t&__close {\n\t\tposition: unset;\n\t}\n\n\t&__header {\n\t\tdisplay: flex;\n\t\tjustify-content: space-between;\n\t\tpadding-bottom: 10px;\n\t\tmargin: unset;\n\t\tborder-bottom: 1px solid #ECECEC;\n\t}\n\n\t&.sticky-header, &.sticky-footer {\n\t\t.cx-vui-popup__body {\n\t\t\tmax-height: 80vh;\n\t\t\toverflow-y: auto;\n\t\t}\n\t}\n\n\t&.sticky-header {\n\t\t.cx-vui-popup__header {\n\t\t\tposition: sticky;\n\t\t\ttop: 0;\n\t\t\tbackground-color: white;\n\t\t\tpadding-top: 20px;\n\t\t\tz-index: 1;\n\t\t}\n\n\t\t.cx-vui-popup__body {\n\t\t\tpadding-top: 0;\n\t\t}\n\t}\n\n\t&.sticky-footer {\n\t\t.cx-vui-popup__body {\n\t\t\tpadding-bottom: 0;\n\t\t}\n\n\t\t.cx-vui-popup__content {\n\t\t\tpadding-bottom: 40px;\n\t\t}\n\n\t\t.cx-vui-popup__footer {\n\t\t\tposition: sticky;\n\t\t\tbottom: 0;\n\t\t\tbackground-color: white;\n\t\t\tpadding-bottom: 20px;\n\t\t\tborder-top: 1px solid #ECECEC;\n\t\t}\n\t}\n}\n\n",".cx-vui-popup__close {\n position: unset;\n}\n.cx-vui-popup__header {\n display: flex;\n justify-content: space-between;\n padding-bottom: 10px;\n margin: unset;\n border-bottom: 1px solid #ECECEC;\n}\n.cx-vui-popup.sticky-header .cx-vui-popup__body, .cx-vui-popup.sticky-footer .cx-vui-popup__body {\n max-height: 80vh;\n overflow-y: auto;\n}\n.cx-vui-popup.sticky-header .cx-vui-popup__header {\n position: sticky;\n top: 0;\n background-color: white;\n padding-top: 20px;\n z-index: 1;\n}\n.cx-vui-popup.sticky-header .cx-vui-popup__body {\n padding-top: 0;\n}\n.cx-vui-popup.sticky-footer .cx-vui-popup__body {\n padding-bottom: 0;\n}\n.cx-vui-popup.sticky-footer .cx-vui-popup__content {\n padding-bottom: 40px;\n}\n.cx-vui-popup.sticky-footer .cx-vui-popup__footer {\n position: sticky;\n bottom: 0;\n background-color: white;\n padding-bottom: 20px;\n border-top: 1px solid #ECECEC;\n}"],"sourceRoot":""}]); +// Exports +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); + + +/***/ }), + +/***/ "../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/CxVuiSelect.vue?vue&type=style&index=0&id=332e17cd&lang=scss&scoped=true": +/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/CxVuiSelect.vue?vue&type=style&index=0&id=332e17cd&lang=scss&scoped=true ***! + \****************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/sourceMaps.js */ "../../node_modules/css-loader/dist/runtime/sourceMaps.js"); +/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "../../node_modules/css-loader/dist/runtime/api.js"); +/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); +// Imports + + +var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); +// Module +___CSS_LOADER_EXPORT___.push([module.id, `.cx-vui-select[data-v-332e17cd] { + line-height: 2em; + padding: 6px 24px 6px 8px; +} +.cx-vui-select.fullwidth[data-v-332e17cd] { + width: 100%; +}`, "",{"version":3,"sources":["webpack://./admin-package/components/CxVuiSelect.vue","webpack://./../CxVuiSelect.vue"],"names":[],"mappings":"AAgDA;EACC,gBAAA;EACA,yBAAA;AC/CD;ADiDC;EACC,WAAA;AC/CF","sourcesContent":["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.cx-vui-select {\n\tline-height: 2em;\n\tpadding: 6px 24px 6px 8px;\n\n\t&.fullwidth {\n\t\twidth: 100%;\n\t}\n}\n",".cx-vui-select {\n line-height: 2em;\n padding: 6px 24px 6px 8px;\n}\n.cx-vui-select.fullwidth {\n width: 100%;\n}"],"sourceRoot":""}]); +// Exports +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); + + +/***/ }), + +/***/ "../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/CxVuiTabs.vue?vue&type=style&index=0&id=3c8e3f8f&lang=scss": +/*!**************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/CxVuiTabs.vue?vue&type=style&index=0&id=3c8e3f8f&lang=scss ***! + \**************************************************************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/sourceMaps.js */ "../../node_modules/css-loader/dist/runtime/sourceMaps.js"); +/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "../../node_modules/css-loader/dist/runtime/api.js"); +/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); +// Imports + + +var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); +// Module +___CSS_LOADER_EXPORT___.push([module.id, `.cx-vui-tabs__nav-item--disabled { + opacity: 0.5; + cursor: not-allowed; +} +.cx-vui-tabs__nav-item--disabled:hover { + color: unset; +} +.cx-vui-tabs__nav-item--has-icon { + display: flex; + justify-content: space-between; + column-gap: 1em; +} +.cx-vui-tabs--layout-vertical > .cx-vui-tabs__nav { + width: unset; + flex: unset; + max-width: unset; +} +.cx-vui-tabs--layout-vertical > .cx-vui-tabs__content { + flex: 1; +}`, "",{"version":3,"sources":["webpack://./admin-package/components/CxVuiTabs.vue","webpack://./../CxVuiTabs.vue"],"names":[],"mappings":"AAsJC;EACC,YAAA;EACA,mBAAA;ACrJF;ADuJE;EACC,YAAA;ACrJH;ADyJC;EACC,aAAA;EACA,8BAAA;EACA,eAAA;ACvJF;AD4JC;EACC,YAAA;EACA,WAAA;EACA,gBAAA;ACzJF;AD4JC;EACC,OAAA;AC1JF","sourcesContent":["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.cx-vui-tabs__nav-item {\n\t&--disabled {\n\t\topacity: 0.5;\n\t\tcursor: not-allowed;\n\n\t\t&:hover {\n\t\t\tcolor: unset;\n\t\t}\n\t}\n\n\t&--has-icon {\n\t\tdisplay: flex;\n\t\tjustify-content: space-between;\n\t\tcolumn-gap: 1em;\n\t}\n}\n\n.cx-vui-tabs--layout-vertical {\n\t& > .cx-vui-tabs__nav {\n\t\twidth: unset;\n\t\tflex: unset;\n\t\tmax-width: unset;\n\t}\n\n\t& > .cx-vui-tabs__content {\n\t\tflex: 1;\n\t}\n}\n\n\n",".cx-vui-tabs__nav-item--disabled {\n opacity: 0.5;\n cursor: not-allowed;\n}\n.cx-vui-tabs__nav-item--disabled:hover {\n color: unset;\n}\n.cx-vui-tabs__nav-item--has-icon {\n display: flex;\n justify-content: space-between;\n column-gap: 1em;\n}\n\n.cx-vui-tabs--layout-vertical > .cx-vui-tabs__nav {\n width: unset;\n flex: unset;\n max-width: unset;\n}\n.cx-vui-tabs--layout-vertical > .cx-vui-tabs__content {\n flex: 1;\n}"],"sourceRoot":""}]); +// Exports +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); + + +/***/ }), + +/***/ "../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/Delimiter.vue?vue&type=style&index=0&id=8c6d5cba&scoped=true&lang=scss": +/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/Delimiter.vue?vue&type=style&index=0&id=8c6d5cba&scoped=true&lang=scss ***! + \**************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/sourceMaps.js */ "../../node_modules/css-loader/dist/runtime/sourceMaps.js"); +/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "../../node_modules/css-loader/dist/runtime/api.js"); +/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); +// Imports + + +var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); +// Module +___CSS_LOADER_EXPORT___.push([module.id, `hr.jfb[data-v-8c6d5cba] { + border: 0; + border-top: 1px solid #ECECEC; + margin: unset; +}`, "",{"version":3,"sources":["webpack://./admin-package/components/Delimiter.vue","webpack://./../Delimiter.vue"],"names":[],"mappings":"AAWA;EACC,SAAA;EACA,6BAAA;EACA,aAAA;ACVD","sourcesContent":["\n\n\n\n\n\n\n\n\n\n\nhr.jfb {\n\tborder: 0;\n\tborder-top: 1px solid #ECECEC;\n\tmargin: unset;\n}\n","hr.jfb {\n border: 0;\n border-top: 1px solid #ECECEC;\n margin: unset;\n}"],"sourceRoot":""}]); +// Exports +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); + + +/***/ }), + +/***/ "../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/DetailsTable.vue?vue&type=style&index=0&id=5f62dc40&lang=scss": +/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/DetailsTable.vue?vue&type=style&index=0&id=5f62dc40&lang=scss ***! + \*****************************************************************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/sourceMaps.js */ "../../node_modules/css-loader/dist/runtime/sourceMaps.js"); +/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "../../node_modules/css-loader/dist/runtime/api.js"); +/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); +// Imports + + +var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); +// Module +___CSS_LOADER_EXPORT___.push([module.id, `.table-details { + display: flex; + flex-direction: column; +}`, "",{"version":3,"sources":["webpack://./admin-package/components/DetailsTable.vue","webpack://./../DetailsTable.vue"],"names":[],"mappings":"AA2DA;EACC,aAAA;EACA,sBAAA;AC1DD","sourcesContent":["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.table-details {\n\tdisplay: flex;\n\tflex-direction: column;\n}\n",".table-details {\n display: flex;\n flex-direction: column;\n}"],"sourceRoot":""}]); +// Exports +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); + + +/***/ }), + +/***/ "../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/DetailsTableRow.vue?vue&type=style&index=0&id=d41fc6ac&lang=scss": +/*!********************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/DetailsTableRow.vue?vue&type=style&index=0&id=d41fc6ac&lang=scss ***! + \********************************************************************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/sourceMaps.js */ "../../node_modules/css-loader/dist/runtime/sourceMaps.js"); +/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "../../node_modules/css-loader/dist/runtime/api.js"); +/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); +// Imports + + +var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); +// Module +___CSS_LOADER_EXPORT___.push([module.id, `.table-details-row { + display: flex; + justify-content: space-between; + font-size: 1.1em; +} +.table-details-row:first-child { + font-weight: bold; +} +.table-details-row:nth-child(even) { + background-color: #eeeeee; +} +.table-details-row-column { + padding: 0.5em 1em; + /*border-bottom: 1px solid #ccc;*/ +} +.table-details-row--heading { + flex: 1; + text-align: right; +} +.table-details-row-role--default.table-details-row--heading { + font-weight: 600; +} +.table-details-row--content { + flex: 2; +} +.table-details-row--actions { + flex: 0.3; + /*border-left: 1px solid #ccc;*/ +} +.table-details-row h3 { + padding: 0.5em; + border-bottom: 1px solid #aaa; + width: 50%; + margin: 1em auto; + text-align: center; + color: #aaa; + font-weight: 400; +}`, "",{"version":3,"sources":["webpack://./admin-package/components/DetailsTableRow.vue","webpack://./../DetailsTableRow.vue"],"names":[],"mappings":"AA4FA;EACC,aAAA;EACA,8BAAA;EACA,gBAAA;AC3FD;AD4FC;EACC,iBAAA;AC1FF;AD4FC;EACC,yBAAA;AC1FF;AD4FC;EACC,kBAAA;EACA,iCAAA;AC1FF;AD4FC;EACC,OAAA;EACA,iBAAA;AC1FF;AD4FC;EACC,gBAAA;AC1FF;AD4FC;EACC,OAAA;AC1FF;AD4FC;EACC,SAAA;EACA,+BAAA;AC1FF;AD6FC;EACC,cAAA;EACA,6BAAA;EACA,UAAA;EACA,gBAAA;EACA,kBAAA;EACA,WAAA;EACA,gBAAA;AC3FF","sourcesContent":["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.table-details-row {\n\tdisplay: flex;\n\tjustify-content: space-between;\n\tfont-size: 1.1em;\n\t&:first-child {\n\t\tfont-weight: bold;\n\t}\n\t&:nth-child(even) {\n\t\tbackground-color: #eeeeee;\n\t}\n\t&-column {\n\t\tpadding: 0.5em 1em;\n\t\t/*border-bottom: 1px solid #ccc;*/\n\t}\n\t&--heading {\n\t\tflex: 1;\n\t\ttext-align: right;\n\t}\n\t&-role--default.table-details-row--heading {\n\t\tfont-weight: 600;\n\t}\n\t&--content {\n\t\tflex: 2;\n\t}\n\t&--actions {\n\t\tflex: 0.3;\n\t\t/*border-left: 1px solid #ccc;*/\n\t}\n\n\th3 {\n\t\tpadding: 0.5em;\n\t\tborder-bottom: 1px solid #aaa;\n\t\twidth: 50%;\n\t\tmargin: 1em auto;\n\t\ttext-align: center;\n\t\tcolor: #aaa;\n\t\tfont-weight: 400;\n\t}\n}\n",".table-details-row {\n display: flex;\n justify-content: space-between;\n font-size: 1.1em;\n}\n.table-details-row:first-child {\n font-weight: bold;\n}\n.table-details-row:nth-child(even) {\n background-color: #eeeeee;\n}\n.table-details-row-column {\n padding: 0.5em 1em;\n /*border-bottom: 1px solid #ccc;*/\n}\n.table-details-row--heading {\n flex: 1;\n text-align: right;\n}\n.table-details-row-role--default.table-details-row--heading {\n font-weight: 600;\n}\n.table-details-row--content {\n flex: 2;\n}\n.table-details-row--actions {\n flex: 0.3;\n /*border-left: 1px solid #ccc;*/\n}\n.table-details-row h3 {\n padding: 0.5em;\n border-bottom: 1px solid #aaa;\n width: 50%;\n margin: 1em auto;\n text-align: center;\n color: #aaa;\n font-weight: 400;\n}"],"sourceRoot":""}]); +// Exports +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); + + +/***/ }), + +/***/ "../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/DetailsTableRowValue.vue?vue&type=style&index=0&id=73ed5497&lang=scss&scoped=true": +/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/DetailsTableRowValue.vue?vue&type=style&index=0&id=73ed5497&lang=scss&scoped=true ***! + \*************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/sourceMaps.js */ "../../node_modules/css-loader/dist/runtime/sourceMaps.js"); +/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "../../node_modules/css-loader/dist/runtime/api.js"); +/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); +// Imports + + +var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); +// Module +___CSS_LOADER_EXPORT___.push([module.id, `.fade-enter-active[data-v-73ed5497], .fade-leave-active[data-v-73ed5497] { + transition: opacity 0.5s; +} +.fade-enter[data-v-73ed5497], .fade-leave-to[data-v-73ed5497] { + opacity: 0; +} +.jfb-recursive-details[data-v-73ed5497]:not(.jfb-recursive-details--indent) { + margin-top: unset; +} +.jfb-recursive-details--indent[data-v-73ed5497] { + margin-left: 1.5em; + margin-top: 0.5em; +} +.jfb-recursive-details-row[data-v-73ed5497]:not(:last-child) { + margin-bottom: 0.5em; + padding-bottom: 0.5em; +} +.jfb-recursive-details-item--content[data-v-73ed5497] { + border-bottom: 1px solid #ccc; +} +.jfb-recursive-details-item-without-children > .jfb-recursive-details-item--heading[data-v-73ed5497]::after { + content: ":"; +} +.jfb-recursive-details-item-with-children > .jfb-recursive-details-item--heading[data-v-73ed5497] { + cursor: pointer; +} +.jfb-recursive-details-item-with-children > .jfb-recursive-details-item--heading[data-v-73ed5497]:hover { + color: #2271b1; + border-bottom-color: #2271b1; +}`, "",{"version":3,"sources":["webpack://./admin-package/components/DetailsTableRowValue.vue","webpack://./../DetailsTableRowValue.vue"],"names":[],"mappings":"AAqHA;EACC,wBAAA;ACpHD;ADuHA;EAEC,UAAA;ACrHD;ADyHC;EACC,iBAAA;ACtHF;ADyHC;EACC,kBAAA;EACA,iBAAA;ACvHF;AD2HE;EACC,oBAAA;EACA,qBAAA;ACzHH;AD+HE;EACC,6BAAA;AC7HH;ADgIE;EACC,YAAA;AC9HH;ADiIE;EACC,eAAA;AC/HH;ADiIG;EACC,cAAA;EACA,4BAAA;AC/HJ","sourcesContent":["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.fade-enter-active, .fade-leave-active {\n\ttransition: opacity .5s;\n}\n\n.fade-enter, .fade-leave-to /* .fade-leave-active до версии 2.1.8 */\n{\n\topacity: 0;\n}\n\n.jfb-recursive-details {\n\t&:not( &--indent ) {\n\t\tmargin-top: unset;\n\t}\n\n\t&--indent {\n\t\tmargin-left: 1.5em;\n\t\tmargin-top: 0.5em;\n\t}\n\n\t&-row {\n\t\t&:not( :last-child ) {\n\t\t\tmargin-bottom: 0.5em;\n\t\t\tpadding-bottom: 0.5em;\n\t\t}\n\t}\n\n\n\t&-item {\n\t\t&--content {\n\t\t\tborder-bottom: 1px solid #ccc;\n\t\t}\n\n\t\t&-without-children > &--heading::after {\n\t\t\tcontent: ':';\n\t\t}\n\n\t\t&-with-children > &--heading {\n\t\t\tcursor: pointer;\n\n\t\t\t&:hover {\n\t\t\t\tcolor: #2271b1;\n\t\t\t\tborder-bottom-color: #2271b1;\n\t\t\t}\n\t\t}\n\t}\n}\n",".fade-enter-active, .fade-leave-active {\n transition: opacity 0.5s;\n}\n\n.fade-enter, .fade-leave-to {\n opacity: 0;\n}\n\n.jfb-recursive-details:not(.jfb-recursive-details--indent) {\n margin-top: unset;\n}\n.jfb-recursive-details--indent {\n margin-left: 1.5em;\n margin-top: 0.5em;\n}\n.jfb-recursive-details-row:not(:last-child) {\n margin-bottom: 0.5em;\n padding-bottom: 0.5em;\n}\n.jfb-recursive-details-item--content {\n border-bottom: 1px solid #ccc;\n}\n.jfb-recursive-details-item-without-children > .jfb-recursive-details-item--heading::after {\n content: \":\";\n}\n.jfb-recursive-details-item-with-children > .jfb-recursive-details-item--heading {\n cursor: pointer;\n}\n.jfb-recursive-details-item-with-children > .jfb-recursive-details-item--heading:hover {\n color: #2271b1;\n border-bottom-color: #2271b1;\n}"],"sourceRoot":""}]); +// Exports +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); + + +/***/ }), + +/***/ "../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/ExternalLink.vue?vue&type=style&index=0&id=81b8e10e&lang=scss": +/*!*****************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/ExternalLink.vue?vue&type=style&index=0&id=81b8e10e&lang=scss ***! + \*****************************************************************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/sourceMaps.js */ "../../node_modules/css-loader/dist/runtime/sourceMaps.js"); +/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "../../node_modules/css-loader/dist/runtime/api.js"); +/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); +// Imports + + +var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); +// Module +___CSS_LOADER_EXPORT___.push([module.id, `.cx-vui-external-link__icon { + width: 1em; + height: 1em; + fill: currentcolor; + vertical-align: middle; +}`, "",{"version":3,"sources":["webpack://./admin-package/components/ExternalLink.vue","webpack://./../ExternalLink.vue"],"names":[],"mappings":"AAmCC;EACC,UAAA;EACA,WAAA;EACA,kBAAA;EACA,sBAAA;AClCF","sourcesContent":["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.cx-vui-external-link {\n\t&__icon {\n\t\twidth: 1em;\n\t\theight: 1em;\n\t\tfill: currentcolor;\n\t\tvertical-align: middle;\n\t}\n}\n",".cx-vui-external-link__icon {\n width: 1em;\n height: 1em;\n fill: currentcolor;\n vertical-align: middle;\n}"],"sourceRoot":""}]); +// Exports +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); + + +/***/ }), + +/***/ "../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/RowWrapper.vue?vue&type=style&index=0&id=83705926&lang=scss&scoped=true": +/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/RowWrapper.vue?vue&type=style&index=0&id=83705926&lang=scss&scoped=true ***! + \***************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/sourceMaps.js */ "../../node_modules/css-loader/dist/runtime/sourceMaps.js"); +/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "../../node_modules/css-loader/dist/runtime/api.js"); +/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); +// Imports + + +var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); +// Module +___CSS_LOADER_EXPORT___.push([module.id, `.size--1-x-2 .cx-vui-component__meta[data-v-83705926] { + flex: 1; +} +.size--1-x-2 .cx-vui-component__control[data-v-83705926] { + flex: 2; +} +.padding-side-unset.cx-vui-component[data-v-83705926] { + padding-left: unset; + padding-right: unset; +} +.cx-vui-component__control-actions[data-v-83705926] { + display: flex; + justify-content: flex-end; + gap: 1em; + margin-top: 0.5em; +}`, "",{"version":3,"sources":["webpack://./admin-package/components/RowWrapper.vue","webpack://./../RowWrapper.vue"],"names":[],"mappings":"AAsHC;EACC,OAAA;ACrHF;ADwHC;EACC,OAAA;ACtHF;AD0HA;EACC,mBAAA;EACA,oBAAA;ACvHD;AD0HA;EACC,aAAA;EACA,yBAAA;EACA,QAAA;EACA,iBAAA;ACvHD","sourcesContent":["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.size--1-x-2 {\n\t.cx-vui-component__meta {\n\t\tflex: 1;\n\t}\n\n\t.cx-vui-component__control {\n\t\tflex: 2;\n\t}\n}\n\n.padding-side-unset.cx-vui-component {\n\tpadding-left: unset;\n\tpadding-right: unset;\n}\n\n.cx-vui-component__control-actions {\n\tdisplay: flex;\n\tjustify-content: flex-end;\n\tgap: 1em;\n\tmargin-top: 0.5em;\n}\n",".size--1-x-2 .cx-vui-component__meta {\n flex: 1;\n}\n.size--1-x-2 .cx-vui-component__control {\n flex: 2;\n}\n\n.padding-side-unset.cx-vui-component {\n padding-left: unset;\n padding-right: unset;\n}\n\n.cx-vui-component__control-actions {\n display: flex;\n justify-content: flex-end;\n gap: 1em;\n margin-top: 0.5em;\n}"],"sourceRoot":""}]); +// Exports +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); + + +/***/ }), + +/***/ "../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/Tooltip.vue?vue&type=style&index=0&id=7ae9ae9f&scoped=true&lang=scss": +/*!************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/Tooltip.vue?vue&type=style&index=0&id=7ae9ae9f&scoped=true&lang=scss ***! + \************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/sourceMaps.js */ "../../node_modules/css-loader/dist/runtime/sourceMaps.js"); +/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "../../node_modules/css-loader/dist/runtime/api.js"); +/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); +// Imports + + +var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); +// Module +___CSS_LOADER_EXPORT___.push([module.id, `.jfb-tooltip[data-v-7ae9ae9f] { + position: relative; + display: inline-block; +} +.jfb-tooltip-has-help[data-v-7ae9ae9f] { + cursor: pointer; +} +.jfb-tooltip-has-text[data-v-7ae9ae9f] { + display: flex; + column-gap: 0.5em; + align-items: center; +} +.jfb-tooltip--text[data-v-7ae9ae9f] { + text-overflow: ellipsis; + overflow: hidden; + padding: 0.1em 0; +} +.jfb-tooltip .dashicons-dismiss[data-v-7ae9ae9f] { + color: #d63638; +} +.jfb-tooltip .dashicons-warning[data-v-7ae9ae9f] { + color: #ffa500; +} +.jfb-tooltip .dashicons-warning.danger[data-v-7ae9ae9f] { + color: #d63638; +} +.jfb-tooltip .dashicons-yes-alt[data-v-7ae9ae9f] { + color: #32cd32; +} +.jfb-tooltip .dashicons-info[data-v-7ae9ae9f] { + color: #90c6db; +} +.jfb-tooltip .dashicons-hourglass[data-v-7ae9ae9f] { + color: #b5b5b5; +} +.jfb-tooltip .dashicons-update.loading[data-v-7ae9ae9f] { + animation: jfb-tooltip-loading-icon-data-v-7ae9ae9f 1.5s infinite linear; +} +.jfb-tooltip .cx-vui-tooltip[data-v-7ae9ae9f] { + width: fit-content; + bottom: calc(100% + 15px); + box-sizing: border-box; + pointer-events: none; + transition: all 0.18s linear; + opacity: 0; + padding-left: 1em; + padding-right: 1em; + position: absolute; + z-index: 2; +} +.jfb-tooltip .cx-vui-tooltip.tooltip-position-top-right[data-v-7ae9ae9f] { + right: -1.2em; +} +.jfb-tooltip .cx-vui-tooltip.tooltip-position-top-right[data-v-7ae9ae9f]:after { + right: 20px; + left: unset; +} +.jfb-tooltip .cx-vui-tooltip.tooltip-position-top-left[data-v-7ae9ae9f] { + left: -0.9em; +} +.jfb-tooltip .cx-vui-tooltip.tooltip-position-top-left[data-v-7ae9ae9f]:after { + left: 20px; + right: unset; +} +.jfb-tooltip:hover .cx-vui-tooltip[data-v-7ae9ae9f] { + opacity: 1; +} +.jfb-tooltip:hover .cx-vui-tooltip.tooltip-position-top-right[data-v-7ae9ae9f] { + bottom: 100%; +} +.jfb-tooltip:hover .cx-vui-tooltip.tooltip-position-top-left[data-v-7ae9ae9f] { + bottom: 100%; +} +.jfb-tooltip-position--top-right[data-v-7ae9ae9f] { + flex-direction: row-reverse; +} +@keyframes jfb-tooltip-loading-icon-data-v-7ae9ae9f { +0% { + transform: rotate(0deg); +} +to { + transform: rotate(359deg); +} +}`, "",{"version":3,"sources":["webpack://./admin-package/components/Tooltip.vue","webpack://./../Tooltip.vue"],"names":[],"mappings":"AAyEA;EACC,kBAAA;EACA,qBAAA;ACxED;AD0EC;EACC,eAAA;ACxEF;AD2EC;EACC,aAAA;EACA,iBAAA;EACA,mBAAA;ACzEF;AD4EC;EACC,uBAAA;EACA,gBAAA;EACA,gBAAA;AC1EF;AD8EE;EACC,cAAA;AC5EH;AD+EE;EACC,cAAA;AC7EH;ADgFE;EACC,cAAA;AC9EH;ADiFE;EACC,cAAA;AC/EH;ADkFE;EACC,cAAA;AChFH;ADmFE;EACC,cAAA;ACjFH;ADoFE;EACC,wEAAA;AClFH;ADsFC;EACC,kBAAA;EACA,yBAAA;EACA,sBAAA;EACA,oBAAA;EACA,4BAAA;EACA,UAAA;EACA,iBAAA;EACA,kBAAA;EACA,kBAAA;EACA,UAAA;ACpFF;ADsFE;EACC,aAAA;ACpFH;ADsFG;EACC,WAAA;EACA,WAAA;ACpFJ;ADwFE;EACC,YAAA;ACtFH;ADwFG;EACC,UAAA;EACA,YAAA;ACtFJ;AD4FE;EACC,UAAA;AC1FH;AD4FG;EACC,YAAA;AC1FJ;AD6FG;EACC,YAAA;AC3FJ;ADiGE;EACC,2BAAA;AC/FH;ADoGA;AACC;IACC,uBAAA;ACjGA;ADoGD;IACC,yBAAA;AClGA;AACF","sourcesContent":["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.jfb-tooltip {\n\tposition: relative;\n\tdisplay: inline-block;\n\n\t&-has-help {\n\t\tcursor: pointer;\n\t}\n\n\t&-has-text {\n\t\tdisplay: flex;\n\t\tcolumn-gap: 0.5em;\n\t\talign-items: center;\n\t}\n\n\t&--text {\n\t\ttext-overflow: ellipsis;\n\t\toverflow: hidden;\n\t\tpadding: 0.1em 0;\n\t}\n\n\t.dashicons {\n\t\t&-dismiss {\n\t\t\tcolor: #d63638;\n\t\t}\n\n\t\t&-warning {\n\t\t\tcolor: #ffa500;\n\t\t}\n\n\t\t&-warning.danger {\n\t\t\tcolor: #d63638;\n\t\t}\n\n\t\t&-yes-alt {\n\t\t\tcolor: #32cd32;\n\t\t}\n\n\t\t&-info {\n\t\t\tcolor: #90c6db;\n\t\t}\n\n\t\t&-hourglass {\n\t\t\tcolor: #b5b5b5;\n\t\t}\n\n\t\t&-update.loading {\n\t\t\tanimation: jfb-tooltip-loading-icon 1.5s infinite linear;\n\t\t}\n\t}\n\n\t.cx-vui-tooltip {\n\t\twidth: fit-content;\n\t\tbottom: calc(100% + 15px);\n\t\tbox-sizing: border-box;\n\t\tpointer-events: none;\n\t\ttransition: all 0.180s linear;\n\t\topacity: 0;\n\t\tpadding-left: 1em;\n\t\tpadding-right: 1em;\n\t\tposition: absolute;\n\t\tz-index: 2;\n\n\t\t&.tooltip-position-top-right {\n\t\t\tright: -1.2em;\n\n\t\t\t&:after {\n\t\t\t\tright: 20px;\n\t\t\t\tleft: unset;\n\t\t\t}\n\t\t}\n\n\t\t&.tooltip-position-top-left {\n\t\t\tleft: -0.9em;\n\n\t\t\t&:after {\n\t\t\t\tleft: 20px;\n\t\t\t\tright: unset;\n\t\t\t}\n\t\t}\n\t}\n\n\t&:hover {\n\t\t.cx-vui-tooltip {\n\t\t\topacity: 1;\n\n\t\t\t&.tooltip-position-top-right {\n\t\t\t\tbottom: 100%;\n\t\t\t}\n\n\t\t\t&.tooltip-position-top-left {\n\t\t\t\tbottom: 100%;\n\t\t\t}\n\t\t}\n\t}\n\n\t&-position {\n\t\t&--top-right {\n\t\t\tflex-direction: row-reverse;\n\t\t}\n\t}\n}\n\n@keyframes jfb-tooltip-loading-icon {\n\t0% {\n\t\ttransform: rotate(0deg)\n\t}\n\n\tto {\n\t\ttransform: rotate(359deg)\n\t}\n}\n",".jfb-tooltip {\n position: relative;\n display: inline-block;\n}\n.jfb-tooltip-has-help {\n cursor: pointer;\n}\n.jfb-tooltip-has-text {\n display: flex;\n column-gap: 0.5em;\n align-items: center;\n}\n.jfb-tooltip--text {\n text-overflow: ellipsis;\n overflow: hidden;\n padding: 0.1em 0;\n}\n.jfb-tooltip .dashicons-dismiss {\n color: #d63638;\n}\n.jfb-tooltip .dashicons-warning {\n color: #ffa500;\n}\n.jfb-tooltip .dashicons-warning.danger {\n color: #d63638;\n}\n.jfb-tooltip .dashicons-yes-alt {\n color: #32cd32;\n}\n.jfb-tooltip .dashicons-info {\n color: #90c6db;\n}\n.jfb-tooltip .dashicons-hourglass {\n color: #b5b5b5;\n}\n.jfb-tooltip .dashicons-update.loading {\n animation: jfb-tooltip-loading-icon 1.5s infinite linear;\n}\n.jfb-tooltip .cx-vui-tooltip {\n width: fit-content;\n bottom: calc(100% + 15px);\n box-sizing: border-box;\n pointer-events: none;\n transition: all 0.18s linear;\n opacity: 0;\n padding-left: 1em;\n padding-right: 1em;\n position: absolute;\n z-index: 2;\n}\n.jfb-tooltip .cx-vui-tooltip.tooltip-position-top-right {\n right: -1.2em;\n}\n.jfb-tooltip .cx-vui-tooltip.tooltip-position-top-right:after {\n right: 20px;\n left: unset;\n}\n.jfb-tooltip .cx-vui-tooltip.tooltip-position-top-left {\n left: -0.9em;\n}\n.jfb-tooltip .cx-vui-tooltip.tooltip-position-top-left:after {\n left: 20px;\n right: unset;\n}\n.jfb-tooltip:hover .cx-vui-tooltip {\n opacity: 1;\n}\n.jfb-tooltip:hover .cx-vui-tooltip.tooltip-position-top-right {\n bottom: 100%;\n}\n.jfb-tooltip:hover .cx-vui-tooltip.tooltip-position-top-left {\n bottom: 100%;\n}\n.jfb-tooltip-position--top-right {\n flex-direction: row-reverse;\n}\n\n@keyframes jfb-tooltip-loading-icon {\n 0% {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(359deg);\n }\n}"],"sourceRoot":""}]); +// Exports +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); + + +/***/ }), + +/***/ "../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/PrintButton.vue?vue&type=style&index=0&id=5837624a&scoped=true&lang=css": +/*!********************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/PrintButton.vue?vue&type=style&index=0&id=5837624a&scoped=true&lang=css ***! + \********************************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/sourceMaps.js */ "../../node_modules/css-loader/dist/runtime/sourceMaps.js"); +/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "../../node_modules/css-loader/dist/runtime/api.js"); +/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); +// Imports + + +var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); +// Module +___CSS_LOADER_EXPORT___.push([module.id, ` +@media print { +.cx-vui-button[data-v-5837624a] { + display: none; +} +} +`, "",{"version":3,"sources":["webpack://./../admin-package/components/PrintButton.vue"],"names":[],"mappings":";AAgCA;AACA;EACA,aAAA;AACA;AACA","sourcesContent":["\n\n\n\n"],"sourceRoot":""}]); +// Exports +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); + + +/***/ }), + +/***/ "../../node_modules/css-loader/dist/runtime/api.js": +/*!*********************************************************!*\ + !*** ../../node_modules/css-loader/dist/runtime/api.js ***! + \*********************************************************/ +/***/ ((module) => { + +"use strict"; + + +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ +module.exports = function (cssWithMappingToString) { + var list = []; + + // return the list of modules as css string + list.toString = function toString() { + return this.map(function (item) { + var content = ""; + var needLayer = typeof item[5] !== "undefined"; + if (item[4]) { + content += "@supports (".concat(item[4], ") {"); + } + if (item[2]) { + content += "@media ".concat(item[2], " {"); + } + if (needLayer) { + content += "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {"); + } + content += cssWithMappingToString(item); + if (needLayer) { + content += "}"; + } + if (item[2]) { + content += "}"; + } + if (item[4]) { + content += "}"; + } + return content; + }).join(""); + }; + + // import a list of modules into the list + list.i = function i(modules, media, dedupe, supports, layer) { + if (typeof modules === "string") { + modules = [[null, modules, undefined]]; + } + var alreadyImportedModules = {}; + if (dedupe) { + for (var k = 0; k < this.length; k++) { + var id = this[k][0]; + if (id != null) { + alreadyImportedModules[id] = true; + } + } + } + for (var _k = 0; _k < modules.length; _k++) { + var item = [].concat(modules[_k]); + if (dedupe && alreadyImportedModules[item[0]]) { + continue; + } + if (typeof layer !== "undefined") { + if (typeof item[5] === "undefined") { + item[5] = layer; + } else { + item[1] = "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {").concat(item[1], "}"); + item[5] = layer; + } + } + if (media) { + if (!item[2]) { + item[2] = media; + } else { + item[1] = "@media ".concat(item[2], " {").concat(item[1], "}"); + item[2] = media; + } + } + if (supports) { + if (!item[4]) { + item[4] = "".concat(supports); + } else { + item[1] = "@supports (".concat(item[4], ") {").concat(item[1], "}"); + item[4] = supports; + } + } + list.push(item); + } + }; + return list; +}; + +/***/ }), + +/***/ "../../node_modules/css-loader/dist/runtime/sourceMaps.js": +/*!****************************************************************!*\ + !*** ../../node_modules/css-loader/dist/runtime/sourceMaps.js ***! + \****************************************************************/ +/***/ ((module) => { + +"use strict"; + + +module.exports = function (item) { + var content = item[1]; + var cssMapping = item[3]; + if (!cssMapping) { + return content; + } + if (typeof btoa === "function") { + var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping)))); + var data = "sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(base64); + var sourceMapping = "/*# ".concat(data, " */"); + return [content].concat([sourceMapping]).join("\n"); + } + return [content].join("\n"); +}; + +/***/ }), + +/***/ "../../node_modules/v-click-outside-x/dist/v-click-outside-x.esm.js": +/*!**************************************************************************!*\ + !*** ../../node_modules/v-click-outside-x/dist/v-click-outside-x.esm.js ***! + \**************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ directive: () => (/* binding */ directive), +/* harmony export */ install: () => (/* binding */ install) +/* harmony export */ }); +/* harmony import */ var _package_json__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../package.json */ "../../node_modules/v-click-outside-x/package.json"); +function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } + +function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; } + +function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; } + +function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } + + +var version = _package_json__WEBPACK_IMPORTED_MODULE_0__.version; +/** + * @typedef {import("../types/index.d.ts")} VClickOutsidePlugin + */ + +var CLICK = 'click'; +var captureInstances = Object.create(null); +var nonCaptureInstances = Object.create(null); +var captureEventHandlers = Object.create(null); +var nonCaptureEventHandlers = Object.create(null); +var instancesList = [captureInstances, nonCaptureInstances]; +/** + * The common event handler for bot capture and non-capture events. + * + * @param {!object} context - The event context. + * @param {!object} instances - The capture or non-capture registered instances. + * @param {Event} event - The event object. + * @param {string} arg - The event type. + * @returns {undefined} Default. + */ + +var commonHandler = function onCommonEvent(context, instances, event, arg) { + var target = event.target; + + var itemIteratee = function itemIteratee(item) { + var el = item.el; + + if (el !== target && !el.contains(target)) { + var binding = item.binding; + + if (binding.modifiers.stop) { + event.stopPropagation(); + } + + if (binding.modifiers.prevent) { + event.preventDefault(); + } + + binding.value.call(context, event); + } + }; + + instances[arg].forEach(itemIteratee); +}; +/** + * Get the correct event handler: Capture or non-capture. + * + * @param {boolean} useCapture - Indicate which handler to use; 'true' to use + * capture handler or 'false' for non-capture. + * @param {string} arg - The event type. + * @returns {Function} - The event handler. + */ + + +var getEventHandler = function getEventHandler(useCapture, arg) { + if (useCapture) { + if (captureEventHandlers[arg]) { + return captureEventHandlers[arg]; + } + /** + * Event handler for capture events. + * + * @param {Event} event - The event object. + */ + + + captureEventHandlers[arg] = function onCaptureEvent(event) { + commonHandler(this, captureInstances, event, arg); + }; + + return captureEventHandlers[arg]; + } + + if (nonCaptureEventHandlers[arg]) { + return nonCaptureEventHandlers[arg]; + } + /** + * Event handler for non-capture events. + * + * @param {Event} event - The event object. + */ + + + nonCaptureEventHandlers[arg] = function onNonCaptureEvent(event) { + commonHandler(this, nonCaptureInstances, event, arg); + }; + + return nonCaptureEventHandlers[arg]; +}; +/** + * The directive definition. + * {@link https://vuejs.org/v2/guide/custom-directive.html|Custom directive}. + * + * @type {VClickOutsidePlugin.directive} + * @property {!object} $captureInstances - Registered capture instances. + * @property {!object} $nonCaptureInstances - Registered non-capture instances. + * @property {Function} $_onCaptureEvent - Event handler for capture events. + * @property {Function} $_onNonCaptureEvent - Event handler for non-capture events. + * @property {Function} bind - Called only once, when the directive is first + * bound to the element. + * @property {Function} unbind - Called only once, when the directive is unbound + * from the element. + * @property {string} version - The version number of this release. + */ + + +var directive = Object.defineProperties({}, { + $captureInstances: { + value: captureInstances + }, + $nonCaptureInstances: { + value: nonCaptureInstances + }, + $captureEventHandlers: { + value: captureEventHandlers + }, + $nonCaptureEventHandlers: { + value: nonCaptureEventHandlers + }, + bind: { + value: function bind(el, binding) { + if (typeof binding.value !== 'function') { + throw new TypeError('Binding value must be a function.'); + } + + var arg = binding.arg || CLICK; + + var normalisedBinding = _objectSpread(_objectSpread({}, binding), { + arg: arg, + modifiers: _objectSpread(_objectSpread({}, { + capture: false, + prevent: false, + stop: false + }), binding.modifiers) + }); + + var useCapture = normalisedBinding.modifiers.capture; + var instances = useCapture ? captureInstances : nonCaptureInstances; + + if (!Array.isArray(instances[arg])) { + instances[arg] = []; + } + + if (instances[arg].push({ + el: el, + binding: normalisedBinding + }) === 1) { + /* istanbul ignore next */ + if ((typeof document === "undefined" ? "undefined" : _typeof(document)) === 'object' && document) { + document.addEventListener(arg, getEventHandler(useCapture, arg), useCapture); + } + } + } + }, + unbind: { + value: function unbind(el) { + var compareElements = function compareElements(item) { + return item.el !== el; + }; + + var instancesIteratee = function instancesIteratee(instances) { + var instanceKeys = Object.keys(instances); + + if (instanceKeys.length) { + var useCapture = instances === captureInstances; + + var keysIteratee = function keysIteratee(eventName) { + var newInstance = instances[eventName].filter(compareElements); + + if (newInstance.length) { + instances[eventName] = newInstance; + } else { + /* istanbul ignore next */ + if ((typeof document === "undefined" ? "undefined" : _typeof(document)) === 'object' && document) { + document.removeEventListener(eventName, getEventHandler(useCapture, eventName), useCapture); + } + + delete instances[eventName]; + } + }; + + instanceKeys.forEach(keysIteratee); + } + }; + + instancesList.forEach(instancesIteratee); + } + }, + + /* Note: This needs to be manually updated to match package.json. */ + version: { + enumerable: true, + value: version + } +}); +/** + * A Vue.js plugin should expose an install method. The method will be called + * with the Vue constructor as the first argument, along with possible options. + * {@link https://vuejs.org/v2/guide/plugins.html#Writing-a-Plugin|Writing a plugin}. + * + * @type {VClickOutsidePlugin.install} + * @param {import("vue")} Vue - The Vue constructor. + */ + +function install(Vue) { + Vue.directive('click-outside', directive); +} + +//# sourceMappingURL=v-click-outside-x.esm.js.map + +/***/ }), + +/***/ "../../node_modules/v-click-outside-x/package.json": +/*!*********************************************************!*\ + !*** ../../node_modules/v-click-outside-x/package.json ***! + \*********************************************************/ +/***/ ((module) => { + +"use strict"; +module.exports = /*#__PURE__*/JSON.parse('{"name":"v-click-outside-x","version":"4.1.3","description":"Vue directive to react on clicks outside an element.","homepage":"https://github.com/SergioCrisostomo/v-click-outside-x.git","author":{"name":"Graham Fairweather"},"maintainers":[{"name":"Sérgio Crisóstomo","email":"sergiosbox@gmail.com"}],"copyright":"Copyright (c) 2018-present","keywords":["vue","click","outside","directive"],"files":["dist","src"],"module":"dist/v-click-outside-x.esm.js","main":"dist/v-click-outside-x.js","typings":"types/index.d.ts","jsdelivr":"dist/v-click-outside-x.min.js","scripts":{"build:esm":"mkdirp dist && babel -s true --env-name esm src/v-click-outside-x.js -o dist/v-click-outside-x.esm.js","build:base":"webpack --bail --progress --profile --colors","build":"npm run build:esm && cross-env NODE_ENV=production npm run build:base --","build:dev":"npm run build:base --","clean":"rimraf dist && npm run clean:coverage","clean:coverage":"rimraf __tests__/coverage","lint":"eslint -f \'node_modules/eslint-friendly-formatter\' --ext .js,.json .","lint-fix":"npm run lint -- --fix","report":"npm run build -- --env.report","report:dev":"npm run build:dev -- --env.report","security":"npm audit","security-fix":"npm run security -- fix","start":"nodemon --exec \\"npm run build\\" --watch src","test":"npm run clean:coverage && jest","test:ci":"npm run test -- --ci --maxWorkers=2","test:ci-coveralls":"npm run test:ci -- --coverage --coverageReporters=text-lcov | coveralls","test:coverage":"npm run test -- --coverage"},"license":"MIT","repository":{"type":"git","url":"https://github.com/SergioCrisostomo/v-click-outside-x.git"},"bugs":{"url":"https://github.com/SergioCrisostomo/v-click-outside-x/issues"},"dependencies":{},"devDependencies":{"@babel/cli":"^7.13.16","@babel/core":"^7.13.16","@babel/node":"^7.13.13","@babel/plugin-transform-property-mutators":"^7.12.13","@babel/plugin-transform-runtime":"^7.13.15","@babel/preset-env":"^7.13.15","@babel/runtime":"^7.13.17","@types/jest":"^24.9.1","@types/node":"^13.13.50","@types/webpack":"^4.41.27","@typescript-eslint/eslint-plugin":"^2.34.0","@typescript-eslint/parser":"^2.34.0","babel-core":"^7.0.0-0","babel-eslint":"^10.1.0","babel-loader":"^8.2.2","babel-plugin-lodash":"^3.3.4","caniuse-lite":"^1.0.30001214","coveralls":"^3.1.0","cross-env":"^6.0.3","eslint":"^6.8.0","eslint-friendly-formatter":"^4.0.1","eslint-import-resolver-webpack":"^0.12.2","eslint-loader":"^3.0.4","eslint-plugin-babel":"^5.3.1","eslint-plugin-compat":"^3.9.0","eslint-plugin-css-modules":"^2.11.0","eslint-plugin-eslint-comments":"^3.2.0","eslint-plugin-html":"^6.1.2","eslint-plugin-import":"^2.22.1","eslint-plugin-jest":"^22.17.0","eslint-plugin-jsdoc":"^20.4.0","eslint-plugin-json":"^1.4.0","eslint-plugin-lodash":"^6.0.0","eslint-plugin-no-use-extend-native":"^0.4.1","eslint-plugin-prefer-object-spread":"^1.2.1","eslint-plugin-prettier":"^3.4.0","eslint-plugin-promise":"^4.3.1","eslint-plugin-sort-class-members":"^1.11.0","eslint-plugin-switch-case":"^1.1.2","jest":"^24.9.0","jest-cli":"^24.9.0","jest-file":"^1.0.0","lodash":"^4.17.21","lodash-webpack-plugin":"^0.11.6","mkdirp":"^0.5.5","nodemon":"^2.0.7","prettier":"^1.19.1","rimraf":"^3.0.2","source-map-loader":"^0.2.4","strip-ansi":"^6.0.0","terser-webpack-plugin":"^2.3.8","typescript":"^3.9.9","webpack":"^4.46.0","webpack-bundle-analyzer":"^3.9.0","webpack-cli":"^3.3.12","webpack-global-object-x":"^1.0.1","webpack-merge":"^4.2.2"},"engines":{"node":">=8.11.4","npm":">=6.10.1"},"browserslist":["> 1%","Explorer >= 9"]}'); + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/ColumnWrapper.vue?vue&type=template&id=edf02a0e&scoped=true": +/*!*********************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/ColumnWrapper.vue?vue&type=template&id=edf02a0e&scoped=true ***! + \*********************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:_vm.className},[(_vm.$slots.label)?_c('label',{staticClass:"cx-vui-component__label",attrs:{"for":_vm.elementIdData}},[_vm._t("label")],2):_vm._e(),_vm._v(" "),_vm._t("default"),_vm._v(" "),(_vm.$slots.description)?_c('div',{staticClass:"cx-vui-component__desc"},[_vm._t("description")],2):_vm._e()],2)} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/CxVuiCollapseMini.vue?vue&type=template&id=eca1c496": +/*!*************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/CxVuiCollapseMini.vue?vue&type=template&id=eca1c496 ***! + \*************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:{ + 'cx-vui-panel': _vm.withPanel, + 'cx-vui-collapse-mini--disabled': _vm.disabled, + 'cx-vui-collapse-mini__item': true, + 'cx-vui-collapse-mini__item--active': _vm.isActive +}},[_c('div',{staticClass:"cx-vui-collapse-mini__header",on:{"click":_vm.collapse}},[_c('div',{staticClass:"cx-vui-collapse-mini__header-label"},[_c('svg',{attrs:{"width":"14","height":"14","viewBox":"0 0 14 14","fill":"none","xmlns":"http://www.w3.org/2000/svg"}},[_c('path',{attrs:{"d":"M14 13.9999L14 -0.00012207L0 -0.000121458L6.11959e-07 13.9999L14 13.9999Z","fill":"white"}}),_vm._v(" "),_c('path',{attrs:{"d":"M5.32911 1L11 7L5.32911 13L4 11.5938L8.34177 7L4 2.40625L5.32911 1Z","fill":"#007CBA"}})]),_vm._v("\n\t\t\t"+_vm._s(_vm.label)+"\n\t\t")]),_vm._v(" "),(_vm.icon)?_c('div',{staticClass:"cx-vui-collapse-mini__header-desc"},[('object' === typeof _vm.icon)?_c(_vm.icon,{tag:"component"}):_vm._e()],1):(_vm.desc)?_c('div',{staticClass:"cx-vui-collapse-mini__header-desc"},[_vm._v("\n\t\t\t"+_vm._s(_vm.desc)+"\n\t\t")]):_vm._e(),_vm._v(" "),(_vm.$slots.description)?_c('div',{staticClass:"cx-vui-collapse-mini__header-custom-description"},[_vm._t("description")],2):_vm._e()]),_vm._v(" "),(!_vm.disabled)?[(this.$slots.default)?[_c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.isActive),expression:"isActive"}],staticClass:"cx-vui-collapse-mini__content"},[_vm._t("default")],2)]:[_vm._t("custom",null,{"state":{ isActive: _vm.isActive }})]]:_vm._e()],2)} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/CxVuiDate.vue?vue&type=template&id=47253882&scoped=true": +/*!*****************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/CxVuiDate.vue?vue&type=template&id=47253882&scoped=true ***! + \*****************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('input',{staticClass:"cx-vui-input size-fullwidth",attrs:{"type":"date","name":_vm.elementId,"id":_vm.elementId,"max":_vm.max,"min":_vm.min},domProps:{"value":_vm.value},on:{"input":_vm.handleInput}})} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/CxVuiFSelect.vue?vue&type=template&id=e0ca50fe&scoped=true": +/*!********************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/CxVuiFSelect.vue?vue&type=template&id=e0ca50fe&scoped=true ***! + \********************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () { +var _obj; +var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"cx-vui-f-select"},[_c('div',{class:{ + 'cx-vui-f-select__selected': true, + 'cx-vui-f-select__selected-not-empty': this.value.length > 0 + }},_vm._l((_vm.value),function(option){return _c('div',{staticClass:"cx-vui-f-select__selected-option",on:{"click":function($event){return _vm.handleResultClick( option )}}},[(_vm.$slots[ 'option-' + option ])?[_vm._t('option-' + option)]:[(!_vm.isNonRemovable( option ))?_c('span',{staticClass:"cx-vui-f-select__selected-option-icon"},[_c('svg',{attrs:{"width":"10","height":"10","viewBox":"0 0 10 10","fill":"none","xmlns":"http://www.w3.org/2000/svg"}},[_c('path',{attrs:{"d":"M10 1.00671L6.00671 5L10 8.99329L8.99329 10L5 6.00671L1.00671 10L0 8.99329L3.99329 5L0 1.00671L1.00671 0L5 3.99329L8.99329 0L10 1.00671Z"}})])]):_vm._e(),_vm._v("\n\t\t\t\t"+_vm._s(_vm.getOptionLabel( option ))+"\n\t\t\t")]],2)}),0),_vm._v(" "),_c('div',{directives:[{name:"click-outside",rawName:"v-click-outside.capture",value:(_vm.onClickOutside),expression:"onClickOutside",modifiers:{"capture":true}},{name:"click-outside",rawName:"v-click-outside:mousedown.capture",value:(_vm.onClickOutside),expression:"onClickOutside",arg:"mousedown",modifiers:{"capture":true}},{name:"click-outside",rawName:"v-click-outside:touchstart.capture",value:(_vm.onClickOutside),expression:"onClickOutside",arg:"touchstart",modifiers:{"capture":true}}],staticClass:"cx-vui-f-select__control",on:{"keydown":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"up",38,$event.key,["Up","ArrowUp"])){ return null; }$event.preventDefault();return _vm.handleOptionsNav.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"down",40,$event.key,["Down","ArrowDown"])){ return null; }$event.preventDefault();return _vm.handleOptionsNav.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"tab",9,$event.key,"Tab")){ return null; }return _vm.handleOptionsNav.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,"enter",13,$event.key,"Enter")){ return null; }return _vm.handleEnter.apply(null, arguments)}]}},[_c('input',{class:( _obj = { + 'cx-vui-f-select__input': true, + 'cx-vui-input--in-focus': _vm.inFocus, + 'cx-vui-input': true + }, _obj['cx-vui-input--' + _vm.stateType() ] = _vm.stateType(), _obj['size-fullwidth'] = true, _obj['has-error'] = _vm.error, _obj ),attrs:{"id":_vm.elementId,"placeholder":_vm.placeholder,"autocomplete":_vm.autocomplete,"type":"text"},domProps:{"value":_vm.query},on:{"input":_vm.handleInput,"focus":_vm.handleFocus}}),_vm._v(" "),(_vm.inFocus)?_c('div',{staticClass:"cx-vui-f-select__results"},[(! _vm.filteredOptions.length)?_c('div',{staticClass:"cx-vui-f-select__results-message",domProps:{"innerHTML":_vm._s(_vm.notFoundMeassge)}}):_c('div',_vm._l((_vm.filteredOptions),function(option,optionIndex){return _c('div',{class:{ + 'cx-vui-f-select__result': true, + 'in-focus': optionIndex === _vm.optionInFocus, + 'is-selected': _vm.isSelectedOption( option ) + },on:{"click":function($event){return _vm.handleResultClick( option.value )}}},[_vm._v(_vm._s(_vm.getOptionLabel( option ))+"\n\t\t\t\t")])}),0)]):_vm._e()]),_vm._v(" "),_c('select',{staticClass:"cx-vui-f-select__select-tag",attrs:{"placeholder":_vm.placeholder,"disabled":_vm.disabled,"readonly":_vm.readonly,"multiple":_vm.multiple},domProps:{"value":_vm.currentValues}},_vm._l((_vm.currentValues),function(option){return _c('option',{attrs:{"selected":""},domProps:{"value":option}})}),0)])} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/CxVuiPopup.vue?vue&type=template&id=c40a982a&scoped=true": +/*!******************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/CxVuiPopup.vue?vue&type=template&id=c40a982a&scoped=true ***! + \******************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:_vm.className},[_c('div',{staticClass:"cx-vui-popup__overlay",on:{"click":function($event){return _vm.$emit( 'close' )}}}),_vm._v(" "),_c('div',{staticClass:"cx-vui-popup__body"},[(_vm.$slots.title)?_c('h2',{staticClass:"cx-vui-popup__header"},[_vm._t("title"),_vm._v(" "),(_vm.$slots.close)?[_vm._t("close")]:_c('div',{staticClass:"cx-vui-popup__close",on:{"click":function($event){return _vm.$emit( 'close' )}}},[_c('svg',{attrs:{"width":"20","height":"20","viewBox":"0 0 14 14","fill":"none","xmlns":"http://www.w3.org/2000/svg"}},[_c('path',{attrs:{"d":"M12 3.00671L8.00671 7L12 10.9933L10.9933 12L7 8.00671L3.00671 12L2 10.9933L5.99329 7L2 3.00671L3.00671 2L7 5.99329L10.9933 2L12 3.00671Z"}})])])],2):_vm._e(),_vm._v(" "),_c('div',{staticClass:"cx-vui-popup__content"},[_vm._t("content")],2),_vm._v(" "),(_vm.$slots.footer)?_c('div',{staticClass:"cx-vui-popup__footer"},[_vm._t("footer")],2):_vm._e()])])} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/CxVuiSelect.vue?vue&type=template&id=332e17cd&scoped=true": +/*!*******************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/CxVuiSelect.vue?vue&type=template&id=332e17cd&scoped=true ***! + \*******************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('select',{class:_vm.className,attrs:{"name":_vm.elementId,"id":_vm.elementId},domProps:{"value":_vm.value},on:{"input":_vm.handleInput}},[_vm._t("default")],2)} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/CxVuiTabs.vue?vue&type=template&id=3c8e3f8f": +/*!*****************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/CxVuiTabs.vue?vue&type=template&id=3c8e3f8f ***! + \*****************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:{ + 'cx-vui-tabs': true, + 'cx-vui-tabs--invert': _vm.invert, + 'cx-vui-tabs--layout-vertical': 'vertical' === this.layout, + 'cx-vui-tabs--layout-horizontal': 'horizontal' === this.layout, + 'cx-vui-tabs--in-panel': _vm.inPanel, +}},[_c('div',{staticClass:"cx-vui-tabs__nav"},_vm._l((_vm.navList),function(item){return _c('div',{class:{ + 'cx-vui-tabs__nav-item': true, + 'cx-vui-tabs__nav-item--active': _vm.isActive( item.name ), + 'cx-vui-tabs__nav-item--disabled': _vm.isDisabled( item.name ), + 'cx-vui-tabs__nav-item--has-icon': !! item.icon, + },on:{"click":function($event){return _vm.onTabClick( item.name )}}},[_c('span',{staticClass:"item-label"},[_vm._v(_vm._s(item.label))]),_vm._v(" "),(item.icon)?_c('span',{staticClass:"item-icon"},[('object' === typeof item.icon)?_c(item.icon,{tag:"component",attrs:{"is-active":_vm.isActive( item.name )}}):_vm._e()],1):_vm._e()])}),0),_vm._v(" "),_c('div',{staticClass:"cx-vui-tabs__content"},[_vm._t("default")],2)])} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/CxVuiTabsPanel.vue?vue&type=template&id=be3da036": +/*!**********************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/CxVuiTabsPanel.vue?vue&type=template&id=be3da036 ***! + \**********************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{directives:[{name:"show",rawName:"v-show",value:(_vm.show),expression:"show"}],staticClass:"cx-vui-tabs-panel"},[_vm._t("default")],2)} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/Delimiter.vue?vue&type=template&id=8c6d5cba&scoped=true": +/*!*****************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/Delimiter.vue?vue&type=template&id=8c6d5cba&scoped=true ***! + \*****************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('hr',{staticClass:"jfb"})} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/DetailsTable.vue?vue&type=template&id=5f62dc40": +/*!********************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/DetailsTable.vue?vue&type=template&id=5f62dc40 ***! + \********************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:"table-details"},_vm._l((_vm.columns),function(column,columnName){return (_vm.canShow( columnName ))?_c('DetailsTableRow',{key:columnName,attrs:{"type":_vm.getType( columnName )},scopedSlots:_vm._u([{key:"name",fn:function(){return [_vm._v(_vm._s(column.label))]},proxy:true},{key:"value",fn:function(){return [('object' === typeof _vm.getColumnValue( columnName, false ))?[_c('DetailsTableRowValue',{attrs:{"value":_vm.getColumnValue( columnName, false ),"columns":(column.children || {})}})]:[_vm._v(_vm._s(_vm.getColumnValue( columnName, '' )))]]},proxy:true}],null,true)}):_vm._e()}),1)} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/DetailsTableRow.vue?vue&type=template&id=d41fc6ac": +/*!***********************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/DetailsTableRow.vue?vue&type=template&id=d41fc6ac ***! + \***********************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"table-details-row"},[('rowValue' === _vm.type)?[_c('div',{class:_vm.headingClasses},[(_vm.role !== 'default')?[_vm._v(_vm._s('Name'))]:[_vm._t("name"),_vm._v("\n\t\t\t\t:\n\t\t\t")]],2),_vm._v(" "),_c('div',{class:_vm.contentClasses},[(_vm.role !== 'default')?[_vm._v(_vm._s('Value'))]:[_vm._t("value")]],2),_vm._v(" "),_c('div',{class:_vm.actionClasses},[(_vm.role !== 'default')?[_vm._v(_vm._s('Actions'))]:[_vm._t("actions")]],2)]:[_c('h3',[_vm._t("name")],2)]],2)} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/DetailsTableRowValue.vue?vue&type=template&id=73ed5497&scoped=true": +/*!****************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/DetailsTableRowValue.vue?vue&type=template&id=73ed5497&scoped=true ***! + \****************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('ul',{directives:[{name:"show",rawName:"v-show",value:(! this.withIndent),expression:"! this.withIndent"}],class:_vm.rootClasses},_vm._l((_vm.value),function(itemValue,itemName){return (_vm.isHiddenLevel( itemName ))?_c('li',{key:itemName,staticClass:"jfb-recursive-details-row"},[(_vm.isSkipLevel( itemName ))?[_c('DetailsTableRowValue',{attrs:{"value":itemValue,"columns":_vm.getChildren( itemName )}})]:[(_vm.isObject( itemValue ))?_c('span',{class:_vm.itemClasses( true )},[_c('span',{staticClass:"jfb-recursive-details-item--heading",on:{"click":function($event){return _vm.toggleNext( itemName )}}},[_vm._v("\n\t\t\t\t\t"+_vm._s(_vm.getItemLabel( itemName ))+"\n\t\t\t\t\t"),_c('span',{class:_vm.arrowClasses( itemName )})]),_vm._v(" "),_c('span',{staticClass:"jfb-recursive-details-item--content"},[_c('transition',{attrs:{"name":"fade"}},[_c('DetailsTableRowValue',{directives:[{name:"show",rawName:"v-show",value:(_vm.isShow( itemName )),expression:"isShow( itemName )"}],attrs:{"value":itemValue,"with-indent":true,"columns":_vm.getChildren( itemName )}})],1)],1)]):_c('span',{class:_vm.itemClasses( false )},[_c('span',{staticClass:"jfb-recursive-details-item--heading"},[_vm._v(_vm._s(_vm.getItemLabel( itemName )))]),_vm._v(" \n\t\t\t\t"),_c('span',{staticClass:"jfb-recursive-details-item--content"},[_vm._v(_vm._s(itemValue))])])]],2):_vm._e()}),0)} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/ExternalLink.vue?vue&type=template&id=81b8e10e": +/*!********************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/ExternalLink.vue?vue&type=template&id=81b8e10e ***! + \********************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',{staticClass:"cx-vui-external-link",attrs:{"href":_vm.href,"target":"_blank","rel":"external noreferrer noopener"}},[_vm._t("default"),_vm._v(" "),_c('svg',{staticClass:"cx-vui-external-link__icon",attrs:{"xmlns":"http://www.w3.org/2000/svg","viewBox":"0 0 24 24","width":"24","height":"24","aria-hidden":"true","focusable":"false"}},[_c('path',{attrs:{"d":"M18.2 17c0 .7-.6 1.2-1.2 1.2H7c-.7 0-1.2-.6-1.2-1.2V7c0-.7.6-1.2 1.2-1.2h3.2V4.2H7C5.5 4.2 4.2 5.5 4.2 7v10c0 1.5 1.2 2.8 2.8 2.8h10c1.5 0 2.8-1.2 2.8-2.8v-3.6h-1.5V17zM14.9 3v1.5h3.7l-6.4 6.4 1.1 1.1 6.4-6.4v3.7h1.5V3h-6.3z"}})])],2)} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/ListComponents.vue?vue&type=template&id=6dd368e8": +/*!**********************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/ListComponents.vue?vue&type=template&id=6dd368e8 ***! + \**********************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"jfb-list-components"},[_vm._l((_vm.components),function(component,index){return _c('div',{key:'entry_' + index,staticClass:"jfb-list-components-item"},[_c('keep-alive',[_c(component,{tag:"component",attrs:{"scope":_vm.scope}})],1)],1)}),_vm._v(" "),_vm._t("default")],2)} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/PrintButton.vue?vue&type=template&id=5837624a&scoped=true": +/*!*******************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/PrintButton.vue?vue&type=template&id=5837624a&scoped=true ***! + \*******************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('cx-vui-button',{attrs:{"button-style":"accent","size":"mini"},on:{"click":_vm.print},scopedSlots:_vm._u([{key:"label",fn:function(){return [(_vm.$slots.default)?[_vm._t("default")]:[_vm._v("\n\t\t\t"+_vm._s(_vm.__( 'Print', 'jet-form-builder' ))+"\n\t\t")]]},proxy:true}],null,true)})} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/RowWrapper.vue?vue&type=template&id=83705926&scoped=true": +/*!******************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/RowWrapper.vue?vue&type=template&id=83705926&scoped=true ***! + \******************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:_vm.className},[(_vm.$slots.meta)?_c('div',{staticClass:"cx-vui-component__meta"},[_vm._t("meta")],2):(_vm.$slots.label || _vm.$slots.description)?_c('div',{staticClass:"cx-vui-component__meta"},[(_vm.$slots.label)?_c('label',{staticClass:"cx-vui-component__label",attrs:{"for":_vm.elementIdData}},[(_vm.stateType)?[_c('Tooltip',{attrs:{"icon":_vm.stateType,"position":'top-right'},scopedSlots:_vm._u([{key:"help",fn:function(){return [_vm._v(_vm._s(_vm.stateHelp))]},proxy:true},{key:"default",fn:function(){return [_vm._t("label")]},proxy:true}],null,true)})]:[_vm._t("label")]],2):_vm._e(),_vm._v(" "),(_vm.$slots.description)?_c('div',{staticClass:"cx-vui-component__desc"},[_vm._t("description")],2):_vm._e()]):_vm._e(),_vm._v(" "),_c('div',{staticClass:"cx-vui-component__control"},[_vm._t("default"),_vm._v(" "),(_vm.$slots.actions)?_c('div',{staticClass:"cx-vui-component__control-actions"},[_vm._t("actions")],2):_vm._e()],2)])} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/Tooltip.vue?vue&type=template&id=7ae9ae9f&scoped=true": +/*!***************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/Tooltip.vue?vue&type=template&id=7ae9ae9f&scoped=true ***! + \***************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:_vm.wrapperClasses},[_c('span',{class:_vm.dashIconClass}),_vm._v(" "),(_vm.$slots.default)?_c('span',{staticClass:"jfb-icon-status--text"},[_vm._t("default")],2):_vm._e(),_vm._v(" "),(_vm.$slots.help)?_c('div',{class:_vm.tooltipClasses},[_vm._t("help")],2):_vm._e()])} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/runtime/componentNormalizer.js": +/*!************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/runtime/componentNormalizer.js ***! + \************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ normalizeComponent) +/* harmony export */ }); +/* globals __VUE_SSR_CONTEXT__ */ + +// IMPORTANT: Do NOT use ES2015 features in this file (except for modules). +// This module is a runtime utility for cleaner component module output and will +// be included in the final webpack user bundle. + +function normalizeComponent( + scriptExports, + render, + staticRenderFns, + functionalTemplate, + injectStyles, + scopeId, + moduleIdentifier /* server only */, + shadowMode /* vue-cli only */ +) { + // Vue.extend constructor export interop + var options = + typeof scriptExports === 'function' ? scriptExports.options : scriptExports + + // render functions + if (render) { + options.render = render + options.staticRenderFns = staticRenderFns + options._compiled = true + } + + // functional template + if (functionalTemplate) { + options.functional = true + } + + // scopedId + if (scopeId) { + options._scopeId = 'data-v-' + scopeId + } + + var hook + if (moduleIdentifier) { + // server build + hook = function (context) { + // 2.3 injection + context = + context || // cached call + (this.$vnode && this.$vnode.ssrContext) || // stateful + (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional + // 2.2 with runInNewContext: true + if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') { + context = __VUE_SSR_CONTEXT__ + } + // inject component styles + if (injectStyles) { + injectStyles.call(this, context) + } + // register component module identifier for async chunk inferrence + if (context && context._registeredComponents) { + context._registeredComponents.add(moduleIdentifier) + } + } + // used by ssr in case component is cached and beforeCreate + // never gets called + options._ssrRegister = hook + } else if (injectStyles) { + hook = shadowMode + ? function () { + injectStyles.call( + this, + (options.functional ? this.parent : this).$root.$options.shadowRoot + ) + } + : injectStyles + } + + if (hook) { + if (options.functional) { + // for template-only hot-reload because in that case the render fn doesn't + // go through the normalizer + options._injectStyles = hook + // register for functional component in vue file + var originalRender = options.render + options.render = function renderWithStyleInjection(h, context) { + hook.call(context) + return originalRender(h, context) + } + } else { + // inject component registration as beforeCreate hook + var existing = options.beforeCreate + options.beforeCreate = existing ? [].concat(existing, hook) : [hook] + } + } + + return { + exports: scriptExports, + options: options + } +} + + +/***/ }), + +/***/ "../../node_modules/vue-style-loader/index.js!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/ColumnWrapper.vue?vue&type=style&index=0&id=edf02a0e&lang=scss&scoped=true": +/*!***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-style-loader/index.js!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-package/components/ColumnWrapper.vue?vue&type=style&index=0&id=edf02a0e&lang=scss&scoped=true ***! + \***************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +// style-loader: Adds some css to the DOM by adding a "],"sourceRoot":""}]); +// Exports +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); + + +/***/ }), + +/***/ "../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-settings/tabs/user-journey/UserJourneyTab.vue?vue&type=style&index=0&id=0fb0c2fc&lang=css": +/*!*****************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-settings/tabs/user-journey/UserJourneyTab.vue?vue&type=style&index=0&id=0fb0c2fc&lang=css ***! + \*****************************************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js */ "../../node_modules/css-loader/dist/runtime/sourceMaps.js"); +/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../../node_modules/css-loader/dist/runtime/api.js */ "../../node_modules/css-loader/dist/runtime/api.js"); +/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); +// Imports + + +var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); +// Module +___CSS_LOADER_EXPORT___.push([module.id, ` +.user-journey-select select.cx-vui-select { + padding: 6px 24px 6px 12px; +} +`, "",{"version":3,"sources":["webpack://./../admin/pages/jfb-settings/tabs/user-journey/UserJourneyTab.vue"],"names":[],"mappings":";AA2HA;CACA,0BAAA;AACA","sourcesContent":["\n\n\n"],"sourceRoot":""}]); +// Exports +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); + + +/***/ }), + +/***/ "../../node_modules/css-loader/dist/runtime/api.js": +/*!*********************************************************!*\ + !*** ../../node_modules/css-loader/dist/runtime/api.js ***! + \*********************************************************/ +/***/ ((module) => { + +"use strict"; + + +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ +module.exports = function (cssWithMappingToString) { + var list = []; + + // return the list of modules as css string + list.toString = function toString() { + return this.map(function (item) { + var content = ""; + var needLayer = typeof item[5] !== "undefined"; + if (item[4]) { + content += "@supports (".concat(item[4], ") {"); + } + if (item[2]) { + content += "@media ".concat(item[2], " {"); + } + if (needLayer) { + content += "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {"); + } + content += cssWithMappingToString(item); + if (needLayer) { + content += "}"; + } + if (item[2]) { + content += "}"; + } + if (item[4]) { + content += "}"; + } + return content; + }).join(""); + }; + + // import a list of modules into the list + list.i = function i(modules, media, dedupe, supports, layer) { + if (typeof modules === "string") { + modules = [[null, modules, undefined]]; + } + var alreadyImportedModules = {}; + if (dedupe) { + for (var k = 0; k < this.length; k++) { + var id = this[k][0]; + if (id != null) { + alreadyImportedModules[id] = true; + } + } + } + for (var _k = 0; _k < modules.length; _k++) { + var item = [].concat(modules[_k]); + if (dedupe && alreadyImportedModules[item[0]]) { + continue; + } + if (typeof layer !== "undefined") { + if (typeof item[5] === "undefined") { + item[5] = layer; + } else { + item[1] = "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {").concat(item[1], "}"); + item[5] = layer; + } + } + if (media) { + if (!item[2]) { + item[2] = media; + } else { + item[1] = "@media ".concat(item[2], " {").concat(item[1], "}"); + item[2] = media; + } + } + if (supports) { + if (!item[4]) { + item[4] = "".concat(supports); + } else { + item[1] = "@supports (".concat(item[4], ") {").concat(item[1], "}"); + item[4] = supports; + } + } + list.push(item); + } + }; + return list; +}; + +/***/ }), + +/***/ "../../node_modules/css-loader/dist/runtime/sourceMaps.js": +/*!****************************************************************!*\ + !*** ../../node_modules/css-loader/dist/runtime/sourceMaps.js ***! + \****************************************************************/ +/***/ ((module) => { + +"use strict"; + + +module.exports = function (item) { + var content = item[1]; + var cssMapping = item[3]; + if (!cssMapping) { + return content; + } + if (typeof btoa === "function") { + var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping)))); + var data = "sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(base64); + var sourceMapping = "/*# ".concat(data, " */"); + return [content].concat([sourceMapping]).join("\n"); + } + return [content].join("\n"); +}; + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-settings/IsPROIcon.vue?vue&type=template&id=14baa230&scoped=true": +/*!*****************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-settings/IsPROIcon.vue?vue&type=template&id=14baa230&scoped=true ***! + \*****************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',[_vm._v(_vm._s(_vm.__( 'Pro', 'jet-form-builder' )))])} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-settings/SettingsPage.vue?vue&type=template&id=4b43500e": +/*!********************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-settings/SettingsPage.vue?vue&type=template&id=4b43500e ***! + \********************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +function objectWithoutProperties (obj, exclude) { var target = {}; for (var k in obj) if (Object.prototype.hasOwnProperty.call(obj, k) && exclude.indexOf(k) === -1) target[k] = obj[k]; return target; } +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('FormBuilderPage',{attrs:{"title":_vm.__( 'JetFormBuilder Settings', 'jet-form-builder' )}},[_c('div',{staticClass:"jfb-content"},[_c('AlertsList'),_vm._v(" "),_c('div',{staticClass:"jfb-content-main"},[_c('div',{staticClass:"cx-vui-panel"},[_c('CxVuiTabs',{attrs:{"in-panel":false,"value":_vm.activeTabSlug,"layout":"vertical"},on:{"input":_vm.onChangeActiveTab}},_vm._l((_vm.tabs),function(ref,index){ +var displayButton = ref.displayButton; if ( displayButton === void 0 ) displayButton = true; +var rest = objectWithoutProperties( ref, ["displayButton"] ); +var tab = rest; +return _c('CxVuiTabsPanel',{key:tab.component.name,attrs:{"name":tab.component.name,"label":tab.title,"disabled":tab.disabled,"icon":tab.icon},scopedSlots:_vm._u([(tab.component.render)?{key:"default",fn:function(){return [_c('keep-alive',[_c(tab.component,{ref:"tabComponents",refInFor:true,tag:"component",attrs:{"incoming":_vm.getIncoming( tab.component.name ),"inner-slugs":_vm.activeTabInnerSlugs || []}})],1),_vm._v(" "),(displayButton)?_c('cx-vui-button',{attrs:{"button-style":"accent","loading":_vm.loadingTab[ tab.component.name ]},on:{"click":function($event){return _vm.onSaveTab( index, tab.component.name )}},scopedSlots:_vm._u([{key:"label",fn:function(){return [_c('span',[_vm._v("Save")])]},proxy:true}],null,true)}):_vm._e()]},proxy:true}:null],null,true)})}),1)],1)]),_vm._v(" "),_c('SettingsSideBar')],1)])} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-settings/captcha/friendlyCaptcha/friendlyCaptcha.vue?vue&type=template&id=054f030e": +/*!***********************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-settings/captcha/friendlyCaptcha/friendlyCaptcha.vue?vue&type=template&id=054f030e ***! + \***********************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('SimpleWrapperComponent',{attrs:{"element-id":"friendly_key"},scopedSlots:_vm._u([{key:"label",fn:function(){return [_vm._v(_vm._s(_vm.label.key))]},proxy:true},{key:"description",fn:function(){return [_c('p',{staticClass:"fb-description"},[_vm._v("\n\t\t\t\t"+_vm._s(_vm.__( + 'It can be found on the page listing your Applications. Or follow this', + 'jet-form-builder' + ) + ' ')+"\n\t\t\t\t"),_c('ExternalLink',{attrs:{"href":"https://docs.friendlycaptcha.com/#/installation?id=_1-generating-a-sitekey"}},[_vm._v("\n\t\t\t\t\t"+_vm._s(_vm.__( 'guide', 'jet-form-builder' ))+"\n\t\t\t\t")])],1)]},proxy:true},{key:"default",fn:function(){return [_c('input',{directives:[{name:"model",rawName:"v-model",value:(_vm.storage.key),expression:"storage.key"}],staticClass:"cx-vui-input size-fullwidth",attrs:{"id":"friendly_key","type":"text"},domProps:{"value":(_vm.storage.key)},on:{"input":function($event){if($event.target.composing){ return; }_vm.$set(_vm.storage, "key", $event.target.value)}}})]},proxy:true}])}),_vm._v(" "),_c('cx-vui-input',{attrs:{"element-id":"friendly_secret","label":_vm.label.secret,"description":_vm.__( + 'It can be found on the page listing your API keys.', + 'jet-form-builder' + ),"wrapper-css":[ 'equalwidth' ],"size":'fullwidth'},model:{value:(_vm.storage.secret),callback:function ($$v) {_vm.$set(_vm.storage, "secret", $$v)},expression:"storage.secret"}})],1)} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-settings/captcha/google/reCAPTCHAv3.vue?vue&type=template&id=638ceb7f": +/*!**********************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-settings/captcha/google/reCAPTCHAv3.vue?vue&type=template&id=638ceb7f ***! + \**********************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('cx-vui-input',{attrs:{"label":_vm.label.key,"wrapper-css":[ 'equalwidth' ],"size":'fullwidth'},model:{value:(_vm.storage.key),callback:function ($$v) {_vm.$set(_vm.storage, "key", $$v)},expression:"storage.key"}}),_vm._v(" "),_c('cx-vui-input',{attrs:{"label":_vm.label.secret,"wrapper-css":[ 'equalwidth' ],"size":'fullwidth'},model:{value:(_vm.storage.secret),callback:function ($$v) {_vm.$set(_vm.storage, "secret", $$v)},expression:"storage.secret"}}),_vm._v(" "),_c('cx-vui-input',{attrs:{"type":"number","min":0,"max":1,"step":0.1,"label":_vm.label.threshold,"description":_vm.help.threshold,"wrapper-css":[ 'equalwidth' ],"size":'fullwidth'},model:{value:(_vm.storage.threshold),callback:function ($$v) {_vm.$set(_vm.storage, "threshold", $$v)},expression:"storage.threshold"}}),_vm._v(" "),_c('p',{staticClass:"fb-description"},[_vm._v(_vm._s(_vm.help.apiPref)+" "),_c('a',{attrs:{"href":_vm.help.apiLink,"target":"_blank"}},[_vm._v(_vm._s(_vm.help.apiLinkLabel))])])],1)} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-settings/captcha/hCaptcha/hCaptcha.vue?vue&type=template&id=34567fa4": +/*!*********************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-settings/captcha/hCaptcha/hCaptcha.vue?vue&type=template&id=34567fa4 ***! + \*********************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('SimpleWrapperComponent',{attrs:{"element-id":"hcaptcha_key"},scopedSlots:_vm._u([{key:"label",fn:function(){return [_vm._v(_vm._s(_vm.label.key))]},proxy:true},{key:"description",fn:function(){return [_c('p',{staticClass:"fb-description"},[_vm._v("\n\t\t\t\t\t"+_vm._s(_vm.__( + 'You can find it on this page in the first column of Sitekey.', + 'jet-form-builder' + ) + ' ')+"\n\t\t\t\t\t"),_c('ExternalLink',{attrs:{"href":"https://dashboard.hcaptcha.com/sites"}},[_vm._v("\n\t\t\t\t\t\t"+_vm._s(_vm.__( 'Go to the dashboard of sites', 'jet-form-builder' ))+"\n\t\t\t\t\t")])],1)]},proxy:true},{key:"default",fn:function(){return [_c('input',{directives:[{name:"model",rawName:"v-model",value:(_vm.storage.key),expression:"storage.key"}],staticClass:"cx-vui-input size-fullwidth",attrs:{"id":"hcaptcha_key","type":"text"},domProps:{"value":(_vm.storage.key)},on:{"input":function($event){if($event.target.composing){ return; }_vm.$set(_vm.storage, "key", $event.target.value)}}})]},proxy:true}])}),_vm._v(" "),_c('SimpleWrapperComponent',{attrs:{"element-id":"hcaptcha_secret"},scopedSlots:_vm._u([{key:"label",fn:function(){return [_vm._v(_vm._s(_vm.label.secret))]},proxy:true},{key:"description",fn:function(){return [_c('p',{staticClass:"fb-description"},[_vm._v("\n\t\t\t\t\t"+_vm._s(_vm.__( + "You can find it on the settings page,\nthis will be the first field.", + 'jet-form-builder' + ) + ' ')+"\n\t\t\t\t\t"),_c('ExternalLink',{attrs:{"href":"https://dashboard.hcaptcha.com/settings"}},[_vm._v("\n\t\t\t\t\t\t"+_vm._s(_vm.__( 'Go to the Settings page', 'jet-form-builder' ))+"\n\t\t\t\t\t")])],1)]},proxy:true},{key:"default",fn:function(){return [_c('input',{directives:[{name:"model",rawName:"v-model",value:(_vm.storage.secret),expression:"storage.secret"}],staticClass:"cx-vui-input size-fullwidth",attrs:{"id":"hcaptcha_secret","type":"text"},domProps:{"value":(_vm.storage.secret)},on:{"input":function($event){if($event.target.composing){ return; }_vm.$set(_vm.storage, "secret", $event.target.value)}}})]},proxy:true}])})],1)} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-settings/captcha/turnstile/turnstile.vue?vue&type=template&id=5a9ffa38": +/*!***********************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-settings/captcha/turnstile/turnstile.vue?vue&type=template&id=5a9ffa38 ***! + \***********************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('cx-vui-input',{attrs:{"element-id":"turnstile_key","label":_vm.label.key,"description":_vm.__( + 'Read the hint to the Secret Key field', + 'jet-form-builder' + ),"wrapper-css":[ 'equalwidth' ],"size":'fullwidth'},model:{value:(_vm.storage.key),callback:function ($$v) {_vm.$set(_vm.storage, "key", $$v)},expression:"storage.key"}}),_vm._v(" "),_c('cx-vui-input',{attrs:{"element-id":"turnstile_secret","label":_vm.label.secret,"description":_vm.__( + 'You can find both keys on your Turnstile Site settings page', + 'jet-form-builder' + ),"wrapper-css":[ 'equalwidth' ],"size":'fullwidth'},model:{value:(_vm.storage.secret),callback:function ($$v) {_vm.$set(_vm.storage, "secret", $$v)},expression:"storage.secret"}}),_vm._v(" "),_c('p',{staticClass:"fb-description"},[_vm._v("\n\t\t"+_vm._s(_vm.__( 'Didn\'t find it? Here is', 'jet-form-builder' ) + ' ')+"\n\t\t"),_c('ExternalLink',{attrs:{"href":"https://developers.cloudflare.com/turnstile/get-started/#get-a-sitekey-and-secret-key"}},[_vm._v("\n\t\t\t"+_vm._s(_vm.__( 'a more detailed description', 'jet-form-builder' ))+"\n\t\t")])],1)],1)} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-settings/gateways/paypal/PaypalTab.vue?vue&type=template&id=8eff804c": +/*!*********************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-settings/gateways/paypal/PaypalTab.vue?vue&type=template&id=8eff804c ***! + \*********************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('cx-vui-input',{attrs:{"label":_vm.label.client_id,"wrapper-css":[ 'equalwidth' ],"size":'fullwidth'},model:{value:(_vm.storage.client_id),callback:function ($$v) {_vm.$set(_vm.storage, "client_id", $$v)},expression:"storage.client_id"}}),_vm._v(" "),_c('cx-vui-input',{attrs:{"label":_vm.label.secret,"wrapper-css":[ 'equalwidth' ],"size":'fullwidth'},model:{value:(_vm.storage.secret),callback:function ($$v) {_vm.$set(_vm.storage, "secret", $$v)},expression:"storage.secret"}})],1)} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-settings/sidebar/SettingsSideBar.vue?vue&type=template&id=4254b64c": +/*!*******************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-settings/sidebar/SettingsSideBar.vue?vue&type=template&id=4254b64c ***! + \*******************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('SideBarBoxes',{scopedSlots:_vm._u([{key:"icon-help",fn:function(){return [_c('svg',{attrs:{"width":"14","height":"21","viewBox":"0 0 14 21","fill":"none","xmlns":"http://www.w3.org/2000/svg"}},[_c('path',{attrs:{"d":"M5.25 21H8.75V17.5H5.25V21ZM7 0C3.1325 0 0 3.1325 0 7H3.5C3.5 5.075 5.075 3.5 7 3.5C8.925 3.5 10.5 5.075 10.5 7C10.5 10.5 5.25 10.0625 5.25 15.75H8.75C8.75 11.8125 14 11.375 14 7C14 3.1325 10.8675 0 7 0Z","fill":"#7B7E81"}})])]},proxy:true},{key:"content-help",fn:function(box){return [_c('div',{staticClass:"help-center-link"},[_c('a',{attrs:{"href":box.link_knowledge,"target":"_blank"}},[_c('div',{staticClass:"help-center-link-icon"},[_c('svg',{attrs:{"width":"14","height":"16","viewBox":"0 0 14 16","fill":"none","xmlns":"http://www.w3.org/2000/svg"}},[_c('path',{attrs:{"d":"M13.458 11.2552L13.458 1.4115C13.458 1.03064 13.1357 0.708374 12.7549 0.708374L3.14551 0.708374C1.59277 0.708374 0.333008 1.96814 0.333008 3.52087L0.333008 12.8959C0.333008 14.4486 1.59277 15.7084 3.14551 15.7084L12.7549 15.7084C13.1357 15.7084 13.458 15.4154 13.458 15.0052L13.458 14.5365C13.458 14.3314 13.3408 14.1263 13.1943 14.0092C13.0479 13.5404 13.0479 12.2513 13.1943 11.8119C13.3408 11.6947 13.458 11.4896 13.458 11.2552ZM4.08301 4.63416C4.08301 4.54626 4.1416 4.45837 4.25879 4.45837L10.4697 4.45837C10.5576 4.45837 10.6455 4.54626 10.6455 4.63416L10.6455 5.22009C10.6455 5.33728 10.5576 5.39587 10.4697 5.39587L4.25879 5.39587C4.1416 5.39587 4.08301 5.33728 4.08301 5.22009L4.08301 4.63416ZM4.08301 6.50916C4.08301 6.42127 4.1416 6.33337 4.25879 6.33337L10.4697 6.33337C10.5576 6.33337 10.6455 6.42127 10.6455 6.50916L10.6455 7.09509C10.6455 7.21228 10.5576 7.27087 10.4697 7.27087L4.25879 7.27087C4.1416 7.27087 4.08301 7.21228 4.08301 7.09509L4.08301 6.50916ZM11.4951 13.8334L3.14551 13.8334C2.61816 13.8334 2.20801 13.4232 2.20801 12.8959C2.20801 12.3978 2.61816 11.9584 3.14551 11.9584L11.4951 11.9584C11.4365 12.4857 11.4365 13.3353 11.4951 13.8334Z","fill":"#007CBA"}})])]),_vm._v(" "),_c('div',{staticClass:"help-center-link-label"},[_vm._v(_vm._s(box.label_knowledge))])])]),_vm._v(" "),_c('div',{staticClass:"help-center-link"},[_c('a',{attrs:{"href":box.link_community,"target":"_blank"}},[_c('div',{staticClass:"help-center-link-icon"},[_c('svg',{attrs:{"width":"16","height":"16","viewBox":"0 0 16 16","fill":"none","xmlns":"http://www.w3.org/2000/svg"}},[_c('path',{attrs:{"d":"M15.5913 8.04564C15.5913 3.87728 12.214 0.5 8.04564 0.5C3.87728 0.5 0.5 3.87728 0.5 8.04564C0.5 11.8185 3.23834 14.9523 6.85903 15.5L6.85903 10.2363L4.94219 10.2363L4.94219 8.04564L6.85903 8.04564L6.85903 6.40264C6.85903 4.51623 7.98479 3.45132 9.68864 3.45132C10.5406 3.45132 11.3925 3.60345 11.3925 3.60345L11.3925 5.45943L10.4493 5.45943C9.50609 5.45943 9.20183 6.03753 9.20183 6.64604L9.20183 8.04564L11.3012 8.04564L10.9665 10.2363L9.20183 10.2363L9.20183 15.5C12.8225 14.9523 15.5913 11.8185 15.5913 8.04564Z","fill":"#007CBA"}})])]),_vm._v(" "),_c('div',{staticClass:"help-center-link-label"},[_vm._v(_vm._s(box.label_community))])])]),_vm._v(" "),_c('div',{staticClass:"help-center-link"},[_c('a',{attrs:{"href":box.link_support,"target":"_blank"}},[_c('div',{staticClass:"help-center-link-icon"},[_c('svg',{attrs:{"width":"15","height":"18","viewBox":"0 0 15 18","fill":"none","xmlns":"http://www.w3.org/2000/svg"}},[_c('path',{attrs:{"d":"M7.58333 0.666687C3.675 0.666687 0.5 3.84169 0.5 7.75002C0.5 11.6584 3.675 14.8334 7.58333 14.8334H8V17.3334C12.05 15.3834 14.6667 11.5 14.6667 7.75002C14.6667 3.84169 11.4917 0.666687 7.58333 0.666687ZM8.41667 12.75H6.75V11.0834H8.41667V12.75ZM8.41667 9.83335H6.75C6.75 7.12502 9.25 7.33335 9.25 5.66669C9.25 4.75002 8.5 4.00002 7.58333 4.00002C6.66667 4.00002 5.91667 4.75002 5.91667 5.66669H4.25C4.25 3.82502 5.74167 2.33335 7.58333 2.33335C9.425 2.33335 10.9167 3.82502 10.9167 5.66669C10.9167 7.75002 8.41667 7.95835 8.41667 9.83335Z","fill":"#007CBA"}})])]),_vm._v(" "),_c('div',{staticClass:"help-center-link-label"},[_vm._v(_vm._s(box.label_support))])])]),_vm._v(" "),_c('div',{staticClass:"help-center-link"},[_c('a',{attrs:{"href":box.link_git,"target":"_blank"}},[_c('div',{staticClass:"help-center-link-icon"},[_c('svg',{attrs:{"width":"16","height":"16","viewBox":"0 0 16 16","fill":"none","xmlns":"http://www.w3.org/2000/svg"}},[_c('path',{attrs:{"fill-rule":"evenodd","clip-rule":"evenodd","d":"M7.976 0C5.86071 0.000265156 3.83214 0.840676 2.33641 2.33641C0.840676 3.83214 0.000265156 5.86071 0 7.976C0 11.498 2.3 14.483 5.431 15.56C5.823 15.609 5.969 15.364 5.969 15.168V13.798C3.768 14.288 3.279 12.722 3.279 12.722C2.936 11.792 2.398 11.547 2.398 11.547C1.664 11.058 2.446 11.058 2.446 11.058C3.229 11.107 3.67 11.89 3.67 11.89C4.404 13.113 5.529 12.77 5.97 12.575C6.018 12.037 6.263 11.695 6.459 11.499C4.697 11.303 2.838 10.618 2.838 7.535C2.838 6.655 3.131 5.969 3.67 5.382C3.62 5.235 3.327 4.404 3.768 3.327C3.768 3.327 4.453 3.131 5.969 4.159C6.605 3.963 7.291 3.914 7.976 3.914C8.661 3.914 9.346 4.012 9.982 4.159C11.499 3.132 12.184 3.327 12.184 3.327C12.624 4.404 12.33 5.235 12.281 5.431C12.8199 6.01808 13.1171 6.7871 13.113 7.584C13.113 10.667 11.253 11.303 9.493 11.499C9.786 11.743 10.031 12.232 10.031 12.966V15.168C10.031 15.364 10.177 15.608 10.569 15.56C12.155 15.0248 13.5327 14.0046 14.5073 12.6436C15.4818 11.2827 16.004 9.64989 16 7.976C15.951 3.572 12.38 0 7.976 0Z","fill":"#007CBA"}})])]),_vm._v(" "),_c('div',{staticClass:"help-center-link-label"},[_vm._v(_vm._s(box.label_git))])])])]}}])})} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-settings/tabs/captcha/CaptchaTab.vue?vue&type=template&id=62b36e55": +/*!*******************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-settings/tabs/captcha/CaptchaTab.vue?vue&type=template&id=62b36e55 ***! + \*******************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',_vm._l((_vm.captcha),function(tab,index){return _c('CxVuiCollapseMini',{key:tab.component.name,attrs:{"with-panel":"","icon":tab.icon,"label":_vm.getTabTitle( tab ),"disabled":tab.disabled,"initial-active":_vm.isActive( tab.component.name )},on:{"change":function($event){return _vm.onChangeActive( $event, tab.component.name )}}},[_c('keep-alive',[_c(tab.component,{ref:"captcha",refInFor:true,tag:"component",attrs:{"incoming":_vm.getIncomingCaptcha( tab.component.name )}})],1),_vm._v(" "),_c('cx-vui-button',{attrs:{"button-style":"accent","loading":_vm.loadingGateways[ tab.component.name ]},on:{"click":function($event){return _vm.onSaveGateway( index, tab.component.name )}}},[_c('span',{attrs:{"slot":"label"},slot:"label"},[_vm._v("Save")])])],1)}),1)} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-settings/tabs/getresponse/GetResponseTab.vue?vue&type=template&id=054dbebb": +/*!***************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-settings/tabs/getresponse/GetResponseTab.vue?vue&type=template&id=054dbebb ***! + \***************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('cx-vui-input',{attrs:{"label":_vm.label.api_key,"wrapper-css":[ 'equalwidth' ],"description":((_vm.help.apiPref) + " " + (_vm.help.apiLinkLabel) + ""),"size":'fullwidth'},model:{value:(_vm.api_key),callback:function ($$v) {_vm.api_key=$$v},expression:"api_key"}})} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-settings/tabs/mailchimp/MailChimpTab.vue?vue&type=template&id=783c3dc9": +/*!***********************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-settings/tabs/mailchimp/MailChimpTab.vue?vue&type=template&id=783c3dc9 ***! + \***********************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('cx-vui-input',{attrs:{"label":_vm.label.api_key,"wrapper-css":[ 'equalwidth' ],"description":((_vm.help.apiPref) + " " + (_vm.help.apiLinkLabel) + ""),"size":'fullwidth'},model:{value:(_vm.api_key),callback:function ($$v) {_vm.api_key=$$v},expression:"api_key"}})} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-settings/tabs/options/OptionsTab.vue?vue&type=template&id=9dc42de6": +/*!*******************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-settings/tabs/options/OptionsTab.vue?vue&type=template&id=9dc42de6 ***! + \*******************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('cx-vui-switcher',{attrs:{"name":"enable_dev_mode","wrapper-css":[ 'equalwidth' ],"label":_vm.loading.enable_dev_mode ? ((_vm.label.enable_dev_mode) + " (loading...)") : _vm.label.enable_dev_mode,"description":_vm.help.enable_dev_mode,"value":_vm.storage.hasOwnProperty( 'enable_dev_mode' ) ? _vm.storage.enable_dev_mode : false,"disabled":_vm.isLoading},on:{"input":function($event){return _vm.changeVal( 'enable_dev_mode', $event )}}}),_vm._v(" "),_c('cx-vui-switcher',{attrs:{"name":"clear_on_uninstall","wrapper-css":[ 'equalwidth' ],"label":_vm.loading.clear_on_uninstall ? ((_vm.label.clear_on_uninstall) + " (loading...)") : _vm.label.clear_on_uninstall,"description":_vm.help.clear_on_uninstall,"value":_vm.storage.hasOwnProperty( 'clear_on_uninstall' ) ? _vm.storage.clear_on_uninstall : false,"disabled":_vm.isLoading},on:{"input":function($event){return _vm.changeVal( 'clear_on_uninstall', $event )}}}),_vm._v(" "),_c('cx-vui-input',{attrs:{"name":"form_records_access_capability","wrapper-css":[ 'equalwidth' ],"size":'fullwidth',"label":_vm.loading.form_records_access_capability ? ((_vm.label.form_records_access_capability) + " (loading...)") : _vm.label.form_records_access_capability,"description":_vm.help.form_records_access_capability,"value":_vm.storage.hasOwnProperty( 'form_records_access_capability' ) ? _vm.storage.form_records_access_capability : 'manage_options',"disabled":_vm.isLoading},on:{"input":function($event){return _vm.changeVal( 'form_records_access_capability', $event )}}}),_vm._v(" "),_c('cx-vui-component-wrapper',{attrs:{"label":_vm.__( 'Form Accessibility', 'jet-form-builder' ),"wrapper-css":[ 'equalwidth' ]}}),_vm._v(" "),_c('div',{staticClass:"cx-vui-inner-panel"},[_c('cx-vui-switcher',{attrs:{"name":"disable_next_button","wrapper-css":[ 'equalwidth' ],"label":_vm.loading.disable_next_button ? ((_vm.label.disable_next_button) + " (loading...)") : _vm.label.disable_next_button,"description":_vm.help.disable_next_button,"value":_vm.storage.hasOwnProperty( 'disable_next_button' ) ? _vm.storage.disable_next_button : true,"disabled":_vm.isLoading},on:{"input":function($event){return _vm.changeVal( 'disable_next_button', $event )}}}),_vm._v(" "),_c('cx-vui-switcher',{attrs:{"name":"scroll_on_next","wrapper-css":[ 'equalwidth' ],"label":_vm.loading.scroll_on_next ? ((_vm.label.scroll_on_next) + " (loading...)") : _vm.label.scroll_on_next,"description":_vm.help.scroll_on_next,"value":_vm.storage.hasOwnProperty( 'scroll_on_next' ) ? _vm.storage.scroll_on_next : false,"disabled":_vm.isLoading},on:{"input":function($event){return _vm.changeVal( 'scroll_on_next', $event )}}}),_vm._v(" "),_c('cx-vui-switcher',{attrs:{"name":"auto_focus","wrapper-css":[ 'equalwidth' ],"label":_vm.loading.auto_focus ? ((_vm.label.auto_focus) + " (loading...)") : _vm.label.auto_focus,"description":_vm.help.auto_focus,"value":_vm.storage.hasOwnProperty( 'auto_focus' ) ? _vm.storage.auto_focus : false,"disabled":_vm.isLoading},on:{"input":function($event){return _vm.changeVal( 'auto_focus', $event )}}})],1),_vm._v(" "),_c('cx-vui-component-wrapper',{attrs:{"label":_vm.__( 'Form Request Args', 'jet-form-builder' ),"wrapper-css":[ 'equalwidth' ]}}),_vm._v(" "),_c('cx-vui-input',{attrs:{"name":"gfb_request_args_key","wrapper-css":[ 'equalwidth' ],"size":'fullwidth',"label":'Request key',"description":'Unique form parameter (key)',"value":_vm.storage.hasOwnProperty( 'gfb_request_args_key' ) ? _vm.storage.gfb_request_args_key : '1111',"disabled":_vm.isLoading},on:{"input":function($event){return _vm.changeVal( 'gfb_request_args_key', $event )}}}),_vm._v(" "),_c('cx-vui-input',{attrs:{"name":"gfb_request_args_value","wrapper-css":[ 'equalwidth' ],"size":'fullwidth',"label":'Request value',"description":'Unique form parameter (value)',"value":_vm.storage.hasOwnProperty( 'gfb_request_args_value' ) ? _vm.storage.gfb_request_args_value : '2222',"disabled":_vm.isLoading},on:{"input":function($event){return _vm.changeVal( 'gfb_request_args_value', $event )}}})],1)} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-settings/tabs/payments-gateways/PaymentsGateways.vue?vue&type=template&id=676966a1": +/*!***********************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-settings/tabs/payments-gateways/PaymentsGateways.vue?vue&type=template&id=676966a1 ***! + \***********************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',[_c('cx-vui-switcher',{attrs:{"name":"use_gateways","wrapper-css":[ 'equalwidth' ],"label":_vm.label.use_gateways,"description":_vm.help.use_gateways,"value":_vm.storage.use_gateways},on:{"input":function($event){return _vm.changeVal( 'use_gateways', $event )}}}),_vm._v(" "),(_vm.storage.use_gateways)?_c('cx-vui-switcher',{attrs:{"name":"enable_test_mode","wrapper-css":[ 'equalwidth' ],"description":_vm.help.enable_test_mode,"label":_vm.label.enable_test_mode,"value":_vm.storage.enable_test_mode},on:{"input":function($event){return _vm.changeVal( 'enable_test_mode', $event )}}}):_vm._e(),_vm._v(" "),(_vm.storage.use_gateways)?[_c('div',{staticClass:"cx-vui-inner-panel"},_vm._l((_vm.gateways),function(tab,index){return _c('CxVuiCollapseMini',{key:tab.component.name,attrs:{"with-panel":"","icon":tab.icon,"label":tab.title,"disabled":tab.disabled,"initial-active":_vm.isActive( tab.component.name )},on:{"change":function($event){return _vm.onChangeActive( $event, tab.component.name )}}},[_c('keep-alive',[_c(tab.component,{ref:"gateways",refInFor:true,tag:"component",attrs:{"incoming":_vm.getIncoming( tab.component.name )}})],1),_vm._v(" "),_c('cx-vui-button',{attrs:{"button-style":"accent","loading":_vm.loadingGateways[ tab.component.name ]},on:{"click":function($event){return _vm.onSaveGateway( index, tab.component.name )}}},[_c('span',{attrs:{"slot":"label"},slot:"label"},[_vm._v("Save")])])],1)}),1)]:_vm._e()],2)} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-settings/tabs/user-journey/UserJourneyTab.vue?vue&type=template&id=0fb0c2fc": +/*!****************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-settings/tabs/user-journey/UserJourneyTab.vue?vue&type=template&id=0fb0c2fc ***! + \****************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[_c('cx-vui-switcher',{attrs:{"name":"enable_user_journey","label":_vm.loading.enable_user_journey ? ((_vm.label.enable_user_journey) + " (loading...)") : _vm.label.enable_user_journey,"description":_vm.help.enable_user_journey,"wrapper-css":[ 'equalwidth' ],"value":_vm.storage.hasOwnProperty( 'enable_user_journey' ) ? _vm.storage.enable_user_journey : false,"disabled":_vm.isLoading},on:{"input":function($event){return _vm.changeVal( 'enable_user_journey', $event )}}}),_vm._v(" "),(_vm.storage.enable_user_journey)?[_c('cx-vui-select',{staticClass:"user-journey-select",attrs:{"name":"storage_type","label":_vm.loading.storage_type ? ((_vm.label.storage_type) + " (loading...)") : _vm.label.storage_type,"description":_vm.help.storage_type,"wrapper-css":[ 'equalwidth' ],"options-list":[ + { + value: 'local', + label: 'Local Storage' + }, + { + value: 'session', + label: 'Session Storage' + } + ],"value":_vm.storage.hasOwnProperty( 'storage_type' ) ? _vm.storage.storage_type : 'local',"disabled":!_vm.storage.enable_user_journey || _vm.isLoading},on:{"input":function($event){return _vm.changeVal( 'storage_type', $event )}}}),_vm._v(" "),_c('cx-vui-component-wrapper',[_c('div',{staticClass:"cx-vui-component__label"},[_vm._v("Please note!")]),_vm._v(" "),_c('div',[_c('b',[_vm._v("Session Storage:")]),_vm._v(" The information is kept only while this tab or window is open. Reloading the page is fine, but as soon as you close the tab, the data disappears. Other tabs or windows of the site can’t see it. You can still get it back by pressing Ctrl + Shift + T (“Reopen Closed Tab”)")]),_vm._v(" "),_c('div',[_c('b',[_vm._v("Local Storage:")]),_vm._v(" The information stays much longer—every tab or window of this site can use it, and it remains even after you close and reopen the browser, until you clear it yourself.")])]),_vm._v(" "),_c('cx-vui-select',{staticClass:"user-journey-select",attrs:{"name":"clear_after_submit","label":_vm.loading.clear_after_submit ? ((_vm.label.clear_after_submit) + " (loading...)") : _vm.label.clear_after_submit,"description":_vm.help.clear_after_submit,"wrapper-css":[ 'equalwidth' ],"options-list":[ + { + value: 'always', + label: 'After any submit (success or failure)' + }, + { + value: 'success', + label: 'After successful submit only' + } + ],"value":_vm.storage.hasOwnProperty( 'clear_after_submit' ) ? _vm.storage.clear_after_submit : 'success',"disabled":!_vm.storage.enable_user_journey || _vm.isLoading},on:{"input":function($event){return _vm.changeVal( 'clear_after_submit', $event )}}})]:_vm._e()],2)} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/runtime/componentNormalizer.js": +/*!************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/runtime/componentNormalizer.js ***! + \************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ normalizeComponent) +/* harmony export */ }); +/* globals __VUE_SSR_CONTEXT__ */ + +// IMPORTANT: Do NOT use ES2015 features in this file (except for modules). +// This module is a runtime utility for cleaner component module output and will +// be included in the final webpack user bundle. + +function normalizeComponent( + scriptExports, + render, + staticRenderFns, + functionalTemplate, + injectStyles, + scopeId, + moduleIdentifier /* server only */, + shadowMode /* vue-cli only */ +) { + // Vue.extend constructor export interop + var options = + typeof scriptExports === 'function' ? scriptExports.options : scriptExports + + // render functions + if (render) { + options.render = render + options.staticRenderFns = staticRenderFns + options._compiled = true + } + + // functional template + if (functionalTemplate) { + options.functional = true + } + + // scopedId + if (scopeId) { + options._scopeId = 'data-v-' + scopeId + } + + var hook + if (moduleIdentifier) { + // server build + hook = function (context) { + // 2.3 injection + context = + context || // cached call + (this.$vnode && this.$vnode.ssrContext) || // stateful + (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional + // 2.2 with runInNewContext: true + if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') { + context = __VUE_SSR_CONTEXT__ + } + // inject component styles + if (injectStyles) { + injectStyles.call(this, context) + } + // register component module identifier for async chunk inferrence + if (context && context._registeredComponents) { + context._registeredComponents.add(moduleIdentifier) + } + } + // used by ssr in case component is cached and beforeCreate + // never gets called + options._ssrRegister = hook + } else if (injectStyles) { + hook = shadowMode + ? function () { + injectStyles.call( + this, + (options.functional ? this.parent : this).$root.$options.shadowRoot + ) + } + : injectStyles + } + + if (hook) { + if (options.functional) { + // for template-only hot-reload because in that case the render fn doesn't + // go through the normalizer + options._injectStyles = hook + // register for functional component in vue file + var originalRender = options.render + options.render = function renderWithStyleInjection(h, context) { + hook.call(context) + return originalRender(h, context) + } + } else { + // inject component registration as beforeCreate hook + var existing = options.beforeCreate + options.beforeCreate = existing ? [].concat(existing, hook) : [hook] + } + } + + return { + exports: scriptExports, + options: options + } +} + + +/***/ }), + +/***/ "../../node_modules/vue-style-loader/index.js!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-settings/SettingsPage.vue?vue&type=style&index=0&id=4b43500e&lang=scss": +/*!**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-style-loader/index.js!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-settings/SettingsPage.vue?vue&type=style&index=0&id=4b43500e&lang=scss ***! + \**************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +// style-loader: Adds some css to the DOM by adding a "],"sourceRoot":""}]); +// Exports +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); + + +/***/ }), + +/***/ "../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/BoxActions/RedirectToSingle.vue?vue&type=style&index=0&id=1858beab&scoped=true&lang=css": +/*!*****************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/BoxActions/RedirectToSingle.vue?vue&type=style&index=0&id=1858beab&scoped=true&lang=css ***! + \*****************************************************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js */ "../../node_modules/css-loader/dist/runtime/sourceMaps.js"); +/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../node_modules/css-loader/dist/runtime/api.js */ "../../node_modules/css-loader/dist/runtime/api.js"); +/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); +// Imports + + +var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); +// Module +___CSS_LOADER_EXPORT___.push([module.id, ` +a[data-v-1858beab] { + margin-right: 1em; + text-decoration: none; +} +body.rtl a[data-v-1858beab] { + margin-left: 1em; +} +`, "",{"version":3,"sources":["webpack://./../admin-vuex-package/components/BoxActions/RedirectToSingle.vue"],"names":[],"mappings":";AA0CA;CACA,iBAAA;CACA,qBAAA;AACA;AACA;CACA,gBAAA;AACA","sourcesContent":["\n\n\n\n"],"sourceRoot":""}]); +// Exports +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); + + +/***/ }), + +/***/ "../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/PageActions.vue?vue&type=style&index=0&id=5ac5349d&scoped=true&lang=css": +/*!*************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/PageActions.vue?vue&type=style&index=0&id=5ac5349d&scoped=true&lang=css ***! + \*************************************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/sourceMaps.js */ "../../node_modules/css-loader/dist/runtime/sourceMaps.js"); +/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "../../node_modules/css-loader/dist/runtime/api.js"); +/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); +// Imports + + +var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); +// Module +___CSS_LOADER_EXPORT___.push([module.id, ` +.page-actions[data-v-5ac5349d] { + display: flex; + gap: 1em; +} + +`, "",{"version":3,"sources":["webpack://./../admin-vuex-package/components/PageActions.vue"],"names":[],"mappings":";AA6EA;CACA,aAAA;CACA,QAAA;AACA","sourcesContent":["\n\n\n\n"],"sourceRoot":""}]); +// Exports +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); + + +/***/ }), + +/***/ "../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/PostBoxSimple.vue?vue&type=style&index=0&id=0f34be8c&lang=css": +/*!***************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/PostBoxSimple.vue?vue&type=style&index=0&id=0f34be8c&lang=css ***! + \***************************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/sourceMaps.js */ "../../node_modules/css-loader/dist/runtime/sourceMaps.js"); +/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "../../node_modules/css-loader/dist/runtime/api.js"); +/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); +// Imports + + +var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); +// Module +___CSS_LOADER_EXPORT___.push([module.id, ` +.misc-pub-section { + border-bottom: 1px solid #ececec; +} +.misc-pub-section:last-child { + border-bottom: unset; +} + +`, "",{"version":3,"sources":["webpack://./../admin-vuex-package/components/PostBoxSimple.vue"],"names":[],"mappings":";AAsEA;CACA,gCAAA;AACA;AAEA;CACA,oBAAA;AACA","sourcesContent":["\n\n\n\n"],"sourceRoot":""}]); +// Exports +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); + + +/***/ }), + +/***/ "../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/PostBoxSkeleton.vue?vue&type=style&index=0&id=07ca11b2&scoped=true&lang=css": +/*!*****************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/PostBoxSkeleton.vue?vue&type=style&index=0&id=07ca11b2&scoped=true&lang=css ***! + \*****************************************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/sourceMaps.js */ "../../node_modules/css-loader/dist/runtime/sourceMaps.js"); +/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "../../node_modules/css-loader/dist/runtime/api.js"); +/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); +// Imports + + +var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); +// Module +___CSS_LOADER_EXPORT___.push([module.id, ` +.handle-actions[data-v-07ca11b2] { + display: flex; +} + +`, "",{"version":3,"sources":["webpack://./../admin-vuex-package/components/PostBoxSkeleton.vue"],"names":[],"mappings":";AA8DA;CACA,aAAA;AACA","sourcesContent":["\n\n\n\n"],"sourceRoot":""}]); +// Exports +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); + + +/***/ }), + +/***/ "../../node_modules/css-loader/dist/runtime/api.js": +/*!*********************************************************!*\ + !*** ../../node_modules/css-loader/dist/runtime/api.js ***! + \*********************************************************/ +/***/ ((module) => { + +"use strict"; + + +/* + MIT License http://www.opensource.org/licenses/mit-license.php + Author Tobias Koppers @sokra +*/ +module.exports = function (cssWithMappingToString) { + var list = []; + + // return the list of modules as css string + list.toString = function toString() { + return this.map(function (item) { + var content = ""; + var needLayer = typeof item[5] !== "undefined"; + if (item[4]) { + content += "@supports (".concat(item[4], ") {"); + } + if (item[2]) { + content += "@media ".concat(item[2], " {"); + } + if (needLayer) { + content += "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {"); + } + content += cssWithMappingToString(item); + if (needLayer) { + content += "}"; + } + if (item[2]) { + content += "}"; + } + if (item[4]) { + content += "}"; + } + return content; + }).join(""); + }; + + // import a list of modules into the list + list.i = function i(modules, media, dedupe, supports, layer) { + if (typeof modules === "string") { + modules = [[null, modules, undefined]]; + } + var alreadyImportedModules = {}; + if (dedupe) { + for (var k = 0; k < this.length; k++) { + var id = this[k][0]; + if (id != null) { + alreadyImportedModules[id] = true; + } + } + } + for (var _k = 0; _k < modules.length; _k++) { + var item = [].concat(modules[_k]); + if (dedupe && alreadyImportedModules[item[0]]) { + continue; + } + if (typeof layer !== "undefined") { + if (typeof item[5] === "undefined") { + item[5] = layer; + } else { + item[1] = "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {").concat(item[1], "}"); + item[5] = layer; + } + } + if (media) { + if (!item[2]) { + item[2] = media; + } else { + item[1] = "@media ".concat(item[2], " {").concat(item[1], "}"); + item[2] = media; + } + } + if (supports) { + if (!item[4]) { + item[4] = "".concat(supports); + } else { + item[1] = "@supports (".concat(item[4], ") {").concat(item[1], "}"); + item[4] = supports; + } + } + list.push(item); + } + }; + return list; +}; + +/***/ }), + +/***/ "../../node_modules/css-loader/dist/runtime/getUrl.js": +/*!************************************************************!*\ + !*** ../../node_modules/css-loader/dist/runtime/getUrl.js ***! + \************************************************************/ +/***/ ((module) => { + +"use strict"; + + +module.exports = function (url, options) { + if (!options) { + options = {}; + } + if (!url) { + return url; + } + url = String(url.__esModule ? url.default : url); + + // If url is already wrapped in quotes, remove them + if (/^['"].*['"]$/.test(url)) { + url = url.slice(1, -1); + } + if (options.hash) { + url += options.hash; + } + + // Should url be wrapped? + // See https://drafts.csswg.org/css-values-3/#urls + if (/["'() \t\n]|(%20)/.test(url) || options.needQuotes) { + return "\"".concat(url.replace(/"/g, '\\"').replace(/\n/g, "\\n"), "\""); + } + return url; +}; + +/***/ }), + +/***/ "../../node_modules/css-loader/dist/runtime/sourceMaps.js": +/*!****************************************************************!*\ + !*** ../../node_modules/css-loader/dist/runtime/sourceMaps.js ***! + \****************************************************************/ +/***/ ((module) => { + +"use strict"; + + +module.exports = function (item) { + var content = item[1]; + var cssMapping = item[3]; + if (!cssMapping) { + return content; + } + if (typeof btoa === "function") { + var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping)))); + var data = "sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(base64); + var sourceMapping = "/*# ".concat(data, " */"); + return [content].concat([sourceMapping]).join("\n"); + } + return [content].join("\n"); +}; + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/ActionsWithFilters.vue?vue&type=template&id=34183439&scoped=true": +/*!*******************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/ActionsWithFilters.vue?vue&type=template&id=34183439&scoped=true ***! + \*******************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.show)?_c('div',{class:_vm.wrapperClass},[_c('ChooseAction'),_vm._v(" "),_c('div',{staticClass:"filters"},[_vm._t("filters")],2),_vm._v(" "),_c('div',{staticClass:"wrapper-buttons"},[_vm._t("buttons")],2)],1):_vm._e()} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/Alerts/AlertItem.vue?vue&type=template&id=6e060cd8": +/*!*****************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/Alerts/AlertItem.vue?vue&type=template&id=6e060cd8 ***! + \*****************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:_vm.classes},[_c('div',{staticClass:"alert-type-line"}),_vm._v(" "),_c('div',{staticClass:"alert-icon",domProps:{"innerHTML":_vm._s(_vm.iconHtml)}}),_vm._v(" "),_c('div',{staticClass:"alert-content"},[(_vm.config.title)?_c('div',{staticClass:"alert-title",domProps:{"innerHTML":_vm._s(_vm.config.title)}}):_vm._e(),_vm._v(" "),(_vm.config.message)?_c('div',{staticClass:"alert-message",domProps:{"innerHTML":_vm._s(_vm.config.message)}}):_vm._e(),_vm._v(" "),(_vm.$slots['alert-buttons'])?_c('div',{staticClass:"alert-buttons"},[_vm._t("alert-buttons")],2):(_vm.config.buttons)?_c('div',{staticClass:"alert-buttons"},_vm._l((_vm.config.buttons),function(button,index){return _c('cx-vui-button',{key:("button-alert-" + index),class:("cx-vui-button--style-" + (button.type)),attrs:{"button-style":button.style,"size":"mini","url":button.url,"tag-name":button.rest.url ? 'button' : 'a',"target":button.rest.url ? '' : '_blank'},on:{"click":function($event){return _vm.emitClick( $event, button )}},scopedSlots:_vm._u([{key:"label",fn:function(){return [_vm._v(_vm._s(button.label))]},proxy:true}],null,true)})}),1):_vm._e()]),_vm._v(" "),_c('div',{staticClass:"alert-close",on:{"click":_vm.closeAlert}},[_c('svg',{attrs:{"width":"20","height":"20","viewBox":"0 0 14 14","fill":"#dcdcdd","xmlns":"http://www.w3.org/2000/svg"}},[_c('path',{attrs:{"d":"M12 3.00671L8.00671 7L12 10.9933L10.9933 12L7 8.00671L3.00671 12L2 10.9933L5.99329 7L2 3.00671L3.00671 2L7 5.99329L10.9933 2L12 3.00671Z"}})])])])} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/Alerts/AlertsList.vue?vue&type=template&id=4c567adc": +/*!******************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/Alerts/AlertsList.vue?vue&type=template&id=4c567adc ***! + \******************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.visible)?_c('div',{staticClass:"jet-form-builder-page__alerts"},_vm._l((_vm.getNotices),function(notice){return _c('AlertItem',{key:notice.id,attrs:{"id":notice.id},scopedSlots:_vm._u([(_vm.$slots[ 'alert-buttons-' + notice.id ])?{key:"alert-buttons",fn:function(){return [_vm._t([ 'alert-buttons-' + notice.id ])]},proxy:true}:null],null,true)})}),1):_vm._e()} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/BoxActions/ActionButton.vue?vue&type=template&id=c57152d8&scoped=true": +/*!************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/BoxActions/ActionButton.vue?vue&type=template&id=c57152d8&scoped=true ***! + \************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.action.button)?_c('cx-vui-button',{key:("button-action-" + (_vm.action.slug)),class:[ + ("cx-vui-button--style-" + (_vm.action.button.type)) ].concat( _vm.action.button.classes ),attrs:{"button-style":_vm.action.button.style,"size":_vm.action.button.size,"url":_vm.action.button.url,"tag-name":_vm.action.button.url ? 'a' : 'button',"disabled":_vm.isDisabled,"loading":_vm.isLoading,"target":"_blank"},on:{"click":_vm.globalEmit},scopedSlots:_vm._u([{key:"label",fn:function(){return [_vm._v(_vm._s(_vm.action.button.label))]},proxy:true}],null,false,389569784)}):_vm._e()} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/BoxActions/BoxActions.vue?vue&type=template&id=0477663e": +/*!**********************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/BoxActions/BoxActions.vue?vue&type=template&id=0477663e ***! + \**********************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.primary.length)?_c('div',{staticClass:"major-publishing-actions"},[_c('div',{staticClass:"jfb-primary-actions"},_vm._l((_vm.primary),function(action){return _c('ActionButton',{key:action.slug,class:[ + 'box-actions-item', + 'action-' + action.slug ],attrs:{"scope":_vm.scope,"action":action}})}),1),_vm._v(" "),_c('div',{staticClass:"clear"})]):_vm._e()} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/BoxActions/EditTableSwitcher.vue?vue&type=template&id=74813489": +/*!*****************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/BoxActions/EditTableSwitcher.vue?vue&type=template&id=74813489 ***! + \*****************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isEditableTable)?_c('cx-vui-switcher',{staticClass:"jfb-cx-vui-component",attrs:{"label":_vm.__( 'Edit table', 'jet-form-builder' ),"value":_vm.isEnableEdit},on:{"input":_vm.toggleEditTable}}):_vm._e()} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/BoxActions/RedirectToSingle.vue?vue&type=template&id=1858beab&scoped=true": +/*!****************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/BoxActions/RedirectToSingle.vue?vue&type=template&id=1858beab&scoped=true ***! + \****************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () { +var _obj; +var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.hasSingleEndpoint)?_c('a',{attrs:{"href":_vm.getSingleHref,"title":_vm.getSingleTitle}},[_c('span',{class:( _obj = { + 'dashicons': true + }, _obj[ 'dashicons-' + _vm.getSingleType ] = true, _obj ),attrs:{"aria-hidden":"true"}})]):_vm._e()} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/BoxActions/ShowOverflowTable.vue?vue&type=template&id=02c4a593": +/*!*****************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/BoxActions/ShowOverflowTable.vue?vue&type=template&id=02c4a593 ***! + \*****************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.showOverflowControl)?_c('cx-vui-switcher',{staticClass:"jfb-cx-vui-component",attrs:{"label":_vm.__( 'Show overflow', 'jet-form-builder' )},model:{value:(_vm.showOverflow),callback:function ($$v) {_vm.showOverflow=$$v},expression:"showOverflow"}}):_vm._e()} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/BoxActions/UndoChangesTable.vue?vue&type=template&id=091691db": +/*!****************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/BoxActions/UndoChangesTable.vue?vue&type=template&id=091691db ***! + \****************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isEditableTable)?_c('cx-vui-button',{attrs:{"disabled":! _vm.hasChanges,"button-style":"link-accent","size":"mini"},on:{"click":function($event){_vm.hasChanges = true}},scopedSlots:_vm._u([{key:"label",fn:function(){return [_c('span',{staticClass:"dashicons dashicons-undo"}),_vm._v("\n\t\t"+_vm._s(_vm.__( 'Undo', 'jet-form-builder' ))+"\n\t")]},proxy:true}],null,false,1196425)}):_vm._e()} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/ChooseAction.vue?vue&type=template&id=3f84bee4": +/*!*************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/ChooseAction.vue?vue&type=template&id=3f84bee4 ***! + \*************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"jet-fb-choose-action-wrapper"},[_c('cx-vui-select',{attrs:{"placeholder":_vm.__( 'Bulk actions', 'jet-form-builder' ),"size":"fullwidth","value":_vm.currentAction,"options-list":_vm.actionsList},on:{"input":_vm.setCurrentAction}}),_vm._v(" "),_c('cx-vui-button',{attrs:{"loading":_vm.isLoading,"disabled":_vm.isDoing,"button-style":"accent-border","size":"mini"},on:{"click":_vm.applyAction},scopedSlots:_vm._u([{key:"label",fn:function(){return [_vm._v(_vm._s(_vm.__( 'Apply', 'jet-form-builder' )))]},proxy:true}])})],1)} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/ClearFiltersButton.vue?vue&type=template&id=3c7bfee1": +/*!*******************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/ClearFiltersButton.vue?vue&type=template&id=3c7bfee1 ***! + \*******************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('cx-vui-button',{attrs:{"button-style":"link-error","size":"mini","disabled":!_vm.hasSelectedFilters},on:{"click":function($event){return _vm.dispatch('clearFiltersWithFetch' )}},scopedSlots:_vm._u([{key:"label",fn:function(){return [_c('span',{staticClass:"dashicons dashicons-no-alt"}),_vm._v("\n\t\t\t"+_vm._s(_vm.label)+"\n\t\t")]},proxy:true}])})} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/DetailsTableWithStore.vue?vue&type=template&id=6f067e5e": +/*!**********************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/DetailsTableWithStore.vue?vue&type=template&id=6f067e5e ***! + \**********************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('DetailsTable',{attrs:{"columns":_vm.columnsFromStore,"source":_vm.currentFromStore}})} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/EntriesList.vue?vue&type=template&id=1600d67d": +/*!************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/EntriesList.vue?vue&type=template&id=1600d67d ***! + \************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('table',{staticClass:"jfb-list-table"},_vm._l((_vm.columns),function(ref,column){ +var label = ref.label; +return _c('tr',{key:column,class:[ + 'jfb-list-table-row', + 'row--' + column + ]},[(label)?_c('th',{staticClass:"jfb-list-table-row--inner jfb-list-table-row--heading"},[_vm._v("\n\t\t\t"+_vm._s(label)+"\n\t\t")]):_vm._e(),_vm._v(" "),_c('td',{staticClass:"jfb-list-table-row--inner jfb-list-table-row--item"},[_c('EntryColumnList',{attrs:{"scope":_vm.scope,"list":_vm.list,"column":column}})],1)])}),0)} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/EntriesTable.vue?vue&type=template&id=7f29adff": +/*!*************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/EntriesTable.vue?vue&type=template&id=7f29adff ***! + \*************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('EntriesTableSkeleton',{attrs:{"list":_vm.list,"columns":_vm.columns,"loading":_vm.isLoading,"empty-message":_vm.emptyMessage,"columns-components":_vm.components,"footer-heading":_vm.footerHeading,"scope":_vm.scope}})} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/EntriesTableSkeleton.vue?vue&type=template&id=6d30b4ec": +/*!*********************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/EntriesTableSkeleton.vue?vue&type=template&id=6d30b4ec ***! + \*********************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:_vm.rootClasses},[_c('cx-vui-list-table',{attrs:{"is-empty":! _vm.list.length,"empty-message":_vm.emptyMessage},scopedSlots:_vm._u([{key:"heading",fn:function(){return [_c('cx-vui-list-table-heading',{attrs:{"slots":_vm.filteredColumns}},_vm._l((_vm.filteredColumns),function(column){return _c('span',{key:column,attrs:{"slot":column},slot:column},[(_vm.getHeadingComponent( column ))?[_c('keep-alive',[_c(_vm.getHeadingComponent( column ),{tag:"component",attrs:{"value":_vm.columns[ column ],"scope":_vm.scope}})],1)]:[_vm._v("\n\t\t\t\t\t\t\t"+_vm._s(_vm.columns[ column ] ? _vm.columns[ column ].label : '')+"\n\t\t\t\t\t\t")],_vm._v(" "),(_vm.columns[ column ].sortable)?_c('svg',{attrs:{"width":"10","height":"5","viewBox":"0 0 10 5","fill":"none","xmlns":"http://www.w3.org/2000/svg"}},[_c('path',{attrs:{"d":"M0.833374 0.333328L5.00004 4.5L9.16671 0.333328H0.833374Z","fill":"#7B7E81"}})]):_vm._e()],2)}),0)]},proxy:true},(_vm.footerHeading)?{key:"footer",fn:function(){return [_c('cx-vui-list-table-heading',{attrs:{"slots":_vm.filteredColumns}},_vm._l((_vm.filteredColumns),function(column){return _c('span',{key:column,attrs:{"slot":column},slot:column},[(_vm.getHeadingComponent( column ))?[_c('keep-alive',[_c(_vm.getHeadingComponent( column ),{tag:"component",attrs:{"value":_vm.columns[ column ],"scope":_vm.scope}})],1)]:[_vm._v("\n\t\t\t\t\t\t\t"+_vm._s(_vm.columns[ column ] ? _vm.columns[ column ].label : '')+"\n\t\t\t\t\t\t")],_vm._v(" "),(_vm.columns[ column ].sortable)?_c('svg',{attrs:{"width":"10","height":"5","viewBox":"0 0 10 5","fill":"none","xmlns":"http://www.w3.org/2000/svg"}},[_c('path',{attrs:{"d":"M0.833374 0.333328L5.00004 4.5L9.16671 0.333328H0.833374Z","fill":"#7B7E81"}})]):_vm._e()],2)}),0)]},proxy:true}:null,{key:"items",fn:function(){return _vm._l((_vm.list),function(entry,entryID){return _c('div',{key:entryID,class:_vm.classEntry( entryID, entry )},[_c('div',{staticClass:"list-table-item-columns"},_vm._l((_vm.filteredColumns),function(column){return _c('EntryColumnsTable',{key:'entry_' + column,attrs:{"column":column,"entry":entry,"entry-id":entryID,"scope":_vm.scope,"columns-components":_vm.columnsComponents}})}),1),_vm._v(" "),(entry.actions)?_c('div',{staticClass:"list-table-item-actions"},_vm._l((entry.actions.value),function(action){return _c('span',{key:action.value},[_c('a',{class:_vm.getActionClass( action ),attrs:{"href":_vm.getActionHref( action )},on:{"click":function($event){return _vm.onClickAction( action, entry, $event )}}},[_vm._v("\n\t\t\t\t\t\t\t\t"+_vm._s(action.label)+"\n\t\t\t\t\t\t\t")])])}),0):_vm._e()])})},proxy:true}],null,true)})],1)} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/EntryColumnList.vue?vue&type=template&id=008980d5": +/*!****************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/EntryColumnList.vue?vue&type=template&id=008980d5 ***! + \****************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',[(_vm.record.editable && _vm.isEnableEdit)?_c('div',{staticClass:"list-table-item__cell--body-value jfb-control"},[_c('keep-alive',[_c(_vm.getComponentEditControl,{tag:"component",attrs:{"options":_vm.record.control_options},model:{value:(_vm.editedCellValue),callback:function ($$v) {_vm.editedCellValue=$$v},expression:"editedCellValue"}})],1)],1):(_vm.getItemComponentColumn)?[_c(_vm.getItemComponentColumn,{tag:"component",attrs:{"value":_vm.value,"full-entry":_vm.list,"scope":_vm.scope}})]:(_vm.getItemComponentType)?[_c(_vm.getItemComponentType,{tag:"component",attrs:{"value":_vm.value,"full-entry":_vm.list,"scope":_vm.scope}})]:_c('div',{domProps:{"innerHTML":_vm._s(_vm.value)}})],2)} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/EntryColumnsTable.vue?vue&type=template&id=74775cf2": +/*!******************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/EntryColumnsTable.vue?vue&type=template&id=74775cf2 ***! + \******************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:_vm.getClasses},[_c('div',{staticClass:"list-table-item__cell--body jfb-ellipsis"},[(_vm.initial.editable && _vm.isEnableEdit)?_c('div',{staticClass:"list-table-item__cell--body-value jfb-control"},[_c('keep-alive',[_c(_vm.getComponentEditControl,{tag:"component",attrs:{"options":_vm.initial.control_options},model:{value:(_vm.editedCellValue),callback:function ($$v) {_vm.editedCellValue=$$v},expression:"editedCellValue"}})],1)],1):(_vm.getComponentColumn)?[_c(_vm.getComponentColumn,{tag:"component",attrs:{"value":_vm.value,"full-entry":_vm.entry,"entry-id":_vm.entryId,"scope":_vm.scope}})]:(_vm.getComponentType)?[_c(_vm.getComponentType,{tag:"component",attrs:{"value":_vm.value,"full-entry":_vm.entry,"entry-id":_vm.entryId,"scope":_vm.scope}})]:_c('div',{staticClass:"list-table-item__cell--body-value",domProps:{"innerHTML":_vm._s(_vm.value)}})],2),_vm._v(" "),(_vm.initial.editable && _vm.editedCellValue !== _vm.initialValue)?_c('div',{staticClass:"list-table-item__cell--actions"},[_c('span',{staticClass:"dashicons dashicons-undo",on:{"click":_vm.revertChangesColumn}})]):_vm._e()])} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/FormBuilderPage.vue?vue&type=template&id=704fbf15": +/*!****************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/FormBuilderPage.vue?vue&type=template&id=704fbf15 ***! + \****************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:{ + 'wrap': true, + 'jet-form-builder-page': true, +}},[_vm._t("heading-before"),_vm._v(" "),_c('h1',{staticClass:"wp-heading-inline"},[_vm._v("\n\t\t"+_vm._s(_vm.title)+"\n\t")]),_vm._v(" "),(_vm.$slots['heading-after'])?[_vm._t("heading-after")]:(_vm.hasGlobalActions)?[_c('PageActions')]:_vm._e(),_vm._v(" "),_c('hr',{staticClass:"wp-header-end"}),_vm._v(" "),_vm._t("default")],2)} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/PageActions.vue?vue&type=template&id=5ac5349d&scoped=true": +/*!************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/PageActions.vue?vue&type=template&id=5ac5349d&scoped=true ***! + \************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"page-actions"},_vm._l((_vm.secondaryActions),function(action){return _c('div',{key:action.slug,class:[ + 'page-actions-item', + 'action-' + action.slug ]},[(action.button)?_c('cx-vui-button',{key:("button-action-" + (action.slug)),class:[ + ("cx-vui-button--style-" + (action.button.type)) ].concat( action.button.classes ),attrs:{"button-style":action.button.style,"size":action.button.size,"url":action.button.url,"tag-name":action.button.url ? 'a' : 'button',"disabled":_vm.isDisabled( action.slug ) || _vm.isGlobalDoing,"loading":_vm.isLoading( action.slug ),"target":"_blank"},on:{"click":function($event){return _vm.globalEmit( action )}},scopedSlots:_vm._u([{key:"label",fn:function(){return [_vm._v(_vm._s(action.button.label))]},proxy:true}],null,true)}):_vm._e()],1)}),0)} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/PaymentsPage/PaymentsComponent.vue?vue&type=template&id=7d33215e": +/*!*******************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/PaymentsPage/PaymentsComponent.vue?vue&type=template&id=7d33215e ***! + \*******************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('FormBuilderPage',{attrs:{"title":_vm.__( 'JetFormBuilder Payments', 'jet-form-builder' )},scopedSlots:_vm._u([{key:"heading-after",fn:function(){return [_c('ExportPaymentsButton')]},proxy:true}])},[_vm._v(" "),_c('ActionsWithFilters',{scopedSlots:_vm._u([{key:"filters",fn:function(){return [_c('StatusFilter')]},proxy:true}])}),_vm._v(" "),_c('TablePagination'),_vm._v(" "),_c('EntriesTable'),_vm._v(" "),(_vm.$slots.default)?[_vm._t("default")]:_vm._e(),_vm._v(" "),_c('TablePagination')],2)} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/PaymentsPage/components/ExportPaymentsButton.vue?vue&type=template&id=50cc33ba": +/*!*********************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/PaymentsPage/components/ExportPaymentsButton.vue?vue&type=template&id=50cc33ba ***! + \*********************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticStyle:{"display":"inline-block"}},[_c('cx-vui-button',{attrs:{"button-style":"link-accent","size":"mini"},on:{"click":function($event){_vm.showPopup = true}},scopedSlots:_vm._u([{key:"label",fn:function(){return [_c('span',{staticClass:"dashicons dashicons-database-export"}),_vm._v("\n\t\t\t"+_vm._s(_vm.__( 'Export', 'jet-form-builder' ))+"\n\t\t")]},proxy:true}])}),_vm._v(" "),(_vm.showPopup)?_c('CxVuiPopup',{attrs:{"class-names":{ + 'export-popup': true, + 'sticky-footer': true, + }},on:{"close":function($event){_vm.showPopup = false}},scopedSlots:_vm._u([{key:"title",fn:function(){return [_vm._v(_vm._s(_vm.__( '1. Select data to export:', 'jet-form-builder' )))]},proxy:true},{key:"content",fn:function(){return [_c('RowWrapper',{attrs:{"element-id":"columns","class-names":{ + 'size--1-x-2': true, + 'padding-side-unset': true + },"state":_vm.columnsState},scopedSlots:_vm._u([{key:"label",fn:function(){return [_vm._v(_vm._s(_vm.__( 'General Columns', 'jet-form-builder' )))]},proxy:true},{key:"default",fn:function(){return [_c('CxVuiFSelect',{attrs:{"options-list":_vm.columns,"multiple":true,"value":_vm.selectedColumns},on:{"change":_vm.setColumns}})]},proxy:true},{key:"actions",fn:function(){return [_c('cx-vui-button',{attrs:{"button-style":"link-accent","size":"link","tagName":"a","disabled":_vm.columnsValues.length === _vm.selectedColumns.length},on:{"click":_vm.selectAllColumns},scopedSlots:_vm._u([{key:"label",fn:function(){return [_vm._v("\n\t\t\t\t\t\t\t"+_vm._s(_vm.__( 'Choose all', 'jet-form-builder' ))+"\n\t\t\t\t\t\t")]},proxy:true}],null,false,3825749283)}),_vm._v(" "),_c('cx-vui-button',{attrs:{"button-style":"link-error","size":"link","tagName":"a","disabled":!_vm.selectedColumns.length},on:{"click":_vm.clearAllColumns},scopedSlots:_vm._u([{key:"label",fn:function(){return [_vm._v("\n\t\t\t\t\t\t\t"+_vm._s(_vm.__( 'Clear', 'jet-form-builder' ))+"\n\t\t\t\t\t\t")]},proxy:true}],null,false,782737158)})]},proxy:true}],null,false,2802837545)}),_vm._v(" "),_c('RowWrapper',{attrs:{"element-id":"payerColumns","class-names":{ + 'size--1-x-2': true, + 'padding-side-unset': true + },"state":_vm.columnsState},scopedSlots:_vm._u([{key:"label",fn:function(){return [_vm._v(_vm._s(_vm.__( 'Payer Columns', 'jet-form-builder' )))]},proxy:true},{key:"default",fn:function(){return [_c('CxVuiFSelect',{attrs:{"options-list":_vm.payerColumns,"multiple":true,"value":_vm.selectedPayerColumns},on:{"change":_vm.setPayerColumns}})]},proxy:true},{key:"actions",fn:function(){return [_c('cx-vui-button',{attrs:{"button-style":"link-accent","size":"link","tagName":"a","disabled":_vm.payerColumnsValues.length === _vm.selectedPayerColumns.length},on:{"click":_vm.selectAllPayerColumns},scopedSlots:_vm._u([{key:"label",fn:function(){return [_vm._v("\n\t\t\t\t\t\t\t"+_vm._s(_vm.__( 'Choose all', 'jet-form-builder' ))+"\n\t\t\t\t\t\t")]},proxy:true}],null,false,3825749283)}),_vm._v(" "),_c('cx-vui-button',{attrs:{"button-style":"link-error","size":"link","tagName":"a","disabled":!_vm.selectedPayerColumns.length},on:{"click":_vm.clearAllPayerColumns},scopedSlots:_vm._u([{key:"label",fn:function(){return [_vm._v("\n\t\t\t\t\t\t\t"+_vm._s(_vm.__( 'Clear', 'jet-form-builder' ))+"\n\t\t\t\t\t\t")]},proxy:true}],null,false,782737158)})]},proxy:true}],null,false,4094018880)}),_vm._v(" "),_c('RowWrapper',{attrs:{"element-id":"shippingColumns","class-names":{ + 'size--1-x-2': true, + 'padding-side-unset': true + },"state":_vm.columnsState},scopedSlots:_vm._u([{key:"label",fn:function(){return [_vm._v(_vm._s(_vm.__( 'Shipping Columns', 'jet-form-builder' )))]},proxy:true},{key:"default",fn:function(){return [_c('CxVuiFSelect',{attrs:{"options-list":_vm.shippingColumns,"multiple":true,"value":_vm.selectedShippingColumns},on:{"change":_vm.setShippingColumns}})]},proxy:true},{key:"actions",fn:function(){return [_c('cx-vui-button',{attrs:{"button-style":"link-accent","size":"link","tagName":"a","disabled":_vm.shippingColumnsValues.length === _vm.selectedShippingColumns.length},on:{"click":_vm.selectAllShippingColumns},scopedSlots:_vm._u([{key:"label",fn:function(){return [_vm._v("\n\t\t\t\t\t\t\t"+_vm._s(_vm.__( 'Choose all', 'jet-form-builder' ))+"\n\t\t\t\t\t\t")]},proxy:true}],null,false,3825749283)}),_vm._v(" "),_c('cx-vui-button',{attrs:{"button-style":"link-error","size":"link","tagName":"a","disabled":!_vm.selectedShippingColumns.length},on:{"click":_vm.clearAllShippingColumns},scopedSlots:_vm._u([{key:"label",fn:function(){return [_vm._v("\n\t\t\t\t\t\t\t"+_vm._s(_vm.__( 'Clear', 'jet-form-builder' ))+"\n\t\t\t\t\t\t")]},proxy:true}],null,false,782737158)})]},proxy:true}],null,false,1335985645)}),_vm._v(" "),_c('h3',[_vm._v(_vm._s(_vm.__( '2. Filter payments:', 'jet-form-builder' )))]),_vm._v(" "),_c('Delimiter'),_vm._v(" "),_c('RowWrapper',{attrs:{"element-id":"status","class-names":{ + 'size--1-x-2': true, + 'padding-side-unset': true + }},scopedSlots:_vm._u([{key:"label",fn:function(){return [_vm._v(_vm._s(_vm.__( 'Status', 'jet-form-builder' )))]},proxy:true},{key:"default",fn:function(){return [_c('CxVuiSelect',{attrs:{"value":_vm.status,"class-names":{ 'fullwidth': true }},on:{"input":_vm.setStatus}},_vm._l((_vm.statusFilter.options || []),function(option){return _c('option',{domProps:{"value":option.value}},[_vm._v("\n\t\t\t\t\t\t\t"+_vm._s(option.label)+"\n\t\t\t\t\t\t")])}),0)]},proxy:true}],null,false,3912950338)})]},proxy:true},{key:"footer",fn:function(){return [_c('div',{staticClass:"footer-buttons"},[_c('cx-vui-button',{attrs:{"button-style":'accent',"size":'mini',"disabled":!_vm.canBeExported},on:{"click":_vm.startExport},scopedSlots:_vm._u([{key:"label",fn:function(){return [_vm._v(_vm._s(_vm.__( 'Export', 'jet-form-builder' )))]},proxy:true}],null,false,2420192243)}),_vm._v(" "),_c('cx-vui-button',{attrs:{"size":'mini'},on:{"click":function($event){_vm.showPopup = false}},scopedSlots:_vm._u([{key:"label",fn:function(){return [_vm._v(_vm._s(_vm.__( 'Cancel', 'jet-form-builder' )))]},proxy:true}],null,false,298029969)})],1),_vm._v(" "),_c('div',{staticClass:"footer-counter"},[_c('div',{staticClass:"footer-counter--message"},[_vm._v("\n\t\t\t\t\t"+_vm._s(_vm.countMessage)+"\n\t\t\t\t")]),_vm._v(" "),_c('cx-vui-button',{attrs:{"button-style":"link-accent","size":"link","tagName":"a","disabled":_vm.isLoading( 'count' ),"loading":_vm.isLoading( 'count' )},on:{"click":_vm.onClickUpdateCount},scopedSlots:_vm._u([{key:"label",fn:function(){return [_vm._v("\n\t\t\t\t\t\t"+_vm._s(_vm.__( 'Update', 'jet-form-builder' ))+"\n\t\t\t\t\t")]},proxy:true}],null,false,168407598)})],1)]},proxy:true}],null,false,3777172923)}):_vm._e()],1)} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/PaymentsPage/filters/StatusFilter.vue?vue&type=template&id=4f820e00": +/*!**********************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/PaymentsPage/filters/StatusFilter.vue?vue&type=template&id=4f820e00 ***! + \**********************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('CxVuiSelect',{attrs:{"value":_vm.filter.selected},on:{"input":_vm.onChangeFilter}},_vm._l((_vm.filter.options || []),function(option){return _c('option',{domProps:{"value":option.value}},[_vm._v("\n\t\t"+_vm._s(option.label)+"\n\t")])}),0)} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/PostBoxContainer.vue?vue&type=template&id=d86617d2": +/*!*****************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/PostBoxContainer.vue?vue&type=template&id=d86617d2 ***! + \*****************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"postbox-container",attrs:{"id":_vm.wrapId}},[_c('div',{class:_vm.classes,attrs:{"id":_vm.id}},[_vm._t("default")],2)])} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/PostBoxGrid.vue?vue&type=template&id=794a16a0": +/*!************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/PostBoxGrid.vue?vue&type=template&id=794a16a0 ***! + \************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{"id":"poststuff"}},[_c('div',{class:_vm.bodyClasses,attrs:{"id":"post-body"}},[(_vm.$slots.topBody)?_c('div',{attrs:{"id":"post-body-content"}},[_vm._t("topBody")],2):_vm._e(),_vm._v(" "),_vm._l((_vm.containers),function(ref){ +var wrap_id = ref.wrap_id; +var id = ref.id; +var classes = ref.classes; +var boxes = ref.boxes; +return _c('PostBoxContainer',{key:wrap_id,attrs:{"wrap-id":wrap_id,"id":id,"classes":classes}},_vm._l((boxes),function(ref){ + var slug = ref.slug; + var title = ref.title; + var list = ref.list; + var render_type = ref.render_type; if ( render_type === void 0 ) render_type = false; +return _c('PostBoxSimple',{key:slug,attrs:{"slug":slug,"title":title,"list":list,"render-type":render_type},scopedSlots:_vm._u([{key:"header-actions",fn:function(){return [_vm._t('header-actions-' + slug,null,null,{ list: list })]},proxy:true},{key:"default",fn:function(){return [_vm._t('body-' + slug,null,null,{ list: list })]},proxy:true},{key:"before",fn:function(){return [_vm._t('before-' + slug,null,null,{ list: list })]},proxy:true},{key:"after",fn:function(){return [_vm._t('after-' + slug,null,null,{ list: list })]},proxy:true},(_vm.$slots['in-header-' + slug ])?{key:"in-header",fn:function(){return [_vm._t('in-header-' + slug)]},proxy:true}:null,(_vm.$slots['in-footer-' + slug ])?{key:"in-footer",fn:function(){return [_vm._t('in-footer-' + slug)]},proxy:true}:null],null,true)})}),1)})],2)])} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/PostBoxSimple.vue?vue&type=template&id=0f34be8c": +/*!**************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/PostBoxSimple.vue?vue&type=template&id=0f34be8c ***! + \**************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"jfb-post-box",attrs:{"id":_vm.slug + '-wrapper'}},[(_vm.$slots.default)?_c('div',{staticClass:"jfb-post-box--content"},[_vm._t("default")],2):_c('div',{staticClass:"jfb-post-box--content"},[_vm._t("before"),_vm._v(" "),_c('PostBoxSkeleton',{attrs:{"title":_vm.title,"slug":_vm.slug},scopedSlots:_vm._u([{key:"header-actions",fn:function(){return [_vm._t("header-actions")]},proxy:true},{key:"default",fn:function(){return [_vm._t("in-header"),_vm._v(" "),('table' === _vm.renderType)?_c('EntriesTable',{attrs:{"scope":_vm.slug}}):('list' === _vm.renderType)?_c('EntriesList',{attrs:{"scope":_vm.slug}}):_c('div',{attrs:{"id":"misc-publishing-actions"}},_vm._l((_vm.list),function(value,name){return _c('div',{key:name,staticClass:"misc-pub-section"},[_vm._v("\n\t\t\t\t\t\t"+_vm._s(name)+": "),_c('strong',[_vm._v(_vm._s(value))])])}),0),_vm._v(" "),_vm._t("in-footer")]},proxy:true}],null,true)}),_vm._v(" "),_vm._t("after")],2)])} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/PostBoxSkeleton.vue?vue&type=template&id=07ca11b2&scoped=true": +/*!****************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/PostBoxSkeleton.vue?vue&type=template&id=07ca11b2&scoped=true ***! + \****************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"postbox",attrs:{"id":_vm.slug}},[_c('div',{staticClass:"postbox-header"},[_c('h2',{staticClass:"ui-sortable-handle"},[_vm._v(_vm._s(_vm.title))]),_vm._v(" "),(_vm.$slots['header-actions'])?_c('div',{staticClass:"handle-actions"},[_vm._t("header-actions")],2):_c('div',{staticClass:"handle-actions"},[_c('UndoChangesTable',{attrs:{"scope":_vm.slug}}),_vm._v(" "),_c('EditTableSwitcher',{attrs:{"scope":_vm.slug}}),_vm._v(" "),_c('ShowOverflowTable',{attrs:{"scope":_vm.slug}}),_vm._v(" "),_c('RedirectToSingle',{attrs:{"scope":_vm.slug}})],1)]),_vm._v(" "),_c('div',{staticClass:"postbox-inner submitbox"},[_vm._t("default"),_vm._v(" "),(_vm.$slots.actions)?_c('div',{staticClass:"major-publishing-actions"},[_vm._t("actions"),_vm._v(" "),_c('div',{staticClass:"clear"})],2):_c('PrimaryActions',{attrs:{"scope":_vm.slug}})],2)])} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/SideBarBoxes.vue?vue&type=template&id=27877b3e": +/*!*************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/SideBarBoxes.vue?vue&type=template&id=27877b3e ***! + \*************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.boxes.length)?_c('div',{staticClass:"jfb-content-sidebar"},[_vm._l((_vm.boxes),function(box,index){return [('panel' === box.type)?_c('DashboardPanel',{key:index,attrs:{"config":box},scopedSlots:_vm._u([(_vm.$slots[ 'icon-' + box.slug ])?{key:"icon",fn:function(){return [_vm._t('icon-' + box.slug)]},proxy:true}:null,(_vm.$scopedSlots['content-' + box.slug])?{key:"default",fn:function(){return [_vm._t('content-' + box.slug,null,null,box)]},proxy:true}:null],null,true)}):('banner' === box.type)?_c('DashboardBanner',{key:index,attrs:{"config":box}}):_vm._e()]})],2):_vm._e()} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/TableColumns/actions/ActionsItem.vue?vue&type=template&id=554817ff": +/*!*********************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/TableColumns/actions/ActionsItem.vue?vue&type=template&id=554817ff ***! + \*********************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"jfb-actions"},_vm._l((_vm.parsedJson),function(action,actionID){return _c('a',{key:actionID,staticClass:"jfb-dropdown-item",attrs:{"href":"javascript:void(0)"},on:{"click":function($event){return _vm.run( actionID )}}},[_vm._v("\n\t\t"+_vm._s(action.label)+"\n\t")])}),0)} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/TableColumns/choose/ChooseHead.vue?vue&type=template&id=3548b9f0&scoped=true": +/*!*******************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/TableColumns/choose/ChooseHead.vue?vue&type=template&id=3548b9f0&scoped=true ***! + \*******************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('cx-vui-checkbox',{attrs:{"options-list":[ { value: 'checked' } ],"value":_vm.chooseHeadValue,"return-type":"single","name":"jfb_record_all"},on:{"input":_vm.onClick}})} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/TableColumns/choose/ChooseItem.vue?vue&type=template&id=840cd4ba": +/*!*******************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/TableColumns/choose/ChooseItem.vue?vue&type=template&id=840cd4ba ***! + \*******************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('cx-vui-checkbox',{attrs:{"options-list":[ { value: _vm.value } ],"value":_vm.isCheckedCurrent,"return-type":"single","name":"jfb_record_row"},on:{"input":_vm.onChange}})} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/TableColumns/icon-status/IconStatus.vue?vue&type=template&id=eb79323a&scoped=true": +/*!************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/TableColumns/icon-status/IconStatus.vue?vue&type=template&id=eb79323a&scoped=true ***! + \************************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:_vm.wrapperClasses},[_c('span',{class:_vm.dashIconClass}),_vm._v(" "),(_vm.value.text)?_c('span',{staticClass:"jfb-icon-status--text"},[_vm._v(_vm._s(_vm.value.text))]):_vm._e(),_vm._v(" "),(_vm.value.help)?_c('div',{class:_vm.tooltipClasses},[_vm._v(_vm._s(_vm.value.help)+"\n\t")]):_vm._e()])} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/TableColumns/input-control/InputControl.vue?vue&type=template&id=26fb4d77": +/*!****************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/TableColumns/input-control/InputControl.vue?vue&type=template&id=26fb4d77 ***! + \****************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('input',{attrs:{"type":_vm.options.type},domProps:{"value":_vm.value},on:{"input":_vm.onInput}})} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/TableColumns/link-type/LinkType.vue?vue&type=template&id=160b62b6&scoped=true": +/*!********************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/TableColumns/link-type/LinkType.vue?vue&type=template&id=160b62b6&scoped=true ***! + \********************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () { +var _obj; +var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('a',{class:{ + 'row-title': _vm.parsedJson.primary, + 'with-flex': _vm.hasIcon, + },attrs:{"href":_vm.parsedJson.href,"target":_vm.target,"title":_vm.parsedJson.title}},[_c('span',[_vm._v(_vm._s(_vm.parsedJson.text))]),_vm._v(" "),(_vm.hasIcon)?_c('span',{class:( _obj = { + 'dashicons': true + }, _obj[ 'dashicons-' + _vm.parsedJson.type ] = true, _obj ),attrs:{"aria-hidden":"true"}}):_vm._e()])} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/TableColumns/pre/ColumnPre.vue?vue&type=template&id=40a32ca2": +/*!***************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/TableColumns/pre/ColumnPre.vue?vue&type=template&id=40a32ca2 ***! + \***************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('span',[(_vm.isShowOverflow)?_c('pre',[_vm._v(_vm._s(_vm.parsedValue))]):_c('span',[_vm._v(_vm._s(_vm.value))])])} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/TableColumns/select-control/SelectControl.vue?vue&type=template&id=5d6333a6&scoped=true": +/*!******************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/TableColumns/select-control/SelectControl.vue?vue&type=template&id=5d6333a6&scoped=true ***! + \******************************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('select',{domProps:{"value":_vm.getValue},on:{"input":_vm.onInput}},_vm._l((_vm.options.options),function(type){return _c('option',{attrs:{"disabled":type.disabled},domProps:{"value":type.value}},[_vm._v("\n\t\t"+_vm._s(_vm.label( type ))+"\n\t")])}),0)} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/TableColumns/textarea-control/TextareaControl.vue?vue&type=template&id=52c403ad": +/*!**********************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/TableColumns/textarea-control/TextareaControl.vue?vue&type=template&id=52c403ad ***! + \**********************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('textarea',{domProps:{"value":_vm.value},on:{"input":_vm.onInput}})} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/TablePagination.vue?vue&type=template&id=045acab7": +/*!****************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/TablePagination.vue?vue&type=template&id=045acab7 ***! + \****************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"jfb-pagination"},[_c('span',{staticClass:"jfb-pagination--results"},[_vm._v("\n\t\t"+_vm._s(_vm.__s( + "Showing %d - %d of %d results.", + 'jet-form-builder', + _vm.queryState.itemsFrom, + _vm.queryState.itemsTo, + _vm.queryState.total + ))+"\n\t")]),_vm._v(" "),(_vm.queryState.limit < _vm.queryState.total)?_c('cx-vui-pagination',{attrs:{"total":_vm.queryState.total,"page-size":_vm.queryState.limit,"current":_vm.queryState.currentPage,"disabled":_vm.isLoading},on:{"on-change":_vm.changePage}}):_vm._e(),_vm._v(" "),_c('div',{staticClass:"jfb-pagination--sort"},[_c('cx-vui-input',{attrs:{"label":_vm.__( 'Results per page', 'jet-form-builder' ),"value":_vm.queryState.limit,"type":"number","min":1,"max":_vm.queryState.total,"disabled":_vm.isLoading},on:{"on-input-change":_vm.changeLimit}})],1)],1)} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/VuiBoxes/DashboardBanner.vue?vue&type=template&id=1ffbb93e": +/*!*************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/VuiBoxes/DashboardBanner.vue?vue&type=template&id=1ffbb93e ***! + \*************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:_vm.wrapperClasses},[_c('div',{staticClass:"banner-frame"},[_c('div',{staticClass:"banner-inner"},[_c('div',{staticClass:"banner-label"},[_vm._v(_vm._s(_vm.config.label))]),_vm._v(" "),_c('div',{staticClass:"banner-title"},[_c('span',[_vm._v(_vm._s(_vm.config.title))])]),_vm._v(" "),_c('div',{staticClass:"banner-content"},[_vm._v(_vm._s(_vm.config.content))]),_vm._v(" "),(_vm.hasButtons)?_c('div',{staticClass:"banner-buttons"},_vm._l((_vm.config.buttons),function(button,index){return _c('cx-vui-button',{key:("button-banner-" + index),class:("cx-vui-button--style-" + (button.type)),attrs:{"button-style":button.style,"size":"mini","url":button.url,"tag-name":"a","target":"_blank"},scopedSlots:_vm._u([{key:"label",fn:function(){return [_vm._v(_vm._s(button.label))]},proxy:true}],null,true)})}),1):_vm._e()])])])} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/VuiBoxes/DashboardPanel.vue?vue&type=template&id=4ad26942": +/*!************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/VuiBoxes/DashboardPanel.vue?vue&type=template&id=4ad26942 ***! + \************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:_vm.wrapperClasses},[_c('div',{staticClass:"jet-form-builder-page__panel-header"},[_c('div',{staticClass:"panel-header-icon"},[_vm._t("icon")],2),_vm._v(" "),_c('div',{staticClass:"panel-header-content"},[_c('span',{staticClass:"panel-header-desc"},[_vm._v(_vm._s(_vm.config.description))]),_vm._v(" "),_c('div',{staticClass:"panel-header-title"},[_vm._v(_vm._s(_vm.config.title))])])]),_vm._v(" "),(_vm.$slots.default)?_c('div',{staticClass:"jet-form-builder-page__panel-content"},[_vm._t("default")],2):_vm._e()])} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../node_modules/vue-loader/lib/runtime/componentNormalizer.js": +/*!************************************************************************!*\ + !*** ../../node_modules/vue-loader/lib/runtime/componentNormalizer.js ***! + \************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ normalizeComponent) +/* harmony export */ }); +/* globals __VUE_SSR_CONTEXT__ */ + +// IMPORTANT: Do NOT use ES2015 features in this file (except for modules). +// This module is a runtime utility for cleaner component module output and will +// be included in the final webpack user bundle. + +function normalizeComponent( + scriptExports, + render, + staticRenderFns, + functionalTemplate, + injectStyles, + scopeId, + moduleIdentifier /* server only */, + shadowMode /* vue-cli only */ +) { + // Vue.extend constructor export interop + var options = + typeof scriptExports === 'function' ? scriptExports.options : scriptExports + + // render functions + if (render) { + options.render = render + options.staticRenderFns = staticRenderFns + options._compiled = true + } + + // functional template + if (functionalTemplate) { + options.functional = true + } + + // scopedId + if (scopeId) { + options._scopeId = 'data-v-' + scopeId + } + + var hook + if (moduleIdentifier) { + // server build + hook = function (context) { + // 2.3 injection + context = + context || // cached call + (this.$vnode && this.$vnode.ssrContext) || // stateful + (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional + // 2.2 with runInNewContext: true + if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') { + context = __VUE_SSR_CONTEXT__ + } + // inject component styles + if (injectStyles) { + injectStyles.call(this, context) + } + // register component module identifier for async chunk inferrence + if (context && context._registeredComponents) { + context._registeredComponents.add(moduleIdentifier) + } + } + // used by ssr in case component is cached and beforeCreate + // never gets called + options._ssrRegister = hook + } else if (injectStyles) { + hook = shadowMode + ? function () { + injectStyles.call( + this, + (options.functional ? this.parent : this).$root.$options.shadowRoot + ) + } + : injectStyles + } + + if (hook) { + if (options.functional) { + // for template-only hot-reload because in that case the render fn doesn't + // go through the normalizer + options._injectStyles = hook + // register for functional component in vue file + var originalRender = options.render + options.render = function renderWithStyleInjection(h, context) { + hook.call(context) + return originalRender(h, context) + } + } else { + // inject component registration as beforeCreate hook + var existing = options.beforeCreate + options.beforeCreate = existing ? [].concat(existing, hook) : [hook] + } + } + + return { + exports: scriptExports, + options: options + } +} + + +/***/ }), + +/***/ "../../node_modules/vue-style-loader/index.js!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/ActionsWithFilters.vue?vue&type=style&index=0&id=34183439&scoped=true&lang=scss": +/*!*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../node_modules/vue-style-loader/index.js!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin-vuex-package/components/ActionsWithFilters.vue?vue&type=style&index=0&id=34183439&scoped=true&lang=scss ***! + \*************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((module, __unused_webpack_exports, __webpack_require__) => { + +// style-loader: Adds some css to the DOM by adding a }\n\t\t\t\t{ ! isEmpty( variables ) &&
\n\t\t\t\t\t\n\t\t\t\t
}\n\t\t\t\t{ isEmpty( variables ) && }\n\t\t\t\t\n\t\t\t\n\t\t);\n\t};\n}, 'withStylesControls' );\n","module.exports = window[\"wp\"][\"blockEditor\"];","module.exports = window[\"wp\"][\"components\"];","module.exports = window[\"wp\"][\"compose\"];","module.exports = window[\"wp\"][\"data\"];","module.exports = window[\"wp\"][\"element\"];","module.exports = window[\"wp\"][\"hooks\"];","module.exports = window[\"ReactJSXRuntime\"];","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","import './editor.scss';\nimport { addFilter } from '@wordpress/hooks';\nimport { withStylesControls } from './hoc-wrappers/with-styles-controls';\nimport { withBlockUniqueClass, generateUniqueClassName } from './hoc-wrappers/with-block-class';\n\nclass CrocoBlockStyleEditor {\n\n\tinit() {\n\n\t\tthis.blocks = window?.crocoStyleEditorData?.blocks_supports || {};\n\t\tthis.supportName = window.crocoStyleEditorData.support_name;\n\t\tthis.usedClasses = {};\n\n\t\taddFilter(\n\t\t\t'blocks.registerBlockType',\n\t\t\t'crocoblock-style-manager/enable-block-support',\n\t\t\tthis.registerBlock.bind( this )\n\t\t);\n\n\t\taddFilter(\n\t\t\t'editor.BlockEdit',\n\t\t\t'crocoblock-style-manager/enable-block-support',\n\t\t\twithStylesControls\n\t\t);\n\n\t\taddFilter(\n\t\t\t'editor.BlockListBlock',\n\t\t\t'crocoblock-style-manager/with-crocoblock-editor-class',\n\t\t\twithBlockUniqueClass\n\t\t);\n\t}\n\n\tclassIsUsed( className, clientId ) {\n\n\t\tif ( ! className || ! clientId ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tif ( this.usedClasses[ className ] ) {\n\t\t\tif ( this.usedClasses[ className ] === clientId ) {\n\t\t\t\t// It's the same clientId, so we can use this class\n\t\t\t\treturn false;\n\t\t\t} else {\n\t\t\t\t// The class is already used by another block\n\t\t\t\treturn true;\n\t\t\t}\n\t\t} else {\n\t\t\t// The class is not used yet, so we can use it\n\t\t\tthis.usedClasses[ className ] = clientId;\n\t\t\treturn false;\n\t\t}\n\t}\n\n\tgetBlockControls( blockName ) {\n\t\treturn this.blocks[ blockName ] || false;\n\t}\n\n\tregisterBlock( settings, name ) {\n\n\t\tif ( ! this.getBlockControls( name ) ) {\n\t\t\treturn settings;\n\t\t}\n\n\t\tconst supports = settings.supports || {};\n\t\tsupports[ this.supportName ] = true;\n\n\t\tconst attributes = settings.attributes || {};\n\n\t\tif ( ! attributes[ this.supportName ] ) {\n\t\t\tattributes[ this.supportName ] = {\n\t\t\t\ttype: 'object',\n\t\t\t\tdefault: {\n\t\t\t\t\t_uniqueClassName: generateUniqueClassName(),\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\t...settings,\n\t\t\tsupports: supports,\n\t\t\tattributes: attributes,\n\t\t};\n\t}\n}\n\nwindow.crocoBlockStyleEditor = new CrocoBlockStyleEditor();\nwindow.crocoBlockStyleEditor.init();"],"names":["Popover","Button","jsx","_jsx","jsxs","_jsxs","ControlsPopover","children","isOpen","onClose","label","anchor","closeIcon","xmlns","viewBox","width","height","focusable","d","className","placement","shouldCloseOnClickOutside","noArrow","offset","onClick","icon","ControlsTabsNavigation","props","tabClasses","tabId","activeTab","tabs","map","tab","id","onTabChange","title","useState","ControlComponent","ControlsTabs","setActiveTab","control","activeTabContent","activeTabControl","find","Fragment","_Fragment","PopoverContainer","trigger","popoverAnchor","setPopoverAnchor","showPopover","setShowPopover","ref","ControlText","ControlChoose","ControlBorder","ControlColor","ControlTypography","ControlDimensions","ControlRange","useSelect","getBreakpointsHierarchy","Tooltip","attributes","setAttributes","supportName","window","crocoStyleEditorData","support_name","prefixedName","name","toLowerCase","device","select","editPost","previewDevice","__experimentalGetPreviewDeviceType","devicesHierarchy","defaultValue","handleChange","value","setStyleAttr","getResponsiveValue","attr","currentDeviceIndex","indexOf","prevDeviceIndex","previousDevice","usageMarker","isUsedForCurrentDevice","tooltipText","text","delay","newStyles","renderControl","controlProps","type","PanelBody","hasChildren","ControlSection","section","initialOpen","InspectorControls","getBlockControls","ControlStack","blockControls","group","BorderBoxControl","__experimentalBorderRadiusControl","BorderRadiusControl","isObject","colorsList","wp","data","getSettings","colors","currentValue","updateValue","property","newValue","newBorderValue","curretSubValue","border","onChange","help","enableStyle","__experimentalIsRenderedInSidebar","__next40pxDefaultSize","__nextHasNoMarginBottom","values","radius","__experimentalToggleGroupControl","ToggleGroupControl","__experimentalToggleGroupControlOption","ToggleGroupControlOption","__experimentalToggleGroupControlOptionIcon","ToggleGroupControlOptionIcon","Dashicon","controlValue","undefined","options","Object","keys","isBlock","entries","optionValue","optionData","includes","replace","ColorPicker","ColorIndicator","BaseControl","Flex","FlexItem","popoverTrigger","colorValue","color","enableAlpha","justify","align","direction","wrap","gap","slug","BoxControl","RangeControl","__experimentalHStack","HStack","__experimentalUnitControl","UnitControl","setCurrentValue","getDefaultUnit","units","length","getCurrentUnit","match","addUnits","currentUnit","result","withoutUnits","parseFloat","allowedUnits","unit","push","default","getCurrentUnitMin","u","intervals","min","getCurrentUnitMax","max","placeholder","disabled","alignment","style","flex","withInputField","TextControl","SelectControl","__experimentalFontFamilyControl","FontFamilyControl","__experimentalTextDecorationControl","TextDecorationControl","__experimentalTextTransformControl","TextTransformControl","useSettings","editIcon","blockLevelFontFamilies","fontFamilies","fontWeights","fontStyle","fontsType","font","fontFamily","updateTypography","key","unitsList","a11yLabel","step","class","family","size","allowEmpty","lineHeight","weight","transform","decoration","letterSpacing","BaseField","getType","constructor","uniqueClassName","rawValue","getSelectorMacros","wrapper","parseSelector","selector","macros","replaceData","getParsedProps","css","getParsedValue","string","p1","cssVarValueFormat","parseVariable","variable","prefix","fullName","full_name","suffix","parsedValues","Border","parseBorderValue","global","getBorderCSS","propsMap","Color","Dimensions","top","right","bottom","left","Typography","Range","lineheight","lh_unit","letterspacing","ls_unit","s_unit","Fields","getBreakpoints","withMediaQuery","Generator","blockName","_uniqueClassName","cssVariables","responsiveCSS","controlHandlers","getControlHandler","controlType","getCSS","crocoBlockStyleEditor","blocks","generateControlStyles","mediaQueryCSS","styles","variables","generateResponsiveStyles","controlID","cssSelectors","ControlHandler","controlInstance","selectorStyles","generateResponsiveVariables","cssVar","css_selector","css_var","childControl","breakpoints","__desktop","minWidth","__tablet","maxWidth","__mobile","mediaQuery","mediaQueryString","stack","Array","isArray","isEmpty","trim","createHigherOrderComponent","useEffect","withBlockUniqueClass","BlockListBlockComponent","clientId","blockType","getBlockType","supports","crocoblock_styles","uniqueClass","classIsUsed","newUniqueClass","generateUniqueClassName","chars","i","charAt","Math","floor","random","class_prefix","withStylesControls","BlockEdit","console","log","cssGenerator","addFilter","CrocoBlockStyleEditor","init","blocks_supports","usedClasses","registerBlock","bind","settings"],"sourceRoot":""} \ No newline at end of file diff --git a/modules/jet-style/framework/blocks-style-manager/assets/src/components/common/controls-popover.jsx b/modules/jet-style/framework/blocks-style-manager/assets/src/components/common/controls-popover.jsx new file mode 100644 index 000000000..d91620b24 --- /dev/null +++ b/modules/jet-style/framework/blocks-style-manager/assets/src/components/common/controls-popover.jsx @@ -0,0 +1,40 @@ +import { Popover, Button } from '@wordpress/components'; + +const ControlsPopover = ( { children, isOpen, onClose, label, anchor } ) => { + + if ( ! isOpen ) { + return null; + } + + const closeIcon = ( + + ); + + return ( + +
+
+ { label} + +
+
+ { children } +
+
+
+ ); +}; + +export default ControlsPopover; diff --git a/modules/jet-style/framework/blocks-style-manager/assets/src/components/common/controls-tabs-navigation.jsx b/modules/jet-style/framework/blocks-style-manager/assets/src/components/common/controls-tabs-navigation.jsx new file mode 100644 index 000000000..dd8a871f9 --- /dev/null +++ b/modules/jet-style/framework/blocks-style-manager/assets/src/components/common/controls-tabs-navigation.jsx @@ -0,0 +1,22 @@ +const ControlsTabsNavigation = ( props ) => { + + const tabClasses = ( tabId ) => { + return `crocoblock-style-manager__controls-tabs-button ${ props.activeTab === tabId ? 'is-active' : '' }`; + } + + return ( +
+ { props.tabs.map( ( tab ) => ( + + ) ) } +
+ ); +} + +export default ControlsTabsNavigation; \ No newline at end of file diff --git a/modules/jet-style/framework/blocks-style-manager/assets/src/components/common/controls-tabs.jsx b/modules/jet-style/framework/blocks-style-manager/assets/src/components/common/controls-tabs.jsx new file mode 100644 index 000000000..5e0d1c2c3 --- /dev/null +++ b/modules/jet-style/framework/blocks-style-manager/assets/src/components/common/controls-tabs.jsx @@ -0,0 +1,41 @@ +import { useState } from '@wordpress/element'; +import ControlsTabsNavigation from './controls-tabs-navigation'; +import ControlComponent from '../control-component'; + +const ControlsTabs = ( props ) => { + + const [ activeTab, setActiveTab ] = useState( props.control.children[ 0 ].id ); + + const activeTabContent = () => { + const activeTabControl = props.control.children.find( ( tab ) => tab.id === activeTab ); + + if ( ! activeTabControl || ! activeTabControl.children ) { + return null; + } + + return activeTabControl.children.map( ( control ) => { + return ( + + ); + } ); + } + + return ( +
+ +
+ { activeTabContent() } +
+
+ ); +} + +export default ControlsTabs; \ No newline at end of file diff --git a/modules/jet-style/framework/blocks-style-manager/assets/src/components/common/popover-container.jsx b/modules/jet-style/framework/blocks-style-manager/assets/src/components/common/popover-container.jsx new file mode 100644 index 000000000..087150194 --- /dev/null +++ b/modules/jet-style/framework/blocks-style-manager/assets/src/components/common/popover-container.jsx @@ -0,0 +1,33 @@ +import { useState } from '@wordpress/element'; +import ControlsPopover from './controls-popover'; + +const PopoverContainer = ( { children, trigger, label } ) => { + + const [ popoverAnchor, setPopoverAnchor ] = useState( null ); + const [ showPopover, setShowPopover ] = useState( false ); + + return ( + <> +
{ + setShowPopover( ! showPopover ); + } } + > + { trigger } +
+ { + setShowPopover( false ); + } } + > + { children } + + + ); +} + +export default PopoverContainer; \ No newline at end of file diff --git a/modules/jet-style/framework/blocks-style-manager/assets/src/components/control-component.jsx b/modules/jet-style/framework/blocks-style-manager/assets/src/components/control-component.jsx new file mode 100644 index 000000000..2439d705d --- /dev/null +++ b/modules/jet-style/framework/blocks-style-manager/assets/src/components/control-component.jsx @@ -0,0 +1,196 @@ +import ControlText from './controls/text'; +import ControlChoose from './controls/choose'; +import ControlBorder from './controls/border'; +import ControlColor from './controls/color'; +import ControlTypography from './controls/typography'; +import ControlDimensions from './controls/dimensions'; +import ControlRange from './controls/range'; +import ControlsTabs from './common/controls-tabs'; + +import { useSelect } from '@wordpress/data'; +import { getBreakpointsHierarchy } from '../helpers/breakpoints'; +import { Tooltip } from '@wordpress/components'; + +/** + * Renders control depending on it's type and attach attributes handlers. + */ +const ControlComponent = ( { control, props } ) => { + + const { attributes, setAttributes } = props; + const supportName = window.crocoStyleEditorData.support_name; + + const prefixedName = ( name ) => { + return `__${ name.toLowerCase() }` + } + + const device = useSelect( + ( select ) => { + const editPost = select( 'core/edit-post' ); + let previewDevice = 'Desktop'; + + if ( editPost && typeof editPost.__experimentalGetPreviewDeviceType === 'function' ) { + previewDevice = editPost.__experimentalGetPreviewDeviceType(); + } + + return prefixedName( previewDevice ); + }, [] + ); + + const devicesHierarchy = getBreakpointsHierarchy(); + + // Check if the control has a value in the attributes + if ( ! attributes[ supportName ]?.[ control.id ] ) { + attributes[ supportName ][ control.id ] = control.defaultValue; + } + + const handleChange = ( value ) => { + setStyleAttr( control.id, value ); + }; + + const getResponsiveValue = ( attr ) => { + if ( '__desktop' === device ) { + return attributes[ supportName ][ attr ]; + } else if ( attributes[ supportName ][ device ]?.[ attr ] ) { + return attributes[ supportName ][ device ][ attr ]; + } else { + + // If the value is not set for the current device - get previous device value + const currentDeviceIndex = devicesHierarchy.indexOf( device ); + const prevDeviceIndex = currentDeviceIndex - 1; + const previousDevice = devicesHierarchy[ prevDeviceIndex ]; + + if ( prevDeviceIndex + && previousDevice + && attributes[ supportName ][ previousDevice ]?.[ attr ] + ) { + return attributes[ supportName ][ previousDevice ][ attr ]; + } + + // If no previous device value - return desktop value + return attributes[ supportName ][ attr ]; + } + }; + + const usageMarker = () => { + + const value = getResponsiveValue( control.id ); + + if ( ! value ) { + return null; + } + + let isUsedForCurrentDevice = false; + let tooltipText = 'Is inherited from the previous breakpoints'; + + // Check if the value is set for the current device + if ( '__desktop' === device && attributes[ supportName ][ control.id ] ) { + isUsedForCurrentDevice = true; + tooltipText = 'Explicitly set for the current device'; + } else if ( attributes[ supportName ]?.[ device ]?.[ control.id ] ) { + isUsedForCurrentDevice = true; + tooltipText = 'Explicitly set for the current device'; + } + + return ( + +
+
+ ); + } + + const setStyleAttr = ( attr, value ) => { + + let newStyles = {}; + + if ( '__desktop' === device ) { + newStyles = { + ...attributes[ supportName ], + [ attr ]: value, + }; + } else { + newStyles = { + ...attributes[ supportName ], + [ device ]: { + ...attributes[ supportName ][ device ], + [ attr ]: value, + }, + }; + } + + setAttributes( { + [ supportName ]: newStyles, + } ); + }; + + const renderControl = () => { + + const controlProps = { + control: control, + value: getResponsiveValue( control.id ), + handleChange: handleChange, + }; + + switch ( control.type ) { + case 'text': + case 'input': + return ( + + ); + case 'color-picker': + return ( + + ); + case 'toggle': + return ( + <> + ); + case 'range': + return ( + + ); + case 'choose': + return ( + + ); + case 'dimensions': + return ( + + ); + case 'border': + return ( + + ); + case 'typography': + return ( + + ); + case 'select': + return ( + <> + ); + case 'tabs': + return ( + + ); + default: + return null; + } + }; + + return ( +
+ { usageMarker() } + { renderControl() } +
+ ); +}; + +export default ControlComponent; \ No newline at end of file diff --git a/modules/jet-style/framework/blocks-style-manager/assets/src/components/control-section.jsx b/modules/jet-style/framework/blocks-style-manager/assets/src/components/control-section.jsx new file mode 100644 index 000000000..fd9a4e50e --- /dev/null +++ b/modules/jet-style/framework/blocks-style-manager/assets/src/components/control-section.jsx @@ -0,0 +1,26 @@ +import { PanelBody } from '@wordpress/components'; +import { hasChildren } from '../helpers/utils'; +import ControlComponent from './control-component'; + +const ControlSection = ( { section, props } ) => { + + return ( + + { hasChildren( section ) && section.children.map( ( control ) => { + return ( + + ); + } ) } + + ); +}; + +export default ControlSection; \ No newline at end of file diff --git a/modules/jet-style/framework/blocks-style-manager/assets/src/components/control-stack.jsx b/modules/jet-style/framework/blocks-style-manager/assets/src/components/control-stack.jsx new file mode 100644 index 000000000..39d9c2cb7 --- /dev/null +++ b/modules/jet-style/framework/blocks-style-manager/assets/src/components/control-stack.jsx @@ -0,0 +1,24 @@ +import { InspectorControls } from '@wordpress/block-editor'; +import { getBlockControls } from '../helpers/utils'; +import ControlSection from './control-section'; + +const ControlStack = ( props ) => { + + const blockControls = getBlockControls( props.name ); + + return ( + + { blockControls.map( ( control ) => { + return ( + + ); + } ) } + + ); +}; + +export default ControlStack; \ No newline at end of file diff --git a/modules/jet-style/framework/blocks-style-manager/assets/src/components/controls/border.jsx b/modules/jet-style/framework/blocks-style-manager/assets/src/components/controls/border.jsx new file mode 100644 index 000000000..ec0d7652c --- /dev/null +++ b/modules/jet-style/framework/blocks-style-manager/assets/src/components/controls/border.jsx @@ -0,0 +1,58 @@ +import { BorderBoxControl } from '@wordpress/components'; +import { __experimentalBorderRadiusControl as BorderRadiusControl } from '@wordpress/block-editor'; +import { isObject } from '../../helpers/utils'; + +const ControlBorder = ( { control, value, handleChange } ) => { + + const colorsList = wp.data.select( 'core/block-editor' ).getSettings().colors; + const currentValue = value || {}; + + const updateValue = ( property, newValue ) => { + + const newBorderValue = { + ...currentValue, + } + + if ( isObject( newValue ) ) { + const curretSubValue = currentValue[ property ] || {}; + + newBorderValue[ property ] = { + ...curretSubValue, + ...newValue + }; + } else { + newBorderValue[ property ] = newValue; + } + + handleChange( newBorderValue ); + } + + return ( + <> + updateValue( 'border', newValue ) } + className="crocoblock-style-manager__border-control crocoblock-style-manager__with-spacing" + help={ control.help } + colors={ colorsList } + enableStyle={ true } + __experimentalIsRenderedInSidebar={ true } + __next40pxDefaultSize + __nextHasNoMarginBottom + /> + updateValue( 'radius', newValue ) } + className="crocoblock-style-manager__border-radius-control" + __experimentalIsRenderedInSidebar={ true } + __next40pxDefaultSize + __nextHasNoMarginBottom + /> + + ); +} + +export default ControlBorder; \ No newline at end of file diff --git a/modules/jet-style/framework/blocks-style-manager/assets/src/components/controls/choose.jsx b/modules/jet-style/framework/blocks-style-manager/assets/src/components/controls/choose.jsx new file mode 100644 index 000000000..e197d23ea --- /dev/null +++ b/modules/jet-style/framework/blocks-style-manager/assets/src/components/controls/choose.jsx @@ -0,0 +1,59 @@ +import { + __experimentalToggleGroupControl as ToggleGroupControl, + __experimentalToggleGroupControlOption as ToggleGroupControlOption, + __experimentalToggleGroupControlOptionIcon as ToggleGroupControlOptionIcon, + Dashicon, +} from '@wordpress/components'; + +const ControlChoose = ( { control, value, handleChange } ) => { + + let controlValue = value; + + if ( undefined === controlValue && control.options ) { + // If the value is undefined, set it to the first option + controlValue = Object.keys( control.options )[ 0 ]; + } + + return ( + + { control.options && Object.entries( control.options ).map( ( [ optionValue, optionData ] ) => { + + var icon = optionData.icon || false; + + if ( icon ) { + if ( icon.includes( 'dashicons-' ) ) { + icon = icon.replace( 'dashicons-', '' ); + } + + icon = ; + } + + if ( icon ) { + return ( ); + } else { + return ( ); + } + + } ) } + + ); +} + +export default ControlChoose; \ No newline at end of file diff --git a/modules/jet-style/framework/blocks-style-manager/assets/src/components/controls/color.jsx b/modules/jet-style/framework/blocks-style-manager/assets/src/components/controls/color.jsx new file mode 100644 index 000000000..eb8079881 --- /dev/null +++ b/modules/jet-style/framework/blocks-style-manager/assets/src/components/controls/color.jsx @@ -0,0 +1,77 @@ +import { + ColorPicker, + ColorIndicator, + BaseControl, + Flex, + FlexItem, +} from '@wordpress/components'; +import PopoverContainer from '../common/popover-container'; + +const ControlColor = ( { control, value, handleChange } ) => { + + // Get color palette from the global WP data store + const colorsList = wp.data.select( 'core/block-editor' ).getSettings().colors; + + const popoverTrigger = ( + +
+ + { value } +
+
+ ); + + return ( + + { + handleChange( newValue ); + } } + color={ value } + enableAlpha={ true } + /> + + { colorsList.map( ( color ) => { + return ( + + { + handleChange( color.color ); + } } + className={ { + 'crocoblock-style-manager__color-palette-item-indicator': true, + 'crocoblock-style-manager__color-palette-item-indicator--active': color.color === value, + } } + /> + + ); + } ) } + + + ); +} + +export default ControlColor; \ No newline at end of file diff --git a/modules/jet-style/framework/blocks-style-manager/assets/src/components/controls/dimensions.jsx b/modules/jet-style/framework/blocks-style-manager/assets/src/components/controls/dimensions.jsx new file mode 100644 index 000000000..41a519ae9 --- /dev/null +++ b/modules/jet-style/framework/blocks-style-manager/assets/src/components/controls/dimensions.jsx @@ -0,0 +1,20 @@ +import { BoxControl } from '@wordpress/components'; +import { isObject } from '../../helpers/utils'; + +const ControlDimensions = ( { control, value, handleChange } ) => { + + return ( + handleChange( newValue ) } + className="crocoblock-style-manager__dimensions-control" + __experimentalIsRenderedInSidebar={ true } + __next40pxDefaultSize + __nextHasNoMarginBottom + /> + ); +} + +export default ControlDimensions; \ No newline at end of file diff --git a/modules/jet-style/framework/blocks-style-manager/assets/src/components/controls/range.jsx b/modules/jet-style/framework/blocks-style-manager/assets/src/components/controls/range.jsx new file mode 100644 index 000000000..8d5a2faec --- /dev/null +++ b/modules/jet-style/framework/blocks-style-manager/assets/src/components/controls/range.jsx @@ -0,0 +1,168 @@ +import { + BaseControl, + RangeControl, + __experimentalHStack as HStack, + __experimentalUnitControl as UnitControl +} from '@wordpress/components'; +import { useState } from '@wordpress/element'; + +/** + * Allowed units format: + * [ + * { value: 'px', intervals: { step: 1, min: 1, max: 1000 } }, + * { value: '%', intervals: { step: 1, min: 1, max: 100 } }, + * { value: 'vw', intervals: { step: 1, min: 1, max: 100 } }, + * ] + */ +const ControlRange = ( { control, value, handleChange } ) => { + + const [ currentValue, setCurrentValue ] = useState( value ); + + const getDefaultUnit = () => { + // Return the first unit from the allowed units or 'px' if no units are specified + return control.units && control.units.length > 0 ? control.units[ 0 ].value : ''; + } + + const getCurrentUnit = () => { + + if ( currentValue ) { + const match = currentValue.match( /[a-zA-Z%]+/ ); + if ( match && match.length > 0 ) { + return match[ 0 ]; + } + } + + return getDefaultUnit(); + } + + const addUnits = ( value ) => { + + // Get current unit from current value + const currentUnit = getCurrentUnit(); + const result = currentUnit ? `${ value }${ currentUnit }` : value; + + return result; + } + + const withoutUnits = ( value ) => { + // Remove units from the value + return value ? parseFloat( value ) : 0; + } + + const allowedUnits = () => { + + // Return allowed units list in the format required by UnitControl + const units = []; + + if ( control.units && control.units.length > 0 ) { + for ( const unit of control.units ) { + units.push( { + value: unit.value, + label: unit.label || unit.value, + default: unit.default || 0, + } ); + } + } + + return units; + } + + const getCurrentUnitMin = () => { + // Get the minimum value for the current unit + const currentUnit = getCurrentUnit(); + const unit = control.units.find( ( u ) => u.value === currentUnit ); + + return unit && unit.intervals ? unit.intervals.min : 0; + } + + + const getCurrentUnitMax = () => { + // Get the maximum value for the current unit + const currentUnit = getCurrentUnit(); + const unit = control.units.find( ( u ) => u.value === currentUnit ); + + return unit && unit.intervals ? unit.intervals.max : 100; + } + + // Return simple RangeControl if no units are specified + if ( ! control.units ) { + + const min = control.min || 0; + const max = control.max || 100; + + return ( + { + setCurrentValue( newValue ); + handleChange( newValue ); + } } + placeholder={ control.placeholder } + className="crocoblock-style-manager__text-control" + help={ control.help } + min={ min } + max={ max } + disabled={ control.disabled } + __nextHasNoMarginBottom + __next40pxDefaultSize + /> + ); + } + + // Return RangeControl with units if specified + return ( + + +
+ { + setCurrentValue( addUnits( newValue ) ); + handleChange( addUnits( newValue ) ); + } } + placeholder={ control.placeholder } + className="crocoblock-style-manager__text-control" + withInputField={ false } + min={ getCurrentUnitMin() } + max={ getCurrentUnitMax() } + __nextHasNoMarginBottom + __next40pxDefaultSize + /> +
+
+ { + handleChange( newValue ); + setCurrentValue( newValue ); + } } + units={ allowedUnits() } + className="crocoblock-style-manager__unit-control" + __nextHasNoMarginBottom + __next40pxDefaultSize + /> +
+
+
+ ); +} + +export default ControlRange; \ No newline at end of file diff --git a/modules/jet-style/framework/blocks-style-manager/assets/src/components/controls/text.jsx b/modules/jet-style/framework/blocks-style-manager/assets/src/components/controls/text.jsx new file mode 100644 index 000000000..20bf97b95 --- /dev/null +++ b/modules/jet-style/framework/blocks-style-manager/assets/src/components/controls/text.jsx @@ -0,0 +1,20 @@ +import { TextControl } from '@wordpress/components'; + +const ControlText = ( { control, value, handleChange } ) => { + + return ( + handleChange( newValue ) } + placeholder={ control.placeholder } + className="crocoblock-style-manager__text-control" + help={ control.help } + disabled={ control.disabled } + __nextHasNoMarginBottom + __next40pxDefaultSize + /> + ); +} + +export default ControlText; \ No newline at end of file diff --git a/modules/jet-style/framework/blocks-style-manager/assets/src/components/controls/typography.jsx b/modules/jet-style/framework/blocks-style-manager/assets/src/components/controls/typography.jsx new file mode 100644 index 000000000..51f1e4c9f --- /dev/null +++ b/modules/jet-style/framework/blocks-style-manager/assets/src/components/controls/typography.jsx @@ -0,0 +1,274 @@ +import { + BaseControl, + SelectControl, + __experimentalUnitControl as UnitControl, +} from '@wordpress/components'; +import { + __experimentalFontFamilyControl as FontFamilyControl, + __experimentalTextDecorationControl as TextDecorationControl, + __experimentalTextTransformControl as TextTransformControl, +} from '@wordpress/block-editor'; +import { useSettings } from '@wordpress/block-editor'; +import PopoverContainer from '../common/popover-container'; + +const ControlTypography = ( { control, value, handleChange } ) => { + + const editIcon = ( + + ); + + const [ blockLevelFontFamilies ] = useSettings( 'typography.fontFamilies' ); + const fontFamilies = [ { + label: 'Default', + value: '' + } ]; + + const fontWeights = [ + { + label: 'Default', + value: '' + }, + { + label: 'Thin 100', + value: '100' + }, + { + label: 'Extra Light 200', + value: '200' + }, + { + label: 'Light 300', + value: '300' + }, + { + label: 'Regular 400', + value: '400' + }, + { + label: 'Medium 500', + value: '500' + }, + { + label: 'Semi Bold 600', + value: '600' + }, + { + label: 'Bold 700', + value: '700' + }, + { + label: 'Extra Bold 800', + value: '800' + }, + { + label: 'Black 900', + value: '900' + } + ]; + + const fontStyle = [ + { + label: 'Default', + value: '', + }, + { + label: 'Normal', + value: 'normal', + }, + { + label: 'Italic', + value: 'italic', + }, + { + label: 'Oblique', + value: 'oblique', + } + ]; + + for ( const fontsType in blockLevelFontFamilies ) { + for ( const font of blockLevelFontFamilies[ fontsType ] ) { + //fontFamilies.push( font ); + fontFamilies.push( { + label: font.name, + value: font.fontFamily + } ); + } + } + + const currentValue = value || {}; + const updateTypography = ( key, value ) => { + + const newValue = { + ...currentValue, + [ key ]: value, + }; + + handleChange( newValue ); + }; + + const unitsList = [ + { + a11yLabel: 'Pixels (px)', + label: 'px', + step: 1, + value: 'px' + }, + { + a11yLabel: 'Ems (em)', + label: 'em', + step: 0.1, + value: 'em' + }, + { + a11yLabel: 'Percent (%)', + label: '%', + step: 1, + value: '%' + }, + { + a11yLabel: 'Rems (rem)', + label: 'rem', + step: 0.1, + value: 'rem' + }, + ]; + + const popoverTrigger = ( + +
+ { editIcon } +
+
+ ); + + return ( + +
+ { + updateTypography( 'family', newValue ); + }} + options={ fontFamilies } + className="crocoblock-style-manager__popover-control" + __next40pxDefaultSize + __nextHasNoMarginBottom + /> +
+ { + updateTypography( 'size', newValue ); + }} + units={ unitsList } + allowEmpty={ true } + className="crocoblock-style-manager__popover-control w-50" + /> + { + updateTypography( 'lineHeight', newValue ); + }} + units={ unitsList } + allowEmpty={ true } + className="crocoblock-style-manager__popover-control w-50" + /> +
+
+
+ { + updateTypography( 'weight', newValue ); + }} + options={ fontWeights } + className="crocoblock-style-manager__popover-control" + __next40pxDefaultSize + __nextHasNoMarginBottom + /> +
+
+ { + updateTypography( 'style', newValue ); + }} + options={ fontStyle } + className="crocoblock-style-manager__popover-control" + __next40pxDefaultSize + __nextHasNoMarginBottom + /> +
+
+
+
+ { + updateTypography( 'transform', newValue ); + }} + className="crocoblock-style-manager__popover-control" + __next40pxDefaultSize + __nextHasNoMarginBottom + /> +
+
+ { + updateTypography( 'decoration', newValue ); + }} + className="crocoblock-style-manager__popover-control" + __next40pxDefaultSize + __nextHasNoMarginBottom + /> +
+
+ { + updateTypography( 'letterSpacing', newValue ); + }} + units={ unitsList } + allowEmpty={ true } + className="crocoblock-style-manager__popover-control" + /> +
+
+ ); +} + +/* ++ {{SIZE}}{{S_UNIT}} ++ {{LINEHEIGHT}}{{LH_UNIT}} ++ {{WEIGHT}} +{{TRANSFORM}} +{{STYLE}} +{{DECORATION}} ++ {{LETTERSPACING}}{{LS_UNIT}} +*/ + +export default ControlTypography; \ No newline at end of file diff --git a/modules/jet-style/framework/blocks-style-manager/assets/src/css-engine/fields/base-field.js b/modules/jet-style/framework/blocks-style-manager/assets/src/css-engine/fields/base-field.js new file mode 100644 index 000000000..3cd23b5de --- /dev/null +++ b/modules/jet-style/framework/blocks-style-manager/assets/src/css-engine/fields/base-field.js @@ -0,0 +1,94 @@ +export default class BaseField { + + static getType() { + return 'base-field'; + } + + constructor( uniqueClassName, rawValue ) { + this.uniqueClassName = uniqueClassName; + this.rawValue = rawValue; + } + + getSelectorMacros() { + return { + wrapper: '.' + this.uniqueClassName + }; + } + + parseSelector( selector, props ) { + + const macros = this.getSelectorMacros(); + + selector = this.replaceData( selector, macros ); + props = this.getParsedProps( props ); + + let css = ` ${ selector } { ${ props } }`; + + return css; + } + + getParsedProps( props ) { + const values = this.getParsedValue(); + return this.replaceData( props, values ); + } + + /** + * Replace in the give string macros with an actual values from the data. + * + * Expected formats: + * - string: {{ WRAPPER }} .my-class + * - data: { 'wrapper': '.csm-block-unique-class' } + */ + replaceData( string, data ) { + + return string.replace( /{{\s*([\w-]+)\s*}}/g, ( match, p1 ) => { + p1 = p1.toLowerCase(); + if ( undefined !== data[ p1 ] ) { + return data[ p1 ]; + } else { + return match; + } + } ); + } + + getParsedValue() { + return { + 'value': this.rawValue, + }; + } + + cssVarValueFormat() { + return '{{VALUE}}'; + } + + parseVariable( variable ) { + + const prefix = variable.prefix || ''; + const name = variable.name || false; + + let fullName = variable.full_name || prefix + '-' + name; + + if ( ! fullName ) { + return ''; + } + + if ( variable.suffix ) { + fullName += variable.suffix; + } + + let parsedValues = this.getParsedValue(); + let result = {}; + + if ( parsedValues.value ) { + result[ fullName ] = parsedValues.value; + } else { + + result[ fullName ] = this.replaceData( + this.cssVarValueFormat(), + parsedValues + ); + } + + return result; + } +} \ No newline at end of file diff --git a/modules/jet-style/framework/blocks-style-manager/assets/src/css-engine/fields/border.js b/modules/jet-style/framework/blocks-style-manager/assets/src/css-engine/fields/border.js new file mode 100644 index 000000000..1c23f6b8e --- /dev/null +++ b/modules/jet-style/framework/blocks-style-manager/assets/src/css-engine/fields/border.js @@ -0,0 +1,107 @@ +import BaseField from "./base-field"; +import { isObject } from "../../helpers/utils"; + +export default class Border extends BaseField { + static getType() { + return 'border'; + } + + getParsedValue() { + + if ( ! this.rawValue ) { + return { + border: {}, + radius: {}, + } + } else { + return { + border: this.parseBorderValue( this.rawValue.border ), + radius: this.rawValue.radius, + } + } + } + + parseBorderValue( value ) { + + if ( ! value ) { + return {} + } + + if ( value.color || value.width || value.style ) { + return { + global: { + color: value.color || 'inherit', + width: value.width || 'inherit', + style: value.style || 'inherit', + } + }; + } else { + return value; + } + } + + getParsedProps( props ) { + + const values = this.getParsedValue(); + + let result = ''; + + if ( values.border ) { + for ( const [ key, value ] of Object.entries( values.border ) ) { + if ( 'global' === key ) { + result += this.getBorderCSS( value ); + } else { + result += this.getBorderCSS( value, key ); + } + } + } + + if ( values.radius ) { + if ( isObject( values.radius ) ) { + + const propsMap = { + 'border-top-left-radius': 'topLeft', + 'border-top-right-radius': 'topRight', + 'border-bottom-right-radius': 'bottomRight', + 'border-bottom-left-radius': 'bottomLeft', + }; + + for ( const [ key, value ] of Object.entries( propsMap ) ) { + if ( values.radius[ value ] ) { + result += `${ key }: ${ values.radius[ value ] };`; + } + } + + } else { + result += `border-radius: ${ values.radius };`; + } + } + + return result; + } + + getBorderCSS( props, key ) { + + let css = ''; + + if ( key ) { + key = '-' + key; + } else { + key = ''; + } + + if ( props && props.color ) { + css += `border${ key }-color: ${ props.color };`; + } + + if ( props && props.width ) { + css += `border${ key }-width: ${ props.width };`; + } + + if ( props && props.style ) { + css += `border${ key }-style: ${ props.style };`; + } + + return css; + } +} diff --git a/modules/jet-style/framework/blocks-style-manager/assets/src/css-engine/fields/color.js b/modules/jet-style/framework/blocks-style-manager/assets/src/css-engine/fields/color.js new file mode 100644 index 000000000..923058a09 --- /dev/null +++ b/modules/jet-style/framework/blocks-style-manager/assets/src/css-engine/fields/color.js @@ -0,0 +1,7 @@ +import BaseField from "./base-field"; + +export default class Color extends BaseField { + static getType() { + return 'color-picker'; + } +} diff --git a/modules/jet-style/framework/blocks-style-manager/assets/src/css-engine/fields/dimensions.js b/modules/jet-style/framework/blocks-style-manager/assets/src/css-engine/fields/dimensions.js new file mode 100644 index 000000000..a2c8c4ef1 --- /dev/null +++ b/modules/jet-style/framework/blocks-style-manager/assets/src/css-engine/fields/dimensions.js @@ -0,0 +1,37 @@ +import BaseField from "./base-field"; +import { isObject } from "../../helpers/utils"; + +export default class Dimensions extends BaseField { + + static getType() { + return 'dimensions'; + } + + getParsedValue() { + + if ( ! this.rawValue ) { + return { + top: '', + right: '', + bottom: '', + left: '', + }; + } + + if ( isObject( this.rawValue ) ) { + return { + top: this.rawValue.top || '', + right: this.rawValue.right || '', + bottom: this.rawValue.bottom || '', + left: this.rawValue.left || '', + }; + } else { + return { + top: this.rawValue, + right: this.rawValue, + bottom: this.rawValue, + left: this.rawValue, + }; + } + } +} diff --git a/modules/jet-style/framework/blocks-style-manager/assets/src/css-engine/fields/index.js b/modules/jet-style/framework/blocks-style-manager/assets/src/css-engine/fields/index.js new file mode 100644 index 000000000..643e9f92c --- /dev/null +++ b/modules/jet-style/framework/blocks-style-manager/assets/src/css-engine/fields/index.js @@ -0,0 +1,15 @@ +import BaseField from './base-field.js'; +import Color from './color.js'; +import Typography from './typography.js'; +import Border from './border.js'; +import Dimensions from './dimensions.js'; +import Range from './range.js'; + +export { + Color, + Border, + Typography, + BaseField, + Dimensions, + Range, +}; \ No newline at end of file diff --git a/modules/jet-style/framework/blocks-style-manager/assets/src/css-engine/fields/range.js b/modules/jet-style/framework/blocks-style-manager/assets/src/css-engine/fields/range.js new file mode 100644 index 000000000..8ac0d5fad --- /dev/null +++ b/modules/jet-style/framework/blocks-style-manager/assets/src/css-engine/fields/range.js @@ -0,0 +1,15 @@ +import BaseField from "./base-field"; + +export default class Range extends BaseField { + + static getType() { + return 'range'; + } + + getParsedValue() { + return { + value: this.rawValue || 0, + unit: '', + } + } +} diff --git a/modules/jet-style/framework/blocks-style-manager/assets/src/css-engine/fields/typography.js b/modules/jet-style/framework/blocks-style-manager/assets/src/css-engine/fields/typography.js new file mode 100644 index 000000000..56a721357 --- /dev/null +++ b/modules/jet-style/framework/blocks-style-manager/assets/src/css-engine/fields/typography.js @@ -0,0 +1,24 @@ +import BaseField from "./base-field"; + +export default class Typography extends BaseField { + + static getType() { + return 'typography'; + } + + getParsedValue() { + return { + family: this.rawValue.family || 'inherit', + weight: this.rawValue.weight || 'inherit', + transform: this.rawValue.transform || 'inherit', + style: this.rawValue.style || 'inherit', + decoration: this.rawValue.decoration || 'inherit', + lineheight: this.rawValue.lineheight || 'inherit', + lh_unit: '', // legacy from old SM for style decorations consisitency + letterspacing: this.rawValue.letterSpacing || 'inherit', + ls_unit: '', // legacy from old SM for style decorations consisitency + size: this.rawValue.size || 'inherit', + s_unit: '', // legacy from old SM for style decorations consisitency + }; + } +} diff --git a/modules/jet-style/framework/blocks-style-manager/assets/src/css-engine/generator.js b/modules/jet-style/framework/blocks-style-manager/assets/src/css-engine/generator.js new file mode 100644 index 000000000..159c9ce8a --- /dev/null +++ b/modules/jet-style/framework/blocks-style-manager/assets/src/css-engine/generator.js @@ -0,0 +1,159 @@ +import * as Fields from './fields'; +import { getBreakpoints, withMediaQuery } from '../helpers/breakpoints'; + +export class Generator { + + constructor( blockName, attributes ) { + + this.blockName = blockName; + this.attributes = attributes; + this.uniqueClassName = attributes._uniqueClassName || false; + this.css = ''; + this.cssVariables = {}; + this.responsiveCSS = {}; + + this.controlHandlers = { + [ Fields.Color.getType() ]: Fields.Color, + [ Fields.Typography.getType() ]: Fields.Typography, + [ Fields.Border.getType() ]: Fields.Border, + [ Fields.Dimensions.getType() ]: Fields.Dimensions, + [ Fields.Range.getType() ]: Fields.Range, + }; + } + + getControlHandler( control ) { + + const controlType = control.type || false; + if ( ! controlType ) { + return false; + } + + return this.controlHandlers[ controlType ] || false; + } + + getCSS() { + + // Ensure we reset CSS on block re-render + this.css = ''; + + const { blockName } = this; + + if ( ! window.crocoBlockStyleEditor.blocks[ blockName ] ) { + return this.css; + } + + for ( const control of window.crocoBlockStyleEditor.blocks[ blockName ] ) { + this.generateControlStyles( control ); + } + + for ( const device in this.responsiveCSS ) { + + if ( ! this.responsiveCSS[ device ] ) { + continue; + } + + const mediaQueryCSS = withMediaQuery( this.responsiveCSS[ device ], device ); + + if ( mediaQueryCSS ) { + this.css += mediaQueryCSS; + } + } + + return { + styles: this.css, + variables: this.cssVariables, + } + } + + generateResponsiveStyles( controlID, cssSelectors, ControlHandler ) { + for ( const device in getBreakpoints() ) { + if ( ! this.attributes?.[ device ]?.[ controlID ] ) { + continue; + } + + const controlInstance = new ControlHandler( + this.uniqueClassName, + this.attributes[ device ][ controlID ] + ); + + for ( const selector in cssSelectors ) { + const selectorStyles = controlInstance.parseSelector( + selector, + cssSelectors[ selector ] + ); + + if ( ! this.responsiveCSS[ device ] ) { + this.responsiveCSS[ device ] = ''; + } + + this.responsiveCSS[ device ] += selectorStyles; + } + } + } + + generateResponsiveVariables( controlID, cssVar, ControlHandler ) { + + for ( const device in getBreakpoints() ) { + + cssVar.suffix = ''; + + if ( ! this.attributes?.[ device ]?.[ controlID ] ) { + continue; + } + + cssVar.suffix = device; + + const controlInstance = new ControlHandler( + this.uniqueClassName, + this.attributes[ device ][ controlID ] + ); + + this.cssVariables = { + ...this.cssVariables, + ...controlInstance.parseVariable( cssVar ), + }; + } + } + + generateControlStyles( control ) { + + const ControlHandler = this.getControlHandler( control ); + const controlID = control.id || false; + const { attributes } = this; + + if ( ControlHandler && controlID && attributes[ controlID ] ) { + + const controlInstance = new ControlHandler( + this.uniqueClassName, + this.attributes[ controlID ] + ); + + if ( control.css_selector ) { + for ( const selector in control.css_selector ) { + this.css += controlInstance.parseSelector( + selector, + control.css_selector[ selector ] + ); + } + + this.generateResponsiveStyles( controlID, control.css_selector, ControlHandler ); + } + + if ( control.css_var ) { + + this.cssVariables = { + ...this.cssVariables, + ...controlInstance.parseVariable( control.css_var ), + }; + + this.generateResponsiveVariables( controlID, control.css_var, ControlHandler ); + } + } + + if ( control.children ) { + for ( const childControl of control.children ) { + this.generateControlStyles( childControl ); + } + } + } +} \ No newline at end of file diff --git a/modules/jet-style/framework/blocks-style-manager/assets/src/editor.js b/modules/jet-style/framework/blocks-style-manager/assets/src/editor.js new file mode 100644 index 000000000..3f78f3450 --- /dev/null +++ b/modules/jet-style/framework/blocks-style-manager/assets/src/editor.js @@ -0,0 +1,87 @@ +import './editor.scss'; +import { addFilter } from '@wordpress/hooks'; +import { withStylesControls } from './hoc-wrappers/with-styles-controls'; +import { withBlockUniqueClass, generateUniqueClassName } from './hoc-wrappers/with-block-class'; + +class CrocoBlockStyleEditor { + + init() { + + this.blocks = window?.crocoStyleEditorData?.blocks_supports || {}; + this.supportName = window.crocoStyleEditorData.support_name; + this.usedClasses = {}; + + addFilter( + 'blocks.registerBlockType', + 'crocoblock-style-manager/enable-block-support', + this.registerBlock.bind( this ) + ); + + addFilter( + 'editor.BlockEdit', + 'crocoblock-style-manager/enable-block-support', + withStylesControls + ); + + addFilter( + 'editor.BlockListBlock', + 'crocoblock-style-manager/with-crocoblock-editor-class', + withBlockUniqueClass + ); + } + + classIsUsed( className, clientId ) { + + if ( ! className || ! clientId ) { + return false; + } + + if ( this.usedClasses[ className ] ) { + if ( this.usedClasses[ className ] === clientId ) { + // It's the same clientId, so we can use this class + return false; + } else { + // The class is already used by another block + return true; + } + } else { + // The class is not used yet, so we can use it + this.usedClasses[ className ] = clientId; + return false; + } + } + + getBlockControls( blockName ) { + return this.blocks[ blockName ] || false; + } + + registerBlock( settings, name ) { + + if ( ! this.getBlockControls( name ) ) { + return settings; + } + + const supports = settings.supports || {}; + supports[ this.supportName ] = true; + + const attributes = settings.attributes || {}; + + if ( ! attributes[ this.supportName ] ) { + attributes[ this.supportName ] = { + type: 'object', + default: { + _uniqueClassName: generateUniqueClassName(), + }, + }; + } + + return { + ...settings, + supports: supports, + attributes: attributes, + }; + } +} + +window.crocoBlockStyleEditor = new CrocoBlockStyleEditor(); +window.crocoBlockStyleEditor.init(); \ No newline at end of file diff --git a/modules/jet-style/framework/blocks-style-manager/assets/src/editor.scss b/modules/jet-style/framework/blocks-style-manager/assets/src/editor.scss new file mode 100644 index 000000000..d8e375821 --- /dev/null +++ b/modules/jet-style/framework/blocks-style-manager/assets/src/editor.scss @@ -0,0 +1,181 @@ +:root { + --csm-border-color: #e0e0e0; + --csm-border-dark-color: #757575; + --csm-accent-color: #0073aa; +} +.crocoblock-style-manager { + &__inline-control { + > .components-base-control__field { + display: flex; + align-items: flex-start; + justify-content: space-between; + gap: 15px; + > .components-base-control__label { + margin: 0; + line-height: 20px; + } + } + } + + &__color-indicator { + cursor: pointer; + display: flex; + gap: 5px; + &-label { + font-size: 12px; + } + } + + &__usage-marker { + position: absolute; + top: 7px; + left: -10px; + width: 6px; + height: 6px; + border-radius: 50%; + .is-control--dimensions & { + top: 11px; + } + .is-control--choose &, + .is-control--range &, + .is-control--border & { + top: 4px; + } + &.is-used { + background-color: var(--csm-accent-color); + } + &.is-inherited { + background-color: var(--csm-border-color); + } + } + + &__control, + &__with-spacing { + position: relative; + padding: 0 0 25px; + + // Fixes for vertical alignment of controls + .components-input-control { + margin: 0; + } + > div[data-wp-component="Grid"] { + align-items: center; + .components-base-control__label { + margin: 0; + } + div[data-wp-component="HStack"] { + gap: 16px; + } + } + + .components-border-radius-control { + margin: 0; + } + } + + &__border-control, + &__dimensions-control { + margin: 0; + } + + &__color-palette { + &-item { + width: 28px; + height: 28px; + &-indicator { + width: 100%; + height: 100%; + border-radius: 50%; + cursor: pointer; + &--active { + outline: 2px solid var( --csm-border-dark-color ); + outline-offset: 1px; + } + } + } + } + + &__typography-controls { + min-width: 300px; + } + + &__controls-tabs { + margin: 0 -16px; + border-top: 1px solid var(--csm-border-color); + border-bottom: 1px solid var(--csm-border-color); + &-navigation { + display: flex; + gap: 10px; + border-bottom: 1px solid var(--csm-border-color); + background-color: #efefef; + padding: 8px 16px; + button.crocoblock-style-manager__controls-tabs-button { + flex: 1; + text-align: center; + border: none; + background: transparent; + padding: 8px 0; + cursor: pointer; + &.is-active { + background-color: #1e1e1e; + color: #fff; + } + } + } + &-content { + padding: 15px 16px 0; + } + } + + &__popover { + min-width: 250px; + &-content { + padding: 20px; + .components-input-control__container { + width: 100%; + } + } + &-header { + display: flex; + align-items: center; + justify-content: space-between; + border-bottom: 1px solid var(--csm-border-color); + padding: 10px 20px; + font-weight: bold; + line-height: 24px; + button.crocoblock-style-manager__popover-close { + width: 24px; + height: 24px; + min-width: 0; + padding: 0; + } + } + &-trigger { + cursor: pointer; + border: 1px solid var(--csm-border-color); + padding: 5px; + border-radius: 3px; + margin-top: -3px; + svg { + width: 16px; + height: 16pxr; + display: block; + path { + fill: currentColor; + } + } + } + &-control { + padding-bottom: 10px; + } + &-controls-row { + display: flex; + gap: 10px; + width: 100%; + .w-50 { + width: calc( 50% - 5px ); + flex: 0 0 calc( 50% - 5px ); + } + } + } +} \ No newline at end of file diff --git a/modules/jet-style/framework/blocks-style-manager/assets/src/helpers/breakpoints.js b/modules/jet-style/framework/blocks-style-manager/assets/src/helpers/breakpoints.js new file mode 100644 index 000000000..0e298abf2 --- /dev/null +++ b/modules/jet-style/framework/blocks-style-manager/assets/src/helpers/breakpoints.js @@ -0,0 +1,47 @@ +const breakpoints = { + __desktop: { + minWidth: 992, + }, + __tablet: { + maxWidth: 991, + }, + __mobile: { + maxWidth: 478, + }, +} + +export const getBreakpoints = () => { + return breakpoints; +} + +export const getBreakpointsHierarchy = () => { + return Object.keys( breakpoints ); +} + +export const withMediaQuery = ( css, device ) => { + + const mediaQuery = breakpoints[ device ]; + + if ( ! mediaQuery ) { + return css; + } + + let mediaQueryString = ''; + + if ( mediaQuery.minWidth ) { + mediaQueryString += `(min-width: ${ mediaQuery.minWidth }px)`; + } + + if ( mediaQuery.maxWidth ) { + if ( mediaQueryString ) { + mediaQueryString += ' and '; + } + mediaQueryString += `(max-width: ${ mediaQuery.maxWidth }px)`; + } + + if ( ! mediaQueryString ) { + return css; + } + + return `@media ${ mediaQueryString } { ${ css } }`; +} diff --git a/modules/jet-style/framework/blocks-style-manager/assets/src/helpers/utils.js b/modules/jet-style/framework/blocks-style-manager/assets/src/helpers/utils.js new file mode 100644 index 000000000..14856d1c5 --- /dev/null +++ b/modules/jet-style/framework/blocks-style-manager/assets/src/helpers/utils.js @@ -0,0 +1,66 @@ +/** + * Get all block controls for given block + * + * @param {string} blockName + * @returns {object} blockControls + */ +export const getBlockControls = ( blockName ) => { + + const blockControls = window.crocoBlockStyleEditor.getBlockControls( blockName ); + + if ( ! blockControls ) { + return {}; + } + + return blockControls; +} + +/** + * Check if given stack has children + * + * @param {object} stack + * @returns {boolean} + */ +export const hasChildren = ( stack ) => { + if ( ! stack.children ) { + return false; + } + + if ( Array.isArray( stack.children ) && stack.children.length > 0 ) { + return true; + } + + // Otherwise, return false + return false; +} + +/** + * Check if given variable is an object + * + * @param {any} variable + * @returns {boolean} + */ +export const isObject = ( variable ) => { + return typeof variable === 'object' && variable !== null && !Array.isArray(variable); +} + +export const isEmpty = ( variable ) => { + + if ( variable === null || variable === undefined ) { + return true; + } + + if ( typeof variable === 'string' && variable.trim() === '' ) { + return true; + } + + if ( Array.isArray( variable ) && variable.length === 0 ) { + return true; + } + + if ( isObject( variable ) && Object.keys( variable ).length === 0 ) { + return true; + } + + return false; +} diff --git a/modules/jet-style/framework/blocks-style-manager/assets/src/hoc-wrappers/with-block-class.js b/modules/jet-style/framework/blocks-style-manager/assets/src/hoc-wrappers/with-block-class.js new file mode 100644 index 000000000..def21c3e2 --- /dev/null +++ b/modules/jet-style/framework/blocks-style-manager/assets/src/hoc-wrappers/with-block-class.js @@ -0,0 +1,75 @@ +import { createHigherOrderComponent } from '@wordpress/compose'; +import { useSelect } from '@wordpress/data'; +import { useEffect } from '@wordpress/element'; + +export const withBlockUniqueClass = createHigherOrderComponent( ( BlockListBlockComponent ) => { + return ( props ) => { + const { + name, + className = '', + clientId, + setAttributes, + attributes, + } = props; + + // Pull the block’s registration info + const blockType = useSelect( + ( select ) => select( 'core/blocks' ).getBlockType( name ), + [ name ] + ); + + // If crocoblock_styles support is present, add our class + if ( blockType?.supports?.crocoblock_styles ) { + + const uniqueClass = props?.attributes?.[ window.crocoStyleEditorData.support_name ]?.[ '_uniqueClassName' ]; + + + useEffect( () => { + if ( window.crocoBlockStyleEditor.classIsUsed( uniqueClass, clientId ) ) { + // If the class is already used, we need to generate a new one + const newUniqueClass = generateUniqueClassName(); + + setAttributes( { + [ window.crocoStyleEditorData.support_name ]: { + ...attributes[ window.crocoStyleEditorData.support_name ], + _uniqueClassName: newUniqueClass, + }, + } ); + } + }, [] ); + + return ( + + ); + } + + // Otherwise render unmodified + return ; + }; +}, 'withBlockUniqueClass' ); + +export const generateUniqueClassName = () => { + + const length = 8; + + let chars = 'abcdefghijklmnopqrstuvwxyz0123456789'; + let result = ''; + + for ( let i = 0; i < length; i++ ) { + + if ( i === 0 ) { + // Ensure the first character is a letter + result += chars.charAt( Math.floor( Math.random() * 26 ) ); + continue; + } + + result += chars.charAt( Math.floor( Math.random() * chars.length ) ); + } + + return window.crocoStyleEditorData.class_prefix + result; +} diff --git a/modules/jet-style/framework/blocks-style-manager/assets/src/hoc-wrappers/with-styles-controls.js b/modules/jet-style/framework/blocks-style-manager/assets/src/hoc-wrappers/with-styles-controls.js new file mode 100644 index 000000000..776e84dcf --- /dev/null +++ b/modules/jet-style/framework/blocks-style-manager/assets/src/hoc-wrappers/with-styles-controls.js @@ -0,0 +1,41 @@ +import { createHigherOrderComponent } from '@wordpress/compose'; +import ControlStack from '../components/control-stack'; +import { Generator } from '../css-engine/generator'; +import { isEmpty } from '../helpers/utils'; + +export const withStylesControls = createHigherOrderComponent( ( BlockEdit ) => { + + return ( props ) => { + + const { attributes } = props; + const supportName = window.crocoStyleEditorData.support_name; + + console.log( 'withStylesControls', props ); + + // We need to check it by attributes, because 'supports' are not available in the props + if ( ! attributes || ! attributes[ supportName ] ) { + return ; + } + + const cssGenerator = new Generator( + props.name, + attributes[ supportName ] + ); + + const { + styles, + variables + } = cssGenerator.getCSS(); + + return ( + <> + { ! isEmpty( styles ) && } + { ! isEmpty( variables ) &&
+ +
} + { isEmpty( variables ) && } + + + ); + }; +}, 'withStylesControls' ); diff --git a/modules/jet-style/framework/blocks-style-manager/block.php b/modules/jet-style/framework/blocks-style-manager/block.php new file mode 100644 index 000000000..276ead98a --- /dev/null +++ b/modules/jet-style/framework/blocks-style-manager/block.php @@ -0,0 +1,436 @@ + array(), + ); + + public static $timer = 0; + + public static $count = 0; + + /** + * Currently processed section for registration. + */ + protected $_current_section = null; + + /** + * Currently processed tabs for registration. + */ + protected $_current_tabs = null; + + /** + * Currently processed tab for registration. + */ + protected $_current_tab = null; + + protected $css_props = array(); + + /** + * Constructor + * + * @param string $name Block name. + * @param array $attributes Block attributes. + */ + public function __construct( $name, $attributes = array() ) { + $this->name = $name; + $this->attributes = $attributes; + + add_filter( + 'rest_request_before_callbacks', + array( $this, 'prevent_styles_on_self_render' ), + 10, 3 + ); + + add_filter( + 'render_block_' . $this->get_block_name(), + array( $this, 'render_block_styles' ), + 10, 3 + ); + } + + /** + * Prevent styles from being rendered when there is a Rest API request + * to render the block itself. + * + * @param mixed $response The response object. + * @param mixed $handler The handler for the request. + * @param WP_REST_Request $request The request object. + * @return mixed + */ + public function prevent_styles_on_self_render( $response, $handler, $request ) { + + if ( strpos( $request->get_route(), '/wp/v2/block-renderer/' ) === 0 ) { + $block_name = $request->get_param( 'name' ); + + if ( ! $block_name ) { + $route_parts = explode( '/', trim( $request->get_route(), '/' ) ); + $block_name = end( $route_parts ); + } + + if ( $block_name === $this->get_block_name() ) { + remove_filter( + 'render_block_' . $this->get_block_name(), + array( $this, 'render_block_styles' ), + 10, 3 + ); + } + } + + + return $response; + } + + /** + * Render block styles + * + * @param string $block_content Block content. + * @param array $block Block data. + * @param bool $is_preview Is preview mode. + * @return string + */ + public function render_block_styles( $block_content, $parsed_block, $wp_block ) { + + if ( ! empty( $parsed_block['attrs'][ Registry::instance()->get_support_name() ] ) ) { + + timer_start(); + + $block_class_name = Style_Engine::get_classname_from_attrs( + $parsed_block['attrs'][ Registry::instance()->get_support_name() ] + ); + + $style_engine = new Style_Engine( + $parsed_block['attrs'][ Registry::instance()->get_support_name() ], + $this->css_props + ); + + $styles_data = Style_Cache::get_instance()->get_cached( $style_engine ); + + $style_inserter = new Style_Inserter( + $style_engine->get_class_name(), + $styles_data + ); + + $block_content = $style_inserter->insert_styles( $block_content ); + + if ( ! apply_filters( 'jet-styles-manager/block/force-print-styles', false, $this ) ) { + Style_Cache::get_instance()->add_printed( $style_engine->get_class_name() ); + } + + self::$timer += timer_stop( 0, 8 ); + self::$count++; + + //var_dump( self::$timer ); + //var_dump( self::$count ); + } + + return $block_content; + } + + /** + * Get block name + * + * @return string + */ + public function get_block_name() { + return $this->name; + } + + /** + * Get currently registered controls. + * + * @return array + */ + public function get_controls_stack() { + return $this->controls_stack['children']; + } + + /** + * Start a new section for block styles + * + * @param array $args + * @return void + */ + public function start_section( $args = array() ) { + + if ( ! isset( $args['id'] ) ) { + _doing_it_wrong( + 'Blocks_Style\Proxy::start_section', + 'Section id is required.', + '1.0.0' + ); + return; + } + + $section_id = $args['id']; + + $this->_current_section = $section_id; + + if ( ! isset( $this->controls_stack['children'][ $this->_current_section ] ) ) { + $this->controls_stack['children'][ $this->_current_section ] = $args; + $this->controls_stack['children'][ $this->_current_section ]['children'] = array(); + } + } + + /** + * End the current section + * + * @return void + */ + public function end_section() { + $this->_current_section = null; + } + + /** + * Add a new control to the current section + * + * @param array $args + * @return void + */ + public function add_control( $args = array() ) { + + if ( ! $this->_current_section ) { + + _doing_it_wrong( + 'Block::add_control', + 'You must call start_section() before adding controls.', + '1.0.0' + ); + + return; + } + + $control_id = ! empty( $args['id'] ) ? $args['id'] : false; + + if ( ! $control_id ) { + _doing_it_wrong( + 'Block::add_control', + 'You must provide a control `id` parameter.', + '1.0.0' + ); + + return; + } + + // Ensure correct format of CSS variable prop + $css_var = ! empty( $args['css_var'] ) ? (array) $args['css_var'] : array(); + + if ( ! empty( $css_var ) ) { + + $css_var = array_merge( + array( + 'prefix' => '--csm', + 'name' => $control_id, + ), + $css_var + ); + + $args['css_var'] = $css_var; + } + + if ( $this->_current_tabs && $this->_current_tab ) { + $this->register_children( + array( $this->_current_section, $this->_current_tabs, $this->_current_tab ), + $control_id, + $args + ); + } else { + $this->register_children( + array( $this->_current_section ), + $control_id, + $args + ); + } + + $this->css_props[ $control_id ] = array( + 'type' => ! empty( $args['type'] ) ? $args['type'] : 'text', + 'css_var' => ! empty( $args['css_var'] ) ? $args['css_var'] : array(), + 'css_selector' => ! empty( $args['css_selector'] ) ? $args['css_selector'] : array(), + ); + } + + /** + * Start tabs group + * + * @param array $args + * @return void + */ + public function start_tabs( $args = array() ) { + + if ( ! empty( $args['id'] ) ) { + $id = $args['id']; + } else { + _doing_it_wrong( + 'Block::start_tabs', + 'You must provide a tabs `id` parameter.', + '1.0.0' + ); + return; + } + + $this->_current_tabs = $id; + + $args['type'] = 'tabs'; + + $this->register_children( + array( $this->_current_section ), + $this->_current_tabs, + $args + ); + } + + /** + * Start a new tab + * + * @param array $args + * @return void + */ + public function start_tab( $args = array() ) { + + if ( ! empty( $args['id'] ) ) { + $id = $args['id']; + } else { + _doing_it_wrong( + 'Block::start_tab', + 'You must provide a tabs `id` parameter.', + '1.0.0' + ); + return; + } + + $this->_current_tab = $id; + + $args['type'] = 'tab'; + + $this->register_children( + array( $this->_current_section, $this->_current_tabs ), + $this->_current_tab, + $args + ); + } + + /** + * End tabs group + * + * @return void + */ + public function end_tabs() { + $this->_current_tabs = null; + $this->_current_tab = null; + } + + /** + * End the current tab + * + * @return void + */ + public function end_tab() { + $this->_current_tab = null; + } + + /** + * Register children controls recursively + * + * This method registers child controls under the specified parent trace. + * + * @param array $parents_trace Array of parent keys representing the trace. + * Example: ['section1', 'tabs1', 'tab1']. + * Each key must be a non-empty string. + * @param string $control_id The control ID. Must be a unique, non-empty string. + * Example: 'control1'. + * @param array $args The control arguments. Should include control-specific + * settings such as 'type', 'label', etc. + * Example: ['type' => 'text', 'label' => 'Enter text']. + * @return void + */ + public function register_children( $parents_trace, $control_id, $args ) { + + // Validate $parents_trace to ensure it contains valid keys + if ( ! is_array( $parents_trace ) || empty( $parents_trace ) ) { + _doing_it_wrong( + 'Block::register_children', + 'The $parents_trace parameter must be a non-empty array of valid keys.', + '1.0.0' + ); + return; + } + + // Validate $control_id to ensure it's a non-empty string + if ( ! is_string( $control_id ) || empty( $control_id ) ) { + _doing_it_wrong( + 'Block::register_children', + 'The $control_id parameter must be a non-empty string.', + '1.0.0' + ); + return; + } + + // Validate $args to ensure it's an array + if ( ! is_array( $args ) || empty( $args ) ) { + _doing_it_wrong( + 'Block::register_children', + 'The $args parameter must be a non-empty array.', + '1.0.0' + ); + return; + } + + $controls = &$this->controls_stack; + + foreach ( $parents_trace as $parent ) { + + if ( ! isset( $controls['children'][ $parent ] ) ) { + _doing_it_wrong( + 'Block::register_children', + "Parent control `$parent` not found in the controls stack.", + '1.0.0' + ); + return; + } + + $controls = &$controls['children'][ $parent ]; + + if ( ! isset( $controls['children'] ) ) { + $controls['children'] = array(); + } + + // Check if is last parent in the trace and register the control + if ( end( $parents_trace ) === $parent ) { + $controls['children'][ $control_id ] = $args; + } + } + } +} \ No newline at end of file diff --git a/modules/jet-style/framework/blocks-style-manager/editor.php b/modules/jet-style/framework/blocks-style-manager/editor.php new file mode 100644 index 000000000..52c9c47dc --- /dev/null +++ b/modules/jet-style/framework/blocks-style-manager/editor.php @@ -0,0 +1,143 @@ +inited ) { + return; + } + + $this->inited = true; + add_action( 'enqueue_block_editor_assets', array( $this, 'editor_assets' ), -10 ); + } + + /** + * Enqueue editor assets + * + * @return void + */ + public function editor_assets() { + + $asset_file = $this->get_path( 'assets/build/editor.asset.php' ); + $js_file = $this->get_path( 'assets/build/editor.js' ); + $js_url = $this->get_url( 'assets/build/editor.js' ); + + if ( ! file_exists( $js_file ) || ! file_exists( $asset_file ) ) { + return; + } + + $asset = include $asset_file; + + wp_enqueue_script( + 'crocoblock-blocks-style-editor', + $js_url, + $asset['dependencies'], + $asset['version'], + true + ); + + wp_localize_script( + 'crocoblock-blocks-style-editor', + 'crocoStyleEditorData', + array( + 'blocks_supports' => $this->get_blocks_supports(), + 'support_name' => Registry::instance()->get_support_name(), + 'class_prefix' => 'cb-', + ) + ); + + $rtl_suffix = is_rtl() ? '-rtl' : ''; + + wp_enqueue_style( + 'crocoblock-blocks-style-editor', + $this->get_url( 'assets/build/editor' . $rtl_suffix . '.css' ), + array(), + $asset['version'] + ); + } + + /** + * Get blocks supports + * + * @return array + */ + public function get_blocks_supports() { + + $result = array(); + $blocks = Registry::instance()->get_blocks(); + + foreach ( $blocks as $block ) { + $result[ $block->get_block_name() ] = $this->extract_children( $block->get_controls_stack() ); + } + + return $result; + } + + /** + * Recursively convert children prop of ech control (if exists) + * to indexed array instead of associative array to process in JS as array + * and not as object, because we can't keep order of object properties in JS + * (they always be sorted alphabetically). + * + * @param array $controls Controls stack. + * @return array + */ + public function extract_children( array $controls = array() ) { + + $result = array(); + + foreach ( $controls as $control ) { + + if ( ! isset( $control['children'] ) ) { + $result[] = $control; + continue; + } + + $children = $this->extract_children( $control['children'] ); + + if ( ! empty( $children ) ) { + $control['children'] = array_values( $children ); + } + + $result[] = $control; + } + + return $result; + } +} diff --git a/modules/jet-style/framework/blocks-style-manager/field-handlers/base.php b/modules/jet-style/framework/blocks-style-manager/field-handlers/base.php new file mode 100644 index 000000000..25673a1fb --- /dev/null +++ b/modules/jet-style/framework/blocks-style-manager/field-handlers/base.php @@ -0,0 +1,113 @@ +raw_value = $raw_value; + } + + /** + * Get the parsed value. + * + * @return array + */ + public function get_parsed_value() { + return array( + 'value' => $this->raw_value, + ); + } + + /** + * String with CSS variable macros. + * Should be rewritten in the classes with multiple parameters + * returned by get_parsed_value() method. + */ + public function css_var_value_format() { + return '{{VALUE}}'; + } + + /** + * Replace data in the string with CSS variable macros. + * + * @param string $string String with macros. + * @param array $data Data to replace in the string. + * + * @return array + */ + public function parse_variable( $variable = array() ) { + + $prefix = isset($variable['prefix']) ? $variable['prefix'] : ''; + $name = isset($variable['name']) ? $variable['name'] : false; + $full_name = isset($variable['full_name']) ? $variable['full_name'] : $prefix . '-' . $name; + + if ( ! $full_name ) { + return array(); + } + + if ( isset( $variable['suffix'] ) ) { + $full_name .= $variable['suffix']; + } + + $parsed_values = $this->get_parsed_value(); + $result = array(); + + if ( ! empty( $parsed_values['value'] ) ) { + $result[] = $full_name . ':' . $parsed_values['value']; + } else { + $result[] = $full_name . ':' . self::replace_data( $this->css_var_value_format(), $parsed_values ); + } + + return $result; + } + + /** + * Parses data with macros. + * + * @param string $data Data to parse. + * @param array $macros Macros to replace. + * @return string Parsed data. + */ + public static function replace_data( $data = '', $macros = array() ) { + + if ( empty( $data ) || ! is_string( $data ) ) { + return ''; + } + + if ( ! empty( $macros ) && is_array( $macros ) ) { + $data = preg_replace_callback( + '/\{\{\s*([\w-]+)\s*\}\}/', + function ( $matches ) use ( $macros ) { + $key = strtolower( $matches[1] ); + return isset( $macros[ $key ] ) ? $macros[ $key ] : ''; + }, + $data + ); + } + + return trim( $data ); + } + + /** + * Get CSS rule string with replaced macros. + * + * @param string $rule_string String with CSS rule and macros. + * @return string Parsed CSS rule. + */ + public function get_css_rule( $rule_string = '' ) { + $parsed_values = $this->get_parsed_value(); + + if ( empty( $parsed_values ) || ! is_array( $parsed_values ) ) { + return ''; + } + + return self::replace_data( $rule_string, $parsed_values ); + } +} \ No newline at end of file diff --git a/modules/jet-style/framework/blocks-style-manager/field-handlers/border.php b/modules/jet-style/framework/blocks-style-manager/field-handlers/border.php new file mode 100644 index 000000000..8338f54a9 --- /dev/null +++ b/modules/jet-style/framework/blocks-style-manager/field-handlers/border.php @@ -0,0 +1,195 @@ +get_parsed_value(); + $result = array(); + + if ( ! empty( $values['radius'] ) ) { + + $radius = ''; + + if ( is_string( $values['radius'] ) ) { + $radius = $values['radius']; + } else { + $props_order = [ + 'topLeft', + 'topRight', + 'bottomRight', + 'bottomLeft', + ]; + + foreach ( $props_order as $prop ) { + $radius .= isset( $values['radius'][ $prop ] ) ? $values['radius'][ $prop ] . ' ' : '0 '; + } + + $radius = trim( $radius ); + } + + $result[] = $full_name . '__radius: ' . $radius; + } + + if ( ! empty( $values['border'] ) && is_array( $values['border'] ) ) { + + $global = isset( $values['border']['global'] ) ? $values['border']['global'] : []; + $sides = [ 'top', 'right', 'bottom', 'left' ]; + + foreach ( $sides as $side ) { + $side_props = isset( $values['border'][ $side ] ) && is_array( $values['border'][ $side ] ) + ? $values['border'][ $side ] + : []; + + $color = isset( $side_props['color'] ) ? $side_props['color'] : ( isset( $global['color'] ) ? $global['color'] : 'transparent' ); + $width = isset( $side_props['width'] ) ? $side_props['width'] : ( isset( $global['width'] ) ? $global['width'] : '0' ); + $style = isset( $side_props['style'] ) ? $side_props['style'] : ( isset( $global['style'] ) ? $global['style'] : 'solid' ); + + $result[] = $full_name . '__' . $side . ': ' . $width . ' ' . $style . ' ' . $color; + } + } + + return $result; + } + + /** + * Get the parsed value. + * + * @return array + */ + public function get_parsed_value() { + if ( ! $this->raw_value ) { + return [ + 'border' => [], + 'radius' => [], + ]; + } else { + return [ + 'border' => $this->parse_border_value(isset($this->raw_value['border']) ? $this->raw_value['border'] : null), + 'radius' => isset($this->raw_value['radius']) ? $this->raw_value['radius'] : null, + ]; + } + } + + /** + * Parse the border value. + * + * @param mixed $value The raw border value. + * @return array Parsed border value. + */ + public function parse_border_value($value) { + + if ( ! $value ) { + return []; + } + + if ( isset($value['color']) || isset($value['width']) || isset($value['style']) ) { + return [ + 'global' => [ + 'color' => isset($value['color']) ? $value['color'] : 'inherit', + 'width' => isset($value['width']) ? $value['width'] : 'inherit', + 'style' => isset($value['style']) ? $value['style'] : 'inherit', + ] + ]; + } else { + return $value; + } + } + + /** + * Get parsed properties for CSS. + * We ignore the $rule_string parameter as it is not used for this type of field. + * + * @param string $rule_string Properties to parse. + * @return string Parsed CSS properties. + */ + public function get_css_rule( $rule_string = '' ) { + + $values = $this->get_parsed_value(); + + $result = ''; + + if ( isset($values['border']) && is_array($values['border']) ) { + foreach ( $values['border'] as $key => $value ) { + if ( $key === 'global' ) { + $result .= $this->get_border_css($value); + } else { + $result .= $this->get_border_css($value, $key); + } + } + } + + if ( isset($values['radius']) ) { + if ( is_array($values['radius']) ) { + $props_map = [ + 'border-top-left-radius' => 'topLeft', + 'border-top-right-radius' => 'topRight', + 'border-bottom-right-radius' => 'bottomRight', + 'border-bottom-left-radius' => 'bottomLeft', + ]; + + foreach ( $props_map as $css_prop => $radius_key ) { + if ( isset($values['radius'][$radius_key]) ) { + $result .= $css_prop . ': ' . $values['radius'][$radius_key] . ';'; + } + } + } else { + $result .= 'border-radius: ' . $values['radius'] . ';'; + } + } + + return $result; + } + + /** + * Get CSS for border properties by key. + * + * @param array $props Properties to generate CSS for. + * @param string $key Optional key for specific border side. + * @return string Generated CSS string. + */ + public function get_border_css($props, $key = '') { + $css = ''; + + if ( $key ) { + $key = '-' . $key; + } else { + $key = ''; + } + + if ( isset($props['color']) ) { + $css .= "border{$key}-color: " . $props['color'] . ";"; + } + + if ( isset($props['width']) ) { + $css .= "border{$key}-width: " . $props['width'] . ";"; + } + + if ( isset($props['style']) ) { + $css .= "border{$key}-style: " . $props['style'] . ";"; + } + + return $css; + } +} diff --git a/modules/jet-style/framework/blocks-style-manager/field-handlers/dimensions.php b/modules/jet-style/framework/blocks-style-manager/field-handlers/dimensions.php new file mode 100644 index 000000000..0489b76f2 --- /dev/null +++ b/modules/jet-style/framework/blocks-style-manager/field-handlers/dimensions.php @@ -0,0 +1,41 @@ +raw_value ) { + return [ + 'top' => '', + 'right' => '', + 'bottom' => '', + 'left' => '', + ]; + } + + if ( is_array( $this->raw_value ) ) { + return [ + 'top' => isset( $this->raw_value['top'] ) ? $this->raw_value['top'] : '0', + 'right' => isset( $this->raw_value['right'] ) ? $this->raw_value['right'] : '0', + 'bottom' => isset( $this->raw_value['bottom'] ) ? $this->raw_value['bottom'] : '0', + 'left' => isset( $this->raw_value['left'] ) ? $this->raw_value['left'] : '0', + ]; + } else { + return [ + 'top' => $this->raw_value, + 'right' => $this->raw_value, + 'bottom' => $this->raw_value, + 'left' => $this->raw_value, + ]; + } + } +} diff --git a/modules/jet-style/framework/blocks-style-manager/field-handlers/range.php b/modules/jet-style/framework/blocks-style-manager/field-handlers/range.php new file mode 100644 index 000000000..939e0a5b4 --- /dev/null +++ b/modules/jet-style/framework/blocks-style-manager/field-handlers/range.php @@ -0,0 +1,17 @@ + ! empty( $this->raw_value ) ? floatval( $this->raw_value ) : 0, + 'unit' => '', + ); + } +} diff --git a/modules/jet-style/framework/blocks-style-manager/field-handlers/typography.php b/modules/jet-style/framework/blocks-style-manager/field-handlers/typography.php new file mode 100644 index 000000000..3cdb36597 --- /dev/null +++ b/modules/jet-style/framework/blocks-style-manager/field-handlers/typography.php @@ -0,0 +1,68 @@ +get_parsed_value(); + $result = array(); + $skip_keys = array( 'lh_unit', 'ls_unit', 's_unit' ); + + foreach ( $parsed_values as $key => $value ) { + + if ( in_array( $key, $skip_keys, true ) ) { + continue; // Skip legacy units. + } + + if ( 'inherit' === $value ) { + continue; // Skip inherit values. + } + + $result[] = $full_name . '__' . $key . ':'. $value; + } + + return $result; + } + + /** + * Get the parsed value. + * + * @return array + */ + public function get_parsed_value() { + return [ + 'family' => isset($this->raw_value['family']) ? $this->raw_value['family'] : 'inherit', + 'weight' => isset($this->raw_value['weight']) ? $this->raw_value['weight'] : 'inherit', + 'transform' => isset($this->raw_value['transform']) ? $this->raw_value['transform'] : 'inherit', + 'style' => isset($this->raw_value['style']) ? $this->raw_value['style'] : 'inherit', + 'decoration' => isset($this->raw_value['decoration']) ? $this->raw_value['decoration'] : 'inherit', + 'lineheight' => isset($this->raw_value['lineheight']) ? $this->raw_value['lineheight'] : 'inherit', + 'lh_unit' => '', // legacy from old SM for style decorations consistency + 'letterspacing' => isset($this->raw_value['letterSpacing']) ? $this->raw_value['letterSpacing'] : 'inherit', + 'ls_unit' => '', // legacy from old SM for style decorations consistency + 'size' => isset($this->raw_value['size']) ? $this->raw_value['size'] : 'inherit', + 's_unit' => '', // legacy from old SM for style decorations consistency + ]; + } +} diff --git a/modules/jet-style/framework/blocks-style-manager/package.json b/modules/jet-style/framework/blocks-style-manager/package.json new file mode 100644 index 000000000..76be06ec7 --- /dev/null +++ b/modules/jet-style/framework/blocks-style-manager/package.json @@ -0,0 +1,22 @@ +{ + "name": "crocoblock-style-manager", + "version": "1.0.0", + "scripts": { + "start": "wp-scripts start", + "build": "wp-scripts build" + }, + "devDependencies": { + "@wordpress/scripts": "^30.9.0", + "webpack": "^5.98.0", + "webpack-cli": "^6.0.1", + "webpack-remove-empty-scripts": "^1.0.4" + }, + "dependencies": { + "@wordpress/dataviews": "^4.12.0", + "@wordpress/interface": "^9.1.0", + "@yudiel/react-qr-scanner": "2.1.0", + "html5-qrcode": "^2.3.8", + "react-select": "^5.10.0", + "yet-another-react-lightbox": "^3.21.7" + } +} diff --git a/modules/jet-style/framework/blocks-style-manager/path-url-trait.php b/modules/jet-style/framework/blocks-style-manager/path-url-trait.php new file mode 100644 index 000000000..f70691bed --- /dev/null +++ b/modules/jet-style/framework/blocks-style-manager/path-url-trait.php @@ -0,0 +1,78 @@ +path = $path; + return $this; + } + + /** + * Get module directory path to file + * + * @param string $file File name. + * @return string + */ + public function get_path( string $file = '' ) { + if ( ! $this->path ) { + $this->path = trailingslashit( plugin_dir_path( __FILE__ ) ); + } + + return $this->path . $file; + } + + /** + * Set module directory URL + * + * @param string $url URL. + * @return self + */ + public function set_url( $url ) { + $this->url = $url; + return $this; + } + + /** + * Get module directory URL to file + * + * @param string $file File name. + * @return string + */ + public function get_url( string $file = '' ) { + if ( ! $this->url ) { + $this->url = trailingslashit( plugin_dir_url( __FILE__ ) ); + } + + return $this->url . $file; + } +} diff --git a/modules/jet-style/framework/blocks-style-manager/proxy.php b/modules/jet-style/framework/blocks-style-manager/proxy.php new file mode 100644 index 000000000..c478a98e9 --- /dev/null +++ b/modules/jet-style/framework/blocks-style-manager/proxy.php @@ -0,0 +1,149 @@ +block = $block; + + if ( $this->has_legacy_style_manager() ) { + $this->legacy_block_manager = \JET_SM\Gutenberg\Block_Manager::get_instance(); + $this->legacy_controls_manager = new \JET_SM\Gutenberg\Controls_Manager( + $this->block->get_block_name() + ); + } + } + + /** + * Get the Block instance + * + * @return Block + */ + public function get_block() { + return $this->block; + } + + /** + * Check we has a legacy style manage plugin. + * + * @return boolean + */ + public function has_legacy_style_manager() { + return ( class_exists( '\JET_SM\Gutenberg\Block_Manager' ) && class_exists( '\JET_SM\Gutenberg\Block_Manager' ) ); + } + + /** + * Start a new section for block styles + * + * @param string $section_id + * @param array $args + * @return void + */ + public function start_section( $section_id, $args = array() ) { + + if ( $this->has_legacy_style_manager() ) { + $this->legacy_controls_manager->start_section( $section_id, $args ); + } + + $this->block->start_section( $args ); + } + + /** + * End the current section + * + * @return void + */ + public function end_section() { + + if ( $this->has_legacy_style_manager() ) { + $this->legacy_controls_manager->end_section(); + } + + $this->block->end_section(); + } + + /** + * Add a new control to the current section + * + * @param array $args + * @return void + */ + public function add_control( $args = array() ) { + + if ( $this->has_legacy_style_manager() ) { + $this->legacy_controls_manager->add_control( $args ); + } + + if ( ! empty( $args['is_legacy'] ) ) { + // If the control is marked as legacy, so do not add it + return; + } + + $this->block->add_control( $args ); + } + + /** + * Add a new control to the current section. + * Fallback for legacy style manager. + * + * @param array $args + * @return void + */ + public function add_responsive_control( $args = array() ) { + $this->add_control( $args ); + } + + /** + * Start tabs group + * + * @param string $id + * @param array $args + * @return void + */ + public function start_tabs( $id, $args = array() ) { + $this->block->start_tabs( $args ); + } + + /** + * Start a new tab + * + * @param string $id + * @param array $args + * @return void + */ + public function start_tab( $id, $args = array() ) { + $this->block->start_tab( $args ); + } + + /** + * End tabs group + * + * @return void + */ + public function end_tabs() { + $this->block->end_tabs(); + } + + /** + * End the current tab + * + * @return void + */ + public function end_tab() { + $this->block->end_tab(); + } +} \ No newline at end of file diff --git a/modules/jet-style/framework/blocks-style-manager/registry.php b/modules/jet-style/framework/blocks-style-manager/registry.php new file mode 100644 index 000000000..abdd1fbf6 --- /dev/null +++ b/modules/jet-style/framework/blocks-style-manager/registry.php @@ -0,0 +1,191 @@ +get_path( 'style-cache.php' ); + require_once $this->get_path( 'style-engine.php' ); + require_once $this->get_path( 'style-inserter.php' ); + require_once $this->get_path( 'block.php' ); + } + + // Also, when first block is registered we need to load editor ans style render engine + if ( ! $this->handles_inited ) { + + $this->handles_inited = true; + + if ( ! class_exists( '\Crocoblock\Blocks_Style\Editor' ) ) { + require_once $this->get_path( 'editor.php' ); + } + + Editor::instance()->set_url( $this->url )->init(); + + $this->register_global_block_support(); + } + + if ( ! isset( $this->registry[ $block_name ] ) ) { + $this->registry[ $block_name ] = new Block( $block_name, $args ); + } else { + $this->registry[ $block_name ]->set_args( $args ); + } + + + + return $this->registry[ $block_name ]; + } + + /** + * Get blocks support name + * + * @return string + */ + public function get_support_name() { + return 'crocoblock_styles'; + } + + /** + * Register 'crocoblock_styles' for block supports. + * + * @return void + */ + public function register_global_block_support() { + + \WP_Block_Supports::get_instance()->register( + $this->get_support_name(), + array( + 'apply' => array( $this, 'apply_support' ), + ) + ); + + add_action( 'wp_loaded', array( $this, 'add_blocks_support' ), 999 ); + } + + /** + * Add 'crocoblock_styles' support for all registered blocks + * + * @return void + */ + public function add_blocks_support() { + + $blocks_names = array_keys( $this->registry ); + $block_type_registry = \WP_Block_Type_Registry::get_instance(); + + foreach ( $blocks_names as $block_name ) { + + $block_type = $block_type_registry->get_registered( $block_name ); + + if ( ! $block_type ) { + continue; + } + + if ( ! block_has_support( $block_type, array( $this->get_support_name() ) ) ) { + + if ( ! isset( $block_type->supports ) ) { + $block_type->supports = array(); + } + + $block_type->supports[ $this->get_support_name() ] = true; + + if ( ! isset( $block_type->attributes ) ) { + $block_type->attributes = array(); + } + + $block_type->attributes[ $this->get_support_name() ] = array( + 'type' => 'object', + ); + } + } + } + + /** + * Get block instance by name + * + * @param string $block_name + * @return Block|false + */ + public function get_block( $block_name = '' ) { + + if ( empty( $block_name ) ) { + return false; + } + + if ( ! isset( $this->registry[ $block_name ] ) ) { + return false; + } + + return $this->registry[ $block_name ]; + } + + /** + * Apply block support + * + * @param \WP_Block_Type $block_type + * @param array $block_attributes + * @return array + */ + public function apply_support( $block_type, array $block_attributes ): array { + return array(); + } + + /** + * Get all registered blocks + * + * @return array + */ + public function get_blocks() { + return $this->registry; + } +} diff --git a/modules/jet-style/framework/blocks-style-manager/style-cache.php b/modules/jet-style/framework/blocks-style-manager/style-cache.php new file mode 100644 index 000000000..6446334cc --- /dev/null +++ b/modules/jet-style/framework/blocks-style-manager/style-cache.php @@ -0,0 +1,100 @@ +printed_css, true ); + } + + /** + * Get cached or generated styles. + * + * @param Style_Engine $style_engine + * @return void + */ + public function get_cached( $style_engine ) { + + if ( ! $style_engine instanceof Style_Engine ) { + return array(); + } + + $class_name = $style_engine->get_class_name(); + + if ( isset( $this->generated_css[ $class_name ] ) ) { + return $this->generated_css[ $class_name ]; + } + + $styles_data = $style_engine->get_styles(); + + if ( ! empty( $styles_data ) ) { + $this->generated_css[ $class_name ] = $styles_data; + } + + return $styles_data; + } + + /** + * Add a class to the printed CSS classes list + * + * @param string $class_name + */ + public function add_printed( $class_name ) { + + if ( ! is_string( $class_name ) || empty( $class_name ) ) { + return; + } + if ( ! in_array( $class_name, $this->printed_css, true ) ) { + $this->printed_css[] = $class_name; + } + } + + /** + * Get the instance of the Style_Cache class + * + * @return Style_Cache + */ + public static function get_instance() { + + if ( null === self::$instance ) { + self::$instance = new self(); + } + + return self::$instance; + } +} \ No newline at end of file diff --git a/modules/jet-style/framework/blocks-style-manager/style-engine.php b/modules/jet-style/framework/blocks-style-manager/style-engine.php new file mode 100644 index 000000000..a6e70e543 --- /dev/null +++ b/modules/jet-style/framework/blocks-style-manager/style-engine.php @@ -0,0 +1,393 @@ + array( + 'minWidth' => 992, + ), + '__tablet' => array( + 'maxWidth' => 991, + ), + '__mobile' => array( + 'maxWidth' => 478, + ), + ); + + /** + * Constructor + * + * @param array $attrs Block attributes. + * @param array $css_props CSS properties. + */ + public function __construct( $attrs = array(), $css_props = array() ) { + + $this->class_name = self::get_classname_from_attrs( $attrs ); + + if ( ! empty( $attrs['_uniqueClassName'] ) ) { + unset( $attrs['_uniqueClassName'] ); + } + + $this->attrs = $attrs; + $this->css_props = $css_props; + } + + /** + * Get class name from attributes. + * + * @param array $attrs Block attributes. + * @return string + */ + public static function get_classname_from_attrs( $attrs = array() ) { + return ! empty( $attrs['_uniqueClassName'] ) ? $attrs['_uniqueClassName'] : ''; + } + + /** + * Get class name of the block + * + * @return string + */ + public function get_class_name() { + return $this->class_name; + } + + /** + * Load field handlers. + * + * This method is used to load field handlers for the block styles. + * It checks if the base class exists and includes it if not. + */ + public function load_field_handlers() { + + if ( ! class_exists( '\Crocoblock\Blocks_Style\Field_Handlers\Base' ) ) { + require_once dirname( __FILE__ ) . '/field-handlers/base.php'; + } + } + + /** + * Get styles for the block. + * + * @return array + */ + public function get_styles() { + + $this->load_field_handlers(); + + foreach ( array_keys( $this->breakpoints ) as $breakpoint ) { + + $this->current_breakpoint = $breakpoint; + + if ( ! empty( $this->attrs[ $breakpoint ] ) && is_array( $this->attrs[ $breakpoint ] ) ) { + + foreach ( $this->attrs[ $breakpoint ] as $prop_id => $prop_value ) { + + if ( ! empty( $this->css_props[ $prop_id ] ) ) { + $prop = $this->css_props[ $prop_id ]; + } else { + continue; + } + + if ( ! empty( $prop['css_selector'] ) && is_array( $prop['css_selector'] ) ) { + foreach ( $prop['css_selector'] as $selector => $definition ) { + $this->add_selector_to_styles( array( + 'prop' => $prop_id, + 'type' => $prop['type'], + 'selectoor' => $selector, + 'definition' => $definition, + 'value' => $prop_value, + ) ); + } + } + + if ( ! empty( $prop['css_var'] ) && is_array( $prop['css_var'] ) ) { + $handler = $this->get_field_handler( $prop['type'], $prop_value ); + if ( $handler ) { + $prop['css_var']['suffix'] = $breakpoint; + $variable = $handler->parse_variable( $prop['css_var'] ); + if ( ! empty( $variable ) ) { + $this->variables = array_merge( $this->variables, $variable ); + } + $prop['css_var']['suffix'] = false; + } + } + } + + unset( $this->attrs[ $breakpoint ] ); + } + + $this->current_breakpoint = ''; + } + + foreach ( $this->attrs as $prop_id => $prop_value ) { + + if ( ! empty( $this->css_props[ $prop_id ] ) ) { + $prop = $this->css_props[ $prop_id ]; + } else { + continue; + } + + if ( ! empty( $prop['css_selector'] ) && is_array( $prop['css_selector'] ) ) { + foreach ( $prop['css_selector'] as $selector => $definition ) { + $this->add_selector_to_styles( array( + 'prop' => $prop_id, + 'type' => $prop['type'], + 'selectoor' => $selector, + 'definition' => $definition, + 'value' => $prop_value, + ) ); + } + } + + if ( ! empty( $prop['css_var'] ) && is_array( $prop['css_var'] ) ) { + $handler = $this->get_field_handler( $prop['type'], $prop_value ); + if ( $handler ) { + $variable = $handler->parse_variable( $prop['css_var'] ); + if ( ! empty( $variable ) ) { + $this->variables = array_merge( $this->variables, $variable ); + } + } + } + } + + return array( + 'styles' => $this->stringify_selectors( $this->styles ) . $this->get_responsive_styles(), + 'variables' => $this->stringify_props( $this->variables ), + ); + } + + /** + * Get responsive styles. + * + * @return string + */ + public function get_responsive_styles() { + + $css = ''; + + if ( ! empty( $this->responsive_styles ) && is_array( $this->responsive_styles ) ) { + foreach ( $this->responsive_styles as $breakpoint => $selectors ) { + if ( ! empty( $selectors ) && is_array( $selectors ) ) { + $css .= '@media screen and ('; + if ( ! empty( $this->breakpoints[ $breakpoint ]['minWidth'] ) ) { + $css .= 'min-width: ' . $this->breakpoints[ $breakpoint ]['minWidth'] . 'px'; + } + if ( ! empty( $this->breakpoints[ $breakpoint ]['maxWidth'] ) ) { + $css .= 'max-width: ' . $this->breakpoints[ $breakpoint ]['maxWidth'] . 'px'; + } + $css .= ') { '; + $css .= $this->stringify_selectors( $selectors ); + $css .= ' } '; + } + } + } + + return ' ' . $css; + } + + /** + * Adds selector to styles. + * + * @param array $selector_data Selector data. + */ + public function add_selector_to_styles( $selector_data = array() ) { + + $parsed_rule = $this->generate_css_rules( + $selector_data['prop'], + $selector_data['type'], + $selector_data['definition'], + $selector_data['value'] + ); + + if ( empty( $parsed_rule ) ) { + return; + } + + $parsed_selector = $this->generate_css_selector( $selector_data['selectoor'] ); + + if ( ! $this->current_breakpoint ) { + + if ( empty( $this->styles[ $parsed_selector ] ) ) { + $this->styles[ $parsed_selector ] = array(); + } + + $this->styles[ $parsed_selector ][] = $parsed_rule; + } else { + + $breakpoint = $this->current_breakpoint; + + if ( empty( $this->responsive_styles[ $breakpoint ][ $parsed_selector ] ) ) { + $this->responsive_styles[ $breakpoint ][ $parsed_selector ] = array(); + } + + $this->responsive_styles[ $breakpoint ][ $parsed_selector ][] = $parsed_rule; + } + } + + /** + * Generates a valid CSS selector. + * + * @param string $selector CSS selector to generate. + * @return string Parsed CSS selector. + */ + public function generate_css_selector( $selector = '' ) { + + if ( empty( $selector ) ) { + return ''; + } + + return Field_Handlers\Base::replace_data( + $selector, + array( + 'wrapper' => '.' . $this->class_name, + ) + ); + } + + /** + * Generates a valid CSS props set for given selector + * and actual attributes data. + * + * @param string $prop_id Property ID (to get it form attributes). + * @param string $prop_type Property type to get correct parser. + * @param string $def CSS rule definition with macros, which will be replaced with values. + * @param array $value Value to parse (optional, if not set, will be taken from attributes). + * @return void + */ + public function generate_css_rules( $prop_id, $prop_type, $def = '', $value = array() ) { + + if ( empty($value ) ) { + return; + } + + $handler = $this->get_field_handler( $prop_type, $value ); + + if ( ! $handler ) { + return; + } + + return $handler->get_css_rule( $def ); + } + + /** + * Get field handler by type. + * + * @param string $type Field type. + * @param mixed $raw_value Raw value to parse. + * @return \Crocoblock\Blocks_Style\Field_Handlers\Base|false + */ + public function get_field_handler( $type = '', $raw_value = '' ) { + + switch ( $type ) { + + case 'range': + + if ( ! class_exists( '\Crocoblock\Blocks_Style\Field_Handlers\Range' ) ) { + require_once dirname( __FILE__ ) . '/field-handlers/range.php'; + } + + return new Field_Handlers\Range( $raw_value ); + + case 'typography': + + if ( ! class_exists( '\Crocoblock\Blocks_Style\Field_Handlers\Typography' ) ) { + require_once dirname( __FILE__ ) . '/field-handlers/typography.php'; + } + + return new Field_Handlers\Typography( $raw_value ); + + case 'border': + + if ( ! class_exists( '\Crocoblock\Blocks_Style\Field_Handlers\Border' ) ) { + require_once dirname( __FILE__ ) . '/field-handlers/border.php'; + } + + return new Field_Handlers\Border( $raw_value ); + + case 'dimensions': + + if ( ! class_exists( '\Crocoblock\Blocks_Style\Field_Handlers\Dimensions' ) ) { + require_once dirname( __FILE__ ) . '/field-handlers/dimensions.php'; + } + + return new Field_Handlers\Dimensions( $raw_value ); + + default: + return new Field_Handlers\Base( $raw_value ); + } + } + + /** + * Generates a valid CSS selectors set. + * + * Input format: + * array( + * 'selector_1' => array( 'css_prop_1:value_1', 'css_prop_2:value_2' ), + * 'selector_2' => array( 'css_prop_3:value_3', 'css_prop_4:value_4' ), + * ); + * + * Output format: + * '.selector_1 { css_prop_1: value_1; css_prop_2: value_2; } + * .selector_2 { css_prop_3: value_3; css_prop_4: value_4; }' + * + * @param array $selectors + * @return void + */ + public function stringify_selectors( $selectors = array() ) { + + $css = ''; + + if ( ! empty( $selectors ) && is_array( $selectors ) ) { + foreach ( $selectors as $selector => $props ) { + if ( ! empty( $props ) && is_array( $props ) ) { + $css .= $selector . ' { ' . $this->stringify_props( $props ) . ' } '; + } + } + } + + return trim( $css ); + } + + /** + * Generates a valid CSS definitions set. + * + * Input format: + * array( + * 'css_prop_1: value_1', + * 'css_prop_2: value_2', + * ); + * + * Output format: + * 'css_prop_1: value_1; css_prop_2: value_2;' + * + * @param array $props + * @return void + */ + public function stringify_props( $props = array() ) { + + if ( empty( $props ) || ! is_array( $props ) ) { + return ''; + } + + return implode( ';', array_map( function( $prop ) { + return rtrim( $prop, ';' ); + }, $props ) ) . ';'; + } +} \ No newline at end of file diff --git a/modules/jet-style/framework/blocks-style-manager/style-inserter.php b/modules/jet-style/framework/blocks-style-manager/style-inserter.php new file mode 100644 index 000000000..055c2afc9 --- /dev/null +++ b/modules/jet-style/framework/blocks-style-manager/style-inserter.php @@ -0,0 +1,78 @@ +class_name = $class_name; + $this->data = $data; + } + + /** + * Insert styles into the given content. + * + * 1. If the content is empty, it returns an empty string. + * 2. If $this->data contains not empty 'styles' key, + * it returns the styles wrapped in a ' . $content; + } + } + + return $content; + } +} diff --git a/modules/jet-style/framework/blocks-style-manager/style-manager.php b/modules/jet-style/framework/blocks-style-manager/style-manager.php new file mode 100644 index 000000000..d557915f0 --- /dev/null +++ b/modules/jet-style/framework/blocks-style-manager/style-manager.php @@ -0,0 +1,139 @@ +path = $args['path']; + $this->url = $args['url']; + require_once $this->path . 'path-url-trait.php'; + } + + /** + * Regsiter new block to supported blocks registry. + * + * Should be called before after init hook but wp_loaded hook with 999 priority. + * + * @since 1.0.0 + * @access public + * @param string $block_name Block name. + * @param array $args Style-manager related arguments. + * @return void + */ + public function register_block_support( $block_name = '', $args = array() ) { + + if ( ! $block_name ) { + _doing_it_wrong( + 'Crocoblock\Blocks_Style\Manager::register_block_support', + 'Block name is required.', + $this->version + ); + + return; + } + + $this->ensure_block_registry(); + Registry::instance()->register_block( $block_name, $args ); + } + + /** + * Get proxy class instance. + * + * @param string $block_name + * @return Proxy|false + */ + public function get_proxy( $block_name = '' ) { + + $this->ensure_block_registry(); + $block = Registry::instance()->get_block( $block_name ); + + if ( ! $block ) { + return false; + } + + if ( ! class_exists( '\Crocoblock\Blocks_Style\Proxy' ) ) { + require_once $this->path . 'proxy.php'; + } + + return new Proxy( $block ); + } + + /** + * Get block instance by name. + * + * @param string $block_name + * @return Block|false + */ + public function get_block( $block_name = '' ) { + $this->ensure_block_registry(); + return Registry::instance()->get_block( $block_name ); + } + + /** + * Allow to manually enqueue block editor assets + * + * @return void + */ + public function enqueue_editor_assets() { + + if ( ! class_exists( '\Crocoblock\Blocks_Style\Editor' ) ) { + require_once $this->path . 'editor.php'; + } + + Editor::instance() + ->set_url( $this->url ) + ->set_path( $this->path ) + ->editor_assets(); + } + + /** + * Ensure block registry is initialized. + * + * @since 1.0.0 + * @access protected + * @return void + */ + protected function ensure_block_registry() { + if ( ! class_exists( '\Crocoblock\Blocks_Style\Registry' ) ) { + require_once $this->path . 'registry.php'; + // Must be always called before registering the 1st block. + Registry::instance()->set_path( $this->path )->set_url( $this->url ); + } + } + +} diff --git a/modules/jet-style/framework/blocks-style-manager/webpack.config.js b/modules/jet-style/framework/blocks-style-manager/webpack.config.js new file mode 100644 index 000000000..132c912d2 --- /dev/null +++ b/modules/jet-style/framework/blocks-style-manager/webpack.config.js @@ -0,0 +1,18 @@ +const defaultConfig = require('@wordpress/scripts/config/webpack.config'); +const path = require('path'); + +module.exports = { + ...defaultConfig, + resolve: { + ...defaultConfig.resolve, + fullySpecified: false, + }, + entry: { + 'editor': path.resolve( __dirname, 'assets/src/editor.js' ), + //'editor-style': path.resolve( __dirname, 'assets/src/editor-style.scss' ), + }, + output: { + path: path.resolve(__dirname, 'assets/build'), + filename: '[name].js', + }, +}; diff --git a/modules/jet-style/framework/loader.php b/modules/jet-style/framework/loader.php new file mode 100644 index 000000000..61998096b --- /dev/null +++ b/modules/jet-style/framework/loader.php @@ -0,0 +1,155 @@ +modules = $modules; + $this->include_modules(); + } + + /** + * Include latest versions of modules in current loader instance. + * All available version preiously stored by 'store_versions' methods of each loader instance. + * + * @return boolean + */ + public function include_modules() { + + $modules_data = wp_cache_get( $this->key ); + + foreach ( $this->modules as $module_path ) { + + // If module path not passed, skip it. + if ( empty( $module_path ) || ! is_string( $module_path ) ) { + continue; + } + + // If module already included, skip it. + if ( isset( $this->included_modules[ $module_path ] ) ) { + continue; + } + + $module_slug = basename( $module_path ); + + if ( ! empty( $modules_data[ $module_slug ] ) ) { + $module_path = $this->get_latest_version_path( $modules_data[ $module_slug ] ); + } else { + + $modules_data[ $module_slug ] = array( + '1.0.0' => $module_path, + ); + + wp_cache_set( $this->key, $modules_data ); + + require_once $module_path; + } + + $module_dir = pathinfo( $module_path, PATHINFO_DIRNAME ); + $module_url = $this->get_module_url( $module_dir ); + $module_dir = trailingslashit( $module_dir ); + + $this->included_modules[ $module_slug ] = array( + 'path' => $module_dir, + 'url' => $module_url, + ); + } + } + + /** + * Get URL of module directory by it's path. + * + * @param string $dir Directory path. + * @return string Returns normalized path to module directory. + */ + public function get_module_url( $dir ) { + $normalize_dir = wp_normalize_path( $dir ); + $plugin_dir = wp_normalize_path( WP_PLUGIN_DIR ); + + if ( 0 === strpos( $normalize_dir, $plugin_dir ) ) { + $url = str_replace( + '\\', + '/', + str_replace( $plugin_dir, plugins_url(), $normalize_dir ) + ); + } else { + $url = str_replace( + '\\', + '/', + str_replace( wp_normalize_path( WP_CONTENT_DIR ), content_url(), $normalize_dir ) + ); + } + + return apply_filters( 'cx_include_module_url', trailingslashit( $url ), $dir ); + } + + /** + * Get latest version of module by paths and versions. + * + * @param array $paths_by_versions Array of paths by versions. + * @return string|boolean Returns path to latest version of module or false if not found. + */ + public function get_latest_version_path( $paths_by_versions = array() ) { + + if ( empty( $paths_by_versions ) || ! is_array( $paths_by_versions ) ) { + return false; + } + + $latest_version = false; + $highest_version = null; + foreach ( $paths_by_versions as $version => $path ) { + if ( null === $highest_version || version_compare( $version, $highest_version, '>' ) ) { + $highest_version = $version; + $latest_version = $path; + } + } + + if ( ! file_exists( $latest_version ) ) { + return false; + } + + return $latest_version; + } + + /** + * Retireve path and URL of included module directory + * + * @param [type] $file [description] + * @return [type] [description] + */ + public function get_included_module_data( $file ) { + return isset( $this->included_modules[ $file ] ) ? $this->included_modules[ $file ] : false; + } +} diff --git a/modules/jet-style/module.php b/modules/jet-style/module.php index 2fd9d52a1..654a13112 100644 --- a/modules/jet-style/module.php +++ b/modules/jet-style/module.php @@ -52,6 +52,9 @@ public function condition(): bool { } public function on_install() { + + Style_Manager::instance(); + $this->compiler = new Css_Compiler_Manager(); \WP_Block_Supports::get_instance()->register( diff --git a/modules/jet-style/style-manager.php b/modules/jet-style/style-manager.php new file mode 100644 index 000000000..d3d96166a --- /dev/null +++ b/modules/jet-style/style-manager.php @@ -0,0 +1,46 @@ +get_included_module_data( 'style-manager.php' ); + + $this->manager = new \Crocoblock\Blocks_Style\Manager( array( + 'path' => $module_data['path'], + 'url' => $module_data['url'], + ) ); + + add_action( 'init', array( $this, 'register_blocks' ), 99 ); + } + + /** + * Get style manager instance + * + * @return \Crocoblock\Blocks_Style\Manager + */ + public function get_manager() { + return $this->manager; + } + + /** + * Register support for the blocks + * + * @return void + */ + public function register_blocks() { + do_action( 'jet-form-builder/styles/register-block', $this ); + } +} \ No newline at end of file diff --git a/modules/option-field/blocks/checkbox/block-type.php b/modules/option-field/blocks/checkbox/block-type.php index 47bff27d4..02cbf7601 100644 --- a/modules/option-field/blocks/checkbox/block-type.php +++ b/modules/option-field/blocks/checkbox/block-type.php @@ -188,7 +188,7 @@ public function jsm_controls() { array( 'id' => 'item_normal_background_color', 'type' => 'color-picker', - 'label' => __( 'Background Color', 'jet-form-builder' ), + 'label' => __( 'Background', 'jet-form-builder' ), 'css_selector' => array( '{{WRAPPER}} ' . $this->css_scheme['item'] . ' > .components-base-control__field label' => 'background-color: {{VALUE}}', '{{WRAPPER}} ' . $this->css_scheme['option-label'] => 'background-color: {{VALUE}}', @@ -285,7 +285,7 @@ public function jsm_controls() { array( 'id' => 'checkbox_normal_background_color', 'type' => 'color-picker', - 'label' => __( 'Background Color', 'jet-form-builder' ), + 'label' => __( 'Background', 'jet-form-builder' ), 'attributes' => array( 'default' => array( 'value' => '#FFFFFF', @@ -325,7 +325,7 @@ public function jsm_controls() { array( 'id' => 'checkbox_checked_background_color', 'type' => 'color-picker', - 'label' => __( 'Background Color', 'jet-form-builder' ), + 'label' => __( 'Background', 'jet-form-builder' ), 'attributes' => array( 'default' => array( 'value' => '#398ffc', diff --git a/modules/option-field/blocks/radio/block-type.php b/modules/option-field/blocks/radio/block-type.php index 6abbb7ec0..e906cebcc 100644 --- a/modules/option-field/blocks/radio/block-type.php +++ b/modules/option-field/blocks/radio/block-type.php @@ -202,7 +202,7 @@ public function jsm_controls() { array( 'id' => 'item_normal_background_color', 'type' => 'color-picker', - 'label' => __( 'Background Color', 'jet-form-builder' ), + 'label' => __( 'Background', 'jet-form-builder' ), 'css_selector' => array( // editor @@ -304,7 +304,7 @@ public function jsm_controls() { array( 'id' => 'radio_normal_background_color', 'type' => 'color-picker', - 'label' => __( 'Background Color', 'jet-form-builder' ), + 'label' => __( 'Background', 'jet-form-builder' ), 'attributes' => array( 'default' => array( 'value' => '#FFFFFF', @@ -346,7 +346,7 @@ public function jsm_controls() { array( 'id' => 'radio_checked_background_color', 'type' => 'color-picker', - 'label' => __( 'Background Color', 'jet-form-builder' ), + 'label' => __( 'Background', 'jet-form-builder' ), 'attributes' => array( 'default' => array( 'value' => '#398ffc', diff --git a/modules/option-field/blocks/select/block-type.php b/modules/option-field/blocks/select/block-type.php index 9e47279f8..13b876db8 100644 --- a/modules/option-field/blocks/select/block-type.php +++ b/modules/option-field/blocks/select/block-type.php @@ -135,7 +135,7 @@ public function jsm_controls() { array( 'id' => 'item_normal_background_color', 'type' => 'color-picker', - 'label' => __( 'Background Color', 'jet-form-builder' ), + 'label' => __( 'Background', 'jet-form-builder' ), 'css_selector' => array( '{{WRAPPER}} ' . $this->css_scheme['select'] => 'background-color: {{VALUE}}', ), From d9cbbc1c16a67eae2261e692cf6b227e28155904 Mon Sep 17 00:00:00 2001 From: Andrew Shevchenko Date: Wed, 31 Dec 2025 11:23:48 +0200 Subject: [PATCH 02/13] UPD: rebuild scripts to resolve conflicts --- assets/build/admin/pages/jfb-addons.asset.php | 2 +- assets/build/admin/pages/jfb-addons.js | 1797 +---------------- assets/build/editor/default.builder.asset.php | 2 +- assets/build/editor/default.builder.js | 316 +-- assets/build/frontend/dynamic.value.asset.php | 2 +- assets/build/frontend/dynamic.value.js | 439 +--- .../media.field.restrictions.asset.php | 2 +- .../frontend/media.field.restrictions.js | 465 +---- assets/build/frontend/multi.step.asset.php | 2 +- assets/build/frontend/multi.step.js | 686 +------ .../build/friendly.captcha/frontend.asset.php | 2 +- .../assets/build/friendly.captcha/frontend.js | 2 +- .../components/assets/build/index.asset.php | 2 +- modules/components/assets/build/index.js | 2 +- .../html-parser/assets/build/parser.asset.php | 2 +- modules/html-parser/assets/build/parser.js | 2 +- 16 files changed, 16 insertions(+), 3709 deletions(-) diff --git a/assets/build/admin/pages/jfb-addons.asset.php b/assets/build/admin/pages/jfb-addons.asset.php index aa8c9012e..d6822f163 100644 --- a/assets/build/admin/pages/jfb-addons.asset.php +++ b/assets/build/admin/pages/jfb-addons.asset.php @@ -1 +1 @@ - array(), 'version' => '47099d8c1eee224226ad'); + array(), 'version' => 'bfae07f8ba82cbe1f94d'); diff --git a/assets/build/admin/pages/jfb-addons.js b/assets/build/admin/pages/jfb-addons.js index 0a4f951c4..5cec6d745 100644 --- a/assets/build/admin/pages/jfb-addons.js +++ b/assets/build/admin/pages/jfb-addons.js @@ -1,1796 +1 @@ -/******/ (() => { // webpackBootstrap -/******/ var __webpack_modules__ = ({ - -/***/ "../../node_modules/babel-loader/lib/index.js!../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-addons/AddonsPage.vue?vue&type=script&lang=js": -/*!*********************************************************************************************************************************************************************************************************************************************!*\ - !*** ../../node_modules/babel-loader/lib/index.js!../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-addons/AddonsPage.vue?vue&type=script&lang=js ***! - \*********************************************************************************************************************************************************************************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _components_AddonItem_vue__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./components/AddonItem.vue */ "./admin/pages/jfb-addons/components/AddonItem.vue"); -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// - - -const { - applyFilters, - doAction -} = wp.hooks; -window.jfbEventBus = new Vue(); -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ - name: 'jfb-addons', - components: { - AddonItem: _components_AddonItem_vue__WEBPACK_IMPORTED_MODULE_0__["default"] - }, - data() { - return { - allAddons: window.JetFBPageConfig.allAddons || {}, - licenseList: window.JetFBPageConfig.licenseList || [], - licenseKey: window.JetFBPageConfig.licenseKey || '', - themeInfo: window.JetFBPageConfig.themeInfo || false, - miscInfo: window.JetFBPageConfig.miscInfo || false, - licenseActivated: false, - licensePopupVisible: false, - licenseProccesingState: false, - licenseAjaxAction: null, - checkUpdatesAction: null, - checkUpdatesProcessed: false, - proccesingState: false - }; - }, - mounted: function () { - window.jfbEventBus.$on('updateAddonData', this.updateAddonData); - window.jfbEventBus.$on('showLicensePopup', this.showLicensePopup); - }, - computed: { - isLicenseMode() { - return '' !== window.JetFBPageConfig.licenseMode ? true : false; - }, - isLicenseActivated() { - return 0 !== this.licenseList.length; - }, - licenseActionType() { - return !this.isLicenseActivated ? 'activate_license' : 'deactivate_license'; - }, - installedAddonList() { - let installedAddonsList = {}; - for (let addonSlug in this.allAddons) { - if (this.allAddons[addonSlug]['isInstalled']) { - installedAddonsList[addonSlug] = this.allAddons[addonSlug]; - } - } - return installedAddonsList; - }, - availableAddonList() { - let availableAddonList = {}; - for (let addonSlug in this.allAddons) { - if (!this.allAddons[addonSlug]['isInstalled']) { - availableAddonList[addonSlug] = this.allAddons[addonSlug]; - } - } - return availableAddonList; - }, - goProLink() { - let pricingPageUrl = this.miscInfo.pricingPageUrl, - utmParams = this.getUtmParamsString({ - utm_source: `plugin`, - utm_medium: 'addons', - utm_campaign: 'go-pro-button', - utm_content: `license-not-activated/${this.themeInfo.authorSlug}` - }); - return `${pricingPageUrl}?${utmParams}`; - } - }, - methods: { - showLicensePopup() { - this.licensePopupVisible = true; - }, - updateAddonData(data) { - let slug = data.slug, - addonData = data.addonData, - pluginAction = data.action, - reloadActionMap = ['activate', 'deactivate', 'update']; - this.allAddons[slug] = Object.assign({}, this.allAddons[slug], addonData); - if (reloadActionMap.includes(pluginAction)) { - this.proccesingState = true; - setTimeout(function () { - window.location.reload(); - }, 1000); - } - }, - licenseAction() { - var self = this; - if ('' === this.licenseKey) { - self.$CXNotice.add({ - message: 'License key is missing', - type: 'error', - duration: 4000 - }); - return false; - } - this.licenseProccesingState = true; - self.licenseAjaxAction = jQuery.ajax({ - type: 'POST', - url: window.JetFBPageConfig.ajaxUrl, - dataType: 'json', - data: { - action: 'jfb_license_action', - nonce: window.JetFBPageConfig.nonce, - data: { - license: self.licenseKey, - action: self.licenseActionType - } - }, - beforeSend: (jqXHR, ajaxSettings) => { - if (null !== self.licenseAjaxAction) { - self.licenseAjaxAction.abort(); - } - }, - success: (responce, textStatus, jqXHR) => { - self.licenseProccesingState = false; - if (responce.success) { - self.$CXNotice.add({ - message: responce.message, - type: 'success', - duration: 4000 - }); - let licenseData = responce.data; - licenseData['license_key'] = self.licenseKey; - switch (self.licenseActionType) { - case 'activate_license': - self.licenseList.push(licenseData); - break; - case 'deactivate_license': - self.licenseList = self.licenseList.filter(licenseData => { - return self.licenseKey !== licenseData['license_key']; - }); - self.licenseKey = ''; - break; - } - self.licensePopupVisible = false; - } else { - self.$CXNotice.add({ - message: responce.message, - type: 'error', - duration: 4000 - }); - } - } - }); - }, - checkPluginsUpdate: function () { - var self = this; - self.checkUpdatesAction = jQuery.ajax({ - type: 'POST', - url: window.JetFBPageConfig.ajaxUrl, - dataType: 'json', - data: { - action: 'jfb_license_service_action', - nonce: window.JetFBPageConfig.nonce, - data: { - action: 'check-plugin-update' - } - }, - beforeSend: (jqXHR, ajaxSettings) => { - if (null !== self.checkUpdatesAction) { - self.checkUpdatesAction.abort(); - } - self.checkUpdatesProcessed = true; - }, - success: function (responce, textStatus, jqXHR) { - self.checkUpdatesProcessed = false; - if (responce.success) { - self.$CXNotice.add({ - message: responce.message, - type: 'success', - duration: 4000 - }); - self.proccesingState = true; - setTimeout(function () { - window.location.reload(); - }, 1000); - } else { - self.$CXNotice.add({ - message: responce.message, - type: 'error', - duration: 4000 - }); - } - } - }); - }, - addLicense(licenseData) { - this.licenseList.push(licenseData); - self.proccesingState = true; - setTimeout(function () { - window.location.reload(); - }, 3000); - }, - removeLicense(licenceKey) { - let removingIndex = false; - for (let licenceIndex in this.licenseList) { - let licenseData = this.licenseList[licenceIndex]; - if (licenseData['licenseKey'] === licenceKey) { - removingIndex = licenceIndex; - break; - } - } - if (removingIndex) { - this.licenseList.splice(removingIndex, 1); - } - this.licensePopupVisible = false; - setTimeout(function () { - window.location.reload(); - }, 500); - }, - getUtmParamsString(data = {}) { - let utmString = false; - if (0 === Object.keys(data).length) { - return utmString; - } - utmString = Object.keys(data).map(key => { - return [key, data[key]].map(encodeURIComponent).join('='); - }).join('&'); - return utmString; - } - } -}); - -/***/ }), - -/***/ "../../node_modules/babel-loader/lib/index.js!../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-addons/components/AddonItem.vue?vue&type=script&lang=js": -/*!*******************************************************************************************************************************************************************************************************************************************************!*\ - !*** ../../node_modules/babel-loader/lib/index.js!../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-addons/components/AddonItem.vue?vue&type=script&lang=js ***! - \*******************************************************************************************************************************************************************************************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// -// - -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ - name: 'addon-item', - props: { - addonData: Object - }, - data() { - return { - actionPlugin: false, - actionPluginRequest: null, - actionPluginProcessed: false, - updatePluginProcessed: false - }; - }, - computed: { - classList: function () { - return ['jfb-addons__item', this.updateAvaliable ? 'update-avaliable' : false, this.activateAvaliable ? 'activate-avaliable' : false]; - }, - learnMoreAvaliable() { - return !this.$parent.isLicenseActivated ? true : false; - }, - activateLicenceActionAvaliable() { - return !this.$parent.isLicenseActivated && this.$parent.isLicenseMode ? true : false; - }, - installActionAvaliable() { - return !this.addonData['isInstalled'] && this.$parent.isLicenseActivated ? true : false; - }, - activateActionAvaliable() { - return this.addonData['isInstalled'] && !this.addonData['isActivated'] ? true : false; - }, - deactivateActionAvaliable() { - return this.addonData['isInstalled'] && this.addonData['isActivated'] ? true : false; - }, - updateAvaliable() { - return this.addonData['updateAvaliable'] ? true : false; - }, - isLicenseMode() { - return this.$parent.isLicenseMode; - }, - proccesingState() { - return this.actionPluginProcessed || this.updatePluginProcessed; - }, - learnMoreUrl() { - const license = this.$parent.isLicenseActivated ? 'jetformbuilder-license' : 'license-not-activated'; - const [campaign] = this.addonData.slug.split('/'); - let demoUrl = this.addonData.demo, - utmParams = this.$parent.getUtmParamsString({ - utm_source: `plugin`, - utm_medium: 'addons', - utm_campaign: campaign.replace('jet-form-builder-', ''), - utm_content: `${license}/${this.$parent.themeInfo.authorSlug}` - }); - return `${demoUrl}?${utmParams}`; - } - }, - methods: { - activateLicense() { - window.jfbEventBus.$emit('showLicensePopup'); - }, - installPlugin() { - this.actionPlugin = 'install'; - this.pluginAction(); - }, - deactivatePlugin() { - this.actionPlugin = 'deactivate'; - this.pluginAction(); - }, - activatePlugin() { - this.actionPlugin = 'activate'; - this.pluginAction(); - }, - updatePlugin() { - if (this.updateAvaliable) { - this.actionPlugin = 'update'; - this.pluginAction(); - } - }, - pluginAction: function () { - let self = this; - self.actionPluginRequest = jQuery.ajax({ - type: 'POST', - url: window.JetFBPageConfig.ajaxUrl, - dataType: 'json', - data: { - action: `jfb_addon_${self.actionPlugin}_action`, - nonce: window.JetFBPageConfig.nonce, - data: { - plugin: self.addonData['slug'] - } - }, - beforeSend: function (jqXHR, ajaxSettings) { - if (null !== self.actionPluginRequest) { - self.actionPluginRequest.abort(); - } - switch (self.actionPlugin) { - case 'install': - case 'activate': - case 'deactivate': - self.actionPluginProcessed = true; - break; - case 'update': - self.updatePluginProcessed = true; - break; - } - }, - success: function (responce, textStatus, jqXHR) { - if (responce.success) { - self.$CXNotice.add({ - message: responce.message, - type: 'success', - duration: 4000 - }); - window.jfbEventBus.$emit('updateAddonData', { - slug: self.addonData['slug'], - addonData: responce.data, - action: self.actionPlugin - }); - } else { - self.$CXNotice.add({ - message: responce.message, - type: 'error', - duration: 4000 - }); - } - }, - error: function (jqXHR, textStatus, errorThrown) { - self.$CXNotice.add({ - message: errorThrown, - type: 'error', - duration: 4000 - }); - }, - complete: () => this.onEndRequest() - }); - }, - onEndRequest() { - switch (this.actionPlugin) { - case 'install': - case 'activate': - case 'deactivate': - this.actionPluginProcessed = false; - break; - case 'update': - this.updatePluginProcessed = false; - break; - } - } - } -}); - -/***/ }), - -/***/ "../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-addons/AddonsPage.vue?vue&type=style&index=0&id=5e249d0e&lang=scss": -/*!*************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-addons/AddonsPage.vue?vue&type=style&index=0&id=5e249d0e&lang=scss ***! - \*************************************************************************************************************************************************************************************************************************************************************************************************************/ -/***/ ((module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js */ "../../node_modules/css-loader/dist/runtime/sourceMaps.js"); -/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../node_modules/css-loader/dist/runtime/api.js */ "../../node_modules/css-loader/dist/runtime/api.js"); -/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); -// Imports - - -var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); -// Module -___CSS_LOADER_EXPORT___.push([module.id, `.proccesing-state { - opacity: 0.5; - pointer-events: none; -} -.jfb-addons-page__inner { - padding: 30px; - height: 100%; -} -.jfb-addons-page__header { - margin-bottom: 30px; -} -.jfb-addons-page__header-controls { - display: flex; - justify-content: flex-end; - align-items: center; - padding-bottom: 15px; - border-bottom: 1px solid #DCDCDD; -} -.jfb-addons-page__header-controls > .cx-vui-button { - margin-left: 10px; -} -.jfb-addons-page .cx-vui-button { - font-size: 13px; - font-weight: 400; - background-color: transparent; -} -.jfb-addons-page .cx-vui-button .button-icon { - margin-right: 5px; -} -.jfb-addons-page .cx-vui-button--style-accent { - color: #007cba; - box-shadow: inset 0 0 0 1px #007cba; -} -.jfb-addons-page .cx-vui-button--style-accent:hover { - background-color: rgba(0, 124, 186, 0.0705882353); -} -.jfb-addons-page .cx-vui-button--style-accent .button-icon path { - fill: #007cba; -} -.jfb-addons-page .cx-vui-button--style-danger { - color: #d6336c; - box-shadow: inset 0 0 0 1px #d6336c; -} -.jfb-addons-page .cx-vui-button--style-danger:hover { - background-color: rgba(214, 51, 108, 0.0705882353); -} -.jfb-addons-page .cx-vui-button--style-danger .button-icon path { - fill: #d6336c; -} -.jfb-addons-page .cx-vui-button__content > span { - display: flex; - justify-content: center; - align-items: center; -} -.jfb-addons-page .cx-vui-popup__header { - padding-bottom: 15px; - border-bottom: 1px solid #DCDCDD; - margin-bottom: 30px; -} -.jfb-addons-page .cx-vui-popup__header-title { - font-weight: 500; - font-size: 24px; - line-height: 36px; - color: #23282D; -} -.jfb-addons-page__license-form { - display: flex; - flex-direction: column; - justify-content: flex-start; - align-items: stretch; -} -.jfb-addons-page__license-form > span { - margin-bottom: 10px; -} -.jfb-addons-page__license-input { - margin-bottom: 10px; -} -.jfb-addons-page .go-pro-banner { - display: flex; - flex-direction: column; - justify-content: center; - align-items: center; - padding: 24px 0; - border-bottom: 1px solid #DCDCDD; -} -.jfb-addons-page .go-pro-banner__subtitle { - font-size: 18px; - line-height: 1.25; - font-weight: 500; - color: #007CBA; - margin-bottom: 5px; -} -.jfb-addons-page .go-pro-banner__title { - font-size: 24px; - line-height: 1.25; - font-weight: 500; - color: #23282D; - margin-bottom: 20px; -} -.jfb-addons-page .go-pro-banner__button { - color: white; - background-color: #007CBA; -}`, "",{"version":3,"sources":["webpack://./admin/pages/jfb-addons/AddonsPage.vue","webpack://./../AddonsPage.vue"],"names":[],"mappings":"AAwaA;EACC,YAAA;EACA,oBAAA;ACvaD;AD2aC;EACC,aAAA;EACA,YAAA;ACxaF;AD2aC;EACC,mBAAA;ACzaF;AD4aC;EACC,aAAA;EACA,yBAAA;EACA,mBAAA;EACA,oBAAA;EACA,gCAAA;AC1aF;AD4aE;EACC,iBAAA;AC1aH;AD8aC;EACC,eAAA;EACA,gBAAA;EACA,6BAAA;AC5aF;AD8aE;EACC,iBAAA;AC5aH;AD+aE;EACC,cAAA;EACA,mCAAA;AC7aH;AD+aG;EACC,iDAAA;AC7aJ;ADibI;EACC,aAAA;AC/aL;ADobE;EACC,cAAA;EACA,mCAAA;AClbH;ADobG;EACC,kDAAA;AClbJ;ADsbI;EACC,aAAA;ACpbL;AD0bG;EACC,aAAA;EACA,uBAAA;EACA,mBAAA;ACxbJ;AD8bE;EACC,oBAAA;EACA,gCAAA;EACA,mBAAA;AC5bH;AD+bE;EACC,gBAAA;EACA,eAAA;EACA,iBAAA;EACA,cAAA;AC7bH;ADocC;EACC,aAAA;EACA,sBAAA;EACA,2BAAA;EACA,oBAAA;AClcF;ADocE;EACC,mBAAA;AClcH;ADscC;EACC,mBAAA;ACpcF;ADucC;EACC,aAAA;EACA,sBAAA;EACA,uBAAA;EACA,mBAAA;EACA,eAAA;EACA,gCAAA;ACrcF;ADucE;EACC,eAAA;EACA,iBAAA;EACA,gBAAA;EACA,cAAA;EACA,kBAAA;ACrcH;ADwcE;EACC,eAAA;EACA,iBAAA;EACA,gBAAA;EACA,cAAA;EACA,mBAAA;ACtcH;ADycE;EACC,YAAA;EACA,yBAAA;ACvcH","sourcesContent":["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.proccesing-state {\n\topacity: 0.5;\n\tpointer-events: none;\n}\n\n.jfb-addons-page {\n\t&__inner {\n\t\tpadding: 30px;\n\t\theight: 100%;\n\t}\n\n\t&__header {\n\t\tmargin-bottom: 30px;\n\t}\n\n\t&__header-controls {\n\t\tdisplay: flex;\n\t\tjustify-content: flex-end;\n\t\talign-items: center;\n\t\tpadding-bottom: 15px;\n\t\tborder-bottom: 1px solid #DCDCDD;\n\n\t\t> .cx-vui-button {\n\t\t\tmargin-left: 10px;\n\t\t}\n\t}\n\n\t.cx-vui-button {\n\t\tfont-size: 13px;\n\t\tfont-weight: 400;\n\t\tbackground-color: transparent;\n\n\t\t.button-icon {\n\t\t\tmargin-right: 5px;\n\t\t}\n\n\t\t&--style-accent {\n\t\t\tcolor: #007cba;\n\t\t\tbox-shadow: inset 0 0 0 1px #007cba;\n\n\t\t\t&:hover {\n\t\t\t\tbackground-color: #007cba12;\n\t\t\t}\n\n\t\t\t.button-icon {\n\t\t\t\tpath {\n\t\t\t\t\tfill: #007cba;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&--style-danger {\n\t\t\tcolor: #d6336c;\n\t\t\tbox-shadow: inset 0 0 0 1px #d6336c;\n\n\t\t\t&:hover {\n\t\t\t\tbackground-color: #d6336c12;\n\t\t\t}\n\n\t\t\t.button-icon {\n\t\t\t\tpath {\n\t\t\t\t\tfill: #d6336c;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t&__content {\n\t\t\t> span {\n\t\t\t\tdisplay: flex;\n\t\t\t\tjustify-content: center;\n\t\t\t\talign-items: center;\n\t\t\t}\n\t\t}\n\t}\n\n\t.cx-vui-popup {\n\t\t&__header {\n\t\t\tpadding-bottom: 15px;\n\t\t\tborder-bottom: 1px solid #DCDCDD;\n\t\t\tmargin-bottom: 30px;\n\t\t}\n\n\t\t&__header-title {\n\t\t\tfont-weight: 500;\n\t\t\tfont-size: 24px;\n\t\t\tline-height: 36px;\n\t\t\tcolor: #23282D;\n\t\t}\n\t}\n\n\t&__license-popup {\n\t}\n\n\t&__license-form {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: flex-start;\n\t\talign-items: stretch;\n\n\t\t> span {\n\t\t\tmargin-bottom: 10px;\n\t\t}\n\t}\n\n\t&__license-input {\n\t\tmargin-bottom: 10px;\n\t}\n\n\t.go-pro-banner {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\tjustify-content: center;\n\t\talign-items: center;\n\t\tpadding: 24px 0;\n\t\tborder-bottom: 1px solid #DCDCDD;\n\n\t\t&__subtitle {\n\t\t\tfont-size: 18px;\n\t\t\tline-height: 1.25;\n\t\t\tfont-weight: 500;\n\t\t\tcolor: #007CBA;\n\t\t\tmargin-bottom: 5px;\n\t\t}\n\n\t\t&__title {\n\t\t\tfont-size: 24px;\n\t\t\tline-height: 1.25;\n\t\t\tfont-weight: 500;\n\t\t\tcolor: #23282D;\n\t\t\tmargin-bottom: 20px;\n\t\t}\n\n\t\t&__button {\n\t\t\tcolor: white;\n\t\t\tbackground-color: #007CBA;\n\t\t}\n\t}\n}\n\n",".proccesing-state {\n opacity: 0.5;\n pointer-events: none;\n}\n\n.jfb-addons-page__inner {\n padding: 30px;\n height: 100%;\n}\n.jfb-addons-page__header {\n margin-bottom: 30px;\n}\n.jfb-addons-page__header-controls {\n display: flex;\n justify-content: flex-end;\n align-items: center;\n padding-bottom: 15px;\n border-bottom: 1px solid #DCDCDD;\n}\n.jfb-addons-page__header-controls > .cx-vui-button {\n margin-left: 10px;\n}\n.jfb-addons-page .cx-vui-button {\n font-size: 13px;\n font-weight: 400;\n background-color: transparent;\n}\n.jfb-addons-page .cx-vui-button .button-icon {\n margin-right: 5px;\n}\n.jfb-addons-page .cx-vui-button--style-accent {\n color: #007cba;\n box-shadow: inset 0 0 0 1px #007cba;\n}\n.jfb-addons-page .cx-vui-button--style-accent:hover {\n background-color: rgba(0, 124, 186, 0.0705882353);\n}\n.jfb-addons-page .cx-vui-button--style-accent .button-icon path {\n fill: #007cba;\n}\n.jfb-addons-page .cx-vui-button--style-danger {\n color: #d6336c;\n box-shadow: inset 0 0 0 1px #d6336c;\n}\n.jfb-addons-page .cx-vui-button--style-danger:hover {\n background-color: rgba(214, 51, 108, 0.0705882353);\n}\n.jfb-addons-page .cx-vui-button--style-danger .button-icon path {\n fill: #d6336c;\n}\n.jfb-addons-page .cx-vui-button__content > span {\n display: flex;\n justify-content: center;\n align-items: center;\n}\n.jfb-addons-page .cx-vui-popup__header {\n padding-bottom: 15px;\n border-bottom: 1px solid #DCDCDD;\n margin-bottom: 30px;\n}\n.jfb-addons-page .cx-vui-popup__header-title {\n font-weight: 500;\n font-size: 24px;\n line-height: 36px;\n color: #23282D;\n}\n.jfb-addons-page__license-form {\n display: flex;\n flex-direction: column;\n justify-content: flex-start;\n align-items: stretch;\n}\n.jfb-addons-page__license-form > span {\n margin-bottom: 10px;\n}\n.jfb-addons-page__license-input {\n margin-bottom: 10px;\n}\n.jfb-addons-page .go-pro-banner {\n display: flex;\n flex-direction: column;\n justify-content: center;\n align-items: center;\n padding: 24px 0;\n border-bottom: 1px solid #DCDCDD;\n}\n.jfb-addons-page .go-pro-banner__subtitle {\n font-size: 18px;\n line-height: 1.25;\n font-weight: 500;\n color: #007CBA;\n margin-bottom: 5px;\n}\n.jfb-addons-page .go-pro-banner__title {\n font-size: 24px;\n line-height: 1.25;\n font-weight: 500;\n color: #23282D;\n margin-bottom: 20px;\n}\n.jfb-addons-page .go-pro-banner__button {\n color: white;\n background-color: #007CBA;\n}"],"sourceRoot":""}]); -// Exports -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); - - -/***/ }), - -/***/ "../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-addons/components/AddonItem.vue?vue&type=style&index=0&id=b50743b4&lang=scss": -/*!***********************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-addons/components/AddonItem.vue?vue&type=style&index=0&id=b50743b4&lang=scss ***! - \***********************************************************************************************************************************************************************************************************************************************************************************************************************/ -/***/ ((module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) -/* harmony export */ }); -/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js */ "../../node_modules/css-loader/dist/runtime/sourceMaps.js"); -/* harmony import */ var _node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0__); -/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../../../../../node_modules/css-loader/dist/runtime/api.js */ "../../node_modules/css-loader/dist/runtime/api.js"); -/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1__); -// Imports - - -var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default()((_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default())); -// Module -___CSS_LOADER_EXPORT___.push([module.id, `.jfb-addons { - margin-bottom: 50px; -} -.jfb-addons:last-child { - margin-bottom: 0; -} -.jfb-addons a { - color: #007cba; -} -.jfb-addons__header { - margin-bottom: 20px; -} -.jfb-addons__list { - display: grid; - grid-template-columns: repeat(4, 1fr); - gap: 40px; -} -@media (max-width: 1140px) { -.jfb-addons__list { - grid-template-columns: repeat(2, 1fr); -} -} -.jfb-addons__item { - transition: box-shadow 0.3s ease-out; - border-radius: 10px; -} -.jfb-addons__item:hover { - box-shadow: 0px 4px 28px rgba(15, 23, 42, 0.1); -} -.jfb-addons__item.activated .jfb-addons__item-info { - background-color: white; -} -.jfb-addons__item.update-avaliable .jfb-addons__item-name .version { - background-color: #D6336C; -} -.jfb-addons__item.update-avaliable .jfb-addons__item-update .latest-version { - color: white; - background-color: #46B450; - padding: 2px 8px; - border-radius: 4px; -} -.jfb-addons__item-inner { - display: flex; - flex-direction: column; - align-items: stretch; - height: 100%; -} -.jfb-addons__item-thumb { - border-radius: 10px 10px 0 0; - line-height: 0; - overflow: hidden; - position: relative; -} -.jfb-addons__item-thumb .pro-badge { - position: absolute; - top: 12px; - left: 12px; -} -.jfb-addons__item-thumb img { - width: 100%; - height: auto; -} -.jfb-addons__item-info { - display: flex; - flex-direction: column; - align-items: stretch; - flex: 1 1 auto; - padding: 20px; - border-radius: 0 0 10px 10px; - border-width: 0 1px 1px 1px; - border-color: #DCDCDD; - border-style: solid; - background-color: white; -} -.jfb-addons__item-name { - display: flex; - justify-content: space-between; - align-items: flex-start; - margin-bottom: 10px; -} -.jfb-addons__item-name .label { - font-size: 20px; - font-weight: 700; - line-height: 1.25; -} -.jfb-addons__item-name .version { - padding: 1px 8px; - border-radius: 4px; - color: white; - background-color: #46B450; - margin-left: 10px; -} -.jfb-addons__item-update { - color: #7b7e81; - margin-bottom: 10px; -} -.jfb-addons__item-license { - margin-bottom: 10px; - color: #7b7e81; -} -.jfb-addons__item-license .cx-vui-button { - margin-left: 3px; -} -.jfb-addons__item-desc { - flex: 1 1 auto; -} -.jfb-addons__item-desc a { - text-decoration: none; -} -.jfb-addons__item-actions { - display: flex; - justify-content: flex-start; - align-items: center; - flex-wrap: wrap; - margin-top: 20px; -} -.jfb-addons__item-actions:empty { - display: none; -} -.jfb-addons__item-actions .cx-vui-button { - margin-right: 20px; -}`, "",{"version":3,"sources":["webpack://./admin/pages/jfb-addons/components/AddonItem.vue","webpack://./../AddonItem.vue"],"names":[],"mappings":"AAkTA;EACC,mBAAA;ACjTD;ADmTC;EACC,gBAAA;ACjTF;ADoTC;EACC,cAAA;AClTF;ADqTC;EACC,mBAAA;ACnTF;ADsTC;EACC,aAAA;EACA,qCAAA;EACA,SAAA;ACpTF;ADsTE;AALD;IAME,qCAAA;ACnTD;AACF;ADsTC;EACC,oCAAA;EACA,mBAAA;ACpTF;ADsTE;EACC,8CAAA;ACpTH;ADwTG;EACC,uBAAA;ACtTJ;AD4TI;EACC,yBAAA;AC1TL;AD+TI;EACC,YAAA;EACA,yBAAA;EACA,gBAAA;EACA,kBAAA;AC7TL;ADmUC;EACC,aAAA;EACA,sBAAA;EACA,oBAAA;EACA,YAAA;ACjUF;ADoUC;EACC,4BAAA;EACA,cAAA;EACA,gBAAA;EACA,kBAAA;AClUF;ADoUE;EACC,kBAAA;EACA,SAAA;EACA,UAAA;AClUH;ADqUE;EACC,WAAA;EACA,YAAA;ACnUH;ADuUC;EACC,aAAA;EACA,sBAAA;EACA,oBAAA;EACA,cAAA;EACA,aAAA;EACA,4BAAA;EACA,2BAAA;EACA,qBAAA;EACA,mBAAA;EACA,uBAAA;ACrUF;ADwUC;EACC,aAAA;EACA,8BAAA;EACA,uBAAA;EACA,mBAAA;ACtUF;ADwUE;EACC,eAAA;EACA,gBAAA;EACA,iBAAA;ACtUH;ADyUE;EACC,gBAAA;EACA,kBAAA;EACA,YAAA;EACA,yBAAA;EACA,iBAAA;ACvUH;AD2UC;EACC,cAAA;EACA,mBAAA;ACzUF;AD4UC;EACC,mBAAA;EACA,cAAA;AC1UF;AD4UE;EACC,gBAAA;AC1UH;AD8UC;EACC,cAAA;AC5UF;AD8UE;EACC,qBAAA;AC5UH;ADgVC;EACC,aAAA;EACA,2BAAA;EACA,mBAAA;EACA,eAAA;EACA,gBAAA;AC9UF;ADgVE;EACC,aAAA;AC9UH;ADiVE;EACC,kBAAA;AC/UH","sourcesContent":["\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n.jfb-addons {\n\tmargin-bottom: 50px;\n\n\t&:last-child {\n\t\tmargin-bottom: 0;\n\t}\n\n\ta {\n\t\tcolor: #007cba;\n\t}\n\n\t&__header {\n\t\tmargin-bottom: 20px;\n\t}\n\n\t&__list {\n\t\tdisplay: grid;\n\t\tgrid-template-columns: repeat(4, 1fr);\n\t\tgap: 40px;\n\n\t\t@media (max-width: 1140px) {\n\t\t\tgrid-template-columns: repeat(2, 1fr);\n\t\t}\n\t}\n\n\t&__item {\n\t\ttransition: box-shadow .3s ease-out;\n\t\tborder-radius: 10px;\n\n\t\t&:hover {\n\t\t\tbox-shadow: 0px 4px 28px rgba(15, 23, 42, 0.1);\n\t\t}\n\n\t\t&.activated {\n\t\t\t.jfb-addons__item-info {\n\t\t\t\tbackground-color: white;\n\t\t\t}\n\t\t}\n\n\t\t&.update-avaliable {\n\t\t\t.jfb-addons__item-name {\n\t\t\t\t.version {\n\t\t\t\t\tbackground-color: #D6336C;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t.jfb-addons__item-update {\n\t\t\t\t.latest-version {\n\t\t\t\t\tcolor: white;\n\t\t\t\t\tbackground-color: #46B450;\n\t\t\t\t\tpadding: 2px 8px;\n\t\t\t\t\tborder-radius: 4px;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t&__item-inner {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: stretch;\n\t\theight: 100%;\n\t}\n\n\t&__item-thumb {\n\t\tborder-radius: 10px 10px 0 0;\n\t\tline-height: 0;\n\t\toverflow: hidden;\n\t\tposition: relative;\n\n\t\t.pro-badge {\n\t\t\tposition: absolute;\n\t\t\ttop: 12px;\n\t\t\tleft: 12px;\n\t\t}\n\n\t\timg {\n\t\t\twidth: 100%;\n\t\t\theight: auto;\n\t\t}\n\t}\n\n\t&__item-info {\n\t\tdisplay: flex;\n\t\tflex-direction: column;\n\t\talign-items: stretch;\n\t\tflex: 1 1 auto;\n\t\tpadding: 20px;\n\t\tborder-radius: 0 0 10px 10px;\n\t\tborder-width: 0 1px 1px 1px;\n\t\tborder-color: #DCDCDD;\n\t\tborder-style: solid;\n\t\tbackground-color: white;\n\t}\n\n\t&__item-name {\n\t\tdisplay: flex;\n\t\tjustify-content: space-between;\n\t\talign-items: flex-start;\n\t\tmargin-bottom: 10px;\n\n\t\t.label {\n\t\t\tfont-size: 20px;\n\t\t\tfont-weight: 700;\n\t\t\tline-height: 1.25;\n\t\t}\n\n\t\t.version {\n\t\t\tpadding: 1px 8px;\n\t\t\tborder-radius: 4px;\n\t\t\tcolor: white;\n\t\t\tbackground-color: #46B450;\n\t\t\tmargin-left: 10px;\n\t\t}\n\t}\n\n\t&__item-update {\n\t\tcolor: #7b7e81;\n\t\tmargin-bottom: 10px;\n\t}\n\n\t&__item-license {\n\t\tmargin-bottom: 10px;\n\t\tcolor: #7b7e81;\n\n\t\t.cx-vui-button {\n\t\t\tmargin-left: 3px;\n\t\t}\n\t}\n\n\t&__item-desc {\n\t\tflex: 1 1 auto;\n\n\t\ta {\n\t\t\ttext-decoration: none;\n\t\t}\n\t}\n\n\t&__item-actions {\n\t\tdisplay: flex;\n\t\tjustify-content: flex-start;\n\t\talign-items: center;\n\t\tflex-wrap: wrap;\n\t\tmargin-top: 20px;\n\n\t\t&:empty {\n\t\t\tdisplay: none;\n\t\t}\n\n\t\t.cx-vui-button {\n\t\t\tmargin-right: 20px;\n\t\t}\n\t}\n}\n\n",".jfb-addons {\n margin-bottom: 50px;\n}\n.jfb-addons:last-child {\n margin-bottom: 0;\n}\n.jfb-addons a {\n color: #007cba;\n}\n.jfb-addons__header {\n margin-bottom: 20px;\n}\n.jfb-addons__list {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n gap: 40px;\n}\n@media (max-width: 1140px) {\n .jfb-addons__list {\n grid-template-columns: repeat(2, 1fr);\n }\n}\n.jfb-addons__item {\n transition: box-shadow 0.3s ease-out;\n border-radius: 10px;\n}\n.jfb-addons__item:hover {\n box-shadow: 0px 4px 28px rgba(15, 23, 42, 0.1);\n}\n.jfb-addons__item.activated .jfb-addons__item-info {\n background-color: white;\n}\n.jfb-addons__item.update-avaliable .jfb-addons__item-name .version {\n background-color: #D6336C;\n}\n.jfb-addons__item.update-avaliable .jfb-addons__item-update .latest-version {\n color: white;\n background-color: #46B450;\n padding: 2px 8px;\n border-radius: 4px;\n}\n.jfb-addons__item-inner {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n height: 100%;\n}\n.jfb-addons__item-thumb {\n border-radius: 10px 10px 0 0;\n line-height: 0;\n overflow: hidden;\n position: relative;\n}\n.jfb-addons__item-thumb .pro-badge {\n position: absolute;\n top: 12px;\n left: 12px;\n}\n.jfb-addons__item-thumb img {\n width: 100%;\n height: auto;\n}\n.jfb-addons__item-info {\n display: flex;\n flex-direction: column;\n align-items: stretch;\n flex: 1 1 auto;\n padding: 20px;\n border-radius: 0 0 10px 10px;\n border-width: 0 1px 1px 1px;\n border-color: #DCDCDD;\n border-style: solid;\n background-color: white;\n}\n.jfb-addons__item-name {\n display: flex;\n justify-content: space-between;\n align-items: flex-start;\n margin-bottom: 10px;\n}\n.jfb-addons__item-name .label {\n font-size: 20px;\n font-weight: 700;\n line-height: 1.25;\n}\n.jfb-addons__item-name .version {\n padding: 1px 8px;\n border-radius: 4px;\n color: white;\n background-color: #46B450;\n margin-left: 10px;\n}\n.jfb-addons__item-update {\n color: #7b7e81;\n margin-bottom: 10px;\n}\n.jfb-addons__item-license {\n margin-bottom: 10px;\n color: #7b7e81;\n}\n.jfb-addons__item-license .cx-vui-button {\n margin-left: 3px;\n}\n.jfb-addons__item-desc {\n flex: 1 1 auto;\n}\n.jfb-addons__item-desc a {\n text-decoration: none;\n}\n.jfb-addons__item-actions {\n display: flex;\n justify-content: flex-start;\n align-items: center;\n flex-wrap: wrap;\n margin-top: 20px;\n}\n.jfb-addons__item-actions:empty {\n display: none;\n}\n.jfb-addons__item-actions .cx-vui-button {\n margin-right: 20px;\n}"],"sourceRoot":""}]); -// Exports -/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___); - - -/***/ }), - -/***/ "../../node_modules/css-loader/dist/runtime/api.js": -/*!*********************************************************!*\ - !*** ../../node_modules/css-loader/dist/runtime/api.js ***! - \*********************************************************/ -/***/ ((module) => { - -"use strict"; - - -/* - MIT License http://www.opensource.org/licenses/mit-license.php - Author Tobias Koppers @sokra -*/ -module.exports = function (cssWithMappingToString) { - var list = []; - - // return the list of modules as css string - list.toString = function toString() { - return this.map(function (item) { - var content = ""; - var needLayer = typeof item[5] !== "undefined"; - if (item[4]) { - content += "@supports (".concat(item[4], ") {"); - } - if (item[2]) { - content += "@media ".concat(item[2], " {"); - } - if (needLayer) { - content += "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {"); - } - content += cssWithMappingToString(item); - if (needLayer) { - content += "}"; - } - if (item[2]) { - content += "}"; - } - if (item[4]) { - content += "}"; - } - return content; - }).join(""); - }; - - // import a list of modules into the list - list.i = function i(modules, media, dedupe, supports, layer) { - if (typeof modules === "string") { - modules = [[null, modules, undefined]]; - } - var alreadyImportedModules = {}; - if (dedupe) { - for (var k = 0; k < this.length; k++) { - var id = this[k][0]; - if (id != null) { - alreadyImportedModules[id] = true; - } - } - } - for (var _k = 0; _k < modules.length; _k++) { - var item = [].concat(modules[_k]); - if (dedupe && alreadyImportedModules[item[0]]) { - continue; - } - if (typeof layer !== "undefined") { - if (typeof item[5] === "undefined") { - item[5] = layer; - } else { - item[1] = "@layer".concat(item[5].length > 0 ? " ".concat(item[5]) : "", " {").concat(item[1], "}"); - item[5] = layer; - } - } - if (media) { - if (!item[2]) { - item[2] = media; - } else { - item[1] = "@media ".concat(item[2], " {").concat(item[1], "}"); - item[2] = media; - } - } - if (supports) { - if (!item[4]) { - item[4] = "".concat(supports); - } else { - item[1] = "@supports (".concat(item[4], ") {").concat(item[1], "}"); - item[4] = supports; - } - } - list.push(item); - } - }; - return list; -}; - -/***/ }), - -/***/ "../../node_modules/css-loader/dist/runtime/sourceMaps.js": -/*!****************************************************************!*\ - !*** ../../node_modules/css-loader/dist/runtime/sourceMaps.js ***! - \****************************************************************/ -/***/ ((module) => { - -"use strict"; - - -module.exports = function (item) { - var content = item[1]; - var cssMapping = item[3]; - if (!cssMapping) { - return content; - } - if (typeof btoa === "function") { - var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(cssMapping)))); - var data = "sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(base64); - var sourceMapping = "/*# ".concat(data, " */"); - return [content].concat([sourceMapping]).join("\n"); - } - return [content].join("\n"); -}; - -/***/ }), - -/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-addons/AddonsPage.vue?vue&type=template&id=5e249d0e": -/*!****************************************************************************************************************************************************************************************************************************!*\ - !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-addons/AddonsPage.vue?vue&type=template&id=5e249d0e ***! - \****************************************************************************************************************************************************************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ render: () => (/* binding */ render), -/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) -/* harmony export */ }); -var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"jfb-addons-page wrap",class:{ 'proccesing-state': _vm.proccesingState }},[_c('h1',{staticClass:"cs-vui-title"},[_vm._v(_vm._s('JetFormBuilder Addons'))]),_vm._v(" "),_c('div',{staticClass:"jfb-addons-page__inner cx-vui-panel"},[_c('div',{staticClass:"jfb-addons-page__header"},[(_vm.isLicenseMode)?_c('div',{staticClass:"jfb-addons-page__header-controls"},[_c('cx-vui-button',{attrs:{"button-style":"accent","size":"mini","loading":_vm.checkUpdatesProcessed},on:{"click":_vm.checkPluginsUpdate}},[_c('span',{attrs:{"slot":"label"},slot:"label"},[_c('svg',{staticClass:"button-icon",attrs:{"width":"14","height":"14","viewBox":"0 0 14 14","fill":"none","xmlns":"http://www.w3.org/2000/svg"}},[_c('path',{attrs:{"d":"M11.7085 2.29171C10.5001 1.08337 8.8418 0.333374 7.00013 0.333374C3.3168 0.333374 0.341797 3.31671 0.341797 7.00004C0.341797 10.6834 3.3168 13.6667 7.00013 13.6667C10.1085 13.6667 12.7001 11.5417 13.4418 8.66671H11.7085C11.0251 10.6084 9.17513 12 7.00013 12C4.2418 12 2.00013 9.75837 2.00013 7.00004C2.00013 4.24171 4.2418 2.00004 7.00013 2.00004C8.38346 2.00004 9.6168 2.57504 10.5168 3.48337L7.83346 6.16671H13.6668V0.333374L11.7085 2.29171Z","fill":"#007CBA"}})]),_vm._v(" "),_c('span',[_vm._v("Check For Updates")])])]),_vm._v(" "),_c('cx-vui-button',{class:[ !_vm.isLicenseActivated ? 'cx-vui-button--style-accent' : 'cx-vui-button--style-danger' ],attrs:{"size":"mini"},on:{"click":_vm.showLicensePopup}},[_c('span',{attrs:{"slot":"label"},slot:"label"},[_c('svg',{staticClass:"button-icon",attrs:{"width":"16","height":"16","viewBox":"0 0 16 16","fill":"none","xmlns":"http://www.w3.org/2000/svg"}},[_c('path',{attrs:{"d":"M15.4985 0H12.4897C12.4166 0 12.3487 0.0156709 12.286 0.0470127C12.2338 0.0679073 12.1867 0.104473 12.145 0.156709L5.7669 6.47209C5.62063 6.44074 5.46392 6.41463 5.29677 6.39373C5.12961 6.37284 4.96768 6.36239 4.81097 6.36239C4.16324 6.36239 3.54685 6.48776 2.9618 6.73849C2.37675 6.97878 1.85961 7.32354 1.41038 7.77277C0.961149 8.222 0.611166 8.73914 0.360431 9.32419C0.120144 9.90924 0 10.5309 0 11.189C0 11.8368 0.120144 12.4532 0.360431 13.0382C0.611166 13.6232 0.961149 14.1404 1.41038 14.5896C1.85961 15.0389 2.37675 15.3836 2.9618 15.6239C3.54685 15.8746 4.16324 16 4.81097 16C5.46915 16 6.09076 15.8746 6.67581 15.6239C7.26086 15.3836 7.778 15.0389 8.22723 14.5896C8.80183 14.015 9.19882 13.3464 9.41822 12.5837C9.64806 11.8211 9.68462 11.0375 9.52791 10.2331L10.8913 8.86974C10.9331 8.82795 10.9644 8.78093 10.9853 8.7287C11.0167 8.66601 11.0323 8.59811 11.0323 8.52498V7.02057H12.5367C12.6934 7.02057 12.8136 6.97356 12.8972 6.87953C12.9912 6.7855 13.0382 6.66536 13.0382 6.5191V5.01469H14.5426C14.6157 5.01469 14.6784 5.00424 14.7307 4.98335C14.7933 4.95201 14.8508 4.91022 14.903 4.85798L15.906 3.85504C15.9269 3.81326 15.9478 3.76624 15.9687 3.71401C15.9896 3.65132 16 3.58342 16 3.51028V0.501469C16 0.355207 15.953 0.235064 15.859 0.141038C15.7649 0.0470127 15.6448 0 15.4985 0ZM4.96768 12.7875C4.79008 12.9651 4.5968 13.0957 4.38786 13.1792C4.18936 13.2524 3.96474 13.2889 3.71401 13.2889C3.46327 13.2889 3.23343 13.2419 3.02449 13.1479C2.82599 13.0539 2.63794 12.9337 2.46033 12.7875C2.28273 12.6099 2.15214 12.4218 2.06856 12.2233C1.99543 12.0144 1.95886 11.7845 1.95886 11.5338C1.95886 11.2831 2.00588 11.0584 2.0999 10.8599C2.19393 10.651 2.31407 10.4577 2.46033 10.2801C2.7842 9.95625 3.19164 9.79432 3.68266 9.79432C4.18413 9.79432 4.5968 9.95625 4.92067 10.2801C5.09827 10.4577 5.22364 10.651 5.29677 10.8599C5.38035 11.0584 5.42214 11.2831 5.42214 11.5338C5.42214 11.7845 5.38035 12.0144 5.29677 12.2233C5.22364 12.4218 5.11394 12.6099 4.96768 12.7875Z","fill":"#D3D3D3"}})]),_vm._v(" "),(!_vm.isLicenseActivated)?_c('span',[_vm._v("Activate License")]):_vm._e(),_vm._v(" "),(_vm.isLicenseActivated)?_c('span',[_vm._v("Deactivate License")]):_vm._e()])])],1):_vm._e(),_vm._v(" "),(!_vm.isLicenseActivated)?_c('div',{staticClass:"go-pro-banner"},[_c('div',{staticClass:"go-pro-banner__subtitle"},[_vm._v("Features & Integrations")]),_vm._v(" "),_c('div',{staticClass:"go-pro-banner__title"},[_vm._v("Extend functionality with PRO Addons")]),_vm._v(" "),_c('cx-vui-button',{staticClass:"go-pro-banner__button",attrs:{"button-style":"default","size":"mini","url":_vm.goProLink,"tag-name":"a","target":"_blank"}},[_c('span',{attrs:{"slot":"label"},slot:"label"},[_c('span',[_vm._v("Go Pro")])])])],1):_vm._e()]),_vm._v(" "),(0!==Object.keys(_vm.installedAddonList).length)?_c('div',{staticClass:"jfb-addons"},[_vm._m(0),_vm._v(" "),_c('div',{staticClass:"jfb-addons__list"},_vm._l((_vm.installedAddonList),function(addonData,index){return _c('AddonItem',{key:index,attrs:{"addon-data":addonData}})}),1)]):_vm._e(),_vm._v(" "),(0!==Object.keys(_vm.availableAddonList).length)?_c('div',{staticClass:"jfb-addons"},[_vm._m(1),_vm._v(" "),_c('div',{staticClass:"jfb-addons__list"},_vm._l((_vm.availableAddonList),function(addonData,index){return _c('AddonItem',{key:index,attrs:{"addon-data":addonData}})}),1)]):_vm._e()]),_vm._v(" "),_c('cx-vui-popup',{staticClass:"jfb-addons-page__license-popup",attrs:{"footer":false,"body-width":"540px"},model:{value:(_vm.licensePopupVisible),callback:function ($$v) {_vm.licensePopupVisible=$$v},expression:"licensePopupVisible"}},[_c('div',{staticClass:"cx-vui-popup__header-title",attrs:{"slot":"title"},slot:"title"},[(!_vm.isLicenseActivated)?_c('span',[_vm._v("Activate License")]):_vm._e(),_vm._v(" "),(_vm.isLicenseActivated)?_c('span',[_vm._v("Deactivate License")]):_vm._e()]),_vm._v(" "),_c('div',{staticClass:"jfb-addons-page__license-form",attrs:{"slot":"content"},slot:"content"},[(!_vm.isLicenseActivated)?_c('span',[_vm._v("Activate license for automatic updates and awesome support")]):_vm._e(),_vm._v(" "),(_vm.isLicenseActivated)?_c('span',[_vm._v("By deactivating the license you will not be able to update the addons")]):_vm._e(),_vm._v(" "),_c('cx-vui-input',{staticClass:"jfb-addons-page__license-input",attrs:{"size":"fullwidth","type":"password","autofocus":true,"prevent-wrap":true,"placeholder":"Just paste it here"},model:{value:(_vm.licenseKey),callback:function ($$v) {_vm.licenseKey=$$v},expression:"licenseKey"}}),_vm._v(" "),_c('cx-vui-button',{staticClass:"jfb-addons-page__license-action",attrs:{"button-style":"accent","size":"mini","loading":_vm.licenseProccesingState},on:{"click":_vm.licenseAction}},[_c('span',{attrs:{"slot":"label"},slot:"label"},[(!_vm.isLicenseActivated)?_c('span',[_vm._v("Activate")]):_vm._e(),_vm._v(" "),(_vm.isLicenseActivated)?_c('span',[_vm._v("Deactivate")]):_vm._e()])])],1)])],1)} -var staticRenderFns = [function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"jfb-addons__header"},[_c('span',{staticClass:"cx-vui-subtitle"},[_vm._v("Your Installed Addons")])])},function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"jfb-addons__header"},[_c('span',{staticClass:"cx-vui-subtitle"},[_vm._v("All Available Addons")])])}] -render._withStripped = true - - -/***/ }), - -/***/ "../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-addons/components/AddonItem.vue?vue&type=template&id=b50743b4": -/*!**************************************************************************************************************************************************************************************************************************************!*\ - !*** ../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-addons/components/AddonItem.vue?vue&type=template&id=b50743b4 ***! - \**************************************************************************************************************************************************************************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ render: () => (/* binding */ render), -/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) -/* harmony export */ }); -var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"jfb-addons__item",class:{ - 'activated': _vm.addonData.isActivated, - 'update-avaliable': _vm.updateAvaliable, - }},[_c('div',{staticClass:"jfb-addons__item-inner",class:{ 'proccesing-state': _vm.proccesingState }},[_c('div',{staticClass:"jfb-addons__item-thumb"},[(!_vm.addonData.isInstalled)?_c('div',{staticClass:"pro-badge"},[_c('svg',{attrs:{"width":"40","height":"20","viewBox":"0 0 40 20","fill":"none","xmlns":"http://www.w3.org/2000/svg"}},[_c('rect',{attrs:{"width":"40","height":"20","rx":"4","fill":"#EE7B16"}}),_vm._v(" "),_c('path',{attrs:{"d":"M10.625 10.8301V14H9.14258V5.46875H12.4062C13.3594 5.46875 14.1152 5.7168 14.6738 6.21289C15.2363 6.70898 15.5176 7.36523 15.5176 8.18164C15.5176 9.01758 15.2422 9.66797 14.6914 10.1328C14.1445 10.5977 13.377 10.8301 12.3887 10.8301H10.625ZM10.625 9.64062H12.4062C12.9336 9.64062 13.3359 9.51758 13.6133 9.27148C13.8906 9.02148 14.0293 8.66211 14.0293 8.19336C14.0293 7.73242 13.8887 7.36523 13.6074 7.0918C13.3262 6.81445 12.9395 6.67188 12.4473 6.66406H10.625V9.64062ZM19.9531 10.7129H18.3008V14H16.8184V5.46875H19.8184C20.8027 5.46875 21.5625 5.68945 22.0977 6.13086C22.6328 6.57227 22.9004 7.21094 22.9004 8.04688C22.9004 8.61719 22.7617 9.0957 22.4844 9.48242C22.2109 9.86523 21.8281 10.1602 21.3359 10.3672L23.252 13.9238V14H21.6641L19.9531 10.7129ZM18.3008 9.52344H19.8242C20.3242 9.52344 20.7148 9.39844 20.9961 9.14844C21.2773 8.89453 21.418 8.54883 21.418 8.11133C21.418 7.6543 21.2871 7.30078 21.0254 7.05078C20.7676 6.80078 20.3809 6.67188 19.8652 6.66406H18.3008V9.52344ZM31.1152 9.95703C31.1152 10.793 30.9707 11.5273 30.6816 12.1602C30.3926 12.7891 29.9785 13.2734 29.4395 13.6133C28.9043 13.9492 28.2871 14.1172 27.5879 14.1172C26.8965 14.1172 26.2793 13.9492 25.7363 13.6133C25.1973 13.2734 24.7793 12.791 24.4824 12.166C24.1895 11.541 24.041 10.8203 24.0371 10.0039V9.52344C24.0371 8.69141 24.1836 7.95703 24.4766 7.32031C24.7734 6.68359 25.1895 6.19727 25.7246 5.86133C26.2637 5.52148 26.8809 5.35156 27.5762 5.35156C28.2715 5.35156 28.8867 5.51953 29.4219 5.85547C29.9609 6.1875 30.377 6.66797 30.6699 7.29688C30.9629 7.92188 31.1113 8.65039 31.1152 9.48242V9.95703ZM29.6328 9.51172C29.6328 8.56641 29.4531 7.8418 29.0938 7.33789C28.7383 6.83398 28.2324 6.58203 27.5762 6.58203C26.9355 6.58203 26.4336 6.83398 26.0703 7.33789C25.7109 7.83789 25.5273 8.54688 25.5195 9.46484V9.95703C25.5195 10.8945 25.7012 11.6191 26.0645 12.1309C26.4316 12.6426 26.9395 12.8984 27.5879 12.8984C28.2441 12.8984 28.748 12.6484 29.0996 12.1484C29.4551 11.6484 29.6328 10.918 29.6328 9.95703V9.51172Z","fill":"white"}})])]):_vm._e(),_vm._v(" "),_c('img',{attrs:{"src":_vm.addonData.thumb,"alt":""}})]),_vm._v(" "),_c('div',{staticClass:"jfb-addons__item-info"},[_c('div',{staticClass:"jfb-addons__item-name"},[_c('span',{staticClass:"label"},[_vm._v(_vm._s(_vm.addonData.name))]),_vm._v(" "),_c('span',{staticClass:"version"},[_vm._v(_vm._s(_vm.addonData.currentVersion))])]),_vm._v(" "),(_vm.$parent.isLicenseActivated)?_c('div',{staticClass:"jfb-addons__item-update"},[(!_vm.updateAvaliable)?_c('div',[_vm._v("Your plugin is up to date")]):_vm._e(),_vm._v(" "),(_vm.updateAvaliable)?_c('div',[_vm._v("\n\t\t\t\t\tVersion "),_c('span',{staticClass:"latest-version"},[_vm._v(_vm._s(_vm.addonData.version))]),_vm._v(" available\n\t\t\t\t\t"),(!_vm.activateLicenceActionAvaliable && _vm.isLicenseMode)?_c('cx-vui-button',{attrs:{"button-style":"link-accent","size":"link","loading":_vm.updatePluginProcessed},on:{"click":_vm.updatePlugin}},[_c('span',{attrs:{"slot":"label"},slot:"label"},[_c('span',[_vm._v("Update Now")])])]):_vm._e()],1):_vm._e()]):_vm._e(),_vm._v(" "),(_vm.activateLicenceActionAvaliable)?_c('div',{staticClass:"jfb-addons__item-license"},[_c('span',[_vm._v("License not activated")]),_vm._v(" "),_c('cx-vui-button',{attrs:{"button-style":"link-accent","size":"link"},on:{"click":_vm.activateLicense}},[_c('span',{attrs:{"slot":"label"},slot:"label"},[_c('span',[_vm._v("Activate Now")])])])],1):_vm._e(),_vm._v(" "),_c('div',{staticClass:"jfb-addons__item-desc"},[_c('span',{domProps:{"innerHTML":_vm._s(_vm.addonData.desc)}}),_vm._v(" "),_c('a',{attrs:{"href":_vm.learnMoreUrl,"target":"_blank"}},[_vm._v("Learn More")])]),_vm._v(" "),_c('div',{staticClass:"jfb-addons__item-actions"},[(_vm.installActionAvaliable)?_c('cx-vui-button',{attrs:{"button-style":"link-accent","size":"link","loading":_vm.actionPluginProcessed},on:{"click":_vm.installPlugin}},[_c('span',{attrs:{"slot":"label"},slot:"label"},[_c('span',[_vm._v("Install Addon")])])]):_vm._e(),_vm._v(" "),(_vm.activateActionAvaliable)?_c('cx-vui-button',{attrs:{"button-style":"link-accent","size":"link","loading":_vm.actionPluginProcessed},on:{"click":_vm.activatePlugin}},[_c('span',{attrs:{"slot":"label"},slot:"label"},[_c('span',[_vm._v("Activate Addon")])])]):_vm._e(),_vm._v(" "),(_vm.deactivateActionAvaliable)?_c('cx-vui-button',{attrs:{"button-style":"link-error","size":"link","loading":_vm.actionPluginProcessed},on:{"click":_vm.deactivatePlugin}},[_c('span',{attrs:{"slot":"label"},slot:"label"},[_c('span',[_vm._v("Deactivate Addon")])])]):_vm._e()],1)])])])} -var staticRenderFns = [] -render._withStripped = true - - -/***/ }), - -/***/ "../../node_modules/vue-loader/lib/runtime/componentNormalizer.js": -/*!************************************************************************!*\ - !*** ../../node_modules/vue-loader/lib/runtime/componentNormalizer.js ***! - \************************************************************************/ -/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { - -"use strict"; -__webpack_require__.r(__webpack_exports__); -/* harmony export */ __webpack_require__.d(__webpack_exports__, { -/* harmony export */ "default": () => (/* binding */ normalizeComponent) -/* harmony export */ }); -/* globals __VUE_SSR_CONTEXT__ */ - -// IMPORTANT: Do NOT use ES2015 features in this file (except for modules). -// This module is a runtime utility for cleaner component module output and will -// be included in the final webpack user bundle. - -function normalizeComponent( - scriptExports, - render, - staticRenderFns, - functionalTemplate, - injectStyles, - scopeId, - moduleIdentifier /* server only */, - shadowMode /* vue-cli only */ -) { - // Vue.extend constructor export interop - var options = - typeof scriptExports === 'function' ? scriptExports.options : scriptExports - - // render functions - if (render) { - options.render = render - options.staticRenderFns = staticRenderFns - options._compiled = true - } - - // functional template - if (functionalTemplate) { - options.functional = true - } - - // scopedId - if (scopeId) { - options._scopeId = 'data-v-' + scopeId - } - - var hook - if (moduleIdentifier) { - // server build - hook = function (context) { - // 2.3 injection - context = - context || // cached call - (this.$vnode && this.$vnode.ssrContext) || // stateful - (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional - // 2.2 with runInNewContext: true - if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') { - context = __VUE_SSR_CONTEXT__ - } - // inject component styles - if (injectStyles) { - injectStyles.call(this, context) - } - // register component module identifier for async chunk inferrence - if (context && context._registeredComponents) { - context._registeredComponents.add(moduleIdentifier) - } - } - // used by ssr in case component is cached and beforeCreate - // never gets called - options._ssrRegister = hook - } else if (injectStyles) { - hook = shadowMode - ? function () { - injectStyles.call( - this, - (options.functional ? this.parent : this).$root.$options.shadowRoot - ) - } - : injectStyles - } - - if (hook) { - if (options.functional) { - // for template-only hot-reload because in that case the render fn doesn't - // go through the normalizer - options._injectStyles = hook - // register for functional component in vue file - var originalRender = options.render - options.render = function renderWithStyleInjection(h, context) { - hook.call(context) - return originalRender(h, context) - } - } else { - // inject component registration as beforeCreate hook - var existing = options.beforeCreate - options.beforeCreate = existing ? [].concat(existing, hook) : [hook] - } - } - - return { - exports: scriptExports, - options: options - } -} - - -/***/ }), - -/***/ "../../node_modules/vue-style-loader/index.js!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-addons/AddonsPage.vue?vue&type=style&index=0&id=5e249d0e&lang=scss": -/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\ - !*** ../../node_modules/vue-style-loader/index.js!../../node_modules/css-loader/dist/cjs.js!../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/sass-loader/dist/cjs.js!../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-addons/AddonsPage.vue?vue&type=style&index=0&id=5e249d0e&lang=scss ***! - \**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************/ -/***/ ((module, __unused_webpack_exports, __webpack_require__) => { - -// style-loader: Adds some css to the DOM by adding a } - { ! isEmpty( variables ) &&
+ { ! isEmpty( variables ) &&
} { isEmpty( variables ) && } diff --git a/modules/jet-style/framework/blocks-style-manager/block.php b/modules/jet-style/framework/blocks-style-manager/block.php index 276ead98a..503ac0ed2 100644 --- a/modules/jet-style/framework/blocks-style-manager/block.php +++ b/modules/jet-style/framework/blocks-style-manager/block.php @@ -38,9 +38,12 @@ class Block { 'children' => array(), ); - public static $timer = 0; - - public static $count = 0; + /** + * Whether the block is rendered via REST API. + * + * @var bool + */ + protected $is_rest_render = false; /** * Currently processed section for registration. @@ -59,6 +62,8 @@ class Block { protected $css_props = array(); + protected $defaults = null; + /** * Constructor * @@ -82,6 +87,15 @@ public function __construct( $name, $attributes = array() ) { ); } + /** + * Set block attributes + * + * @param array $attributes Block attributes. + */ + public function set_attributes( $attributes ) { + $this->attributes = array_merge( $this->attributes, $attributes ); + } + /** * Prevent styles from being rendered when there is a Rest API request * to render the block itself. @@ -102,15 +116,15 @@ public function prevent_styles_on_self_render( $response, $handler, $request ) { } if ( $block_name === $this->get_block_name() ) { - remove_filter( + /*remove_filter( 'render_block_' . $this->get_block_name(), array( $this, 'render_block_styles' ), 10, 3 - ); + );*/ + $this->is_rest_render = true; } } - return $response; } @@ -126,11 +140,16 @@ public function render_block_styles( $block_content, $parsed_block, $wp_block ) if ( ! empty( $parsed_block['attrs'][ Registry::instance()->get_support_name() ] ) ) { - timer_start(); + if ( $this->is_rest_render ) { - $block_class_name = Style_Engine::get_classname_from_attrs( - $parsed_block['attrs'][ Registry::instance()->get_support_name() ] - ); + $block_class_name = Style_Engine::get_classname_from_attrs( + $parsed_block['attrs'][ Registry::instance()->get_support_name() ] + ); + + $style_inserter = new Style_Inserter( $block_class_name, [] ); + + return $style_inserter->with_class_name( $block_content ); + } $style_engine = new Style_Engine( $parsed_block['attrs'][ Registry::instance()->get_support_name() ], @@ -149,12 +168,6 @@ public function render_block_styles( $block_content, $parsed_block, $wp_block ) if ( ! apply_filters( 'jet-styles-manager/block/force-print-styles', false, $this ) ) { Style_Cache::get_instance()->add_printed( $style_engine->get_class_name() ); } - - self::$timer += timer_stop( 0, 8 ); - self::$count++; - - //var_dump( self::$timer ); - //var_dump( self::$count ); } return $block_content; @@ -178,6 +191,25 @@ public function get_controls_stack() { return $this->controls_stack['children']; } + /** + * Get default values for the registered controls, + * if there were any. + * + * @return array|null + */ + public function get_defaults() { + return $this->defaults; + } + + /** + * Whether to register full controls or only CSS-render-related. + * + * @return bool + */ + public function should_register_full_controls() { + return is_admin(); + } + /** * Start a new section for block styles * @@ -186,6 +218,10 @@ public function get_controls_stack() { */ public function start_section( $args = array() ) { + if ( ! $this->should_register_full_controls() ) { + return; + } + if ( ! isset( $args['id'] ) ) { _doing_it_wrong( 'Blocks_Style\Proxy::start_section', @@ -211,6 +247,11 @@ public function start_section( $args = array() ) { * @return void */ public function end_section() { + + if ( ! $this->should_register_full_controls() ) { + return; + } + $this->_current_section = null; } @@ -222,6 +263,19 @@ public function end_section() { */ public function add_control( $args = array() ) { + if ( ! $this->should_register_full_controls() ) { + + $control_id = ! empty( $args['id'] ) ? $args['id'] : false; + + $this->css_props[ $control_id ] = array( + 'type' => ! empty( $args['type'] ) ? $args['type'] : 'text', + 'css_var' => ! empty( $args['css_var'] ) ? $args['css_var'] : array(), + 'css_selector' => ! empty( $args['css_selector'] ) ? $args['css_selector'] : array(), + ); + + return; + } + if ( ! $this->_current_section ) { _doing_it_wrong( @@ -275,6 +329,15 @@ public function add_control( $args = array() ) { ); } + if ( ! empty( $args['default'] ) ) { + + if ( is_null( $this->defaults ) ) { + $this->defaults = array(); + } + + $this->defaults[ $control_id ] = $args['default']; + } + $this->css_props[ $control_id ] = array( 'type' => ! empty( $args['type'] ) ? $args['type'] : 'text', 'css_var' => ! empty( $args['css_var'] ) ? $args['css_var'] : array(), @@ -290,6 +353,10 @@ public function add_control( $args = array() ) { */ public function start_tabs( $args = array() ) { + if ( ! $this->should_register_full_controls() ) { + return; + } + if ( ! empty( $args['id'] ) ) { $id = $args['id']; } else { @@ -320,6 +387,10 @@ public function start_tabs( $args = array() ) { */ public function start_tab( $args = array() ) { + if ( ! $this->should_register_full_controls() ) { + return; + } + if ( ! empty( $args['id'] ) ) { $id = $args['id']; } else { @@ -348,6 +419,11 @@ public function start_tab( $args = array() ) { * @return void */ public function end_tabs() { + + if ( ! $this->should_register_full_controls() ) { + return; + } + $this->_current_tabs = null; $this->_current_tab = null; } @@ -358,6 +434,11 @@ public function end_tabs() { * @return void */ public function end_tab() { + + if ( ! $this->should_register_full_controls() ) { + return; + } + $this->_current_tab = null; } diff --git a/modules/jet-style/framework/blocks-style-manager/editor.php b/modules/jet-style/framework/blocks-style-manager/editor.php index 52c9c47dc..52ce3a464 100644 --- a/modules/jet-style/framework/blocks-style-manager/editor.php +++ b/modules/jet-style/framework/blocks-style-manager/editor.php @@ -19,6 +19,8 @@ class Editor { */ protected static $instance = null; + protected $defaults = array(); + /** * Get instance of the class * @@ -72,13 +74,45 @@ public function editor_assets() { true ); + $fonts_manager_url = esc_url( admin_url( 'site-editor.php?p=/styles§ion=/typography' ) ); + $settings = wp_get_global_settings(); + $fonts = []; + + if ( ! empty( $settings['typography']['fontFamilies'] ) ) { + foreach ( $settings['typography']['fontFamilies'] as $fonts_set ) { + if ( is_array( $fonts_set ) ) { + foreach ( $fonts_set as $font ) { + if ( ! empty( $font['name'] ) && ! empty( $font['fontFamily'] ) ) { + $fonts[] = [ + 'value' => $font['fontFamily'], + 'label' => $font['name'], + ]; + } + } + } + } + } + + /** + * Note! + * + * get_blocks_supports() always must be called before get_block_defaults() + * because it internally calls extract_children(), + * which extract also defaults of these children. + */ + $supports = $this->get_blocks_supports(); + $defaults = $this->get_block_defaults(); + wp_localize_script( 'crocoblock-blocks-style-editor', 'crocoStyleEditorData', array( - 'blocks_supports' => $this->get_blocks_supports(), - 'support_name' => Registry::instance()->get_support_name(), - 'class_prefix' => 'cb-', + 'blocks_supports' => $supports, + 'support_name' => Registry::instance()->get_support_name(), + 'defaults' => $defaults, + 'class_prefix' => 'cb-', + 'fonts_manager_url' => $fonts_manager_url, + 'fonts' => $fonts, ) ); @@ -103,7 +137,24 @@ public function get_blocks_supports() { $blocks = Registry::instance()->get_blocks(); foreach ( $blocks as $block ) { - $result[ $block->get_block_name() ] = $this->extract_children( $block->get_controls_stack() ); + + $this->defaults[ $block->get_block_name() ] = $block->get_defaults(); + + $result[ $block->get_block_name() ] = $this->extract_children( + $block->get_controls_stack() + ); + } + + return $result; + } + + public function get_block_defaults() { + + $result = array(); + $blocks = Registry::instance()->get_blocks(); + + foreach ( $blocks as $block ) { + $result[ $block->get_block_name() ] = $block->get_defaults(); } return $result; diff --git a/modules/jet-style/framework/blocks-style-manager/field-handlers/base.php b/modules/jet-style/framework/blocks-style-manager/field-handlers/base.php index 25673a1fb..99cddd3a2 100644 --- a/modules/jet-style/framework/blocks-style-manager/field-handlers/base.php +++ b/modules/jet-style/framework/blocks-style-manager/field-handlers/base.php @@ -62,7 +62,12 @@ public function parse_variable( $variable = array() ) { if ( ! empty( $parsed_values['value'] ) ) { $result[] = $full_name . ':' . $parsed_values['value']; } else { - $result[] = $full_name . ':' . self::replace_data( $this->css_var_value_format(), $parsed_values ); + $values = self::replace_data( $this->css_var_value_format(), $parsed_values ); + $values = trim( $values ); + + if ( ! empty( $values ) ) { + $result[] = $full_name . ':' . $values; + } } return $result; diff --git a/modules/jet-style/framework/blocks-style-manager/field-handlers/dimensions.php b/modules/jet-style/framework/blocks-style-manager/field-handlers/dimensions.php index 0489b76f2..782694494 100644 --- a/modules/jet-style/framework/blocks-style-manager/field-handlers/dimensions.php +++ b/modules/jet-style/framework/blocks-style-manager/field-handlers/dimensions.php @@ -23,19 +23,30 @@ public function get_parsed_value() { } if ( is_array( $this->raw_value ) ) { - return [ + $value = [ 'top' => isset( $this->raw_value['top'] ) ? $this->raw_value['top'] : '0', 'right' => isset( $this->raw_value['right'] ) ? $this->raw_value['right'] : '0', 'bottom' => isset( $this->raw_value['bottom'] ) ? $this->raw_value['bottom'] : '0', 'left' => isset( $this->raw_value['left'] ) ? $this->raw_value['left'] : '0', ]; } else { - return [ + $value = [ 'top' => $this->raw_value, 'right' => $this->raw_value, 'bottom' => $this->raw_value, 'left' => $this->raw_value, ]; } + + /** + * Check - if values has no other units provided - assume it's pixels + */ + foreach ( $value as $side => $val ) { + if ( ! preg_match( '/\d+[^\d]+/', $val ) ) { + $value[ $side ] = $val . 'px'; + } + } + + return $value; } } diff --git a/modules/jet-style/framework/blocks-style-manager/field-handlers/range.php b/modules/jet-style/framework/blocks-style-manager/field-handlers/range.php index 939e0a5b4..58817fb38 100644 --- a/modules/jet-style/framework/blocks-style-manager/field-handlers/range.php +++ b/modules/jet-style/framework/blocks-style-manager/field-handlers/range.php @@ -9,8 +9,19 @@ class Range extends Base { * @return array */ public function get_parsed_value() { + + if ( is_array( $this->raw_value ) + && isset( $this->raw_value['value'] ) + && isset( $this->raw_value['unit'] ) + ) { + return array( + 'value' => ! empty( $this->raw_value['value'] ) ? esc_attr( $this->raw_value['value'] ) : 0, + 'unit' => esc_attr( $this->raw_value['unit'] ), + ); + } + return array( - 'value' => ! empty( $this->raw_value ) ? floatval( $this->raw_value ) : 0, + 'value' => ! empty( $this->raw_value ) ? esc_attr( $this->raw_value ) : 0, 'unit' => '', ); } diff --git a/modules/jet-style/framework/blocks-style-manager/field-handlers/typography.php b/modules/jet-style/framework/blocks-style-manager/field-handlers/typography.php index 3cdb36597..de32332f3 100644 --- a/modules/jet-style/framework/blocks-style-manager/field-handlers/typography.php +++ b/modules/jet-style/framework/blocks-style-manager/field-handlers/typography.php @@ -51,6 +51,11 @@ public function parse_variable( $variable = array() ) { * @return array */ public function get_parsed_value() { + + if ( isset( $this->raw_value['lineHeight'] ) ) { + $this->raw_value['lineheight'] = $this->raw_value['lineHeight']; + } + return [ 'family' => isset($this->raw_value['family']) ? $this->raw_value['family'] : 'inherit', 'weight' => isset($this->raw_value['weight']) ? $this->raw_value['weight'] : 'inherit', diff --git a/modules/jet-style/framework/blocks-style-manager/migrator/data-normalizer.php b/modules/jet-style/framework/blocks-style-manager/migrator/data-normalizer.php new file mode 100644 index 000000000..73e09939f --- /dev/null +++ b/modules/jet-style/framework/blocks-style-manager/migrator/data-normalizer.php @@ -0,0 +1,282 @@ +input_data = $data; + + $normalized_tablet = []; + $normalized_mobile = []; + + foreach ( $data as $key => $item ) { + if ( ! isset( $item['value'] ) ) { + continue; + } + + $this->current_key = $key; + + $value = $item['value']; + + $normalized[ $key ] = $this->get_normalized_value( $value, $key ); + + if ( ! empty( $item['tablet'] ) ) { + $normalized_tablet[ $key ] = $this->get_normalized_value( $item['tablet'], $key ); + } + + if ( ! empty( $item['mobile'] ) ) { + $normalized_mobile[ $key ] = $this->get_normalized_value( $item['mobile'], $key ); + } + } + + $this->current_key = null; + $this->input_data = []; + + if ( ! empty( $normalized_tablet ) ) { + $normalized['__tablet'] = $normalized_tablet; + } + + if ( ! empty( $normalized_mobile ) ) { + $normalized['__mobile'] = $normalized_mobile; + } + + return $normalized; + } + + /** + * Get normalized value based on its type. + * + * @param mixed $value The value to normalize. + * @param string $key The key associated with the value. + * @return mixed The normalized value. + */ + private function get_normalized_value( $value, $key ) { + + if ( is_scalar( $value ) ) { + return $value; + } + + if ( $this->is_typography( $value ) ) { + return $this->normalize_typography( $value ); + } elseif ( $this->is_edges( $value ) ) { + return $this->normalize_edges( $value ); + } elseif ( $this->is_border( $value ) ) { + return $this->normalize_border( $value ); + } elseif ( is_array( $value ) && isset( $value['value'] ) && isset( $value['unit'] ) ) { + return $value['value'] . $value['unit']; + } elseif ( in_array( $key, [ 'icon_size', 'icon_gap' ], true ) ) { + return isset( $value['value'] ) ? (int) $value['value'] : 0; + } else { + return $value; + } + } + + /** + * Check if the value is a border array. + * + * @param array $value The value to check. + * @return bool True if it is a border array, false otherwise. + */ + private function is_border( array $value ): bool { + return isset( $value['width'], $value['color'], $value['style'] ); + } + + /** + * Check if the value is a typography array. + * + * @param array $value The value to check. + * @return bool True if it is a typography array, false otherwise. + */ + private function is_typography( array $value ): bool { + return isset( $value['family'], $value['size'], $value['weight'] ); + } + + /** + * Check if the value contains at least two edges. + * + * @param array $value The value to check. + * @return bool True if it contains at least two edges, false otherwise. + */ + private function is_edges( array $value ): bool { + return count( array_intersect( array_keys( $value ), self::EDGES ) ) >= 2; + } + + /** + * Normalize typography values. + * + * @param array $value The typography value to normalize. + * @return array The normalized typography value. + */ + private function normalize_typography( array $value ): array { + + $typography = []; + + if ( isset( $value['size'] ) ) { + $typography['size'] = $value['size'] . ( $value['s_unit'] ?? 'px' ); + } + + if ( isset( $value['lineHeight'] ) ) { + $typography['lineHeight'] = $value['lineHeight'] . ( $value['lh_unit'] ?? '' ); + } + + if ( isset( $value['letterSpacing'] ) ) { + $typography['letterSpacing'] = $value['letterSpacing'] . ( $value['ls_unit'] ?? 'px' ); + } + + foreach ( [ 'family', 'weight', 'style', 'transform', 'decoration' ] as $attr ) { + if ( isset( $value[ $attr ] ) && 'inherit' !== $value[ $attr ] ) { + $typography[ $attr ] = $value[ $attr ]; + } + } + + return $typography; + } + + /** + * Normalize edges values. + * + * @param array $value The edges value to normalize. + * @return array The normalized edges value. + */ + private function normalize_edges( array $value ): array { + return $value; + } + + /** + * Normalize border values. + * + * @param array $value The border value to normalize. + * @return array The normalized border value. + */ + private function normalize_border( array $value ): array { + + $result = [ 'border' => [] ]; + $border = []; + + if ( isset( $value['width'] ) && is_array( $value['width'] ) ) { + + $width = $this->get_uniform_edge_value( $value['width'] ); + + if ( null !== $width ) { + $border['width'] = $width; + } else { + foreach ( self::EDGES as $edge ) { + if ( isset( $value['width'][ $edge ] ) && ! empty( $value['width'][ $edge ] ) ) { + $border[ $edge ]['width'] = $value['width'][ $edge ]; + } else { + $border[ $edge ]['width'] = '0'; + } + } + } + } + + if ( ! empty( $value['color'] ) && ! empty( $border ) ) { + if ( $this->has_any_edges( $border ) ) { + foreach ( self::EDGES as $edge ) { + $border[ $edge ]['color'] = $value['color']; + } + } else { + $border['color'] = $value['color']; + } + } + + if ( ! empty( $value['style'] ) && 'none' !== $value['style'] && ! empty( $border ) ) { + if ( $this->has_any_edges( $border ) ) { + foreach ( self::EDGES as $edge ) { + $border[ $edge ]['style'] = $value['style']; + } + } else { + $border['style'] = 'solid'; // Default style if not set. + } + } + + if ( ! empty( $border ) ) { + $result['border'] = $border; + } + + if ( isset( $value['radius'] ) && is_array( $value['radius'] ) ) { + $radius = $this->get_uniform_edge_value( $value['radius'] ); + if ( null !== $radius ) { + $result['radius'] = $radius; + } + } + + $keys = array_keys( $this->input_data ); + $curernt_index = array_search( $this->current_key, $keys, true ); + + if ( false !== $curernt_index ) { + $next_index = $curernt_index + 1; + $next_key = isset( $keys[ $next_index ] ) ? $keys[ $next_index ] : null; + + if ( $next_key && false !== strpos( $next_key, 'radius' ) ) { + $next_data = $this->input_data[ $next_key ]['value'] ?? []; + + if ( ! empty( $next_data ) && is_array( $next_data ) ) { + $radius = $this->get_uniform_edge_value( $next_data ); + if ( null !== $radius ) { + $result['radius'] = $radius; + } else { + $radius_map = [ + 'top' => 'topLeft', + 'right' => 'topRight', + 'bottom' => 'bottomRight', + 'left' => 'bottomLeft', + ]; + + $result['radius'] = []; + + foreach ( self::EDGES as $edge ) { + + $current_edge = $radius_map[ $edge ]; + if ( isset( $next_data[ $edge ] ) && ! empty( $next_data[ $edge ] ) ) { + $result['radius'][ $current_edge ] = $next_data[ $edge ]; + } else { + $result['radius'][ $current_edge ] = '0'; + } + } + } + } + } + } + + return $result; + } + + /** + * Check if the value has any edges. + * + * @param array $value The value to check. + * @return bool True if it has any edges, false otherwise. + */ + private function has_any_edges( array $value ): bool { + return count( array_intersect( array_keys( $value ), self::EDGES ) ) > 0; + } + + /** + * Get a uniform edge value from an array of edges. + * + * If all edges have the same value, return that value; otherwise, return null. + * + * @param array $edges An associative array of edges (e.g., ['top' => '10px', 'right' => '10px']). + * @return string|null The uniform edge value or null if not uniform. + */ + private function get_uniform_edge_value( array $edges ): ?string { + $values = array_values( $edges ); + $unique = array_unique( $values ); + + return count( $unique ) === 1 ? $unique[0] : null; + } + +} diff --git a/modules/jet-style/framework/blocks-style-manager/migrator/post-handler.php b/modules/jet-style/framework/blocks-style-manager/migrator/post-handler.php new file mode 100644 index 000000000..520d35054 --- /dev/null +++ b/modules/jet-style/framework/blocks-style-manager/migrator/post-handler.php @@ -0,0 +1,82 @@ +post_id = $post_id; + $this->data = json_decode( $json_data, true ); + $this->normalizer = new Data_Normalizer(); + } + + /** + * Migrate data. + * + * return bool + */ + public function migrate_data() { + + if ( ! $this->post_id || ! $this->data ) { + return false; + } + + foreach ( $this->data as $block_id => $block_controls ) { + $new_data = $this->normalizer->normalize( $block_controls ); + $post_blocks[ $block_id ] = $new_data; + } + + $post = get_post( $this->post_id ); + + if ( ! $post ) { + return false; + } + + $post_content = $post->post_content; + + foreach ( $post_blocks as $block_id => $controls ) { + $controls_json = $this->controls_json( $controls ); + $block_id_pattern = '"blockID":"' . $block_id . '"'; + + // Add new controls only if they are not already present. + if ( false === strpos( $post_content, $block_id_pattern . ',"crocoblock_styles"' ) ) { + $post_content = str_replace( + $block_id_pattern, + $block_id_pattern . ',' . $controls_json, + $post_content + ); + } + } + + $post_content = wp_slash( $post_content ); + + // Update post content with new controls. + wp_update_post( [ + 'ID' => $this->post_id, + 'post_content' => $post_content, + ] ); + + return true; + } + + /** + * Convert controls to JSON. + * + * @param array $controls Controls to convert. + * + * @return string JSON encoded controls. + */ + private function controls_json( array $controls ): string { + $controls['_uniqueClassName'] = substr( uniqid('cb-'), 0, 11 ); + return '"crocoblock_styles":' . json_encode( $controls, JSON_UNESCAPED_SLASHES | JSON_UNESCAPED_UNICODE ); + } +} \ No newline at end of file diff --git a/modules/jet-style/framework/blocks-style-manager/migrator/ui.php b/modules/jet-style/framework/blocks-style-manager/migrator/ui.php new file mode 100644 index 000000000..577d26a44 --- /dev/null +++ b/modules/jet-style/framework/blocks-style-manager/migrator/ui.php @@ -0,0 +1,418 @@ +migrator_dir = plugin_dir_path( __FILE__ ); + + // Add admin notice about migration + add_action( 'admin_notices', [ $this, 'migration_notice' ] ); + // Add admin menu for migration + add_action( 'admin_menu', [ $this, 'add_migration_page' ] ); + add_action( 'admin_init', [ $this, 'process_migration' ] ); + add_action( 'admin_init', [ $this, 'process_cleanup' ] ); + add_action( 'admin_init', [ $this, 'process_rollback' ] ); + } + + /** + * Process rollback to legacy JetStyleManager + */ + public function process_rollback() { + + if ( ! isset( $_GET['rollback'] ) || ! current_user_can( 'manage_options' ) ) { + return; + } + + if ( ! wp_verify_nonce( $_REQUEST['_wpnonce'], $this->page_slug ) ) { + wp_send_json_error( esc_html__( 'The link is expired. Please reload the page and try again.', 'jet-engine' ) ); + } + + delete_option( 'jet_sm_migration_completed' ); + } + + /** + * Process cleanup of legacy data after migration + */ + public function process_cleanup() { + + if ( ! isset( $_GET['clean_up_migration'] ) || ! current_user_can( 'manage_options' ) ) { + return; + } + + if ( ! wp_verify_nonce( $_REQUEST['_wpnonce'], $this->page_slug ) ) { + wp_send_json_error( esc_html__( 'The link is expired. Please reload the page and try again.', 'jet-engine' ) ); + } + + $migrated = get_option( 'jet_sm_migration_completed', false ); + + if ( ! $migrated || 2 == (int) $migrated ) { + wp_send_json_error( esc_html__( 'Migration process is not completed or already cleaned up.', 'jet-engine' ) ); + } + + $clear_meta_keys = [ + '_jet_sm_ready_style', + '_jet_sm_style', + '_jet_sm_controls_values', + '_jet_sm_fonts_collection', + '_jet_sm_fonts_links', + ]; + + global $wpdb; + + foreach ( $clear_meta_keys as $meta_key ) { + $wpdb->query( $wpdb->prepare( + "DELETE FROM {$wpdb->postmeta} WHERE meta_key = %s", + $meta_key + ) ); + } + + update_option( 'jet_sm_migration_completed', 2 ); + + wp_send_json_success( [ + 'message' => esc_html__( 'Legacy data cleaned up successfully. You can now deactivate the JetStyleManager plugin to optimize your website performance.', 'jet-engine' ), + ] ); + } + + /** + * Process migration of the old JetStyleManager data to the new Style Manager module + */ + public function process_migration() { + + if ( ! isset( $_GET['run_migration'] ) || ! current_user_can( 'manage_options' ) ) { + return; + } + + if ( ! wp_verify_nonce( $_REQUEST['_wpnonce'], $this->page_slug ) ) { + wp_send_json_error( esc_html__( 'The link is expired. Please reload the page and try again.', 'jet-engine' ) ); + } + + global $wpdb; + $step = isset( $_REQUEST['step'] ) ? intval( $_REQUEST['step'] ) : 1; + $limit = 20; + $offset = ( $step - 1 ) * $limit; + $items = $wpdb->get_results( "SELECT post_id, meta_value FROM {$wpdb->postmeta} WHERE meta_key = '_jet_sm_controls_values' LIMIT $limit OFFSET $offset" ); + + if ( empty( $items ) ) { + wp_send_json_error( esc_html__( 'No more posts to migrate.', 'jet-engine' ) ); + } + + $total = $this->total_items_to_migrate(); + $migrated = $offset; + + if ( ! class_exists( '\Crocoblock\Blocks_Style\Migrator\Post_Handler' ) ) { + require_once $this->migrator_dir . 'post-handler.php'; + require_once $this->migrator_dir . 'data-normalizer.php'; + } + + foreach ( $items as $item ) { + $post_handler = new Post_Handler( $item->post_id, $item->meta_value ); + $res = $post_handler->migrate_data(); + + if ( $res ) { + $migrated++; + } + } + + if ( $total <= $offset + $limit ) { + + update_option( 'jet_sm_migration_completed', 1 ); + + wp_send_json_success( [ + 'message' => sprintf( + esc_html__( 'Migrated %d posts successfully. Migration completed.', 'jet-engine' ), + $migrated, + ), + 'next_step' => 0, + ] ); + } + + wp_send_json_success( [ + 'message' => sprintf( + esc_html__( 'Migrated %d posts successfully.', 'jet-engine' ), + $migrated, + ), + 'next_step' => $step + 1, + ] ); + } + + /** + * Add migration page to admin menu + */ + public function add_migration_page() { + add_submenu_page( + '', + esc_html__( 'JetStyleManager Migration', 'jet-engine' ), + esc_html__( 'Migration', 'jet-engine' ), + 'manage_options', + $this->page_slug, + [ $this, 'render_migration_page' ] + ); + } + + /** + * Render migration page + */ + public function render_migration_page() { + + if ( ! current_user_can( 'manage_options' ) ) { + wp_die( esc_html__( 'You do not have sufficient permissions to access this page.', 'jet-engine' ) ); + } + + $migration_completed = get_option( 'jet_sm_migration_completed', false ); + $fonts_manager_url = esc_url( admin_url( 'site-editor.php?p=/styles§ion=/typography' ) ); + + $fonts_manager_message = '

' . esc_html__( 'Please note:', 'jet-engine' ) . ' '; + $fonts_manager_message .= sprintf( + esc_html__( ' The new Styles Manager uses fonts installed on your website. You can %1$smanage these fonts here%1$s.', 'jet-engine' ), + '', + '' + ); + $fonts_manager_message .= '

'; + + if ( $migration_completed && 2 == (int) $migration_completed ) { + echo '
'; + echo '

' . esc_html__( 'JetStyleManager Migration', 'jet-engine' ) . '

'; + echo '

' . esc_html__( 'Migration process is already completed. You can now deactivate the JetStyleManager plugin to optimize your website performance.', 'jet-engine' ) . '

'; + + echo $fonts_manager_message; + + echo '
'; + exit; + } + + echo '
'; + echo '

' . esc_html__( 'JetStyleManager Migration', 'jet-engine' ) . '

'; + echo '

' . esc_html__( 'This page allows you to migrate your styling settings to the new Style Manager module.', 'jet-engine' ) . '

'; + + $completed_style = 'style="display: none;"'; + $run_style = ''; + + if ( $migration_completed && 1 == (int) $migration_completed ) { + $completed_style = ''; + $run_style = 'style="display: none;"'; + } + + echo '
'; + + echo '

' . esc_html__( 'Migration process is completed. Please check your content. If everything is ok, you can click the button below to remove the legacy data and then deactivate JetStyleManager plugin.', 'jet-engine' ) . '

'; + + echo $fonts_manager_message; + + echo '

' . esc_html__( 'Cleanup Legacy Data', 'jet-engine' ) . '

'; + + echo '

' . esc_html__( 'If something went wrong click the button below to rollback to the legacy JetStyleManager.', 'jet-engine' ) . '

'; + + echo '

' . esc_html__( 'Rollback to legacy JetStyleManager', 'jet-engine' ) . '

'; + + echo '
'; + + echo '
'; + + echo '

' . esc_html__( 'Click the button below to start the migration process. After migration, you can deactivate the JetStyleManager plugin to optimize your website performance.', 'jet-engine' ) . '

'; + + $total_items = $this->total_items_to_migrate(); + + if ( $total_items > 0 ) { + echo '

' . sprintf( + esc_html__( 'Total posts to migrate: %d', 'jet-engine' ), + $total_items + ) . '

'; + + echo '

' . esc_html__( 'Start Migration', 'jet-engine' ) . '

'; + + echo '
'; + } else { + echo '

' . esc_html__( 'No posts to migrate. You can just disable an old JetStyleManager plugin and use the new functionality.', 'jet-engine' ) . '

'; + } + + echo '
'; + + $this->inline_scripts(); + + echo '
'; + } + + /** + * Get the total number of items to migrate + * + * @return int + */ + public function total_items_to_migrate() { + + global $wpdb; + $count = $wpdb->get_var( "SELECT count(meta_id) FROM {$wpdb->postmeta} WHERE meta_key = '_jet_sm_controls_values';" ); + return $count; + } + + /** + * Inline scripts for the migration page + */ + protected function inline_scripts() { + ?> + + $this->page_slug ]; + + if ( $run_migration ) { + $url_args['run_migration'] = 1; + } + + if ( $cleanup ) { + $url_args['clean_up_migration'] = 1; + } + + if ( $rollback ) { + $url_args['rollback'] = 1; + } + + $url = add_query_arg( $url_args, admin_url( 'admin.php' ) ); + + return esc_url( wp_nonce_url( $url, $this->page_slug ) ); + } + + /** + * Notice about migration if there is a new style manager version + */ + public function migration_notice() { + + if ( + ! current_user_can( 'manage_options' ) + || isset( $_GET['page'] ) && $_GET['page'] === $this->page_slug + ) { + return; + } + + echo '
'; + echo '

' . esc_html__( 'JetStyleManager as a separate plugin has been replaced with a built-in Style Manager module for the plugins that support it. You can migrate your styling settings to the new style manager module and deactivate JetStyleManager plugin to optimize your website performance.', 'jet-engine' ) . '

'; + echo '

' . esc_html__( 'Go to Migration Page', 'jet-engine' ) . '

'; + echo '
'; + } +} \ No newline at end of file diff --git a/modules/jet-style/framework/blocks-style-manager/proxy.php b/modules/jet-style/framework/blocks-style-manager/proxy.php index c478a98e9..b668ec339 100644 --- a/modules/jet-style/framework/blocks-style-manager/proxy.php +++ b/modules/jet-style/framework/blocks-style-manager/proxy.php @@ -11,6 +11,8 @@ class Proxy { protected $legacy_block_manager; protected $legacy_controls_manager; + public static $is_migrated = null; + /** * Set the Block instance * @@ -23,7 +25,7 @@ public function __construct( $block ) { if ( $this->has_legacy_style_manager() ) { $this->legacy_block_manager = \JET_SM\Gutenberg\Block_Manager::get_instance(); $this->legacy_controls_manager = new \JET_SM\Gutenberg\Controls_Manager( - $this->block->get_block_name() + $this->block->get_block_name() ); } } @@ -43,7 +45,14 @@ public function get_block() { * @return boolean */ public function has_legacy_style_manager() { - return ( class_exists( '\JET_SM\Gutenberg\Block_Manager' ) && class_exists( '\JET_SM\Gutenberg\Block_Manager' ) ); + + if ( self::$is_migrated ) { + return false; + } + + self::$is_migrated = get_option( 'jet_sm_migration_completed', false ); + + return class_exists( '\JET_SM\Gutenberg\Block_Manager' ); } /** @@ -79,13 +88,25 @@ public function end_section() { /** * Add a new control to the current section * - * @param array $args + * @param array $args * @return void */ public function add_control( $args = array() ) { if ( $this->has_legacy_style_manager() ) { - $this->legacy_controls_manager->add_control( $args ); + + $is_responsive = ! empty( $args['is_responsive'] ) && $args['is_responsive']; + + if ( ! empty( $args['legacy_css_selector'] ) ) { + $args['css_selector'] = $args['legacy_css_selector']; + unset( $args['legacy_css_selector'] ); + } + + if ( $is_responsive ) { + $this->legacy_controls_manager->add_responsive_control( $args ); + } else { + $this->legacy_controls_manager->add_control( $args ); + } } if ( ! empty( $args['is_legacy'] ) ) { @@ -93,9 +114,80 @@ public function add_control( $args = array() ) { return; } + // rewrite default attribute + if ( + ! empty( $args['attributes'] ) + && ! empty( $args['attributes']['default'] ) + ) { + $raw_default = $args['attributes']['default']; + $default = null; + + if ( is_array( $raw_default ) ) { + if ( ! empty( $raw_default['value'] ) ) { + if ( is_array( $raw_default['value'] ) ) { + + if ( isset( $raw_default['value']['value'] ) ) { + $default = $raw_default['value']['value']; + } + + if ( ! empty( $raw_default['value']['unit'] ) && null !== $default ) { + $default .= $raw_default['value']['unit']; + } + } else { + $default = (string) $raw_default['value']; + } + } + + if ( ! empty( $raw_default['unit'] ) && null !== $default ) { + $default .= $raw_default['unit']; + } + } else { + $default = $raw_default; + } + + if ( null !== $default ) { + + if ( ! empty( $args['return_value'] ) ) { + $default = $this->find_value_by_return_value( $args['return_value'], $default ); + } + + $args['default'] = $default; + } + + unset( $args['attributes']['default'] ); + } + $this->block->add_control( $args ); } + /** + * Find the value by return value array + * + * @param array $return_value + * @param mixed $default + * @return mixed + */ + protected function find_value_by_return_value( $return_value, $default ) { + if ( is_array( $return_value ) ) { + + $key = $default; + + if ( is_bool( $key ) ) { + $key = ( $key ) ? 'true' : 'false'; + } elseif ( is_null( $key ) ) { + $key = 'null'; + } elseif ( is_array( $key ) ) { + $key = json_encode( $key ); + } else { + $key = (string) $key; + } + + return ( isset( $return_value[ $key ] ) ) ? $return_value[ $key ] : $default; + } + + return $default; + } + /** * Add a new control to the current section. * Fallback for legacy style manager. @@ -104,6 +196,7 @@ public function add_control( $args = array() ) { * @return void */ public function add_responsive_control( $args = array() ) { + $args['is_responsive'] = true; $this->add_control( $args ); } diff --git a/modules/jet-style/framework/blocks-style-manager/registry.php b/modules/jet-style/framework/blocks-style-manager/registry.php index abdd1fbf6..2e3c4ae1c 100644 --- a/modules/jet-style/framework/blocks-style-manager/registry.php +++ b/modules/jet-style/framework/blocks-style-manager/registry.php @@ -55,10 +55,44 @@ public static function instance() { */ public function register_block( $block_name, $args = array() ) { + add_filter( + 'register_block_type_args', + function( $block_args, $block_type ) use ( $block_name, $args ) { + + if ( $block_type !== $block_name ) { + return $block_args; + } + + if ( empty( $block_args['supports'] ) ) { + $block_args['supports'] = array(); + } + + $block_args['supports'][ $this->get_support_name() ] = true; + + // Ensure attributes array exists. + if ( empty( $block_args['attributes'] ) ) { + $block_args['attributes'] = array(); + } + + if ( empty( $block_args['attributes'][ $this->get_support_name() ] ) ) { + $defaults = array( + '_uniqueClassName' => '', + ); + + $block_args['attributes'][ $this->get_support_name() ] = array( + 'type' => 'object', + 'default' => $defaults, + ); + } + + return $block_args; + }, + 10, 2 + ); + if ( ! class_exists( 'Crocoblock\Blocks_Style\Block' ) ) { require_once $this->get_path( 'style-cache.php' ); require_once $this->get_path( 'style-engine.php' ); - require_once $this->get_path( 'style-inserter.php' ); require_once $this->get_path( 'block.php' ); } @@ -72,18 +106,14 @@ public function register_block( $block_name, $args = array() ) { } Editor::instance()->set_url( $this->url )->init(); - - $this->register_global_block_support(); } if ( ! isset( $this->registry[ $block_name ] ) ) { $this->registry[ $block_name ] = new Block( $block_name, $args ); } else { - $this->registry[ $block_name ]->set_args( $args ); + $this->registry[ $block_name ]->set_attributes( $args ); } - - return $this->registry[ $block_name ]; } @@ -96,60 +126,6 @@ public function get_support_name() { return 'crocoblock_styles'; } - /** - * Register 'crocoblock_styles' for block supports. - * - * @return void - */ - public function register_global_block_support() { - - \WP_Block_Supports::get_instance()->register( - $this->get_support_name(), - array( - 'apply' => array( $this, 'apply_support' ), - ) - ); - - add_action( 'wp_loaded', array( $this, 'add_blocks_support' ), 999 ); - } - - /** - * Add 'crocoblock_styles' support for all registered blocks - * - * @return void - */ - public function add_blocks_support() { - - $blocks_names = array_keys( $this->registry ); - $block_type_registry = \WP_Block_Type_Registry::get_instance(); - - foreach ( $blocks_names as $block_name ) { - - $block_type = $block_type_registry->get_registered( $block_name ); - - if ( ! $block_type ) { - continue; - } - - if ( ! block_has_support( $block_type, array( $this->get_support_name() ) ) ) { - - if ( ! isset( $block_type->supports ) ) { - $block_type->supports = array(); - } - - $block_type->supports[ $this->get_support_name() ] = true; - - if ( ! isset( $block_type->attributes ) ) { - $block_type->attributes = array(); - } - - $block_type->attributes[ $this->get_support_name() ] = array( - 'type' => 'object', - ); - } - } - } - /** * Get block instance by name * diff --git a/modules/jet-style/framework/blocks-style-manager/style-engine.php b/modules/jet-style/framework/blocks-style-manager/style-engine.php index a6e70e543..253a11cba 100644 --- a/modules/jet-style/framework/blocks-style-manager/style-engine.php +++ b/modules/jet-style/framework/blocks-style-manager/style-engine.php @@ -255,9 +255,10 @@ public function generate_css_selector( $selector = '' ) { return Field_Handlers\Base::replace_data( $selector, - array( + apply_filters( 'crocoblock/style-manager/css-selector-macros', array( 'wrapper' => '.' . $this->class_name, - ) + 'id' => $this->class_name, + ), $this ) ); } diff --git a/modules/jet-style/framework/blocks-style-manager/style-inserter.php b/modules/jet-style/framework/blocks-style-manager/style-inserter.php index 055c2afc9..e1910c09f 100644 --- a/modules/jet-style/framework/blocks-style-manager/style-inserter.php +++ b/modules/jet-style/framework/blocks-style-manager/style-inserter.php @@ -4,17 +4,42 @@ */ namespace Crocoblock\Blocks_Style; + class Style_Inserter { protected $class_name = ''; protected $data = array(); + /** + * Current styles collection. + * + * @var string|null + */ + public static $current_collection = null; + + /** + * All styles grouped into collections. + * + * @var array + */ + public static $collections = array(); + public function __construct( $class_name = '', $data = array() ) { $this->class_name = $class_name; $this->data = $data; } + /** + * Set current styles collection. + * + * @param string|null $name + * @return void + */ + public static function set_collection( $name = null ) { + self::$current_collection = $name; + } + /** * Insert styles into the given content. * @@ -38,10 +63,6 @@ public function __construct( $class_name = '', $data = array() ) { */ public function insert_styles( $content = '' ) { - if ( empty( $content ) ) { - return ''; - } - $variables = ''; if ( ! empty( $this->data['variables'] ) ) { @@ -53,26 +74,96 @@ public function insert_styles( $content = '' ) { if ( ! empty( $styles ) ) { - if ( ! empty( $this->class_name ) ) { - // Check if the first tag contains class attribute. - if ( preg_match( '/<(\w+)([^>]*)class="([^"]*)"/', $content, $matches ) ) { - // If it does, we will add our class to it. - $content = str_replace( - $matches[0], - sprintf( '<%s%s class="%s %s"', $matches[1], $matches[2], $matches[3], $this->class_name ), - $content - ); - } else { - // If it does not, we create a new class attribute with our class and add it to the first tag. - $content = preg_replace( '/<(\w+)/', sprintf( '<$1 class="%s"', $this->class_name ), $content, 1 ); + if ( ! empty( $content ) && ! empty( $this->class_name ) ) { + $content = $this->with_class_name( $content ); + } + + if ( ! empty( self::$current_collection ) ) { + + if ( ! isset( self::$collections[ self::$current_collection ] ) ) { + self::$collections[ self::$current_collection ] = ''; } + + self::$collections[ self::$current_collection ] .= $styles; + + // If we stored styles into the collection - there is nothing more to do. + return $content; } if ( ! Style_Cache::get_instance()->is_printed( $this->class_name ) ) { - $content = '' . $content; + if ( ! did_action( 'wp_head' ) ) { + // If the wp_head action isn't called yet, we will add the styles to the head. + add_action( 'wp_head', function() use ( $styles ) { + echo self::styles_with_tag( $styles ); + } ); + } else { + // If the wp_head action is already called, we will add the styles to the content. + $content = self::styles_with_tag( $styles ) . $content; + } } } return $content; } + + /** + * Get styles collection by name. + * + * @param string|null $name + * @return string + */ + public static function get_styles_collection( $name = null, $with_tag = true ) { + + if ( ! $name ) { + return ''; + } + + $styles = isset( self::$collections[ $name ] ) ? self::$collections[ $name ] : ''; + + if ( ! $styles ) { + return ''; + } + + return $with_tag ? self::styles_with_tag( $styles ) : $styles; + } + + /** + * Add class name to the content wrapper. + * + * @param string $content Content to add class name to. + * @return string + */ + public function with_class_name( $content = '' ) { + + if ( empty( $content ) || empty( $this->class_name ) ) { + return $content; + } + + if ( ! class_exists( '\WP_HTML_Processor' ) ) { + require_once ABSPATH . WPINC . '/class-wp-html-processor.php'; + } + + $processor = \WP_HTML_Processor::create_fragment( $content ); + + while ( $processor->next_tag( [ + 'breadcrumbs' => [ 'BODY', '*' ], + 'tag_closers' => 'skip', + ] ) ) { + $processor->add_class( $this->class_name ); + } + + $content = $processor->get_updated_html(); + + return $content; + } + + /** + * Get styles wrapped into the '; + } } diff --git a/modules/jet-style/framework/blocks-style-manager/style-manager.php b/modules/jet-style/framework/blocks-style-manager/style-manager.php index d557915f0..d5a95708b 100644 --- a/modules/jet-style/framework/blocks-style-manager/style-manager.php +++ b/modules/jet-style/framework/blocks-style-manager/style-manager.php @@ -2,7 +2,7 @@ /** * Blocks Style Manager * - * Version: 2.0.0 + * Version: 2.1.11 */ namespace Crocoblock\Blocks_Style; @@ -31,7 +31,11 @@ class Manager { * * @var string */ - protected $version = '2.0.0'; + protected $version = '2.1.11'; + + public static $migrator_registered = false; + + public static $requires_migration = false; /** * Constructor @@ -39,9 +43,29 @@ class Manager { * @param array $args Arguments. */ public function __construct( $args = array() ) { + $this->path = $args['path']; $this->url = $args['url']; require_once $this->path . 'path-url-trait.php'; + + if ( $this->is_migrator_enabled() ) { + + if ( ! class_exists( '\Crocoblock\Blocks_Style\Migrator\UI' ) ) { + require_once $this->path . 'migrator/ui.php'; + } + + new Migrator\UI(); + self::$migrator_registered = true; + } + } + + /** + * Check if migrator is enabled. + * + * @return bool + */ + public function is_migrator_enabled() { + return ! self::$migrator_registered && self::$requires_migration; } /** @@ -71,6 +95,41 @@ public function register_block_support( $block_name = '', $args = array() ) { Registry::instance()->register_block( $block_name, $args ); } + /** + * Start collecting styles for the given blocks set. + * Collected styles could be get/printed at once. + * + * @param string $name + * @return void + */ + public function start_collection( $name ) { + $this->ensure_block_registry(); + Style_Inserter::set_collection( $name ); + } + + /** + * Start collecting styles for the given blocks set. + * Collected styles could be get/printed at once. + * + * @param string $name + * @return void + */ + public function stop_current_collection() { + $this->ensure_block_registry(); + Style_Inserter::set_collection( null ); + } + + /** + * Get styles collection by name. + * + * @param string|null $name + * @return string + */ + public function get_styles_collection( $name = null ) { + $this->ensure_block_registry(); + return Style_Inserter::get_styles_collection( $name ); + } + /** * Get proxy class instance. * @@ -131,6 +190,8 @@ public function enqueue_editor_assets() { protected function ensure_block_registry() { if ( ! class_exists( '\Crocoblock\Blocks_Style\Registry' ) ) { require_once $this->path . 'registry.php'; + require_once $this->path . 'style-inserter.php'; + // Must be always called before registering the 1st block. Registry::instance()->set_path( $this->path )->set_url( $this->url ); } diff --git a/modules/option-field/blocks/checkbox/block-type.php b/modules/option-field/blocks/checkbox/block-type.php index 02cbf7601..d14243481 100644 --- a/modules/option-field/blocks/checkbox/block-type.php +++ b/modules/option-field/blocks/checkbox/block-type.php @@ -36,7 +36,7 @@ public function get_css_scheme() { 'item' => '.jet-form-builder__field-wrap.checkboxes-wrap', 'option-label' => '.jet-form-builder__field-wrap label', 'checkbox-editor' => '.jet-form-builder__field-wrap .components-checkbox-control__input-container', - 'checkbox-front' => '.jet-form-builder__field-wrap span::before', + 'checkbox-front' => '.jet-form-builder__field-wrap .jet-form-builder__field-label.for-checkbox>span::before', 'wrapper' => '.jet-form-builder__fields-group', ); } @@ -246,7 +246,7 @@ public function jsm_controls() { ), ), 'css_selector' => array( - '{{WRAPPER}} ' . $this->css_scheme['checkbox-front'] => 'font-size: {{VALUE}}{{UNIT}};', + '{{WRAPPER}} ' . $this->css_scheme['checkbox-front'] => 'font-size: {{VALUE}}{{UNIT}}; width: {{VALUE}}{{UNIT}}; height: {{VALUE}}{{UNIT}};', '{{WRAPPER}} ' . $this->css_scheme['checkbox-editor'] => 'height: {{VALUE}}{{UNIT}}; width: {{VALUE}}{{UNIT}};', '{{WRAPPER}} ' . $this->css_scheme['checkbox-editor'] . ' input' => 'height: {{VALUE}}{{UNIT}}; width: {{VALUE}}{{UNIT}}; min-width: {{VALUE}}{{UNIT}};', ), From 352c4a4981e86af29a80594db9ebf35a08943562 Mon Sep 17 00:00:00 2001 From: Andrew Shevchenko Date: Mon, 12 Jan 2026 22:00:05 +0200 Subject: [PATCH 04/13] FIX: StyleManager init. https://github.com/Crocoblock/issues-tracker/issues/18154 --- includes/blocks/blocks-repository-base.php | 2 ++ includes/blocks/types/base.php | 10 +++------- includes/blocks/types/number-field.php | 7 ------- .../framework/blocks-style-manager/style-manager.php | 4 ++-- modules/jet-style/style-manager.php | 6 +++--- 5 files changed, 10 insertions(+), 19 deletions(-) diff --git a/includes/blocks/blocks-repository-base.php b/includes/blocks/blocks-repository-base.php index 8393cda92..6433660a1 100644 --- a/includes/blocks/blocks-repository-base.php +++ b/includes/blocks/blocks-repository-base.php @@ -23,6 +23,8 @@ abstract class Blocks_Repository_Base { public function rep_before_install_item( $block_type ) { /** @var Types\Base $block_type */ + do_action( 'jet-form-builder/block-type/before-intall', $block_type ); + // throw exception & exclude from repository if block is not supported if ( ! $block_type->is_supported() ) { $this->_rep_abort_this(); diff --git a/includes/blocks/types/base.php b/includes/blocks/types/base.php index 4121a4a12..a03f2034e 100644 --- a/includes/blocks/types/base.php +++ b/includes/blocks/types/base.php @@ -46,6 +46,7 @@ abstract class Base extends Base_Module implements Repository_Item_Instance_Trai * @var Controls_Manager */ protected $controls_manager; + protected $style_manager; protected $css_scheme; public $style_attributes = array(); @@ -103,11 +104,6 @@ public function get_extra_fields( Base_Source $source ): array { */ public function register_block_type() { $this->register_block(); - - add_action( - 'jet-form-builder/styles/register-block', - array( $this, 'maybe_init_style_manager' ) - ); } /** @@ -205,11 +201,11 @@ public function get_provides_context(): array { public function maybe_init_style_manager( $style_manager ) { - $style_manager->get_manager()->register_block_support( + $style_manager->register_block_support( $this->block_name() ); - $proxy = $style_manager->get_manager()->get_proxy( $this->block_name() ); + $proxy = $style_manager->get_proxy( $this->block_name() ); $this->controls_manager = $proxy; $this->css_scheme = array_merge( $this->general_css_scheme(), $this->get_css_scheme() ); diff --git a/includes/blocks/types/number-field.php b/includes/blocks/types/number-field.php index e390a58ec..c24826c43 100644 --- a/includes/blocks/types/number-field.php +++ b/includes/blocks/types/number-field.php @@ -79,13 +79,6 @@ public function jsm_controls() { '{{WRAPPER}} ' . $this->css_scheme['front-field'] => 'border-style:{{STYLE}};border-width:{{WIDTH}};border-radius:{{RADIUS}};border-color:{{COLOR}};', '{{WRAPPER}} ' . $this->css_scheme['field'] => 'border-style:{{STYLE}};border-width:{{WIDTH}};border-radius:{{RADIUS}};border-color:{{COLOR}};', ), - 'attributes' => array( - 'default' => array( - 'value' => array( - 'borderStyle' => 'solid', - ), - ), - ), ) ); diff --git a/modules/jet-style/framework/blocks-style-manager/style-manager.php b/modules/jet-style/framework/blocks-style-manager/style-manager.php index d5a95708b..0f3a3182c 100644 --- a/modules/jet-style/framework/blocks-style-manager/style-manager.php +++ b/modules/jet-style/framework/blocks-style-manager/style-manager.php @@ -2,7 +2,7 @@ /** * Blocks Style Manager * - * Version: 2.1.11 + * Version: 2.1.12 */ namespace Crocoblock\Blocks_Style; @@ -31,7 +31,7 @@ class Manager { * * @var string */ - protected $version = '2.1.11'; + protected $version = '2.1.12'; public static $migrator_registered = false; diff --git a/modules/jet-style/style-manager.php b/modules/jet-style/style-manager.php index d3d96166a..14b507e4a 100644 --- a/modules/jet-style/style-manager.php +++ b/modules/jet-style/style-manager.php @@ -23,7 +23,7 @@ public function __construct() { 'url' => $module_data['url'], ) ); - add_action( 'init', array( $this, 'register_blocks' ), 99 ); + add_action( 'jet-form-builder/block-type/before-intall', array( $this, 'register_block' ) ); } /** @@ -40,7 +40,7 @@ public function get_manager() { * * @return void */ - public function register_blocks() { - do_action( 'jet-form-builder/styles/register-block', $this ); + public function register_block( $block_type ) { + $block_type->maybe_init_style_manager( $this->manager ); } } \ No newline at end of file From 4e6d86214672c612e1134fb98f9d24d50bb6c19b Mon Sep 17 00:00:00 2001 From: Alexandr Rudy Date: Tue, 13 Jan 2026 14:40:32 +0200 Subject: [PATCH 05/13] UPD: JetBooking macros handling in calculated field; https://github.com/Crocoblock/issues-tracker/issues/15871 --- .../assets/build/frontend.asset.php | 2 +- .../jet-booking/assets/build/frontend.js | 2 +- .../assets/src/frontend/jet-booking.js | 44 ++++++++++++------- 3 files changed, 30 insertions(+), 18 deletions(-) diff --git a/compatibility/jet-booking/assets/build/frontend.asset.php b/compatibility/jet-booking/assets/build/frontend.asset.php index f10897e56..b4032db35 100644 --- a/compatibility/jet-booking/assets/build/frontend.asset.php +++ b/compatibility/jet-booking/assets/build/frontend.asset.php @@ -1 +1 @@ - array(), 'version' => '6eb3a0ab639117abb803'); + array(), 'version' => '575a25df8a77e253481c'); diff --git a/compatibility/jet-booking/assets/build/frontend.js b/compatibility/jet-booking/assets/build/frontend.js index 6399dd2c0..04d3e39fc 100644 --- a/compatibility/jet-booking/assets/build/frontend.js +++ b/compatibility/jet-booking/assets/build/frontend.js @@ -1 +1 @@ -(()=>{"use strict";const t="YYYY-MM-DD";function e(){return window?.JetABAFInput?.field_format??t}function n(){return window?.JetABAFInput?.layout??"single"}function i(t){return window?.JetABAFData?.[t]}const{InputData:o}=JetFormBuilderAbstract,{isEmpty:r}=JetFormBuilderFunctions;function a(){o.call(this),this.sanitize((function(n){return r(n)||!Array.isArray(n)&&"string"!=typeof n?[]:Array.isArray(n)?n:(n=n.split(" - ")).length?n.map((n=>moment(n,e()).format(t))):[]})),this.isSupported=function(t){return"checkin-checkout"===t.dataset.field},this.addListeners=function(){this.reporting.makeInvalid=()=>{},this.reporting.makeValid=()=>{};const[t]=this.nodes;jQuery(t).on("change.JetFormBuilderMain",(()=>{this.value.current=this.value.isMaked?t.value:this.value.applySanitizers(t.value)}));const e=t.parentElement.querySelectorAll(".jet-abaf-field__input");for(const t of e)t.addEventListener("blur",(()=>this.reportOnBlur()))},this.setValue=function(){this.value.current=this.value.applySanitizers(this.nodes[0].value)},this.checkIsRequired=function(){const[t]=this.nodes;return!!t.required||!!t.parentElement.querySelector(".jet-abaf-field__input[required]")},this.setNode=function(t){if(o.prototype.setNode.call(this,t),this.inputType="checkin-checkout","single"===n())return;const e=t.closest(".jet-abaf-separate-fields");this.nodes.push(...e.querySelectorAll('.jet-abaf-field__input[type="text"]'),e)}}a.prototype=Object.create(o.prototype),a.prototype.parseValueForCalculated=function(){if(!this.getValue()?.length)return 0;if(window?.JetBooking?.calcBookedDates){const n=this.getValue().map((n=>moment(n,t).format(e())));return JetBooking.calcBookedDates(n.join(" - "))}if(i("one_day_bookings"))return 1;const n=this.value.current.map((t=>moment(t)));let o=n[1].diff(n[0],"days");return o=Number(o),i("per_nights")||o++,o};const u=a,{BaseSignal:s}=JetFormBuilderAbstract;function c(){s.call(this),this.isSupported=function(t,e){return e instanceof u},this.runSignal=function(t){"single"===n()?this.runSignalForSingle():this.runSignalForSeparate(t)},this.runSignalForSingle=function(){const[n]=this.input.nodes,{current:i}=this.input.value;i.length?n.value=i.map((n=>moment(n,t).format(e()))).join(" - "):n.value=""},this.runSignalForSeparate=function(n){const[,i,o]=this.input.nodes,{current:r}=this.input.value;if(r?.toString?.()!==n?.toString?.()){if(!r.length)return i.value="",o.value="",void this.updateCalendar();i.value=moment(r[0],t).format(e()),o.value=moment(r[1]??r[0],t).format(e()),this.updateCalendar()}},this.updateCalendar=function(){const{current:t}=this.input.value,[,,,n]=this.input.nodes;if(!t.length)return void jQuery(n).data("dateRangePicker").clear();const i=e();jQuery(n).data("dateRangePicker").setDateRange(moment(t[0]).format(i),moment(t[1]??t[0]).format(i),!0)}}c.prototype=Object.create(s.prototype);const l=c,{addAction:d,addFilter:f}=JetPlugins.hooks;d("jet.fb.observe.before","jet-form-builder/booking-compatibility",(function(t){const{rootNode:e}=t;for(const t of e.querySelectorAll(".field-type-check-in-out")){const e=t.querySelector('input[data-field="checkin-checkout"]');e&&(e.dataset.jfbSync=1)}})),f("jet.fb.inputs","jet-form-builder/booking-compatibility",(function(t){return[u,...t]})),f("jet.fb.signals","jet-form-builder/booking-compatibility",(function(t){return[l,...t]})),f("jet.fb.formula.node.exists","jet-form-builder/booking-compatibility",(function(t,e,n){const i=e.match(/ADVANCED_PRICE::([\w\-]+)/);return i&&i?.length&&(t=n.root.rootNode[i[1]]),t})),f("jet.fb.onCalculate.part","jet-form-builder/booking-compatibility",(function(t,e){if("string"!=typeof t)return t;const n=t.match(/ADVANCED_PRICE::([\w\-]+)/);if(!n?.length||!e?.input)return t;const[,i]=n,o=e.input.root.getInput(i);return o?(e.cachedFields=e.cachedFields||[],e.cachedFields.includes(o.name)||(e.cachedFields.push(o.name),o.watch((()=>e.setResult()))),t):0})),f("jet.fb.calculated.callback","jet-form-builder/booking-field-parser",(function(t,e,n){return!1!==t||"checkin-checkout"!==e.inputType?t:e.parseValueForCalculated()}))})(); \ No newline at end of file +(()=>{"use strict";const t="YYYY-MM-DD";function e(){return window?.JetABAFInput?.field_format??t}function n(){return window?.JetABAFInput?.layout??"single"}function i(t){return window?.JetABAFData?.[t]}const{InputData:r}=JetFormBuilderAbstract,{isEmpty:o}=JetFormBuilderFunctions;function a(){r.call(this),this.sanitize(function(n){return o(n)||!Array.isArray(n)&&"string"!=typeof n?[]:Array.isArray(n)?n:(n=n.split(" - ")).length?n.map(n=>moment(n,e()).format(t)):[]}),this.isSupported=function(t){return"checkin-checkout"===t.dataset.field},this.addListeners=function(){this.reporting.makeInvalid=()=>{},this.reporting.makeValid=()=>{};const[t]=this.nodes;jQuery(t).on("change.JetFormBuilderMain",()=>{this.value.current=this.value.isMaked?t.value:this.value.applySanitizers(t.value)});const e=t.parentElement.querySelectorAll(".jet-abaf-field__input");for(const t of e)t.addEventListener("blur",()=>this.reportOnBlur())},this.setValue=function(){this.value.current=this.value.applySanitizers(this.nodes[0].value)},this.checkIsRequired=function(){const[t]=this.nodes;return!!t.required||!!t.parentElement.querySelector(".jet-abaf-field__input[required]")},this.setNode=function(t){if(r.prototype.setNode.call(this,t),this.inputType="checkin-checkout","single"===n())return;const e=t.closest(".jet-abaf-separate-fields");this.nodes.push(...e.querySelectorAll('.jet-abaf-field__input[type="text"]'),e)}}a.prototype=Object.create(r.prototype),a.prototype.parseValueForCalculated=function(){if(!this.getValue()?.length)return 0;if(window?.JetBooking?.calcBookedDates){const n=this.getValue().map(n=>moment(n,t).format(e()));return JetBooking.calcBookedDates(n.join(" - "))}if(i("one_day_bookings"))return 1;const n=this.value.current.map(t=>moment(t));let r=n[1].diff(n[0],"days");return r=Number(r),i("per_nights")||r++,r};const u=a,{BaseSignal:s}=JetFormBuilderAbstract;function c(){s.call(this),this.isSupported=function(t,e){return e instanceof u},this.runSignal=function(t){"single"===n()?this.runSignalForSingle():this.runSignalForSeparate(t)},this.runSignalForSingle=function(){const[n]=this.input.nodes,{current:i}=this.input.value;i.length?n.value=i.map(n=>moment(n,t).format(e())).join(" - "):n.value=""},this.runSignalForSeparate=function(n){const[,i,r]=this.input.nodes,{current:o}=this.input.value;if(o?.toString?.()!==n?.toString?.()){if(!o.length)return i.value="",r.value="",void this.updateCalendar();i.value=moment(o[0],t).format(e()),r.value=moment(o[1]??o[0],t).format(e()),this.updateCalendar()}},this.updateCalendar=function(){const{current:t}=this.input.value,[,,,n]=this.input.nodes;if(!t.length)return void jQuery(n).data("dateRangePicker").clear();const i=e();jQuery(n).data("dateRangePicker").setDateRange(moment(t[0]).format(i),moment(t[1]??t[0]).format(i),!0)}}c.prototype=Object.create(s.prototype);const l=c,{addAction:d,addFilter:f}=JetPlugins.hooks;d("jet.fb.observe.before","jet-form-builder/booking-compatibility",function(t){const{rootNode:e}=t;for(const t of e.querySelectorAll(".field-type-check-in-out")){const e=t.querySelector('input[data-field="checkin-checkout"]');e&&(e.dataset.jfbSync=1)}}),f("jet.fb.inputs","jet-form-builder/booking-compatibility",function(t){return[u,...t]}),f("jet.fb.signals","jet-form-builder/booking-compatibility",function(t){return[l,...t]}),f("jet.fb.formula.node.exists","jet-form-builder/booking-compatibility",function(t,e,n){const i=e.match(/ADVANCED_PRICE::([\w\-]+)/);return i&&i?.length&&(t=n.root.rootNode[i[1]]),t}),f("jet.fb.onCalculate.part","jet-form-builder/booking-compatibility",function(t,e){if("string"!=typeof t)return t;if(!e?.input)return t;const n=t.match(/(ADVANCED_PRICE|BOOKING_TIME)::([\w\-]+)/);if(!n?.length)return t;const[,i,r]=n;if("ADVANCED_PRICE"===i){const t=e.input.root.getInput(r);if(!t)return 0;e.cachedFields=e.cachedFields||[],e.cachedFields.includes(t.name)||(e.cachedFields.push(t.name),t.watch(()=>e.setResult()))}else{const t=document.getElementById(r);if(!t)return 0;t.addEventListener("change",()=>{e.setResult()})}return t}),f("jet.fb.calculated.callback","jet-form-builder/booking-field-parser",function(t,e,n){return!1!==t||"checkin-checkout"!==e.inputType?t:e.parseValueForCalculated()})})(); \ No newline at end of file diff --git a/compatibility/jet-booking/assets/src/frontend/jet-booking.js b/compatibility/jet-booking/assets/src/frontend/jet-booking.js index 18932e767..0e4ef8126 100644 --- a/compatibility/jet-booking/assets/src/frontend/jet-booking.js +++ b/compatibility/jet-booking/assets/src/frontend/jet-booking.js @@ -1,10 +1,7 @@ import CheckOutInput from './CheckOutInput'; import CheckOutSignal from './CheckOutSignal'; -const { - addAction, - addFilter, - } = JetPlugins.hooks; +const { addAction, addFilter } = JetPlugins.hooks; addAction( 'jet.fb.observe.before', @@ -79,30 +76,45 @@ addFilter( * @return {*} */ function ( macroPart, formula ) { - if ( 'string' !== typeof macroPart ) { return macroPart; } - const matches = macroPart.match( /ADVANCED_PRICE::([\w\-]+)/ ); - - if ( !matches?.length || !formula?.input ) { + if ( ! formula?.input ) { return macroPart; } - const [ , fieldName ] = matches; - const checkoutField = formula.input.root.getInput( fieldName ); + const matches = macroPart.match( /(ADVANCED_PRICE|BOOKING_TIME)::([\w\-]+)/ ); - if ( !checkoutField ) { - return 0; + if ( ! matches?.length ) { + return macroPart; } + const [ , macros, fieldName ] = matches; + + if ( 'ADVANCED_PRICE' === macros ) { + const checkoutField = formula.input.root.getInput( fieldName ); + + if ( ! checkoutField ) { + return 0; + } + + formula.cachedFields = formula.cachedFields || []; - formula.cachedFields = formula.cachedFields || []; + if ( ! formula.cachedFields.includes( checkoutField.name ) ) { + formula.cachedFields.push( checkoutField.name ); - if ( !formula.cachedFields.includes( checkoutField.name ) ) { - formula.cachedFields.push( checkoutField.name ); + checkoutField.watch( () => formula.setResult() ); + } + } else { + const timeField = document.getElementById( fieldName ); + + if ( ! timeField ) { + return 0; + } - checkoutField.watch( () => formula.setResult() ); + timeField.addEventListener( 'change', () => { + formula.setResult() + } ); } return macroPart; From 459b5bf3e02c846869ab8dab1e1ee7d970093502 Mon Sep 17 00:00:00 2001 From: Andrew Shevchenko Date: Tue, 13 Jan 2026 20:26:50 +0200 Subject: [PATCH 06/13] FIX: Fix SM selectors and CSS definitions. https://github.com/Crocoblock/issues-tracker/issues/18154 --- includes/blocks/modules/general-style.php | 30 +++++++++++------------ includes/blocks/types/action-button.php | 7 +----- includes/blocks/types/base.php | 6 ++++- includes/blocks/types/hidden-field.php | 10 ++++++++ includes/blocks/types/textarea-field.php | 2 +- 5 files changed, 32 insertions(+), 23 deletions(-) diff --git a/includes/blocks/modules/general-style.php b/includes/blocks/modules/general-style.php index bea46b1ec..f24f298fb 100644 --- a/includes/blocks/modules/general-style.php +++ b/includes/blocks/modules/general-style.php @@ -53,23 +53,23 @@ public function general_style_unregister() { } public function get_label_selector() { - return '__label.%1$s__label.%1$s__label'; + return '__label'; } public function get_required_selector() { - return '__label span.%1$s__required.%1$s__required.%1$s__required'; + return '__label span.%1$s__required'; } public function get_description_selector() { - return '__desc.%1$s__desc.%1$s__desc'; + return '__desc'; } public function get_field_wrap() { - return '-row.%1$s-row.%1$s-row.%1$s-row'; + return '.%1$s-row'; } public function get_field_input() { - return '-row.%1$s-row.%1$s-row input'; + return '.%1$s-row input'; } @@ -188,7 +188,7 @@ private function add_content_controls() { ); $this->add_margin_padding( - $this->selector( 'wrap' ), + $this->selector_no_space( $this->get_field_wrap() ), array( 'margin' => array( 'id' => 'field_margin', @@ -223,7 +223,7 @@ private function add_content_controls() { ), ), 'css_selector' => array( - $this->selector( 'wrap' ) => 'text-align: {{VALUE}};', + $this->selector_no_space( $this->get_field_wrap() ) => 'text-align: {{VALUE}};', ), ) ); @@ -235,7 +235,7 @@ private function add_content_controls() { 'label' => __( 'Border', 'jet-form-builder' ), 'separator' => 'after', 'css_selector' => array( - $this->selector( 'wrap' ) => 'border-style:{{STYLE}};border-width:{{WIDTH}};border-radius:{{RADIUS}};border-color:{{COLOR}};', + $this->selector_no_space( $this->get_field_wrap() ) => 'border-style:{{STYLE}};border-width:{{WIDTH}};border-radius:{{RADIUS}};border-color:{{COLOR}};', ), ) ); @@ -246,7 +246,7 @@ private function add_content_controls() { 'type' => 'color-picker', 'label' => __( 'Background', 'jet-form-builder' ), 'css_selector' => array( - $this->selector( 'wrap' ) => 'background-color: {{VALUE}}', + $this->selector_no_space( $this->get_field_wrap() ) => 'background-color: {{VALUE}}', ), ) ); @@ -513,7 +513,7 @@ private function add_input_controls() { ); $this->add_margin_padding( - $this->selector( 'input' ), + $this->selector_no_space( $this->get_field_input() ), array( 'margin' => array( 'id' => 'input_margin', @@ -548,7 +548,7 @@ private function add_input_controls() { ), ), 'css_selector' => array( - $this->selector( 'input' ) => 'text-align: {{VALUE}};', + $this->selector_no_space( $this->get_field_input() ) => 'text-align: {{VALUE}};', ), ), $this->get_additional_styles( 'input_alignment' ) @@ -561,7 +561,7 @@ private function add_input_controls() { 'type' => 'typography', 'separator' => 'after', 'css_selector' => array( - $this->selector( 'input' ) => 'font-family: {{FAMILY}}; font-weight: {{WEIGHT}}; text-transform: {{TRANSFORM}}; font-style: {{STYLE}}; text-decoration: {{DECORATION}}; line-height: {{LINEHEIGHT}}{{LH_UNIT}}; letter-spacing: {{LETTERSPACING}}{{LS_UNIT}}; font-size: {{SIZE}}{{S_UNIT}};', + $this->selector_no_space( $this->get_field_input() ) => 'font-family: {{FAMILY}}; font-weight: {{WEIGHT}}; text-transform: {{TRANSFORM}}; font-style: {{STYLE}}; text-decoration: {{DECORATION}}; line-height: {{LINEHEIGHT}}{{LH_UNIT}}; letter-spacing: {{LETTERSPACING}}{{LS_UNIT}}; font-size: {{SIZE}}{{S_UNIT}};', ), ) ); @@ -573,7 +573,7 @@ private function add_input_controls() { 'label' => __( 'Border', 'jet-form-builder' ), 'separator' => 'after', 'css_selector' => array( - $this->selector( 'input' ) => 'border-style:{{STYLE}};border-width:{{WIDTH}};border-radius:{{RADIUS}};border-color:{{COLOR}};', + $this->selector_no_space( $this->get_field_input() ) => 'border-style:{{STYLE}};border-width:{{WIDTH}};border-radius:{{RADIUS}};border-color:{{COLOR}};', ), ) ); @@ -585,7 +585,7 @@ private function add_input_controls() { 'separator' => 'after', 'label' => __( 'Text Color', 'jet-form-builder' ), 'css_selector' => array( - $this->selector( 'input' ) => 'color: {{VALUE}}', + $this->selector_no_space( $this->get_field_input() ) => 'color: {{VALUE}}', ), ) ); @@ -596,7 +596,7 @@ private function add_input_controls() { 'type' => 'color-picker', 'label' => __( 'Background', 'jet-form-builder' ), 'css_selector' => array( - $this->selector( 'input' ) => 'background-color: {{VALUE}}', + $this->selector_no_space( $this->get_field_input() ) => 'background-color: {{VALUE}}', ), ) ); diff --git a/includes/blocks/types/action-button.php b/includes/blocks/types/action-button.php index 3eb0d4fbb..8d4061c54 100644 --- a/includes/blocks/types/action-button.php +++ b/includes/blocks/types/action-button.php @@ -102,12 +102,7 @@ public function jsm_controls() { ), ), 'css_selector' => array( - $this->selector( '__action-button' ) => 'width: {{VALUE}}%; max-width: {{VALUE}}%', - ), - 'attributes' => array( - 'default' => array( - 'value' => 20, - ), + $this->selector( '__action-button' ) => 'width: {{VALUE}}{{UNIT}}; max-width: {{VALUE}}{{UNIT}};', ), ) ); diff --git a/includes/blocks/types/base.php b/includes/blocks/types/base.php index a03f2034e..a13a95b03 100644 --- a/includes/blocks/types/base.php +++ b/includes/blocks/types/base.php @@ -46,7 +46,6 @@ abstract class Base extends Base_Module implements Repository_Item_Instance_Trai * @var Controls_Manager */ protected $controls_manager; - protected $style_manager; protected $css_scheme; public $style_attributes = array(); @@ -199,6 +198,11 @@ public function get_provides_context(): array { return $this->provides_context; } + /** + * Initialize style manager for the block + * + * @param Object $style_manager Actual style manager instance. + */ public function maybe_init_style_manager( $style_manager ) { $style_manager->register_block_support( diff --git a/includes/blocks/types/hidden-field.php b/includes/blocks/types/hidden-field.php index e7e35ebfe..73abcb6c3 100644 --- a/includes/blocks/types/hidden-field.php +++ b/includes/blocks/types/hidden-field.php @@ -33,6 +33,16 @@ public function get_name() { return 'hidden-field'; } + /** + * Initialize style manager for the block + * + * @param Object $style_manager Actual style manager instance. + */ + public function maybe_init_style_manager( $style_manager ) { + // Hidden Field does not use style manager + return; + } + public function render_row_layout() { return false; } diff --git a/includes/blocks/types/textarea-field.php b/includes/blocks/types/textarea-field.php index 445e04a3c..d2475945d 100644 --- a/includes/blocks/types/textarea-field.php +++ b/includes/blocks/types/textarea-field.php @@ -58,7 +58,7 @@ public function jsm_controls() { ), ), 'css_selector' => array( - $this->selector( 'field' ) => 'height: {{VALUE}}px; min-height: {{VALUE}}px;', + $this->selector( 'field' ) => 'height: {{VALUE}}{{UNIT}}; min-height: {{VALUE}}{{UNIT}};', ), 'attributes' => array( 'default' => array( From aebd332c2f18634113bdc6cf3d88efa2c886fc72 Mon Sep 17 00:00:00 2001 From: Andrew Shevchenko Date: Wed, 14 Jan 2026 18:13:56 +0200 Subject: [PATCH 07/13] FIX: StyleManager. Fixes after testing. https://github.com/Crocoblock/issues-tracker/issues/18154 --- compatibility/elementor/widgets/form.php | 2 +- compatibility/jet-style-manager/blocks/form.php | 2 +- modules/captcha/block-types/captcha-container.php | 10 ++++++++++ modules/option-field/blocks/radio/block-type.php | 8 ++++---- modules/option-field/blocks/select/block-type.php | 2 +- 5 files changed, 17 insertions(+), 7 deletions(-) diff --git a/compatibility/elementor/widgets/form.php b/compatibility/elementor/widgets/form.php index 259e58bd2..86fd055ca 100644 --- a/compatibility/elementor/widgets/form.php +++ b/compatibility/elementor/widgets/form.php @@ -1648,7 +1648,7 @@ private function section_checkradio_fields_style() { 'label' => esc_html__( 'Background', 'jet-form-builder' ), 'type' => Controls_Manager::COLOR, 'selectors' => array( - $this->selector( '__field-wrap label > span::before' ) => 'background-color: {{VALUE}};', + $this->selector( '__field-wrap label.jet-form-builder__field-label > span::before' ) => 'background-color: {{VALUE}};', ), ) ); diff --git a/compatibility/jet-style-manager/blocks/form.php b/compatibility/jet-style-manager/blocks/form.php index d765cdfa5..6dff2edae 100644 --- a/compatibility/jet-style-manager/blocks/form.php +++ b/compatibility/jet-style-manager/blocks/form.php @@ -590,7 +590,7 @@ private function process_select_field() { 'css_selector' => array( $this->selector( '-row.field-type-select-field %1$s__field-wrap' - ) => 'max-width: {{VALUE}}%', + ) => 'max-width: {{VALUE}}{{UNIT}};', ), ) ); diff --git a/modules/captcha/block-types/captcha-container.php b/modules/captcha/block-types/captcha-container.php index 9a21ddc9b..a031b559d 100644 --- a/modules/captcha/block-types/captcha-container.php +++ b/modules/captcha/block-types/captcha-container.php @@ -31,6 +31,16 @@ public function render_row_layout() { return false; } + /** + * Initialize style manager for the block + * + * @param Object $style_manager Actual style manager instance. + */ + public function maybe_init_style_manager( $style_manager ) { + // Captcha Field does not use style manager + return; + } + /** * Returns current block render instance * diff --git a/modules/option-field/blocks/radio/block-type.php b/modules/option-field/blocks/radio/block-type.php index e906cebcc..b296932c1 100644 --- a/modules/option-field/blocks/radio/block-type.php +++ b/modules/option-field/blocks/radio/block-type.php @@ -295,7 +295,7 @@ public function jsm_controls() { 'separator' => 'after', 'css_selector' => array( '{{WRAPPER}} ' . $this->css_scheme['radio'] => 'border-style:{{STYLE}};border-width:{{WIDTH}};border-radius:{{RADIUS}};border-color:{{COLOR}};', - '{{WRAPPER}} ' . $this->css_scheme['front-label'] . ' > span::before' => 'border-style:{{STYLE}};border-width:{{WIDTH}};border-radius:{{RADIUS}};border-color:{{COLOR}};', + '{{WRAPPER}} ' . $this->css_scheme['front-label'] . '.jet-form-builder__field-label > span::before' => 'border-style:{{STYLE}};border-width:{{WIDTH}};border-radius:{{RADIUS}};border-color:{{COLOR}};', ), ) ); @@ -314,7 +314,7 @@ public function jsm_controls() { // editor '{{WRAPPER}} ' . $this->css_scheme['radio'] => 'background-color: {{VALUE}}', // front - '{{WRAPPER}} ' . $this->css_scheme['front-label'] . ' > span::before' => 'background-color: {{VALUE}}', + '{{WRAPPER}} ' . $this->css_scheme['front-label'] . '.jet-form-builder__field-label > span::before' => 'background-color: {{VALUE}}', ), ) ); @@ -337,7 +337,7 @@ public function jsm_controls() { 'separator' => 'after', 'css_selector' => array( '{{WRAPPER}} ' . $this->css_scheme['radio'] . ':checked' => 'border-style:{{STYLE}};border-width:{{WIDTH}};border-radius:{{RADIUS}};border-color:{{COLOR}};', - '{{WRAPPER}} ' . $this->css_scheme['front-label'] . ' :checked + span::before' => 'border-style:{{STYLE}};border-width:{{WIDTH}};border-radius:{{RADIUS}};border-color:{{COLOR}};', + '{{WRAPPER}} ' . $this->css_scheme['front-label'] . '.jet-form-builder__field-label :checked + span::before' => 'border-style:{{STYLE}};border-width:{{WIDTH}};border-radius:{{RADIUS}};border-color:{{COLOR}};', ), ) ); @@ -356,7 +356,7 @@ public function jsm_controls() { // editor '{{WRAPPER}} ' . $this->css_scheme['radio'] . ':checked' => 'background-color: {{VALUE}}', // front - '{{WRAPPER}} ' . $this->css_scheme['front-label'] . ' :checked + span::before' => 'background-color: {{VALUE}}', + '{{WRAPPER}} ' . $this->css_scheme['front-label'] . '.jet-form-builder__field-label :checked + span::before' => 'background-color: {{VALUE}}', ), ) ); diff --git a/modules/option-field/blocks/select/block-type.php b/modules/option-field/blocks/select/block-type.php index 13b876db8..e46f0d2db 100644 --- a/modules/option-field/blocks/select/block-type.php +++ b/modules/option-field/blocks/select/block-type.php @@ -69,7 +69,7 @@ public function jsm_controls() { ), ), 'css_selector' => array( - '{{WRAPPER}} ' . $this->css_scheme['select-wrapper'] => 'width: {{VALUE}}%; max-width: {{VALUE}}%', + '{{WRAPPER}} ' . $this->css_scheme['select-wrapper'] => 'width: {{VALUE}}{{UNIT}}; max-width: {{VALUE}}{{UNIT}};', ), 'attributes' => array( 'default' => array( From 7023501f31f5dbac8584e91a9840403d57c1f604 Mon Sep 17 00:00:00 2001 From: Andrew Shevchenko Date: Fri, 16 Jan 2026 17:01:05 +0200 Subject: [PATCH 08/13] FIX: after testing. https://github.com/Crocoblock/issues-tracker/issues/18154 --- assets/build/editor/package.asset.php | 2 +- assets/build/editor/package.js | 2 +- .../src/package/blocks/components/FieldWrapper.js | 6 ++++++ includes/blocks/types/form-break-field.php | 10 ++++++++++ includes/blocks/types/progress-bar.php | 14 ++++++++++---- modules/advanced-choices/block-types/choice.php | 4 ++++ 6 files changed, 32 insertions(+), 6 deletions(-) diff --git a/assets/build/editor/package.asset.php b/assets/build/editor/package.asset.php index 12cb590f3..290d28a71 100644 --- a/assets/build/editor/package.asset.php +++ b/assets/build/editor/package.asset.php @@ -1 +1 @@ - array('react', 'wp-api-fetch', 'wp-block-editor', 'wp-components', 'wp-compose', 'wp-data', 'wp-element', 'wp-hooks', 'wp-i18n'), 'version' => '441a2a59f6bc265dd39f'); + array('react', 'wp-api-fetch', 'wp-block-editor', 'wp-components', 'wp-compose', 'wp-data', 'wp-element', 'wp-hooks', 'wp-i18n'), 'version' => '918e94a4652ca83bd03d'); diff --git a/assets/build/editor/package.js b/assets/build/editor/package.js index d0307671a..2a19ea5c5 100644 --- a/assets/build/editor/package.js +++ b/assets/build/editor/package.js @@ -1 +1 @@ -(()=>{var e={115:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r=n(6758),l=n.n(r),o=n(935),a=n.n(o)()(l());a.push([e.id,".syma2t4{height:40px;min-height:40px;line-height:1.5;}\n",""]);const i=a},483:(e,t,n)=>{var r=n(4239);r.__esModule&&(r=r.default),"string"==typeof r&&(r=[[e.id,r,""]]),r.locals&&(e.exports=r.locals),(0,n(611).A)("62ebcc8a",r,!1,{})},611:(e,t,n)=>{"use strict";function r(e,t){for(var n=[],r={},l=0;lf});var l="undefined"!=typeof document;if("undefined"!=typeof DEBUG&&DEBUG&&!l)throw new Error("vue-style-loader cannot be used in a non-browser environment. Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.");var o={},a=l&&(document.head||document.getElementsByTagName("head")[0]),i=null,s=0,c=!1,u=function(){},d=null,m="data-vue-ssr-id",p="undefined"!=typeof navigator&&/msie [6-9]\b/.test(navigator.userAgent.toLowerCase());function f(e,t,n,l){c=n,d=l||{};var a=r(e,t);return h(a),function(t){for(var n=[],l=0;ln.parts.length&&(r.parts.length=n.parts.length)}else{var a=[];for(l=0;l{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n="",r=void 0!==t[5];return t[4]&&(n+="@supports (".concat(t[4],") {")),t[2]&&(n+="@media ".concat(t[2]," {")),r&&(n+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),n+=e(t),r&&(n+="}"),t[2]&&(n+="}"),t[4]&&(n+="}"),n})).join("")},t.i=function(e,n,r,l,o){"string"==typeof e&&(e=[[null,e,void 0]]);var a={};if(r)for(var i=0;i0?" ".concat(u[5]):""," {").concat(u[1],"}")),u[5]=o),n&&(u[2]?(u[1]="@media ".concat(u[2]," {").concat(u[1],"}"),u[2]=n):u[2]=n),l&&(u[4]?(u[1]="@supports (".concat(u[4],") {").concat(u[1],"}"),u[4]=l):u[4]="".concat(l)),t.push(u))}},t}},4023:(e,t,n)=>{var r=n(115);r.__esModule&&(r=r.default),"string"==typeof r&&(r=[[e.id,r,""]]),r.locals&&(e.exports=r.locals),(0,n(611).A)("55433ea3",r,!1,{})},4180:()=>{const e=()=>{const{select:e}=wp.data;return e("core/editor").getEditedPostAttribute("meta")},t=(t,n)=>{const{dispatch:r}=wp.data,{editPost:l}=r("core/editor");l({meta:{...e(),[t]:JSON.stringify(n)}})},n=e=>{const t=[];for(const[n,{active:r=!1}]of Object.entries(e))r&&t.push(+n);return t};wp.domReady((()=>(async()=>{await(async()=>new Promise((e=>{const t=setInterval((()=>{wp.data.select("core/editor").getCurrentPostType()&&(clearInterval(t),e())}),100)})))();let r={},l=[];try{[r={},l=[]]=(()=>{const t=e();let n={},r=[];try{n=JSON.parse(t._jf_gateways)}catch(e){return[]}if(1===n.last_migrate)throw"migrated";try{r=JSON.parse(t._jf_actions)}catch(e){return[n]}return[n,r]})()}catch(e){return}r.last_migrate=1,t("_jf_gateways",r);const o=[];try{o.push(...((e,t)=>{var r,l,o,a;const i=n(null!==(r=e.notifications_success)&&void 0!==r?r:{}),s=n(null!==(l=e.notifications_failed)&&void 0!==l?l:{}),c=n(null!==(o=e.notifications_before)&&void 0!==o?o:{}),u=null!==(a=e.use_success_redirect)&&void 0!==a&&a;let d=!1;if(!(i.length||s.length||c.length||u))throw"nothing_to_migrate";return t.map((e=>{var t;return e.events=null!==(t=e.events)&&void 0!==t?t:[],i.includes(e.id)&&e.events.push("GATEWAY.SUCCESS"),s.includes(e.id)&&e.events.push("GATEWAY.FAILED"),c.includes(e.id)&&e.events.push("DEFAULT.PROCESS"),u&&!d&&"redirect_to_page"===e.type&&(e.events.push("GATEWAY.SUCCESS"),d=!0),e}))})(r,l))}catch(e){return}t("_jf_actions",o)})()))},4239:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r=n(6758),l=n.n(r),o=n(935),a=n.n(o)()(l());a.push([e.id,".sfqmk5y svg{height:24px;width:24px;}\n",""]);const i=a},6758:e=>{"use strict";e.exports=function(e){return e[1]}}},t={};function n(r){var l=t[r];if(void 0!==l)return l.exports;var o=t[r]={id:r,exports:{}};return e[r](o,o.exports,n),o.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{"use strict";const e=window.React,{createContext:t}=wp.element,r=t({name:"",data:{},index:0}),l=window.jfb.components,o=window.wp.element,{createContext:a}=wp.element,i=a({actionClick:null,onRequestClose:()=>{}}),{createSlotFill:s}=wp.components,c=s("JFBActionModalFooter"),u=window.wp.components,d=window.wp.i18n,{Slot:m}=c;let{ToggleGroupControl:p,__experimentalToggleGroupControl:f}=wp.components;p=p||f;const h=function({onRequestClose:t,children:n,title:r="",classNames:l=[],className:a="",onUpdateClick:s,onCancelClick:c,updateBtnLabel:f="Update",updateBtnProps:h={},cancelBtnProps:b={},cancelBtnLabel:g="Cancel",fixedHeight:y="",...v}){const w=["jet-form-edit-modal",...l,a],[E,_]=(0,o.useState)(null),C=()=>{s&&s(),_(!0)},k=()=>{c&&c(),_(!1)};let S={};return y&&(S={height:y},w.push("jet-modal-fixed-height")),(0,e.createElement)(u.Modal,{onRequestClose:t,className:w.join(" "),title:r,style:S,...v},!n&&(0,e.createElement)("div",{className:"jet-form-edit-modal__content"},(0,d.__)("Action callback is not found.","jet-form-builder")),n&&(0,e.createElement)(e.Fragment,null,(0,e.createElement)("div",{className:"jet-form-edit-modal__wrapper"},(0,e.createElement)(i.Provider,{value:{actionClick:E,onRequestClose:t}},(0,e.createElement)("div",{className:"jet-form-edit-modal__content"},"function"==typeof n&&n({actionClick:E,onRequestClose:t}),"function"!=typeof n&&n))),(0,e.createElement)(m,{fillProps:{updateClick:C,cancelClick:k}},(t=>Boolean(t?.length)?t:(0,e.createElement)(p,{className:"jet-form-edit-modal__actions jfb-toggle-group-control",hideLabelFromVision:!0},(0,e.createElement)(u.Button,{isPrimary:!0,onClick:C,...h},f),(0,e.createElement)(u.Button,{isSecondary:!0,style:{margin:"0 0 0 10px"},onClick:k,...b},g))))))},{RawHTML:b,useContext:g}=wp.element;function y(e,t){return e?.length?e.map((e=>"object"==typeof e?e[t]:e)):[]}const v=(0,window.wp.hooks.applyFilters)("jet.fb.tools.convertSymbols",{checkCyrRegex:/[а-яёїєґі]/i,cyrRegex:/[а-яёїєґі]/gi,charsMap:{а:"a",б:"b",в:"v",г:"g",д:"d",е:"e",ё:"io",ж:"zh",з:"z",и:"i",й:"i",к:"k",л:"l",м:"m",н:"n",о:"o",п:"p",р:"r",с:"s",т:"t",у:"u",ф:"f",х:"kh",ц:"ts",ч:"ch",ш:"sh",щ:"shch",ы:"y",э:"e",ю:"iu",я:"ia",ї:"i",є:"ie",ґ:"g",і:"i"}});function w(e){return v.checkCyrRegex.test(e)&&(e=e.replace(v.cyrRegex,(function(e){return void 0===v.charsMap[e]?"":v.charsMap[e]}))),e}function E(e){let t=e.toLowerCase();t=t.normalize("NFD").replace(/[\u0300-\u036f]/g,""),t=w(t);const n=t.match(/\b(\w+)\b/g);t="";for(const[e,r]of Object.entries(n)){t+=(0===+e?"":"_")+r;const l=+e+1===n.length;if(t.length>60)return t+(l?"":"__")}return t}function _(...e){const t=[],n=e=>{e.forEach((e=>{if(e&&(Array.isArray(e)&&n(e),"string"==typeof e&&t.push(e.trim()),"object"==typeof e))for(const n in e)e[n]&&t.push((n+"").trim())}))};return n(e),t.join(" ")}function C(e){return null==e||("object"!=typeof e||Array.isArray(e)?"number"==typeof e?0===e:!e?.length:!Object.keys(e)?.length)}const k=class{static withPlaceholder(e,t="--",n=""){return[{label:t,value:n},...e]}static getRandomID(){return Math.floor(8999*Math.random())+1e3}},{select:S}=wp.data,j=function(e){const t=(n,r=null)=>{(n=n||S("core/block-editor").getBlocks()).forEach((n=>{if(e(n,r),n.innerBlocks.length){const e="jet-forms/repeater-field"===n.name?n:r;return void t(n.innerBlocks,e)}if("core/block"!==n.name)return;let l=S("core/block-editor")?.__unstableGetClientIdsTree?.(n.clientId);if(!l?.length)return;const o=l.map((({clientId:e})=>e));l=S("core/block-editor").getBlocksByClientId(o),t(l)}))};t()},{applyFilters:x}=wp.hooks,{select:N}=wp.data,F=function(e=[],t=!1,n=!1,r="default"){let l=[];const o=["submit","form-break","heading","group-break","conditional",...e];return j((e=>{if(e.name.includes("jet-forms/")&&!o.find((t=>e.name.includes(t)))){const t=N("core/blocks").getBlockType(e.name);let{fields:n=[]}=t.jfbResolveBlock.call(e,r);t.hasOwnProperty("jfbGetFields")&&(n=t.jfbGetFields.call(e,r)),l.push(...n.filter((e=>!l.some((({value:t})=>t===e.value)))))}})),l=t?[{value:"",label:t},...l]:l,n?l:x("jet.fb.getFormFieldsBlocks",l,r)},T=function(e=[],t="default"){const n=[],r=F(e,!1,!1,t);return r&&r.forEach((e=>n.push(e.name))),n},{__:I}=wp.i18n,{applyFilters:B}=wp.hooks,{select:A}=wp.data,O=function(e=!1,t=!1,n="default"){const r=["submit","form-break","heading","group-break","conditional"];let l=[];const o=wp.data.select("core/block-editor").getSelectedBlock();return j((e=>{if(e.name.includes("jet-forms/")&&o?.clientId!==e.clientId&&!r.find((t=>e.name.includes(t)))){const t=A("core/blocks").getBlockType(e.name);let{fields:r=[]}=t.jfbResolveBlock.call(e,n);t.hasOwnProperty("jfbGetFields")&&(r=t.jfbGetFields.call(e,n)),l.push(...r.filter((e=>!l.some((({value:t})=>t===e.value)))))}})),l=e?[{value:"",label:e},...l]:l,t?l:B("jet.fb.getFormFieldsBlocks",l,n)},R=function(e){const t=wp.data.select("core/block-editor").getBlock(e);return t?t.innerBlocks:[]},{addFilter:M}=wp.hooks,P=function(e=!1,t=""){const n=window.JetFormEditorData.gateways;if(!e)return n;if(!n[e])return!1;const r=n[e];return e=>r[e]?r[e]:t},G=function(e,t=""){const n=P("labels");return r=>n(e)?n(e)[r]:t},L=function(e,t="cred"){return window.JetFBGatewaysList&&window.JetFBGatewaysList[e]&&window.JetFBGatewaysList[e][t]},D=function(t,n,r="cred"){if(!L(t,r))return null;const l=window.JetFBGatewaysList[t][r];return(0,e.createElement)(l,{...n})},{useState:q,useEffect:V}=wp.element,{useDispatch:J}=wp.data,$=function(e,t={}){const[n,r]=q(!1),l=J(wp.notices.store);return V((()=>{n&&l.createWarningNotice(e,{type:"snackbar",...t})}),[n]),r},{useSelect:U}=wp.data,H=function(e){const t=U((e=>e("core/editor").getEditedPostAttribute("meta")||{}));return JSON.parse(t[e]||"{}")},W=function(e){const{actionClick:t,onRequestClose:n}=(0,o.useContext)(i);(0,o.useEffect)((()=>{t&&e(),null!==t&&n()}),[t])},{applyFilters:z}=wp.hooks,Y=(e,t)=>{t.forEach((t=>{e(t),t.innerBlocks.length&&Y(e,t.innerBlocks)}))},K=window.jfb.actions,X=function(e){const t=e("jet-forms/gateways"),n=t.getCurrentRequestId(),r=t.getGatewaySpecific(),l=t.getScenario(),o=t.getGatewayId(),{id:a="PAY_NOW"}=l,{use_global:i=!1}=r,s=(0,K.globalTab)({slug:o}),c=P("additional")(o),u=e("jet-forms/actions").getLoading(n),d=P("labels"),m=G(o),p=function(e){return d(`${o}.${e}`)};return{gatewayGeneral:t.getGateway(),gatewayRequest:t.getCurrentRequest(),scenarioSource:c[a]||{},currentScenario:l[a]||{},CURRENT_SCENARIO:a,gatewayScenario:l,additionalSourceGateway:c,gatewaySpecific:r,gatewayRequestId:n,loadingGateway:u,getSpecificOrGlobal:(e,t="")=>i?s[e]||t:r[e]||t,globalGatewayLabel:d,specificGatewayLabel:m,customGatewayLabel:p,scenarioLabel:function(e){return p(`scenario.${a}.${e}`)}}},{useSelect:Z}=wp.data,Q=function(){const e=Z((e=>e("jet-forms/events").getAlwaysTypes())),t=[];for(const{value:n}of e)t.push(n);return[...new Set(t)]},{useSelect:ee}=wp.data,te=function(){var e;const t=H("_jf_gateways"),{scenario:n={}}=null!==(e=t[t?.gateway])&&void 0!==e?e:{};return ee((e=>{const r=e("jet-forms/events").getGatewayTypes(),l=[];for(const e of r){const r=!e.gateway||e.gateway===t.gateway,o=!e.scenario||e.scenario===n?.id;r&&o&&l.push(e.value)}return[...new Set(l)]}),[t.gateway,n?.id])},{useSelect:ne}=wp.data,re=function({index:e}){const t=H("_jf_actions"),n=ne((e=>e("jet-forms/actions").getActionsMap()),[]);t.splice(e,1);const r=[];for(const e of t){const t=n?.[e.type]?.provideEvents;if("function"!=typeof t)continue;const{[e.type]:l={}}=e.settings;r.push(...t(l))}return[...new Set(r)]},{useSelect:le}=wp.data,{useSelect:oe}=wp.data,ae=function(e){const t=[...Q(),...te(),...re(e),...le((e=>e("jet-forms/events").getDynamicTypes().map((({value:e})=>e))))];return oe((n=>n("jet-forms/events").filterList(e.type,t)))},{useSelect:ie}=wp.data,{useSelect:se}=wp.data,ce=function(){const[e,t]=se((e=>[e("jet-forms/block-conditions").getOperators(),e("jet-forms/block-conditions").getFunctions()]),[]);return{operators:e,functions:t}},{useBlockEditContext:ue}=wp.blockEditor,de=function(){const{clientId:e}=ue();return t=>t+"-"+e},me=window.wp.blockEditor,pe=window.wp.data,fe=function(e=null){const t=(0,me.useBlockEditContext)();let{clientId:n}=t;e&&(n=e);const r=(0,pe.useSelect)((e=>e("core/block-editor").getBlockAttributes(n)),[n]),{updateBlock:l}=(0,pe.useDispatch)("core/block-editor");return[r,e=>{e="object"==typeof e?e:e(r),e=(0,pe.select)("jet-forms/fields").getSanitizedAttributes(e,t),l(n,{attributes:e})}]},he=function(e){const t=(0,me.useBlockProps)()["data-type"];return(0,pe.useSelect)((n=>!!n("core/blocks").getBlockType(t).attributes[e]),[e,t])},{applyFilters:be}=wp.hooks,ge=function(t){return function(n){return(0,e.createElement)(t,{key:"wrapped-preset-editor",...n,parseValue:()=>{let e={};if("object"==typeof n.value)e={...n.value};else if(n.value&&"string"==typeof n.value)try{if(e=JSON.parse(n.value),"number"==typeof e)throw new Error}catch(t){e={}}return e.jet_preset=!0,e},isVisible:(e,t,n)=>(t.position&&n===t.position||!t.position||"query_var"!==e.from)&&((e,t)=>!t.condition&&!t.custom_condition||(t.custom_condition?"query_var"===t.custom_condition?"post"===e.from&&"query_var"===e.post_from||"user"===e.from&&"query_var"===e.user_from||"term"===e.from&&"query_var"===e.term_from||"query_var"===e.from:be("jet.fb.preset.editor.custom.condition",!1,t.custom_condition,e):!t.condition||e[t.condition.field]===t.condition.value))(e,t),isMapFieldVisible:(e,t,n)=>!((t.condition||t.parent_condition)&&(t.parent_condition&&!t.condition?e[t.parent_condition.field]!==t.parent_condition.value:t.parent_condition&&t.condition?!e.fields_map||!e.fields_map[n]||e.fields_map[n][t.condition.field]!==t.condition.value||e[t.parent_condition.field]!==t.parent_condition.value:!t.parent_condition&&t.condition&&(!e.fields_map||!e.fields_map[n]||e.fields_map[n][t.condition.field]!==t.condition.value))),isCurrentFieldVisible:(e,t,n)=>!((t.condition||t.parent_condition)&&(t.position&&n!==t.position||(t.parent_condition&&!t.condition?e[t.parent_condition.field]!==t.parent_condition.value:t.parent_condition&&t.condition?e["current_field_"+t.condition.field]!==t.condition.value||e[t.parent_condition.field]!==t.parent_condition.value:!t.parent_condition&&t.condition&&e["current_field_"+t.condition.field]!==t.condition.value))),excludeOptions:e=>{const t=[...e];return t.forEach(((e,r)=>{n.excludeSources&&n.excludeSources.includes(e.value)&&t.splice(r,1)})),t}})}},ye=function({data:t,value:n,index:r,onChangeValue:o,isVisible:a,excludeOptions:i=e=>e,position:s}){switch(t.type){case"text":return a(n,t,s)&&(0,e.createElement)("div",{key:"field_"+t.name+r,className:"jet-form-preset__row"},(0,e.createElement)(l.StyledTextControl,{key:t.name+r,label:t.label,value:n[t.name],onChange:e=>{o(e,t.name)}}));case"select":return a(n,t,s)&&(0,e.createElement)("div",{key:"field_"+t.name+r,className:"jet-form-preset__row"},(0,e.createElement)(l.StyledSelectControl,{key:t.name+r,options:i(t.options),label:t.label,value:n[t.name],onChange:e=>{o(e,t.name)}}))}return null};function ve(e){var t=Object.create(null);return function(n){return void 0===t[n]&&(t[n]=e(n)),t[n]}}var we=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|disableRemotePlayback|download|draggable|encType|enterKeyHint|fetchpriority|fetchPriority|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/,Ee=ve((function(e){return we.test(e)||111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&e.charCodeAt(2)<91})),_e=function(){const e=Array.prototype.slice.call(arguments).filter(Boolean),t={},n=[];e.forEach((e=>{(e?e.split(" "):[]).forEach((e=>{if(e.startsWith("atm_")){const[,n]=e.split("_");t[n]=e}else n.push(e)}))}));const r=[];for(const e in t)Object.prototype.hasOwnProperty.call(t,e)&&r.push(t[e]);return r.push(...n),r.join(" ")},Ce=(e,t)=>{const n={};return Object.keys(e).filter((e=>t=>-1===e.indexOf(t))(t)).forEach((t=>{n[t]=e[t]})),n},ke=function(t){let n="";return r=>{const l=(l,o)=>{const{as:a=t,class:i=n}=l;var s;const c=function(e,t){const n=Ce(t,["as","class"]);if(!e){const e="function"==typeof Ee?{default:Ee}:Ee;Object.keys(n).forEach((t=>{e.default(t)||delete n[t]}))}return n}(void 0===r.propsAsIs?!("string"==typeof a&&-1===a.indexOf("-")&&(s=a[0],s.toUpperCase()!==s)):r.propsAsIs,l);c.ref=o,c.className=r.atomic?_e(r.class,c.className||i):_e(c.className||i,r.class);const{vars:u}=r;if(u){const e={};for(const t in u){const n=u[t],o=n[0],a=n[1]||"",i="function"==typeof o?o(l):o;r.name,e[`--${t}`]=`${i}${a}`}const t=c.style||{},n=Object.keys(t);n.length>0&&n.forEach((n=>{e[n]=t[n]})),c.style=e}return t.__wyw_meta&&t!==a?(c.as=a,(0,e.createElement)(t,c)):(0,e.createElement)(a,c)},o=e.forwardRef?(0,e.forwardRef)(l):e=>{const t=Ce(e,["innerRef"]);return l(t,e.innerRef)};return o.displayName=r.name,o.__wyw_meta={className:r.class||n,extends:t},o}};const Se=ke("select")({name:"StyledSelect",class:"syma2t4",propsAsIs:!1}),je=function({id:t,label:n,onChange:r,options:l=[],value:o}){return!C(l)&&(0,e.createElement)(Se,{id:t,className:"components-select-control__input",onChange:e=>{r(e.target.value)},value:o},(0,e.createElement)("option",{key:`${n}-placeholder`,value:""},"--"),l.map(((t,n)=>!C(t.values)&&(0,e.createElement)("optgroup",{key:`${t.label}-${n}`,label:t.label},t.values.map(((t,r)=>(0,e.createElement)("option",{key:`${t.value}-${r}-${n}`,value:t.value,disabled:t.disabled},t.label)))))))};n(4023);const xe=function({data:t,value:n,index:r,currentState:o,onChangeValue:a,isCurrentFieldVisible:i}){switch(t.type){case"text":return i(o,t)&&(0,e.createElement)("div",{key:t.name+r,className:"jet-form-preset__row"},(0,e.createElement)(l.StyledTextControl,{key:"control_"+t.name+r,placeholder:t.label,value:n,onChange:e=>{a(e,"current_field_"+t.name)}}));case"select":return i(o,t)&&(0,e.createElement)("div",{key:t.name+r,className:"jet-form-preset__row"},(0,e.createElement)(l.StyledSelectControl,{key:"control_"+t.name+r,options:t.options,label:t.label,value:n,onChange:e=>{a(e,"current_field_"+t.name)}}));case"custom_select":return i(o,t)&&(0,e.createElement)("div",{key:t.name+r,className:"jet-form-preset__row"},(0,e.createElement)(u.CustomSelectControl,{className:"jet-custom-select-control",label:t.label,options:t.options,onChange:({selectedItem:e})=>{n=e.key,a(n,"current_field_"+t.name)},value:t.options.find((e=>e.key===n))}));case"grouped_select":return i(o,t)&&(0,e.createElement)("div",{key:t.name+r},(0,e.createElement)(l.Label,null,t.label),(0,e.createElement)(je,{options:t.options,value:n,onChange:e=>{a(e,"current_field_"+t.name)}}))}return null},{createContext:Ne}=wp.element,Fe=Ne({});let Te=function({value:t,onChange:n,parseValue:r,excludeOptions:a,isCurrentFieldVisible:i,isVisible:s}){var c,m;const p="dynamic",f=r(t),h=(0,o.useContext)(Fe),b=(e,t)=>{n((()=>JSON.stringify({...f,[t]:e})))};return(0,e.createElement)(l.StyledFlexControl,{direction:"column",gap:4},window.JetFormEditorData.presetConfig.global_fields.map(((t,n)=>(0,e.createElement)(ye,{key:`current_field_${t.name}_${n}`,value:f,index:n,data:t,excludeOptions:a,onChangeValue:b,isVisible:s,position:p}))),window.JetFormEditorData.presetConfig.map_fields.map(((t,n)=>(0,e.createElement)(xe,{key:`current_field_${t.name}_${n}`,currentState:f,value:f["current_field_"+t.name],index:n,data:t,onChangeValue:b,isCurrentFieldVisible:i,position:p}))),h?.show&&(0,e.createElement)(u.ToggleControl,{label:(0,d.__)("Restrict access","jet-form-builder"),help:null===(c=f.restricted)||void 0===c||c?(0,d.__)("Will set default value from preset only for users who allowed to edit this value","jet-form-builder"):(0,d.__)("Always set default value from preset. Make sure it can't be accidentally changed from form Actions","jet-form-builder"),checked:null===(m=f.restricted)||void 0===m||m,onChange:e=>{b(e?void 0:e,"restricted")}}))};Te=ge(Te);const Ie=Te,{SelectControl:Be,TextControl:Ae}=wp.components;class Oe extends wp.element.Component{constructor(e){super(e),this.fieldTypes=this.props.fieldTypes,this.taxonomiesList=this.props.taxonomiesList,this.className=this.props.className,this.metaProp=this.props.metaProp?this.props.metaProp:"post_meta",this.termsProp=this.props.termsProp?this.props.termsProp:"post_terms",this.index=this.props.index,this.init(),this.bindFunctions(),this.state={type:this.getFieldType(this.props.fieldValue)}}bindFunctions(){this.onChangeType=this.onChangeType.bind(this),this.onChangeValue=this.onChangeValue.bind(this)}init(){if(this.id=`inspector-select-control-${this.index}`,this.preparedTaxes=[],this.taxPrefix="jet_tax__",this.taxonomiesList)for(let e=0;e{const t=wp.data.select(De).getBlockType(`jet-forms/${e}`);return{title:t.title,icon:t.icon.src}})))}},Ve=class{constructor(){this.items=[]}push(e){this.items.push(new qe(e))}},{messages:Je}=window.jetFormValidation,{useState:$e}=wp.element,Ue=Je.sort(((e,t)=>e.supported.length-t.supported.length));function He(){const e=new Ve;for(const t of Ue)e.push(t);return e.items}const We=function(e,t){1>=e.label.length||e.name&&"field_name"!==e.name||t({name:E(e.label)})},{BaseControl:ze}=wp.components,{RichText:Ye}=wp.blockEditor;let{__experimentalUseFocusOutside:Ke,useFocusOutside:Xe}=wp.compose;Xe=Xe||Ke;const{__:Ze}=wp.i18n;function Qe(t){return(0,e.createElement)("small",{style:{whiteSpace:"nowrap",padding:"0.2em 0.8em 0 0",color:"#8e8a8a"}},t)}const{Button:et,Popover:tt,PanelBody:nt}=wp.components,{useState:rt}=wp.element,{__:lt}=wp.i18n,{TextControl:ot}=wp.components,at=function({label:t,help:n}){const[r,l]=fe();return he("placeholder")?(0,e.createElement)(ot,{label:null!=t?t:lt("Placeholder","jet-form-builder"),value:r.placeholder,help:null!=n?n:"",onChange:e=>l({placeholder:e})}):null},{__:it}=wp.i18n,{ToggleControl:st}=wp.components,ct=function({label:t,help:n}){const[r,l]=fe();return he("add_prev")?(0,e.createElement)(st,{label:null!=t?t:it("Add Prev Page Button","jet-form-builder"),help:null!=n?n:it('It is recommended to use the "Action Button" block with the "Go to Prev Page" type',"jet-form-builder"),checked:r.add_prev,onChange:e=>l({add_prev:e})}):null},ut=function({children:t,className:n="",style:r={},...l}){return(0,e.createElement)("p",{className:"jet-fb-base-control__help"+(n?` ${n}`:""),style:{fontSize:"12px",fontStyle:"normal",color:"rgb(117, 117, 117)",marginTop:"0px",...r},...l},t)},{useBlockEditContext:dt}=wp.blockEditor,{useSelect:mt}=wp.data,{__:pt}=wp.i18n,ft=function({name:t=!1,children:n=null}){const{name:r}=dt(),l=mt((e=>{var n;if(!1===t)return!1;const l=e("core/blocks").getBlockType(r);return null!==(n=l.attributes[t]?.jfb)&&void 0!==n&&n}),[r,t]);return l?(0,e.createElement)(ut,{className:"jet-fb mb-24"},n&&(0,e.createElement)(e.Fragment,null,n," "),l?.shortcode&&!l.rich&&!n&&pt("You can use shortcodes here.","jet-form-builder"),l?.shortcode&&!l.rich&&n&&pt("You can also use shortcodes here.","jet-form-builder")):Boolean(n)&&(0,e.createElement)(ut,{className:"jet-fb mb-24"},n)},{__:ht}=wp.i18n,{TextControl:bt}=wp.components,gt=function({label:t,help:n}){const[r,l]=fe();return r.add_prev?(0,e.createElement)(e.Fragment,null,(0,e.createElement)(bt,{label:null!=t?t:ht("Prev Page Button Label","jet-form-builder"),value:r.prev_label,className:"jet-fb m-unset",onChange:e=>l({prev_label:e})}),(0,e.createElement)(ft,{name:"prev_label"},null!=n?n:"")):null},{__:yt}=wp.i18n,{SelectControl:vt}=wp.components,wt=function({label:t,help:n}){const[r,l]=fe();return he("visibility")?(0,e.createElement)(vt,{options:[{value:"all",label:yt("For all","jet-form-builder")},{value:"logged_id",label:yt("Only for logged in users","jet-form-builder")},{value:"not_logged_in",label:yt("Only for NOT-logged in users","jet-form-builder")}],label:null!=t?t:yt("Field Visibility","jet-form-builder"),help:null!=n?n:"",value:r.visibility,onChange:e=>l({visibility:e})}):null},{__:Et}=wp.i18n,{TextControl:_t}=wp.components,Ct=function({label:t,help:n}){const[r,l]=fe();return(0,e.createElement)(_t,{label:null!=t?t:Et("CSS Class Name","jet-form-builder"),value:r.class_name,help:null!=n?n:"",onChange:e=>l({class_name:e})})},{InspectorAdvancedControls:kt}=wp.blockEditor,{__:St}=wp.i18n,{TextControl:jt}=wp.components;let{__experimentalUseFocusOutside:xt,useFocusOutside:Nt}=wp.compose;Nt=Nt||xt;const Ft=function({label:t,help:n}){const[r,l]=fe(),o=Nt((function(){We(r,l)}));return(0,e.createElement)(e.Fragment,null,(0,e.createElement)(jt,{label:null!=t?t:St("Field Label","jet-form-builder"),className:"jet-fb m-unset",value:r.label,onChange:e=>l({label:e}),...o}),(0,e.createElement)(ft,{name:"label"},null!=n?n:""))},Tt={};for(const{id:e,name:t}of window.jetFormActionTypes)Tt[e]=t;const{__:It}=wp.i18n,{TextControl:Bt,Icon:At,Flex:Ot,Tooltip:Rt}=wp.components,{useInstanceId:Mt}=wp.compose,Pt=function t({label:n,help:r}){const[l,o]=fe(),{message:a}=function(){const{clientId:e}=(0,me.useBlockEditContext)(),t=(0,K.useRequestFields)({returnOnEmptyCurrentAction:!1}),{inFormFields:n,hasParent:r,fieldNames:l}=(0,pe.useSelect)((t=>{var n;const r=t("jet-forms/fields").getBlockById(e);return{hasParent:!!r?.parentBlock,fieldNames:null!==(n=r?.fields?.map?.((({value:e})=>e)))&&void 0!==n?n:[],inFormFields:t("jet-forms/fields").isUniqueName(e)}}),[e]);if(!n)return{error:"not_unique_in_fields",message:(0,d.__)("The form field name must be unique. Please change it","jet-form-builder")};if(r)return{};const o=t.find((({value:e})=>l.includes(e)));return o?{error:"not_unique_in_actions",message:o?.from?(0,d.sprintf)((0,d.__)("The %s action already uses this field name. Please change it","jet-form-builder"),Tt[o.from]):(0,d.__)("The form field name must be unique. Please change it","jet-form-builder")}:{}}(),i=Mt(t,"AdvancedInspectorControl");return he("name")?(0,e.createElement)(e.Fragment,null,(0,e.createElement)(Ot,{align:"center",justify:"flex-start",style:{marginBottom:"8px"}},(0,e.createElement)("label",{htmlFor:i,className:"jet-fb label"},null!=n?n:It("Form field name","jet-form-builder")),!!a&&(0,e.createElement)(Rt,{text:a,delay:200,placement:"top"},(0,e.createElement)(At,{icon:"warning",style:{color:"orange",cursor:"help"}}))),(0,e.createElement)(Bt,{id:i,value:l.name,help:null!=r?r:It("Should contain only lowercase Latin letters, numbers, “-”, or “_”. No spaces allowed.","jet-form-builder"),onChange:e=>o({name:e})})):null},{__:Gt}=wp.i18n,{TextControl:Lt}=wp.components,Dt=function({label:t,help:n}){const[r,l]=fe();return he("desc")?(0,e.createElement)(e.Fragment,null,(0,e.createElement)(Lt,{label:null!=t?t:Gt("Field Description","jet-form-builder"),value:r.desc,className:"jet-fb m-unset",onChange:e=>l({desc:e})}),(0,e.createElement)(ft,{name:"desc"},null!=n?n:"")):null},qt=function({value:t,onChange:n,title:r}){const[a,i]=(0,o.useState)(!1),[s,c]=(0,o.useState)(t);return(0,e.createElement)(e.Fragment,null,(0,e.createElement)(u.Button,{icon:"database",variant:"tertiary",isSmall:!0,className:"jet-fb-is-thick",onClick:()=>i(!0)}),a&&(0,e.createElement)(u.Modal,{size:"medium",title:null!=r?r:(0,d.__)("Edit Preset","jet-form-builder"),onRequestClose:()=>i(!1),className:l.ModalFooterStyle},(0,e.createElement)(Ie,{key:"dynamic_key_preset",value:s,onChange:c}),(0,e.createElement)(l.StickyModalActions,null,(0,e.createElement)(u.Button,{isPrimary:!0,onClick:()=>{n(s),i(!1)}},(0,d.__)("Update","jet-form-builder")),(0,e.createElement)(u.Button,{isSecondary:!0,onClick:()=>{i(!1)}},(0,d.__)("Cancel","jet-form-builder")))))},{createContext:Vt}=wp.element,Jt=Vt(!1),{useState:$t,useRef:Ut}=wp.element,{Button:Ht,Popover:Wt}=wp.components,zt=function({children:t,...n}){const[r,l]=$t(!1),o=Ut();return(0,e.createElement)(Jt.Provider,{value:{showPopover:r,setShowPopover:l}},(0,e.createElement)(Ht,{ref:o,icon:"admin-tools",variant:"tertiary",isSmall:!0,className:"jet-fb-is-thick",onClick:()=>l((e=>!e)),...n}),r&&(0,e.createElement)(Wt,{anchor:o.current,position:"top-start",noArrow:!1,variant:"toolbar",onFocusOutside:e=>{e.relatedTarget!==o.current&&l(!1)},onClose:()=>l(!1)},t))},{createContext:Yt}=wp.element,Kt=Yt([]),{createContext:Xt}=wp.element,Zt=Xt({name:""});function Qt(){}Qt.prototype={fullName(){},fullHelp(){}};const en=Qt,{useState:tn}=wp.element,{Button:nn}=wp.components,rn=function({current:t,children:n}){const[r,l]=tn(!1);if(!(t instanceof en))return(0,e.createElement)("li",null,(0,e.createElement)(Zt.Provider,{value:t},n));const o=t.fullHelp.bind(t);return(0,e.createElement)("li",null,(0,e.createElement)(Zt.Provider,{value:t},(0,e.createElement)("div",{style:{display:"flex",alignItems:"center",gap:"0.6em"}},(0,e.createElement)(nn,{isSmall:!0,variant:"tertiary",icon:r?"arrow-down":"arrow-right",className:"jet-fb-is-thick",onClick:()=>l((e=>!e))}),n),r&&(0,e.createElement)(o,null)))},{Children:ln,cloneElement:on}=wp.element,{PanelBody:an}=wp.components,sn=function({title:t,items:n,children:r,initialOpen:l}){const o=n.map(((t,n)=>(0,e.createElement)(rn,{key:n,current:t})));return(0,e.createElement)(an,{title:t,initialOpen:l},(0,e.createElement)("ul",{style:{padding:"0 0.5em"}},ln.map(o,(e=>on(e,{},r)))))},{useContext:cn}=wp.element,{__:un}=wp.i18n,dn=function({children:t,fields:n,...r}){var l,o;const a=cn(Kt),i=[...null!==(l=a.beforeFields)&&void 0!==l?l:[],...n,...null!==(o=a.afterFields)&&void 0!==o?o:[]];return i.length||a?.extra?.length||a?.filters?.length?(0,e.createElement)(zt,{...r},Boolean(i.length)&&(0,e.createElement)(sn,{title:un("Fields:","jet-form-builder"),items:i,initialOpen:!0},t),Boolean(a?.extra?.length)&&(0,e.createElement)(sn,{title:un("Extra macros:","jet-form-builder"),items:a.extra},t),Boolean(a?.filters?.length)&&(0,e.createElement)(sn,{title:un("Filters:","jet-form-builder"),items:a.filters},t)):null},{useContext:mn}=wp.element,{Button:pn}=wp.components,fn=function({onClick:t}){const n=mn(Zt),r=n.fullName?n.fullName():`%${n.value}%`,l="function"==typeof n.label?n.label():r;return(0,e.createElement)(pn,{isLink:!0,onClick:()=>t(r)},l)},hn=window.jfb.blocksToActions,bn=function({onClick:t=()=>{},withCurrent:n=!1,...r}){const l=(0,hn.useFields)({excludeCurrent:!n});return(0,e.createElement)(dn,{withCurrent:n,fields:l,...r},(0,e.createElement)(fn,{onClick:t}))},{Flex:gn}=wp.components,yn=function({label:t,children:n,...r}){return(0,e.createElement)(gn,{align:"center",justify:"flex-start",style:{marginBottom:"8px"}},(0,e.createElement)("label",{className:"jet-fb label",...r},t),n)},{FlexItem:vn}=wp.components,{useInstanceId:wn}=wp.compose,En=function({children:t,value:n,label:r,onChangePreset:l=!1,onChangeMacros:o=!1}){const a=wn(vn,"jfb-AdvancedInspectorControl");return(0,e.createElement)(e.Fragment,null,(0,e.createElement)(yn,{label:r,htmlFor:a},!1!==l&&(0,e.createElement)(qt,{value:n,onChange:l}),!1!==o&&(0,e.createElement)(bn,{onClick:o})),"function"==typeof t?t({instanceId:a}):t)};function _n(){en.call(this)}_n.prototype=Object.create(en.prototype),_n.prototype.isServerSide=!1,_n.prototype.isClientSide=!1,_n.prototype.name="",_n.prototype.namespace="CT",_n.prototype.help=null,_n.prototype.fullHelp=function(){return this.help},_n.prototype.fullName=function(){return`%${this.namespace}::${this.name}%`};const Cn=_n,{useSelect:kn}=wp.data,{__:Sn}=wp.i18n,jn=new Cn;jn.fullName=()=>"%this%",jn.fullHelp=()=>Sn("Returns current field value","jet-form-builder");const xn=function({children:t,withThis:n=!1}){const r=kn((e=>e("jet-forms/macros").getClientMacros()),[]),l=kn((e=>e("jet-forms/macros").getClientFilters()),[]),o=n?{extra:r,afterFields:[jn],filters:l}:{extra:r,filters:l};return(0,e.createElement)(Kt.Provider,{value:o},t)};function Nn(e,t,n){const r=n.selectionStart,l=n.selectionEnd;(e=null!=e?e:"").length||(t=`'${t}'`);let o=e.slice(0,r);const a=e.slice(l);return o+=t,setTimeout((()=>{n.focus(),n.selectionStart=o.length,n.selectionEnd=o.length})),o+a}const{useRef:Fn}=wp.element,Tn=function(e){var t;const[n,r]=fe(),l=null!==(t=n[e])&&void 0!==t?t:"",o=Fn();return[o,t=>{r({[e]:Nn(l,t,o.current)})}]},{__:In}=wp.i18n,{TextControl:Bn}=wp.components,An=function({label:t,help:n,hasMacro:r=!0}){const[l,o]=fe(),[a,i]=Tn("default");return he("default")?(0,e.createElement)(Fe.Provider,{value:{show:!0}},(0,e.createElement)(xn,null,(0,e.createElement)(En,{value:l.default,label:null!=t?t:In("Default Value","jet-form-builder"),onChangePreset:e=>o({default:e}),onChangeMacros:!!r&&i},(({instanceId:t})=>(0,e.createElement)(e.Fragment,null,(0,e.createElement)(Bn,{ref:a,id:t,value:l.default,className:"jet-fb m-unset",onChange:e=>o({default:e})}),(0,e.createElement)(ft,{name:"default"},null!=n?n:"")))))):null},{PanelBody:On}=wp.components,{__:Rn}=wp.i18n,{BlockControls:Mn}=wp.blockEditor,{useCopyToClipboard:Pn}=wp.compose,{TextControl:Gn,ToolbarGroup:Ln,ToolbarItem:Dn,ToolbarButton:qn}=wp.components,Vn=function({children:t=null}){const n=de(),[r,l]=fe(),o=$(`Copied "${r.name}" to clipboard.`),a=Pn(r.name,(()=>o(!0)));return(0,e.createElement)(Mn,{key:n("ToolBarFields-BlockControls")},(0,e.createElement)(Ln,{key:n("ToolBarFields-ToolbarGroup"),className:"jet-fb-block-toolbar"},(0,e.createElement)(qn,{isSmall:!0,icon:"admin-page",showTooltip:!0,shortcut:"Copy name",ref:a}),(0,e.createElement)(Dn,{as:Gn,value:r.name,onChange:e=>l({name:e})}),t))},{__:Jn}=wp.i18n,{ToolbarButton:$n}=wp.components,{BlockControls:Un}=wp.blockEditor,{SVG:Hn,Path:Wn}=wp.primitives,zn=function(){const[t,n]=fe();return he("required")?(0,e.createElement)(Un,{group:"block"},(0,e.createElement)($n,{icon:(0,e.createElement)(Hn,{xmlns:"http://www.w3.org/2000/svg",width:"24px",height:"24px",viewBox:"0 0 24 24",fill:"none"},(0,e.createElement)(Wn,{d:"M12 4L12 20",stroke:"currentcolor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"}),(0,e.createElement)(Wn,{d:"M17.3137 6.00024L6.00001 17.314",stroke:"currentcolor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"}),(0,e.createElement)(Wn,{d:"M20 12L4 12",stroke:"currentcolor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"}),(0,e.createElement)(Wn,{d:"M17.3137 17.3137L6.00001 6.00001",stroke:"currentcolor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})),title:t.required?Jn("Click to make this field optional","jet-form-builder"):Jn("Click to make this field required","jet-form-builder"),onClick:()=>n({required:!t.required}),isActive:t.required})):null},{__:Yn}=wp.i18n,{PanelBody:Kn}=wp.components,{applyFilters:Xn}=wp.hooks,{useBlockProps:Zn}=wp.blockEditor,{applyFilters:Qn}=wp.hooks,er=()=>Qn("jet.fb.register.fields.controls",{}),tr=window.wp.compose,nr=(0,tr.compose)((0,pe.withSelect)(X))((function({initialLabel:t="Valid",label:n="InValid",apiArgs:r={},gatewayRequestId:l,loadingGateway:o,onLoading:a=()=>{},onSuccess:i=()=>{},onFail:s=()=>{},isHidden:c=!1}){return(0,e.createElement)(K.FetchApiButton,{id:l,loadingState:o,initialLabel:t,label:n,apiArgs:r,onFail:s,onLoading:a,onSuccess:i,isHidden:c})})),rr="CLEAR_GATEWAY",lr="CLEAR_SCENARIO",or="SET_CURRENT_GATEWAY_SCENARIO",ar="SET_CURRENT_GATEWAY",ir="SET_CURRENT_GATEWAY_SPECIFIC",sr="SET_CURRENT_GATEWAY_INNER",cr="SET_CURRENT_REQUEST",ur="SET_CURRENT_SCENARIO",dr="REGISTER_EVENT_TYPE",mr="HARD_SET_CURRENT_GATEWAY",pr="HARD_SET_CURRENT_GATEWAY_SPECIFIC",fr={getCurrentRequestId:e=>e.currentRequest.id,getCurrentRequest:e=>e.currentRequest,getScenario:e=>e.currentScenario,getScenarioId:e=>e.currentScenario?.id,getGatewayId:e=>e.currentGateway?.gateway,getGateway:e=>e.currentGateway,getEventTypes:e=>e.eventTypes},hr={...fr,getGatewaySpecific:e=>e.currentGateway[fr.getGatewayId(e)]||{}},br={[rr]:e=>({...e,currentGateway:{}}),[lr]:e=>({...e,currentScenario:{}}),[or]:(e,t)=>({...e,currentScenario:{...e.currentScenario,...t.item||{}}}),[ar]:(e,t)=>({...e,currentGateway:{...e.currentGateway,...t.item}}),[ir]:(e,t)=>({...e,currentGateway:{...e.currentGateway,[e.currentGateway.gateway]:{...hr.getGatewaySpecific(e),...t.item}}}),[sr]:(e,t)=>{const{key:n,value:r}=t.item;return{...e,currentGateway:{...e.currentGateway,[n]:{...e.currentGateway[n]||{},...r}}}},[cr]:(e,t)=>{const n=[hr.getGatewayId(e),t.item?.id].filter((e=>e));return t.item.id=n.join("/"),{...e,currentRequest:t.item}},[ur]:(e,t)=>({...e,currentScenario:{...e.currentScenario,[e.currentScenario?.id]:{...e.currentScenario[e.currentScenario?.id]||{},...t.item||{}}}}),[mr]:(e,t)=>(t.item&&(e.currentGateway[t.item]=t.value),{...e}),[pr]:(e,t)=>(t.item&&e.currentGateway?.gateway&&(e.currentGateway[e.currentGateway?.gateway]={},e.currentGateway[e.currentGateway?.gateway][t.item]=t.value),{...e}),[dr]:(e,t)=>{var n,r;const l={...t.item,gateway:null!==(n=t.item?.gateway)&&void 0!==n?n:e.currentGateway?.gateway,scenario:null!==(r=t.item?.scenario)&&void 0!==r?r:e.currentScenario?.id};return e.eventTypes.push(l),e}},gr={currentRequest:{id:-1},currentGateway:{},currentScenario:{},eventTypes:[]},yr={clearGateway:()=>({type:rr}),clearScenario:()=>({type:lr}),setRequest:e=>({type:cr,item:e}),setGateway:e=>({type:ar,item:e}),setGatewayInner:e=>({type:sr,item:e}),setGatewaySpecific:e=>({type:ir,item:e}),setScenario:e=>({type:or,item:e}),setCurrentScenario:e=>({type:ur,item:e}),registerEventType:e=>({type:dr,item:e}),hardSetGateway:(e,t="")=>({type:mr,item:e,value:t}),hardSetGatewaySpecific:(e,t="")=>({type:pr,item:e,value:t})},{createReduxStore:vr}=wp.data,wr=vr("jet-forms/gateways",{reducer:function(e=gr,t){const n=br[t?.type];return n?n(e,t):e},actions:yr,selectors:hr}),Er="REGISTER",_r="UNREGISTER",Cr="LOCK_ACTIONS",kr="CLEAR_DYNAMIC_EVENTS",Sr={getTypeIndex:(e,t)=>e.types.findIndex((e=>e.value===t)),getTypes:e=>e.types,getGatewayTypes:e=>e.types.filter((e=>"gateway"in e)),getAlwaysTypes:e=>e.types.filter((e=>"always"in e)),getDynamicTypes:e=>e.types.filter((({isDynamic:e})=>e)),getType(e,t){const n=Sr.getTypeIndex(e,t);return e.types[n]},getUnsupported(e,t){var n;const r=null!==(n=e.lockedActions[t])&&void 0!==n&&n;return!1===r?[]:r.unsupported},getSupported(e,t){var n;const r=null!==(n=e.lockedActions[t])&&void 0!==n&&n;return!1===r?[]:r.supported},isValid(e,t,n){const r=Sr.getUnsupported(e,t);if(r.length&&r.includes(n))return!1;const l=Sr.getSupported(e,t);return!l.length||l.includes(n)},filterList:(e,t,n)=>n.filter((n=>Sr.isValid(e,t,n))),getHelpMap(e){const t={};for(const{value:n,help:r}of e.types)t[n]=r;return t}},jr={...Sr},xr={[Er](e,t){const{types:n}=e;for(const r of t.items){r.title=r.label;const t=jr.getTypeIndex(e,r.value);-1===t?n.push({...r}):n[t]={...r}}return{...e,types:n}},[Cr](e){for(const{id:n,self:r}of window.jetFormActionTypes){var t;const l=null!==(t=window[r])&&void 0!==t&&t;if(!1===l)continue;const{__unsupported_events:o,__supported_events:a}=l,i={unsupported:e.types.filter((({self:e})=>o.includes(e))).map((({value:e})=>e)),supported:e.types.filter((({self:e})=>a.includes(e))).map((({value:e})=>e))};(i.supported.length||i.unsupported.length)&&(e.lockedActions[n]=i)}return e},[_r](e,t){const{types:n}=t;return e.types=e.types.filter((({value:e})=>!n.includes(e))),e},[kr]:e=>(e.types=e.types.filter((({isDynamic:e=!1})=>!e)),e)},Nr={types:[],labels:{},lockedActions:{}},Fr={register:e=>({type:Er,items:e}),lockActions:()=>({type:Cr}),unRegister:e=>({type:_r,types:e}),clearDynamicEvents:()=>({type:kr})},{createReduxStore:Tr}=wp.data,Ir=Tr("jet-forms/events",{reducer:function(e=Nr,t){const n=xr[t?.type];return n?n(e,t):e},actions:Fr,selectors:jr}),Br="REGISTER",Ar="ADD_RENDER_STATE",Or="ADD_RENDER_STATES",Rr="DELETE_RENDER_STATES",{doAction:Mr}=wp.hooks,Pr={...{[Br](e,t){const{operators:n,functions:r,render_states:l}=t.items;return e.operators=[...n],e.functions=[...r],e.renderStates=[...l],Mr("jet.fb.change.blockConditions.renderState",e.renderStates),e},[Ar]:(e,t)=>(e.renderStates.push(t.item),Mr("jet.fb.change.blockConditions.renderState",e.renderStates),e),[Or](e,t){for(const n of t.items)e.renderStates.push(n);return Mr("jet.fb.change.blockConditions.renderState",e.renderStates),e},[Rr](e,t){const n=Array.isArray(t.items)?[...t.items]:[t.items];return e.renderStates=e.renderStates.filter((({value:e})=>!n.includes(e))),Mr("jet.fb.change.blockConditions.renderState",e.renderStates),e}}},{__:Gr}=wp.i18n,Lr=function(e,t="code"){var n;if(!function(e){let t;try{t=JSON.parse(e)}catch(e){return!1}return!!t?.jet_preset}(e=null!=e?e:""))return e;const r=JSON.parse(e),l=Gr("Preset from","jet-form-builder"),o=null!==(n=r?.from)&&void 0!==n?n:"(empty)";let a;switch(t){case"code":a=`${o}`;break;case"b":a=`${o}`}return[l,a].join(" ")},{select:Dr}=wp.data,{__:qr}=wp.i18n,Vr=function(e){const t=Dr("jet-forms/block-conditions").getOperator(e?.operator);return t?[`${e?.field||"(no field)"}`,t.label].join(" "):""},Jr={functions:[],operators:[],conditionReaders:{default(e){const t=Dr("jet-forms/block-conditions").getOperator(e?.operator);if(!t)return"";const n=e?.field||"(no field)",r=Lr(e.value,"b")||"(no value)";return[`${n}`,t.label,`${r}`].join(" ")},empty:Vr,not_empty:Vr,render_state(e){var t;const n=(null!==(t=e?.render_state)&&void 0!==t?t:[]).map((e=>`${e}`));return[1===n.length?qr("Is render state","jet-form-builder"):qr("One of the render states","jet-form-builder"),n.join(", ")].join(": ")}},renderStates:[]},$r={register:e=>({type:Br,items:e}),addRenderState:e=>({type:Ar,item:e}),addRenderStates:e=>({type:Or,items:e}),deleteRenderStates:e=>({type:Rr,items:e})},Ur={getFunctions:e=>e.functions,getOperators:e=>e.operators,getRenderStates:e=>e.renderStates,getSwitchableRenderStates:e=>e.renderStates.filter((({is_custom:e=!1,can_be_switched:t=!1})=>e||t)),getCustomRenderStates:e=>e.renderStates.filter((({is_custom:e=!1})=>e)),getOperator(e,t){const n=e.operators.findIndex((({value:e})=>e===t));return-1!==n&&e.operators[n]},readCondition(e,t){var n;const{operator:r=""}=t;if(!r)return"";const l=null!==(n=e.conditionReaders[r])&&void 0!==n&&n;return"function"==typeof l?l(t):e.conditionReaders.default(t)},getFunction:(e,t)=>e.functions.find((({value:e})=>e===t)),getFunctionDisplay:(e,t)=>Ur.getFunction(e,t)?.display},Hr={...Ur},{createReduxStore:Wr}=wp.data,zr=Wr("jet-forms/block-conditions",{reducer:function(e=Jr,t){const n=Pr[t?.type];return n?n(e,t):e},actions:$r,selectors:Hr}),Yr="REGISTER_MACRO",Kr={[Yr](e,t){const{items:n,isClient:r}=t,l=Array.isArray(n)?n:[n];for(const e of l)if(!(e instanceof Cn))throw new Error("^^^ Invalid macro item ^^^");return r?e.clientMacros.push(...l):e.serverMacros.push(...l),e}},{__:Xr}=wp.i18n;function Zr(){Cn.call(this),this.name="CurrentDate",this.isClientSide=!0,this.fullHelp=()=>(0,e.createElement)(e.Fragment,null,Xr("Returns the current timestamp. Replacing","jet-form-builder")," ",(0,e.createElement)("code",null,"Date.now()"))}Zr.prototype=Object.create(Cn.prototype);const Qr=Zr,{__:el}=wp.i18n;function tl(){Cn.call(this),this.name="Min_In_Sec",this.isClientSide=!0,this.help=el("Number of milliseconds in one minute","jet-form-builder")}tl.prototype=Object.create(Cn.prototype);const nl=tl,{__:rl}=wp.i18n;function ll(){Cn.call(this),this.name="Month_In_Sec",this.isClientSide=!0,this.help=rl("Number of milliseconds in one month","jet-form-builder")}ll.prototype=Object.create(Cn.prototype);const ol=ll,{__:al}=wp.i18n;function il(){Cn.call(this),this.name="Day_In_Sec",this.isClientSide=!0,this.help=al("Number of milliseconds in one day","jet-form-builder")}il.prototype=Object.create(Cn.prototype);const sl=il,{__:cl}=wp.i18n;function ul(){Cn.call(this),this.name="Year_In_Sec",this.isClientSide=!0,this.help=cl("Number of milliseconds in one year","jet-form-builder")}ul.prototype=Object.create(Cn.prototype);const dl=ul,{__:ml}=wp.i18n;function pl(){en.call(this)}pl.prototype=Object.create(en.prototype),pl.prototype.docArgument=!1,pl.prototype.help=null,pl.prototype.isServerSide=!1,pl.prototype.isClientSide=!1,pl.prototype.getArgumentsList=function(){if(!this.docArgument||!this.docArgument.length)return null;const e=Array.isArray(this.docArgument)?this.docArgument:[this.docArgument],t=[];for(const n of e)switch(n){case"string":case String:t.push(ml("String","jet-form-builder"));break;case"number":case Number:t.push(ml("Number","jet-form-builder"));break;case"array":case Array:t.push(ml("Array","jet-form-builder"));break;case"any":t.push(ml("Anything","jet-form-builder"))}return t.join(" | ")},pl.prototype.fullHelp=function(){if(!this.docArgument&&!this.help)return null;const t=this.help,n=this.getArgumentsList();return(0,e.createElement)(e.Fragment,null,n&&(0,e.createElement)("div",{style:{marginBottom:"0.5em"}},ml("Arguments:","jet-form-builder")+" ",(0,e.createElement)("code",null,n)),"function"!=typeof t?t:(0,e.createElement)(t,null))};const fl=pl,{__:hl}=wp.i18n;function bl(){fl.call(this),this.label=()=>hl("addDay","jet-form-builder"),this.fullName=()=>"|addDay",this.docArgument=Number,this.isClientSide=!0,this.help=hl("Adds the passed number of days via an argument to a macro that returns a date or a timestamp.","jet-form-builder")}bl.prototype=Object.create(fl.prototype);const gl=bl,{__:yl}=wp.i18n;function vl(){fl.call(this),this.label=()=>yl("addMonth","jet-form-builder"),this.fullName=()=>"|addMonth",this.docArgument=Number,this.isClientSide=!0,this.help=yl("Adds the passed number of months via an argument to a macro that returns a date or a timestamp.","jet-form-builder")}vl.prototype=Object.create(fl.prototype);const wl=vl,{__:El}=wp.i18n;function _l(){fl.call(this),this.label=()=>El("addYear","jet-form-builder"),this.fullName=()=>"|addYear",this.docArgument=Number,this.isClientSide=!0,this.help=El("Adds the passed number of years through an argument to a macro that returns a date or a timestamp.","jet-form-builder")}_l.prototype=Object.create(fl.prototype);const Cl=_l,{__:kl}=wp.i18n;function Sl(){fl.call(this),this.label=()=>kl("ifEmpty","jet-form-builder"),this.fullName=()=>"|ifEmpty",this.docArgument="any",this.isClientSide=!0,this.help=kl("If the macro returns an empty value, then the filter returns the value passed in the argument","jet-form-builder")}Sl.prototype=Object.create(fl.prototype);const jl=Sl,{__:xl}=wp.i18n;function Nl(){fl.call(this),this.label=()=>xl("length","jet-form-builder"),this.fullName=()=>"|length",this.isClientSide=!0,this.help=xl("Returns the length of a string or array","jet-form-builder")}Nl.prototype=Object.create(fl.prototype);const Fl=Nl,{__:Tl}=wp.i18n;function Il(){fl.call(this),this.label=()=>Tl("toDate","jet-form-builder"),this.fullName=()=>"|toDate",this.docArgument=Boolean,this.isClientSide=!0,this.help=()=>(0,e.createElement)(e.Fragment,null,Tl("Formats the timestamp according to the Date Field format.","jet-form-builder"),(0,e.createElement)("hr",null),Tl("Example:","jet-form-builder")+" ",(0,e.createElement)("code",null,"2022-02-24"),(0,e.createElement)("hr",null),Tl("Optionally accepts ","jet-form-builder"),(0,e.createElement)("code",null,"false"),Tl(" to use the user’s local timezone instead of UTC (default: ","jet-form-builder"),(0,e.createElement)("code",null,"true"),Tl(").","jet-form-builder"),(0,e.createElement)("hr",null),Tl("Example:","jet-form-builder")+" ",(0,e.createElement)("code",{style:{fontSize:"12px"}},"toDate(false)"))}Il.prototype=Object.create(fl.prototype);const Bl=Il,{__:Al}=wp.i18n;function Ol(){fl.call(this),this.label=()=>Al("toDateTime","jet-form-builder"),this.fullName=()=>"|toDateTime",this.docArgument=Boolean,this.isClientSide=!0,this.help=()=>(0,e.createElement)(e.Fragment,null,Al("Formats the timestamp according to the Datetime Field format.","jet-form-builder"),(0,e.createElement)("hr",null),Al("Example:","jet-form-builder")+" ",(0,e.createElement)("code",null,"2022-02-24T04:25"),(0,e.createElement)("hr",null),Al("Optionally accepts ","jet-form-builder"),(0,e.createElement)("code",null,"false"),Al(" to use the user’s local timezone instead of UTC (default: ","jet-form-builder"),(0,e.createElement)("code",null,"true"),Al(").","jet-form-builder"),(0,e.createElement)("hr",null),Al("Example:","jet-form-builder")+" ",(0,e.createElement)("code",{style:{fontSize:"12px"}},"toDateTime(false)"))}Ol.prototype=Object.create(fl.prototype);const Rl=Ol,{__:Ml}=wp.i18n;function Pl(){fl.call(this),this.label=()=>Ml("toTime","jet-form-builder"),this.fullName=()=>"|toTime",this.docArgument=Boolean,this.isClientSide=!0,this.help=()=>(0,e.createElement)(e.Fragment,null,Ml("Formats the timestamp according to the Time Field format.","jet-form-builder"),(0,e.createElement)("hr",null),Ml("Example:","jet-form-builder")+" ",(0,e.createElement)("code",null,"04:25"),(0,e.createElement)("hr",null),Ml("Optionally accepts ","jet-form-builder"),(0,e.createElement)("code",null,"false"),Ml(" to use the user’s local timezone instead of UTC (default: ","jet-form-builder"),(0,e.createElement)("code",null,"true"),Ml(").","jet-form-builder"),(0,e.createElement)("hr",null),Ml("Example:","jet-form-builder")+" ",(0,e.createElement)("code",{style:{fontSize:"12px"}},"toTime(false)"))}Pl.prototype=Object.create(fl.prototype);const Gl=Pl,{__:Ll}=wp.i18n;function Dl(){fl.call(this),this.label=()=>Ll("subDay","jet-form-builder"),this.fullName=()=>"|subDay",this.docArgument=Number,this.isClientSide=!0,this.help=Ll("Subtracts the number of days by argument from a macro that returns a date or timestamp.","jet-form-builder")}Dl.prototype=Object.create(fl.prototype);const ql=Dl,{__:Vl}=wp.i18n;function Jl(){fl.call(this),this.label=()=>Vl("subMonth","jet-form-builder"),this.fullName=()=>"|subMonth",this.docArgument=Number,this.isClientSide=!0,this.help=Vl("Subtracts the number of months by argument from a macro that returns a date or timestamp.","jet-form-builder")}Jl.prototype=Object.create(fl.prototype);const $l=Jl,{__:Ul}=wp.i18n;function Hl(){fl.call(this),this.label=()=>Ul("subYear","jet-form-builder"),this.fullName=()=>"|subYear",this.docArgument=Number,this.isClientSide=!0,this.help=Ul("Subtracts the number of years by argument from a macro that returns a date or timestamp.","jet-form-builder")}Hl.prototype=Object.create(fl.prototype);const Wl=Hl,{__:zl}=wp.i18n;function Yl(){fl.call(this),this.label=()=>zl("toDayInMs","jet-form-builder"),this.fullName=()=>"|toDayInMs",this.isClientSide=!0,this.help=()=>(0,e.createElement)(e.Fragment,null,zl("Converts a number of days into milliseconds.","jet-form-builder"))}Yl.prototype=Object.create(fl.prototype);const Kl=Yl,{__:Xl}=wp.i18n;function Zl(){fl.call(this),this.label=()=>Xl("toHourInMs","jet-form-builder"),this.fullName=()=>"|toHourInMs",this.isClientSide=!0,this.help=()=>(0,e.createElement)(e.Fragment,null,Xl("Converts a number of hours into milliseconds.","jet-form-builder"))}Zl.prototype=Object.create(fl.prototype);const Ql=Zl,{__:eo}=wp.i18n;function to(){fl.call(this),this.label=()=>eo("toMinuteInMs","jet-form-builder"),this.fullName=()=>"|toMinuteInMs",this.isClientSide=!0,this.help=()=>(0,e.createElement)(e.Fragment,null,eo("Converts a number of minutes into milliseconds.","jet-form-builder"))}to.prototype=Object.create(fl.prototype);const no=to,{__:ro}=wp.i18n;function lo(){fl.call(this),this.label=()=>ro("toMonthInMs","jet-form-builder"),this.fullName=()=>"|toMonthInMs",this.isClientSide=!0,this.help=()=>(0,e.createElement)(e.Fragment,null,ro("Converts a number of months into milliseconds.","jet-form-builder"))}lo.prototype=Object.create(fl.prototype);const oo=lo,{__:ao}=wp.i18n;function io(){fl.call(this),this.label=()=>ao("toWeekInMs","jet-form-builder"),this.fullName=()=>"|toWeekInMs",this.isClientSide=!0,this.help=()=>(0,e.createElement)(e.Fragment,null,ao("Converts a number of weeks into milliseconds.","jet-form-builder"))}io.prototype=Object.create(fl.prototype);const so=io,{__:co}=wp.i18n;function uo(){fl.call(this),this.label=()=>co("toYearInMs","jet-form-builder"),this.fullName=()=>"|toYearInMs",this.isClientSide=!0,this.help=()=>(0,e.createElement)(e.Fragment,null,co("Converts a number of years into milliseconds.","jet-form-builder"))}uo.prototype=Object.create(fl.prototype);const mo=uo,{__:po}=wp.i18n;function fo(){fl.call(this),this.label=()=>po("Timestamp","jet-form-builder"),this.fullName=()=>"|T",this.isClientSide=!0,this.help=po("Returns the time stamp. Usually used in conjunction with Date & Datetime and Time Field.","jet-form-builder",'Example\nFor Date Field\n%date_field|T%\nResult if date_field is filled with value "2022-10-22"')}fo.prototype=Object.create(fl.prototype);const ho=fo,bo={macros:[new Qr,new nl,new sl,new ol,new dl],filters:[new jl,new ho,new Fl,new gl,new wl,new Cl,new ql,new $l,new Wl,new Bl,new Rl,new Gl,new no,new Ql,new Kl,new so,new oo,new mo]},go={registerMacro:(e,t=!0)=>({type:Yr,items:e,isClient:t})},yo={getClientMacros:e=>e.macros.filter((function(e){return e.isClientSide})),getServerMacros:e=>e.macros.filter((function(e){return e.isServerSide})),getClientFilters:e=>e.filters.filter((function(e){return e.isClientSide})),getServerFilters:e=>e.filters.filter((function(e){return e.isServerSide}))},{createReduxStore:vo}=wp.data,wo=vo("jet-forms/macros",{reducer:function(e=bo,t){const n=Kr[t?.type];return n?n(e,t):e},actions:go,selectors:yo}),Eo="REGISTER",_o={[Eo](e,t){const{messages:n,ssr_callbacks:r,formats:l,rule_types:o}=t.items;return e.messages=JSON.parse(JSON.stringify(n)),e.ssrCallbacks=JSON.parse(JSON.stringify(r)),e.formats=JSON.parse(JSON.stringify(l)),e.ruleTypes=JSON.parse(JSON.stringify(o)),e}},Co={..._o},{select:ko}=wp.data,{__:So}=wp.i18n,jo={messages:[],ssrCallbacks:[],formats:[],ruleTypes:[],ruleReaders:{default(e){const t=ko("jet-forms/validation").getRule(e.type);if(!t)return"";let n=e?.field||e?.value||"";return n=Lr(n,"b")||"(no value)",[t.label,`${n}`].join(" ")},ssr:e=>[So("Function:","jet-form-builder"),e?.value].join(" ")}},xo={register:e=>({type:Eo,items:e})},No={...{getRule(e,t){const n=e.ruleTypes.findIndex((({value:e})=>e===t));return-1!==n&&e.ruleTypes[n]},readRule(e,t){var n;const{type:r=""}=t;if(!r)return"";const l=null!==(n=e.ruleReaders[r])&&void 0!==n&&n;return"function"==typeof l?l(t):e.ruleReaders.default(t)}}},{createReduxStore:Fo}=wp.data,To=Fo("jet-forms/validation",{reducer:function(e=jo,t){const n=Co[t?.type];return n?n(e,t):e},actions:xo,selectors:No}),Io="SET_BLOCKS",Bo="SET_BLOCKS_FIRST",Ao="TOGGLE_EXECUTE",Oo={...{[Io](e,t){const n=[];for(const r in t.blockMap)t.blockMap.hasOwnProperty(r)&&!e.blockMap.hasOwnProperty(r)&&n.push(r);return{...e,blocks:t.blocks,blockMap:t.blockMap,recentlyAdded:n}},[Bo]:(e,t)=>({...e,blocks:t.blocks,blockMap:t.blockMap}),[Ao]:e=>({...e,executed:!0})}},Ro={blocks:[],blockMap:{},executed:!1,recentlyAdded:[],sanitizers:{name:[e=>e.replace(/[^\w\-]/gi,""),e=>"children"===e?"_"+e:e]}},{select:Mo}=wp.data,Po=function(){const e=[],t={};return j(((n,r)=>{var l;if(!n?.name?.includes("jet-forms/"))return;const o=Mo("core/blocks").getBlockType(n.name),a=o.jfbResolveBlock.call(n);if(o.hasOwnProperty("jfbGetFields")&&(a.fields=o.jfbGetFields.call(n)),!r?.name)return e.push(a),void(t[a.clientId]=a);const i=null!==(l=t[r?.clientId])&&void 0!==l&&l;i&&(Object.defineProperty(a,"parentBlock",{get:()=>i}),i.innerBlocks=i?.innerBlocks||[],i.innerBlocks.push(a),t[a.clientId]=a)})),{blocks:e,blockMap:t}},{select:Go,dispatch:Lo}=wp.data,Do={setBlocks(e=null){null===e&&(e=Po());const t=Go(Wo).isExecuted();return t||Lo(Wo).toggleExecute(),{type:t?Io:Bo,blocks:e.blocks,blockMap:e.blockMap}},toggleExecute:()=>({type:Ao})},qo={getBlocks:e=>e.blocks,getBlockMap:e=>e.blockMap,getFields(e,{withInner:t=!0,currentId:n=!1}){const r=[],l=e=>{for(const o of e)o.fields?.length&&o.clientId!==n&&r.push(...o.fields),t&&o.innerBlocks?.length&&l(o.innerBlocks)};return l(e.blocks),r},isExecuted:e=>e.executed,isRecentlyAdded:(e,t)=>-1!==e.recentlyAdded.indexOf(t),getUniqueNames(e,t){var n,r;const l=null!==(n=e.blockMap[t])&&void 0!==n&&n;if(!l)return{hasChanged:!1};let o=!1;const a=null!==(r=l?.fields?.map?.((({value:e})=>e)))&&void 0!==r?r:[],i=l.hasOwnProperty("parentBlock")?l.parentBlock.innerBlocks:e.blocks,s=e=>{for(const t of e){const n=a.indexOf(t.value);-1!==n&&("field_name"!==t.value?(a[n]=`${a[n]}_copy`,o=!0,s(e)):o=!0)}};for(const e of i){var c;t!==e.clientId&&s(null!==(c=e?.fields)&&void 0!==c?c:[])}return{hasChanged:o,names:a.join("|")}},getSanitizedAttributes(e,t,{name:n}={}){for(const o in t){var r,l;if(!t.hasOwnProperty(o))continue;const a=null!==(r=null!==(l=e.sanitizers?.[n]?.[o])&&void 0!==l?l:e.sanitizers?.[o])&&void 0!==r&&r;if(a?.length)for(const e of a)"function"==typeof e&&(t[o]=e(t[o]))}return t},isUniqueName(e,t){const{hasChanged:n}=qo.getUniqueNames(e,t);return!n},getBlock:(e,t)=>e.blocks.find((({name:e,clientId:n})=>[e,n].includes(t))),getBlockByName(e,t){if(!t)return!1;const n=e=>{for(const r of e){if(r.fields.some((({value:e})=>e===t)))return r;r.innerBlocks?.length&&n(r.innerBlocks)}};return n(e.blocks),!1},getBlockNameByName(e,t){var n;const r=qo.getBlockByName(e,t);return null!==(n=r?.name)&&void 0!==n?n:""},getBlockById(e,t){var n;return null!==(n=e.blockMap[t])&&void 0!==n&&n}},Vo={...qo},{createReduxStore:Jo,dispatch:$o,select:Uo,subscribe:Ho}=wp.data,Wo="jet-forms/fields";let zo,Yo;Ho((()=>{const{debounce:e}=window._,{setBlocks:t}=$o(Wo);e((()=>{const e=Uo("core/block-editor").getGlobalBlockCount();if(zo!==e)return zo=e,void t();const n=Po(),r=JSON.stringify(n.blocks);r!==Yo&&(Yo=r,t(n))}),100)()}));const Ko=Jo(Wo,{reducer:function(e=Ro,t){const n=Oo[t?.type];return n?n(e,t):e},actions:Do,selectors:Vo});n(4180);const{register:Xo,dispatch:Zo}=wp.data,{addAction:Qo}=wp.hooks;[wr,Ir,zr,wo,To,Ko].forEach(Xo),Zo("jet-forms/events").register(window.jetFormEvents.types),Zo("jet-forms/events").lockActions(),Zo("jet-forms/validation").register(window.jetFormValidation),Qo("jet.fb.change.blockConditions.renderState","jet-form-builder/events",(function(e){Zo("jet-forms/events").clearDynamicEvents();const t=e.map((({value:e})=>({value:e="ON."+e,label:e,isDynamic:!0})));Zo("jet-forms/events").register(t)})),Zo("jet-forms/block-conditions").register(window.jetFormBlockConditions);const{createContext:ea}=wp.element,ta=ea(!1),{createContext:na}=wp.element,ra=na({currentItem:{},changeCurrentItem:()=>{},currentIndex:-1}),la=(0,o.createContext)({isSupported:e=>!1,render:({children:e})=>e}),oa=(0,o.createContext)({isSupported:e=>!1,render:({currentItem:e,index:t})=>null}),aa=(0,o.createContext)({edit:e=>!0,move:e=>!0,clone:e=>!0,delete:e=>!0}),{createContext:ia}=wp.element,sa=ia({}),{ToggleControl:ca}=wp.components,{__:ua}=wp.i18n,{useState:da}=wp.element,{useContext:ma}=wp.element,pa=function(e){if(void 0===e)return null;const t=ma(ta),n=function({oldIndex:t,newIndex:n}){e((e=>{const r=JSON.parse(JSON.stringify(e));return[r[n],r[t]]=[r[t],r[n]],r}))};return{changeCurrentItem:function(t,n){e((e=>{const r=JSON.parse(JSON.stringify(e));return r[n]={...e[n],...t},r}))},toggleVisible:function(t){e((e=>{const n=JSON.parse(JSON.stringify(e));return n[t].__visible=!n[t].__visible,n}))},moveDown:function(e){n({oldIndex:e,newIndex:e+1})},moveUp:function(e){n({oldIndex:e,newIndex:e-1})},cloneItem:function(t){e((e=>{const n=JSON.parse(JSON.stringify(e)),[r,l]=[n.slice(0,t+1),n.slice(t+1)];return[...r,n[t],...l]}))},addNewItem:function(t){e((e=>[...e,{__visible:!0,...t}]))},removeOption:function(n){t&&!(e=>confirm((0,d.sprintf)((0,d.__)("Are you sure you want to remove item %d?","jet-form-builder"),e+1)))(n)||e((e=>{const t=JSON.parse(JSON.stringify(e));return t.splice(n,1),t}))}}},{createContext:fa}=wp.element,ha=fa(!1),{Button:ba}=wp.components,{useContext:ga}=wp.element,ya=function(t){var n;const{item:r,onSetState:l,functions:o,children:a}=t,{addNewItem:i}=null!==(n=null!=o?o:pa(l))&&void 0!==n?n:ga(ha);return(0,e.createElement)(ba,{icon:"plus-alt2",isSecondary:!0,onClick:()=>i(r)},a)};let{Card:va,Button:wa,CardHeader:Ea,CardBody:_a,ToggleGroupControl:Ca,__experimentalToggleGroupControl:ka}=wp.components;const{useContext:Sa}=wp.element,{__:ja}=wp.i18n;Ca=Ca||ka;const xa=function(t){var n;const{items:r,onSetState:l,functions:o,children:a}=t,{cloneItem:i,moveUp:s,moveDown:c,toggleVisible:u,changeCurrentItem:d,removeOption:m}=null!==(n=null!=o?o:pa(l))&&void 0!==n?n:Sa(ha),{isSupported:p,render:f}=Sa(oa),{edit:h,move:b,clone:g,delete:y}=Sa(aa),v=({currentItem:t,index:n})=>p(t)?(0,e.createElement)(f,{currentItem:t,index:n}):(0,e.createElement)("span",{className:"repeater-item-title"},`#${n+1}`);return(0,e.createElement)("div",{className:"jet-form-builder__repeater-component",key:"jet-form-builder-repeater"},r.map(((t,n)=>(0,e.createElement)(va,{size:"small",elevation:2,className:"jet-form-builder__repeater-component-item",key:`jet-form-builder__repeater-component-item-${n}`},(0,e.createElement)(Ea,{className:"repeater__item__header"},(0,e.createElement)("div",{className:"repeater-item__left-heading"},(0,e.createElement)(Ca,{className:"repeater-action-buttons jet-fb-toggle-group-control",hideLabelFromVision:!0},(!h||h(t))&&(0,e.createElement)(wa,{variant:"tertiary",isSmall:!0,icon:t.__visible?"no-alt":"edit",onClick:()=>u(n),className:"repeater-action-button jet-fb-is-thick"}),(!b||b(t))&&(0,e.createElement)(wa,{variant:"tertiary",isSmall:!0,isSecondary:!0,disabled:!Boolean(n),icon:"arrow-up-alt2",onClick:()=>s(n),className:"repeater-action-button jet-fb-is-thick"}),(!b||b(t))&&(0,e.createElement)(wa,{variant:"tertiary",isSmall:!0,isSecondary:!0,disabled:!(nc(n),className:"repeater-action-button jet-fb-is-thick"})),(0,e.createElement)(v,{currentItem:t,index:n})),(0,e.createElement)(Ca,{className:"jet-fb-toggle-group-control",hideLabelFromVision:!0},(!g||g(t))&&(0,e.createElement)(wa,{variant:"tertiary",isSmall:!0,isSecondary:!0,onClick:()=>i(n),className:"jet-fb-is-thick",icon:"admin-page"}),(!y||y(t))&&(0,e.createElement)(zt,{icon:"trash",isDestructive:!0},(0,e.createElement)(Jt.Consumer,null,(({setShowPopover:t})=>(0,e.createElement)("div",{style:{padding:"0.5em",width:"max-content"}},(0,e.createElement)("span",null,ja("Delete this item?","jet-form-builder"))," ",(0,e.createElement)(wa,{isLink:!0,isDestructive:!0,onClick:()=>m(n)},ja("Yes","jet-form-builder"))," / ",(0,e.createElement)(wa,{isLink:!0,onClick:()=>t(!1)},ja("No","jet-form-builder")))))))),t.__visible&&(0,e.createElement)(_a,{className:"repeater-item__content",key:`jet-form-builder__card-body-${n}`},(()=>{const r={currentItem:t,changeCurrentItem:e=>d(e,n),currentIndex:n};return(0,e.createElement)(ra.Provider,{value:r},!a&&"Set up your Repeater Template, please.","function"==typeof a?a(r):a)})())))))},{__experimentalToggleGroupControl:Na,__experimentalToggleGroupControlOption:Fa}=wp.components,{__:Ta}=wp.i18n;let{formats:Ia}=window.jetFormValidation;const Ba=window.jfb.data,{messages:Aa}=window.jetFormValidation,Oa=function(e){return Aa.find((({id:t})=>e===t))},{TextControl:Ra}=wp.components,Ma=ke((0,o.forwardRef)((function({icon:e,size:t=24,...n},r){return(0,o.cloneElement)(e,{width:t,height:t,...n,ref:r})})))({name:"StyledIcon",class:"sfqmk5y",propsAsIs:!0});n(483);const{createContext:Pa}=wp.element,Ga=Pa({FieldSelect:null,property:""}),La=function({state:t,children:n}){const r=pa(t);return(0,e.createElement)(ha.Provider,{value:r},n)},Da=window.wp.apiFetch;var qa=n.n(Da);const{rest_add_state:Va,rest_delete_state:Ja}=window.jetFormBlockConditions,{Fill:$a}=c,Ua=({setShowModal:t,changeCurrentItem:n,currentItem:r})=>{var l;const[a,i]=(0,o.useState)(!1),[s,c]=(0,o.useState)({}),[m,p]=(0,o.useState)("");let f=[...null!==(l=r.render_state)&&void 0!==l?l:[]];const{addRenderState:b,deleteRenderStates:g}=(0,pe.useDispatch)("jet-forms/block-conditions"),y=(0,pe.useSelect)((e=>e("jet-forms/block-conditions").getCustomRenderStates()),[a,s]);return(0,e.createElement)(h,{title:(0,d.__)("Register custom render state","jet-form-builder"),onRequestClose:()=>t(!1),classNames:["width-45"]},(0,e.createElement)("div",{className:"jet-fb with-button"},(0,e.createElement)(u.TextControl,{value:m,onChange:e=>p(e),placeholder:(0,d.__)("Set your custom state name","jet-form-builder")}),(0,e.createElement)(u.Button,{variant:"secondary",onClick:()=>{i(!0),Va.data={value:m},qa()(Va).then((e=>{var r;r=e.state,b(r),f.push(r.value),n({render_state:f}),i(!1),t(!1)})).catch((e=>{console.error(e),i(!1)}))},disabled:a,isBusy:a,style:{padding:"7px 12px",height:"unset"}},(0,d.__)("Add","jet-form-builder"))),Boolean(y?.length)&&(0,e.createElement)(e.Fragment,null,(0,e.createElement)("b",{className:"jet-fb flex mb-05-em"},(0,d.__)("Manage your custom states:","jet-form-builder")),(0,e.createElement)("div",{className:"jet-fb-buttons-flex"},y.map((t=>{var r;return(0,e.createElement)(u.Button,{key:t.value,icon:"no-alt",iconPosition:"right",onClick:()=>{return e=t.value,Ja.data={list:[e]},c((t=>({...t,[e]:!0}))),void qa()(Ja).then((()=>{(e=>{g(e),f=f.filter((t=>t!==e)),n({render_state:f})})(e)})).catch(console.error).finally((()=>{c((t=>({...t,[e]:!1})))}));var e},isBusy:null!==(r=s[t.value])&&void 0!==r&&r},t.label)})))),(0,e.createElement)($a,null,(0,e.createElement)("span",null)))},{Button:Ha,BaseControl:Wa,FormTokenField:za}=wp.components,{__:Ya}=wp.i18n,{useState:Ka}=wp.element,{useSelect:Xa}=wp.data,Za=({currentItem:t,changeCurrentItem:n})=>{const[r,l]=Ka(!1),o=Xa((e=>y(e("jet-forms/block-conditions").getRenderStates(),"value")),[r]);return(0,e.createElement)(e.Fragment,null,(0,e.createElement)(Wa,{label:Ya("Render State","jet-form-builder"),className:"control-flex"},(0,e.createElement)("div",null,(0,e.createElement)("label",{className:"jet-fb label mb-05-em"},Ya("Add render state","jet-form-builder")),(0,e.createElement)("div",{className:"jet-fb with-button clear-label"},(0,e.createElement)(za,{value:t.render_state,suggestions:o,onChange:e=>n({render_state:e}),tokenizeOnSpace:!0,__experimentalExpandOnFocus:!0}),(0,e.createElement)(Ha,{label:Ya("New render state","jet-form-builder"),variant:"secondary",icon:"plus-alt2",onClick:()=>l(!0)})))),r&&(0,e.createElement)(Ua,{setShowModal:l,changeCurrentItem:n,currentItem:t}))},Qa=function({children:t,value:n,label:r,onChangePreset:l=!1,onChangeMacros:o=!1,macroWithCurrent:a=!1}){const i=(0,tr.useInstanceId)(u.FlexItem,"jfb-AdvancedModalControl");return(0,e.createElement)("div",{className:"components-base-control"},(0,e.createElement)(u.Flex,{align:"flex-start",className:"components-base-control__field"},(0,e.createElement)(u.FlexItem,{isBlock:!0},(0,e.createElement)(u.Flex,{align:"center",justify:"flex-start"},(0,e.createElement)("label",{htmlFor:i,className:"jet-fb label"},r),!1!==l&&(0,e.createElement)(qt,{value:n,onChange:l}),!1!==o&&(0,e.createElement)(bn,{onClick:o,withCurrent:a}))),(0,e.createElement)(u.FlexItem,{isBlock:!0,style:{flex:3,marginLeft:"unset"}},"function"==typeof t?t({instanceId:i}):t)))},{TextareaControl:ei,withFilters:ti}=wp.components,{__:ni}=wp.i18n,ri=ti("jet.fb.block.conditions.options")((t=>{const{currentItem:n,changeCurrentItem:r}=t,l=de();return["empty","not_empty"].includes(n.operator)?null:"render_state"===n.operator?(0,e.createElement)(Za,{key:l("RenderStateOptions"),changeCurrentItem:r,currentItem:n}):(0,e.createElement)(xn,null,(0,e.createElement)(Qa,{value:n.value,label:ni("Value to compare","jet-form-builder"),onChangePreset:e=>r({value:e}),onChangeMacros:e=>{var t;return r({value:(null!==(t=n.value)&&void 0!==t?t:"")+e})}},(({instanceId:t})=>(0,e.createElement)(ei,{id:t,value:n.value,onChange:e=>r({value:e})}))))})),{SelectControl:li,withFilters:oi}=wp.components,{__:ai}=wp.i18n,ii=oi("jet.fb.block.conditions.options")((t=>{const{currentItem:n,changeCurrentItem:r}=t,l=(0,hn.useFields)({placeholder:"--"});return"render_state"===n.operator?null:(0,e.createElement)(li,{label:ai("Field","jet-form-builder"),labelPosition:"side",value:n.field,options:l,onChange:e=>{r({field:e})}})})),{useContext:si}=wp.element,{SelectControl:ci}=wp.components,{__:ui}=wp.i18n,di=function(){const{currentItem:t,changeCurrentItem:n}=si(ra),r=de(),{operators:l}=ce();return(0,e.createElement)(e.Fragment,null,(0,e.createElement)(ii,{currentItem:t,changeCurrentItem:n}),(0,e.createElement)(ci,{key:r("SelectControl-operator"),label:ui("Operator","jet-form-builder"),labelPosition:"side",value:t.operator,options:l,onChange:e=>n({operator:e})}),(0,e.createElement)(ri,{currentItem:t,changeCurrentItem:n}))},{select:mi}=wp.data,pi=function(e){return mi("jet-forms/block-conditions").readCondition(e)},{__:fi}=wp.i18n,hi=function({children:t}){return(0,e.createElement)(oa.Provider,{value:{isSupported:()=>!0,render:({currentItem:t})=>(0,e.createElement)("span",{className:"repeater-item-title",dangerouslySetInnerHTML:{__html:t?.or_operator?fi("OR","jet-form-builder"):pi(t)}})}},(0,e.createElement)(aa.Provider,{value:{edit:e=>!e.or_operator}},t))},{__:bi}=wp.i18n,{useState:gi,useContext:yi,Fragment:vi,useEffect:wi,useRef:Ei}=wp.element,{SelectControl:_i,TextareaControl:Ci,FlexItem:ki,Flex:Si,ToggleControl:ji}=wp.components,xi=[{key:"commas",render:()=>(0,e.createElement)("li",null,bi("If this field supports multiple values, you can separate them with commas. If a string value is expected, wrap it in single quotes like '%value_field%'.","jet-form-builder"))}],Ni=[{value:"on_change",label:bi("On change conditions result","jet-form-builder"),help:bi("The value will be applied if condition check-ups return a result different from the first check-up's cached value","jet-form-builder")},{value:"once",label:bi("Once","jet-form-builder"),help:bi("The value will be applied only the first time the condition is matched","jet-form-builder")},{value:"always",label:bi("Always","jet-form-builder"),help:bi("The value will be applied every time the condition is matched","jet-form-builder")}],Fi=e=>Ni.find((t=>t.value===(null!=e?e:"on_change"))).help,Ti=function(){var t,n,r,l;const{current:o,update:a}=yi(sa),[i,s]=gi((()=>o)),c=Ei(null),[u,d]=gi((()=>Fi(i.frequency)));wi((()=>{d(Fi(i.frequency))}),[i.frequency]);const m=e=>{s((t=>({...t,...e})))};return W((()=>a(i))),(0,e.createElement)(vi,null,(0,e.createElement)(Si,{align:"flex-start"},(0,e.createElement)(ki,{isBlock:!0},(0,e.createElement)(Si,{align:"center",justify:"flex-start"},(0,e.createElement)("span",{className:"jet-fb label"},bi("Value to set","jet-form-builder")),(0,e.createElement)(qt,{value:i.to_set,onChange:e=>m({to_set:e})}),(0,e.createElement)(xn,{withThis:!0},(0,e.createElement)(bn,{onClick:e=>(e=>{const t=c.current;if(t){const n=t.selectionStart,r=t.selectionEnd,l=i.to_set||"",o=l.slice(0,n)+e+l.slice(r);m({to_set:`${o}`}),setTimeout((()=>{t.focus(),t.selectionStart=t.selectionEnd=n+e.length}),0)}})(e)}))),(0,e.createElement)(ut,null,(0,e.createElement)("ul",null,xi.map((t=>(0,e.createElement)(vi,{key:t.key},t.render())))))),(0,e.createElement)(ki,{isBlock:!0,style:{flex:3,marginLeft:"unset"}},(0,e.createElement)(Ci,{className:"jet-control-clear",hideLabelFromVision:!0,value:null!==(t=i.to_set)&&void 0!==t?t:"",onChange:e=>m({to_set:e}),ref:c}))),(0,e.createElement)(_i,{options:Ni,value:null!==(n=i.frequency)&&void 0!==n?n:"on_change",label:bi("Apply type","jet-form-builder"),labelPosition:"side",onChange:e=>m({frequency:e}),help:u}),(0,e.createElement)(La,{state:e=>{var t;m({conditions:"function"==typeof e?e(null!==(t=i.conditions)&&void 0!==t?t:[]):e})}},(0,e.createElement)(hi,null,(0,e.createElement)(xa,{items:null!==(r=i.conditions)&&void 0!==r?r:[]},(0,e.createElement)(di,null))),(0,e.createElement)("div",{className:"jet-fb flex jc-space-between ai-center"},(0,e.createElement)(ya,null,bi("Add New Condition","jet-form-builder")),(0,e.createElement)(ji,{className:"jet-fb m-unset clear-control",label:bi("Set value only if field is empty","jet-form-builder"),checked:null!==(l=i.set_on_empty)&&void 0!==l&&l,onChange:e=>m({set_on_empty:e})}))))},{__:Ii}=wp.i18n,{Children:Bi,cloneElement:Ai}=wp.element,Oi=function({conditions:t,showWarning:n=!1}){let r=[],l="";return Boolean(t?.length)&&(l=pi(t[0]),r=t.filter(((e,t)=>0!==t)).map(((t,n)=>(0,e.createElement)("span",{key:n,"data-title":Ii("And","jet-form-builder")+":",dangerouslySetInnerHTML:{__html:pi(t)}})))),l?(0,e.createElement)(e.Fragment,null,(0,e.createElement)("span",{"data-title":Ii("If","jet-form-builder")+":",dangerouslySetInnerHTML:{__html:l}}),Bi.map(r,Ai)):n&&(0,e.createElement)("span",{"data-title":Ii("The condition is not fully configured.","jet-form-builder")})},Ri=function({isHover:t=!1,children:n}){return(0,e.createElement)("div",{className:["jet-fb",t?"show":"hide","p-absolute","wh-100","flex-center","gap-05em"].join(" "),style:{backgroundColor:"#ffffffcc",transition:"0.3s"}},n)},Mi=function({children:t}){return(0,e.createElement)("div",{className:["jet-fb","flex","flex-dir-column","container","gap-1em"].join(" ")},t)},{__:Pi}=wp.i18n,{useState:Gi}=wp.element,{Button:Li}=wp.components,Di=function({current:t,update:n,isOpenModal:r,setOpenModal:l}){const[o,a]=Gi(!1),[i,s]=Gi(!1),c=1>=Object.keys(t)?.length;return(0,e.createElement)(sa.Provider,{value:{update:e=>{n((n=>{const r=JSON.parse(JSON.stringify(n.groups));for(const n in r)r.hasOwnProperty(n)&&t.id===r[n].id&&(r[n]={...r[n],...e});return{groups:r}}))},current:t}},(0,e.createElement)("div",{className:"jet-fb p-relative",onMouseOver:()=>s(!0),onFocus:()=>s(!0),onMouseOut:()=>s(!1),onBlur:()=>s(!1)},(0,e.createElement)(Ri,{isHover:i},(0,e.createElement)(Li,{isSmall:!0,isSecondary:!0,icon:o?"no-alt":"edit",onClick:()=>a((e=>!e))},Pi("Edit","jet-form-builder")),(0,e.createElement)(Li,{isSmall:!0,isDestructive:!0,icon:"trash",onClick:()=>{n((e=>({groups:JSON.parse(JSON.stringify(e.groups)).filter((({id:e})=>e!==t.id))})))}},Pi("Delete","jet-form-builder"))),(0,e.createElement)(Mi,null,c?(0,e.createElement)("div",{"data-title":Pi("This value item is empty","jet-form-builder")}):(0,e.createElement)(e.Fragment,null,(0,e.createElement)("span",{"data-title":Pi("Set","jet-form-builder")+":",dangerouslySetInnerHTML:{__html:Lr(t.to_set)}}),(0,e.createElement)(Oi,{conditions:t?.conditions})))),(o||r===t.id)&&(0,e.createElement)(h,{classNames:["width-60"],onRequestClose:()=>{a(!1),l(!1)},title:Pi("Edit Dynamic Value","jet-form-builder")},(0,e.createElement)(Ti,null)))},qi=function({children:t,...n}){return(0,e.createElement)("div",{className:"jet-fb flex flex-dir-column gap-default",style:{marginBottom:"1em"},...n},t)},{__:Vi}=wp.i18n,{useState:Ji}=wp.element,{Button:$i}=wp.components,Ui=function(){var t,n;const[r,l]=fe(),o=de(),a=null!==(t=r.value)&&void 0!==t?t:{},i=null!==(n=a.groups)&&void 0!==n?n:[],[s,c]=Ji(!1);if(!he("value"))return null;const u=i.filter(((e,t)=>0!==t)),d=e=>{l({...r,value:{...a,..."function"==typeof e?e(a):e}})};return(0,e.createElement)(e.Fragment,null,(0,e.createElement)(ut,null,Vi("Or use a condition-dependent value","jet-form-builder")+" ",(0,e.createElement)($i,{isLink:!0,onClick:()=>{},label:Vi("Former Set Value functionality, moved from the Conditional Block","jet-form-builder"),showTooltip:!0},"(?)")),Boolean(i.length)?(0,e.createElement)(qi,null,(0,e.createElement)(Di,{key:o(i[0].id),current:i[0],update:d,isOpenModal:s,setOpenModal:c}),Boolean(u.length)&&u.map((t=>(0,e.createElement)(e.Fragment,null,(0,e.createElement)("b",null,Vi("OR","jet-form-builder")),(0,e.createElement)(Di,{key:o(t.id),current:t,update:d,isOpenModal:s,setOpenModal:c}))))):null,(0,e.createElement)($i,{icon:"plus-alt2",isSecondary:!0,onClick:()=>{const e=k.getRandomID();d({groups:[...i,{id:e,conditions:[{__visible:!0}]}]}),c(e)}},Vi("Add Dynamic Value","jet-form-builder")))},{Button:Hi}=wp.components,{useContext:Wi}=wp.element,{SelectControl:zi}=wp.components,{useContext:Yi,useMemo:Ki}=wp.element,{__:Xi}=wp.i18n,Zi=function(){const{currentItem:t,changeCurrentItem:n}=Yi(ra),r=Ki((()=>O(Xi("Custom value","jet-form-builder"))),[]);return(0,e.createElement)(zi,{labelPosition:"side",options:r,label:Xi("Choose field","jet-form-builder"),value:t.field,onChange:e=>n({field:e})})},{SelectControl:Qi,TextareaControl:es,TextControl:ts,withFilters:ns}=wp.components,{useContext:rs,useState:ls,useEffect:os}=wp.element,{__:as}=wp.i18n,{addFilter:is}=wp.hooks,{rule_types:ss,ssr_callbacks:cs}=window.jetFormValidation,us=cs.map((({value:e})=>e));function ds(e){var t;const n=ss.findIndex((({value:t})=>t===e)),r=as("Enter value","jet-form-builder");return-1===n?r:null!==(t=ss[n]?.control_label)&&void 0!==t?t:r}is("jet.fb.advanced.rule.controls","jet-form-builder",(t=>n=>{const{currentItem:r,changeCurrentItem:l}=n,[o,a]=ls(!1),[i]=(0,K.useActions)(),s=i.some((e=>"save_record"===e.type&&(void 0===e.is_execute||!0===e.is_execute)))?"success":"error";if("ssr"!==r.type)return(0,e.createElement)(t,{...n});const c=r.value||"custom_jfb_field_validation";return(0,e.createElement)(e.Fragment,null,(0,e.createElement)(Qi,{labelPosition:"side",options:k.withPlaceholder(cs,as("Custom function","jet-form-builder")),label:as("Choose callback","jet-form-builder"),value:r.value,onChange:e=>l({value:e})}),"is_field_value_unique"===r.value&&(0,e.createElement)(u.Notice,{status:s,isDismissible:!1},as("This callback requires the Save Form Record action to work correctly.","jet-form-builder")),"is_user_password_valid"===r.value&&(0,e.createElement)(u.Notice,{status:"success",isDismissible:!1},as("Works only for logged users.","jet-form-builder")),!us.includes(r.value)&&(0,e.createElement)(e.Fragment,null,(0,e.createElement)(ts,{label:as("Function name","jet-form-builder"),value:r.value,onChange:e=>l({value:e})}),(0,e.createElement)(ut,null,as("Example of registering a function below.","jet-form-builder")+" ",(0,e.createElement)("a",{href:"javascript:void(0)",onClick:()=>a((e=>!e))},as(o?"Hide":"Show","jet-form-builder"))),o&&(0,e.createElement)("pre",null,`/**\n * To get all the values of the fields in the form, you can use the expression:\n * jet_fb_request_handler()->get_request() or $context->get_request()\n *\n * If the field is located in the middle of the repeater, then only\n * jet_fb_request_handler()->get_request(), but $context->get_request() \n * will return the values of all fields of the current repeater element\n *\n * @param $value mixed\n * @param $context \\Jet_Form_Builder\\Request\\Parser_Context\n *\n * @return bool\n */\nfunction ${c}( $value, $context ): bool {\n\t// your logic\n\treturn true;\n}`)))}));const ms=ns("jet.fb.advanced.rule.controls")((function({currentItem:t,changeCurrentItem:n}){const[r,l]=ls((()=>ds(t.type)));switch(os((()=>{l(ds(t.type))}),[t.type]),t.type){case"equal":case"contain":case"contain_not":case"regexp":case"regexp_not":return(0,e.createElement)(e.Fragment,null,(0,e.createElement)(Zi,null),!Boolean(t.field)&&(0,e.createElement)(Qa,{value:t.value,label:r,onChangePreset:e=>n({value:e}),onChangeMacros:e=>{var r;return n({value:(null!==(r=t.value)&&void 0!==r?r:"")+e})}},(({instanceId:r})=>(0,e.createElement)(es,{id:r,value:t.value,onChange:e=>n({value:e})}))));default:return null}})),ps=function(){const{currentItem:t,changeCurrentItem:n}=rs(ra);return(0,e.createElement)(e.Fragment,null,(0,e.createElement)(Qi,{labelPosition:"side",options:k.withPlaceholder(ss),label:as("Rule type","jet-form-builder"),value:t.type,onChange:e=>n({type:e})}),(0,e.createElement)(ms,{currentItem:t,changeCurrentItem:n}),(0,e.createElement)(es,{label:as("Error message","jet-form-builder"),value:t.message,onChange:e=>n({message:e})}))},{select:fs}=wp.data,hs=function(e){return fs("jet-forms/validation").readRule(e)},{useState:bs}=wp.element,{__:gs}=wp.i18n,ys=function(){const[t,n]=fe(),[r,l]=bs((()=>{var e;return null!==(e=t.validation?.rules)&&void 0!==e?e:[]}));return W((()=>{n((e=>({...e,validation:{...t.validation,rules:r}})))})),(0,e.createElement)(La,{state:l},(0,e.createElement)(oa.Provider,{value:{isSupported:()=>!0,render:({currentItem:t})=>(0,e.createElement)("span",{className:"repeater-item-title",dangerouslySetInnerHTML:{__html:hs(t)}})}},(0,e.createElement)(xa,{items:r},(0,e.createElement)(ps,null))),(0,e.createElement)(ya,null,gs("Add Rule","jet-form-builder")))},{createContext:vs}=wp.element,ws=vs({showModal:!1,setShowModal:()=>{}}),{useContext:Es,useState:_s}=wp.element,{__:Cs}=wp.i18n,{Button:ks}=wp.components,Ss=function(){const{setShowModal:t}=Es(ws),[n,r]=fe(),[l,o]=_s(!1);return(0,e.createElement)("div",{className:"jet-fb p-relative",onMouseOver:()=>o(!0),onFocus:()=>o(!0),onMouseOut:()=>o(!1),onBlur:()=>o(!1)},(0,e.createElement)(Ri,{isHover:l},(0,e.createElement)(ks,{isSmall:!0,isSecondary:!0,icon:"plus-alt2",onClick:()=>{r({validation:{...n.validation,rules:[{__visible:!0}]}}),t((e=>!e))}},Cs("Add new","jet-form-builder"))),(0,e.createElement)(Mi,null,(0,e.createElement)("span",{"data-title":Cs("You have no rules for this field.","jet-form-builder")}),(0,e.createElement)("span",{"data-title":Cs("Please click here to add new.","jet-form-builder")})))},{__:js}=wp.i18n,xs=function({rule:t}){return t.type?(0,e.createElement)(e.Fragment,null,(0,e.createElement)("span",{"data-title":js("Rule:","jet-form-builder"),dangerouslySetInnerHTML:{__html:hs(t)}}),Boolean(t.message)&&(0,e.createElement)("span",{"data-title":js("Message:","jet-form-builder"),dangerouslySetInnerHTML:{__html:t.message}})):(0,e.createElement)("span",{"data-title":js("The rule is not fully configured.","jet-form-builder")})},{useContext:Ns,useState:Fs}=wp.element,{__:Ts}=wp.i18n,{Button:Is}=wp.components,Bs=function({rule:t,index:n=0}){const{setShowModal:r}=Ns(ws),[l,o]=fe(),[a,i]=Fs(!1);return(0,e.createElement)("div",{className:"jet-fb p-relative",onMouseOver:()=>i(!0),onFocus:()=>i(!0),onMouseOut:()=>i(!1),onBlur:()=>i(!1)},(0,e.createElement)(Ri,{isHover:a},(0,e.createElement)(Is,{isSmall:!0,isSecondary:!0,icon:"edit",onClick:()=>{o({validation:{...l.validation,rules:l.validation.rules.map(((e,t)=>(e.__visible=n===t,e)))}}),r((e=>!e))}},Ts("Edit","jet-form-builder")),(0,e.createElement)(Is,{isSmall:!0,isDestructive:!0,icon:"trash",onClick:()=>{o({validation:{...l.validation,rules:l.validation.rules.filter(((e,t)=>t!==n))}})}},Ts("Delete","jet-form-builder"))),(0,e.createElement)(Mi,null,(0,e.createElement)(xs,{rule:t})))},{__:As}=wp.i18n,{Children:Os,cloneElement:Rs}=wp.element;const Ms=function(){const[t]=fe();return t?.validation?.rules?.length?(0,e.createElement)(qi,null,Os.map(function(t){const n=t.filter(((e,t)=>0!==t));return[(0,e.createElement)(Bs,{rule:t[0],key:"first_item"}),...n.map(((t,n)=>((t,n)=>(0,e.createElement)(e.Fragment,null,(0,e.createElement)("b",null,As("AND","jet-form-builder")),(0,e.createElement)(Bs,{rule:t,index:n})))(t,n+1)))]}(t.validation.rules),Rs)):(0,e.createElement)(Ss,null)},{useState:Ps}=wp.element,{__:Gs}=wp.i18n,{useBlockProps:Ls}=wp.blockEditor,{TextControl:Ds,SelectControl:qs,ToggleControl:Vs,BaseControl:Js,__experimentalNumberControl:$s}=wp.components;let{NumberControl:Us}=wp.components;void 0===Us&&(Us=$s);const{FormToggle:Hs,BaseControl:Ws,Flex:zs}=wp.components,{useInstanceId:Ys}=wp.compose,{useBlockProps:Ks}=wp.blockEditor,{useEffect:Xs}=wp.element,{useSelect:Zs}=wp.data,{useBlockProps:Qs}=wp.blockEditor,{useSelect:ec}=wp.data,{CustomSelectControl:tc,Icon:nc}=wp.components,{useBlockEditContext:rc}=wp.blockEditor,{Children:lc,cloneElement:oc,useContext:ac}=wp.element,{useSelect:ic}=wp.data,{useBlockEditContext:sc}=wp.blockEditor;let{__experimentalToggleGroupControl:cc,__experimentalToggleGroupControlOptionIcon:uc,__experimentalToolbarContext:dc,ToggleGroupControl:mc,ToggleGroupControlOptionIcon:pc,ToolbarItem:fc,ToolbarGroup:hc,ToolbarContext:bc}=wp.components;function gc({value:t}){const{name:n}=sc(),r=ac(bc),[,l]=fe(),{variations:o,components:a}=ic((t=>{const{getBlockVariations:l}=t("core/blocks"),o=l(n,"block");return{variations:o,components:o.map((t=>{var n;return(null!==(n=r?.currentId)&&void 0!==n?n:r?.baseId)?(0,e.createElement)(fc,{key:t.name,as:pc,value:t.name,label:t.title,icon:t.icon}):(0,e.createElement)(pc,{key:t.name,value:t.name,label:t.title,icon:t.icon})}))}}),[]);return o.length?(0,e.createElement)("div",{className:"jfb-variations-toolbar-toggle"},(0,e.createElement)(mc,{hideLabelFromVision:!0,onChange:e=>l({...o.find((({name:t})=>t===e)).attributes}),value:t,isBlock:!0},lc.map(a,oc))):null}mc=mc||cc,pc=pc||uc,bc=bc||dc;const{useSelect:yc}=wp.data,{useBlockEditContext:vc}=wp.blockEditor,{get:wc}=window._,{useBlockProps:Ec,RichText:_c}=wp.blockEditor,{Button:Cc}=wp.components,{createContext:kc}=wp.element,Sc=kc({}),{useContext:jc}=wp.element,{useState:xc}=wp.element,{get:Nc}=window._,{useSelect:Fc,useDispatch:Tc}=wp.data;var Ic,Bc,Ac;window.JetFBComponents={...null!==(Ic=window?.JetFBComponents)&&void 0!==Ic?Ic:{},BaseLabel:yn,ActionFieldsMap:function({fields:t=[],label:n="[Empty label]",children:a=null,plainHelp:i="",customHelp:s=!1}){return(0,e.createElement)(l.RowControl,{align:"flex-start"},(0,e.createElement)(l.Label,null,n),(0,e.createElement)(l.RowControlEnd,null,s&&"function"==typeof s&&s(),Boolean(i.length)&&(0,e.createElement)("span",{className:"description-controls"},i),t.map((([t,n],l)=>(0,e.createElement)(o.Fragment,{key:`field_in_map_${t+l}`},(0,e.createElement)(r.Provider,{value:{name:t,data:n,index:l}},"function"==typeof a?a({fieldId:t,fieldData:n,index:l}):a))))))},ActionModal:h,ActionModalContext:i,SafeDeleteContext:ta,RepeaterItemContext:ra,RepeaterBodyContext:la,RepeaterHeadContext:oa,RepeaterButtonsContext:aa,ActionFieldsMapContext:r,CurrentPropertyMapContext:Ga,BlockValueItemContext:sa,DynamicPropertySelect:function({dynamic:t=[],parseValue:n=null,children:a=null,properties:i=null}){const{source:s,settings:c,setMapField:u}=(0,o.useContext)(K.CurrentActionEditContext);i=null!=i?i:s.properties;const{name:d,index:m}=(0,o.useContext)(r),{fields_map:p={}}=c;function f(e){var r;for(const t of i)if(e===t.value)return e;return n?n(e):null!==(r=t[0])&&void 0!==r?r:""}const[h,b]=(0,o.useState)((()=>{var e;return f(null!==(e=p[d])&&void 0!==e?e:"")})),g=(0,e.createElement)(l.StyledSelectControl,{key:d+m,value:h,options:i,help:(()=>{var e;const t=i.find((({value:e})=>e===h));return null!==(e=t?.help)&&void 0!==e?e:""})(),onChange:e=>{const n=f(e);b(n),u({nameField:d,value:t.includes(e)?"":e})}});return(0,e.createElement)(Ga.Provider,{value:{FieldSelect:g,property:h}},a&&a,!a&&g)},SafeDeleteToggle:function(t){const[n,r]=da(!0);return(0,e.createElement)(e.Fragment,null,(0,e.createElement)(ca,{label:ua("Safe deleting","jet-form-builder"),checked:n,onChange:r}),(0,e.createElement)(ta.Provider,{value:n},t.children))},RepeaterAddNew:ya,RepeaterAddOrOperator:function(t){var n;const{onSetState:r,functions:l,children:o}=t,{addNewItem:a}=null!==(n=null!=l?l:pa(r))&&void 0!==n?n:Wi(ha);return(0,e.createElement)(Hi,{isSecondary:!0,icon:"randomize",onClick:()=>a({__visible:!1,or_operator:!0})},o)},Repeater:xa,WrapperRequiredControl:function({children:t,labelKey:n="label",requiredKey:l="required",helpKey:o="help",field:a=[]}){let{name:i,data:s}=g(r);return a.length&&([i,s]=a),(0,e.createElement)("div",{className:"jet-user-meta__row",key:"user_meta_"+i},(0,e.createElement)("div",{className:"jet-field-map__row-label"},(0,e.createElement)("span",{className:"fields-map__label"},s.hasOwnProperty(n)&&s[n]&&s[n],!s.hasOwnProperty(n)&&s),s.hasOwnProperty(l)&&s[l]&&(0,e.createElement)("span",{className:"fields-map__required"}," *"),s[o]&&(0,e.createElement)("p",{className:"components-base-control__help",style:{color:"rgb(117, 117, 117)",margin:"1em 0 0 0"}},(0,e.createElement)(b,null,s[o]))),t)},DynamicPreset:Ie,JetFieldsMapControl:Re,FieldWithPreset:function({children:t=null,ModalEditor:n,triggerClasses:r=[],baseControlProps:l={}}){const[o,a]=Le(!1),i=()=>{a((e=>!e))},s=["jet-form-dynamic-preset__trigger",...r].join(" ");return(0,e.createElement)(e.Fragment,null,(0,e.createElement)(Ge,{className:"jet-form-dynamic-preset",...l},t,(0,e.createElement)("div",{className:s,onClick:i},(0,e.createElement)(Pe,{viewBox:"0 0 54 64",fill:"none",xmlns:"http://www.w3.org/2000/svg"},(0,e.createElement)(Me,{d:"M42.6396 26.4347C37.8682 27.3436 32.5666 28.0252 27.1894 28.0252C21.8121 28.0252 16.4348 27.3436 11.7391 26.4347C6.96774 25.4502 3.18093 23.8597 0.37868 21.9663L0.37868 28.0252C0.37868 29.5399 1.59046 31.1304 3.78682 32.4179C5.98317 33.7054 9.46704 34.9172 13.6325 35.5988C17.798 36.2805 22.115 36.8106 27.1894 36.8106C32.2637 36.8106 36.6564 36.5077 40.7462 35.5988C44.8359 34.69 48.3198 33.7054 50.5162 32.4179C52.7125 31.1304 54 29.5399 54 28.0252L54 21.9663C51.122 23.8597 47.3352 25.4502 42.6396 26.4347ZM42.6396 53.5484C37.8682 54.5329 32.5666 55.1388 27.1894 55.1388C21.8121 55.1388 16.4348 54.5329 11.7391 53.5484C7.04348 52.5638 3.18093 51.0491 0.378682 49.1556L0.378682 55.1388C0.378683 56.7293 1.59046 58.3197 3.78682 59.5315C6.36186 60.819 9.46705 62.1066 13.6325 62.7125C17.7223 63.697 22.115 64 27.1894 64C32.2637 64 36.6564 63.697 40.7462 62.7125C44.8359 61.8036 48.3198 60.819 50.5162 59.5315C52.7125 57.9411 54 56.7293 54 54.8359L54 48.8527C51.122 51.0491 47.3352 52.2608 42.6396 53.5484ZM42.6396 39.9915C37.8682 40.9004 32.5666 41.582 27.1894 41.582C21.8121 41.582 16.4348 40.9004 11.7391 39.9915C6.96774 39.007 3.18093 37.4922 0.378681 35.5988L0.378681 41.582C0.378681 43.1725 1.59046 44.6872 3.78682 45.9747C6.36185 47.2622 9.46705 48.474 13.6325 49.1556C17.7223 50.0645 22.115 50.3674 27.1894 50.3674C32.2637 50.3674 36.6564 50.0645 40.7462 49.1556C44.8359 48.1711 48.3198 47.2622 50.5162 45.9747C52.7125 44.3843 54 43.1725 54 41.582L54 35.5988C51.122 37.4922 47.3352 39.007 42.6396 39.9915ZM40.4432 2.12337C36.3535 1.13879 31.885 0.835848 26.8864 0.835849C21.8878 0.835849 17.4194 1.13879 13.2539 2.12337C9.08836 3.10794 5.68022 4.01678 3.48387 5.3043C1.28751 6.59181 -3.4782e-06 8.10654 -3.33916e-06 9.697L-2.95513e-06 14.0897C-2.81609e-06 15.6802 1.28752 17.2706 3.48387 18.5582C6.05891 19.7699 9.1641 21.0575 13.2539 21.6633C17.3436 22.2692 21.8121 22.9509 26.8864 22.9509C31.9607 22.9509 36.3535 22.9509 40.4432 22.345C44.533 21.7391 48.0169 20.4516 50.2132 19.164C52.7125 17.5736 54 15.9831 54 14.3927L54 9.99995C54 8.40948 52.7125 6.81902 50.5162 5.60724C48.3198 4.39546 44.533 2.72926 40.4432 2.12337Z",fill:"#7E8993"})))),o&&(0,e.createElement)(h,{onRequestClose:i,classNames:["width-60"],title:"Edit Preset"},(t=>(0,e.createElement)(n,{...t}))))},GlobalField:ye,AvailableMapField:function({fieldsMap:t,field:n,index:r,value:a,onChangeValue:i,isMapFieldVisible:s}){let c=null;t||(t={}),c=t[n],c&&"object"==typeof c||(c={});const d=({field:t,name:n,index:r,fIndex:o,children:a})=>(0,e.createElement)(u.Card,{key:t+n+r+o,size:"extraSmall",style:{marginBottom:"10px"}},(0,e.createElement)(u.CardHeader,null,(0,e.createElement)("span",{className:"jet-label-overflow"},t)),(0,e.createElement)(l.StyledCardBodyControl,{key:t+n+r+o,className:"jet-form-preset__fields-map-item"},a));return(0,e.createElement)(o.Fragment,{key:`map_field_preset_${n+r}`},window.JetFormEditorData.presetConfig.map_fields.map(((o,m)=>{const p={field:n,name:o.name,index:r,fIndex:m},f="control_"+n+o.name+r+m;switch(o.type){case"text":return s(a,o,n)&&function({field:t,name:n,index:r,fIndex:o},a){return(0,e.createElement)(u.Card,{key:t+n+r+o,size:"extraSmall",style:{marginBottom:"10px"}},(0,e.createElement)(u.CardHeader,null,(0,e.createElement)("span",{className:"jet-label-overflow"},t)),(0,e.createElement)(l.StyledCardBodyControl,{key:t+n+r+o,className:"jet-form-preset__fields-map-item"},a))}(p,(0,e.createElement)(l.StyledTextControl,{key:f+"TextControl",placeholder:o.label,value:c[o.name],onChange:e=>{c[o.name]=e,i({...t,[n]:c},"fields_map")}}));case"select":return s(a,o,n)&&(0,e.createElement)(d,{...p,key:f},(0,e.createElement)(l.StyledSelectControl,{options:o.options,value:c[o.name],onChange:e=>{c[o.name]=e,i({...t,[n]:c},"fields_map")}}));case"custom_select":return s(a,o,n)&&(0,e.createElement)(d,{...p,key:f},(0,e.createElement)(u.CustomSelectControl,{options:o.options,onChange:({selectedItem:e})=>{c[o.name]=e.key,i({...t,[n]:c},"fields_map")},value:o.options.find((e=>e.key===c[o.name]))}));case"grouped_select":return s(a,o,n)&&(0,e.createElement)(d,{...p,key:f},(0,e.createElement)(je,{options:o.options,value:c[o.name],onChange:e=>{c[o.name]=e,i({...t,[n]:c},"fields_map")}}));default:return null}})))},MapField:xe,FieldWrapper:function(t){const{attributes:n,children:r,wrapClasses:l=[],valueIfEmptyLabel:o="",setAttributes:a,childrenPosition:i="between"}=t,s=de(),c=H("_jf_args"),u=Xe((function(){We(n,a)}));function d(){return(0,e.createElement)(ze.VisualLabel,null,Qe(Ze("input label:","jet-form-builder")),(0,e.createElement)("div",{className:"jet-form-builder__label"},(0,e.createElement)(Ye,{key:s("rich-label"),placeholder:"Label...",allowedFormats:[],value:n.label?n.label:o,onChange:e=>a({label:e}),isSelected:!1,...u}),n.required&&(0,e.createElement)("span",{className:"jet-form-builder__required"},c.required_mark?c.required_mark:"*")))}function m(){return(0,e.createElement)("div",{className:"jet-form-builder__desc--wrapper"},Qe(Ze("input description:","jet-form-builder")),(0,e.createElement)(ze,{key:"custom_help_description",className:"jet-form-builder__desc"},(0,e.createElement)("div",{className:"components-base-control__help"},(0,e.createElement)(Ye,{key:s("rich-description"),tagName:"small",placeholder:"Description...",allowedFormats:[],value:n.desc,onChange:e=>a({desc:e}),style:{marginTop:"0px"}}))))}return"row"===c.fields_layout&&l.push("jet-form-builder-row__flex"),(0,e.createElement)(ze,{key:s("placeHolder_block"),className:_("jet-form-builder__field-wrap","jet-form-builder-row",l)},"row"!==c.fields_layout&&(0,e.createElement)(e.Fragment,null,"top"===i&&r,d(),"between"===i&&r,m(),"bottom"===i&&r),"row"===c.fields_layout&&(0,e.createElement)(e.Fragment,null,(0,e.createElement)("div",{className:"jet-form-builder-row__flex--label"},d(),m()),(0,e.createElement)("div",{className:"jet-form-builder-row__flex--content"},r)))},MacrosInserter:function({children:t,fields:n,onFieldClick:r,customMacros:l,zIndex:o=1e6,...a}){const[i,s]=rt((()=>!1));return(0,e.createElement)("div",{className:"jet-form-editor__macros-inserter"},(0,e.createElement)(et,{isTertiary:!0,isSmall:!0,icon:i?"no-alt":"admin-tools",label:"Insert macros",className:"jet-form-editor__macros-trigger",onClick:()=>{s((e=>!e))}}),i&&(0,e.createElement)(tt,{style:{zIndex:o},position:"bottom left",...a},n.length&&(0,e.createElement)(nt,{title:"Form Fields"},n.map((t=>(0,e.createElement)("div",{key:"field_"+t.name},(0,e.createElement)(et,{isLink:!0,onClick:()=>{r(t.name)}},"%"+t.name+"%"))))),l&&(0,e.createElement)(nt,{title:"Custom Macros"},l.map((t=>(0,e.createElement)("div",{key:"macros_"+t},(0,e.createElement)(et,{isLink:!0,onClick:()=>{r(t)}},"%"+t+"%")))))))},RepeaterWithState:function({children:t,ItemHeading:n,repeaterClasses:r=[],repeaterItemClasses:l=[],newItem:a,addNewButtonLabel:i="Add New",items:s=[],isSaveAction:c,onSaveItems:m,onUnMount:p,onAddNewItem:f,onRemoveItem:h,help:b={helpSource:{},helpVisible:()=>!1,helpKey:""},additionalControls:g=null}){const y=["jet-form-builder__repeater-component",...r].join(" "),v=["jet-form-builder__repeater-component-item",...l].join(" "),[w,E]=(0,o.useState)([]);(0,o.useEffect)((()=>{E(s&&s.length>0?s.map((e=>(e.__visible=!1,e))):[{...a,__visible:!0}])}),[]);const[_,C]=(0,o.useState)(!0),k=(e,t)=>{E((n=>{const r=JSON.parse(JSON.stringify(n));return r[t]={...n[t],...e},r}))},S=({oldIndex:e,newIndex:t})=>{E((n=>{const r=JSON.parse(JSON.stringify(n));return[r[t],r[e]]=[r[e],r[t]],r}))},j=e=>!(e{if(!0===c){for(const e in w)for(const t in w[e])t.startsWith("__")&&delete w[e][t];m(w),p()}else!1===c&&p()}),[c]);const x=e=>`jet-form-builder-repeater__item_${e}`,{helpSource:N,helpVisible:F,helpKey:T}=b,I=F(w)&&N&&N[T];return(0,e.createElement)("div",{className:y,key:"jet-form-builder-repeater"},I&&(0,e.createElement)("p",null,N[T].label),0(0,e.createElement)(u.Card,{elevation:2,className:v,key:x(l)},(0,e.createElement)(u.CardHeader,{className:"repeater__item__header"},(0,e.createElement)("div",{className:"repeater-item__left-heading"},(0,e.createElement)(u.ButtonGroup,{className:"repeater-action-buttons"},(0,e.createElement)(u.Button,{isSmall:!0,icon:r.__visible?"no-alt":"edit",onClick:()=>(e=>{E((t=>{const n=JSON.parse(JSON.stringify(t));return n[e].__visible=!n[e].__visible,n}))})(l),className:"repeater-action-button"}),(0,e.createElement)(u.Button,{isSmall:!0,isSecondary:!0,disabled:!Boolean(l),icon:"arrow-up-alt2",onClick:()=>(e=>{S({oldIndex:e,newIndex:e-1})})(l),className:"repeater-action-button"}),(0,e.createElement)(u.Button,{isSmall:!0,isSecondary:!0,disabled:j(l),icon:"arrow-down-alt2",onClick:()=>(e=>{S({oldIndex:e,newIndex:e+1})})(l),className:"repeater-action-button"})),(0,e.createElement)("span",{className:"repeater-item-title"},n&&(0,e.createElement)(n,{currentItem:r,index:l,changeCurrentItem:e=>k(e,l)}),!n&&`#${l+1}`)),(0,e.createElement)(u.ButtonGroup,null,(0,e.createElement)(u.Button,{isSmall:!0,isSecondary:!0,onClick:()=>(e=>{E((t=>{const n=JSON.parse(JSON.stringify(t)),[r,l]=[n.slice(0,e+1),n.slice(e+1)];return[...r,n[e],...l]}))})(l)},(0,d.__)("Clone","jet-form-builder")),(0,e.createElement)(u.Button,{isSmall:!0,isSecondary:!0,isDestructive:!0,onClick:()=>(e=>{_&&!(e=>confirm((0,d.sprintf)((0,d.__)("Are you sure you want to remove item %d?","jet-form-builder"),e+1)))(e)||h&&!h(e,w)||E((t=>{const n=JSON.parse(JSON.stringify(t));return n.splice(e,1),n}))})(l)},(0,d.__)("Delete","jet-form-builder")))),r.__visible&&(0,e.createElement)(u.CardBody,{className:"repeater-item__content"},t&&(0,e.createElement)(o.Fragment,{key:`repeater-component__item_${l}`},"function"==typeof t&&t({currentItem:r,changeCurrentItem:e=>k(e,l),currentIndex:l}),"function"!=typeof t&&t),!t&&"Set up your Repeater Template, please.")))),1{return e=a,f&&f(e,w),void E((t=>[...t,{...e,__visible:!0}]));var e}},i))},AdvancedFields:function(){return(0,e.createElement)(kt,null,(0,e.createElement)(at,null),(0,e.createElement)(ct,null),(0,e.createElement)(gt,null),(0,e.createElement)(wt,null),(0,e.createElement)(Ct,null))},GeneralFields:function({hasMacro:t=!0}){return(0,e.createElement)(On,{title:Rn("General","jet-form-builder"),key:"jet-form-general-fields"},(0,e.createElement)(Ft,null),(0,e.createElement)(Pt,null),(0,e.createElement)(Dt,null),(0,e.createElement)(An,{hasMacro:t}))},ToolBarFields:function({children:t=null}){return(0,e.createElement)(e.Fragment,null,(0,e.createElement)(Vn,null,t),(0,e.createElement)(zn,null))},FieldControl:function(t){const{setAttributes:n,attributes:r}=t,l=function({type:e,attributes:t,attrsSettings:n={}}){const r=Ls()["data-type"],l=er();return l[e]?l[e].attrs.filter((({attrName:e,label:l,...o})=>{const a=e in t,i=(e=>{if(!e.condition)return!0;if(r&&e.condition.blockName){if("string"==typeof e.condition.blockName&&r!==e.condition.blockName)return!1;if("object"==typeof e.condition.blockName&&e.condition.blockName.length&&!e.condition.blockName.includes(r))return!1}return!(!function(){if("object"!=typeof e.condition.attr)return!0;const{operator:n="and",items:r={}}=e.condition.attr;if("or"===n.toLowerCase())for(const e in r)if(r[e]===t[e])return!0;return"and"!==n.toLowerCase()||function(){for(const e in r)if(r[e]!==t[e])return!1;return!0}()}()||"string"==typeof e.condition.attr&&e.condition.attr&&!t[e.condition.attr]||"string"==typeof e.condition&&!t[e.condition])})(o),s=e in n&&"show"in n[e]&&!1===n[e].show;return a&&i&&!s})):[]}(t),o=(e,t)=>{n({[t]:e})};return l.map((({help:t="",attrName:n,label:l,...a})=>{switch(a.type){case"text":return(0,e.createElement)(Ds,{key:`${a.type}-${n}-TextControl`,label:l,help:t,value:r[n],onChange:e=>o(e,n)});case"select":return(0,e.createElement)(qs,{key:`${a.type}-${n}-SelectControl`,label:l,help:t,value:r[n],options:a.options,onChange:e=>{o(e,n)}});case"toggle":return(0,e.createElement)(Vs,{key:`${a.type}-${n}-ToggleControl`,label:l,help:t,checked:r[n],onChange:e=>{o(e,n)}});case"number":return(0,e.createElement)(Js,{key:`${a.type}-${n}-BaseControl`,label:l},(0,e.createElement)(Us,{key:`${a.type}-${n}-NumberControl`,value:r[n],onChange:e=>{o(Number(e),n)}}),(0,e.createElement)("p",{className:"components-base-control__help",style:{color:"rgb(117, 117, 117)"}},t));default:return null}}))},HorizontalLine:function(t){return(0,e.createElement)("hr",{style:{...t}})},FieldSettingsWrapper:function(t){const{title:n,children:r}=t,l=Zn()["data-type"].replace("/","-"),o=Xn(`jet.fb.render.settings.${l}`,null);return(r||o)&&(0,e.createElement)(Kn,{title:n||Yn("Field","jet-form-builder")},r,o)},GroupedSelectControl:je,BaseHelp:ut,GatewayFetchButton:nr,ValidationToggleGroup:function({excludeBrowser:t=!1}){var n;const[r,l]=fe(),o=de();return Ia=Ia.filter((({value:e})=>"browser"!==e||!t)),(0,e.createElement)(Na,{onChange:e=>l((t=>({...t,validation:{...r.validation,type:e}}))),value:null!==(n=r.validation?.type)&&void 0!==n?n:"inherit",label:Ta("Validation type","jet-form-builder"),isBlock:!0,isAdaptiveWidth:!1},(0,e.createElement)(Fa,{label:Ta("Inherit","jet-form-builder"),value:"inherit","aria-label":Ta("Inherit from form's args","jet-form-builder"),showTooltip:!0}),Ia.map((t=>(0,e.createElement)(Fa,{key:o(t.value+"_key"),label:t.label,value:t.value,"aria-label":t.title,showTooltip:!0}))))},ValidationBlockMessage:function({name:t}){var n,r,l;const o=de(),[a,i]=fe(),[s]=(0,Ba.useMetaState)("_jf_validation","{}",[]),c=!a.validation?.type,u=c?null!==(n=s?.messages)&&void 0!==n?n:{}:null!==(r=a.validation?.messages)&&void 0!==r?r:{},d=Oa(t);return(0,e.createElement)(e.Fragment,null,(0,e.createElement)(Ra,{disabled:c,key:o("massage_"+t),label:d?.label,help:d?.help,value:null!==(l=u[t])&&void 0!==l?l:d?.initial,onChange:e=>i((n=>({...n,validation:{...a.validation,messages:{...u,[t]:e}}})))}))},ValidationMetaMessage:function({message:t,update:n,value:r=null,help:o=null}){const a=Oa(t.id);return(0,e.createElement)(l.StyledFlexControl,{direction:"column"},(0,e.createElement)(u.Flex,null,(0,e.createElement)(l.Label,{htmlFor:t.id},a.label),(0,e.createElement)(u.Flex,{style:{width:"auto"}},t.blocks.map((t=>(0,e.createElement)(u.Tooltip,{key:"message_block_item"+t.title,text:t.title,delay:200,placement:"top"},(0,e.createElement)(Ma,{icon:t.icon})))))),(0,e.createElement)(l.StyledTextControl,{className:l.ClearBaseControlStyle,id:t.id,help:null!=o?o:a?.help,value:null!=r?r:a?.initial,onChange:e=>n((n=>({...n,[t.id]:e})))}))},DynamicValues:Ui,EditAdvancedRulesButton:function(){const[t,n]=Ps(!1);return(0,e.createElement)(e.Fragment,null,(0,e.createElement)(ws.Provider,{value:{showModal:t,setShowModal:n}},(0,e.createElement)("div",{className:"jet-fb mb-24"},(0,e.createElement)(Ms,null))),t&&(0,e.createElement)(h,{title:Gs("Edit Advanced Rules","jet-form-builder"),classNames:["width-60"],onRequestClose:()=>n(!1)},(0,e.createElement)(ys,null)))},RepeaterStateContext:ha,RepeaterState:La,BlockLabel:Ft,BlockName:Pt,BlockDescription:Dt,BlockDefaultValue:An,BlockPlaceholder:at,BlockAddPrevButton:ct,BlockPrevButtonLabel:gt,BlockVisibility:wt,BlockClassName:Ct,BlockAdvancedValue:function({help:t,label:n,hasMacro:r=!0,...l}){return(0,e.createElement)("div",{...l},(0,e.createElement)(An,{help:t,label:n,hasMacro:r}),(0,e.createElement)("hr",null),(0,e.createElement)(Ui,null))},MacrosFields:bn,MacrosButtonTemplate:zt,MacrosFieldsTemplate:dn,ShowPopoverContext:Jt,PopoverItem:Zt,PresetButton:qt,ConditionItem:di,AdvancedInspectorControl:En,AdvancedModalControl:Qa,ClientSideMacros:xn,ToggleControl:function t({checked:n=!1,disabled:r=!1,onChange:l=()=>{},children:o=null,help:a=null,flexLabelProps:i={},outsideLabel:s=null,__nextHasNoMarginBottom:c=!1,...u}){const d=a,m=`inspector-jfb-toggle-control-${Ys(t)}`;return(0,e.createElement)(Ws,{id:m},(0,e.createElement)(zs,{direction:"column"},(0,e.createElement)(zs,{gap:3,align:"flex-start",justify:"flex-start",...i},(0,e.createElement)(Hs,{id:m,checked:n,onChange:e=>l(e.target.checked),disabled:r,...u}),(0,e.createElement)("label",{htmlFor:m},o),s),"string"==typeof d?(0,e.createElement)(ut,null,d):d&&(0,e.createElement)(d,null)))},DetailsContainer:Mi,HoverContainer:Ri,ContainersList:qi,HumanReadableConditions:Oi,ConditionsRepeaterContextProvider:hi,ServerSideMacros:function({children:t}){const n=(0,K.useRequestFields)();return(0,e.createElement)(Kt.Provider,{value:{afterFields:n}},t)},SelectVariations:function({value:t}){const{name:n}=rc(),[,r]=fe(),{variations:l,rawVariations:o}=ec((t=>{const{getBlockVariations:r}=t("core/blocks"),l=r(n,"block"),o=[],a={};for(const t of l)o.push({key:t.name,name:(0,e.createElement)("span",{className:"jet-fb flex gap-1em ai-center"},(0,e.createElement)(nc,{icon:t.icon}),t.title)}),a[t.name]=t;return{variations:o,rawVariations:a}}),[n]);return l.length?(0,e.createElement)(tc,{__nextUnconstrainedWidth:!0,hideLabelFromVision:!0,options:l,size:"__unstable-large",onChange:({selectedItem:e})=>r({...o[e.key].attributes}),value:l.find((({key:e})=>e===t))}):null},ToggleGroupVariations:function(t){const n=ac(bc);return n?.currentId?(0,e.createElement)(hc,{className:"jet-fb toggle-toolbar-group"},(0,e.createElement)(gc,{...t})):(0,e.createElement)(gc,{...t})},AttributeHelp:ft,ActionButtonPlaceholder:function(t){const n=Ec();return(0,e.createElement)("div",{...n},(0,e.createElement)("div",{className:t.wrapperClasses.join(" ")},(0,e.createElement)(Cc,{isPrimary:!0,className:t.buttonClasses.join(" ")},(0,e.createElement)(_c,{placeholder:"Input Submit label...",allowedFormats:[],value:t.attributes.label,onChange:e=>t.setAttributes({label:e})}))))},ActionModalFooterSlotFill:c,ScopedAttributesProvider:function({children:t}){const[n,r]=fe(),[l,o]=xc((()=>n));return(0,e.createElement)(Sc.Provider,{value:{realAttributes:n,setRealAttributes:r,attributes:l,setAttributes:o}},t)}},window.JetFBActions={...null!==(Bc=window?.JetFBActions)&&void 0!==Bc?Bc:{},withPreset:ge,getInnerBlocks:R,getAvailableFieldsString:function(e){const t=T([e]),n=[];return t.forEach((function(e){n.push("%FIELD::"+e+"%")})),I("Available fields: ","jet-form-builder")+n.join(", ")},getAvailableFields:T,getFormFieldsBlocks:F,getFieldsWithoutCurrent:O,gatewayAttr:P,gatewayLabel:G,registerGateway:function(e,t,n="cred"){window.JetFBGatewaysList=window.JetFBGatewaysList||{},window.JetFBGatewaysList[e]=window.JetFBGatewaysList[e]||{},window.JetFBGatewaysList[e][n]=t},Tools:k,event:e=>{const t=new Event(e);return()=>document.dispatchEvent(t)},listen:(e,t)=>{document.addEventListener(e,t)},renderGateway:D,renderGatewayWithPlaceholder:function(e,t,n="cred",r=null){return L(e,n)?(t.Placeholder=r,D(e,t,n)):r},maybeCyrToLatin:w,getConvertedName:E,getBlockControls:function(e="all"){if(!e)return!1;const t=er();return"all"===e?t:!!(t[e]&&t[e].attrs&&Array.isArray(t[e].attrs)&&0{e.includes(n.name)&&t.push(n)})),t},convertObjectToOptionsList:function(e=[],{usePlaceholder:t=!0,label:n="--",value:r=""}={}){const l={label:n,value:r};if(!e)return t?[l]:[];const o=Object.entries(e).map((e=>({value:e.value,label:e.label})));return t?[l,...o]:o},appendField:function(e,t=[]){M("jet.fb.register.fields","jet-form-builder",(n=>n.map((n=>t.length&&!t.includes(n.name)?n:e(n)))))},insertMacro:Nn,column:y,getCurrentInnerBlocks:function(){const{"data-block":e}=Ks();return R(e)},humanReadableCondition:pi,assetUrl:function(e=""){return JetFormEditorData.assetsUrl+e},set:function(e,t,n){const r=JSON.parse(JSON.stringify(e));let l,o=r;for(let e=0;e{function t(){e.call(this)}return t.prototype=Object.create(e.prototype),t}},window.JetFBHooks={...null!==(Ac=window?.JetFBHooks)&&void 0!==Ac?Ac:{},useSelectPostMeta:H,useSuccessNotice:$,useEvents:ae,useRequestEvents:function(){const e=ie((e=>e("jet-forms/actions").getCurrentAction()));return ae(e)},useBlockConditions:ce,useUniqKey:de,useBlockAttributes:fe,useIsAdvancedValidation:function(){const{type:e}=H("_jf_validation"),[t]=fe();return t.validation?.type?"advanced"===t.validation?.type:"advanced"===e},useGroupedValidationMessages:function(){const[e]=$e(He);return e},withSelectFormFields:(e=[],t=!1,n=!1)=>r=>{let l=[];const o=["submit","form-break","heading","group-break","conditional",...e];return Y((e=>{e.name.includes("jet-forms/")&&e.attributes.name&&!o.find((t=>e.name.includes(t)))&&l.push({blockName:e.name,name:e.attributes.name,label:e.attributes.label||e.attributes.name,value:e.attributes.name})}),r("core/block-editor").getBlocks()),l=t?[{value:"",label:t},...l]:l,{formFields:n?l:z("jet.fb.getFormFieldsBlocks",l)}},withSelectGateways:X,withDispatchGateways:function(e){const t=e("jet-forms/gateways");return{setGatewayRequest:t.setRequest,setGatewayScenario:t.setScenario,setScenario:t.setCurrentScenario,setGateway:t.setGateway,setGatewayInner:t.setGatewayInner,setGatewaySpecific:t.setGatewaySpecific,clearGateway:t.clearGateway,clearScenario:t.clearScenario}},useOnUpdateModal:W,useInsertMacro:Tn,useIsHasAttribute:he,useUniqueNameOnDuplicate:function(e=null){const t=Qs(),[,n]=fe(),r=t["data-block"],l=Zs((e=>{if(!e(Wo).isRecentlyAdded(r))return!1;const{hasChanged:t,names:n}=e(Wo).getUniqueNames(r);return!!t&&n}),[r]);Xs((()=>{l&&("function"!=typeof e?n({name:l.split("|")[0]}):e(l))}),[l])},useSupport:function(e){const{name:t}=vc();return yc((n=>{const r=n("core/blocks").getBlockType(t);return wc(r,["supports",e],!1)}),[t,e])},useScopedAttributesContext:function(){return jc(Sc)},useOpenEditorPanel:function(e){const{enableComplementaryArea:t}=Tc("core/interface"),{toggleEditorPanelOpened:n}=Tc("core/edit-post"),r=Fc((t=>t("core/edit-post").isEditorPanelOpened(e)),[e]);return()=>{t("core/edit-post","edit-post/document"),!r&&n(e)}}}})()})(); \ No newline at end of file +(()=>{var e={115:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r=n(6758),l=n.n(r),o=n(935),a=n.n(o)()(l());a.push([e.id,".syma2t4{height:40px;min-height:40px;line-height:1.5;}\n",""]);const i=a},483:(e,t,n)=>{var r=n(4239);r.__esModule&&(r=r.default),"string"==typeof r&&(r=[[e.id,r,""]]),r.locals&&(e.exports=r.locals),(0,n(611).A)("62ebcc8a",r,!1,{})},611:(e,t,n)=>{"use strict";function r(e,t){for(var n=[],r={},l=0;lf});var l="undefined"!=typeof document;if("undefined"!=typeof DEBUG&&DEBUG&&!l)throw new Error("vue-style-loader cannot be used in a non-browser environment. Use { target: 'node' } in your Webpack config to indicate a server-rendering environment.");var o={},a=l&&(document.head||document.getElementsByTagName("head")[0]),i=null,s=0,c=!1,u=function(){},d=null,m="data-vue-ssr-id",p="undefined"!=typeof navigator&&/msie [6-9]\b/.test(navigator.userAgent.toLowerCase());function f(e,t,n,l){c=n,d=l||{};var a=r(e,t);return h(a),function(t){for(var n=[],l=0;ln.parts.length&&(r.parts.length=n.parts.length)}else{var a=[];for(l=0;l{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n="",r=void 0!==t[5];return t[4]&&(n+="@supports (".concat(t[4],") {")),t[2]&&(n+="@media ".concat(t[2]," {")),r&&(n+="@layer".concat(t[5].length>0?" ".concat(t[5]):""," {")),n+=e(t),r&&(n+="}"),t[2]&&(n+="}"),t[4]&&(n+="}"),n})).join("")},t.i=function(e,n,r,l,o){"string"==typeof e&&(e=[[null,e,void 0]]);var a={};if(r)for(var i=0;i0?" ".concat(u[5]):""," {").concat(u[1],"}")),u[5]=o),n&&(u[2]?(u[1]="@media ".concat(u[2]," {").concat(u[1],"}"),u[2]=n):u[2]=n),l&&(u[4]?(u[1]="@supports (".concat(u[4],") {").concat(u[1],"}"),u[4]=l):u[4]="".concat(l)),t.push(u))}},t}},4023:(e,t,n)=>{var r=n(115);r.__esModule&&(r=r.default),"string"==typeof r&&(r=[[e.id,r,""]]),r.locals&&(e.exports=r.locals),(0,n(611).A)("55433ea3",r,!1,{})},4180:()=>{const e=()=>{const{select:e}=wp.data;return e("core/editor").getEditedPostAttribute("meta")},t=(t,n)=>{const{dispatch:r}=wp.data,{editPost:l}=r("core/editor");l({meta:{...e(),[t]:JSON.stringify(n)}})},n=e=>{const t=[];for(const[n,{active:r=!1}]of Object.entries(e))r&&t.push(+n);return t};wp.domReady((()=>(async()=>{await(async()=>new Promise((e=>{const t=setInterval((()=>{wp.data.select("core/editor").getCurrentPostType()&&(clearInterval(t),e())}),100)})))();let r={},l=[];try{[r={},l=[]]=(()=>{const t=e();let n={},r=[];try{n=JSON.parse(t._jf_gateways)}catch(e){return[]}if(1===n.last_migrate)throw"migrated";try{r=JSON.parse(t._jf_actions)}catch(e){return[n]}return[n,r]})()}catch(e){return}r.last_migrate=1,t("_jf_gateways",r);const o=[];try{o.push(...((e,t)=>{var r,l,o,a;const i=n(null!==(r=e.notifications_success)&&void 0!==r?r:{}),s=n(null!==(l=e.notifications_failed)&&void 0!==l?l:{}),c=n(null!==(o=e.notifications_before)&&void 0!==o?o:{}),u=null!==(a=e.use_success_redirect)&&void 0!==a&&a;let d=!1;if(!(i.length||s.length||c.length||u))throw"nothing_to_migrate";return t.map((e=>{var t;return e.events=null!==(t=e.events)&&void 0!==t?t:[],i.includes(e.id)&&e.events.push("GATEWAY.SUCCESS"),s.includes(e.id)&&e.events.push("GATEWAY.FAILED"),c.includes(e.id)&&e.events.push("DEFAULT.PROCESS"),u&&!d&&"redirect_to_page"===e.type&&(e.events.push("GATEWAY.SUCCESS"),d=!0),e}))})(r,l))}catch(e){return}t("_jf_actions",o)})()))},4239:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>i});var r=n(6758),l=n.n(r),o=n(935),a=n.n(o)()(l());a.push([e.id,".sfqmk5y svg{height:24px;width:24px;}\n",""]);const i=a},6758:e=>{"use strict";e.exports=function(e){return e[1]}}},t={};function n(r){var l=t[r];if(void 0!==l)return l.exports;var o=t[r]={id:r,exports:{}};return e[r](o,o.exports,n),o.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{"use strict";const e=window.React,{createContext:t}=wp.element,r=t({name:"",data:{},index:0}),l=window.jfb.components,o=window.wp.element,{createContext:a}=wp.element,i=a({actionClick:null,onRequestClose:()=>{}}),{createSlotFill:s}=wp.components,c=s("JFBActionModalFooter"),u=window.wp.components,d=window.wp.i18n,{Slot:m}=c;let{ToggleGroupControl:p,__experimentalToggleGroupControl:f}=wp.components;p=p||f;const h=function({onRequestClose:t,children:n,title:r="",classNames:l=[],className:a="",onUpdateClick:s,onCancelClick:c,updateBtnLabel:f="Update",updateBtnProps:h={},cancelBtnProps:b={},cancelBtnLabel:g="Cancel",fixedHeight:y="",...v}){const w=["jet-form-edit-modal",...l,a],[E,_]=(0,o.useState)(null),C=()=>{s&&s(),_(!0)},k=()=>{c&&c(),_(!1)};let S={};return y&&(S={height:y},w.push("jet-modal-fixed-height")),(0,e.createElement)(u.Modal,{onRequestClose:t,className:w.join(" "),title:r,style:S,...v},!n&&(0,e.createElement)("div",{className:"jet-form-edit-modal__content"},(0,d.__)("Action callback is not found.","jet-form-builder")),n&&(0,e.createElement)(e.Fragment,null,(0,e.createElement)("div",{className:"jet-form-edit-modal__wrapper"},(0,e.createElement)(i.Provider,{value:{actionClick:E,onRequestClose:t}},(0,e.createElement)("div",{className:"jet-form-edit-modal__content"},"function"==typeof n&&n({actionClick:E,onRequestClose:t}),"function"!=typeof n&&n))),(0,e.createElement)(m,{fillProps:{updateClick:C,cancelClick:k}},(t=>Boolean(t?.length)?t:(0,e.createElement)(p,{className:"jet-form-edit-modal__actions jfb-toggle-group-control",hideLabelFromVision:!0},(0,e.createElement)(u.Button,{isPrimary:!0,onClick:C,...h},f),(0,e.createElement)(u.Button,{isSecondary:!0,style:{margin:"0 0 0 10px"},onClick:k,...b},g))))))},{RawHTML:b,useContext:g}=wp.element;function y(e,t){return e?.length?e.map((e=>"object"==typeof e?e[t]:e)):[]}const v=(0,window.wp.hooks.applyFilters)("jet.fb.tools.convertSymbols",{checkCyrRegex:/[а-яёїєґі]/i,cyrRegex:/[а-яёїєґі]/gi,charsMap:{а:"a",б:"b",в:"v",г:"g",д:"d",е:"e",ё:"io",ж:"zh",з:"z",и:"i",й:"i",к:"k",л:"l",м:"m",н:"n",о:"o",п:"p",р:"r",с:"s",т:"t",у:"u",ф:"f",х:"kh",ц:"ts",ч:"ch",ш:"sh",щ:"shch",ы:"y",э:"e",ю:"iu",я:"ia",ї:"i",є:"ie",ґ:"g",і:"i"}});function w(e){return v.checkCyrRegex.test(e)&&(e=e.replace(v.cyrRegex,(function(e){return void 0===v.charsMap[e]?"":v.charsMap[e]}))),e}function E(e){let t=e.toLowerCase();t=t.normalize("NFD").replace(/[\u0300-\u036f]/g,""),t=w(t);const n=t.match(/\b(\w+)\b/g);t="";for(const[e,r]of Object.entries(n)){t+=(0===+e?"":"_")+r;const l=+e+1===n.length;if(t.length>60)return t+(l?"":"__")}return t}function _(...e){const t=[],n=e=>{e.forEach((e=>{if(e&&(Array.isArray(e)&&n(e),"string"==typeof e&&t.push(e.trim()),"object"==typeof e))for(const n in e)e[n]&&t.push((n+"").trim())}))};return n(e),t.join(" ")}function C(e){return null==e||("object"!=typeof e||Array.isArray(e)?"number"==typeof e?0===e:!e?.length:!Object.keys(e)?.length)}const k=class{static withPlaceholder(e,t="--",n=""){return[{label:t,value:n},...e]}static getRandomID(){return Math.floor(8999*Math.random())+1e3}},{select:S}=wp.data,j=function(e){const t=(n,r=null)=>{(n=n||S("core/block-editor").getBlocks()).forEach((n=>{if(e(n,r),n.innerBlocks.length){const e="jet-forms/repeater-field"===n.name?n:r;return void t(n.innerBlocks,e)}if("core/block"!==n.name)return;let l=S("core/block-editor")?.__unstableGetClientIdsTree?.(n.clientId);if(!l?.length)return;const o=l.map((({clientId:e})=>e));l=S("core/block-editor").getBlocksByClientId(o),t(l)}))};t()},{applyFilters:x}=wp.hooks,{select:N}=wp.data,F=function(e=[],t=!1,n=!1,r="default"){let l=[];const o=["submit","form-break","heading","group-break","conditional",...e];return j((e=>{if(e.name.includes("jet-forms/")&&!o.find((t=>e.name.includes(t)))){const t=N("core/blocks").getBlockType(e.name);let{fields:n=[]}=t.jfbResolveBlock.call(e,r);t.hasOwnProperty("jfbGetFields")&&(n=t.jfbGetFields.call(e,r)),l.push(...n.filter((e=>!l.some((({value:t})=>t===e.value)))))}})),l=t?[{value:"",label:t},...l]:l,n?l:x("jet.fb.getFormFieldsBlocks",l,r)},T=function(e=[],t="default"){const n=[],r=F(e,!1,!1,t);return r&&r.forEach((e=>n.push(e.name))),n},{__:I}=wp.i18n,{applyFilters:B}=wp.hooks,{select:A}=wp.data,O=function(e=!1,t=!1,n="default"){const r=["submit","form-break","heading","group-break","conditional"];let l=[];const o=wp.data.select("core/block-editor").getSelectedBlock();return j((e=>{if(e.name.includes("jet-forms/")&&o?.clientId!==e.clientId&&!r.find((t=>e.name.includes(t)))){const t=A("core/blocks").getBlockType(e.name);let{fields:r=[]}=t.jfbResolveBlock.call(e,n);t.hasOwnProperty("jfbGetFields")&&(r=t.jfbGetFields.call(e,n)),l.push(...r.filter((e=>!l.some((({value:t})=>t===e.value)))))}})),l=e?[{value:"",label:e},...l]:l,t?l:B("jet.fb.getFormFieldsBlocks",l,n)},R=function(e){const t=wp.data.select("core/block-editor").getBlock(e);return t?t.innerBlocks:[]},{addFilter:M}=wp.hooks,P=function(e=!1,t=""){const n=window.JetFormEditorData.gateways;if(!e)return n;if(!n[e])return!1;const r=n[e];return e=>r[e]?r[e]:t},G=function(e,t=""){const n=P("labels");return r=>n(e)?n(e)[r]:t},L=function(e,t="cred"){return window.JetFBGatewaysList&&window.JetFBGatewaysList[e]&&window.JetFBGatewaysList[e][t]},D=function(t,n,r="cred"){if(!L(t,r))return null;const l=window.JetFBGatewaysList[t][r];return(0,e.createElement)(l,{...n})},{useState:q,useEffect:V}=wp.element,{useDispatch:J}=wp.data,$=function(e,t={}){const[n,r]=q(!1),l=J(wp.notices.store);return V((()=>{n&&l.createWarningNotice(e,{type:"snackbar",...t})}),[n]),r},{useSelect:U}=wp.data,H=function(e){const t=U((e=>e("core/editor").getEditedPostAttribute("meta")||{}));return JSON.parse(t[e]||"{}")},W=function(e){const{actionClick:t,onRequestClose:n}=(0,o.useContext)(i);(0,o.useEffect)((()=>{t&&e(),null!==t&&n()}),[t])},{applyFilters:z}=wp.hooks,Y=(e,t)=>{t.forEach((t=>{e(t),t.innerBlocks.length&&Y(e,t.innerBlocks)}))},K=window.jfb.actions,X=function(e){const t=e("jet-forms/gateways"),n=t.getCurrentRequestId(),r=t.getGatewaySpecific(),l=t.getScenario(),o=t.getGatewayId(),{id:a="PAY_NOW"}=l,{use_global:i=!1}=r,s=(0,K.globalTab)({slug:o}),c=P("additional")(o),u=e("jet-forms/actions").getLoading(n),d=P("labels"),m=G(o),p=function(e){return d(`${o}.${e}`)};return{gatewayGeneral:t.getGateway(),gatewayRequest:t.getCurrentRequest(),scenarioSource:c[a]||{},currentScenario:l[a]||{},CURRENT_SCENARIO:a,gatewayScenario:l,additionalSourceGateway:c,gatewaySpecific:r,gatewayRequestId:n,loadingGateway:u,getSpecificOrGlobal:(e,t="")=>i?s[e]||t:r[e]||t,globalGatewayLabel:d,specificGatewayLabel:m,customGatewayLabel:p,scenarioLabel:function(e){return p(`scenario.${a}.${e}`)}}},{useSelect:Z}=wp.data,Q=function(){const e=Z((e=>e("jet-forms/events").getAlwaysTypes())),t=[];for(const{value:n}of e)t.push(n);return[...new Set(t)]},{useSelect:ee}=wp.data,te=function(){var e;const t=H("_jf_gateways"),{scenario:n={}}=null!==(e=t[t?.gateway])&&void 0!==e?e:{};return ee((e=>{const r=e("jet-forms/events").getGatewayTypes(),l=[];for(const e of r){const r=!e.gateway||e.gateway===t.gateway,o=!e.scenario||e.scenario===n?.id;r&&o&&l.push(e.value)}return[...new Set(l)]}),[t.gateway,n?.id])},{useSelect:ne}=wp.data,re=function({index:e}){const t=H("_jf_actions"),n=ne((e=>e("jet-forms/actions").getActionsMap()),[]);t.splice(e,1);const r=[];for(const e of t){const t=n?.[e.type]?.provideEvents;if("function"!=typeof t)continue;const{[e.type]:l={}}=e.settings;r.push(...t(l))}return[...new Set(r)]},{useSelect:le}=wp.data,{useSelect:oe}=wp.data,ae=function(e){const t=[...Q(),...te(),...re(e),...le((e=>e("jet-forms/events").getDynamicTypes().map((({value:e})=>e))))];return oe((n=>n("jet-forms/events").filterList(e.type,t)))},{useSelect:ie}=wp.data,{useSelect:se}=wp.data,ce=function(){const[e,t]=se((e=>[e("jet-forms/block-conditions").getOperators(),e("jet-forms/block-conditions").getFunctions()]),[]);return{operators:e,functions:t}},{useBlockEditContext:ue}=wp.blockEditor,de=function(){const{clientId:e}=ue();return t=>t+"-"+e},me=window.wp.blockEditor,pe=window.wp.data,fe=function(e=null){const t=(0,me.useBlockEditContext)();let{clientId:n}=t;e&&(n=e);const r=(0,pe.useSelect)((e=>e("core/block-editor").getBlockAttributes(n)),[n]),{updateBlock:l}=(0,pe.useDispatch)("core/block-editor");return[r,e=>{e="object"==typeof e?e:e(r),e=(0,pe.select)("jet-forms/fields").getSanitizedAttributes(e,t),l(n,{attributes:e})}]},he=function(e){const t=(0,me.useBlockProps)()["data-type"];return(0,pe.useSelect)((n=>!!n("core/blocks").getBlockType(t).attributes[e]),[e,t])},{applyFilters:be}=wp.hooks,ge=function(t){return function(n){return(0,e.createElement)(t,{key:"wrapped-preset-editor",...n,parseValue:()=>{let e={};if("object"==typeof n.value)e={...n.value};else if(n.value&&"string"==typeof n.value)try{if(e=JSON.parse(n.value),"number"==typeof e)throw new Error}catch(t){e={}}return e.jet_preset=!0,e},isVisible:(e,t,n)=>(t.position&&n===t.position||!t.position||"query_var"!==e.from)&&((e,t)=>!t.condition&&!t.custom_condition||(t.custom_condition?"query_var"===t.custom_condition?"post"===e.from&&"query_var"===e.post_from||"user"===e.from&&"query_var"===e.user_from||"term"===e.from&&"query_var"===e.term_from||"query_var"===e.from:be("jet.fb.preset.editor.custom.condition",!1,t.custom_condition,e):!t.condition||e[t.condition.field]===t.condition.value))(e,t),isMapFieldVisible:(e,t,n)=>!((t.condition||t.parent_condition)&&(t.parent_condition&&!t.condition?e[t.parent_condition.field]!==t.parent_condition.value:t.parent_condition&&t.condition?!e.fields_map||!e.fields_map[n]||e.fields_map[n][t.condition.field]!==t.condition.value||e[t.parent_condition.field]!==t.parent_condition.value:!t.parent_condition&&t.condition&&(!e.fields_map||!e.fields_map[n]||e.fields_map[n][t.condition.field]!==t.condition.value))),isCurrentFieldVisible:(e,t,n)=>!((t.condition||t.parent_condition)&&(t.position&&n!==t.position||(t.parent_condition&&!t.condition?e[t.parent_condition.field]!==t.parent_condition.value:t.parent_condition&&t.condition?e["current_field_"+t.condition.field]!==t.condition.value||e[t.parent_condition.field]!==t.parent_condition.value:!t.parent_condition&&t.condition&&e["current_field_"+t.condition.field]!==t.condition.value))),excludeOptions:e=>{const t=[...e];return t.forEach(((e,r)=>{n.excludeSources&&n.excludeSources.includes(e.value)&&t.splice(r,1)})),t}})}},ye=function({data:t,value:n,index:r,onChangeValue:o,isVisible:a,excludeOptions:i=e=>e,position:s}){switch(t.type){case"text":return a(n,t,s)&&(0,e.createElement)("div",{key:"field_"+t.name+r,className:"jet-form-preset__row"},(0,e.createElement)(l.StyledTextControl,{key:t.name+r,label:t.label,value:n[t.name],onChange:e=>{o(e,t.name)}}));case"select":return a(n,t,s)&&(0,e.createElement)("div",{key:"field_"+t.name+r,className:"jet-form-preset__row"},(0,e.createElement)(l.StyledSelectControl,{key:t.name+r,options:i(t.options),label:t.label,value:n[t.name],onChange:e=>{o(e,t.name)}}))}return null};function ve(e){var t=Object.create(null);return function(n){return void 0===t[n]&&(t[n]=e(n)),t[n]}}var we=/^((children|dangerouslySetInnerHTML|key|ref|autoFocus|defaultValue|defaultChecked|innerHTML|suppressContentEditableWarning|suppressHydrationWarning|valueLink|abbr|accept|acceptCharset|accessKey|action|allow|allowUserMedia|allowPaymentRequest|allowFullScreen|allowTransparency|alt|async|autoComplete|autoPlay|capture|cellPadding|cellSpacing|challenge|charSet|checked|cite|classID|className|cols|colSpan|content|contentEditable|contextMenu|controls|controlsList|coords|crossOrigin|data|dateTime|decoding|default|defer|dir|disabled|disablePictureInPicture|disableRemotePlayback|download|draggable|encType|enterKeyHint|fetchpriority|fetchPriority|form|formAction|formEncType|formMethod|formNoValidate|formTarget|frameBorder|headers|height|hidden|high|href|hrefLang|htmlFor|httpEquiv|id|inputMode|integrity|is|keyParams|keyType|kind|label|lang|list|loading|loop|low|marginHeight|marginWidth|max|maxLength|media|mediaGroup|method|min|minLength|multiple|muted|name|nonce|noValidate|open|optimum|pattern|placeholder|playsInline|poster|preload|profile|radioGroup|readOnly|referrerPolicy|rel|required|reversed|role|rows|rowSpan|sandbox|scope|scoped|scrolling|seamless|selected|shape|size|sizes|slot|span|spellCheck|src|srcDoc|srcLang|srcSet|start|step|style|summary|tabIndex|target|title|translate|type|useMap|value|width|wmode|wrap|about|datatype|inlist|prefix|property|resource|typeof|vocab|autoCapitalize|autoCorrect|autoSave|color|incremental|fallback|inert|itemProp|itemScope|itemType|itemID|itemRef|on|option|results|security|unselectable|accentHeight|accumulate|additive|alignmentBaseline|allowReorder|alphabetic|amplitude|arabicForm|ascent|attributeName|attributeType|autoReverse|azimuth|baseFrequency|baselineShift|baseProfile|bbox|begin|bias|by|calcMode|capHeight|clip|clipPathUnits|clipPath|clipRule|colorInterpolation|colorInterpolationFilters|colorProfile|colorRendering|contentScriptType|contentStyleType|cursor|cx|cy|d|decelerate|descent|diffuseConstant|direction|display|divisor|dominantBaseline|dur|dx|dy|edgeMode|elevation|enableBackground|end|exponent|externalResourcesRequired|fill|fillOpacity|fillRule|filter|filterRes|filterUnits|floodColor|floodOpacity|focusable|fontFamily|fontSize|fontSizeAdjust|fontStretch|fontStyle|fontVariant|fontWeight|format|from|fr|fx|fy|g1|g2|glyphName|glyphOrientationHorizontal|glyphOrientationVertical|glyphRef|gradientTransform|gradientUnits|hanging|horizAdvX|horizOriginX|ideographic|imageRendering|in|in2|intercept|k|k1|k2|k3|k4|kernelMatrix|kernelUnitLength|kerning|keyPoints|keySplines|keyTimes|lengthAdjust|letterSpacing|lightingColor|limitingConeAngle|local|markerEnd|markerMid|markerStart|markerHeight|markerUnits|markerWidth|mask|maskContentUnits|maskUnits|mathematical|mode|numOctaves|offset|opacity|operator|order|orient|orientation|origin|overflow|overlinePosition|overlineThickness|panose1|paintOrder|pathLength|patternContentUnits|patternTransform|patternUnits|pointerEvents|points|pointsAtX|pointsAtY|pointsAtZ|preserveAlpha|preserveAspectRatio|primitiveUnits|r|radius|refX|refY|renderingIntent|repeatCount|repeatDur|requiredExtensions|requiredFeatures|restart|result|rotate|rx|ry|scale|seed|shapeRendering|slope|spacing|specularConstant|specularExponent|speed|spreadMethod|startOffset|stdDeviation|stemh|stemv|stitchTiles|stopColor|stopOpacity|strikethroughPosition|strikethroughThickness|string|stroke|strokeDasharray|strokeDashoffset|strokeLinecap|strokeLinejoin|strokeMiterlimit|strokeOpacity|strokeWidth|surfaceScale|systemLanguage|tableValues|targetX|targetY|textAnchor|textDecoration|textRendering|textLength|to|transform|u1|u2|underlinePosition|underlineThickness|unicode|unicodeBidi|unicodeRange|unitsPerEm|vAlphabetic|vHanging|vIdeographic|vMathematical|values|vectorEffect|version|vertAdvY|vertOriginX|vertOriginY|viewBox|viewTarget|visibility|widths|wordSpacing|writingMode|x|xHeight|x1|x2|xChannelSelector|xlinkActuate|xlinkArcrole|xlinkHref|xlinkRole|xlinkShow|xlinkTitle|xlinkType|xmlBase|xmlns|xmlnsXlink|xmlLang|xmlSpace|y|y1|y2|yChannelSelector|z|zoomAndPan|for|class|autofocus)|(([Dd][Aa][Tt][Aa]|[Aa][Rr][Ii][Aa]|x)-.*))$/,Ee=ve((function(e){return we.test(e)||111===e.charCodeAt(0)&&110===e.charCodeAt(1)&&e.charCodeAt(2)<91})),_e=function(){const e=Array.prototype.slice.call(arguments).filter(Boolean),t={},n=[];e.forEach((e=>{(e?e.split(" "):[]).forEach((e=>{if(e.startsWith("atm_")){const[,n]=e.split("_");t[n]=e}else n.push(e)}))}));const r=[];for(const e in t)Object.prototype.hasOwnProperty.call(t,e)&&r.push(t[e]);return r.push(...n),r.join(" ")},Ce=(e,t)=>{const n={};return Object.keys(e).filter((e=>t=>-1===e.indexOf(t))(t)).forEach((t=>{n[t]=e[t]})),n},ke=function(t){let n="";return r=>{const l=(l,o)=>{const{as:a=t,class:i=n}=l;var s;const c=function(e,t){const n=Ce(t,["as","class"]);if(!e){const e="function"==typeof Ee?{default:Ee}:Ee;Object.keys(n).forEach((t=>{e.default(t)||delete n[t]}))}return n}(void 0===r.propsAsIs?!("string"==typeof a&&-1===a.indexOf("-")&&(s=a[0],s.toUpperCase()!==s)):r.propsAsIs,l);c.ref=o,c.className=r.atomic?_e(r.class,c.className||i):_e(c.className||i,r.class);const{vars:u}=r;if(u){const e={};for(const t in u){const n=u[t],o=n[0],a=n[1]||"",i="function"==typeof o?o(l):o;r.name,e[`--${t}`]=`${i}${a}`}const t=c.style||{},n=Object.keys(t);n.length>0&&n.forEach((n=>{e[n]=t[n]})),c.style=e}return t.__wyw_meta&&t!==a?(c.as=a,(0,e.createElement)(t,c)):(0,e.createElement)(a,c)},o=e.forwardRef?(0,e.forwardRef)(l):e=>{const t=Ce(e,["innerRef"]);return l(t,e.innerRef)};return o.displayName=r.name,o.__wyw_meta={className:r.class||n,extends:t},o}};const Se=ke("select")({name:"StyledSelect",class:"syma2t4",propsAsIs:!1}),je=function({id:t,label:n,onChange:r,options:l=[],value:o}){return!C(l)&&(0,e.createElement)(Se,{id:t,className:"components-select-control__input",onChange:e=>{r(e.target.value)},value:o},(0,e.createElement)("option",{key:`${n}-placeholder`,value:""},"--"),l.map(((t,n)=>!C(t.values)&&(0,e.createElement)("optgroup",{key:`${t.label}-${n}`,label:t.label},t.values.map(((t,r)=>(0,e.createElement)("option",{key:`${t.value}-${r}-${n}`,value:t.value,disabled:t.disabled},t.label)))))))};n(4023);const xe=function({data:t,value:n,index:r,currentState:o,onChangeValue:a,isCurrentFieldVisible:i}){switch(t.type){case"text":return i(o,t)&&(0,e.createElement)("div",{key:t.name+r,className:"jet-form-preset__row"},(0,e.createElement)(l.StyledTextControl,{key:"control_"+t.name+r,placeholder:t.label,value:n,onChange:e=>{a(e,"current_field_"+t.name)}}));case"select":return i(o,t)&&(0,e.createElement)("div",{key:t.name+r,className:"jet-form-preset__row"},(0,e.createElement)(l.StyledSelectControl,{key:"control_"+t.name+r,options:t.options,label:t.label,value:n,onChange:e=>{a(e,"current_field_"+t.name)}}));case"custom_select":return i(o,t)&&(0,e.createElement)("div",{key:t.name+r,className:"jet-form-preset__row"},(0,e.createElement)(u.CustomSelectControl,{className:"jet-custom-select-control",label:t.label,options:t.options,onChange:({selectedItem:e})=>{n=e.key,a(n,"current_field_"+t.name)},value:t.options.find((e=>e.key===n))}));case"grouped_select":return i(o,t)&&(0,e.createElement)("div",{key:t.name+r},(0,e.createElement)(l.Label,null,t.label),(0,e.createElement)(je,{options:t.options,value:n,onChange:e=>{a(e,"current_field_"+t.name)}}))}return null},{createContext:Ne}=wp.element,Fe=Ne({});let Te=function({value:t,onChange:n,parseValue:r,excludeOptions:a,isCurrentFieldVisible:i,isVisible:s}){var c,m;const p="dynamic",f=r(t),h=(0,o.useContext)(Fe),b=(e,t)=>{n((()=>JSON.stringify({...f,[t]:e})))};return(0,e.createElement)(l.StyledFlexControl,{direction:"column",gap:4},window.JetFormEditorData.presetConfig.global_fields.map(((t,n)=>(0,e.createElement)(ye,{key:`current_field_${t.name}_${n}`,value:f,index:n,data:t,excludeOptions:a,onChangeValue:b,isVisible:s,position:p}))),window.JetFormEditorData.presetConfig.map_fields.map(((t,n)=>(0,e.createElement)(xe,{key:`current_field_${t.name}_${n}`,currentState:f,value:f["current_field_"+t.name],index:n,data:t,onChangeValue:b,isCurrentFieldVisible:i,position:p}))),h?.show&&(0,e.createElement)(u.ToggleControl,{label:(0,d.__)("Restrict access","jet-form-builder"),help:null===(c=f.restricted)||void 0===c||c?(0,d.__)("Will set default value from preset only for users who allowed to edit this value","jet-form-builder"):(0,d.__)("Always set default value from preset. Make sure it can't be accidentally changed from form Actions","jet-form-builder"),checked:null===(m=f.restricted)||void 0===m||m,onChange:e=>{b(e?void 0:e,"restricted")}}))};Te=ge(Te);const Ie=Te,{SelectControl:Be,TextControl:Ae}=wp.components;class Oe extends wp.element.Component{constructor(e){super(e),this.fieldTypes=this.props.fieldTypes,this.taxonomiesList=this.props.taxonomiesList,this.className=this.props.className,this.metaProp=this.props.metaProp?this.props.metaProp:"post_meta",this.termsProp=this.props.termsProp?this.props.termsProp:"post_terms",this.index=this.props.index,this.init(),this.bindFunctions(),this.state={type:this.getFieldType(this.props.fieldValue)}}bindFunctions(){this.onChangeType=this.onChangeType.bind(this),this.onChangeValue=this.onChangeValue.bind(this)}init(){if(this.id=`inspector-select-control-${this.index}`,this.preparedTaxes=[],this.taxPrefix="jet_tax__",this.taxonomiesList)for(let e=0;e{const t=wp.data.select(De).getBlockType(`jet-forms/${e}`);return{title:t.title,icon:t.icon.src}})))}},Ve=class{constructor(){this.items=[]}push(e){this.items.push(new qe(e))}},{messages:Je}=window.jetFormValidation,{useState:$e}=wp.element,Ue=Je.sort(((e,t)=>e.supported.length-t.supported.length));function He(){const e=new Ve;for(const t of Ue)e.push(t);return e.items}const We=function(e,t){1>=e.label.length||e.name&&"field_name"!==e.name||t({name:E(e.label)})},{BaseControl:ze}=wp.components,{RichText:Ye}=wp.blockEditor;let{__experimentalUseFocusOutside:Ke,useFocusOutside:Xe}=wp.compose;Xe=Xe||Ke;const{__:Ze}=wp.i18n;function Qe(t){return(0,e.createElement)("small",{style:{whiteSpace:"nowrap",padding:"0.2em 0.8em 0 0",color:"#8e8a8a"}},t)}const{Button:et,Popover:tt,PanelBody:nt}=wp.components,{useState:rt}=wp.element,{__:lt}=wp.i18n,{TextControl:ot}=wp.components,at=function({label:t,help:n}){const[r,l]=fe();return he("placeholder")?(0,e.createElement)(ot,{label:null!=t?t:lt("Placeholder","jet-form-builder"),value:r.placeholder,help:null!=n?n:"",onChange:e=>l({placeholder:e})}):null},{__:it}=wp.i18n,{ToggleControl:st}=wp.components,ct=function({label:t,help:n}){const[r,l]=fe();return he("add_prev")?(0,e.createElement)(st,{label:null!=t?t:it("Add Prev Page Button","jet-form-builder"),help:null!=n?n:it('It is recommended to use the "Action Button" block with the "Go to Prev Page" type',"jet-form-builder"),checked:r.add_prev,onChange:e=>l({add_prev:e})}):null},ut=function({children:t,className:n="",style:r={},...l}){return(0,e.createElement)("p",{className:"jet-fb-base-control__help"+(n?` ${n}`:""),style:{fontSize:"12px",fontStyle:"normal",color:"rgb(117, 117, 117)",marginTop:"0px",...r},...l},t)},{useBlockEditContext:dt}=wp.blockEditor,{useSelect:mt}=wp.data,{__:pt}=wp.i18n,ft=function({name:t=!1,children:n=null}){const{name:r}=dt(),l=mt((e=>{var n;if(!1===t)return!1;const l=e("core/blocks").getBlockType(r);return null!==(n=l.attributes[t]?.jfb)&&void 0!==n&&n}),[r,t]);return l?(0,e.createElement)(ut,{className:"jet-fb mb-24"},n&&(0,e.createElement)(e.Fragment,null,n," "),l?.shortcode&&!l.rich&&!n&&pt("You can use shortcodes here.","jet-form-builder"),l?.shortcode&&!l.rich&&n&&pt("You can also use shortcodes here.","jet-form-builder")):Boolean(n)&&(0,e.createElement)(ut,{className:"jet-fb mb-24"},n)},{__:ht}=wp.i18n,{TextControl:bt}=wp.components,gt=function({label:t,help:n}){const[r,l]=fe();return r.add_prev?(0,e.createElement)(e.Fragment,null,(0,e.createElement)(bt,{label:null!=t?t:ht("Prev Page Button Label","jet-form-builder"),value:r.prev_label,className:"jet-fb m-unset",onChange:e=>l({prev_label:e})}),(0,e.createElement)(ft,{name:"prev_label"},null!=n?n:"")):null},{__:yt}=wp.i18n,{SelectControl:vt}=wp.components,wt=function({label:t,help:n}){const[r,l]=fe();return he("visibility")?(0,e.createElement)(vt,{options:[{value:"all",label:yt("For all","jet-form-builder")},{value:"logged_id",label:yt("Only for logged in users","jet-form-builder")},{value:"not_logged_in",label:yt("Only for NOT-logged in users","jet-form-builder")}],label:null!=t?t:yt("Field Visibility","jet-form-builder"),help:null!=n?n:"",value:r.visibility,onChange:e=>l({visibility:e})}):null},{__:Et}=wp.i18n,{TextControl:_t}=wp.components,Ct=function({label:t,help:n}){const[r,l]=fe();return(0,e.createElement)(_t,{label:null!=t?t:Et("CSS Class Name","jet-form-builder"),value:r.class_name,help:null!=n?n:"",onChange:e=>l({class_name:e})})},{InspectorAdvancedControls:kt}=wp.blockEditor,{__:St}=wp.i18n,{TextControl:jt}=wp.components;let{__experimentalUseFocusOutside:xt,useFocusOutside:Nt}=wp.compose;Nt=Nt||xt;const Ft=function({label:t,help:n}){const[r,l]=fe(),o=Nt((function(){We(r,l)}));return(0,e.createElement)(e.Fragment,null,(0,e.createElement)(jt,{label:null!=t?t:St("Field Label","jet-form-builder"),className:"jet-fb m-unset",value:r.label,onChange:e=>l({label:e}),...o}),(0,e.createElement)(ft,{name:"label"},null!=n?n:""))},Tt={};for(const{id:e,name:t}of window.jetFormActionTypes)Tt[e]=t;const{__:It}=wp.i18n,{TextControl:Bt,Icon:At,Flex:Ot,Tooltip:Rt}=wp.components,{useInstanceId:Mt}=wp.compose,Pt=function t({label:n,help:r}){const[l,o]=fe(),{message:a}=function(){const{clientId:e}=(0,me.useBlockEditContext)(),t=(0,K.useRequestFields)({returnOnEmptyCurrentAction:!1}),{inFormFields:n,hasParent:r,fieldNames:l}=(0,pe.useSelect)((t=>{var n;const r=t("jet-forms/fields").getBlockById(e);return{hasParent:!!r?.parentBlock,fieldNames:null!==(n=r?.fields?.map?.((({value:e})=>e)))&&void 0!==n?n:[],inFormFields:t("jet-forms/fields").isUniqueName(e)}}),[e]);if(!n)return{error:"not_unique_in_fields",message:(0,d.__)("The form field name must be unique. Please change it","jet-form-builder")};if(r)return{};const o=t.find((({value:e})=>l.includes(e)));return o?{error:"not_unique_in_actions",message:o?.from?(0,d.sprintf)((0,d.__)("The %s action already uses this field name. Please change it","jet-form-builder"),Tt[o.from]):(0,d.__)("The form field name must be unique. Please change it","jet-form-builder")}:{}}(),i=Mt(t,"AdvancedInspectorControl");return he("name")?(0,e.createElement)(e.Fragment,null,(0,e.createElement)(Ot,{align:"center",justify:"flex-start",style:{marginBottom:"8px"}},(0,e.createElement)("label",{htmlFor:i,className:"jet-fb label"},null!=n?n:It("Form field name","jet-form-builder")),!!a&&(0,e.createElement)(Rt,{text:a,delay:200,placement:"top"},(0,e.createElement)(At,{icon:"warning",style:{color:"orange",cursor:"help"}}))),(0,e.createElement)(Bt,{id:i,value:l.name,help:null!=r?r:It("Should contain only lowercase Latin letters, numbers, “-”, or “_”. No spaces allowed.","jet-form-builder"),onChange:e=>o({name:e})})):null},{__:Gt}=wp.i18n,{TextControl:Lt}=wp.components,Dt=function({label:t,help:n}){const[r,l]=fe();return he("desc")?(0,e.createElement)(e.Fragment,null,(0,e.createElement)(Lt,{label:null!=t?t:Gt("Field Description","jet-form-builder"),value:r.desc,className:"jet-fb m-unset",onChange:e=>l({desc:e})}),(0,e.createElement)(ft,{name:"desc"},null!=n?n:"")):null},qt=function({value:t,onChange:n,title:r}){const[a,i]=(0,o.useState)(!1),[s,c]=(0,o.useState)(t);return(0,e.createElement)(e.Fragment,null,(0,e.createElement)(u.Button,{icon:"database",variant:"tertiary",isSmall:!0,className:"jet-fb-is-thick",onClick:()=>i(!0)}),a&&(0,e.createElement)(u.Modal,{size:"medium",title:null!=r?r:(0,d.__)("Edit Preset","jet-form-builder"),onRequestClose:()=>i(!1),className:l.ModalFooterStyle},(0,e.createElement)(Ie,{key:"dynamic_key_preset",value:s,onChange:c}),(0,e.createElement)(l.StickyModalActions,null,(0,e.createElement)(u.Button,{isPrimary:!0,onClick:()=>{n(s),i(!1)}},(0,d.__)("Update","jet-form-builder")),(0,e.createElement)(u.Button,{isSecondary:!0,onClick:()=>{i(!1)}},(0,d.__)("Cancel","jet-form-builder")))))},{createContext:Vt}=wp.element,Jt=Vt(!1),{useState:$t,useRef:Ut}=wp.element,{Button:Ht,Popover:Wt}=wp.components,zt=function({children:t,...n}){const[r,l]=$t(!1),o=Ut();return(0,e.createElement)(Jt.Provider,{value:{showPopover:r,setShowPopover:l}},(0,e.createElement)(Ht,{ref:o,icon:"admin-tools",variant:"tertiary",isSmall:!0,className:"jet-fb-is-thick",onClick:()=>l((e=>!e)),...n}),r&&(0,e.createElement)(Wt,{anchor:o.current,position:"top-start",noArrow:!1,variant:"toolbar",onFocusOutside:e=>{e.relatedTarget!==o.current&&l(!1)},onClose:()=>l(!1)},t))},{createContext:Yt}=wp.element,Kt=Yt([]),{createContext:Xt}=wp.element,Zt=Xt({name:""});function Qt(){}Qt.prototype={fullName(){},fullHelp(){}};const en=Qt,{useState:tn}=wp.element,{Button:nn}=wp.components,rn=function({current:t,children:n}){const[r,l]=tn(!1);if(!(t instanceof en))return(0,e.createElement)("li",null,(0,e.createElement)(Zt.Provider,{value:t},n));const o=t.fullHelp.bind(t);return(0,e.createElement)("li",null,(0,e.createElement)(Zt.Provider,{value:t},(0,e.createElement)("div",{style:{display:"flex",alignItems:"center",gap:"0.6em"}},(0,e.createElement)(nn,{isSmall:!0,variant:"tertiary",icon:r?"arrow-down":"arrow-right",className:"jet-fb-is-thick",onClick:()=>l((e=>!e))}),n),r&&(0,e.createElement)(o,null)))},{Children:ln,cloneElement:on}=wp.element,{PanelBody:an}=wp.components,sn=function({title:t,items:n,children:r,initialOpen:l}){const o=n.map(((t,n)=>(0,e.createElement)(rn,{key:n,current:t})));return(0,e.createElement)(an,{title:t,initialOpen:l},(0,e.createElement)("ul",{style:{padding:"0 0.5em"}},ln.map(o,(e=>on(e,{},r)))))},{useContext:cn}=wp.element,{__:un}=wp.i18n,dn=function({children:t,fields:n,...r}){var l,o;const a=cn(Kt),i=[...null!==(l=a.beforeFields)&&void 0!==l?l:[],...n,...null!==(o=a.afterFields)&&void 0!==o?o:[]];return i.length||a?.extra?.length||a?.filters?.length?(0,e.createElement)(zt,{...r},Boolean(i.length)&&(0,e.createElement)(sn,{title:un("Fields:","jet-form-builder"),items:i,initialOpen:!0},t),Boolean(a?.extra?.length)&&(0,e.createElement)(sn,{title:un("Extra macros:","jet-form-builder"),items:a.extra},t),Boolean(a?.filters?.length)&&(0,e.createElement)(sn,{title:un("Filters:","jet-form-builder"),items:a.filters},t)):null},{useContext:mn}=wp.element,{Button:pn}=wp.components,fn=function({onClick:t}){const n=mn(Zt),r=n.fullName?n.fullName():`%${n.value}%`,l="function"==typeof n.label?n.label():r;return(0,e.createElement)(pn,{isLink:!0,onClick:()=>t(r)},l)},hn=window.jfb.blocksToActions,bn=function({onClick:t=()=>{},withCurrent:n=!1,...r}){const l=(0,hn.useFields)({excludeCurrent:!n});return(0,e.createElement)(dn,{withCurrent:n,fields:l,...r},(0,e.createElement)(fn,{onClick:t}))},{Flex:gn}=wp.components,yn=function({label:t,children:n,...r}){return(0,e.createElement)(gn,{align:"center",justify:"flex-start",style:{marginBottom:"8px"}},(0,e.createElement)("label",{className:"jet-fb label",...r},t),n)},{FlexItem:vn}=wp.components,{useInstanceId:wn}=wp.compose,En=function({children:t,value:n,label:r,onChangePreset:l=!1,onChangeMacros:o=!1}){const a=wn(vn,"jfb-AdvancedInspectorControl");return(0,e.createElement)(e.Fragment,null,(0,e.createElement)(yn,{label:r,htmlFor:a},!1!==l&&(0,e.createElement)(qt,{value:n,onChange:l}),!1!==o&&(0,e.createElement)(bn,{onClick:o})),"function"==typeof t?t({instanceId:a}):t)};function _n(){en.call(this)}_n.prototype=Object.create(en.prototype),_n.prototype.isServerSide=!1,_n.prototype.isClientSide=!1,_n.prototype.name="",_n.prototype.namespace="CT",_n.prototype.help=null,_n.prototype.fullHelp=function(){return this.help},_n.prototype.fullName=function(){return`%${this.namespace}::${this.name}%`};const Cn=_n,{useSelect:kn}=wp.data,{__:Sn}=wp.i18n,jn=new Cn;jn.fullName=()=>"%this%",jn.fullHelp=()=>Sn("Returns current field value","jet-form-builder");const xn=function({children:t,withThis:n=!1}){const r=kn((e=>e("jet-forms/macros").getClientMacros()),[]),l=kn((e=>e("jet-forms/macros").getClientFilters()),[]),o=n?{extra:r,afterFields:[jn],filters:l}:{extra:r,filters:l};return(0,e.createElement)(Kt.Provider,{value:o},t)};function Nn(e,t,n){const r=n.selectionStart,l=n.selectionEnd;(e=null!=e?e:"").length||(t=`'${t}'`);let o=e.slice(0,r);const a=e.slice(l);return o+=t,setTimeout((()=>{n.focus(),n.selectionStart=o.length,n.selectionEnd=o.length})),o+a}const{useRef:Fn}=wp.element,Tn=function(e){var t;const[n,r]=fe(),l=null!==(t=n[e])&&void 0!==t?t:"",o=Fn();return[o,t=>{r({[e]:Nn(l,t,o.current)})}]},{__:In}=wp.i18n,{TextControl:Bn}=wp.components,An=function({label:t,help:n,hasMacro:r=!0}){const[l,o]=fe(),[a,i]=Tn("default");return he("default")?(0,e.createElement)(Fe.Provider,{value:{show:!0}},(0,e.createElement)(xn,null,(0,e.createElement)(En,{value:l.default,label:null!=t?t:In("Default Value","jet-form-builder"),onChangePreset:e=>o({default:e}),onChangeMacros:!!r&&i},(({instanceId:t})=>(0,e.createElement)(e.Fragment,null,(0,e.createElement)(Bn,{ref:a,id:t,value:l.default,className:"jet-fb m-unset",onChange:e=>o({default:e})}),(0,e.createElement)(ft,{name:"default"},null!=n?n:"")))))):null},{PanelBody:On}=wp.components,{__:Rn}=wp.i18n,{BlockControls:Mn}=wp.blockEditor,{useCopyToClipboard:Pn}=wp.compose,{TextControl:Gn,ToolbarGroup:Ln,ToolbarItem:Dn,ToolbarButton:qn}=wp.components,Vn=function({children:t=null}){const n=de(),[r,l]=fe(),o=$(`Copied "${r.name}" to clipboard.`),a=Pn(r.name,(()=>o(!0)));return(0,e.createElement)(Mn,{key:n("ToolBarFields-BlockControls")},(0,e.createElement)(Ln,{key:n("ToolBarFields-ToolbarGroup"),className:"jet-fb-block-toolbar"},(0,e.createElement)(qn,{isSmall:!0,icon:"admin-page",showTooltip:!0,shortcut:"Copy name",ref:a}),(0,e.createElement)(Dn,{as:Gn,value:r.name,onChange:e=>l({name:e})}),t))},{__:Jn}=wp.i18n,{ToolbarButton:$n}=wp.components,{BlockControls:Un}=wp.blockEditor,{SVG:Hn,Path:Wn}=wp.primitives,zn=function(){const[t,n]=fe();return he("required")?(0,e.createElement)(Un,{group:"block"},(0,e.createElement)($n,{icon:(0,e.createElement)(Hn,{xmlns:"http://www.w3.org/2000/svg",width:"24px",height:"24px",viewBox:"0 0 24 24",fill:"none"},(0,e.createElement)(Wn,{d:"M12 4L12 20",stroke:"currentcolor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"}),(0,e.createElement)(Wn,{d:"M17.3137 6.00024L6.00001 17.314",stroke:"currentcolor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"}),(0,e.createElement)(Wn,{d:"M20 12L4 12",stroke:"currentcolor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"}),(0,e.createElement)(Wn,{d:"M17.3137 17.3137L6.00001 6.00001",stroke:"currentcolor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round"})),title:t.required?Jn("Click to make this field optional","jet-form-builder"):Jn("Click to make this field required","jet-form-builder"),onClick:()=>n({required:!t.required}),isActive:t.required})):null},{__:Yn}=wp.i18n,{PanelBody:Kn}=wp.components,{applyFilters:Xn}=wp.hooks,{useBlockProps:Zn}=wp.blockEditor,{applyFilters:Qn}=wp.hooks,er=()=>Qn("jet.fb.register.fields.controls",{}),tr=window.wp.compose,nr=(0,tr.compose)((0,pe.withSelect)(X))((function({initialLabel:t="Valid",label:n="InValid",apiArgs:r={},gatewayRequestId:l,loadingGateway:o,onLoading:a=()=>{},onSuccess:i=()=>{},onFail:s=()=>{},isHidden:c=!1}){return(0,e.createElement)(K.FetchApiButton,{id:l,loadingState:o,initialLabel:t,label:n,apiArgs:r,onFail:s,onLoading:a,onSuccess:i,isHidden:c})})),rr="CLEAR_GATEWAY",lr="CLEAR_SCENARIO",or="SET_CURRENT_GATEWAY_SCENARIO",ar="SET_CURRENT_GATEWAY",ir="SET_CURRENT_GATEWAY_SPECIFIC",sr="SET_CURRENT_GATEWAY_INNER",cr="SET_CURRENT_REQUEST",ur="SET_CURRENT_SCENARIO",dr="REGISTER_EVENT_TYPE",mr="HARD_SET_CURRENT_GATEWAY",pr="HARD_SET_CURRENT_GATEWAY_SPECIFIC",fr={getCurrentRequestId:e=>e.currentRequest.id,getCurrentRequest:e=>e.currentRequest,getScenario:e=>e.currentScenario,getScenarioId:e=>e.currentScenario?.id,getGatewayId:e=>e.currentGateway?.gateway,getGateway:e=>e.currentGateway,getEventTypes:e=>e.eventTypes},hr={...fr,getGatewaySpecific:e=>e.currentGateway[fr.getGatewayId(e)]||{}},br={[rr]:e=>({...e,currentGateway:{}}),[lr]:e=>({...e,currentScenario:{}}),[or]:(e,t)=>({...e,currentScenario:{...e.currentScenario,...t.item||{}}}),[ar]:(e,t)=>({...e,currentGateway:{...e.currentGateway,...t.item}}),[ir]:(e,t)=>({...e,currentGateway:{...e.currentGateway,[e.currentGateway.gateway]:{...hr.getGatewaySpecific(e),...t.item}}}),[sr]:(e,t)=>{const{key:n,value:r}=t.item;return{...e,currentGateway:{...e.currentGateway,[n]:{...e.currentGateway[n]||{},...r}}}},[cr]:(e,t)=>{const n=[hr.getGatewayId(e),t.item?.id].filter((e=>e));return t.item.id=n.join("/"),{...e,currentRequest:t.item}},[ur]:(e,t)=>({...e,currentScenario:{...e.currentScenario,[e.currentScenario?.id]:{...e.currentScenario[e.currentScenario?.id]||{},...t.item||{}}}}),[mr]:(e,t)=>(t.item&&(e.currentGateway[t.item]=t.value),{...e}),[pr]:(e,t)=>(t.item&&e.currentGateway?.gateway&&(e.currentGateway[e.currentGateway?.gateway]={},e.currentGateway[e.currentGateway?.gateway][t.item]=t.value),{...e}),[dr]:(e,t)=>{var n,r;const l={...t.item,gateway:null!==(n=t.item?.gateway)&&void 0!==n?n:e.currentGateway?.gateway,scenario:null!==(r=t.item?.scenario)&&void 0!==r?r:e.currentScenario?.id};return e.eventTypes.push(l),e}},gr={currentRequest:{id:-1},currentGateway:{},currentScenario:{},eventTypes:[]},yr={clearGateway:()=>({type:rr}),clearScenario:()=>({type:lr}),setRequest:e=>({type:cr,item:e}),setGateway:e=>({type:ar,item:e}),setGatewayInner:e=>({type:sr,item:e}),setGatewaySpecific:e=>({type:ir,item:e}),setScenario:e=>({type:or,item:e}),setCurrentScenario:e=>({type:ur,item:e}),registerEventType:e=>({type:dr,item:e}),hardSetGateway:(e,t="")=>({type:mr,item:e,value:t}),hardSetGatewaySpecific:(e,t="")=>({type:pr,item:e,value:t})},{createReduxStore:vr}=wp.data,wr=vr("jet-forms/gateways",{reducer:function(e=gr,t){const n=br[t?.type];return n?n(e,t):e},actions:yr,selectors:hr}),Er="REGISTER",_r="UNREGISTER",Cr="LOCK_ACTIONS",kr="CLEAR_DYNAMIC_EVENTS",Sr={getTypeIndex:(e,t)=>e.types.findIndex((e=>e.value===t)),getTypes:e=>e.types,getGatewayTypes:e=>e.types.filter((e=>"gateway"in e)),getAlwaysTypes:e=>e.types.filter((e=>"always"in e)),getDynamicTypes:e=>e.types.filter((({isDynamic:e})=>e)),getType(e,t){const n=Sr.getTypeIndex(e,t);return e.types[n]},getUnsupported(e,t){var n;const r=null!==(n=e.lockedActions[t])&&void 0!==n&&n;return!1===r?[]:r.unsupported},getSupported(e,t){var n;const r=null!==(n=e.lockedActions[t])&&void 0!==n&&n;return!1===r?[]:r.supported},isValid(e,t,n){const r=Sr.getUnsupported(e,t);if(r.length&&r.includes(n))return!1;const l=Sr.getSupported(e,t);return!l.length||l.includes(n)},filterList:(e,t,n)=>n.filter((n=>Sr.isValid(e,t,n))),getHelpMap(e){const t={};for(const{value:n,help:r}of e.types)t[n]=r;return t}},jr={...Sr},xr={[Er](e,t){const{types:n}=e;for(const r of t.items){r.title=r.label;const t=jr.getTypeIndex(e,r.value);-1===t?n.push({...r}):n[t]={...r}}return{...e,types:n}},[Cr](e){for(const{id:n,self:r}of window.jetFormActionTypes){var t;const l=null!==(t=window[r])&&void 0!==t&&t;if(!1===l)continue;const{__unsupported_events:o,__supported_events:a}=l,i={unsupported:e.types.filter((({self:e})=>o.includes(e))).map((({value:e})=>e)),supported:e.types.filter((({self:e})=>a.includes(e))).map((({value:e})=>e))};(i.supported.length||i.unsupported.length)&&(e.lockedActions[n]=i)}return e},[_r](e,t){const{types:n}=t;return e.types=e.types.filter((({value:e})=>!n.includes(e))),e},[kr]:e=>(e.types=e.types.filter((({isDynamic:e=!1})=>!e)),e)},Nr={types:[],labels:{},lockedActions:{}},Fr={register:e=>({type:Er,items:e}),lockActions:()=>({type:Cr}),unRegister:e=>({type:_r,types:e}),clearDynamicEvents:()=>({type:kr})},{createReduxStore:Tr}=wp.data,Ir=Tr("jet-forms/events",{reducer:function(e=Nr,t){const n=xr[t?.type];return n?n(e,t):e},actions:Fr,selectors:jr}),Br="REGISTER",Ar="ADD_RENDER_STATE",Or="ADD_RENDER_STATES",Rr="DELETE_RENDER_STATES",{doAction:Mr}=wp.hooks,Pr={...{[Br](e,t){const{operators:n,functions:r,render_states:l}=t.items;return e.operators=[...n],e.functions=[...r],e.renderStates=[...l],Mr("jet.fb.change.blockConditions.renderState",e.renderStates),e},[Ar]:(e,t)=>(e.renderStates.push(t.item),Mr("jet.fb.change.blockConditions.renderState",e.renderStates),e),[Or](e,t){for(const n of t.items)e.renderStates.push(n);return Mr("jet.fb.change.blockConditions.renderState",e.renderStates),e},[Rr](e,t){const n=Array.isArray(t.items)?[...t.items]:[t.items];return e.renderStates=e.renderStates.filter((({value:e})=>!n.includes(e))),Mr("jet.fb.change.blockConditions.renderState",e.renderStates),e}}},{__:Gr}=wp.i18n,Lr=function(e,t="code"){var n;if(!function(e){let t;try{t=JSON.parse(e)}catch(e){return!1}return!!t?.jet_preset}(e=null!=e?e:""))return e;const r=JSON.parse(e),l=Gr("Preset from","jet-form-builder"),o=null!==(n=r?.from)&&void 0!==n?n:"(empty)";let a;switch(t){case"code":a=`${o}`;break;case"b":a=`${o}`}return[l,a].join(" ")},{select:Dr}=wp.data,{__:qr}=wp.i18n,Vr=function(e){const t=Dr("jet-forms/block-conditions").getOperator(e?.operator);return t?[`${e?.field||"(no field)"}`,t.label].join(" "):""},Jr={functions:[],operators:[],conditionReaders:{default(e){const t=Dr("jet-forms/block-conditions").getOperator(e?.operator);if(!t)return"";const n=e?.field||"(no field)",r=Lr(e.value,"b")||"(no value)";return[`${n}`,t.label,`${r}`].join(" ")},empty:Vr,not_empty:Vr,render_state(e){var t;const n=(null!==(t=e?.render_state)&&void 0!==t?t:[]).map((e=>`${e}`));return[1===n.length?qr("Is render state","jet-form-builder"):qr("One of the render states","jet-form-builder"),n.join(", ")].join(": ")}},renderStates:[]},$r={register:e=>({type:Br,items:e}),addRenderState:e=>({type:Ar,item:e}),addRenderStates:e=>({type:Or,items:e}),deleteRenderStates:e=>({type:Rr,items:e})},Ur={getFunctions:e=>e.functions,getOperators:e=>e.operators,getRenderStates:e=>e.renderStates,getSwitchableRenderStates:e=>e.renderStates.filter((({is_custom:e=!1,can_be_switched:t=!1})=>e||t)),getCustomRenderStates:e=>e.renderStates.filter((({is_custom:e=!1})=>e)),getOperator(e,t){const n=e.operators.findIndex((({value:e})=>e===t));return-1!==n&&e.operators[n]},readCondition(e,t){var n;const{operator:r=""}=t;if(!r)return"";const l=null!==(n=e.conditionReaders[r])&&void 0!==n&&n;return"function"==typeof l?l(t):e.conditionReaders.default(t)},getFunction:(e,t)=>e.functions.find((({value:e})=>e===t)),getFunctionDisplay:(e,t)=>Ur.getFunction(e,t)?.display},Hr={...Ur},{createReduxStore:Wr}=wp.data,zr=Wr("jet-forms/block-conditions",{reducer:function(e=Jr,t){const n=Pr[t?.type];return n?n(e,t):e},actions:$r,selectors:Hr}),Yr="REGISTER_MACRO",Kr={[Yr](e,t){const{items:n,isClient:r}=t,l=Array.isArray(n)?n:[n];for(const e of l)if(!(e instanceof Cn))throw new Error("^^^ Invalid macro item ^^^");return r?e.clientMacros.push(...l):e.serverMacros.push(...l),e}},{__:Xr}=wp.i18n;function Zr(){Cn.call(this),this.name="CurrentDate",this.isClientSide=!0,this.fullHelp=()=>(0,e.createElement)(e.Fragment,null,Xr("Returns the current timestamp. Replacing","jet-form-builder")," ",(0,e.createElement)("code",null,"Date.now()"))}Zr.prototype=Object.create(Cn.prototype);const Qr=Zr,{__:el}=wp.i18n;function tl(){Cn.call(this),this.name="Min_In_Sec",this.isClientSide=!0,this.help=el("Number of milliseconds in one minute","jet-form-builder")}tl.prototype=Object.create(Cn.prototype);const nl=tl,{__:rl}=wp.i18n;function ll(){Cn.call(this),this.name="Month_In_Sec",this.isClientSide=!0,this.help=rl("Number of milliseconds in one month","jet-form-builder")}ll.prototype=Object.create(Cn.prototype);const ol=ll,{__:al}=wp.i18n;function il(){Cn.call(this),this.name="Day_In_Sec",this.isClientSide=!0,this.help=al("Number of milliseconds in one day","jet-form-builder")}il.prototype=Object.create(Cn.prototype);const sl=il,{__:cl}=wp.i18n;function ul(){Cn.call(this),this.name="Year_In_Sec",this.isClientSide=!0,this.help=cl("Number of milliseconds in one year","jet-form-builder")}ul.prototype=Object.create(Cn.prototype);const dl=ul,{__:ml}=wp.i18n;function pl(){en.call(this)}pl.prototype=Object.create(en.prototype),pl.prototype.docArgument=!1,pl.prototype.help=null,pl.prototype.isServerSide=!1,pl.prototype.isClientSide=!1,pl.prototype.getArgumentsList=function(){if(!this.docArgument||!this.docArgument.length)return null;const e=Array.isArray(this.docArgument)?this.docArgument:[this.docArgument],t=[];for(const n of e)switch(n){case"string":case String:t.push(ml("String","jet-form-builder"));break;case"number":case Number:t.push(ml("Number","jet-form-builder"));break;case"array":case Array:t.push(ml("Array","jet-form-builder"));break;case"any":t.push(ml("Anything","jet-form-builder"))}return t.join(" | ")},pl.prototype.fullHelp=function(){if(!this.docArgument&&!this.help)return null;const t=this.help,n=this.getArgumentsList();return(0,e.createElement)(e.Fragment,null,n&&(0,e.createElement)("div",{style:{marginBottom:"0.5em"}},ml("Arguments:","jet-form-builder")+" ",(0,e.createElement)("code",null,n)),"function"!=typeof t?t:(0,e.createElement)(t,null))};const fl=pl,{__:hl}=wp.i18n;function bl(){fl.call(this),this.label=()=>hl("addDay","jet-form-builder"),this.fullName=()=>"|addDay",this.docArgument=Number,this.isClientSide=!0,this.help=hl("Adds the passed number of days via an argument to a macro that returns a date or a timestamp.","jet-form-builder")}bl.prototype=Object.create(fl.prototype);const gl=bl,{__:yl}=wp.i18n;function vl(){fl.call(this),this.label=()=>yl("addMonth","jet-form-builder"),this.fullName=()=>"|addMonth",this.docArgument=Number,this.isClientSide=!0,this.help=yl("Adds the passed number of months via an argument to a macro that returns a date or a timestamp.","jet-form-builder")}vl.prototype=Object.create(fl.prototype);const wl=vl,{__:El}=wp.i18n;function _l(){fl.call(this),this.label=()=>El("addYear","jet-form-builder"),this.fullName=()=>"|addYear",this.docArgument=Number,this.isClientSide=!0,this.help=El("Adds the passed number of years through an argument to a macro that returns a date or a timestamp.","jet-form-builder")}_l.prototype=Object.create(fl.prototype);const Cl=_l,{__:kl}=wp.i18n;function Sl(){fl.call(this),this.label=()=>kl("ifEmpty","jet-form-builder"),this.fullName=()=>"|ifEmpty",this.docArgument="any",this.isClientSide=!0,this.help=kl("If the macro returns an empty value, then the filter returns the value passed in the argument","jet-form-builder")}Sl.prototype=Object.create(fl.prototype);const jl=Sl,{__:xl}=wp.i18n;function Nl(){fl.call(this),this.label=()=>xl("length","jet-form-builder"),this.fullName=()=>"|length",this.isClientSide=!0,this.help=xl("Returns the length of a string or array","jet-form-builder")}Nl.prototype=Object.create(fl.prototype);const Fl=Nl,{__:Tl}=wp.i18n;function Il(){fl.call(this),this.label=()=>Tl("toDate","jet-form-builder"),this.fullName=()=>"|toDate",this.docArgument=Boolean,this.isClientSide=!0,this.help=()=>(0,e.createElement)(e.Fragment,null,Tl("Formats the timestamp according to the Date Field format.","jet-form-builder"),(0,e.createElement)("hr",null),Tl("Example:","jet-form-builder")+" ",(0,e.createElement)("code",null,"2022-02-24"),(0,e.createElement)("hr",null),Tl("Optionally accepts ","jet-form-builder"),(0,e.createElement)("code",null,"false"),Tl(" to use the user’s local timezone instead of UTC (default: ","jet-form-builder"),(0,e.createElement)("code",null,"true"),Tl(").","jet-form-builder"),(0,e.createElement)("hr",null),Tl("Example:","jet-form-builder")+" ",(0,e.createElement)("code",{style:{fontSize:"12px"}},"toDate(false)"))}Il.prototype=Object.create(fl.prototype);const Bl=Il,{__:Al}=wp.i18n;function Ol(){fl.call(this),this.label=()=>Al("toDateTime","jet-form-builder"),this.fullName=()=>"|toDateTime",this.docArgument=Boolean,this.isClientSide=!0,this.help=()=>(0,e.createElement)(e.Fragment,null,Al("Formats the timestamp according to the Datetime Field format.","jet-form-builder"),(0,e.createElement)("hr",null),Al("Example:","jet-form-builder")+" ",(0,e.createElement)("code",null,"2022-02-24T04:25"),(0,e.createElement)("hr",null),Al("Optionally accepts ","jet-form-builder"),(0,e.createElement)("code",null,"false"),Al(" to use the user’s local timezone instead of UTC (default: ","jet-form-builder"),(0,e.createElement)("code",null,"true"),Al(").","jet-form-builder"),(0,e.createElement)("hr",null),Al("Example:","jet-form-builder")+" ",(0,e.createElement)("code",{style:{fontSize:"12px"}},"toDateTime(false)"))}Ol.prototype=Object.create(fl.prototype);const Rl=Ol,{__:Ml}=wp.i18n;function Pl(){fl.call(this),this.label=()=>Ml("toTime","jet-form-builder"),this.fullName=()=>"|toTime",this.docArgument=Boolean,this.isClientSide=!0,this.help=()=>(0,e.createElement)(e.Fragment,null,Ml("Formats the timestamp according to the Time Field format.","jet-form-builder"),(0,e.createElement)("hr",null),Ml("Example:","jet-form-builder")+" ",(0,e.createElement)("code",null,"04:25"),(0,e.createElement)("hr",null),Ml("Optionally accepts ","jet-form-builder"),(0,e.createElement)("code",null,"false"),Ml(" to use the user’s local timezone instead of UTC (default: ","jet-form-builder"),(0,e.createElement)("code",null,"true"),Ml(").","jet-form-builder"),(0,e.createElement)("hr",null),Ml("Example:","jet-form-builder")+" ",(0,e.createElement)("code",{style:{fontSize:"12px"}},"toTime(false)"))}Pl.prototype=Object.create(fl.prototype);const Gl=Pl,{__:Ll}=wp.i18n;function Dl(){fl.call(this),this.label=()=>Ll("subDay","jet-form-builder"),this.fullName=()=>"|subDay",this.docArgument=Number,this.isClientSide=!0,this.help=Ll("Subtracts the number of days by argument from a macro that returns a date or timestamp.","jet-form-builder")}Dl.prototype=Object.create(fl.prototype);const ql=Dl,{__:Vl}=wp.i18n;function Jl(){fl.call(this),this.label=()=>Vl("subMonth","jet-form-builder"),this.fullName=()=>"|subMonth",this.docArgument=Number,this.isClientSide=!0,this.help=Vl("Subtracts the number of months by argument from a macro that returns a date or timestamp.","jet-form-builder")}Jl.prototype=Object.create(fl.prototype);const $l=Jl,{__:Ul}=wp.i18n;function Hl(){fl.call(this),this.label=()=>Ul("subYear","jet-form-builder"),this.fullName=()=>"|subYear",this.docArgument=Number,this.isClientSide=!0,this.help=Ul("Subtracts the number of years by argument from a macro that returns a date or timestamp.","jet-form-builder")}Hl.prototype=Object.create(fl.prototype);const Wl=Hl,{__:zl}=wp.i18n;function Yl(){fl.call(this),this.label=()=>zl("toDayInMs","jet-form-builder"),this.fullName=()=>"|toDayInMs",this.isClientSide=!0,this.help=()=>(0,e.createElement)(e.Fragment,null,zl("Converts a number of days into milliseconds.","jet-form-builder"))}Yl.prototype=Object.create(fl.prototype);const Kl=Yl,{__:Xl}=wp.i18n;function Zl(){fl.call(this),this.label=()=>Xl("toHourInMs","jet-form-builder"),this.fullName=()=>"|toHourInMs",this.isClientSide=!0,this.help=()=>(0,e.createElement)(e.Fragment,null,Xl("Converts a number of hours into milliseconds.","jet-form-builder"))}Zl.prototype=Object.create(fl.prototype);const Ql=Zl,{__:eo}=wp.i18n;function to(){fl.call(this),this.label=()=>eo("toMinuteInMs","jet-form-builder"),this.fullName=()=>"|toMinuteInMs",this.isClientSide=!0,this.help=()=>(0,e.createElement)(e.Fragment,null,eo("Converts a number of minutes into milliseconds.","jet-form-builder"))}to.prototype=Object.create(fl.prototype);const no=to,{__:ro}=wp.i18n;function lo(){fl.call(this),this.label=()=>ro("toMonthInMs","jet-form-builder"),this.fullName=()=>"|toMonthInMs",this.isClientSide=!0,this.help=()=>(0,e.createElement)(e.Fragment,null,ro("Converts a number of months into milliseconds.","jet-form-builder"))}lo.prototype=Object.create(fl.prototype);const oo=lo,{__:ao}=wp.i18n;function io(){fl.call(this),this.label=()=>ao("toWeekInMs","jet-form-builder"),this.fullName=()=>"|toWeekInMs",this.isClientSide=!0,this.help=()=>(0,e.createElement)(e.Fragment,null,ao("Converts a number of weeks into milliseconds.","jet-form-builder"))}io.prototype=Object.create(fl.prototype);const so=io,{__:co}=wp.i18n;function uo(){fl.call(this),this.label=()=>co("toYearInMs","jet-form-builder"),this.fullName=()=>"|toYearInMs",this.isClientSide=!0,this.help=()=>(0,e.createElement)(e.Fragment,null,co("Converts a number of years into milliseconds.","jet-form-builder"))}uo.prototype=Object.create(fl.prototype);const mo=uo,{__:po}=wp.i18n;function fo(){fl.call(this),this.label=()=>po("Timestamp","jet-form-builder"),this.fullName=()=>"|T",this.isClientSide=!0,this.help=po("Returns the time stamp. Usually used in conjunction with Date & Datetime and Time Field.","jet-form-builder",'Example\nFor Date Field\n%date_field|T%\nResult if date_field is filled with value "2022-10-22"')}fo.prototype=Object.create(fl.prototype);const ho=fo,bo={macros:[new Qr,new nl,new sl,new ol,new dl],filters:[new jl,new ho,new Fl,new gl,new wl,new Cl,new ql,new $l,new Wl,new Bl,new Rl,new Gl,new no,new Ql,new Kl,new so,new oo,new mo]},go={registerMacro:(e,t=!0)=>({type:Yr,items:e,isClient:t})},yo={getClientMacros:e=>e.macros.filter((function(e){return e.isClientSide})),getServerMacros:e=>e.macros.filter((function(e){return e.isServerSide})),getClientFilters:e=>e.filters.filter((function(e){return e.isClientSide})),getServerFilters:e=>e.filters.filter((function(e){return e.isServerSide}))},{createReduxStore:vo}=wp.data,wo=vo("jet-forms/macros",{reducer:function(e=bo,t){const n=Kr[t?.type];return n?n(e,t):e},actions:go,selectors:yo}),Eo="REGISTER",_o={[Eo](e,t){const{messages:n,ssr_callbacks:r,formats:l,rule_types:o}=t.items;return e.messages=JSON.parse(JSON.stringify(n)),e.ssrCallbacks=JSON.parse(JSON.stringify(r)),e.formats=JSON.parse(JSON.stringify(l)),e.ruleTypes=JSON.parse(JSON.stringify(o)),e}},Co={..._o},{select:ko}=wp.data,{__:So}=wp.i18n,jo={messages:[],ssrCallbacks:[],formats:[],ruleTypes:[],ruleReaders:{default(e){const t=ko("jet-forms/validation").getRule(e.type);if(!t)return"";let n=e?.field||e?.value||"";return n=Lr(n,"b")||"(no value)",[t.label,`${n}`].join(" ")},ssr:e=>[So("Function:","jet-form-builder"),e?.value].join(" ")}},xo={register:e=>({type:Eo,items:e})},No={...{getRule(e,t){const n=e.ruleTypes.findIndex((({value:e})=>e===t));return-1!==n&&e.ruleTypes[n]},readRule(e,t){var n;const{type:r=""}=t;if(!r)return"";const l=null!==(n=e.ruleReaders[r])&&void 0!==n&&n;return"function"==typeof l?l(t):e.ruleReaders.default(t)}}},{createReduxStore:Fo}=wp.data,To=Fo("jet-forms/validation",{reducer:function(e=jo,t){const n=Co[t?.type];return n?n(e,t):e},actions:xo,selectors:No}),Io="SET_BLOCKS",Bo="SET_BLOCKS_FIRST",Ao="TOGGLE_EXECUTE",Oo={...{[Io](e,t){const n=[];for(const r in t.blockMap)t.blockMap.hasOwnProperty(r)&&!e.blockMap.hasOwnProperty(r)&&n.push(r);return{...e,blocks:t.blocks,blockMap:t.blockMap,recentlyAdded:n}},[Bo]:(e,t)=>({...e,blocks:t.blocks,blockMap:t.blockMap}),[Ao]:e=>({...e,executed:!0})}},Ro={blocks:[],blockMap:{},executed:!1,recentlyAdded:[],sanitizers:{name:[e=>e.replace(/[^\w\-]/gi,""),e=>"children"===e?"_"+e:e]}},{select:Mo}=wp.data,Po=function(){const e=[],t={};return j(((n,r)=>{var l;if(!n?.name?.includes("jet-forms/"))return;const o=Mo("core/blocks").getBlockType(n.name),a=o.jfbResolveBlock.call(n);if(o.hasOwnProperty("jfbGetFields")&&(a.fields=o.jfbGetFields.call(n)),!r?.name)return e.push(a),void(t[a.clientId]=a);const i=null!==(l=t[r?.clientId])&&void 0!==l&&l;i&&(Object.defineProperty(a,"parentBlock",{get:()=>i}),i.innerBlocks=i?.innerBlocks||[],i.innerBlocks.push(a),t[a.clientId]=a)})),{blocks:e,blockMap:t}},{select:Go,dispatch:Lo}=wp.data,Do={setBlocks(e=null){null===e&&(e=Po());const t=Go(Wo).isExecuted();return t||Lo(Wo).toggleExecute(),{type:t?Io:Bo,blocks:e.blocks,blockMap:e.blockMap}},toggleExecute:()=>({type:Ao})},qo={getBlocks:e=>e.blocks,getBlockMap:e=>e.blockMap,getFields(e,{withInner:t=!0,currentId:n=!1}){const r=[],l=e=>{for(const o of e)o.fields?.length&&o.clientId!==n&&r.push(...o.fields),t&&o.innerBlocks?.length&&l(o.innerBlocks)};return l(e.blocks),r},isExecuted:e=>e.executed,isRecentlyAdded:(e,t)=>-1!==e.recentlyAdded.indexOf(t),getUniqueNames(e,t){var n,r;const l=null!==(n=e.blockMap[t])&&void 0!==n&&n;if(!l)return{hasChanged:!1};let o=!1;const a=null!==(r=l?.fields?.map?.((({value:e})=>e)))&&void 0!==r?r:[],i=l.hasOwnProperty("parentBlock")?l.parentBlock.innerBlocks:e.blocks,s=e=>{for(const t of e){const n=a.indexOf(t.value);-1!==n&&("field_name"!==t.value?(a[n]=`${a[n]}_copy`,o=!0,s(e)):o=!0)}};for(const e of i){var c;t!==e.clientId&&s(null!==(c=e?.fields)&&void 0!==c?c:[])}return{hasChanged:o,names:a.join("|")}},getSanitizedAttributes(e,t,{name:n}={}){for(const o in t){var r,l;if(!t.hasOwnProperty(o))continue;const a=null!==(r=null!==(l=e.sanitizers?.[n]?.[o])&&void 0!==l?l:e.sanitizers?.[o])&&void 0!==r&&r;if(a?.length)for(const e of a)"function"==typeof e&&(t[o]=e(t[o]))}return t},isUniqueName(e,t){const{hasChanged:n}=qo.getUniqueNames(e,t);return!n},getBlock:(e,t)=>e.blocks.find((({name:e,clientId:n})=>[e,n].includes(t))),getBlockByName(e,t){if(!t)return!1;const n=e=>{for(const r of e){if(r.fields.some((({value:e})=>e===t)))return r;r.innerBlocks?.length&&n(r.innerBlocks)}};return n(e.blocks),!1},getBlockNameByName(e,t){var n;const r=qo.getBlockByName(e,t);return null!==(n=r?.name)&&void 0!==n?n:""},getBlockById(e,t){var n;return null!==(n=e.blockMap[t])&&void 0!==n&&n}},Vo={...qo},{createReduxStore:Jo,dispatch:$o,select:Uo,subscribe:Ho}=wp.data,Wo="jet-forms/fields";let zo,Yo;Ho((()=>{const{debounce:e}=window._,{setBlocks:t}=$o(Wo);e((()=>{const e=Uo("core/block-editor").getGlobalBlockCount();if(zo!==e)return zo=e,void t();const n=Po(),r=JSON.stringify(n.blocks);r!==Yo&&(Yo=r,t(n))}),100)()}));const Ko=Jo(Wo,{reducer:function(e=Ro,t){const n=Oo[t?.type];return n?n(e,t):e},actions:Do,selectors:Vo});n(4180);const{register:Xo,dispatch:Zo}=wp.data,{addAction:Qo}=wp.hooks;[wr,Ir,zr,wo,To,Ko].forEach(Xo),Zo("jet-forms/events").register(window.jetFormEvents.types),Zo("jet-forms/events").lockActions(),Zo("jet-forms/validation").register(window.jetFormValidation),Qo("jet.fb.change.blockConditions.renderState","jet-form-builder/events",(function(e){Zo("jet-forms/events").clearDynamicEvents();const t=e.map((({value:e})=>({value:e="ON."+e,label:e,isDynamic:!0})));Zo("jet-forms/events").register(t)})),Zo("jet-forms/block-conditions").register(window.jetFormBlockConditions);const{createContext:ea}=wp.element,ta=ea(!1),{createContext:na}=wp.element,ra=na({currentItem:{},changeCurrentItem:()=>{},currentIndex:-1}),la=(0,o.createContext)({isSupported:e=>!1,render:({children:e})=>e}),oa=(0,o.createContext)({isSupported:e=>!1,render:({currentItem:e,index:t})=>null}),aa=(0,o.createContext)({edit:e=>!0,move:e=>!0,clone:e=>!0,delete:e=>!0}),{createContext:ia}=wp.element,sa=ia({}),{ToggleControl:ca}=wp.components,{__:ua}=wp.i18n,{useState:da}=wp.element,{useContext:ma}=wp.element,pa=function(e){if(void 0===e)return null;const t=ma(ta),n=function({oldIndex:t,newIndex:n}){e((e=>{const r=JSON.parse(JSON.stringify(e));return[r[n],r[t]]=[r[t],r[n]],r}))};return{changeCurrentItem:function(t,n){e((e=>{const r=JSON.parse(JSON.stringify(e));return r[n]={...e[n],...t},r}))},toggleVisible:function(t){e((e=>{const n=JSON.parse(JSON.stringify(e));return n[t].__visible=!n[t].__visible,n}))},moveDown:function(e){n({oldIndex:e,newIndex:e+1})},moveUp:function(e){n({oldIndex:e,newIndex:e-1})},cloneItem:function(t){e((e=>{const n=JSON.parse(JSON.stringify(e)),[r,l]=[n.slice(0,t+1),n.slice(t+1)];return[...r,n[t],...l]}))},addNewItem:function(t){e((e=>[...e,{__visible:!0,...t}]))},removeOption:function(n){t&&!(e=>confirm((0,d.sprintf)((0,d.__)("Are you sure you want to remove item %d?","jet-form-builder"),e+1)))(n)||e((e=>{const t=JSON.parse(JSON.stringify(e));return t.splice(n,1),t}))}}},{createContext:fa}=wp.element,ha=fa(!1),{Button:ba}=wp.components,{useContext:ga}=wp.element,ya=function(t){var n;const{item:r,onSetState:l,functions:o,children:a}=t,{addNewItem:i}=null!==(n=null!=o?o:pa(l))&&void 0!==n?n:ga(ha);return(0,e.createElement)(ba,{icon:"plus-alt2",isSecondary:!0,onClick:()=>i(r)},a)};let{Card:va,Button:wa,CardHeader:Ea,CardBody:_a,ToggleGroupControl:Ca,__experimentalToggleGroupControl:ka}=wp.components;const{useContext:Sa}=wp.element,{__:ja}=wp.i18n;Ca=Ca||ka;const xa=function(t){var n;const{items:r,onSetState:l,functions:o,children:a}=t,{cloneItem:i,moveUp:s,moveDown:c,toggleVisible:u,changeCurrentItem:d,removeOption:m}=null!==(n=null!=o?o:pa(l))&&void 0!==n?n:Sa(ha),{isSupported:p,render:f}=Sa(oa),{edit:h,move:b,clone:g,delete:y}=Sa(aa),v=({currentItem:t,index:n})=>p(t)?(0,e.createElement)(f,{currentItem:t,index:n}):(0,e.createElement)("span",{className:"repeater-item-title"},`#${n+1}`);return(0,e.createElement)("div",{className:"jet-form-builder__repeater-component",key:"jet-form-builder-repeater"},r.map(((t,n)=>(0,e.createElement)(va,{size:"small",elevation:2,className:"jet-form-builder__repeater-component-item",key:`jet-form-builder__repeater-component-item-${n}`},(0,e.createElement)(Ea,{className:"repeater__item__header"},(0,e.createElement)("div",{className:"repeater-item__left-heading"},(0,e.createElement)(Ca,{className:"repeater-action-buttons jet-fb-toggle-group-control",hideLabelFromVision:!0},(!h||h(t))&&(0,e.createElement)(wa,{variant:"tertiary",isSmall:!0,icon:t.__visible?"no-alt":"edit",onClick:()=>u(n),className:"repeater-action-button jet-fb-is-thick"}),(!b||b(t))&&(0,e.createElement)(wa,{variant:"tertiary",isSmall:!0,isSecondary:!0,disabled:!Boolean(n),icon:"arrow-up-alt2",onClick:()=>s(n),className:"repeater-action-button jet-fb-is-thick"}),(!b||b(t))&&(0,e.createElement)(wa,{variant:"tertiary",isSmall:!0,isSecondary:!0,disabled:!(nc(n),className:"repeater-action-button jet-fb-is-thick"})),(0,e.createElement)(v,{currentItem:t,index:n})),(0,e.createElement)(Ca,{className:"jet-fb-toggle-group-control",hideLabelFromVision:!0},(!g||g(t))&&(0,e.createElement)(wa,{variant:"tertiary",isSmall:!0,isSecondary:!0,onClick:()=>i(n),className:"jet-fb-is-thick",icon:"admin-page"}),(!y||y(t))&&(0,e.createElement)(zt,{icon:"trash",isDestructive:!0},(0,e.createElement)(Jt.Consumer,null,(({setShowPopover:t})=>(0,e.createElement)("div",{style:{padding:"0.5em",width:"max-content"}},(0,e.createElement)("span",null,ja("Delete this item?","jet-form-builder"))," ",(0,e.createElement)(wa,{isLink:!0,isDestructive:!0,onClick:()=>m(n)},ja("Yes","jet-form-builder"))," / ",(0,e.createElement)(wa,{isLink:!0,onClick:()=>t(!1)},ja("No","jet-form-builder")))))))),t.__visible&&(0,e.createElement)(_a,{className:"repeater-item__content",key:`jet-form-builder__card-body-${n}`},(()=>{const r={currentItem:t,changeCurrentItem:e=>d(e,n),currentIndex:n};return(0,e.createElement)(ra.Provider,{value:r},!a&&"Set up your Repeater Template, please.","function"==typeof a?a(r):a)})())))))},{__experimentalToggleGroupControl:Na,__experimentalToggleGroupControlOption:Fa}=wp.components,{__:Ta}=wp.i18n;let{formats:Ia}=window.jetFormValidation;const Ba=window.jfb.data,{messages:Aa}=window.jetFormValidation,Oa=function(e){return Aa.find((({id:t})=>e===t))},{TextControl:Ra}=wp.components,Ma=ke((0,o.forwardRef)((function({icon:e,size:t=24,...n},r){return(0,o.cloneElement)(e,{width:t,height:t,...n,ref:r})})))({name:"StyledIcon",class:"sfqmk5y",propsAsIs:!0});n(483);const{createContext:Pa}=wp.element,Ga=Pa({FieldSelect:null,property:""}),La=function({state:t,children:n}){const r=pa(t);return(0,e.createElement)(ha.Provider,{value:r},n)},Da=window.wp.apiFetch;var qa=n.n(Da);const{rest_add_state:Va,rest_delete_state:Ja}=window.jetFormBlockConditions,{Fill:$a}=c,Ua=({setShowModal:t,changeCurrentItem:n,currentItem:r})=>{var l;const[a,i]=(0,o.useState)(!1),[s,c]=(0,o.useState)({}),[m,p]=(0,o.useState)("");let f=[...null!==(l=r.render_state)&&void 0!==l?l:[]];const{addRenderState:b,deleteRenderStates:g}=(0,pe.useDispatch)("jet-forms/block-conditions"),y=(0,pe.useSelect)((e=>e("jet-forms/block-conditions").getCustomRenderStates()),[a,s]);return(0,e.createElement)(h,{title:(0,d.__)("Register custom render state","jet-form-builder"),onRequestClose:()=>t(!1),classNames:["width-45"]},(0,e.createElement)("div",{className:"jet-fb with-button"},(0,e.createElement)(u.TextControl,{value:m,onChange:e=>p(e),placeholder:(0,d.__)("Set your custom state name","jet-form-builder")}),(0,e.createElement)(u.Button,{variant:"secondary",onClick:()=>{i(!0),Va.data={value:m},qa()(Va).then((e=>{var r;r=e.state,b(r),f.push(r.value),n({render_state:f}),i(!1),t(!1)})).catch((e=>{console.error(e),i(!1)}))},disabled:a,isBusy:a,style:{padding:"7px 12px",height:"unset"}},(0,d.__)("Add","jet-form-builder"))),Boolean(y?.length)&&(0,e.createElement)(e.Fragment,null,(0,e.createElement)("b",{className:"jet-fb flex mb-05-em"},(0,d.__)("Manage your custom states:","jet-form-builder")),(0,e.createElement)("div",{className:"jet-fb-buttons-flex"},y.map((t=>{var r;return(0,e.createElement)(u.Button,{key:t.value,icon:"no-alt",iconPosition:"right",onClick:()=>{return e=t.value,Ja.data={list:[e]},c((t=>({...t,[e]:!0}))),void qa()(Ja).then((()=>{(e=>{g(e),f=f.filter((t=>t!==e)),n({render_state:f})})(e)})).catch(console.error).finally((()=>{c((t=>({...t,[e]:!1})))}));var e},isBusy:null!==(r=s[t.value])&&void 0!==r&&r},t.label)})))),(0,e.createElement)($a,null,(0,e.createElement)("span",null)))},{Button:Ha,BaseControl:Wa,FormTokenField:za}=wp.components,{__:Ya}=wp.i18n,{useState:Ka}=wp.element,{useSelect:Xa}=wp.data,Za=({currentItem:t,changeCurrentItem:n})=>{const[r,l]=Ka(!1),o=Xa((e=>y(e("jet-forms/block-conditions").getRenderStates(),"value")),[r]);return(0,e.createElement)(e.Fragment,null,(0,e.createElement)(Wa,{label:Ya("Render State","jet-form-builder"),className:"control-flex"},(0,e.createElement)("div",null,(0,e.createElement)("label",{className:"jet-fb label mb-05-em"},Ya("Add render state","jet-form-builder")),(0,e.createElement)("div",{className:"jet-fb with-button clear-label"},(0,e.createElement)(za,{value:t.render_state,suggestions:o,onChange:e=>n({render_state:e}),tokenizeOnSpace:!0,__experimentalExpandOnFocus:!0}),(0,e.createElement)(Ha,{label:Ya("New render state","jet-form-builder"),variant:"secondary",icon:"plus-alt2",onClick:()=>l(!0)})))),r&&(0,e.createElement)(Ua,{setShowModal:l,changeCurrentItem:n,currentItem:t}))},Qa=function({children:t,value:n,label:r,onChangePreset:l=!1,onChangeMacros:o=!1,macroWithCurrent:a=!1}){const i=(0,tr.useInstanceId)(u.FlexItem,"jfb-AdvancedModalControl");return(0,e.createElement)("div",{className:"components-base-control"},(0,e.createElement)(u.Flex,{align:"flex-start",className:"components-base-control__field"},(0,e.createElement)(u.FlexItem,{isBlock:!0},(0,e.createElement)(u.Flex,{align:"center",justify:"flex-start"},(0,e.createElement)("label",{htmlFor:i,className:"jet-fb label"},r),!1!==l&&(0,e.createElement)(qt,{value:n,onChange:l}),!1!==o&&(0,e.createElement)(bn,{onClick:o,withCurrent:a}))),(0,e.createElement)(u.FlexItem,{isBlock:!0,style:{flex:3,marginLeft:"unset"}},"function"==typeof t?t({instanceId:i}):t)))},{TextareaControl:ei,withFilters:ti}=wp.components,{__:ni}=wp.i18n,ri=ti("jet.fb.block.conditions.options")((t=>{const{currentItem:n,changeCurrentItem:r}=t,l=de();return["empty","not_empty"].includes(n.operator)?null:"render_state"===n.operator?(0,e.createElement)(Za,{key:l("RenderStateOptions"),changeCurrentItem:r,currentItem:n}):(0,e.createElement)(xn,null,(0,e.createElement)(Qa,{value:n.value,label:ni("Value to compare","jet-form-builder"),onChangePreset:e=>r({value:e}),onChangeMacros:e=>{var t;return r({value:(null!==(t=n.value)&&void 0!==t?t:"")+e})}},(({instanceId:t})=>(0,e.createElement)(ei,{id:t,value:n.value,onChange:e=>r({value:e})}))))})),{SelectControl:li,withFilters:oi}=wp.components,{__:ai}=wp.i18n,ii=oi("jet.fb.block.conditions.options")((t=>{const{currentItem:n,changeCurrentItem:r}=t,l=(0,hn.useFields)({placeholder:"--"});return"render_state"===n.operator?null:(0,e.createElement)(li,{label:ai("Field","jet-form-builder"),labelPosition:"side",value:n.field,options:l,onChange:e=>{r({field:e})}})})),{useContext:si}=wp.element,{SelectControl:ci}=wp.components,{__:ui}=wp.i18n,di=function(){const{currentItem:t,changeCurrentItem:n}=si(ra),r=de(),{operators:l}=ce();return(0,e.createElement)(e.Fragment,null,(0,e.createElement)(ii,{currentItem:t,changeCurrentItem:n}),(0,e.createElement)(ci,{key:r("SelectControl-operator"),label:ui("Operator","jet-form-builder"),labelPosition:"side",value:t.operator,options:l,onChange:e=>n({operator:e})}),(0,e.createElement)(ri,{currentItem:t,changeCurrentItem:n}))},{select:mi}=wp.data,pi=function(e){return mi("jet-forms/block-conditions").readCondition(e)},{__:fi}=wp.i18n,hi=function({children:t}){return(0,e.createElement)(oa.Provider,{value:{isSupported:()=>!0,render:({currentItem:t})=>(0,e.createElement)("span",{className:"repeater-item-title",dangerouslySetInnerHTML:{__html:t?.or_operator?fi("OR","jet-form-builder"):pi(t)}})}},(0,e.createElement)(aa.Provider,{value:{edit:e=>!e.or_operator}},t))},{__:bi}=wp.i18n,{useState:gi,useContext:yi,Fragment:vi,useEffect:wi,useRef:Ei}=wp.element,{SelectControl:_i,TextareaControl:Ci,FlexItem:ki,Flex:Si,ToggleControl:ji}=wp.components,xi=[{key:"commas",render:()=>(0,e.createElement)("li",null,bi("If this field supports multiple values, you can separate them with commas. If a string value is expected, wrap it in single quotes like '%value_field%'.","jet-form-builder"))}],Ni=[{value:"on_change",label:bi("On change conditions result","jet-form-builder"),help:bi("The value will be applied if condition check-ups return a result different from the first check-up's cached value","jet-form-builder")},{value:"once",label:bi("Once","jet-form-builder"),help:bi("The value will be applied only the first time the condition is matched","jet-form-builder")},{value:"always",label:bi("Always","jet-form-builder"),help:bi("The value will be applied every time the condition is matched","jet-form-builder")}],Fi=e=>Ni.find((t=>t.value===(null!=e?e:"on_change"))).help,Ti=function(){var t,n,r,l;const{current:o,update:a}=yi(sa),[i,s]=gi((()=>o)),c=Ei(null),[u,d]=gi((()=>Fi(i.frequency)));wi((()=>{d(Fi(i.frequency))}),[i.frequency]);const m=e=>{s((t=>({...t,...e})))};return W((()=>a(i))),(0,e.createElement)(vi,null,(0,e.createElement)(Si,{align:"flex-start"},(0,e.createElement)(ki,{isBlock:!0},(0,e.createElement)(Si,{align:"center",justify:"flex-start"},(0,e.createElement)("span",{className:"jet-fb label"},bi("Value to set","jet-form-builder")),(0,e.createElement)(qt,{value:i.to_set,onChange:e=>m({to_set:e})}),(0,e.createElement)(xn,{withThis:!0},(0,e.createElement)(bn,{onClick:e=>(e=>{const t=c.current;if(t){const n=t.selectionStart,r=t.selectionEnd,l=i.to_set||"",o=l.slice(0,n)+e+l.slice(r);m({to_set:`${o}`}),setTimeout((()=>{t.focus(),t.selectionStart=t.selectionEnd=n+e.length}),0)}})(e)}))),(0,e.createElement)(ut,null,(0,e.createElement)("ul",null,xi.map((t=>(0,e.createElement)(vi,{key:t.key},t.render())))))),(0,e.createElement)(ki,{isBlock:!0,style:{flex:3,marginLeft:"unset"}},(0,e.createElement)(Ci,{className:"jet-control-clear",hideLabelFromVision:!0,value:null!==(t=i.to_set)&&void 0!==t?t:"",onChange:e=>m({to_set:e}),ref:c}))),(0,e.createElement)(_i,{options:Ni,value:null!==(n=i.frequency)&&void 0!==n?n:"on_change",label:bi("Apply type","jet-form-builder"),labelPosition:"side",onChange:e=>m({frequency:e}),help:u}),(0,e.createElement)(La,{state:e=>{var t;m({conditions:"function"==typeof e?e(null!==(t=i.conditions)&&void 0!==t?t:[]):e})}},(0,e.createElement)(hi,null,(0,e.createElement)(xa,{items:null!==(r=i.conditions)&&void 0!==r?r:[]},(0,e.createElement)(di,null))),(0,e.createElement)("div",{className:"jet-fb flex jc-space-between ai-center"},(0,e.createElement)(ya,null,bi("Add New Condition","jet-form-builder")),(0,e.createElement)(ji,{className:"jet-fb m-unset clear-control",label:bi("Set value only if field is empty","jet-form-builder"),checked:null!==(l=i.set_on_empty)&&void 0!==l&&l,onChange:e=>m({set_on_empty:e})}))))},{__:Ii}=wp.i18n,{Children:Bi,cloneElement:Ai}=wp.element,Oi=function({conditions:t,showWarning:n=!1}){let r=[],l="";return Boolean(t?.length)&&(l=pi(t[0]),r=t.filter(((e,t)=>0!==t)).map(((t,n)=>(0,e.createElement)("span",{key:n,"data-title":Ii("And","jet-form-builder")+":",dangerouslySetInnerHTML:{__html:pi(t)}})))),l?(0,e.createElement)(e.Fragment,null,(0,e.createElement)("span",{"data-title":Ii("If","jet-form-builder")+":",dangerouslySetInnerHTML:{__html:l}}),Bi.map(r,Ai)):n&&(0,e.createElement)("span",{"data-title":Ii("The condition is not fully configured.","jet-form-builder")})},Ri=function({isHover:t=!1,children:n}){return(0,e.createElement)("div",{className:["jet-fb",t?"show":"hide","p-absolute","wh-100","flex-center","gap-05em"].join(" "),style:{backgroundColor:"#ffffffcc",transition:"0.3s"}},n)},Mi=function({children:t}){return(0,e.createElement)("div",{className:["jet-fb","flex","flex-dir-column","container","gap-1em"].join(" ")},t)},{__:Pi}=wp.i18n,{useState:Gi}=wp.element,{Button:Li}=wp.components,Di=function({current:t,update:n,isOpenModal:r,setOpenModal:l}){const[o,a]=Gi(!1),[i,s]=Gi(!1),c=1>=Object.keys(t)?.length;return(0,e.createElement)(sa.Provider,{value:{update:e=>{n((n=>{const r=JSON.parse(JSON.stringify(n.groups));for(const n in r)r.hasOwnProperty(n)&&t.id===r[n].id&&(r[n]={...r[n],...e});return{groups:r}}))},current:t}},(0,e.createElement)("div",{className:"jet-fb p-relative",onMouseOver:()=>s(!0),onFocus:()=>s(!0),onMouseOut:()=>s(!1),onBlur:()=>s(!1)},(0,e.createElement)(Ri,{isHover:i},(0,e.createElement)(Li,{isSmall:!0,isSecondary:!0,icon:o?"no-alt":"edit",onClick:()=>a((e=>!e))},Pi("Edit","jet-form-builder")),(0,e.createElement)(Li,{isSmall:!0,isDestructive:!0,icon:"trash",onClick:()=>{n((e=>({groups:JSON.parse(JSON.stringify(e.groups)).filter((({id:e})=>e!==t.id))})))}},Pi("Delete","jet-form-builder"))),(0,e.createElement)(Mi,null,c?(0,e.createElement)("div",{"data-title":Pi("This value item is empty","jet-form-builder")}):(0,e.createElement)(e.Fragment,null,(0,e.createElement)("span",{"data-title":Pi("Set","jet-form-builder")+":",dangerouslySetInnerHTML:{__html:Lr(t.to_set)}}),(0,e.createElement)(Oi,{conditions:t?.conditions})))),(o||r===t.id)&&(0,e.createElement)(h,{classNames:["width-60"],onRequestClose:()=>{a(!1),l(!1)},title:Pi("Edit Dynamic Value","jet-form-builder")},(0,e.createElement)(Ti,null)))},qi=function({children:t,...n}){return(0,e.createElement)("div",{className:"jet-fb flex flex-dir-column gap-default",style:{marginBottom:"1em"},...n},t)},{__:Vi}=wp.i18n,{useState:Ji}=wp.element,{Button:$i}=wp.components,Ui=function(){var t,n;const[r,l]=fe(),o=de(),a=null!==(t=r.value)&&void 0!==t?t:{},i=null!==(n=a.groups)&&void 0!==n?n:[],[s,c]=Ji(!1);if(!he("value"))return null;const u=i.filter(((e,t)=>0!==t)),d=e=>{l({...r,value:{...a,..."function"==typeof e?e(a):e}})};return(0,e.createElement)(e.Fragment,null,(0,e.createElement)(ut,null,Vi("Or use a condition-dependent value","jet-form-builder")+" ",(0,e.createElement)($i,{isLink:!0,onClick:()=>{},label:Vi("Former Set Value functionality, moved from the Conditional Block","jet-form-builder"),showTooltip:!0},"(?)")),Boolean(i.length)?(0,e.createElement)(qi,null,(0,e.createElement)(Di,{key:o(i[0].id),current:i[0],update:d,isOpenModal:s,setOpenModal:c}),Boolean(u.length)&&u.map((t=>(0,e.createElement)(e.Fragment,null,(0,e.createElement)("b",null,Vi("OR","jet-form-builder")),(0,e.createElement)(Di,{key:o(t.id),current:t,update:d,isOpenModal:s,setOpenModal:c}))))):null,(0,e.createElement)($i,{icon:"plus-alt2",isSecondary:!0,onClick:()=>{const e=k.getRandomID();d({groups:[...i,{id:e,conditions:[{__visible:!0}]}]}),c(e)}},Vi("Add Dynamic Value","jet-form-builder")))},{Button:Hi}=wp.components,{useContext:Wi}=wp.element,{SelectControl:zi}=wp.components,{useContext:Yi,useMemo:Ki}=wp.element,{__:Xi}=wp.i18n,Zi=function(){const{currentItem:t,changeCurrentItem:n}=Yi(ra),r=Ki((()=>O(Xi("Custom value","jet-form-builder"))),[]);return(0,e.createElement)(zi,{labelPosition:"side",options:r,label:Xi("Choose field","jet-form-builder"),value:t.field,onChange:e=>n({field:e})})},{SelectControl:Qi,TextareaControl:es,TextControl:ts,withFilters:ns}=wp.components,{useContext:rs,useState:ls,useEffect:os}=wp.element,{__:as}=wp.i18n,{addFilter:is}=wp.hooks,{rule_types:ss,ssr_callbacks:cs}=window.jetFormValidation,us=cs.map((({value:e})=>e));function ds(e){var t;const n=ss.findIndex((({value:t})=>t===e)),r=as("Enter value","jet-form-builder");return-1===n?r:null!==(t=ss[n]?.control_label)&&void 0!==t?t:r}is("jet.fb.advanced.rule.controls","jet-form-builder",(t=>n=>{const{currentItem:r,changeCurrentItem:l}=n,[o,a]=ls(!1),[i]=(0,K.useActions)(),s=i.some((e=>"save_record"===e.type&&(void 0===e.is_execute||!0===e.is_execute)))?"success":"error";if("ssr"!==r.type)return(0,e.createElement)(t,{...n});const c=r.value||"custom_jfb_field_validation";return(0,e.createElement)(e.Fragment,null,(0,e.createElement)(Qi,{labelPosition:"side",options:k.withPlaceholder(cs,as("Custom function","jet-form-builder")),label:as("Choose callback","jet-form-builder"),value:r.value,onChange:e=>l({value:e})}),"is_field_value_unique"===r.value&&(0,e.createElement)(u.Notice,{status:s,isDismissible:!1},as("This callback requires the Save Form Record action to work correctly.","jet-form-builder")),"is_user_password_valid"===r.value&&(0,e.createElement)(u.Notice,{status:"success",isDismissible:!1},as("Works only for logged users.","jet-form-builder")),!us.includes(r.value)&&(0,e.createElement)(e.Fragment,null,(0,e.createElement)(ts,{label:as("Function name","jet-form-builder"),value:r.value,onChange:e=>l({value:e})}),(0,e.createElement)(ut,null,as("Example of registering a function below.","jet-form-builder")+" ",(0,e.createElement)("a",{href:"javascript:void(0)",onClick:()=>a((e=>!e))},as(o?"Hide":"Show","jet-form-builder"))),o&&(0,e.createElement)("pre",null,`/**\n * To get all the values of the fields in the form, you can use the expression:\n * jet_fb_request_handler()->get_request() or $context->get_request()\n *\n * If the field is located in the middle of the repeater, then only\n * jet_fb_request_handler()->get_request(), but $context->get_request() \n * will return the values of all fields of the current repeater element\n *\n * @param $value mixed\n * @param $context \\Jet_Form_Builder\\Request\\Parser_Context\n *\n * @return bool\n */\nfunction ${c}( $value, $context ): bool {\n\t// your logic\n\treturn true;\n}`)))}));const ms=ns("jet.fb.advanced.rule.controls")((function({currentItem:t,changeCurrentItem:n}){const[r,l]=ls((()=>ds(t.type)));switch(os((()=>{l(ds(t.type))}),[t.type]),t.type){case"equal":case"contain":case"contain_not":case"regexp":case"regexp_not":return(0,e.createElement)(e.Fragment,null,(0,e.createElement)(Zi,null),!Boolean(t.field)&&(0,e.createElement)(Qa,{value:t.value,label:r,onChangePreset:e=>n({value:e}),onChangeMacros:e=>{var r;return n({value:(null!==(r=t.value)&&void 0!==r?r:"")+e})}},(({instanceId:r})=>(0,e.createElement)(es,{id:r,value:t.value,onChange:e=>n({value:e})}))));default:return null}})),ps=function(){const{currentItem:t,changeCurrentItem:n}=rs(ra);return(0,e.createElement)(e.Fragment,null,(0,e.createElement)(Qi,{labelPosition:"side",options:k.withPlaceholder(ss),label:as("Rule type","jet-form-builder"),value:t.type,onChange:e=>n({type:e})}),(0,e.createElement)(ms,{currentItem:t,changeCurrentItem:n}),(0,e.createElement)(es,{label:as("Error message","jet-form-builder"),value:t.message,onChange:e=>n({message:e})}))},{select:fs}=wp.data,hs=function(e){return fs("jet-forms/validation").readRule(e)},{useState:bs}=wp.element,{__:gs}=wp.i18n,ys=function(){const[t,n]=fe(),[r,l]=bs((()=>{var e;return null!==(e=t.validation?.rules)&&void 0!==e?e:[]}));return W((()=>{n((e=>({...e,validation:{...t.validation,rules:r}})))})),(0,e.createElement)(La,{state:l},(0,e.createElement)(oa.Provider,{value:{isSupported:()=>!0,render:({currentItem:t})=>(0,e.createElement)("span",{className:"repeater-item-title",dangerouslySetInnerHTML:{__html:hs(t)}})}},(0,e.createElement)(xa,{items:r},(0,e.createElement)(ps,null))),(0,e.createElement)(ya,null,gs("Add Rule","jet-form-builder")))},{createContext:vs}=wp.element,ws=vs({showModal:!1,setShowModal:()=>{}}),{useContext:Es,useState:_s}=wp.element,{__:Cs}=wp.i18n,{Button:ks}=wp.components,Ss=function(){const{setShowModal:t}=Es(ws),[n,r]=fe(),[l,o]=_s(!1);return(0,e.createElement)("div",{className:"jet-fb p-relative",onMouseOver:()=>o(!0),onFocus:()=>o(!0),onMouseOut:()=>o(!1),onBlur:()=>o(!1)},(0,e.createElement)(Ri,{isHover:l},(0,e.createElement)(ks,{isSmall:!0,isSecondary:!0,icon:"plus-alt2",onClick:()=>{r({validation:{...n.validation,rules:[{__visible:!0}]}}),t((e=>!e))}},Cs("Add new","jet-form-builder"))),(0,e.createElement)(Mi,null,(0,e.createElement)("span",{"data-title":Cs("You have no rules for this field.","jet-form-builder")}),(0,e.createElement)("span",{"data-title":Cs("Please click here to add new.","jet-form-builder")})))},{__:js}=wp.i18n,xs=function({rule:t}){return t.type?(0,e.createElement)(e.Fragment,null,(0,e.createElement)("span",{"data-title":js("Rule:","jet-form-builder"),dangerouslySetInnerHTML:{__html:hs(t)}}),Boolean(t.message)&&(0,e.createElement)("span",{"data-title":js("Message:","jet-form-builder"),dangerouslySetInnerHTML:{__html:t.message}})):(0,e.createElement)("span",{"data-title":js("The rule is not fully configured.","jet-form-builder")})},{useContext:Ns,useState:Fs}=wp.element,{__:Ts}=wp.i18n,{Button:Is}=wp.components,Bs=function({rule:t,index:n=0}){const{setShowModal:r}=Ns(ws),[l,o]=fe(),[a,i]=Fs(!1);return(0,e.createElement)("div",{className:"jet-fb p-relative",onMouseOver:()=>i(!0),onFocus:()=>i(!0),onMouseOut:()=>i(!1),onBlur:()=>i(!1)},(0,e.createElement)(Ri,{isHover:a},(0,e.createElement)(Is,{isSmall:!0,isSecondary:!0,icon:"edit",onClick:()=>{o({validation:{...l.validation,rules:l.validation.rules.map(((e,t)=>(e.__visible=n===t,e)))}}),r((e=>!e))}},Ts("Edit","jet-form-builder")),(0,e.createElement)(Is,{isSmall:!0,isDestructive:!0,icon:"trash",onClick:()=>{o({validation:{...l.validation,rules:l.validation.rules.filter(((e,t)=>t!==n))}})}},Ts("Delete","jet-form-builder"))),(0,e.createElement)(Mi,null,(0,e.createElement)(xs,{rule:t})))},{__:As}=wp.i18n,{Children:Os,cloneElement:Rs}=wp.element;const Ms=function(){const[t]=fe();return t?.validation?.rules?.length?(0,e.createElement)(qi,null,Os.map(function(t){const n=t.filter(((e,t)=>0!==t));return[(0,e.createElement)(Bs,{rule:t[0],key:"first_item"}),...n.map(((t,n)=>((t,n)=>(0,e.createElement)(e.Fragment,null,(0,e.createElement)("b",null,As("AND","jet-form-builder")),(0,e.createElement)(Bs,{rule:t,index:n})))(t,n+1)))]}(t.validation.rules),Rs)):(0,e.createElement)(Ss,null)},{useState:Ps}=wp.element,{__:Gs}=wp.i18n,{useBlockProps:Ls}=wp.blockEditor,{TextControl:Ds,SelectControl:qs,ToggleControl:Vs,BaseControl:Js,__experimentalNumberControl:$s}=wp.components;let{NumberControl:Us}=wp.components;void 0===Us&&(Us=$s);const{FormToggle:Hs,BaseControl:Ws,Flex:zs}=wp.components,{useInstanceId:Ys}=wp.compose,{useBlockProps:Ks}=wp.blockEditor,{useEffect:Xs}=wp.element,{useSelect:Zs}=wp.data,{useBlockProps:Qs}=wp.blockEditor,{useSelect:ec}=wp.data,{CustomSelectControl:tc,Icon:nc}=wp.components,{useBlockEditContext:rc}=wp.blockEditor,{Children:lc,cloneElement:oc,useContext:ac}=wp.element,{useSelect:ic}=wp.data,{useBlockEditContext:sc}=wp.blockEditor;let{__experimentalToggleGroupControl:cc,__experimentalToggleGroupControlOptionIcon:uc,__experimentalToolbarContext:dc,ToggleGroupControl:mc,ToggleGroupControlOptionIcon:pc,ToolbarItem:fc,ToolbarGroup:hc,ToolbarContext:bc}=wp.components;function gc({value:t}){const{name:n}=sc(),r=ac(bc),[,l]=fe(),{variations:o,components:a}=ic((t=>{const{getBlockVariations:l}=t("core/blocks"),o=l(n,"block");return{variations:o,components:o.map((t=>{var n;return(null!==(n=r?.currentId)&&void 0!==n?n:r?.baseId)?(0,e.createElement)(fc,{key:t.name,as:pc,value:t.name,label:t.title,icon:t.icon}):(0,e.createElement)(pc,{key:t.name,value:t.name,label:t.title,icon:t.icon})}))}}),[]);return o.length?(0,e.createElement)("div",{className:"jfb-variations-toolbar-toggle"},(0,e.createElement)(mc,{hideLabelFromVision:!0,onChange:e=>l({...o.find((({name:t})=>t===e)).attributes}),value:t,isBlock:!0},lc.map(a,oc))):null}mc=mc||cc,pc=pc||uc,bc=bc||dc;const{useSelect:yc}=wp.data,{useBlockEditContext:vc}=wp.blockEditor,{get:wc}=window._,{useBlockProps:Ec,RichText:_c}=wp.blockEditor,{Button:Cc}=wp.components,{createContext:kc}=wp.element,Sc=kc({}),{useContext:jc}=wp.element,{useState:xc}=wp.element,{get:Nc}=window._,{useSelect:Fc,useDispatch:Tc}=wp.data;var Ic,Bc,Ac;window.JetFBComponents={...null!==(Ic=window?.JetFBComponents)&&void 0!==Ic?Ic:{},BaseLabel:yn,ActionFieldsMap:function({fields:t=[],label:n="[Empty label]",children:a=null,plainHelp:i="",customHelp:s=!1}){return(0,e.createElement)(l.RowControl,{align:"flex-start"},(0,e.createElement)(l.Label,null,n),(0,e.createElement)(l.RowControlEnd,null,s&&"function"==typeof s&&s(),Boolean(i.length)&&(0,e.createElement)("span",{className:"description-controls"},i),t.map((([t,n],l)=>(0,e.createElement)(o.Fragment,{key:`field_in_map_${t+l}`},(0,e.createElement)(r.Provider,{value:{name:t,data:n,index:l}},"function"==typeof a?a({fieldId:t,fieldData:n,index:l}):a))))))},ActionModal:h,ActionModalContext:i,SafeDeleteContext:ta,RepeaterItemContext:ra,RepeaterBodyContext:la,RepeaterHeadContext:oa,RepeaterButtonsContext:aa,ActionFieldsMapContext:r,CurrentPropertyMapContext:Ga,BlockValueItemContext:sa,DynamicPropertySelect:function({dynamic:t=[],parseValue:n=null,children:a=null,properties:i=null}){const{source:s,settings:c,setMapField:u}=(0,o.useContext)(K.CurrentActionEditContext);i=null!=i?i:s.properties;const{name:d,index:m}=(0,o.useContext)(r),{fields_map:p={}}=c;function f(e){var r;for(const t of i)if(e===t.value)return e;return n?n(e):null!==(r=t[0])&&void 0!==r?r:""}const[h,b]=(0,o.useState)((()=>{var e;return f(null!==(e=p[d])&&void 0!==e?e:"")})),g=(0,e.createElement)(l.StyledSelectControl,{key:d+m,value:h,options:i,help:(()=>{var e;const t=i.find((({value:e})=>e===h));return null!==(e=t?.help)&&void 0!==e?e:""})(),onChange:e=>{const n=f(e);b(n),u({nameField:d,value:t.includes(e)?"":e})}});return(0,e.createElement)(Ga.Provider,{value:{FieldSelect:g,property:h}},a&&a,!a&&g)},SafeDeleteToggle:function(t){const[n,r]=da(!0);return(0,e.createElement)(e.Fragment,null,(0,e.createElement)(ca,{label:ua("Safe deleting","jet-form-builder"),checked:n,onChange:r}),(0,e.createElement)(ta.Provider,{value:n},t.children))},RepeaterAddNew:ya,RepeaterAddOrOperator:function(t){var n;const{onSetState:r,functions:l,children:o}=t,{addNewItem:a}=null!==(n=null!=l?l:pa(r))&&void 0!==n?n:Wi(ha);return(0,e.createElement)(Hi,{isSecondary:!0,icon:"randomize",onClick:()=>a({__visible:!1,or_operator:!0})},o)},Repeater:xa,WrapperRequiredControl:function({children:t,labelKey:n="label",requiredKey:l="required",helpKey:o="help",field:a=[]}){let{name:i,data:s}=g(r);return a.length&&([i,s]=a),(0,e.createElement)("div",{className:"jet-user-meta__row",key:"user_meta_"+i},(0,e.createElement)("div",{className:"jet-field-map__row-label"},(0,e.createElement)("span",{className:"fields-map__label"},s.hasOwnProperty(n)&&s[n]&&s[n],!s.hasOwnProperty(n)&&s),s.hasOwnProperty(l)&&s[l]&&(0,e.createElement)("span",{className:"fields-map__required"}," *"),s[o]&&(0,e.createElement)("p",{className:"components-base-control__help",style:{color:"rgb(117, 117, 117)",margin:"1em 0 0 0"}},(0,e.createElement)(b,null,s[o]))),t)},DynamicPreset:Ie,JetFieldsMapControl:Re,FieldWithPreset:function({children:t=null,ModalEditor:n,triggerClasses:r=[],baseControlProps:l={}}){const[o,a]=Le(!1),i=()=>{a((e=>!e))},s=["jet-form-dynamic-preset__trigger",...r].join(" ");return(0,e.createElement)(e.Fragment,null,(0,e.createElement)(Ge,{className:"jet-form-dynamic-preset",...l},t,(0,e.createElement)("div",{className:s,onClick:i},(0,e.createElement)(Pe,{viewBox:"0 0 54 64",fill:"none",xmlns:"http://www.w3.org/2000/svg"},(0,e.createElement)(Me,{d:"M42.6396 26.4347C37.8682 27.3436 32.5666 28.0252 27.1894 28.0252C21.8121 28.0252 16.4348 27.3436 11.7391 26.4347C6.96774 25.4502 3.18093 23.8597 0.37868 21.9663L0.37868 28.0252C0.37868 29.5399 1.59046 31.1304 3.78682 32.4179C5.98317 33.7054 9.46704 34.9172 13.6325 35.5988C17.798 36.2805 22.115 36.8106 27.1894 36.8106C32.2637 36.8106 36.6564 36.5077 40.7462 35.5988C44.8359 34.69 48.3198 33.7054 50.5162 32.4179C52.7125 31.1304 54 29.5399 54 28.0252L54 21.9663C51.122 23.8597 47.3352 25.4502 42.6396 26.4347ZM42.6396 53.5484C37.8682 54.5329 32.5666 55.1388 27.1894 55.1388C21.8121 55.1388 16.4348 54.5329 11.7391 53.5484C7.04348 52.5638 3.18093 51.0491 0.378682 49.1556L0.378682 55.1388C0.378683 56.7293 1.59046 58.3197 3.78682 59.5315C6.36186 60.819 9.46705 62.1066 13.6325 62.7125C17.7223 63.697 22.115 64 27.1894 64C32.2637 64 36.6564 63.697 40.7462 62.7125C44.8359 61.8036 48.3198 60.819 50.5162 59.5315C52.7125 57.9411 54 56.7293 54 54.8359L54 48.8527C51.122 51.0491 47.3352 52.2608 42.6396 53.5484ZM42.6396 39.9915C37.8682 40.9004 32.5666 41.582 27.1894 41.582C21.8121 41.582 16.4348 40.9004 11.7391 39.9915C6.96774 39.007 3.18093 37.4922 0.378681 35.5988L0.378681 41.582C0.378681 43.1725 1.59046 44.6872 3.78682 45.9747C6.36185 47.2622 9.46705 48.474 13.6325 49.1556C17.7223 50.0645 22.115 50.3674 27.1894 50.3674C32.2637 50.3674 36.6564 50.0645 40.7462 49.1556C44.8359 48.1711 48.3198 47.2622 50.5162 45.9747C52.7125 44.3843 54 43.1725 54 41.582L54 35.5988C51.122 37.4922 47.3352 39.007 42.6396 39.9915ZM40.4432 2.12337C36.3535 1.13879 31.885 0.835848 26.8864 0.835849C21.8878 0.835849 17.4194 1.13879 13.2539 2.12337C9.08836 3.10794 5.68022 4.01678 3.48387 5.3043C1.28751 6.59181 -3.4782e-06 8.10654 -3.33916e-06 9.697L-2.95513e-06 14.0897C-2.81609e-06 15.6802 1.28752 17.2706 3.48387 18.5582C6.05891 19.7699 9.1641 21.0575 13.2539 21.6633C17.3436 22.2692 21.8121 22.9509 26.8864 22.9509C31.9607 22.9509 36.3535 22.9509 40.4432 22.345C44.533 21.7391 48.0169 20.4516 50.2132 19.164C52.7125 17.5736 54 15.9831 54 14.3927L54 9.99995C54 8.40948 52.7125 6.81902 50.5162 5.60724C48.3198 4.39546 44.533 2.72926 40.4432 2.12337Z",fill:"#7E8993"})))),o&&(0,e.createElement)(h,{onRequestClose:i,classNames:["width-60"],title:"Edit Preset"},(t=>(0,e.createElement)(n,{...t}))))},GlobalField:ye,AvailableMapField:function({fieldsMap:t,field:n,index:r,value:a,onChangeValue:i,isMapFieldVisible:s}){let c=null;t||(t={}),c=t[n],c&&"object"==typeof c||(c={});const d=({field:t,name:n,index:r,fIndex:o,children:a})=>(0,e.createElement)(u.Card,{key:t+n+r+o,size:"extraSmall",style:{marginBottom:"10px"}},(0,e.createElement)(u.CardHeader,null,(0,e.createElement)("span",{className:"jet-label-overflow"},t)),(0,e.createElement)(l.StyledCardBodyControl,{key:t+n+r+o,className:"jet-form-preset__fields-map-item"},a));return(0,e.createElement)(o.Fragment,{key:`map_field_preset_${n+r}`},window.JetFormEditorData.presetConfig.map_fields.map(((o,m)=>{const p={field:n,name:o.name,index:r,fIndex:m},f="control_"+n+o.name+r+m;switch(o.type){case"text":return s(a,o,n)&&function({field:t,name:n,index:r,fIndex:o},a){return(0,e.createElement)(u.Card,{key:t+n+r+o,size:"extraSmall",style:{marginBottom:"10px"}},(0,e.createElement)(u.CardHeader,null,(0,e.createElement)("span",{className:"jet-label-overflow"},t)),(0,e.createElement)(l.StyledCardBodyControl,{key:t+n+r+o,className:"jet-form-preset__fields-map-item"},a))}(p,(0,e.createElement)(l.StyledTextControl,{key:f+"TextControl",placeholder:o.label,value:c[o.name],onChange:e=>{c[o.name]=e,i({...t,[n]:c},"fields_map")}}));case"select":return s(a,o,n)&&(0,e.createElement)(d,{...p,key:f},(0,e.createElement)(l.StyledSelectControl,{options:o.options,value:c[o.name],onChange:e=>{c[o.name]=e,i({...t,[n]:c},"fields_map")}}));case"custom_select":return s(a,o,n)&&(0,e.createElement)(d,{...p,key:f},(0,e.createElement)(u.CustomSelectControl,{options:o.options,onChange:({selectedItem:e})=>{c[o.name]=e.key,i({...t,[n]:c},"fields_map")},value:o.options.find((e=>e.key===c[o.name]))}));case"grouped_select":return s(a,o,n)&&(0,e.createElement)(d,{...p,key:f},(0,e.createElement)(je,{options:o.options,value:c[o.name],onChange:e=>{c[o.name]=e,i({...t,[n]:c},"fields_map")}}));default:return null}})))},MapField:xe,FieldWrapper:function(t){const{attributes:n,children:r,wrapClasses:l=[],valueIfEmptyLabel:o="",setAttributes:a,childrenPosition:i="between"}=t,s=de(),c=H("_jf_args"),u=Xe((function(){We(n,a)}));function d(){return(0,e.createElement)(ze.VisualLabel,null,Qe(Ze("input label:","jet-form-builder")),(0,e.createElement)("div",{className:"jet-form-builder__label"},(0,e.createElement)(Ye,{key:s("rich-label"),placeholder:"Label...",allowedFormats:[],value:n.label?n.label:o,onChange:e=>a({label:e}),isSelected:!1,...u}),n.required&&(0,e.createElement)("span",{className:"jet-form-builder__required"},c.required_mark?c.required_mark:"*")))}function m(){return(0,e.createElement)("div",{className:"jet-form-builder__desc--wrapper"},Qe(Ze("input description:","jet-form-builder")),(0,e.createElement)(ze,{key:"custom_help_description",className:"jet-form-builder__desc"},(0,e.createElement)("div",{className:"components-base-control__help"},(0,e.createElement)(Ye,{key:s("rich-description"),tagName:"small",placeholder:"Description...",allowedFormats:[],value:n.desc,onChange:e=>a({desc:e}),style:{marginTop:"0px"}}))))}return"row"===c.fields_layout&&l.push("jet-form-builder-row__flex"),n?.crocoblock_styles?._uniqueClassName&&l.push(n.crocoblock_styles._uniqueClassName),(0,e.createElement)(ze,{key:s("placeHolder_block"),className:_("jet-form-builder__field-wrap","jet-form-builder-row",l)},"row"!==c.fields_layout&&(0,e.createElement)(e.Fragment,null,"top"===i&&r,d(),"between"===i&&r,m(),"bottom"===i&&r),"row"===c.fields_layout&&(0,e.createElement)(e.Fragment,null,(0,e.createElement)("div",{className:"jet-form-builder-row__flex--label"},d(),m()),(0,e.createElement)("div",{className:"jet-form-builder-row__flex--content"},r)))},MacrosInserter:function({children:t,fields:n,onFieldClick:r,customMacros:l,zIndex:o=1e6,...a}){const[i,s]=rt((()=>!1));return(0,e.createElement)("div",{className:"jet-form-editor__macros-inserter"},(0,e.createElement)(et,{isTertiary:!0,isSmall:!0,icon:i?"no-alt":"admin-tools",label:"Insert macros",className:"jet-form-editor__macros-trigger",onClick:()=>{s((e=>!e))}}),i&&(0,e.createElement)(tt,{style:{zIndex:o},position:"bottom left",...a},n.length&&(0,e.createElement)(nt,{title:"Form Fields"},n.map((t=>(0,e.createElement)("div",{key:"field_"+t.name},(0,e.createElement)(et,{isLink:!0,onClick:()=>{r(t.name)}},"%"+t.name+"%"))))),l&&(0,e.createElement)(nt,{title:"Custom Macros"},l.map((t=>(0,e.createElement)("div",{key:"macros_"+t},(0,e.createElement)(et,{isLink:!0,onClick:()=>{r(t)}},"%"+t+"%")))))))},RepeaterWithState:function({children:t,ItemHeading:n,repeaterClasses:r=[],repeaterItemClasses:l=[],newItem:a,addNewButtonLabel:i="Add New",items:s=[],isSaveAction:c,onSaveItems:m,onUnMount:p,onAddNewItem:f,onRemoveItem:h,help:b={helpSource:{},helpVisible:()=>!1,helpKey:""},additionalControls:g=null}){const y=["jet-form-builder__repeater-component",...r].join(" "),v=["jet-form-builder__repeater-component-item",...l].join(" "),[w,E]=(0,o.useState)([]);(0,o.useEffect)((()=>{E(s&&s.length>0?s.map((e=>(e.__visible=!1,e))):[{...a,__visible:!0}])}),[]);const[_,C]=(0,o.useState)(!0),k=(e,t)=>{E((n=>{const r=JSON.parse(JSON.stringify(n));return r[t]={...n[t],...e},r}))},S=({oldIndex:e,newIndex:t})=>{E((n=>{const r=JSON.parse(JSON.stringify(n));return[r[t],r[e]]=[r[e],r[t]],r}))},j=e=>!(e{if(!0===c){for(const e in w)for(const t in w[e])t.startsWith("__")&&delete w[e][t];m(w),p()}else!1===c&&p()}),[c]);const x=e=>`jet-form-builder-repeater__item_${e}`,{helpSource:N,helpVisible:F,helpKey:T}=b,I=F(w)&&N&&N[T];return(0,e.createElement)("div",{className:y,key:"jet-form-builder-repeater"},I&&(0,e.createElement)("p",null,N[T].label),0(0,e.createElement)(u.Card,{elevation:2,className:v,key:x(l)},(0,e.createElement)(u.CardHeader,{className:"repeater__item__header"},(0,e.createElement)("div",{className:"repeater-item__left-heading"},(0,e.createElement)(u.ButtonGroup,{className:"repeater-action-buttons"},(0,e.createElement)(u.Button,{isSmall:!0,icon:r.__visible?"no-alt":"edit",onClick:()=>(e=>{E((t=>{const n=JSON.parse(JSON.stringify(t));return n[e].__visible=!n[e].__visible,n}))})(l),className:"repeater-action-button"}),(0,e.createElement)(u.Button,{isSmall:!0,isSecondary:!0,disabled:!Boolean(l),icon:"arrow-up-alt2",onClick:()=>(e=>{S({oldIndex:e,newIndex:e-1})})(l),className:"repeater-action-button"}),(0,e.createElement)(u.Button,{isSmall:!0,isSecondary:!0,disabled:j(l),icon:"arrow-down-alt2",onClick:()=>(e=>{S({oldIndex:e,newIndex:e+1})})(l),className:"repeater-action-button"})),(0,e.createElement)("span",{className:"repeater-item-title"},n&&(0,e.createElement)(n,{currentItem:r,index:l,changeCurrentItem:e=>k(e,l)}),!n&&`#${l+1}`)),(0,e.createElement)(u.ButtonGroup,null,(0,e.createElement)(u.Button,{isSmall:!0,isSecondary:!0,onClick:()=>(e=>{E((t=>{const n=JSON.parse(JSON.stringify(t)),[r,l]=[n.slice(0,e+1),n.slice(e+1)];return[...r,n[e],...l]}))})(l)},(0,d.__)("Clone","jet-form-builder")),(0,e.createElement)(u.Button,{isSmall:!0,isSecondary:!0,isDestructive:!0,onClick:()=>(e=>{_&&!(e=>confirm((0,d.sprintf)((0,d.__)("Are you sure you want to remove item %d?","jet-form-builder"),e+1)))(e)||h&&!h(e,w)||E((t=>{const n=JSON.parse(JSON.stringify(t));return n.splice(e,1),n}))})(l)},(0,d.__)("Delete","jet-form-builder")))),r.__visible&&(0,e.createElement)(u.CardBody,{className:"repeater-item__content"},t&&(0,e.createElement)(o.Fragment,{key:`repeater-component__item_${l}`},"function"==typeof t&&t({currentItem:r,changeCurrentItem:e=>k(e,l),currentIndex:l}),"function"!=typeof t&&t),!t&&"Set up your Repeater Template, please.")))),1{return e=a,f&&f(e,w),void E((t=>[...t,{...e,__visible:!0}]));var e}},i))},AdvancedFields:function(){return(0,e.createElement)(kt,null,(0,e.createElement)(at,null),(0,e.createElement)(ct,null),(0,e.createElement)(gt,null),(0,e.createElement)(wt,null),(0,e.createElement)(Ct,null))},GeneralFields:function({hasMacro:t=!0}){return(0,e.createElement)(On,{title:Rn("General","jet-form-builder"),key:"jet-form-general-fields"},(0,e.createElement)(Ft,null),(0,e.createElement)(Pt,null),(0,e.createElement)(Dt,null),(0,e.createElement)(An,{hasMacro:t}))},ToolBarFields:function({children:t=null}){return(0,e.createElement)(e.Fragment,null,(0,e.createElement)(Vn,null,t),(0,e.createElement)(zn,null))},FieldControl:function(t){const{setAttributes:n,attributes:r}=t,l=function({type:e,attributes:t,attrsSettings:n={}}){const r=Ls()["data-type"],l=er();return l[e]?l[e].attrs.filter((({attrName:e,label:l,...o})=>{const a=e in t,i=(e=>{if(!e.condition)return!0;if(r&&e.condition.blockName){if("string"==typeof e.condition.blockName&&r!==e.condition.blockName)return!1;if("object"==typeof e.condition.blockName&&e.condition.blockName.length&&!e.condition.blockName.includes(r))return!1}return!(!function(){if("object"!=typeof e.condition.attr)return!0;const{operator:n="and",items:r={}}=e.condition.attr;if("or"===n.toLowerCase())for(const e in r)if(r[e]===t[e])return!0;return"and"!==n.toLowerCase()||function(){for(const e in r)if(r[e]!==t[e])return!1;return!0}()}()||"string"==typeof e.condition.attr&&e.condition.attr&&!t[e.condition.attr]||"string"==typeof e.condition&&!t[e.condition])})(o),s=e in n&&"show"in n[e]&&!1===n[e].show;return a&&i&&!s})):[]}(t),o=(e,t)=>{n({[t]:e})};return l.map((({help:t="",attrName:n,label:l,...a})=>{switch(a.type){case"text":return(0,e.createElement)(Ds,{key:`${a.type}-${n}-TextControl`,label:l,help:t,value:r[n],onChange:e=>o(e,n)});case"select":return(0,e.createElement)(qs,{key:`${a.type}-${n}-SelectControl`,label:l,help:t,value:r[n],options:a.options,onChange:e=>{o(e,n)}});case"toggle":return(0,e.createElement)(Vs,{key:`${a.type}-${n}-ToggleControl`,label:l,help:t,checked:r[n],onChange:e=>{o(e,n)}});case"number":return(0,e.createElement)(Js,{key:`${a.type}-${n}-BaseControl`,label:l},(0,e.createElement)(Us,{key:`${a.type}-${n}-NumberControl`,value:r[n],onChange:e=>{o(Number(e),n)}}),(0,e.createElement)("p",{className:"components-base-control__help",style:{color:"rgb(117, 117, 117)"}},t));default:return null}}))},HorizontalLine:function(t){return(0,e.createElement)("hr",{style:{...t}})},FieldSettingsWrapper:function(t){const{title:n,children:r}=t,l=Zn()["data-type"].replace("/","-"),o=Xn(`jet.fb.render.settings.${l}`,null);return(r||o)&&(0,e.createElement)(Kn,{title:n||Yn("Field","jet-form-builder")},r,o)},GroupedSelectControl:je,BaseHelp:ut,GatewayFetchButton:nr,ValidationToggleGroup:function({excludeBrowser:t=!1}){var n;const[r,l]=fe(),o=de();return Ia=Ia.filter((({value:e})=>"browser"!==e||!t)),(0,e.createElement)(Na,{onChange:e=>l((t=>({...t,validation:{...r.validation,type:e}}))),value:null!==(n=r.validation?.type)&&void 0!==n?n:"inherit",label:Ta("Validation type","jet-form-builder"),isBlock:!0,isAdaptiveWidth:!1},(0,e.createElement)(Fa,{label:Ta("Inherit","jet-form-builder"),value:"inherit","aria-label":Ta("Inherit from form's args","jet-form-builder"),showTooltip:!0}),Ia.map((t=>(0,e.createElement)(Fa,{key:o(t.value+"_key"),label:t.label,value:t.value,"aria-label":t.title,showTooltip:!0}))))},ValidationBlockMessage:function({name:t}){var n,r,l;const o=de(),[a,i]=fe(),[s]=(0,Ba.useMetaState)("_jf_validation","{}",[]),c=!a.validation?.type,u=c?null!==(n=s?.messages)&&void 0!==n?n:{}:null!==(r=a.validation?.messages)&&void 0!==r?r:{},d=Oa(t);return(0,e.createElement)(e.Fragment,null,(0,e.createElement)(Ra,{disabled:c,key:o("massage_"+t),label:d?.label,help:d?.help,value:null!==(l=u[t])&&void 0!==l?l:d?.initial,onChange:e=>i((n=>({...n,validation:{...a.validation,messages:{...u,[t]:e}}})))}))},ValidationMetaMessage:function({message:t,update:n,value:r=null,help:o=null}){const a=Oa(t.id);return(0,e.createElement)(l.StyledFlexControl,{direction:"column"},(0,e.createElement)(u.Flex,null,(0,e.createElement)(l.Label,{htmlFor:t.id},a.label),(0,e.createElement)(u.Flex,{style:{width:"auto"}},t.blocks.map((t=>(0,e.createElement)(u.Tooltip,{key:"message_block_item"+t.title,text:t.title,delay:200,placement:"top"},(0,e.createElement)(Ma,{icon:t.icon})))))),(0,e.createElement)(l.StyledTextControl,{className:l.ClearBaseControlStyle,id:t.id,help:null!=o?o:a?.help,value:null!=r?r:a?.initial,onChange:e=>n((n=>({...n,[t.id]:e})))}))},DynamicValues:Ui,EditAdvancedRulesButton:function(){const[t,n]=Ps(!1);return(0,e.createElement)(e.Fragment,null,(0,e.createElement)(ws.Provider,{value:{showModal:t,setShowModal:n}},(0,e.createElement)("div",{className:"jet-fb mb-24"},(0,e.createElement)(Ms,null))),t&&(0,e.createElement)(h,{title:Gs("Edit Advanced Rules","jet-form-builder"),classNames:["width-60"],onRequestClose:()=>n(!1)},(0,e.createElement)(ys,null)))},RepeaterStateContext:ha,RepeaterState:La,BlockLabel:Ft,BlockName:Pt,BlockDescription:Dt,BlockDefaultValue:An,BlockPlaceholder:at,BlockAddPrevButton:ct,BlockPrevButtonLabel:gt,BlockVisibility:wt,BlockClassName:Ct,BlockAdvancedValue:function({help:t,label:n,hasMacro:r=!0,...l}){return(0,e.createElement)("div",{...l},(0,e.createElement)(An,{help:t,label:n,hasMacro:r}),(0,e.createElement)("hr",null),(0,e.createElement)(Ui,null))},MacrosFields:bn,MacrosButtonTemplate:zt,MacrosFieldsTemplate:dn,ShowPopoverContext:Jt,PopoverItem:Zt,PresetButton:qt,ConditionItem:di,AdvancedInspectorControl:En,AdvancedModalControl:Qa,ClientSideMacros:xn,ToggleControl:function t({checked:n=!1,disabled:r=!1,onChange:l=()=>{},children:o=null,help:a=null,flexLabelProps:i={},outsideLabel:s=null,__nextHasNoMarginBottom:c=!1,...u}){const d=a,m=`inspector-jfb-toggle-control-${Ys(t)}`;return(0,e.createElement)(Ws,{id:m},(0,e.createElement)(zs,{direction:"column"},(0,e.createElement)(zs,{gap:3,align:"flex-start",justify:"flex-start",...i},(0,e.createElement)(Hs,{id:m,checked:n,onChange:e=>l(e.target.checked),disabled:r,...u}),(0,e.createElement)("label",{htmlFor:m},o),s),"string"==typeof d?(0,e.createElement)(ut,null,d):d&&(0,e.createElement)(d,null)))},DetailsContainer:Mi,HoverContainer:Ri,ContainersList:qi,HumanReadableConditions:Oi,ConditionsRepeaterContextProvider:hi,ServerSideMacros:function({children:t}){const n=(0,K.useRequestFields)();return(0,e.createElement)(Kt.Provider,{value:{afterFields:n}},t)},SelectVariations:function({value:t}){const{name:n}=rc(),[,r]=fe(),{variations:l,rawVariations:o}=ec((t=>{const{getBlockVariations:r}=t("core/blocks"),l=r(n,"block"),o=[],a={};for(const t of l)o.push({key:t.name,name:(0,e.createElement)("span",{className:"jet-fb flex gap-1em ai-center"},(0,e.createElement)(nc,{icon:t.icon}),t.title)}),a[t.name]=t;return{variations:o,rawVariations:a}}),[n]);return l.length?(0,e.createElement)(tc,{__nextUnconstrainedWidth:!0,hideLabelFromVision:!0,options:l,size:"__unstable-large",onChange:({selectedItem:e})=>r({...o[e.key].attributes}),value:l.find((({key:e})=>e===t))}):null},ToggleGroupVariations:function(t){const n=ac(bc);return n?.currentId?(0,e.createElement)(hc,{className:"jet-fb toggle-toolbar-group"},(0,e.createElement)(gc,{...t})):(0,e.createElement)(gc,{...t})},AttributeHelp:ft,ActionButtonPlaceholder:function(t){const n=Ec();return(0,e.createElement)("div",{...n},(0,e.createElement)("div",{className:t.wrapperClasses.join(" ")},(0,e.createElement)(Cc,{isPrimary:!0,className:t.buttonClasses.join(" ")},(0,e.createElement)(_c,{placeholder:"Input Submit label...",allowedFormats:[],value:t.attributes.label,onChange:e=>t.setAttributes({label:e})}))))},ActionModalFooterSlotFill:c,ScopedAttributesProvider:function({children:t}){const[n,r]=fe(),[l,o]=xc((()=>n));return(0,e.createElement)(Sc.Provider,{value:{realAttributes:n,setRealAttributes:r,attributes:l,setAttributes:o}},t)}},window.JetFBActions={...null!==(Bc=window?.JetFBActions)&&void 0!==Bc?Bc:{},withPreset:ge,getInnerBlocks:R,getAvailableFieldsString:function(e){const t=T([e]),n=[];return t.forEach((function(e){n.push("%FIELD::"+e+"%")})),I("Available fields: ","jet-form-builder")+n.join(", ")},getAvailableFields:T,getFormFieldsBlocks:F,getFieldsWithoutCurrent:O,gatewayAttr:P,gatewayLabel:G,registerGateway:function(e,t,n="cred"){window.JetFBGatewaysList=window.JetFBGatewaysList||{},window.JetFBGatewaysList[e]=window.JetFBGatewaysList[e]||{},window.JetFBGatewaysList[e][n]=t},Tools:k,event:e=>{const t=new Event(e);return()=>document.dispatchEvent(t)},listen:(e,t)=>{document.addEventListener(e,t)},renderGateway:D,renderGatewayWithPlaceholder:function(e,t,n="cred",r=null){return L(e,n)?(t.Placeholder=r,D(e,t,n)):r},maybeCyrToLatin:w,getConvertedName:E,getBlockControls:function(e="all"){if(!e)return!1;const t=er();return"all"===e?t:!!(t[e]&&t[e].attrs&&Array.isArray(t[e].attrs)&&0{e.includes(n.name)&&t.push(n)})),t},convertObjectToOptionsList:function(e=[],{usePlaceholder:t=!0,label:n="--",value:r=""}={}){const l={label:n,value:r};if(!e)return t?[l]:[];const o=Object.entries(e).map((e=>({value:e.value,label:e.label})));return t?[l,...o]:o},appendField:function(e,t=[]){M("jet.fb.register.fields","jet-form-builder",(n=>n.map((n=>t.length&&!t.includes(n.name)?n:e(n)))))},insertMacro:Nn,column:y,getCurrentInnerBlocks:function(){const{"data-block":e}=Ks();return R(e)},humanReadableCondition:pi,assetUrl:function(e=""){return JetFormEditorData.assetsUrl+e},set:function(e,t,n){const r=JSON.parse(JSON.stringify(e));let l,o=r;for(let e=0;e{function t(){e.call(this)}return t.prototype=Object.create(e.prototype),t}},window.JetFBHooks={...null!==(Ac=window?.JetFBHooks)&&void 0!==Ac?Ac:{},useSelectPostMeta:H,useSuccessNotice:$,useEvents:ae,useRequestEvents:function(){const e=ie((e=>e("jet-forms/actions").getCurrentAction()));return ae(e)},useBlockConditions:ce,useUniqKey:de,useBlockAttributes:fe,useIsAdvancedValidation:function(){const{type:e}=H("_jf_validation"),[t]=fe();return t.validation?.type?"advanced"===t.validation?.type:"advanced"===e},useGroupedValidationMessages:function(){const[e]=$e(He);return e},withSelectFormFields:(e=[],t=!1,n=!1)=>r=>{let l=[];const o=["submit","form-break","heading","group-break","conditional",...e];return Y((e=>{e.name.includes("jet-forms/")&&e.attributes.name&&!o.find((t=>e.name.includes(t)))&&l.push({blockName:e.name,name:e.attributes.name,label:e.attributes.label||e.attributes.name,value:e.attributes.name})}),r("core/block-editor").getBlocks()),l=t?[{value:"",label:t},...l]:l,{formFields:n?l:z("jet.fb.getFormFieldsBlocks",l)}},withSelectGateways:X,withDispatchGateways:function(e){const t=e("jet-forms/gateways");return{setGatewayRequest:t.setRequest,setGatewayScenario:t.setScenario,setScenario:t.setCurrentScenario,setGateway:t.setGateway,setGatewayInner:t.setGatewayInner,setGatewaySpecific:t.setGatewaySpecific,clearGateway:t.clearGateway,clearScenario:t.clearScenario}},useOnUpdateModal:W,useInsertMacro:Tn,useIsHasAttribute:he,useUniqueNameOnDuplicate:function(e=null){const t=Qs(),[,n]=fe(),r=t["data-block"],l=Zs((e=>{if(!e(Wo).isRecentlyAdded(r))return!1;const{hasChanged:t,names:n}=e(Wo).getUniqueNames(r);return!!t&&n}),[r]);Xs((()=>{l&&("function"!=typeof e?n({name:l.split("|")[0]}):e(l))}),[l])},useSupport:function(e){const{name:t}=vc();return yc((n=>{const r=n("core/blocks").getBlockType(t);return wc(r,["supports",e],!1)}),[t,e])},useScopedAttributesContext:function(){return jc(Sc)},useOpenEditorPanel:function(e){const{enableComplementaryArea:t}=Tc("core/interface"),{toggleEditorPanelOpened:n}=Tc("core/edit-post"),r=Fc((t=>t("core/edit-post").isEditorPanelOpened(e)),[e]);return()=>{t("core/edit-post","edit-post/document"),!r&&n(e)}}}})()})(); \ No newline at end of file diff --git a/assets/src/package/blocks/components/FieldWrapper.js b/assets/src/package/blocks/components/FieldWrapper.js index 7be2001de..57efedfc5 100644 --- a/assets/src/package/blocks/components/FieldWrapper.js +++ b/assets/src/package/blocks/components/FieldWrapper.js @@ -103,6 +103,12 @@ function FieldWrapper( props ) { wrapClasses.push( 'jet-form-builder-row__flex' ); } + if ( attributes?.crocoblock_styles?._uniqueClassName ) { + wrapClasses.push( + attributes.crocoblock_styles._uniqueClassName, + ); + } + return ( block_context[ $context_last_name ] ?? ''; diff --git a/modules/advanced-choices/block-types/choice.php b/modules/advanced-choices/block-types/choice.php index 5bada05c6..4c87920df 100644 --- a/modules/advanced-choices/block-types/choice.php +++ b/modules/advanced-choices/block-types/choice.php @@ -28,6 +28,10 @@ public function render_row_layout() { return false; } + public function general_style_unregister() { + return array( 'description', 'required' ); + } + /** * @param null|array $wp_block * From 0f7d9fe418d373179508d27d020ce94d92741fe7 Mon Sep 17 00:00:00 2001 From: Gawuww Date: Mon, 26 Jan 2026 11:49:11 +0200 Subject: [PATCH 09/13] UPD: version bump and changelog --- README.md | 3 +++ jet-form-builder.php | 4 ++-- readme.txt | 5 ++++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index c3b6de0af..700fd1d56 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,9 @@ You can report security bugs through the Patchstack Vulnerability Disclosure Pro ## ChangeLog +## 3.5.6.1 +* FIX: Compatibility with jetBooking 4.0.0 + ## 3.5.6 * ADD: Bricks builder ajax popup compatibility * ADD: Added aria-label to hidden input in advanced choices block for better accessibility diff --git a/jet-form-builder.php b/jet-form-builder.php index b4a81adeb..040b1a723 100644 --- a/jet-form-builder.php +++ b/jet-form-builder.php @@ -3,7 +3,7 @@ * Plugin Name: JetFormBuilder * Plugin URI: https://jetformbuilder.com/ * Description: Advanced form builder plugin for WordPress block editor. Create forms from the ground up, customize the existing ones, and style them up – all in one editor. - * Version: 3.5.6 + * Version: 3.5.6.1 * Author: Crocoblock * Author URI: https://crocoblock.com/ * Text Domain: jet-form-builder @@ -18,7 +18,7 @@ die(); } -const JET_FORM_BUILDER_VERSION = '3.5.6'; +const JET_FORM_BUILDER_VERSION = '3.5.6.1'; const JET_FORM_BUILDER__FILE__ = __FILE__; const JET_FORM_BUILDER_SITE = 'https://jetformbuilder.com'; diff --git a/readme.txt b/readme.txt index bb48356eb..aaebf1174 100644 --- a/readme.txt +++ b/readme.txt @@ -4,7 +4,7 @@ Tags: blocks, forms, form builder, contact form, gutenberg, gutenberg forms, mul Requires at least: 6.1 Tested up to: 6.7.1 Requires PHP: 7.0 -Stable tag: 3.5.6 +Stable tag: 3.5.6.1 License: GPLv2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html @@ -275,6 +275,9 @@ You can report security bugs through the Patchstack Vulnerability Disclosure Pro == Changelog == +**3.5.6.1** +- FIX: Compatibility with jetBooking 4.0.0 + **3.5.6** - ADD: Bricks builder ajax popup compatibility - ADD: Added aria-label to hidden input in advanced choices block for better accessibility From 60c2a5920223b7e4fa909e60bfc3a4006ecb124d Mon Sep 17 00:00:00 2001 From: yurkodmtr <4au.4au.4au@gmail.com> Date: Mon, 9 Feb 2026 15:45:48 +0200 Subject: [PATCH 10/13] ADD: JetFormBuilder: use several payment gateways at once in jetformbuilder form https://github.com/Crocoblock/issues-tracker/issues/17484 --- jet-form-builder.php | 2 +- .../admin/pages/jfb-payments-single.asset.php | 2 +- .../build/admin/pages/jfb-payments-single.js | 330 ++++++++- .../build/admin/pages/jfb-payments.asset.php | 2 +- .../assets/build/admin/pages/jfb-payments.js | 311 ++++++++- .../build/admin/pages/payment-print.asset.php | 2 +- .../assets/build/admin/pages/payment-print.js | 327 ++++++++- .../gateways/assets/build/editor.asset.php | 2 +- modules/gateways/assets/build/editor.js | 660 +++++++++++++++++- .../assets/src/editor/plugin/render.js | 255 ++++--- modules/modules-controller.php | 2 + modules/multi-gateway/.babelrc | 3 + modules/multi-gateway/.gitattributes | 4 + .../assets/build/editor.asset.php | 1 + modules/multi-gateway/assets/build/editor.css | 41 ++ modules/multi-gateway/assets/build/editor.js | 285 ++++++++ .../assets/build/multi-gateway.asset.php | 1 + .../assets/build/multi-gateway.css | 34 + .../assets/build/multi-gateway.js | 69 ++ .../editor/blocks/multi-gateway/block.scss | 36 + .../src/editor/blocks/multi-gateway/edit.js | 69 ++ .../src/editor/blocks/multi-gateway/index.js | 63 ++ .../editor/blocks/multi-gateway/preview.js | 12 + .../multi-gateway/assets/src/editor/main.js | 15 + .../src/frontend/blocks/multi-gateway/main.js | 1 + .../blocks/multi-gateway/multi-gateway.scss | 38 + .../blocks/multi-gateway/block-render.php | 21 + .../blocks/multi-gateway/block-template.php | 102 +++ .../blocks/multi-gateway/block-type.php | 43 ++ .../blocks/multi-gateway/block.json | 23 + modules/multi-gateway/module.php | 184 +++++ modules/multi-gateway/package.json | 11 + modules/multi-gateway/webpack.config.js | 46 ++ 33 files changed, 2903 insertions(+), 94 deletions(-) create mode 100644 modules/multi-gateway/.babelrc create mode 100644 modules/multi-gateway/.gitattributes create mode 100644 modules/multi-gateway/assets/build/editor.asset.php create mode 100644 modules/multi-gateway/assets/build/editor.css create mode 100644 modules/multi-gateway/assets/build/editor.js create mode 100644 modules/multi-gateway/assets/build/multi-gateway.asset.php create mode 100644 modules/multi-gateway/assets/build/multi-gateway.css create mode 100644 modules/multi-gateway/assets/build/multi-gateway.js create mode 100644 modules/multi-gateway/assets/src/editor/blocks/multi-gateway/block.scss create mode 100644 modules/multi-gateway/assets/src/editor/blocks/multi-gateway/edit.js create mode 100644 modules/multi-gateway/assets/src/editor/blocks/multi-gateway/index.js create mode 100644 modules/multi-gateway/assets/src/editor/blocks/multi-gateway/preview.js create mode 100644 modules/multi-gateway/assets/src/editor/main.js create mode 100644 modules/multi-gateway/assets/src/frontend/blocks/multi-gateway/main.js create mode 100644 modules/multi-gateway/assets/src/frontend/blocks/multi-gateway/multi-gateway.scss create mode 100644 modules/multi-gateway/blocks/multi-gateway/block-render.php create mode 100644 modules/multi-gateway/blocks/multi-gateway/block-template.php create mode 100644 modules/multi-gateway/blocks/multi-gateway/block-type.php create mode 100644 modules/multi-gateway/blocks/multi-gateway/block.json create mode 100644 modules/multi-gateway/module.php create mode 100644 modules/multi-gateway/package.json create mode 100644 modules/multi-gateway/webpack.config.js diff --git a/jet-form-builder.php b/jet-form-builder.php index b4a81adeb..7451ee269 100644 --- a/jet-form-builder.php +++ b/jet-form-builder.php @@ -18,7 +18,7 @@ die(); } -const JET_FORM_BUILDER_VERSION = '3.5.6'; +const JET_FORM_BUILDER_VERSION = '3.5.61132112'; const JET_FORM_BUILDER__FILE__ = __FILE__; const JET_FORM_BUILDER_SITE = 'https://jetformbuilder.com'; diff --git a/modules/gateways/assets/build/admin/pages/jfb-payments-single.asset.php b/modules/gateways/assets/build/admin/pages/jfb-payments-single.asset.php index fb72c714d..c2b9bdd30 100644 --- a/modules/gateways/assets/build/admin/pages/jfb-payments-single.asset.php +++ b/modules/gateways/assets/build/admin/pages/jfb-payments-single.asset.php @@ -1 +1 @@ - array(), 'version' => 'f1b3e0ce05ec27b49a2b'); + array(), 'version' => 'ac034eca66c212237907'); diff --git a/modules/gateways/assets/build/admin/pages/jfb-payments-single.js b/modules/gateways/assets/build/admin/pages/jfb-payments-single.js index 379a09680..42f9df65c 100644 --- a/modules/gateways/assets/build/admin/pages/jfb-payments-single.js +++ b/modules/gateways/assets/build/admin/pages/jfb-payments-single.js @@ -1 +1,329 @@ -(()=>{"use strict";var e=function(){var e=this.$createElement,t=this._self._c||e;return t("FormBuilderPage",[t("PostBoxGrid")],1)};e._withStripped=!0;const{PostBoxGrid:t,FormBuilderPage:r}=JetFBComponents,{mapGetters:n,mapMutations:o,mapActions:s}=Vuex;var a=function(e,t){var r,n=e;if(t&&(n.render=t,n.staticRenderFns=[],n._compiled=!0),r)if(n.functional){n._injectStyles=r;var o=n.render;n.render=function(e,t){return r.call(t),o(e,t)}}else{var s=n.beforeCreate;n.beforeCreate=s?[].concat(s,r):[r]}return{exports:e,options:n}}({name:"jfb-payments-single",components:{PostBoxGrid:t,FormBuilderPage:r},created(){jfbEventBus.$on("payment-details-delete",(()=>{this["scope-payment-details/actions/defaultDelete"]()}))},methods:{...s(["scope-payment-details/actions/defaultDelete"])}},e);const i=a.exports,{BaseStore:c,SingleMetaBoxesPlugin:l}=JetFBStore,{renderCurrentPage:d}=window.JetFBActions;d(i,{store:new Vuex.Store({...c,plugins:[l]})})})(); \ No newline at end of file +/******/ (() => { // webpackBootstrap +/******/ "use strict"; +/******/ var __webpack_modules__ = ({ + +/***/ "../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-payments-single/SinglePayment.vue?vue&type=script&lang=js": +/*!***************************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-payments-single/SinglePayment.vue?vue&type=script&lang=js ***! + \***************************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +// +// +// +// +// +// + +const { + PostBoxGrid, + FormBuilderPage +} = JetFBComponents; +const { + mapGetters, + mapMutations, + mapActions +} = Vuex; +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + name: 'jfb-payments-single', + components: { + PostBoxGrid, + FormBuilderPage + }, + created() { + jfbEventBus.$on('payment-details-delete', () => { + this['scope-payment-details/actions/defaultDelete'](); + }); + }, + methods: { + ...mapActions(['scope-payment-details/actions/defaultDelete']) + } +}); + +/***/ }), + +/***/ "../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-payments-single/SinglePayment.vue?vue&type=template&id=263e5547": +/*!****************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-payments-single/SinglePayment.vue?vue&type=template&id=263e5547 ***! + \****************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('FormBuilderPage',[_c('PostBoxGrid')],1)} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js": +/*!******************************************************************************!*\ + !*** ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ normalizeComponent) +/* harmony export */ }); +/* globals __VUE_SSR_CONTEXT__ */ + +// IMPORTANT: Do NOT use ES2015 features in this file (except for modules). +// This module is a runtime utility for cleaner component module output and will +// be included in the final webpack user bundle. + +function normalizeComponent( + scriptExports, + render, + staticRenderFns, + functionalTemplate, + injectStyles, + scopeId, + moduleIdentifier /* server only */, + shadowMode /* vue-cli only */ +) { + // Vue.extend constructor export interop + var options = + typeof scriptExports === 'function' ? scriptExports.options : scriptExports + + // render functions + if (render) { + options.render = render + options.staticRenderFns = staticRenderFns + options._compiled = true + } + + // functional template + if (functionalTemplate) { + options.functional = true + } + + // scopedId + if (scopeId) { + options._scopeId = 'data-v-' + scopeId + } + + var hook + if (moduleIdentifier) { + // server build + hook = function (context) { + // 2.3 injection + context = + context || // cached call + (this.$vnode && this.$vnode.ssrContext) || // stateful + (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional + // 2.2 with runInNewContext: true + if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') { + context = __VUE_SSR_CONTEXT__ + } + // inject component styles + if (injectStyles) { + injectStyles.call(this, context) + } + // register component module identifier for async chunk inferrence + if (context && context._registeredComponents) { + context._registeredComponents.add(moduleIdentifier) + } + } + // used by ssr in case component is cached and beforeCreate + // never gets called + options._ssrRegister = hook + } else if (injectStyles) { + hook = shadowMode + ? function () { + injectStyles.call( + this, + (options.functional ? this.parent : this).$root.$options.shadowRoot + ) + } + : injectStyles + } + + if (hook) { + if (options.functional) { + // for template-only hot-reload because in that case the render fn doesn't + // go through the normalizer + options._injectStyles = hook + // register for functional component in vue file + var originalRender = options.render + options.render = function renderWithStyleInjection(h, context) { + hook.call(context) + return originalRender(h, context) + } + } else { + // inject component registration as beforeCreate hook + var existing = options.beforeCreate + options.beforeCreate = existing ? [].concat(existing, hook) : [hook] + } + } + + return { + exports: scriptExports, + options: options + } +} + + +/***/ }), + +/***/ "./admin/pages/jfb-payments-single/SinglePayment.vue": +/*!***********************************************************!*\ + !*** ./admin/pages/jfb-payments-single/SinglePayment.vue ***! + \***********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _SinglePayment_vue_vue_type_template_id_263e5547__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SinglePayment.vue?vue&type=template&id=263e5547 */ "./admin/pages/jfb-payments-single/SinglePayment.vue?vue&type=template&id=263e5547"); +/* harmony import */ var _SinglePayment_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./SinglePayment.vue?vue&type=script&lang=js */ "./admin/pages/jfb-payments-single/SinglePayment.vue?vue&type=script&lang=js"); +/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js"); + + + + + +/* normalize component */ +; +var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( + _SinglePayment_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], + _SinglePayment_vue_vue_type_template_id_263e5547__WEBPACK_IMPORTED_MODULE_0__.render, + _SinglePayment_vue_vue_type_template_id_263e5547__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, + false, + null, + null, + null + +) + +/* hot reload */ +if (false) { var api; } +component.options.__file = "admin/pages/jfb-payments-single/SinglePayment.vue" +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); + +/***/ }), + +/***/ "./admin/pages/jfb-payments-single/SinglePayment.vue?vue&type=script&lang=js": +/*!***********************************************************************************!*\ + !*** ./admin/pages/jfb-payments-single/SinglePayment.vue?vue&type=script&lang=js ***! + \***********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_wyw_in_js_webpack_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_SinglePayment_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SinglePayment.vue?vue&type=script&lang=js */ "../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-payments-single/SinglePayment.vue?vue&type=script&lang=js"); + /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_node_modules_wyw_in_js_webpack_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_SinglePayment_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); + +/***/ }), + +/***/ "./admin/pages/jfb-payments-single/SinglePayment.vue?vue&type=template&id=263e5547": +/*!*****************************************************************************************!*\ + !*** ./admin/pages/jfb-payments-single/SinglePayment.vue?vue&type=template&id=263e5547 ***! + \*****************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* reexport safe */ _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_SinglePayment_vue_vue_type_template_id_263e5547__WEBPACK_IMPORTED_MODULE_0__.render), +/* harmony export */ staticRenderFns: () => (/* reexport safe */ _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_SinglePayment_vue_vue_type_template_id_263e5547__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) +/* harmony export */ }); +/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_SinglePayment_vue_vue_type_template_id_263e5547__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./SinglePayment.vue?vue&type=template&id=263e5547 */ "../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-payments-single/SinglePayment.vue?vue&type=template&id=263e5547"); + + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/define property getters */ +/******/ (() => { +/******/ // define getter functions for harmony exports +/******/ __webpack_require__.d = (exports, definition) => { +/******/ for(var key in definition) { +/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); +/******/ } +/******/ } +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ (() => { +/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) +/******/ })(); +/******/ +/******/ /* webpack/runtime/make namespace object */ +/******/ (() => { +/******/ // define __esModule on exports +/******/ __webpack_require__.r = (exports) => { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ })(); +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry needs to be wrapped in an IIFE because it needs to be isolated against other modules in the chunk. +(() => { +/*!**************************************************!*\ + !*** ./admin/pages/jfb-payments-single/index.js ***! + \**************************************************/ +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _SinglePayment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./SinglePayment */ "./admin/pages/jfb-payments-single/SinglePayment.vue"); + +const { + BaseStore, + SingleMetaBoxesPlugin +} = JetFBStore; +const { + renderCurrentPage +} = window.JetFBActions; +const store = new Vuex.Store({ + ...BaseStore, + plugins: [SingleMetaBoxesPlugin] +}); +renderCurrentPage(_SinglePayment__WEBPACK_IMPORTED_MODULE_0__["default"], { + store +}); +})(); + +/******/ })() +; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4vcGFnZXMvamZiLXBheW1lbnRzLXNpbmdsZS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUdBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7OztBQ2xDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7OztBQ0ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDL0ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFrQkE7QUFDQTs7Ozs7Ozs7Ozs7Ozs7O0FDdENBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FFQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDdkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDUEE7Ozs7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7OztBQ05BO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQSIsInNvdXJjZXMiOlsid2VicGFjazovL2pmYi1nYXRld2F5cy9hZG1pbi9wYWdlcy9qZmItcGF5bWVudHMtc2luZ2xlL1NpbmdsZVBheW1lbnQudnVlIiwid2VicGFjazovL2pmYi1nYXRld2F5cy8uL2FkbWluL3BhZ2VzL2pmYi1wYXltZW50cy1zaW5nbGUvU2luZ2xlUGF5bWVudC52dWU/NDJlYiIsIndlYnBhY2s6Ly9qZmItZ2F0ZXdheXMvLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qcyIsIndlYnBhY2s6Ly9qZmItZ2F0ZXdheXMvLi9hZG1pbi9wYWdlcy9qZmItcGF5bWVudHMtc2luZ2xlL1NpbmdsZVBheW1lbnQudnVlIiwid2VicGFjazovL2pmYi1nYXRld2F5cy8uL2FkbWluL3BhZ2VzL2pmYi1wYXltZW50cy1zaW5nbGUvU2luZ2xlUGF5bWVudC52dWU/NmIyMSIsIndlYnBhY2s6Ly9qZmItZ2F0ZXdheXMvLi9hZG1pbi9wYWdlcy9qZmItcGF5bWVudHMtc2luZ2xlL1NpbmdsZVBheW1lbnQudnVlPzI5YmUiLCJ3ZWJwYWNrOi8vamZiLWdhdGV3YXlzL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL2pmYi1nYXRld2F5cy93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vamZiLWdhdGV3YXlzL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vamZiLWdhdGV3YXlzL3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vamZiLWdhdGV3YXlzLy4vYWRtaW4vcGFnZXMvamZiLXBheW1lbnRzLXNpbmdsZS9pbmRleC5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XHJcblx0PEZvcm1CdWlsZGVyUGFnZT5cclxuXHRcdDxQb3N0Qm94R3JpZC8+XHJcblx0PC9Gb3JtQnVpbGRlclBhZ2U+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0PlxyXG5jb25zdCB7XHJcblx0ICAgICAgUG9zdEJveEdyaWQsXHJcblx0ICAgICAgRm9ybUJ1aWxkZXJQYWdlLFxyXG4gICAgICB9ID0gSmV0RkJDb21wb25lbnRzO1xyXG5cclxuY29uc3Qge1xyXG5cdCAgICAgIG1hcEdldHRlcnMsXHJcblx0ICAgICAgbWFwTXV0YXRpb25zLFxyXG5cdCAgICAgIG1hcEFjdGlvbnMsXHJcbiAgICAgIH0gPSBWdWV4O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQge1xyXG5cdG5hbWU6ICdqZmItcGF5bWVudHMtc2luZ2xlJyxcclxuXHRjb21wb25lbnRzOiB7XHJcblx0XHRQb3N0Qm94R3JpZCxcclxuXHRcdEZvcm1CdWlsZGVyUGFnZSxcclxuXHR9LFxyXG5cdGNyZWF0ZWQoKSB7XHJcblx0XHRqZmJFdmVudEJ1cy4kb24oICdwYXltZW50LWRldGFpbHMtZGVsZXRlJywgKCkgPT4ge1xyXG5cdFx0XHR0aGlzWyAnc2NvcGUtcGF5bWVudC1kZXRhaWxzL2FjdGlvbnMvZGVmYXVsdERlbGV0ZScgXSgpO1xyXG5cdFx0fSApO1xyXG5cdH0sXHJcblx0bWV0aG9kczoge1xyXG5cdFx0Li4ubWFwQWN0aW9ucyggW1xyXG5cdFx0XHQnc2NvcGUtcGF5bWVudC1kZXRhaWxzL2FjdGlvbnMvZGVmYXVsdERlbGV0ZScsXHJcblx0XHRdICksXHJcblx0fSxcclxufTtcclxuPC9zY3JpcHQ+XHJcblxyXG48c3R5bGU+XHJcblxyXG48L3N0eWxlPiIsInZhciByZW5kZXIgPSBmdW5jdGlvbiAoKSB7dmFyIF92bT10aGlzO3ZhciBfaD1fdm0uJGNyZWF0ZUVsZW1lbnQ7dmFyIF9jPV92bS5fc2VsZi5fY3x8X2g7cmV0dXJuIF9jKCdGb3JtQnVpbGRlclBhZ2UnLFtfYygnUG9zdEJveEdyaWQnKV0sMSl9XG52YXIgc3RhdGljUmVuZGVyRm5zID0gW11cbnJlbmRlci5fd2l0aFN0cmlwcGVkID0gdHJ1ZVxuZXhwb3J0IHsgcmVuZGVyLCBzdGF0aWNSZW5kZXJGbnMgfSIsIi8qIGdsb2JhbHMgX19WVUVfU1NSX0NPTlRFWFRfXyAqL1xuXG4vLyBJTVBPUlRBTlQ6IERvIE5PVCB1c2UgRVMyMDE1IGZlYXR1cmVzIGluIHRoaXMgZmlsZSAoZXhjZXB0IGZvciBtb2R1bGVzKS5cbi8vIFRoaXMgbW9kdWxlIGlzIGEgcnVudGltZSB1dGlsaXR5IGZvciBjbGVhbmVyIGNvbXBvbmVudCBtb2R1bGUgb3V0cHV0IGFuZCB3aWxsXG4vLyBiZSBpbmNsdWRlZCBpbiB0aGUgZmluYWwgd2VicGFjayB1c2VyIGJ1bmRsZS5cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbm9ybWFsaXplQ29tcG9uZW50KFxuICBzY3JpcHRFeHBvcnRzLFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZnVuY3Rpb25hbFRlbXBsYXRlLFxuICBpbmplY3RTdHlsZXMsXG4gIHNjb3BlSWQsXG4gIG1vZHVsZUlkZW50aWZpZXIgLyogc2VydmVyIG9ubHkgKi8sXG4gIHNoYWRvd01vZGUgLyogdnVlLWNsaSBvbmx5ICovXG4pIHtcbiAgLy8gVnVlLmV4dGVuZCBjb25zdHJ1Y3RvciBleHBvcnQgaW50ZXJvcFxuICB2YXIgb3B0aW9ucyA9XG4gICAgdHlwZW9mIHNjcmlwdEV4cG9ydHMgPT09ICdmdW5jdGlvbicgPyBzY3JpcHRFeHBvcnRzLm9wdGlvbnMgOiBzY3JpcHRFeHBvcnRzXG5cbiAgLy8gcmVuZGVyIGZ1bmN0aW9uc1xuICBpZiAocmVuZGVyKSB7XG4gICAgb3B0aW9ucy5yZW5kZXIgPSByZW5kZXJcbiAgICBvcHRpb25zLnN0YXRpY1JlbmRlckZucyA9IHN0YXRpY1JlbmRlckZuc1xuICAgIG9wdGlvbnMuX2NvbXBpbGVkID0gdHJ1ZVxuICB9XG5cbiAgLy8gZnVuY3Rpb25hbCB0ZW1wbGF0ZVxuICBpZiAoZnVuY3Rpb25hbFRlbXBsYXRlKSB7XG4gICAgb3B0aW9ucy5mdW5jdGlvbmFsID0gdHJ1ZVxuICB9XG5cbiAgLy8gc2NvcGVkSWRcbiAgaWYgKHNjb3BlSWQpIHtcbiAgICBvcHRpb25zLl9zY29wZUlkID0gJ2RhdGEtdi0nICsgc2NvcGVJZFxuICB9XG5cbiAgdmFyIGhvb2tcbiAgaWYgKG1vZHVsZUlkZW50aWZpZXIpIHtcbiAgICAvLyBzZXJ2ZXIgYnVpbGRcbiAgICBob29rID0gZnVuY3Rpb24gKGNvbnRleHQpIHtcbiAgICAgIC8vIDIuMyBpbmplY3Rpb25cbiAgICAgIGNvbnRleHQgPVxuICAgICAgICBjb250ZXh0IHx8IC8vIGNhY2hlZCBjYWxsXG4gICAgICAgICh0aGlzLiR2bm9kZSAmJiB0aGlzLiR2bm9kZS5zc3JDb250ZXh0KSB8fCAvLyBzdGF0ZWZ1bFxuICAgICAgICAodGhpcy5wYXJlbnQgJiYgdGhpcy5wYXJlbnQuJHZub2RlICYmIHRoaXMucGFyZW50LiR2bm9kZS5zc3JDb250ZXh0KSAvLyBmdW5jdGlvbmFsXG4gICAgICAvLyAyLjIgd2l0aCBydW5Jbk5ld0NvbnRleHQ6IHRydWVcbiAgICAgIGlmICghY29udGV4dCAmJiB0eXBlb2YgX19WVUVfU1NSX0NPTlRFWFRfXyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICAgICAgY29udGV4dCA9IF9fVlVFX1NTUl9DT05URVhUX19cbiAgICAgIH1cbiAgICAgIC8vIGluamVjdCBjb21wb25lbnQgc3R5bGVzXG4gICAgICBpZiAoaW5qZWN0U3R5bGVzKSB7XG4gICAgICAgIGluamVjdFN0eWxlcy5jYWxsKHRoaXMsIGNvbnRleHQpXG4gICAgICB9XG4gICAgICAvLyByZWdpc3RlciBjb21wb25lbnQgbW9kdWxlIGlkZW50aWZpZXIgZm9yIGFzeW5jIGNodW5rIGluZmVycmVuY2VcbiAgICAgIGlmIChjb250ZXh0ICYmIGNvbnRleHQuX3JlZ2lzdGVyZWRDb21wb25lbnRzKSB7XG4gICAgICAgIGNvbnRleHQuX3JlZ2lzdGVyZWRDb21wb25lbnRzLmFkZChtb2R1bGVJZGVudGlmaWVyKVxuICAgICAgfVxuICAgIH1cbiAgICAvLyB1c2VkIGJ5IHNzciBpbiBjYXNlIGNvbXBvbmVudCBpcyBjYWNoZWQgYW5kIGJlZm9yZUNyZWF0ZVxuICAgIC8vIG5ldmVyIGdldHMgY2FsbGVkXG4gICAgb3B0aW9ucy5fc3NyUmVnaXN0ZXIgPSBob29rXG4gIH0gZWxzZSBpZiAoaW5qZWN0U3R5bGVzKSB7XG4gICAgaG9vayA9IHNoYWRvd01vZGVcbiAgICAgID8gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIGluamVjdFN0eWxlcy5jYWxsKFxuICAgICAgICAgICAgdGhpcyxcbiAgICAgICAgICAgIChvcHRpb25zLmZ1bmN0aW9uYWwgPyB0aGlzLnBhcmVudCA6IHRoaXMpLiRyb290LiRvcHRpb25zLnNoYWRvd1Jvb3RcbiAgICAgICAgICApXG4gICAgICAgIH1cbiAgICAgIDogaW5qZWN0U3R5bGVzXG4gIH1cblxuICBpZiAoaG9vaykge1xuICAgIGlmIChvcHRpb25zLmZ1bmN0aW9uYWwpIHtcbiAgICAgIC8vIGZvciB0ZW1wbGF0ZS1vbmx5IGhvdC1yZWxvYWQgYmVjYXVzZSBpbiB0aGF0IGNhc2UgdGhlIHJlbmRlciBmbiBkb2Vzbid0XG4gICAgICAvLyBnbyB0aHJvdWdoIHRoZSBub3JtYWxpemVyXG4gICAgICBvcHRpb25zLl9pbmplY3RTdHlsZXMgPSBob29rXG4gICAgICAvLyByZWdpc3RlciBmb3IgZnVuY3Rpb25hbCBjb21wb25lbnQgaW4gdnVlIGZpbGVcbiAgICAgIHZhciBvcmlnaW5hbFJlbmRlciA9IG9wdGlvbnMucmVuZGVyXG4gICAgICBvcHRpb25zLnJlbmRlciA9IGZ1bmN0aW9uIHJlbmRlcldpdGhTdHlsZUluamVjdGlvbihoLCBjb250ZXh0KSB7XG4gICAgICAgIGhvb2suY2FsbChjb250ZXh0KVxuICAgICAgICByZXR1cm4gb3JpZ2luYWxSZW5kZXIoaCwgY29udGV4dClcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gaW5qZWN0IGNvbXBvbmVudCByZWdpc3RyYXRpb24gYXMgYmVmb3JlQ3JlYXRlIGhvb2tcbiAgICAgIHZhciBleGlzdGluZyA9IG9wdGlvbnMuYmVmb3JlQ3JlYXRlXG4gICAgICBvcHRpb25zLmJlZm9yZUNyZWF0ZSA9IGV4aXN0aW5nID8gW10uY29uY2F0KGV4aXN0aW5nLCBob29rKSA6IFtob29rXVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgZXhwb3J0czogc2NyaXB0RXhwb3J0cyxcbiAgICBvcHRpb25zOiBvcHRpb25zXG4gIH1cbn1cbiIsImltcG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0gZnJvbSBcIi4vU2luZ2xlUGF5bWVudC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjYzZTU1NDdcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9TaW5nbGVQYXltZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qc1wiXG5leHBvcnQgKiBmcm9tIFwiLi9TaW5nbGVQYXltZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qc1wiXG5cblxuLyogbm9ybWFsaXplIGNvbXBvbmVudCAqL1xuaW1wb3J0IG5vcm1hbGl6ZXIgZnJvbSBcIiEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvcnVudGltZS9jb21wb25lbnROb3JtYWxpemVyLmpzXCJcbnZhciBjb21wb25lbnQgPSBub3JtYWxpemVyKFxuICBzY3JpcHQsXG4gIHJlbmRlcixcbiAgc3RhdGljUmVuZGVyRm5zLFxuICBmYWxzZSxcbiAgbnVsbCxcbiAgbnVsbCxcbiAgbnVsbFxuICBcbilcblxuLyogaG90IHJlbG9hZCAqL1xuaWYgKG1vZHVsZS5ob3QpIHtcbiAgdmFyIGFwaSA9IHJlcXVpcmUoXCJFOlxcXFxPcGVuU2VydmVyXFxcXGRvbWFpbnNcXFxcY3JvY28ubG9jYWxcXFxcd3AtY29udGVudFxcXFxwbHVnaW5zXFxcXGpldGZvcm1idWlsZGVyXFxcXG5vZGVfbW9kdWxlc1xcXFx2dWUtaG90LXJlbG9hZC1hcGlcXFxcZGlzdFxcXFxpbmRleC5qc1wiKVxuICBhcGkuaW5zdGFsbChyZXF1aXJlKCd2dWUnKSlcbiAgaWYgKGFwaS5jb21wYXRpYmxlKSB7XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoKVxuICAgIGlmICghYXBpLmlzUmVjb3JkZWQoJzI2M2U1NTQ3JykpIHtcbiAgICAgIGFwaS5jcmVhdGVSZWNvcmQoJzI2M2U1NTQ3JywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfSBlbHNlIHtcbiAgICAgIGFwaS5yZWxvYWQoJzI2M2U1NTQ3JywgY29tcG9uZW50Lm9wdGlvbnMpXG4gICAgfVxuICAgIG1vZHVsZS5ob3QuYWNjZXB0KFwiLi9TaW5nbGVQYXltZW50LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0yNjNlNTU0N1wiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhcGkucmVyZW5kZXIoJzI2M2U1NTQ3Jywge1xuICAgICAgICByZW5kZXI6IHJlbmRlcixcbiAgICAgICAgc3RhdGljUmVuZGVyRm5zOiBzdGF0aWNSZW5kZXJGbnNcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxufVxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJhZG1pbi9wYWdlcy9qZmItcGF5bWVudHMtc2luZ2xlL1NpbmdsZVBheW1lbnQudnVlXCJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvbmVudC5leHBvcnRzIiwiaW1wb3J0IG1vZCBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHd5dy1pbi1qcy93ZWJwYWNrLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9TaW5nbGVQYXltZW50LnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qc1wiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9Ad3l3LWluLWpzL3dlYnBhY2stbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL1NpbmdsZVBheW1lbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vU2luZ2xlUGF5bWVudC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MjYzZTU1NDdcIiIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiaW1wb3J0IFNpbmdsZVBheW1lbnQgZnJvbSAnLi9TaW5nbGVQYXltZW50JztcclxuXHJcbmNvbnN0IHtcclxuXHRCYXNlU3RvcmUsXHJcblx0U2luZ2xlTWV0YUJveGVzUGx1Z2luXHJcbn0gPSBKZXRGQlN0b3JlO1xyXG5cclxuY29uc3QgeyByZW5kZXJDdXJyZW50UGFnZSB9ID0gd2luZG93LkpldEZCQWN0aW9ucztcclxuXHJcbmNvbnN0IHN0b3JlID0gbmV3IFZ1ZXguU3RvcmUoIHtcclxuXHQuLi5CYXNlU3RvcmUsXHJcblx0cGx1Z2luczogWyBTaW5nbGVNZXRhQm94ZXNQbHVnaW4gXSxcclxufSApO1xyXG5cclxucmVuZGVyQ3VycmVudFBhZ2UoIFNpbmdsZVBheW1lbnQsIHsgc3RvcmUgfSApO1xyXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/modules/gateways/assets/build/admin/pages/jfb-payments.asset.php b/modules/gateways/assets/build/admin/pages/jfb-payments.asset.php index c7dfd9db1..791e22993 100644 --- a/modules/gateways/assets/build/admin/pages/jfb-payments.asset.php +++ b/modules/gateways/assets/build/admin/pages/jfb-payments.asset.php @@ -1 +1 @@ - array(), 'version' => '110300a2a245a6c96cf9'); + array(), 'version' => '15cac21de243ce32eeb9'); diff --git a/modules/gateways/assets/build/admin/pages/jfb-payments.js b/modules/gateways/assets/build/admin/pages/jfb-payments.js index 904d27df1..5dd230602 100644 --- a/modules/gateways/assets/build/admin/pages/jfb-payments.js +++ b/modules/gateways/assets/build/admin/pages/jfb-payments.js @@ -1 +1,310 @@ -(()=>{"use strict";var e=function(){var e=this.$createElement;return(this._self._c||e)("PaymentsComponent")};e._withStripped=!0;const{PaymentsPage:{PaymentsComponent:n}}=window.JetFBComponents;var t=function(e,n){var t,o=e;if(n&&(o.render=n,o.staticRenderFns=[],o._compiled=!0),t)if(o.functional){o._injectStyles=t;var r=o.render;o.render=function(e,n){return t.call(n),r(e,n)}}else{var s=o.beforeCreate;o.beforeCreate=s?[].concat(s,t):[t]}return{exports:e,options:o}}({name:"jfb-payments",components:{PaymentsComponent:n}},e);const o=t.exports,{PaymentsPage:{options:r}}=window.JetFBComponents,{renderCurrentPage:s}=window.JetFBActions;r.store=new Vuex.Store(r.store),s(o,r)})(); \ No newline at end of file +/******/ (() => { // webpackBootstrap +/******/ "use strict"; +/******/ var __webpack_modules__ = ({ + +/***/ "../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-payments/PaymentsPage.vue?vue&type=script&lang=js": +/*!*******************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-payments/PaymentsPage.vue?vue&type=script&lang=js ***! + \*******************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +// +// +// +// + +const { + PaymentsPage: { + PaymentsComponent + } +} = window.JetFBComponents; +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + name: "jfb-payments", + components: { + PaymentsComponent + } +}); + +/***/ }), + +/***/ "../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-payments/PaymentsPage.vue?vue&type=template&id=18604964": +/*!********************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-payments/PaymentsPage.vue?vue&type=template&id=18604964 ***! + \********************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('PaymentsComponent')} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js": +/*!******************************************************************************!*\ + !*** ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ normalizeComponent) +/* harmony export */ }); +/* globals __VUE_SSR_CONTEXT__ */ + +// IMPORTANT: Do NOT use ES2015 features in this file (except for modules). +// This module is a runtime utility for cleaner component module output and will +// be included in the final webpack user bundle. + +function normalizeComponent( + scriptExports, + render, + staticRenderFns, + functionalTemplate, + injectStyles, + scopeId, + moduleIdentifier /* server only */, + shadowMode /* vue-cli only */ +) { + // Vue.extend constructor export interop + var options = + typeof scriptExports === 'function' ? scriptExports.options : scriptExports + + // render functions + if (render) { + options.render = render + options.staticRenderFns = staticRenderFns + options._compiled = true + } + + // functional template + if (functionalTemplate) { + options.functional = true + } + + // scopedId + if (scopeId) { + options._scopeId = 'data-v-' + scopeId + } + + var hook + if (moduleIdentifier) { + // server build + hook = function (context) { + // 2.3 injection + context = + context || // cached call + (this.$vnode && this.$vnode.ssrContext) || // stateful + (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional + // 2.2 with runInNewContext: true + if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') { + context = __VUE_SSR_CONTEXT__ + } + // inject component styles + if (injectStyles) { + injectStyles.call(this, context) + } + // register component module identifier for async chunk inferrence + if (context && context._registeredComponents) { + context._registeredComponents.add(moduleIdentifier) + } + } + // used by ssr in case component is cached and beforeCreate + // never gets called + options._ssrRegister = hook + } else if (injectStyles) { + hook = shadowMode + ? function () { + injectStyles.call( + this, + (options.functional ? this.parent : this).$root.$options.shadowRoot + ) + } + : injectStyles + } + + if (hook) { + if (options.functional) { + // for template-only hot-reload because in that case the render fn doesn't + // go through the normalizer + options._injectStyles = hook + // register for functional component in vue file + var originalRender = options.render + options.render = function renderWithStyleInjection(h, context) { + hook.call(context) + return originalRender(h, context) + } + } else { + // inject component registration as beforeCreate hook + var existing = options.beforeCreate + options.beforeCreate = existing ? [].concat(existing, hook) : [hook] + } + } + + return { + exports: scriptExports, + options: options + } +} + + +/***/ }), + +/***/ "./admin/pages/jfb-payments/PaymentsPage.vue": +/*!***************************************************!*\ + !*** ./admin/pages/jfb-payments/PaymentsPage.vue ***! + \***************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _PaymentsPage_vue_vue_type_template_id_18604964__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./PaymentsPage.vue?vue&type=template&id=18604964 */ "./admin/pages/jfb-payments/PaymentsPage.vue?vue&type=template&id=18604964"); +/* harmony import */ var _PaymentsPage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./PaymentsPage.vue?vue&type=script&lang=js */ "./admin/pages/jfb-payments/PaymentsPage.vue?vue&type=script&lang=js"); +/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js"); + + + + + +/* normalize component */ +; +var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( + _PaymentsPage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], + _PaymentsPage_vue_vue_type_template_id_18604964__WEBPACK_IMPORTED_MODULE_0__.render, + _PaymentsPage_vue_vue_type_template_id_18604964__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, + false, + null, + null, + null + +) + +/* hot reload */ +if (false) { var api; } +component.options.__file = "admin/pages/jfb-payments/PaymentsPage.vue" +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); + +/***/ }), + +/***/ "./admin/pages/jfb-payments/PaymentsPage.vue?vue&type=script&lang=js": +/*!***************************************************************************!*\ + !*** ./admin/pages/jfb-payments/PaymentsPage.vue?vue&type=script&lang=js ***! + \***************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_wyw_in_js_webpack_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PaymentsPage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaymentsPage.vue?vue&type=script&lang=js */ "../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-payments/PaymentsPage.vue?vue&type=script&lang=js"); + /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_node_modules_wyw_in_js_webpack_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PaymentsPage_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); + +/***/ }), + +/***/ "./admin/pages/jfb-payments/PaymentsPage.vue?vue&type=template&id=18604964": +/*!*********************************************************************************!*\ + !*** ./admin/pages/jfb-payments/PaymentsPage.vue?vue&type=template&id=18604964 ***! + \*********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* reexport safe */ _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_PaymentsPage_vue_vue_type_template_id_18604964__WEBPACK_IMPORTED_MODULE_0__.render), +/* harmony export */ staticRenderFns: () => (/* reexport safe */ _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_PaymentsPage_vue_vue_type_template_id_18604964__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) +/* harmony export */ }); +/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_PaymentsPage_vue_vue_type_template_id_18604964__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaymentsPage.vue?vue&type=template&id=18604964 */ "../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/jfb-payments/PaymentsPage.vue?vue&type=template&id=18604964"); + + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/define property getters */ +/******/ (() => { +/******/ // define getter functions for harmony exports +/******/ __webpack_require__.d = (exports, definition) => { +/******/ for(var key in definition) { +/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); +/******/ } +/******/ } +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ (() => { +/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) +/******/ })(); +/******/ +/******/ /* webpack/runtime/make namespace object */ +/******/ (() => { +/******/ // define __esModule on exports +/******/ __webpack_require__.r = (exports) => { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ })(); +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry needs to be wrapped in an IIFE because it needs to be isolated against other modules in the chunk. +(() => { +/*!*******************************************!*\ + !*** ./admin/pages/jfb-payments/index.js ***! + \*******************************************/ +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _PaymentsPage__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./PaymentsPage */ "./admin/pages/jfb-payments/PaymentsPage.vue"); + +const { + PaymentsPage: { + options + } +} = window.JetFBComponents; +const { + renderCurrentPage +} = window.JetFBActions; +options.store = new Vuex.Store(options.store); +renderCurrentPage(_PaymentsPage__WEBPACK_IMPORTED_MODULE_0__["default"], options); +})(); + +/******/ })() +; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4vcGFnZXMvamZiLXBheW1lbnRzLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFLQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7QUNaQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7OztBQ0ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDL0ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFrQkE7QUFDQTs7Ozs7Ozs7Ozs7Ozs7O0FDdENBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FFQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDdkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDUEE7Ozs7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7OztBQ05BO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBRUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9qZmItZ2F0ZXdheXMvYWRtaW4vcGFnZXMvamZiLXBheW1lbnRzL1BheW1lbnRzUGFnZS52dWUiLCJ3ZWJwYWNrOi8vamZiLWdhdGV3YXlzLy4vYWRtaW4vcGFnZXMvamZiLXBheW1lbnRzL1BheW1lbnRzUGFnZS52dWU/Y2U2OSIsIndlYnBhY2s6Ly9qZmItZ2F0ZXdheXMvLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qcyIsIndlYnBhY2s6Ly9qZmItZ2F0ZXdheXMvLi9hZG1pbi9wYWdlcy9qZmItcGF5bWVudHMvUGF5bWVudHNQYWdlLnZ1ZSIsIndlYnBhY2s6Ly9qZmItZ2F0ZXdheXMvLi9hZG1pbi9wYWdlcy9qZmItcGF5bWVudHMvUGF5bWVudHNQYWdlLnZ1ZT8xNzE0Iiwid2VicGFjazovL2pmYi1nYXRld2F5cy8uL2FkbWluL3BhZ2VzL2pmYi1wYXltZW50cy9QYXltZW50c1BhZ2UudnVlP2E1NDciLCJ3ZWJwYWNrOi8vamZiLWdhdGV3YXlzL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL2pmYi1nYXRld2F5cy93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vamZiLWdhdGV3YXlzL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vamZiLWdhdGV3YXlzL3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vamZiLWdhdGV3YXlzLy4vYWRtaW4vcGFnZXMvamZiLXBheW1lbnRzL2luZGV4LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIjx0ZW1wbGF0ZT5cclxuXHQ8UGF5bWVudHNDb21wb25lbnQvPlxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdD5cclxuY29uc3QgeyBQYXltZW50c1BhZ2U6IHsgUGF5bWVudHNDb21wb25lbnQgfSB9ID0gd2luZG93LkpldEZCQ29tcG9uZW50cztcclxuXHJcbmV4cG9ydCBkZWZhdWx0IHtcclxuXHRuYW1lOiBcImpmYi1wYXltZW50c1wiLFxyXG5cdGNvbXBvbmVudHM6IHtcclxuXHRcdFBheW1lbnRzQ29tcG9uZW50LFxyXG5cdH0sXHJcbn1cclxuPC9zY3JpcHQ+XHJcblxyXG48c3R5bGU+XHJcblxyXG48L3N0eWxlPiIsInZhciByZW5kZXIgPSBmdW5jdGlvbiAoKSB7dmFyIF92bT10aGlzO3ZhciBfaD1fdm0uJGNyZWF0ZUVsZW1lbnQ7dmFyIF9jPV92bS5fc2VsZi5fY3x8X2g7cmV0dXJuIF9jKCdQYXltZW50c0NvbXBvbmVudCcpfVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iLCIvKiBnbG9iYWxzIF9fVlVFX1NTUl9DT05URVhUX18gKi9cblxuLy8gSU1QT1JUQU5UOiBEbyBOT1QgdXNlIEVTMjAxNSBmZWF0dXJlcyBpbiB0aGlzIGZpbGUgKGV4Y2VwdCBmb3IgbW9kdWxlcykuXG4vLyBUaGlzIG1vZHVsZSBpcyBhIHJ1bnRpbWUgdXRpbGl0eSBmb3IgY2xlYW5lciBjb21wb25lbnQgbW9kdWxlIG91dHB1dCBhbmQgd2lsbFxuLy8gYmUgaW5jbHVkZWQgaW4gdGhlIGZpbmFsIHdlYnBhY2sgdXNlciBidW5kbGUuXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgc2NyaXB0RXhwb3J0cyxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZ1bmN0aW9uYWxUZW1wbGF0ZSxcbiAgaW5qZWN0U3R5bGVzLFxuICBzY29wZUlkLFxuICBtb2R1bGVJZGVudGlmaWVyIC8qIHNlcnZlciBvbmx5ICovLFxuICBzaGFkb3dNb2RlIC8qIHZ1ZS1jbGkgb25seSAqL1xuKSB7XG4gIC8vIFZ1ZS5leHRlbmQgY29uc3RydWN0b3IgZXhwb3J0IGludGVyb3BcbiAgdmFyIG9wdGlvbnMgPVxuICAgIHR5cGVvZiBzY3JpcHRFeHBvcnRzID09PSAnZnVuY3Rpb24nID8gc2NyaXB0RXhwb3J0cy5vcHRpb25zIDogc2NyaXB0RXhwb3J0c1xuXG4gIC8vIHJlbmRlciBmdW5jdGlvbnNcbiAgaWYgKHJlbmRlcikge1xuICAgIG9wdGlvbnMucmVuZGVyID0gcmVuZGVyXG4gICAgb3B0aW9ucy5zdGF0aWNSZW5kZXJGbnMgPSBzdGF0aWNSZW5kZXJGbnNcbiAgICBvcHRpb25zLl9jb21waWxlZCA9IHRydWVcbiAgfVxuXG4gIC8vIGZ1bmN0aW9uYWwgdGVtcGxhdGVcbiAgaWYgKGZ1bmN0aW9uYWxUZW1wbGF0ZSkge1xuICAgIG9wdGlvbnMuZnVuY3Rpb25hbCA9IHRydWVcbiAgfVxuXG4gIC8vIHNjb3BlZElkXG4gIGlmIChzY29wZUlkKSB7XG4gICAgb3B0aW9ucy5fc2NvcGVJZCA9ICdkYXRhLXYtJyArIHNjb3BlSWRcbiAgfVxuXG4gIHZhciBob29rXG4gIGlmIChtb2R1bGVJZGVudGlmaWVyKSB7XG4gICAgLy8gc2VydmVyIGJ1aWxkXG4gICAgaG9vayA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICAvLyAyLjMgaW5qZWN0aW9uXG4gICAgICBjb250ZXh0ID1cbiAgICAgICAgY29udGV4dCB8fCAvLyBjYWNoZWQgY2FsbFxuICAgICAgICAodGhpcy4kdm5vZGUgJiYgdGhpcy4kdm5vZGUuc3NyQ29udGV4dCkgfHwgLy8gc3RhdGVmdWxcbiAgICAgICAgKHRoaXMucGFyZW50ICYmIHRoaXMucGFyZW50LiR2bm9kZSAmJiB0aGlzLnBhcmVudC4kdm5vZGUuc3NyQ29udGV4dCkgLy8gZnVuY3Rpb25hbFxuICAgICAgLy8gMi4yIHdpdGggcnVuSW5OZXdDb250ZXh0OiB0cnVlXG4gICAgICBpZiAoIWNvbnRleHQgJiYgdHlwZW9mIF9fVlVFX1NTUl9DT05URVhUX18gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGNvbnRleHQgPSBfX1ZVRV9TU1JfQ09OVEVYVF9fXG4gICAgICB9XG4gICAgICAvLyBpbmplY3QgY29tcG9uZW50IHN0eWxlc1xuICAgICAgaWYgKGluamVjdFN0eWxlcykge1xuICAgICAgICBpbmplY3RTdHlsZXMuY2FsbCh0aGlzLCBjb250ZXh0KVxuICAgICAgfVxuICAgICAgLy8gcmVnaXN0ZXIgY29tcG9uZW50IG1vZHVsZSBpZGVudGlmaWVyIGZvciBhc3luYyBjaHVuayBpbmZlcnJlbmNlXG4gICAgICBpZiAoY29udGV4dCAmJiBjb250ZXh0Ll9yZWdpc3RlcmVkQ29tcG9uZW50cykge1xuICAgICAgICBjb250ZXh0Ll9yZWdpc3RlcmVkQ29tcG9uZW50cy5hZGQobW9kdWxlSWRlbnRpZmllcilcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gdXNlZCBieSBzc3IgaW4gY2FzZSBjb21wb25lbnQgaXMgY2FjaGVkIGFuZCBiZWZvcmVDcmVhdGVcbiAgICAvLyBuZXZlciBnZXRzIGNhbGxlZFxuICAgIG9wdGlvbnMuX3NzclJlZ2lzdGVyID0gaG9va1xuICB9IGVsc2UgaWYgKGluamVjdFN0eWxlcykge1xuICAgIGhvb2sgPSBzaGFkb3dNb2RlXG4gICAgICA/IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpbmplY3RTdHlsZXMuY2FsbChcbiAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICAob3B0aW9ucy5mdW5jdGlvbmFsID8gdGhpcy5wYXJlbnQgOiB0aGlzKS4kcm9vdC4kb3B0aW9ucy5zaGFkb3dSb290XG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICA6IGluamVjdFN0eWxlc1xuICB9XG5cbiAgaWYgKGhvb2spIHtcbiAgICBpZiAob3B0aW9ucy5mdW5jdGlvbmFsKSB7XG4gICAgICAvLyBmb3IgdGVtcGxhdGUtb25seSBob3QtcmVsb2FkIGJlY2F1c2UgaW4gdGhhdCBjYXNlIHRoZSByZW5kZXIgZm4gZG9lc24ndFxuICAgICAgLy8gZ28gdGhyb3VnaCB0aGUgbm9ybWFsaXplclxuICAgICAgb3B0aW9ucy5faW5qZWN0U3R5bGVzID0gaG9va1xuICAgICAgLy8gcmVnaXN0ZXIgZm9yIGZ1bmN0aW9uYWwgY29tcG9uZW50IGluIHZ1ZSBmaWxlXG4gICAgICB2YXIgb3JpZ2luYWxSZW5kZXIgPSBvcHRpb25zLnJlbmRlclxuICAgICAgb3B0aW9ucy5yZW5kZXIgPSBmdW5jdGlvbiByZW5kZXJXaXRoU3R5bGVJbmplY3Rpb24oaCwgY29udGV4dCkge1xuICAgICAgICBob29rLmNhbGwoY29udGV4dClcbiAgICAgICAgcmV0dXJuIG9yaWdpbmFsUmVuZGVyKGgsIGNvbnRleHQpXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGluamVjdCBjb21wb25lbnQgcmVnaXN0cmF0aW9uIGFzIGJlZm9yZUNyZWF0ZSBob29rXG4gICAgICB2YXIgZXhpc3RpbmcgPSBvcHRpb25zLmJlZm9yZUNyZWF0ZVxuICAgICAgb3B0aW9ucy5iZWZvcmVDcmVhdGUgPSBleGlzdGluZyA/IFtdLmNvbmNhdChleGlzdGluZywgaG9vaykgOiBbaG9va11cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGV4cG9ydHM6IHNjcmlwdEV4cG9ydHMsXG4gICAgb3B0aW9uczogb3B0aW9uc1xuICB9XG59XG4iLCJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IGZyb20gXCIuL1BheW1lbnRzUGFnZS52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9MTg2MDQ5NjRcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9QYXltZW50c1BhZ2UudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1BheW1lbnRzUGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anNcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIHZhciBhcGkgPSByZXF1aXJlKFwiRTpcXFxcT3BlblNlcnZlclxcXFxkb21haW5zXFxcXGNyb2NvLmxvY2FsXFxcXHdwLWNvbnRlbnRcXFxccGx1Z2luc1xcXFxqZXRmb3JtYnVpbGRlclxcXFxub2RlX21vZHVsZXNcXFxcdnVlLWhvdC1yZWxvYWQtYXBpXFxcXGRpc3RcXFxcaW5kZXguanNcIilcbiAgYXBpLmluc3RhbGwocmVxdWlyZSgndnVlJykpXG4gIGlmIChhcGkuY29tcGF0aWJsZSkge1xuICAgIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgICBpZiAoIWFwaS5pc1JlY29yZGVkKCcxODYwNDk2NCcpKSB7XG4gICAgICBhcGkuY3JlYXRlUmVjb3JkKCcxODYwNDk2NCcsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVsb2FkKCcxODYwNDk2NCcsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH1cbiAgICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUGF5bWVudHNQYWdlLnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD0xODYwNDk2NFwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhcGkucmVyZW5kZXIoJzE4NjA0OTY0Jywge1xuICAgICAgICByZW5kZXI6IHJlbmRlcixcbiAgICAgICAgc3RhdGljUmVuZGVyRm5zOiBzdGF0aWNSZW5kZXJGbnNcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxufVxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJhZG1pbi9wYWdlcy9qZmItcGF5bWVudHMvUGF5bWVudHNQYWdlLnZ1ZVwiXG5leHBvcnQgZGVmYXVsdCBjb21wb25lbnQuZXhwb3J0cyIsImltcG9ydCBtb2QgZnJvbSBcIi0hLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL2JhYmVsLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL0B3eXctaW4tanMvd2VicGFjay1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vUGF5bWVudHNQYWdlLnZ1ZT92dWUmdHlwZT1zY3JpcHQmbGFuZz1qc1wiOyBleHBvcnQgZGVmYXVsdCBtb2Q7IGV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9Ad3l3LWluLWpzL3dlYnBhY2stbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL1BheW1lbnRzUGFnZS52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anNcIiIsImV4cG9ydCAqIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9sb2FkZXJzL3RlbXBsYXRlTG9hZGVyLmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9QYXltZW50c1BhZ2UudnVlP3Z1ZSZ0eXBlPXRlbXBsYXRlJmlkPTE4NjA0OTY0XCIiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZGVmaW5lIGdldHRlciBmdW5jdGlvbnMgZm9yIGhhcm1vbnkgZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5kID0gKGV4cG9ydHMsIGRlZmluaXRpb24pID0+IHtcblx0Zm9yKHZhciBrZXkgaW4gZGVmaW5pdGlvbikge1xuXHRcdGlmKF9fd2VicGFja19yZXF1aXJlX18ubyhkZWZpbml0aW9uLCBrZXkpICYmICFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywga2V5KSkge1xuXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIGtleSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGRlZmluaXRpb25ba2V5XSB9KTtcblx0XHR9XG5cdH1cbn07IiwiX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gKG9iaiwgcHJvcCkgPT4gKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmosIHByb3ApKSIsIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IChleHBvcnRzKSA9PiB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsImltcG9ydCBQYXltZW50c1BhZ2UgZnJvbSAnLi9QYXltZW50c1BhZ2UnO1xyXG5cclxuY29uc3QgeyBQYXltZW50c1BhZ2U6IHsgb3B0aW9ucyB9IH0gPSB3aW5kb3cuSmV0RkJDb21wb25lbnRzO1xyXG5jb25zdCB7IHJlbmRlckN1cnJlbnRQYWdlIH0gPSB3aW5kb3cuSmV0RkJBY3Rpb25zO1xyXG5cclxub3B0aW9ucy5zdG9yZSA9IG5ldyBWdWV4LlN0b3JlKCBvcHRpb25zLnN0b3JlIClcclxuXHJcbnJlbmRlckN1cnJlbnRQYWdlKCBQYXltZW50c1BhZ2UsIG9wdGlvbnMgKTtcclxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/modules/gateways/assets/build/admin/pages/payment-print.asset.php b/modules/gateways/assets/build/admin/pages/payment-print.asset.php index b3f58dcf2..b338884ed 100644 --- a/modules/gateways/assets/build/admin/pages/payment-print.asset.php +++ b/modules/gateways/assets/build/admin/pages/payment-print.asset.php @@ -1 +1 @@ - array(), 'version' => '497d5777aa642442f3a7'); + array(), 'version' => '82de8bdd074d3f9b2588'); diff --git a/modules/gateways/assets/build/admin/pages/payment-print.js b/modules/gateways/assets/build/admin/pages/payment-print.js index 0de1caed3..2c6fa4a71 100644 --- a/modules/gateways/assets/build/admin/pages/payment-print.js +++ b/modules/gateways/assets/build/admin/pages/payment-print.js @@ -1 +1,326 @@ -(()=>{"use strict";var e=function(){var e=this,t=e.$createElement,r=e._self._c||t;return r("FormBuilderPage",{scopedSlots:e._u([{key:"heading-after",fn:function(){return[r("PrintButton")]},proxy:!0}])},[e._v(" "),r("PostBoxGrid")],1)};e._withStripped=!0;const{PostBoxGrid:t,FormBuilderPage:r,PrintButton:n}=JetFBComponents,{mapGetters:o,mapMutations:i,mapActions:s}=Vuex;var a=function(e,t){var r,n=e;if(t&&(n.render=t,n.staticRenderFns=[],n._compiled=!0),r)if(n.functional){n._injectStyles=r;var o=n.render;n.render=function(e,t){return r.call(t),o(e,t)}}else{var i=n.beforeCreate;n.beforeCreate=i?[].concat(i,r):[r]}return{exports:e,options:n}}({name:"payment-print",components:{PostBoxGrid:t,FormBuilderPage:r,PrintButton:n}},e);const u=a.exports,{BaseStore:c,SingleMetaBoxesPlugin:d}=JetFBStore,{renderCurrentPage:p}=window.JetFBActions;p(u,{store:new Vuex.Store({...c,plugins:[d]})})})(); \ No newline at end of file +/******/ (() => { // webpackBootstrap +/******/ "use strict"; +/******/ var __webpack_modules__ = ({ + +/***/ "../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/payment-print/PaymentPrint.vue?vue&type=script&lang=js": +/*!********************************************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/payment-print/PaymentPrint.vue?vue&type=script&lang=js ***! + \********************************************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +// +// +// +// +// +// +// +// +// + +const { + PostBoxGrid, + FormBuilderPage, + PrintButton +} = JetFBComponents; +const { + mapGetters, + mapMutations, + mapActions +} = Vuex; +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + name: 'payment-print', + components: { + PostBoxGrid, + FormBuilderPage, + PrintButton + } +}); + +/***/ }), + +/***/ "../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/payment-print/PaymentPrint.vue?vue&type=template&id=a92b1dae": +/*!*********************************************************************************************************************************************************************************************************************************************!*\ + !*** ../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/payment-print/PaymentPrint.vue?vue&type=template&id=a92b1dae ***! + \*********************************************************************************************************************************************************************************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* binding */ render), +/* harmony export */ staticRenderFns: () => (/* binding */ staticRenderFns) +/* harmony export */ }); +var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('FormBuilderPage',{scopedSlots:_vm._u([{key:"heading-after",fn:function(){return [_c('PrintButton')]},proxy:true}])},[_vm._v(" "),_c('PostBoxGrid')],1)} +var staticRenderFns = [] +render._withStripped = true + + +/***/ }), + +/***/ "../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js": +/*!******************************************************************************!*\ + !*** ../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js ***! + \******************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ normalizeComponent) +/* harmony export */ }); +/* globals __VUE_SSR_CONTEXT__ */ + +// IMPORTANT: Do NOT use ES2015 features in this file (except for modules). +// This module is a runtime utility for cleaner component module output and will +// be included in the final webpack user bundle. + +function normalizeComponent( + scriptExports, + render, + staticRenderFns, + functionalTemplate, + injectStyles, + scopeId, + moduleIdentifier /* server only */, + shadowMode /* vue-cli only */ +) { + // Vue.extend constructor export interop + var options = + typeof scriptExports === 'function' ? scriptExports.options : scriptExports + + // render functions + if (render) { + options.render = render + options.staticRenderFns = staticRenderFns + options._compiled = true + } + + // functional template + if (functionalTemplate) { + options.functional = true + } + + // scopedId + if (scopeId) { + options._scopeId = 'data-v-' + scopeId + } + + var hook + if (moduleIdentifier) { + // server build + hook = function (context) { + // 2.3 injection + context = + context || // cached call + (this.$vnode && this.$vnode.ssrContext) || // stateful + (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext) // functional + // 2.2 with runInNewContext: true + if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') { + context = __VUE_SSR_CONTEXT__ + } + // inject component styles + if (injectStyles) { + injectStyles.call(this, context) + } + // register component module identifier for async chunk inferrence + if (context && context._registeredComponents) { + context._registeredComponents.add(moduleIdentifier) + } + } + // used by ssr in case component is cached and beforeCreate + // never gets called + options._ssrRegister = hook + } else if (injectStyles) { + hook = shadowMode + ? function () { + injectStyles.call( + this, + (options.functional ? this.parent : this).$root.$options.shadowRoot + ) + } + : injectStyles + } + + if (hook) { + if (options.functional) { + // for template-only hot-reload because in that case the render fn doesn't + // go through the normalizer + options._injectStyles = hook + // register for functional component in vue file + var originalRender = options.render + options.render = function renderWithStyleInjection(h, context) { + hook.call(context) + return originalRender(h, context) + } + } else { + // inject component registration as beforeCreate hook + var existing = options.beforeCreate + options.beforeCreate = existing ? [].concat(existing, hook) : [hook] + } + } + + return { + exports: scriptExports, + options: options + } +} + + +/***/ }), + +/***/ "./admin/pages/payment-print/PaymentPrint.vue": +/*!****************************************************!*\ + !*** ./admin/pages/payment-print/PaymentPrint.vue ***! + \****************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _PaymentPrint_vue_vue_type_template_id_a92b1dae__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./PaymentPrint.vue?vue&type=template&id=a92b1dae */ "./admin/pages/payment-print/PaymentPrint.vue?vue&type=template&id=a92b1dae"); +/* harmony import */ var _PaymentPrint_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./PaymentPrint.vue?vue&type=script&lang=js */ "./admin/pages/payment-print/PaymentPrint.vue?vue&type=script&lang=js"); +/* harmony import */ var _node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! !../../../../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js */ "../../../../node_modules/vue-loader/lib/runtime/componentNormalizer.js"); + + + + + +/* normalize component */ +; +var component = (0,_node_modules_vue_loader_lib_runtime_componentNormalizer_js__WEBPACK_IMPORTED_MODULE_2__["default"])( + _PaymentPrint_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_1__["default"], + _PaymentPrint_vue_vue_type_template_id_a92b1dae__WEBPACK_IMPORTED_MODULE_0__.render, + _PaymentPrint_vue_vue_type_template_id_a92b1dae__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns, + false, + null, + null, + null + +) + +/* hot reload */ +if (false) { var api; } +component.options.__file = "admin/pages/payment-print/PaymentPrint.vue" +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (component.exports); + +/***/ }), + +/***/ "./admin/pages/payment-print/PaymentPrint.vue?vue&type=script&lang=js": +/*!****************************************************************************!*\ + !*** ./admin/pages/payment-print/PaymentPrint.vue?vue&type=script&lang=js ***! + \****************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _node_modules_babel_loader_lib_index_js_node_modules_wyw_in_js_webpack_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PaymentPrint_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../node_modules/babel-loader/lib/index.js!../../../../../../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaymentPrint.vue?vue&type=script&lang=js */ "../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/@wyw-in-js/webpack-loader/lib/index.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/payment-print/PaymentPrint.vue?vue&type=script&lang=js"); + /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_babel_loader_lib_index_js_node_modules_wyw_in_js_webpack_loader_lib_index_js_node_modules_vue_loader_lib_index_js_vue_loader_options_PaymentPrint_vue_vue_type_script_lang_js__WEBPACK_IMPORTED_MODULE_0__["default"]); + +/***/ }), + +/***/ "./admin/pages/payment-print/PaymentPrint.vue?vue&type=template&id=a92b1dae": +/*!**********************************************************************************!*\ + !*** ./admin/pages/payment-print/PaymentPrint.vue?vue&type=template&id=a92b1dae ***! + \**********************************************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ render: () => (/* reexport safe */ _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_PaymentPrint_vue_vue_type_template_id_a92b1dae__WEBPACK_IMPORTED_MODULE_0__.render), +/* harmony export */ staticRenderFns: () => (/* reexport safe */ _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_PaymentPrint_vue_vue_type_template_id_a92b1dae__WEBPACK_IMPORTED_MODULE_0__.staticRenderFns) +/* harmony export */ }); +/* harmony import */ var _node_modules_vue_loader_lib_loaders_templateLoader_js_vue_loader_options_node_modules_vue_loader_lib_index_js_vue_loader_options_PaymentPrint_vue_vue_type_template_id_a92b1dae__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! -!../../../../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./PaymentPrint.vue?vue&type=template&id=a92b1dae */ "../../../../node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./admin/pages/payment-print/PaymentPrint.vue?vue&type=template&id=a92b1dae"); + + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/define property getters */ +/******/ (() => { +/******/ // define getter functions for harmony exports +/******/ __webpack_require__.d = (exports, definition) => { +/******/ for(var key in definition) { +/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); +/******/ } +/******/ } +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ (() => { +/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) +/******/ })(); +/******/ +/******/ /* webpack/runtime/make namespace object */ +/******/ (() => { +/******/ // define __esModule on exports +/******/ __webpack_require__.r = (exports) => { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ })(); +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry needs to be wrapped in an IIFE because it needs to be isolated against other modules in the chunk. +(() => { +/*!********************************************!*\ + !*** ./admin/pages/payment-print/index.js ***! + \********************************************/ +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _PaymentPrint__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./PaymentPrint */ "./admin/pages/payment-print/PaymentPrint.vue"); + +const { + BaseStore, + SingleMetaBoxesPlugin +} = JetFBStore; +const { + renderCurrentPage +} = window.JetFBActions; +const store = new Vuex.Store({ + ...BaseStore, + plugins: [SingleMetaBoxesPlugin] +}); +renderCurrentPage(_PaymentPrint__WEBPACK_IMPORTED_MODULE_0__["default"], { + store +}); +})(); + +/******/ })() +; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRtaW4vcGFnZXMvcGF5bWVudC1wcmludC5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFVQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7OztBQzdCQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7OztBQ0ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDL0ZBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFrQkE7QUFDQTs7Ozs7Ozs7Ozs7Ozs7O0FDdENBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FFQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDdkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDUEE7Ozs7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7OztBQ05BO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQSIsInNvdXJjZXMiOlsid2VicGFjazovL2pmYi1nYXRld2F5cy9hZG1pbi9wYWdlcy9wYXltZW50LXByaW50L1BheW1lbnRQcmludC52dWUiLCJ3ZWJwYWNrOi8vamZiLWdhdGV3YXlzLy4vYWRtaW4vcGFnZXMvcGF5bWVudC1wcmludC9QYXltZW50UHJpbnQudnVlPzA3NDEiLCJ3ZWJwYWNrOi8vamZiLWdhdGV3YXlzLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9ydW50aW1lL2NvbXBvbmVudE5vcm1hbGl6ZXIuanMiLCJ3ZWJwYWNrOi8vamZiLWdhdGV3YXlzLy4vYWRtaW4vcGFnZXMvcGF5bWVudC1wcmludC9QYXltZW50UHJpbnQudnVlIiwid2VicGFjazovL2pmYi1nYXRld2F5cy8uL2FkbWluL3BhZ2VzL3BheW1lbnQtcHJpbnQvUGF5bWVudFByaW50LnZ1ZT9mNWVkIiwid2VicGFjazovL2pmYi1nYXRld2F5cy8uL2FkbWluL3BhZ2VzL3BheW1lbnQtcHJpbnQvUGF5bWVudFByaW50LnZ1ZT9lODZlIiwid2VicGFjazovL2pmYi1nYXRld2F5cy93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9qZmItZ2F0ZXdheXMvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL2pmYi1nYXRld2F5cy93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL2pmYi1nYXRld2F5cy93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL2pmYi1nYXRld2F5cy8uL2FkbWluL3BhZ2VzL3BheW1lbnQtcHJpbnQvaW5kZXguanMiXSwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxyXG5cdDxGb3JtQnVpbGRlclBhZ2U+XHJcblx0XHQ8dGVtcGxhdGUgI2hlYWRpbmctYWZ0ZXI+XHJcblx0XHRcdDxQcmludEJ1dHRvbi8+XHJcblx0XHQ8L3RlbXBsYXRlPlxyXG5cdFx0PFBvc3RCb3hHcmlkLz5cclxuXHQ8L0Zvcm1CdWlsZGVyUGFnZT5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcbmNvbnN0IHtcclxuXHQgICAgICBQb3N0Qm94R3JpZCxcclxuXHQgICAgICBGb3JtQnVpbGRlclBhZ2UsXHJcblx0ICAgICAgUHJpbnRCdXR0b24sXHJcbiAgICAgIH0gPSBKZXRGQkNvbXBvbmVudHM7XHJcblxyXG5jb25zdCB7XHJcblx0ICAgICAgbWFwR2V0dGVycyxcclxuXHQgICAgICBtYXBNdXRhdGlvbnMsXHJcblx0ICAgICAgbWFwQWN0aW9ucyxcclxuICAgICAgfSA9IFZ1ZXg7XHJcblxyXG5leHBvcnQgZGVmYXVsdCB7XHJcblx0bmFtZTogJ3BheW1lbnQtcHJpbnQnLFxyXG5cdGNvbXBvbmVudHM6IHtcclxuXHRcdFBvc3RCb3hHcmlkLFxyXG5cdFx0Rm9ybUJ1aWxkZXJQYWdlLFxyXG5cdFx0UHJpbnRCdXR0b24sXHJcblx0fSxcclxufTtcclxuPC9zY3JpcHQ+XHJcblxyXG48c3R5bGU+XHJcblxyXG48L3N0eWxlPiIsInZhciByZW5kZXIgPSBmdW5jdGlvbiAoKSB7dmFyIF92bT10aGlzO3ZhciBfaD1fdm0uJGNyZWF0ZUVsZW1lbnQ7dmFyIF9jPV92bS5fc2VsZi5fY3x8X2g7cmV0dXJuIF9jKCdGb3JtQnVpbGRlclBhZ2UnLHtzY29wZWRTbG90czpfdm0uX3UoW3trZXk6XCJoZWFkaW5nLWFmdGVyXCIsZm46ZnVuY3Rpb24oKXtyZXR1cm4gW19jKCdQcmludEJ1dHRvbicpXX0scHJveHk6dHJ1ZX1dKX0sW192bS5fdihcIiBcIiksX2MoJ1Bvc3RCb3hHcmlkJyldLDEpfVxudmFyIHN0YXRpY1JlbmRlckZucyA9IFtdXG5yZW5kZXIuX3dpdGhTdHJpcHBlZCA9IHRydWVcbmV4cG9ydCB7IHJlbmRlciwgc3RhdGljUmVuZGVyRm5zIH0iLCIvKiBnbG9iYWxzIF9fVlVFX1NTUl9DT05URVhUX18gKi9cblxuLy8gSU1QT1JUQU5UOiBEbyBOT1QgdXNlIEVTMjAxNSBmZWF0dXJlcyBpbiB0aGlzIGZpbGUgKGV4Y2VwdCBmb3IgbW9kdWxlcykuXG4vLyBUaGlzIG1vZHVsZSBpcyBhIHJ1bnRpbWUgdXRpbGl0eSBmb3IgY2xlYW5lciBjb21wb25lbnQgbW9kdWxlIG91dHB1dCBhbmQgd2lsbFxuLy8gYmUgaW5jbHVkZWQgaW4gdGhlIGZpbmFsIHdlYnBhY2sgdXNlciBidW5kbGUuXG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIG5vcm1hbGl6ZUNvbXBvbmVudChcbiAgc2NyaXB0RXhwb3J0cyxcbiAgcmVuZGVyLFxuICBzdGF0aWNSZW5kZXJGbnMsXG4gIGZ1bmN0aW9uYWxUZW1wbGF0ZSxcbiAgaW5qZWN0U3R5bGVzLFxuICBzY29wZUlkLFxuICBtb2R1bGVJZGVudGlmaWVyIC8qIHNlcnZlciBvbmx5ICovLFxuICBzaGFkb3dNb2RlIC8qIHZ1ZS1jbGkgb25seSAqL1xuKSB7XG4gIC8vIFZ1ZS5leHRlbmQgY29uc3RydWN0b3IgZXhwb3J0IGludGVyb3BcbiAgdmFyIG9wdGlvbnMgPVxuICAgIHR5cGVvZiBzY3JpcHRFeHBvcnRzID09PSAnZnVuY3Rpb24nID8gc2NyaXB0RXhwb3J0cy5vcHRpb25zIDogc2NyaXB0RXhwb3J0c1xuXG4gIC8vIHJlbmRlciBmdW5jdGlvbnNcbiAgaWYgKHJlbmRlcikge1xuICAgIG9wdGlvbnMucmVuZGVyID0gcmVuZGVyXG4gICAgb3B0aW9ucy5zdGF0aWNSZW5kZXJGbnMgPSBzdGF0aWNSZW5kZXJGbnNcbiAgICBvcHRpb25zLl9jb21waWxlZCA9IHRydWVcbiAgfVxuXG4gIC8vIGZ1bmN0aW9uYWwgdGVtcGxhdGVcbiAgaWYgKGZ1bmN0aW9uYWxUZW1wbGF0ZSkge1xuICAgIG9wdGlvbnMuZnVuY3Rpb25hbCA9IHRydWVcbiAgfVxuXG4gIC8vIHNjb3BlZElkXG4gIGlmIChzY29wZUlkKSB7XG4gICAgb3B0aW9ucy5fc2NvcGVJZCA9ICdkYXRhLXYtJyArIHNjb3BlSWRcbiAgfVxuXG4gIHZhciBob29rXG4gIGlmIChtb2R1bGVJZGVudGlmaWVyKSB7XG4gICAgLy8gc2VydmVyIGJ1aWxkXG4gICAgaG9vayA9IGZ1bmN0aW9uIChjb250ZXh0KSB7XG4gICAgICAvLyAyLjMgaW5qZWN0aW9uXG4gICAgICBjb250ZXh0ID1cbiAgICAgICAgY29udGV4dCB8fCAvLyBjYWNoZWQgY2FsbFxuICAgICAgICAodGhpcy4kdm5vZGUgJiYgdGhpcy4kdm5vZGUuc3NyQ29udGV4dCkgfHwgLy8gc3RhdGVmdWxcbiAgICAgICAgKHRoaXMucGFyZW50ICYmIHRoaXMucGFyZW50LiR2bm9kZSAmJiB0aGlzLnBhcmVudC4kdm5vZGUuc3NyQ29udGV4dCkgLy8gZnVuY3Rpb25hbFxuICAgICAgLy8gMi4yIHdpdGggcnVuSW5OZXdDb250ZXh0OiB0cnVlXG4gICAgICBpZiAoIWNvbnRleHQgJiYgdHlwZW9mIF9fVlVFX1NTUl9DT05URVhUX18gIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgIGNvbnRleHQgPSBfX1ZVRV9TU1JfQ09OVEVYVF9fXG4gICAgICB9XG4gICAgICAvLyBpbmplY3QgY29tcG9uZW50IHN0eWxlc1xuICAgICAgaWYgKGluamVjdFN0eWxlcykge1xuICAgICAgICBpbmplY3RTdHlsZXMuY2FsbCh0aGlzLCBjb250ZXh0KVxuICAgICAgfVxuICAgICAgLy8gcmVnaXN0ZXIgY29tcG9uZW50IG1vZHVsZSBpZGVudGlmaWVyIGZvciBhc3luYyBjaHVuayBpbmZlcnJlbmNlXG4gICAgICBpZiAoY29udGV4dCAmJiBjb250ZXh0Ll9yZWdpc3RlcmVkQ29tcG9uZW50cykge1xuICAgICAgICBjb250ZXh0Ll9yZWdpc3RlcmVkQ29tcG9uZW50cy5hZGQobW9kdWxlSWRlbnRpZmllcilcbiAgICAgIH1cbiAgICB9XG4gICAgLy8gdXNlZCBieSBzc3IgaW4gY2FzZSBjb21wb25lbnQgaXMgY2FjaGVkIGFuZCBiZWZvcmVDcmVhdGVcbiAgICAvLyBuZXZlciBnZXRzIGNhbGxlZFxuICAgIG9wdGlvbnMuX3NzclJlZ2lzdGVyID0gaG9va1xuICB9IGVsc2UgaWYgKGluamVjdFN0eWxlcykge1xuICAgIGhvb2sgPSBzaGFkb3dNb2RlXG4gICAgICA/IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpbmplY3RTdHlsZXMuY2FsbChcbiAgICAgICAgICAgIHRoaXMsXG4gICAgICAgICAgICAob3B0aW9ucy5mdW5jdGlvbmFsID8gdGhpcy5wYXJlbnQgOiB0aGlzKS4kcm9vdC4kb3B0aW9ucy5zaGFkb3dSb290XG4gICAgICAgICAgKVxuICAgICAgICB9XG4gICAgICA6IGluamVjdFN0eWxlc1xuICB9XG5cbiAgaWYgKGhvb2spIHtcbiAgICBpZiAob3B0aW9ucy5mdW5jdGlvbmFsKSB7XG4gICAgICAvLyBmb3IgdGVtcGxhdGUtb25seSBob3QtcmVsb2FkIGJlY2F1c2UgaW4gdGhhdCBjYXNlIHRoZSByZW5kZXIgZm4gZG9lc24ndFxuICAgICAgLy8gZ28gdGhyb3VnaCB0aGUgbm9ybWFsaXplclxuICAgICAgb3B0aW9ucy5faW5qZWN0U3R5bGVzID0gaG9va1xuICAgICAgLy8gcmVnaXN0ZXIgZm9yIGZ1bmN0aW9uYWwgY29tcG9uZW50IGluIHZ1ZSBmaWxlXG4gICAgICB2YXIgb3JpZ2luYWxSZW5kZXIgPSBvcHRpb25zLnJlbmRlclxuICAgICAgb3B0aW9ucy5yZW5kZXIgPSBmdW5jdGlvbiByZW5kZXJXaXRoU3R5bGVJbmplY3Rpb24oaCwgY29udGV4dCkge1xuICAgICAgICBob29rLmNhbGwoY29udGV4dClcbiAgICAgICAgcmV0dXJuIG9yaWdpbmFsUmVuZGVyKGgsIGNvbnRleHQpXG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIGluamVjdCBjb21wb25lbnQgcmVnaXN0cmF0aW9uIGFzIGJlZm9yZUNyZWF0ZSBob29rXG4gICAgICB2YXIgZXhpc3RpbmcgPSBvcHRpb25zLmJlZm9yZUNyZWF0ZVxuICAgICAgb3B0aW9ucy5iZWZvcmVDcmVhdGUgPSBleGlzdGluZyA/IFtdLmNvbmNhdChleGlzdGluZywgaG9vaykgOiBbaG9va11cbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGV4cG9ydHM6IHNjcmlwdEV4cG9ydHMsXG4gICAgb3B0aW9uczogb3B0aW9uc1xuICB9XG59XG4iLCJpbXBvcnQgeyByZW5kZXIsIHN0YXRpY1JlbmRlckZucyB9IGZyb20gXCIuL1BheW1lbnRQcmludC52dWU/dnVlJnR5cGU9dGVtcGxhdGUmaWQ9YTkyYjFkYWVcIlxuaW1wb3J0IHNjcmlwdCBmcm9tIFwiLi9QYXltZW50UHJpbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzXCJcbmV4cG9ydCAqIGZyb20gXCIuL1BheW1lbnRQcmludC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anNcIlxuXG5cbi8qIG5vcm1hbGl6ZSBjb21wb25lbnQgKi9cbmltcG9ydCBub3JtYWxpemVyIGZyb20gXCIhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL3J1bnRpbWUvY29tcG9uZW50Tm9ybWFsaXplci5qc1wiXG52YXIgY29tcG9uZW50ID0gbm9ybWFsaXplcihcbiAgc2NyaXB0LFxuICByZW5kZXIsXG4gIHN0YXRpY1JlbmRlckZucyxcbiAgZmFsc2UsXG4gIG51bGwsXG4gIG51bGwsXG4gIG51bGxcbiAgXG4pXG5cbi8qIGhvdCByZWxvYWQgKi9cbmlmIChtb2R1bGUuaG90KSB7XG4gIHZhciBhcGkgPSByZXF1aXJlKFwiRTpcXFxcT3BlblNlcnZlclxcXFxkb21haW5zXFxcXGNyb2NvLmxvY2FsXFxcXHdwLWNvbnRlbnRcXFxccGx1Z2luc1xcXFxqZXRmb3JtYnVpbGRlclxcXFxub2RlX21vZHVsZXNcXFxcdnVlLWhvdC1yZWxvYWQtYXBpXFxcXGRpc3RcXFxcaW5kZXguanNcIilcbiAgYXBpLmluc3RhbGwocmVxdWlyZSgndnVlJykpXG4gIGlmIChhcGkuY29tcGF0aWJsZSkge1xuICAgIG1vZHVsZS5ob3QuYWNjZXB0KClcbiAgICBpZiAoIWFwaS5pc1JlY29yZGVkKCdhOTJiMWRhZScpKSB7XG4gICAgICBhcGkuY3JlYXRlUmVjb3JkKCdhOTJiMWRhZScsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH0gZWxzZSB7XG4gICAgICBhcGkucmVsb2FkKCdhOTJiMWRhZScsIGNvbXBvbmVudC5vcHRpb25zKVxuICAgIH1cbiAgICBtb2R1bGUuaG90LmFjY2VwdChcIi4vUGF5bWVudFByaW50LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1hOTJiMWRhZVwiLCBmdW5jdGlvbiAoKSB7XG4gICAgICBhcGkucmVyZW5kZXIoJ2E5MmIxZGFlJywge1xuICAgICAgICByZW5kZXI6IHJlbmRlcixcbiAgICAgICAgc3RhdGljUmVuZGVyRm5zOiBzdGF0aWNSZW5kZXJGbnNcbiAgICAgIH0pXG4gICAgfSlcbiAgfVxufVxuY29tcG9uZW50Lm9wdGlvbnMuX19maWxlID0gXCJhZG1pbi9wYWdlcy9wYXltZW50LXByaW50L1BheW1lbnRQcmludC52dWVcIlxuZXhwb3J0IGRlZmF1bHQgY29tcG9uZW50LmV4cG9ydHMiLCJpbXBvcnQgbW9kIGZyb20gXCItIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9iYWJlbC1sb2FkZXIvbGliL2luZGV4LmpzIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy9Ad3l3LWluLWpzL3dlYnBhY2stbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvaW5kZXguanM/P3Z1ZS1sb2FkZXItb3B0aW9ucyEuL1BheW1lbnRQcmludC52dWU/dnVlJnR5cGU9c2NyaXB0Jmxhbmc9anNcIjsgZXhwb3J0IGRlZmF1bHQgbW9kOyBleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvYmFiZWwtbG9hZGVyL2xpYi9pbmRleC5qcyEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvQHd5dy1pbi1qcy93ZWJwYWNrLWxvYWRlci9saWIvaW5kZXguanMhLi4vLi4vLi4vLi4vLi4vLi4vLi4vbm9kZV9tb2R1bGVzL3Z1ZS1sb2FkZXIvbGliL2luZGV4LmpzPz92dWUtbG9hZGVyLW9wdGlvbnMhLi9QYXltZW50UHJpbnQudnVlP3Z1ZSZ0eXBlPXNjcmlwdCZsYW5nPWpzXCIiLCJleHBvcnQgKiBmcm9tIFwiLSEuLi8uLi8uLi8uLi8uLi8uLi8uLi9ub2RlX21vZHVsZXMvdnVlLWxvYWRlci9saWIvbG9hZGVycy90ZW1wbGF0ZUxvYWRlci5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4uLy4uLy4uLy4uLy4uLy4uLy4uL25vZGVfbW9kdWxlcy92dWUtbG9hZGVyL2xpYi9pbmRleC5qcz8/dnVlLWxvYWRlci1vcHRpb25zIS4vUGF5bWVudFByaW50LnZ1ZT92dWUmdHlwZT10ZW1wbGF0ZSZpZD1hOTJiMWRhZVwiIiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJpbXBvcnQgUGF5bWVudFByaW50IGZyb20gJy4vUGF5bWVudFByaW50JztcclxuXHJcbmNvbnN0IHtcclxuXHRCYXNlU3RvcmUsXHJcblx0U2luZ2xlTWV0YUJveGVzUGx1Z2luXHJcbn0gPSBKZXRGQlN0b3JlO1xyXG5cclxuY29uc3QgeyByZW5kZXJDdXJyZW50UGFnZSB9ID0gd2luZG93LkpldEZCQWN0aW9ucztcclxuXHJcbmNvbnN0IHN0b3JlID0gbmV3IFZ1ZXguU3RvcmUoIHtcclxuXHQuLi5CYXNlU3RvcmUsXHJcblx0cGx1Z2luczogWyBTaW5nbGVNZXRhQm94ZXNQbHVnaW4gXSxcclxufSApO1xyXG5cclxucmVuZGVyQ3VycmVudFBhZ2UoIFBheW1lbnRQcmludCwgeyBzdG9yZSB9ICk7XHJcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/modules/gateways/assets/build/editor.asset.php b/modules/gateways/assets/build/editor.asset.php index 13a48ddae..19e49aa51 100644 --- a/modules/gateways/assets/build/editor.asset.php +++ b/modules/gateways/assets/build/editor.asset.php @@ -1 +1 @@ - array('react'), 'version' => '5eff2d4b7b6555167783'); + array('react'), 'version' => '5020b00438efac0e6536'); diff --git a/modules/gateways/assets/build/editor.js b/modules/gateways/assets/build/editor.js index b850180ba..3b8ce6a4a 100644 --- a/modules/gateways/assets/build/editor.js +++ b/modules/gateways/assets/build/editor.js @@ -1 +1,659 @@ -(()=>{"use strict";const e=window.React,{compose:t}=wp.compose,{withSelect:a,withDispatch:n}=wp.data,{__:l}=wp.i18n,{TextControl:o,SelectControl:s,withNotices:i}=wp.components,{useEffect:c}=wp.element,{renderGateway:r}=JetFBActions,{withSelectGateways:w,withDispatchGateways:m}=JetFBHooks,{ToggleControl:y}=JetFBComponents,p=t(a(w),n(m),i)((function({setGatewayRequest:t,gatewaySpecific:a,setGatewaySpecific:n,gatewayScenario:i,setGatewayScenario:w,getSpecificOrGlobal:m,additionalSourceGateway:p,specificGatewayLabel:u,noticeOperations:d,noticeUI:g}){const{id:_="PAY_NOW"}=i;return c((()=>{t({id:_})}),[_]),c((()=>{t({id:_})}),[]),(0,e.createElement)(e.Fragment,null,g,(0,e.createElement)(y,{checked:a.use_global,onChange:e=>n({use_global:e})},l("Use","jet-form-builder")+" ",(0,e.createElement)("a",{href:JetFormEditorData.global_settings_url+"#payments-gateways__paypal"},l("Global Settings","jet-form-builder"))),(0,e.createElement)(o,{label:u("client_id"),key:"paypal_client_id_setting",value:m("client_id"),onChange:e=>n({client_id:e}),disabled:a.use_global}),(0,e.createElement)(o,{label:u("secret"),key:"paypal_secret_setting",value:m("secret"),onChange:e=>n({secret:e}),disabled:a.use_global}),(0,e.createElement)(s,{labelPosition:"side",label:u("gateway_type"),value:_,onChange:e=>{w({id:e})},options:p.scenarios}),r("paypal",{noticeOperations:d},_))})),{compose:u}=wp.compose,{withSelect:d,withDispatch:g}=wp.data,{TextControl:_,SelectControl:f,BaseControl:h,RadioControl:b}=wp.components,{withSelectFormFields:E,withSelectGateways:G,withDispatchGateways:S,withSelectActionsByType:C}=JetFBHooks,{GatewayFetchButton:F}=JetFBComponents,k=u(d(((...e)=>({...E([],"--")(...e),...G(...e)}))),g(((...e)=>({...S(...e)}))))((function({gatewayGeneral:t,gatewaySpecific:a,setGateway:n,setGatewaySpecific:l,formFields:o,getSpecificOrGlobal:s,loadingGateway:i,scenarioSource:c,noticeOperations:r,scenarioLabel:w,globalGatewayLabel:m}){return(0,e.createElement)(e.Fragment,null,(0,e.createElement)(h,{label:w("fetch_button_label")},(0,e.createElement)("div",{className:"jet-user-fields-map__list"},!i.success&&!i.loading&&(0,e.createElement)("span",{className:"description-controls"},w("fetch_button_help")),(0,e.createElement)(F,{initialLabel:w("fetch_button"),label:w("fetch_button_retry"),apiArgs:{...c.fetch,data:{client_id:s("client_id"),secret:s("secret")}},onFail:e=>{r.removeNotice(t.gateway),r.createNotice({status:"error",content:e.message,id:t.gateway})}}))),i.success&&(0,e.createElement)(e.Fragment,null,(0,e.createElement)(_,{label:w("currency"),key:"paypal_currency_code_setting",value:a.currency,onChange:e=>l({currency:e})}),(0,e.createElement)(f,{label:m("price_field"),key:"form_fields_price_field",value:t.price_field,labelPosition:"side",onChange:e=>{n({price_field:e})},options:o})))})),{gatewayAttr:v,renderGateway:j,renderGatewayWithPlaceholder:B}=JetFBActions,{__:N}=wp.i18n,{TextareaControl:A,BaseControl:J}=wp.components,{withSelect:R,withDispatch:D}=wp.data,{compose:O}=wp.compose,{withSelectGateways:T,withDispatchGateways:I}=JetFBHooks,L=v(),P=v("labels"),U=O(R(((...e)=>({...T(...e)}))),D(I))((function({gatewayGeneral:t,setGatewayInner:a,loadingGateway:n,gatewayRequest:l,CURRENT_SCENARIO:o,currentScenario:s}){const i=(e,t,n)=>{a({key:e,value:{[t]:n}})},c=(e,a,n=!1)=>t[e]&&t[e][a]?t[e][a]:n,r=(e,t)=>{i("messages",e,t)},w=e=>c("messages",e,L.messages[e]),m=(0,e.createElement)(e.Fragment,null,B(t.gateway,{gatewayGeneral:t,CURRENT_SCENARIO:o,currentScenario:s},"macrosList",(0,e.createElement)(J,{key:"payment_result_macros_base_control"},(0,e.createElement)("h4",null,N("Available macros list: ","jet-form-builder"),(0,e.createElement)("br",null),N("%gateway_amount% - payment amount returned from gateway template;","jet-form-builder"),(0,e.createElement)("br",null),N("%gateway_status% - payment status returned from payment gateway;","jet-form-builder"),(0,e.createElement)("br",null),N('%field_name% - replace "field_name" with any field name from the form;',"jet-form-builder"),(0,e.createElement)("br",null)))),(0,e.createElement)(A,{key:"payment_result_message_success",label:P("message_success"),value:w("success"),onChange:e=>r("success",e)}),(0,e.createElement)(A,{key:"payment_result_message_failed",label:P("message_failed"),value:w("failed"),onChange:e=>r("failed",e)}));return(0,e.createElement)(e.Fragment,null,j(t.gateway,{setValueInObject:i,getNotifications:c}),(-1===l.id||n.success||!l.id.includes(t.gateway))&&m)})),{RadioControl:H,Button:q}=wp.components,{withDispatch:x,withSelect:W}=wp.data,{useState:M,useEffect:Y}=wp.element,{__:V}=wp.i18n,{compose:$}=wp.compose,{ActionModal:z}=JetFBComponents,{withDispatchGateways:K,withSelectGateways:Q,useMetaState:X}=JetFBHooks,Z=window.JetFormEditorData.gateways,ee=$(x(K),W(Q))((function(t){var a;const{setGateway:n,setGatewayScenario:l,clearGateway:o,clearScenario:s,gatewayGeneral:i,gatewayScenario:c}=t,[r,w]=X("_jf_gateways"),[m,y]=M(!1);Y((()=>{m?(n(r),l(r[r.gateway]?.scenario)):(o(),s())}),[m]);const p=(e=!1)=>{!1!==e&&w(e),y(!1)};return(0,e.createElement)(e.Fragment,null,(0,e.createElement)(H,{key:"gateways_radio_control",selected:null!==(a=r.gateway)&&void 0!==a?a:"none",options:[{label:"None",value:"none"},...Z.list],onChange:e=>{w({...r,gateway:e})}}),"none"!==r.gateway&&r.gateway&&(0,e.createElement)(q,{onClick:()=>y(!0),icon:"admin-tools",style:{margin:"1em 0"},isSecondary:!0},V("Edit","jet-form-builder")),m&&(0,e.createElement)(z,{classNames:["width-60"],onRequestClose:()=>p(),onCancelClick:()=>p(),onUpdateClick:()=>p({...i,[i.gateway]:{...i[i.gateway]||{},scenario:c}}),title:`Edit ${u=r.gateway,Z.list.find((e=>e.value===u)).label} Settings`},(0,e.createElement)(U,null)));var u})),{__:te}=wp.i18n,ae={base:{name:"jf-gateways-panel",title:te("Gateways Settings","jet-form-builder")},settings:{render:ee,icon:"money-alt"}},{registerGateway:ne}=JetFBActions,{addFilter:le}=wp.hooks,{__:oe}=wp.i18n,se="paypal";ne(se,p),ne(se,k,"PAY_NOW"),le("jet.fb.register.plugin.jf-validation-panel.after","jet-form-builder/gateways",(function(e){return e.push(ae),e}))})(); \ No newline at end of file +/******/ (() => { // webpackBootstrap +/******/ "use strict"; +/******/ var __webpack_modules__ = ({ + +/***/ "./editor/components/gateways-editor.js": +/*!**********************************************!*\ + !*** ./editor/components/gateways-editor.js ***! + \**********************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); + +const { + gatewayAttr, + renderGateway, + renderGatewayWithPlaceholder +} = JetFBActions; +const { + __ +} = wp.i18n; +const { + TextareaControl, + BaseControl +} = wp.components; +const { + withSelect, + withDispatch +} = wp.data; +const { + compose +} = wp.compose; +const { + withSelectGateways, + withDispatchGateways +} = JetFBHooks; +const gatewaysData = gatewayAttr(); +const label = gatewayAttr('labels'); +function GatewaysEditor({ + gatewayGeneral, + setGatewayInner, + loadingGateway, + gatewayRequest, + CURRENT_SCENARIO, + currentScenario +}) { + /** + * Used for set notifications and gateway type settings + * + * @param when + * @param type + * @param newValue + */ + const setValueInObject = (when, type, newValue) => { + setGatewayInner({ + key: when, + value: { + [type]: newValue + } + }); + }; + /** + * Used for get notifications and gateway type settings + * + * @param when + * @param type + * @param isEmptyResult + * @returns {boolean|*} + */ + const getNotifications = (when, type, isEmptyResult = false) => { + if (gatewayGeneral[when] && gatewayGeneral[when][type]) { + return gatewayGeneral[when][type]; + } + return isEmptyResult; + }; + const setResultMessage = (key, value) => { + setValueInObject('messages', key, value); + }; + const getResultMessage = key => { + return getNotifications('messages', key, gatewaysData.messages[key]); + }; + const GatewayFooter = (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, renderGatewayWithPlaceholder(gatewayGeneral.gateway, { + gatewayGeneral, + CURRENT_SCENARIO, + currentScenario + }, 'macrosList', (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(BaseControl, { + key: "payment_result_macros_base_control" + }, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("h4", null, __('Available macros list: ', 'jet-form-builder'), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("br", null), __('%gateway_amount% - payment amount returned from gateway template;', 'jet-form-builder'), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("br", null), __('%gateway_status% - payment status returned from payment gateway;', 'jet-form-builder'), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("br", null), __('%field_name% - replace "field_name" with any field name from the form;', 'jet-form-builder'), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("br", null)))), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(TextareaControl, { + key: "payment_result_message_success", + label: label('message_success'), + value: getResultMessage('success'), + onChange: newValue => setResultMessage('success', newValue) + }), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(TextareaControl, { + key: "payment_result_message_failed", + label: label('message_failed'), + value: getResultMessage('failed'), + onChange: newValue => setResultMessage('failed', newValue) + })); + return (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, renderGateway(gatewayGeneral.gateway, { + setValueInObject, + getNotifications + }), (-1 === gatewayRequest.id || loadingGateway.success || !gatewayRequest.id.includes(gatewayGeneral.gateway)) && GatewayFooter); +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (compose(withSelect((...props) => ({ + ...withSelectGateways(...props) +})), withDispatch(withDispatchGateways))(GatewaysEditor)); + +/***/ }), + +/***/ "./editor/paypal/main.js": +/*!*******************************!*\ + !*** ./editor/paypal/main.js ***! + \*******************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); + +const { + compose +} = wp.compose; +const { + withSelect, + withDispatch +} = wp.data; +const { + __ +} = wp.i18n; +const { + TextControl, + SelectControl, + withNotices +} = wp.components; +const { + useEffect +} = wp.element; +const { + renderGateway +} = JetFBActions; +const { + withSelectGateways, + withDispatchGateways +} = JetFBHooks; +const { + ToggleControl +} = JetFBComponents; +function PaypalMain({ + setGatewayRequest, + gatewaySpecific, + setGatewaySpecific, + gatewayScenario, + setGatewayScenario, + getSpecificOrGlobal, + additionalSourceGateway, + specificGatewayLabel, + noticeOperations, + noticeUI +}) { + const { + id: scenario = 'PAY_NOW' + } = gatewayScenario; + useEffect(() => { + setGatewayRequest({ + id: scenario + }); + }, [scenario]); + useEffect(() => { + setGatewayRequest({ + id: scenario + }); + }, []); + return (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, noticeUI, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(ToggleControl, { + checked: gatewaySpecific.use_global, + onChange: use_global => setGatewaySpecific({ + use_global + }) + }, __('Use', 'jet-form-builder') + ' ', (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("a", { + href: JetFormEditorData.global_settings_url + '#payments-gateways__paypal' + }, __('Global Settings', 'jet-form-builder'))), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(TextControl, { + label: specificGatewayLabel('client_id'), + key: "paypal_client_id_setting", + value: getSpecificOrGlobal('client_id'), + onChange: client_id => setGatewaySpecific({ + client_id + }), + disabled: gatewaySpecific.use_global + }), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(TextControl, { + label: specificGatewayLabel('secret'), + key: "paypal_secret_setting", + value: getSpecificOrGlobal('secret'), + onChange: secret => setGatewaySpecific({ + secret + }), + disabled: gatewaySpecific.use_global + }), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(SelectControl, { + labelPosition: "side", + label: specificGatewayLabel('gateway_type'), + value: scenario, + onChange: id => { + setGatewayScenario({ + id + }); + }, + options: additionalSourceGateway.scenarios + }), renderGateway('paypal', { + noticeOperations + }, scenario)); +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (compose(withSelect(withSelectGateways), withDispatch(withDispatchGateways), withNotices)(PaypalMain)); + +/***/ }), + +/***/ "./editor/paypal/pay-now-scenario.js": +/*!*******************************************!*\ + !*** ./editor/paypal/pay-now-scenario.js ***! + \*******************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); + +const { + compose +} = wp.compose; +const { + withSelect, + withDispatch +} = wp.data; +const { + TextControl, + SelectControl, + BaseControl, + RadioControl +} = wp.components; +const { + withSelectFormFields, + withSelectGateways, + withDispatchGateways, + withSelectActionsByType +} = JetFBHooks; +const { + GatewayFetchButton +} = JetFBComponents; +function PayNowScenario({ + gatewayGeneral, + gatewaySpecific, + setGateway, + setGatewaySpecific, + formFields, + getSpecificOrGlobal, + loadingGateway, + scenarioSource, + noticeOperations, + scenarioLabel, + globalGatewayLabel +}) { + const displayNotice = status => response => { + noticeOperations.removeNotice(gatewayGeneral.gateway); + noticeOperations.createNotice({ + status, + content: response.message, + id: gatewayGeneral.gateway + }); + }; + return (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(BaseControl, { + label: scenarioLabel('fetch_button_label') + }, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", { + className: "jet-user-fields-map__list" + }, !loadingGateway.success && !loadingGateway.loading && (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", { + className: 'description-controls' + }, scenarioLabel('fetch_button_help')), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(GatewayFetchButton, { + initialLabel: scenarioLabel('fetch_button'), + label: scenarioLabel('fetch_button_retry'), + apiArgs: { + ...scenarioSource.fetch, + data: { + client_id: getSpecificOrGlobal('client_id'), + secret: getSpecificOrGlobal('secret') + } + }, + onFail: displayNotice('error') + }))), loadingGateway.success && (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(TextControl, { + label: scenarioLabel('currency'), + key: "paypal_currency_code_setting", + value: gatewaySpecific.currency, + onChange: currency => setGatewaySpecific({ + currency + }) + }), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(SelectControl, { + label: globalGatewayLabel('price_field'), + key: 'form_fields_price_field', + value: gatewayGeneral.price_field, + labelPosition: "side", + onChange: price_field => { + setGateway({ + price_field + }); + }, + options: formFields + }))); +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (compose(withSelect((...props) => ({ + ...withSelectFormFields([], '--')(...props), + ...withSelectGateways(...props) +})), withDispatch((...props) => ({ + ...withDispatchGateways(...props) +})))(PayNowScenario)); + +/***/ }), + +/***/ "./editor/plugin/index.js": +/*!********************************!*\ + !*** ./editor/plugin/index.js ***! + \********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _render__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./render */ "./editor/plugin/render.js"); + +const { + __ +} = wp.i18n; +const base = { + name: 'jf-gateways-panel', + title: __('Gateways Settings', 'jet-form-builder') +}; +const settings = { + render: _render__WEBPACK_IMPORTED_MODULE_0__["default"], + icon: 'money-alt' +}; +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ({ + base, + settings +}); + +/***/ }), + +/***/ "./editor/plugin/render.js": +/*!*********************************!*\ + !*** ./editor/plugin/render.js ***! + \*********************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _components_gateways_editor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../components/gateways-editor */ "./editor/components/gateways-editor.js"); + + +const { + Button, + ToggleControl +} = wp.components; +const { + withDispatch, + withSelect +} = wp.data; +const { + useState, + useEffect +} = wp.element; +const { + __ +} = wp.i18n; +const { + compose +} = wp.compose; +const { + ActionModal +} = JetFBComponents; +const { + withDispatchGateways, + withSelectGateways, + useMetaState +} = JetFBHooks; +const gatewaysData = window.JetFormEditorData.gateways; +const MODE_SINGLE = 'single'; +const MODE_MANUAL = 'manual'; +const getGatewayLabel = type => { + return gatewaysData.list.find(el => el.value === type)?.label || type; +}; +function PluginGateways(props) { + var _meta$gateway; + const { + setGateway, + setGatewayScenario, + clearGateway, + clearScenario, + gatewayGeneral, + gatewayScenario + } = props; + const [meta, setMeta] = useMetaState('_jf_gateways'); + const [isEdit, setEdit] = useState(false); + + // UI-selected value (can be "manual" without touching meta.gateway) + const [selectedGateway, setSelectedGateway] = useState((_meta$gateway = meta?.gateway) !== null && _meta$gateway !== void 0 ? _meta$gateway : 'none'); + + // which gateway is currently being edited in modal + const [editGateway, setEditGateway] = useState(null); + const isManualMode = meta?.mode === MODE_MANUAL; + + // keep UI selected in sync with saved meta + useEffect(() => { + var _meta$gateway2; + if (isManualMode) { + setSelectedGateway(MODE_MANUAL); + return; + } + setSelectedGateway((_meta$gateway2 = meta?.gateway) !== null && _meta$gateway2 !== void 0 ? _meta$gateway2 : 'none'); + }, [meta?.gateway, meta?.mode]); + + // bind editor store when modal is open + useEffect(() => { + if (!isEdit) { + clearGateway(); + clearScenario(); + return; + } + const gw = editGateway || meta?.gateway; + if (!gw || gw === 'none') { + return; + } + + // When manual mode is active, modal opens for "editGateway" only + if (isManualMode && !editGateway) { + return; + } + setGateway({ + ...meta, + gateway: gw + }); + setGatewayScenario(meta?.[gw]?.scenario); + }, [isEdit, editGateway]); + const closeModal = (newMeta = false) => { + if (false !== newMeta) { + setMeta(newMeta); + } + setEdit(false); + setEditGateway(null); + }; + const options = [{ + label: 'None', + value: 'none' + }, ...gatewaysData.list, { + label: 'Manual', + value: MODE_MANUAL + }]; + return (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", { + className: "jfb-gateways" + }, options.map(opt => { + const isSelected = selectedGateway === opt.value; + + // In manual mode: show Edit under EACH gateway + // Otherwise: show Edit only under the selected gateway + const canEdit = opt.value !== 'none' && opt.value !== MODE_MANUAL && (isManualMode || isSelected); + const canToggle = isManualMode && opt.value !== 'none' && opt.value !== MODE_MANUAL; + return (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", { + key: opt.value, + className: "jfb-gateways__item" + }, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("label", { + className: "jfb-gateways__option" + }, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("input", { + type: "radio", + name: "jfb_gateway", + value: opt.value, + checked: isSelected, + onChange: () => { + setSelectedGateway(opt.value); + + // Manual mode selected + if (opt.value === MODE_MANUAL) { + setMeta({ + ...meta, + mode: MODE_MANUAL + }); + return; + } + + // Single mode selected + setMeta({ + ...meta, + mode: MODE_SINGLE, + gateway: opt.value + }); + } + }), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", null, opt.label)), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("br", null), canEdit && (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(Button, { + onClick: () => { + setEditGateway(opt.value); + setEdit(true); + }, + icon: 'admin-tools', + style: { + margin: '8px 0' + }, + isSecondary: true + }, __('Edit', 'jet-form-builder')), canToggle && (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(ToggleControl, { + label: __('Show on frontend', 'jet-form-builder'), + checked: !!meta?.[opt.value]?.show_on_front, + onChange: value => { + setMeta({ + ...meta, + [opt.value]: { + ...(meta?.[opt.value] || {}), + show_on_front: value + } + }); + }, + style: { + margin: '8px 0' + } + })); + })), isEdit && (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(ActionModal, { + classNames: ['width-60'], + onRequestClose: () => closeModal(), + onCancelClick: () => closeModal(), + onUpdateClick: () => closeModal({ + ...gatewayGeneral, + [gatewayGeneral.gateway]: { + ...(gatewayGeneral[gatewayGeneral.gateway] || {}), + scenario: gatewayScenario + } + }), + title: `Edit ${getGatewayLabel(editGateway || meta?.gateway)} Settings` + }, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(_components_gateways_editor__WEBPACK_IMPORTED_MODULE_1__["default"], null))); +} +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (compose(withDispatch(withDispatchGateways), withSelect(withSelectGateways))(PluginGateways)); + +/***/ }), + +/***/ "react": +/*!************************!*\ + !*** external "React" ***! + \************************/ +/***/ ((module) => { + +module.exports = window["React"]; + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/compat get default export */ +/******/ (() => { +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = (module) => { +/******/ var getter = module && module.__esModule ? +/******/ () => (module['default']) : +/******/ () => (module); +/******/ __webpack_require__.d(getter, { a: getter }); +/******/ return getter; +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/define property getters */ +/******/ (() => { +/******/ // define getter functions for harmony exports +/******/ __webpack_require__.d = (exports, definition) => { +/******/ for(var key in definition) { +/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); +/******/ } +/******/ } +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ (() => { +/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) +/******/ })(); +/******/ +/******/ /* webpack/runtime/make namespace object */ +/******/ (() => { +/******/ // define __esModule on exports +/******/ __webpack_require__.r = (exports) => { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ })(); +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry needs to be wrapped in an IIFE because it needs to be isolated against other modules in the chunk. +(() => { +/*!************************!*\ + !*** ./editor/main.js ***! + \************************/ +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _paypal_main__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./paypal/main */ "./editor/paypal/main.js"); +/* harmony import */ var _paypal_pay_now_scenario__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./paypal/pay-now-scenario */ "./editor/paypal/pay-now-scenario.js"); +/* harmony import */ var _plugin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./plugin */ "./editor/plugin/index.js"); + + + +const { + registerGateway +} = JetFBActions; +const { + addFilter +} = wp.hooks; +const { + __ +} = wp.i18n; +const gatewayID = 'paypal'; +registerGateway(gatewayID, _paypal_main__WEBPACK_IMPORTED_MODULE_0__["default"]); +registerGateway(gatewayID, _paypal_pay_now_scenario__WEBPACK_IMPORTED_MODULE_1__["default"], 'PAY_NOW'); +addFilter('jet.fb.register.plugin.jf-validation-panel.after', 'jet-form-builder/gateways', function (plugins) { + plugins.push(_plugin__WEBPACK_IMPORTED_MODULE_2__["default"]); + return plugins; +}); +})(); + +/******/ })() +; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBR0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBVUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFJQTtBQUNBO0FBQUE7QUFBQTtBQU9BO0FBRUE7QUFHQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7OztBQ3RIQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBRUE7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNqR0E7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQUE7QUFFQTtBQUFBO0FBRUE7QUFBQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFJQTtBQUVBO0FBR0E7QUFDQTtBQUNBO0FBSUE7QUFDQTs7Ozs7Ozs7Ozs7Ozs7O0FDckdBO0FBRUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNqQkE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUdBO0FBRUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUVBOztBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUdBO0FBRUE7QUFBQTtBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUtBO0FBS0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBS0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFPQTtBQUVBOzs7Ozs7Ozs7O0FDN01BOzs7Ozs7QUNBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUN2QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUNQQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ1BBOzs7OztBQ0FBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7OztBQ05BO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUVBO0FBRUE7QUFLQTtBQU1BO0FBSUE7QUFFQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vamZiLWdhdGV3YXlzLy4vZWRpdG9yL2NvbXBvbmVudHMvZ2F0ZXdheXMtZWRpdG9yLmpzIiwid2VicGFjazovL2pmYi1nYXRld2F5cy8uL2VkaXRvci9wYXlwYWwvbWFpbi5qcyIsIndlYnBhY2s6Ly9qZmItZ2F0ZXdheXMvLi9lZGl0b3IvcGF5cGFsL3BheS1ub3ctc2NlbmFyaW8uanMiLCJ3ZWJwYWNrOi8vamZiLWdhdGV3YXlzLy4vZWRpdG9yL3BsdWdpbi9pbmRleC5qcyIsIndlYnBhY2s6Ly9qZmItZ2F0ZXdheXMvLi9lZGl0b3IvcGx1Z2luL3JlbmRlci5qcyIsIndlYnBhY2s6Ly9qZmItZ2F0ZXdheXMvZXh0ZXJuYWwgd2luZG93IFwiUmVhY3RcIiIsIndlYnBhY2s6Ly9qZmItZ2F0ZXdheXMvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vamZiLWdhdGV3YXlzL3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL2pmYi1nYXRld2F5cy93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vamZiLWdhdGV3YXlzL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vamZiLWdhdGV3YXlzL3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vamZiLWdhdGV3YXlzLy4vZWRpdG9yL21haW4uanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3Qge1xyXG5cdGdhdGV3YXlBdHRyLFxyXG5cdHJlbmRlckdhdGV3YXksXHJcblx0cmVuZGVyR2F0ZXdheVdpdGhQbGFjZWhvbGRlcixcclxufSA9IEpldEZCQWN0aW9ucztcclxuXHJcbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XHJcblxyXG5jb25zdCB7XHJcblx0VGV4dGFyZWFDb250cm9sLFxyXG5cdEJhc2VDb250cm9sLFxyXG59ID0gd3AuY29tcG9uZW50cztcclxuXHJcbmNvbnN0IHtcclxuXHR3aXRoU2VsZWN0LFxyXG5cdHdpdGhEaXNwYXRjaCxcclxufSA9IHdwLmRhdGE7XHJcblxyXG5jb25zdCB7IGNvbXBvc2UgfSA9IHdwLmNvbXBvc2U7XHJcblxyXG5cclxuY29uc3Qge1xyXG5cdHdpdGhTZWxlY3RHYXRld2F5cyxcclxuXHR3aXRoRGlzcGF0Y2hHYXRld2F5cyxcclxufSA9IEpldEZCSG9va3M7XHJcblxyXG5jb25zdCBnYXRld2F5c0RhdGEgPSBnYXRld2F5QXR0cigpO1xyXG5jb25zdCBsYWJlbCA9IGdhdGV3YXlBdHRyKCAnbGFiZWxzJyApO1xyXG5cclxuZnVuY3Rpb24gR2F0ZXdheXNFZGl0b3IoIHtcclxuXHRnYXRld2F5R2VuZXJhbCxcclxuXHRzZXRHYXRld2F5SW5uZXIsXHJcblx0bG9hZGluZ0dhdGV3YXksXHJcblx0Z2F0ZXdheVJlcXVlc3QsXHJcblx0Q1VSUkVOVF9TQ0VOQVJJTyxcclxuXHRjdXJyZW50U2NlbmFyaW8sXHJcbn0gKSB7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFVzZWQgZm9yIHNldCBub3RpZmljYXRpb25zIGFuZCBnYXRld2F5IHR5cGUgc2V0dGluZ3NcclxuXHQgKlxyXG5cdCAqIEBwYXJhbSB3aGVuXHJcblx0ICogQHBhcmFtIHR5cGVcclxuXHQgKiBAcGFyYW0gbmV3VmFsdWVcclxuXHQgKi9cclxuXHRjb25zdCBzZXRWYWx1ZUluT2JqZWN0ID0gKCB3aGVuLCB0eXBlLCBuZXdWYWx1ZSApID0+IHtcclxuXHRcdHNldEdhdGV3YXlJbm5lcigge1xyXG5cdFx0XHRrZXk6IHdoZW4sXHJcblx0XHRcdHZhbHVlOiB7XHJcblx0XHRcdFx0WyB0eXBlIF06IG5ld1ZhbHVlLFxyXG5cdFx0XHR9LFxyXG5cdFx0fSApO1xyXG5cdH07XHJcblx0LyoqXHJcblx0ICogVXNlZCBmb3IgZ2V0IG5vdGlmaWNhdGlvbnMgYW5kIGdhdGV3YXkgdHlwZSBzZXR0aW5nc1xyXG5cdCAqXHJcblx0ICogQHBhcmFtIHdoZW5cclxuXHQgKiBAcGFyYW0gdHlwZVxyXG5cdCAqIEBwYXJhbSBpc0VtcHR5UmVzdWx0XHJcblx0ICogQHJldHVybnMge2Jvb2xlYW58Kn1cclxuXHQgKi9cclxuXHRjb25zdCBnZXROb3RpZmljYXRpb25zID0gKCB3aGVuLCB0eXBlLCBpc0VtcHR5UmVzdWx0ID0gZmFsc2UgKSA9PiB7XHJcblx0XHRpZiAoIGdhdGV3YXlHZW5lcmFsWyB3aGVuIF0gJiYgZ2F0ZXdheUdlbmVyYWxbIHdoZW4gXVsgdHlwZSBdICkge1xyXG5cdFx0XHRyZXR1cm4gZ2F0ZXdheUdlbmVyYWxbIHdoZW4gXVsgdHlwZSBdO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIGlzRW1wdHlSZXN1bHQ7XHJcblx0fTtcclxuXHJcblx0Y29uc3Qgc2V0UmVzdWx0TWVzc2FnZSA9ICgga2V5LCB2YWx1ZSApID0+IHtcclxuXHRcdHNldFZhbHVlSW5PYmplY3QoICdtZXNzYWdlcycsIGtleSwgdmFsdWUgKTtcclxuXHR9O1xyXG5cdGNvbnN0IGdldFJlc3VsdE1lc3NhZ2UgPSAoIGtleSApID0+IHtcclxuXHRcdHJldHVybiBnZXROb3RpZmljYXRpb25zKCAnbWVzc2FnZXMnLCBrZXksIGdhdGV3YXlzRGF0YS5tZXNzYWdlc1sga2V5IF0gKTtcclxuXHR9O1xyXG5cclxuXHRjb25zdCBHYXRld2F5Rm9vdGVyID0gPD5cclxuXHRcdHsgcmVuZGVyR2F0ZXdheVdpdGhQbGFjZWhvbGRlcihcclxuXHRcdFx0Z2F0ZXdheUdlbmVyYWwuZ2F0ZXdheSxcclxuXHRcdFx0eyBnYXRld2F5R2VuZXJhbCwgQ1VSUkVOVF9TQ0VOQVJJTywgY3VycmVudFNjZW5hcmlvIH0sXHJcblx0XHRcdCdtYWNyb3NMaXN0JyxcclxuXHRcdFx0PEJhc2VDb250cm9sXHJcblx0XHRcdFx0a2V5PVwicGF5bWVudF9yZXN1bHRfbWFjcm9zX2Jhc2VfY29udHJvbFwiXHJcblx0XHRcdD5cclxuXHRcdFx0XHQ8aDQ+XHJcblx0XHRcdFx0XHR7IF9fKCAnQXZhaWxhYmxlIG1hY3JvcyBsaXN0OiAnLCAnamV0LWZvcm0tYnVpbGRlcicgKSB9PGJyLz5cclxuXHRcdFx0XHRcdHsgX18oICclZ2F0ZXdheV9hbW91bnQlIC0gcGF5bWVudCBhbW91bnQgcmV0dXJuZWQgZnJvbSBnYXRld2F5IHRlbXBsYXRlOycsICdqZXQtZm9ybS1idWlsZGVyJyApIH08YnIvPlxyXG5cdFx0XHRcdFx0eyBfXyggJyVnYXRld2F5X3N0YXR1cyUgLSBwYXltZW50IHN0YXR1cyByZXR1cm5lZCBmcm9tIHBheW1lbnQgZ2F0ZXdheTsnLCAnamV0LWZvcm0tYnVpbGRlcicgKSB9PGJyLz5cclxuXHRcdFx0XHRcdHsgX18oICclZmllbGRfbmFtZSUgLSByZXBsYWNlIFwiZmllbGRfbmFtZVwiIHdpdGggYW55IGZpZWxkIG5hbWUgZnJvbSB0aGUgZm9ybTsnLCAnamV0LWZvcm0tYnVpbGRlcicgKSB9PGJyLz5cclxuXHRcdFx0XHQ8L2g0PlxyXG5cdFx0XHQ8L0Jhc2VDb250cm9sPiApIH1cclxuXHRcdDxUZXh0YXJlYUNvbnRyb2xcclxuXHRcdFx0a2V5PVwicGF5bWVudF9yZXN1bHRfbWVzc2FnZV9zdWNjZXNzXCJcclxuXHRcdFx0bGFiZWw9eyBsYWJlbCggJ21lc3NhZ2Vfc3VjY2VzcycgKSB9XHJcblx0XHRcdHZhbHVlPXsgZ2V0UmVzdWx0TWVzc2FnZSggJ3N1Y2Nlc3MnICkgfVxyXG5cdFx0XHRvbkNoYW5nZT17IG5ld1ZhbHVlID0+IHNldFJlc3VsdE1lc3NhZ2UoICdzdWNjZXNzJywgbmV3VmFsdWUgKSB9XHJcblx0XHQvPlxyXG5cdFx0PFRleHRhcmVhQ29udHJvbFxyXG5cdFx0XHRrZXk9XCJwYXltZW50X3Jlc3VsdF9tZXNzYWdlX2ZhaWxlZFwiXHJcblx0XHRcdGxhYmVsPXsgbGFiZWwoICdtZXNzYWdlX2ZhaWxlZCcgKSB9XHJcblx0XHRcdHZhbHVlPXsgZ2V0UmVzdWx0TWVzc2FnZSggJ2ZhaWxlZCcgKSB9XHJcblx0XHRcdG9uQ2hhbmdlPXsgbmV3VmFsdWUgPT4gc2V0UmVzdWx0TWVzc2FnZSggJ2ZhaWxlZCcsIG5ld1ZhbHVlICkgfVxyXG5cdFx0Lz5cclxuXHQ8Lz47XHJcblxyXG5cdHJldHVybiA8PlxyXG5cdFx0eyByZW5kZXJHYXRld2F5KCBnYXRld2F5R2VuZXJhbC5nYXRld2F5LCB7IHNldFZhbHVlSW5PYmplY3QsIGdldE5vdGlmaWNhdGlvbnMgfSApIH1cclxuXHRcdHsgKFxyXG5cdFx0XHQgIC0gMSA9PT0gZ2F0ZXdheVJlcXVlc3QuaWRcclxuXHRcdFx0ICB8fCBsb2FkaW5nR2F0ZXdheS5zdWNjZXNzXHJcblx0XHRcdCAgfHwgISBnYXRld2F5UmVxdWVzdC5pZC5pbmNsdWRlcyggZ2F0ZXdheUdlbmVyYWwuZ2F0ZXdheSApXHJcblx0XHQgICkgJiYgR2F0ZXdheUZvb3RlciB9XHJcblx0PC8+O1xyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjb21wb3NlKFxyXG5cdHdpdGhTZWxlY3QoICggLi4ucHJvcHMgKSA9PiAoXHJcblx0XHR7XHJcblx0XHRcdC4uLndpdGhTZWxlY3RHYXRld2F5cyggLi4ucHJvcHMgKSxcclxuXHRcdH1cclxuXHQpICksXHJcblx0d2l0aERpc3BhdGNoKCB3aXRoRGlzcGF0Y2hHYXRld2F5cyApLFxyXG4pKCBHYXRld2F5c0VkaXRvciApOyIsImNvbnN0IHsgY29tcG9zZSB9ID0gd3AuY29tcG9zZTtcclxuXHJcbmNvbnN0IHtcclxuXHQgICAgICB3aXRoU2VsZWN0LFxyXG5cdCAgICAgIHdpdGhEaXNwYXRjaCxcclxuICAgICAgfSA9IHdwLmRhdGE7XHJcbmNvbnN0IHtcclxuXHQgICAgICBfXyxcclxuICAgICAgfSA9IHdwLmkxOG47XHJcblxyXG5jb25zdCB7XHJcblx0ICAgICAgVGV4dENvbnRyb2wsXHJcblx0ICAgICAgU2VsZWN0Q29udHJvbCxcclxuXHQgICAgICB3aXRoTm90aWNlcyxcclxuICAgICAgfSA9IHdwLmNvbXBvbmVudHM7XHJcblxyXG5jb25zdCB7XHJcblx0ICAgICAgdXNlRWZmZWN0LFxyXG4gICAgICB9ID0gd3AuZWxlbWVudDtcclxuXHJcbmNvbnN0IHtcclxuXHQgICAgICByZW5kZXJHYXRld2F5LFxyXG4gICAgICB9ID0gSmV0RkJBY3Rpb25zO1xyXG5cclxuY29uc3Qge1xyXG5cdCAgICAgIHdpdGhTZWxlY3RHYXRld2F5cyxcclxuXHQgICAgICB3aXRoRGlzcGF0Y2hHYXRld2F5cyxcclxuICAgICAgfSA9IEpldEZCSG9va3M7XHJcblxyXG5jb25zdCB7XHJcblx0ICAgICAgVG9nZ2xlQ29udHJvbCxcclxuICAgICAgfSA9IEpldEZCQ29tcG9uZW50cztcclxuXHJcbmZ1bmN0aW9uIFBheXBhbE1haW4oIHtcclxuXHRzZXRHYXRld2F5UmVxdWVzdCxcclxuXHRnYXRld2F5U3BlY2lmaWMsXHJcblx0c2V0R2F0ZXdheVNwZWNpZmljLFxyXG5cdGdhdGV3YXlTY2VuYXJpbyxcclxuXHRzZXRHYXRld2F5U2NlbmFyaW8sXHJcblx0Z2V0U3BlY2lmaWNPckdsb2JhbCxcclxuXHRhZGRpdGlvbmFsU291cmNlR2F0ZXdheSxcclxuXHRzcGVjaWZpY0dhdGV3YXlMYWJlbCxcclxuXHRub3RpY2VPcGVyYXRpb25zLFxyXG5cdG5vdGljZVVJLFxyXG59ICkge1xyXG5cclxuXHRjb25zdCB7XHJcblx0XHQgICAgICBpZDogc2NlbmFyaW8gPSAnUEFZX05PVycsXHJcblx0ICAgICAgfSA9IGdhdGV3YXlTY2VuYXJpbztcclxuXHJcblx0dXNlRWZmZWN0KCAoKSA9PiB7XHJcblx0XHRzZXRHYXRld2F5UmVxdWVzdCggeyBpZDogc2NlbmFyaW8gfSApO1xyXG5cdH0sIFsgc2NlbmFyaW8gXSApO1xyXG5cclxuXHR1c2VFZmZlY3QoICgpID0+IHtcclxuXHRcdHNldEdhdGV3YXlSZXF1ZXN0KCB7IGlkOiBzY2VuYXJpbyB9ICk7XHJcblx0fSwgW10gKTtcclxuXHJcblx0cmV0dXJuIDw+XHJcblx0XHR7IG5vdGljZVVJIH1cclxuXHRcdDxUb2dnbGVDb250cm9sXHJcblx0XHRcdGNoZWNrZWQ9eyBnYXRld2F5U3BlY2lmaWMudXNlX2dsb2JhbCB9XHJcblx0XHRcdG9uQ2hhbmdlPXsgdXNlX2dsb2JhbCA9PiBzZXRHYXRld2F5U3BlY2lmaWMoIHsgdXNlX2dsb2JhbCB9ICkgfVxyXG5cdFx0PlxyXG5cdFx0XHR7IF9fKCAnVXNlJywgJ2pldC1mb3JtLWJ1aWxkZXInICkgKyAnICcgfVxyXG5cdFx0XHQ8YSBocmVmPXsgSmV0Rm9ybUVkaXRvckRhdGEuZ2xvYmFsX3NldHRpbmdzX3VybCArXHJcblx0XHRcdCcjcGF5bWVudHMtZ2F0ZXdheXNfX3BheXBhbCcgfT5cclxuXHRcdFx0XHR7IF9fKCAnR2xvYmFsIFNldHRpbmdzJywgJ2pldC1mb3JtLWJ1aWxkZXInICkgfVxyXG5cdFx0XHQ8L2E+XHJcblx0XHQ8L1RvZ2dsZUNvbnRyb2w+XHJcblx0XHQ8VGV4dENvbnRyb2xcclxuXHRcdFx0bGFiZWw9eyBzcGVjaWZpY0dhdGV3YXlMYWJlbCggJ2NsaWVudF9pZCcgKSB9XHJcblx0XHRcdGtleT1cInBheXBhbF9jbGllbnRfaWRfc2V0dGluZ1wiXHJcblx0XHRcdHZhbHVlPXsgZ2V0U3BlY2lmaWNPckdsb2JhbCggJ2NsaWVudF9pZCcgKSB9XHJcblx0XHRcdG9uQ2hhbmdlPXsgY2xpZW50X2lkID0+IHNldEdhdGV3YXlTcGVjaWZpYyggeyBjbGllbnRfaWQgfSApIH1cclxuXHRcdFx0ZGlzYWJsZWQ9eyBnYXRld2F5U3BlY2lmaWMudXNlX2dsb2JhbCB9XHJcblx0XHQvPlxyXG5cdFx0PFRleHRDb250cm9sXHJcblx0XHRcdGxhYmVsPXsgc3BlY2lmaWNHYXRld2F5TGFiZWwoICdzZWNyZXQnICkgfVxyXG5cdFx0XHRrZXk9XCJwYXlwYWxfc2VjcmV0X3NldHRpbmdcIlxyXG5cdFx0XHR2YWx1ZT17IGdldFNwZWNpZmljT3JHbG9iYWwoICdzZWNyZXQnICkgfVxyXG5cdFx0XHRvbkNoYW5nZT17IHNlY3JldCA9PiBzZXRHYXRld2F5U3BlY2lmaWMoIHsgc2VjcmV0IH0gKSB9XHJcblx0XHRcdGRpc2FibGVkPXsgZ2F0ZXdheVNwZWNpZmljLnVzZV9nbG9iYWwgfVxyXG5cdFx0Lz5cclxuXHRcdDxTZWxlY3RDb250cm9sXHJcblx0XHRcdGxhYmVsUG9zaXRpb249XCJzaWRlXCJcclxuXHRcdFx0bGFiZWw9eyBzcGVjaWZpY0dhdGV3YXlMYWJlbCggJ2dhdGV3YXlfdHlwZScgKSB9XHJcblx0XHRcdHZhbHVlPXsgc2NlbmFyaW8gfVxyXG5cdFx0XHRvbkNoYW5nZT17IGlkID0+IHtcclxuXHRcdFx0XHRzZXRHYXRld2F5U2NlbmFyaW8oIHsgaWQgfSApO1xyXG5cdFx0XHR9IH1cclxuXHRcdFx0b3B0aW9ucz17IGFkZGl0aW9uYWxTb3VyY2VHYXRld2F5LnNjZW5hcmlvcyB9XHJcblx0XHQvPlxyXG5cdFx0eyByZW5kZXJHYXRld2F5KCAncGF5cGFsJywgeyBub3RpY2VPcGVyYXRpb25zIH0sIHNjZW5hcmlvICkgfVxyXG5cdDwvPjtcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgY29tcG9zZShcclxuXHR3aXRoU2VsZWN0KCB3aXRoU2VsZWN0R2F0ZXdheXMgKSxcclxuXHR3aXRoRGlzcGF0Y2goIHdpdGhEaXNwYXRjaEdhdGV3YXlzICksXHJcblx0d2l0aE5vdGljZXMsXHJcbikoIFBheXBhbE1haW4gKTtcclxuXHJcblxyXG4iLCJjb25zdCB7IGNvbXBvc2UgfSA9IHdwLmNvbXBvc2U7XHJcblxyXG5jb25zdCB7XHJcblx0d2l0aFNlbGVjdCxcclxuXHR3aXRoRGlzcGF0Y2gsXHJcbn0gPSB3cC5kYXRhO1xyXG5cclxuY29uc3Qge1xyXG5cdFRleHRDb250cm9sLFxyXG5cdFNlbGVjdENvbnRyb2wsXHJcblx0QmFzZUNvbnRyb2wsXHJcblx0UmFkaW9Db250cm9sLFxyXG59ID0gd3AuY29tcG9uZW50cztcclxuXHJcbmNvbnN0IHtcclxuXHR3aXRoU2VsZWN0Rm9ybUZpZWxkcyxcclxuXHR3aXRoU2VsZWN0R2F0ZXdheXMsXHJcblx0d2l0aERpc3BhdGNoR2F0ZXdheXMsXHJcblx0d2l0aFNlbGVjdEFjdGlvbnNCeVR5cGUsXHJcbn0gPSBKZXRGQkhvb2tzO1xyXG5cclxuY29uc3QgeyBHYXRld2F5RmV0Y2hCdXR0b24gfSA9IEpldEZCQ29tcG9uZW50cztcclxuXHJcbmZ1bmN0aW9uIFBheU5vd1NjZW5hcmlvKCB7XHJcblx0Z2F0ZXdheUdlbmVyYWwsXHJcblx0Z2F0ZXdheVNwZWNpZmljLFxyXG5cdHNldEdhdGV3YXksXHJcblx0c2V0R2F0ZXdheVNwZWNpZmljLFxyXG5cdGZvcm1GaWVsZHMsXHJcblx0Z2V0U3BlY2lmaWNPckdsb2JhbCxcclxuXHRsb2FkaW5nR2F0ZXdheSxcclxuXHRzY2VuYXJpb1NvdXJjZSxcclxuXHRub3RpY2VPcGVyYXRpb25zLFxyXG5cdHNjZW5hcmlvTGFiZWwsXHJcblx0Z2xvYmFsR2F0ZXdheUxhYmVsLFxyXG59ICkge1xyXG5cclxuXHRjb25zdCBkaXNwbGF5Tm90aWNlID0gc3RhdHVzID0+IHJlc3BvbnNlID0+IHtcclxuXHRcdG5vdGljZU9wZXJhdGlvbnMucmVtb3ZlTm90aWNlKCBnYXRld2F5R2VuZXJhbC5nYXRld2F5ICk7XHJcblx0XHRub3RpY2VPcGVyYXRpb25zLmNyZWF0ZU5vdGljZSgge1xyXG5cdFx0XHRzdGF0dXMsXHJcblx0XHRcdGNvbnRlbnQ6IHJlc3BvbnNlLm1lc3NhZ2UsXHJcblx0XHRcdGlkOiBnYXRld2F5R2VuZXJhbC5nYXRld2F5LFxyXG5cdFx0fSApO1xyXG5cdH07XHJcblxyXG5cdHJldHVybiA8PlxyXG5cdFx0PEJhc2VDb250cm9sXHJcblx0XHRcdGxhYmVsPXsgc2NlbmFyaW9MYWJlbCggJ2ZldGNoX2J1dHRvbl9sYWJlbCcgKSB9XHJcblx0XHQ+XHJcblx0XHRcdDxkaXYgY2xhc3NOYW1lPVwiamV0LXVzZXItZmllbGRzLW1hcF9fbGlzdFwiPlxyXG5cdFx0XHRcdHsgKCAhIGxvYWRpbmdHYXRld2F5LnN1Y2Nlc3MgJiYgISBsb2FkaW5nR2F0ZXdheS5sb2FkaW5nICkgJiYgPHNwYW5cclxuXHRcdFx0XHRcdGNsYXNzTmFtZT17ICdkZXNjcmlwdGlvbi1jb250cm9scycgfVxyXG5cdFx0XHRcdD5cclxuXHRcdFx0XHRcdHsgc2NlbmFyaW9MYWJlbCggJ2ZldGNoX2J1dHRvbl9oZWxwJyApIH1cclxuXHRcdFx0XHQ8L3NwYW4+IH1cclxuXHRcdFx0XHQ8R2F0ZXdheUZldGNoQnV0dG9uXHJcblx0XHRcdFx0XHRpbml0aWFsTGFiZWw9eyBzY2VuYXJpb0xhYmVsKCAnZmV0Y2hfYnV0dG9uJyApIH1cclxuXHRcdFx0XHRcdGxhYmVsPXsgc2NlbmFyaW9MYWJlbCggJ2ZldGNoX2J1dHRvbl9yZXRyeScgKSB9XHJcblx0XHRcdFx0XHRhcGlBcmdzPXsge1xyXG5cdFx0XHRcdFx0XHQuLi5zY2VuYXJpb1NvdXJjZS5mZXRjaCxcclxuXHRcdFx0XHRcdFx0ZGF0YToge1xyXG5cdFx0XHRcdFx0XHRcdGNsaWVudF9pZDogZ2V0U3BlY2lmaWNPckdsb2JhbCggJ2NsaWVudF9pZCcgKSxcclxuXHRcdFx0XHRcdFx0XHRzZWNyZXQ6IGdldFNwZWNpZmljT3JHbG9iYWwoICdzZWNyZXQnICksXHJcblx0XHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHR9IH1cclxuXHRcdFx0XHRcdG9uRmFpbD17IGRpc3BsYXlOb3RpY2UoICdlcnJvcicgKSB9XHJcblx0XHRcdFx0Lz5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQ8L0Jhc2VDb250cm9sPlxyXG5cdFx0eyBsb2FkaW5nR2F0ZXdheS5zdWNjZXNzICYmIDw+XHJcblx0XHRcdDxUZXh0Q29udHJvbFxyXG5cdFx0XHRcdGxhYmVsPXsgc2NlbmFyaW9MYWJlbCggJ2N1cnJlbmN5JyApIH1cclxuXHRcdFx0XHRrZXk9J3BheXBhbF9jdXJyZW5jeV9jb2RlX3NldHRpbmcnXHJcblx0XHRcdFx0dmFsdWU9eyBnYXRld2F5U3BlY2lmaWMuY3VycmVuY3kgfVxyXG5cdFx0XHRcdG9uQ2hhbmdlPXsgY3VycmVuY3kgPT4gc2V0R2F0ZXdheVNwZWNpZmljKCB7IGN1cnJlbmN5IH0gKSB9XHJcblx0XHRcdC8+XHJcblx0XHRcdDxTZWxlY3RDb250cm9sXHJcblx0XHRcdFx0bGFiZWw9eyBnbG9iYWxHYXRld2F5TGFiZWwoICdwcmljZV9maWVsZCcgKSB9XHJcblx0XHRcdFx0a2V5PXsgJ2Zvcm1fZmllbGRzX3ByaWNlX2ZpZWxkJyB9XHJcblx0XHRcdFx0dmFsdWU9eyBnYXRld2F5R2VuZXJhbC5wcmljZV9maWVsZCB9XHJcblx0XHRcdFx0bGFiZWxQb3NpdGlvbj0nc2lkZSdcclxuXHRcdFx0XHRvbkNoYW5nZT17IHByaWNlX2ZpZWxkID0+IHtcclxuXHRcdFx0XHRcdHNldEdhdGV3YXkoIHsgcHJpY2VfZmllbGQgfSApO1xyXG5cdFx0XHRcdH0gfVxyXG5cdFx0XHRcdG9wdGlvbnM9eyBmb3JtRmllbGRzIH1cclxuXHRcdFx0Lz5cclxuXHRcdDwvPiB9XHJcblx0PC8+O1xyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjb21wb3NlKFxyXG5cdHdpdGhTZWxlY3QoICggLi4ucHJvcHMgKSA9PiAoXHJcblx0XHR7XHJcblx0XHRcdC4uLndpdGhTZWxlY3RGb3JtRmllbGRzKCBbXSwgJy0tJyApKCAuLi5wcm9wcyApLFxyXG5cdFx0XHQuLi53aXRoU2VsZWN0R2F0ZXdheXMoIC4uLnByb3BzICksXHJcblx0XHR9XHJcblx0KSApLFxyXG5cdHdpdGhEaXNwYXRjaCggKCAuLi5wcm9wcyApID0+IChcclxuXHRcdHtcclxuXHRcdFx0Li4ud2l0aERpc3BhdGNoR2F0ZXdheXMoIC4uLnByb3BzICksXHJcblx0XHR9XHJcblx0KSApLFxyXG4pKCBQYXlOb3dTY2VuYXJpbyApOyIsImltcG9ydCBQbHVnaW5HYXRld2F5cyBmcm9tICcuL3JlbmRlcic7XHJcblxyXG5jb25zdCB7IF9fIH0gPSB3cC5pMThuO1xyXG5cclxuY29uc3QgYmFzZSA9IHtcclxuXHRuYW1lOiAnamYtZ2F0ZXdheXMtcGFuZWwnLFxyXG5cdHRpdGxlOiBfXyggJ0dhdGV3YXlzIFNldHRpbmdzJywgJ2pldC1mb3JtLWJ1aWxkZXInICksXHJcbn07XHJcblxyXG5jb25zdCBzZXR0aW5ncyA9IHtcclxuXHRyZW5kZXI6IFBsdWdpbkdhdGV3YXlzLFxyXG5cdGljb246ICdtb25leS1hbHQnLFxyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQge1xyXG5cdGJhc2UsXHJcblx0c2V0dGluZ3MsXHJcbn07IiwiaW1wb3J0IEdhdGV3YXlzRWRpdG9yIGZyb20gJy4uL2NvbXBvbmVudHMvZ2F0ZXdheXMtZWRpdG9yJztcclxuXHJcbmNvbnN0IHsgQnV0dG9uLCBUb2dnbGVDb250cm9sIH0gPSB3cC5jb21wb25lbnRzO1xyXG5cclxuY29uc3QgeyB3aXRoRGlzcGF0Y2gsIHdpdGhTZWxlY3QgfSA9IHdwLmRhdGE7XHJcblxyXG5jb25zdCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSA9IHdwLmVsZW1lbnQ7XHJcblxyXG5jb25zdCB7IF9fIH0gPSB3cC5pMThuO1xyXG5cclxuY29uc3QgeyBjb21wb3NlIH0gPSB3cC5jb21wb3NlO1xyXG5cclxuY29uc3QgeyBBY3Rpb25Nb2RhbCB9ID0gSmV0RkJDb21wb25lbnRzO1xyXG5cclxuY29uc3Qge1xyXG5cdHdpdGhEaXNwYXRjaEdhdGV3YXlzLFxyXG5cdHdpdGhTZWxlY3RHYXRld2F5cyxcclxuXHR1c2VNZXRhU3RhdGUsXHJcbn0gPSBKZXRGQkhvb2tzO1xyXG5cclxuY29uc3QgZ2F0ZXdheXNEYXRhID0gd2luZG93LkpldEZvcm1FZGl0b3JEYXRhLmdhdGV3YXlzO1xyXG5cclxuY29uc3QgTU9ERV9TSU5HTEUgPSAnc2luZ2xlJztcclxuY29uc3QgTU9ERV9NQU5VQUwgPSAnbWFudWFsJztcclxuXHJcbmNvbnN0IGdldEdhdGV3YXlMYWJlbCA9ICggdHlwZSApID0+IHtcclxuXHRyZXR1cm4gKFxyXG5cdFx0Z2F0ZXdheXNEYXRhLmxpc3QuZmluZCggZWwgPT4gZWwudmFsdWUgPT09IHR5cGUgKT8ubGFiZWwgfHwgdHlwZVxyXG5cdCk7XHJcbn07XHJcblxyXG5mdW5jdGlvbiBQbHVnaW5HYXRld2F5cyggcHJvcHMgKSB7XHJcblxyXG5cdGNvbnN0IHtcclxuXHRcdHNldEdhdGV3YXksXHJcblx0XHRzZXRHYXRld2F5U2NlbmFyaW8sXHJcblx0XHRjbGVhckdhdGV3YXksXHJcblx0XHRjbGVhclNjZW5hcmlvLFxyXG5cdFx0Z2F0ZXdheUdlbmVyYWwsXHJcblx0XHRnYXRld2F5U2NlbmFyaW8sXHJcblx0fSA9IHByb3BzO1xyXG5cclxuXHRjb25zdCBbIG1ldGEsIHNldE1ldGEgXSA9IHVzZU1ldGFTdGF0ZSggJ19qZl9nYXRld2F5cycgKTtcclxuXHJcblx0Y29uc3QgWyBpc0VkaXQsIHNldEVkaXQgXSA9IHVzZVN0YXRlKCBmYWxzZSApO1xyXG5cclxuXHQvLyBVSS1zZWxlY3RlZCB2YWx1ZSAoY2FuIGJlIFwibWFudWFsXCIgd2l0aG91dCB0b3VjaGluZyBtZXRhLmdhdGV3YXkpXHJcblx0Y29uc3QgWyBzZWxlY3RlZEdhdGV3YXksIHNldFNlbGVjdGVkR2F0ZXdheSBdID0gdXNlU3RhdGUoIG1ldGE/LmdhdGV3YXkgPz8gJ25vbmUnICk7XHJcblxyXG5cdC8vIHdoaWNoIGdhdGV3YXkgaXMgY3VycmVudGx5IGJlaW5nIGVkaXRlZCBpbiBtb2RhbFxyXG5cdGNvbnN0IFsgZWRpdEdhdGV3YXksIHNldEVkaXRHYXRld2F5IF0gPSB1c2VTdGF0ZSggbnVsbCApO1xyXG5cclxuXHRjb25zdCBpc01hbnVhbE1vZGUgPSBtZXRhPy5tb2RlID09PSBNT0RFX01BTlVBTDtcclxuXHJcblx0Ly8ga2VlcCBVSSBzZWxlY3RlZCBpbiBzeW5jIHdpdGggc2F2ZWQgbWV0YVxyXG5cdHVzZUVmZmVjdCggKCkgPT4ge1xyXG5cdFx0aWYgKCBpc01hbnVhbE1vZGUgKSB7XHJcblx0XHRcdHNldFNlbGVjdGVkR2F0ZXdheSggTU9ERV9NQU5VQUwgKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0c2V0U2VsZWN0ZWRHYXRld2F5KCBtZXRhPy5nYXRld2F5ID8/ICdub25lJyApO1xyXG5cdH0sIFsgbWV0YT8uZ2F0ZXdheSwgbWV0YT8ubW9kZSBdICk7XHJcblxyXG5cdC8vIGJpbmQgZWRpdG9yIHN0b3JlIHdoZW4gbW9kYWwgaXMgb3BlblxyXG5cdHVzZUVmZmVjdCggKCkgPT4ge1xyXG5cdFx0aWYgKCAhaXNFZGl0ICkge1xyXG5cdFx0XHRjbGVhckdhdGV3YXkoKTtcclxuXHRcdFx0Y2xlYXJTY2VuYXJpbygpO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0Y29uc3QgZ3cgPSBlZGl0R2F0ZXdheSB8fCBtZXRhPy5nYXRld2F5O1xyXG5cclxuXHRcdGlmICggIWd3IHx8IGd3ID09PSAnbm9uZScgKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBXaGVuIG1hbnVhbCBtb2RlIGlzIGFjdGl2ZSwgbW9kYWwgb3BlbnMgZm9yIFwiZWRpdEdhdGV3YXlcIiBvbmx5XHJcblx0XHRpZiAoIGlzTWFudWFsTW9kZSAmJiAhZWRpdEdhdGV3YXkgKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHRzZXRHYXRld2F5KCB7IC4uLm1ldGEsIGdhdGV3YXk6IGd3IH0gKTtcclxuXHRcdHNldEdhdGV3YXlTY2VuYXJpbyggbWV0YT8uWyBndyBdPy5zY2VuYXJpbyApO1xyXG5cdH0sIFsgaXNFZGl0LCBlZGl0R2F0ZXdheSBdICk7XHJcblxyXG5cdGNvbnN0IGNsb3NlTW9kYWwgPSAoIG5ld01ldGEgPSBmYWxzZSApID0+IHtcclxuXHRcdGlmICggZmFsc2UgIT09IG5ld01ldGEgKSB7XHJcblx0XHRcdHNldE1ldGEoIG5ld01ldGEgKTtcclxuXHRcdH1cclxuXHRcdHNldEVkaXQoIGZhbHNlICk7XHJcblx0XHRzZXRFZGl0R2F0ZXdheSggbnVsbCApO1xyXG5cdH07XHJcblxyXG5cdGNvbnN0IG9wdGlvbnMgPSBbXHJcblx0XHR7IGxhYmVsOiAnTm9uZScsIHZhbHVlOiAnbm9uZScgfSxcclxuXHRcdC4uLmdhdGV3YXlzRGF0YS5saXN0LFxyXG5cdFx0eyBsYWJlbDogJ01hbnVhbCcsIHZhbHVlOiBNT0RFX01BTlVBTCB9LFxyXG5cdF07XHJcblxyXG5cdHJldHVybiAoXHJcblx0XHQ8PlxyXG5cdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cImpmYi1nYXRld2F5c1wiPlxyXG5cdFx0XHRcdHsgb3B0aW9ucy5tYXAoICggb3B0ICkgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc3QgaXNTZWxlY3RlZCA9IHNlbGVjdGVkR2F0ZXdheSA9PT0gb3B0LnZhbHVlO1xyXG5cclxuXHRcdFx0XHRcdC8vIEluIG1hbnVhbCBtb2RlOiBzaG93IEVkaXQgdW5kZXIgRUFDSCBnYXRld2F5XHJcblx0XHRcdFx0XHQvLyBPdGhlcndpc2U6IHNob3cgRWRpdCBvbmx5IHVuZGVyIHRoZSBzZWxlY3RlZCBnYXRld2F5XHJcblx0XHRcdFx0XHRjb25zdCBjYW5FZGl0ID1cclxuXHRcdFx0XHRcdFx0b3B0LnZhbHVlICE9PSAnbm9uZSdcclxuXHRcdFx0XHRcdFx0JiYgb3B0LnZhbHVlICE9PSBNT0RFX01BTlVBTFxyXG5cdFx0XHRcdFx0XHQmJiAoIGlzTWFudWFsTW9kZSB8fCBpc1NlbGVjdGVkICk7XHJcblxyXG5cdFx0XHRcdFx0Y29uc3QgY2FuVG9nZ2xlID1cclxuXHRcdFx0XHRcdFx0aXNNYW51YWxNb2RlXHJcblx0XHRcdFx0XHRcdCYmIG9wdC52YWx1ZSAhPT0gJ25vbmUnXHJcblx0XHRcdFx0XHRcdCYmIG9wdC52YWx1ZSAhPT0gTU9ERV9NQU5VQUw7XHJcblxyXG5cdFx0XHRcdFx0cmV0dXJuIChcclxuXHRcdFx0XHRcdFx0PGRpdiBrZXk9eyBvcHQudmFsdWUgfSBjbGFzc05hbWU9XCJqZmItZ2F0ZXdheXNfX2l0ZW1cIj5cclxuXHRcdFx0XHRcdFx0XHQ8bGFiZWwgY2xhc3NOYW1lPVwiamZiLWdhdGV3YXlzX19vcHRpb25cIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxpbnB1dFxyXG5cdFx0XHRcdFx0XHRcdFx0XHR0eXBlPVwicmFkaW9cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRuYW1lPVwiamZiX2dhdGV3YXlcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZT17IG9wdC52YWx1ZSB9XHJcblx0XHRcdFx0XHRcdFx0XHRcdGNoZWNrZWQ9eyBpc1NlbGVjdGVkIH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0b25DaGFuZ2U9eyAoKSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0c2V0U2VsZWN0ZWRHYXRld2F5KCBvcHQudmFsdWUgKTtcclxuXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gTWFudWFsIG1vZGUgc2VsZWN0ZWRcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIG9wdC52YWx1ZSA9PT0gTU9ERV9NQU5VQUwgKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzZXRNZXRhKCB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC4uLm1ldGEsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG1vZGU6IE1PREVfTUFOVUFMLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSApO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gU2luZ2xlIG1vZGUgc2VsZWN0ZWRcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRzZXRNZXRhKCB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuLi5tZXRhLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bW9kZTogTU9ERV9TSU5HTEUsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRnYXRld2F5OiBvcHQudmFsdWUsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSApO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR9IH1cclxuXHRcdFx0XHRcdFx0XHRcdC8+XHJcblx0XHRcdFx0XHRcdFx0XHQ8c3Bhbj57IG9wdC5sYWJlbCB9PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdDwvbGFiZWw+PGJyLz5cclxuXHJcblx0XHRcdFx0XHRcdFx0eyBjYW5FZGl0ICYmIChcclxuXHRcdFx0XHRcdFx0XHRcdDxCdXR0b25cclxuXHRcdFx0XHRcdFx0XHRcdFx0b25DbGljaz17ICgpID0+IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRzZXRFZGl0R2F0ZXdheSggb3B0LnZhbHVlICk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0c2V0RWRpdCggdHJ1ZSApO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR9IH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0aWNvbj17ICdhZG1pbi10b29scycgfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRzdHlsZT17IHsgbWFyZ2luOiAnOHB4IDAnIH0gfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRpc1NlY29uZGFyeVxyXG5cdFx0XHRcdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHR7IF9fKCAnRWRpdCcsICdqZXQtZm9ybS1idWlsZGVyJyApIH1cclxuXHRcdFx0XHRcdFx0XHRcdDwvQnV0dG9uPlxyXG5cdFx0XHRcdFx0XHRcdCkgfVxyXG5cclxuXHRcdFx0XHRcdFx0XHR7IGNhblRvZ2dsZSAmJiAoXHJcblx0XHRcdFx0XHRcdFx0XHQ8VG9nZ2xlQ29udHJvbFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRsYWJlbD17IF9fKCAnU2hvdyBvbiBmcm9udGVuZCcsICdqZXQtZm9ybS1idWlsZGVyJyApIH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0Y2hlY2tlZD17ICEhbWV0YT8uWyBvcHQudmFsdWUgXT8uc2hvd19vbl9mcm9udCB9XHJcblx0XHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlPXsgKCB2YWx1ZSApID0+IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRzZXRNZXRhKCB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuLi5tZXRhLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0WyBvcHQudmFsdWUgXToge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuLi4oIG1ldGE/Llsgb3B0LnZhbHVlIF0gfHwge30gKSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c2hvd19vbl9mcm9udDogdmFsdWUsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0gKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0fSB9XHJcblx0XHRcdFx0XHRcdFx0XHRcdHN0eWxlPXsgeyBtYXJnaW46ICc4cHggMCcgfSB9XHJcblx0XHRcdFx0XHRcdFx0XHQvPlxyXG5cdFx0XHRcdFx0XHRcdCkgfVxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0fSApIH1cclxuXHRcdFx0PC9kaXY+XHJcblxyXG5cdFx0XHR7IGlzRWRpdCAmJiAoXHJcblx0XHRcdFx0PEFjdGlvbk1vZGFsXHJcblx0XHRcdFx0XHRjbGFzc05hbWVzPXsgWyAnd2lkdGgtNjAnIF0gfVxyXG5cdFx0XHRcdFx0b25SZXF1ZXN0Q2xvc2U9eyAoKSA9PiBjbG9zZU1vZGFsKCkgfVxyXG5cdFx0XHRcdFx0b25DYW5jZWxDbGljaz17ICgpID0+IGNsb3NlTW9kYWwoKSB9XHJcblx0XHRcdFx0XHRvblVwZGF0ZUNsaWNrPXsgKCkgPT4gY2xvc2VNb2RhbCgge1xyXG5cdFx0XHRcdFx0XHQuLi5nYXRld2F5R2VuZXJhbCxcclxuXHRcdFx0XHRcdFx0WyBnYXRld2F5R2VuZXJhbC5nYXRld2F5IF06IHtcclxuXHRcdFx0XHRcdFx0XHQuLi4oIGdhdGV3YXlHZW5lcmFsWyBnYXRld2F5R2VuZXJhbC5nYXRld2F5IF0gfHwge30gKSxcclxuXHRcdFx0XHRcdFx0XHRzY2VuYXJpbzogZ2F0ZXdheVNjZW5hcmlvLFxyXG5cdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0fSApIH1cclxuXHRcdFx0XHRcdHRpdGxlPXsgYEVkaXQgJHsgZ2V0R2F0ZXdheUxhYmVsKCBlZGl0R2F0ZXdheSB8fCBtZXRhPy5nYXRld2F5ICkgfSBTZXR0aW5nc2AgfVxyXG5cdFx0XHRcdD5cclxuXHRcdFx0XHRcdDxHYXRld2F5c0VkaXRvci8+XHJcblx0XHRcdFx0PC9BY3Rpb25Nb2RhbD5cclxuXHRcdFx0KSB9XHJcblx0XHQ8Lz5cclxuXHQpO1xyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjb21wb3NlKFxyXG5cdHdpdGhEaXNwYXRjaCggd2l0aERpc3BhdGNoR2F0ZXdheXMgKSxcclxuXHR3aXRoU2VsZWN0KCB3aXRoU2VsZWN0R2F0ZXdheXMgKSxcclxuKSggUGx1Z2luR2F0ZXdheXMgKTtcclxuIiwibW9kdWxlLmV4cG9ydHMgPSB3aW5kb3dbXCJSZWFjdFwiXTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiaW1wb3J0IFBheXBhbE1haW4gZnJvbSAnLi9wYXlwYWwvbWFpbic7XHJcbmltcG9ydCBQYXlOb3dTY2VuYXJpbyBmcm9tICcuL3BheXBhbC9wYXktbm93LXNjZW5hcmlvJztcclxuaW1wb3J0IGdhdGV3YXlQbHVnaW4gZnJvbSAnLi9wbHVnaW4nO1xyXG5cclxuY29uc3Qge1xyXG5cdCAgICAgIHJlZ2lzdGVyR2F0ZXdheSxcclxuICAgICAgfSA9IEpldEZCQWN0aW9ucztcclxuXHJcbmNvbnN0IHtcclxuXHQgICAgICBhZGRGaWx0ZXIsXHJcbiAgICAgIH0gPSB3cC5ob29rcztcclxuXHJcbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XHJcblxyXG5jb25zdCBnYXRld2F5SUQgPSAncGF5cGFsJztcclxuXHJcbnJlZ2lzdGVyR2F0ZXdheShcclxuXHRnYXRld2F5SUQsXHJcblx0UGF5cGFsTWFpbixcclxuKTtcclxuXHJcbnJlZ2lzdGVyR2F0ZXdheShcclxuXHRnYXRld2F5SUQsXHJcblx0UGF5Tm93U2NlbmFyaW8sXHJcblx0J1BBWV9OT1cnLFxyXG4pO1xyXG5cclxuYWRkRmlsdGVyKFxyXG5cdCdqZXQuZmIucmVnaXN0ZXIucGx1Z2luLmpmLXZhbGlkYXRpb24tcGFuZWwuYWZ0ZXInLFxyXG5cdCdqZXQtZm9ybS1idWlsZGVyL2dhdGV3YXlzJyxcclxuXHRmdW5jdGlvbiAoIHBsdWdpbnMgKSB7XHJcblx0XHRwbHVnaW5zLnB1c2goIGdhdGV3YXlQbHVnaW4gKTtcclxuXHJcblx0XHRyZXR1cm4gcGx1Z2lucztcclxuXHR9LFxyXG4pOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/modules/gateways/assets/src/editor/plugin/render.js b/modules/gateways/assets/src/editor/plugin/render.js index c3f8594b2..a2011b3be 100644 --- a/modules/gateways/assets/src/editor/plugin/render.js +++ b/modules/gateways/assets/src/editor/plugin/render.js @@ -1,121 +1,206 @@ import GatewaysEditor from '../components/gateways-editor'; -const { - RadioControl, - Button, - } = wp.components; +const { Button, ToggleControl } = wp.components; -const { - withDispatch, - withSelect, - } = wp.data; +const { withDispatch, withSelect } = wp.data; -const { - useState, - useEffect, - } = wp.element; -const { - __, - } = wp.i18n; -const { - compose, - } = wp.compose; +const { useState, useEffect } = wp.element; + +const { __ } = wp.i18n; + +const { compose } = wp.compose; + +const { ActionModal } = JetFBComponents; const { - ActionModal, - } = JetFBComponents; -const { - withDispatchGateways, - withSelectGateways, - useMetaState, - } = JetFBHooks; + withDispatchGateways, + withSelectGateways, + useMetaState, +} = JetFBHooks; const gatewaysData = window.JetFormEditorData.gateways; +const MODE_SINGLE = 'single'; +const MODE_MANUAL = 'manual'; + const getGatewayLabel = ( type ) => { return ( - gatewaysData.list.find( el => el.value === type ).label + gatewaysData.list.find( el => el.value === type )?.label || type ); }; function PluginGateways( props ) { const { - setGateway, - setGatewayScenario, - clearGateway, - clearScenario, - gatewayGeneral, - gatewayScenario, - } = props; - - const [ meta, setMeta ] = useMetaState( '_jf_gateways' ); + setGateway, + setGatewayScenario, + clearGateway, + clearScenario, + gatewayGeneral, + gatewayScenario, + } = props; + + const [ meta, setMeta ] = useMetaState( '_jf_gateways' ); + const [ isEdit, setEdit ] = useState( false ); + // UI-selected value (can be "manual" without touching meta.gateway) + const [ selectedGateway, setSelectedGateway ] = useState( meta?.gateway ?? 'none' ); + + // which gateway is currently being edited in modal + const [ editGateway, setEditGateway ] = useState( null ); + + const isManualMode = meta?.mode === MODE_MANUAL; + + // keep UI selected in sync with saved meta useEffect( () => { - if ( isEdit ) { - setGateway( meta ); - setGatewayScenario( - meta[ meta.gateway ]?.scenario ); + if ( isManualMode ) { + setSelectedGateway( MODE_MANUAL ); + return; } - else { + setSelectedGateway( meta?.gateway ?? 'none' ); + }, [ meta?.gateway, meta?.mode ] ); + + // bind editor store when modal is open + useEffect( () => { + if ( !isEdit ) { clearGateway(); clearScenario(); + return; } - }, [ isEdit ] ); + + const gw = editGateway || meta?.gateway; + + if ( !gw || gw === 'none' ) { + return; + } + + // When manual mode is active, modal opens for "editGateway" only + if ( isManualMode && !editGateway ) { + return; + } + + setGateway( { ...meta, gateway: gw } ); + setGatewayScenario( meta?.[ gw ]?.scenario ); + }, [ isEdit, editGateway ] ); const closeModal = ( newMeta = false ) => { if ( false !== newMeta ) { setMeta( newMeta ); } setEdit( false ); + setEditGateway( null ); }; - return <> - { - setMeta( { ...meta, gateway } ); - } } - /> - { ( - 'none' !== meta.gateway && meta.gateway - ) && } - - { isEdit && ( - closeModal() } - onCancelClick={ () => closeModal() } - onUpdateClick={ () => closeModal( { - ...gatewayGeneral, - [ gatewayGeneral.gateway ]: { - ...( - gatewayGeneral[ gatewayGeneral.gateway ] || {} - ), - scenario: gatewayScenario, - }, + const options = [ + { label: 'None', value: 'none' }, + ...gatewaysData.list, + { label: 'Manual', value: MODE_MANUAL }, + ]; + + return ( + <> +
+ { options.map( ( opt ) => { + const isSelected = selectedGateway === opt.value; + + // In manual mode: show Edit under EACH gateway + // Otherwise: show Edit only under the selected gateway + const canEdit = + opt.value !== 'none' + && opt.value !== MODE_MANUAL + && ( isManualMode || isSelected ); + + const canToggle = + isManualMode + && opt.value !== 'none' + && opt.value !== MODE_MANUAL; + + return ( +
+
+ + { canEdit && ( + + ) } + + { canToggle && ( + { + setMeta( { + ...meta, + [ opt.value ]: { + ...( meta?.[ opt.value ] || {} ), + show_on_front: value, + }, + } ); + } } + style={ { margin: '8px 0' } } + /> + ) } +
+ ); } ) } - title={ `Edit ${ getGatewayLabel( meta.gateway ) } Settings` } - > - - - ) } - ; +
+ + { isEdit && ( + closeModal() } + onCancelClick={ () => closeModal() } + onUpdateClick={ () => closeModal( { + ...gatewayGeneral, + [ gatewayGeneral.gateway ]: { + ...( gatewayGeneral[ gatewayGeneral.gateway ] || {} ), + scenario: gatewayScenario, + }, + } ) } + title={ `Edit ${ getGatewayLabel( editGateway || meta?.gateway ) } Settings` } + > + + + ) } + + ); } export default compose( diff --git a/modules/modules-controller.php b/modules/modules-controller.php index 705633c63..089325dd1 100644 --- a/modules/modules-controller.php +++ b/modules/modules-controller.php @@ -12,6 +12,7 @@ use JFB_Components\Module\Module_Controller_It; use JFB_Components\Module\Module_Controller_Trait; use Jet_Form_Builder\Gateways\Gateway_Manager; + class Modules_Controller implements Module_Controller_It { use Module_Controller_Trait; @@ -62,6 +63,7 @@ public function rep_instances(): array { new Promo_Banner\Module(), new Fields_Render_Validator\Module(), new User_Journey\Module(), + new Multi_Gateway\Module(), ); } diff --git a/modules/multi-gateway/.babelrc b/modules/multi-gateway/.babelrc new file mode 100644 index 000000000..bedc22b83 --- /dev/null +++ b/modules/multi-gateway/.babelrc @@ -0,0 +1,3 @@ +{ + "extends": "../../.babelrc" +} \ No newline at end of file diff --git a/modules/multi-gateway/.gitattributes b/modules/multi-gateway/.gitattributes new file mode 100644 index 000000000..64da4024d --- /dev/null +++ b/modules/multi-gateway/.gitattributes @@ -0,0 +1,4 @@ +assets/src export-ignore +package.json export-ignore +.babelrc export-ignore +webpack.config.js export-ignore \ No newline at end of file diff --git a/modules/multi-gateway/assets/build/editor.asset.php b/modules/multi-gateway/assets/build/editor.asset.php new file mode 100644 index 000000000..cc46f5c54 --- /dev/null +++ b/modules/multi-gateway/assets/build/editor.asset.php @@ -0,0 +1 @@ + array('react', 'wp-hooks'), 'version' => '76e14b4dbd420872d2ec'); diff --git a/modules/multi-gateway/assets/build/editor.css b/modules/multi-gateway/assets/build/editor.css new file mode 100644 index 000000000..273ffb5e6 --- /dev/null +++ b/modules/multi-gateway/assets/build/editor.css @@ -0,0 +1,41 @@ +/*!*********************************************************************************************************************************************************************************************************!*\ + !*** css ../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/postcss-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./editor/blocks/multi-gateway/block.scss ***! + \*********************************************************************************************************************************************************************************************************/ +.jfb-multi-gateway h3 { + margin: 0 0 6px; +} + +.jfb-multi-gateway p { + margin: 0 0 14px; + opacity: 0.75; +} + +.jfb-multi-gateway__list { + border: 1px solid #dcdcde; + border-radius: 2px; + overflow: hidden; + background: #fff; +} + +.jfb-multi-gateway__item { + display: flex; + gap: 10px; + align-items: flex-start; + padding: 16px; + border-top: 1px solid #dcdcde; +} + +.jfb-multi-gateway__item:first-child { + border-top: 0; +} + +.jfb-multi-gateway__item input { + margin-top: 2px; +} + +.jfb-multi-gateway__empty { + padding: 16px; + opacity: 0.7; +} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNzcyIsIm1hcHBpbmdzIjoiOzs7QUFBQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9qZmItbXVsdGktZ2F0ZXdheS8uL2VkaXRvci9ibG9ja3MvbXVsdGktZ2F0ZXdheS9ibG9jay5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIi5qZmItbXVsdGktZ2F0ZXdheSBoMyB7XHJcbiAgbWFyZ2luOiAwIDAgNnB4O1xyXG59XHJcblxyXG4uamZiLW11bHRpLWdhdGV3YXkgcCB7XHJcbiAgbWFyZ2luOiAwIDAgMTRweDtcclxuICBvcGFjaXR5OiAwLjc1O1xyXG59XHJcblxyXG4uamZiLW11bHRpLWdhdGV3YXlfX2xpc3Qge1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICNkY2RjZGU7XHJcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgYmFja2dyb3VuZDogI2ZmZjtcclxufVxyXG5cclxuLmpmYi1tdWx0aS1nYXRld2F5X19pdGVtIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGdhcDogMTBweDtcclxuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcclxuICBwYWRkaW5nOiAxNnB4O1xyXG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGNkY2RlO1xyXG59XHJcblxyXG4uamZiLW11bHRpLWdhdGV3YXlfX2l0ZW06Zmlyc3QtY2hpbGQge1xyXG4gIGJvcmRlci10b3A6IDA7XHJcbn1cclxuXHJcbi5qZmItbXVsdGktZ2F0ZXdheV9faXRlbSBpbnB1dCB7XHJcbiAgbWFyZ2luLXRvcDogMnB4O1xyXG59XHJcblxyXG4uamZiLW11bHRpLWdhdGV3YXlfX2VtcHR5IHtcclxuICBwYWRkaW5nOiAxNnB4O1xyXG4gIG9wYWNpdHk6IDAuNztcclxufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/ \ No newline at end of file diff --git a/modules/multi-gateway/assets/build/editor.js b/modules/multi-gateway/assets/build/editor.js new file mode 100644 index 000000000..f6412ff34 --- /dev/null +++ b/modules/multi-gateway/assets/build/editor.js @@ -0,0 +1,285 @@ +/******/ (() => { // webpackBootstrap +/******/ "use strict"; +/******/ var __webpack_modules__ = ({ + +/***/ "../../blocks/multi-gateway/block.json": +/*!*********************************************!*\ + !*** ../../blocks/multi-gateway/block.json ***! + \*********************************************/ +/***/ ((module) => { + +module.exports = /*#__PURE__*/JSON.parse('{"apiVersion":2,"name":"jet-forms/multi-gateway","title":"Multi Gateway","description":"Displays available payment gateways selected in form settings.","category":"jet-form-builder-fields","textdomain":"jet-form-builder","keywords":["jetformbuilder","gateway","payment"],"supports":{"html":false,"multiple":false},"attributes":{"isPreview":{"type":"boolean","default":false},"title":{"type":"string","default":""},"description":{"type":"string","default":""}},"viewScript":"jet-fb-multi-gateway","style":"jet-fb-multi-gateway"}'); + +/***/ }), + +/***/ "./editor/blocks/multi-gateway/block.scss": +/*!************************************************!*\ + !*** ./editor/blocks/multi-gateway/block.scss ***! + \************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +// extracted by mini-css-extract-plugin + + +/***/ }), + +/***/ "./editor/blocks/multi-gateway/edit.js": +/*!*********************************************!*\ + !*** ./editor/blocks/multi-gateway/edit.js ***! + \*********************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ "default": () => (/* binding */ MultiGatewayEdit) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); + +const { + useBlockProps, + RichText +} = wp.blockEditor; +const { + useMetaState +} = JetFBHooks; +const gatewaysData = window?.JetFormEditorData?.gateways; +const MODE_MANUAL = 'manual'; +const getGatewayLabel = type => gatewaysData?.list?.find(el => el.value === type)?.label || type; +function MultiGatewayEdit({ + attributes, + setAttributes +}) { + const blockProps = useBlockProps({ + className: 'jfb-multi-gateway' + }); + const [meta] = useMetaState('_jf_gateways'); + const mode = meta?.mode || 'single'; + let selected = []; + if (mode === MODE_MANUAL) { + selected = (gatewaysData?.list || []).map(({ + value + }) => value).filter(key => !!meta?.[key]?.show_on_front); + } else { + const gw = meta?.gateway; + if (gw && gw !== 'none') { + selected = [gw]; + } + } + return (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", { + ...blockProps + }, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(RichText, { + tagName: "h3", + value: attributes.title || '', + placeholder: "Payment options", + onChange: title => setAttributes({ + title + }) + }), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(RichText, { + tagName: "p", + value: attributes.description || '', + placeholder: "Optional text for this form step.", + onChange: description => setAttributes({ + description + }) + }), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", { + className: "jfb-multi-gateway__list" + }, selected.length ? selected.map((key, index) => (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("label", { + key: key, + className: "jfb-multi-gateway__item" + }, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("input", { + type: "radio", + checked: index === 0, + readOnly: true + }), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", null, getGatewayLabel(key)))) : (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", { + className: "jfb-multi-gateway__empty" + }, "No gateways selected"))); +} + +/***/ }), + +/***/ "./editor/blocks/multi-gateway/index.js": +/*!**********************************************!*\ + !*** ./editor/blocks/multi-gateway/index.js ***! + \**********************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ metadata: () => (/* reexport default export from named module */ _root_blocks_multi_gateway_block_json__WEBPACK_IMPORTED_MODULE_2__), +/* harmony export */ name: () => (/* binding */ name), +/* harmony export */ settings: () => (/* binding */ settings) +/* harmony export */ }); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react"); +/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__); +/* harmony import */ var _edit__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./edit */ "./editor/blocks/multi-gateway/edit.js"); +/* harmony import */ var _root_blocks_multi_gateway_block_json__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @root/blocks/multi-gateway/block.json */ "../../blocks/multi-gateway/block.json"); +/* harmony import */ var _block_scss__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./block.scss */ "./editor/blocks/multi-gateway/block.scss"); + + + + +const { + __ +} = wp.i18n; +const { + createBlock +} = wp.blocks; +const { + name, + icon = '' +} = _root_blocks_multi_gateway_block_json__WEBPACK_IMPORTED_MODULE_2__; +_root_blocks_multi_gateway_block_json__WEBPACK_IMPORTED_MODULE_2__.attributes.isPreview = { + 'type': 'boolean', + 'default': false +}; +const settings = { + icon: (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", { + dangerouslySetInnerHTML: { + __html: icon + } + }), + description: __(`Displays available payment gateways selected in form settings.`, 'jet-form-builder'), + edit: _edit__WEBPACK_IMPORTED_MODULE_1__["default"], + example: { + attributes: { + isPreview: true + } + }, + transforms: { + to: [{ + type: 'block', + blocks: ['jet-forms/text-field'], + transform: attributes => { + return createBlock('jet-forms/text-field', { + ...attributes + }); + }, + priority: 0 + }], + from: [{ + type: 'block', + blocks: ['jet-forms/checkbox-field', 'jet-forms/radio-field', 'jet-forms/select-field'], + transform: attributes => { + return createBlock(name, { + ...attributes + }); + }, + priority: 0 + }] + } +}; + + +/***/ }), + +/***/ "@wordpress/hooks": +/*!*******************************!*\ + !*** external ["wp","hooks"] ***! + \*******************************/ +/***/ ((module) => { + +module.exports = window["wp"]["hooks"]; + +/***/ }), + +/***/ "react": +/*!************************!*\ + !*** external "React" ***! + \************************/ +/***/ ((module) => { + +module.exports = window["React"]; + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/compat get default export */ +/******/ (() => { +/******/ // getDefaultExport function for compatibility with non-harmony modules +/******/ __webpack_require__.n = (module) => { +/******/ var getter = module && module.__esModule ? +/******/ () => (module['default']) : +/******/ () => (module); +/******/ __webpack_require__.d(getter, { a: getter }); +/******/ return getter; +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/define property getters */ +/******/ (() => { +/******/ // define getter functions for harmony exports +/******/ __webpack_require__.d = (exports, definition) => { +/******/ for(var key in definition) { +/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) { +/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] }); +/******/ } +/******/ } +/******/ }; +/******/ })(); +/******/ +/******/ /* webpack/runtime/hasOwnProperty shorthand */ +/******/ (() => { +/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop)) +/******/ })(); +/******/ +/******/ /* webpack/runtime/make namespace object */ +/******/ (() => { +/******/ // define __esModule on exports +/******/ __webpack_require__.r = (exports) => { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ })(); +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry needs to be wrapped in an IIFE because it needs to be isolated against other modules in the chunk. +(() => { +/*!************************!*\ + !*** ./editor/main.js ***! + \************************/ +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _blocks_multi_gateway__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./blocks/multi-gateway */ "./editor/blocks/multi-gateway/index.js"); +/* harmony import */ var _wordpress_hooks__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @wordpress/hooks */ "@wordpress/hooks"); +/* harmony import */ var _wordpress_hooks__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_hooks__WEBPACK_IMPORTED_MODULE_1__); + + +(0,_wordpress_hooks__WEBPACK_IMPORTED_MODULE_1__.addFilter)('jet.fb.register.fields', 'jet-form-builder/multi-gateway', function (blocks) { + blocks.push(_blocks_multi_gateway__WEBPACK_IMPORTED_MODULE_0__); + return blocks; +}); +})(); + +/******/ })() +; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFFQTtBQUlBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBS0E7QUFBQTtBQU9BOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDcEVBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFLQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7Ozs7Ozs7Ozs7O0FDeERBOzs7Ozs7Ozs7O0FDQUE7Ozs7OztBQ0FBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ3ZCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ1BBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDUEE7Ozs7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7O0FDTkE7QUFFQTtBQUVBO0FBSUE7QUFJQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vamZiLW11bHRpLWdhdGV3YXkvLi9lZGl0b3IvYmxvY2tzL211bHRpLWdhdGV3YXkvYmxvY2suc2NzcyIsIndlYnBhY2s6Ly9qZmItbXVsdGktZ2F0ZXdheS8uL2VkaXRvci9ibG9ja3MvbXVsdGktZ2F0ZXdheS9lZGl0LmpzIiwid2VicGFjazovL2pmYi1tdWx0aS1nYXRld2F5Ly4vZWRpdG9yL2Jsb2Nrcy9tdWx0aS1nYXRld2F5L2luZGV4LmpzIiwid2VicGFjazovL2pmYi1tdWx0aS1nYXRld2F5L2V4dGVybmFsIHdpbmRvdyBbXCJ3cFwiLFwiaG9va3NcIl0iLCJ3ZWJwYWNrOi8vamZiLW11bHRpLWdhdGV3YXkvZXh0ZXJuYWwgd2luZG93IFwiUmVhY3RcIiIsIndlYnBhY2s6Ly9qZmItbXVsdGktZ2F0ZXdheS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9qZmItbXVsdGktZ2F0ZXdheS93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9qZmItbXVsdGktZ2F0ZXdheS93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vamZiLW11bHRpLWdhdGV3YXkvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9qZmItbXVsdGktZ2F0ZXdheS93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL2pmYi1tdWx0aS1nYXRld2F5Ly4vZWRpdG9yL21haW4uanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5leHBvcnQge307IiwiY29uc3QgeyB1c2VCbG9ja1Byb3BzLCBSaWNoVGV4dCB9ID0gd3AuYmxvY2tFZGl0b3I7XHJcblxyXG5jb25zdCB7IHVzZU1ldGFTdGF0ZSB9ID0gSmV0RkJIb29rcztcclxuXHJcbmNvbnN0IGdhdGV3YXlzRGF0YSA9IHdpbmRvdz8uSmV0Rm9ybUVkaXRvckRhdGE/LmdhdGV3YXlzO1xyXG5jb25zdCBNT0RFX01BTlVBTCA9ICdtYW51YWwnO1xyXG5cclxuY29uc3QgZ2V0R2F0ZXdheUxhYmVsID0gKCB0eXBlICkgPT4gKFxyXG5cdGdhdGV3YXlzRGF0YT8ubGlzdD8uZmluZCggZWwgPT4gZWwudmFsdWUgPT09IHR5cGUgKT8ubGFiZWwgfHwgdHlwZVxyXG4pO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTXVsdGlHYXRld2F5RWRpdCggeyBhdHRyaWJ1dGVzLCBzZXRBdHRyaWJ1dGVzIH0gKSB7XHJcblx0Y29uc3QgYmxvY2tQcm9wcyA9IHVzZUJsb2NrUHJvcHMoIHtcclxuXHRcdGNsYXNzTmFtZTogJ2pmYi1tdWx0aS1nYXRld2F5JyxcclxuXHR9ICk7XHJcblxyXG5cdGNvbnN0IFsgbWV0YSBdID0gdXNlTWV0YVN0YXRlKCAnX2pmX2dhdGV3YXlzJyApO1xyXG5cclxuXHRjb25zdCBtb2RlID0gbWV0YT8ubW9kZSB8fCAnc2luZ2xlJztcclxuXHJcblx0bGV0IHNlbGVjdGVkID0gW107XHJcblx0aWYgKCBtb2RlID09PSBNT0RFX01BTlVBTCApIHtcclxuXHRcdHNlbGVjdGVkID0gKCBnYXRld2F5c0RhdGE/Lmxpc3QgfHwgW10gKVxyXG5cdFx0XHQubWFwKCAoIHsgdmFsdWUgfSApID0+IHZhbHVlIClcclxuXHRcdFx0LmZpbHRlciggKCBrZXkgKSA9PiAhIW1ldGE/Llsga2V5IF0/LnNob3dfb25fZnJvbnQgKTtcclxuXHR9IGVsc2Uge1xyXG5cdFx0Y29uc3QgZ3cgPSBtZXRhPy5nYXRld2F5O1xyXG5cdFx0aWYgKCBndyAmJiBndyAhPT0gJ25vbmUnICkge1xyXG5cdFx0XHRzZWxlY3RlZCA9IFsgZ3cgXTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHJldHVybiAoXHJcblx0XHQ8ZGl2IHsgLi4uYmxvY2tQcm9wcyB9PlxyXG5cdFx0XHQ8UmljaFRleHRcclxuXHRcdFx0XHR0YWdOYW1lPVwiaDNcIlxyXG5cdFx0XHRcdHZhbHVlPXsgYXR0cmlidXRlcy50aXRsZSB8fCAnJyB9XHJcblx0XHRcdFx0cGxhY2Vob2xkZXI9XCJQYXltZW50IG9wdGlvbnNcIlxyXG5cdFx0XHRcdG9uQ2hhbmdlPXsgKCB0aXRsZSApID0+IHNldEF0dHJpYnV0ZXMoIHsgdGl0bGUgfSApIH1cclxuXHRcdFx0Lz5cclxuXHRcdFx0PFJpY2hUZXh0XHJcblx0XHRcdFx0dGFnTmFtZT1cInBcIlxyXG5cdFx0XHRcdHZhbHVlPXsgYXR0cmlidXRlcy5kZXNjcmlwdGlvbiB8fCAnJyB9XHJcblx0XHRcdFx0cGxhY2Vob2xkZXI9XCJPcHRpb25hbCB0ZXh0IGZvciB0aGlzIGZvcm0gc3RlcC5cIlxyXG5cdFx0XHRcdG9uQ2hhbmdlPXsgKCBkZXNjcmlwdGlvbiApID0+IHNldEF0dHJpYnV0ZXMoIHsgZGVzY3JpcHRpb24gfSApIH1cclxuXHRcdFx0Lz5cclxuXHJcblx0XHRcdDxkaXYgY2xhc3NOYW1lPVwiamZiLW11bHRpLWdhdGV3YXlfX2xpc3RcIj5cclxuXHRcdFx0XHR7IHNlbGVjdGVkLmxlbmd0aCA/IHNlbGVjdGVkLm1hcCggKCBrZXksIGluZGV4ICkgPT4gKFxyXG5cdFx0XHRcdFx0PGxhYmVsXHJcblx0XHRcdFx0XHRcdGtleT17IGtleSB9XHJcblx0XHRcdFx0XHRcdGNsYXNzTmFtZT1cImpmYi1tdWx0aS1nYXRld2F5X19pdGVtXCJcclxuXHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0PGlucHV0XHJcblx0XHRcdFx0XHRcdFx0dHlwZT1cInJhZGlvXCJcclxuXHRcdFx0XHRcdFx0XHRjaGVja2VkPXsgaW5kZXggPT09IDAgfVxyXG5cdFx0XHRcdFx0XHRcdHJlYWRPbmx5XHJcblx0XHRcdFx0XHRcdC8+XHJcblx0XHRcdFx0XHRcdDxzcGFuPnsgZ2V0R2F0ZXdheUxhYmVsKCBrZXkgKSB9PC9zcGFuPlxyXG5cdFx0XHRcdFx0PC9sYWJlbD5cclxuXHRcdFx0XHQpICkgOiAoXHJcblx0XHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cImpmYi1tdWx0aS1nYXRld2F5X19lbXB0eVwiPlxyXG5cdFx0XHRcdFx0XHRObyBnYXRld2F5cyBzZWxlY3RlZFxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0KSB9XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9kaXY+XHJcblx0KTtcclxufVxyXG4iLCJpbXBvcnQgTXVsdGlHYXRld2F5RWRpdCBmcm9tICcuL2VkaXQnO1xyXG5pbXBvcnQgbWV0YWRhdGEgZnJvbSAnQHJvb3QvYmxvY2tzL211bHRpLWdhdGV3YXkvYmxvY2suanNvbic7XHJcbmltcG9ydCAnLi9ibG9jay5zY3NzJztcclxuXHJcbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XHJcblxyXG5jb25zdCB7IGNyZWF0ZUJsb2NrIH0gPSB3cC5ibG9ja3M7XHJcblxyXG5jb25zdCB7IG5hbWUsIGljb24gPSAnJyB9ID0gbWV0YWRhdGE7XHJcblxyXG5tZXRhZGF0YS5hdHRyaWJ1dGVzLmlzUHJldmlldyA9IHtcclxuXHQndHlwZSc6ICdib29sZWFuJyxcclxuXHQnZGVmYXVsdCc6IGZhbHNlLFxyXG59O1xyXG5cclxuY29uc3Qgc2V0dGluZ3MgPSB7XHJcblx0aWNvbjogPHNwYW4gZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9eyB7IF9faHRtbDogaWNvbiB9IH0+PC9zcGFuPixcclxuXHRkZXNjcmlwdGlvbjogX18oXHJcblx0XHRgRGlzcGxheXMgYXZhaWxhYmxlIHBheW1lbnQgZ2F0ZXdheXMgc2VsZWN0ZWQgaW4gZm9ybSBzZXR0aW5ncy5gLFxyXG5cdFx0J2pldC1mb3JtLWJ1aWxkZXInLFxyXG5cdCksXHJcblx0ZWRpdDogTXVsdGlHYXRld2F5RWRpdCxcclxuXHRleGFtcGxlOiB7XHJcblx0XHRhdHRyaWJ1dGVzOiB7XHJcblx0XHRcdGlzUHJldmlldzogdHJ1ZSxcclxuXHRcdH0sXHJcblx0fSxcclxuXHR0cmFuc2Zvcm1zOiB7XHJcblx0XHR0bzogW1xyXG5cdFx0XHR7XHJcblx0XHRcdFx0dHlwZTogJ2Jsb2NrJyxcclxuXHRcdFx0XHRibG9ja3M6IFtcclxuXHRcdFx0XHRcdCdqZXQtZm9ybXMvdGV4dC1maWVsZCcsXHJcblx0XHRcdFx0XSxcclxuXHRcdFx0XHR0cmFuc2Zvcm06ICggYXR0cmlidXRlcyApID0+IHtcclxuXHRcdFx0XHRcdHJldHVybiBjcmVhdGVCbG9jayggJ2pldC1mb3Jtcy90ZXh0LWZpZWxkJyxcclxuXHRcdFx0XHRcdFx0eyAuLi5hdHRyaWJ1dGVzIH0gKTtcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdHByaW9yaXR5OiAwLFxyXG5cdFx0XHR9LFxyXG5cdFx0XSxcclxuXHRcdGZyb206IFtcclxuXHRcdFx0e1xyXG5cdFx0XHRcdHR5cGU6ICdibG9jaycsXHJcblx0XHRcdFx0YmxvY2tzOiBbXHJcblx0XHRcdFx0XHQnamV0LWZvcm1zL2NoZWNrYm94LWZpZWxkJyxcclxuXHRcdFx0XHRcdCdqZXQtZm9ybXMvcmFkaW8tZmllbGQnLFxyXG5cdFx0XHRcdFx0J2pldC1mb3Jtcy9zZWxlY3QtZmllbGQnLFxyXG5cdFx0XHRcdF0sXHJcblx0XHRcdFx0dHJhbnNmb3JtOiAoIGF0dHJpYnV0ZXMgKSA9PiB7XHJcblx0XHRcdFx0XHRyZXR1cm4gY3JlYXRlQmxvY2soIG5hbWUsIHsgLi4uYXR0cmlidXRlcyB9ICk7XHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHRwcmlvcml0eTogMCxcclxuXHRcdFx0fSxcclxuXHRcdF0sXHJcblx0fSxcclxufTtcclxuXHJcbmV4cG9ydCB7XHJcblx0bWV0YWRhdGEsXHJcblx0bmFtZSxcclxuXHRzZXR0aW5ncyxcclxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IHdpbmRvd1tcIndwXCJdW1wiaG9va3NcIl07IiwibW9kdWxlLmV4cG9ydHMgPSB3aW5kb3dbXCJSZWFjdFwiXTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiaW1wb3J0ICogYXMgTXVsdGlHYXRld2F5IGZyb20gJy4vYmxvY2tzL211bHRpLWdhdGV3YXknO1xyXG5cclxuaW1wb3J0IHsgYWRkRmlsdGVyIH0gZnJvbSAnQHdvcmRwcmVzcy9ob29rcyc7XHJcblxyXG5hZGRGaWx0ZXIoXHJcblx0J2pldC5mYi5yZWdpc3Rlci5maWVsZHMnLFxyXG5cdCdqZXQtZm9ybS1idWlsZGVyL211bHRpLWdhdGV3YXknLFxyXG5cdGZ1bmN0aW9uICggYmxvY2tzICkge1xyXG5cdFx0YmxvY2tzLnB1c2goXHJcblx0XHRcdE11bHRpR2F0ZXdheSxcclxuXHRcdCk7XHJcblxyXG5cdFx0cmV0dXJuIGJsb2NrcztcclxuXHR9LFxyXG4pOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/modules/multi-gateway/assets/build/multi-gateway.asset.php b/modules/multi-gateway/assets/build/multi-gateway.asset.php new file mode 100644 index 000000000..433e1de5d --- /dev/null +++ b/modules/multi-gateway/assets/build/multi-gateway.asset.php @@ -0,0 +1 @@ + array(), 'version' => 'ae22e8b2fe34014d12bf'); diff --git a/modules/multi-gateway/assets/build/multi-gateway.css b/modules/multi-gateway/assets/build/multi-gateway.css new file mode 100644 index 000000000..19e8654c2 --- /dev/null +++ b/modules/multi-gateway/assets/build/multi-gateway.css @@ -0,0 +1,34 @@ +/*!*******************************************************************************************************************************************************************************************************************!*\ + !*** css ../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/postcss-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./frontend/blocks/multi-gateway/multi-gateway.scss ***! + \*******************************************************************************************************************************************************************************************************************/ +.wp-block-jet-forms-multi-gateway .jfb-multi-gateway__list { + display: grid; + gap: 10px; +} +.wp-block-jet-forms-multi-gateway .jfb-multi-gateway__item { + display: grid !important; + grid-template-columns: 18px 1fr; + align-items: center; + column-gap: 10px; + width: 100%; + margin: 0; + text-align: left !important; + padding: 10px 12px; + border: 1px solid rgba(0, 0, 0, 0.12); + border-radius: 10px; + cursor: pointer; + user-select: none; +} +.wp-block-jet-forms-multi-gateway .jfb-multi-gateway__item input[type=radio] { + margin: 0 !important; + width: auto !important; + justify-self: start; +} +.wp-block-jet-forms-multi-gateway .jfb-multi-gateway__label { + margin: 0 !important; + width: auto !important; + text-align: left !important; + justify-self: start; +} + +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktZ2F0ZXdheS5jc3MiLCJtYXBwaW5ncyI6Ijs7O0FBRUE7QUFDQTtBQUNBO0FBREE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUxBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFOQTtBQVNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFQQSIsInNvdXJjZXMiOlsid2VicGFjazovL2pmYi1tdWx0aS1nYXRld2F5Ly4vZnJvbnRlbmQvYmxvY2tzL211bHRpLWdhdGV3YXkvbXVsdGktZ2F0ZXdheS5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIi53cC1ibG9jay1qZXQtZm9ybXMtbXVsdGktZ2F0ZXdheSB7XHJcblxyXG4gIC5qZmItbXVsdGktZ2F0ZXdheV9fbGlzdCB7XHJcbiAgICBkaXNwbGF5OiBncmlkO1xyXG4gICAgZ2FwOiAxMHB4O1xyXG4gIH1cclxuXHJcbiAgLmpmYi1tdWx0aS1nYXRld2F5X19pdGVtIHtcclxuICAgIGRpc3BsYXk6IGdyaWQgIWltcG9ydGFudDtcclxuICAgIGdyaWQtdGVtcGxhdGUtY29sdW1uczogMThweCAxZnI7XHJcbiAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgY29sdW1uLWdhcDogMTBweDtcclxuXHJcbiAgICB3aWR0aDogMTAwJTtcclxuICAgIG1hcmdpbjogMDtcclxuICAgIHRleHQtYWxpZ246IGxlZnQgIWltcG9ydGFudDtcclxuXHJcbiAgICBwYWRkaW5nOiAxMHB4IDEycHg7XHJcbiAgICBib3JkZXI6IDFweCBzb2xpZCByZ2JhKDAsMCwwLC4xMik7XHJcbiAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xyXG5cclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIHVzZXItc2VsZWN0OiBub25lO1xyXG4gIH1cclxuXHJcbiAgLmpmYi1tdWx0aS1nYXRld2F5X19pdGVtIGlucHV0W3R5cGU9XCJyYWRpb1wiXSB7XHJcbiAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcclxuICAgIHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7XHJcbiAgICBqdXN0aWZ5LXNlbGY6IHN0YXJ0O1xyXG4gIH1cclxuXHJcbiAgLmpmYi1tdWx0aS1nYXRld2F5X19sYWJlbCB7XHJcbiAgICBtYXJnaW46IDAgIWltcG9ydGFudDtcclxuICAgIHdpZHRoOiBhdXRvICFpbXBvcnRhbnQ7XHJcbiAgICB0ZXh0LWFsaWduOiBsZWZ0ICFpbXBvcnRhbnQ7XHJcbiAgICBqdXN0aWZ5LXNlbGY6IHN0YXJ0O1xyXG4gIH1cclxufVxyXG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=*/ \ No newline at end of file diff --git a/modules/multi-gateway/assets/build/multi-gateway.js b/modules/multi-gateway/assets/build/multi-gateway.js new file mode 100644 index 000000000..f931c0f86 --- /dev/null +++ b/modules/multi-gateway/assets/build/multi-gateway.js @@ -0,0 +1,69 @@ +/******/ (() => { // webpackBootstrap +/******/ "use strict"; +/******/ var __webpack_modules__ = ({ + +/***/ "./frontend/blocks/multi-gateway/multi-gateway.scss": +/*!**********************************************************!*\ + !*** ./frontend/blocks/multi-gateway/multi-gateway.scss ***! + \**********************************************************/ +/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => { + +__webpack_require__.r(__webpack_exports__); +// extracted by mini-css-extract-plugin + + +/***/ }) + +/******/ }); +/************************************************************************/ +/******/ // The module cache +/******/ var __webpack_module_cache__ = {}; +/******/ +/******/ // The require function +/******/ function __webpack_require__(moduleId) { +/******/ // Check if module is in cache +/******/ var cachedModule = __webpack_module_cache__[moduleId]; +/******/ if (cachedModule !== undefined) { +/******/ return cachedModule.exports; +/******/ } +/******/ // Create a new module (and put it into the cache) +/******/ var module = __webpack_module_cache__[moduleId] = { +/******/ // no module.id needed +/******/ // no module.loaded needed +/******/ exports: {} +/******/ }; +/******/ +/******/ // Execute the module function +/******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__); +/******/ +/******/ // Return the exports of the module +/******/ return module.exports; +/******/ } +/******/ +/************************************************************************/ +/******/ /* webpack/runtime/make namespace object */ +/******/ (() => { +/******/ // define __esModule on exports +/******/ __webpack_require__.r = (exports) => { +/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { +/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); +/******/ } +/******/ Object.defineProperty(exports, '__esModule', { value: true }); +/******/ }; +/******/ })(); +/******/ +/************************************************************************/ +var __webpack_exports__ = {}; +// This entry needs to be wrapped in an IIFE because it needs to be isolated against other modules in the chunk. +(() => { +/*!***********************************************!*\ + !*** ./frontend/blocks/multi-gateway/main.js ***! + \***********************************************/ +__webpack_require__.r(__webpack_exports__); +/* harmony import */ var _multi_gateway_scss__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./multi-gateway.scss */ "./frontend/blocks/multi-gateway/multi-gateway.scss"); + +})(); + +/******/ })() +; +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktZ2F0ZXdheS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOzs7Ozs7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDdkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vamZiLW11bHRpLWdhdGV3YXkvLi9mcm9udGVuZC9ibG9ja3MvbXVsdGktZ2F0ZXdheS9tdWx0aS1nYXRld2F5LnNjc3MiLCJ3ZWJwYWNrOi8vamZiLW11bHRpLWdhdGV3YXkvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vamZiLW11bHRpLWdhdGV3YXkvd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9qZmItbXVsdGktZ2F0ZXdheS8uL2Zyb250ZW5kL2Jsb2Nrcy9tdWx0aS1nYXRld2F5L21haW4uanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5leHBvcnQge307IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IChleHBvcnRzKSA9PiB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsImltcG9ydCAnLi9tdWx0aS1nYXRld2F5LnNjc3MnOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/modules/multi-gateway/assets/src/editor/blocks/multi-gateway/block.scss b/modules/multi-gateway/assets/src/editor/blocks/multi-gateway/block.scss new file mode 100644 index 000000000..a062bfad7 --- /dev/null +++ b/modules/multi-gateway/assets/src/editor/blocks/multi-gateway/block.scss @@ -0,0 +1,36 @@ +.jfb-multi-gateway h3 { + margin: 0 0 6px; +} + +.jfb-multi-gateway p { + margin: 0 0 14px; + opacity: 0.75; +} + +.jfb-multi-gateway__list { + border: 1px solid #dcdcde; + border-radius: 2px; + overflow: hidden; + background: #fff; +} + +.jfb-multi-gateway__item { + display: flex; + gap: 10px; + align-items: flex-start; + padding: 16px; + border-top: 1px solid #dcdcde; +} + +.jfb-multi-gateway__item:first-child { + border-top: 0; +} + +.jfb-multi-gateway__item input { + margin-top: 2px; +} + +.jfb-multi-gateway__empty { + padding: 16px; + opacity: 0.7; +} \ No newline at end of file diff --git a/modules/multi-gateway/assets/src/editor/blocks/multi-gateway/edit.js b/modules/multi-gateway/assets/src/editor/blocks/multi-gateway/edit.js new file mode 100644 index 000000000..a234d7ec9 --- /dev/null +++ b/modules/multi-gateway/assets/src/editor/blocks/multi-gateway/edit.js @@ -0,0 +1,69 @@ +const { useBlockProps, RichText } = wp.blockEditor; + +const { useMetaState } = JetFBHooks; + +const gatewaysData = window?.JetFormEditorData?.gateways; +const MODE_MANUAL = 'manual'; + +const getGatewayLabel = ( type ) => ( + gatewaysData?.list?.find( el => el.value === type )?.label || type +); + +export default function MultiGatewayEdit( { attributes, setAttributes } ) { + const blockProps = useBlockProps( { + className: 'jfb-multi-gateway', + } ); + + const [ meta ] = useMetaState( '_jf_gateways' ); + + const mode = meta?.mode || 'single'; + + let selected = []; + if ( mode === MODE_MANUAL ) { + selected = ( gatewaysData?.list || [] ) + .map( ( { value } ) => value ) + .filter( ( key ) => !!meta?.[ key ]?.show_on_front ); + } else { + const gw = meta?.gateway; + if ( gw && gw !== 'none' ) { + selected = [ gw ]; + } + } + + return ( +
+ setAttributes( { title } ) } + /> + setAttributes( { description } ) } + /> + +
+ { selected.length ? selected.map( ( key, index ) => ( + + ) ) : ( +
+ No gateways selected +
+ ) } +
+
+ ); +} diff --git a/modules/multi-gateway/assets/src/editor/blocks/multi-gateway/index.js b/modules/multi-gateway/assets/src/editor/blocks/multi-gateway/index.js new file mode 100644 index 000000000..fe82800a0 --- /dev/null +++ b/modules/multi-gateway/assets/src/editor/blocks/multi-gateway/index.js @@ -0,0 +1,63 @@ +import MultiGatewayEdit from './edit'; +import metadata from '@root/blocks/multi-gateway/block.json'; +import './block.scss'; + +const { __ } = wp.i18n; + +const { createBlock } = wp.blocks; + +const { name, icon = '' } = metadata; + +metadata.attributes.isPreview = { + 'type': 'boolean', + 'default': false, +}; + +const settings = { + icon: , + description: __( + `Displays available payment gateways selected in form settings.`, + 'jet-form-builder', + ), + edit: MultiGatewayEdit, + example: { + attributes: { + isPreview: true, + }, + }, + transforms: { + to: [ + { + type: 'block', + blocks: [ + 'jet-forms/text-field', + ], + transform: ( attributes ) => { + return createBlock( 'jet-forms/text-field', + { ...attributes } ); + }, + priority: 0, + }, + ], + from: [ + { + type: 'block', + blocks: [ + 'jet-forms/checkbox-field', + 'jet-forms/radio-field', + 'jet-forms/select-field', + ], + transform: ( attributes ) => { + return createBlock( name, { ...attributes } ); + }, + priority: 0, + }, + ], + }, +}; + +export { + metadata, + name, + settings, +}; \ No newline at end of file diff --git a/modules/multi-gateway/assets/src/editor/blocks/multi-gateway/preview.js b/modules/multi-gateway/assets/src/editor/blocks/multi-gateway/preview.js new file mode 100644 index 000000000..5894a7d8a --- /dev/null +++ b/modules/multi-gateway/assets/src/editor/blocks/multi-gateway/preview.js @@ -0,0 +1,12 @@ +const preview = ( + + + + + + + +); + +export default preview; \ No newline at end of file diff --git a/modules/multi-gateway/assets/src/editor/main.js b/modules/multi-gateway/assets/src/editor/main.js new file mode 100644 index 000000000..9b9f1845b --- /dev/null +++ b/modules/multi-gateway/assets/src/editor/main.js @@ -0,0 +1,15 @@ +import * as MultiGateway from './blocks/multi-gateway'; + +import { addFilter } from '@wordpress/hooks'; + +addFilter( + 'jet.fb.register.fields', + 'jet-form-builder/multi-gateway', + function ( blocks ) { + blocks.push( + MultiGateway, + ); + + return blocks; + }, +); \ No newline at end of file diff --git a/modules/multi-gateway/assets/src/frontend/blocks/multi-gateway/main.js b/modules/multi-gateway/assets/src/frontend/blocks/multi-gateway/main.js new file mode 100644 index 000000000..67fb818a8 --- /dev/null +++ b/modules/multi-gateway/assets/src/frontend/blocks/multi-gateway/main.js @@ -0,0 +1 @@ +import './multi-gateway.scss'; \ No newline at end of file diff --git a/modules/multi-gateway/assets/src/frontend/blocks/multi-gateway/multi-gateway.scss b/modules/multi-gateway/assets/src/frontend/blocks/multi-gateway/multi-gateway.scss new file mode 100644 index 000000000..b76bfd40b --- /dev/null +++ b/modules/multi-gateway/assets/src/frontend/blocks/multi-gateway/multi-gateway.scss @@ -0,0 +1,38 @@ +.wp-block-jet-forms-multi-gateway { + + .jfb-multi-gateway__list { + display: grid; + gap: 10px; + } + + .jfb-multi-gateway__item { + display: grid !important; + grid-template-columns: 18px 1fr; + align-items: center; + column-gap: 10px; + + width: 100%; + margin: 0; + text-align: left !important; + + padding: 10px 12px; + border: 1px solid rgba(0,0,0,.12); + border-radius: 10px; + + cursor: pointer; + user-select: none; + } + + .jfb-multi-gateway__item input[type="radio"] { + margin: 0 !important; + width: auto !important; + justify-self: start; + } + + .jfb-multi-gateway__label { + margin: 0 !important; + width: auto !important; + text-align: left !important; + justify-self: start; + } +} diff --git a/modules/multi-gateway/blocks/multi-gateway/block-render.php b/modules/multi-gateway/blocks/multi-gateway/block-render.php new file mode 100644 index 000000000..c2712ea1b --- /dev/null +++ b/modules/multi-gateway/blocks/multi-gateway/block-render.php @@ -0,0 +1,21 @@ +form_id; + + +$parent = wp_is_post_revision( $form_id ); +if ( $parent ) { + $form_id = (int) $parent; +} + +$parent = wp_is_post_autosave( $form_id ); +if ( $parent ) { + $form_id = (int) $parent; +} + +$parent = wp_get_post_parent_id( $form_id ); +if ( $parent ) { + $form_id = (int) $parent; +} + +$raw = get_post_meta( $form_id, '_jf_gateways', true ); +$meta = is_string( $raw ) ? json_decode( $raw, true ) : (array) $raw; +$meta = is_array( $meta ) ? $meta : []; + +$mode = $meta['mode'] ?? 'single'; +$list = array(); + +if ( 'manual' === $mode ) { + foreach ( $meta as $key => $value ) { + if ( ! is_string( $key ) ) { + continue; + } + if ( in_array( $key, array( 'mode', 'gateway' ), true ) ) { + continue; + } + if ( is_array( $value ) && ! empty( $value['show_on_front'] ) ) { + $list[] = $key; + } + } +} else { + $gw = $meta['gateway'] ?? 'none'; + if ( is_string( $gw ) && $gw && 'none' !== $gw ) { + $list[] = $gw; + } +} + +$label = $args['title'] ?? ''; +$desc = $args['description'] ?? ''; + +$field_name = $args['name'] ?: 'multi_gateway'; + +$name = $this->block_type->get_field_name( $field_name ); + +?> +
+ +

+ +

+ + + +

+ +

+ + + +
+ +
+ +
+ $gateway_key ) : ?> + + +
+ +
+ + diff --git a/modules/multi-gateway/blocks/multi-gateway/block-type.php b/modules/multi-gateway/blocks/multi-gateway/block-type.php new file mode 100644 index 000000000..295a32229 --- /dev/null +++ b/modules/multi-gateway/blocks/multi-gateway/block-type.php @@ -0,0 +1,43 @@ +render(); + } + + /** + * @return string + * @throws Repository_Exception + */ + public function get_path_metadata_block() { + /** @var Module $module */ + $module = jet_form_builder()->module( 'multi-gateway' ); + + return $module->get_dir( 'blocks/multi-gateway' ); + } + + public function get_field_template( $path ) { + /** @var Module $module */ + $module = jet_form_builder()->module( 'multi-gateway' ); + + return $module->get_dir( 'blocks/multi-gateway/block-template.php' ); + } +} diff --git a/modules/multi-gateway/blocks/multi-gateway/block.json b/modules/multi-gateway/blocks/multi-gateway/block.json new file mode 100644 index 000000000..e9f94d962 --- /dev/null +++ b/modules/multi-gateway/blocks/multi-gateway/block.json @@ -0,0 +1,23 @@ +{ + "apiVersion": 2, + "name": "jet-forms/multi-gateway", + "title": "Multi Gateway", + "description": "Displays available payment gateways selected in form settings.", + "category": "jet-form-builder-fields", + "textdomain": "jet-form-builder", + "keywords": ["jetformbuilder", "gateway", "payment"], + "supports": { + "html": false, + "multiple": false + }, + "attributes": { + "isPreview": { + "type": "boolean", + "default": false + }, + "title": { "type": "string", "default": "" }, + "description": { "type": "string", "default": "" } + }, + "viewScript": "jet-fb-multi-gateway", + "style": "jet-fb-multi-gateway" +} \ No newline at end of file diff --git a/modules/multi-gateway/module.php b/modules/multi-gateway/module.php new file mode 100644 index 000000000..185214d38 --- /dev/null +++ b/modules/multi-gateway/module.php @@ -0,0 +1,184 @@ +has_module( 'jet-style' ); + } + + public function on_install() { + } + + public function on_uninstall() { + } + + public function init_hooks() { + add_filter( 'jet-form-builder/blocks/items', array( $this, 'add_blocks_types' ) ); + add_action( 'jet-form-builder/editor-assets/before', array( $this, 'enqueue_admin_assets' ) ); + add_action( 'wp_enqueue_scripts', array( $this, 'register_frontend_scripts' ) ); + add_action( 'jet_plugins/frontend/register_scripts', array( $this, 'register_frontend_scripts' ) ); + add_action( 'enqueue_block_editor_assets', array( $this, 'preview_styles' ) ); + + add_action( + 'jet-form-builder/form-handler/before-send', + array( $this, 'set_gateway_from_submitted_multi_gateway' ), + 0 + ); + } + + public function remove_hooks() { + remove_filter( 'jet-form-builder/blocks/items', array( $this, 'add_blocks_types' ) ); + remove_action( 'jet-form-builder/editor-assets/before', array( $this, 'enqueue_admin_assets' ) ); + remove_action( 'wp_enqueue_scripts', array( $this, 'register_frontend_scripts' ) ); + remove_action( 'jet_plugins/frontend/register_scripts', array( $this, 'register_frontend_scripts' ) ); + remove_action( 'jet-form-builder/form-handler/before-send', array( $this, 'set_gateway_from_submitted_multi_gateway' ), 0 ); + } + + public function add_blocks_types( array $types ): array { + $types[] = new Blocks\Multi_Gateway\Block_Type(); + + return $types; + } + + public function preview_styles() { + + $script_asset = require $this->get_dir( 'assets/build/editor.asset.php' ); + + wp_enqueue_style( + $this->get_handle(), + $this->get_url( 'assets/build/editor.css' ), + array(), + $script_asset['version'] + ); + } + + public function enqueue_admin_assets() { + + $script_asset = require $this->get_dir( 'assets/build/editor.asset.php' ); + + wp_enqueue_script( + $this->get_handle(), + $this->get_url( 'assets/build/editor.js' ), + $script_asset['dependencies'], + $script_asset['version'], + true + ); + + wp_enqueue_style( + $this->get_handle(), + $this->get_url( 'assets/build/editor.css' ), + array(), + $script_asset['version'] + ); + } + + public function register_frontend_scripts() { + $script_asset = require $this->get_dir( 'assets/build/multi-gateway.asset.php' ); + + $deps = $script_asset['dependencies'] ?? array(); + $ver = $script_asset['version'] ?? false; + + $deps[] = BlocksModule::MAIN_SCRIPT_HANDLE; + + wp_register_script( + $this->get_handle(), + $this->get_url( 'assets/build/multi-gateway.js' ), + $deps, + $ver, + true + ); + + wp_register_style( + $this->get_handle(), + $this->get_url( 'assets/build/multi-gateway.css' ), + array(), + $ver + ); + + // ✅ временно, чтобы проверить что реально грузится + //wp_enqueue_style( $this->get_handle() ); + } + + /** + * Set active gateway for current submission from Multi-Gateway field value. + * + * @param Form_Handler $handler + */ + public function set_gateway_from_submitted_multi_gateway( Form_Handler $handler ) { + + $selected = jet_fb_context()->get_request( 'multi_gateway' ); + + if ( ! is_string( $selected ) || '' === $selected ) { + return; + } + + $selected = sanitize_key( $selected ); + + $handler_form_id = (int) $handler->get_form_id(); + + + + // ADDED: normalize to parent for meta read (_jf_gateways stored on parent form post) + $real_form_id = $handler_form_id; + + $parent = wp_is_post_revision( $real_form_id ); + if ( $parent ) { + $real_form_id = (int) $parent; + } + + $parent = wp_is_post_autosave( $real_form_id ); + if ( $parent ) { + $real_form_id = (int) $parent; + } + + $parent = wp_get_post_parent_id( $real_form_id ); + if ( $parent ) { + $real_form_id = (int) $parent; + } + + + + $gateways_module = \JFB_Modules\Gateways\Module::instance(); + + $gateways = $gateways_module->get_form_gateways_by_id( $real_form_id ); + + + + $gateways['gateway'] = $selected; + + // IMPORTANT: set module form_id to handler form id (revision), + // so Default_With_Gateway_Executor won't overwrite our runtime selection. + $gateways_module->set_form_id( $handler_form_id ); + $gateways_module->save_gateways_form_data( $gateways ); + } +} diff --git a/modules/multi-gateway/package.json b/modules/multi-gateway/package.json new file mode 100644 index 000000000..1adda10fe --- /dev/null +++ b/modules/multi-gateway/package.json @@ -0,0 +1,11 @@ +{ + "name": "jet-form-builder-multi-gateway", + "description": "Multi gateway module for JetFormBuilder Plugin", + "version": "1.0.0", + "license": "MIT", + "private": true, + "scripts": { + "build": "npx webpack build --mode production", + "dev": "npx webpack build --mode development -w" + } +} \ No newline at end of file diff --git a/modules/multi-gateway/webpack.config.js b/modules/multi-gateway/webpack.config.js new file mode 100644 index 000000000..0075eb068 --- /dev/null +++ b/modules/multi-gateway/webpack.config.js @@ -0,0 +1,46 @@ +const WPExtractorPlugin = require( '@wordpress/dependency-extraction-webpack-plugin' ); +const MiniCssExtractPlugin = require( 'mini-css-extract-plugin' ); +const path = require( 'path' ); + +const devMode = !process.argv.join( ':' ).includes( '--mode:production' ); + +module.exports = { + context: path.resolve( __dirname, 'assets/src' ), + entry: { + editor: './editor/main.js', + 'multi-gateway': './frontend/blocks/multi-gateway/main.js', + }, + output: { + path: path.resolve( __dirname, 'assets/build' ), + devtoolNamespace: 'jfb-multi-gateway', + }, + devtool: devMode ? 'inline-cheap-module-source-map' : false, + resolve: { + extensions: [ '.js', '.jsx' ], + alias: { + '@root': path.resolve( __dirname ), + }, + }, + module: { + rules: [ + { + test: /\.js(x)?$/, + use: [ 'babel-loader', '@wyw-in-js/webpack-loader' ], + exclude: /node_modules/, + }, + { + test: /\.(sa|sc|c)ss$/i, + use: [ + MiniCssExtractPlugin.loader, + 'css-loader', + 'postcss-loader', + 'sass-loader', + ], + }, + ], + }, + plugins: [ + new WPExtractorPlugin(), + new MiniCssExtractPlugin(), + ], +}; From a0722b55e3dfc6ccc831e30b35e615cfca337c3a Mon Sep 17 00:00:00 2001 From: Andrew Shevchenko Date: Fri, 13 Feb 2026 16:30:59 +0200 Subject: [PATCH 11/13] FIX: calculated field styles --- includes/blocks/types/calculated-field.php | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/includes/blocks/types/calculated-field.php b/includes/blocks/types/calculated-field.php index f68d3da6b..49448b416 100644 --- a/includes/blocks/types/calculated-field.php +++ b/includes/blocks/types/calculated-field.php @@ -53,28 +53,28 @@ public function general_style_unregister() { } public function get_field_input() { - return '-row .%1$s__calculated-field, {{WRAPPER}} .%1$s-row .%1$s__calculated-field--child'; + return '-row .%1$s__calculated-field, {{WRAPPER}} .%1$s-row .%1$s__calculated-field--child, {{WRAPPER}} .jet-form-builder__calculated-field-val'; } public function additional_selectors_for_controls() { return array( 'input_alignment' => array( - 'options' => array( + 'options' => array( 'flex-start' => array( 'shortcut' => __( 'Left', 'jet-form-builder' ), - 'icon' => 'dashicons-editor-alignleft', + 'icon' => 'dashicons-editor-alignleft', ), - 'center' => array( + 'center' => array( 'shortcut' => __( 'Center', 'jet-form-builder' ), - 'icon' => 'dashicons-editor-aligncenter', + 'icon' => 'dashicons-editor-aligncenter', ), - 'flex-end' => array( + 'flex-end' => array( 'shortcut' => __( 'Right', 'jet-form-builder' ), - 'icon' => 'dashicons-editor-alignright', + 'icon' => 'dashicons-editor-alignright', ), ), 'css_selector' => array( - $this->selector( 'input' ) => 'justify-content: {{VALUE}};', + $this->selector( 'input' ) => 'justify-content: {{VALUE}}; display: flex; width: 100%;', ), ), From 262a3681a2078f193cbbcb3bbb4f36f812d82da5 Mon Sep 17 00:00:00 2001 From: yurkodmtr <4au.4au.4au@gmail.com> Date: Mon, 16 Feb 2026 11:17:38 +0200 Subject: [PATCH 12/13] UPD: save progress https://github.com/Crocoblock/issues-tracker/issues/17484 --- jet-form-builder.php | 2 +- .../gateways/assets/build/editor.asset.php | 2 +- modules/gateways/assets/build/editor.js | 127 +++++++--- .../assets/src/editor/plugin/render.js | 231 ++++++++++++------ .../assets/build/editor.asset.php | 2 +- modules/multi-gateway/assets/build/editor.js | 68 +++++- .../assets/build/multi-gateway.asset.php | 2 +- .../assets/build/multi-gateway.js | 2 +- .../src/editor/blocks/multi-gateway/edit.js | 120 ++++++--- .../blocks/multi-gateway/block-template.php | 56 +++-- .../blocks/multi-gateway/block-type.php | 77 ++++++ .../blocks/multi-gateway/block.json | 3 +- 12 files changed, 525 insertions(+), 167 deletions(-) diff --git a/jet-form-builder.php b/jet-form-builder.php index 7451ee269..7409959d9 100644 --- a/jet-form-builder.php +++ b/jet-form-builder.php @@ -18,7 +18,7 @@ die(); } -const JET_FORM_BUILDER_VERSION = '3.5.61132112'; +const JET_FORM_BUILDER_VERSION = '3.5.611321122561'; const JET_FORM_BUILDER__FILE__ = __FILE__; const JET_FORM_BUILDER_SITE = 'https://jetformbuilder.com'; diff --git a/modules/gateways/assets/build/editor.asset.php b/modules/gateways/assets/build/editor.asset.php index 19e49aa51..7e07c3f73 100644 --- a/modules/gateways/assets/build/editor.asset.php +++ b/modules/gateways/assets/build/editor.asset.php @@ -1 +1 @@ - array('react'), 'version' => '5020b00438efac0e6536'); + array('react'), 'version' => '5ff58e063caa9de1f23d'); diff --git a/modules/gateways/assets/build/editor.js b/modules/gateways/assets/build/editor.js index 3b8ce6a4a..c3f4d7cc8 100644 --- a/modules/gateways/assets/build/editor.js +++ b/modules/gateways/assets/build/editor.js @@ -367,11 +367,16 @@ __webpack_require__.r(__webpack_exports__); const { Button, - ToggleControl + ToggleControl, + Notice, + __experimentalItemGroup: ItemGroup, + __experimentalItem: Item } = wp.components; const { withDispatch, - withSelect + withSelect, + useSelect, + dispatch } = wp.data; const { useState, @@ -383,6 +388,9 @@ const { const { compose } = wp.compose; +const { + createBlock +} = wp.blocks; const { ActionModal } = JetFBComponents; @@ -394,9 +402,21 @@ const { const gatewaysData = window.JetFormEditorData.gateways; const MODE_SINGLE = 'single'; const MODE_MANUAL = 'manual'; +const MULTI_GATEWAY_BLOCK = 'jet-forms/multi-gateway'; const getGatewayLabel = type => { return gatewaysData.list.find(el => el.value === type)?.label || type; }; +const hasBlockRecursive = (blocks, name) => { + for (const block of blocks) { + if (block.name === name) { + return true; + } + if (block.innerBlocks?.length && hasBlockRecursive(block.innerBlocks, name)) { + return true; + } + } + return false; +}; function PluginGateways(props) { var _meta$gateway; const { @@ -416,8 +436,16 @@ function PluginGateways(props) { // which gateway is currently being edited in modal const [editGateway, setEditGateway] = useState(null); const isManualMode = meta?.mode === MODE_MANUAL; - - // keep UI selected in sync with saved meta + const hasMultiGatewayBlock = useSelect(select => { + const editor = select('core/block-editor'); + if (!editor?.getBlocks) { + return false; + } + return hasBlockRecursive(editor.getBlocks(), MULTI_GATEWAY_BLOCK); + }, []); + const insertMultiGatewayBlock = () => { + dispatch('core/block-editor').insertBlocks(createBlock(MULTI_GATEWAY_BLOCK)); + }; useEffect(() => { var _meta$gateway2; if (isManualMode) { @@ -426,8 +454,6 @@ function PluginGateways(props) { } setSelectedGateway((_meta$gateway2 = meta?.gateway) !== null && _meta$gateway2 !== void 0 ? _meta$gateway2 : 'none'); }, [meta?.gateway, meta?.mode]); - - // bind editor store when modal is open useEffect(() => { if (!isEdit) { clearGateway(); @@ -438,8 +464,6 @@ function PluginGateways(props) { if (!gw || gw === 'none') { return; } - - // When manual mode is active, modal opens for "editGateway" only if (isManualMode && !editGateway) { return; } @@ -463,18 +487,45 @@ function PluginGateways(props) { label: 'Manual', value: MODE_MANUAL }]; - return (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", { - className: "jfb-gateways" + const styles = { + row: { + display: 'flex', + alignItems: 'center', + justifyContent: 'space-between', + width: '100%' + }, + item: { + display: 'flex', + minHeight: '50px', + flexDirection: 'column', + justifyContent: 'center' + }, + toggle: { + paddingTop: '10px', + flexDirection: 'column' + }, + notice: { + marginTop: '10px' + }, + notice__btn: { + marginLeft: '0' + } + }; + return (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(ItemGroup, { + className: "jfb-gateways", + isBordered: true, + isSeparated: true }, options.map(opt => { const isSelected = selectedGateway === opt.value; - - // In manual mode: show Edit under EACH gateway - // Otherwise: show Edit only under the selected gateway const canEdit = opt.value !== 'none' && opt.value !== MODE_MANUAL && (isManualMode || isSelected); const canToggle = isManualMode && opt.value !== 'none' && opt.value !== MODE_MANUAL; - return (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", { + return (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(Item, { key: opt.value, - className: "jfb-gateways__item" + className: "jfb-gateways__item", + style: styles.item + }, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", { + className: "jfb-gateways__row", + style: styles.row }, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("label", { className: "jfb-gateways__option" }, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("input", { @@ -484,8 +535,6 @@ function PluginGateways(props) { checked: isSelected, onChange: () => { setSelectedGateway(opt.value); - - // Manual mode selected if (opt.value === MODE_MANUAL) { setMeta({ ...meta, @@ -493,25 +542,33 @@ function PluginGateways(props) { }); return; } - - // Single mode selected setMeta({ ...meta, mode: MODE_SINGLE, gateway: opt.value }); } - }), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", null, opt.label)), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("br", null), canEdit && (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(Button, { + }), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", { + className: "jfb-gateways__label" + }, opt.label)), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", { + className: "jfb-gateways__actions" + }, canEdit ? (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(Button, { onClick: () => { setEditGateway(opt.value); setEdit(true); }, - icon: 'admin-tools', - style: { - margin: '8px 0' - }, - isSecondary: true - }, __('Edit', 'jet-form-builder')), canToggle && (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(ToggleControl, { + icon: "admin-tools", + isSecondary: true, + size: "small" + }, __('Edit', 'jet-form-builder')) : + // spacer to prevent jumps + (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", { + className: "jfb-gateways__edit-spacer", + "aria-hidden": "true" + }))), canToggle && (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", { + className: "jfb-gateways__toggle", + style: styles.toggle + }, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(ToggleControl, { label: __('Show on frontend', 'jet-form-builder'), checked: !!meta?.[opt.value]?.show_on_front, onChange: value => { @@ -522,11 +579,19 @@ function PluginGateways(props) { show_on_front: value } }); - }, - style: { - margin: '8px 0' } - })); + })), opt.value === MODE_MANUAL && isManualMode && !hasMultiGatewayBlock && (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", { + className: "jfb-gateways__notice", + style: styles.notice + }, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(Notice, { + status: "warning", + isDismissible: false + }, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", null, __('To display gateways on the frontend in Manual mode, add the Multi Gateway block to the form.', 'jet-form-builder')), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(Button, { + isSecondary: true, + onClick: insertMultiGatewayBlock, + size: "small", + style: styles.notice__btn + }, __('Add block', 'jet-form-builder'))))); })), isEdit && (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(ActionModal, { classNames: ['width-60'], onRequestClose: () => closeModal(), @@ -656,4 +721,4 @@ addFilter('jet.fb.register.plugin.jf-validation-panel.after', 'jet-form-builder/ /******/ })() ; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBR0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBVUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFJQTtBQUNBO0FBQUE7QUFBQTtBQU9BO0FBRUE7QUFHQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7OztBQ3RIQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBRUE7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNqR0E7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQUE7QUFFQTtBQUFBO0FBRUE7QUFBQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFJQTtBQUVBO0FBR0E7QUFDQTtBQUNBO0FBSUE7QUFDQTs7Ozs7Ozs7Ozs7Ozs7O0FDckdBO0FBRUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNqQkE7QUFFQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFFQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUNBO0FBRUE7QUFDQTtBQUdBO0FBRUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTtBQUVBOztBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUdBO0FBRUE7QUFBQTtBQUVBOztBQUVBO0FBQ0E7QUFDQTtBQUtBO0FBS0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQU9BO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBUUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBS0E7QUFLQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFPQTtBQUVBOzs7Ozs7Ozs7O0FDN01BOzs7Ozs7QUNBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7QUN2QkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUNQQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ1BBOzs7OztBQ0FBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7OztBQ05BO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUVBO0FBRUE7QUFLQTtBQU1BO0FBSUE7QUFFQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vamZiLWdhdGV3YXlzLy4vZWRpdG9yL2NvbXBvbmVudHMvZ2F0ZXdheXMtZWRpdG9yLmpzIiwid2VicGFjazovL2pmYi1nYXRld2F5cy8uL2VkaXRvci9wYXlwYWwvbWFpbi5qcyIsIndlYnBhY2s6Ly9qZmItZ2F0ZXdheXMvLi9lZGl0b3IvcGF5cGFsL3BheS1ub3ctc2NlbmFyaW8uanMiLCJ3ZWJwYWNrOi8vamZiLWdhdGV3YXlzLy4vZWRpdG9yL3BsdWdpbi9pbmRleC5qcyIsIndlYnBhY2s6Ly9qZmItZ2F0ZXdheXMvLi9lZGl0b3IvcGx1Z2luL3JlbmRlci5qcyIsIndlYnBhY2s6Ly9qZmItZ2F0ZXdheXMvZXh0ZXJuYWwgd2luZG93IFwiUmVhY3RcIiIsIndlYnBhY2s6Ly9qZmItZ2F0ZXdheXMvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vamZiLWdhdGV3YXlzL3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL2pmYi1nYXRld2F5cy93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vamZiLWdhdGV3YXlzL3dlYnBhY2svcnVudGltZS9oYXNPd25Qcm9wZXJ0eSBzaG9ydGhhbmQiLCJ3ZWJwYWNrOi8vamZiLWdhdGV3YXlzL3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vamZiLWdhdGV3YXlzLy4vZWRpdG9yL21haW4uanMiXSwic291cmNlc0NvbnRlbnQiOlsiY29uc3Qge1xyXG5cdGdhdGV3YXlBdHRyLFxyXG5cdHJlbmRlckdhdGV3YXksXHJcblx0cmVuZGVyR2F0ZXdheVdpdGhQbGFjZWhvbGRlcixcclxufSA9IEpldEZCQWN0aW9ucztcclxuXHJcbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XHJcblxyXG5jb25zdCB7XHJcblx0VGV4dGFyZWFDb250cm9sLFxyXG5cdEJhc2VDb250cm9sLFxyXG59ID0gd3AuY29tcG9uZW50cztcclxuXHJcbmNvbnN0IHtcclxuXHR3aXRoU2VsZWN0LFxyXG5cdHdpdGhEaXNwYXRjaCxcclxufSA9IHdwLmRhdGE7XHJcblxyXG5jb25zdCB7IGNvbXBvc2UgfSA9IHdwLmNvbXBvc2U7XHJcblxyXG5cclxuY29uc3Qge1xyXG5cdHdpdGhTZWxlY3RHYXRld2F5cyxcclxuXHR3aXRoRGlzcGF0Y2hHYXRld2F5cyxcclxufSA9IEpldEZCSG9va3M7XHJcblxyXG5jb25zdCBnYXRld2F5c0RhdGEgPSBnYXRld2F5QXR0cigpO1xyXG5jb25zdCBsYWJlbCA9IGdhdGV3YXlBdHRyKCAnbGFiZWxzJyApO1xyXG5cclxuZnVuY3Rpb24gR2F0ZXdheXNFZGl0b3IoIHtcclxuXHRnYXRld2F5R2VuZXJhbCxcclxuXHRzZXRHYXRld2F5SW5uZXIsXHJcblx0bG9hZGluZ0dhdGV3YXksXHJcblx0Z2F0ZXdheVJlcXVlc3QsXHJcblx0Q1VSUkVOVF9TQ0VOQVJJTyxcclxuXHRjdXJyZW50U2NlbmFyaW8sXHJcbn0gKSB7XHJcblxyXG5cdC8qKlxyXG5cdCAqIFVzZWQgZm9yIHNldCBub3RpZmljYXRpb25zIGFuZCBnYXRld2F5IHR5cGUgc2V0dGluZ3NcclxuXHQgKlxyXG5cdCAqIEBwYXJhbSB3aGVuXHJcblx0ICogQHBhcmFtIHR5cGVcclxuXHQgKiBAcGFyYW0gbmV3VmFsdWVcclxuXHQgKi9cclxuXHRjb25zdCBzZXRWYWx1ZUluT2JqZWN0ID0gKCB3aGVuLCB0eXBlLCBuZXdWYWx1ZSApID0+IHtcclxuXHRcdHNldEdhdGV3YXlJbm5lcigge1xyXG5cdFx0XHRrZXk6IHdoZW4sXHJcblx0XHRcdHZhbHVlOiB7XHJcblx0XHRcdFx0WyB0eXBlIF06IG5ld1ZhbHVlLFxyXG5cdFx0XHR9LFxyXG5cdFx0fSApO1xyXG5cdH07XHJcblx0LyoqXHJcblx0ICogVXNlZCBmb3IgZ2V0IG5vdGlmaWNhdGlvbnMgYW5kIGdhdGV3YXkgdHlwZSBzZXR0aW5nc1xyXG5cdCAqXHJcblx0ICogQHBhcmFtIHdoZW5cclxuXHQgKiBAcGFyYW0gdHlwZVxyXG5cdCAqIEBwYXJhbSBpc0VtcHR5UmVzdWx0XHJcblx0ICogQHJldHVybnMge2Jvb2xlYW58Kn1cclxuXHQgKi9cclxuXHRjb25zdCBnZXROb3RpZmljYXRpb25zID0gKCB3aGVuLCB0eXBlLCBpc0VtcHR5UmVzdWx0ID0gZmFsc2UgKSA9PiB7XHJcblx0XHRpZiAoIGdhdGV3YXlHZW5lcmFsWyB3aGVuIF0gJiYgZ2F0ZXdheUdlbmVyYWxbIHdoZW4gXVsgdHlwZSBdICkge1xyXG5cdFx0XHRyZXR1cm4gZ2F0ZXdheUdlbmVyYWxbIHdoZW4gXVsgdHlwZSBdO1xyXG5cdFx0fVxyXG5cdFx0cmV0dXJuIGlzRW1wdHlSZXN1bHQ7XHJcblx0fTtcclxuXHJcblx0Y29uc3Qgc2V0UmVzdWx0TWVzc2FnZSA9ICgga2V5LCB2YWx1ZSApID0+IHtcclxuXHRcdHNldFZhbHVlSW5PYmplY3QoICdtZXNzYWdlcycsIGtleSwgdmFsdWUgKTtcclxuXHR9O1xyXG5cdGNvbnN0IGdldFJlc3VsdE1lc3NhZ2UgPSAoIGtleSApID0+IHtcclxuXHRcdHJldHVybiBnZXROb3RpZmljYXRpb25zKCAnbWVzc2FnZXMnLCBrZXksIGdhdGV3YXlzRGF0YS5tZXNzYWdlc1sga2V5IF0gKTtcclxuXHR9O1xyXG5cclxuXHRjb25zdCBHYXRld2F5Rm9vdGVyID0gPD5cclxuXHRcdHsgcmVuZGVyR2F0ZXdheVdpdGhQbGFjZWhvbGRlcihcclxuXHRcdFx0Z2F0ZXdheUdlbmVyYWwuZ2F0ZXdheSxcclxuXHRcdFx0eyBnYXRld2F5R2VuZXJhbCwgQ1VSUkVOVF9TQ0VOQVJJTywgY3VycmVudFNjZW5hcmlvIH0sXHJcblx0XHRcdCdtYWNyb3NMaXN0JyxcclxuXHRcdFx0PEJhc2VDb250cm9sXHJcblx0XHRcdFx0a2V5PVwicGF5bWVudF9yZXN1bHRfbWFjcm9zX2Jhc2VfY29udHJvbFwiXHJcblx0XHRcdD5cclxuXHRcdFx0XHQ8aDQ+XHJcblx0XHRcdFx0XHR7IF9fKCAnQXZhaWxhYmxlIG1hY3JvcyBsaXN0OiAnLCAnamV0LWZvcm0tYnVpbGRlcicgKSB9PGJyLz5cclxuXHRcdFx0XHRcdHsgX18oICclZ2F0ZXdheV9hbW91bnQlIC0gcGF5bWVudCBhbW91bnQgcmV0dXJuZWQgZnJvbSBnYXRld2F5IHRlbXBsYXRlOycsICdqZXQtZm9ybS1idWlsZGVyJyApIH08YnIvPlxyXG5cdFx0XHRcdFx0eyBfXyggJyVnYXRld2F5X3N0YXR1cyUgLSBwYXltZW50IHN0YXR1cyByZXR1cm5lZCBmcm9tIHBheW1lbnQgZ2F0ZXdheTsnLCAnamV0LWZvcm0tYnVpbGRlcicgKSB9PGJyLz5cclxuXHRcdFx0XHRcdHsgX18oICclZmllbGRfbmFtZSUgLSByZXBsYWNlIFwiZmllbGRfbmFtZVwiIHdpdGggYW55IGZpZWxkIG5hbWUgZnJvbSB0aGUgZm9ybTsnLCAnamV0LWZvcm0tYnVpbGRlcicgKSB9PGJyLz5cclxuXHRcdFx0XHQ8L2g0PlxyXG5cdFx0XHQ8L0Jhc2VDb250cm9sPiApIH1cclxuXHRcdDxUZXh0YXJlYUNvbnRyb2xcclxuXHRcdFx0a2V5PVwicGF5bWVudF9yZXN1bHRfbWVzc2FnZV9zdWNjZXNzXCJcclxuXHRcdFx0bGFiZWw9eyBsYWJlbCggJ21lc3NhZ2Vfc3VjY2VzcycgKSB9XHJcblx0XHRcdHZhbHVlPXsgZ2V0UmVzdWx0TWVzc2FnZSggJ3N1Y2Nlc3MnICkgfVxyXG5cdFx0XHRvbkNoYW5nZT17IG5ld1ZhbHVlID0+IHNldFJlc3VsdE1lc3NhZ2UoICdzdWNjZXNzJywgbmV3VmFsdWUgKSB9XHJcblx0XHQvPlxyXG5cdFx0PFRleHRhcmVhQ29udHJvbFxyXG5cdFx0XHRrZXk9XCJwYXltZW50X3Jlc3VsdF9tZXNzYWdlX2ZhaWxlZFwiXHJcblx0XHRcdGxhYmVsPXsgbGFiZWwoICdtZXNzYWdlX2ZhaWxlZCcgKSB9XHJcblx0XHRcdHZhbHVlPXsgZ2V0UmVzdWx0TWVzc2FnZSggJ2ZhaWxlZCcgKSB9XHJcblx0XHRcdG9uQ2hhbmdlPXsgbmV3VmFsdWUgPT4gc2V0UmVzdWx0TWVzc2FnZSggJ2ZhaWxlZCcsIG5ld1ZhbHVlICkgfVxyXG5cdFx0Lz5cclxuXHQ8Lz47XHJcblxyXG5cdHJldHVybiA8PlxyXG5cdFx0eyByZW5kZXJHYXRld2F5KCBnYXRld2F5R2VuZXJhbC5nYXRld2F5LCB7IHNldFZhbHVlSW5PYmplY3QsIGdldE5vdGlmaWNhdGlvbnMgfSApIH1cclxuXHRcdHsgKFxyXG5cdFx0XHQgIC0gMSA9PT0gZ2F0ZXdheVJlcXVlc3QuaWRcclxuXHRcdFx0ICB8fCBsb2FkaW5nR2F0ZXdheS5zdWNjZXNzXHJcblx0XHRcdCAgfHwgISBnYXRld2F5UmVxdWVzdC5pZC5pbmNsdWRlcyggZ2F0ZXdheUdlbmVyYWwuZ2F0ZXdheSApXHJcblx0XHQgICkgJiYgR2F0ZXdheUZvb3RlciB9XHJcblx0PC8+O1xyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjb21wb3NlKFxyXG5cdHdpdGhTZWxlY3QoICggLi4ucHJvcHMgKSA9PiAoXHJcblx0XHR7XHJcblx0XHRcdC4uLndpdGhTZWxlY3RHYXRld2F5cyggLi4ucHJvcHMgKSxcclxuXHRcdH1cclxuXHQpICksXHJcblx0d2l0aERpc3BhdGNoKCB3aXRoRGlzcGF0Y2hHYXRld2F5cyApLFxyXG4pKCBHYXRld2F5c0VkaXRvciApOyIsImNvbnN0IHsgY29tcG9zZSB9ID0gd3AuY29tcG9zZTtcclxuXHJcbmNvbnN0IHtcclxuXHQgICAgICB3aXRoU2VsZWN0LFxyXG5cdCAgICAgIHdpdGhEaXNwYXRjaCxcclxuICAgICAgfSA9IHdwLmRhdGE7XHJcbmNvbnN0IHtcclxuXHQgICAgICBfXyxcclxuICAgICAgfSA9IHdwLmkxOG47XHJcblxyXG5jb25zdCB7XHJcblx0ICAgICAgVGV4dENvbnRyb2wsXHJcblx0ICAgICAgU2VsZWN0Q29udHJvbCxcclxuXHQgICAgICB3aXRoTm90aWNlcyxcclxuICAgICAgfSA9IHdwLmNvbXBvbmVudHM7XHJcblxyXG5jb25zdCB7XHJcblx0ICAgICAgdXNlRWZmZWN0LFxyXG4gICAgICB9ID0gd3AuZWxlbWVudDtcclxuXHJcbmNvbnN0IHtcclxuXHQgICAgICByZW5kZXJHYXRld2F5LFxyXG4gICAgICB9ID0gSmV0RkJBY3Rpb25zO1xyXG5cclxuY29uc3Qge1xyXG5cdCAgICAgIHdpdGhTZWxlY3RHYXRld2F5cyxcclxuXHQgICAgICB3aXRoRGlzcGF0Y2hHYXRld2F5cyxcclxuICAgICAgfSA9IEpldEZCSG9va3M7XHJcblxyXG5jb25zdCB7XHJcblx0ICAgICAgVG9nZ2xlQ29udHJvbCxcclxuICAgICAgfSA9IEpldEZCQ29tcG9uZW50cztcclxuXHJcbmZ1bmN0aW9uIFBheXBhbE1haW4oIHtcclxuXHRzZXRHYXRld2F5UmVxdWVzdCxcclxuXHRnYXRld2F5U3BlY2lmaWMsXHJcblx0c2V0R2F0ZXdheVNwZWNpZmljLFxyXG5cdGdhdGV3YXlTY2VuYXJpbyxcclxuXHRzZXRHYXRld2F5U2NlbmFyaW8sXHJcblx0Z2V0U3BlY2lmaWNPckdsb2JhbCxcclxuXHRhZGRpdGlvbmFsU291cmNlR2F0ZXdheSxcclxuXHRzcGVjaWZpY0dhdGV3YXlMYWJlbCxcclxuXHRub3RpY2VPcGVyYXRpb25zLFxyXG5cdG5vdGljZVVJLFxyXG59ICkge1xyXG5cclxuXHRjb25zdCB7XHJcblx0XHQgICAgICBpZDogc2NlbmFyaW8gPSAnUEFZX05PVycsXHJcblx0ICAgICAgfSA9IGdhdGV3YXlTY2VuYXJpbztcclxuXHJcblx0dXNlRWZmZWN0KCAoKSA9PiB7XHJcblx0XHRzZXRHYXRld2F5UmVxdWVzdCggeyBpZDogc2NlbmFyaW8gfSApO1xyXG5cdH0sIFsgc2NlbmFyaW8gXSApO1xyXG5cclxuXHR1c2VFZmZlY3QoICgpID0+IHtcclxuXHRcdHNldEdhdGV3YXlSZXF1ZXN0KCB7IGlkOiBzY2VuYXJpbyB9ICk7XHJcblx0fSwgW10gKTtcclxuXHJcblx0cmV0dXJuIDw+XHJcblx0XHR7IG5vdGljZVVJIH1cclxuXHRcdDxUb2dnbGVDb250cm9sXHJcblx0XHRcdGNoZWNrZWQ9eyBnYXRld2F5U3BlY2lmaWMudXNlX2dsb2JhbCB9XHJcblx0XHRcdG9uQ2hhbmdlPXsgdXNlX2dsb2JhbCA9PiBzZXRHYXRld2F5U3BlY2lmaWMoIHsgdXNlX2dsb2JhbCB9ICkgfVxyXG5cdFx0PlxyXG5cdFx0XHR7IF9fKCAnVXNlJywgJ2pldC1mb3JtLWJ1aWxkZXInICkgKyAnICcgfVxyXG5cdFx0XHQ8YSBocmVmPXsgSmV0Rm9ybUVkaXRvckRhdGEuZ2xvYmFsX3NldHRpbmdzX3VybCArXHJcblx0XHRcdCcjcGF5bWVudHMtZ2F0ZXdheXNfX3BheXBhbCcgfT5cclxuXHRcdFx0XHR7IF9fKCAnR2xvYmFsIFNldHRpbmdzJywgJ2pldC1mb3JtLWJ1aWxkZXInICkgfVxyXG5cdFx0XHQ8L2E+XHJcblx0XHQ8L1RvZ2dsZUNvbnRyb2w+XHJcblx0XHQ8VGV4dENvbnRyb2xcclxuXHRcdFx0bGFiZWw9eyBzcGVjaWZpY0dhdGV3YXlMYWJlbCggJ2NsaWVudF9pZCcgKSB9XHJcblx0XHRcdGtleT1cInBheXBhbF9jbGllbnRfaWRfc2V0dGluZ1wiXHJcblx0XHRcdHZhbHVlPXsgZ2V0U3BlY2lmaWNPckdsb2JhbCggJ2NsaWVudF9pZCcgKSB9XHJcblx0XHRcdG9uQ2hhbmdlPXsgY2xpZW50X2lkID0+IHNldEdhdGV3YXlTcGVjaWZpYyggeyBjbGllbnRfaWQgfSApIH1cclxuXHRcdFx0ZGlzYWJsZWQ9eyBnYXRld2F5U3BlY2lmaWMudXNlX2dsb2JhbCB9XHJcblx0XHQvPlxyXG5cdFx0PFRleHRDb250cm9sXHJcblx0XHRcdGxhYmVsPXsgc3BlY2lmaWNHYXRld2F5TGFiZWwoICdzZWNyZXQnICkgfVxyXG5cdFx0XHRrZXk9XCJwYXlwYWxfc2VjcmV0X3NldHRpbmdcIlxyXG5cdFx0XHR2YWx1ZT17IGdldFNwZWNpZmljT3JHbG9iYWwoICdzZWNyZXQnICkgfVxyXG5cdFx0XHRvbkNoYW5nZT17IHNlY3JldCA9PiBzZXRHYXRld2F5U3BlY2lmaWMoIHsgc2VjcmV0IH0gKSB9XHJcblx0XHRcdGRpc2FibGVkPXsgZ2F0ZXdheVNwZWNpZmljLnVzZV9nbG9iYWwgfVxyXG5cdFx0Lz5cclxuXHRcdDxTZWxlY3RDb250cm9sXHJcblx0XHRcdGxhYmVsUG9zaXRpb249XCJzaWRlXCJcclxuXHRcdFx0bGFiZWw9eyBzcGVjaWZpY0dhdGV3YXlMYWJlbCggJ2dhdGV3YXlfdHlwZScgKSB9XHJcblx0XHRcdHZhbHVlPXsgc2NlbmFyaW8gfVxyXG5cdFx0XHRvbkNoYW5nZT17IGlkID0+IHtcclxuXHRcdFx0XHRzZXRHYXRld2F5U2NlbmFyaW8oIHsgaWQgfSApO1xyXG5cdFx0XHR9IH1cclxuXHRcdFx0b3B0aW9ucz17IGFkZGl0aW9uYWxTb3VyY2VHYXRld2F5LnNjZW5hcmlvcyB9XHJcblx0XHQvPlxyXG5cdFx0eyByZW5kZXJHYXRld2F5KCAncGF5cGFsJywgeyBub3RpY2VPcGVyYXRpb25zIH0sIHNjZW5hcmlvICkgfVxyXG5cdDwvPjtcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgY29tcG9zZShcclxuXHR3aXRoU2VsZWN0KCB3aXRoU2VsZWN0R2F0ZXdheXMgKSxcclxuXHR3aXRoRGlzcGF0Y2goIHdpdGhEaXNwYXRjaEdhdGV3YXlzICksXHJcblx0d2l0aE5vdGljZXMsXHJcbikoIFBheXBhbE1haW4gKTtcclxuXHJcblxyXG4iLCJjb25zdCB7IGNvbXBvc2UgfSA9IHdwLmNvbXBvc2U7XHJcblxyXG5jb25zdCB7XHJcblx0d2l0aFNlbGVjdCxcclxuXHR3aXRoRGlzcGF0Y2gsXHJcbn0gPSB3cC5kYXRhO1xyXG5cclxuY29uc3Qge1xyXG5cdFRleHRDb250cm9sLFxyXG5cdFNlbGVjdENvbnRyb2wsXHJcblx0QmFzZUNvbnRyb2wsXHJcblx0UmFkaW9Db250cm9sLFxyXG59ID0gd3AuY29tcG9uZW50cztcclxuXHJcbmNvbnN0IHtcclxuXHR3aXRoU2VsZWN0Rm9ybUZpZWxkcyxcclxuXHR3aXRoU2VsZWN0R2F0ZXdheXMsXHJcblx0d2l0aERpc3BhdGNoR2F0ZXdheXMsXHJcblx0d2l0aFNlbGVjdEFjdGlvbnNCeVR5cGUsXHJcbn0gPSBKZXRGQkhvb2tzO1xyXG5cclxuY29uc3QgeyBHYXRld2F5RmV0Y2hCdXR0b24gfSA9IEpldEZCQ29tcG9uZW50cztcclxuXHJcbmZ1bmN0aW9uIFBheU5vd1NjZW5hcmlvKCB7XHJcblx0Z2F0ZXdheUdlbmVyYWwsXHJcblx0Z2F0ZXdheVNwZWNpZmljLFxyXG5cdHNldEdhdGV3YXksXHJcblx0c2V0R2F0ZXdheVNwZWNpZmljLFxyXG5cdGZvcm1GaWVsZHMsXHJcblx0Z2V0U3BlY2lmaWNPckdsb2JhbCxcclxuXHRsb2FkaW5nR2F0ZXdheSxcclxuXHRzY2VuYXJpb1NvdXJjZSxcclxuXHRub3RpY2VPcGVyYXRpb25zLFxyXG5cdHNjZW5hcmlvTGFiZWwsXHJcblx0Z2xvYmFsR2F0ZXdheUxhYmVsLFxyXG59ICkge1xyXG5cclxuXHRjb25zdCBkaXNwbGF5Tm90aWNlID0gc3RhdHVzID0+IHJlc3BvbnNlID0+IHtcclxuXHRcdG5vdGljZU9wZXJhdGlvbnMucmVtb3ZlTm90aWNlKCBnYXRld2F5R2VuZXJhbC5nYXRld2F5ICk7XHJcblx0XHRub3RpY2VPcGVyYXRpb25zLmNyZWF0ZU5vdGljZSgge1xyXG5cdFx0XHRzdGF0dXMsXHJcblx0XHRcdGNvbnRlbnQ6IHJlc3BvbnNlLm1lc3NhZ2UsXHJcblx0XHRcdGlkOiBnYXRld2F5R2VuZXJhbC5nYXRld2F5LFxyXG5cdFx0fSApO1xyXG5cdH07XHJcblxyXG5cdHJldHVybiA8PlxyXG5cdFx0PEJhc2VDb250cm9sXHJcblx0XHRcdGxhYmVsPXsgc2NlbmFyaW9MYWJlbCggJ2ZldGNoX2J1dHRvbl9sYWJlbCcgKSB9XHJcblx0XHQ+XHJcblx0XHRcdDxkaXYgY2xhc3NOYW1lPVwiamV0LXVzZXItZmllbGRzLW1hcF9fbGlzdFwiPlxyXG5cdFx0XHRcdHsgKCAhIGxvYWRpbmdHYXRld2F5LnN1Y2Nlc3MgJiYgISBsb2FkaW5nR2F0ZXdheS5sb2FkaW5nICkgJiYgPHNwYW5cclxuXHRcdFx0XHRcdGNsYXNzTmFtZT17ICdkZXNjcmlwdGlvbi1jb250cm9scycgfVxyXG5cdFx0XHRcdD5cclxuXHRcdFx0XHRcdHsgc2NlbmFyaW9MYWJlbCggJ2ZldGNoX2J1dHRvbl9oZWxwJyApIH1cclxuXHRcdFx0XHQ8L3NwYW4+IH1cclxuXHRcdFx0XHQ8R2F0ZXdheUZldGNoQnV0dG9uXHJcblx0XHRcdFx0XHRpbml0aWFsTGFiZWw9eyBzY2VuYXJpb0xhYmVsKCAnZmV0Y2hfYnV0dG9uJyApIH1cclxuXHRcdFx0XHRcdGxhYmVsPXsgc2NlbmFyaW9MYWJlbCggJ2ZldGNoX2J1dHRvbl9yZXRyeScgKSB9XHJcblx0XHRcdFx0XHRhcGlBcmdzPXsge1xyXG5cdFx0XHRcdFx0XHQuLi5zY2VuYXJpb1NvdXJjZS5mZXRjaCxcclxuXHRcdFx0XHRcdFx0ZGF0YToge1xyXG5cdFx0XHRcdFx0XHRcdGNsaWVudF9pZDogZ2V0U3BlY2lmaWNPckdsb2JhbCggJ2NsaWVudF9pZCcgKSxcclxuXHRcdFx0XHRcdFx0XHRzZWNyZXQ6IGdldFNwZWNpZmljT3JHbG9iYWwoICdzZWNyZXQnICksXHJcblx0XHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHR9IH1cclxuXHRcdFx0XHRcdG9uRmFpbD17IGRpc3BsYXlOb3RpY2UoICdlcnJvcicgKSB9XHJcblx0XHRcdFx0Lz5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQ8L0Jhc2VDb250cm9sPlxyXG5cdFx0eyBsb2FkaW5nR2F0ZXdheS5zdWNjZXNzICYmIDw+XHJcblx0XHRcdDxUZXh0Q29udHJvbFxyXG5cdFx0XHRcdGxhYmVsPXsgc2NlbmFyaW9MYWJlbCggJ2N1cnJlbmN5JyApIH1cclxuXHRcdFx0XHRrZXk9J3BheXBhbF9jdXJyZW5jeV9jb2RlX3NldHRpbmcnXHJcblx0XHRcdFx0dmFsdWU9eyBnYXRld2F5U3BlY2lmaWMuY3VycmVuY3kgfVxyXG5cdFx0XHRcdG9uQ2hhbmdlPXsgY3VycmVuY3kgPT4gc2V0R2F0ZXdheVNwZWNpZmljKCB7IGN1cnJlbmN5IH0gKSB9XHJcblx0XHRcdC8+XHJcblx0XHRcdDxTZWxlY3RDb250cm9sXHJcblx0XHRcdFx0bGFiZWw9eyBnbG9iYWxHYXRld2F5TGFiZWwoICdwcmljZV9maWVsZCcgKSB9XHJcblx0XHRcdFx0a2V5PXsgJ2Zvcm1fZmllbGRzX3ByaWNlX2ZpZWxkJyB9XHJcblx0XHRcdFx0dmFsdWU9eyBnYXRld2F5R2VuZXJhbC5wcmljZV9maWVsZCB9XHJcblx0XHRcdFx0bGFiZWxQb3NpdGlvbj0nc2lkZSdcclxuXHRcdFx0XHRvbkNoYW5nZT17IHByaWNlX2ZpZWxkID0+IHtcclxuXHRcdFx0XHRcdHNldEdhdGV3YXkoIHsgcHJpY2VfZmllbGQgfSApO1xyXG5cdFx0XHRcdH0gfVxyXG5cdFx0XHRcdG9wdGlvbnM9eyBmb3JtRmllbGRzIH1cclxuXHRcdFx0Lz5cclxuXHRcdDwvPiB9XHJcblx0PC8+O1xyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjb21wb3NlKFxyXG5cdHdpdGhTZWxlY3QoICggLi4ucHJvcHMgKSA9PiAoXHJcblx0XHR7XHJcblx0XHRcdC4uLndpdGhTZWxlY3RGb3JtRmllbGRzKCBbXSwgJy0tJyApKCAuLi5wcm9wcyApLFxyXG5cdFx0XHQuLi53aXRoU2VsZWN0R2F0ZXdheXMoIC4uLnByb3BzICksXHJcblx0XHR9XHJcblx0KSApLFxyXG5cdHdpdGhEaXNwYXRjaCggKCAuLi5wcm9wcyApID0+IChcclxuXHRcdHtcclxuXHRcdFx0Li4ud2l0aERpc3BhdGNoR2F0ZXdheXMoIC4uLnByb3BzICksXHJcblx0XHR9XHJcblx0KSApLFxyXG4pKCBQYXlOb3dTY2VuYXJpbyApOyIsImltcG9ydCBQbHVnaW5HYXRld2F5cyBmcm9tICcuL3JlbmRlcic7XHJcblxyXG5jb25zdCB7IF9fIH0gPSB3cC5pMThuO1xyXG5cclxuY29uc3QgYmFzZSA9IHtcclxuXHRuYW1lOiAnamYtZ2F0ZXdheXMtcGFuZWwnLFxyXG5cdHRpdGxlOiBfXyggJ0dhdGV3YXlzIFNldHRpbmdzJywgJ2pldC1mb3JtLWJ1aWxkZXInICksXHJcbn07XHJcblxyXG5jb25zdCBzZXR0aW5ncyA9IHtcclxuXHRyZW5kZXI6IFBsdWdpbkdhdGV3YXlzLFxyXG5cdGljb246ICdtb25leS1hbHQnLFxyXG59O1xyXG5cclxuZXhwb3J0IGRlZmF1bHQge1xyXG5cdGJhc2UsXHJcblx0c2V0dGluZ3MsXHJcbn07IiwiaW1wb3J0IEdhdGV3YXlzRWRpdG9yIGZyb20gJy4uL2NvbXBvbmVudHMvZ2F0ZXdheXMtZWRpdG9yJztcclxuXHJcbmNvbnN0IHsgQnV0dG9uLCBUb2dnbGVDb250cm9sIH0gPSB3cC5jb21wb25lbnRzO1xyXG5cclxuY29uc3QgeyB3aXRoRGlzcGF0Y2gsIHdpdGhTZWxlY3QgfSA9IHdwLmRhdGE7XHJcblxyXG5jb25zdCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSA9IHdwLmVsZW1lbnQ7XHJcblxyXG5jb25zdCB7IF9fIH0gPSB3cC5pMThuO1xyXG5cclxuY29uc3QgeyBjb21wb3NlIH0gPSB3cC5jb21wb3NlO1xyXG5cclxuY29uc3QgeyBBY3Rpb25Nb2RhbCB9ID0gSmV0RkJDb21wb25lbnRzO1xyXG5cclxuY29uc3Qge1xyXG5cdHdpdGhEaXNwYXRjaEdhdGV3YXlzLFxyXG5cdHdpdGhTZWxlY3RHYXRld2F5cyxcclxuXHR1c2VNZXRhU3RhdGUsXHJcbn0gPSBKZXRGQkhvb2tzO1xyXG5cclxuY29uc3QgZ2F0ZXdheXNEYXRhID0gd2luZG93LkpldEZvcm1FZGl0b3JEYXRhLmdhdGV3YXlzO1xyXG5cclxuY29uc3QgTU9ERV9TSU5HTEUgPSAnc2luZ2xlJztcclxuY29uc3QgTU9ERV9NQU5VQUwgPSAnbWFudWFsJztcclxuXHJcbmNvbnN0IGdldEdhdGV3YXlMYWJlbCA9ICggdHlwZSApID0+IHtcclxuXHRyZXR1cm4gKFxyXG5cdFx0Z2F0ZXdheXNEYXRhLmxpc3QuZmluZCggZWwgPT4gZWwudmFsdWUgPT09IHR5cGUgKT8ubGFiZWwgfHwgdHlwZVxyXG5cdCk7XHJcbn07XHJcblxyXG5mdW5jdGlvbiBQbHVnaW5HYXRld2F5cyggcHJvcHMgKSB7XHJcblxyXG5cdGNvbnN0IHtcclxuXHRcdHNldEdhdGV3YXksXHJcblx0XHRzZXRHYXRld2F5U2NlbmFyaW8sXHJcblx0XHRjbGVhckdhdGV3YXksXHJcblx0XHRjbGVhclNjZW5hcmlvLFxyXG5cdFx0Z2F0ZXdheUdlbmVyYWwsXHJcblx0XHRnYXRld2F5U2NlbmFyaW8sXHJcblx0fSA9IHByb3BzO1xyXG5cclxuXHRjb25zdCBbIG1ldGEsIHNldE1ldGEgXSA9IHVzZU1ldGFTdGF0ZSggJ19qZl9nYXRld2F5cycgKTtcclxuXHJcblx0Y29uc3QgWyBpc0VkaXQsIHNldEVkaXQgXSA9IHVzZVN0YXRlKCBmYWxzZSApO1xyXG5cclxuXHQvLyBVSS1zZWxlY3RlZCB2YWx1ZSAoY2FuIGJlIFwibWFudWFsXCIgd2l0aG91dCB0b3VjaGluZyBtZXRhLmdhdGV3YXkpXHJcblx0Y29uc3QgWyBzZWxlY3RlZEdhdGV3YXksIHNldFNlbGVjdGVkR2F0ZXdheSBdID0gdXNlU3RhdGUoIG1ldGE/LmdhdGV3YXkgPz8gJ25vbmUnICk7XHJcblxyXG5cdC8vIHdoaWNoIGdhdGV3YXkgaXMgY3VycmVudGx5IGJlaW5nIGVkaXRlZCBpbiBtb2RhbFxyXG5cdGNvbnN0IFsgZWRpdEdhdGV3YXksIHNldEVkaXRHYXRld2F5IF0gPSB1c2VTdGF0ZSggbnVsbCApO1xyXG5cclxuXHRjb25zdCBpc01hbnVhbE1vZGUgPSBtZXRhPy5tb2RlID09PSBNT0RFX01BTlVBTDtcclxuXHJcblx0Ly8ga2VlcCBVSSBzZWxlY3RlZCBpbiBzeW5jIHdpdGggc2F2ZWQgbWV0YVxyXG5cdHVzZUVmZmVjdCggKCkgPT4ge1xyXG5cdFx0aWYgKCBpc01hbnVhbE1vZGUgKSB7XHJcblx0XHRcdHNldFNlbGVjdGVkR2F0ZXdheSggTU9ERV9NQU5VQUwgKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0c2V0U2VsZWN0ZWRHYXRld2F5KCBtZXRhPy5nYXRld2F5ID8/ICdub25lJyApO1xyXG5cdH0sIFsgbWV0YT8uZ2F0ZXdheSwgbWV0YT8ubW9kZSBdICk7XHJcblxyXG5cdC8vIGJpbmQgZWRpdG9yIHN0b3JlIHdoZW4gbW9kYWwgaXMgb3BlblxyXG5cdHVzZUVmZmVjdCggKCkgPT4ge1xyXG5cdFx0aWYgKCAhaXNFZGl0ICkge1xyXG5cdFx0XHRjbGVhckdhdGV3YXkoKTtcclxuXHRcdFx0Y2xlYXJTY2VuYXJpbygpO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0Y29uc3QgZ3cgPSBlZGl0R2F0ZXdheSB8fCBtZXRhPy5nYXRld2F5O1xyXG5cclxuXHRcdGlmICggIWd3IHx8IGd3ID09PSAnbm9uZScgKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHQvLyBXaGVuIG1hbnVhbCBtb2RlIGlzIGFjdGl2ZSwgbW9kYWwgb3BlbnMgZm9yIFwiZWRpdEdhdGV3YXlcIiBvbmx5XHJcblx0XHRpZiAoIGlzTWFudWFsTW9kZSAmJiAhZWRpdEdhdGV3YXkgKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHRzZXRHYXRld2F5KCB7IC4uLm1ldGEsIGdhdGV3YXk6IGd3IH0gKTtcclxuXHRcdHNldEdhdGV3YXlTY2VuYXJpbyggbWV0YT8uWyBndyBdPy5zY2VuYXJpbyApO1xyXG5cdH0sIFsgaXNFZGl0LCBlZGl0R2F0ZXdheSBdICk7XHJcblxyXG5cdGNvbnN0IGNsb3NlTW9kYWwgPSAoIG5ld01ldGEgPSBmYWxzZSApID0+IHtcclxuXHRcdGlmICggZmFsc2UgIT09IG5ld01ldGEgKSB7XHJcblx0XHRcdHNldE1ldGEoIG5ld01ldGEgKTtcclxuXHRcdH1cclxuXHRcdHNldEVkaXQoIGZhbHNlICk7XHJcblx0XHRzZXRFZGl0R2F0ZXdheSggbnVsbCApO1xyXG5cdH07XHJcblxyXG5cdGNvbnN0IG9wdGlvbnMgPSBbXHJcblx0XHR7IGxhYmVsOiAnTm9uZScsIHZhbHVlOiAnbm9uZScgfSxcclxuXHRcdC4uLmdhdGV3YXlzRGF0YS5saXN0LFxyXG5cdFx0eyBsYWJlbDogJ01hbnVhbCcsIHZhbHVlOiBNT0RFX01BTlVBTCB9LFxyXG5cdF07XHJcblxyXG5cdHJldHVybiAoXHJcblx0XHQ8PlxyXG5cdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cImpmYi1nYXRld2F5c1wiPlxyXG5cdFx0XHRcdHsgb3B0aW9ucy5tYXAoICggb3B0ICkgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc3QgaXNTZWxlY3RlZCA9IHNlbGVjdGVkR2F0ZXdheSA9PT0gb3B0LnZhbHVlO1xyXG5cclxuXHRcdFx0XHRcdC8vIEluIG1hbnVhbCBtb2RlOiBzaG93IEVkaXQgdW5kZXIgRUFDSCBnYXRld2F5XHJcblx0XHRcdFx0XHQvLyBPdGhlcndpc2U6IHNob3cgRWRpdCBvbmx5IHVuZGVyIHRoZSBzZWxlY3RlZCBnYXRld2F5XHJcblx0XHRcdFx0XHRjb25zdCBjYW5FZGl0ID1cclxuXHRcdFx0XHRcdFx0b3B0LnZhbHVlICE9PSAnbm9uZSdcclxuXHRcdFx0XHRcdFx0JiYgb3B0LnZhbHVlICE9PSBNT0RFX01BTlVBTFxyXG5cdFx0XHRcdFx0XHQmJiAoIGlzTWFudWFsTW9kZSB8fCBpc1NlbGVjdGVkICk7XHJcblxyXG5cdFx0XHRcdFx0Y29uc3QgY2FuVG9nZ2xlID1cclxuXHRcdFx0XHRcdFx0aXNNYW51YWxNb2RlXHJcblx0XHRcdFx0XHRcdCYmIG9wdC52YWx1ZSAhPT0gJ25vbmUnXHJcblx0XHRcdFx0XHRcdCYmIG9wdC52YWx1ZSAhPT0gTU9ERV9NQU5VQUw7XHJcblxyXG5cdFx0XHRcdFx0cmV0dXJuIChcclxuXHRcdFx0XHRcdFx0PGRpdiBrZXk9eyBvcHQudmFsdWUgfSBjbGFzc05hbWU9XCJqZmItZ2F0ZXdheXNfX2l0ZW1cIj5cclxuXHRcdFx0XHRcdFx0XHQ8bGFiZWwgY2xhc3NOYW1lPVwiamZiLWdhdGV3YXlzX19vcHRpb25cIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxpbnB1dFxyXG5cdFx0XHRcdFx0XHRcdFx0XHR0eXBlPVwicmFkaW9cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRuYW1lPVwiamZiX2dhdGV3YXlcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZT17IG9wdC52YWx1ZSB9XHJcblx0XHRcdFx0XHRcdFx0XHRcdGNoZWNrZWQ9eyBpc1NlbGVjdGVkIH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0b25DaGFuZ2U9eyAoKSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0c2V0U2VsZWN0ZWRHYXRld2F5KCBvcHQudmFsdWUgKTtcclxuXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gTWFudWFsIG1vZGUgc2VsZWN0ZWRcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIG9wdC52YWx1ZSA9PT0gTU9ERV9NQU5VQUwgKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRzZXRNZXRhKCB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC4uLm1ldGEsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG1vZGU6IE1PREVfTUFOVUFMLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSApO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gU2luZ2xlIG1vZGUgc2VsZWN0ZWRcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRzZXRNZXRhKCB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuLi5tZXRhLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bW9kZTogTU9ERV9TSU5HTEUsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRnYXRld2F5OiBvcHQudmFsdWUsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSApO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR9IH1cclxuXHRcdFx0XHRcdFx0XHRcdC8+XHJcblx0XHRcdFx0XHRcdFx0XHQ8c3Bhbj57IG9wdC5sYWJlbCB9PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdDwvbGFiZWw+PGJyLz5cclxuXHJcblx0XHRcdFx0XHRcdFx0eyBjYW5FZGl0ICYmIChcclxuXHRcdFx0XHRcdFx0XHRcdDxCdXR0b25cclxuXHRcdFx0XHRcdFx0XHRcdFx0b25DbGljaz17ICgpID0+IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRzZXRFZGl0R2F0ZXdheSggb3B0LnZhbHVlICk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0c2V0RWRpdCggdHJ1ZSApO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR9IH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0aWNvbj17ICdhZG1pbi10b29scycgfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRzdHlsZT17IHsgbWFyZ2luOiAnOHB4IDAnIH0gfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRpc1NlY29uZGFyeVxyXG5cdFx0XHRcdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHR7IF9fKCAnRWRpdCcsICdqZXQtZm9ybS1idWlsZGVyJyApIH1cclxuXHRcdFx0XHRcdFx0XHRcdDwvQnV0dG9uPlxyXG5cdFx0XHRcdFx0XHRcdCkgfVxyXG5cclxuXHRcdFx0XHRcdFx0XHR7IGNhblRvZ2dsZSAmJiAoXHJcblx0XHRcdFx0XHRcdFx0XHQ8VG9nZ2xlQ29udHJvbFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRsYWJlbD17IF9fKCAnU2hvdyBvbiBmcm9udGVuZCcsICdqZXQtZm9ybS1idWlsZGVyJyApIH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0Y2hlY2tlZD17ICEhbWV0YT8uWyBvcHQudmFsdWUgXT8uc2hvd19vbl9mcm9udCB9XHJcblx0XHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlPXsgKCB2YWx1ZSApID0+IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRzZXRNZXRhKCB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuLi5tZXRhLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0WyBvcHQudmFsdWUgXToge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuLi4oIG1ldGE/Llsgb3B0LnZhbHVlIF0gfHwge30gKSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c2hvd19vbl9mcm9udDogdmFsdWUsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0gKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0fSB9XHJcblx0XHRcdFx0XHRcdFx0XHRcdHN0eWxlPXsgeyBtYXJnaW46ICc4cHggMCcgfSB9XHJcblx0XHRcdFx0XHRcdFx0XHQvPlxyXG5cdFx0XHRcdFx0XHRcdCkgfVxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdCk7XHJcblx0XHRcdFx0fSApIH1cclxuXHRcdFx0PC9kaXY+XHJcblxyXG5cdFx0XHR7IGlzRWRpdCAmJiAoXHJcblx0XHRcdFx0PEFjdGlvbk1vZGFsXHJcblx0XHRcdFx0XHRjbGFzc05hbWVzPXsgWyAnd2lkdGgtNjAnIF0gfVxyXG5cdFx0XHRcdFx0b25SZXF1ZXN0Q2xvc2U9eyAoKSA9PiBjbG9zZU1vZGFsKCkgfVxyXG5cdFx0XHRcdFx0b25DYW5jZWxDbGljaz17ICgpID0+IGNsb3NlTW9kYWwoKSB9XHJcblx0XHRcdFx0XHRvblVwZGF0ZUNsaWNrPXsgKCkgPT4gY2xvc2VNb2RhbCgge1xyXG5cdFx0XHRcdFx0XHQuLi5nYXRld2F5R2VuZXJhbCxcclxuXHRcdFx0XHRcdFx0WyBnYXRld2F5R2VuZXJhbC5nYXRld2F5IF06IHtcclxuXHRcdFx0XHRcdFx0XHQuLi4oIGdhdGV3YXlHZW5lcmFsWyBnYXRld2F5R2VuZXJhbC5nYXRld2F5IF0gfHwge30gKSxcclxuXHRcdFx0XHRcdFx0XHRzY2VuYXJpbzogZ2F0ZXdheVNjZW5hcmlvLFxyXG5cdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0fSApIH1cclxuXHRcdFx0XHRcdHRpdGxlPXsgYEVkaXQgJHsgZ2V0R2F0ZXdheUxhYmVsKCBlZGl0R2F0ZXdheSB8fCBtZXRhPy5nYXRld2F5ICkgfSBTZXR0aW5nc2AgfVxyXG5cdFx0XHRcdD5cclxuXHRcdFx0XHRcdDxHYXRld2F5c0VkaXRvci8+XHJcblx0XHRcdFx0PC9BY3Rpb25Nb2RhbD5cclxuXHRcdFx0KSB9XHJcblx0XHQ8Lz5cclxuXHQpO1xyXG59XHJcblxyXG5leHBvcnQgZGVmYXVsdCBjb21wb3NlKFxyXG5cdHdpdGhEaXNwYXRjaCggd2l0aERpc3BhdGNoR2F0ZXdheXMgKSxcclxuXHR3aXRoU2VsZWN0KCB3aXRoU2VsZWN0R2F0ZXdheXMgKSxcclxuKSggUGx1Z2luR2F0ZXdheXMgKTtcclxuIiwibW9kdWxlLmV4cG9ydHMgPSB3aW5kb3dbXCJSZWFjdFwiXTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiaW1wb3J0IFBheXBhbE1haW4gZnJvbSAnLi9wYXlwYWwvbWFpbic7XHJcbmltcG9ydCBQYXlOb3dTY2VuYXJpbyBmcm9tICcuL3BheXBhbC9wYXktbm93LXNjZW5hcmlvJztcclxuaW1wb3J0IGdhdGV3YXlQbHVnaW4gZnJvbSAnLi9wbHVnaW4nO1xyXG5cclxuY29uc3Qge1xyXG5cdCAgICAgIHJlZ2lzdGVyR2F0ZXdheSxcclxuICAgICAgfSA9IEpldEZCQWN0aW9ucztcclxuXHJcbmNvbnN0IHtcclxuXHQgICAgICBhZGRGaWx0ZXIsXHJcbiAgICAgIH0gPSB3cC5ob29rcztcclxuXHJcbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XHJcblxyXG5jb25zdCBnYXRld2F5SUQgPSAncGF5cGFsJztcclxuXHJcbnJlZ2lzdGVyR2F0ZXdheShcclxuXHRnYXRld2F5SUQsXHJcblx0UGF5cGFsTWFpbixcclxuKTtcclxuXHJcbnJlZ2lzdGVyR2F0ZXdheShcclxuXHRnYXRld2F5SUQsXHJcblx0UGF5Tm93U2NlbmFyaW8sXHJcblx0J1BBWV9OT1cnLFxyXG4pO1xyXG5cclxuYWRkRmlsdGVyKFxyXG5cdCdqZXQuZmIucmVnaXN0ZXIucGx1Z2luLmpmLXZhbGlkYXRpb24tcGFuZWwuYWZ0ZXInLFxyXG5cdCdqZXQtZm9ybS1idWlsZGVyL2dhdGV3YXlzJyxcclxuXHRmdW5jdGlvbiAoIHBsdWdpbnMgKSB7XHJcblx0XHRwbHVnaW5zLnB1c2goIGdhdGV3YXlQbHVnaW4gKTtcclxuXHJcblx0XHRyZXR1cm4gcGx1Z2lucztcclxuXHR9LFxyXG4pOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBR0E7QUFBQTtBQUFBO0FBQUE7QUFHQTtBQUFBO0FBVUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFJQTtBQUNBO0FBQUE7QUFBQTtBQU9BO0FBRUE7QUFHQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7OztBQ3RIQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBRUE7QUFHQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFDQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBRUE7QUFFQTs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNqR0E7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQUE7QUFFQTtBQUFBO0FBRUE7QUFBQTtBQUtBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFNQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBQUE7QUFJQTtBQUVBO0FBR0E7QUFDQTtBQUNBO0FBSUE7QUFDQTs7Ozs7Ozs7Ozs7Ozs7O0FDckdBO0FBRUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNqQkE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFFQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBSUE7QUFDQTtBQUdBO0FBRUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUVBO0FBS0E7QUFLQTtBQUVBO0FBQ0E7QUFDQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUNBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUFBO0FBR0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFLQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBTUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBTUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUFBO0FBV0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQVVBO0FBS0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBT0E7QUFFQTs7Ozs7Ozs7OztBQ2xTQTs7Ozs7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDdkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDUEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUNQQTs7Ozs7QUNBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7QUNOQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQ0E7QUFFQTtBQUFBO0FBQUE7QUFFQTtBQUVBO0FBS0E7QUFNQTtBQUlBO0FBRUE7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL2pmYi1nYXRld2F5cy8uL2VkaXRvci9jb21wb25lbnRzL2dhdGV3YXlzLWVkaXRvci5qcyIsIndlYnBhY2s6Ly9qZmItZ2F0ZXdheXMvLi9lZGl0b3IvcGF5cGFsL21haW4uanMiLCJ3ZWJwYWNrOi8vamZiLWdhdGV3YXlzLy4vZWRpdG9yL3BheXBhbC9wYXktbm93LXNjZW5hcmlvLmpzIiwid2VicGFjazovL2pmYi1nYXRld2F5cy8uL2VkaXRvci9wbHVnaW4vaW5kZXguanMiLCJ3ZWJwYWNrOi8vamZiLWdhdGV3YXlzLy4vZWRpdG9yL3BsdWdpbi9yZW5kZXIuanMiLCJ3ZWJwYWNrOi8vamZiLWdhdGV3YXlzL2V4dGVybmFsIHdpbmRvdyBcIlJlYWN0XCIiLCJ3ZWJwYWNrOi8vamZiLWdhdGV3YXlzL3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL2pmYi1nYXRld2F5cy93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9qZmItZ2F0ZXdheXMvd2VicGFjay9ydW50aW1lL2RlZmluZSBwcm9wZXJ0eSBnZXR0ZXJzIiwid2VicGFjazovL2pmYi1nYXRld2F5cy93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL2pmYi1nYXRld2F5cy93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL2pmYi1nYXRld2F5cy8uL2VkaXRvci9tYWluLmpzIl0sInNvdXJjZXNDb250ZW50IjpbImNvbnN0IHtcclxuXHRnYXRld2F5QXR0cixcclxuXHRyZW5kZXJHYXRld2F5LFxyXG5cdHJlbmRlckdhdGV3YXlXaXRoUGxhY2Vob2xkZXIsXHJcbn0gPSBKZXRGQkFjdGlvbnM7XHJcblxyXG5jb25zdCB7IF9fIH0gPSB3cC5pMThuO1xyXG5cclxuY29uc3Qge1xyXG5cdFRleHRhcmVhQ29udHJvbCxcclxuXHRCYXNlQ29udHJvbCxcclxufSA9IHdwLmNvbXBvbmVudHM7XHJcblxyXG5jb25zdCB7XHJcblx0d2l0aFNlbGVjdCxcclxuXHR3aXRoRGlzcGF0Y2gsXHJcbn0gPSB3cC5kYXRhO1xyXG5cclxuY29uc3QgeyBjb21wb3NlIH0gPSB3cC5jb21wb3NlO1xyXG5cclxuXHJcbmNvbnN0IHtcclxuXHR3aXRoU2VsZWN0R2F0ZXdheXMsXHJcblx0d2l0aERpc3BhdGNoR2F0ZXdheXMsXHJcbn0gPSBKZXRGQkhvb2tzO1xyXG5cclxuY29uc3QgZ2F0ZXdheXNEYXRhID0gZ2F0ZXdheUF0dHIoKTtcclxuY29uc3QgbGFiZWwgPSBnYXRld2F5QXR0ciggJ2xhYmVscycgKTtcclxuXHJcbmZ1bmN0aW9uIEdhdGV3YXlzRWRpdG9yKCB7XHJcblx0Z2F0ZXdheUdlbmVyYWwsXHJcblx0c2V0R2F0ZXdheUlubmVyLFxyXG5cdGxvYWRpbmdHYXRld2F5LFxyXG5cdGdhdGV3YXlSZXF1ZXN0LFxyXG5cdENVUlJFTlRfU0NFTkFSSU8sXHJcblx0Y3VycmVudFNjZW5hcmlvLFxyXG59ICkge1xyXG5cclxuXHQvKipcclxuXHQgKiBVc2VkIGZvciBzZXQgbm90aWZpY2F0aW9ucyBhbmQgZ2F0ZXdheSB0eXBlIHNldHRpbmdzXHJcblx0ICpcclxuXHQgKiBAcGFyYW0gd2hlblxyXG5cdCAqIEBwYXJhbSB0eXBlXHJcblx0ICogQHBhcmFtIG5ld1ZhbHVlXHJcblx0ICovXHJcblx0Y29uc3Qgc2V0VmFsdWVJbk9iamVjdCA9ICggd2hlbiwgdHlwZSwgbmV3VmFsdWUgKSA9PiB7XHJcblx0XHRzZXRHYXRld2F5SW5uZXIoIHtcclxuXHRcdFx0a2V5OiB3aGVuLFxyXG5cdFx0XHR2YWx1ZToge1xyXG5cdFx0XHRcdFsgdHlwZSBdOiBuZXdWYWx1ZSxcclxuXHRcdFx0fSxcclxuXHRcdH0gKTtcclxuXHR9O1xyXG5cdC8qKlxyXG5cdCAqIFVzZWQgZm9yIGdldCBub3RpZmljYXRpb25zIGFuZCBnYXRld2F5IHR5cGUgc2V0dGluZ3NcclxuXHQgKlxyXG5cdCAqIEBwYXJhbSB3aGVuXHJcblx0ICogQHBhcmFtIHR5cGVcclxuXHQgKiBAcGFyYW0gaXNFbXB0eVJlc3VsdFxyXG5cdCAqIEByZXR1cm5zIHtib29sZWFufCp9XHJcblx0ICovXHJcblx0Y29uc3QgZ2V0Tm90aWZpY2F0aW9ucyA9ICggd2hlbiwgdHlwZSwgaXNFbXB0eVJlc3VsdCA9IGZhbHNlICkgPT4ge1xyXG5cdFx0aWYgKCBnYXRld2F5R2VuZXJhbFsgd2hlbiBdICYmIGdhdGV3YXlHZW5lcmFsWyB3aGVuIF1bIHR5cGUgXSApIHtcclxuXHRcdFx0cmV0dXJuIGdhdGV3YXlHZW5lcmFsWyB3aGVuIF1bIHR5cGUgXTtcclxuXHRcdH1cclxuXHRcdHJldHVybiBpc0VtcHR5UmVzdWx0O1xyXG5cdH07XHJcblxyXG5cdGNvbnN0IHNldFJlc3VsdE1lc3NhZ2UgPSAoIGtleSwgdmFsdWUgKSA9PiB7XHJcblx0XHRzZXRWYWx1ZUluT2JqZWN0KCAnbWVzc2FnZXMnLCBrZXksIHZhbHVlICk7XHJcblx0fTtcclxuXHRjb25zdCBnZXRSZXN1bHRNZXNzYWdlID0gKCBrZXkgKSA9PiB7XHJcblx0XHRyZXR1cm4gZ2V0Tm90aWZpY2F0aW9ucyggJ21lc3NhZ2VzJywga2V5LCBnYXRld2F5c0RhdGEubWVzc2FnZXNbIGtleSBdICk7XHJcblx0fTtcclxuXHJcblx0Y29uc3QgR2F0ZXdheUZvb3RlciA9IDw+XHJcblx0XHR7IHJlbmRlckdhdGV3YXlXaXRoUGxhY2Vob2xkZXIoXHJcblx0XHRcdGdhdGV3YXlHZW5lcmFsLmdhdGV3YXksXHJcblx0XHRcdHsgZ2F0ZXdheUdlbmVyYWwsIENVUlJFTlRfU0NFTkFSSU8sIGN1cnJlbnRTY2VuYXJpbyB9LFxyXG5cdFx0XHQnbWFjcm9zTGlzdCcsXHJcblx0XHRcdDxCYXNlQ29udHJvbFxyXG5cdFx0XHRcdGtleT1cInBheW1lbnRfcmVzdWx0X21hY3Jvc19iYXNlX2NvbnRyb2xcIlxyXG5cdFx0XHQ+XHJcblx0XHRcdFx0PGg0PlxyXG5cdFx0XHRcdFx0eyBfXyggJ0F2YWlsYWJsZSBtYWNyb3MgbGlzdDogJywgJ2pldC1mb3JtLWJ1aWxkZXInICkgfTxici8+XHJcblx0XHRcdFx0XHR7IF9fKCAnJWdhdGV3YXlfYW1vdW50JSAtIHBheW1lbnQgYW1vdW50IHJldHVybmVkIGZyb20gZ2F0ZXdheSB0ZW1wbGF0ZTsnLCAnamV0LWZvcm0tYnVpbGRlcicgKSB9PGJyLz5cclxuXHRcdFx0XHRcdHsgX18oICclZ2F0ZXdheV9zdGF0dXMlIC0gcGF5bWVudCBzdGF0dXMgcmV0dXJuZWQgZnJvbSBwYXltZW50IGdhdGV3YXk7JywgJ2pldC1mb3JtLWJ1aWxkZXInICkgfTxici8+XHJcblx0XHRcdFx0XHR7IF9fKCAnJWZpZWxkX25hbWUlIC0gcmVwbGFjZSBcImZpZWxkX25hbWVcIiB3aXRoIGFueSBmaWVsZCBuYW1lIGZyb20gdGhlIGZvcm07JywgJ2pldC1mb3JtLWJ1aWxkZXInICkgfTxici8+XHJcblx0XHRcdFx0PC9oND5cclxuXHRcdFx0PC9CYXNlQ29udHJvbD4gKSB9XHJcblx0XHQ8VGV4dGFyZWFDb250cm9sXHJcblx0XHRcdGtleT1cInBheW1lbnRfcmVzdWx0X21lc3NhZ2Vfc3VjY2Vzc1wiXHJcblx0XHRcdGxhYmVsPXsgbGFiZWwoICdtZXNzYWdlX3N1Y2Nlc3MnICkgfVxyXG5cdFx0XHR2YWx1ZT17IGdldFJlc3VsdE1lc3NhZ2UoICdzdWNjZXNzJyApIH1cclxuXHRcdFx0b25DaGFuZ2U9eyBuZXdWYWx1ZSA9PiBzZXRSZXN1bHRNZXNzYWdlKCAnc3VjY2VzcycsIG5ld1ZhbHVlICkgfVxyXG5cdFx0Lz5cclxuXHRcdDxUZXh0YXJlYUNvbnRyb2xcclxuXHRcdFx0a2V5PVwicGF5bWVudF9yZXN1bHRfbWVzc2FnZV9mYWlsZWRcIlxyXG5cdFx0XHRsYWJlbD17IGxhYmVsKCAnbWVzc2FnZV9mYWlsZWQnICkgfVxyXG5cdFx0XHR2YWx1ZT17IGdldFJlc3VsdE1lc3NhZ2UoICdmYWlsZWQnICkgfVxyXG5cdFx0XHRvbkNoYW5nZT17IG5ld1ZhbHVlID0+IHNldFJlc3VsdE1lc3NhZ2UoICdmYWlsZWQnLCBuZXdWYWx1ZSApIH1cclxuXHRcdC8+XHJcblx0PC8+O1xyXG5cclxuXHRyZXR1cm4gPD5cclxuXHRcdHsgcmVuZGVyR2F0ZXdheSggZ2F0ZXdheUdlbmVyYWwuZ2F0ZXdheSwgeyBzZXRWYWx1ZUluT2JqZWN0LCBnZXROb3RpZmljYXRpb25zIH0gKSB9XHJcblx0XHR7IChcclxuXHRcdFx0ICAtIDEgPT09IGdhdGV3YXlSZXF1ZXN0LmlkXHJcblx0XHRcdCAgfHwgbG9hZGluZ0dhdGV3YXkuc3VjY2Vzc1xyXG5cdFx0XHQgIHx8ICEgZ2F0ZXdheVJlcXVlc3QuaWQuaW5jbHVkZXMoIGdhdGV3YXlHZW5lcmFsLmdhdGV3YXkgKVxyXG5cdFx0ICApICYmIEdhdGV3YXlGb290ZXIgfVxyXG5cdDwvPjtcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgY29tcG9zZShcclxuXHR3aXRoU2VsZWN0KCAoIC4uLnByb3BzICkgPT4gKFxyXG5cdFx0e1xyXG5cdFx0XHQuLi53aXRoU2VsZWN0R2F0ZXdheXMoIC4uLnByb3BzICksXHJcblx0XHR9XHJcblx0KSApLFxyXG5cdHdpdGhEaXNwYXRjaCggd2l0aERpc3BhdGNoR2F0ZXdheXMgKSxcclxuKSggR2F0ZXdheXNFZGl0b3IgKTsiLCJjb25zdCB7IGNvbXBvc2UgfSA9IHdwLmNvbXBvc2U7XHJcblxyXG5jb25zdCB7XHJcblx0ICAgICAgd2l0aFNlbGVjdCxcclxuXHQgICAgICB3aXRoRGlzcGF0Y2gsXHJcbiAgICAgIH0gPSB3cC5kYXRhO1xyXG5jb25zdCB7XHJcblx0ICAgICAgX18sXHJcbiAgICAgIH0gPSB3cC5pMThuO1xyXG5cclxuY29uc3Qge1xyXG5cdCAgICAgIFRleHRDb250cm9sLFxyXG5cdCAgICAgIFNlbGVjdENvbnRyb2wsXHJcblx0ICAgICAgd2l0aE5vdGljZXMsXHJcbiAgICAgIH0gPSB3cC5jb21wb25lbnRzO1xyXG5cclxuY29uc3Qge1xyXG5cdCAgICAgIHVzZUVmZmVjdCxcclxuICAgICAgfSA9IHdwLmVsZW1lbnQ7XHJcblxyXG5jb25zdCB7XHJcblx0ICAgICAgcmVuZGVyR2F0ZXdheSxcclxuICAgICAgfSA9IEpldEZCQWN0aW9ucztcclxuXHJcbmNvbnN0IHtcclxuXHQgICAgICB3aXRoU2VsZWN0R2F0ZXdheXMsXHJcblx0ICAgICAgd2l0aERpc3BhdGNoR2F0ZXdheXMsXHJcbiAgICAgIH0gPSBKZXRGQkhvb2tzO1xyXG5cclxuY29uc3Qge1xyXG5cdCAgICAgIFRvZ2dsZUNvbnRyb2wsXHJcbiAgICAgIH0gPSBKZXRGQkNvbXBvbmVudHM7XHJcblxyXG5mdW5jdGlvbiBQYXlwYWxNYWluKCB7XHJcblx0c2V0R2F0ZXdheVJlcXVlc3QsXHJcblx0Z2F0ZXdheVNwZWNpZmljLFxyXG5cdHNldEdhdGV3YXlTcGVjaWZpYyxcclxuXHRnYXRld2F5U2NlbmFyaW8sXHJcblx0c2V0R2F0ZXdheVNjZW5hcmlvLFxyXG5cdGdldFNwZWNpZmljT3JHbG9iYWwsXHJcblx0YWRkaXRpb25hbFNvdXJjZUdhdGV3YXksXHJcblx0c3BlY2lmaWNHYXRld2F5TGFiZWwsXHJcblx0bm90aWNlT3BlcmF0aW9ucyxcclxuXHRub3RpY2VVSSxcclxufSApIHtcclxuXHJcblx0Y29uc3Qge1xyXG5cdFx0ICAgICAgaWQ6IHNjZW5hcmlvID0gJ1BBWV9OT1cnLFxyXG5cdCAgICAgIH0gPSBnYXRld2F5U2NlbmFyaW87XHJcblxyXG5cdHVzZUVmZmVjdCggKCkgPT4ge1xyXG5cdFx0c2V0R2F0ZXdheVJlcXVlc3QoIHsgaWQ6IHNjZW5hcmlvIH0gKTtcclxuXHR9LCBbIHNjZW5hcmlvIF0gKTtcclxuXHJcblx0dXNlRWZmZWN0KCAoKSA9PiB7XHJcblx0XHRzZXRHYXRld2F5UmVxdWVzdCggeyBpZDogc2NlbmFyaW8gfSApO1xyXG5cdH0sIFtdICk7XHJcblxyXG5cdHJldHVybiA8PlxyXG5cdFx0eyBub3RpY2VVSSB9XHJcblx0XHQ8VG9nZ2xlQ29udHJvbFxyXG5cdFx0XHRjaGVja2VkPXsgZ2F0ZXdheVNwZWNpZmljLnVzZV9nbG9iYWwgfVxyXG5cdFx0XHRvbkNoYW5nZT17IHVzZV9nbG9iYWwgPT4gc2V0R2F0ZXdheVNwZWNpZmljKCB7IHVzZV9nbG9iYWwgfSApIH1cclxuXHRcdD5cclxuXHRcdFx0eyBfXyggJ1VzZScsICdqZXQtZm9ybS1idWlsZGVyJyApICsgJyAnIH1cclxuXHRcdFx0PGEgaHJlZj17IEpldEZvcm1FZGl0b3JEYXRhLmdsb2JhbF9zZXR0aW5nc191cmwgK1xyXG5cdFx0XHQnI3BheW1lbnRzLWdhdGV3YXlzX19wYXlwYWwnIH0+XHJcblx0XHRcdFx0eyBfXyggJ0dsb2JhbCBTZXR0aW5ncycsICdqZXQtZm9ybS1idWlsZGVyJyApIH1cclxuXHRcdFx0PC9hPlxyXG5cdFx0PC9Ub2dnbGVDb250cm9sPlxyXG5cdFx0PFRleHRDb250cm9sXHJcblx0XHRcdGxhYmVsPXsgc3BlY2lmaWNHYXRld2F5TGFiZWwoICdjbGllbnRfaWQnICkgfVxyXG5cdFx0XHRrZXk9XCJwYXlwYWxfY2xpZW50X2lkX3NldHRpbmdcIlxyXG5cdFx0XHR2YWx1ZT17IGdldFNwZWNpZmljT3JHbG9iYWwoICdjbGllbnRfaWQnICkgfVxyXG5cdFx0XHRvbkNoYW5nZT17IGNsaWVudF9pZCA9PiBzZXRHYXRld2F5U3BlY2lmaWMoIHsgY2xpZW50X2lkIH0gKSB9XHJcblx0XHRcdGRpc2FibGVkPXsgZ2F0ZXdheVNwZWNpZmljLnVzZV9nbG9iYWwgfVxyXG5cdFx0Lz5cclxuXHRcdDxUZXh0Q29udHJvbFxyXG5cdFx0XHRsYWJlbD17IHNwZWNpZmljR2F0ZXdheUxhYmVsKCAnc2VjcmV0JyApIH1cclxuXHRcdFx0a2V5PVwicGF5cGFsX3NlY3JldF9zZXR0aW5nXCJcclxuXHRcdFx0dmFsdWU9eyBnZXRTcGVjaWZpY09yR2xvYmFsKCAnc2VjcmV0JyApIH1cclxuXHRcdFx0b25DaGFuZ2U9eyBzZWNyZXQgPT4gc2V0R2F0ZXdheVNwZWNpZmljKCB7IHNlY3JldCB9ICkgfVxyXG5cdFx0XHRkaXNhYmxlZD17IGdhdGV3YXlTcGVjaWZpYy51c2VfZ2xvYmFsIH1cclxuXHRcdC8+XHJcblx0XHQ8U2VsZWN0Q29udHJvbFxyXG5cdFx0XHRsYWJlbFBvc2l0aW9uPVwic2lkZVwiXHJcblx0XHRcdGxhYmVsPXsgc3BlY2lmaWNHYXRld2F5TGFiZWwoICdnYXRld2F5X3R5cGUnICkgfVxyXG5cdFx0XHR2YWx1ZT17IHNjZW5hcmlvIH1cclxuXHRcdFx0b25DaGFuZ2U9eyBpZCA9PiB7XHJcblx0XHRcdFx0c2V0R2F0ZXdheVNjZW5hcmlvKCB7IGlkIH0gKTtcclxuXHRcdFx0fSB9XHJcblx0XHRcdG9wdGlvbnM9eyBhZGRpdGlvbmFsU291cmNlR2F0ZXdheS5zY2VuYXJpb3MgfVxyXG5cdFx0Lz5cclxuXHRcdHsgcmVuZGVyR2F0ZXdheSggJ3BheXBhbCcsIHsgbm90aWNlT3BlcmF0aW9ucyB9LCBzY2VuYXJpbyApIH1cclxuXHQ8Lz47XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvc2UoXHJcblx0d2l0aFNlbGVjdCggd2l0aFNlbGVjdEdhdGV3YXlzICksXHJcblx0d2l0aERpc3BhdGNoKCB3aXRoRGlzcGF0Y2hHYXRld2F5cyApLFxyXG5cdHdpdGhOb3RpY2VzLFxyXG4pKCBQYXlwYWxNYWluICk7XHJcblxyXG5cclxuIiwiY29uc3QgeyBjb21wb3NlIH0gPSB3cC5jb21wb3NlO1xyXG5cclxuY29uc3Qge1xyXG5cdHdpdGhTZWxlY3QsXHJcblx0d2l0aERpc3BhdGNoLFxyXG59ID0gd3AuZGF0YTtcclxuXHJcbmNvbnN0IHtcclxuXHRUZXh0Q29udHJvbCxcclxuXHRTZWxlY3RDb250cm9sLFxyXG5cdEJhc2VDb250cm9sLFxyXG5cdFJhZGlvQ29udHJvbCxcclxufSA9IHdwLmNvbXBvbmVudHM7XHJcblxyXG5jb25zdCB7XHJcblx0d2l0aFNlbGVjdEZvcm1GaWVsZHMsXHJcblx0d2l0aFNlbGVjdEdhdGV3YXlzLFxyXG5cdHdpdGhEaXNwYXRjaEdhdGV3YXlzLFxyXG5cdHdpdGhTZWxlY3RBY3Rpb25zQnlUeXBlLFxyXG59ID0gSmV0RkJIb29rcztcclxuXHJcbmNvbnN0IHsgR2F0ZXdheUZldGNoQnV0dG9uIH0gPSBKZXRGQkNvbXBvbmVudHM7XHJcblxyXG5mdW5jdGlvbiBQYXlOb3dTY2VuYXJpbygge1xyXG5cdGdhdGV3YXlHZW5lcmFsLFxyXG5cdGdhdGV3YXlTcGVjaWZpYyxcclxuXHRzZXRHYXRld2F5LFxyXG5cdHNldEdhdGV3YXlTcGVjaWZpYyxcclxuXHRmb3JtRmllbGRzLFxyXG5cdGdldFNwZWNpZmljT3JHbG9iYWwsXHJcblx0bG9hZGluZ0dhdGV3YXksXHJcblx0c2NlbmFyaW9Tb3VyY2UsXHJcblx0bm90aWNlT3BlcmF0aW9ucyxcclxuXHRzY2VuYXJpb0xhYmVsLFxyXG5cdGdsb2JhbEdhdGV3YXlMYWJlbCxcclxufSApIHtcclxuXHJcblx0Y29uc3QgZGlzcGxheU5vdGljZSA9IHN0YXR1cyA9PiByZXNwb25zZSA9PiB7XHJcblx0XHRub3RpY2VPcGVyYXRpb25zLnJlbW92ZU5vdGljZSggZ2F0ZXdheUdlbmVyYWwuZ2F0ZXdheSApO1xyXG5cdFx0bm90aWNlT3BlcmF0aW9ucy5jcmVhdGVOb3RpY2UoIHtcclxuXHRcdFx0c3RhdHVzLFxyXG5cdFx0XHRjb250ZW50OiByZXNwb25zZS5tZXNzYWdlLFxyXG5cdFx0XHRpZDogZ2F0ZXdheUdlbmVyYWwuZ2F0ZXdheSxcclxuXHRcdH0gKTtcclxuXHR9O1xyXG5cclxuXHRyZXR1cm4gPD5cclxuXHRcdDxCYXNlQ29udHJvbFxyXG5cdFx0XHRsYWJlbD17IHNjZW5hcmlvTGFiZWwoICdmZXRjaF9idXR0b25fbGFiZWwnICkgfVxyXG5cdFx0PlxyXG5cdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cImpldC11c2VyLWZpZWxkcy1tYXBfX2xpc3RcIj5cclxuXHRcdFx0XHR7ICggISBsb2FkaW5nR2F0ZXdheS5zdWNjZXNzICYmICEgbG9hZGluZ0dhdGV3YXkubG9hZGluZyApICYmIDxzcGFuXHJcblx0XHRcdFx0XHRjbGFzc05hbWU9eyAnZGVzY3JpcHRpb24tY29udHJvbHMnIH1cclxuXHRcdFx0XHQ+XHJcblx0XHRcdFx0XHR7IHNjZW5hcmlvTGFiZWwoICdmZXRjaF9idXR0b25faGVscCcgKSB9XHJcblx0XHRcdFx0PC9zcGFuPiB9XHJcblx0XHRcdFx0PEdhdGV3YXlGZXRjaEJ1dHRvblxyXG5cdFx0XHRcdFx0aW5pdGlhbExhYmVsPXsgc2NlbmFyaW9MYWJlbCggJ2ZldGNoX2J1dHRvbicgKSB9XHJcblx0XHRcdFx0XHRsYWJlbD17IHNjZW5hcmlvTGFiZWwoICdmZXRjaF9idXR0b25fcmV0cnknICkgfVxyXG5cdFx0XHRcdFx0YXBpQXJncz17IHtcclxuXHRcdFx0XHRcdFx0Li4uc2NlbmFyaW9Tb3VyY2UuZmV0Y2gsXHJcblx0XHRcdFx0XHRcdGRhdGE6IHtcclxuXHRcdFx0XHRcdFx0XHRjbGllbnRfaWQ6IGdldFNwZWNpZmljT3JHbG9iYWwoICdjbGllbnRfaWQnICksXHJcblx0XHRcdFx0XHRcdFx0c2VjcmV0OiBnZXRTcGVjaWZpY09yR2xvYmFsKCAnc2VjcmV0JyApLFxyXG5cdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0fSB9XHJcblx0XHRcdFx0XHRvbkZhaWw9eyBkaXNwbGF5Tm90aWNlKCAnZXJyb3InICkgfVxyXG5cdFx0XHRcdC8+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9CYXNlQ29udHJvbD5cclxuXHRcdHsgbG9hZGluZ0dhdGV3YXkuc3VjY2VzcyAmJiA8PlxyXG5cdFx0XHQ8VGV4dENvbnRyb2xcclxuXHRcdFx0XHRsYWJlbD17IHNjZW5hcmlvTGFiZWwoICdjdXJyZW5jeScgKSB9XHJcblx0XHRcdFx0a2V5PSdwYXlwYWxfY3VycmVuY3lfY29kZV9zZXR0aW5nJ1xyXG5cdFx0XHRcdHZhbHVlPXsgZ2F0ZXdheVNwZWNpZmljLmN1cnJlbmN5IH1cclxuXHRcdFx0XHRvbkNoYW5nZT17IGN1cnJlbmN5ID0+IHNldEdhdGV3YXlTcGVjaWZpYyggeyBjdXJyZW5jeSB9ICkgfVxyXG5cdFx0XHQvPlxyXG5cdFx0XHQ8U2VsZWN0Q29udHJvbFxyXG5cdFx0XHRcdGxhYmVsPXsgZ2xvYmFsR2F0ZXdheUxhYmVsKCAncHJpY2VfZmllbGQnICkgfVxyXG5cdFx0XHRcdGtleT17ICdmb3JtX2ZpZWxkc19wcmljZV9maWVsZCcgfVxyXG5cdFx0XHRcdHZhbHVlPXsgZ2F0ZXdheUdlbmVyYWwucHJpY2VfZmllbGQgfVxyXG5cdFx0XHRcdGxhYmVsUG9zaXRpb249J3NpZGUnXHJcblx0XHRcdFx0b25DaGFuZ2U9eyBwcmljZV9maWVsZCA9PiB7XHJcblx0XHRcdFx0XHRzZXRHYXRld2F5KCB7IHByaWNlX2ZpZWxkIH0gKTtcclxuXHRcdFx0XHR9IH1cclxuXHRcdFx0XHRvcHRpb25zPXsgZm9ybUZpZWxkcyB9XHJcblx0XHRcdC8+XHJcblx0XHQ8Lz4gfVxyXG5cdDwvPjtcclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgY29tcG9zZShcclxuXHR3aXRoU2VsZWN0KCAoIC4uLnByb3BzICkgPT4gKFxyXG5cdFx0e1xyXG5cdFx0XHQuLi53aXRoU2VsZWN0Rm9ybUZpZWxkcyggW10sICctLScgKSggLi4ucHJvcHMgKSxcclxuXHRcdFx0Li4ud2l0aFNlbGVjdEdhdGV3YXlzKCAuLi5wcm9wcyApLFxyXG5cdFx0fVxyXG5cdCkgKSxcclxuXHR3aXRoRGlzcGF0Y2goICggLi4ucHJvcHMgKSA9PiAoXHJcblx0XHR7XHJcblx0XHRcdC4uLndpdGhEaXNwYXRjaEdhdGV3YXlzKCAuLi5wcm9wcyApLFxyXG5cdFx0fVxyXG5cdCkgKSxcclxuKSggUGF5Tm93U2NlbmFyaW8gKTsiLCJpbXBvcnQgUGx1Z2luR2F0ZXdheXMgZnJvbSAnLi9yZW5kZXInO1xyXG5cclxuY29uc3QgeyBfXyB9ID0gd3AuaTE4bjtcclxuXHJcbmNvbnN0IGJhc2UgPSB7XHJcblx0bmFtZTogJ2pmLWdhdGV3YXlzLXBhbmVsJyxcclxuXHR0aXRsZTogX18oICdHYXRld2F5cyBTZXR0aW5ncycsICdqZXQtZm9ybS1idWlsZGVyJyApLFxyXG59O1xyXG5cclxuY29uc3Qgc2V0dGluZ3MgPSB7XHJcblx0cmVuZGVyOiBQbHVnaW5HYXRld2F5cyxcclxuXHRpY29uOiAnbW9uZXktYWx0JyxcclxufTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IHtcclxuXHRiYXNlLFxyXG5cdHNldHRpbmdzLFxyXG59OyIsImltcG9ydCBHYXRld2F5c0VkaXRvciBmcm9tICcuLi9jb21wb25lbnRzL2dhdGV3YXlzLWVkaXRvcic7XHJcblxyXG5jb25zdCB7XHJcblx0QnV0dG9uLFxyXG5cdFRvZ2dsZUNvbnRyb2wsXHJcblx0Tm90aWNlLFxyXG5cdF9fZXhwZXJpbWVudGFsSXRlbUdyb3VwOiBJdGVtR3JvdXAsXHJcblx0X19leHBlcmltZW50YWxJdGVtOiBJdGVtLFxyXG59ID0gd3AuY29tcG9uZW50cztcclxuXHJcbmNvbnN0IHsgd2l0aERpc3BhdGNoLCB3aXRoU2VsZWN0LCB1c2VTZWxlY3QsIGRpc3BhdGNoIH0gPSB3cC5kYXRhO1xyXG5jb25zdCB7IHVzZVN0YXRlLCB1c2VFZmZlY3QgfSA9IHdwLmVsZW1lbnQ7XHJcbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XHJcbmNvbnN0IHsgY29tcG9zZSB9ID0gd3AuY29tcG9zZTtcclxuY29uc3QgeyBjcmVhdGVCbG9jayB9ID0gd3AuYmxvY2tzO1xyXG5cclxuY29uc3QgeyBBY3Rpb25Nb2RhbCB9ID0gSmV0RkJDb21wb25lbnRzO1xyXG5cclxuY29uc3Qge1xyXG5cdHdpdGhEaXNwYXRjaEdhdGV3YXlzLFxyXG5cdHdpdGhTZWxlY3RHYXRld2F5cyxcclxuXHR1c2VNZXRhU3RhdGUsXHJcbn0gPSBKZXRGQkhvb2tzO1xyXG5cclxuY29uc3QgZ2F0ZXdheXNEYXRhID0gd2luZG93LkpldEZvcm1FZGl0b3JEYXRhLmdhdGV3YXlzO1xyXG5cclxuY29uc3QgTU9ERV9TSU5HTEUgPSAnc2luZ2xlJztcclxuY29uc3QgTU9ERV9NQU5VQUwgPSAnbWFudWFsJztcclxuXHJcbmNvbnN0IE1VTFRJX0dBVEVXQVlfQkxPQ0sgPSAnamV0LWZvcm1zL211bHRpLWdhdGV3YXknO1xyXG5cclxuY29uc3QgZ2V0R2F0ZXdheUxhYmVsID0gKCB0eXBlICkgPT4ge1xyXG5cdHJldHVybiBnYXRld2F5c0RhdGEubGlzdC5maW5kKCBlbCA9PiBlbC52YWx1ZSA9PT0gdHlwZSApPy5sYWJlbCB8fCB0eXBlO1xyXG59O1xyXG5cclxuY29uc3QgaGFzQmxvY2tSZWN1cnNpdmUgPSAoIGJsb2NrcywgbmFtZSApID0+IHtcclxuXHRmb3IgKCBjb25zdCBibG9jayBvZiBibG9ja3MgKSB7XHJcblx0XHRpZiAoIGJsb2NrLm5hbWUgPT09IG5hbWUgKSB7XHJcblx0XHRcdHJldHVybiB0cnVlO1xyXG5cdFx0fVxyXG5cdFx0aWYgKCBibG9jay5pbm5lckJsb2Nrcz8ubGVuZ3RoICYmIGhhc0Jsb2NrUmVjdXJzaXZlKCBibG9jay5pbm5lckJsb2NrcywgbmFtZSApICkge1xyXG5cdFx0XHRyZXR1cm4gdHJ1ZTtcclxuXHRcdH1cclxuXHR9XHJcblx0cmV0dXJuIGZhbHNlO1xyXG59O1xyXG5cclxuZnVuY3Rpb24gUGx1Z2luR2F0ZXdheXMoIHByb3BzICkge1xyXG5cdGNvbnN0IHtcclxuXHRcdHNldEdhdGV3YXksXHJcblx0XHRzZXRHYXRld2F5U2NlbmFyaW8sXHJcblx0XHRjbGVhckdhdGV3YXksXHJcblx0XHRjbGVhclNjZW5hcmlvLFxyXG5cdFx0Z2F0ZXdheUdlbmVyYWwsXHJcblx0XHRnYXRld2F5U2NlbmFyaW8sXHJcblx0fSA9IHByb3BzO1xyXG5cclxuXHRjb25zdCBbIG1ldGEsIHNldE1ldGEgXSA9IHVzZU1ldGFTdGF0ZSggJ19qZl9nYXRld2F5cycgKTtcclxuXHRjb25zdCBbIGlzRWRpdCwgc2V0RWRpdCBdID0gdXNlU3RhdGUoIGZhbHNlICk7XHJcblxyXG5cdC8vIFVJLXNlbGVjdGVkIHZhbHVlIChjYW4gYmUgXCJtYW51YWxcIiB3aXRob3V0IHRvdWNoaW5nIG1ldGEuZ2F0ZXdheSlcclxuXHRjb25zdCBbIHNlbGVjdGVkR2F0ZXdheSwgc2V0U2VsZWN0ZWRHYXRld2F5IF0gPSB1c2VTdGF0ZSggbWV0YT8uZ2F0ZXdheSA/PyAnbm9uZScgKTtcclxuXHJcblx0Ly8gd2hpY2ggZ2F0ZXdheSBpcyBjdXJyZW50bHkgYmVpbmcgZWRpdGVkIGluIG1vZGFsXHJcblx0Y29uc3QgWyBlZGl0R2F0ZXdheSwgc2V0RWRpdEdhdGV3YXkgXSA9IHVzZVN0YXRlKCBudWxsICk7XHJcblxyXG5cdGNvbnN0IGlzTWFudWFsTW9kZSA9IG1ldGE/Lm1vZGUgPT09IE1PREVfTUFOVUFMO1xyXG5cclxuXHRjb25zdCBoYXNNdWx0aUdhdGV3YXlCbG9jayA9IHVzZVNlbGVjdChcclxuXHRcdCggc2VsZWN0ICkgPT4ge1xyXG5cdFx0XHRjb25zdCBlZGl0b3IgPSBzZWxlY3QoICdjb3JlL2Jsb2NrLWVkaXRvcicgKTtcclxuXHRcdFx0aWYgKCAhZWRpdG9yPy5nZXRCbG9ja3MgKSB7XHJcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0XHR9XHJcblx0XHRcdHJldHVybiBoYXNCbG9ja1JlY3Vyc2l2ZSggZWRpdG9yLmdldEJsb2NrcygpLCBNVUxUSV9HQVRFV0FZX0JMT0NLICk7XHJcblx0XHR9LFxyXG5cdFx0W11cclxuXHQpO1xyXG5cclxuXHRjb25zdCBpbnNlcnRNdWx0aUdhdGV3YXlCbG9jayA9ICgpID0+IHtcclxuXHRcdGRpc3BhdGNoKCAnY29yZS9ibG9jay1lZGl0b3InICkuaW5zZXJ0QmxvY2tzKFxyXG5cdFx0XHRjcmVhdGVCbG9jayggTVVMVElfR0FURVdBWV9CTE9DSyApXHJcblx0XHQpO1xyXG5cdH07XHJcblxyXG5cdHVzZUVmZmVjdCggKCkgPT4ge1xyXG5cdFx0aWYgKCBpc01hbnVhbE1vZGUgKSB7XHJcblx0XHRcdHNldFNlbGVjdGVkR2F0ZXdheSggTU9ERV9NQU5VQUwgKTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0c2V0U2VsZWN0ZWRHYXRld2F5KCBtZXRhPy5nYXRld2F5ID8/ICdub25lJyApO1xyXG5cdH0sIFsgbWV0YT8uZ2F0ZXdheSwgbWV0YT8ubW9kZSBdICk7XHJcblxyXG5cdHVzZUVmZmVjdCggKCkgPT4ge1xyXG5cdFx0aWYgKCAhaXNFZGl0ICkge1xyXG5cdFx0XHRjbGVhckdhdGV3YXkoKTtcclxuXHRcdFx0Y2xlYXJTY2VuYXJpbygpO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblxyXG5cdFx0Y29uc3QgZ3cgPSBlZGl0R2F0ZXdheSB8fCBtZXRhPy5nYXRld2F5O1xyXG5cclxuXHRcdGlmICggIWd3IHx8IGd3ID09PSAnbm9uZScgKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHRpZiAoIGlzTWFudWFsTW9kZSAmJiAhZWRpdEdhdGV3YXkgKSB7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHJcblx0XHRzZXRHYXRld2F5KCB7IC4uLm1ldGEsIGdhdGV3YXk6IGd3IH0gKTtcclxuXHRcdHNldEdhdGV3YXlTY2VuYXJpbyggbWV0YT8uWyBndyBdPy5zY2VuYXJpbyApO1xyXG5cdH0sIFsgaXNFZGl0LCBlZGl0R2F0ZXdheSBdICk7XHJcblxyXG5cdGNvbnN0IGNsb3NlTW9kYWwgPSAoIG5ld01ldGEgPSBmYWxzZSApID0+IHtcclxuXHRcdGlmICggZmFsc2UgIT09IG5ld01ldGEgKSB7XHJcblx0XHRcdHNldE1ldGEoIG5ld01ldGEgKTtcclxuXHRcdH1cclxuXHRcdHNldEVkaXQoIGZhbHNlICk7XHJcblx0XHRzZXRFZGl0R2F0ZXdheSggbnVsbCApO1xyXG5cdH07XHJcblxyXG5cdGNvbnN0IG9wdGlvbnMgPSBbXHJcblx0XHR7IGxhYmVsOiAnTm9uZScsIHZhbHVlOiAnbm9uZScgfSxcclxuXHRcdC4uLmdhdGV3YXlzRGF0YS5saXN0LFxyXG5cdFx0eyBsYWJlbDogJ01hbnVhbCcsIHZhbHVlOiBNT0RFX01BTlVBTCB9LFxyXG5cdF07XHJcblxyXG5cdGNvbnN0IHN0eWxlcyA9IHtcclxuXHRcdHJvdzoge1xyXG5cdFx0XHRkaXNwbGF5OiAnZmxleCcsXHJcblx0XHRcdGFsaWduSXRlbXM6ICdjZW50ZXInLFxyXG5cdFx0XHRqdXN0aWZ5Q29udGVudDogJ3NwYWNlLWJldHdlZW4nLFxyXG5cdFx0XHR3aWR0aDogJzEwMCUnLFxyXG5cdFx0fSxcclxuXHRcdGl0ZW06IHtcclxuXHRcdFx0ZGlzcGxheTogJ2ZsZXgnLFxyXG5cdFx0XHRtaW5IZWlnaHQ6ICc1MHB4JyxcclxuXHRcdFx0ZmxleERpcmVjdGlvbjogJ2NvbHVtbicsXHJcblx0XHRcdGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcclxuXHRcdH0sXHJcblx0XHR0b2dnbGU6IHtcclxuXHRcdFx0cGFkZGluZ1RvcDogJzEwcHgnLFxyXG5cdFx0XHRmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcclxuXHRcdH0sXHJcblx0XHRub3RpY2U6IHtcclxuXHRcdFx0bWFyZ2luVG9wOiAnMTBweCcsXHJcblx0XHR9LFxyXG5cdFx0bm90aWNlX19idG46IHtcclxuXHRcdFx0bWFyZ2luTGVmdDogJzAnLFxyXG5cdFx0fVxyXG5cdH07XHJcblxyXG5cdHJldHVybiAoXHJcblx0XHQ8PlxyXG5cdFx0XHQ8SXRlbUdyb3VwIGNsYXNzTmFtZT1cImpmYi1nYXRld2F5c1wiIGlzQm9yZGVyZWQgaXNTZXBhcmF0ZWQ+XHJcblx0XHRcdFx0eyBvcHRpb25zLm1hcCggKCBvcHQgKSA9PiB7XHJcblx0XHRcdFx0XHRjb25zdCBpc1NlbGVjdGVkID0gc2VsZWN0ZWRHYXRld2F5ID09PSBvcHQudmFsdWU7XHJcblxyXG5cdFx0XHRcdFx0Y29uc3QgY2FuRWRpdCA9XHJcblx0XHRcdFx0XHRcdG9wdC52YWx1ZSAhPT0gJ25vbmUnXHJcblx0XHRcdFx0XHRcdCYmIG9wdC52YWx1ZSAhPT0gTU9ERV9NQU5VQUxcclxuXHRcdFx0XHRcdFx0JiYgKCBpc01hbnVhbE1vZGUgfHwgaXNTZWxlY3RlZCApO1xyXG5cclxuXHRcdFx0XHRcdGNvbnN0IGNhblRvZ2dsZSA9XHJcblx0XHRcdFx0XHRcdGlzTWFudWFsTW9kZVxyXG5cdFx0XHRcdFx0XHQmJiBvcHQudmFsdWUgIT09ICdub25lJ1xyXG5cdFx0XHRcdFx0XHQmJiBvcHQudmFsdWUgIT09IE1PREVfTUFOVUFMO1xyXG5cclxuXHRcdFx0XHRcdHJldHVybiAoXHJcblx0XHRcdFx0XHRcdDxJdGVtXHJcblx0XHRcdFx0XHRcdFx0a2V5PXsgb3B0LnZhbHVlIH1cclxuXHRcdFx0XHRcdFx0XHRjbGFzc05hbWU9XCJqZmItZ2F0ZXdheXNfX2l0ZW1cIlxyXG5cdFx0XHRcdFx0XHRcdHN0eWxlPXsgc3R5bGVzLml0ZW0gfVxyXG5cdFx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzc05hbWU9XCJqZmItZ2F0ZXdheXNfX3Jvd1wiIHN0eWxlPXsgc3R5bGVzLnJvdyB9PlxyXG5cdFx0XHRcdFx0XHRcdFx0PGxhYmVsIGNsYXNzTmFtZT1cImpmYi1nYXRld2F5c19fb3B0aW9uXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxpbnB1dFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHR5cGU9XCJyYWRpb1wiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0bmFtZT1cImpmYl9nYXRld2F5XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZT17IG9wdC52YWx1ZSB9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2hlY2tlZD17IGlzU2VsZWN0ZWQgfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlPXsgKCkgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0c2V0U2VsZWN0ZWRHYXRld2F5KCBvcHQudmFsdWUgKTtcclxuXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIG9wdC52YWx1ZSA9PT0gTU9ERV9NQU5VQUwgKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHNldE1ldGEoIHsgLi4ubWV0YSwgbW9kZTogTU9ERV9NQU5VQUwgfSApO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0c2V0TWV0YSgge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuLi5tZXRhLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRtb2RlOiBNT0RFX1NJTkdMRSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Z2F0ZXdheTogb3B0LnZhbHVlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSApO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0gfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHQvPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzc05hbWU9XCJqZmItZ2F0ZXdheXNfX2xhYmVsXCI+eyBvcHQubGFiZWwgfTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdDwvbGFiZWw+XHJcblxyXG5cdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzc05hbWU9XCJqZmItZ2F0ZXdheXNfX2FjdGlvbnNcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0eyBjYW5FZGl0ID8gKFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxCdXR0b25cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdG9uQ2xpY2s9eyAoKSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHNldEVkaXRHYXRld2F5KCBvcHQudmFsdWUgKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0c2V0RWRpdCggdHJ1ZSApO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSB9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpY29uPVwiYWRtaW4tdG9vbHNcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aXNTZWNvbmRhcnlcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHNpemU9XCJzbWFsbFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0eyBfXyggJ0VkaXQnLCAnamV0LWZvcm0tYnVpbGRlcicgKSB9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9CdXR0b24+XHJcblx0XHRcdFx0XHRcdFx0XHRcdCkgOiAoXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gc3BhY2VyIHRvIHByZXZlbnQganVtcHNcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzc05hbWU9XCJqZmItZ2F0ZXdheXNfX2VkaXQtc3BhY2VyXCIgYXJpYS1oaWRkZW49XCJ0cnVlXCIgLz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0KSB9XHJcblx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHJcblx0XHRcdFx0XHRcdFx0eyBjYW5Ub2dnbGUgJiYgKFxyXG5cdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzc05hbWU9XCJqZmItZ2F0ZXdheXNfX3RvZ2dsZVwiIHN0eWxlPXsgc3R5bGVzLnRvZ2dsZSB9PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8VG9nZ2xlQ29udHJvbFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGxhYmVsPXsgX18oICdTaG93IG9uIGZyb250ZW5kJywgJ2pldC1mb3JtLWJ1aWxkZXInICkgfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNoZWNrZWQ9eyAhIW1ldGE/Llsgb3B0LnZhbHVlIF0/LnNob3dfb25fZnJvbnQgfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdG9uQ2hhbmdlPXsgKCB2YWx1ZSApID0+IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHNldE1ldGEoIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Li4ubWV0YSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0WyBvcHQudmFsdWUgXToge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC4uLiggbWV0YT8uWyBvcHQudmFsdWUgXSB8fCB7fSApLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHNob3dfb25fZnJvbnQ6IHZhbHVlLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSApO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0gfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHQvPlxyXG5cdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0KSB9XHJcblxyXG5cdFx0XHRcdFx0XHRcdHsgb3B0LnZhbHVlID09PSBNT0RFX01BTlVBTCAmJiBpc01hbnVhbE1vZGUgJiYgIWhhc011bHRpR2F0ZXdheUJsb2NrICYmIChcclxuXHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3NOYW1lPVwiamZiLWdhdGV3YXlzX19ub3RpY2VcIiBzdHlsZT17IHN0eWxlcy5ub3RpY2UgfT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PE5vdGljZVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHN0YXR1cz1cIndhcm5pbmdcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlzRGlzbWlzc2libGU9eyBmYWxzZSB9XHJcblx0XHRcdFx0XHRcdFx0XHRcdD5cclxuXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHsgX18oXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdUbyBkaXNwbGF5IGdhdGV3YXlzIG9uIHRoZSBmcm9udGVuZCBpbiBNYW51YWwgbW9kZSwgYWRkIHRoZSBNdWx0aSBHYXRld2F5IGJsb2NrIHRvIHRoZSBmb3JtLicsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCdqZXQtZm9ybS1idWlsZGVyJ1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0KSB9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxCdXR0b25cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlzU2Vjb25kYXJ5XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRvbkNsaWNrPXsgaW5zZXJ0TXVsdGlHYXRld2F5QmxvY2sgfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0c2l6ZT1cInNtYWxsXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHN0eWxlPXsgc3R5bGVzLm5vdGljZV9fYnRuIH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7IF9fKCAnQWRkIGJsb2NrJywgJ2pldC1mb3JtLWJ1aWxkZXInICkgfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvQnV0dG9uPlxyXG5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC9Ob3RpY2U+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHQpIH1cclxuXHRcdFx0XHRcdFx0PC9JdGVtPlxyXG5cdFx0XHRcdFx0KTtcclxuXHRcdFx0XHR9ICkgfVxyXG5cdFx0XHQ8L0l0ZW1Hcm91cD5cclxuXHJcblx0XHRcdHsgaXNFZGl0ICYmIChcclxuXHRcdFx0XHQ8QWN0aW9uTW9kYWxcclxuXHRcdFx0XHRcdGNsYXNzTmFtZXM9eyBbICd3aWR0aC02MCcgXSB9XHJcblx0XHRcdFx0XHRvblJlcXVlc3RDbG9zZT17ICgpID0+IGNsb3NlTW9kYWwoKSB9XHJcblx0XHRcdFx0XHRvbkNhbmNlbENsaWNrPXsgKCkgPT4gY2xvc2VNb2RhbCgpIH1cclxuXHRcdFx0XHRcdG9uVXBkYXRlQ2xpY2s9eyAoKSA9PiBjbG9zZU1vZGFsKCB7XHJcblx0XHRcdFx0XHRcdC4uLmdhdGV3YXlHZW5lcmFsLFxyXG5cdFx0XHRcdFx0XHRbIGdhdGV3YXlHZW5lcmFsLmdhdGV3YXkgXToge1xyXG5cdFx0XHRcdFx0XHRcdC4uLiggZ2F0ZXdheUdlbmVyYWxbIGdhdGV3YXlHZW5lcmFsLmdhdGV3YXkgXSB8fCB7fSApLFxyXG5cdFx0XHRcdFx0XHRcdHNjZW5hcmlvOiBnYXRld2F5U2NlbmFyaW8sXHJcblx0XHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHR9ICkgfVxyXG5cdFx0XHRcdFx0dGl0bGU9eyBgRWRpdCAkeyBnZXRHYXRld2F5TGFiZWwoIGVkaXRHYXRld2F5IHx8IG1ldGE/LmdhdGV3YXkgKSB9IFNldHRpbmdzYCB9XHJcblx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0PEdhdGV3YXlzRWRpdG9yLz5cclxuXHRcdFx0XHQ8L0FjdGlvbk1vZGFsPlxyXG5cdFx0XHQpIH1cclxuXHRcdDwvPlxyXG5cdCk7XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IGNvbXBvc2UoXHJcblx0d2l0aERpc3BhdGNoKCB3aXRoRGlzcGF0Y2hHYXRld2F5cyApLFxyXG5cdHdpdGhTZWxlY3QoIHdpdGhTZWxlY3RHYXRld2F5cyApLFxyXG4pKCBQbHVnaW5HYXRld2F5cyApO1xyXG4iLCJtb2R1bGUuZXhwb3J0cyA9IHdpbmRvd1tcIlJlYWN0XCJdOyIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJpbXBvcnQgUGF5cGFsTWFpbiBmcm9tICcuL3BheXBhbC9tYWluJztcclxuaW1wb3J0IFBheU5vd1NjZW5hcmlvIGZyb20gJy4vcGF5cGFsL3BheS1ub3ctc2NlbmFyaW8nO1xyXG5pbXBvcnQgZ2F0ZXdheVBsdWdpbiBmcm9tICcuL3BsdWdpbic7XHJcblxyXG5jb25zdCB7XHJcblx0ICAgICAgcmVnaXN0ZXJHYXRld2F5LFxyXG4gICAgICB9ID0gSmV0RkJBY3Rpb25zO1xyXG5cclxuY29uc3Qge1xyXG5cdCAgICAgIGFkZEZpbHRlcixcclxuICAgICAgfSA9IHdwLmhvb2tzO1xyXG5cclxuY29uc3QgeyBfXyB9ID0gd3AuaTE4bjtcclxuXHJcbmNvbnN0IGdhdGV3YXlJRCA9ICdwYXlwYWwnO1xyXG5cclxucmVnaXN0ZXJHYXRld2F5KFxyXG5cdGdhdGV3YXlJRCxcclxuXHRQYXlwYWxNYWluLFxyXG4pO1xyXG5cclxucmVnaXN0ZXJHYXRld2F5KFxyXG5cdGdhdGV3YXlJRCxcclxuXHRQYXlOb3dTY2VuYXJpbyxcclxuXHQnUEFZX05PVycsXHJcbik7XHJcblxyXG5hZGRGaWx0ZXIoXHJcblx0J2pldC5mYi5yZWdpc3Rlci5wbHVnaW4uamYtdmFsaWRhdGlvbi1wYW5lbC5hZnRlcicsXHJcblx0J2pldC1mb3JtLWJ1aWxkZXIvZ2F0ZXdheXMnLFxyXG5cdGZ1bmN0aW9uICggcGx1Z2lucyApIHtcclxuXHRcdHBsdWdpbnMucHVzaCggZ2F0ZXdheVBsdWdpbiApO1xyXG5cclxuXHRcdHJldHVybiBwbHVnaW5zO1xyXG5cdH0sXHJcbik7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/modules/gateways/assets/src/editor/plugin/render.js b/modules/gateways/assets/src/editor/plugin/render.js index a2011b3be..b0f040ba4 100644 --- a/modules/gateways/assets/src/editor/plugin/render.js +++ b/modules/gateways/assets/src/editor/plugin/render.js @@ -1,14 +1,18 @@ import GatewaysEditor from '../components/gateways-editor'; -const { Button, ToggleControl } = wp.components; - -const { withDispatch, withSelect } = wp.data; - +const { + Button, + ToggleControl, + Notice, + __experimentalItemGroup: ItemGroup, + __experimentalItem: Item, +} = wp.components; + +const { withDispatch, withSelect, useSelect, dispatch } = wp.data; const { useState, useEffect } = wp.element; - const { __ } = wp.i18n; - const { compose } = wp.compose; +const { createBlock } = wp.blocks; const { ActionModal } = JetFBComponents; @@ -23,14 +27,25 @@ const gatewaysData = window.JetFormEditorData.gateways; const MODE_SINGLE = 'single'; const MODE_MANUAL = 'manual'; +const MULTI_GATEWAY_BLOCK = 'jet-forms/multi-gateway'; + const getGatewayLabel = ( type ) => { - return ( - gatewaysData.list.find( el => el.value === type )?.label || type - ); + return gatewaysData.list.find( el => el.value === type )?.label || type; }; -function PluginGateways( props ) { +const hasBlockRecursive = ( blocks, name ) => { + for ( const block of blocks ) { + if ( block.name === name ) { + return true; + } + if ( block.innerBlocks?.length && hasBlockRecursive( block.innerBlocks, name ) ) { + return true; + } + } + return false; +}; +function PluginGateways( props ) { const { setGateway, setGatewayScenario, @@ -41,7 +56,6 @@ function PluginGateways( props ) { } = props; const [ meta, setMeta ] = useMetaState( '_jf_gateways' ); - const [ isEdit, setEdit ] = useState( false ); // UI-selected value (can be "manual" without touching meta.gateway) @@ -52,7 +66,23 @@ function PluginGateways( props ) { const isManualMode = meta?.mode === MODE_MANUAL; - // keep UI selected in sync with saved meta + const hasMultiGatewayBlock = useSelect( + ( select ) => { + const editor = select( 'core/block-editor' ); + if ( !editor?.getBlocks ) { + return false; + } + return hasBlockRecursive( editor.getBlocks(), MULTI_GATEWAY_BLOCK ); + }, + [] + ); + + const insertMultiGatewayBlock = () => { + dispatch( 'core/block-editor' ).insertBlocks( + createBlock( MULTI_GATEWAY_BLOCK ) + ); + }; + useEffect( () => { if ( isManualMode ) { setSelectedGateway( MODE_MANUAL ); @@ -61,7 +91,6 @@ function PluginGateways( props ) { setSelectedGateway( meta?.gateway ?? 'none' ); }, [ meta?.gateway, meta?.mode ] ); - // bind editor store when modal is open useEffect( () => { if ( !isEdit ) { clearGateway(); @@ -75,7 +104,6 @@ function PluginGateways( props ) { return; } - // When manual mode is active, modal opens for "editGateway" only if ( isManualMode && !editGateway ) { return; } @@ -98,14 +126,37 @@ function PluginGateways( props ) { { label: 'Manual', value: MODE_MANUAL }, ]; + const styles = { + row: { + display: 'flex', + alignItems: 'center', + justifyContent: 'space-between', + width: '100%', + }, + item: { + display: 'flex', + minHeight: '50px', + flexDirection: 'column', + justifyContent: 'center', + }, + toggle: { + paddingTop: '10px', + flexDirection: 'column', + }, + notice: { + marginTop: '10px', + }, + notice__btn: { + marginLeft: '0', + } + }; + return ( <> -
+ { options.map( ( opt ) => { const isSelected = selectedGateway === opt.value; - // In manual mode: show Edit under EACH gateway - // Otherwise: show Edit only under the selected gateway const canEdit = opt.value !== 'none' && opt.value !== MODE_MANUAL @@ -117,70 +168,104 @@ function PluginGateways( props ) { && opt.value !== MODE_MANUAL; return ( -
-
+ ); } ) } -
+ { isEdit && ( array('react', 'wp-hooks'), 'version' => '76e14b4dbd420872d2ec'); + array('react', 'wp-hooks'), 'version' => '89b6caa6b2b12eb1dbfd'); diff --git a/modules/multi-gateway/assets/build/editor.js b/modules/multi-gateway/assets/build/editor.js index f6412ff34..eee3f9998 100644 --- a/modules/multi-gateway/assets/build/editor.js +++ b/modules/multi-gateway/assets/build/editor.js @@ -8,7 +8,7 @@ \*********************************************/ /***/ ((module) => { -module.exports = /*#__PURE__*/JSON.parse('{"apiVersion":2,"name":"jet-forms/multi-gateway","title":"Multi Gateway","description":"Displays available payment gateways selected in form settings.","category":"jet-form-builder-fields","textdomain":"jet-form-builder","keywords":["jetformbuilder","gateway","payment"],"supports":{"html":false,"multiple":false},"attributes":{"isPreview":{"type":"boolean","default":false},"title":{"type":"string","default":""},"description":{"type":"string","default":""}},"viewScript":"jet-fb-multi-gateway","style":"jet-fb-multi-gateway"}'); +module.exports = /*#__PURE__*/JSON.parse('{"apiVersion":2,"name":"jet-forms/multi-gateway","title":"Multi Gateway","description":"Displays available payment gateways selected in form settings.","category":"jet-form-builder-fields","textdomain":"jet-form-builder","keywords":["jetformbuilder","gateway","payment"],"supports":{"html":false,"multiple":false},"attributes":{"isPreview":{"type":"boolean","default":false},"title":{"type":"string","default":""},"description":{"type":"string","default":""},"gatewaysSettings":{"type":"object","default":{}}},"viewScript":"jet-fb-multi-gateway","style":"jet-fb-multi-gateway"}'); /***/ }), @@ -67,32 +67,74 @@ function MultiGatewayEdit({ selected = [gw]; } } + const gatewaysSettings = attributes.gatewaysSettings || {}; + const updateGatewaySetting = (key, field, value) => { + setAttributes({ + gatewaysSettings: { + ...gatewaysSettings, + [key]: { + ...(gatewaysSettings[key] || {}), + [field]: value + } + } + }); + }; return (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", { ...blockProps + }, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", { + className: "jfb-multi-gateway" }, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(RichText, { tagName: "h3", + className: "jfb-multi-gateway__title", value: attributes.title || '', - placeholder: "Payment options", + placeholder: "Optional: add a heading for payment options\u2026", onChange: title => setAttributes({ title }) }), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(RichText, { tagName: "p", + className: "jfb-multi-gateway__desc", value: attributes.description || '', - placeholder: "Optional text for this form step.", + placeholder: "Optional: add a short description for this step\u2026", onChange: description => setAttributes({ description }) - }), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", { + }), selected.length ? (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", { className: "jfb-multi-gateway__list" - }, selected.length ? selected.map((key, index) => (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("label", { - key: key, - className: "jfb-multi-gateway__item" - }, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("input", { - type: "radio", - checked: index === 0, - readOnly: true - }), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("span", null, getGatewayLabel(key)))) : (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", { + }, selected.map((key, index) => { + const saved = gatewaysSettings?.[key] || {}; + const itemLabel = typeof saved.label === 'string' ? saved.label : getGatewayLabel(key); + const itemDesc = typeof saved.description === 'string' ? saved.description : ''; + return (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("label", { + key: key, + className: "jfb-multi-gateway__item" + }, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("input", { + type: "radio", + className: "jet-form-builder__field", + checked: index === 0, + readOnly: true + }), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", { + className: "jfb-multi-gateway__content", + onMouseDown: e => { + if (!e.target?.closest?.('[contenteditable="true"]')) { + e.preventDefault(); + } + } + }, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(RichText, { + tagName: "div", + className: "jfb-multi-gateway__label", + value: itemLabel, + placeholder: getGatewayLabel(key), + onChange: value => updateGatewaySetting(key, 'label', value) + }), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", { + className: "jfb-multi-gateway__description" + }, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("i", null, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(RichText, { + tagName: "span", + value: itemDesc, + placeholder: "You can add description here", + onChange: value => updateGatewaySetting(key, 'description', value) + }))))); + })) : (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", { className: "jfb-multi-gateway__empty" }, "No gateways selected"))); } @@ -282,4 +324,4 @@ __webpack_require__.r(__webpack_exports__); /******/ })() ; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBQTtBQUFBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFFQTtBQUlBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBR0E7QUFBQTtBQUdBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUFBO0FBS0E7QUFBQTtBQU9BOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDcEVBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFLQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7Ozs7Ozs7Ozs7O0FDeERBOzs7Ozs7Ozs7O0FDQUE7Ozs7OztBQ0FBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ3ZCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ1BBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDUEE7Ozs7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7O0FDTkE7QUFFQTtBQUVBO0FBSUE7QUFJQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vamZiLW11bHRpLWdhdGV3YXkvLi9lZGl0b3IvYmxvY2tzL211bHRpLWdhdGV3YXkvYmxvY2suc2NzcyIsIndlYnBhY2s6Ly9qZmItbXVsdGktZ2F0ZXdheS8uL2VkaXRvci9ibG9ja3MvbXVsdGktZ2F0ZXdheS9lZGl0LmpzIiwid2VicGFjazovL2pmYi1tdWx0aS1nYXRld2F5Ly4vZWRpdG9yL2Jsb2Nrcy9tdWx0aS1nYXRld2F5L2luZGV4LmpzIiwid2VicGFjazovL2pmYi1tdWx0aS1nYXRld2F5L2V4dGVybmFsIHdpbmRvdyBbXCJ3cFwiLFwiaG9va3NcIl0iLCJ3ZWJwYWNrOi8vamZiLW11bHRpLWdhdGV3YXkvZXh0ZXJuYWwgd2luZG93IFwiUmVhY3RcIiIsIndlYnBhY2s6Ly9qZmItbXVsdGktZ2F0ZXdheS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9qZmItbXVsdGktZ2F0ZXdheS93ZWJwYWNrL3J1bnRpbWUvY29tcGF0IGdldCBkZWZhdWx0IGV4cG9ydCIsIndlYnBhY2s6Ly9qZmItbXVsdGktZ2F0ZXdheS93ZWJwYWNrL3J1bnRpbWUvZGVmaW5lIHByb3BlcnR5IGdldHRlcnMiLCJ3ZWJwYWNrOi8vamZiLW11bHRpLWdhdGV3YXkvd2VicGFjay9ydW50aW1lL2hhc093blByb3BlcnR5IHNob3J0aGFuZCIsIndlYnBhY2s6Ly9qZmItbXVsdGktZ2F0ZXdheS93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL2pmYi1tdWx0aS1nYXRld2F5Ly4vZWRpdG9yL21haW4uanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5leHBvcnQge307IiwiY29uc3QgeyB1c2VCbG9ja1Byb3BzLCBSaWNoVGV4dCB9ID0gd3AuYmxvY2tFZGl0b3I7XHJcblxyXG5jb25zdCB7IHVzZU1ldGFTdGF0ZSB9ID0gSmV0RkJIb29rcztcclxuXHJcbmNvbnN0IGdhdGV3YXlzRGF0YSA9IHdpbmRvdz8uSmV0Rm9ybUVkaXRvckRhdGE/LmdhdGV3YXlzO1xyXG5jb25zdCBNT0RFX01BTlVBTCA9ICdtYW51YWwnO1xyXG5cclxuY29uc3QgZ2V0R2F0ZXdheUxhYmVsID0gKCB0eXBlICkgPT4gKFxyXG5cdGdhdGV3YXlzRGF0YT8ubGlzdD8uZmluZCggZWwgPT4gZWwudmFsdWUgPT09IHR5cGUgKT8ubGFiZWwgfHwgdHlwZVxyXG4pO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTXVsdGlHYXRld2F5RWRpdCggeyBhdHRyaWJ1dGVzLCBzZXRBdHRyaWJ1dGVzIH0gKSB7XHJcblx0Y29uc3QgYmxvY2tQcm9wcyA9IHVzZUJsb2NrUHJvcHMoIHtcclxuXHRcdGNsYXNzTmFtZTogJ2pmYi1tdWx0aS1nYXRld2F5JyxcclxuXHR9ICk7XHJcblxyXG5cdGNvbnN0IFsgbWV0YSBdID0gdXNlTWV0YVN0YXRlKCAnX2pmX2dhdGV3YXlzJyApO1xyXG5cclxuXHRjb25zdCBtb2RlID0gbWV0YT8ubW9kZSB8fCAnc2luZ2xlJztcclxuXHJcblx0bGV0IHNlbGVjdGVkID0gW107XHJcblx0aWYgKCBtb2RlID09PSBNT0RFX01BTlVBTCApIHtcclxuXHRcdHNlbGVjdGVkID0gKCBnYXRld2F5c0RhdGE/Lmxpc3QgfHwgW10gKVxyXG5cdFx0XHQubWFwKCAoIHsgdmFsdWUgfSApID0+IHZhbHVlIClcclxuXHRcdFx0LmZpbHRlciggKCBrZXkgKSA9PiAhIW1ldGE/Llsga2V5IF0/LnNob3dfb25fZnJvbnQgKTtcclxuXHR9IGVsc2Uge1xyXG5cdFx0Y29uc3QgZ3cgPSBtZXRhPy5nYXRld2F5O1xyXG5cdFx0aWYgKCBndyAmJiBndyAhPT0gJ25vbmUnICkge1xyXG5cdFx0XHRzZWxlY3RlZCA9IFsgZ3cgXTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdHJldHVybiAoXHJcblx0XHQ8ZGl2IHsgLi4uYmxvY2tQcm9wcyB9PlxyXG5cdFx0XHQ8UmljaFRleHRcclxuXHRcdFx0XHR0YWdOYW1lPVwiaDNcIlxyXG5cdFx0XHRcdHZhbHVlPXsgYXR0cmlidXRlcy50aXRsZSB8fCAnJyB9XHJcblx0XHRcdFx0cGxhY2Vob2xkZXI9XCJQYXltZW50IG9wdGlvbnNcIlxyXG5cdFx0XHRcdG9uQ2hhbmdlPXsgKCB0aXRsZSApID0+IHNldEF0dHJpYnV0ZXMoIHsgdGl0bGUgfSApIH1cclxuXHRcdFx0Lz5cclxuXHRcdFx0PFJpY2hUZXh0XHJcblx0XHRcdFx0dGFnTmFtZT1cInBcIlxyXG5cdFx0XHRcdHZhbHVlPXsgYXR0cmlidXRlcy5kZXNjcmlwdGlvbiB8fCAnJyB9XHJcblx0XHRcdFx0cGxhY2Vob2xkZXI9XCJPcHRpb25hbCB0ZXh0IGZvciB0aGlzIGZvcm0gc3RlcC5cIlxyXG5cdFx0XHRcdG9uQ2hhbmdlPXsgKCBkZXNjcmlwdGlvbiApID0+IHNldEF0dHJpYnV0ZXMoIHsgZGVzY3JpcHRpb24gfSApIH1cclxuXHRcdFx0Lz5cclxuXHJcblx0XHRcdDxkaXYgY2xhc3NOYW1lPVwiamZiLW11bHRpLWdhdGV3YXlfX2xpc3RcIj5cclxuXHRcdFx0XHR7IHNlbGVjdGVkLmxlbmd0aCA/IHNlbGVjdGVkLm1hcCggKCBrZXksIGluZGV4ICkgPT4gKFxyXG5cdFx0XHRcdFx0PGxhYmVsXHJcblx0XHRcdFx0XHRcdGtleT17IGtleSB9XHJcblx0XHRcdFx0XHRcdGNsYXNzTmFtZT1cImpmYi1tdWx0aS1nYXRld2F5X19pdGVtXCJcclxuXHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0PGlucHV0XHJcblx0XHRcdFx0XHRcdFx0dHlwZT1cInJhZGlvXCJcclxuXHRcdFx0XHRcdFx0XHRjaGVja2VkPXsgaW5kZXggPT09IDAgfVxyXG5cdFx0XHRcdFx0XHRcdHJlYWRPbmx5XHJcblx0XHRcdFx0XHRcdC8+XHJcblx0XHRcdFx0XHRcdDxzcGFuPnsgZ2V0R2F0ZXdheUxhYmVsKCBrZXkgKSB9PC9zcGFuPlxyXG5cdFx0XHRcdFx0PC9sYWJlbD5cclxuXHRcdFx0XHQpICkgOiAoXHJcblx0XHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cImpmYi1tdWx0aS1nYXRld2F5X19lbXB0eVwiPlxyXG5cdFx0XHRcdFx0XHRObyBnYXRld2F5cyBzZWxlY3RlZFxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0KSB9XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9kaXY+XHJcblx0KTtcclxufVxyXG4iLCJpbXBvcnQgTXVsdGlHYXRld2F5RWRpdCBmcm9tICcuL2VkaXQnO1xyXG5pbXBvcnQgbWV0YWRhdGEgZnJvbSAnQHJvb3QvYmxvY2tzL211bHRpLWdhdGV3YXkvYmxvY2suanNvbic7XHJcbmltcG9ydCAnLi9ibG9jay5zY3NzJztcclxuXHJcbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XHJcblxyXG5jb25zdCB7IGNyZWF0ZUJsb2NrIH0gPSB3cC5ibG9ja3M7XHJcblxyXG5jb25zdCB7IG5hbWUsIGljb24gPSAnJyB9ID0gbWV0YWRhdGE7XHJcblxyXG5tZXRhZGF0YS5hdHRyaWJ1dGVzLmlzUHJldmlldyA9IHtcclxuXHQndHlwZSc6ICdib29sZWFuJyxcclxuXHQnZGVmYXVsdCc6IGZhbHNlLFxyXG59O1xyXG5cclxuY29uc3Qgc2V0dGluZ3MgPSB7XHJcblx0aWNvbjogPHNwYW4gZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9eyB7IF9faHRtbDogaWNvbiB9IH0+PC9zcGFuPixcclxuXHRkZXNjcmlwdGlvbjogX18oXHJcblx0XHRgRGlzcGxheXMgYXZhaWxhYmxlIHBheW1lbnQgZ2F0ZXdheXMgc2VsZWN0ZWQgaW4gZm9ybSBzZXR0aW5ncy5gLFxyXG5cdFx0J2pldC1mb3JtLWJ1aWxkZXInLFxyXG5cdCksXHJcblx0ZWRpdDogTXVsdGlHYXRld2F5RWRpdCxcclxuXHRleGFtcGxlOiB7XHJcblx0XHRhdHRyaWJ1dGVzOiB7XHJcblx0XHRcdGlzUHJldmlldzogdHJ1ZSxcclxuXHRcdH0sXHJcblx0fSxcclxuXHR0cmFuc2Zvcm1zOiB7XHJcblx0XHR0bzogW1xyXG5cdFx0XHR7XHJcblx0XHRcdFx0dHlwZTogJ2Jsb2NrJyxcclxuXHRcdFx0XHRibG9ja3M6IFtcclxuXHRcdFx0XHRcdCdqZXQtZm9ybXMvdGV4dC1maWVsZCcsXHJcblx0XHRcdFx0XSxcclxuXHRcdFx0XHR0cmFuc2Zvcm06ICggYXR0cmlidXRlcyApID0+IHtcclxuXHRcdFx0XHRcdHJldHVybiBjcmVhdGVCbG9jayggJ2pldC1mb3Jtcy90ZXh0LWZpZWxkJyxcclxuXHRcdFx0XHRcdFx0eyAuLi5hdHRyaWJ1dGVzIH0gKTtcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdHByaW9yaXR5OiAwLFxyXG5cdFx0XHR9LFxyXG5cdFx0XSxcclxuXHRcdGZyb206IFtcclxuXHRcdFx0e1xyXG5cdFx0XHRcdHR5cGU6ICdibG9jaycsXHJcblx0XHRcdFx0YmxvY2tzOiBbXHJcblx0XHRcdFx0XHQnamV0LWZvcm1zL2NoZWNrYm94LWZpZWxkJyxcclxuXHRcdFx0XHRcdCdqZXQtZm9ybXMvcmFkaW8tZmllbGQnLFxyXG5cdFx0XHRcdFx0J2pldC1mb3Jtcy9zZWxlY3QtZmllbGQnLFxyXG5cdFx0XHRcdF0sXHJcblx0XHRcdFx0dHJhbnNmb3JtOiAoIGF0dHJpYnV0ZXMgKSA9PiB7XHJcblx0XHRcdFx0XHRyZXR1cm4gY3JlYXRlQmxvY2soIG5hbWUsIHsgLi4uYXR0cmlidXRlcyB9ICk7XHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHRwcmlvcml0eTogMCxcclxuXHRcdFx0fSxcclxuXHRcdF0sXHJcblx0fSxcclxufTtcclxuXHJcbmV4cG9ydCB7XHJcblx0bWV0YWRhdGEsXHJcblx0bmFtZSxcclxuXHRzZXR0aW5ncyxcclxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IHdpbmRvd1tcIndwXCJdW1wiaG9va3NcIl07IiwibW9kdWxlLmV4cG9ydHMgPSB3aW5kb3dbXCJSZWFjdFwiXTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiaW1wb3J0ICogYXMgTXVsdGlHYXRld2F5IGZyb20gJy4vYmxvY2tzL211bHRpLWdhdGV3YXknO1xyXG5cclxuaW1wb3J0IHsgYWRkRmlsdGVyIH0gZnJvbSAnQHdvcmRwcmVzcy9ob29rcyc7XHJcblxyXG5hZGRGaWx0ZXIoXHJcblx0J2pldC5mYi5yZWdpc3Rlci5maWVsZHMnLFxyXG5cdCdqZXQtZm9ybS1idWlsZGVyL211bHRpLWdhdGV3YXknLFxyXG5cdGZ1bmN0aW9uICggYmxvY2tzICkge1xyXG5cdFx0YmxvY2tzLnB1c2goXHJcblx0XHRcdE11bHRpR2F0ZXdheSxcclxuXHRcdCk7XHJcblxyXG5cdFx0cmV0dXJuIGJsb2NrcztcclxuXHR9LFxyXG4pOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFFQTtBQUlBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFJQTtBQUFBO0FBRUE7QUFFQTtBQUlBO0FBSUE7QUFFQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFHQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQU9BO0FBR0E7QUFBQTtBQU9BOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDcElBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFLQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7Ozs7Ozs7Ozs7O0FDeERBOzs7Ozs7Ozs7O0FDQUE7Ozs7OztBQ0FBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ3ZCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ1BBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDUEE7Ozs7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7O0FDTkE7QUFFQTtBQUVBO0FBSUE7QUFJQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vamZiLW11bHRpLWdhdGV3YXkvLi9lZGl0b3IvYmxvY2tzL211bHRpLWdhdGV3YXkvYmxvY2suc2Nzcz8zMTNhIiwid2VicGFjazovL2pmYi1tdWx0aS1nYXRld2F5Ly4vZWRpdG9yL2Jsb2Nrcy9tdWx0aS1nYXRld2F5L2VkaXQuanMiLCJ3ZWJwYWNrOi8vamZiLW11bHRpLWdhdGV3YXkvLi9lZGl0b3IvYmxvY2tzL211bHRpLWdhdGV3YXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vamZiLW11bHRpLWdhdGV3YXkvZXh0ZXJuYWwgd2luZG93IFtcIndwXCIsXCJob29rc1wiXSIsIndlYnBhY2s6Ly9qZmItbXVsdGktZ2F0ZXdheS9leHRlcm5hbCB3aW5kb3cgXCJSZWFjdFwiIiwid2VicGFjazovL2pmYi1tdWx0aS1nYXRld2F5L3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL2pmYi1tdWx0aS1nYXRld2F5L3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL2pmYi1tdWx0aS1nYXRld2F5L3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9qZmItbXVsdGktZ2F0ZXdheS93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL2pmYi1tdWx0aS1nYXRld2F5L3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vamZiLW11bHRpLWdhdGV3YXkvLi9lZGl0b3IvbWFpbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbmV4cG9ydCB7fTsiLCJjb25zdCB7IHVzZUJsb2NrUHJvcHMsIFJpY2hUZXh0IH0gPSB3cC5ibG9ja0VkaXRvcjtcclxuY29uc3QgeyB1c2VNZXRhU3RhdGUgfSA9IEpldEZCSG9va3M7XHJcblxyXG5jb25zdCBnYXRld2F5c0RhdGEgPSB3aW5kb3c/LkpldEZvcm1FZGl0b3JEYXRhPy5nYXRld2F5cztcclxuY29uc3QgTU9ERV9NQU5VQUwgPSAnbWFudWFsJztcclxuXHJcbmNvbnN0IGdldEdhdGV3YXlMYWJlbCA9ICggdHlwZSApID0+IChcclxuXHRnYXRld2F5c0RhdGE/Lmxpc3Q/LmZpbmQoIGVsID0+IGVsLnZhbHVlID09PSB0eXBlICk/LmxhYmVsIHx8IHR5cGVcclxuKTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE11bHRpR2F0ZXdheUVkaXQoIHsgYXR0cmlidXRlcywgc2V0QXR0cmlidXRlcyB9ICkge1xyXG5cdGNvbnN0IGJsb2NrUHJvcHMgPSB1c2VCbG9ja1Byb3BzKCB7XHJcblx0XHRjbGFzc05hbWU6ICdqZmItbXVsdGktZ2F0ZXdheScsXHJcblx0fSApO1xyXG5cclxuXHRjb25zdCBbIG1ldGEgXSA9IHVzZU1ldGFTdGF0ZSggJ19qZl9nYXRld2F5cycgKTtcclxuXHJcblx0Y29uc3QgbW9kZSA9IG1ldGE/Lm1vZGUgfHwgJ3NpbmdsZSc7XHJcblxyXG5cdGxldCBzZWxlY3RlZCA9IFtdO1xyXG5cdGlmICggbW9kZSA9PT0gTU9ERV9NQU5VQUwgKSB7XHJcblx0XHRzZWxlY3RlZCA9ICggZ2F0ZXdheXNEYXRhPy5saXN0IHx8IFtdIClcclxuXHRcdFx0Lm1hcCggKCB7IHZhbHVlIH0gKSA9PiB2YWx1ZSApXHJcblx0XHRcdC5maWx0ZXIoICgga2V5ICkgPT4gISFtZXRhPy5bIGtleSBdPy5zaG93X29uX2Zyb250ICk7XHJcblx0fSBlbHNlIHtcclxuXHRcdGNvbnN0IGd3ID0gbWV0YT8uZ2F0ZXdheTtcclxuXHRcdGlmICggZ3cgJiYgZ3cgIT09ICdub25lJyApIHtcclxuXHRcdFx0c2VsZWN0ZWQgPSBbIGd3IF07XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRjb25zdCBnYXRld2F5c1NldHRpbmdzID0gYXR0cmlidXRlcy5nYXRld2F5c1NldHRpbmdzIHx8IHt9O1xyXG5cclxuXHRjb25zdCB1cGRhdGVHYXRld2F5U2V0dGluZyA9ICgga2V5LCBmaWVsZCwgdmFsdWUgKSA9PiB7XHJcblx0XHRzZXRBdHRyaWJ1dGVzKCB7XHJcblx0XHRcdGdhdGV3YXlzU2V0dGluZ3M6IHtcclxuXHRcdFx0XHQuLi5nYXRld2F5c1NldHRpbmdzLFxyXG5cdFx0XHRcdFsga2V5IF06IHtcclxuXHRcdFx0XHRcdC4uLiggZ2F0ZXdheXNTZXR0aW5nc1sga2V5IF0gfHwge30gKSxcclxuXHRcdFx0XHRcdFsgZmllbGQgXTogdmFsdWUsXHJcblx0XHRcdFx0fSxcclxuXHRcdFx0fSxcclxuXHRcdH0gKTtcclxuXHR9O1xyXG5cclxuXHRyZXR1cm4gKFxyXG5cdFx0PGRpdiB7IC4uLmJsb2NrUHJvcHMgfT5cclxuXHRcdFx0PGRpdiBjbGFzc05hbWU9XCJqZmItbXVsdGktZ2F0ZXdheVwiPlxyXG5cdFx0XHRcdDxSaWNoVGV4dFxyXG5cdFx0XHRcdFx0dGFnTmFtZT1cImgzXCJcclxuXHRcdFx0XHRcdGNsYXNzTmFtZT1cImpmYi1tdWx0aS1nYXRld2F5X190aXRsZVwiXHJcblx0XHRcdFx0XHR2YWx1ZT17IGF0dHJpYnV0ZXMudGl0bGUgfHwgJycgfVxyXG5cdFx0XHRcdFx0cGxhY2Vob2xkZXI9XCJPcHRpb25hbDogYWRkIGEgaGVhZGluZyBmb3IgcGF5bWVudCBvcHRpb25z4oCmXCJcclxuXHRcdFx0XHRcdG9uQ2hhbmdlPXsgKCB0aXRsZSApID0+IHNldEF0dHJpYnV0ZXMoIHsgdGl0bGUgfSApIH1cclxuXHRcdFx0XHQvPlxyXG5cclxuXHRcdFx0XHQ8UmljaFRleHRcclxuXHRcdFx0XHRcdHRhZ05hbWU9XCJwXCJcclxuXHRcdFx0XHRcdGNsYXNzTmFtZT1cImpmYi1tdWx0aS1nYXRld2F5X19kZXNjXCJcclxuXHRcdFx0XHRcdHZhbHVlPXsgYXR0cmlidXRlcy5kZXNjcmlwdGlvbiB8fCAnJyB9XHJcblx0XHRcdFx0XHRwbGFjZWhvbGRlcj1cIk9wdGlvbmFsOiBhZGQgYSBzaG9ydCBkZXNjcmlwdGlvbiBmb3IgdGhpcyBzdGVw4oCmXCJcclxuXHRcdFx0XHRcdG9uQ2hhbmdlPXsgKCBkZXNjcmlwdGlvbiApID0+IHNldEF0dHJpYnV0ZXMoIHsgZGVzY3JpcHRpb24gfSApIH1cclxuXHRcdFx0XHQvPlxyXG5cclxuXHRcdFx0XHR7IHNlbGVjdGVkLmxlbmd0aCA/IChcclxuXHRcdFx0XHRcdDxkaXYgY2xhc3NOYW1lPVwiamZiLW11bHRpLWdhdGV3YXlfX2xpc3RcIj5cclxuXHRcdFx0XHRcdFx0eyBzZWxlY3RlZC5tYXAoICgga2V5LCBpbmRleCApID0+IHtcclxuXHRcdFx0XHRcdFx0XHRjb25zdCBzYXZlZCA9IGdhdGV3YXlzU2V0dGluZ3M/Llsga2V5IF0gfHwge307XHJcblxyXG5cdFx0XHRcdFx0XHRcdGNvbnN0IGl0ZW1MYWJlbCA9ICggdHlwZW9mIHNhdmVkLmxhYmVsID09PSAnc3RyaW5nJyApXHJcblx0XHRcdFx0XHRcdFx0XHQ/IHNhdmVkLmxhYmVsXHJcblx0XHRcdFx0XHRcdFx0XHQ6IGdldEdhdGV3YXlMYWJlbCgga2V5ICk7XHJcblxyXG5cdFx0XHRcdFx0XHRcdGNvbnN0IGl0ZW1EZXNjID0gKCB0eXBlb2Ygc2F2ZWQuZGVzY3JpcHRpb24gPT09ICdzdHJpbmcnIClcclxuXHRcdFx0XHRcdFx0XHRcdD8gc2F2ZWQuZGVzY3JpcHRpb25cclxuXHRcdFx0XHRcdFx0XHRcdDogJyc7XHJcblxyXG5cdFx0XHRcdFx0XHRcdHJldHVybiAoXHJcblx0XHRcdFx0XHRcdFx0XHQ8bGFiZWxcclxuXHRcdFx0XHRcdFx0XHRcdFx0a2V5PXsga2V5IH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3NOYW1lPVwiamZiLW11bHRpLWdhdGV3YXlfX2l0ZW1cIlxyXG5cdFx0XHRcdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8aW5wdXRcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlPVwicmFkaW9cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzTmFtZT1cImpldC1mb3JtLWJ1aWxkZXJfX2ZpZWxkXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjaGVja2VkPXsgaW5kZXggPT09IDAgfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJlYWRPbmx5XHJcblx0XHRcdFx0XHRcdFx0XHRcdC8+XHJcblxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3NOYW1lPVwiamZiLW11bHRpLWdhdGV3YXlfX2NvbnRlbnRcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdG9uTW91c2VEb3duPXsgKCBlICkgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCAhIGUudGFyZ2V0Py5jbG9zZXN0Py4oICdbY29udGVudGVkaXRhYmxlPVwidHJ1ZVwiXScgKSApIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0gfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PFJpY2hUZXh0XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0YWdOYW1lPVwiZGl2XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzTmFtZT1cImpmYi1tdWx0aS1nYXRld2F5X19sYWJlbFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZT17IGl0ZW1MYWJlbCB9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwbGFjZWhvbGRlcj17IGdldEdhdGV3YXlMYWJlbCgga2V5ICkgfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0b25DaGFuZ2U9eyAoIHZhbHVlICkgPT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dXBkYXRlR2F0ZXdheVNldHRpbmcoIGtleSwgJ2xhYmVsJywgdmFsdWUgKVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8+XHJcblxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3NOYW1lPVwiamZiLW11bHRpLWdhdGV3YXlfX2Rlc2NyaXB0aW9uXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8aT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PFJpY2hUZXh0XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGFnTmFtZT1cInNwYW5cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlPXsgaXRlbURlc2MgfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHBsYWNlaG9sZGVyPVwiWW91IGNhbiBhZGQgZGVzY3JpcHRpb24gaGVyZVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0b25DaGFuZ2U9eyAoIHZhbHVlICkgPT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHVwZGF0ZUdhdGV3YXlTZXR0aW5nKCBrZXksICdkZXNjcmlwdGlvbicsIHZhbHVlIClcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2k+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0PC9sYWJlbD5cclxuXHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHR9ICkgfVxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0KSA6IChcclxuXHRcdFx0XHRcdDxkaXYgY2xhc3NOYW1lPVwiamZiLW11bHRpLWdhdGV3YXlfX2VtcHR5XCI+XHJcblx0XHRcdFx0XHRcdE5vIGdhdGV3YXlzIHNlbGVjdGVkXHJcblx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQpIH1cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQ8L2Rpdj5cclxuXHQpO1xyXG59XHJcbiIsImltcG9ydCBNdWx0aUdhdGV3YXlFZGl0IGZyb20gJy4vZWRpdCc7XHJcbmltcG9ydCBtZXRhZGF0YSBmcm9tICdAcm9vdC9ibG9ja3MvbXVsdGktZ2F0ZXdheS9ibG9jay5qc29uJztcclxuaW1wb3J0ICcuL2Jsb2NrLnNjc3MnO1xyXG5cclxuY29uc3QgeyBfXyB9ID0gd3AuaTE4bjtcclxuXHJcbmNvbnN0IHsgY3JlYXRlQmxvY2sgfSA9IHdwLmJsb2NrcztcclxuXHJcbmNvbnN0IHsgbmFtZSwgaWNvbiA9ICcnIH0gPSBtZXRhZGF0YTtcclxuXHJcbm1ldGFkYXRhLmF0dHJpYnV0ZXMuaXNQcmV2aWV3ID0ge1xyXG5cdCd0eXBlJzogJ2Jvb2xlYW4nLFxyXG5cdCdkZWZhdWx0JzogZmFsc2UsXHJcbn07XHJcblxyXG5jb25zdCBzZXR0aW5ncyA9IHtcclxuXHRpY29uOiA8c3BhbiBkYW5nZXJvdXNseVNldElubmVySFRNTD17IHsgX19odG1sOiBpY29uIH0gfT48L3NwYW4+LFxyXG5cdGRlc2NyaXB0aW9uOiBfXyhcclxuXHRcdGBEaXNwbGF5cyBhdmFpbGFibGUgcGF5bWVudCBnYXRld2F5cyBzZWxlY3RlZCBpbiBmb3JtIHNldHRpbmdzLmAsXHJcblx0XHQnamV0LWZvcm0tYnVpbGRlcicsXHJcblx0KSxcclxuXHRlZGl0OiBNdWx0aUdhdGV3YXlFZGl0LFxyXG5cdGV4YW1wbGU6IHtcclxuXHRcdGF0dHJpYnV0ZXM6IHtcclxuXHRcdFx0aXNQcmV2aWV3OiB0cnVlLFxyXG5cdFx0fSxcclxuXHR9LFxyXG5cdHRyYW5zZm9ybXM6IHtcclxuXHRcdHRvOiBbXHJcblx0XHRcdHtcclxuXHRcdFx0XHR0eXBlOiAnYmxvY2snLFxyXG5cdFx0XHRcdGJsb2NrczogW1xyXG5cdFx0XHRcdFx0J2pldC1mb3Jtcy90ZXh0LWZpZWxkJyxcclxuXHRcdFx0XHRdLFxyXG5cdFx0XHRcdHRyYW5zZm9ybTogKCBhdHRyaWJ1dGVzICkgPT4ge1xyXG5cdFx0XHRcdFx0cmV0dXJuIGNyZWF0ZUJsb2NrKCAnamV0LWZvcm1zL3RleHQtZmllbGQnLFxyXG5cdFx0XHRcdFx0XHR7IC4uLmF0dHJpYnV0ZXMgfSApO1xyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0cHJpb3JpdHk6IDAsXHJcblx0XHRcdH0sXHJcblx0XHRdLFxyXG5cdFx0ZnJvbTogW1xyXG5cdFx0XHR7XHJcblx0XHRcdFx0dHlwZTogJ2Jsb2NrJyxcclxuXHRcdFx0XHRibG9ja3M6IFtcclxuXHRcdFx0XHRcdCdqZXQtZm9ybXMvY2hlY2tib3gtZmllbGQnLFxyXG5cdFx0XHRcdFx0J2pldC1mb3Jtcy9yYWRpby1maWVsZCcsXHJcblx0XHRcdFx0XHQnamV0LWZvcm1zL3NlbGVjdC1maWVsZCcsXHJcblx0XHRcdFx0XSxcclxuXHRcdFx0XHR0cmFuc2Zvcm06ICggYXR0cmlidXRlcyApID0+IHtcclxuXHRcdFx0XHRcdHJldHVybiBjcmVhdGVCbG9jayggbmFtZSwgeyAuLi5hdHRyaWJ1dGVzIH0gKTtcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdHByaW9yaXR5OiAwLFxyXG5cdFx0XHR9LFxyXG5cdFx0XSxcclxuXHR9LFxyXG59O1xyXG5cclxuZXhwb3J0IHtcclxuXHRtZXRhZGF0YSxcclxuXHRuYW1lLFxyXG5cdHNldHRpbmdzLFxyXG59OyIsIm1vZHVsZS5leHBvcnRzID0gd2luZG93W1wid3BcIl1bXCJob29rc1wiXTsiLCJtb2R1bGUuZXhwb3J0cyA9IHdpbmRvd1tcIlJlYWN0XCJdOyIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJpbXBvcnQgKiBhcyBNdWx0aUdhdGV3YXkgZnJvbSAnLi9ibG9ja3MvbXVsdGktZ2F0ZXdheSc7XHJcblxyXG5pbXBvcnQgeyBhZGRGaWx0ZXIgfSBmcm9tICdAd29yZHByZXNzL2hvb2tzJztcclxuXHJcbmFkZEZpbHRlcihcclxuXHQnamV0LmZiLnJlZ2lzdGVyLmZpZWxkcycsXHJcblx0J2pldC1mb3JtLWJ1aWxkZXIvbXVsdGktZ2F0ZXdheScsXHJcblx0ZnVuY3Rpb24gKCBibG9ja3MgKSB7XHJcblx0XHRibG9ja3MucHVzaChcclxuXHRcdFx0TXVsdGlHYXRld2F5LFxyXG5cdFx0KTtcclxuXHJcblx0XHRyZXR1cm4gYmxvY2tzO1xyXG5cdH0sXHJcbik7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/modules/multi-gateway/assets/build/multi-gateway.asset.php b/modules/multi-gateway/assets/build/multi-gateway.asset.php index 433e1de5d..8f0c57058 100644 --- a/modules/multi-gateway/assets/build/multi-gateway.asset.php +++ b/modules/multi-gateway/assets/build/multi-gateway.asset.php @@ -1 +1 @@ - array(), 'version' => 'ae22e8b2fe34014d12bf'); + array(), 'version' => 'fc11dc696fe96f71d520'); diff --git a/modules/multi-gateway/assets/build/multi-gateway.js b/modules/multi-gateway/assets/build/multi-gateway.js index f931c0f86..f8ddfa558 100644 --- a/modules/multi-gateway/assets/build/multi-gateway.js +++ b/modules/multi-gateway/assets/build/multi-gateway.js @@ -66,4 +66,4 @@ __webpack_require__.r(__webpack_exports__); /******/ })() ; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktZ2F0ZXdheS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOzs7Ozs7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDdkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vamZiLW11bHRpLWdhdGV3YXkvLi9mcm9udGVuZC9ibG9ja3MvbXVsdGktZ2F0ZXdheS9tdWx0aS1nYXRld2F5LnNjc3MiLCJ3ZWJwYWNrOi8vamZiLW11bHRpLWdhdGV3YXkvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vamZiLW11bHRpLWdhdGV3YXkvd2VicGFjay9ydW50aW1lL21ha2UgbmFtZXNwYWNlIG9iamVjdCIsIndlYnBhY2s6Ly9qZmItbXVsdGktZ2F0ZXdheS8uL2Zyb250ZW5kL2Jsb2Nrcy9tdWx0aS1nYXRld2F5L21haW4uanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luXG5leHBvcnQge307IiwiLy8gVGhlIG1vZHVsZSBjYWNoZVxudmFyIF9fd2VicGFja19tb2R1bGVfY2FjaGVfXyA9IHt9O1xuXG4vLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcblx0dmFyIGNhY2hlZE1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF07XG5cdGlmIChjYWNoZWRNb2R1bGUgIT09IHVuZGVmaW5lZCkge1xuXHRcdHJldHVybiBjYWNoZWRNb2R1bGUuZXhwb3J0cztcblx0fVxuXHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuXHR2YXIgbW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXSA9IHtcblx0XHQvLyBubyBtb2R1bGUuaWQgbmVlZGVkXG5cdFx0Ly8gbm8gbW9kdWxlLmxvYWRlZCBuZWVkZWRcblx0XHRleHBvcnRzOiB7fVxuXHR9O1xuXG5cdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuXHRfX3dlYnBhY2tfbW9kdWxlc19fW21vZHVsZUlkXShtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuXHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuXHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG59XG5cbiIsIi8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uciA9IChleHBvcnRzKSA9PiB7XG5cdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuXHR9XG5cdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG59OyIsImltcG9ydCAnLi9tdWx0aS1nYXRld2F5LnNjc3MnOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibXVsdGktZ2F0ZXdheS5qcyIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOzs7Ozs7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDdkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vamZiLW11bHRpLWdhdGV3YXkvLi9mcm9udGVuZC9ibG9ja3MvbXVsdGktZ2F0ZXdheS9tdWx0aS1nYXRld2F5LnNjc3M/MjlhNCIsIndlYnBhY2s6Ly9qZmItbXVsdGktZ2F0ZXdheS93ZWJwYWNrL2Jvb3RzdHJhcCIsIndlYnBhY2s6Ly9qZmItbXVsdGktZ2F0ZXdheS93ZWJwYWNrL3J1bnRpbWUvbWFrZSBuYW1lc3BhY2Ugb2JqZWN0Iiwid2VicGFjazovL2pmYi1tdWx0aS1nYXRld2F5Ly4vZnJvbnRlbmQvYmxvY2tzL211bHRpLWdhdGV3YXkvbWFpbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbmV4cG9ydCB7fTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiaW1wb3J0ICcuL211bHRpLWdhdGV3YXkuc2Nzcyc7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file diff --git a/modules/multi-gateway/assets/src/editor/blocks/multi-gateway/edit.js b/modules/multi-gateway/assets/src/editor/blocks/multi-gateway/edit.js index a234d7ec9..c31c1b09c 100644 --- a/modules/multi-gateway/assets/src/editor/blocks/multi-gateway/edit.js +++ b/modules/multi-gateway/assets/src/editor/blocks/multi-gateway/edit.js @@ -1,5 +1,4 @@ const { useBlockProps, RichText } = wp.blockEditor; - const { useMetaState } = JetFBHooks; const gatewaysData = window?.JetFormEditorData?.gateways; @@ -30,35 +29,100 @@ export default function MultiGatewayEdit( { attributes, setAttributes } ) { } } + const gatewaysSettings = attributes.gatewaysSettings || {}; + + const updateGatewaySetting = ( key, field, value ) => { + setAttributes( { + gatewaysSettings: { + ...gatewaysSettings, + [ key ]: { + ...( gatewaysSettings[ key ] || {} ), + [ field ]: value, + }, + }, + } ); + }; + return (
- setAttributes( { title } ) } - /> - setAttributes( { description } ) } - /> - -
- { selected.length ? selected.map( ( key, index ) => ( - - ) ) : ( +
+ setAttributes( { title } ) } + /> + + setAttributes( { description } ) } + /> + + { selected.length ? ( +
+ { selected.map( ( key, index ) => { + const saved = gatewaysSettings?.[ key ] || {}; + + const itemLabel = ( typeof saved.label === 'string' ) + ? saved.label + : getGatewayLabel( key ); + + const itemDesc = ( typeof saved.description === 'string' ) + ? saved.description + : ''; + + return ( + + ); + } ) } +
+ ) : (
No gateways selected
diff --git a/modules/multi-gateway/blocks/multi-gateway/block-template.php b/modules/multi-gateway/blocks/multi-gateway/block-template.php index 5d02d8714..a9f2c3d1a 100644 --- a/modules/multi-gateway/blocks/multi-gateway/block-template.php +++ b/modules/multi-gateway/blocks/multi-gateway/block-template.php @@ -12,7 +12,6 @@ $form_id = (int) $this->form_id; - $parent = wp_is_post_revision( $form_id ); if ( $parent ) { $form_id = (int) $parent; @@ -30,7 +29,7 @@ $raw = get_post_meta( $form_id, '_jf_gateways', true ); $meta = is_string( $raw ) ? json_decode( $raw, true ) : (array) $raw; -$meta = is_array( $meta ) ? $meta : []; +$meta = is_array( $meta ) ? $meta : array(); $mode = $meta['mode'] ?? 'single'; $list = array(); @@ -54,24 +53,31 @@ } } -$label = $args['title'] ?? ''; -$desc = $args['description'] ?? ''; +$title = $args['title'] ?? ''; +$description = $args['description'] ?? ''; + +$field_name = ! empty( $args['name'] ) ? $args['name'] : 'multi_gateway'; +$name = $this->block_type->get_field_name( $field_name ); -$field_name = $args['name'] ?: 'multi_gateway'; +// Per-gateway settings stored in block attributes. +$gw_settings_raw = $args['gatewaysSettings'] ?? array(); +$gw_settings = is_string( $gw_settings_raw ) + ? json_decode( $gw_settings_raw, true ) + : (array) $gw_settings_raw; -$name = $this->block_type->get_field_name( $field_name ); +$gw_settings = is_array( $gw_settings ) ? $gw_settings : array(); ?>
- +

- +

- +

- +

@@ -82,21 +88,39 @@
$gateway_key ) : ?> +
- - diff --git a/modules/multi-gateway/blocks/multi-gateway/block-type.php b/modules/multi-gateway/blocks/multi-gateway/block-type.php index 295a32229..62b273c6f 100644 --- a/modules/multi-gateway/blocks/multi-gateway/block-type.php +++ b/modules/multi-gateway/blocks/multi-gateway/block-type.php @@ -40,4 +40,81 @@ public function get_field_template( $path ) { return $module->get_dir( 'blocks/multi-gateway/block-template.php' ); } + + public function get_css_scheme() { + return array( + 'container' => '.jfb-multi-gateway', + 'title' => '.jfb-multi-gateway__title', + 'desc' => '.jfb-multi-gateway__desc', + 'empty' => '.jfb-multi-gateway__empty', + 'list' => '.jfb-multi-gateway__list', + 'item' => '.jfb-multi-gateway__item', + 'item_input' => '.jfb-multi-gateway__item .jet-form-builder__field', + 'item_content' => '.jfb-multi-gateway__content', + 'item_title' => '.jfb-multi-gateway__label', + 'item_desc' => '.jfb-multi-gateway__description', + ); + } + + public function general_style_unregister() { + return array( 'wrap', 'input', 'label', 'required', 'description' ); + } + + public function jsm_controls() { + + $this->controls_manager->start_section( + 'style_controls', + array( + 'id' => 'mg_wrapper', + 'title' => __( 'Wrapper', 'jet-form-builder' ), + ) + ); + + $this->add_margin_padding( + $this->css_scheme['container'], + array( + 'padding' => array( + 'id' => 'mg_wrapper_padding', + 'separator' => 'after', + ), + ), + array( 'padding' ) + ); + + + $this->controls_manager->add_control( + array( + 'id' => 'mg_wrapper_bg', + 'type' => 'color-picker', + 'label' => __( 'Background', 'jet-form-builder' ), + 'separator' => 'after', + 'css_selector' => array( + $this->css_scheme['container'] => 'background-color: {{VALUE}};', + ), + ) + ); + + + $this->controls_manager->add_control( + array( + 'id' => 'mg_wrapper_border', + 'type' => 'border', + 'label' => __( 'Border', 'jet-form-builder' ), + 'separator' => 'after', + 'css_selector' => array( + $this->css_scheme['container'] => 'border-style:{{STYLE}};border-width:{{WIDTH}};border-radius:{{RADIUS}};border-color:{{COLOR}};', + ), + 'attributes' => array( + 'default' => array( + 'value' => array( + 'borderStyle' => 'solid', + ), + ), + ), + ) + ); + + + $this->controls_manager->end_section(); + } } diff --git a/modules/multi-gateway/blocks/multi-gateway/block.json b/modules/multi-gateway/blocks/multi-gateway/block.json index e9f94d962..7f9c94f38 100644 --- a/modules/multi-gateway/blocks/multi-gateway/block.json +++ b/modules/multi-gateway/blocks/multi-gateway/block.json @@ -16,7 +16,8 @@ "default": false }, "title": { "type": "string", "default": "" }, - "description": { "type": "string", "default": "" } + "description": { "type": "string", "default": "" }, + "gatewaysSettings": { "type": "object", "default": {} } }, "viewScript": "jet-fb-multi-gateway", "style": "jet-fb-multi-gateway" From b4268a7be0d81d4ffa6ddde6d6be087aac960705 Mon Sep 17 00:00:00 2001 From: yurkodmtr <4au.4au.4au@gmail.com> Date: Tue, 17 Feb 2026 14:10:32 +0200 Subject: [PATCH 13/13] UPD: save progress https://github.com/Crocoblock/issues-tracker/issues/17484 --- .../assets/build/editor.asset.php | 2 +- modules/multi-gateway/assets/build/editor.css | 29 +- modules/multi-gateway/assets/build/editor.js | 18 +- .../editor/blocks/multi-gateway/block.scss | 29 +- .../src/editor/blocks/multi-gateway/edit.js | 14 +- .../blocks/multi-gateway/block-template.php | 115 +++--- .../blocks/multi-gateway/block-type.php | 359 +++++++++++++++++- .../blocks/multi-gateway/block.json | 1 + 8 files changed, 465 insertions(+), 102 deletions(-) diff --git a/modules/multi-gateway/assets/build/editor.asset.php b/modules/multi-gateway/assets/build/editor.asset.php index aa28fac79..e5d7a9d43 100644 --- a/modules/multi-gateway/assets/build/editor.asset.php +++ b/modules/multi-gateway/assets/build/editor.asset.php @@ -1 +1 @@ - array('react', 'wp-hooks'), 'version' => '89b6caa6b2b12eb1dbfd'); + array('react', 'wp-hooks'), 'version' => 'ca64342c859165474b36'); diff --git a/modules/multi-gateway/assets/build/editor.css b/modules/multi-gateway/assets/build/editor.css index 273ffb5e6..05ff6083b 100644 --- a/modules/multi-gateway/assets/build/editor.css +++ b/modules/multi-gateway/assets/build/editor.css @@ -1,6 +1,11 @@ /*!*********************************************************************************************************************************************************************************************************!*\ !*** css ../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/postcss-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./editor/blocks/multi-gateway/block.scss ***! \*********************************************************************************************************************************************************************************************************/ +.jfb-multi-gateway, +.jfb-multi-gateway * { + box-sizing: border-box; +} + .jfb-multi-gateway h3 { margin: 0 0 6px; } @@ -11,26 +16,34 @@ } .jfb-multi-gateway__list { - border: 1px solid #dcdcde; - border-radius: 2px; - overflow: hidden; - background: #fff; + display: flex; + flex-direction: column; + gap: 10px; } .jfb-multi-gateway__item { display: flex; - gap: 10px; align-items: flex-start; + gap: 10px; + width: 100%; padding: 16px; + margin: 0; border-top: 1px solid #dcdcde; + cursor: pointer; } .jfb-multi-gateway__item:first-child { border-top: 0; } -.jfb-multi-gateway__item input { - margin-top: 2px; +.jfb-multi-gateway__item .jet-form-builder__field[type=radio] { + margin: 0; + flex: 0 0 auto; +} + +.jfb-multi-gateway__content { + flex: 1 1 auto; + min-width: 0; } .jfb-multi-gateway__empty { @@ -38,4 +51,4 @@ opacity: 0.7; } -/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNzcyIsIm1hcHBpbmdzIjoiOzs7QUFBQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9qZmItbXVsdGktZ2F0ZXdheS8uL2VkaXRvci9ibG9ja3MvbXVsdGktZ2F0ZXdheS9ibG9jay5zY3NzIl0sInNvdXJjZXNDb250ZW50IjpbIi5qZmItbXVsdGktZ2F0ZXdheSBoMyB7XHJcbiAgbWFyZ2luOiAwIDAgNnB4O1xyXG59XHJcblxyXG4uamZiLW11bHRpLWdhdGV3YXkgcCB7XHJcbiAgbWFyZ2luOiAwIDAgMTRweDtcclxuICBvcGFjaXR5OiAwLjc1O1xyXG59XHJcblxyXG4uamZiLW11bHRpLWdhdGV3YXlfX2xpc3Qge1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICNkY2RjZGU7XHJcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xyXG4gIG92ZXJmbG93OiBoaWRkZW47XHJcbiAgYmFja2dyb3VuZDogI2ZmZjtcclxufVxyXG5cclxuLmpmYi1tdWx0aS1nYXRld2F5X19pdGVtIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGdhcDogMTBweDtcclxuICBhbGlnbi1pdGVtczogZmxleC1zdGFydDtcclxuICBwYWRkaW5nOiAxNnB4O1xyXG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZGNkY2RlO1xyXG59XHJcblxyXG4uamZiLW11bHRpLWdhdGV3YXlfX2l0ZW06Zmlyc3QtY2hpbGQge1xyXG4gIGJvcmRlci10b3A6IDA7XHJcbn1cclxuXHJcbi5qZmItbXVsdGktZ2F0ZXdheV9faXRlbSBpbnB1dCB7XHJcbiAgbWFyZ2luLXRvcDogMnB4O1xyXG59XHJcblxyXG4uamZiLW11bHRpLWdhdGV3YXlfX2VtcHR5IHtcclxuICBwYWRkaW5nOiAxNnB4O1xyXG4gIG9wYWNpdHk6IDAuNztcclxufSJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/ \ No newline at end of file +/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmNzcyIsIm1hcHBpbmdzIjoiOzs7QUFBQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSIsInNvdXJjZXMiOlsid2VicGFjazovL2pmYi1tdWx0aS1nYXRld2F5Ly4vZWRpdG9yL2Jsb2Nrcy9tdWx0aS1nYXRld2F5L2Jsb2NrLnNjc3MiXSwic291cmNlc0NvbnRlbnQiOlsiLmpmYi1tdWx0aS1nYXRld2F5LFxyXG4uamZiLW11bHRpLWdhdGV3YXkgKiB7XHJcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxufVxyXG5cclxuLmpmYi1tdWx0aS1nYXRld2F5IGgzIHtcclxuICBtYXJnaW46IDAgMCA2cHg7XHJcbn1cclxuXHJcbi5qZmItbXVsdGktZ2F0ZXdheSBwIHtcclxuICBtYXJnaW46IDAgMCAxNHB4O1xyXG4gIG9wYWNpdHk6IDAuNzU7XHJcbn1cclxuXHJcbi5qZmItbXVsdGktZ2F0ZXdheV9fbGlzdCB7XHJcbiAgZGlzcGxheTogZmxleDtcclxuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG4gIGdhcDogMTBweDtcclxufVxyXG5cclxuLmpmYi1tdWx0aS1nYXRld2F5X19pdGVtIHtcclxuICBkaXNwbGF5OiBmbGV4O1xyXG4gIGFsaWduLWl0ZW1zOiBmbGV4LXN0YXJ0O1xyXG4gIGdhcDogMTBweDtcclxuICB3aWR0aDogMTAwJTtcclxuICBwYWRkaW5nOiAxNnB4O1xyXG4gIG1hcmdpbjogMDtcclxuICBib3JkZXItdG9wOiAxcHggc29saWQgI2RjZGNkZTtcclxuICBjdXJzb3I6IHBvaW50ZXI7XHJcbn1cclxuXHJcbi5qZmItbXVsdGktZ2F0ZXdheV9faXRlbTpmaXJzdC1jaGlsZCB7XHJcbiAgYm9yZGVyLXRvcDogMDtcclxufVxyXG5cclxuLmpmYi1tdWx0aS1nYXRld2F5X19pdGVtIC5qZXQtZm9ybS1idWlsZGVyX19maWVsZFt0eXBlPVwicmFkaW9cIl0ge1xyXG4gIG1hcmdpbjogMDtcclxuICBmbGV4OiAwIDAgYXV0bztcclxufVxyXG5cclxuLmpmYi1tdWx0aS1nYXRld2F5X19jb250ZW50IHtcclxuICBmbGV4OiAxIDEgYXV0bztcclxuICBtaW4td2lkdGg6IDA7XHJcbn1cclxuXHJcbi5qZmItbXVsdGktZ2F0ZXdheV9fZW1wdHkge1xyXG4gIHBhZGRpbmc6IDE2cHg7XHJcbiAgb3BhY2l0eTogMC43O1xyXG59XHJcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==*/ \ No newline at end of file diff --git a/modules/multi-gateway/assets/build/editor.js b/modules/multi-gateway/assets/build/editor.js index eee3f9998..221a15d28 100644 --- a/modules/multi-gateway/assets/build/editor.js +++ b/modules/multi-gateway/assets/build/editor.js @@ -8,7 +8,7 @@ \*********************************************/ /***/ ((module) => { -module.exports = /*#__PURE__*/JSON.parse('{"apiVersion":2,"name":"jet-forms/multi-gateway","title":"Multi Gateway","description":"Displays available payment gateways selected in form settings.","category":"jet-form-builder-fields","textdomain":"jet-form-builder","keywords":["jetformbuilder","gateway","payment"],"supports":{"html":false,"multiple":false},"attributes":{"isPreview":{"type":"boolean","default":false},"title":{"type":"string","default":""},"description":{"type":"string","default":""},"gatewaysSettings":{"type":"object","default":{}}},"viewScript":"jet-fb-multi-gateway","style":"jet-fb-multi-gateway"}'); +module.exports = /*#__PURE__*/JSON.parse('{"apiVersion":2,"name":"jet-forms/multi-gateway","title":"Multi Gateway","description":"Displays available payment gateways selected in form settings.","category":"jet-form-builder-fields","textdomain":"jet-form-builder","keywords":["jetformbuilder","gateway","payment"],"icon":"","supports":{"html":false,"multiple":false},"attributes":{"isPreview":{"type":"boolean","default":false},"title":{"type":"string","default":""},"description":{"type":"string","default":""},"gatewaysSettings":{"type":"object","default":{}}},"viewScript":"jet-fb-multi-gateway","style":"jet-fb-multi-gateway"}'); /***/ }), @@ -51,9 +51,7 @@ function MultiGatewayEdit({ attributes, setAttributes }) { - const blockProps = useBlockProps({ - className: 'jfb-multi-gateway' - }); + const blockProps = useBlockProps(); const [meta] = useMetaState('_jf_gateways'); const mode = meta?.mode || 'single'; let selected = []; @@ -107,7 +105,13 @@ function MultiGatewayEdit({ const itemDesc = typeof saved.description === 'string' ? saved.description : ''; return (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("label", { key: key, - className: "jfb-multi-gateway__item" + className: "jfb-multi-gateway__item", + onClickCapture: e => { + if (e.target?.closest?.('[contenteditable="true"]')) { + e.preventDefault(); + e.stopPropagation(); + } + } }, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("input", { type: "radio", className: "jet-form-builder__field", @@ -128,7 +132,7 @@ function MultiGatewayEdit({ onChange: value => updateGatewaySetting(key, 'label', value) }), (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", { className: "jfb-multi-gateway__description" - }, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("i", null, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(RichText, { + }, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)("div", null, (0,react__WEBPACK_IMPORTED_MODULE_0__.createElement)(RichText, { tagName: "span", value: itemDesc, placeholder: "You can add description here", @@ -324,4 +328,4 @@ __webpack_require__.r(__webpack_exports__); /******/ })() ; -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFFQTtBQUlBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFDQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFJQTtBQUFBO0FBRUE7QUFFQTtBQUlBO0FBSUE7QUFFQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFHQTtBQUFBO0FBR0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQU9BO0FBR0E7QUFBQTtBQU9BOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FDcElBO0FBQ0E7QUFDQTtBQUVBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUVBO0FBQUE7QUFBQTtBQUFBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFDQTtBQUlBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUNBO0FBR0E7QUFDQTtBQUNBO0FBQUE7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUVBO0FBQ0E7QUFLQTtBQUNBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7Ozs7Ozs7Ozs7O0FDeERBOzs7Ozs7Ozs7O0FDQUE7Ozs7OztBQ0FBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7OztBQ3ZCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7OztBQ1BBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDUEE7Ozs7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7Ozs7Ozs7Ozs7O0FDTkE7QUFFQTtBQUVBO0FBSUE7QUFJQTtBQUNBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vamZiLW11bHRpLWdhdGV3YXkvLi9lZGl0b3IvYmxvY2tzL211bHRpLWdhdGV3YXkvYmxvY2suc2Nzcz8zMTNhIiwid2VicGFjazovL2pmYi1tdWx0aS1nYXRld2F5Ly4vZWRpdG9yL2Jsb2Nrcy9tdWx0aS1nYXRld2F5L2VkaXQuanMiLCJ3ZWJwYWNrOi8vamZiLW11bHRpLWdhdGV3YXkvLi9lZGl0b3IvYmxvY2tzL211bHRpLWdhdGV3YXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vamZiLW11bHRpLWdhdGV3YXkvZXh0ZXJuYWwgd2luZG93IFtcIndwXCIsXCJob29rc1wiXSIsIndlYnBhY2s6Ly9qZmItbXVsdGktZ2F0ZXdheS9leHRlcm5hbCB3aW5kb3cgXCJSZWFjdFwiIiwid2VicGFjazovL2pmYi1tdWx0aS1nYXRld2F5L3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL2pmYi1tdWx0aS1nYXRld2F5L3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL2pmYi1tdWx0aS1nYXRld2F5L3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9qZmItbXVsdGktZ2F0ZXdheS93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL2pmYi1tdWx0aS1nYXRld2F5L3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vamZiLW11bHRpLWdhdGV3YXkvLi9lZGl0b3IvbWFpbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbmV4cG9ydCB7fTsiLCJjb25zdCB7IHVzZUJsb2NrUHJvcHMsIFJpY2hUZXh0IH0gPSB3cC5ibG9ja0VkaXRvcjtcclxuY29uc3QgeyB1c2VNZXRhU3RhdGUgfSA9IEpldEZCSG9va3M7XHJcblxyXG5jb25zdCBnYXRld2F5c0RhdGEgPSB3aW5kb3c/LkpldEZvcm1FZGl0b3JEYXRhPy5nYXRld2F5cztcclxuY29uc3QgTU9ERV9NQU5VQUwgPSAnbWFudWFsJztcclxuXHJcbmNvbnN0IGdldEdhdGV3YXlMYWJlbCA9ICggdHlwZSApID0+IChcclxuXHRnYXRld2F5c0RhdGE/Lmxpc3Q/LmZpbmQoIGVsID0+IGVsLnZhbHVlID09PSB0eXBlICk/LmxhYmVsIHx8IHR5cGVcclxuKTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE11bHRpR2F0ZXdheUVkaXQoIHsgYXR0cmlidXRlcywgc2V0QXR0cmlidXRlcyB9ICkge1xyXG5cdGNvbnN0IGJsb2NrUHJvcHMgPSB1c2VCbG9ja1Byb3BzKCB7XHJcblx0XHRjbGFzc05hbWU6ICdqZmItbXVsdGktZ2F0ZXdheScsXHJcblx0fSApO1xyXG5cclxuXHRjb25zdCBbIG1ldGEgXSA9IHVzZU1ldGFTdGF0ZSggJ19qZl9nYXRld2F5cycgKTtcclxuXHJcblx0Y29uc3QgbW9kZSA9IG1ldGE/Lm1vZGUgfHwgJ3NpbmdsZSc7XHJcblxyXG5cdGxldCBzZWxlY3RlZCA9IFtdO1xyXG5cdGlmICggbW9kZSA9PT0gTU9ERV9NQU5VQUwgKSB7XHJcblx0XHRzZWxlY3RlZCA9ICggZ2F0ZXdheXNEYXRhPy5saXN0IHx8IFtdIClcclxuXHRcdFx0Lm1hcCggKCB7IHZhbHVlIH0gKSA9PiB2YWx1ZSApXHJcblx0XHRcdC5maWx0ZXIoICgga2V5ICkgPT4gISFtZXRhPy5bIGtleSBdPy5zaG93X29uX2Zyb250ICk7XHJcblx0fSBlbHNlIHtcclxuXHRcdGNvbnN0IGd3ID0gbWV0YT8uZ2F0ZXdheTtcclxuXHRcdGlmICggZ3cgJiYgZ3cgIT09ICdub25lJyApIHtcclxuXHRcdFx0c2VsZWN0ZWQgPSBbIGd3IF07XHJcblx0XHR9XHJcblx0fVxyXG5cclxuXHRjb25zdCBnYXRld2F5c1NldHRpbmdzID0gYXR0cmlidXRlcy5nYXRld2F5c1NldHRpbmdzIHx8IHt9O1xyXG5cclxuXHRjb25zdCB1cGRhdGVHYXRld2F5U2V0dGluZyA9ICgga2V5LCBmaWVsZCwgdmFsdWUgKSA9PiB7XHJcblx0XHRzZXRBdHRyaWJ1dGVzKCB7XHJcblx0XHRcdGdhdGV3YXlzU2V0dGluZ3M6IHtcclxuXHRcdFx0XHQuLi5nYXRld2F5c1NldHRpbmdzLFxyXG5cdFx0XHRcdFsga2V5IF06IHtcclxuXHRcdFx0XHRcdC4uLiggZ2F0ZXdheXNTZXR0aW5nc1sga2V5IF0gfHwge30gKSxcclxuXHRcdFx0XHRcdFsgZmllbGQgXTogdmFsdWUsXHJcblx0XHRcdFx0fSxcclxuXHRcdFx0fSxcclxuXHRcdH0gKTtcclxuXHR9O1xyXG5cclxuXHRyZXR1cm4gKFxyXG5cdFx0PGRpdiB7IC4uLmJsb2NrUHJvcHMgfT5cclxuXHRcdFx0PGRpdiBjbGFzc05hbWU9XCJqZmItbXVsdGktZ2F0ZXdheVwiPlxyXG5cdFx0XHRcdDxSaWNoVGV4dFxyXG5cdFx0XHRcdFx0dGFnTmFtZT1cImgzXCJcclxuXHRcdFx0XHRcdGNsYXNzTmFtZT1cImpmYi1tdWx0aS1nYXRld2F5X190aXRsZVwiXHJcblx0XHRcdFx0XHR2YWx1ZT17IGF0dHJpYnV0ZXMudGl0bGUgfHwgJycgfVxyXG5cdFx0XHRcdFx0cGxhY2Vob2xkZXI9XCJPcHRpb25hbDogYWRkIGEgaGVhZGluZyBmb3IgcGF5bWVudCBvcHRpb25z4oCmXCJcclxuXHRcdFx0XHRcdG9uQ2hhbmdlPXsgKCB0aXRsZSApID0+IHNldEF0dHJpYnV0ZXMoIHsgdGl0bGUgfSApIH1cclxuXHRcdFx0XHQvPlxyXG5cclxuXHRcdFx0XHQ8UmljaFRleHRcclxuXHRcdFx0XHRcdHRhZ05hbWU9XCJwXCJcclxuXHRcdFx0XHRcdGNsYXNzTmFtZT1cImpmYi1tdWx0aS1nYXRld2F5X19kZXNjXCJcclxuXHRcdFx0XHRcdHZhbHVlPXsgYXR0cmlidXRlcy5kZXNjcmlwdGlvbiB8fCAnJyB9XHJcblx0XHRcdFx0XHRwbGFjZWhvbGRlcj1cIk9wdGlvbmFsOiBhZGQgYSBzaG9ydCBkZXNjcmlwdGlvbiBmb3IgdGhpcyBzdGVw4oCmXCJcclxuXHRcdFx0XHRcdG9uQ2hhbmdlPXsgKCBkZXNjcmlwdGlvbiApID0+IHNldEF0dHJpYnV0ZXMoIHsgZGVzY3JpcHRpb24gfSApIH1cclxuXHRcdFx0XHQvPlxyXG5cclxuXHRcdFx0XHR7IHNlbGVjdGVkLmxlbmd0aCA/IChcclxuXHRcdFx0XHRcdDxkaXYgY2xhc3NOYW1lPVwiamZiLW11bHRpLWdhdGV3YXlfX2xpc3RcIj5cclxuXHRcdFx0XHRcdFx0eyBzZWxlY3RlZC5tYXAoICgga2V5LCBpbmRleCApID0+IHtcclxuXHRcdFx0XHRcdFx0XHRjb25zdCBzYXZlZCA9IGdhdGV3YXlzU2V0dGluZ3M/Llsga2V5IF0gfHwge307XHJcblxyXG5cdFx0XHRcdFx0XHRcdGNvbnN0IGl0ZW1MYWJlbCA9ICggdHlwZW9mIHNhdmVkLmxhYmVsID09PSAnc3RyaW5nJyApXHJcblx0XHRcdFx0XHRcdFx0XHQ/IHNhdmVkLmxhYmVsXHJcblx0XHRcdFx0XHRcdFx0XHQ6IGdldEdhdGV3YXlMYWJlbCgga2V5ICk7XHJcblxyXG5cdFx0XHRcdFx0XHRcdGNvbnN0IGl0ZW1EZXNjID0gKCB0eXBlb2Ygc2F2ZWQuZGVzY3JpcHRpb24gPT09ICdzdHJpbmcnIClcclxuXHRcdFx0XHRcdFx0XHRcdD8gc2F2ZWQuZGVzY3JpcHRpb25cclxuXHRcdFx0XHRcdFx0XHRcdDogJyc7XHJcblxyXG5cdFx0XHRcdFx0XHRcdHJldHVybiAoXHJcblx0XHRcdFx0XHRcdFx0XHQ8bGFiZWxcclxuXHRcdFx0XHRcdFx0XHRcdFx0a2V5PXsga2V5IH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3NOYW1lPVwiamZiLW11bHRpLWdhdGV3YXlfX2l0ZW1cIlxyXG5cdFx0XHRcdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8aW5wdXRcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlPVwicmFkaW9cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzTmFtZT1cImpldC1mb3JtLWJ1aWxkZXJfX2ZpZWxkXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjaGVja2VkPXsgaW5kZXggPT09IDAgfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJlYWRPbmx5XHJcblx0XHRcdFx0XHRcdFx0XHRcdC8+XHJcblxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3NOYW1lPVwiamZiLW11bHRpLWdhdGV3YXlfX2NvbnRlbnRcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdG9uTW91c2VEb3duPXsgKCBlICkgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCAhIGUudGFyZ2V0Py5jbG9zZXN0Py4oICdbY29udGVudGVkaXRhYmxlPVwidHJ1ZVwiXScgKSApIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0gfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PFJpY2hUZXh0XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0YWdOYW1lPVwiZGl2XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzTmFtZT1cImpmYi1tdWx0aS1nYXRld2F5X19sYWJlbFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZT17IGl0ZW1MYWJlbCB9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwbGFjZWhvbGRlcj17IGdldEdhdGV3YXlMYWJlbCgga2V5ICkgfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0b25DaGFuZ2U9eyAoIHZhbHVlICkgPT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dXBkYXRlR2F0ZXdheVNldHRpbmcoIGtleSwgJ2xhYmVsJywgdmFsdWUgKVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8+XHJcblxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3NOYW1lPVwiamZiLW11bHRpLWdhdGV3YXlfX2Rlc2NyaXB0aW9uXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8aT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0PFJpY2hUZXh0XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGFnTmFtZT1cInNwYW5cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlPXsgaXRlbURlc2MgfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHBsYWNlaG9sZGVyPVwiWW91IGNhbiBhZGQgZGVzY3JpcHRpb24gaGVyZVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0b25DaGFuZ2U9eyAoIHZhbHVlICkgPT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHVwZGF0ZUdhdGV3YXlTZXR0aW5nKCBrZXksICdkZXNjcmlwdGlvbicsIHZhbHVlIClcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2k+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0PC9sYWJlbD5cclxuXHRcdFx0XHRcdFx0XHQpO1xyXG5cdFx0XHRcdFx0XHR9ICkgfVxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0KSA6IChcclxuXHRcdFx0XHRcdDxkaXYgY2xhc3NOYW1lPVwiamZiLW11bHRpLWdhdGV3YXlfX2VtcHR5XCI+XHJcblx0XHRcdFx0XHRcdE5vIGdhdGV3YXlzIHNlbGVjdGVkXHJcblx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQpIH1cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQ8L2Rpdj5cclxuXHQpO1xyXG59XHJcbiIsImltcG9ydCBNdWx0aUdhdGV3YXlFZGl0IGZyb20gJy4vZWRpdCc7XHJcbmltcG9ydCBtZXRhZGF0YSBmcm9tICdAcm9vdC9ibG9ja3MvbXVsdGktZ2F0ZXdheS9ibG9jay5qc29uJztcclxuaW1wb3J0ICcuL2Jsb2NrLnNjc3MnO1xyXG5cclxuY29uc3QgeyBfXyB9ID0gd3AuaTE4bjtcclxuXHJcbmNvbnN0IHsgY3JlYXRlQmxvY2sgfSA9IHdwLmJsb2NrcztcclxuXHJcbmNvbnN0IHsgbmFtZSwgaWNvbiA9ICcnIH0gPSBtZXRhZGF0YTtcclxuXHJcbm1ldGFkYXRhLmF0dHJpYnV0ZXMuaXNQcmV2aWV3ID0ge1xyXG5cdCd0eXBlJzogJ2Jvb2xlYW4nLFxyXG5cdCdkZWZhdWx0JzogZmFsc2UsXHJcbn07XHJcblxyXG5jb25zdCBzZXR0aW5ncyA9IHtcclxuXHRpY29uOiA8c3BhbiBkYW5nZXJvdXNseVNldElubmVySFRNTD17IHsgX19odG1sOiBpY29uIH0gfT48L3NwYW4+LFxyXG5cdGRlc2NyaXB0aW9uOiBfXyhcclxuXHRcdGBEaXNwbGF5cyBhdmFpbGFibGUgcGF5bWVudCBnYXRld2F5cyBzZWxlY3RlZCBpbiBmb3JtIHNldHRpbmdzLmAsXHJcblx0XHQnamV0LWZvcm0tYnVpbGRlcicsXHJcblx0KSxcclxuXHRlZGl0OiBNdWx0aUdhdGV3YXlFZGl0LFxyXG5cdGV4YW1wbGU6IHtcclxuXHRcdGF0dHJpYnV0ZXM6IHtcclxuXHRcdFx0aXNQcmV2aWV3OiB0cnVlLFxyXG5cdFx0fSxcclxuXHR9LFxyXG5cdHRyYW5zZm9ybXM6IHtcclxuXHRcdHRvOiBbXHJcblx0XHRcdHtcclxuXHRcdFx0XHR0eXBlOiAnYmxvY2snLFxyXG5cdFx0XHRcdGJsb2NrczogW1xyXG5cdFx0XHRcdFx0J2pldC1mb3Jtcy90ZXh0LWZpZWxkJyxcclxuXHRcdFx0XHRdLFxyXG5cdFx0XHRcdHRyYW5zZm9ybTogKCBhdHRyaWJ1dGVzICkgPT4ge1xyXG5cdFx0XHRcdFx0cmV0dXJuIGNyZWF0ZUJsb2NrKCAnamV0LWZvcm1zL3RleHQtZmllbGQnLFxyXG5cdFx0XHRcdFx0XHR7IC4uLmF0dHJpYnV0ZXMgfSApO1xyXG5cdFx0XHRcdH0sXHJcblx0XHRcdFx0cHJpb3JpdHk6IDAsXHJcblx0XHRcdH0sXHJcblx0XHRdLFxyXG5cdFx0ZnJvbTogW1xyXG5cdFx0XHR7XHJcblx0XHRcdFx0dHlwZTogJ2Jsb2NrJyxcclxuXHRcdFx0XHRibG9ja3M6IFtcclxuXHRcdFx0XHRcdCdqZXQtZm9ybXMvY2hlY2tib3gtZmllbGQnLFxyXG5cdFx0XHRcdFx0J2pldC1mb3Jtcy9yYWRpby1maWVsZCcsXHJcblx0XHRcdFx0XHQnamV0LWZvcm1zL3NlbGVjdC1maWVsZCcsXHJcblx0XHRcdFx0XSxcclxuXHRcdFx0XHR0cmFuc2Zvcm06ICggYXR0cmlidXRlcyApID0+IHtcclxuXHRcdFx0XHRcdHJldHVybiBjcmVhdGVCbG9jayggbmFtZSwgeyAuLi5hdHRyaWJ1dGVzIH0gKTtcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdHByaW9yaXR5OiAwLFxyXG5cdFx0XHR9LFxyXG5cdFx0XSxcclxuXHR9LFxyXG59O1xyXG5cclxuZXhwb3J0IHtcclxuXHRtZXRhZGF0YSxcclxuXHRuYW1lLFxyXG5cdHNldHRpbmdzLFxyXG59OyIsIm1vZHVsZS5leHBvcnRzID0gd2luZG93W1wid3BcIl1bXCJob29rc1wiXTsiLCJtb2R1bGUuZXhwb3J0cyA9IHdpbmRvd1tcIlJlYWN0XCJdOyIsIi8vIFRoZSBtb2R1bGUgY2FjaGVcbnZhciBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX18gPSB7fTtcblxuLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbmZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG5cdHZhciBjYWNoZWRNb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdO1xuXHRpZiAoY2FjaGVkTW9kdWxlICE9PSB1bmRlZmluZWQpIHtcblx0XHRyZXR1cm4gY2FjaGVkTW9kdWxlLmV4cG9ydHM7XG5cdH1cblx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcblx0dmFyIG1vZHVsZSA9IF9fd2VicGFja19tb2R1bGVfY2FjaGVfX1ttb2R1bGVJZF0gPSB7XG5cdFx0Ly8gbm8gbW9kdWxlLmlkIG5lZWRlZFxuXHRcdC8vIG5vIG1vZHVsZS5sb2FkZWQgbmVlZGVkXG5cdFx0ZXhwb3J0czoge31cblx0fTtcblxuXHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cblx0X193ZWJwYWNrX21vZHVsZXNfX1ttb2R1bGVJZF0obW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cblx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcblx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xufVxuXG4iLCIvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuX193ZWJwYWNrX3JlcXVpcmVfXy5uID0gKG1vZHVsZSkgPT4ge1xuXHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cblx0XHQoKSA9PiAobW9kdWxlWydkZWZhdWx0J10pIDpcblx0XHQoKSA9PiAobW9kdWxlKTtcblx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgeyBhOiBnZXR0ZXIgfSk7XG5cdHJldHVybiBnZXR0ZXI7XG59OyIsIi8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb25zIGZvciBoYXJtb255IGV4cG9ydHNcbl9fd2VicGFja19yZXF1aXJlX18uZCA9IChleHBvcnRzLCBkZWZpbml0aW9uKSA9PiB7XG5cdGZvcih2YXIga2V5IGluIGRlZmluaXRpb24pIHtcblx0XHRpZihfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZGVmaW5pdGlvbiwga2V5KSAmJiAhX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIGtleSkpIHtcblx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBrZXksIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBkZWZpbml0aW9uW2tleV0gfSk7XG5cdFx0fVxuXHR9XG59OyIsIl9fd2VicGFja19yZXF1aXJlX18ubyA9IChvYmosIHByb3ApID0+IChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBwcm9wKSkiLCIvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSAoZXhwb3J0cykgPT4ge1xuXHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcblx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcblx0fVxuXHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xufTsiLCJpbXBvcnQgKiBhcyBNdWx0aUdhdGV3YXkgZnJvbSAnLi9ibG9ja3MvbXVsdGktZ2F0ZXdheSc7XHJcblxyXG5pbXBvcnQgeyBhZGRGaWx0ZXIgfSBmcm9tICdAd29yZHByZXNzL2hvb2tzJztcclxuXHJcbmFkZEZpbHRlcihcclxuXHQnamV0LmZiLnJlZ2lzdGVyLmZpZWxkcycsXHJcblx0J2pldC1mb3JtLWJ1aWxkZXIvbXVsdGktZ2F0ZXdheScsXHJcblx0ZnVuY3Rpb24gKCBibG9ja3MgKSB7XHJcblx0XHRibG9ja3MucHVzaChcclxuXHRcdFx0TXVsdGlHYXRld2F5LFxyXG5cdFx0KTtcclxuXHJcblx0XHRyZXR1cm4gYmxvY2tzO1xyXG5cdH0sXHJcbik7Il0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRpdG9yLmpzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7QUNBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQUE7QUFBQTtBQUVBO0FBQ0E7QUFFQTtBQUlBO0FBQUE7QUFBQTtBQUFBO0FBQ0E7QUFFQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUNBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQTtBQUFBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBO0FBQUE7QUFBQTtBQUlBO0FBQUE7QUFFQTtBQUVBO0FBSUE7QUFJQTtBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFJQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQTtBQUdBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFFQTtBQUdBO0FBQUE7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBT0E7QUFHQTtBQUFBO0FBT0E7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUN4SUE7QUFDQTtBQUNBO0FBRUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBRUE7QUFBQTtBQUFBO0FBQUE7QUFFQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBSUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUVBO0FBRUE7QUFDQTtBQUtBO0FBQ0E7QUFBQTtBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBRUE7QUFDQTs7Ozs7Ozs7Ozs7QUN4REE7Ozs7Ozs7Ozs7QUNBQTs7Ozs7O0FDQUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7O0FDdkJBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7Ozs7O0FDUEE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7QUNQQTs7Ozs7QUNBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7Ozs7QUNOQTtBQUVBO0FBRUE7QUFJQTtBQUlBO0FBQ0EiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9qZmItbXVsdGktZ2F0ZXdheS8uL2VkaXRvci9ibG9ja3MvbXVsdGktZ2F0ZXdheS9ibG9jay5zY3NzIiwid2VicGFjazovL2pmYi1tdWx0aS1nYXRld2F5Ly4vZWRpdG9yL2Jsb2Nrcy9tdWx0aS1nYXRld2F5L2VkaXQuanMiLCJ3ZWJwYWNrOi8vamZiLW11bHRpLWdhdGV3YXkvLi9lZGl0b3IvYmxvY2tzL211bHRpLWdhdGV3YXkvaW5kZXguanMiLCJ3ZWJwYWNrOi8vamZiLW11bHRpLWdhdGV3YXkvZXh0ZXJuYWwgd2luZG93IFtcIndwXCIsXCJob29rc1wiXSIsIndlYnBhY2s6Ly9qZmItbXVsdGktZ2F0ZXdheS9leHRlcm5hbCB3aW5kb3cgXCJSZWFjdFwiIiwid2VicGFjazovL2pmYi1tdWx0aS1nYXRld2F5L3dlYnBhY2svYm9vdHN0cmFwIiwid2VicGFjazovL2pmYi1tdWx0aS1nYXRld2F5L3dlYnBhY2svcnVudGltZS9jb21wYXQgZ2V0IGRlZmF1bHQgZXhwb3J0Iiwid2VicGFjazovL2pmYi1tdWx0aS1nYXRld2F5L3dlYnBhY2svcnVudGltZS9kZWZpbmUgcHJvcGVydHkgZ2V0dGVycyIsIndlYnBhY2s6Ly9qZmItbXVsdGktZ2F0ZXdheS93ZWJwYWNrL3J1bnRpbWUvaGFzT3duUHJvcGVydHkgc2hvcnRoYW5kIiwid2VicGFjazovL2pmYi1tdWx0aS1nYXRld2F5L3dlYnBhY2svcnVudGltZS9tYWtlIG5hbWVzcGFjZSBvYmplY3QiLCJ3ZWJwYWNrOi8vamZiLW11bHRpLWdhdGV3YXkvLi9lZGl0b3IvbWFpbi5qcyJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW5cbmV4cG9ydCB7fTsiLCJjb25zdCB7IHVzZUJsb2NrUHJvcHMsIFJpY2hUZXh0IH0gPSB3cC5ibG9ja0VkaXRvcjtcclxuY29uc3QgeyB1c2VNZXRhU3RhdGUgfSA9IEpldEZCSG9va3M7XHJcblxyXG5jb25zdCBnYXRld2F5c0RhdGEgPSB3aW5kb3c/LkpldEZvcm1FZGl0b3JEYXRhPy5nYXRld2F5cztcclxuY29uc3QgTU9ERV9NQU5VQUwgPSAnbWFudWFsJztcclxuXHJcbmNvbnN0IGdldEdhdGV3YXlMYWJlbCA9ICggdHlwZSApID0+IChcclxuXHRnYXRld2F5c0RhdGE/Lmxpc3Q/LmZpbmQoIGVsID0+IGVsLnZhbHVlID09PSB0eXBlICk/LmxhYmVsIHx8IHR5cGVcclxuKTtcclxuXHJcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIE11bHRpR2F0ZXdheUVkaXQoIHsgYXR0cmlidXRlcywgc2V0QXR0cmlidXRlcyB9ICkge1xyXG5cdGNvbnN0IGJsb2NrUHJvcHMgPSB1c2VCbG9ja1Byb3BzKCk7XHJcblxyXG5cdGNvbnN0IFsgbWV0YSBdID0gdXNlTWV0YVN0YXRlKCAnX2pmX2dhdGV3YXlzJyApO1xyXG5cclxuXHRjb25zdCBtb2RlID0gbWV0YT8ubW9kZSB8fCAnc2luZ2xlJztcclxuXHJcblx0bGV0IHNlbGVjdGVkID0gW107XHJcblx0aWYgKCBtb2RlID09PSBNT0RFX01BTlVBTCApIHtcclxuXHRcdHNlbGVjdGVkID0gKCBnYXRld2F5c0RhdGE/Lmxpc3QgfHwgW10gKVxyXG5cdFx0XHQubWFwKCAoIHsgdmFsdWUgfSApID0+IHZhbHVlIClcclxuXHRcdFx0LmZpbHRlciggKCBrZXkgKSA9PiAhIW1ldGE/Llsga2V5IF0/LnNob3dfb25fZnJvbnQgKTtcclxuXHR9IGVsc2Uge1xyXG5cdFx0Y29uc3QgZ3cgPSBtZXRhPy5nYXRld2F5O1xyXG5cdFx0aWYgKCBndyAmJiBndyAhPT0gJ25vbmUnICkge1xyXG5cdFx0XHRzZWxlY3RlZCA9IFsgZ3cgXTtcclxuXHRcdH1cclxuXHR9XHJcblxyXG5cdGNvbnN0IGdhdGV3YXlzU2V0dGluZ3MgPSBhdHRyaWJ1dGVzLmdhdGV3YXlzU2V0dGluZ3MgfHwge307XHJcblxyXG5cdGNvbnN0IHVwZGF0ZUdhdGV3YXlTZXR0aW5nID0gKCBrZXksIGZpZWxkLCB2YWx1ZSApID0+IHtcclxuXHRcdHNldEF0dHJpYnV0ZXMoIHtcclxuXHRcdFx0Z2F0ZXdheXNTZXR0aW5nczoge1xyXG5cdFx0XHRcdC4uLmdhdGV3YXlzU2V0dGluZ3MsXHJcblx0XHRcdFx0WyBrZXkgXToge1xyXG5cdFx0XHRcdFx0Li4uKCBnYXRld2F5c1NldHRpbmdzWyBrZXkgXSB8fCB7fSApLFxyXG5cdFx0XHRcdFx0WyBmaWVsZCBdOiB2YWx1ZSxcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHR9LFxyXG5cdFx0fSApO1xyXG5cdH07XHJcblxyXG5cdHJldHVybiAoXHJcblx0XHQ8ZGl2IHsgLi4uYmxvY2tQcm9wcyB9PlxyXG5cdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cImpmYi1tdWx0aS1nYXRld2F5XCI+XHJcblx0XHRcdFx0PFJpY2hUZXh0XHJcblx0XHRcdFx0XHR0YWdOYW1lPVwiaDNcIlxyXG5cdFx0XHRcdFx0Y2xhc3NOYW1lPVwiamZiLW11bHRpLWdhdGV3YXlfX3RpdGxlXCJcclxuXHRcdFx0XHRcdHZhbHVlPXsgYXR0cmlidXRlcy50aXRsZSB8fCAnJyB9XHJcblx0XHRcdFx0XHRwbGFjZWhvbGRlcj1cIk9wdGlvbmFsOiBhZGQgYSBoZWFkaW5nIGZvciBwYXltZW50IG9wdGlvbnPigKZcIlxyXG5cdFx0XHRcdFx0b25DaGFuZ2U9eyAoIHRpdGxlICkgPT4gc2V0QXR0cmlidXRlcyggeyB0aXRsZSB9ICkgfVxyXG5cdFx0XHRcdC8+XHJcblxyXG5cdFx0XHRcdDxSaWNoVGV4dFxyXG5cdFx0XHRcdFx0dGFnTmFtZT1cInBcIlxyXG5cdFx0XHRcdFx0Y2xhc3NOYW1lPVwiamZiLW11bHRpLWdhdGV3YXlfX2Rlc2NcIlxyXG5cdFx0XHRcdFx0dmFsdWU9eyBhdHRyaWJ1dGVzLmRlc2NyaXB0aW9uIHx8ICcnIH1cclxuXHRcdFx0XHRcdHBsYWNlaG9sZGVyPVwiT3B0aW9uYWw6IGFkZCBhIHNob3J0IGRlc2NyaXB0aW9uIGZvciB0aGlzIHN0ZXDigKZcIlxyXG5cdFx0XHRcdFx0b25DaGFuZ2U9eyAoIGRlc2NyaXB0aW9uICkgPT4gc2V0QXR0cmlidXRlcyggeyBkZXNjcmlwdGlvbiB9ICkgfVxyXG5cdFx0XHRcdC8+XHJcblxyXG5cdFx0XHRcdHsgc2VsZWN0ZWQubGVuZ3RoID8gKFxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzc05hbWU9XCJqZmItbXVsdGktZ2F0ZXdheV9fbGlzdFwiPlxyXG5cdFx0XHRcdFx0XHR7IHNlbGVjdGVkLm1hcCggKCBrZXksIGluZGV4ICkgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdGNvbnN0IHNhdmVkID0gZ2F0ZXdheXNTZXR0aW5ncz8uWyBrZXkgXSB8fCB7fTtcclxuXHJcblx0XHRcdFx0XHRcdFx0Y29uc3QgaXRlbUxhYmVsID0gKCB0eXBlb2Ygc2F2ZWQubGFiZWwgPT09ICdzdHJpbmcnIClcclxuXHRcdFx0XHRcdFx0XHRcdD8gc2F2ZWQubGFiZWxcclxuXHRcdFx0XHRcdFx0XHRcdDogZ2V0R2F0ZXdheUxhYmVsKCBrZXkgKTtcclxuXHJcblx0XHRcdFx0XHRcdFx0Y29uc3QgaXRlbURlc2MgPSAoIHR5cGVvZiBzYXZlZC5kZXNjcmlwdGlvbiA9PT0gJ3N0cmluZycgKVxyXG5cdFx0XHRcdFx0XHRcdFx0PyBzYXZlZC5kZXNjcmlwdGlvblxyXG5cdFx0XHRcdFx0XHRcdFx0OiAnJztcclxuXHJcblx0XHRcdFx0XHRcdFx0cmV0dXJuIChcclxuXHRcdFx0XHRcdFx0XHRcdDxsYWJlbFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRrZXk9eyBrZXkgfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRjbGFzc05hbWU9XCJqZmItbXVsdGktZ2F0ZXdheV9faXRlbVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdG9uQ2xpY2tDYXB0dXJlPXsgKCBlICkgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICggZS50YXJnZXQ/LmNsb3Nlc3Q/LiggJ1tjb250ZW50ZWRpdGFibGU9XCJ0cnVlXCJdJyApICkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZS5zdG9wUHJvcGFnYXRpb24oKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdH0gfVxyXG5cdFx0XHRcdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8aW5wdXRcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR0eXBlPVwicmFkaW9cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzTmFtZT1cImpldC1mb3JtLWJ1aWxkZXJfX2ZpZWxkXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjaGVja2VkPXsgaW5kZXggPT09IDAgfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJlYWRPbmx5XHJcblx0XHRcdFx0XHRcdFx0XHRcdC8+XHJcblxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3NOYW1lPVwiamZiLW11bHRpLWdhdGV3YXlfX2NvbnRlbnRcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdG9uTW91c2VEb3duPXsgKCBlICkgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCAhIGUudGFyZ2V0Py5jbG9zZXN0Py4oICdbY29udGVudGVkaXRhYmxlPVwidHJ1ZVwiXScgKSApIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZS5wcmV2ZW50RGVmYXVsdCgpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0gfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PFJpY2hUZXh0XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0YWdOYW1lPVwiZGl2XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzTmFtZT1cImpmYi1tdWx0aS1nYXRld2F5X19sYWJlbFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZT17IGl0ZW1MYWJlbCB9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwbGFjZWhvbGRlcj17IGdldEdhdGV3YXlMYWJlbCgga2V5ICkgfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0b25DaGFuZ2U9eyAoIHZhbHVlICkgPT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dXBkYXRlR2F0ZXdheVNldHRpbmcoIGtleSwgJ2xhYmVsJywgdmFsdWUgKVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8+XHJcblxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3NOYW1lPVwiamZiLW11bHRpLWdhdGV3YXlfX2Rlc2NyaXB0aW9uXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ8UmljaFRleHRcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0YWdOYW1lPVwic3BhblwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU9eyBpdGVtRGVzYyB9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cGxhY2Vob2xkZXI9XCJZb3UgY2FuIGFkZCBkZXNjcmlwdGlvbiBoZXJlXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRvbkNoYW5nZT17ICggdmFsdWUgKSA9PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dXBkYXRlR2F0ZXdheVNldHRpbmcoIGtleSwgJ2Rlc2NyaXB0aW9uJywgdmFsdWUgKVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdDwvbGFiZWw+XHJcblx0XHRcdFx0XHRcdFx0KTtcclxuXHRcdFx0XHRcdFx0fSApIH1cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdCkgOiAoXHJcblx0XHRcdFx0XHQ8ZGl2IGNsYXNzTmFtZT1cImpmYi1tdWx0aS1nYXRld2F5X19lbXB0eVwiPlxyXG5cdFx0XHRcdFx0XHRObyBnYXRld2F5cyBzZWxlY3RlZFxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0KSB9XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9kaXY+XHJcblx0KTtcclxufVxyXG4iLCJpbXBvcnQgTXVsdGlHYXRld2F5RWRpdCBmcm9tICcuL2VkaXQnO1xyXG5pbXBvcnQgbWV0YWRhdGEgZnJvbSAnQHJvb3QvYmxvY2tzL211bHRpLWdhdGV3YXkvYmxvY2suanNvbic7XHJcbmltcG9ydCAnLi9ibG9jay5zY3NzJztcclxuXHJcbmNvbnN0IHsgX18gfSA9IHdwLmkxOG47XHJcblxyXG5jb25zdCB7IGNyZWF0ZUJsb2NrIH0gPSB3cC5ibG9ja3M7XHJcblxyXG5jb25zdCB7IG5hbWUsIGljb24gPSAnJyB9ID0gbWV0YWRhdGE7XHJcblxyXG5tZXRhZGF0YS5hdHRyaWJ1dGVzLmlzUHJldmlldyA9IHtcclxuXHQndHlwZSc6ICdib29sZWFuJyxcclxuXHQnZGVmYXVsdCc6IGZhbHNlLFxyXG59O1xyXG5cclxuY29uc3Qgc2V0dGluZ3MgPSB7XHJcblx0aWNvbjogPHNwYW4gZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9eyB7IF9faHRtbDogaWNvbiB9IH0+PC9zcGFuPixcclxuXHRkZXNjcmlwdGlvbjogX18oXHJcblx0XHRgRGlzcGxheXMgYXZhaWxhYmxlIHBheW1lbnQgZ2F0ZXdheXMgc2VsZWN0ZWQgaW4gZm9ybSBzZXR0aW5ncy5gLFxyXG5cdFx0J2pldC1mb3JtLWJ1aWxkZXInLFxyXG5cdCksXHJcblx0ZWRpdDogTXVsdGlHYXRld2F5RWRpdCxcclxuXHRleGFtcGxlOiB7XHJcblx0XHRhdHRyaWJ1dGVzOiB7XHJcblx0XHRcdGlzUHJldmlldzogdHJ1ZSxcclxuXHRcdH0sXHJcblx0fSxcclxuXHR0cmFuc2Zvcm1zOiB7XHJcblx0XHR0bzogW1xyXG5cdFx0XHR7XHJcblx0XHRcdFx0dHlwZTogJ2Jsb2NrJyxcclxuXHRcdFx0XHRibG9ja3M6IFtcclxuXHRcdFx0XHRcdCdqZXQtZm9ybXMvdGV4dC1maWVsZCcsXHJcblx0XHRcdFx0XSxcclxuXHRcdFx0XHR0cmFuc2Zvcm06ICggYXR0cmlidXRlcyApID0+IHtcclxuXHRcdFx0XHRcdHJldHVybiBjcmVhdGVCbG9jayggJ2pldC1mb3Jtcy90ZXh0LWZpZWxkJyxcclxuXHRcdFx0XHRcdFx0eyAuLi5hdHRyaWJ1dGVzIH0gKTtcclxuXHRcdFx0XHR9LFxyXG5cdFx0XHRcdHByaW9yaXR5OiAwLFxyXG5cdFx0XHR9LFxyXG5cdFx0XSxcclxuXHRcdGZyb206IFtcclxuXHRcdFx0e1xyXG5cdFx0XHRcdHR5cGU6ICdibG9jaycsXHJcblx0XHRcdFx0YmxvY2tzOiBbXHJcblx0XHRcdFx0XHQnamV0LWZvcm1zL2NoZWNrYm94LWZpZWxkJyxcclxuXHRcdFx0XHRcdCdqZXQtZm9ybXMvcmFkaW8tZmllbGQnLFxyXG5cdFx0XHRcdFx0J2pldC1mb3Jtcy9zZWxlY3QtZmllbGQnLFxyXG5cdFx0XHRcdF0sXHJcblx0XHRcdFx0dHJhbnNmb3JtOiAoIGF0dHJpYnV0ZXMgKSA9PiB7XHJcblx0XHRcdFx0XHRyZXR1cm4gY3JlYXRlQmxvY2soIG5hbWUsIHsgLi4uYXR0cmlidXRlcyB9ICk7XHJcblx0XHRcdFx0fSxcclxuXHRcdFx0XHRwcmlvcml0eTogMCxcclxuXHRcdFx0fSxcclxuXHRcdF0sXHJcblx0fSxcclxufTtcclxuXHJcbmV4cG9ydCB7XHJcblx0bWV0YWRhdGEsXHJcblx0bmFtZSxcclxuXHRzZXR0aW5ncyxcclxufTsiLCJtb2R1bGUuZXhwb3J0cyA9IHdpbmRvd1tcIndwXCJdW1wiaG9va3NcIl07IiwibW9kdWxlLmV4cG9ydHMgPSB3aW5kb3dbXCJSZWFjdFwiXTsiLCIvLyBUaGUgbW9kdWxlIGNhY2hlXG52YXIgX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fID0ge307XG5cbi8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG5mdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuXHR2YXIgY2FjaGVkTW9kdWxlID0gX193ZWJwYWNrX21vZHVsZV9jYWNoZV9fW21vZHVsZUlkXTtcblx0aWYgKGNhY2hlZE1vZHVsZSAhPT0gdW5kZWZpbmVkKSB7XG5cdFx0cmV0dXJuIGNhY2hlZE1vZHVsZS5leHBvcnRzO1xuXHR9XG5cdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG5cdHZhciBtb2R1bGUgPSBfX3dlYnBhY2tfbW9kdWxlX2NhY2hlX19bbW9kdWxlSWRdID0ge1xuXHRcdC8vIG5vIG1vZHVsZS5pZCBuZWVkZWRcblx0XHQvLyBubyBtb2R1bGUubG9hZGVkIG5lZWRlZFxuXHRcdGV4cG9ydHM6IHt9XG5cdH07XG5cblx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG5cdF9fd2VicGFja19tb2R1bGVzX19bbW9kdWxlSWRdKG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG5cdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG5cdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbn1cblxuIiwiLy8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbl9fd2VicGFja19yZXF1aXJlX18ubiA9IChtb2R1bGUpID0+IHtcblx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG5cdFx0KCkgPT4gKG1vZHVsZVsnZGVmYXVsdCddKSA6XG5cdFx0KCkgPT4gKG1vZHVsZSk7XG5cdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsIHsgYTogZ2V0dGVyIH0pO1xuXHRyZXR1cm4gZ2V0dGVyO1xufTsiLCIvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9ucyBmb3IgaGFybW9ueSBleHBvcnRzXG5fX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSAoZXhwb3J0cywgZGVmaW5pdGlvbikgPT4ge1xuXHRmb3IodmFyIGtleSBpbiBkZWZpbml0aW9uKSB7XG5cdFx0aWYoX193ZWJwYWNrX3JlcXVpcmVfXy5vKGRlZmluaXRpb24sIGtleSkgJiYgIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBrZXkpKSB7XG5cdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywga2V5LCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZGVmaW5pdGlvbltrZXldIH0pO1xuXHRcdH1cblx0fVxufTsiLCJfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSAob2JqLCBwcm9wKSA9PiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwgcHJvcCkpIiwiLy8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuX193ZWJwYWNrX3JlcXVpcmVfXy5yID0gKGV4cG9ydHMpID0+IHtcblx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG5cdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG5cdH1cblx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbn07IiwiaW1wb3J0ICogYXMgTXVsdGlHYXRld2F5IGZyb20gJy4vYmxvY2tzL211bHRpLWdhdGV3YXknO1xyXG5cclxuaW1wb3J0IHsgYWRkRmlsdGVyIH0gZnJvbSAnQHdvcmRwcmVzcy9ob29rcyc7XHJcblxyXG5hZGRGaWx0ZXIoXHJcblx0J2pldC5mYi5yZWdpc3Rlci5maWVsZHMnLFxyXG5cdCdqZXQtZm9ybS1idWlsZGVyL211bHRpLWdhdGV3YXknLFxyXG5cdGZ1bmN0aW9uICggYmxvY2tzICkge1xyXG5cdFx0YmxvY2tzLnB1c2goXHJcblx0XHRcdE11bHRpR2F0ZXdheSxcclxuXHRcdCk7XHJcblxyXG5cdFx0cmV0dXJuIGJsb2NrcztcclxuXHR9LFxyXG4pOyJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ== \ No newline at end of file diff --git a/modules/multi-gateway/assets/src/editor/blocks/multi-gateway/block.scss b/modules/multi-gateway/assets/src/editor/blocks/multi-gateway/block.scss index a062bfad7..7cb08332e 100644 --- a/modules/multi-gateway/assets/src/editor/blocks/multi-gateway/block.scss +++ b/modules/multi-gateway/assets/src/editor/blocks/multi-gateway/block.scss @@ -1,3 +1,8 @@ +.jfb-multi-gateway, +.jfb-multi-gateway * { + box-sizing: border-box; +} + .jfb-multi-gateway h3 { margin: 0 0 6px; } @@ -8,29 +13,37 @@ } .jfb-multi-gateway__list { - border: 1px solid #dcdcde; - border-radius: 2px; - overflow: hidden; - background: #fff; + display: flex; + flex-direction: column; + gap: 10px; } .jfb-multi-gateway__item { display: flex; - gap: 10px; align-items: flex-start; + gap: 10px; + width: 100%; padding: 16px; + margin: 0; border-top: 1px solid #dcdcde; + cursor: pointer; } .jfb-multi-gateway__item:first-child { border-top: 0; } -.jfb-multi-gateway__item input { - margin-top: 2px; +.jfb-multi-gateway__item .jet-form-builder__field[type="radio"] { + margin: 0; + flex: 0 0 auto; +} + +.jfb-multi-gateway__content { + flex: 1 1 auto; + min-width: 0; } .jfb-multi-gateway__empty { padding: 16px; opacity: 0.7; -} \ No newline at end of file +} diff --git a/modules/multi-gateway/assets/src/editor/blocks/multi-gateway/edit.js b/modules/multi-gateway/assets/src/editor/blocks/multi-gateway/edit.js index c31c1b09c..c93b1d99a 100644 --- a/modules/multi-gateway/assets/src/editor/blocks/multi-gateway/edit.js +++ b/modules/multi-gateway/assets/src/editor/blocks/multi-gateway/edit.js @@ -9,9 +9,7 @@ const getGatewayLabel = ( type ) => ( ); export default function MultiGatewayEdit( { attributes, setAttributes } ) { - const blockProps = useBlockProps( { - className: 'jfb-multi-gateway', - } ); + const blockProps = useBlockProps(); const [ meta ] = useMetaState( '_jf_gateways' ); @@ -79,6 +77,12 @@ export default function MultiGatewayEdit( { attributes, setAttributes } ) {
diff --git a/modules/multi-gateway/blocks/multi-gateway/block-template.php b/modules/multi-gateway/blocks/multi-gateway/block-template.php index a9f2c3d1a..941e0b27a 100644 --- a/modules/multi-gateway/blocks/multi-gateway/block-template.php +++ b/modules/multi-gateway/blocks/multi-gateway/block-template.php @@ -53,8 +53,8 @@ } } -$title = $args['title'] ?? ''; -$description = $args['description'] ?? ''; +$title = $args['title'] ?? ''; +$description = $args['description'] ?? ''; $field_name = ! empty( $args['name'] ) ? $args['name'] : 'multi_gateway'; $name = $this->block_type->get_field_name( $field_name ); @@ -67,60 +67,63 @@ $gw_settings = is_array( $gw_settings ) ? $gw_settings : array(); + ?>
- -

- -

- - - -

- -

- - - -
- -
- -
- $gateway_key ) : ?> - - - -
- +
+ +

+ +

+ + + +

+ +

+ + + +
+ +
+ +
+ $gateway_key ) : ?> + + + +
+ +
diff --git a/modules/multi-gateway/blocks/multi-gateway/block-type.php b/modules/multi-gateway/blocks/multi-gateway/block-type.php index 62b273c6f..1617c0125 100644 --- a/modules/multi-gateway/blocks/multi-gateway/block-type.php +++ b/modules/multi-gateway/blocks/multi-gateway/block-type.php @@ -1,6 +1,5 @@ '.jfb-multi-gateway', - 'title' => '.jfb-multi-gateway__title', - 'desc' => '.jfb-multi-gateway__desc', - 'empty' => '.jfb-multi-gateway__empty', - 'list' => '.jfb-multi-gateway__list', - 'item' => '.jfb-multi-gateway__item', - 'item_input' => '.jfb-multi-gateway__item .jet-form-builder__field', - 'item_content' => '.jfb-multi-gateway__content', - 'item_title' => '.jfb-multi-gateway__label', - 'item_desc' => '.jfb-multi-gateway__description', + 'container' => '.jfb-multi-gateway', + + // Heading (block title/desc at the top) + 'title' => '.jfb-multi-gateway__title', + 'desc' => '.jfb-multi-gateway__desc', + + 'empty' => '.jfb-multi-gateway__empty', + 'list' => '.jfb-multi-gateway__list', + 'item' => '.jfb-multi-gateway__item', + 'item_hover' => '.jfb-multi-gateway__item:hover', + 'item_input' => '.jfb-multi-gateway__item .jet-form-builder__field', + 'item_content' => '.jfb-multi-gateway__content', + 'item_title' => '.jfb-multi-gateway__label', + 'item_desc' => '.jfb-multi-gateway__description', + 'item_title_hover' => '.jfb-multi-gateway__item:hover .jfb-multi-gateway__label', + 'item_desc_hover' => '.jfb-multi-gateway__item:hover .jfb-multi-gateway__description', ); } @@ -62,6 +67,9 @@ public function general_style_unregister() { public function jsm_controls() { + /** + * Wrapper (block container) + */ $this->controls_manager->start_section( 'style_controls', array( @@ -71,7 +79,7 @@ public function jsm_controls() { ); $this->add_margin_padding( - $this->css_scheme['container'], + '{{WRAPPER}} ' . $this->css_scheme['container'], array( 'padding' => array( 'id' => 'mg_wrapper_padding', @@ -81,7 +89,6 @@ public function jsm_controls() { array( 'padding' ) ); - $this->controls_manager->add_control( array( 'id' => 'mg_wrapper_bg', @@ -89,20 +96,196 @@ public function jsm_controls() { 'label' => __( 'Background', 'jet-form-builder' ), 'separator' => 'after', 'css_selector' => array( - $this->css_scheme['container'] => 'background-color: {{VALUE}};', + '{{WRAPPER}} ' . $this->css_scheme['container'] => 'background-color: {{VALUE}};', ), ) ); - $this->controls_manager->add_control( array( 'id' => 'mg_wrapper_border', 'type' => 'border', 'label' => __( 'Border', 'jet-form-builder' ), 'separator' => 'after', - 'css_selector' => array( - $this->css_scheme['container'] => 'border-style:{{STYLE}};border-width:{{WIDTH}};border-radius:{{RADIUS}};border-color:{{COLOR}};', + 'css_selector' => array( + '{{WRAPPER}} ' . $this->css_scheme['container'] => 'border-style:{{STYLE}};border-width:{{WIDTH}};border-radius:{{RADIUS}};border-color:{{COLOR}};', + ), + 'attributes' => array( + 'default' => array( + 'value' => array( + 'borderStyle' => 'solid', + ), + ), + ), + ) + ); + + $this->controls_manager->end_section(); + + /** + * Heading (top title + description) + * NOTE: attributes title/description already exist — we only style them here. + */ + $this->controls_manager->start_section( + 'style_controls', + array( + 'id' => 'mg_heading', + 'title' => __( 'Heading', 'jet-form-builder' ), + ) + ); + + // Title color + $this->controls_manager->add_control( + array( + 'id' => 'mg_heading_title_color', + 'type' => 'color-picker', + 'label' => __( 'Title Color', 'jet-form-builder' ), + 'separator' => 'after', + 'css_selector' => array( + '{{WRAPPER}} ' . $this->css_scheme['title'] => 'color: {{VALUE}};', + ), + ) + ); + + // Title typography + $this->controls_manager->add_control( + array( + 'id' => 'mg_heading_title_typography', + 'type' => 'typography', + 'label' => __( 'Title Typography', 'jet-form-builder' ), + 'separator' => 'after', + 'css_selector' => array( + '{{WRAPPER}} ' . $this->css_scheme['title'] => + 'font-family: {{FAMILY}};' + . ' font-weight: {{WEIGHT}};' + . ' text-transform: {{TRANSFORM}};' + . ' font-style: {{STYLE}};' + . ' text-decoration: {{DECORATION}};' + . ' line-height: {{LINEHEIGHT}}{{LH_UNIT}};' + . ' letter-spacing: {{LETTERSPACING}}{{LS_UNIT}};' + . ' font-size: {{SIZE}}{{S_UNIT}};', + ), + ) + ); + + // Description color + $this->controls_manager->add_control( + array( + 'id' => 'mg_heading_desc_color', + 'type' => 'color-picker', + 'label' => __( 'Description Color', 'jet-form-builder' ), + 'separator' => 'after', + 'css_selector' => array( + '{{WRAPPER}} ' . $this->css_scheme['desc'] => 'color: {{VALUE}};', + ), + ) + ); + + // Description typography + $this->controls_manager->add_control( + array( + 'id' => 'mg_heading_desc_typography', + 'type' => 'typography', + 'label' => __( 'Description Typography', 'jet-form-builder' ), + 'separator' => 'after', + 'css_selector' => array( + '{{WRAPPER}} ' . $this->css_scheme['desc'] => + 'font-family: {{FAMILY}};' + . ' font-weight: {{WEIGHT}};' + . ' text-transform: {{TRANSFORM}};' + . ' font-style: {{STYLE}};' + . ' text-decoration: {{DECORATION}};' + . ' line-height: {{LINEHEIGHT}}{{LH_UNIT}};' + . ' letter-spacing: {{LETTERSPACING}}{{LS_UNIT}};' + . ' font-size: {{SIZE}}{{S_UNIT}};', + ), + ) + ); + + $this->controls_manager->end_section(); + + /** + * List layout (direction / gap) + */ + $this->controls_manager->start_section( + 'style_controls', + array( + 'id' => 'mg_list_layout', + 'title' => __( 'List Layout', 'jet-form-builder' ), + ) + ); + + $this->controls_manager->add_control( + array( + 'id' => 'mg_list_direction', + 'type' => 'choose', + 'label' => __( 'Direction', 'jet-form-builder' ), + 'options' => array( + 'column' => array( + 'label' => __( 'Vertical', 'jet-form-builder' ), + ), + 'row' => array( + 'label' => __( 'Horizontal', 'jet-form-builder' ), + ), + ), + 'default' => 'column', + 'separator' => 'after', + 'css_selector' => array( + '{{WRAPPER}} ' . $this->css_scheme['list'] => 'display:flex;flex-direction: {{VALUE}};', + ), + ) + ); + + $this->controls_manager->add_control( + array( + 'id' => 'mg_list_gap', + 'type' => 'range', + 'label' => __( 'Gap', 'jet-form-builder' ), + 'units' => array( 'px' ), + 'default' => array( + 'value' => 10, + 'unit' => 'px', + ), + 'separator' => 'after', + 'css_selector' => array( + '{{WRAPPER}} ' . $this->css_scheme['list'] => 'gap: {{VALUE}}{{UNIT}};', + ), + ) + ); + + $this->controls_manager->end_section(); + + /** + * Item (background, border, radius, padding + hover bg/border) + */ + $this->controls_manager->start_section( + 'style_controls', + array( + 'id' => 'mg_item', + 'title' => __( 'Item', 'jet-form-builder' ), + ) + ); + + $this->controls_manager->add_control( + array( + 'id' => 'mg_item_bg', + 'type' => 'color-picker', + 'label' => __( 'Background', 'jet-form-builder' ), + 'separator' => 'after', + 'css_selector' => array( + '{{WRAPPER}} ' . $this->css_scheme['item'] => 'background-color: {{VALUE}};', + ), + ) + ); + + $this->controls_manager->add_control( + array( + 'id' => 'mg_item_border', + 'type' => 'border', + 'label' => __( 'Border', 'jet-form-builder' ), + 'separator' => 'after', + 'css_selector' => array( + '{{WRAPPER}} ' . $this->css_scheme['item'] => 'border-style:{{STYLE}};border-width:{{WIDTH}};border-radius:{{RADIUS}};border-color:{{COLOR}};', ), 'attributes' => array( 'default' => array( @@ -114,7 +297,149 @@ public function jsm_controls() { ) ); + $this->add_margin_padding( + '{{WRAPPER}} ' . $this->css_scheme['item'], + array( + 'padding' => array( + 'id' => 'mg_item_padding', + 'separator' => 'after', + ), + ), + array( 'padding' ) + ); + + $this->controls_manager->add_control( + array( + 'id' => 'mg_item_hover_bg', + 'type' => 'color-picker', + 'label' => __( 'Hover Background', 'jet-form-builder' ), + 'separator' => 'after', + 'css_selector' => array( + '{{WRAPPER}} ' . $this->css_scheme['item_hover'] => 'background-color: {{VALUE}};', + ), + ) + ); + + $this->controls_manager->add_control( + array( + 'id' => 'mg_item_hover_border_color', + 'type' => 'color-picker', + 'label' => __( 'Hover Border Color', 'jet-form-builder' ), + 'separator' => 'after', + 'css_selector' => array( + '{{WRAPPER}} ' . $this->css_scheme['item_hover'] => 'border-color: {{VALUE}};', + ), + ) + ); + + $this->controls_manager->end_section(); + + /** + * Label / Description (colors + typography + hover colors) + */ + $this->controls_manager->start_section( + 'style_controls', + array( + 'id' => 'mg_text', + 'title' => __( 'Label & Description', 'jet-form-builder' ), + ) + ); + + // Label color + $this->controls_manager->add_control( + array( + 'id' => 'mg_label_color', + 'type' => 'color-picker', + 'label' => __( 'Label Color', 'jet-form-builder' ), + 'separator' => 'after', + 'css_selector' => array( + '{{WRAPPER}} ' . $this->css_scheme['item_title'] => 'color: {{VALUE}};', + ), + ) + ); + + // Label typography + $this->controls_manager->add_control( + array( + 'id' => 'mg_label_typography', + 'type' => 'typography', + 'label' => __( 'Label Typography', 'jet-form-builder' ), + 'separator' => 'after', + 'css_selector' => array( + '{{WRAPPER}} ' . $this->css_scheme['item_title'] => + 'font-family: {{FAMILY}};' + . ' font-weight: {{WEIGHT}};' + . ' text-transform: {{TRANSFORM}};' + . ' font-style: {{STYLE}};' + . ' text-decoration: {{DECORATION}};' + . ' line-height: {{LINEHEIGHT}}{{LH_UNIT}};' + . ' letter-spacing: {{LETTERSPACING}}{{LS_UNIT}};' + . ' font-size: {{SIZE}}{{S_UNIT}};', + ), + ) + ); + + // Label hover color + $this->controls_manager->add_control( + array( + 'id' => 'mg_label_hover_color', + 'type' => 'color-picker', + 'label' => __( 'Label Hover Color', 'jet-form-builder' ), + 'separator' => 'after', + 'css_selector' => array( + '{{WRAPPER}} ' . $this->css_scheme['item_title_hover'] => 'color: {{VALUE}};', + ), + ) + ); + + // Description color + $this->controls_manager->add_control( + array( + 'id' => 'mg_desc_color', + 'type' => 'color-picker', + 'label' => __( 'Description Color', 'jet-form-builder' ), + 'separator' => 'after', + 'css_selector' => array( + '{{WRAPPER}} ' . $this->css_scheme['item_desc'] => 'color: {{VALUE}};', + ), + ) + ); + + // Description typography + $this->controls_manager->add_control( + array( + 'id' => 'mg_desc_typography', + 'type' => 'typography', + 'label' => __( 'Description Typography', 'jet-form-builder' ), + 'separator' => 'after', + 'css_selector' => array( + '{{WRAPPER}} ' . $this->css_scheme['item_desc'] => + 'font-family: {{FAMILY}};' + . ' font-weight: {{WEIGHT}};' + . ' text-transform: {{TRANSFORM}};' + . ' font-style: {{STYLE}};' + . ' text-decoration: {{DECORATION}};' + . ' line-height: {{LINEHEIGHT}}{{LH_UNIT}};' + . ' letter-spacing: {{LETTERSPACING}}{{LS_UNIT}};' + . ' font-size: {{SIZE}}{{S_UNIT}};', + ), + ) + ); + + // Description hover color + $this->controls_manager->add_control( + array( + 'id' => 'mg_desc_hover_color', + 'type' => 'color-picker', + 'label' => __( 'Description Hover Color', 'jet-form-builder' ), + 'separator' => 'after', + 'css_selector' => array( + '{{WRAPPER}} ' . $this->css_scheme['item_desc_hover'] => 'color: {{VALUE}};', + ), + ) + ); $this->controls_manager->end_section(); } + } diff --git a/modules/multi-gateway/blocks/multi-gateway/block.json b/modules/multi-gateway/blocks/multi-gateway/block.json index 7f9c94f38..d21fa71ec 100644 --- a/modules/multi-gateway/blocks/multi-gateway/block.json +++ b/modules/multi-gateway/blocks/multi-gateway/block.json @@ -6,6 +6,7 @@ "category": "jet-form-builder-fields", "textdomain": "jet-form-builder", "keywords": ["jetformbuilder", "gateway", "payment"], + "icon": "", "supports": { "html": false, "multiple": false