@themarioga/grid-editor 5.0.0 → 5.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +37 -0
- package/README.md +66 -3
- package/dist/grideditor.css +8 -0
- package/dist/grideditor.min.css +1 -1
- package/dist/grideditor.min.css.map +1 -1
- package/dist/jquery.grideditor.bundle.min.js +2 -2
- package/dist/jquery.grideditor.js +150 -35
- package/dist/jquery.grideditor.min.js +1 -1
- package/dist/jquery.grideditor.min.js.map +1 -1
- package/dist/locales/grideditor.es.js +4 -0
- package/dist/locales/grideditor.es.min.js +1 -1
- package/dist/locales/grideditor.es.min.js.map +1 -1
- package/dist/plugins/grideditor.clipboard.js +277 -0
- package/dist/plugins/grideditor.clipboard.min.js +2 -0
- package/dist/plugins/grideditor.clipboard.min.js.map +1 -0
- package/dist/plugins/grideditor.sections.js +4 -4
- package/dist/plugins/grideditor.sections.min.js +1 -1
- package/dist/plugins/grideditor.sections.min.js.map +1 -1
- package/docs/events.md +4 -1
- package/docs/locale-keys.md +13 -0
- package/docs/plugins.md +12 -1
- package/example/clipboard.html +100 -0
- package/example/index.html +8 -0
- package/example/wrap_content.html +66 -16
- package/package.json +1 -1
- package/src/js/jquery.grideditor.js +150 -35
- package/src/js/locales/grideditor.es.js +4 -0
- package/src/js/plugins/grideditor.clipboard.js +277 -0
- package/src/js/plugins/grideditor.sections.js +4 -4
- package/src/less/grideditor.less +10 -0
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
*/
|
|
19
19
|
var METHODS = {
|
|
20
20
|
getHtml: { value: true, noInstance: function(element) { return element.html(); } },
|
|
21
|
+
getPlainHtml: { value: true, noInstance: function(element) { return plainHtml(element.html()); } },
|
|
21
22
|
init: {},
|
|
22
23
|
deinit: {},
|
|
23
24
|
reset: {},
|
|
@@ -247,6 +248,56 @@ function dispatch(set, name, args) {
|
|
|
247
248
|
return set;
|
|
248
249
|
}
|
|
249
250
|
|
|
251
|
+
/**
|
|
252
|
+
* Html with grid-editor's own marking taken off: the ge-* classes, the
|
|
253
|
+
* column class and the data-ge-* attributes. A div that was only there for
|
|
254
|
+
* the editor - a content area, a bare element or container wrapper - is left
|
|
255
|
+
* with nothing on it, and goes, its children taking its place.
|
|
256
|
+
*
|
|
257
|
+
* The marking is what lets the editor read its markup back, so this is for
|
|
258
|
+
* publishing, not for saving something to edit again.
|
|
259
|
+
*/
|
|
260
|
+
function plainHtml(html) {
|
|
261
|
+
// Parsed in a document of its own, which is inert: no script in the
|
|
262
|
+
// markup runs and no image starts loading while it is being cleaned
|
|
263
|
+
var root = $(document.implementation.createHTMLDocument('').body);
|
|
264
|
+
root[0].innerHTML = html;
|
|
265
|
+
var emptied = [];
|
|
266
|
+
|
|
267
|
+
root.find('*').each(function() {
|
|
268
|
+
var node = $(this);
|
|
269
|
+
var marked = false;
|
|
270
|
+
|
|
271
|
+
$.each($.makeArray(this.attributes), function(i, attribute) {
|
|
272
|
+
if (attribute.name.indexOf('data-ge-') === 0) {
|
|
273
|
+
node.removeAttr(attribute.name);
|
|
274
|
+
marked = true;
|
|
275
|
+
}
|
|
276
|
+
});
|
|
277
|
+
|
|
278
|
+
var classes = (node.attr('class') || '').split(/\s+/).filter(Boolean);
|
|
279
|
+
var kept = classes.filter(function(name) {
|
|
280
|
+
return name !== 'column' && name.indexOf('ge-') !== 0;
|
|
281
|
+
});
|
|
282
|
+
if (kept.length !== classes.length) { marked = true; }
|
|
283
|
+
if (kept.length) {
|
|
284
|
+
node.attr('class', kept.join(' '));
|
|
285
|
+
} else {
|
|
286
|
+
node.removeAttr('class');
|
|
287
|
+
}
|
|
288
|
+
|
|
289
|
+
if (marked && this.tagName === 'DIV' && !this.attributes.length) {
|
|
290
|
+
emptied.push(this);
|
|
291
|
+
}
|
|
292
|
+
});
|
|
293
|
+
|
|
294
|
+
emptied.forEach(function(div) {
|
|
295
|
+
$(div).replaceWith($(div).contents());
|
|
296
|
+
});
|
|
297
|
+
|
|
298
|
+
return root[0].innerHTML;
|
|
299
|
+
}
|
|
300
|
+
|
|
250
301
|
$.fn.gridEditor = function( optionsOrMethod ) {
|
|
251
302
|
|
|
252
303
|
var self = this;
|
|
@@ -910,25 +961,19 @@ $.fn.gridEditor = function( optionsOrMethod ) {
|
|
|
910
961
|
});
|
|
911
962
|
|
|
912
963
|
// A feature plugin's own buttons, beside the containers': what
|
|
913
|
-
// one makes goes onto the canvas, where the plugin says it belongs
|
|
964
|
+
// one makes goes onto the canvas, where the plugin says it belongs.
|
|
965
|
+
// One with align 'end' goes on the right instead, as an icon,
|
|
966
|
+
// beside the source and preview buttons.
|
|
967
|
+
var endItems = [];
|
|
914
968
|
$.each(FEATURES, function(name, feature) {
|
|
915
969
|
(feature.toolbar || []).forEach(function(item, index) {
|
|
916
|
-
|
|
917
|
-
|
|
918
|
-
|
|
919
|
-
.
|
|
920
|
-
|
|
921
|
-
.
|
|
922
|
-
|
|
923
|
-
.on('click', function() {
|
|
924
|
-
var made = item.create();
|
|
925
|
-
|
|
926
|
-
addNode(item.kind, made, function() {
|
|
927
|
-
made.appendTo(canvas);
|
|
928
|
-
}, { parent: canvas, source: 'tool' });
|
|
929
|
-
})
|
|
930
|
-
.appendTo(addContainerGroup)
|
|
931
|
-
;
|
|
970
|
+
var button = featureButton(name, item, index);
|
|
971
|
+
|
|
972
|
+
if (item.align === 'end') {
|
|
973
|
+
endItems.push(button);
|
|
974
|
+
} else {
|
|
975
|
+
button.appendTo(addContainerGroup);
|
|
976
|
+
}
|
|
932
977
|
});
|
|
933
978
|
});
|
|
934
979
|
|
|
@@ -994,8 +1039,39 @@ $.fn.gridEditor = function( optionsOrMethod ) {
|
|
|
994
1039
|
.appendTo(btnGroup)
|
|
995
1040
|
;
|
|
996
1041
|
|
|
1042
|
+
// Floated right after the source and preview buttons, so it
|
|
1043
|
+
// stands to their left
|
|
1044
|
+
if (endItems.length) {
|
|
1045
|
+
$('<div class="btn-group pull-right ge-toolbar-end" />')
|
|
1046
|
+
.append(endItems)
|
|
1047
|
+
.appendTo(wrapper)
|
|
1048
|
+
;
|
|
1049
|
+
}
|
|
1050
|
+
|
|
997
1051
|
makeToolbarDraggable();
|
|
998
1052
|
}
|
|
1053
|
+
|
|
1054
|
+
/** A feature plugin's toolbar button: its label as text, or as the title alone at the end. */
|
|
1055
|
+
function featureButton(name, item, index) {
|
|
1056
|
+
var button = $('<a class="btn btn-sm btn-primary ge-add-container ge-add-feature" />')
|
|
1057
|
+
.attr('title', t(item.labelKey))
|
|
1058
|
+
.attr('data-ge-toolbar', 'feature')
|
|
1059
|
+
.attr('data-ge-feature', name)
|
|
1060
|
+
.attr('data-ge-item', index)
|
|
1061
|
+
.append($('<i />').addClass(item.iconClass || 'bi bi-plus'))
|
|
1062
|
+
.on('click', function() {
|
|
1063
|
+
var made = item.create();
|
|
1064
|
+
|
|
1065
|
+
addNode(item.kind, made, function() {
|
|
1066
|
+
made.appendTo(canvas);
|
|
1067
|
+
}, { parent: canvas, source: item.source || 'tool' });
|
|
1068
|
+
})
|
|
1069
|
+
;
|
|
1070
|
+
|
|
1071
|
+
if (item.align !== 'end') { button.append($('<span />').text(t(item.labelKey))); }
|
|
1072
|
+
|
|
1073
|
+
return button;
|
|
1074
|
+
}
|
|
999
1075
|
|
|
1000
1076
|
/**
|
|
1001
1077
|
* The toolbar's buttons as a palette: drag one onto the canvas and
|
|
@@ -1145,7 +1221,7 @@ $.fn.gridEditor = function( optionsOrMethod ) {
|
|
|
1145
1221
|
} else {
|
|
1146
1222
|
made.appendTo(where.region);
|
|
1147
1223
|
}
|
|
1148
|
-
}, { parent: where.region, source: 'dragdrop' });
|
|
1224
|
+
}, { parent: where.region, source: item.source || 'dragdrop' });
|
|
1149
1225
|
}
|
|
1150
1226
|
|
|
1151
1227
|
/** A line where the block would go, following the pointer. */
|
|
@@ -1395,6 +1471,23 @@ $.fn.gridEditor = function( optionsOrMethod ) {
|
|
|
1395
1471
|
return html;
|
|
1396
1472
|
}
|
|
1397
1473
|
|
|
1474
|
+
/**
|
|
1475
|
+
* One node's markup, as getHtml would give it: the canvas goes out of
|
|
1476
|
+
* editing to read it and comes back, as it does for getHtml.
|
|
1477
|
+
*/
|
|
1478
|
+
function nodeHtml(node) {
|
|
1479
|
+
deinit();
|
|
1480
|
+
stripPixelWidths(node);
|
|
1481
|
+
var html = node[0].outerHTML;
|
|
1482
|
+
init();
|
|
1483
|
+
return html;
|
|
1484
|
+
}
|
|
1485
|
+
|
|
1486
|
+
/** getHtml with grid-editor's own classes and attributes taken off. */
|
|
1487
|
+
function getPlainHtml() {
|
|
1488
|
+
return plainHtml(getHtml());
|
|
1489
|
+
}
|
|
1490
|
+
|
|
1398
1491
|
function destroy() {
|
|
1399
1492
|
deinit();
|
|
1400
1493
|
removeConfirmModal();
|
|
@@ -1535,6 +1628,12 @@ $.fn.gridEditor = function( optionsOrMethod ) {
|
|
|
1535
1628
|
utilityField: utilityField,
|
|
1536
1629
|
bareStyle: bareStyle,
|
|
1537
1630
|
rowFromLayout: rowFromLayoutValue,
|
|
1631
|
+
nodeHtml: nodeHtml,
|
|
1632
|
+
toolbarItems: function(name) {
|
|
1633
|
+
return mainControls
|
|
1634
|
+
? mainControls.find('[data-ge-toolbar="feature"][data-ge-feature="' + name + '"]')
|
|
1635
|
+
: $();
|
|
1636
|
+
},
|
|
1538
1637
|
};
|
|
1539
1638
|
}
|
|
1540
1639
|
|
|
@@ -2128,17 +2227,6 @@ $.fn.gridEditor = function( optionsOrMethod ) {
|
|
|
2128
2227
|
|
|
2129
2228
|
createMoveTool(drawer);
|
|
2130
2229
|
addSettingsTool(drawer, container, settings.container_classes);
|
|
2131
|
-
if (definition.addPane) {
|
|
2132
|
-
createTool(drawer, t(definition.addPaneKey), 'ge-add-pane', 'bi bi-plus-circle', function() {
|
|
2133
|
-
var pane = definition.addPane(container, {});
|
|
2134
|
-
|
|
2135
|
-
addNode(definition.paneKind, pane, function() {}, {
|
|
2136
|
-
parent: container,
|
|
2137
|
-
source: 'tool',
|
|
2138
|
-
container: container,
|
|
2139
|
-
});
|
|
2140
|
-
});
|
|
2141
|
-
}
|
|
2142
2230
|
|
|
2143
2231
|
settings.container_tools.forEach(function(hostTool) {
|
|
2144
2232
|
createTool(drawer, hostTool.title || '', hostTool.className || '',
|
|
@@ -2152,6 +2240,19 @@ $.fn.gridEditor = function( optionsOrMethod ) {
|
|
|
2152
2240
|
container.slideUp(removed);
|
|
2153
2241
|
});
|
|
2154
2242
|
});
|
|
2243
|
+
|
|
2244
|
+
// Delete then add, the order rows and columns have
|
|
2245
|
+
if (definition.addPane) {
|
|
2246
|
+
createTool(drawer, t(definition.addPaneKey), 'ge-add-pane', 'bi bi-plus-circle', function() {
|
|
2247
|
+
var pane = definition.addPane(container, {});
|
|
2248
|
+
|
|
2249
|
+
addNode(definition.paneKind, pane, function() {}, {
|
|
2250
|
+
parent: container,
|
|
2251
|
+
source: 'tool',
|
|
2252
|
+
container: container,
|
|
2253
|
+
});
|
|
2254
|
+
});
|
|
2255
|
+
}
|
|
2155
2256
|
}
|
|
2156
2257
|
|
|
2157
2258
|
/**
|
|
@@ -2673,11 +2774,16 @@ $.fn.gridEditor = function( optionsOrMethod ) {
|
|
|
2673
2774
|
});
|
|
2674
2775
|
|
|
2675
2776
|
// Beside the gear, because every node that has one is a node a
|
|
2676
|
-
// utility may apply to, whichever plugin built its drawer
|
|
2777
|
+
// utility may apply to, whichever plugin built its drawer. A
|
|
2778
|
+
// feature plugin's tools go there too, for the same reason: the
|
|
2779
|
+
// gear is the one tool every drawer has.
|
|
2677
2780
|
var kind = kindOf(node);
|
|
2678
2781
|
$.each(UTILITIES, function(name, utility) {
|
|
2679
2782
|
if (utility.drawerTools) { utility.drawerTools(drawer, node, kind); }
|
|
2680
2783
|
});
|
|
2784
|
+
$.each(FEATURES, function(name, feature) {
|
|
2785
|
+
if (feature.drawerTools) { feature.drawerTools(drawer, node, kind); }
|
|
2786
|
+
});
|
|
2681
2787
|
|
|
2682
2788
|
return details.appendTo(drawer);
|
|
2683
2789
|
}
|
|
@@ -3544,7 +3650,7 @@ $.fn.gridEditor = function( optionsOrMethod ) {
|
|
|
3544
3650
|
var add = function() {
|
|
3545
3651
|
return addNode(kind, node, function() {
|
|
3546
3652
|
node[placement](options[placement]);
|
|
3547
|
-
}, { parent: parent, source: 'api' });
|
|
3653
|
+
}, { parent: parent, source: options.source || 'api' });
|
|
3548
3654
|
};
|
|
3549
3655
|
|
|
3550
3656
|
if (operationDepth > 0) {
|
|
@@ -3738,11 +3844,19 @@ $.fn.gridEditor = function( optionsOrMethod ) {
|
|
|
3738
3844
|
return $();
|
|
3739
3845
|
}
|
|
3740
3846
|
|
|
3847
|
+
/**
|
|
3848
|
+
* A content area for the first content type. With no content types
|
|
3849
|
+
* it is a content area and nothing more: there is no type to name.
|
|
3850
|
+
*/
|
|
3741
3851
|
function createDefaultContentWrapper() {
|
|
3742
|
-
|
|
3743
|
-
|
|
3744
|
-
|
|
3745
|
-
|
|
3852
|
+
var type = settings.content_types[0];
|
|
3853
|
+
var contentArea = $('<div class="ge-content"/>');
|
|
3854
|
+
|
|
3855
|
+
if (type) {
|
|
3856
|
+
contentArea.addClass('ge-content-type-' + type).attr('data-ge-content-type', type);
|
|
3857
|
+
}
|
|
3858
|
+
|
|
3859
|
+
return contentArea;
|
|
3746
3860
|
}
|
|
3747
3861
|
|
|
3748
3862
|
/**
|
|
@@ -3810,6 +3924,7 @@ $.fn.gridEditor = function( optionsOrMethod ) {
|
|
|
3810
3924
|
*/
|
|
3811
3925
|
var handle = {
|
|
3812
3926
|
getHtml: getHtml,
|
|
3927
|
+
getPlainHtml: getPlainHtml,
|
|
3813
3928
|
// init and reset are deferred when a handler calls them, so an
|
|
3814
3929
|
// operation in flight finishes before the canvas is rebuilt
|
|
3815
3930
|
init: function() { defer(init); },
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
(Jt=>{var Vt={getHtml:{value:!0,noInstance:function(e){return e.html()}},init:{},deinit:{},reset:{},destroy:{},remove:{},changeView:{},getView:{value:!0},createRow:{value:!0},createColumn:{value:!0},createElement:{value:!0},createSection:{value:!0},createContainer:{value:!0},addTab:{value:!0},addAccordionItem:{value:!0},setLocale:{},getUtility:{value:!0},setUtility:{value:!0}},Lt=["appendTo","prependTo","insertAfter","insertBefore"],Wt=[{key:"xs",infix:"",colPrefix:"col-",offsetPrefix:"offset-",min:0,preview:400,labelKey:"view.xs"},{key:"sm",infix:"sm",colPrefix:"col-sm-",offsetPrefix:"offset-sm-",min:576,preview:576,labelKey:"view.sm"},{key:"md",infix:"md",colPrefix:"col-md-",offsetPrefix:"offset-md-",min:768,preview:768,labelKey:"view.md"},{key:"lg",infix:"lg",colPrefix:"col-lg-",offsetPrefix:"offset-lg-",min:992,preview:992,labelKey:"view.lg"},{key:"xl",infix:"xl",colPrefix:"col-xl-",offsetPrefix:"offset-xl-",min:1200,preview:1200,labelKey:"view.xl"},{key:"xxl",infix:"xxl",colPrefix:"col-xxl-",offsetPrefix:"offset-xxl-",min:1400,preview:null,labelKey:"view.xxl"}],Xt="all",t="view.all",$t=[Xt].concat(Wt.map(function(e){return e.key})),Yt=["lg","sm","xs"],Qt=12,Gt=["equal","auto"],Ht=["1","2","3","4","5","6","auto"];function Zt(e,t){return"row-cols"+(e.infix?"-"+e.infix:"")+"-"+t}function en(e){return"number"==typeof e}function tn(e,t){return"equal"===t?e.infix?"col-"+e.infix:"col":e.colPrefix+t}function nn(e){for(var t=0;t<Wt.length;t++)if(Wt[t].key===e)return Wt[t];return null}function on(e){return e===Xt?[Wt[0]]:(e=nn(e))?[e]:[]}function an(e){e=nn(e);return e?e.labelKey:t}var rn={add_column:{size:12,picker:!0,delay:600},elements:{enabled:"auto",selector:"[data-ge-element]",auto:!1},resize:{enabled:!0,handles:"e",balance:"next"},drag:{delay:0,touch_delay:100,threshold:3,animation:150,scroll:!0}},ln={sortable_options:"drag",resizable_options:"resize"},n={},sn=0;function cn(e,t,n){var o=Jt.fn.gridEditor.locales,i=o[e.locale]||{},e=(e.locale_strings||{})[t];return void 0===(e=void 0===(e=void 0===e?i[t]:e)?o.en[t]:e)&&(r("locale:"+t,'no string for "'+t+'" in any locale, showing the key'),e=t),e.replace(/\{(\w+)\}/g,function(e,t){return n&&void 0!==n[t]?n[t]:e})}function un(e){window.console&&window.console.warn&&window.console.warn("grid-editor: "+e)}function r(e,t){n[e]||(n[e]=!0,un(t))}Jt.fn.gridEditor=function(Ft){if("string"!=typeof Ft)return this.each(function(R,e){e=Jt(e);var o,i,K,N,q,a,d=Jt.extend({new_row_layouts:[[12],[6,6],[4,4,4],[3,3,3,3],[2,2,2,2,2,2],[2,8,2],[4,8],[8,4]],row_classes:[],col_classes:[],col_tools:[],row_tools:[],drag_handle:"tool",toolbar_drag:"auto",element_tools:[],element_classes:[],container_classes:[],pane_classes:[],container_tools:[],tab_tools:[],accordion_tools:[],plugins:null,row_cols:!0,utilities:{},elements:rn.elements,custom_filter:"",content_types:["tinymce"],valid_col_sizes:[1,2,3,4,5,6,7,8,9,10,11,12,"equal","auto"],valid_col_offsets:[0,1,2,3,4,5,6,7,8,9,10,11],add_column:rn.add_column,layout_modes:$t.slice(),default_view:Xt,resize:rn.resize,source_textarea:"",locale:"en",locale_strings:{},callbacks:{},confirm_delete:!0,drag:rn.drag},Ft),p=(Jt.each(rn,function(e,t){d[e]=Jt.extend({},t,d[e])}),Jt.each(ln,function(e,t){Ft&&void 0!==Ft[e]&&un(Jt.fn.gridEditor.t(d,"warning.setting_removed",{setting:e,replacement:t}))}),d.default_view),r=null,l=null,f=null,B={},U=[],F=++sn;function s(e,t){B[e]||(B[e]=!0,un(t))}function u(e,t){return cn(d,e,t)}var t,n,g=e.addClass("ge-canvas"),J=0,V=[];function m(e,t,n){return Jt.extend({kind:e,node:t,parent:t.parent(),canvas:g,breakpoint:p,source:"api"},n||{})}function h(e,t){var n=[e],o=e.replace(/^(before|after)-add-.+$/,"$1-add"),i=(o!==e&&n.push(o),!1);return n.forEach(function(e){e=Jt.Event("grideditor:"+e);g.trigger(e,[t]),e.isDefaultPrevented()&&(i=!0)}),n.forEach(function(e){e=d.callbacks[e.replace(/-/g,"_")];"function"==typeof e&&!1===e(t)&&(i=!0)}),!i}function v(e){J++;try{return e()}finally{if(0===--J)for(;V.length;)V.shift()()}}function L(e){0===J?e():V.push(e)}function w(t,n,o,i){e=t;var e,a=Jt.fn.gridEditor.containers[e]?"container":e;return v(function(){var e=m(t,n,i);return h("before-add-"+a,e)?(o(),_(),h("after-add-"+a,e),n):null})}function W(e,t){var n,o;d.confirm_delete?window.bootstrap&&window.bootstrap.Modal?(r||((r=Jt('<div class="modal fade ge-confirm" tabindex="-1" aria-hidden="true"><div class="modal-dialog modal-dialog-centered"><div class="modal-content"><div class="modal-header"><h5 class="modal-title"></h5><button type="button" class="btn-close" data-bs-dismiss="modal"></button></div><div class="modal-body"><p class="ge-confirm-message"></p></div><div class="modal-footer"><button type="button" class="btn btn-secondary ge-confirm-cancel" data-bs-dismiss="modal"></button><button type="button" class="btn btn-danger ge-confirm-ok"></button></div></div></div></div>').appendTo("body")).find(".modal-title").text(u("confirm.title")),r.find(".btn-close").attr("aria-label",u("confirm.cancel")),r.find(".ge-confirm-cancel").text(u("confirm.cancel")),r.find(".ge-confirm-ok").text(u("confirm.ok"))),o=!1,(n=r).find(".ge-confirm-message").text(e),n.find(".ge-confirm-ok").off("click").on("click",function(){o=!0,window.bootstrap.Modal.getInstance(n[0]).hide()}),n.off("hidden.bs.modal").on("hidden.bs.modal",function(){o&&t()}),n.off("shown.bs.modal").on("shown.bs.modal",function(){n.find(".ge-confirm-ok").trigger("focus")}),window.bootstrap.Modal.getOrCreateInstance(n[0]).show()):window.confirm(e)&&t():t()}function X(){var e;r&&(window.bootstrap&&window.bootstrap.Modal&&(e=window.bootstrap.Modal.getInstance(r[0]))&&e.dispose(),r.remove(),r=null)}function c(t,n,o,i){v(function(){var e=m(t,n,{source:"tool"});h("before-delete",e)&&W(o,function(){v(function(){i(function(){n.remove(),v(function(){_(),h("after-delete",e)})})})})})}function $(n,t,e){var o,i,a;return(e=e||p)!==Xt?(e=nn(e),(o=pt({size:t,offset:lt(n,e)||0})).refused||I(n,e)===o.size?null:{writes:[{tier:e,size:o.size}],cleared:null,size:o.size}):!Wt.some(function(e){return pt({size:t,offset:lt(n,e)||0}).refused})&&(e=Wt[0],i=[],a=[],Wt.slice(1).forEach(function(e){var t=I(n,e);null!==t&&(i.push({tier:e,size:null}),a.push({breakpoint:e.key,value:t}))}),I(n,e)!==t&&i.unshift({tier:e,size:t}),i.length)?{writes:i,cleared:a,size:t}:null}function Y(t,e){e.writes.forEach(function(e){dt(t,e.tier,e.size)}),mt(t)}function Q(e,t){return t&&(e.cleared=t),e}function G(t,e,n,o){o=o||p;var i=Ve(t),a=$(t,e,o);return!!a&&v(function(){var e=m("column",t,Q({source:n,breakpoint:o,from:i,to:a.size},a.cleared));return h("before-resize",e)?(Y(t,a),z(t),h("after-resize",e),!0):(z(t),!1)})}function H(o,i,t){var n=p===Xt,a=n?Wt[0]:nn(p),r=Xe(o),l=(i=Math.min(Math.max(i,0),11),n?Wt.slice(1).filter(function(e){return null!==at(o,e)}):[]);(at(o,a)||0)===i&&!l.length||v(function(){var e=m("column",o,Q({source:t,from:r,to:i},n?l.map(function(e){return{breakpoint:e.key,value:at(o,e)}}):null));return!!h("before-indent",e)&&(ft(o,a,i),l.forEach(function(e){ft(o,e,0)}),(n?Wt:[a]).forEach(function(e){var t,n=rt(o,e);en(n)&&(t=pt({size:n,offset:i,leading:"offset"})).size!==n&&dt(o,e,t.size)}),z(o),h("after-indent",e),!0)})}function Z(e){var t=e.parent();return{parent:t,index:t.children().not(".ge-tools-drawer").index(e)}}function b(n){var o=null;return Jt.each(A,function(e,t){!o&&t.kindOf&&(o=t.kindOf(n))}),o||(n.attr("data-ge-container")?n.attr("data-ge-container"):n.hasClass("ge-tab")?"tab":n.hasClass("ge-accordion-item")?"accordion-item":n.hasClass("row")?"row":n.hasClass("column")?"column":n.hasClass("ge-element")?"element":n.hasClass("ge-content")?"content":"node")}function ee(){o=Jt('<div class="ge-mainControls" />').insertBefore(a),i=Jt('<div class="ge-wrapper ge-top" />').appendTo(o),K=Jt('<div class="ge-addRowGroup btn-group" />').appendTo(i),N=Jt('<div class="ge-addContainerGroup btn-group" />'),Jt.each(d.new_row_layouts,function(e,t){var n,o,i=!Array.isArray(t),a=Jt('<a class="btn btn-sm btn-primary" />').attr("title",i?u("row.add_row_cols",{columns:t.columns,counts:(n=t.row_cols,Wt.filter(function(e){return n&&void 0!==n[e.key]}).map(function(e){return(e.infix?e.key+": ":"")+n[e.key]}).join(", "))}):u("row.add",{layout:t.join("-")})).attr("data-ge-toolbar","row").attr("data-ge-layout",i?JSON.stringify(t):t.join(",")).on("click",function(){var e=y(t);w("row",e,function(){e.appendTo(g)},{parent:g,source:"tool"})&&e[0].scrollIntoView&&e[0].scrollIntoView({behavior:"smooth"})}).appendTo(K),i=(a.append('<i class="bi bi-plus"></i>'),i?(i=t,o=1,Jt.each(i.row_cols||{},function(e,t){"auto"!==t&&(o=Math.max(o,parseInt(t,10)||1))}),Array.apply(null,Array(Math.min(o,i.columns||o))).map(function(){return"equal"})):t),r='<div class="row ge-row-icon">';i.forEach(function(e){r+='<div class="column '+tn(Wt[0],e)+'"></div>'}),r+="</div>",a.append(r)}),N.appendTo(i),Jt.each(E,function(o,i){Jt('<a class="btn btn-sm btn-primary ge-add-container" />').attr("title",u(i.labelKey)).attr("data-ge-toolbar","container").attr("data-ge-container-type",o).append('<i class="bi bi-plus"></i>').append(Jt("<span />").text(u(i.labelKey))).on("click",function(){var e=D(),t=j(Qt).appendTo(e),n=i.create({});t.find("> .ge-content").replaceWith(n),w(o,n,function(){e.appendTo(g)},{parent:g,source:"tool"})}).appendTo(N)}),Jt.each(A,function(n,e){(e.toolbar||[]).forEach(function(t,e){Jt('<a class="btn btn-sm btn-primary ge-add-container ge-add-feature" />').attr("title",u(t.labelKey)).attr("data-ge-toolbar","feature").attr("data-ge-feature",n).attr("data-ge-item",e).append('<i class="bi bi-plus"></i>').append(Jt("<span />").text(u(t.labelKey))).on("click",function(){var e=t.create();w(t.kind,e,function(){e.appendTo(g)},{parent:g,source:"tool"})}).appendTo(N)})}),q=Jt('<div class="dropdown pull-right ge-layout-mode"><button type="button" class="btn btn-sm btn-primary dropdown-toggle" data-bs-toggle="dropdown"></button><div class="dropdown-menu" role="menu"></div></div>').on("click","a",function(){Rt(Jt(this).attr("data-ge-view"))}).appendTo(i),d.layout_modes.forEach(function(e){Jt('<a class="dropdown-item" />').attr("data-ge-view",e).attr("title",u(an(e))).text(u(an(e))).appendTo(q.find(".dropdown-menu"))}),q.find("button").text(u(an(p)));var e=Jt('<div class="btn-group pull-right"/>').appendTo(i),t=Jt('<button type="button" class="btn btn-sm btn-primary gm-edit-mode"><i class="bi bi-code-slash"></i></button>').attr("title",u("tool.edit_source")).on("click",function(){(t.hasClass("active")?(g.empty().html(a.val()).show(),_(),a):(x(),a.height(.8*Jt(window).height()).val(g.html()).show(),g)).hide(),t.toggleClass("active btn-danger")}).appendTo(e),n=Jt('<button type="button" class="btn btn-sm btn-primary gm-preview"><i class="bi bi-eye-fill"></i></button>').attr("title",u("tool.preview")).on("mouseenter",function(){g.removeClass("ge-editing")}).on("click",function(){n.toggleClass("active btn-danger").trigger("mouseleave")}).on("mouseleave",function(){n.hasClass("active")||g.addClass("ge-editing")}).appendTo(e);e=o.find("[data-ge-toolbar]").removeClass("ge-palette-button").off("pointerdown.ge-palette"),("auto"!==d.toolbar_drag?d.toolbar_drag:"drawer"===d.drag_handle)&&e.addClass("ge-palette-button").on("pointerdown.ge-palette",te)}function te(e){var s=Jt(e.currentTarget),n=e.pageX,o=e.pageY,c=null;function u(e){if(!c){if(t=e,!(Math.abs(t.pageX-n)+Math.abs(t.pageY-o)>d.drag.threshold))return;c=s.clone().addClass("ge-toolbar-helper").appendTo("body"),g.addClass("ge-dropping")}c.css({left:e.pageX-14,top:e.pageY-14});var t=e.pageX;(t=ne(t,e.pageY))?(f=f||Jt('<div class="ge-drop-marker" />'),t.before?f.insertBefore(t.before):f.appendTo(t.region)):oe()}e.button||Jt(document).on("pointermove.ge-toolbar",u).on("pointerup.ge-toolbar pointercancel.ge-toolbar",function e(t){var n,o,i,a,r,l;Jt(document).off("pointermove.ge-toolbar",u).off("pointerup.ge-toolbar pointercancel.ge-toolbar",e),c&&(c.remove(),g.removeClass("ge-dropping"),oe(),s.one("click",function(e){e.preventDefault(),e.stopImmediatePropagation()}),t=ne(t.pageX,t.pageY))&&(n=t,"feature"===(t=s).attr("data-ge-toolbar")?(o=n,i=(r=A[(r=t).attr("data-ge-feature")].toolbar[parseInt(r.attr("data-ge-item"),10)]).create(),bt(o.region,i)||(a=o.region.parentsUntil(g).addBack().first(),(o={region:g,before:a.length?a.next():null}).before&&!o.before.length&&(o.before=null)),w(r.kind,i,function(){o.before?i.insertBefore(o.before):i.appendTo(o.region)},{parent:o.region,source:"dragdrop"})):(a="container"===t.attr("data-ge-toolbar"),r=t.attr("data-ge-container-type"),l=t=a?E[r].create({}):(e=>/^\s*\{/.test(e||"")?y(JSON.parse(e)):y((e||"").split(",").filter(function(e){return""!==e}).map(ie)))(t.attr("data-ge-layout")),a&&!n.region.is(".column")&&(l=D(),j(Qt).appendTo(l).find("> .ge-content").replaceWith(t)),w(a?r:"row",t,function(){n.before?l.insertBefore(n.before):l.appendTo(n.region)},{parent:n.region,source:"dragdrop"})))})}function ne(e,t){var n,e=e-window.scrollX,o=t-window.scrollY,t=document.elementFromPoint(e,o);return!t||!(e=Jt(t).closest([".column",".ge-canvas"].concat(wt("regions")).join(", "))).length||e[0]!==g[0]&&!g[0].contains(e[0])?null:(n=null,e.children(vt()).each(function(){var e;n||(e=this.getBoundingClientRect(),o<e.top+e.height/2&&(n=Jt(this)))}),{region:e,before:n})}function oe(){f&&f.remove()}function ie(e){return/^\d+$/.test(String(e))?parseInt(e,10):e}function y(e){var n=D();if(Array.isArray(e))e.forEach(function(e){j(e).appendTo(n)});else{Jt.each(e.row_cols||{},function(e,t){e=nn(e);e&&-1!==Ht.indexOf(String(t))&&n.addClass(Zt(e,t))});for(var t=0;t<(e.columns||0);t++)j(null).appendTo(n)}return n}function ae(e){var t=Jt(window);t.scrollTop()>o.offset().top&&t.scrollTop()<g.offset().top+g.height()?i.hasClass("ge-top")&&i.css({left:i.offset().left,width:i.outerWidth()}).removeClass("ge-top").addClass("ge-fixed"):i.hasClass("ge-fixed")&&i.css({left:"",width:""}).removeClass("ge-fixed").addClass("ge-top")}function re(e){var t;Jt(this).hasClass("ge-rte-active")||Jt(this).is(":visible")&&(t=Nt(Jt(this).data("ge-content-type")))&&(Jt(this).addClass("ge-rte-active",!0),t.init(d,Jt(this)))}function le(){x(),_()}function _(){var e;Pt(!0),g.addClass("ge-editing"),g.toggleClass("ge-drag-drawer","drawer"===d.drag_handle),g.find('.column, div[class*="col-"], div.col').each(function(){var t,e=Jt(this).addClass("column");t=e,Wt.filter(function(e){return null!==I(t,e)}).length||et(e.parent())||dt(e,Wt[0],Qt)}),g.find(".column").each(function(){var e=Jt(this),t=Jt();e.children().each(function(){var e=Jt(this);e.is(".ge-tools-drawer, .ge-resize-handle")||(t=e.is(".row, .ge-content, [data-ge-container]")?Ot(t):t.add(e))}),Ot(t)}),g.find(".row").each(function(){var t,i,a,r,e,n=Jt(this);n.find("> .ge-tools-drawer").length||(Ge(t=Jt('<div class="ge-tools-drawer" />').prependTo(n)),Ze(t,n,d.row_classes),d.row_tools.forEach(function(e){O(t,e.title||"",e.className||"",e.iconClass||"bi bi-wrench",e.on)}),O(t,u("tool.delete_row"),"ge-delete-row","bi bi-trash",function(){c("row",n,u("confirm.delete_row"),function(e){n.slideUp(e)})}),O(t,u("tool.add_column"),"ge-add-column","bi bi-plus-circle",function(){Je()||Fe(n,tt(n,P())?null:d.add_column.size)}),i=t.find("> .ge-add-column"),a=n,d.add_column.picker&&(r=null,e=function(){window.clearTimeout(r),r=null},i.on("mouseenter mousedown",function(){r||l||(r=window.setTimeout(function(){var e,n,o;r=null,e=i,n=a,Je(),o=gt(n,P()),e.closest(".ge-tools-drawer").addClass("ge-picker-open"),l=Jt('<div class="ge-size-picker" />').appendTo(e),d.valid_col_sizes.forEach(function(t){var e;Jt('<a class="ge-size" />').attr("data-ge-size",t).attr("title","equal"!==(e=t)?"auto"!==e?u("tool.column_size",{size:e}):u("tool.column_auto"):u("tool.column_equal")).toggleClass("ge-size-tight",en(t)&&o<t).toggleClass("ge-size-flex",!en(t)).text(en(t)?t:tn(Wt[0],t)).on("click",function(e){e.preventDefault(),e.stopPropagation(),Je(),Fe(n,t)}).appendTo(l)}),e.one("mouseleave",function(){window.setTimeout(function(){l&&!l.is(":hover")&&Je()},400)})},d.add_column.delay))}),i.on("mouseleave",e),i.on("mouseup",e)))}),g.find(".column").each(function(){var t,n=Jt(this);n.find("> .ge-tools-drawer").length||(Ge(t=Jt('<div class="ge-tools-drawer" />').prependTo(n)),O(t,u("tool.column_narrower"),"ge-decrease-col-width","bi bi-dash-lg",function(e){G(n,e.shiftKey?Ye(d.valid_col_sizes):$e(d.valid_col_sizes.filter(en),Le(n),-1),"tool")}),O(t,u("tool.column_wider"),"ge-increase-col-width","bi bi-plus-lg",function(e){G(n,e.shiftKey?(e=>(e=gt(e.parent(),P(),e)-Xe(e),Math.min(Qe(d.valid_col_sizes),Math.max(e,1))))(n):$e(d.valid_col_sizes.filter(en),Le(n),1),"tool")}),O(t,u("tool.indent_decrease"),"ge-decrease-col-offset","bi bi-text-indent-right",function(e){H(n,e.shiftKey?Ye(d.valid_col_offsets):$e(d.valid_col_offsets,Xe(n),-1),"tool")}),O(t,u("tool.indent_increase"),"ge-increase-col-offset","bi bi-text-indent-left",function(e){H(n,e.shiftKey?(e=>(e=gt(e.parent(),P(),e)-Le(e),Math.min(Qe(d.valid_col_offsets),Math.max(e,0))))(n):$e(d.valid_col_offsets,Xe(n),1),"tool")}),Ze(t,n,d.col_classes),d.col_tools.forEach(function(e){O(t,e.title||"",e.className||"",e.iconClass||"bi bi-wrench",e.on)}),O(t,u("tool.delete_column"),"ge-delete-column","bi bi-trash",function(){c("column",n,u("confirm.delete_column"),function(e){n.animate({opacity:"hide",width:"hide",height:"hide"},400,e)})}),O(t,u("tool.add_row"),"ge-add-row","bi bi-plus-circle",function(){var e=D();w("row",e,function(){n.append(e)},{parent:n,source:"tool"})}))}),g.find("[data-ge-container]").each(function(){var t,e,n,o,i=Jt(this),a=S(i),r=E[a];r?(i.addClass("ge-container ge-container-"+a),r.mark(i),i.find("> .ge-tools-drawer").length||(t=i,e=a,n=r,Ge(o=Jt('<div class="ge-tools-drawer ge-container-drawer" />').prependTo(t)),Ze(o,t,d.container_classes),n.addPane&&O(o,u(n.addPaneKey),"ge-add-pane","bi bi-plus-circle",function(){var e=n.addPane(t,{});w(n.paneKind,e,function(){},{parent:t,source:"tool",container:t})}),d.container_tools.forEach(function(e){O(o,e.title||"",e.className||"",e.iconClass||"bi bi-wrench",e.on)}),n.tools&&n.tools(o,t),O(o,u("tool.delete_container"),"ge-delete-container","bi bi-trash",function(){c(e,t,u("confirm.delete_container"),function(e){t.slideUp(e)})}))):s("container:"+a,'unknown container type "'+a+'"')}),k("onInit"),window.Sortable?(yt(g.find(".row"),{draggable:".column",group:"column"}),yt(g.add(g.find(".column")),{draggable:vt(),group:"block",accepts:bt}),(e=wt("regions")).length&&yt(g.find(e.join(", ")),{draggable:">"+vt(),group:"block",accepts:bt}),k("onSortable",yt)):s("sortable_missing",u("error.sortable_missing")),d.resize.enabled&&g.find(".column").each(function(){var n=Jt(this);n.find("> .ge-resize-handle").length||(Jt('<span class="ge-resize-size" />').appendTo(n.find("> .ge-tools-drawer")),Jt.each(String(d.resize.handles).split(",").map(function(e){return e.trim()}).filter(function(e){return"e"===e||"w"===e}),function(e,t){Jt('<span class="ge-resize-handle" />').addClass("ge-resize-"+t).attr("data-ge-edge",t).on("pointerdown",kt).appendTo(n)}))}),Dt(p),Te(g)}function x(){g.removeClass("ge-editing ge-drag-drawer ge-dropping");g.find(".ge-content").each(function(){var e=Jt(this),t=Nt(e.data("ge-content-type"));t&&t.deinit(d,e),e.removeClass("ge-rte-active")});Je(),oe(),g.find(".ge-tools-drawer").remove(),k("onDeinit"),ze(g),g.find("[data-ge-row-cols]").removeAttr("data-ge-row-cols"),g.find("[data-ge-container]").each(function(){var e=Jt(this),t=E[S(e)];t&&t.unmark(e),e.removeClass("ge-container ge-container-"+S(e)),e.attr("class")||e.removeAttr("class")}),Jt.each(U,function(e,t){t.destroy()}),U=[],g.find(".ge-resize-handle").remove(),g.find(".ge-resize-size").remove(),mt(g),Pt(!1)}function se(){x(),X(),o.remove(),a.remove(),Jt(window).off("scroll",ae),g.off("click",".ge-content",re),g.off("ge-rte-ready",".ge-content"),g.removeData("grideditor")}function k(n,o){Jt.each(E,function(e,t){t[n]&&t[n](o)}),Jt.each(A,function(e,t){t[n]&&t[n](o)}),Jt.each(M,function(e,t){t[n]&&t[n](o)})}d.source_textarea&&(0<(t=Jt(d.source_textarea).val()).length&&0==Jt("<div>"+t+"</div>").find(".row").addBack(".row").length&&(n=D(),(n=j(12).appendTo(n)).find(".ge-content").html(t),t=n.html()),e.html(t)),e.children().length&&!e.find("div.row").length&&(n=e.children(),Jt('<div class="row"><div class="col-lg-12"/></div>').appendTo(e).find(".col-lg-12").append(n));var C={},ce=".row, .column, .ge-element, [data-ge-container]",ue="data-ge-preview",de=!1;function fe(e,t,n){var o=n.name||n.prefix;C[o]?un('the "'+e+'" plugin declares the utility "'+o+'", which the "'+C[o].plugin+'" plugin already declared: ignored'):C[o]={plugin:e,family:Jt.extend({},n,{name:o,values:n.values.map(String),appliesTo:n.appliesTo||t.appliesTo||["row","column"]})}}function ge(e,t){return C[e]?C[e].family:(s("utility:"+e,t+"("+JSON.stringify(e)+"): no loaded plugin declares that utility"),null)}function pe(e,t){return-1!==e.appliesTo.indexOf(t)||E[t]&&-1!==e.appliesTo.indexOf("container")}function me(t){return Jt.map(C,function(e){return pe(e.family,t)?e.family:null})}function he(e,t,n){return e.className?e.className(t.key,n):e.prefix+(t.infix?"-"+t.infix:"")+"-"+n}function T(e,t,n){for(var o=(e.attr("class")||"").split(/\s+/),i=0;i<t.values.length;i++)if(-1!==o.indexOf(he(t,n,t.values[i])))return t.values[i];return null}function ve(e,t,n){for(var o=Wt.indexOf(n)-1;0<=o;o--){var i=T(e,t,Wt[o]);if(null!==i)return{tier:Wt[o],value:i}}return null}function we(e,t,n){var o=T(e,t,n);return null!==o?o:(o=ve(e,t,n))?o.value:null}function be(t,n){return Wt.map(function(e){return{tier:e,value:T(t,n,e)}}).filter(function(e){return null!==e.value})}function ye(t,n,o,e){n.values.forEach(function(e){t.removeClass(he(n,o,e))}),null!==e&&t.addClass(he(n,o,e)),t.attr("class")||t.removeAttr("class")}function _e(e,t,n){return n===Xt?T(e,t,Wt[0]):we(e,t,nn(n))}function xe(e,t,n){e=Jt(e).first();var o,t=ge(t,"getUtility");return t&&e.length?null===(o=void 0===n?p:jt(n))?(un("getUtility("+JSON.stringify(n)+"): no such layout mode"),null):_e(e,t,o):null}function ke(t,n,o,i){i="string"==typeof i?{view:i}:i||{},t=Jt(t).first();var a,r,l,e,s,c,u,d,f,g=ge(n,"setUtility");return!(!g||!t.length)&&(null===(a=void 0===i.view?p:jt(i.view))?(un("setUtility("+JSON.stringify(i.view)+"): no such layout mode"),!1):null!==(o=null==o||""===o?null:String(o))&&-1===g.values.indexOf(o)?(un("setUtility: "+JSON.stringify(o)+' is not a value of "'+n+'", which takes '+JSON.stringify(g.values)),!1):(r=b(t),pe(g,r)?g.write?g.write(t,o,a,i.source||"api"):(e=t,s=g,u=o,!!(l=(c=a)!==Xt?T(e,s,c=nn(c))===u?null:{writes:[{tier:c,value:u}],cleared:[]}:(d=[],f=[],be(e,s).forEach(function(e){e.tier!==Wt[0]&&(d.push({tier:e.tier,value:null}),f.push({breakpoint:e.tier.key,value:e.value}))}),T(e,s,Wt[0])!==u&&d.unshift({tier:Wt[0],value:u}),d.length?{writes:d,cleared:f}:null))&&v(function(){var e=m(r,t,{family:n,breakpoint:a,tiers:l.writes.map(function(e){return e.tier.key}),from:_e(t,g,a),to:o,cleared:l.cleared,source:i.source||"api"});return h("before-utility",e)?(l.writes.forEach(function(e){ye(t,g,e.tier,e.value)}),z(t),h("after-utility",e),!0):(z(t),!1)})):(un('setUtility: "'+n+'" does not apply to a '+r),!1)))}function Ce(t,e,n){var o=ge(e,"bareStyle");return t=Jt(t).first(),o&&t.length?(e=t.attr("class"),Wt.forEach(function(e){ye(t,o,e,null)}),n=getComputedStyle(t[0]).getPropertyValue(n),void 0===e?t.removeAttr("class"):t.attr("class",e),n):null}function z(e){var t=e.children(".ge-tools-drawer").children(".ge-details");t.children(".ge-classes").val(He(e).join(" ")),t.children(".ge-utilities").each(function(){Me(Jt(this))}),Te(e)}function Te(e){var t,l;ze(e),p!==Xt&&(t=e,l=nn(p),(e=>e.find(ce).addBack(ce))(t).each(function(){var e,n,o,i=Jt(this),a=b(i),r={};me(a).forEach(function(e){e.preview&&be(i,e).length&&Jt.extend(r,e.preview(we(i,e,l),i,a))}),"column"===a&&Jt.extend(r,((e,t)=>{var n=ot(e,t);return n?{flex:"0 0 auto",width:"auto"===n.value?"auto":100/parseInt(n.value,10)+"%","max-width":"100%"}:!et(e.parent())||nt(e,t)?{}:{flex:"0 0 auto",width:"100%","max-width":"100%"}})(i,l)),Jt.each(M,function(e,t){t.preview&&Jt.extend(r,t.preview(i,a,l.key))}),Jt.isEmptyObject(r)||(n=(e=i)[0].style,o={},Jt.each(r,function(e,t){o[e]=[n.getPropertyValue(e),n.getPropertyPriority(e)],n.setProperty(e,String(t),"important")}),e.attr(ue,JSON.stringify(o)))})),e.find(".row").addBack(".row").each(function(){var e=Jt(this),t=!1===d.row_cols?null:p===Xt?tt(e,Wt[0])||null:tt(e,nn(p));t?e.attr("data-ge-row-cols",it(t.value)):e.removeAttr("data-ge-row-cols")}),k("onRefresh",e)}function ze(e){e.find("["+ue+"]").addBack("["+ue+"]").each(function(){var e=Jt(this),n=this.style,t={};try{t=JSON.parse(e.attr(ue))||{}}catch(e){}Jt.each(t,function(e,t){t&&t[0]?n.setProperty(e,t[0],t[1]):n.removeProperty(e)}),e.removeAttr(ue),e.attr("style")||e.removeAttr("style")})}function Ee(e,t){var n=Jt('<label class="ge-utility" />').attr("data-ge-family",t.name);return Jt('<span class="ge-utility-label" />').text(t.labelKey?u(t.labelKey):t.name).appendTo(n),Jt("<select />").appendTo(n).on("change",function(){ke(e,t.name,this.value,{source:"panel"})}),Jt('<small class="ge-utility-note" />').appendTo(n),n}function Ae(e,t){var t=ge(t,"utilityField");return t?(Se(t=Ee(e,t),e),t):Jt()}function Me(e){var t=e.data("ge-node");e.children(".ge-utilities-toggle").text(u("utility.section",{view:u(an(p))})),e.find(".ge-utility").each(function(){Se(Jt(this),t)})}function Se(e,t){var n,o,i,a,r=C[e.attr("data-ge-family")].family,l=e.children("select").empty(),s=r.choices?r.choices(t,b(t)):r.values,c="";p===Xt?(n=T(t,r,Wt[0]),o=u("utility.default"),(a=be(t,r).filter(function(e){return e.tier!==Wt[0]})).length&&(c=u("utility.varies",{breakpoints:a.map(function(e){return e.tier.key}).join(", ")}))):(a=nn(p),i=ve(t,r,a),n=T(t,r,a),o=i?u("utility.inherit",{value:Pe(r,i.value),breakpoint:i.tier.key}):u("utility.default"),(a=r.blank?r.blank(t,p):null)&&null===n&&(o=a)),null!==n&&-1===s.indexOf(n)&&(s=s.concat([n])),Jt('<option value="" />').text(o).appendTo(l),s.forEach(function(e){Jt("<option />").attr("value",e).text(Pe(r,e)).appendTo(l)}),l.val(null===n?"":n),e.children(".ge-utility-note").text(c).toggle(""!==c)}function Pe(e,t){return e.label?e.label(t):t}var E={},A={},M={},Oe={},Ie=0;function De(e){return"ge-"+e+"-"+ ++Ie+"-"+Math.random().toString(36).slice(2,6)}function je(){var e=D();return j(Qt).appendTo(e),e}function S(e){return e.attr("data-ge-container")}function Re(e,t,n,o,i){var a=Jt('<div class="ge-tools-drawer ge-pane-drawer" />').prependTo(e);return Ge(a),Ze(a,e,d.pane_classes),n.forEach(function(e){O(a,e.title||"",e.className||"",e.iconClass||"bi bi-wrench",e.on)}),O(a,u("tool.delete_pane"),"ge-delete-pane","bi bi-trash",function(){c(t,e,o,function(e){i(e)})}),a}function Ke(e){e.find("[data-bs-toggle], [data-bs-dismiss]").addBack("[data-bs-toggle], [data-bs-dismiss]").each(function(){var n=Jt(this);["toggle","dismiss"].forEach(function(e){var t=n.attr("data-bs-"+e);void 0!==t&&n.attr("data-ge-bs-"+e,t).removeAttr("data-bs-"+e)})})}function Ne(e){e.find("[data-ge-bs-toggle], [data-ge-bs-dismiss]").addBack("[data-ge-bs-toggle], [data-ge-bs-dismiss]").each(function(){var n=Jt(this);["toggle","dismiss"].forEach(function(e){var t=n.attr("data-ge-bs-"+e);void 0!==t&&n.attr("data-bs-"+e,t).removeAttr("data-ge-bs-"+e)})})}function qe(t){var n;t.data("ge-editable")||(n=t.closest("[data-bs-toggle], [data-ge-bs-toggle]"),t.data("ge-editable",!0).attr("title",u("tool.rename")).on("dblclick",function(e){e.preventDefault(),e.stopPropagation(),Ke(n),t.attr("contenteditable","true").trigger("focus"),window.getSelection().selectAllChildren(t[0])}).on("keydown",function(e){"true"===t.attr("contenteditable")&&"Enter"===e.key&&(e.preventDefault(),t.trigger("blur"))}).on("blur",function(){t.removeAttr("contenteditable"),Ne(n)}))}function Be(e){var t=e.find("> .ge-pane-label");return t.length||(t=Jt('<span class="ge-pane-label" />').text(e.text().trim()),e.empty().append(t)),t}function Ue(e){e.find(".ge-pane-label").each(function(){Jt(this).removeData("ge-editable").contents().unwrap()})}function Fe(e,t){var n=j(t);w("column",n,function(){e.append(n)},{parent:e,source:"tool"})}function Je(){return l&&(l.closest(".ge-tools-drawer").removeClass("ge-picker-open"),l.remove(),l=null,1)}function P(){return p===Xt?Wt[Wt.length-1]:nn(p)}function Ve(e){var t=P();return ot(e,t)?null:null===(e=rt(e,t))?Qt:e}function Le(e){var t=Ve(e);return en(t)?t:(t=Math.round(e.outerWidth()/We(e.parent())*Qt),Math.min(Math.max(t,1),Qt))}function We(e){var t=window.getComputedStyle(e[0]);return e[0].clientWidth-parseFloat(t.paddingLeft)-parseFloat(t.paddingRight)}function Xe(e){return lt(e,P())||0}function $e(e,n,t){var o=e.indexOf(n);return-1===o?e.reduce(function(e,t){return Math.abs(t-n)<Math.abs(e-n)?t:e},e[0]):e[Math.min(Math.max(o+t,0),e.length-1)]}function Ye(e){return e.filter(en).reduce(function(e,t){return Math.min(e,t)},Qt)}function Qe(e){return e.filter(en).reduce(function(e,t){return Math.max(e,t)},0)}function Ge(e){"drawer"!==d.drag_handle&&O(e,u("tool.move"),"ge-move","bi bi-arrows-move")}function O(e,t,n,o,i){var a=Jt('<a title="'+t+'" class="'+n+'"><i class="'+o+'"></i></a>').appendTo(e);"function"==typeof i&&a.on("click",i),"object"==typeof i&&Jt.each(i,function(e,t){a.on(e,t)})}function He(e){return(e.attr("class")||"").split(/\s+/).filter(function(e){return""!==e&&!(t=>"row"===t||"column"===t||/^(ge-|ui-)/.test(t)||/^col(-(sm|md|lg|xl|xxl))?(-auto)?$/.test(t)||Wt.some(function(e){return new RegExp("^("+e.colPrefix+"|"+e.offsetPrefix+")\\d+$").test(t)}))(e)})}function Ze(n,o,e){var t=((n,e)=>{var t=Jt('<div class="ge-details" />'),o=(Jt('<input class="ge-id" />').attr("placeholder",u("tool.id_placeholder")).val(n.attr("id")).attr("title",u("tool.id_title")).appendTo(t).on("change",function(){""===this.value?n.removeAttr("id"):n.attr("id",this.value)}),Jt('<input class="ge-classes" />').attr("placeholder",u("tool.classes_placeholder")).attr("title",u("tool.classes_title")).val(He(n).join(" ")).appendTo(t).on("change",function(){var t,e;t=n,e=this.value,He(t).forEach(function(e){t.removeClass(e)}),e.split(/\s+/).forEach(function(e){""!==e&&t.addClass(e)}),t.attr("class")||t.removeAttr("class"),z(n)}),Jt('<div class="btn-group" />').appendTo(t));return e.forEach(function(e){var t=Jt('<a class="btn btn-sm btn-default" />').html(e.label).attr("title",e.title||u("tool.toggle_class",{label:e.label})).toggleClass("active btn-primary",n.hasClass(e.cssClass)).on("click",function(){t.toggleClass("active btn-primary"),n.toggleClass(e.cssClass,t.hasClass("active")),z(n)}).appendTo(o)}),(e=(n=>{var e,t,o=b(n),i=me(o).filter(function(e){return!1!==e.panel}).map(function(e){return Ee(n,e)});return Jt.each(M,function(e,t){t=t.panel?t.panel(n,o):null;t&&t.length&&i.push(t)}),i.length?(e=Jt('<div class="ge-utilities" />').toggleClass("ge-open",de).data("ge-node",n),Jt('<a class="ge-utilities-toggle" />').appendTo(e).on("click",function(){de=!e.hasClass("ge-open"),g.find(".ge-utilities").toggleClass("ge-open",de)}),t=Jt('<div class="ge-utilities-body" />').appendTo(e),i.forEach(function(e){e.appendTo(t)}),Me(e),e):null})(n))&&e.appendTo(t),t})(o,e||[]),i=(O(n,u("tool.settings"),"ge-settings","bi bi-gear-fill",function(){t.toggle()}),b(o));return Jt.each(M,function(e,t){t.drawerTools&&t.drawerTools(n,o,i)}),t.appendTo(n)}function et(n){return n.hasClass("row")&&Wt.some(function(t){return Ht.some(function(e){return n.hasClass(Zt(t,e))})})}function tt(e,t){if(e.hasClass("row"))for(var n=Wt.indexOf(t);0<=n;n--)for(var o=0;o<Ht.length;o++)if(e.hasClass(Zt(Wt[n],Ht[o])))return{tier:n,value:Ht[o]};return null}function nt(e,t){for(var n=Wt.indexOf(t);0<=n;n--){var o=I(e,Wt[n]);if(null!==o)return{tier:n,size:o}}return null}function ot(e,t){var n=tt(e.parent(),t);return n&&(!(e=nt(e,t))||n.tier>e.tier||n.tier===e.tier&&"equal"===e.size)?n:null}function it(e){return"auto"===e?u("badge.row_cols_auto"):u("badge.row_cols",{count:e})}function I(e,t){var n=ct(e,t.colPrefix);return null!==n?n:e.hasClass(tn(t,"auto"))?"auto":e.hasClass(tn(t,"equal"))?"equal":null}function at(e,t){return ct(e,t.offsetPrefix)}function rt(e,t){return st(e,t,I)}function lt(e,t){return st(e,t,at)}function st(e,t,n){for(var o=Wt.indexOf(t);0<=o;o--){var i=n(e,Wt[o]);if(null!==i)return i}return null}function ct(e,t){t=new RegExp("(?:^|\\s)"+t+"(\\d+)(?:\\s|$)").exec(e.attr("class")||"");return t?parseInt(t[1],10):null}function ut(e,t,n){var o=(e.attr("class")||"").split(/\s+/).filter(function(e){return""!==e&&!new RegExp("^"+t+"\\d+$").test(e)});null!==n&&o.push(t+n),e.attr("class",o.join(" "))}function dt(t,n,e){ut(t,n.colPrefix,null),Gt.forEach(function(e){t.removeClass(tn(n,e))}),null!=e&&t.addClass(tn(n,e))}function ft(e,t,n){ut(e,t.offsetPrefix,n||null)}function gt(e,n,o){var i=0;return e.children(".column").each(function(){var e,t=Jt(this);o&&t[0]===o[0]||(e=(e=ot(t,n))?"auto"===(e=e).value?0:Qt/parseInt(e.value,10):rt(t,n),i+=(en(e)?e:0)+(lt(t,n)||0))}),Qt-i}function pt(e){var t=null==e.size?null:e.size,n=null==e.offset?0:e.offset,n=Math.min(Math.max(n,0),11);return null===t||!en(t)||(t=Math.min(Math.max(t,1),Qt))+n<=Qt?{size:t,offset:n,refused:!1}:"offset"===e.leading?{size:Qt-n,offset:n,refused:!1}:{size:null,offset:n,refused:!0}}function mt(e){e.find(".column").addBack(".column").each(function(){var e=Jt(this);e.css({width:"",height:"",left:"",top:""}),e.attr("style")||e.removeAttr("style")})}function ht(e){return"ge-"+e+"-"+F}function vt(){return[".row",".ge-content","[data-ge-container]"].concat(wt("blocks")).join(", ")}function wt(t){return Jt.map(A,function(e){return e[t]||null})}function bt(n,o){var i=!0;return Jt.each(A,function(e,t){i&&t.accepts&&!1===t.accepts(n,o)&&(i=!1)}),i}function yt(e,i){var t,a,r;e.length&&window.Sortable&&(t="drawer"===d.drag_handle,a="drawer"===d.drag_handle?".ge-tools-drawer > a, .ge-details, input, textarea, button, select, option":"input, textarea, button, select, option",r=0,e.each(function(){var n=this,o=i.group?{name:ht(i.group)}:{name:ht(i.draggable+"-"+ ++r),pull:!1,put:!1};i.group&&i.accepts&&(o.put=function(e,t,n){return t.options.group.name===o.name&&i.accepts(Jt(e.el),Jt(n))}),U.push(window.Sortable.create(n,Jt.extend({group:o,draggable:i.draggable,handle:t?".ge-tools-drawer":".ge-tools-drawer .ge-move",filter:function(e,t){return!!Jt(e.target).closest(a,n).length||!t||t.parentNode!==n},preventOnFilter:!1,forceFallback:!0,fallbackOnBody:!0,ghostClass:"ge-drag-placeholder",chosenClass:"ge-drag-chosen",dragClass:"ge-drag-helper",fallbackClass:"ge-drag-helper",animation:d.drag.animation,delay:d.drag.delay||d.drag.touch_delay,delayOnTouchOnly:!d.drag.delay,touchStartThreshold:d.drag.threshold,scroll:d.drag.scroll,onStart:_t,onEnd:xt},i.options||{})))}))}function _t(e){var t=Jt(e.item),n=Z(t);t.data("ge-move-from",n),t.removeData("ge-move-canceled"),v(function(){h("before-move",m(b(t),t,{parent:n.parent,source:"dragdrop",from:n}))||t.data("ge-move-canceled",!0)})}function xt(e){var t,n,o,i,a=Jt(e.item),r=a.data("ge-move-from")||Z(a);a.removeData("ge-move-from"),a.data("ge-move-canceled")?(a.removeData("ge-move-canceled"),e=a,!(n=(t=r).parent.children().not(".ge-tools-drawer").not(e)).length||t.index>=n.length?e.appendTo(t.parent):e.insertBefore(n.eq(t.index))):(o=Z(a)).parent[0]===r.parent[0]&&o.index===r.index||(i=a.closest("[data-ge-container]"),(e=E[S(i)])&&e.afterPaneMove&&e.afterPaneMove(i,a,r),v(function(){h("after-move",m(b(a),a,{parent:o.parent,source:"dragdrop",from:r,to:o,container:i.length?i:void 0}))}))}function kt(e){var t,n,s=Jt(e.currentTarget),c=s.parent(),o="w"===s.attr("data-ge-edge"),i=e.pageX,a=c.outerWidth();function u(e){e=e.pageX-i;return Math.max(1,a+(o?-e:e))}function d(e){var t;c.css("width",u(e)+"px"),t=c,e=u(e),zt(t,Et(Ct(t,e)))}e.preventDefault(),n=Ve(t=c),v(function(){return h("before-resize",m("column",t,{source:"dragdrop",from:n,to:null}))})&&(t.data("ge-resize-from",n),t.data("ge-resize-units",Le(t)),zt(t,Et(t.data("ge-resize-units"))),1)&&(c.addClass("ge-resizing"),void 0!==e.pointerId&&s[0].setPointerCapture&&s[0].setPointerCapture(e.pointerId),s.on("pointermove",d).on("pointerup pointercancel",function e(t){var o,i,a,r,l;s.off("pointermove",d).off("pointerup pointercancel",e),c.removeClass("ge-resizing"),o=c,t=u(t),a=o.data("ge-resize-from"),r=o.data("ge-resize-units"),l=Ct(o,t),o.removeData("ge-resize-from").removeData("ge-resize-units"),zt(o,""),mt(o),void 0!==a&&l!==r&&(i=$(o,l))&&v(function(){var e,t,n;Y(o,i),t=l-r,(e=Tt(e=o))&&t&&en(n=Ve(e))&&(n=$(e,n-t))&&(Y(e,n),z(e)),z(o),h("after-resize",m("column",o,Q({source:"dragdrop",from:a,to:i.size},i.cleared)))})}))}function Ct(e,t){var t=Math.round(t/We(e.parent())*Qt),n=Tt(e),o=n?Ve(n):null,i=e.data("ge-resize-units"),n=n&&en(o)?i+o-Ye(d.valid_col_sizes):Qt-Xe(e);return Math.min(Math.max(t,Ye(d.valid_col_sizes)),Math.max(n,Ye(d.valid_col_sizes)),Qe(d.valid_col_sizes))}function Tt(e){return"next"===d.resize.balance&&(e=e.nextAll(".column").first()).length?e:null}function zt(e,t){e.find("> .ge-tools-drawer > .ge-resize-size").text(t)}function Et(e){return(p===Xt?Wt[0]:P()).colPrefix+e}function D(){return Jt('<div class="row" />')}function At(e,t,n){var o,i,a=null;return Lt.forEach(function(e){null===a&&n&&void 0!==n[e]&&(a=e)}),null===a?e:(i=Jt(n[a]),o="appendTo"===a||"prependTo"===a?i:i.parent(),i=function(){return w(t,e,function(){e[a](n[a])},{parent:o,source:"api"})},0<J?(L(i),e):i())}function Mt(e,t,n){e=Jt(e),n=n||{};var o=E[S(e)];return o&&S(e)===t?(n=o.addPane(e,n),w(o.paneKind,n,function(){},{parent:e,source:"api",container:e})):(un("this is not a "+t+" container"),null)}function St(){var n={};return Jt.each(d,function(e,t){n[e]=Array.isArray(t)?t.slice():t}),Object.freeze(n)}function j(e,t){var n=Nt(d.content_types[0]),n=Jt('<div class="column"/>').append(It().html(n?n.initialContent:"")),o=on(p)[0],t=pt({size:e,offset:t||0,leading:"offset"});return dt(n,o,null===t.size?e:t.size),ft(n,o,t.offset),n}function Pt(n){d.custom_filter.length&&Jt.each(d.custom_filter,function(e,t){(t="string"==typeof t?window[t]:t)(g,n)})}function Ot(e){var t;return e.length&&(t=It().insertAfter(e.last()),e.appendTo(t)),Jt()}function It(){return Jt("<div/>").addClass("ge-content ge-content-type-"+d.content_types[0]).attr("data-ge-content-type",d.content_types[0])}function Dt(t){p=t,$t.forEach(function(e){g.toggleClass("ge-layout-"+e,e===t)}),q.find("button").text(u(an(t)))}function jt(e){return"number"==typeof e?(s("changeView-index","changeView("+e+"): layout modes are identified by breakpoint key now, so pass one of "+JSON.stringify($t)+". Numeric indexes still work, but they mean what they meant in 2.x ("+Yt.join(", ")+") and will be dropped."),Yt[e]||null):-1===$t.indexOf(e)?null:e}function Rt(e){var t=jt(e);null===t?un("changeView("+JSON.stringify(e)+"): no such layout mode"):(e=p,Dt(t),t!==e&&(g.find(".ge-utilities").each(function(){Me(Jt(this))}),Te(g),k("onViewChange",t),h("view-change",{canvas:g,breakpoint:t,from:e,to:t})))}function Kt(){return p}function Nt(e){return Jt.fn.gridEditor.RTEs[e]}var qt,Bt={getHtml:function(){x(),mt(g);var e=g.html();return _(),e},init:function(){L(_)},reset:function(){L(le)},deinit:x,destroy:se,remove:function(){s("remove","remove() is deprecated and will be removed in a later release. Use destroy(), which does the same thing."),se()},changeView:Rt,getView:Kt,createRow:function(e,t){var n=D();return void 0===e||Array.isArray(e)||e&&e.row_cols||(un("createRow: the layout is an array of column sizes, as in [8, 4], or { row_cols, columns }. Making an empty row instead."),e=[]),e&&!Array.isArray(e)&&(n=y(e)),(Array.isArray(e)?e:[]).forEach(function(e){j(e).appendTo(n)}),At(n,"row",t)},createColumn:function(e,t){var n=Jt((t=t||{}).appendTo||t.prependTo||[]).first(),n=(void 0===e&&n.length&&tt(n,P())?e=null:en(e)||-1!==Gt.indexOf(e)||(un("createColumn: no column size given, using 12"),e=Qt),j(e,t.offset));return void 0!==t.content&&n.find(".ge-content").html(t.content),At(n,"column",t)},createElement:function(e,t){return Oe.createElement?Oe.createElement(e,t):(s("plugin:elements","createElement needs the elements plugin: include dist/plugins/grideditor.elements.js after the editor"),null)},createSection:function(e){return Oe.createSection?Oe.createSection(e):(s("plugin:sections","createSection needs the sections plugin: include dist/plugins/grideditor.sections.js after the editor"),null)},createContainer:function(e,t){t=t||{};var n=E[e];return n?At(n.create(t),e,t):(un('createContainer: no such container type "'+e+'"'),null)},addTab:function(e,t){return Mt(e,"tabs",t)},addAccordionItem:function(e,t){return Mt(e,"accordion",t)},setLocale:function(e){d.locale=e,Bt.settings=St(),X(),o.remove(),ee(),le()},getUtility:xe,setUtility:ke,canvas:g,settings:St()};function Ut(e){return!d.plugins||-1!==d.plugins.indexOf(e)}Jt.each(Vt,function(e,t){t.unimplemented&&(Bt[e]=function(){return s(e,e+" is registered but not implemented in this build yet"),null})}),e.data("grideditor",Bt),qt={canvas:g,settings:d,t:u,warn:un,containerId:De,defaultRegion:je,createTool:O,createMoveTool:Ge,addSettingsTool:Ze,deleteNode:c,place:At,createPaneControls:Re,makeLabelEditable:qe,labelIn:Be,unwrapLabels:Ue,suspendToggles:Ke,resumeToggles:Ne,emit:h,payloadFor:m,operate:v,kindOf:b,view:Kt,viewTiers:function(){return on(p).map(function(e){return e.key})},breakpoints:Wt.map(function(e){return e.key}),getUtility:xe,setUtility:ke,utilityField:Ae,bareStyle:Ce,rowFromLayout:y},fe("grid",{},(()=>{for(var e=[],t=1;t<=Qt;t++)e.push(String(t));return{name:"col",values:e.concat(Gt),appliesTo:["column"],labelKey:"utility.col_width",className:function(e,t){return tn(nn(e),ie(t))},choices:function(){return d.valid_col_sizes.map(String)},label:function(e){return"equal"===e?u("utility.col_equal"):"auto"===e?u("utility.col_auto"):e},write:function(e,t,n,o){return G(e,null===t?null:ie(t),o,n)},blank:function(e,t){e=t===Xt?null:ot(e,nn(t));return e?u("utility.col_from_row",{count:it(e.value)}):null}}})()),!1!==d.row_cols&&fe("grid",{},{name:"row-cols",prefix:"row-cols",values:Ht,appliesTo:["row"],labelKey:"utility.row_cols"}),Jt.each(Jt.fn.gridEditor.containers,function(e,t){Ut(e)&&(E[e]=t(qt))}),Jt.each(Jt.fn.gridEditor.features,function(e,t){Ut(e)&&(A[e]=t(qt))}),Jt.each(Jt.fn.gridEditor.utilities,function(t,e){Ut(t)&&(M[t]=e(qt),(M[t].families||[]).forEach(function(e){fe(t,M[t],e)}))}),Jt.each(A,function(e,t){Jt.each(t.methods||{},function(e,t){Oe[e]=t})}),(d.plugins||[]).forEach(function(e){E[e]||A[e]||M[e]||s("plugin:"+e,'the "'+e+'" plugin is not loaded: include dist/plugins/grideditor.'+e+".js after the editor")}),a=Jt('<textarea class="ge-html-output"/>').insertBefore(g),ee(),Jt(window).on("scroll",ae),g.on("click",".ge-content",re),g.on("click",".ge-popup-trigger, [data-ge-popup-target]",function(e){g.hasClass("ge-editing")&&e.preventDefault()}),g.on("ge-rte-ready",".ge-content",function(){k("onContentReady",Jt(this)),Te(Jt(this))}),_()}),this;var e,t,n=this,o=Ft,i=Array.prototype.slice.call(arguments,1),a=Vt[o];if(a){if(a.value)return(e=n.first()).length?(t=e.data("grideditor"))?t[o].apply(t,i):a.noInstance?a.noInstance(e):null:null;n.each(function(){var e=Jt(this).data("grideditor");e&&e[o].apply(e,i)})}else r("method:"+o,'unknown method "'+o+'"');return n},Jt.fn.gridEditor.RTEs={},Jt.fn.gridEditor.containers={},Jt.fn.gridEditor.features={},Jt.fn.gridEditor.utilities={},Jt.fn.gridEditor.t=cn,Jt.fn.gridEditor.locales={en:{"tool.move":"Move","tool.settings":"Settings","tool.add_row":"Add row","tool.add_column":"Add column\n(hold to choose the width)","tool.column_size":"{size} of 12","tool.column_equal":"Equal: shares what the row has left","tool.column_auto":"Auto: as wide as its content","tool.delete_row":"Remove row","tool.delete_column":"Remove col","tool.delete_container":"Remove container","tool.delete_pane":"Remove pane","tool.rename":"Double click to rename","tool.column_narrower":"Make column narrower\n(hold shift for min)","tool.column_wider":"Make column wider\n(hold shift for max)","tool.indent_decrease":"Decrease indent\n(hold shift for none)","tool.indent_increase":"Increase indent\n(hold shift for max)","tool.edit_source":"Edit Source Code","tool.preview":"Preview","tool.id_placeholder":"id","tool.id_title":"Set a unique identifier","tool.classes_placeholder":"classes","tool.classes_title":"Css classes, separated by spaces","tool.toggle_class":'Toggle "{label}" styling',"row.add":"Add row {layout}","row.add_row_cols":"Add a row of {columns} columns, {counts} per row","confirm.title":"Confirm","confirm.ok":"Delete","confirm.cancel":"Cancel","confirm.delete_row":"Delete row?","confirm.delete_column":"Delete column?","confirm.delete_container":"Delete this container and everything in it?","view.all":"All sizes","view.xs":"Phone","view.sm":"Tablet","view.md":"Small desktop","view.lg":"Desktop","view.xl":"Large desktop","view.xxl":"Widescreen","utility.section":"Responsive: {view}","utility.col_width":"Width","utility.col_equal":"Equal","utility.col_auto":"Auto","utility.col_from_row":"From the row: {count}","utility.row_cols":"Columns per row","badge.row_cols":"{count} per row","badge.row_cols_auto":"As wide as their content","utility.default":"Default","utility.inherit":"Inherit: {value} (from {breakpoint})","utility.varies":"Changes at {breakpoints}; choosing here replaces that","error.sortable_missing":"SortableJS not available! Make sure you loaded the Sortable js file; dragging is off without it.","warning.setting_removed":"The {setting} setting was removed in 4.0. Use {replacement} instead.","error.tinymce_missing":"tinyMCE not available! Make sure you loaded the tinyMCE js file.","error.ckeditor_missing":"CKEditor not available! Make sure you loaded the ckeditor and jquery adapter js files.","error.summernote_missing":"Summernote not available! Make sure you loaded the Summernote js file."}}})(jQuery),(a=>{a.fn.gridEditor.RTEs.ckeditor={init:function(i,e){window.CKEDITOR||console.error(a.fn.gridEditor.t(i,"error.ckeditor_missing"));var t=this;e.each(function(){var e,n,o=a(this);o.hasClass("active")||(o.html()==t.initialContent&&o.html(" "),o.addClass("active").attr("contenteditable","true"),e=a.extend({},i.ckeditor&&i.ckeditor.config?i.ckeditor.config:{},{on:{instanceReady:function(e){var t;try{t=i.ckeditor.config.on.instanceReady}catch(e){}t&&t.call(this,e),o.trigger("ge-rte-ready"),n.focus()}}}),n=CKEDITOR.inline(o.get(0),e))})},deinit:function(e,t){t.filter(".active").each(function(){var e=a(this);a.each(CKEDITOR.instances,function(e,t){t.destroy()}),e.removeClass("active cke_focus").removeAttr("id").removeAttr("style").removeAttr("spellcheck").removeAttr("contenteditable")})},initialContent:"<p>Lorem initius... </p>"}})(jQuery),(i=>{i.fn.gridEditor.RTEs.summernote={init:function(n,e){jQuery().summernote||console.error(i.fn.gridEditor.t(n,"error.summernote_missing"));var o=this;e.each(function(){var e,t=i(this);t.hasClass("active")||(t.html()==o.initialContent&&t.html(""),t.addClass("active"),e=i.extend(!0,{},n.summernote&&n.summernote.config?n.summernote.config:{},{tabsize:2,airMode:!0,callbacks:{onInit:function(){var e;try{e=n.summernote.config.callbacks.onInit}catch(e){}e&&e.call(this),t.trigger("ge-rte-ready"),t.summernote("focus")}}}),t.summernote(e))})},deinit:function(e,t){t.filter(".active").each(function(){var e=i(this);e.summernote("destroy"),e.removeClass("active").removeAttr("id").removeAttr("style").removeAttr("spellcheck")})},initialContent:"<p>Lorem ipsum dolores</p>"}})(jQuery),(i=>{function a(e){e.removeClass("active").removeClass("ge-rte-active").removeAttr("id").removeAttr("style").removeAttr("spellcheck").removeAttr("contenteditable").removeAttr("data-mce-style")}i.fn.gridEditor.RTEs.tinymce={init:function(e,t){var n,o;window.tinymce?(n=this,o=e.tinymce&&e.tinymce.config?e.tinymce.config:{},t.each(function(){var e,t=i(this);t.hasClass("active")||(t.html()==n.initialContent&&t.html(""),t.addClass("active"),delete(e=i.extend({promotion:!1},o,{target:this,inline:!0,init_instance_callback:function(e){t.data("ge-tinymce-pending-remove")?(t.removeData("ge-tinymce-pending-remove"),e.remove(),a(t)):(t.data("ge-tinymce",e),t.trigger("ge-rte-ready"),window.requestAnimationFrame(function(){!e.removed&&e.ui&&e.ui.show&&e.ui.show()}),e.on("focus",function(){window.requestAnimationFrame(function(){!e.removed&&e.ui&&e.ui.show&&e.ui.show()})}),e.focus(),o.init_instance_callback&&o.init_instance_callback.call(this,e),o.oninit&&o.oninit.call(this,e))}})).selector,window.tinymce.init(e))})):console.error(i.fn.gridEditor.t(e,"error.tinymce_missing"))},deinit:function(e,t){t.filter(".active").each(function(){var e=i(this),t=e.data("ge-tinymce");t?(e.removeData("ge-tinymce"),t.remove()):e.data("ge-tinymce-pending-remove",!0),a(e)})},initialContent:"<p>Lorem ipsum dolores</p>"}})(jQuery);
|
|
1
|
+
(Jt=>{var Ht={getHtml:{value:!0,noInstance:function(e){return e.html()}},getPlainHtml:{value:!0,noInstance:function(e){return gn(e.html())}},init:{},deinit:{},reset:{},destroy:{},remove:{},changeView:{},getView:{value:!0},createRow:{value:!0},createColumn:{value:!0},createElement:{value:!0},createSection:{value:!0},createContainer:{value:!0},addTab:{value:!0},addAccordionItem:{value:!0},setLocale:{},getUtility:{value:!0},setUtility:{value:!0}},Wt=["appendTo","prependTo","insertAfter","insertBefore"],Xt=[{key:"xs",infix:"",colPrefix:"col-",offsetPrefix:"offset-",min:0,preview:400,labelKey:"view.xs"},{key:"sm",infix:"sm",colPrefix:"col-sm-",offsetPrefix:"offset-sm-",min:576,preview:576,labelKey:"view.sm"},{key:"md",infix:"md",colPrefix:"col-md-",offsetPrefix:"offset-md-",min:768,preview:768,labelKey:"view.md"},{key:"lg",infix:"lg",colPrefix:"col-lg-",offsetPrefix:"offset-lg-",min:992,preview:992,labelKey:"view.lg"},{key:"xl",infix:"xl",colPrefix:"col-xl-",offsetPrefix:"offset-xl-",min:1200,preview:1200,labelKey:"view.xl"},{key:"xxl",infix:"xxl",colPrefix:"col-xxl-",offsetPrefix:"offset-xxl-",min:1400,preview:null,labelKey:"view.xxl"}],$t="all",t="view.all",Yt=[$t].concat(Xt.map(function(e){return e.key})),Qt=["lg","sm","xs"],Gt=12,Zt=["equal","auto"],en=["1","2","3","4","5","6","auto"];function tn(e,t){return"row-cols"+(e.infix?"-"+e.infix:"")+"-"+t}function nn(e){return"number"==typeof e}function on(e,t){return"equal"===t?e.infix?"col-"+e.infix:"col":e.colPrefix+t}function an(e){for(var t=0;t<Xt.length;t++)if(Xt[t].key===e)return Xt[t];return null}function rn(e){return e===$t?[Xt[0]]:(e=an(e))?[e]:[]}function ln(e){e=an(e);return e?e.labelKey:t}var sn={add_column:{size:12,picker:!0,delay:600},elements:{enabled:"auto",selector:"[data-ge-element]",auto:!1},resize:{enabled:!0,handles:"e",balance:"next"},drag:{delay:0,touch_delay:100,threshold:3,animation:150,scroll:!0}},cn={sortable_options:"drag",resizable_options:"resize"},n={},un=0;function dn(e,t,n){var o=Jt.fn.gridEditor.locales,i=o[e.locale]||{},e=(e.locale_strings||{})[t];return void 0===(e=void 0===(e=void 0===e?i[t]:e)?o.en[t]:e)&&(r("locale:"+t,'no string for "'+t+'" in any locale, showing the key'),e=t),e.replace(/\{(\w+)\}/g,function(e,t){return n&&void 0!==n[t]?n[t]:e})}function fn(e){window.console&&window.console.warn&&window.console.warn("grid-editor: "+e)}function r(e,t){n[e]||(n[e]=!0,fn(t))}function gn(e){var t=Jt(document.implementation.createHTMLDocument("").body),i=(t[0].innerHTML=e,[]);return t.find("*").each(function(){var n=Jt(this),o=!1,e=(Jt.each(Jt.makeArray(this.attributes),function(e,t){0===t.name.indexOf("data-ge-")&&(n.removeAttr(t.name),o=!0)}),(n.attr("class")||"").split(/\s+/).filter(Boolean)),t=e.filter(function(e){return"column"!==e&&0!==e.indexOf("ge-")});t.length!==e.length&&(o=!0),t.length?n.attr("class",t.join(" ")):n.removeAttr("class"),o&&"DIV"===this.tagName&&!this.attributes.length&&i.push(this)}),i.forEach(function(e){Jt(e).replaceWith(Jt(e).contents())}),t[0].innerHTML}Jt.fn.gridEditor=function(Ft){if("string"!=typeof Ft)return this.each(function(R,e){e=Jt(e);var i,a,K,N,q,r,d=Jt.extend({new_row_layouts:[[12],[6,6],[4,4,4],[3,3,3,3],[2,2,2,2,2,2],[2,8,2],[4,8],[8,4]],row_classes:[],col_classes:[],col_tools:[],row_tools:[],drag_handle:"tool",toolbar_drag:"auto",element_tools:[],element_classes:[],container_classes:[],pane_classes:[],container_tools:[],tab_tools:[],accordion_tools:[],plugins:null,row_cols:!0,utilities:{},elements:sn.elements,custom_filter:"",content_types:["tinymce"],valid_col_sizes:[1,2,3,4,5,6,7,8,9,10,11,12,"equal","auto"],valid_col_offsets:[0,1,2,3,4,5,6,7,8,9,10,11],add_column:sn.add_column,layout_modes:Yt.slice(),default_view:$t,resize:sn.resize,source_textarea:"",locale:"en",locale_strings:{},callbacks:{},confirm_delete:!0,drag:sn.drag},Ft),p=(Jt.each(sn,function(e,t){d[e]=Jt.extend({},t,d[e])}),Jt.each(cn,function(e,t){Ft&&void 0!==Ft[e]&&fn(Jt.fn.gridEditor.t(d,"warning.setting_removed",{setting:e,replacement:t}))}),d.default_view),l=null,s=null,f=null,B={},U=[],L=++un;function c(e,t){B[e]||(B[e]=!0,fn(t))}function u(e,t){return dn(d,e,t)}var t,n,g=e.addClass("ge-canvas"),V=0,F=[];function m(e,t,n){return Jt.extend({kind:e,node:t,parent:t.parent(),canvas:g,breakpoint:p,source:"api"},n||{})}function h(e,t){var n=[e],o=e.replace(/^(before|after)-add-.+$/,"$1-add"),i=(o!==e&&n.push(o),!1);return n.forEach(function(e){e=Jt.Event("grideditor:"+e);g.trigger(e,[t]),e.isDefaultPrevented()&&(i=!0)}),n.forEach(function(e){e=d.callbacks[e.replace(/-/g,"_")];"function"==typeof e&&!1===e(t)&&(i=!0)}),!i}function v(e){V++;try{return e()}finally{if(0===--V)for(;F.length;)F.shift()()}}function J(e){0===V?e():F.push(e)}function w(t,n,o,i){e=t;var e,a=Jt.fn.gridEditor.containers[e]?"container":e;return v(function(){var e=m(t,n,i);return h("before-add-"+a,e)?(o(),x(),h("after-add-"+a,e),n):null})}function H(e,t){var n,o;d.confirm_delete?window.bootstrap&&window.bootstrap.Modal?(l||((l=Jt('<div class="modal fade ge-confirm" tabindex="-1" aria-hidden="true"><div class="modal-dialog modal-dialog-centered"><div class="modal-content"><div class="modal-header"><h5 class="modal-title"></h5><button type="button" class="btn-close" data-bs-dismiss="modal"></button></div><div class="modal-body"><p class="ge-confirm-message"></p></div><div class="modal-footer"><button type="button" class="btn btn-secondary ge-confirm-cancel" data-bs-dismiss="modal"></button><button type="button" class="btn btn-danger ge-confirm-ok"></button></div></div></div></div>').appendTo("body")).find(".modal-title").text(u("confirm.title")),l.find(".btn-close").attr("aria-label",u("confirm.cancel")),l.find(".ge-confirm-cancel").text(u("confirm.cancel")),l.find(".ge-confirm-ok").text(u("confirm.ok"))),o=!1,(n=l).find(".ge-confirm-message").text(e),n.find(".ge-confirm-ok").off("click").on("click",function(){o=!0,window.bootstrap.Modal.getInstance(n[0]).hide()}),n.off("hidden.bs.modal").on("hidden.bs.modal",function(){o&&t()}),n.off("shown.bs.modal").on("shown.bs.modal",function(){n.find(".ge-confirm-ok").trigger("focus")}),window.bootstrap.Modal.getOrCreateInstance(n[0]).show()):window.confirm(e)&&t():t()}function W(){var e;l&&(window.bootstrap&&window.bootstrap.Modal&&(e=window.bootstrap.Modal.getInstance(l[0]))&&e.dispose(),l.remove(),l=null)}function b(t,n,o,i){v(function(){var e=m(t,n,{source:"tool"});h("before-delete",e)&&H(o,function(){v(function(){i(function(){n.remove(),v(function(){x(),h("after-delete",e)})})})})})}function X(n,t,e){var o,i,a;return(e=e||p)!==$t?(e=an(e),(o=ht({size:t,offset:ct(n,e)||0})).refused||I(n,e)===o.size?null:{writes:[{tier:e,size:o.size}],cleared:null,size:o.size}):!Xt.some(function(e){return ht({size:t,offset:ct(n,e)||0}).refused})&&(e=Xt[0],i=[],a=[],Xt.slice(1).forEach(function(e){var t=I(n,e);null!==t&&(i.push({tier:e,size:null}),a.push({breakpoint:e.key,value:t}))}),I(n,e)!==t&&i.unshift({tier:e,size:t}),i.length)?{writes:i,cleared:a,size:t}:null}function $(t,e){e.writes.forEach(function(e){gt(t,e.tier,e.size)}),vt(t)}function Y(e,t){return t&&(e.cleared=t),e}function Q(t,e,n,o){o=o||p;var i=He(t),a=X(t,e,o);return!!a&&v(function(){var e=m("column",t,Y({source:n,breakpoint:o,from:i,to:a.size},a.cleared));return h("before-resize",e)?($(t,a),z(t),h("after-resize",e),!0):(z(t),!1)})}function G(o,i,t){var n=p===$t,a=n?Xt[0]:an(p),r=$e(o),l=(i=Math.min(Math.max(i,0),11),n?Xt.slice(1).filter(function(e){return null!==lt(o,e)}):[]);(lt(o,a)||0)===i&&!l.length||v(function(){var e=m("column",o,Y({source:t,from:r,to:i},n?l.map(function(e){return{breakpoint:e.key,value:lt(o,e)}}):null));return!!h("before-indent",e)&&(pt(o,a,i),l.forEach(function(e){pt(o,e,0)}),(n?Xt:[a]).forEach(function(e){var t,n=st(o,e);nn(n)&&(t=ht({size:n,offset:i,leading:"offset"})).size!==n&>(o,e,t.size)}),z(o),h("after-indent",e),!0)})}function Z(e){var t=e.parent();return{parent:t,index:t.children().not(".ge-tools-drawer").index(e)}}function y(n){var o=null;return Jt.each(A,function(e,t){!o&&t.kindOf&&(o=t.kindOf(n))}),o||(n.attr("data-ge-container")?n.attr("data-ge-container"):n.hasClass("ge-tab")?"tab":n.hasClass("ge-accordion-item")?"accordion-item":n.hasClass("row")?"row":n.hasClass("column")?"column":n.hasClass("ge-element")?"element":n.hasClass("ge-content")?"content":"node")}function ee(){i=Jt('<div class="ge-mainControls" />').insertBefore(r),a=Jt('<div class="ge-wrapper ge-top" />').appendTo(i),K=Jt('<div class="ge-addRowGroup btn-group" />').appendTo(a),N=Jt('<div class="ge-addContainerGroup btn-group" />'),Jt.each(d.new_row_layouts,function(e,t){var n,o,i=!Array.isArray(t),a=Jt('<a class="btn btn-sm btn-primary" />').attr("title",i?u("row.add_row_cols",{columns:t.columns,counts:(n=t.row_cols,Xt.filter(function(e){return n&&void 0!==n[e.key]}).map(function(e){return(e.infix?e.key+": ":"")+n[e.key]}).join(", "))}):u("row.add",{layout:t.join("-")})).attr("data-ge-toolbar","row").attr("data-ge-layout",i?JSON.stringify(t):t.join(",")).on("click",function(){var e=_(t);w("row",e,function(){e.appendTo(g)},{parent:g,source:"tool"})&&e[0].scrollIntoView&&e[0].scrollIntoView({behavior:"smooth"})}).appendTo(K),i=(a.append('<i class="bi bi-plus"></i>'),i?(i=t,o=1,Jt.each(i.row_cols||{},function(e,t){"auto"!==t&&(o=Math.max(o,parseInt(t,10)||1))}),Array.apply(null,Array(Math.min(o,i.columns||o))).map(function(){return"equal"})):t),r='<div class="row ge-row-icon">';i.forEach(function(e){r+='<div class="column '+on(Xt[0],e)+'"></div>'}),r+="</div>",a.append(r)}),N.appendTo(a),Jt.each(E,function(o,i){Jt('<a class="btn btn-sm btn-primary ge-add-container" />').attr("title",u(i.labelKey)).attr("data-ge-toolbar","container").attr("data-ge-container-type",o).append('<i class="bi bi-plus"></i>').append(Jt("<span />").text(u(i.labelKey))).on("click",function(){var e=D(),t=j(Gt).appendTo(e),n=i.create({});t.find("> .ge-content").replaceWith(n),w(o,n,function(){e.appendTo(g)},{parent:g,source:"tool"})}).appendTo(N)});var o=[],e=(Jt.each(A,function(n,e){(e.toolbar||[]).forEach(function(e,t){t=((e,t,n)=>(e=Jt('<a class="btn btn-sm btn-primary ge-add-container ge-add-feature" />').attr("title",u(t.labelKey)).attr("data-ge-toolbar","feature").attr("data-ge-feature",e).attr("data-ge-item",n).append(Jt("<i />").addClass(t.iconClass||"bi bi-plus")).on("click",function(){var e=t.create();w(t.kind,e,function(){e.appendTo(g)},{parent:g,source:t.source||"tool"})}),"end"!==t.align&&e.append(Jt("<span />").text(u(t.labelKey))),e))(n,e,t);"end"===e.align?o.push(t):t.appendTo(N)})}),q=Jt('<div class="dropdown pull-right ge-layout-mode"><button type="button" class="btn btn-sm btn-primary dropdown-toggle" data-bs-toggle="dropdown"></button><div class="dropdown-menu" role="menu"></div></div>').on("click","a",function(){Nt(Jt(this).attr("data-ge-view"))}).appendTo(a),d.layout_modes.forEach(function(e){Jt('<a class="dropdown-item" />').attr("data-ge-view",e).attr("title",u(ln(e))).text(u(ln(e))).appendTo(q.find(".dropdown-menu"))}),q.find("button").text(u(ln(p))),Jt('<div class="btn-group pull-right"/>').appendTo(a)),t=Jt('<button type="button" class="btn btn-sm btn-primary gm-edit-mode"><i class="bi bi-code-slash"></i></button>').attr("title",u("tool.edit_source")).on("click",function(){(t.hasClass("active")?(g.empty().html(r.val()).show(),x(),r):(k(),r.height(.8*Jt(window).height()).val(g.html()).show(),g)).hide(),t.toggleClass("active btn-danger")}).appendTo(e),n=Jt('<button type="button" class="btn btn-sm btn-primary gm-preview"><i class="bi bi-eye-fill"></i></button>').attr("title",u("tool.preview")).on("mouseenter",function(){g.removeClass("ge-editing")}).on("click",function(){n.toggleClass("active btn-danger").trigger("mouseleave")}).on("mouseleave",function(){n.hasClass("active")||g.addClass("ge-editing")}).appendTo(e);o.length&&Jt('<div class="btn-group pull-right ge-toolbar-end" />').append(o).appendTo(a),e=i.find("[data-ge-toolbar]").removeClass("ge-palette-button").off("pointerdown.ge-palette"),("auto"!==d.toolbar_drag?d.toolbar_drag:"drawer"===d.drag_handle)&&e.addClass("ge-palette-button").on("pointerdown.ge-palette",te)}function te(e){var s=Jt(e.currentTarget),n=e.pageX,o=e.pageY,c=null;function u(e){if(!c){if(t=e,!(Math.abs(t.pageX-n)+Math.abs(t.pageY-o)>d.drag.threshold))return;c=s.clone().addClass("ge-toolbar-helper").appendTo("body"),g.addClass("ge-dropping")}c.css({left:e.pageX-14,top:e.pageY-14});var t=e.pageX;(t=ne(t,e.pageY))?(f=f||Jt('<div class="ge-drop-marker" />'),t.before?f.insertBefore(t.before):f.appendTo(t.region)):oe()}e.button||Jt(document).on("pointermove.ge-toolbar",u).on("pointerup.ge-toolbar pointercancel.ge-toolbar",function e(t){var n,o,i,a,r,l;Jt(document).off("pointermove.ge-toolbar",u).off("pointerup.ge-toolbar pointercancel.ge-toolbar",e),c&&(c.remove(),g.removeClass("ge-dropping"),oe(),s.one("click",function(e){e.preventDefault(),e.stopImmediatePropagation()}),t=ne(t.pageX,t.pageY))&&(n=t,"feature"===(t=s).attr("data-ge-toolbar")?(o=n,i=(r=A[(r=t).attr("data-ge-feature")].toolbar[parseInt(r.attr("data-ge-item"),10)]).create(),_t(o.region,i)||(a=o.region.parentsUntil(g).addBack().first(),(o={region:g,before:a.length?a.next():null}).before&&!o.before.length&&(o.before=null)),w(r.kind,i,function(){o.before?i.insertBefore(o.before):i.appendTo(o.region)},{parent:o.region,source:r.source||"dragdrop"})):(a="container"===t.attr("data-ge-toolbar"),r=t.attr("data-ge-container-type"),l=t=a?E[r].create({}):(e=>/^\s*\{/.test(e||"")?_(JSON.parse(e)):_((e||"").split(",").filter(function(e){return""!==e}).map(ie)))(t.attr("data-ge-layout")),a&&!n.region.is(".column")&&(l=D(),j(Gt).appendTo(l).find("> .ge-content").replaceWith(t)),w(a?r:"row",t,function(){n.before?l.insertBefore(n.before):l.appendTo(n.region)},{parent:n.region,source:"dragdrop"})))})}function ne(e,t){var n,e=e-window.scrollX,o=t-window.scrollY,t=document.elementFromPoint(e,o);return!t||!(e=Jt(t).closest([".column",".ge-canvas"].concat(yt("regions")).join(", "))).length||e[0]!==g[0]&&!g[0].contains(e[0])?null:(n=null,e.children(bt()).each(function(){var e;n||(e=this.getBoundingClientRect(),o<e.top+e.height/2&&(n=Jt(this)))}),{region:e,before:n})}function oe(){f&&f.remove()}function ie(e){return/^\d+$/.test(String(e))?parseInt(e,10):e}function _(e){var n=D();if(Array.isArray(e))e.forEach(function(e){j(e).appendTo(n)});else{Jt.each(e.row_cols||{},function(e,t){e=an(e);e&&-1!==en.indexOf(String(t))&&n.addClass(tn(e,t))});for(var t=0;t<(e.columns||0);t++)j(null).appendTo(n)}return n}function ae(e){var t=Jt(window);t.scrollTop()>i.offset().top&&t.scrollTop()<g.offset().top+g.height()?a.hasClass("ge-top")&&a.css({left:a.offset().left,width:a.outerWidth()}).removeClass("ge-top").addClass("ge-fixed"):a.hasClass("ge-fixed")&&a.css({left:"",width:""}).removeClass("ge-fixed").addClass("ge-top")}function re(e){var t;Jt(this).hasClass("ge-rte-active")||Jt(this).is(":visible")&&(t=Bt(Jt(this).data("ge-content-type")))&&(Jt(this).addClass("ge-rte-active",!0),t.init(d,Jt(this)))}function le(){k(),x()}function x(){var e;It(!0),g.addClass("ge-editing"),g.toggleClass("ge-drag-drawer","drawer"===d.drag_handle),g.find('.column, div[class*="col-"], div.col').each(function(){var t,e=Jt(this).addClass("column");t=e,Xt.filter(function(e){return null!==I(t,e)}).length||nt(e.parent())||gt(e,Xt[0],Gt)}),g.find(".column").each(function(){var e=Jt(this),t=Jt();e.children().each(function(){var e=Jt(this);e.is(".ge-tools-drawer, .ge-resize-handle")||(t=e.is(".row, .ge-content, [data-ge-container]")?Dt(t):t.add(e))}),Dt(t)}),g.find(".row").each(function(){var t,i,a,r,e,n=Jt(this);n.find("> .ge-tools-drawer").length||(Ze(t=Jt('<div class="ge-tools-drawer" />').prependTo(n)),tt(t,n,d.row_classes),d.row_tools.forEach(function(e){O(t,e.title||"",e.className||"",e.iconClass||"bi bi-wrench",e.on)}),O(t,u("tool.delete_row"),"ge-delete-row","bi bi-trash",function(){b("row",n,u("confirm.delete_row"),function(e){n.slideUp(e)})}),O(t,u("tool.add_column"),"ge-add-column","bi bi-plus-circle",function(){Je()||Fe(n,ot(n,P())?null:d.add_column.size)}),i=t.find("> .ge-add-column"),a=n,d.add_column.picker&&(r=null,e=function(){window.clearTimeout(r),r=null},i.on("mouseenter mousedown",function(){r||s||(r=window.setTimeout(function(){var e,n,o;r=null,e=i,n=a,Je(),o=mt(n,P()),e.closest(".ge-tools-drawer").addClass("ge-picker-open"),s=Jt('<div class="ge-size-picker" />').appendTo(e),d.valid_col_sizes.forEach(function(t){var e;Jt('<a class="ge-size" />').attr("data-ge-size",t).attr("title","equal"!==(e=t)?"auto"!==e?u("tool.column_size",{size:e}):u("tool.column_auto"):u("tool.column_equal")).toggleClass("ge-size-tight",nn(t)&&o<t).toggleClass("ge-size-flex",!nn(t)).text(nn(t)?t:on(Xt[0],t)).on("click",function(e){e.preventDefault(),e.stopPropagation(),Je(),Fe(n,t)}).appendTo(s)}),e.one("mouseleave",function(){window.setTimeout(function(){s&&!s.is(":hover")&&Je()},400)})},d.add_column.delay))}),i.on("mouseleave",e),i.on("mouseup",e)))}),g.find(".column").each(function(){var t,n=Jt(this);n.find("> .ge-tools-drawer").length||(Ze(t=Jt('<div class="ge-tools-drawer" />').prependTo(n)),O(t,u("tool.column_narrower"),"ge-decrease-col-width","bi bi-dash-lg",function(e){Q(n,e.shiftKey?Qe(d.valid_col_sizes):Ye(d.valid_col_sizes.filter(nn),We(n),-1),"tool")}),O(t,u("tool.column_wider"),"ge-increase-col-width","bi bi-plus-lg",function(e){Q(n,e.shiftKey?(e=>(e=mt(e.parent(),P(),e)-$e(e),Math.min(Ge(d.valid_col_sizes),Math.max(e,1))))(n):Ye(d.valid_col_sizes.filter(nn),We(n),1),"tool")}),O(t,u("tool.indent_decrease"),"ge-decrease-col-offset","bi bi-text-indent-right",function(e){G(n,e.shiftKey?Qe(d.valid_col_offsets):Ye(d.valid_col_offsets,$e(n),-1),"tool")}),O(t,u("tool.indent_increase"),"ge-increase-col-offset","bi bi-text-indent-left",function(e){G(n,e.shiftKey?(e=>(e=mt(e.parent(),P(),e)-We(e),Math.min(Ge(d.valid_col_offsets),Math.max(e,0))))(n):Ye(d.valid_col_offsets,$e(n),1),"tool")}),tt(t,n,d.col_classes),d.col_tools.forEach(function(e){O(t,e.title||"",e.className||"",e.iconClass||"bi bi-wrench",e.on)}),O(t,u("tool.delete_column"),"ge-delete-column","bi bi-trash",function(){b("column",n,u("confirm.delete_column"),function(e){n.animate({opacity:"hide",width:"hide",height:"hide"},400,e)})}),O(t,u("tool.add_row"),"ge-add-row","bi bi-plus-circle",function(){var e=D();w("row",e,function(){n.append(e)},{parent:n,source:"tool"})}))}),g.find("[data-ge-container]").each(function(){var t,e,n,o,i=Jt(this),a=S(i),r=E[a];r?(i.addClass("ge-container ge-container-"+a),r.mark(i),i.find("> .ge-tools-drawer").length||(t=i,e=a,n=r,Ze(o=Jt('<div class="ge-tools-drawer ge-container-drawer" />').prependTo(t)),tt(o,t,d.container_classes),d.container_tools.forEach(function(e){O(o,e.title||"",e.className||"",e.iconClass||"bi bi-wrench",e.on)}),n.tools&&n.tools(o,t),O(o,u("tool.delete_container"),"ge-delete-container","bi bi-trash",function(){b(e,t,u("confirm.delete_container"),function(e){t.slideUp(e)})}),n.addPane&&O(o,u(n.addPaneKey),"ge-add-pane","bi bi-plus-circle",function(){var e=n.addPane(t,{});w(n.paneKind,e,function(){},{parent:t,source:"tool",container:t})}))):c("container:"+a,'unknown container type "'+a+'"')}),o("onInit"),window.Sortable?(xt(g.find(".row"),{draggable:".column",group:"column"}),xt(g.add(g.find(".column")),{draggable:bt(),group:"block",accepts:_t}),(e=yt("regions")).length&&xt(g.find(e.join(", ")),{draggable:">"+bt(),group:"block",accepts:_t}),o("onSortable",xt)):c("sortable_missing",u("error.sortable_missing")),d.resize.enabled&&g.find(".column").each(function(){var n=Jt(this);n.find("> .ge-resize-handle").length||(Jt('<span class="ge-resize-size" />').appendTo(n.find("> .ge-tools-drawer")),Jt.each(String(d.resize.handles).split(",").map(function(e){return e.trim()}).filter(function(e){return"e"===e||"w"===e}),function(e,t){Jt('<span class="ge-resize-handle" />').addClass("ge-resize-"+t).attr("data-ge-edge",t).on("pointerdown",Tt).appendTo(n)}))}),Rt(p),Ee(g)}function k(){g.removeClass("ge-editing ge-drag-drawer ge-dropping");g.find(".ge-content").each(function(){var e=Jt(this),t=Bt(e.data("ge-content-type"));t&&t.deinit(d,e),e.removeClass("ge-rte-active")});Je(),oe(),g.find(".ge-tools-drawer").remove(),o("onDeinit"),Ae(g),g.find("[data-ge-row-cols]").removeAttr("data-ge-row-cols"),g.find("[data-ge-container]").each(function(){var e=Jt(this),t=E[S(e)];t&&t.unmark(e),e.removeClass("ge-container ge-container-"+S(e)),e.attr("class")||e.removeAttr("class")}),Jt.each(U,function(e,t){t.destroy()}),U=[],g.find(".ge-resize-handle").remove(),g.find(".ge-resize-size").remove(),vt(g),It(!1)}function se(){k(),vt(g);var e=g.html();return x(),e}function ce(e){k(),vt(e);e=e[0].outerHTML;return x(),e}function ue(){k(),W(),i.remove(),r.remove(),Jt(window).off("scroll",ae),g.off("click",".ge-content",re),g.off("ge-rte-ready",".ge-content"),g.removeData("grideditor")}function o(n,o){Jt.each(E,function(e,t){t[n]&&t[n](o)}),Jt.each(A,function(e,t){t[n]&&t[n](o)}),Jt.each(M,function(e,t){t[n]&&t[n](o)})}d.source_textarea&&(0<(t=Jt(d.source_textarea).val()).length&&0==Jt("<div>"+t+"</div>").find(".row").addBack(".row").length&&(n=D(),(n=j(12).appendTo(n)).find(".ge-content").html(t),t=n.html()),e.html(t)),e.children().length&&!e.find("div.row").length&&(n=e.children(),Jt('<div class="row"><div class="col-lg-12"/></div>').appendTo(e).find(".col-lg-12").append(n));var C={},de=".row, .column, .ge-element, [data-ge-container]",fe="data-ge-preview",ge=!1;function pe(e,t,n){var o=n.name||n.prefix;C[o]?fn('the "'+e+'" plugin declares the utility "'+o+'", which the "'+C[o].plugin+'" plugin already declared: ignored'):C[o]={plugin:e,family:Jt.extend({},n,{name:o,values:n.values.map(String),appliesTo:n.appliesTo||t.appliesTo||["row","column"]})}}function me(e,t){return C[e]?C[e].family:(c("utility:"+e,t+"("+JSON.stringify(e)+"): no loaded plugin declares that utility"),null)}function he(e,t){return-1!==e.appliesTo.indexOf(t)||E[t]&&-1!==e.appliesTo.indexOf("container")}function ve(t){return Jt.map(C,function(e){return he(e.family,t)?e.family:null})}function we(e,t,n){return e.className?e.className(t.key,n):e.prefix+(t.infix?"-"+t.infix:"")+"-"+n}function T(e,t,n){for(var o=(e.attr("class")||"").split(/\s+/),i=0;i<t.values.length;i++)if(-1!==o.indexOf(we(t,n,t.values[i])))return t.values[i];return null}function be(e,t,n){for(var o=Xt.indexOf(n)-1;0<=o;o--){var i=T(e,t,Xt[o]);if(null!==i)return{tier:Xt[o],value:i}}return null}function ye(e,t,n){var o=T(e,t,n);return null!==o?o:(o=be(e,t,n))?o.value:null}function _e(t,n){return Xt.map(function(e){return{tier:e,value:T(t,n,e)}}).filter(function(e){return null!==e.value})}function xe(t,n,o,e){n.values.forEach(function(e){t.removeClass(we(n,o,e))}),null!==e&&t.addClass(we(n,o,e)),t.attr("class")||t.removeAttr("class")}function ke(e,t,n){return n===$t?T(e,t,Xt[0]):ye(e,t,an(n))}function Ce(e,t,n){e=Jt(e).first();var o,t=me(t,"getUtility");return t&&e.length?null===(o=void 0===n?p:Kt(n))?(fn("getUtility("+JSON.stringify(n)+"): no such layout mode"),null):ke(e,t,o):null}function Te(t,n,o,i){i="string"==typeof i?{view:i}:i||{},t=Jt(t).first();var a,r,l,e,s,c,u,d,f,g=me(n,"setUtility");return!(!g||!t.length)&&(null===(a=void 0===i.view?p:Kt(i.view))?(fn("setUtility("+JSON.stringify(i.view)+"): no such layout mode"),!1):null!==(o=null==o||""===o?null:String(o))&&-1===g.values.indexOf(o)?(fn("setUtility: "+JSON.stringify(o)+' is not a value of "'+n+'", which takes '+JSON.stringify(g.values)),!1):(r=y(t),he(g,r)?g.write?g.write(t,o,a,i.source||"api"):(e=t,s=g,u=o,!!(l=(c=a)!==$t?T(e,s,c=an(c))===u?null:{writes:[{tier:c,value:u}],cleared:[]}:(d=[],f=[],_e(e,s).forEach(function(e){e.tier!==Xt[0]&&(d.push({tier:e.tier,value:null}),f.push({breakpoint:e.tier.key,value:e.value}))}),T(e,s,Xt[0])!==u&&d.unshift({tier:Xt[0],value:u}),d.length?{writes:d,cleared:f}:null))&&v(function(){var e=m(r,t,{family:n,breakpoint:a,tiers:l.writes.map(function(e){return e.tier.key}),from:ke(t,g,a),to:o,cleared:l.cleared,source:i.source||"api"});return h("before-utility",e)?(l.writes.forEach(function(e){xe(t,g,e.tier,e.value)}),z(t),h("after-utility",e),!0):(z(t),!1)})):(fn('setUtility: "'+n+'" does not apply to a '+r),!1)))}function ze(t,e,n){var o=me(e,"bareStyle");return t=Jt(t).first(),o&&t.length?(e=t.attr("class"),Xt.forEach(function(e){xe(t,o,e,null)}),n=getComputedStyle(t[0]).getPropertyValue(n),void 0===e?t.removeAttr("class"):t.attr("class",e),n):null}function z(e){var t=e.children(".ge-tools-drawer").children(".ge-details");t.children(".ge-classes").val(et(e).join(" ")),t.children(".ge-utilities").each(function(){Pe(Jt(this))}),Ee(e)}function Ee(e){var t,l;Ae(e),p!==$t&&(t=e,l=an(p),(e=>e.find(de).addBack(de))(t).each(function(){var e,n,o,i=Jt(this),a=y(i),r={};ve(a).forEach(function(e){e.preview&&_e(i,e).length&&Jt.extend(r,e.preview(ye(i,e,l),i,a))}),"column"===a&&Jt.extend(r,((e,t)=>{var n=at(e,t);return n?{flex:"0 0 auto",width:"auto"===n.value?"auto":100/parseInt(n.value,10)+"%","max-width":"100%"}:!nt(e.parent())||it(e,t)?{}:{flex:"0 0 auto",width:"100%","max-width":"100%"}})(i,l)),Jt.each(M,function(e,t){t.preview&&Jt.extend(r,t.preview(i,a,l.key))}),Jt.isEmptyObject(r)||(n=(e=i)[0].style,o={},Jt.each(r,function(e,t){o[e]=[n.getPropertyValue(e),n.getPropertyPriority(e)],n.setProperty(e,String(t),"important")}),e.attr(fe,JSON.stringify(o)))})),e.find(".row").addBack(".row").each(function(){var e=Jt(this),t=!1===d.row_cols?null:p===$t?ot(e,Xt[0])||null:ot(e,an(p));t?e.attr("data-ge-row-cols",rt(t.value)):e.removeAttr("data-ge-row-cols")}),o("onRefresh",e)}function Ae(e){e.find("["+fe+"]").addBack("["+fe+"]").each(function(){var e=Jt(this),n=this.style,t={};try{t=JSON.parse(e.attr(fe))||{}}catch(e){}Jt.each(t,function(e,t){t&&t[0]?n.setProperty(e,t[0],t[1]):n.removeProperty(e)}),e.removeAttr(fe),e.attr("style")||e.removeAttr("style")})}function Me(e,t){var n=Jt('<label class="ge-utility" />').attr("data-ge-family",t.name);return Jt('<span class="ge-utility-label" />').text(t.labelKey?u(t.labelKey):t.name).appendTo(n),Jt("<select />").appendTo(n).on("change",function(){Te(e,t.name,this.value,{source:"panel"})}),Jt('<small class="ge-utility-note" />').appendTo(n),n}function Se(e,t){var t=me(t,"utilityField");return t?(Oe(t=Me(e,t),e),t):Jt()}function Pe(e){var t=e.data("ge-node");e.children(".ge-utilities-toggle").text(u("utility.section",{view:u(ln(p))})),e.find(".ge-utility").each(function(){Oe(Jt(this),t)})}function Oe(e,t){var n,o,i,a,r=C[e.attr("data-ge-family")].family,l=e.children("select").empty(),s=r.choices?r.choices(t,y(t)):r.values,c="";p===$t?(n=T(t,r,Xt[0]),o=u("utility.default"),(a=_e(t,r).filter(function(e){return e.tier!==Xt[0]})).length&&(c=u("utility.varies",{breakpoints:a.map(function(e){return e.tier.key}).join(", ")}))):(a=an(p),i=be(t,r,a),n=T(t,r,a),o=i?u("utility.inherit",{value:Ie(r,i.value),breakpoint:i.tier.key}):u("utility.default"),(a=r.blank?r.blank(t,p):null)&&null===n&&(o=a)),null!==n&&-1===s.indexOf(n)&&(s=s.concat([n])),Jt('<option value="" />').text(o).appendTo(l),s.forEach(function(e){Jt("<option />").attr("value",e).text(Ie(r,e)).appendTo(l)}),l.val(null===n?"":n),e.children(".ge-utility-note").text(c).toggle(""!==c)}function Ie(e,t){return e.label?e.label(t):t}var E={},A={},M={},De={},je=0;function Re(e){return"ge-"+e+"-"+ ++je+"-"+Math.random().toString(36).slice(2,6)}function Ke(){var e=D();return j(Gt).appendTo(e),e}function S(e){return e.attr("data-ge-container")}function Ne(e,t,n,o,i){var a=Jt('<div class="ge-tools-drawer ge-pane-drawer" />').prependTo(e);return Ze(a),tt(a,e,d.pane_classes),n.forEach(function(e){O(a,e.title||"",e.className||"",e.iconClass||"bi bi-wrench",e.on)}),O(a,u("tool.delete_pane"),"ge-delete-pane","bi bi-trash",function(){b(t,e,o,function(e){i(e)})}),a}function qe(e){e.find("[data-bs-toggle], [data-bs-dismiss]").addBack("[data-bs-toggle], [data-bs-dismiss]").each(function(){var n=Jt(this);["toggle","dismiss"].forEach(function(e){var t=n.attr("data-bs-"+e);void 0!==t&&n.attr("data-ge-bs-"+e,t).removeAttr("data-bs-"+e)})})}function Be(e){e.find("[data-ge-bs-toggle], [data-ge-bs-dismiss]").addBack("[data-ge-bs-toggle], [data-ge-bs-dismiss]").each(function(){var n=Jt(this);["toggle","dismiss"].forEach(function(e){var t=n.attr("data-ge-bs-"+e);void 0!==t&&n.attr("data-bs-"+e,t).removeAttr("data-ge-bs-"+e)})})}function Ue(t){var n;t.data("ge-editable")||(n=t.closest("[data-bs-toggle], [data-ge-bs-toggle]"),t.data("ge-editable",!0).attr("title",u("tool.rename")).on("dblclick",function(e){e.preventDefault(),e.stopPropagation(),qe(n),t.attr("contenteditable","true").trigger("focus"),window.getSelection().selectAllChildren(t[0])}).on("keydown",function(e){"true"===t.attr("contenteditable")&&"Enter"===e.key&&(e.preventDefault(),t.trigger("blur"))}).on("blur",function(){t.removeAttr("contenteditable"),Be(n)}))}function Le(e){var t=e.find("> .ge-pane-label");return t.length||(t=Jt('<span class="ge-pane-label" />').text(e.text().trim()),e.empty().append(t)),t}function Ve(e){e.find(".ge-pane-label").each(function(){Jt(this).removeData("ge-editable").contents().unwrap()})}function Fe(e,t){var n=j(t);w("column",n,function(){e.append(n)},{parent:e,source:"tool"})}function Je(){return s&&(s.closest(".ge-tools-drawer").removeClass("ge-picker-open"),s.remove(),s=null,1)}function P(){return p===$t?Xt[Xt.length-1]:an(p)}function He(e){var t=P();return at(e,t)?null:null===(e=st(e,t))?Gt:e}function We(e){var t=He(e);return nn(t)?t:(t=Math.round(e.outerWidth()/Xe(e.parent())*Gt),Math.min(Math.max(t,1),Gt))}function Xe(e){var t=window.getComputedStyle(e[0]);return e[0].clientWidth-parseFloat(t.paddingLeft)-parseFloat(t.paddingRight)}function $e(e){return ct(e,P())||0}function Ye(e,n,t){var o=e.indexOf(n);return-1===o?e.reduce(function(e,t){return Math.abs(t-n)<Math.abs(e-n)?t:e},e[0]):e[Math.min(Math.max(o+t,0),e.length-1)]}function Qe(e){return e.filter(nn).reduce(function(e,t){return Math.min(e,t)},Gt)}function Ge(e){return e.filter(nn).reduce(function(e,t){return Math.max(e,t)},0)}function Ze(e){"drawer"!==d.drag_handle&&O(e,u("tool.move"),"ge-move","bi bi-arrows-move")}function O(e,t,n,o,i){var a=Jt('<a title="'+t+'" class="'+n+'"><i class="'+o+'"></i></a>').appendTo(e);"function"==typeof i&&a.on("click",i),"object"==typeof i&&Jt.each(i,function(e,t){a.on(e,t)})}function et(e){return(e.attr("class")||"").split(/\s+/).filter(function(e){return""!==e&&!(t=>"row"===t||"column"===t||/^(ge-|ui-)/.test(t)||/^col(-(sm|md|lg|xl|xxl))?(-auto)?$/.test(t)||Xt.some(function(e){return new RegExp("^("+e.colPrefix+"|"+e.offsetPrefix+")\\d+$").test(t)}))(e)})}function tt(n,o,e){var t=((n,e)=>{var t=Jt('<div class="ge-details" />'),o=(Jt('<input class="ge-id" />').attr("placeholder",u("tool.id_placeholder")).val(n.attr("id")).attr("title",u("tool.id_title")).appendTo(t).on("change",function(){""===this.value?n.removeAttr("id"):n.attr("id",this.value)}),Jt('<input class="ge-classes" />').attr("placeholder",u("tool.classes_placeholder")).attr("title",u("tool.classes_title")).val(et(n).join(" ")).appendTo(t).on("change",function(){var t,e;t=n,e=this.value,et(t).forEach(function(e){t.removeClass(e)}),e.split(/\s+/).forEach(function(e){""!==e&&t.addClass(e)}),t.attr("class")||t.removeAttr("class"),z(n)}),Jt('<div class="btn-group" />').appendTo(t));return e.forEach(function(e){var t=Jt('<a class="btn btn-sm btn-default" />').html(e.label).attr("title",e.title||u("tool.toggle_class",{label:e.label})).toggleClass("active btn-primary",n.hasClass(e.cssClass)).on("click",function(){t.toggleClass("active btn-primary"),n.toggleClass(e.cssClass,t.hasClass("active")),z(n)}).appendTo(o)}),(e=(n=>{var e,t,o=y(n),i=ve(o).filter(function(e){return!1!==e.panel}).map(function(e){return Me(n,e)});return Jt.each(M,function(e,t){t=t.panel?t.panel(n,o):null;t&&t.length&&i.push(t)}),i.length?(e=Jt('<div class="ge-utilities" />').toggleClass("ge-open",ge).data("ge-node",n),Jt('<a class="ge-utilities-toggle" />').appendTo(e).on("click",function(){ge=!e.hasClass("ge-open"),g.find(".ge-utilities").toggleClass("ge-open",ge)}),t=Jt('<div class="ge-utilities-body" />').appendTo(e),i.forEach(function(e){e.appendTo(t)}),Pe(e),e):null})(n))&&e.appendTo(t),t})(o,e||[]),i=(O(n,u("tool.settings"),"ge-settings","bi bi-gear-fill",function(){t.toggle()}),y(o));return Jt.each(M,function(e,t){t.drawerTools&&t.drawerTools(n,o,i)}),Jt.each(A,function(e,t){t.drawerTools&&t.drawerTools(n,o,i)}),t.appendTo(n)}function nt(n){return n.hasClass("row")&&Xt.some(function(t){return en.some(function(e){return n.hasClass(tn(t,e))})})}function ot(e,t){if(e.hasClass("row"))for(var n=Xt.indexOf(t);0<=n;n--)for(var o=0;o<en.length;o++)if(e.hasClass(tn(Xt[n],en[o])))return{tier:n,value:en[o]};return null}function it(e,t){for(var n=Xt.indexOf(t);0<=n;n--){var o=I(e,Xt[n]);if(null!==o)return{tier:n,size:o}}return null}function at(e,t){var n=ot(e.parent(),t);return n&&(!(e=it(e,t))||n.tier>e.tier||n.tier===e.tier&&"equal"===e.size)?n:null}function rt(e){return"auto"===e?u("badge.row_cols_auto"):u("badge.row_cols",{count:e})}function I(e,t){var n=dt(e,t.colPrefix);return null!==n?n:e.hasClass(on(t,"auto"))?"auto":e.hasClass(on(t,"equal"))?"equal":null}function lt(e,t){return dt(e,t.offsetPrefix)}function st(e,t){return ut(e,t,I)}function ct(e,t){return ut(e,t,lt)}function ut(e,t,n){for(var o=Xt.indexOf(t);0<=o;o--){var i=n(e,Xt[o]);if(null!==i)return i}return null}function dt(e,t){t=new RegExp("(?:^|\\s)"+t+"(\\d+)(?:\\s|$)").exec(e.attr("class")||"");return t?parseInt(t[1],10):null}function ft(e,t,n){var o=(e.attr("class")||"").split(/\s+/).filter(function(e){return""!==e&&!new RegExp("^"+t+"\\d+$").test(e)});null!==n&&o.push(t+n),e.attr("class",o.join(" "))}function gt(t,n,e){ft(t,n.colPrefix,null),Zt.forEach(function(e){t.removeClass(on(n,e))}),null!=e&&t.addClass(on(n,e))}function pt(e,t,n){ft(e,t.offsetPrefix,n||null)}function mt(e,n,o){var i=0;return e.children(".column").each(function(){var e,t=Jt(this);o&&t[0]===o[0]||(e=(e=at(t,n))?"auto"===(e=e).value?0:Gt/parseInt(e.value,10):st(t,n),i+=(nn(e)?e:0)+(ct(t,n)||0))}),Gt-i}function ht(e){var t=null==e.size?null:e.size,n=null==e.offset?0:e.offset,n=Math.min(Math.max(n,0),11);return null===t||!nn(t)||(t=Math.min(Math.max(t,1),Gt))+n<=Gt?{size:t,offset:n,refused:!1}:"offset"===e.leading?{size:Gt-n,offset:n,refused:!1}:{size:null,offset:n,refused:!0}}function vt(e){e.find(".column").addBack(".column").each(function(){var e=Jt(this);e.css({width:"",height:"",left:"",top:""}),e.attr("style")||e.removeAttr("style")})}function wt(e){return"ge-"+e+"-"+L}function bt(){return[".row",".ge-content","[data-ge-container]"].concat(yt("blocks")).join(", ")}function yt(t){return Jt.map(A,function(e){return e[t]||null})}function _t(n,o){var i=!0;return Jt.each(A,function(e,t){i&&t.accepts&&!1===t.accepts(n,o)&&(i=!1)}),i}function xt(e,i){var t,a,r;e.length&&window.Sortable&&(t="drawer"===d.drag_handle,a="drawer"===d.drag_handle?".ge-tools-drawer > a, .ge-details, input, textarea, button, select, option":"input, textarea, button, select, option",r=0,e.each(function(){var n=this,o=i.group?{name:wt(i.group)}:{name:wt(i.draggable+"-"+ ++r),pull:!1,put:!1};i.group&&i.accepts&&(o.put=function(e,t,n){return t.options.group.name===o.name&&i.accepts(Jt(e.el),Jt(n))}),U.push(window.Sortable.create(n,Jt.extend({group:o,draggable:i.draggable,handle:t?".ge-tools-drawer":".ge-tools-drawer .ge-move",filter:function(e,t){return!!Jt(e.target).closest(a,n).length||!t||t.parentNode!==n},preventOnFilter:!1,forceFallback:!0,fallbackOnBody:!0,ghostClass:"ge-drag-placeholder",chosenClass:"ge-drag-chosen",dragClass:"ge-drag-helper",fallbackClass:"ge-drag-helper",animation:d.drag.animation,delay:d.drag.delay||d.drag.touch_delay,delayOnTouchOnly:!d.drag.delay,touchStartThreshold:d.drag.threshold,scroll:d.drag.scroll,onStart:kt,onEnd:Ct},i.options||{})))}))}function kt(e){var t=Jt(e.item),n=Z(t);t.data("ge-move-from",n),t.removeData("ge-move-canceled"),v(function(){h("before-move",m(y(t),t,{parent:n.parent,source:"dragdrop",from:n}))||t.data("ge-move-canceled",!0)})}function Ct(e){var t,n,o,i,a=Jt(e.item),r=a.data("ge-move-from")||Z(a);a.removeData("ge-move-from"),a.data("ge-move-canceled")?(a.removeData("ge-move-canceled"),e=a,!(n=(t=r).parent.children().not(".ge-tools-drawer").not(e)).length||t.index>=n.length?e.appendTo(t.parent):e.insertBefore(n.eq(t.index))):(o=Z(a)).parent[0]===r.parent[0]&&o.index===r.index||(i=a.closest("[data-ge-container]"),(e=E[S(i)])&&e.afterPaneMove&&e.afterPaneMove(i,a,r),v(function(){h("after-move",m(y(a),a,{parent:o.parent,source:"dragdrop",from:r,to:o,container:i.length?i:void 0}))}))}function Tt(e){var t,n,s=Jt(e.currentTarget),c=s.parent(),o="w"===s.attr("data-ge-edge"),i=e.pageX,a=c.outerWidth();function u(e){e=e.pageX-i;return Math.max(1,a+(o?-e:e))}function d(e){var t;c.css("width",u(e)+"px"),t=c,e=u(e),At(t,Mt(zt(t,e)))}e.preventDefault(),n=He(t=c),v(function(){return h("before-resize",m("column",t,{source:"dragdrop",from:n,to:null}))})&&(t.data("ge-resize-from",n),t.data("ge-resize-units",We(t)),At(t,Mt(t.data("ge-resize-units"))),1)&&(c.addClass("ge-resizing"),void 0!==e.pointerId&&s[0].setPointerCapture&&s[0].setPointerCapture(e.pointerId),s.on("pointermove",d).on("pointerup pointercancel",function e(t){var o,i,a,r,l;s.off("pointermove",d).off("pointerup pointercancel",e),c.removeClass("ge-resizing"),o=c,t=u(t),a=o.data("ge-resize-from"),r=o.data("ge-resize-units"),l=zt(o,t),o.removeData("ge-resize-from").removeData("ge-resize-units"),At(o,""),vt(o),void 0!==a&&l!==r&&(i=X(o,l))&&v(function(){var e,t,n;$(o,i),t=l-r,(e=Et(e=o))&&t&&nn(n=He(e))&&(n=X(e,n-t))&&($(e,n),z(e)),z(o),h("after-resize",m("column",o,Y({source:"dragdrop",from:a,to:i.size},i.cleared)))})}))}function zt(e,t){var t=Math.round(t/Xe(e.parent())*Gt),n=Et(e),o=n?He(n):null,i=e.data("ge-resize-units"),n=n&&nn(o)?i+o-Qe(d.valid_col_sizes):Gt-$e(e);return Math.min(Math.max(t,Qe(d.valid_col_sizes)),Math.max(n,Qe(d.valid_col_sizes)),Ge(d.valid_col_sizes))}function Et(e){return"next"===d.resize.balance&&(e=e.nextAll(".column").first()).length?e:null}function At(e,t){e.find("> .ge-tools-drawer > .ge-resize-size").text(t)}function Mt(e){return(p===$t?Xt[0]:P()).colPrefix+e}function D(){return Jt('<div class="row" />')}function St(e,t,n){var o,i,a=null;return Wt.forEach(function(e){null===a&&n&&void 0!==n[e]&&(a=e)}),null===a?e:(i=Jt(n[a]),o="appendTo"===a||"prependTo"===a?i:i.parent(),i=function(){return w(t,e,function(){e[a](n[a])},{parent:o,source:n.source||"api"})},0<V?(J(i),e):i())}function Pt(e,t,n){e=Jt(e),n=n||{};var o=E[S(e)];return o&&S(e)===t?(n=o.addPane(e,n),w(o.paneKind,n,function(){},{parent:e,source:"api",container:e})):(fn("this is not a "+t+" container"),null)}function Ot(){var n={};return Jt.each(d,function(e,t){n[e]=Array.isArray(t)?t.slice():t}),Object.freeze(n)}function j(e,t){var n=Bt(d.content_types[0]),n=Jt('<div class="column"/>').append(jt().html(n?n.initialContent:"")),o=rn(p)[0],t=ht({size:e,offset:t||0,leading:"offset"});return gt(n,o,null===t.size?e:t.size),pt(n,o,t.offset),n}function It(n){d.custom_filter.length&&Jt.each(d.custom_filter,function(e,t){(t="string"==typeof t?window[t]:t)(g,n)})}function Dt(e){var t;return e.length&&(t=jt().insertAfter(e.last()),e.appendTo(t)),Jt()}function jt(){var e=d.content_types[0],t=Jt('<div class="ge-content"/>');return e&&t.addClass("ge-content-type-"+e).attr("data-ge-content-type",e),t}function Rt(t){p=t,Yt.forEach(function(e){g.toggleClass("ge-layout-"+e,e===t)}),q.find("button").text(u(ln(t)))}function Kt(e){return"number"==typeof e?(c("changeView-index","changeView("+e+"): layout modes are identified by breakpoint key now, so pass one of "+JSON.stringify(Yt)+". Numeric indexes still work, but they mean what they meant in 2.x ("+Qt.join(", ")+") and will be dropped."),Qt[e]||null):-1===Yt.indexOf(e)?null:e}function Nt(e){var t=Kt(e);null===t?fn("changeView("+JSON.stringify(e)+"): no such layout mode"):(e=p,Rt(t),t!==e&&(g.find(".ge-utilities").each(function(){Pe(Jt(this))}),Ee(g),o("onViewChange",t),h("view-change",{canvas:g,breakpoint:t,from:e,to:t})))}function qt(){return p}function Bt(e){return Jt.fn.gridEditor.RTEs[e]}var Ut,Lt={getHtml:se,getPlainHtml:function(){return gn(se())},init:function(){J(x)},reset:function(){J(le)},deinit:k,destroy:ue,remove:function(){c("remove","remove() is deprecated and will be removed in a later release. Use destroy(), which does the same thing."),ue()},changeView:Nt,getView:qt,createRow:function(e,t){var n=D();return void 0===e||Array.isArray(e)||e&&e.row_cols||(fn("createRow: the layout is an array of column sizes, as in [8, 4], or { row_cols, columns }. Making an empty row instead."),e=[]),e&&!Array.isArray(e)&&(n=_(e)),(Array.isArray(e)?e:[]).forEach(function(e){j(e).appendTo(n)}),St(n,"row",t)},createColumn:function(e,t){var n=Jt((t=t||{}).appendTo||t.prependTo||[]).first(),n=(void 0===e&&n.length&&ot(n,P())?e=null:nn(e)||-1!==Zt.indexOf(e)||(fn("createColumn: no column size given, using 12"),e=Gt),j(e,t.offset));return void 0!==t.content&&n.find(".ge-content").html(t.content),St(n,"column",t)},createElement:function(e,t){return De.createElement?De.createElement(e,t):(c("plugin:elements","createElement needs the elements plugin: include dist/plugins/grideditor.elements.js after the editor"),null)},createSection:function(e){return De.createSection?De.createSection(e):(c("plugin:sections","createSection needs the sections plugin: include dist/plugins/grideditor.sections.js after the editor"),null)},createContainer:function(e,t){t=t||{};var n=E[e];return n?St(n.create(t),e,t):(fn('createContainer: no such container type "'+e+'"'),null)},addTab:function(e,t){return Pt(e,"tabs",t)},addAccordionItem:function(e,t){return Pt(e,"accordion",t)},setLocale:function(e){d.locale=e,Lt.settings=Ot(),W(),i.remove(),ee(),le()},getUtility:Ce,setUtility:Te,canvas:g,settings:Ot()};function Vt(e){return!d.plugins||-1!==d.plugins.indexOf(e)}Jt.each(Ht,function(e,t){t.unimplemented&&(Lt[e]=function(){return c(e,e+" is registered but not implemented in this build yet"),null})}),e.data("grideditor",Lt),Ut={canvas:g,settings:d,t:u,warn:fn,containerId:Re,defaultRegion:Ke,createTool:O,createMoveTool:Ze,addSettingsTool:tt,deleteNode:b,place:St,createPaneControls:Ne,makeLabelEditable:Ue,labelIn:Le,unwrapLabels:Ve,suspendToggles:qe,resumeToggles:Be,emit:h,payloadFor:m,operate:v,kindOf:y,view:qt,viewTiers:function(){return rn(p).map(function(e){return e.key})},breakpoints:Xt.map(function(e){return e.key}),getUtility:Ce,setUtility:Te,utilityField:Se,bareStyle:ze,rowFromLayout:_,nodeHtml:ce,toolbarItems:function(e){return i?i.find('[data-ge-toolbar="feature"][data-ge-feature="'+e+'"]'):Jt()}},pe("grid",{},(()=>{for(var e=[],t=1;t<=Gt;t++)e.push(String(t));return{name:"col",values:e.concat(Zt),appliesTo:["column"],labelKey:"utility.col_width",className:function(e,t){return on(an(e),ie(t))},choices:function(){return d.valid_col_sizes.map(String)},label:function(e){return"equal"===e?u("utility.col_equal"):"auto"===e?u("utility.col_auto"):e},write:function(e,t,n,o){return Q(e,null===t?null:ie(t),o,n)},blank:function(e,t){e=t===$t?null:at(e,an(t));return e?u("utility.col_from_row",{count:rt(e.value)}):null}}})()),!1!==d.row_cols&&pe("grid",{},{name:"row-cols",prefix:"row-cols",values:en,appliesTo:["row"],labelKey:"utility.row_cols"}),Jt.each(Jt.fn.gridEditor.containers,function(e,t){Vt(e)&&(E[e]=t(Ut))}),Jt.each(Jt.fn.gridEditor.features,function(e,t){Vt(e)&&(A[e]=t(Ut))}),Jt.each(Jt.fn.gridEditor.utilities,function(t,e){Vt(t)&&(M[t]=e(Ut),(M[t].families||[]).forEach(function(e){pe(t,M[t],e)}))}),Jt.each(A,function(e,t){Jt.each(t.methods||{},function(e,t){De[e]=t})}),(d.plugins||[]).forEach(function(e){E[e]||A[e]||M[e]||c("plugin:"+e,'the "'+e+'" plugin is not loaded: include dist/plugins/grideditor.'+e+".js after the editor")}),r=Jt('<textarea class="ge-html-output"/>').insertBefore(g),ee(),Jt(window).on("scroll",ae),g.on("click",".ge-content",re),g.on("click",".ge-popup-trigger, [data-ge-popup-target]",function(e){g.hasClass("ge-editing")&&e.preventDefault()}),g.on("ge-rte-ready",".ge-content",function(){o("onContentReady",Jt(this)),Ee(Jt(this))}),x()}),this;var e,t,n=this,o=Ft,i=Array.prototype.slice.call(arguments,1),a=Ht[o];if(a){if(a.value)return(e=n.first()).length?(t=e.data("grideditor"))?t[o].apply(t,i):a.noInstance?a.noInstance(e):null:null;n.each(function(){var e=Jt(this).data("grideditor");e&&e[o].apply(e,i)})}else r("method:"+o,'unknown method "'+o+'"');return n},Jt.fn.gridEditor.RTEs={},Jt.fn.gridEditor.containers={},Jt.fn.gridEditor.features={},Jt.fn.gridEditor.utilities={},Jt.fn.gridEditor.t=dn,Jt.fn.gridEditor.locales={en:{"tool.move":"Move","tool.settings":"Settings","tool.add_row":"Add row","tool.add_column":"Add column\n(hold to choose the width)","tool.column_size":"{size} of 12","tool.column_equal":"Equal: shares what the row has left","tool.column_auto":"Auto: as wide as its content","tool.delete_row":"Remove row","tool.delete_column":"Remove col","tool.delete_container":"Remove container","tool.delete_pane":"Remove pane","tool.rename":"Double click to rename","tool.column_narrower":"Make column narrower\n(hold shift for min)","tool.column_wider":"Make column wider\n(hold shift for max)","tool.indent_decrease":"Decrease indent\n(hold shift for none)","tool.indent_increase":"Increase indent\n(hold shift for max)","tool.edit_source":"Edit Source Code","tool.preview":"Preview","tool.id_placeholder":"id","tool.id_title":"Set a unique identifier","tool.classes_placeholder":"classes","tool.classes_title":"Css classes, separated by spaces","tool.toggle_class":'Toggle "{label}" styling',"row.add":"Add row {layout}","row.add_row_cols":"Add a row of {columns} columns, {counts} per row","confirm.title":"Confirm","confirm.ok":"Delete","confirm.cancel":"Cancel","confirm.delete_row":"Delete row?","confirm.delete_column":"Delete column?","confirm.delete_container":"Delete this container and everything in it?","view.all":"All sizes","view.xs":"Phone","view.sm":"Tablet","view.md":"Small desktop","view.lg":"Desktop","view.xl":"Large desktop","view.xxl":"Widescreen","utility.section":"Responsive: {view}","utility.col_width":"Width","utility.col_equal":"Equal","utility.col_auto":"Auto","utility.col_from_row":"From the row: {count}","utility.row_cols":"Columns per row","badge.row_cols":"{count} per row","badge.row_cols_auto":"As wide as their content","utility.default":"Default","utility.inherit":"Inherit: {value} (from {breakpoint})","utility.varies":"Changes at {breakpoints}; choosing here replaces that","error.sortable_missing":"SortableJS not available! Make sure you loaded the Sortable js file; dragging is off without it.","warning.setting_removed":"The {setting} setting was removed in 4.0. Use {replacement} instead.","error.tinymce_missing":"tinyMCE not available! Make sure you loaded the tinyMCE js file.","error.ckeditor_missing":"CKEditor not available! Make sure you loaded the ckeditor and jquery adapter js files.","error.summernote_missing":"Summernote not available! Make sure you loaded the Summernote js file."}}})(jQuery),(a=>{a.fn.gridEditor.RTEs.ckeditor={init:function(i,e){window.CKEDITOR||console.error(a.fn.gridEditor.t(i,"error.ckeditor_missing"));var t=this;e.each(function(){var e,n,o=a(this);o.hasClass("active")||(o.html()==t.initialContent&&o.html(" "),o.addClass("active").attr("contenteditable","true"),e=a.extend({},i.ckeditor&&i.ckeditor.config?i.ckeditor.config:{},{on:{instanceReady:function(e){var t;try{t=i.ckeditor.config.on.instanceReady}catch(e){}t&&t.call(this,e),o.trigger("ge-rte-ready"),n.focus()}}}),n=CKEDITOR.inline(o.get(0),e))})},deinit:function(e,t){t.filter(".active").each(function(){var e=a(this);a.each(CKEDITOR.instances,function(e,t){t.destroy()}),e.removeClass("active cke_focus").removeAttr("id").removeAttr("style").removeAttr("spellcheck").removeAttr("contenteditable")})},initialContent:"<p>Lorem initius... </p>"}})(jQuery),(i=>{i.fn.gridEditor.RTEs.summernote={init:function(n,e){jQuery().summernote||console.error(i.fn.gridEditor.t(n,"error.summernote_missing"));var o=this;e.each(function(){var e,t=i(this);t.hasClass("active")||(t.html()==o.initialContent&&t.html(""),t.addClass("active"),e=i.extend(!0,{},n.summernote&&n.summernote.config?n.summernote.config:{},{tabsize:2,airMode:!0,callbacks:{onInit:function(){var e;try{e=n.summernote.config.callbacks.onInit}catch(e){}e&&e.call(this),t.trigger("ge-rte-ready"),t.summernote("focus")}}}),t.summernote(e))})},deinit:function(e,t){t.filter(".active").each(function(){var e=i(this);e.summernote("destroy"),e.removeClass("active").removeAttr("id").removeAttr("style").removeAttr("spellcheck")})},initialContent:"<p>Lorem ipsum dolores</p>"}})(jQuery),(i=>{function a(e){e.removeClass("active").removeClass("ge-rte-active").removeAttr("id").removeAttr("style").removeAttr("spellcheck").removeAttr("contenteditable").removeAttr("data-mce-style")}i.fn.gridEditor.RTEs.tinymce={init:function(e,t){var n,o;window.tinymce?(n=this,o=e.tinymce&&e.tinymce.config?e.tinymce.config:{},t.each(function(){var e,t=i(this);t.hasClass("active")||(t.html()==n.initialContent&&t.html(""),t.addClass("active"),delete(e=i.extend({promotion:!1},o,{target:this,inline:!0,init_instance_callback:function(e){t.data("ge-tinymce-pending-remove")?(t.removeData("ge-tinymce-pending-remove"),e.remove(),a(t)):(t.data("ge-tinymce",e),t.trigger("ge-rte-ready"),window.requestAnimationFrame(function(){!e.removed&&e.ui&&e.ui.show&&e.ui.show()}),e.on("focus",function(){window.requestAnimationFrame(function(){!e.removed&&e.ui&&e.ui.show&&e.ui.show()})}),e.focus(),o.init_instance_callback&&o.init_instance_callback.call(this,e),o.oninit&&o.oninit.call(this,e))}})).selector,window.tinymce.init(e))})):console.error(i.fn.gridEditor.t(e,"error.tinymce_missing"))},deinit:function(e,t){t.filter(".active").each(function(){var e=i(this),t=e.data("ge-tinymce");t?(e.removeData("ge-tinymce"),t.remove()):e.data("ge-tinymce-pending-remove",!0),a(e)})},initialContent:"<p>Lorem ipsum dolores</p>"}})(jQuery);
|
|
2
2
|
//# sourceMappingURL=jquery.grideditor.min.js.map
|