From 13b33d4532ab5bd877ef09cea99cbb0c57235b9c Mon Sep 17 00:00:00 2001
From: Chauncey McAskill
Date: Tue, 12 Mar 2024 14:11:21 -0400
Subject: [PATCH] feat(admin): Improve validation/requirements in Tabulator
Input
Changed:
- When column is required, a red asterisk is appended to the column title.
- Column title will be prepended to the row index in the validation feedback message.
- Duplicate validation messages will be suppressed to minimize noise.
---
.../assets/dist/scripts/charcoal.admin.js | 26 ++++++++++++++++---
.../assets/dist/scripts/charcoal.admin.min.js | 2 +-
.../admin/property/input/tabulator.js | 26 ++++++++++++++++---
3 files changed, 47 insertions(+), 7 deletions(-)
diff --git a/packages/admin/assets/dist/scripts/charcoal.admin.js b/packages/admin/assets/dist/scripts/charcoal.admin.js
index cedbe1249..d91f13704 100644
--- a/packages/admin/assets/dist/scripts/charcoal.admin.js
+++ b/packages/admin/assets/dist/scripts/charcoal.admin.js
@@ -12523,6 +12523,13 @@ Charcoal.Admin.Property_Input_Selectize_Tags.prototype.init_clipboard = function
};
}
+ if (
+ column?.validator === 'required' ||
+ (Array.isArray(column?.validator) && column.validator.includes('required'))
+ ) {
+ column.title += ' *';
+ }
+
return column;
};
@@ -12835,20 +12842,33 @@ Charcoal.Admin.Property_Input_Selectize_Tags.prototype.init_clipboard = function
const propLabel = document.querySelector('label[for="' + this.input_id.replace(/_[a-z]{2}$/, '') + '"]').textContent;
+ const uniqueMessagesPerRow = {};
+
validity.forEach((cellComponent) => {
const rowComponent = cellComponent.getRow();
- const rowIndex = (rowComponent.getIndex() ?? (rowComponent.getPosition(true) + 1));
+ const colComponent = cellComponent.getColumn();
- const fieldLabel = `${propLabel || this.tabulator_input.name} #${rowIndex}`;
+ const colTitle = colComponent.getElement().textContent.replace(/\s+\*$/, '').trim();
+ const rowIndex = (rowComponent.getIndex() ?? (rowComponent.getPosition(true) + 1));
+
+ const fieldLabel = `${propLabel || this.tabulator_input.name} ${colTitle} #${rowIndex}`;
const constraints = cellComponent._getSelf().modules.validate.invalid ?? [];
+ uniqueMessagesPerRow[rowIndex] ??= {};
+
constraints.forEach((constraint) => {
- let message = (
+ const message = (
constraint.parameters?.validationMessage ??
resolveTabulatorValidatorMessage(constraint) ??
formWidgetL10n.validation.badInput
);
+ if (uniqueMessagesPerRow?.[rowIndex]?.[message]) {
+ return;
+ }
+
+ uniqueMessagesPerRow[rowIndex][message] = true;
+
Charcoal.Admin.feedback([ {
level: 'error',
message: commonL10n.errorTemplate.replaceMap({
diff --git a/packages/admin/assets/dist/scripts/charcoal.admin.min.js b/packages/admin/assets/dist/scripts/charcoal.admin.min.js
index b7b025be4..798ca7e9a 100644
--- a/packages/admin/assets/dist/scripts/charcoal.admin.min.js
+++ b/packages/admin/assets/dist/scripts/charcoal.admin.min.js
@@ -1,2 +1,2 @@
/*! @charcoal/admin */
-$.fn.enable=function(){return this.each(function(){$(this).removeAttr("disabled").prop("disabled",!1)}),this},$.fn.disable=function(){return this.each(function(){$(this).attr("disabled",!0).prop("disabled",!0)}),this},$.fn.exists=function(){return 0>>0,o=arguments[1],r=0;r'+o[t].join('
')+"
",level:t,type:e.type,buttons:i},s=this.getDisplay(),l=null;switch(s){case"dialog":case"toast":l=s;break;default:l=e.display}"toast"===l?(a.dismissible=0===i.length,new p(a)):BootstrapDialog.show(a)}this.empty()}return this},o.prototype.empty=function(){t(),this.display=null,this.actions=[],this.storage=[]},function(t,e){if(i.feedback(),this.validLevel(t))return this.setLevel(t),this.validMessage(e)&&this.setMessage(e),this;throw new TypeError("Feedback level required. Must be one of: "+r.join(", "))}),p=(l.createFromObject=function(t){var e=t.level||null,t=t.message||null;return e||t?new l(e,t):null},l.prototype={toString:function(){return this.message()},level:function(){return this._level||null},setLevel:function(t){var e=c.type(t);if("string"!==e)throw new TypeError("Feedback level must be a string, received "+e);return o.prototype.assertValidLevel(t),t in a&&(t=a[t]),this._level=t,this},validLevel:function(t){return o.prototype.isValidLevel(t)},message:function(){return this._message||null},setMessage:function(t){var e=c.type(t);if("string"!==e)throw new TypeError("Feedback message must be a string, received "+e);return this._message=t,this},validMessage:function(t){return o.prototype.validMessage(t)}},function(t){var e=c.type(t);if("object"!==e)throw new TypeError("Notification config must be an associative array, received "+e);return this.validMessage(t.message)&&this.setMessage(t.message),this.config=c.extend({},{id:BootstrapDialog.newGuid(),delay:s.delay},t),this.$elem=c(''),this.$elem.prop("id",this.config.id),this.$elem.addClass("alert-"+this.config.type.replace("type-","")),this.config.dismissible&&(this.$elem.addClass("alert-dismissible"),(e=c('')).append('×'),this.$elem.append(e)),this.config.message&&((t=c('')).html("").append(this.config.message),this.$elem.append(t)),this.$elem.appendTo(".c-notifications").addClass("show"),this.$elem.on("closed.bs.alert",{notification:this},function(t){t=t.data.notification;t.$elem.off(".charcoal.feedback"),t.closeTimer&&window.clearTimeout(t.closeTimer)}),"number"==typeof this.config.delay&&0{text}';return t.onshown=function(r){var t=Charcoal.Admin.admin_url()+"widget/load";r.xhr=$.ajax({method:"POST",url:t,data:e,dataType:"json"}),r.xhr.then(function(t,e,i){return t&&t.success?$.Deferred().resolve(t,e,i):t.feedbacks?$.Deferred().reject(i,e,t.feedbacks):$.Deferred().reject(i,e,widgetL10n.loadingFailed)}).done(function(t){r.setMessage(t.widget_html),"function"==typeof i&&i(t,r),$('[data-toggle="tooltip"]',r.getModalBody()).tooltip()}).fail(function(t,e,i){r.setType(BootstrapDialog.TYPE_DANGER),r.setMessage(widgetL10n.loadingFailed);var o="";"string"===$.type(i)&&t.responseJSON&&t.responseJSON.feedbacks&&(i=t.responseJSON.feedbacks),$.isArray(i)?$.each(i,function(t,e){e.message&&("error"===e.level&&(e.level="danger"),o+=c.replaceMap({"{type}":e.level,"{text}":e.message}))}):"string"===$.type(i)&&(o=c.replaceMap({"{type}":"danger","{text}":i})),o&&r.setMessage(o),$('[data-toggle="tooltip"]',r.getModalBody()).tooltip()}),Charcoal.Admin.manager().render()},t.message=function(t){var e=$(c.replaceMap({"{type}":"warning","{text}":widgetL10n.loading}));return a||t.getModalHeader().addClass("d-none"),s||t.getModalFooter().addClass("d-none"),t.getModalBody().on("click.charcoal.bs.dialog",'[data-dismiss="dialog"]',{dialog:t},function(t){t.data.dialog.close()}),e},new BootstrapDialog.show(t)},Charcoal.Admin.Widget.prototype.confirm=function(t,e,i){var o={type:BootstrapDialog.TYPE_DANGER,callback:function(t){t?"function"==typeof e&&e():"function"==typeof i&&i()}},o=$.extend(o,t);return BootstrapDialog.confirm(o)},{});Charcoal.Admin.Widget_Attachment=function(t){this.EVENT_NAMESPACE=Charcoal.Admin.Widget_Attachment.EVENT_NAMESPACE,Charcoal.Admin.Widget.call(this,t),this.busy=!1,this.dirty=!1,this.glyphs={embed:"glyphicon-blackboard",video:"glyphicon-film",image:"glyphicon-picture",file:"glyphicon-file",link:"glyphicon-link",text:"glyphicon-font",gallery:"glyphicon-duplicate",container:"glyphicon-list",accordion:"glyphicon-list"};var e=this;return $(document).on("beforelanguageswitch"+Charcoal.Admin.Widget_Form.EVENT_NAMESPACE,function(t){if(e.is_busy())return t.preventDefault(),void e.enqueue_is_busy_feedback().dispatch();e.perform_save()}).on("languageswitch"+Charcoal.Admin.Widget_Form.EVENT_NAMESPACE,function(){e.change_locale().try_reload()}),this},Charcoal.Admin.Widget_Attachment.EVENT_NAMESPACE=".charcoal.attachments",Charcoal.Admin.Widget_Attachment.prototype=Object.create(Charcoal.Admin.Widget.prototype),Charcoal.Admin.Widget_Attachment.prototype.constructor=Charcoal.Admin.Widget_Attachment,Charcoal.Admin.Widget_Attachment.prototype.parent=Charcoal.Admin.Widget.prototype,Charcoal.Admin.Widget_Attachment.prototype.init=function(){var t,e=this.element().find(".js-attachment-sortable > .js-grid-container");return e.length&&(this.element().on("hidden.bs.collapse",'[data-toggle="collapse"]',function(){e.sortable("refreshPositions")}),t=this,e.sortable({handle:'[draggable="true"]',placeholder:"card c-attachments_row -placeholder",start:function(t,e){e.item.children(".card-header").find('[data-toggle="collapse"]').hasClass("collapsed")||e.item.children(".collapse").collapse("hide")},update:function(){t.set_dirty_state(!0)}}).disableSelection()),this.listeners(),this},Charcoal.Admin.Widget_Attachment.prototype.is_busy=function(){return this.busy||this.is_reloading()},Charcoal.Admin.Widget_Attachment.prototype.set_busy_state=function(t){return this.busy=t,this},Charcoal.Admin.Widget_Attachment.prototype.is_dirty=function(){return this.dirty},Charcoal.Admin.Widget_Attachment.prototype.set_dirty_state=function(t){return this.dirty=t,this},Charcoal.Admin.Widget_Attachment.prototype.change_locale=function(t){var e=this.opts();return e.widget_options.lang=t||Charcoal.Admin.lang(),this.set_opts(e),this},Charcoal.Admin.Widget_Attachment.prototype.listeners=function(){var d=this,e=this.element().find(".c-attachments_container > .js-grid-container");this.element().off(this.EVENT_NAMESPACE).on("click"+this.EVENT_NAMESPACE,".js-attachments-collapse",function(){var t=e.children(".js-attachment");e.hasClass("js-attachment-preview-only")&&t.find(".card-header.sr-only").removeClass("sr-only").addClass("sr-only-off"),t.find(".collapse.show").collapse("hide")}).on("click"+this.EVENT_NAMESPACE,".js-attachments-expand",function(){var t=e.children(".js-attachment");e.hasClass("js-attachment-preview-only")&&t.find(".card-header.sr-only-off").removeClass("sr-only-off").addClass("sr-only"),t.find(".collapse:not(.show)").collapse("show")}).on("click"+this.EVENT_NAMESPACE,".js-add-attachment",function(t){t.preventDefault();var t=$(this),e=t.data("type");if(!e)return!1;var i=t.data("id");i?(d.add({id:i,type:e}),d.join(function(){d.reload()})):(i={title:t.data("title")||attachmentWidgetL10n.editObject,formIdent:t.data("form-ident"),skipForm:t.data("skip-form")},d.create_attachment(e,0,null,i,function(t){t.success&&(t.obj.id=t.obj_id,d.add(t.obj),d.join(function(){d.reload()}))}))}).on("click"+this.EVENT_NAMESPACE,".js-attachment-actions a",function(t){var e=$(this);if(e.data("action"))switch(t.preventDefault(),e.data("action")){case"edit":var i=e.data("type"),o=e.data("id");if(!i||!o)break;var r={title:e.data("title")||attachmentWidgetL10n.editObject,formIdent:e.data("form-ident")};d.create_attachment(i,o,null,r,function(t){t.success&&d.reload()});break;case"delete":if(!e.data("id"))break;d.confirm({title:attachmentWidgetL10n.confirmRemoval,message:commonL10n.confirmAction,btnOKLabel:commonL10n.removeObject,callback:function(t){t&&d.remove_join(e.data("id"),function(){d.reload()})}});break;case"add-object":var i=e.data("title"),o=e.data("attachment"),n=e.data("type"),a=e.data("id"),s=e.data("group"),l=e.data("form-ident"),c=e.data("skip-form"),p={id:a,type:n,group:s},r={title:i,formIdent:l,skipForm:c};d.create_attachment(o,0,p,r,function(t){t.success&&d.add_object_to_container({id:t.obj_id,type:t.obj.type},p)})}})},Charcoal.Admin.Widget_Attachment.prototype.select_attachment=function(t){if(!t.data("id")||!t.data("type"))return this},Charcoal.Admin.Widget_Attachment.prototype.create_attachment=function(t,e,i,o,r){return o&&o.skipForm?this.create_quick_attachment(t,e,i,o,r):this.create_dialog_attachment(t,e,i,o,r)},Charcoal.Admin.Widget_Attachment.prototype.create_quick_attachment=function(t,i,e,o,r){return i=i||0,e=e||this.get_parent_container(),this.xhr=$.ajax({type:"POST",url:"object/save",data:{obj_type:t,obj_id:i,pivot:e}}),Charcoal.Admin.resolveSimpleJsonXhr(this.xhr,function(t){t.feedbacks.length&&Charcoal.Admin.feedback(t.feedbacks),"function"==typeof r&&r(t)},function(t){var e;t.feedbacks.length?Charcoal.Admin.feedback(t.feedbacks):(t=i?formWidgetL10n.updateFailed:formWidgetL10n.createFailed,e=commonL10n.errorOccurred,Charcoal.Admin.feedback([{level:"error",message:commonL10n.errorTemplate.replaceMap({"[[ errorMessage ]]":t,"[[ errorThrown ]]":e})}]))},function(){Charcoal.Admin.feedback().dispatch(),Charcoal.Admin.manager().render()})},Charcoal.Admin.Widget_Attachment.prototype.create_dialog_attachment=function(t,i,e,o,r){i=i||0,o=o||{},e=e||this.get_parent_container();t={size:BootstrapDialog.SIZE_WIDE,cssClass:"-quick-form",widget_type:"charcoal/admin/widget/quick-form",with_data:!0,widget_options:{obj_type:t,obj_id:i,form_ident:o.formIdent||null,form_data:{pivot:e}}},e=$.extend({},t,o,{});return this.dialog(e,function(t,e){return!!t.success&&(!!t.widget_id&&(Charcoal.Admin.manager().add_widget({id:t.widget_id,type:"charcoal/admin/widget/quick-form",data:t.widget_data,obj_id:i,save_callback:function(t){"function"==typeof r&&r(t),this instanceof Charcoal.Admin.Component&&this.id()&&Charcoal.Admin.manager().destroy_component("widgets",this.id()),e.close()}}),void Charcoal.Admin.manager().render()))})},Charcoal.Admin.Widget_Attachment.prototype.get_parent_container=function(){var t=this.opts();return{obj_type:t.data.obj_type,obj_id:t.data.obj_id,group:t.data.group}},Charcoal.Admin.Widget_Attachment.prototype.add_object_to_container=function(t,e,i){if(this.is_busy())return null;this.set_busy_state(!0);var o=this,r={obj_type:e.type,obj_id:e.id,attachments:[{attachment_id:t.id,attachment_type:t.type,position:0}],group:i||e.group||""},t=(null!=globalXHR[r.group]&&globalXHR[r.group].abort&&globalXHR[r.group].abort(),$.post("add-join",r));return globalXHR[r.group]=Charcoal.Admin.resolveSimpleJsonXhr(t,function(){o.reload()},function(t){t.feedbacks.length?Charcoal.Admin.feedback(t.feedbacks):Charcoal.Admin.feedback([{level:"error",message:commonL10n.errorTemplate.replaceMap({"[[ errorMessage ]]":formWidgetL10n.saveFailed,"[[ errorThrown ]]":commonL10n.errorOccurred})}])},function(){delete globalXHR[r.group],o.set_busy_state(!1),Charcoal.Admin.feedback().dispatch()})},Charcoal.Admin.Widget_Attachment.prototype.add=function(t){if(!t)return!1;this.set_dirty_state(!0);var e=this.element().find(".js-attachment-template").clone();return e.find(".js-attachment").data("id",t.id).data("type",t.type),this.element().find(".c-attachments_container > .js-grid-container").append(e),this},Charcoal.Admin.Widget_Attachment.prototype.enqueue_is_busy_feedback=function(){var t=this.widget_options(),t=t&&t.title||attachmentWidgetL10n.widgetName;return Charcoal.Admin.feedback([{level:"warning",display:"toast",message:commonL10n.errorTemplate.replaceMap({"[[ errorMessage ]]":t,"[[ errorThrown ]]":widgetL10n.isBusy})}])},Charcoal.Admin.Widget_Attachment.prototype.validate=function(t){return!this.is_busy()||(t.attempts&&t.max_attempts&&t.attempts .js-sortable-item")).map(function(t){return t.classList.contains("draggable-mirror")||t.classList.contains("draggable--original")?"":t.getAttribute("data-id")}).filter(function(t){return""!==t}),$.ajax({method:"POST",url:Charcoal.Admin.admin_url()+"object/reorder",data:{obj_type:e.obj_type,obj_orders:t,starting_order:1},dataType:"json"}).done(function(t){console.debug(t),t.feedbacks&&Charcoal.Admin.feedback(t.feedbacks).dispatch()}))})),$(".js-jump-page-form",e.table_selector).on("submit",function(t){t.preventDefault();t=$(this),t=parseInt(t.find("input").val());t&&(e.pagination.page=t,e.reload(null,!0))}),$(".js-page-switch",e.table_selector).on("click",function(t){t.preventDefault();t=$(this).data("page-num");console.log(t),e.pagination.page=t,e.reload(null,!0)})},Charcoal.Admin.Widget_Card_Collection.prototype.widget_options=function(){return{obj_type:this.obj_type,template:this.template,collection_ident:this.collection_ident,card_template:this.card_template,num_columns:this.num_columns,collection_config:{properties:this.properties,properties_options:this.properties_options,search_query:this.get_search_query(),filters:this.get_filters(),orders:this.get_orders(),pagination:this.pagination,list_actions:this.list_actions,object_actions:this.object_actions}}},Charcoal.Admin.Widget_Form=function(t){this.EVENT_NAMESPACE=Charcoal.Admin.Widget_Form.EVENT_NAMESPACE,Charcoal.Admin.Widget.call(this,t),this.widget_id=null,this.obj_type=null,this.obj_id=null,this.save_action=t.save_action||"object/save",this.update_action=t.update_action||"object/update",this.extra_form_data=t.extra_form_data||{},this.form_selector=null,this.form_working=!1,this.attempts=0,this.max_attempts=5,this.submitted_via=null,this.is_new_object=!1,this.xhr=null,this.useDefaultAction=!1,this.confirmed=!1;t=$("[data-lang]:not(.d-none)").data("lang");t&&Charcoal.Admin.setLang(t),this._on_popstate_tab=this._on_popstate_tab.bind(this),this._on_shown_tab=this._on_shown_tab.bind(this)},Charcoal.Admin.Widget_Form.EVENT_NAMESPACE=".charcoal.form",Charcoal.Admin.Widget_Form.prototype=Object.create(Charcoal.Admin.Widget.prototype),Charcoal.Admin.Widget_Form.prototype.constructor=Charcoal.Admin.Widget_Form,Charcoal.Admin.Widget_Form.prototype.parent=Charcoal.Admin.Widget.prototype,Charcoal.Admin.Widget_Form.prototype.init=function(){this.set_properties(this.opts()),this.update_tab_ident(),this.bind_events(),this.parse_group_conditions()},Charcoal.Admin.Widget_Form.prototype.set_properties=function(t){return this.widget_id=t.id||this.widget_id,this.obj_type=t.data.obj_type||this.obj_type,this.obj_id=Charcoal.Admin.parseNumber(t.data.obj_id||this.obj_id),this.form_selector=t.data.form_selector||this.form_selector,this.isTab=t.data.tab,this.group_conditions=t.data.group_conditions,this.$form=$(this.form_selector),this.allow_reload=t.data.allow_reload,this.force_page_reload=t.data.force_page_reload,this.useDefaultAction=t.data.use_default_action,this},Charcoal.Admin.Widget_Form.prototype.widget_options=function(){var t=this.parent.widget_options.call(this);return $.extend({},t,this.opts("data"))},Charcoal.Admin.Widget_Form.prototype.bind_events=function(){var e=this,i=this.$form,t=(i.on("submit"+this.EVENT_NAMESPACE,function(t){t.preventDefault(),e.request_submit()}).find(":submit").on("click"+this.EVENT_NAMESPACE,function(){e.submitted_via=this}),$(".js-sidebar-widget",this.form_selector));t.on("click"+this.EVENT_NAMESPACE,".js-obj-delete",function(t){t.preventDefault(),e.delete_object(this)}),t.on("click"+this.EVENT_NAMESPACE,".js-reset-form",function(t){t.preventDefault(),i[0].reset()}),t.on("click"+this.EVENT_NAMESPACE,".js-obj-revision",function(t){t.preventDefault(),e.view_revision(this)}),t.on("click"+this.EVENT_NAMESPACE,".js-obj-list",function(t){t.preventDefault(),e.back_to_list(this)}),t.on("click"+this.EVENT_NAMESPACE,".js-lang-switch button",function(t){t.preventDefault();t=$(this).attr("data-lang-switch");e.switch_language(t)}),window.addEventListener("popstate",this._on_popstate_tab),this.isTab&&i.on("shown.bs.tab",".js-group-tabs",this._on_shown_tab)},Charcoal.Admin.Widget_Form.prototype._on_popstate_tab=function(){this.update_tab_ident()},Charcoal.Admin.Widget_Form.prototype._on_shown_tab=function(t){var t=$(t.target),e=[],i=Charcoal.Admin.queryParams();if(void 0===i.tab_ident||t.data("tab-ident")!==i.tab_ident){for(var o in i.tab_ident=t.data("tab-ident"),i)e.push(o+"="+i[o]);history.pushState("","",window.location.pathname+"?"+e.join("&"))}},Charcoal.Admin.Widget_Form.prototype.parse_group_conditions=function(){var o=this,r=this.$form;$.each(this.group_conditions,function(i,t){var e=o.validate_group_conditions(i);e||o.toggle_conditional_group(i,e,!1),$.each(t,function(t,e){r.on("change"+this.EVENT_NAMESPACE,"#"+e.input_id,{condition_target:i},function(t){var e=o.validate_group_conditions(t.data.condition_target);o.toggle_conditional_group(t.data.condition_target,e)})})})},Charcoal.Admin.Widget_Form.prototype.validate_group_conditions=function(t){var t=this.group_conditions[t],r=this,n=this.$form,a=!0;return $.each(t,function(t,e){var i=n.find("#"+e.input_id),o=r.get_input_value(i);switch(JSON.stringify(e.operator)){case'"!=="':case'"!="':case'"!"':case'"not"':if(o===e.value)return void(a=!1);break;default:case'"==="':case'"=="':case'"="':case'"is"':if(o!==e.value)return void(a=!1)}}),a},Charcoal.Admin.Widget_Form.prototype.toggle_conditional_group=function(t,e,i){function o(){r.each(function(){$(this).attr("disabled",!e)})}var t=this.$form.find("#"+t),r=t.find("select, input, textarea");i=void 0===i||i;e?i?t.slideDown({easing:"easeInOutQuad",start:o}):t.show(0,o):i?t.slideUp({easing:"easeInOutQuad",complete:o}):t.hide(0,o)},Charcoal.Admin.Widget_Form.prototype.get_input_value=function(t){if("disabled"===t.attr("disabled"))return null;var e;switch(t.attr("type")){case"select":e=t.find(":selected").val();break;case"checkbox":e=t.is(":checked");break;default:e=t.val()}return e},Charcoal.Admin.Widget_Form.prototype.update_tab_ident=function(){var t=Charcoal.Admin.queryParams();"tab_ident"in t&&$('.js-group-tabs[data-tab-ident="'+t.tab_ident+'"]').tab("show")},Charcoal.Admin.Widget_Form.prototype.get_form_data=function(){var t=this.$form.length?new FormData(this.$form[0]):new FormData;if(this.submitted_via&&this.submitted_via.name&&t.append(this.submitted_via.name,this.submitted_via.value||!0),this.confirmed&&t.append("confirmed",!0),this.extra_form_data)for(var e in this.extra_form_data)this.extra_form_data.hasOwnProperty(e)&&t.append(e,this.extra_form_data[e]);return t},Charcoal.Admin.Widget_Form.prototype.request_submit=function(){var t;return this.attempts++,this.form_working?(t=this.attempts>=this.max_attempts?commonL10n.errorTemplate.replaceMap({"[[ errorMessage ]]":formWidgetL10n.isBlocked,"[[ errorThrown ]]":commonL10n.tryAgainLater}):commonL10n.errorTemplate.replaceMap({"[[ errorMessage ]]":formWidgetL10n.isProcessing,"[[ errorThrown ]]":commonL10n.pleaseWait}),void Charcoal.Admin.feedback([{level:"warning",display:"toast",message:t}])):(this.form_working=!0,this.is_new_object=!this.obj_id,!0!==Charcoal.Admin.manager().prepare_submit(this)?(t=$.Event("failed"+this.EVENT_NAMESPACE,{subtype:"validation",component:this}),this.$form.trigger(t),void this.request_complete()):(this.disable_form(),void this.submit_form()))},Charcoal.Admin.Widget_Form.prototype.submit_form=function(){this.xhr=$.ajax({type:"POST",url:this.request_url(),data:this.get_form_data(),dataType:"json",processData:!1,contentType:!1}),this.xhr.then($.proxy(this.request_done,this)).done($.proxy(this.request_success,this)).fail($.proxy(this.request_failed,this)).always($.proxy(this.request_complete,this))},Charcoal.Admin.Widget_Form.prototype.request_done=function(t,e,i){return t&&t.success?$.Deferred().resolve(t,e,i):t.feedbacks?$.Deferred().reject(i,e,t.feedbacks):$.Deferred().reject(i,e,commonL10n.errorOccurred)},Charcoal.Admin.Widget_Form.prototype.request_success=function(t){this.attempts=0;var e=$.Event("success"+this.EVENT_NAMESPACE,{subtype:"submission",component:this,response:t});this.$form.trigger(e),e.isDefaultPrevented()||(this.confirmed=!1,t.feedbacks&&Charcoal.Admin.feedback(t.feedbacks),t.need_confirmation?this.add_actions_for_confirmation(t.confirmation_label):t.next_url?this.add_action_for_next_url(t.next_url,t.next_url_label):!this.useDefaultAction&&this.is_new_object?(this.suppress_feedback(!0),t.next_url?Charcoal.Admin.redirect_to_url(t.next_url):(e=new URLSearchParams(window.location.search),window.location.href=Charcoal.Admin.admin_url()+"object/edit?"+(e.has("main_menu")?"main_menu="+e.get("main_menu")+"&":"")+(e.has("secondary_menu")?"secondary_menu="+e.get("secondary_menu")+"&":"")+"obj_type="+this.obj_type+"&obj_id="+t.obj_id)):this.force_page_reload?window.location.reload():this.allow_reload&&(e=Charcoal.Admin.manager().get_widgets(),$.each(e,function(t,e){e.reload()}.bind(this))))},Charcoal.Admin.Widget_Form.prototype.request_failed=function(t,e,i){var o=$.Event("failed"+this.EVENT_NAMESPACE,{subtype:"submission",component:this,response:t.responseJSON||{}});this.$form.trigger(o),o.isDefaultPrevented()||(t.responseJSON&&t.responseJSON.feedbacks?Charcoal.Admin.feedback(t.responseJSON.feedbacks):(o=this.is_new_object?formWidgetL10n.createFailed:formWidgetL10n.updateFailed,t=i||commonL10n.errorOccurred,Charcoal.Admin.feedback([{level:"error",message:commonL10n.errorTemplate.replaceMap({"[[ errorMessage ]]":o,"[[ errorThrown ]]":t})}])))},Charcoal.Admin.Widget_Form.prototype.request_complete=function(){var t=$.Event("complete"+this.EVENT_NAMESPACE,{subtype:"submission",component:this});this.$form.trigger(t),t.isDefaultPrevented()||(this.suppress_feedback()||(this.attempts>=this.max_attempts&&Charcoal.Admin.feedback([{level:"error",message:commonL10n.errorTemplate.replaceMap({"[[ errorMessage ]]":formWidgetL10n.isBlocked,"[[ errorThrown ]]":commonL10n.tryAgainLater})}]),Charcoal.Admin.feedback().dispatch(),this.enable_form()),this.submitted_via=null,this.suppress_feedback(!1),this.form_working=this.is_new_object=!1)},Charcoal.Admin.Widget_Form.prototype.add_action_for_next_url=function(t,e){Charcoal.Admin.feedback().add_action({label:e||commonL10n.continue,callback:function(){Charcoal.Admin.redirect_to_url(t)}})},Charcoal.Admin.Widget_Form.prototype.add_actions_for_confirmation=function(t){Charcoal.Admin.feedback().add_action({label:commonL10n.cancel,cssClass:"btn-danger",callback:function(t){t.close()}}).add_action({label:t||commonL10n.continue,callback:function(t){t.close(),this.confirmed=!0,this.request_submit()}.bind(this)})},Charcoal.Admin.Widget_Form.prototype.disable_form=function(){var t=this.$form;return t.length&&(t.prop("disabled",!0),(t=t.find('[type="submit"]')).length&&t.prop("disabled",!0)),this.submitted_via&&this.disable_button($(this.submitted_via)),this},Charcoal.Admin.Widget_Form.prototype.enable_form=function(){var t=this.$form;return t.length&&(t.prop("disabled",!1),(t=t.find('[type="submit"]')).length&&t.prop("disabled",!1)),this.submitted_via&&this.enable_button($(this.submitted_via)),this},Charcoal.Admin.Widget_Form.prototype.disable_button=function(t){return t.prop("disabled",!0).children(".fa").removeClass("d-none").next(".btn-label").addClass("sr-only"),this},Charcoal.Admin.Widget_Form.prototype.enable_button=function(t){return t.prop("disabled",!1).children(".fa").addClass("d-none").next(".btn-label").removeClass("sr-only"),this},Charcoal.Admin.Widget_Form.prototype.request_url=function(){return this.useDefaultAction?this.$form.attr("action"):this.is_new_object?Charcoal.Admin.admin_url()+this.save_action:Charcoal.Admin.admin_url()+this.update_action},Charcoal.Admin.Widget_Form.prototype.view_revision=function(){var e=this.obj_type,i=this.obj_id,t={size:BootstrapDialog.SIZE_WIDE,title:formWidgetL10n.revisions,widget_type:"charcoal/admin/widget/object-revisions",widget_options:{obj_type:e,obj_id:i}},t=$.extend({},t);this.dialog(t,function(t){if(t.success){if(!t.widget_id)return!1;Charcoal.Admin.manager().add_widget({id:t.widget_id,type:"charcoal/admin/widget/object-revisions",obj_type:e,obj_id:i}),Charcoal.Admin.manager().render()}})},Charcoal.Admin.Widget_Form.prototype.back_to_list=function(){var t=new URLSearchParams(window.location.search);window.location.href="object/collection?"+(t.has("main_menu")?"main_menu="+t.get("main_menu")+"&":"")+(t.has("secondary_menu")?"secondary_menu="+t.get("secondary_menu")+"&":"")+"obj_type="+this.obj_type},Charcoal.Admin.Widget_Form.prototype.delete_object=function(){var i=this,t=new URLSearchParams(window.location.search),o=Charcoal.Admin.admin_url()+"object/collection?"+(t.has("main_menu")?"main_menu="+t.get("main_menu")+"&":"")+(t.has("secondary_menu")?"secondary_menu="+t.get("secondary_menu")+"&":"")+"obj_type="+this.obj_type;if(!i.obj_type||!i.obj_id)return t={level:"warning",message:commonL10n.errorTemplate.replaceMap({"[[ errorMessage ]]":formWidgetL10n.deleteFailed,"[[ errorThrown ]]":commonL10n.invalidObject})},void Charcoal.Admin.feedback([t]).dispatch();BootstrapDialog.confirm({title:formWidgetL10n.confirmDeletion,type:BootstrapDialog.TYPE_DANGER,message:$(""+commonL10n.confirmAction+'
'+commonL10n.cantUndo+"
"),btnOKLabel:commonL10n.delete,callback:function(t){var e;t&&(t=Charcoal.Admin.admin_url()+"object/delete",e={obj_type:i.obj_type,obj_id:i.obj_id},t=$.ajax({method:"POST",url:t,data:e,dataType:"json"}),Charcoal.Admin.resolveSimpleJsonXhr(t,function(){window.location.href=o},function(t){t.feedbacks.length?Charcoal.Admin.feedback(t.feedbacks):Charcoal.Admin.feedback([{level:"error",message:formWidgetL10n.deleteFailed}])},function(){i.suppress_feedback()||Charcoal.Admin.feedback().dispatch()}))}})},Charcoal.Admin.Widget_Form.prototype.reload=function(i){return this.destroy(),Charcoal.Admin.Widget.prototype.reload.call(this,function(t,e){"function"==typeof i&&i.call(t,e),Charcoal.Admin.manager().render()},!0),this},Charcoal.Admin.Widget_Form.prototype.switch_language=function(t){var e,i=Charcoal.Admin.lang();i!==t&&(e=$.Event("beforelanguageswitch"+this.EVENT_NAMESPACE,{language:t,originalLanguage:i,relatedTarget:this.$form[0],relatedComponent:this}),$(document).triggerHandler(e),e.isDefaultPrevented()||(Charcoal.Admin.setLang(t),$("[data-lang][data-lang!="+t+"]").addClass("d-none"),$("[data-lang][data-lang="+t+"]").removeClass("d-none"),$("[data-lang-switch][data-lang-switch!="+t+"]").removeClass("btn-primary").addClass("btn-outline-primary"),$("[data-lang-switch][data-lang-switch="+t+"]").removeClass("btn-outline-primary").addClass("btn-primary"),$(document).triggerHandler({type:"switch_language.charcoal"}),e=$.Event("languageswitch"+this.EVENT_NAMESPACE,{language:t,originalLanguage:i,relatedTarget:this.$form[0],relatedComponent:this}),$(document).triggerHandler(e)))},Charcoal.Admin.Widget_Form.prototype.destroy=function(){$(this.form_selector).off(this.EVENT_NAMESPACE),$(".js-sidebar-widget",this.form_selector).off(this.EVENT_NAMESPACE),window.removeEventListener("popstate",this._on_popstate_tab),this.isTab&&$(this.form_selector).off("shown.bs.tab",".js-group-tabs",this._shown_tab_handler)},function(e,t,i){"use strict";function o(t){this.EVENT_NAMESPACE=o.EVENT_NAMESPACE,Charcoal.Admin.Widget.call(this,t),this.graph_options=t.graph_options||t.data.graph_options||{}}o.EVENT_NAMESPACE=".charcoal.widget.graph",((o.prototype=Object.create(Charcoal.Admin.Widget.prototype)).contructor=o).prototype.parent=Charcoal.Admin.Widget.prototype,o.prototype.init=function(){var t;echarts?(t=echarts.init(this.element()[0]),(this.chart=t).setOption(this.graph_options),e(i).on("resize"+this.EVENT_NAMESPACE,function(){t.resize()})):console.error("Could not initialize graph widget:","eCharts is missing")},o.prototype.destroy=function(){this.chart&&this.chart.dispose(),e(i).off("resize"+this.EVENT_NAMESPACE)},t.Widget_Graph=o}(jQuery,Charcoal.Admin,window),Charcoal.Admin.Widget_Map=function(t){return Charcoal.Admin.Widget.call(this,t),this._controller=void 0,this},Charcoal.Admin.Widget_Map.prototype=Object.create(Charcoal.Admin.Widget.prototype),Charcoal.Admin.Widget_Map.prototype.constructor=Charcoal.Admin.Widget_Map,Charcoal.Admin.Widget_Map.prototype.parent=Charcoal.Admin.Widget.prototype,Charcoal.Admin.Widget_Map.prototype.init=function(){var t=this;return"undefined"==typeof google?(window._tmp_google_onload_function=function(){t.activate_map()},$.getScript("https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&language=fr&callback=_tmp_google_onload_function",function(){})):t.activate_map(),this},Charcoal.Admin.Widget_Map.prototype.activate_map=function(){var t={default_styles:{strokeColor:"#000000",strokeOpacity:.8,strokeWeight:3,fillColor:"#ffffff",fillOpacity:.35,hover:{strokeColor:"#000000",strokeOpacity:1,strokeWeight:2,fillColor:"#ffffff",fillOpacity:.5},focused:{fillOpacity:.8}},use_clusterer:!1,map:{center:{x:this.opts("coords")[0],y:this.opts("coords")[1]},zoom:14,mapType:"roadmap",coordsType:"inpage",map_mode:"default"},places:{first:{type:"marker",coords:this.coords()}}};this._controller=new window.BB.gmap.controller(this.element().find(".js-map-maker-map").get(0),t),this.controller().set_styles([{featureType:"poi",elementType:"all",stylers:[{visibility:"off"}]}]),this.controller().remove_focus(),this.controller().init()},Charcoal.Admin.Widget_Map.prototype.controller=function(){return this._controller},Charcoal.Admin.Widget_Map.prototype.coords=function(){return this.opts("coords")},Charcoal.Admin.Widget_Object_Revisions=function(t){return Charcoal.Admin.Widget.call(this,t),this.extra_form_data=t.extra_form_data||{},this.xhr=null,this.obj_id=Charcoal.Admin.parseNumber(t.obj_id)||0,this.obj_type=t.obj_type,this},Charcoal.Admin.Widget_Object_Revisions.prototype=Object.create(Charcoal.Admin.Widget.prototype),Charcoal.Admin.Widget_Object_Revisions.prototype.constructor=Charcoal.Admin.Widget_Object_Revisions,Charcoal.Admin.Widget_Object_Revisions.prototype.parent=Charcoal.Admin.Widget.prototype,Charcoal.Admin.Widget_Object_Revisions.prototype.init=function(){this.bind_events()},Charcoal.Admin.Widget_Object_Revisions.prototype.bind_events=function(){var e=this;$("#"+this.id()).on("click.object.revisions",".js-obj-revert",this.revert.bind(this)),$("#"+this.id()).on("click.charcoal.bs.dialog",'[data-dismiss="dialog"]',function(t){$.isFunction(e.cancel_callback)&&e.cancel_callback(t)})},Charcoal.Admin.Widget_Object_Revisions.prototype.revert=function(t){t.preventDefault();var e=Charcoal.Admin.admin_url()+"object/revert-revision",i={obj_type:this.obj_type,obj_id:this.obj_id,rev_num:$(t.currentTarget).attr("data-rev-num")};BootstrapDialog.show({title:objectRevisionsWidgetL10n.title,message:objectRevisionsWidgetL10n.message,buttons:[{id:"ok-btn",label:objectRevisionsWidgetL10n.restore,action:function(t){t.close(),$.ajax({url:e,type:"POST",data:i,dataType:"json",success:function(t){t.success?window.location.reload():(Charcoal.Admin.feedback().push([{level:"error",message:objectRevisionsWidgetL10n.restoreError}]),Charcoal.Admin.feedback().dispatch())},error:function(){Charcoal.Admin.feedback().push([{level:"error",message:objectRevisionsWidgetL10n.restoreError}]),Charcoal.Admin.feedback().dispatch()}})}}]})},Charcoal.Admin.Widget_Object_Revisions.prototype.disable_form=Charcoal.Admin.Widget_Form.prototype.disable_form,Charcoal.Admin.Widget_Object_Revisions.prototype.enable_form=Charcoal.Admin.Widget_Form.prototype.enable_form,Charcoal.Admin.Widget_Object_Revisions.prototype.request_url=Charcoal.Admin.Widget_Form.prototype.request_url,Charcoal.Admin.Widget_Object_Revisions.prototype.request_done=Charcoal.Admin.Widget_Form.prototype.request_done,Charcoal.Admin.Widget_Object_Revisions.prototype.request_failed=Charcoal.Admin.Widget_Form.prototype.request_failed,Charcoal.Admin.Widget_Object_Revisions.prototype.request_complete=Charcoal.Admin.Widget_Form.prototype.request_complete,Charcoal.Admin.Widget_Object_Revisions.prototype.request_success=function(t,e,i){i.feedbacks&&!this.suppress_feedback()&&Charcoal.Admin.feedback(i.feedbacks),i.next_url&&Charcoal.Admin.feedback().add_action({label:commonL10n.continue,callback:function(){window.location.href=Charcoal.Admin.admin_url()+i.next_url}})},Charcoal.Admin.Widget_Quick_Form=function(t){this.EVENT_NAMESPACE=Charcoal.Admin.Widget_Quick_Form.EVENT_NAMESPACE,Charcoal.Admin.Widget.call(this,t),this.save_callback=t.save_callback||"",this.cancel_callback=t.cancel_callback||"",this.form_selector=t.data.form_selector,this.save_action=t.save_action||"object/save",this.update_action=t.update_action||"object/update",this.extra_form_data=t.extra_form_data||{},this.group_conditions=t.data.group_conditions,this.group_display_mode=t.data.group_display_mode||"",this.show_language_switch=t.data.show_language_switch||!1,this.form_working=!1,this.is_new_object=!1,this.xhr=null,this.obj_id=Charcoal.Admin.parseNumber(t.obj_id)||0},Charcoal.Admin.Widget_Quick_Form.EVENT_NAMESPACE=".charcoal.quickform",Charcoal.Admin.Widget_Quick_Form.prototype=Object.create(Charcoal.Admin.Widget_Form.prototype),Charcoal.Admin.Widget_Quick_Form.prototype.constructor=Charcoal.Admin.Widget_Quick_Form,Charcoal.Admin.Widget_Quick_Form.prototype.parent=Charcoal.Admin.Widget.prototype,Charcoal.Admin.Widget_Quick_Form.prototype.init=function(){this.set_properties(this.opts()),this.bind_events(),this.parse_group_conditions(),this.show_language_switch&&$('.nav-link.nav-lang[data-tab-ident="'+Charcoal.Admin.lang()+'"]').trigger("click")},Charcoal.Admin.Widget_Quick_Form.prototype.set_properties=function(){this.$form=$(this.form_selector)},Charcoal.Admin.Widget_Quick_Form.prototype.bind_events=function(){var e=this,t=this.$form;t.on("submit"+this.EVENT_NAMESPACE,function(t){t.preventDefault(),e.request_submit()}).on("click"+this.EVENT_NAMESPACE,'[data-dismiss="dialog"]',function(t){$.isFunction(e.cancel_callback)&&e.cancel_callback(t)}),this.show_language_switch&&t.on("click.nav-link.nav-lang","a.nav-link.nav-lang",function(t){t.preventDefault(),e.trigger_lang_tab($(this).attr("data-tab-ident"))})},Charcoal.Admin.Widget_Quick_Form.prototype.request_success=function(t){var e=$.Event("success"+this.EVENT_NAMESPACE,{subtype:"submission",component:this,response:t});this.$form.trigger(e),e.isDefaultPrevented()||(this.confirmed=!1,t.feedbacks&&!this.suppress_feedback()&&Charcoal.Admin.feedback(t.feedbacks),t.need_confirmation?this.add_actions_for_confirmation(t.confirmation_label):t.next_url?this.add_action_for_next_url(t.next_url,t.next_url_label):(this.enable_form(),this.form_working=!1,"function"==typeof this.save_callback&&this.save_callback(t)))},Charcoal.Admin.Widget_Quick_Form.prototype.trigger_lang_tab=function(e){$(".modal .form-field").each(function(){var t=$(this).attr("data-lang");t&&(e!==t?this.style.setProperty("display","none","important"):this.style.setProperty("display","block","important"))})},Charcoal.Admin.Widget_Relation=function(t){return Charcoal.Admin.Widget.call(this,t),this.dirty=!1,this},Charcoal.Admin.Widget_Relation.prototype=Object.create(Charcoal.Admin.Widget.prototype),Charcoal.Admin.Widget_Relation.prototype.constructor=Charcoal.Admin.Widget_Relation,Charcoal.Admin.Widget_Relation.prototype.parent=Charcoal.Admin.Widget.prototype,Charcoal.Admin.Widget_Relation.prototype.init=function(){var t=this.element().find(".js-relation-sortable .js-grid-container");return this.element().on("hidden.bs.collapse",'[data-toggle="collapse"]',function(){t.sortable("refreshPositions")}),t.sortable({handle:'[draggable="true"]',placeholder:"panel c-attachment_placeholder",start:function(t,e){e.item.children(".panel-heading").find('[data-toggle="collapse"]').hasClass("collapsed")||e.item.children(".panel-collapse").collapse("hide")}}).disableSelection(),this.listeners(),this},Charcoal.Admin.Widget_Relation.prototype.is_dirty=function(){return this.dirty},Charcoal.Admin.Widget_Relation.prototype.set_dirty_state=function(t){return this.dirty=t,this},Charcoal.Admin.Widget_Relation.prototype.listeners=function(){var r=this;this.element().off("click").on("click.charcoal.relation",".js-add-relation",function(t){t.preventDefault();t=$(this).data("type");if(!t)return!1;var e=$(this).data("id");e?(r.add({id:e,type:t}),r.create_relation(function(){r.reload()})):(e=$(this).data("title")||relationWidgetL10n.editObject,r.create_relation_dialog({title:e,widget_options:{form_data:{target_object_type:t,target_object_id:null}}},function(t){t.success&&(t.obj.id=t.obj_id,r.add(t.obj),r.create_relation(function(){r.reload()}))}))}).on("click.charcoal.relation",".js-relation-actions a",function(t){var e=$(this);if(e.data("action"))switch(t.preventDefault(),e.data("action")){case"edit":var i=e.data("type"),o=e.data("id");if(!i||!o)break;o=e.data("title")||relationWidgetL10n.editObject;r.create_relation_dialog({title:o,widget_options:{form_data:{target_object_type:i,target_object_id:null}}},function(t){t.success&&r.reload()});break;case"unlink":if(!e.data("id"))break;r.confirm({title:relationWidgetL10n.confirmRemoval,message:commonL10n.confirmAction,btnOKLabel:commonL10n.removeObject,callback:function(t){t&&r.remove_relation(e.data("id"),function(){r.reload()})}})}})},Charcoal.Admin.Widget_Relation.prototype.create_relation_dialog=function(t,e){t=t||{};var i=this.opts().data,i={size:BootstrapDialog.SIZE_WIDE,cssClass:"-quick-form",widget_type:"charcoal/admin/widget/quick-form",widget_options:{obj_type:"charcoal/relation/pivot",obj_id:0,form_data:{group:i.group,source_object_type:i.obj_type,source_object_id:i.obj_id,target_object_type:"",target_object_id:0}}},o=$.extend(!0,{},i,t,{}),r=this.dialog(o,function(t){if(t.success){if(!t.widget_id)return!1;Charcoal.Admin.manager().add_widget({id:t.widget_id,type:"charcoal/admin/widget/quick-form",data:{obj_type:o.widget_options.type},obj_id:o.widget_options.id,save_callback:function(t){e(t),this instanceof Charcoal.Admin.Component&&this.id()&&Charcoal.Admin.manager().destroy_component("widgets",this.id()),r.close()}}),Charcoal.Admin.manager().render()}})},Charcoal.Admin.Widget_Relation.prototype.add=function(t){if(!t)return!1;this.set_dirty_state(!0);var e=this.element().find(".js-relation-template").clone();return e.find(".js-relation").attr({"data-id":t.target_object_id,"data-type":t.target_object_type}),this.element().find(".js-relation-sortable").find(".js-grid-container").append(e),this},Charcoal.Admin.Widget_Relation.prototype.will_save=function(t){return t&&$.contains(t.element()[0],this.element()[0])},Charcoal.Admin.Widget_Relation.prototype.save=function(){return!this.is_dirty()&&(this.create_relation(),!0)},Charcoal.Admin.Widget_Relation.prototype.create_relation=function(t){var e=this,i=e.opts(),o={obj_type:i.data.obj_type,obj_id:i.data.obj_id,group:i.data.group,pivots:[]};this.element().find(".js-relation-container").find(".js-relation").each(function(t){var e=$(this),i=e.attr("data-id"),e=e.attr("data-type");o.pivots.push({target_object_id:i,target_object_type:e,position:t})}),$.post("relation/link",o,function(){"function"==typeof t&&t(),e.set_dirty_state(!1)},"json")},Charcoal.Admin.Widget_Relation.prototype.remove_relation=function(t,e){if(!t)return!1;var i=this;$.post("relation/unlink",{pivot_id:t},function(){"function"==typeof e&&e(),i.set_dirty_state(!1)},"json")},Charcoal.Admin.Widget_Relation.prototype.widget_options=function(){return this.opts("widget_options")},Charcoal.Admin.Widget_Search=function(t){return this.EVENT_NAMESPACE=Charcoal.Admin.Widget_Search.EVENT_NAMESPACE,Charcoal.Admin.Widget.call(this,t),this._elem=void 0,!!t&&(void 0!==t.id&&(this.set_element($("#"+t.id)),"object"==typeof t.data&&(this.data=t.data,this.$input=null,this._search_filters=!1,this._search_query=!1,this)))},Charcoal.Admin.Widget_Search.EVENT_NAMESPACE=".charcoal.widget.search",Charcoal.Admin.Widget_Search.prototype=Object.create(Charcoal.Admin.Widget.prototype),Charcoal.Admin.Widget_Search.prototype.constructor=Charcoal.Admin.Widget_Search,Charcoal.Admin.Widget_Search.prototype.parent=Charcoal.Admin.Widget.prototype,Charcoal.Admin.Widget_Search.prototype.widget_options=function(){return this.data},Charcoal.Admin.Widget_Search.prototype.set_remote_widget=function(){},Charcoal.Admin.Widget_Search.prototype.init=function(){var e=this,t=this.element();this.$input=t.find('[name="query"]'),t.on("submit"+this.EVENT_NAMESPACE,function(t){t.preventDefault(),e.submit()}),t.on("reset"+this.EVENT_NAMESPACE,function(t){t.preventDefault(),e.clear()})},Charcoal.Admin.Widget_Search.prototype.submit=function(){return this.set_search_query(this.$input.val()),Charcoal.Admin.manager().get_widgets().forEach(this.dispatch.bind(this)),this.set_search_query(null),this},Charcoal.Admin.Widget_Search.prototype.clear=function(){return this._search_search=!1,this._search_filters=!1,this.$input.val(""),this.submit(),this},Charcoal.Admin.Widget_Search.prototype.parse_search_query=function(t){return"string"!=typeof t||0===(t=t.trim()).length?null:t},Charcoal.Admin.Widget_Search.prototype.parse_search_filters=function(t){var e,o,r=[];return(t=this.parse_search_query(t))&&(t=t.split(/\s/),e=this.data.properties||[],$.each(t,function(t,i){o=[],i=i.replace(/'/g,"\\'"),$.each(e,function(t,e){o.push({property:e,operator:"LIKE",value:"%"+i+"%"})}),r.push({conjunction:"OR",filters:o})})),r.length?r:null},Charcoal.Admin.Widget_Search.prototype.set_search_query=function(t){this._search_search=this.parse_search_query(t),this._search_filters=!1},Charcoal.Admin.Widget_Search.prototype.search_query=function(){return!1===this._search_search?null:this._search_search},Charcoal.Admin.Widget_Search.prototype.search_filters=function(){return!1===this._search_filters&&(this._search_filters=this.parse_search_filters(this._search_search)),this._search_filters},Charcoal.Admin.Widget_Search.prototype.dispatch=function(t){if(t&&t!==this){var e="function"==typeof t.set_search_query,i="function"==typeof t.set_filter;if(!e&&!i)return this;e&&(e=this.search_query(),t.set_search_query(e)),i&&(e=this.search_filters(),t.set_filter("search",e)),void 0!==t.pagination&&(t.pagination.page=1),t.reload(null,!0)}},Charcoal.Admin.Widget_Search.prototype.destroy=function(){this.element().off(this.EVENT_NAMESPACE)},Charcoal.Admin.Widget_Table=function(t){Charcoal.Admin.Widget.call(this,t),this.obj_type=null,this.widget_id=null,this.table_selector=null,this.pagination={page:1,num_per_page:50},this.list_actions={},this.object_actions={},this.template=this.properties=this.properties_options=void 0,this.sortable=!1,this.sortable_handler=null},Charcoal.Admin.Widget_Table.prototype=Object.create(Charcoal.Admin.Widget.prototype),Charcoal.Admin.Widget_Table.prototype.constructor=Charcoal.Admin.Widget_Table,Charcoal.Admin.Widget_Table.prototype.parent=Charcoal.Admin.Widget.prototype,Object.assign(Charcoal.Admin.Widget_Table.prototype,Charcoal.Admin.Mixin_Model_Search),Object.assign(Charcoal.Admin.Widget_Table.prototype,Charcoal.Admin.Mixin_Model_Filters),Object.assign(Charcoal.Admin.Widget_Table.prototype,Charcoal.Admin.Mixin_Model_Orders),Charcoal.Admin.Widget_Table.prototype.init=function(){this.set_properties().bind_events()},Charcoal.Admin.Widget_Table.prototype.set_properties=function(){var t=this.opts();return this.obj_type=t.data.obj_type||this.obj_type,this.widget_id=t.id||this.widget_id,this.table_selector="#"+this.widget_id,this.sortable=t.data.sortable||this.sortable,this.template=t.data.template||this.template,this.collection_ident=t.data.collection_ident||"default","properties"in t.data&&Array.isArray(t.data.properties)&&(this.properties=t.data.properties),"properties_options"in t.data&&$.isPlainObject(t.data.properties_options)&&(this.properties_options=t.data.properties_options),"filters"in t.data&&this.set_filters(t.data.filters),"orders"in t.data&&this.set_orders(t.data.orders),"pagination"in t.data&&$.isPlainObject(t.data.pagination)&&(this.pagination=t.data.pagination),"list_actions"in t.data&&(Array.isArray(t.data.list_actions)?this.list_actions=Object.assign({},t.data.list_actions):$.isPlainObject(t.data.list_actions)&&(this.list_actions=t.data.list_actions)),"object_actions"in t.data&&(Array.isArray(t.data.object_actions)?this.object_actions=Object.assign({},t.data.object_actions):$.isPlainObject(t.data.object_actions)&&(this.object_actions=t.data.object_actions)),this},Charcoal.Admin.Widget_Table.prototype.bind_events=function(){null!==this.sortable_handler&&this.sortable_handler.destroy();var e=this,t=$("tbody.js-sortable",e.table_selector);0 td"),i=t.source.querySelectorAll(":scope > td");e.forEach(function(t,e){i[e].style.width=t.offsetWidth+"px"})}).on("sortable:stop",function(t){t.oldIndex!==t.newIndex&&(t=Array.from(t.newContainer.querySelectorAll(":scope > tr")).map(function(t){return t.classList.contains("draggable-mirror")||t.classList.contains("draggable--original")?"":t.getAttribute("data-id")}).filter(function(t){return""!==t}),$.ajax({method:"POST",url:Charcoal.Admin.admin_url()+"object/reorder",data:{obj_type:e.obj_type,obj_orders:t,starting_order:1},dataType:"json"}).done(function(t){console.debug(t),t.feedbacks&&Charcoal.Admin.feedback(t.feedbacks).dispatch()}))})),$(".js-jump-page-form",e.table_selector).on("submit",function(t){t.preventDefault();t=$(this),t=parseInt(t.find("input").val());t&&(e.pagination.page=t,e.reload(null,!0))}),$(".js-page-switch",e.table_selector).on("click",function(t){t.preventDefault();t=$(this).data("page-num");e.pagination.page=t,e.reload(null,!0)})},Charcoal.Admin.Widget_Table.prototype.widget_options=function(){return{obj_type:this.obj_type,template:this.template,sortable:this.sortable,collection_ident:this.collection_ident,collection_config:{properties:this.properties,properties_options:this.properties_options,search_query:this.get_search_query(),filters:this.get_filters(),orders:this.get_orders(),pagination:this.pagination,list_actions:this.list_actions,object_actions:this.object_actions}}},Charcoal.Admin.Property=function(t){return Charcoal.Admin.Component.call(this,t),this._ident,this._val,this._input_type,t&&("string"==typeof t.ident&&this.set_ident(t.ident),void 0!==t.val&&this.set_val(t.val),void 0!==t.input_type&&this.set_input_type(t.input_type)),this},Charcoal.Admin.Property.prototype=Object.create(Charcoal.Admin.Component.prototype),Charcoal.Admin.Property.prototype.constructor=Charcoal.Admin.Property,Charcoal.Admin.Property.prototype.parent=Charcoal.Admin.Component.prototype,Charcoal.Admin.Property.prototype.element=function(){if(!this._element){if(!this.id())return null;this.set_element("#"+this.id())}return this._element},Charcoal.Admin.Property.prototype.set_ident=function(t){return this._ident=t,this},Charcoal.Admin.Property.prototype.ident=function(){return this._ident},Charcoal.Admin.Property.prototype.set_input_type=function(t){return this._input_type=t,this},Charcoal.Admin.Property.prototype.input_type=function(){return this._input_type},Charcoal.Admin.Property.prototype.set_val=function(t){return this._val=t,this},Charcoal.Admin.Property.prototype.val=function(){return this._val},Charcoal.Admin.Property.prototype.error=function(t){window.console.error(t)},Charcoal.Admin.Property_Input_File=function(t){this.EVENT_NAMESPACE=Charcoal.Admin.Property_Input_File.EVENT_NAMESPACE,this.input_type="charcoal/admin/property/input/file",Charcoal.Admin.Property.call(this,t),this.data=t.data,this.dialog=null,this.set_input_id(t.id).init()},Charcoal.Admin.Property_Input_File.EVENT_NAMESPACE=".charcoal.property.file",Charcoal.Admin.Property_Input_File.prototype=Object.create(Charcoal.Admin.Property.prototype),Charcoal.Admin.Property_Input_File.prototype.constructor=Charcoal.Admin.Property_Input_File,Charcoal.Admin.Property_Input_File.prototype.parent=Charcoal.Admin.Property.prototype,Charcoal.Admin.Property_Input_File.prototype.init=function(){this.input_id&&(this.$input=$("#"+this.input_id),this.$file=$("#"+this.data.file_input_id).or('input[type="file"]',this.$input),this.$hidden=$("#"+this.data.hidden_input_id).or('input[type="hidden"]',this.$input),this.$previewFile=this.$input.find(".js-preview-file"),this.$previewText=this.$input.find(".js-preview-text"),window.elFinderCallback||(window.elFinderCallback={}),this.set_listeners())},Charcoal.Admin.Property_Input_File.prototype.set_listeners=function(){void 0!==this.$input&&(this.$input.on("click"+this.EVENT_NAMESPACE,".js-remove-file",this.remove_file.bind(this)).on("click"+this.EVENT_NAMESPACE,".js-elfinder",this.load_elfinder.bind(this)),this.$file.on("change"+this.EVENT_NAMESPACE,this.change_file.bind(this)),window.elFinderCallback[this.input_id]=this.elfinder_callback.bind(this))},Charcoal.Admin.Property_Input_File.prototype.remove_file=function(t){t.preventDefault(),this.$hidden.val(""),this.$file.val(""),this.$previewFile.empty(),this.$previewText.empty(),this.$input.find(".hide-if-no-file").addClass("d-none"),this.$input.find(".show-if-no-file").removeClass("d-none")},Charcoal.Admin.Property_Input_File.prototype.change_file=function(t){this.$input.find(".hide-if-no-file").addClass("d-none"),this.$input.find(".show-if-no-file").removeClass("d-none"),this.$previewFile.empty(),this.$previewText.empty(),t.target&&t.target.files&&t.target.files[0]&&(t=t.target.files[0],console.log("[Property_Input_File.change_file]",t),this.$input.find(".hide-if-no-file").removeClass("d-none"),this.$input.find(".show-if-no-file").addClass("d-none"),this.$previewText.html(t.name))},Charcoal.Admin.Property_Input_File.prototype.load_elfinder=function(t){t.preventDefault(),this.dialog=BootstrapDialog.show({title:this.data.dialog_title||"",size:BootstrapDialog.SIZE_WIDE,cssClass:"-elfinder",message:$('')})},Charcoal.Admin.Property_Input_File.prototype.elfinder_callback=function(t){var e;this.dialog&&this.dialog.close(),this.$input.find(".hide-if-no-file").addClass("d-none"),this.$input.find(".show-if-no-file").removeClass("d-none"),this.$previewFile.empty(),this.$previewText.empty(),t&&t.url&&(e=decodeURI(t.url).replace(Charcoal.Admin.base_url(),""),console.log("[Property_Input_File.elfinder_callback]",t),this.$hidden.val(e),this.$input.find(".hide-if-no-file").removeClass("d-none"),this.$input.find(".show-if-no-file").addClass("d-none"),this.$previewText.html(t.name))},Charcoal.Admin.Property_Input_File.prototype.set_input_id=function(t){return this.input_id=t,this},Charcoal.Admin.Property_Input_File.prototype.set_input_name=function(t){return this.input_name=t,this},Charcoal.Admin.Property_Input_File.prototype.set_input_val=function(t){return this.input_val=t,this},Charcoal.Admin.Property_Input_File.prototype.destroy=function(){this.$input.off(this.EVENT_NAMESPACE),this.$file.off(this.EVENT_NAMESPACE)},function(s,n,y){"use strict";var l="[Property_Input_Audio_Recorder]",e=".charcoal.property.audio.recorder",a={CLICK:"click"+e},i=0,r=1,c=2,o=3,p=4,d=5,u=6,h=7,_=8,m=9,f=10,g=11,b=12,A=".js-recording-record",C=".js-recording-playback",v=".js-recording-stop",w=".js-recording-reset",L=".js-recording-visualizer",O=".js-recording-time-elapsed",F=".js-recording-time-duration",E="round",P="#EBEDF0",j="#DEE2E6",k=5,N=2,t=null,$=null;function T(t){this.EVENT_NAMESPACE=e,this.PROPERTY_IDLE=i,this.PROPERTY_READY=r,this.PROPERTY_LIVE=c,this.MODE_IDLE=o,this.MODE_PLAYBACK=p,this.MODE_CAPTURE=d,this.MEDIA_IDLE=u,this.MEDIA_LOCKED=h,this.MEDIA_BUSY=_,this.MEDIA_PAUSED=m,this.VISUAL_NONE=f,this.VISUAL_WAVEFORM=g,this.VISUAL_FREQUENCY=b,n.Property.call(this,t),this.data=t.data,this.data.id=t.id,this.readyState=i,this.mediaMode=o,this.mediaState=u,this.mediaVisual=f,this.status=null,this.mediaPromise=null,this.mediaStream=null,this.audioRecorder=null,this.audioContext=null,this.analyserNode=null,this.canvasElement=null,this.canvasContext=null,this.isFirefox=-1'+audioPropertyL10n.unsupportedElement+""),console.log("[Property_Input_Audio.elfinder_callback]",t),this.$hidden.val(e),this.$input.find(".hide-if-no-file").removeClass("d-none"),this.$input.find(".show-if-no-file").addClass("d-none"),this.$previewText.html(t.name),this.$previewFile.append(i))},Charcoal.Admin.Property_Input_ColorPicker=function(t){this.input_type="charcoal/admin/property/input/colorpicker",Charcoal.Admin.Property.call(this,t),this.input_id=null,this.colorpicker_selector=null,this.colorpicker_options=null,this.set_properties(t).create_colorpicker()},Charcoal.Admin.Property_Input_ColorPicker.prototype=Object.create(Charcoal.Admin.Property.prototype),Charcoal.Admin.Property_Input_ColorPicker.prototype.constructor=Charcoal.Admin.Property_Input_ColorPicker,Charcoal.Admin.Property_Input_ColorPicker.prototype.parent=Charcoal.Admin.Property.prototype,Charcoal.Admin.Property_Input_ColorPicker.prototype.set_properties=function(t){this.input_id=t.id||this.input_id,this.colorpicker_selector=t.data.colorpicker_selector||this.colorpicker_selector,this.colorpicker_options=t.data.colorpicker_options||this.colorpicker_options;return this.colorpicker_options=$.extend({},{},this.colorpicker_options),this},Charcoal.Admin.Property_Input_ColorPicker.prototype.create_colorpicker=function(){return $(this.colorpicker_selector).minicolors(this.colorpicker_options),this},Charcoal.Admin.Property_Input_DateTimePicker=function(t){this.input_type="charcoal/admin/property/input/datetimepicker",Charcoal.Admin.Property.call(this,t),this.input_id=null,this.datetimepicker_selector=null,this.datetimepicker_options=null,this.set_properties(t).create_datetimepicker()},Charcoal.Admin.Property_Input_DateTimePicker.prototype=Object.create(Charcoal.Admin.Property.prototype),Charcoal.Admin.Property_Input_DateTimePicker.prototype.constructor=Charcoal.Admin.Property_Input_DateTimePicker,Charcoal.Admin.Property_Input_DateTimePicker.prototype.parent=Charcoal.Admin.Property.prototype,Charcoal.Admin.Property_Input_DateTimePicker.prototype.set_properties=function(t){this.input_id=t.id||this.input_id,this.datetimepicker_selector=t.data.datetimepicker_selector||this.datetimepicker_selector,this.datetimepicker_options=t.data.datetimepicker_options||this.datetimepicker_options;return this.datetimepicker_options=$.extend({},{},this.datetimepicker_options),this},Charcoal.Admin.Property_Input_DateTimePicker.prototype.create_datetimepicker=function(){return $(this.datetimepicker_selector).datetimepicker(this.datetimepicker_options),this},Charcoal.Admin.Property_Input_DualSelect=function(t){this.input_type="charcoal/admin/property/input/dualselect",Charcoal.Admin.Property.call(this,t),this.input_id=null,this.dualselect_selector=null,this.dualselect_options={},this._dualselect=null,this.set_properties(t).init()},Charcoal.Admin.Property_Input_DualSelect.prototype=Object.create(Charcoal.Admin.Property.prototype),Charcoal.Admin.Property_Input_DualSelect.prototype.constructor=Charcoal.Admin.Property_Input_DualSelect,Charcoal.Admin.Property_Input_DualSelect.prototype.parent=Charcoal.Admin.Property.prototype,Charcoal.Admin.Property_Input_DualSelect.prototype.init=function(){this.create_dualselect()},Charcoal.Admin.Property_Input_DualSelect.prototype.set_properties=function(t){this.input_id=t.id||this.input_id,this.dualselect_selector=t.dualselect_selector||t.data.dualselect_selector||this.dualselect_selector,this.dualselect_options=t.dualselect_options||t.data.dualselect_options||this.dualselect_options;return t.data.dualselect_options.searchable&&(this.dualselect_options.search={left:this.dualselect_selector+"_searchLeft",right:this.dualselect_selector+"_searchRight"}),this.dualselect_options=$.extend({},{keepRenderingSort:!1},this.dualselect_options),this},Charcoal.Admin.Property_Input_DualSelect.prototype.create_dualselect=function(){return $(this.dualselect_selector).multiselect(this.dualselect_options),this},Charcoal.Admin.Property_Input_DualSelect.prototype.set_dualselect=function(t){return this._dualselect=t,this},Charcoal.Admin.Property_Input_DualSelect.prototype.dualselect=function(){return this._dualselect},Charcoal.Admin.Property_Input_DualSelect.prototype.destroy=function(){var t=this.dualselect();t&&t.remove()},Charcoal.Admin.Property_Input_Geometry_Widget=function(t){t.input_type="charcoal/admin/property/input/geometry-widget",Charcoal.Admin.Property.call(this,t);var e=this;this._controller=void 0,this._object_inc=0,this._startGeometry=!1,this._map_options=t.data.map_options,this._map_options.multiple=!1;var i={GOOGLE_MAP_LOADED:"google-map-loaded"+Charcoal.Admin.Property_Input_Geometry_Widget.EVENT_NAMESPACE};"undefined"==typeof google&&(!0!==window._geolocation_tmp_google&&(window._geolocation_tmp_google=!0,$.getScript("https://maps.googleapis.com/maps/api/js?sensor=false&callback=_geolocation_tmp_google_onload_function&key="+this._map_options.api_key,function(){}),window._geolocation_tmp_google_onload_function=function(){document.dispatchEvent(new Event(i.GOOGLE_MAP_LOADED))}),document.addEventListener(i.GOOGLE_MAP_LOADED,function(){e.init()},{once:!0}))},Charcoal.Admin.Property_Input_Geometry_Widget.EVENT_NAMESPACE=".geolocation",Charcoal.Admin.Property_Input_Geometry_Widget.prototype=Object.create(Charcoal.Admin.Property.prototype),Charcoal.Admin.Property_Input_Geometry_Widget.prototype.constructor=Charcoal.Admin.Property_Input_Geometry_Widget,Charcoal.Admin.Property_Input_Geometry_Widget.prototype.parent=Charcoal.Admin.Property.prototype,Charcoal.Admin.Property_Input_Geometry_Widget.prototype.init=function(){if(void 0!==window._tmp_google_onload_function&&delete window._tmp_google_onload_function,"undefined"==typeof BB||"undefined"==typeof google)return console.error("Plugins not loaded"),!1;void 0===this.opts().id&&console.error("Missing ID");var t=this.default_styles(),e=this.default_map_options(),e=$.extend(!0,e,this._map_options),i=this.element().find("input[type=hidden]").val();if(i){var o,r={object1:{ident:"object1",paths:this.reverse_translate_coords(i),editable:!0,draggable:!0,type:e.geometry_type,styles:t}},n={},a=0;for(o in r)a++,n[o]=r[o],n[o].styles=$.extend(r[o].styles,t);n&&(e.places=n),a&&(this._object_inc=a)}this.$map_maker=this.element().find(".js-map-maker"),this._controller=new window.BB.gmap.controller(this.element().find(".js-map-maker-map").get(0),e),this.controller().init().ready(function(t){t.fit_bounds(),t.remove_focus()}),this.controller().set_styles([{featureType:"poi",elementType:"all",stylers:[{visibility:"off"}]}]),this.controller().remove_focus(),this.link_related_property();for(var s=this,l=e.geometry_type,c=(s.hide_marker_toolbar(),"object"+s.object_index());s.controller().get_place(c);)c="object"+s.object_index();this.element().on("click",function(){var t=s.controller().export();if(t&&0!==Object.keys(t.places).length)return!1;if(!s._startGeometry)switch(s._startGeometry=!0,l){case"marker":case"line":case"polygon":s.controller().create_new(l,c)}}),this.element().on("click",".js-reset",function(t){s._startGeometry=!1,t.preventDefault(),s.controller().reset()})},Charcoal.Admin.Property_Input_Geometry_Widget.prototype.link_related_property=function(){var t,e=this.opts().data.related_property;if(!e)return!1;for(t in e)"charcoal/admin/object/geometry-blueprint"===e[t].obj_type&&this.related_object_geometry(t)},Charcoal.Admin.Property_Input_Geometry_Widget.prototype.related_object_geometry=function(t){var e=this.opts().data.related_property[t].obj_type;if(!e)return!1;var r=[],n=!1,a=this;$.ajax({url:Charcoal.Admin.admin_url()+"object/load",data:{obj_type:e},type:"GET",error:function(){},success:function(t){n=!0,r=t.collection}}),this.element().parents("fieldset").on("change",'[name="'+t+'"]',function(t){if(!n)return!1;for(var e in a.controller().reset(),r){var i,o;r[e].id===$(t.currentTarget).val()&&(e=r[e].geometry,i=a.default_styles(),o=a.default_map_options(),o=$.extend(!0,o,a._map_options),e={paths:a.reverse_translate_coords(e),editable:!0,draggable:!0,type:o.geometry_type,styles:i},a.controller().add_place("object1",e),a.controller().fit_bounds())}})},Charcoal.Admin.Property_Input_Geometry_Widget.prototype.controller=function(){return this._controller},Charcoal.Admin.Property_Input_Geometry_Widget.prototype.object_index=function(){return++this._object_inc},Charcoal.Admin.Property_Input_Geometry_Widget.prototype.default_styles=function(){return{strokeColor:"#000000",strokeOpacity:.8,strokeWeight:3,fillColor:"#ffffff",fillOpacity:.35,hover:{strokeColor:"#000000",strokeOpacity:1,strokeWeight:2,fillColor:"#ffffff",fillOpacity:.5},focused:{fillOpacity:.8}}},Charcoal.Admin.Property_Input_Geometry_Widget.prototype.default_map_options=function(){return{default_styles:this.default_styles(),use_clusterer:!1,map:{center:{x:45.3712923,y:-73.9820994},zoom:14,mapType:"roadmap",coordsType:"inpage",map_mode:"default"}}},Charcoal.Admin.Property_Input_Geometry_Widget.prototype.display_marker_toolbar=function(){this.$map_maker.addClass("is-header-open")},Charcoal.Admin.Property_Input_Geometry_Widget.prototype.hide_marker_toolbar=function(){this.$map_maker.removeClass("is-header-open")},Charcoal.Admin.Property_Input_Geometry_Widget.prototype.translate_coords=function(t){for(var e=0,i=t.length,o=[];e'),console.log("[Property_Input_Image.elfinder_callback]",t),this.$hidden.val(e),this.$input.find(".hide-if-no-file").removeClass("d-none"),this.$input.find(".show-if-no-file").addClass("d-none"),this.$previewText.html(t.name),this.$previewFile.append(i))},Charcoal.Admin.Property_Input_Map_Widget=function(t){t.input_type="charcoal/admin/property/input/map-widget",Charcoal.Admin.Property.call(this,t);var e=this;this._controller=void 0,this._object_inc=0,"undefined"==typeof google?(window._tmp_google_onload_function=function(){e.init()},$.getScript("https://maps.googleapis.com/maps/api/js?sensor=false&callback=_tmp_google_onload_function&key="+t.data.api_key,function(){})):e.init()},Charcoal.Admin.Property_Input_Map_Widget.prototype=Object.create(Charcoal.Admin.Property.prototype),Charcoal.Admin.Property_Input_Map_Widget.prototype.constructor=Charcoal.Admin.Property_Input_Map_Widget,Charcoal.Admin.Property_Input_Map_Widget.prototype.parent=Charcoal.Admin.Property.prototype,Charcoal.Admin.Property_Input_Map_Widget.prototype.init=function(){if(void 0!==window._tmp_google_onload_function&&delete window._tmp_google_onload_function,"undefined"==typeof BB||"undefined"==typeof google)return console.error("Plugins not loaded"),!1;var t=this.opts(),e=(void 0===t.id&&console.error("Missing ID"),{strokeColor:"#000000",strokeOpacity:.8,strokeWeight:3,fillColor:"#ffffff",fillOpacity:.35,hover:{strokeColor:"#000000",strokeOpacity:1,strokeWeight:2,fillColor:"#ffffff",fillOpacity:.5},focused:{fillOpacity:.8}}),i={default_styles:e,use_clusterer:!1,map:{center:{x:45.3712923,y:-73.9820994},zoom:14,mapType:"roadmap",coordsType:"inpage",map_mode:"default"}},i=$.extend(!0,i,t.data),t=this.element().find("input[type=hidden]").val();if(t){var o,r=JSON.parse(t),n={},a=0;for(o in r)a++,n[o]=r[o],n[o].styles=$.extend(r[o].styles,e);n&&(i.places=n),a&&(this._object_inc=a)}this.$map_maker=this.element().find(".js-map-maker"),this._controller=new window.BB.gmap.controller(this.element().find(".js-map-maker-map").get(0),i),this.controller().init().ready(function(t){t.fit_bounds(),t.remove_focus()}),this.controller().set_styles([{featureType:"poi",elementType:"all",stylers:[{visibility:"off"}]}]),this.controller().remove_focus();var s=this,l="object";this.element().on("change",'[name="'+this.opts("controls_name")+'"]',function(t){var e=$(t.currentTarget).val();switch(e){case"display_marker_toolbar":s.display_marker_toolbar();break;case"add_line":case"add_polygon":s.hide_marker_toolbar();for(var i=l+s.object_index();s.controller().get_place(i);)i=l+s.object_index();s.controller().create_new(e.replace("add_",""),i)}}),this.element().on("click",".js-add-marker",function(t){t.preventDefault();for(var e=l+s.object_index();s.controller().get_place(e);)e=l+s.object_index();s.controller().create_new("marker",e)}),this.element().on("click",".js-add_place_by_address",function(t){t.preventDefault();t=s.element().find(".js-address").text();if(!t)return!1;s.controller().add_place_by_address("object"+s.object_index(),t,{type:"marker",draggable:!0,editable:!0,loaded_callback:function(t){s.controller().map().setCenter(t.object().getPosition())}})}),this.element().on("click",".js-reset",function(t){t.preventDefault(),s.controller().reset()})},Charcoal.Admin.Property_Input_Map_Widget.prototype.controller=function(){return this._controller},Charcoal.Admin.Property_Input_Map_Widget.prototype.object_index=function(){return++this._object_inc},Charcoal.Admin.Property_Input_Map_Widget.prototype.display_marker_toolbar=function(){this.$map_maker.addClass("is-header-open")},Charcoal.Admin.Property_Input_Map_Widget.prototype.hide_marker_toolbar=function(){this.$map_maker.removeClass("is-header-open")},Charcoal.Admin.Property_Input_Map_Widget.prototype.save=function(){var t=this.controller().export(),t="object"==typeof t.places?t.places:{};return this.element().find("input[type=hidden]").val(JSON.stringify(t)),!0},Charcoal.Admin.Property_Input_Range=function(t){this.EVENT_NAMESPACE=Charcoal.Admin.Property_Input_Range.EVENT_NAMESPACE,Charcoal.Admin.Property.call(this,t),this.input_type="charcoal/admin/property/input/range",this.data=t.data,this.data.id=t.id,this.$output=null,this.$input=null,this.init()},Charcoal.Admin.Property_Input_Range.EVENT_NAMESPACE=".charcoal.property.range",Charcoal.Admin.Property_Input_Range.prototype=Object.create(Charcoal.Admin.Property.prototype),Charcoal.Admin.Property_Input_Range.prototype.constructor=Charcoal.Admin.Property_Input_Range,Charcoal.Admin.Property_Input_Range.prototype.parent=Charcoal.Admin.Property.prototype,Charcoal.Admin.Property_Input_Range.prototype.init=function(){if(!0===this.data.show_range_value&&"string"==typeof this.data.range_value_location){var t,e=this.id(),i=this.data.range_value_location;switch(i){case"prefix":this.$output=$("#"+e+"_prefix_text");break;case"suffix":this.$output=$("#"+e+"_suffix_text");break;default:"#"===i[0]||"."===i[0]?this.$output=$(i):this.$output=$("#"+e+"_"+i)}this.$output.addClass("js-show-range-value"),this.$input=$("#"+e),this.$input.exists()&&this.$output.exists()&&(this.on_change(this.$input,this.$output),t="oninput"in this.$input[0]?"input":"change",this.$input.on(t+this.EVENT_NAMESPACE,this.on_change.bind(this,this.$input,this.$output)))}},Charcoal.Admin.Property_Input_Range.prototype.on_change=function(t,e){e.text(e.text().replace(/[\d\.]+/,t.val()))},Charcoal.Admin.Property_Input_Range.prototype.destroy=function(){this.element().off(this.EVENT_NAMESPACE),this.$input&&this.$input.off(this.EVENT_NAMESPACE)},Charcoal.Admin.Property_Input_SelectPicker=function(t){Charcoal.Admin.Property.call(this,t),this.input_type="charcoal/admin/property/input/select",this.input_id=null,this.select_selector=null,this.select_options=null,this.set_properties(t).create_select()},Charcoal.Admin.Property_Input_SelectPicker.prototype=Object.create(Charcoal.Admin.Property.prototype),Charcoal.Admin.Property_Input_SelectPicker.prototype.constructor=Charcoal.Admin.Property_Input_SelectPicker,Charcoal.Admin.Property_Input_SelectPicker.prototype.parent=Charcoal.Admin.Property.prototype,Charcoal.Admin.Property_Input_SelectPicker.prototype.set_properties=function(t){this.input_id=t.id||this.input_id,this.select_selector=t.data.select_selector||this.select_selector,this.select_options=t.data.select_options||this.select_options;return this.select_options=$.extend({},{},this.select_options),this},Charcoal.Admin.Property_Input_SelectPicker.prototype.create_select=function(){return $(this.select_selector).selectpicker(this.select_options),this},function(){function t(t){Charcoal.Admin.Property.call(this,t),this.input_type="charcoal/admin/property/input/selectize",this.input_id=null,this.obj_type=null,this.remote_source=null,this.copy_items=!1,this.title=null,this.translations=null,this.pattern=null,this.multiple=!1,this.separator=",",this.selectize=null,this.selectize_selector=null,this.form_data={},this.form_ident=null,this.form_widget=null,this.selectize_options={},this.choice_obj_map={},this.selectize_property_ident=null,this.selectize_property=null,this.selectize_obj_type=null,this.selectize_templates={},this.clipboard=null,this.allow_update=null,this.set_properties(t).init(),this.selectize_init()}t.prototype=Object.create(Charcoal.Admin.Property.prototype),t.constructor=Charcoal.Admin.Property_Input_Selectize,t.parent=Charcoal.Admin.Property.prototype,t.prototype.init=function(){},t.prototype.selectize_init=function(){this.init_selectize(),this.init_clipboard(),this.init_allow_update(),this.init_allow_create();var e=this;this.selectize.on("update_item",function(t){e.create_item(null,t.callback,{id:t.value,step:0})})},t.prototype.set_properties=function(t){this.input_id=t.id||this.input_id,this.obj_type=t.data.obj_type||this.obj_type,this.remote_source=t.data.remote_source||this.remote_source,this.copy_items=t.data.copy_items||this.copy_items,this.allow_update=t.data.allow_update||this.allow_update,this.allow_create=t.data.allow_create||this.allow_create,this.title=t.data.title||this.title,this.dialog_title_update=t.data.dialog_title_update||this.dialog_title_update,this.dialog_title_create=t.data.dialog_title_create||this.dialog_title_create,this.translations=t.data.translations||this.translations,this.pattern=t.data.pattern||this.pattern,this.multiple=t.data.multiple||this.multiple,this.separator=t.data.multiple_separator||this.multiple_separator||",",this.form_data=t.data.form_data||this.form_data,this.form_ident=t.data.form_ident||this.form_ident,this.form_widget=t.data.form_widget||this.form_widget,this.selectize_selector=t.data.selectize_selector||this.selectize_selector,this.selectize_options=t.data.selectize_options||this.selectize_options,this.choice_obj_map=t.data.choice_obj_map||this.choice_obj_map,this.selectize_property_ident=t.data.selectize_property_ident||this.selectize_property_ident,this.selectize_property=t.data.selectize_property||this.selectize_property,this.selectize_obj_type=t.data.selectize_obj_type||this.selectize_obj_type,this.selectize_templates=t.data.selectize_templates||this.selectize_templates,this.$input=$(this.selectize_selector||"#"+this.input_id),t=this.multiple?{drag_drop:{},charcoal_item:{}}:{charcoal_item:{}};var e=this.obj_type,i=this.remote_source,o={plugins:t,formData:{},delimiter:this.separator,persist:!0,preload:"focus",openOnFocus:!0,labelField:"label",searchField:["value","label"],dropdownParent:this.$input.closest(".form-field"),render:{},onItemRemove:function(t){this.refreshOption(t)},createFilter:function(t){for(var e in this.options)if((e=this.options[e]).label===t)return!1;return!0},onInitialize:function(){var e=this;e.sifter.iterator(this.items,function(t){e.refreshItem(t,e.getItem(t))}),e.sifter.iterator(this.options,function(t){e.refreshOption(t.value)})}};if(this.selectize_templates.item&&(o.render.item=function(t,e){return t.item_render?''+t.item_render+"
":''+e(t[o.labelField])+"
"}),this.selectize_templates.option&&(o.render.option=function(t,e){return t.option_render?''+t.option_render+"
":''+e(t[o.labelField])+"
"}),i?(o.create=function(t){return{value:t,label:t}},o.load=this.load_from_remote.bind(this)):e?(o.create=this.create_item.bind(this),o.load=this.load_items.bind(this)):(o.plugins.create_on_enter={},o.create=function(t){return{value:t,label:t}}),this.selectize_options.splitOn){var r=this.selectize_options.splitOn;if("array"===$.type(r)){for(var n=r.length-1;0<=n;n--)switch(r[n]){case"comma":r[n]="\\s*,\\s*";break;case"tab":r[n]="\\t+";break;default:r[n]=r[n].replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}r=r.join("|")}this.selectize_options.splitOn=new RegExp(r)}return this.selectize_options=$.extend(!0,{},o,this.selectize_options),this},t.prototype.create_item=function(i,o,t){var r=this.form_data||{},n=this,e=this.obj_type,a=this.title,s=this.translations,l=this.selectize_options,c=(t=t||{}).step||0,p=this.form_ident,d=this.form_widget||"charcoal/admin/widget/quick-form",u=null,h=t.id||null,_=this.selectize_property,m=this.selectize_property_ident,f=this.selectize_obj_type,t=(h?this.dialog_title_update&&(a=this.dialog_title_update):this.dialog_title_create&&(a=this.dialog_title_create),p&&"object"==typeof p&&(!h&&p.create?(p=p.create,a+=" - "+s.statusTemplate.replaceMap({"[[ current ]]":1,"[[ total ]]":2}),c=1,u="Next"):h&&p.update?(p=p.update,2===c&&(a+=" - "+s.statusTemplate.replaceMap({"[[ current ]]":2,"[[ total ]]":2}),u="Finish")):p=null),$.isEmptyObject(l.formData)?(i&&(r[this.choice_obj_map.label]=i),r.form_ident=p,r.submit_label=u):i&&(r=$.extend({},l.formData),$.each(r,function(t,e){":input"===e&&(r[t]=i)})),{title:a,size:BootstrapDialog.SIZE_WIDE,cssClass:"-quick-form",dialog_options:{onhide:function(){void 0!==n.widget_id&&Charcoal.Admin.manager().destroy_component("widgets",n.widget_id),o({return:!1})}},widget_type:d,with_data:!0,widget_options:{obj_type:e,obj_id:h,form_data:r}}),y=(0',title:"Remove",className:"selectize-button-remove",append:!0},t),this.require("buttons");var e,i;"single"!==this.settings.mode&&(t=t,(i=e=this).addButton(e,t,function(t){t.preventDefault(),i.isLocked||(t=$(t.currentTarget).parent(),i.setActiveItem(t),i.deleteSelection()&&i.setCaret(i.items.length))}))}),Selectize.define("btn_update",function(t){t=$.extend({label:'',title:"Update",className:"selectize-button-update",append:!0},t),this.require("buttons");var e,i;"single"!==this.settings.mode&&(t=t,(i=e=this).addButton(e,t,function(t){t.preventDefault(),i.isLocked||(t=$(t.currentTarget).parent(),i.setActiveItem(t),i.trigger("update_item",{item:t,value:t.eq(0).data("value"),callback:function(t){t&&t.value&&(i.updateOption(t.value,t),i.refreshOption(t.value,t),i.refreshItem(t.value,i.getItem(t.value)))}}))}))}),Selectize.define("buttons",function(){this.buttonOffset=40,this.currentButtonOffset=0,this.addButton=function(r,t,e){var i,n=r,a='/g,">").replace(/"/g,""")+'" style="right:'+n.currentButtonOffset+'px">'+t.label+"";n.currentButtonOffset+=n.buttonOffset;r.setup=(i=n.setup,function(){var o;t.append&&(o=n.settings.render.item,n.settings.render.item=function(){return t=o.apply(r,arguments),e=n.currentButtonOffset,i=$(t),e=i.hasClass("item")?(i.css("padding-right",e+8+"px"),i[0]):t,i=a,(t=$(e)).hasClass("item")?(t.append($(i)),t[0]):e;var t,e,i}),i.apply(r,arguments),r.$control.on("mousedown","."+t.className,function(t){t.preventDefault(),n.$control.data("ui-sortable")&&(n.$control.sortable("disable"),$(document).on("mouseup.sortable",function(){$(document).off("mouseup.sortable"),n.$control.sortable("enable")}))}),r.$control.on("click","."+t.className,function(t){"function"==typeof e&&e(t)})})}}),Selectize.define("create_on_blur",function(){var t,e;"multi"===this.settings.mode&&((t=this).onBlur=(e=t.onBlur,function(){return""!==this.$control_input.val().trim()&&t.createItem(this.$control_input.val()),e.apply(this,arguments)}))}),Selectize.define("create_on_enter",function(){var e,i;"multi"===this.settings.mode&&((e=this).onKeyUp=(i=e.onKeyUp,function(t){return 13===t.keyCode&&""!==this.$control_input.val().trim()&&e.createItem(this.$control_input.val()),i.apply(this,arguments)}))}),Selectize.define("charcoal_item",function(o){o=$.extend({classField:"class",colorField:"color"},o);var r=this,n=null;this.refreshItem=function(t,e){var i=r.options[t];if(i.hasOwnProperty(o.colorField)&&i[o.colorField]&&(e.addClass("has-color"),e.css("border-left-color",i[o.colorField])),i.hasOwnProperty(o.classField)&&e.addClass(i[o.classField]),n)return n.apply(this,arguments)},this.refreshOption=function(t){var e=r.options[t],i=(r.refreshOptions(!1),r.getElementWithValue(t,r.$dropdown_content.find(".option")));if(e.hasOwnProperty(o.colorField)&&e[o.colorField]&&(i.addClass("has-color"),i.css("border-left-color",e[o.colorField])),n)return n.apply(this,arguments)},this.settings.onOptionAdd=(n=null,r.settings.hasOwnProperty("onOptionAdd")&&(n=r.settings.onOptionAdd),r.refreshOption),this.settings.onItemAdd=(n=null,r.settings.hasOwnProperty("onItemAdd")&&(n=r.settings.onItemAdd),r.refreshItem)}),function(){function t(t){this.input_type="charcoal/admin/property/input/selectize/list",this.input_id=null,this.obj_type=null,this.copy_items=!1,this.title=null,this.translations=null,this.pattern=null,this.multiple=!1,this.separator=",",this.selectize=null,this.selectize_selector=null,this.form_ident=null,this.selectize_options={},this.clipboard=null,this.allow_update=!1,this.set_properties(t).init()}t.prototype=Object.create(Charcoal.Admin.Property_Input_Selectize.prototype),t.constructor=Charcoal.Admin.Property_Input_Selectize,t.parent=Charcoal.Admin.Property_Input_Selectize.prototype,t.prototype.set_properties=function(t){this.input_id=t.id||this.input_id,this.obj_type=t.data.obj_type||this.obj_type,this.copy_items=t.data.copy_items||this.copy_items,this.allow_update=t.data.allow_update||this.allow_update,this.title=t.data.title||this.title,this.translations=t.data.translations||this.translations,this.pattern=t.data.pattern||this.pattern,this.multiple=t.data.multiple||this.multiple,this.separator=t.data.multiple_separator||this.multiple_separator||",",this.form_ident=t.data.form_ident||this.form_ident,this.selectize_selector=t.data.selectize_selector||this.selectize_selector,this.selectize_options=t.data.selectize_options||this.selectize_options,this.$input=$(this.selectize_selector||"#"+this.input_id),t=this.multiple?{drag_drop:{},charcoal_item:{}}:{charcoal_item:{}};var e=this.obj_type,t={plugins:t,formData:{},delimiter:this.separator,persist:!0,preload:"focus",openOnFocus:!0,searchField:["value","label"],dropdownParent:this.$input.closest(".form-field"),createFilter:function(t){for(var e in this.options)if((e=this.options[e]).label===t)return!1;return!0},onInitialize:function(){var i=this;i.sifter.iterator(this.items,function(t){var e=i.options[t],t=i.getItem(t);e.color&&t.css("background-color",e.color)})}};if(e?(t.create=this.create_item.bind(this),t.load=this.load_items.bind(this)):(t.plugins.create_on_enter={},t.create=function(t){return{value:t,label:t}}),this.selectize_options.splitOn){var i=this.selectize_options.splitOn;if("array"===$.type(i)){for(var o=i.length-1;0<=o;o--)switch(i[o]){case"comma":i[o]="\\s*,\\s*";break;case"tab":i[o]="\\t+";break;default:i[o]=i[o].replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}i=i.join("|")}this.selectize_options.splitOn=new RegExp(i)}return this.selectize_options=$.extend(!0,{},t,this.selectize_options),this},Charcoal.Admin.Property_Input_Selectize_List=t}((jQuery,document)),Charcoal.Admin.Property_Input_Selectize_Tags=function(t){this.input_type="charcoal/admin/property/input/selectize/tags",this.input_id=null,this.obj_type=null,this.copy_items=!1,this.title=null,this.multiple=!1,this.separator=",",this._tags=null,this.form_widget=null,this.selectize=null,this.selectize_selector=null,this.selectize_options={},this.clipboard=null,this.set_properties(t).init()},Charcoal.Admin.Property_Input_Selectize_Tags.prototype=Object.create(Charcoal.Admin.Property.prototype),Charcoal.Admin.Property_Input_Selectize_Tags.prototype.constructor=Charcoal.Admin.Property_Input_Selectize_Tags,Charcoal.Admin.Property_Input_Selectize_Tags.prototype.parent=Charcoal.Admin.Property.prototype,Charcoal.Admin.Property_Input_Selectize_Tags.prototype.init=function(){if("function"!=typeof $.fn.sortable)return Charcoal.Admin.loadScript("https://ajax.googleapis.com/ajax/libs/jqueryui/1.13.2/jquery-ui.min.js",this.init.bind(this)),this;this.init_selectize(),this.init_clipboard()},Charcoal.Admin.Property_Input_Selectize_Tags.prototype.set_properties=function(t){this.input_id=t.id||this.input_id,this.obj_type=t.data.obj_type||this.obj_type,this.copy_items=t.data.copy_items||this.copy_items,this.title=t.data.title||this.title,this.multiple=t.data.multiple||this.multiple,this.separator=t.data.multiple_separator||this.multiple_separator||",",this.form_widget=t.data.form_widget||this.form_widget,this.selectize_selector=t.data.selectize_selector||this.selectize_selector,this.selectize_options=t.data.selectize_options||this.selectize_options,this.$input=$(this.selectize_selector||"#"+this.input_id),t=this.multiple?["remove_button","drag_drop","charcoal_item"]:["charcoal_item"];var e=this.obj_type,t={plugins:t,formData:{},delimiter:this.separator,persist:!1,preload:!0,openOnFocus:!0,dropdownParent:this.$input.closest(".form-field"),createFilter:function(t){for(var e in this.options)if((e=this.options[e]).text===t)return!1;return!0},onInitialize:function(){var i=this;i.sifter.iterator(this.items,function(t){var e=i.options[t],t=i.getItem(t);e.color&&t.css("background-color",e.color)})}};if(e?(t.create=this.create_tag.bind(this),t.load=this.load_tags.bind(this)):(t.plugins.push("create_on_enter"),t.create=function(t){return{value:t,text:t}}),this.selectize_options=$.extend({},t,this.selectize_options),this.selectize_options.splitOn){var i=this.selectize_options.splitOn;if("array"===$.type(i)){for(var o=i.length-1;0<=o;o--)switch(i[o]){case"comma":i[o]="\\s*,\\s*";break;case"tab":i[o]="\\t+";break;default:i[o]=i[o].replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}i=i.join("|")}this.selectize_options.splitOn=new RegExp(i)}return this},Charcoal.Admin.Property_Input_Selectize_Tags.prototype.create_tag=function(i,o){var e=this.obj_type,r=this.id,t=this.title,n=this.selectize_options,a=this.form_widget||"charcoal/admin/widget/quick-form",s={},n=($.isEmptyObject(n.formData)?s={name:i}:(s=$.extend({},n.formData),$.each(s,function(t,e){":input"===e&&(s[t]=i)})),{title:t,size:BootstrapDialog.SIZE_WIDE,cssClass:"-quick-form",dialog_options:{onhide:function(){o({return:!1})}},widget_type:a,widget_options:{obj_type:e,obj_id:r,form_data:s}}),l=this.dialog(n,function(t){if(t.success){if(!t.widget_id)return!1;Charcoal.Admin.manager().add_widget({id:t.widget_id,type:a,data:{obj_type:e},obj_id:r,save_callback:function(t){var e=t.obj.id;"name"in t.obj&&t.obj.name&&(e=t.obj.name[Charcoal.Admin.lang()]||t.obj.name),o({value:t.obj.id,text:e,color:t.obj.color,class:"new"}),l.close()}})}})},Charcoal.Admin.Property_Input_Selectize_Tags.prototype.load_tags=function(t,r){var e=this.obj_type;if(!t.length)return r();$.ajax({url:Charcoal.Admin.admin_url()+"object/load",data:{obj_type:e},type:"GET",error:function(){r()},success:function(t){var e=[];for(i in t.collection){var i,o=(i=t.collection[i]).id;"name"in i&&i.name&&(o=i.name[Charcoal.Admin.lang()]||i.name),e.push({value:i.id,text:o,color:i.color})}r(e)}})},Charcoal.Admin.Property_Input_Selectize_Tags.prototype.dialog=Charcoal.Admin.Widget.prototype.dialog,Charcoal.Admin.Property_Input_Selectize_Tags.prototype.onKeyDown=function(t){var e=this,i=!1,o=/Mac/.test(navigator.userAgent);if(e.isLocked&&9!==t.keyCode&&t.preventDefault(),"undefined"===$.type(e.isCmdDown)&&(i=!0,e.isCmdDown=t[o?"metaKey":"ctrlKey"]),e.isCmdDown&&67===t.keyCode){if(i&&(e.isCmdDown=void 0),e.$activeItems.length)for(var r=[],n=0,a=e.$activeItems.length;n{var e=t.getData();if(void 0!==e.active){const i=t.getElement();!0!==e.active?i.style.backgroundColor="#FFEFEF":i.style.backgroundColor=null}},footerElement:this.tabulator_selector+"-tabulator-footer"},"function"==typeof t.pre_tabulator_options&&t.pre_tabulator_options.apply(this),this.tabulator_options=Object.assign({},i,this.tabulator_options),"function"==typeof t.post_tabulator_options&&t.post_tabulator_options.apply(this),this.parse_tabulator_options(),this;console.error("Tabulator input element or selector not defined")}},a.Admin.Property_Input_Tabulator.prototype.parse_tabulator_options=function(){if("newRowData"===this.tabulator_options?.tabEndNewRow&&(this.tabulator_options.tabEndNewRow=this.input_options.newRowData||!0),this.tabulator_options?.autoColumns)!this.tabulator_options?.autoColumnsDefinitions&&(this.tabulator_options?.columns||this.input_options?.defaultColumnTemplate||this.input_options?.autoColumnTemplates)&&(this.tabulator_options.autoColumnsDefinitions=t=>{Array.isArray(this.tabulator_options?.columns)&&(t=t.filter(({field:e})=>!this.tabulator_options.columns.some(({field:t})=>e===t)),t=this.tabulator_options.columns.concat(t));const n=this.input_options?.defaultColumnTemplate||{},a=this.input_options?.autoColumnTemplates;if(!n&&!a)return t;const s="number"==typeof this.input_options?.autoColumnStartIndex;return t.map(e=>{const i=e.field;if(void 0!==i){if(a)for(const r in a){let t;try{t=l(r)}catch(t){console.error("[Charcoal.Property.Tabulator]","Bad autoColumnTemplates key:",r,t);break}var o=a[r];t instanceof RegExp?t.test(i)&&((e=Object.assign({},e,n,o)).title=i.replace(t,o.title),e.field=i.replace(t,o.field),s&&e.autoColumnStartIndex&&(this.input_options.autoColumnStartIndex=parseInt(i.replace(t,e.autoColumnStartIndex))),delete e.autoColumnStartIndex):t===i&&((e=Object.assign({},e,n,o)).title=o.title,e.field=o.field)}else n&&(e=Object.assign({},e,n));e=this.parse_tabulator_column_definition(e)}return e})});else if(this.tabulator_options?.columns)if(this.input_options?.defaultColumnTemplate){const e=this.input_options.defaultColumnTemplate;this.tabulator_options.columns=this.tabulator_options.columns.map(t=>(t=Object.assign({},e,t),t=this.parse_tabulator_column_definition(t)))}else this.tabulator_options.columns=this.tabulator_options.columns.map(t=>this.parse_tabulator_column_definition(t));Array.isArray(this.tabulator_options?.groupContextMenu)&&(this.tabulator_options.groupContextMenu=this.tabulator_options.groupContextMenu.map(t=>this.parse_tabulator_column_menu_item(t))),Array.isArray(this.tabulator_options?.rowContextMenu)&&(this.tabulator_options.rowContextMenu=this.tabulator_options.rowContextMenu.map(t=>this.parse_tabulator_row_menu_item(t)))},a.Admin.Property_Input_Tabulator.prototype.parse_tabulator_column_definition=function(t){if(Array.isArray(t?.clickMenu)&&(t.clickMenu=t.clickMenu.map(t=>this.parse_tabulator_cell_menu_item(t))),Array.isArray(t?.contextMenu)&&(t.contextMenu=t.contextMenu.map(t=>this.parse_tabulator_cell_menu_item(t))),Array.isArray(t?.headerContextMenu)&&(t.headerContextMenu=t.headerContextMenu.map(t=>this.parse_tabulator_column_menu_item(t))),Array.isArray(t?.headerMenu)&&(t.headerMenu=t.headerMenu.map(t=>this.parse_tabulator_column_menu_item(t))),"string"==typeof t?.cellClick&&(t.cellClick=this.parse_tabulator_cell_click_action(t.cellClick)),"string"==typeof t?.formatterIcon){const e=t.formatterIcon;delete t.formatterIcon,t.formatter=()=>``}return t},a.Admin.Property_Input_Tabulator.prototype.parse_tabulator_cell_click_action=function(t){switch(t){case"addRow":return(t,e)=>{this.add_row(e.getRow()),this.update_input_data()};case"removeRow":return(t,e)=>{this.tabulator_instance.deleteRow(e.getRow()),this.update_input_data()};case"toggleCell":return(t,e)=>{e.setValue(!e.getValue())}}return null},a.Admin.Property_Input_Tabulator.prototype.parse_tabulator_cell_menu_item=function(t){return"string"==typeof t?.action&&"function"==typeof i[t.action]&&(t.action=i[t.action].bind(this)),t},a.Admin.Property_Input_Tabulator.prototype.parse_tabulator_column_menu_item=function(t){return"string"==typeof t?.action&&"function"==typeof o[t.action]&&(t.action=o[t.action].bind(this)),t},a.Admin.Property_Input_Tabulator.prototype.parse_tabulator_row_menu_item=function(t){return"string"==typeof t?.action&&"function"==typeof n[t.action]&&(t.action=n[t.action].bind(this)),t},a.Admin.Property_Input_Tabulator.prototype.set_events=function(){e(`.js-${this.input_id}-add-col`).on("click.charcoal.tabulator",()=>{this.add_col(),this.update_input_data()}),e(`.js-${this.input_id}-add-row`).on("click.charcoal.tabulator",()=>{this.add_row(),this.update_input_data()}),e(`.js-${this.input_id}-history-undo`).on("click.charcoal.tabulator",()=>{this.tabulator_instance.undo(),this.update_input_data()}),e(`.js-${this.input_id}-history-redo`).on("click.charcoal.tabulator",()=>{this.tabulator_instance.redo(),this.update_input_data()})},a.Admin.Property_Input_Tabulator.prototype.new_col_data=function(){let t=this.input_options.newColumnData;var e,i=this.input_options?.defaultColumnTemplate||{};return"string"==typeof t?this.input_options?.autoColumnTemplates[t]&&(e=this.input_options.autoColumnTemplates[t],t=Object.assign({},i,e),"number"==typeof this.input_options?.autoColumnStartIndex&&(e=++this.input_options.autoColumnStartIndex,t.title=t.title.replace("$1",e),t.field=t.field.replace("$1",e),delete t.autoColumnStartIndex)):t=Object.assign({},i,t),t=this.parse_tabulator_column_definition(t),Array.isArray(t)?[...t]:Object.assign({},t)},a.Admin.Property_Input_Tabulator.prototype.new_row_data=function(){var t=this.input_options?.newRowData||{};return Array.isArray(t)?[...t]:Object.assign({},t)},a.Admin.Property_Input_Tabulator.prototype.add_col=function(t=null){const e=this.tabulator_instance.addColumn(this.new_col_data(),void 0,t);this.input_options?.columnsManipulateData&&e.then(t=>{const i=t.getField();this.tabulator_instance.getRows().forEach(t=>{const e=t.getData();void 0===e[i]&&(e[i]=this.input_options?.newRowData?.[i]??"",t.update(e))})})},a.Admin.Property_Input_Tabulator.prototype.add_row=function(t=null){this.tabulator_instance.setHeight(),this.tabulator_instance.addRow(this.new_row_data(),void 0,t)},a.Admin.Property_Input_Tabulator.prototype.delete_column=function(t){if("string"!=typeof t||(t=this.tabulator_instance.getColumn(t))){const i=t.getField(),e=t.delete();this.input_options?.columnsManipulateData&&e.then(()=>{this.tabulator_instance.getRows().forEach(t=>{const e=t.getData();void 0!==e[i]&&(delete e[i],t.update(e))})})}else console.error("[Charcoal.Property.Tabulator]","Column does not exist:",t)},a.Admin.Property_Input_Tabulator.prototype.update_input_data=function(){try{var t=this.get_table_data(),e=JSON.stringify(t);this.tabulator_input.value=e}catch(t){console.warn("[Charcoal.Property.Tabulator]","Could not update input value:",t),a.Admin.feedback([{level:"error",message:commonL10n.errorTemplate.replaceMap({"[[ errorMessage ]]":this.property_label,"[[ errorThrown ]]":tabulatorWidgetL10n.data.badOutput})}]).dispatch()}},a.Admin.Property_Input_Tabulator.prototype.get_input_data=function(){try{var t=this.tabulator_input.value.trim();return t?JSON.parse(t):[]}catch(t){console.warn("[Charcoal.Property.Tabulator]","Could not retrieve input value:",t),a.Admin.feedback([{level:"error",message:commonL10n.errorTemplate.replaceMap({"[[ errorMessage ]]":this.property_label,"[[ errorThrown ]]":tabulatorWidgetL10n.data.badInput})}]).dispatch()}return[]},a.Admin.Property_Input_Tabulator.prototype.get_table_data=function(){return this.tabulator_instance.getData(this.input_options?.storableRowRange)},a.Admin.Property_Input_Tabulator.prototype.validate_table=function(){return this.tabulator_instance?.validate()},a.Admin.Property_Input_Tabulator.prototype.create_tabulator=function(){this.tabulator_instance=new r(this.tabulator_selector+"-tabulator",{data:this.get_input_data(),...this.tabulator_options});var t,e,i=()=>this.update_input_data();this.tabulator_instance.on("columnMoved",i),this.tabulator_instance.on("dataChanged",i),this.tabulator_instance.on("rowMoved",i);for([t,e]of this.tabulator_events)this.tabulator_instance.on(t,e);if(Array.isArray(this.input_options?.validateOn)){const o=()=>{try{this.validate_table()}catch(t){console.warn("[Charcoal.Property.Tabulator]","Could not validate table on callback:",t)}};this.input_options.validateOn.forEach(t=>{"string"!=typeof t&&console.error("[Charcoal.Property.Tabulator]","Invalid validateOn callback:",t),this.tabulator_instance.on(t,o)})}return this},a.Admin.Property_Input_Tabulator.prototype.will_validate=function(t){return t&&e.contains(t.element()[0],this.element()[0])},a.Admin.Property_Input_Tabulator.prototype.validate=function(){const t=this.tabulator_instance.validate();if(!0===t)return!0;const n=s.querySelector('label[for="'+this.input_id.replace(/_[a-z]{2}$/,"")+'"]').textContent;return t.forEach(t=>{const e=t.getRow();var i=e.getIndex()??e.getPosition(!0)+1;const o=`${n||this.tabulator_input.name} #`+i,r=t._getSelf().modules.validate.invalid??[];r.forEach(t=>{t=t.parameters?.validationMessage??c(t)??formWidgetL10n.validation.badInput;a.Admin.feedback([{level:"error",message:commonL10n.errorTemplate.replaceMap({"[[ errorMessage ]]":o,"[[ errorThrown ]]":t})}])})}),!1};const i={deleteColumn:function(t,e){this.delete_column(e.getColumn()),this.update_input_data()},deleteRow:function(t,e){e.getRow().delete(),this.update_input_data()},insertColumn:function(t,e){this.add_col(e.getColumn()),this.update_input_data()},insertRow:function(t,e){this.add_row(e.getRow()),this.update_input_data()}},o={deleteColumn:function(t,e){this.delete_column(e),this.update_input_data()},insertColumn:function(t,e){this.add_col(e),this.update_input_data()}},n={deleteRow:function(t,e){e.delete(),this.update_input_data()},insertRow:function(t,e){this.add_row(e),this.update_input_data()}},l=t=>{const e=t.match(/^\/(.*)\/([a-z]*)$/);return e?new RegExp(e[1],-1===e[2].indexOf("i")?"":"i"):t},c=t=>{switch(t.type){case"integer":case"float":case"numeric":return formWidgetL10n.validation.typeMismatchNumber;case"string":return formWidgetL10n.validation.typeMismatch;case"max":return formWidgetL10n.validation.rangeOverflow.replace("{{ max }}",t.parameters);case"min":return formWidgetL10n.validation.rangeUnderflow.replace("{{ min }}",t.parameters);case"starts":return formWidgetL10n.validation.patternMismatchWithStart.replace("{{ format }}",t.parameters);case"ends":return formWidgetL10n.validation.patternMismatchWithEnd.replace("{{ format }}",t.parameters);case"maxLength":return formWidgetL10n.validation.tooLong.replace("{{ max }}",t.parameters);case"minLength":return formWidgetL10n.validation.tooShort.replace("{{ min }}",t.parameters);case"in":return formWidgetL10n.validation.valueMissingSelect;case"regex":return formWidgetL10n.validation.patternMismatch;case"unique":return formWidgetL10n.validation.notUnique;case"required":return formWidgetL10n.validation.valueMissing}return null}}(Charcoal,jQuery,document,Tabulator),Charcoal.Admin.Property_Input_Text=function(t){return Charcoal.Admin.Property.call(this,t),this.input_type="charcoal/admin/property/input/text",this.data=t.data,this.set_input_id(t.id),this.set_data(this.data),this.multiple_initialized=!1,this.initialisation=!0,this.init(),this.initialisation=!1,this},Charcoal.Admin.Property_Input_Text.prototype=Object.create(Charcoal.Admin.Property.prototype),Charcoal.Admin.Property_Input_Text.prototype.constructor=Charcoal.Admin.Property_Input_Text,Charcoal.Admin.Property_Input_Text.prototype.parent=Charcoal.Admin.Property.prototype,Charcoal.Admin.Property_Input_Text.prototype.set_data=function(t){this.set_input_name(t.input_name),this.set_input_val(t.input_val),this.set_readonly(t.readonly),this.set_required(t.required),this.set_min_length(t.min_length),this.set_max_length(t.max_length),this.set_size(t.size),this.set_multiple(t.multiple),this.set_multiple_separator(t.multiple_separator);var e=t.multiple_options?t.multiple_options.min:0,i=t.multiple_options?t.multiple_options.max:0,e=(this.set_multiple_min(e),this.set_multiple_max(i),t.multiple_options?t.multiple_options.split_on:null);return this.set_split_on(e),this},Charcoal.Admin.Property_Input_Text.prototype.init=function(){if(!this.input_id)return this;this.$input=$("#"+this.input_id),this.multiple&&!this.multiple_initialized&&this.init_multiple()},Charcoal.Admin.Property_Input_Text.prototype.init_multiple=function(){if(this.multiple_initialized=!0,this.chars_new=[13],this.chars_remove=[8,46],this.char_next=[40],this.char_prev=[38],this.currentValAmount=1,this.$container=this.$input.parent("div"),this.bind_keyboard_events(this.$input),this.split_val(this.$input),this.multiple_min)for(var t=this.multiple_min-this.currentValAmount;0i.multiple_min)&&""===$(this).val()&&(t.preventDefault(),i.remove_item($(this))),-1");return e&&l.attr("type",e),i&&l.attr("class",i),o&&l.attr("minlength",o),r&&l.attr("maxlength",r),n&&l.attr("required","required"),a&&l.attr("readonly","readonly"),t&&l.val(t),l.attr("name",s),l},Charcoal.Admin.Property_Input_Text.prototype.set_input_id=function(t){return this.input_id=t,this},Charcoal.Admin.Property_Input_Text.prototype.set_input_name=function(t){return this.input_name=t,this},Charcoal.Admin.Property_Input_Text.prototype.set_input_val=function(t){return this.input_val=t,this},Charcoal.Admin.Property_Input_Text.prototype.set_readonly=function(t){return this.readonly=t=t||!1,this},Charcoal.Admin.Property_Input_Text.prototype.set_required=function(t){return this.required=t=t||!1,this},Charcoal.Admin.Property_Input_Text.prototype.set_min_length=function(t){return this.min_length=t=t||0,this},Charcoal.Admin.Property_Input_Text.prototype.set_max_length=function(t){return this.max_length=t=t||0,this},Charcoal.Admin.Property_Input_Text.prototype.set_size=function(t){return this.size=t=t||0,this},Charcoal.Admin.Property_Input_Text.prototype.set_multiple=function(t){return this.multiple=t=t||!1,this},Charcoal.Admin.Property_Input_Text.prototype.set_multiple_min=function(t){return this.multiple_min=t=t||!1,this},Charcoal.Admin.Property_Input_Text.prototype.set_multiple_max=function(t){return this.multiple_max=t=t||!1,this},Charcoal.Admin.Property_Input_Text.prototype.set_multiple_separator=function(t){return this.multiple_separator=t=t||",",this},Charcoal.Admin.Property_Input_Text.prototype.set_split_on=function(t){if(t){if("array"===$.type(t)){for(var e=t.length-1;0<=e;e--)switch(t[e]){case"comma":t[e]="\\s*,\\s*";break;case"tab":t[e]="\\t+";break;case"newline":t[e]="[\\n\\r]+";break;default:t[e]=t[e].replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}t=t.join("|")}t=new RegExp(t)}else t=this.multiple_separator;return this.split_on=t,this},Charcoal.Admin.Property_Input_Text.prototype.destroy=function(){},$(document).on("focusin",function(t){$(t.target).closest(".tox-tinymce-aux, .moxman-window, .tam-assetmanager-root").length&&t.stopImmediatePropagation()}),Charcoal.Admin.Property_Input_Tinymce=function(t){Charcoal.Admin.Property.call(this,t),this.input_type="charcoal/admin/property/input/tinymce",this.input_id=null,this.data=t.data,this.editor_options=null,this._editor=null,window.elFinderCallback||(window.elFinderCallback={}),this.set_properties(t),this.init()},Charcoal.Admin.Property_Input_Tinymce.prototype=Object.create(Charcoal.Admin.Property.prototype),Charcoal.Admin.Property_Input_Tinymce.prototype.constructor=Charcoal.Admin.Property_Input_Tinymce,Charcoal.Admin.Property_Input_Tinymce.prototype.parent=Charcoal.Admin.Property.prototype,Charcoal.Admin.Property_Input_Tinymce.prototype.init=function(){this.create_tinymce(),this.bind_events()},Charcoal.Admin.Property_Input_Tinymce.prototype.bind_events=function(){var r=this,t=this.element(),t=(t.on("invalid",function(t){var e=r.editor(),t=t.target;if(e&&t){var i,o=t.validity;for(i in o)if("valid"!==i&&o[i]&&formWidgetL10n.validation[i])return void e.notificationManager.open({text:formWidgetL10n.validation[i],type:"error"})}}),t.closest(".modal-open .modal"));(t=t.length?t:$(document)).on("scroll",Charcoal.Admin.debounce(function(){var t=r.editor();t&&t.notificationManager.getNotifications().forEach(function(t){t.moveRel()})},50))},Charcoal.Admin.Property_Input_Tinymce.prototype.base_url=function(){return Charcoal.Admin.base_url()+"assets/admin/tinymce"},Charcoal.Admin.Property_Input_Tinymce.prototype.set_properties=function(t){this.input_id=t.input_id||this.input_id,this.editor_options=t.editor_options||t.data.editor_options||this.editor_options,window.elFinderCallback[this.input_id]=this.elfinder_callback.bind(this);var t=Charcoal.Admin.locale().match(/([a-zA-Z]{2})(_|-)([a-zA-Z]{2})/)[0]||"en",r={language:t=(t=t.replace("-","_")).match(/en_/)?"en":t,plugins:["advlist","autolink","autoresize","charcoal","charmap","code","fullscreen","hr","image","link","lists","media","nonbreaking","noneditable","paste","placeholder","quickbars","searchreplace","tabfocus","table","visualblocks","visualchars","wordcount"],toolbar:["undo redo","styleselect","bold italic","alignleft aligncenter alignright alignjustify","bullist numlist","outdent indent","link image"].join(" | "),contextmenu:["link linkchecker image imagetools table"].join(" | "),browser_spellcheck:!0,end_container_on_empty_block:!0,entity_encoding:"raw",allow_conditional_comments:!0,forced_root_block:"p",allow_script_urls:!1,document_base_url:Charcoal.Admin.base_url(),relative_urls:!0,remove_script_host:!1,min_height:"150px",max_height:"400px",file_picker_callback:$.proxy(this.elfinder_browser,null,this),image_advtab:!0,importcss_append:!0,media_alt_source:!1,nonbreaking_force_tab:!1,paste_data_images:!0,paste_as_text:!0,paste_merge_formats:!0,root_lang_attr:$("#"+this.input_id).closest("[data-lang]").data("lang"),table_grid:!0,table_tab_navigation:!0,visualblocks_default_state:!1,automatic_uploads:!0,images_upload_url:"tinymce/upload/image"};return"plugins"in r&&"plugins"in this.editor_options&&("string"===$.type(this.editor_options.plugins)&&(this.editor_options.plugins=this.editor_options.plugins.split(" ")),$.each(this.editor_options.plugins,function(t,e){var i,o=0===e.indexOf("!");if(o&&(e=e.slice(1)),o)for(;-1<(i=r.plugins.indexOf(e));)delete r.plugins[i];else-1===r.plugins.indexOf(e)&&r.plugins.push(e)}),delete this.editor_options.plugins),this.editor_options=$.extend({},r,this.editor_options),this.editor_options.selector="#"+this.input_id,this.editor_options.setup=function(t){t.on("change",function(){window.tinymce.triggerSave()})},this},Charcoal.Admin.Property_Input_Tinymce.prototype.create_tinymce=function(){var t,e=this;if("object"!=typeof window.tinyMCE)return t=this.base_url()+"/tinymce.min.js",Charcoal.Admin.loadScript(t,this.create_tinymce.bind(this)),this;window.tinyMCE.dom.Event.domLoaded=!0,window.tinyMCE.baseURI=new window.tinyMCE.util.URI(this.base_url()),window.tinyMCE.baseURL=this.base_url(),window.tinyMCE.suffix=".min",window.tinyMCE.PluginManager.get(this.input_id)||(window.tinyMCE.PluginManager.add(this.input_id,function(t){e.set_editor(t)}),"array"!==$.type(this.editor_options.plugins)&&(this.editor_options.plugins=[]),this.editor_options.plugins.push(this.input_id)),window.tinyMCE.init(this.editor_options)},Charcoal.Admin.Property_Input_Tinymce.prototype.elfinder_callback=function(t,e){this.elfinder_dialog?(this.elfinder_dialog.onInsert(t,e),this.elfinder_dialog.close()):(window.parent.alert("Something went wrong. Could not insert file."),window.parent.postMessage({mceAction:"close"}))},Charcoal.Admin.Property_Input_Tinymce.prototype.elfinder_browser=function(t,n,e,a){var s=this;return t.elfinder_dialog=window.tinyMCE.activeEditor.windowManager.openUrl({url:t.data.elfinder_url+"&"+$.param(a),title:t.data.dialog_title||"",width:900,height:450}),t.elfinder_dialog.onInsert=function(t,e){for(var i,o=t.url,r=/\/[^/]+?\/\.\.\//;o.match(r);)o=o.replace(r,"/");0===(i=s.selection.getContent()).length&&"A"===s.selection.getNode().nodeName&&(i=s.selection.getNode().textContent),e=t.name+" ("+e.formatSize(t.size)+")","file"===a.filetype&&n(o,{text:i||e,title:e}),"image"===a.filetype&&n(o,{alt:e}),"media"===a.filetype&&n(o)},console.log("Dialog:",t.elfinder_dialog),console.groupEnd(),!1},Charcoal.Admin.Property_Input_Tinymce.prototype.set_editor=function(t){return this._editor=t,this},Charcoal.Admin.Property_Input_Tinymce.prototype.editor=function(){return this._editor},Charcoal.Admin.Property_Input_Tinymce.prototype.destroy=function(){var t=this.editor();t&&t.remove()},Charcoal.Admin.Property_Input_Video=function(t){this.EVENT_NAMESPACE=Charcoal.Admin.Property_Input_Video.EVENT_NAMESPACE,this.input_type="charcoal/admin/property/input/video",Charcoal.Admin.Property.call(this,t),this.data=t.data,this.dialog=null,this.set_input_id(t.id).init()},Charcoal.Admin.Property_Input_Video.EVENT_NAMESPACE=".charcoal.property.video",Charcoal.Admin.Property_Input_Video.prototype=Object.create(Charcoal.Admin.Property_Input_File.prototype),Charcoal.Admin.Property_Input_Video.prototype.constructor=Charcoal.Admin.Property_Input_Video,Charcoal.Admin.Property_Input_Video.prototype.parent=Charcoal.Admin.Property.prototype,Charcoal.Admin.Property_Input_Video.prototype.change_file=function(t){var e,i;this.$input.find(".hide-if-no-file").addClass("d-none"),this.$input.find(".show-if-no-file").removeClass("d-none"),this.$previewText.empty(),this.$previewFile.empty(),t.target&&t.target.files&&t.target.files[0]&&(e=t.target.files[0],(i=new FileReader).addEventListener("loadend",function(){var t=document.createElement("video");console.log("[Property_Input_Video.change_file]",e),t.innerHTML=videoPropertyL10n.unsupportedElement,t.style="max-width: 100%",t.controls=!0,t.title=e.name,t.src=i.result,t.load(),this.$input.find(".hide-if-no-file").removeClass("d-none"),this.$input.find(".show-if-no-file").addClass("d-none"),this.$previewFile.append(t),this.$previewText.html(e.name)}.bind(this),!1),i.readAsDataURL(e))},Charcoal.Admin.Property_Input_Video.prototype.elfinder_callback=function(t){var e,i;this.dialog&&this.dialog.close(),this.$input.find(".hide-if-no-file").addClass("d-none"),this.$input.find(".show-if-no-file").removeClass("d-none"),this.$previewText.empty(),this.$previewFile.empty(),t&&t.url&&(e=decodeURI(t.url).replace(Charcoal.Admin.base_url(),""),i=$('"),console.log("[Property_Input_Video.elfinder_callback]",t),this.$hidden.val(e),this.$input.find(".hide-if-no-file").removeClass("d-none"),this.$input.find(".show-if-no-file").addClass("d-none"),this.$previewText.html(t.name),this.$previewFile.append(i))},Charcoal.Admin.Template=function(t){return Charcoal.Admin.Component.call(this,t),this},Charcoal.Admin.Template.prototype=Object.create(Charcoal.Admin.Component.prototype),Charcoal.Admin.Template.prototype.constructor=Charcoal.Admin.Template,Charcoal.Admin.Template.prototype.parent=Charcoal.Admin.Component.prototype,Charcoal.Admin.Template_Login=function(t){this.template_type="charcoal/admin/template/login",this.init(t)},Charcoal.Admin.Template_Login.prototype=Object.create(Charcoal.Admin.Template.prototype),Charcoal.Admin.Template_Login.prototype.constructor=Charcoal.Admin.Template_Login,Charcoal.Admin.Template_Login.prototype.parent=Charcoal.Admin.Template.prototype,Charcoal.Admin.Template_Login.prototype.init=function(){this.bind_events()},Charcoal.Admin.Template_Login.prototype.bind_events=function(){var t=$("#login-form");t.on("submit.charcoal.login",$.proxy(this.onSubmit,this)),window.CharcoalCaptchaLoginCallback=this.submitForm.bind(this,t)},Charcoal.Admin.Template_Login.prototype.onSubmit=function(t){t.preventDefault();var t=$(t.currentTarget),e=Charcoal.Admin.recaptcha();e.hasInvisibleWidget(t,"#g-recaptcha-challenge")?e.getApi().execute():this.submitForm.call(this,t)},Charcoal.Admin.Template_Login.prototype.submitForm=function(t){var r=this,e=t.prop("action")||window.location.href,t=t.serialize(),i=Charcoal.Admin.queryParams();"redirect_to"in i&&(t=t.concat("&next_url="+encodeURIComponent(i.redirect_to))),$.post(e,t,Charcoal.Admin.resolveJqXhrFalsePositive.bind(this),"json").done(function(t){function e(){window.location.href=i}var i=t.next_url||Charcoal.Admin.admin_url(),t=r.parseFeedbackAsHtml(t)||authL10n.authSuccess;t+=""+authL10n.postLoginRedirect+" "+authL10n.postLoginFallback.replace("[[ url ]]",i)+"
",BootstrapDialog.show({title:authL10n.loginTitle,message:t,type:BootstrapDialog.TYPE_SUCCESS,onhidden:e}),setTimeout(e,300)}).fail(function(t,e,i){var t=Charcoal.Admin.parseJqXhrResponse(t,e,i),e=r.parseFeedbackAsHtml(t)||authL10n.authFailed,o=Charcoal.Admin.recaptcha(),i=null;o.hasApi()&&(i=function(){o.getApi().reset()}),BootstrapDialog.show({title:authL10n.loginTitle,message:e,type:BootstrapDialog.TYPE_DANGER,onhidden:i})})},Charcoal.Admin.Template_Login.prototype.parseFeedbackAsHtml=function(t){if(t.feedbacks&&(t=t.feedbacks),!1===Array.isArray(t)||0===t.length)return null;if(0===t.length)return null;var e,t=Charcoal.Admin.feedback(t),i=t.getMessagesMap(),o="";for(e in i)o+=i[e].join("
");return o+="
",t.empty(),""===o?null:o},Charcoal.Admin.Template_MenuHeader=function(){$(".js-toggle-class").click(function(t){t.preventDefault();var t=$(this),e=t.data("class"),t=t.data("target");$(t).toggleClass(e)}),$(document).on("click",".js-accordion-header",function(t){t.preventDefault(),$(this).toggleClass("is-open").siblings(".js-accordion-content").stop().slideToggle()})},Charcoal.Admin.Template_Account_LostPassword=function(t){this.template_type="charcoal/admin/template/account/lost-password",this.init(t)},Charcoal.Admin.Template_Account_LostPassword.prototype=Object.create(Charcoal.Admin.Template.prototype),Charcoal.Admin.Template_Account_LostPassword.prototype.constructor=Charcoal.Admin.Template_Account_LostPassword,Charcoal.Admin.Template_Account_LostPassword.prototype.parent=Charcoal.Admin.Template.prototype,Charcoal.Admin.Template_Account_LostPassword.prototype.init=function(t){window.console.debug(t),this.bind_events()},Charcoal.Admin.Template_Account_LostPassword.prototype.bind_events=function(){var t=$("#lost-password-form");t.on("submit.charcoal.password",$.proxy(this.onSubmit,this)),window.CharcoalCaptchaResetPassCallback=this.submitForm.bind(this,t)},Charcoal.Admin.Template_Account_LostPassword.prototype.onSubmit=Charcoal.Admin.Template_Login.prototype.onSubmit,Charcoal.Admin.Template_Account_LostPassword.prototype.parseFeedbackAsHtml=Charcoal.Admin.Template_Login.prototype.parseFeedbackAsHtml,Charcoal.Admin.Template_Account_LostPassword.prototype.submitForm=function(t){var r=this,e=t.prop("action")||window.location.href,t=t.serialize();$.post(e,t,Charcoal.Admin.resolveJqXhrFalsePositive.bind(this),"json").done(function(t){var e=r.parseFeedbackAsHtml(t)||authL10n.lostPassSuccess;BootstrapDialog.show({title:authL10n.lostPassword,message:e,type:BootstrapDialog.TYPE_SUCCESS,onhidden:function(){window.location.href=t.next_url||Charcoal.Admin.admin_url("login?notice=resetpass")}})}).fail(function(t,e,i){var t=Charcoal.Admin.parseJqXhrResponse(t,e,i),e=r.parseFeedbackAsHtml(t)||authL10n.lostPassFailed,o=Charcoal.Admin.recaptcha(),i=null;o.hasApi()&&(i=function(){o.getApi().reset()}),BootstrapDialog.show({title:authL10n.lostPassword,message:e,type:BootstrapDialog.TYPE_DANGER,onhidden:i})})},Charcoal.Admin.Template_Account_ResetPassword=function(t){this.template_type="charcoal/admin/template/account/reset-password",this.init(t)},Charcoal.Admin.Template_Account_ResetPassword.prototype=Object.create(Charcoal.Admin.Template.prototype),Charcoal.Admin.Template_Account_ResetPassword.prototype.constructor=Charcoal.Admin.Template_Account_ResetPassword,Charcoal.Admin.Template_Account_ResetPassword.prototype.parent=Charcoal.Admin.Template.prototype,Charcoal.Admin.Template_Account_ResetPassword.prototype.init=function(t){window.console.debug(t),this.bind_events()},Charcoal.Admin.Template_Account_ResetPassword.prototype.bind_events=function(){var t=$("#reset-password-form");t.on("submit.charcoal.password",$.proxy(this.onSubmit,this)),window.CharcoalCaptchaChangePassCallback=this.submitForm.bind(this,t)},Charcoal.Admin.Template_Account_ResetPassword.prototype.onSubmit=Charcoal.Admin.Template_Login.prototype.onSubmit,Charcoal.Admin.Template_Account_ResetPassword.prototype.parseFeedbackAsHtml=Charcoal.Admin.Template_Login.prototype.parseFeedbackAsHtml,Charcoal.Admin.Template_Account_ResetPassword.prototype.submitForm=function(t){var r=this,e=t.prop("action")||window.location.href,t=t.serialize();$.post(e,t,Charcoal.Admin.resolveJqXhrFalsePositive.bind(this),"json").done(function(t){var e=r.parseFeedbackAsHtml(t)||authL10n.resetPassSuccess;BootstrapDialog.show({title:authL10n.passwordReset,message:e,type:BootstrapDialog.TYPE_SUCCESS,onhidden:function(){window.location.href=t.next_url||Charcoal.Admin.admin_url("login?notice=newpass")}})}).fail(function(t,e,i){var t=Charcoal.Admin.parseJqXhrResponse(t,e,i),e=r.parseFeedbackAsHtml(t)||authL10n.resetPassFailed,o=Charcoal.Admin.recaptcha(),i=null;o.hasApi()&&(i=function(){o.getApi().reset()}),BootstrapDialog.show({title:authL10n.passwordReset,message:e,type:BootstrapDialog.TYPE_DANGER,onhidden:i})})};
\ No newline at end of file
+$.fn.enable=function(){return this.each(function(){$(this).removeAttr("disabled").prop("disabled",!1)}),this},$.fn.disable=function(){return this.each(function(){$(this).attr("disabled",!0).prop("disabled",!0)}),this},$.fn.exists=function(){return 0>>0,o=arguments[1],r=0;r'+o[t].join('')+"
",level:t,type:e.type,buttons:i},s=this.getDisplay(),l=null;switch(s){case"dialog":case"toast":l=s;break;default:l=e.display}"toast"===l?(a.dismissible=0===i.length,new p(a)):BootstrapDialog.show(a)}this.empty()}return this},o.prototype.empty=function(){t(),this.display=null,this.actions=[],this.storage=[]},function(t,e){if(i.feedback(),this.validLevel(t))return this.setLevel(t),this.validMessage(e)&&this.setMessage(e),this;throw new TypeError("Feedback level required. Must be one of: "+r.join(", "))}),p=(l.createFromObject=function(t){var e=t.level||null,t=t.message||null;return e||t?new l(e,t):null},l.prototype={toString:function(){return this.message()},level:function(){return this._level||null},setLevel:function(t){var e=c.type(t);if("string"!==e)throw new TypeError("Feedback level must be a string, received "+e);return o.prototype.assertValidLevel(t),t in a&&(t=a[t]),this._level=t,this},validLevel:function(t){return o.prototype.isValidLevel(t)},message:function(){return this._message||null},setMessage:function(t){var e=c.type(t);if("string"!==e)throw new TypeError("Feedback message must be a string, received "+e);return this._message=t,this},validMessage:function(t){return o.prototype.validMessage(t)}},function(t){var e=c.type(t);if("object"!==e)throw new TypeError("Notification config must be an associative array, received "+e);return this.validMessage(t.message)&&this.setMessage(t.message),this.config=c.extend({},{id:BootstrapDialog.newGuid(),delay:s.delay},t),this.$elem=c(''),this.$elem.prop("id",this.config.id),this.$elem.addClass("alert-"+this.config.type.replace("type-","")),this.config.dismissible&&(this.$elem.addClass("alert-dismissible"),(e=c('')).append('×'),this.$elem.append(e)),this.config.message&&((t=c('')).html("").append(this.config.message),this.$elem.append(t)),this.$elem.appendTo(".c-notifications").addClass("show"),this.$elem.on("closed.bs.alert",{notification:this},function(t){t=t.data.notification;t.$elem.off(".charcoal.feedback"),t.closeTimer&&window.clearTimeout(t.closeTimer)}),"number"==typeof this.config.delay&&0{text}';return t.onshown=function(r){var t=Charcoal.Admin.admin_url()+"widget/load";r.xhr=$.ajax({method:"POST",url:t,data:e,dataType:"json"}),r.xhr.then(function(t,e,i){return t&&t.success?$.Deferred().resolve(t,e,i):t.feedbacks?$.Deferred().reject(i,e,t.feedbacks):$.Deferred().reject(i,e,widgetL10n.loadingFailed)}).done(function(t){r.setMessage(t.widget_html),"function"==typeof i&&i(t,r),$('[data-toggle="tooltip"]',r.getModalBody()).tooltip()}).fail(function(t,e,i){r.setType(BootstrapDialog.TYPE_DANGER),r.setMessage(widgetL10n.loadingFailed);var o="";"string"===$.type(i)&&t.responseJSON&&t.responseJSON.feedbacks&&(i=t.responseJSON.feedbacks),$.isArray(i)?$.each(i,function(t,e){e.message&&("error"===e.level&&(e.level="danger"),o+=c.replaceMap({"{type}":e.level,"{text}":e.message}))}):"string"===$.type(i)&&(o=c.replaceMap({"{type}":"danger","{text}":i})),o&&r.setMessage(o),$('[data-toggle="tooltip"]',r.getModalBody()).tooltip()}),Charcoal.Admin.manager().render()},t.message=function(t){var e=$(c.replaceMap({"{type}":"warning","{text}":widgetL10n.loading}));return a||t.getModalHeader().addClass("d-none"),s||t.getModalFooter().addClass("d-none"),t.getModalBody().on("click.charcoal.bs.dialog",'[data-dismiss="dialog"]',{dialog:t},function(t){t.data.dialog.close()}),e},new BootstrapDialog.show(t)},Charcoal.Admin.Widget.prototype.confirm=function(t,e,i){var o={type:BootstrapDialog.TYPE_DANGER,callback:function(t){t?"function"==typeof e&&e():"function"==typeof i&&i()}},o=$.extend(o,t);return BootstrapDialog.confirm(o)},{});Charcoal.Admin.Widget_Attachment=function(t){this.EVENT_NAMESPACE=Charcoal.Admin.Widget_Attachment.EVENT_NAMESPACE,Charcoal.Admin.Widget.call(this,t),this.busy=!1,this.dirty=!1,this.glyphs={embed:"glyphicon-blackboard",video:"glyphicon-film",image:"glyphicon-picture",file:"glyphicon-file",link:"glyphicon-link",text:"glyphicon-font",gallery:"glyphicon-duplicate",container:"glyphicon-list",accordion:"glyphicon-list"};var e=this;return $(document).on("beforelanguageswitch"+Charcoal.Admin.Widget_Form.EVENT_NAMESPACE,function(t){if(e.is_busy())return t.preventDefault(),void e.enqueue_is_busy_feedback().dispatch();e.perform_save()}).on("languageswitch"+Charcoal.Admin.Widget_Form.EVENT_NAMESPACE,function(){e.change_locale().try_reload()}),this},Charcoal.Admin.Widget_Attachment.EVENT_NAMESPACE=".charcoal.attachments",Charcoal.Admin.Widget_Attachment.prototype=Object.create(Charcoal.Admin.Widget.prototype),Charcoal.Admin.Widget_Attachment.prototype.constructor=Charcoal.Admin.Widget_Attachment,Charcoal.Admin.Widget_Attachment.prototype.parent=Charcoal.Admin.Widget.prototype,Charcoal.Admin.Widget_Attachment.prototype.init=function(){var t,e=this.element().find(".js-attachment-sortable > .js-grid-container");return e.length&&(this.element().on("hidden.bs.collapse",'[data-toggle="collapse"]',function(){e.sortable("refreshPositions")}),t=this,e.sortable({handle:'[draggable="true"]',placeholder:"card c-attachments_row -placeholder",start:function(t,e){e.item.children(".card-header").find('[data-toggle="collapse"]').hasClass("collapsed")||e.item.children(".collapse").collapse("hide")},update:function(){t.set_dirty_state(!0)}}).disableSelection()),this.listeners(),this},Charcoal.Admin.Widget_Attachment.prototype.is_busy=function(){return this.busy||this.is_reloading()},Charcoal.Admin.Widget_Attachment.prototype.set_busy_state=function(t){return this.busy=t,this},Charcoal.Admin.Widget_Attachment.prototype.is_dirty=function(){return this.dirty},Charcoal.Admin.Widget_Attachment.prototype.set_dirty_state=function(t){return this.dirty=t,this},Charcoal.Admin.Widget_Attachment.prototype.change_locale=function(t){var e=this.opts();return e.widget_options.lang=t||Charcoal.Admin.lang(),this.set_opts(e),this},Charcoal.Admin.Widget_Attachment.prototype.listeners=function(){var d=this,e=this.element().find(".c-attachments_container > .js-grid-container");this.element().off(this.EVENT_NAMESPACE).on("click"+this.EVENT_NAMESPACE,".js-attachments-collapse",function(){var t=e.children(".js-attachment");e.hasClass("js-attachment-preview-only")&&t.find(".card-header.sr-only").removeClass("sr-only").addClass("sr-only-off"),t.find(".collapse.show").collapse("hide")}).on("click"+this.EVENT_NAMESPACE,".js-attachments-expand",function(){var t=e.children(".js-attachment");e.hasClass("js-attachment-preview-only")&&t.find(".card-header.sr-only-off").removeClass("sr-only-off").addClass("sr-only"),t.find(".collapse:not(.show)").collapse("show")}).on("click"+this.EVENT_NAMESPACE,".js-add-attachment",function(t){t.preventDefault();var t=$(this),e=t.data("type");if(!e)return!1;var i=t.data("id");i?(d.add({id:i,type:e}),d.join(function(){d.reload()})):(i={title:t.data("title")||attachmentWidgetL10n.editObject,formIdent:t.data("form-ident"),skipForm:t.data("skip-form")},d.create_attachment(e,0,null,i,function(t){t.success&&(t.obj.id=t.obj_id,d.add(t.obj),d.join(function(){d.reload()}))}))}).on("click"+this.EVENT_NAMESPACE,".js-attachment-actions a",function(t){var e=$(this);if(e.data("action"))switch(t.preventDefault(),e.data("action")){case"edit":var i=e.data("type"),o=e.data("id");if(!i||!o)break;var r={title:e.data("title")||attachmentWidgetL10n.editObject,formIdent:e.data("form-ident")};d.create_attachment(i,o,null,r,function(t){t.success&&d.reload()});break;case"delete":if(!e.data("id"))break;d.confirm({title:attachmentWidgetL10n.confirmRemoval,message:commonL10n.confirmAction,btnOKLabel:commonL10n.removeObject,callback:function(t){t&&d.remove_join(e.data("id"),function(){d.reload()})}});break;case"add-object":var i=e.data("title"),o=e.data("attachment"),n=e.data("type"),a=e.data("id"),s=e.data("group"),l=e.data("form-ident"),c=e.data("skip-form"),p={id:a,type:n,group:s},r={title:i,formIdent:l,skipForm:c};d.create_attachment(o,0,p,r,function(t){t.success&&d.add_object_to_container({id:t.obj_id,type:t.obj.type},p)})}})},Charcoal.Admin.Widget_Attachment.prototype.select_attachment=function(t){if(!t.data("id")||!t.data("type"))return this},Charcoal.Admin.Widget_Attachment.prototype.create_attachment=function(t,e,i,o,r){return o&&o.skipForm?this.create_quick_attachment(t,e,i,o,r):this.create_dialog_attachment(t,e,i,o,r)},Charcoal.Admin.Widget_Attachment.prototype.create_quick_attachment=function(t,i,e,o,r){return i=i||0,e=e||this.get_parent_container(),this.xhr=$.ajax({type:"POST",url:"object/save",data:{obj_type:t,obj_id:i,pivot:e}}),Charcoal.Admin.resolveSimpleJsonXhr(this.xhr,function(t){t.feedbacks.length&&Charcoal.Admin.feedback(t.feedbacks),"function"==typeof r&&r(t)},function(t){var e;t.feedbacks.length?Charcoal.Admin.feedback(t.feedbacks):(t=i?formWidgetL10n.updateFailed:formWidgetL10n.createFailed,e=commonL10n.errorOccurred,Charcoal.Admin.feedback([{level:"error",message:commonL10n.errorTemplate.replaceMap({"[[ errorMessage ]]":t,"[[ errorThrown ]]":e})}]))},function(){Charcoal.Admin.feedback().dispatch(),Charcoal.Admin.manager().render()})},Charcoal.Admin.Widget_Attachment.prototype.create_dialog_attachment=function(t,i,e,o,r){i=i||0,o=o||{},e=e||this.get_parent_container();t={size:BootstrapDialog.SIZE_WIDE,cssClass:"-quick-form",widget_type:"charcoal/admin/widget/quick-form",with_data:!0,widget_options:{obj_type:t,obj_id:i,form_ident:o.formIdent||null,form_data:{pivot:e}}},e=$.extend({},t,o,{});return this.dialog(e,function(t,e){return!!t.success&&(!!t.widget_id&&(Charcoal.Admin.manager().add_widget({id:t.widget_id,type:"charcoal/admin/widget/quick-form",data:t.widget_data,obj_id:i,save_callback:function(t){"function"==typeof r&&r(t),this instanceof Charcoal.Admin.Component&&this.id()&&Charcoal.Admin.manager().destroy_component("widgets",this.id()),e.close()}}),void Charcoal.Admin.manager().render()))})},Charcoal.Admin.Widget_Attachment.prototype.get_parent_container=function(){var t=this.opts();return{obj_type:t.data.obj_type,obj_id:t.data.obj_id,group:t.data.group}},Charcoal.Admin.Widget_Attachment.prototype.add_object_to_container=function(t,e,i){if(this.is_busy())return null;this.set_busy_state(!0);var o=this,r={obj_type:e.type,obj_id:e.id,attachments:[{attachment_id:t.id,attachment_type:t.type,position:0}],group:i||e.group||""},t=(null!=globalXHR[r.group]&&globalXHR[r.group].abort&&globalXHR[r.group].abort(),$.post("add-join",r));return globalXHR[r.group]=Charcoal.Admin.resolveSimpleJsonXhr(t,function(){o.reload()},function(t){t.feedbacks.length?Charcoal.Admin.feedback(t.feedbacks):Charcoal.Admin.feedback([{level:"error",message:commonL10n.errorTemplate.replaceMap({"[[ errorMessage ]]":formWidgetL10n.saveFailed,"[[ errorThrown ]]":commonL10n.errorOccurred})}])},function(){delete globalXHR[r.group],o.set_busy_state(!1),Charcoal.Admin.feedback().dispatch()})},Charcoal.Admin.Widget_Attachment.prototype.add=function(t){if(!t)return!1;this.set_dirty_state(!0);var e=this.element().find(".js-attachment-template").clone();return e.find(".js-attachment").data("id",t.id).data("type",t.type),this.element().find(".c-attachments_container > .js-grid-container").append(e),this},Charcoal.Admin.Widget_Attachment.prototype.enqueue_is_busy_feedback=function(){var t=this.widget_options(),t=t&&t.title||attachmentWidgetL10n.widgetName;return Charcoal.Admin.feedback([{level:"warning",display:"toast",message:commonL10n.errorTemplate.replaceMap({"[[ errorMessage ]]":t,"[[ errorThrown ]]":widgetL10n.isBusy})}])},Charcoal.Admin.Widget_Attachment.prototype.validate=function(t){return!this.is_busy()||(t.attempts&&t.max_attempts&&t.attempts .js-sortable-item")).map(function(t){return t.classList.contains("draggable-mirror")||t.classList.contains("draggable--original")?"":t.getAttribute("data-id")}).filter(function(t){return""!==t}),$.ajax({method:"POST",url:Charcoal.Admin.admin_url()+"object/reorder",data:{obj_type:e.obj_type,obj_orders:t,starting_order:1},dataType:"json"}).done(function(t){console.debug(t),t.feedbacks&&Charcoal.Admin.feedback(t.feedbacks).dispatch()}))})),$(".js-jump-page-form",e.table_selector).on("submit",function(t){t.preventDefault();t=$(this),t=parseInt(t.find("input").val());t&&(e.pagination.page=t,e.reload(null,!0))}),$(".js-page-switch",e.table_selector).on("click",function(t){t.preventDefault();t=$(this).data("page-num");console.log(t),e.pagination.page=t,e.reload(null,!0)})},Charcoal.Admin.Widget_Card_Collection.prototype.widget_options=function(){return{obj_type:this.obj_type,template:this.template,collection_ident:this.collection_ident,card_template:this.card_template,num_columns:this.num_columns,collection_config:{properties:this.properties,properties_options:this.properties_options,search_query:this.get_search_query(),filters:this.get_filters(),orders:this.get_orders(),pagination:this.pagination,list_actions:this.list_actions,object_actions:this.object_actions}}},Charcoal.Admin.Widget_Form=function(t){this.EVENT_NAMESPACE=Charcoal.Admin.Widget_Form.EVENT_NAMESPACE,Charcoal.Admin.Widget.call(this,t),this.widget_id=null,this.obj_type=null,this.obj_id=null,this.save_action=t.save_action||"object/save",this.update_action=t.update_action||"object/update",this.extra_form_data=t.extra_form_data||{},this.form_selector=null,this.form_working=!1,this.attempts=0,this.max_attempts=5,this.submitted_via=null,this.is_new_object=!1,this.xhr=null,this.useDefaultAction=!1,this.confirmed=!1;t=$("[data-lang]:not(.d-none)").data("lang");t&&Charcoal.Admin.setLang(t),this._on_popstate_tab=this._on_popstate_tab.bind(this),this._on_shown_tab=this._on_shown_tab.bind(this)},Charcoal.Admin.Widget_Form.EVENT_NAMESPACE=".charcoal.form",Charcoal.Admin.Widget_Form.prototype=Object.create(Charcoal.Admin.Widget.prototype),Charcoal.Admin.Widget_Form.prototype.constructor=Charcoal.Admin.Widget_Form,Charcoal.Admin.Widget_Form.prototype.parent=Charcoal.Admin.Widget.prototype,Charcoal.Admin.Widget_Form.prototype.init=function(){this.set_properties(this.opts()),this.update_tab_ident(),this.bind_events(),this.parse_group_conditions()},Charcoal.Admin.Widget_Form.prototype.set_properties=function(t){return this.widget_id=t.id||this.widget_id,this.obj_type=t.data.obj_type||this.obj_type,this.obj_id=Charcoal.Admin.parseNumber(t.data.obj_id||this.obj_id),this.form_selector=t.data.form_selector||this.form_selector,this.isTab=t.data.tab,this.group_conditions=t.data.group_conditions,this.$form=$(this.form_selector),this.allow_reload=t.data.allow_reload,this.force_page_reload=t.data.force_page_reload,this.useDefaultAction=t.data.use_default_action,this},Charcoal.Admin.Widget_Form.prototype.widget_options=function(){var t=this.parent.widget_options.call(this);return $.extend({},t,this.opts("data"))},Charcoal.Admin.Widget_Form.prototype.bind_events=function(){var e=this,i=this.$form,t=(i.on("submit"+this.EVENT_NAMESPACE,function(t){t.preventDefault(),e.request_submit()}).find(":submit").on("click"+this.EVENT_NAMESPACE,function(){e.submitted_via=this}),$(".js-sidebar-widget",this.form_selector));t.on("click"+this.EVENT_NAMESPACE,".js-obj-delete",function(t){t.preventDefault(),e.delete_object(this)}),t.on("click"+this.EVENT_NAMESPACE,".js-reset-form",function(t){t.preventDefault(),i[0].reset()}),t.on("click"+this.EVENT_NAMESPACE,".js-obj-revision",function(t){t.preventDefault(),e.view_revision(this)}),t.on("click"+this.EVENT_NAMESPACE,".js-obj-list",function(t){t.preventDefault(),e.back_to_list(this)}),t.on("click"+this.EVENT_NAMESPACE,".js-lang-switch button",function(t){t.preventDefault();t=$(this).attr("data-lang-switch");e.switch_language(t)}),window.addEventListener("popstate",this._on_popstate_tab),this.isTab&&i.on("shown.bs.tab",".js-group-tabs",this._on_shown_tab)},Charcoal.Admin.Widget_Form.prototype._on_popstate_tab=function(){this.update_tab_ident()},Charcoal.Admin.Widget_Form.prototype._on_shown_tab=function(t){var t=$(t.target),e=[],i=Charcoal.Admin.queryParams();if(void 0===i.tab_ident||t.data("tab-ident")!==i.tab_ident){for(var o in i.tab_ident=t.data("tab-ident"),i)e.push(o+"="+i[o]);history.pushState("","",window.location.pathname+"?"+e.join("&"))}},Charcoal.Admin.Widget_Form.prototype.parse_group_conditions=function(){var o=this,r=this.$form;$.each(this.group_conditions,function(i,t){var e=o.validate_group_conditions(i);e||o.toggle_conditional_group(i,e,!1),$.each(t,function(t,e){r.on("change"+this.EVENT_NAMESPACE,"#"+e.input_id,{condition_target:i},function(t){var e=o.validate_group_conditions(t.data.condition_target);o.toggle_conditional_group(t.data.condition_target,e)})})})},Charcoal.Admin.Widget_Form.prototype.validate_group_conditions=function(t){var t=this.group_conditions[t],r=this,n=this.$form,a=!0;return $.each(t,function(t,e){var i=n.find("#"+e.input_id),o=r.get_input_value(i);switch(JSON.stringify(e.operator)){case'"!=="':case'"!="':case'"!"':case'"not"':if(o===e.value)return void(a=!1);break;default:case'"==="':case'"=="':case'"="':case'"is"':if(o!==e.value)return void(a=!1)}}),a},Charcoal.Admin.Widget_Form.prototype.toggle_conditional_group=function(t,e,i){function o(){r.each(function(){$(this).attr("disabled",!e)})}var t=this.$form.find("#"+t),r=t.find("select, input, textarea");i=void 0===i||i;e?i?t.slideDown({easing:"easeInOutQuad",start:o}):t.show(0,o):i?t.slideUp({easing:"easeInOutQuad",complete:o}):t.hide(0,o)},Charcoal.Admin.Widget_Form.prototype.get_input_value=function(t){if("disabled"===t.attr("disabled"))return null;var e;switch(t.attr("type")){case"select":e=t.find(":selected").val();break;case"checkbox":e=t.is(":checked");break;default:e=t.val()}return e},Charcoal.Admin.Widget_Form.prototype.update_tab_ident=function(){var t=Charcoal.Admin.queryParams();"tab_ident"in t&&$('.js-group-tabs[data-tab-ident="'+t.tab_ident+'"]').tab("show")},Charcoal.Admin.Widget_Form.prototype.get_form_data=function(){var t=this.$form.length?new FormData(this.$form[0]):new FormData;if(this.submitted_via&&this.submitted_via.name&&t.append(this.submitted_via.name,this.submitted_via.value||!0),this.confirmed&&t.append("confirmed",!0),this.extra_form_data)for(var e in this.extra_form_data)this.extra_form_data.hasOwnProperty(e)&&t.append(e,this.extra_form_data[e]);return t},Charcoal.Admin.Widget_Form.prototype.request_submit=function(){var t;return this.attempts++,this.form_working?(t=this.attempts>=this.max_attempts?commonL10n.errorTemplate.replaceMap({"[[ errorMessage ]]":formWidgetL10n.isBlocked,"[[ errorThrown ]]":commonL10n.tryAgainLater}):commonL10n.errorTemplate.replaceMap({"[[ errorMessage ]]":formWidgetL10n.isProcessing,"[[ errorThrown ]]":commonL10n.pleaseWait}),void Charcoal.Admin.feedback([{level:"warning",display:"toast",message:t}])):(this.form_working=!0,this.is_new_object=!this.obj_id,!0!==Charcoal.Admin.manager().prepare_submit(this)?(t=$.Event("failed"+this.EVENT_NAMESPACE,{subtype:"validation",component:this}),this.$form.trigger(t),void this.request_complete()):(this.disable_form(),void this.submit_form()))},Charcoal.Admin.Widget_Form.prototype.submit_form=function(){this.xhr=$.ajax({type:"POST",url:this.request_url(),data:this.get_form_data(),dataType:"json",processData:!1,contentType:!1}),this.xhr.then($.proxy(this.request_done,this)).done($.proxy(this.request_success,this)).fail($.proxy(this.request_failed,this)).always($.proxy(this.request_complete,this))},Charcoal.Admin.Widget_Form.prototype.request_done=function(t,e,i){return t&&t.success?$.Deferred().resolve(t,e,i):t.feedbacks?$.Deferred().reject(i,e,t.feedbacks):$.Deferred().reject(i,e,commonL10n.errorOccurred)},Charcoal.Admin.Widget_Form.prototype.request_success=function(t){this.attempts=0;var e=$.Event("success"+this.EVENT_NAMESPACE,{subtype:"submission",component:this,response:t});this.$form.trigger(e),e.isDefaultPrevented()||(this.confirmed=!1,t.feedbacks&&Charcoal.Admin.feedback(t.feedbacks),t.need_confirmation?this.add_actions_for_confirmation(t.confirmation_label):t.next_url?this.add_action_for_next_url(t.next_url,t.next_url_label):!this.useDefaultAction&&this.is_new_object?(this.suppress_feedback(!0),t.next_url?Charcoal.Admin.redirect_to_url(t.next_url):(e=new URLSearchParams(window.location.search),window.location.href=Charcoal.Admin.admin_url()+"object/edit?"+(e.has("main_menu")?"main_menu="+e.get("main_menu")+"&":"")+(e.has("secondary_menu")?"secondary_menu="+e.get("secondary_menu")+"&":"")+"obj_type="+this.obj_type+"&obj_id="+t.obj_id)):this.force_page_reload?window.location.reload():this.allow_reload&&(e=Charcoal.Admin.manager().get_widgets(),$.each(e,function(t,e){e.reload()}.bind(this))))},Charcoal.Admin.Widget_Form.prototype.request_failed=function(t,e,i){var o=$.Event("failed"+this.EVENT_NAMESPACE,{subtype:"submission",component:this,response:t.responseJSON||{}});this.$form.trigger(o),o.isDefaultPrevented()||(t.responseJSON&&t.responseJSON.feedbacks?Charcoal.Admin.feedback(t.responseJSON.feedbacks):(o=this.is_new_object?formWidgetL10n.createFailed:formWidgetL10n.updateFailed,t=i||commonL10n.errorOccurred,Charcoal.Admin.feedback([{level:"error",message:commonL10n.errorTemplate.replaceMap({"[[ errorMessage ]]":o,"[[ errorThrown ]]":t})}])))},Charcoal.Admin.Widget_Form.prototype.request_complete=function(){var t=$.Event("complete"+this.EVENT_NAMESPACE,{subtype:"submission",component:this});this.$form.trigger(t),t.isDefaultPrevented()||(this.suppress_feedback()||(this.attempts>=this.max_attempts&&Charcoal.Admin.feedback([{level:"error",message:commonL10n.errorTemplate.replaceMap({"[[ errorMessage ]]":formWidgetL10n.isBlocked,"[[ errorThrown ]]":commonL10n.tryAgainLater})}]),Charcoal.Admin.feedback().dispatch(),this.enable_form()),this.submitted_via=null,this.suppress_feedback(!1),this.form_working=this.is_new_object=!1)},Charcoal.Admin.Widget_Form.prototype.add_action_for_next_url=function(t,e){Charcoal.Admin.feedback().add_action({label:e||commonL10n.continue,callback:function(){Charcoal.Admin.redirect_to_url(t)}})},Charcoal.Admin.Widget_Form.prototype.add_actions_for_confirmation=function(t){Charcoal.Admin.feedback().add_action({label:commonL10n.cancel,cssClass:"btn-danger",callback:function(t){t.close()}}).add_action({label:t||commonL10n.continue,callback:function(t){t.close(),this.confirmed=!0,this.request_submit()}.bind(this)})},Charcoal.Admin.Widget_Form.prototype.disable_form=function(){var t=this.$form;return t.length&&(t.prop("disabled",!0),(t=t.find('[type="submit"]')).length&&t.prop("disabled",!0)),this.submitted_via&&this.disable_button($(this.submitted_via)),this},Charcoal.Admin.Widget_Form.prototype.enable_form=function(){var t=this.$form;return t.length&&(t.prop("disabled",!1),(t=t.find('[type="submit"]')).length&&t.prop("disabled",!1)),this.submitted_via&&this.enable_button($(this.submitted_via)),this},Charcoal.Admin.Widget_Form.prototype.disable_button=function(t){return t.prop("disabled",!0).children(".fa").removeClass("d-none").next(".btn-label").addClass("sr-only"),this},Charcoal.Admin.Widget_Form.prototype.enable_button=function(t){return t.prop("disabled",!1).children(".fa").addClass("d-none").next(".btn-label").removeClass("sr-only"),this},Charcoal.Admin.Widget_Form.prototype.request_url=function(){return this.useDefaultAction?this.$form.attr("action"):this.is_new_object?Charcoal.Admin.admin_url()+this.save_action:Charcoal.Admin.admin_url()+this.update_action},Charcoal.Admin.Widget_Form.prototype.view_revision=function(){var e=this.obj_type,i=this.obj_id,t={size:BootstrapDialog.SIZE_WIDE,title:formWidgetL10n.revisions,widget_type:"charcoal/admin/widget/object-revisions",widget_options:{obj_type:e,obj_id:i}},t=$.extend({},t);this.dialog(t,function(t){if(t.success){if(!t.widget_id)return!1;Charcoal.Admin.manager().add_widget({id:t.widget_id,type:"charcoal/admin/widget/object-revisions",obj_type:e,obj_id:i}),Charcoal.Admin.manager().render()}})},Charcoal.Admin.Widget_Form.prototype.back_to_list=function(){var t=new URLSearchParams(window.location.search);window.location.href="object/collection?"+(t.has("main_menu")?"main_menu="+t.get("main_menu")+"&":"")+(t.has("secondary_menu")?"secondary_menu="+t.get("secondary_menu")+"&":"")+"obj_type="+this.obj_type},Charcoal.Admin.Widget_Form.prototype.delete_object=function(){var i=this,t=new URLSearchParams(window.location.search),o=Charcoal.Admin.admin_url()+"object/collection?"+(t.has("main_menu")?"main_menu="+t.get("main_menu")+"&":"")+(t.has("secondary_menu")?"secondary_menu="+t.get("secondary_menu")+"&":"")+"obj_type="+this.obj_type;if(!i.obj_type||!i.obj_id)return t={level:"warning",message:commonL10n.errorTemplate.replaceMap({"[[ errorMessage ]]":formWidgetL10n.deleteFailed,"[[ errorThrown ]]":commonL10n.invalidObject})},void Charcoal.Admin.feedback([t]).dispatch();BootstrapDialog.confirm({title:formWidgetL10n.confirmDeletion,type:BootstrapDialog.TYPE_DANGER,message:$(""+commonL10n.confirmAction+'
'+commonL10n.cantUndo+"
"),btnOKLabel:commonL10n.delete,callback:function(t){var e;t&&(t=Charcoal.Admin.admin_url()+"object/delete",e={obj_type:i.obj_type,obj_id:i.obj_id},t=$.ajax({method:"POST",url:t,data:e,dataType:"json"}),Charcoal.Admin.resolveSimpleJsonXhr(t,function(){window.location.href=o},function(t){t.feedbacks.length?Charcoal.Admin.feedback(t.feedbacks):Charcoal.Admin.feedback([{level:"error",message:formWidgetL10n.deleteFailed}])},function(){i.suppress_feedback()||Charcoal.Admin.feedback().dispatch()}))}})},Charcoal.Admin.Widget_Form.prototype.reload=function(i){return this.destroy(),Charcoal.Admin.Widget.prototype.reload.call(this,function(t,e){"function"==typeof i&&i.call(t,e),Charcoal.Admin.manager().render()},!0),this},Charcoal.Admin.Widget_Form.prototype.switch_language=function(t){var e,i=Charcoal.Admin.lang();i!==t&&(e=$.Event("beforelanguageswitch"+this.EVENT_NAMESPACE,{language:t,originalLanguage:i,relatedTarget:this.$form[0],relatedComponent:this}),$(document).triggerHandler(e),e.isDefaultPrevented()||(Charcoal.Admin.setLang(t),$("[data-lang][data-lang!="+t+"]").addClass("d-none"),$("[data-lang][data-lang="+t+"]").removeClass("d-none"),$("[data-lang-switch][data-lang-switch!="+t+"]").removeClass("btn-primary").addClass("btn-outline-primary"),$("[data-lang-switch][data-lang-switch="+t+"]").removeClass("btn-outline-primary").addClass("btn-primary"),$(document).triggerHandler({type:"switch_language.charcoal"}),e=$.Event("languageswitch"+this.EVENT_NAMESPACE,{language:t,originalLanguage:i,relatedTarget:this.$form[0],relatedComponent:this}),$(document).triggerHandler(e)))},Charcoal.Admin.Widget_Form.prototype.destroy=function(){$(this.form_selector).off(this.EVENT_NAMESPACE),$(".js-sidebar-widget",this.form_selector).off(this.EVENT_NAMESPACE),window.removeEventListener("popstate",this._on_popstate_tab),this.isTab&&$(this.form_selector).off("shown.bs.tab",".js-group-tabs",this._shown_tab_handler)},function(e,t,i){"use strict";function o(t){this.EVENT_NAMESPACE=o.EVENT_NAMESPACE,Charcoal.Admin.Widget.call(this,t),this.graph_options=t.graph_options||t.data.graph_options||{}}o.EVENT_NAMESPACE=".charcoal.widget.graph",((o.prototype=Object.create(Charcoal.Admin.Widget.prototype)).contructor=o).prototype.parent=Charcoal.Admin.Widget.prototype,o.prototype.init=function(){var t;echarts?(t=echarts.init(this.element()[0]),(this.chart=t).setOption(this.graph_options),e(i).on("resize"+this.EVENT_NAMESPACE,function(){t.resize()})):console.error("Could not initialize graph widget:","eCharts is missing")},o.prototype.destroy=function(){this.chart&&this.chart.dispose(),e(i).off("resize"+this.EVENT_NAMESPACE)},t.Widget_Graph=o}(jQuery,Charcoal.Admin,window),Charcoal.Admin.Widget_Map=function(t){return Charcoal.Admin.Widget.call(this,t),this._controller=void 0,this},Charcoal.Admin.Widget_Map.prototype=Object.create(Charcoal.Admin.Widget.prototype),Charcoal.Admin.Widget_Map.prototype.constructor=Charcoal.Admin.Widget_Map,Charcoal.Admin.Widget_Map.prototype.parent=Charcoal.Admin.Widget.prototype,Charcoal.Admin.Widget_Map.prototype.init=function(){var t=this;return"undefined"==typeof google?(window._tmp_google_onload_function=function(){t.activate_map()},$.getScript("https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false&language=fr&callback=_tmp_google_onload_function",function(){})):t.activate_map(),this},Charcoal.Admin.Widget_Map.prototype.activate_map=function(){var t={default_styles:{strokeColor:"#000000",strokeOpacity:.8,strokeWeight:3,fillColor:"#ffffff",fillOpacity:.35,hover:{strokeColor:"#000000",strokeOpacity:1,strokeWeight:2,fillColor:"#ffffff",fillOpacity:.5},focused:{fillOpacity:.8}},use_clusterer:!1,map:{center:{x:this.opts("coords")[0],y:this.opts("coords")[1]},zoom:14,mapType:"roadmap",coordsType:"inpage",map_mode:"default"},places:{first:{type:"marker",coords:this.coords()}}};this._controller=new window.BB.gmap.controller(this.element().find(".js-map-maker-map").get(0),t),this.controller().set_styles([{featureType:"poi",elementType:"all",stylers:[{visibility:"off"}]}]),this.controller().remove_focus(),this.controller().init()},Charcoal.Admin.Widget_Map.prototype.controller=function(){return this._controller},Charcoal.Admin.Widget_Map.prototype.coords=function(){return this.opts("coords")},Charcoal.Admin.Widget_Object_Revisions=function(t){return Charcoal.Admin.Widget.call(this,t),this.extra_form_data=t.extra_form_data||{},this.xhr=null,this.obj_id=Charcoal.Admin.parseNumber(t.obj_id)||0,this.obj_type=t.obj_type,this},Charcoal.Admin.Widget_Object_Revisions.prototype=Object.create(Charcoal.Admin.Widget.prototype),Charcoal.Admin.Widget_Object_Revisions.prototype.constructor=Charcoal.Admin.Widget_Object_Revisions,Charcoal.Admin.Widget_Object_Revisions.prototype.parent=Charcoal.Admin.Widget.prototype,Charcoal.Admin.Widget_Object_Revisions.prototype.init=function(){this.bind_events()},Charcoal.Admin.Widget_Object_Revisions.prototype.bind_events=function(){var e=this;$("#"+this.id()).on("click.object.revisions",".js-obj-revert",this.revert.bind(this)),$("#"+this.id()).on("click.charcoal.bs.dialog",'[data-dismiss="dialog"]',function(t){$.isFunction(e.cancel_callback)&&e.cancel_callback(t)})},Charcoal.Admin.Widget_Object_Revisions.prototype.revert=function(t){t.preventDefault();var e=Charcoal.Admin.admin_url()+"object/revert-revision",i={obj_type:this.obj_type,obj_id:this.obj_id,rev_num:$(t.currentTarget).attr("data-rev-num")};BootstrapDialog.show({title:objectRevisionsWidgetL10n.title,message:objectRevisionsWidgetL10n.message,buttons:[{id:"ok-btn",label:objectRevisionsWidgetL10n.restore,action:function(t){t.close(),$.ajax({url:e,type:"POST",data:i,dataType:"json",success:function(t){t.success?window.location.reload():(Charcoal.Admin.feedback().push([{level:"error",message:objectRevisionsWidgetL10n.restoreError}]),Charcoal.Admin.feedback().dispatch())},error:function(){Charcoal.Admin.feedback().push([{level:"error",message:objectRevisionsWidgetL10n.restoreError}]),Charcoal.Admin.feedback().dispatch()}})}}]})},Charcoal.Admin.Widget_Object_Revisions.prototype.disable_form=Charcoal.Admin.Widget_Form.prototype.disable_form,Charcoal.Admin.Widget_Object_Revisions.prototype.enable_form=Charcoal.Admin.Widget_Form.prototype.enable_form,Charcoal.Admin.Widget_Object_Revisions.prototype.request_url=Charcoal.Admin.Widget_Form.prototype.request_url,Charcoal.Admin.Widget_Object_Revisions.prototype.request_done=Charcoal.Admin.Widget_Form.prototype.request_done,Charcoal.Admin.Widget_Object_Revisions.prototype.request_failed=Charcoal.Admin.Widget_Form.prototype.request_failed,Charcoal.Admin.Widget_Object_Revisions.prototype.request_complete=Charcoal.Admin.Widget_Form.prototype.request_complete,Charcoal.Admin.Widget_Object_Revisions.prototype.request_success=function(t,e,i){i.feedbacks&&!this.suppress_feedback()&&Charcoal.Admin.feedback(i.feedbacks),i.next_url&&Charcoal.Admin.feedback().add_action({label:commonL10n.continue,callback:function(){window.location.href=Charcoal.Admin.admin_url()+i.next_url}})},Charcoal.Admin.Widget_Quick_Form=function(t){this.EVENT_NAMESPACE=Charcoal.Admin.Widget_Quick_Form.EVENT_NAMESPACE,Charcoal.Admin.Widget.call(this,t),this.save_callback=t.save_callback||"",this.cancel_callback=t.cancel_callback||"",this.form_selector=t.data.form_selector,this.save_action=t.save_action||"object/save",this.update_action=t.update_action||"object/update",this.extra_form_data=t.extra_form_data||{},this.group_conditions=t.data.group_conditions,this.group_display_mode=t.data.group_display_mode||"",this.show_language_switch=t.data.show_language_switch||!1,this.form_working=!1,this.is_new_object=!1,this.xhr=null,this.obj_id=Charcoal.Admin.parseNumber(t.obj_id)||0},Charcoal.Admin.Widget_Quick_Form.EVENT_NAMESPACE=".charcoal.quickform",Charcoal.Admin.Widget_Quick_Form.prototype=Object.create(Charcoal.Admin.Widget_Form.prototype),Charcoal.Admin.Widget_Quick_Form.prototype.constructor=Charcoal.Admin.Widget_Quick_Form,Charcoal.Admin.Widget_Quick_Form.prototype.parent=Charcoal.Admin.Widget.prototype,Charcoal.Admin.Widget_Quick_Form.prototype.init=function(){this.set_properties(this.opts()),this.bind_events(),this.parse_group_conditions(),this.show_language_switch&&$('.nav-link.nav-lang[data-tab-ident="'+Charcoal.Admin.lang()+'"]').trigger("click")},Charcoal.Admin.Widget_Quick_Form.prototype.set_properties=function(){this.$form=$(this.form_selector)},Charcoal.Admin.Widget_Quick_Form.prototype.bind_events=function(){var e=this,t=this.$form;t.on("submit"+this.EVENT_NAMESPACE,function(t){t.preventDefault(),e.request_submit()}).on("click"+this.EVENT_NAMESPACE,'[data-dismiss="dialog"]',function(t){$.isFunction(e.cancel_callback)&&e.cancel_callback(t)}),this.show_language_switch&&t.on("click.nav-link.nav-lang","a.nav-link.nav-lang",function(t){t.preventDefault(),e.trigger_lang_tab($(this).attr("data-tab-ident"))})},Charcoal.Admin.Widget_Quick_Form.prototype.request_success=function(t){var e=$.Event("success"+this.EVENT_NAMESPACE,{subtype:"submission",component:this,response:t});this.$form.trigger(e),e.isDefaultPrevented()||(this.confirmed=!1,t.feedbacks&&!this.suppress_feedback()&&Charcoal.Admin.feedback(t.feedbacks),t.need_confirmation?this.add_actions_for_confirmation(t.confirmation_label):t.next_url?this.add_action_for_next_url(t.next_url,t.next_url_label):(this.enable_form(),this.form_working=!1,"function"==typeof this.save_callback&&this.save_callback(t)))},Charcoal.Admin.Widget_Quick_Form.prototype.trigger_lang_tab=function(e){$(".modal .form-field").each(function(){var t=$(this).attr("data-lang");t&&(e!==t?this.style.setProperty("display","none","important"):this.style.setProperty("display","block","important"))})},Charcoal.Admin.Widget_Relation=function(t){return Charcoal.Admin.Widget.call(this,t),this.dirty=!1,this},Charcoal.Admin.Widget_Relation.prototype=Object.create(Charcoal.Admin.Widget.prototype),Charcoal.Admin.Widget_Relation.prototype.constructor=Charcoal.Admin.Widget_Relation,Charcoal.Admin.Widget_Relation.prototype.parent=Charcoal.Admin.Widget.prototype,Charcoal.Admin.Widget_Relation.prototype.init=function(){var t=this.element().find(".js-relation-sortable .js-grid-container");return this.element().on("hidden.bs.collapse",'[data-toggle="collapse"]',function(){t.sortable("refreshPositions")}),t.sortable({handle:'[draggable="true"]',placeholder:"panel c-attachment_placeholder",start:function(t,e){e.item.children(".panel-heading").find('[data-toggle="collapse"]').hasClass("collapsed")||e.item.children(".panel-collapse").collapse("hide")}}).disableSelection(),this.listeners(),this},Charcoal.Admin.Widget_Relation.prototype.is_dirty=function(){return this.dirty},Charcoal.Admin.Widget_Relation.prototype.set_dirty_state=function(t){return this.dirty=t,this},Charcoal.Admin.Widget_Relation.prototype.listeners=function(){var r=this;this.element().off("click").on("click.charcoal.relation",".js-add-relation",function(t){t.preventDefault();t=$(this).data("type");if(!t)return!1;var e=$(this).data("id");e?(r.add({id:e,type:t}),r.create_relation(function(){r.reload()})):(e=$(this).data("title")||relationWidgetL10n.editObject,r.create_relation_dialog({title:e,widget_options:{form_data:{target_object_type:t,target_object_id:null}}},function(t){t.success&&(t.obj.id=t.obj_id,r.add(t.obj),r.create_relation(function(){r.reload()}))}))}).on("click.charcoal.relation",".js-relation-actions a",function(t){var e=$(this);if(e.data("action"))switch(t.preventDefault(),e.data("action")){case"edit":var i=e.data("type"),o=e.data("id");if(!i||!o)break;o=e.data("title")||relationWidgetL10n.editObject;r.create_relation_dialog({title:o,widget_options:{form_data:{target_object_type:i,target_object_id:null}}},function(t){t.success&&r.reload()});break;case"unlink":if(!e.data("id"))break;r.confirm({title:relationWidgetL10n.confirmRemoval,message:commonL10n.confirmAction,btnOKLabel:commonL10n.removeObject,callback:function(t){t&&r.remove_relation(e.data("id"),function(){r.reload()})}})}})},Charcoal.Admin.Widget_Relation.prototype.create_relation_dialog=function(t,e){t=t||{};var i=this.opts().data,i={size:BootstrapDialog.SIZE_WIDE,cssClass:"-quick-form",widget_type:"charcoal/admin/widget/quick-form",widget_options:{obj_type:"charcoal/relation/pivot",obj_id:0,form_data:{group:i.group,source_object_type:i.obj_type,source_object_id:i.obj_id,target_object_type:"",target_object_id:0}}},o=$.extend(!0,{},i,t,{}),r=this.dialog(o,function(t){if(t.success){if(!t.widget_id)return!1;Charcoal.Admin.manager().add_widget({id:t.widget_id,type:"charcoal/admin/widget/quick-form",data:{obj_type:o.widget_options.type},obj_id:o.widget_options.id,save_callback:function(t){e(t),this instanceof Charcoal.Admin.Component&&this.id()&&Charcoal.Admin.manager().destroy_component("widgets",this.id()),r.close()}}),Charcoal.Admin.manager().render()}})},Charcoal.Admin.Widget_Relation.prototype.add=function(t){if(!t)return!1;this.set_dirty_state(!0);var e=this.element().find(".js-relation-template").clone();return e.find(".js-relation").attr({"data-id":t.target_object_id,"data-type":t.target_object_type}),this.element().find(".js-relation-sortable").find(".js-grid-container").append(e),this},Charcoal.Admin.Widget_Relation.prototype.will_save=function(t){return t&&$.contains(t.element()[0],this.element()[0])},Charcoal.Admin.Widget_Relation.prototype.save=function(){return!this.is_dirty()&&(this.create_relation(),!0)},Charcoal.Admin.Widget_Relation.prototype.create_relation=function(t){var e=this,i=e.opts(),o={obj_type:i.data.obj_type,obj_id:i.data.obj_id,group:i.data.group,pivots:[]};this.element().find(".js-relation-container").find(".js-relation").each(function(t){var e=$(this),i=e.attr("data-id"),e=e.attr("data-type");o.pivots.push({target_object_id:i,target_object_type:e,position:t})}),$.post("relation/link",o,function(){"function"==typeof t&&t(),e.set_dirty_state(!1)},"json")},Charcoal.Admin.Widget_Relation.prototype.remove_relation=function(t,e){if(!t)return!1;var i=this;$.post("relation/unlink",{pivot_id:t},function(){"function"==typeof e&&e(),i.set_dirty_state(!1)},"json")},Charcoal.Admin.Widget_Relation.prototype.widget_options=function(){return this.opts("widget_options")},Charcoal.Admin.Widget_Search=function(t){return this.EVENT_NAMESPACE=Charcoal.Admin.Widget_Search.EVENT_NAMESPACE,Charcoal.Admin.Widget.call(this,t),this._elem=void 0,!!t&&(void 0!==t.id&&(this.set_element($("#"+t.id)),"object"==typeof t.data&&(this.data=t.data,this.$input=null,this._search_filters=!1,this._search_query=!1,this)))},Charcoal.Admin.Widget_Search.EVENT_NAMESPACE=".charcoal.widget.search",Charcoal.Admin.Widget_Search.prototype=Object.create(Charcoal.Admin.Widget.prototype),Charcoal.Admin.Widget_Search.prototype.constructor=Charcoal.Admin.Widget_Search,Charcoal.Admin.Widget_Search.prototype.parent=Charcoal.Admin.Widget.prototype,Charcoal.Admin.Widget_Search.prototype.widget_options=function(){return this.data},Charcoal.Admin.Widget_Search.prototype.set_remote_widget=function(){},Charcoal.Admin.Widget_Search.prototype.init=function(){var e=this,t=this.element();this.$input=t.find('[name="query"]'),t.on("submit"+this.EVENT_NAMESPACE,function(t){t.preventDefault(),e.submit()}),t.on("reset"+this.EVENT_NAMESPACE,function(t){t.preventDefault(),e.clear()})},Charcoal.Admin.Widget_Search.prototype.submit=function(){return this.set_search_query(this.$input.val()),Charcoal.Admin.manager().get_widgets().forEach(this.dispatch.bind(this)),this.set_search_query(null),this},Charcoal.Admin.Widget_Search.prototype.clear=function(){return this._search_search=!1,this._search_filters=!1,this.$input.val(""),this.submit(),this},Charcoal.Admin.Widget_Search.prototype.parse_search_query=function(t){return"string"!=typeof t||0===(t=t.trim()).length?null:t},Charcoal.Admin.Widget_Search.prototype.parse_search_filters=function(t){var e,o,r=[];return(t=this.parse_search_query(t))&&(t=t.split(/\s/),e=this.data.properties||[],$.each(t,function(t,i){o=[],i=i.replace(/'/g,"\\'"),$.each(e,function(t,e){o.push({property:e,operator:"LIKE",value:"%"+i+"%"})}),r.push({conjunction:"OR",filters:o})})),r.length?r:null},Charcoal.Admin.Widget_Search.prototype.set_search_query=function(t){this._search_search=this.parse_search_query(t),this._search_filters=!1},Charcoal.Admin.Widget_Search.prototype.search_query=function(){return!1===this._search_search?null:this._search_search},Charcoal.Admin.Widget_Search.prototype.search_filters=function(){return!1===this._search_filters&&(this._search_filters=this.parse_search_filters(this._search_search)),this._search_filters},Charcoal.Admin.Widget_Search.prototype.dispatch=function(t){if(t&&t!==this){var e="function"==typeof t.set_search_query,i="function"==typeof t.set_filter;if(!e&&!i)return this;e&&(e=this.search_query(),t.set_search_query(e)),i&&(e=this.search_filters(),t.set_filter("search",e)),void 0!==t.pagination&&(t.pagination.page=1),t.reload(null,!0)}},Charcoal.Admin.Widget_Search.prototype.destroy=function(){this.element().off(this.EVENT_NAMESPACE)},Charcoal.Admin.Widget_Table=function(t){Charcoal.Admin.Widget.call(this,t),this.obj_type=null,this.widget_id=null,this.table_selector=null,this.pagination={page:1,num_per_page:50},this.list_actions={},this.object_actions={},this.template=this.properties=this.properties_options=void 0,this.sortable=!1,this.sortable_handler=null},Charcoal.Admin.Widget_Table.prototype=Object.create(Charcoal.Admin.Widget.prototype),Charcoal.Admin.Widget_Table.prototype.constructor=Charcoal.Admin.Widget_Table,Charcoal.Admin.Widget_Table.prototype.parent=Charcoal.Admin.Widget.prototype,Object.assign(Charcoal.Admin.Widget_Table.prototype,Charcoal.Admin.Mixin_Model_Search),Object.assign(Charcoal.Admin.Widget_Table.prototype,Charcoal.Admin.Mixin_Model_Filters),Object.assign(Charcoal.Admin.Widget_Table.prototype,Charcoal.Admin.Mixin_Model_Orders),Charcoal.Admin.Widget_Table.prototype.init=function(){this.set_properties().bind_events()},Charcoal.Admin.Widget_Table.prototype.set_properties=function(){var t=this.opts();return this.obj_type=t.data.obj_type||this.obj_type,this.widget_id=t.id||this.widget_id,this.table_selector="#"+this.widget_id,this.sortable=t.data.sortable||this.sortable,this.template=t.data.template||this.template,this.collection_ident=t.data.collection_ident||"default","properties"in t.data&&Array.isArray(t.data.properties)&&(this.properties=t.data.properties),"properties_options"in t.data&&$.isPlainObject(t.data.properties_options)&&(this.properties_options=t.data.properties_options),"filters"in t.data&&this.set_filters(t.data.filters),"orders"in t.data&&this.set_orders(t.data.orders),"pagination"in t.data&&$.isPlainObject(t.data.pagination)&&(this.pagination=t.data.pagination),"list_actions"in t.data&&(Array.isArray(t.data.list_actions)?this.list_actions=Object.assign({},t.data.list_actions):$.isPlainObject(t.data.list_actions)&&(this.list_actions=t.data.list_actions)),"object_actions"in t.data&&(Array.isArray(t.data.object_actions)?this.object_actions=Object.assign({},t.data.object_actions):$.isPlainObject(t.data.object_actions)&&(this.object_actions=t.data.object_actions)),this},Charcoal.Admin.Widget_Table.prototype.bind_events=function(){null!==this.sortable_handler&&this.sortable_handler.destroy();var e=this,t=$("tbody.js-sortable",e.table_selector);0 td"),i=t.source.querySelectorAll(":scope > td");e.forEach(function(t,e){i[e].style.width=t.offsetWidth+"px"})}).on("sortable:stop",function(t){t.oldIndex!==t.newIndex&&(t=Array.from(t.newContainer.querySelectorAll(":scope > tr")).map(function(t){return t.classList.contains("draggable-mirror")||t.classList.contains("draggable--original")?"":t.getAttribute("data-id")}).filter(function(t){return""!==t}),$.ajax({method:"POST",url:Charcoal.Admin.admin_url()+"object/reorder",data:{obj_type:e.obj_type,obj_orders:t,starting_order:1},dataType:"json"}).done(function(t){console.debug(t),t.feedbacks&&Charcoal.Admin.feedback(t.feedbacks).dispatch()}))})),$(".js-jump-page-form",e.table_selector).on("submit",function(t){t.preventDefault();t=$(this),t=parseInt(t.find("input").val());t&&(e.pagination.page=t,e.reload(null,!0))}),$(".js-page-switch",e.table_selector).on("click",function(t){t.preventDefault();t=$(this).data("page-num");e.pagination.page=t,e.reload(null,!0)})},Charcoal.Admin.Widget_Table.prototype.widget_options=function(){return{obj_type:this.obj_type,template:this.template,sortable:this.sortable,collection_ident:this.collection_ident,collection_config:{properties:this.properties,properties_options:this.properties_options,search_query:this.get_search_query(),filters:this.get_filters(),orders:this.get_orders(),pagination:this.pagination,list_actions:this.list_actions,object_actions:this.object_actions}}},Charcoal.Admin.Property=function(t){return Charcoal.Admin.Component.call(this,t),this._ident,this._val,this._input_type,t&&("string"==typeof t.ident&&this.set_ident(t.ident),void 0!==t.val&&this.set_val(t.val),void 0!==t.input_type&&this.set_input_type(t.input_type)),this},Charcoal.Admin.Property.prototype=Object.create(Charcoal.Admin.Component.prototype),Charcoal.Admin.Property.prototype.constructor=Charcoal.Admin.Property,Charcoal.Admin.Property.prototype.parent=Charcoal.Admin.Component.prototype,Charcoal.Admin.Property.prototype.element=function(){if(!this._element){if(!this.id())return null;this.set_element("#"+this.id())}return this._element},Charcoal.Admin.Property.prototype.set_ident=function(t){return this._ident=t,this},Charcoal.Admin.Property.prototype.ident=function(){return this._ident},Charcoal.Admin.Property.prototype.set_input_type=function(t){return this._input_type=t,this},Charcoal.Admin.Property.prototype.input_type=function(){return this._input_type},Charcoal.Admin.Property.prototype.set_val=function(t){return this._val=t,this},Charcoal.Admin.Property.prototype.val=function(){return this._val},Charcoal.Admin.Property.prototype.error=function(t){window.console.error(t)},Charcoal.Admin.Property_Input_File=function(t){this.EVENT_NAMESPACE=Charcoal.Admin.Property_Input_File.EVENT_NAMESPACE,this.input_type="charcoal/admin/property/input/file",Charcoal.Admin.Property.call(this,t),this.data=t.data,this.dialog=null,this.set_input_id(t.id).init()},Charcoal.Admin.Property_Input_File.EVENT_NAMESPACE=".charcoal.property.file",Charcoal.Admin.Property_Input_File.prototype=Object.create(Charcoal.Admin.Property.prototype),Charcoal.Admin.Property_Input_File.prototype.constructor=Charcoal.Admin.Property_Input_File,Charcoal.Admin.Property_Input_File.prototype.parent=Charcoal.Admin.Property.prototype,Charcoal.Admin.Property_Input_File.prototype.init=function(){this.input_id&&(this.$input=$("#"+this.input_id),this.$file=$("#"+this.data.file_input_id).or('input[type="file"]',this.$input),this.$hidden=$("#"+this.data.hidden_input_id).or('input[type="hidden"]',this.$input),this.$previewFile=this.$input.find(".js-preview-file"),this.$previewText=this.$input.find(".js-preview-text"),window.elFinderCallback||(window.elFinderCallback={}),this.set_listeners())},Charcoal.Admin.Property_Input_File.prototype.set_listeners=function(){void 0!==this.$input&&(this.$input.on("click"+this.EVENT_NAMESPACE,".js-remove-file",this.remove_file.bind(this)).on("click"+this.EVENT_NAMESPACE,".js-elfinder",this.load_elfinder.bind(this)),this.$file.on("change"+this.EVENT_NAMESPACE,this.change_file.bind(this)),window.elFinderCallback[this.input_id]=this.elfinder_callback.bind(this))},Charcoal.Admin.Property_Input_File.prototype.remove_file=function(t){t.preventDefault(),this.$hidden.val(""),this.$file.val(""),this.$previewFile.empty(),this.$previewText.empty(),this.$input.find(".hide-if-no-file").addClass("d-none"),this.$input.find(".show-if-no-file").removeClass("d-none")},Charcoal.Admin.Property_Input_File.prototype.change_file=function(t){this.$input.find(".hide-if-no-file").addClass("d-none"),this.$input.find(".show-if-no-file").removeClass("d-none"),this.$previewFile.empty(),this.$previewText.empty(),t.target&&t.target.files&&t.target.files[0]&&(t=t.target.files[0],console.log("[Property_Input_File.change_file]",t),this.$input.find(".hide-if-no-file").removeClass("d-none"),this.$input.find(".show-if-no-file").addClass("d-none"),this.$previewText.html(t.name))},Charcoal.Admin.Property_Input_File.prototype.load_elfinder=function(t){t.preventDefault(),this.dialog=BootstrapDialog.show({title:this.data.dialog_title||"",size:BootstrapDialog.SIZE_WIDE,cssClass:"-elfinder",message:$('')})},Charcoal.Admin.Property_Input_File.prototype.elfinder_callback=function(t){var e;this.dialog&&this.dialog.close(),this.$input.find(".hide-if-no-file").addClass("d-none"),this.$input.find(".show-if-no-file").removeClass("d-none"),this.$previewFile.empty(),this.$previewText.empty(),t&&t.url&&(e=decodeURI(t.url).replace(Charcoal.Admin.base_url(),""),console.log("[Property_Input_File.elfinder_callback]",t),this.$hidden.val(e),this.$input.find(".hide-if-no-file").removeClass("d-none"),this.$input.find(".show-if-no-file").addClass("d-none"),this.$previewText.html(t.name))},Charcoal.Admin.Property_Input_File.prototype.set_input_id=function(t){return this.input_id=t,this},Charcoal.Admin.Property_Input_File.prototype.set_input_name=function(t){return this.input_name=t,this},Charcoal.Admin.Property_Input_File.prototype.set_input_val=function(t){return this.input_val=t,this},Charcoal.Admin.Property_Input_File.prototype.destroy=function(){this.$input.off(this.EVENT_NAMESPACE),this.$file.off(this.EVENT_NAMESPACE)},function(s,n,y){"use strict";var l="[Property_Input_Audio_Recorder]",e=".charcoal.property.audio.recorder",a={CLICK:"click"+e},i=0,r=1,c=2,o=3,p=4,d=5,u=6,h=7,_=8,m=9,f=10,g=11,b=12,A=".js-recording-record",C=".js-recording-playback",v=".js-recording-stop",w=".js-recording-reset",L=".js-recording-visualizer",O=".js-recording-time-elapsed",F=".js-recording-time-duration",E="round",P="#EBEDF0",j="#DEE2E6",k=5,N=2,t=null,$=null;function T(t){this.EVENT_NAMESPACE=e,this.PROPERTY_IDLE=i,this.PROPERTY_READY=r,this.PROPERTY_LIVE=c,this.MODE_IDLE=o,this.MODE_PLAYBACK=p,this.MODE_CAPTURE=d,this.MEDIA_IDLE=u,this.MEDIA_LOCKED=h,this.MEDIA_BUSY=_,this.MEDIA_PAUSED=m,this.VISUAL_NONE=f,this.VISUAL_WAVEFORM=g,this.VISUAL_FREQUENCY=b,n.Property.call(this,t),this.data=t.data,this.data.id=t.id,this.readyState=i,this.mediaMode=o,this.mediaState=u,this.mediaVisual=f,this.status=null,this.mediaPromise=null,this.mediaStream=null,this.audioRecorder=null,this.audioContext=null,this.analyserNode=null,this.canvasElement=null,this.canvasContext=null,this.isFirefox=-1'+audioPropertyL10n.unsupportedElement+""),console.log("[Property_Input_Audio.elfinder_callback]",t),this.$hidden.val(e),this.$input.find(".hide-if-no-file").removeClass("d-none"),this.$input.find(".show-if-no-file").addClass("d-none"),this.$previewText.html(t.name),this.$previewFile.append(i))},Charcoal.Admin.Property_Input_ColorPicker=function(t){this.input_type="charcoal/admin/property/input/colorpicker",Charcoal.Admin.Property.call(this,t),this.input_id=null,this.colorpicker_selector=null,this.colorpicker_options=null,this.set_properties(t).create_colorpicker()},Charcoal.Admin.Property_Input_ColorPicker.prototype=Object.create(Charcoal.Admin.Property.prototype),Charcoal.Admin.Property_Input_ColorPicker.prototype.constructor=Charcoal.Admin.Property_Input_ColorPicker,Charcoal.Admin.Property_Input_ColorPicker.prototype.parent=Charcoal.Admin.Property.prototype,Charcoal.Admin.Property_Input_ColorPicker.prototype.set_properties=function(t){this.input_id=t.id||this.input_id,this.colorpicker_selector=t.data.colorpicker_selector||this.colorpicker_selector,this.colorpicker_options=t.data.colorpicker_options||this.colorpicker_options;return this.colorpicker_options=$.extend({},{},this.colorpicker_options),this},Charcoal.Admin.Property_Input_ColorPicker.prototype.create_colorpicker=function(){return $(this.colorpicker_selector).minicolors(this.colorpicker_options),this},Charcoal.Admin.Property_Input_DateTimePicker=function(t){this.input_type="charcoal/admin/property/input/datetimepicker",Charcoal.Admin.Property.call(this,t),this.input_id=null,this.datetimepicker_selector=null,this.datetimepicker_options=null,this.set_properties(t).create_datetimepicker()},Charcoal.Admin.Property_Input_DateTimePicker.prototype=Object.create(Charcoal.Admin.Property.prototype),Charcoal.Admin.Property_Input_DateTimePicker.prototype.constructor=Charcoal.Admin.Property_Input_DateTimePicker,Charcoal.Admin.Property_Input_DateTimePicker.prototype.parent=Charcoal.Admin.Property.prototype,Charcoal.Admin.Property_Input_DateTimePicker.prototype.set_properties=function(t){this.input_id=t.id||this.input_id,this.datetimepicker_selector=t.data.datetimepicker_selector||this.datetimepicker_selector,this.datetimepicker_options=t.data.datetimepicker_options||this.datetimepicker_options;return this.datetimepicker_options=$.extend({},{},this.datetimepicker_options),this},Charcoal.Admin.Property_Input_DateTimePicker.prototype.create_datetimepicker=function(){return $(this.datetimepicker_selector).datetimepicker(this.datetimepicker_options),this},Charcoal.Admin.Property_Input_DualSelect=function(t){this.input_type="charcoal/admin/property/input/dualselect",Charcoal.Admin.Property.call(this,t),this.input_id=null,this.dualselect_selector=null,this.dualselect_options={},this._dualselect=null,this.set_properties(t).init()},Charcoal.Admin.Property_Input_DualSelect.prototype=Object.create(Charcoal.Admin.Property.prototype),Charcoal.Admin.Property_Input_DualSelect.prototype.constructor=Charcoal.Admin.Property_Input_DualSelect,Charcoal.Admin.Property_Input_DualSelect.prototype.parent=Charcoal.Admin.Property.prototype,Charcoal.Admin.Property_Input_DualSelect.prototype.init=function(){this.create_dualselect()},Charcoal.Admin.Property_Input_DualSelect.prototype.set_properties=function(t){this.input_id=t.id||this.input_id,this.dualselect_selector=t.dualselect_selector||t.data.dualselect_selector||this.dualselect_selector,this.dualselect_options=t.dualselect_options||t.data.dualselect_options||this.dualselect_options;return t.data.dualselect_options.searchable&&(this.dualselect_options.search={left:this.dualselect_selector+"_searchLeft",right:this.dualselect_selector+"_searchRight"}),this.dualselect_options=$.extend({},{keepRenderingSort:!1},this.dualselect_options),this},Charcoal.Admin.Property_Input_DualSelect.prototype.create_dualselect=function(){return $(this.dualselect_selector).multiselect(this.dualselect_options),this},Charcoal.Admin.Property_Input_DualSelect.prototype.set_dualselect=function(t){return this._dualselect=t,this},Charcoal.Admin.Property_Input_DualSelect.prototype.dualselect=function(){return this._dualselect},Charcoal.Admin.Property_Input_DualSelect.prototype.destroy=function(){var t=this.dualselect();t&&t.remove()},Charcoal.Admin.Property_Input_Geometry_Widget=function(t){t.input_type="charcoal/admin/property/input/geometry-widget",Charcoal.Admin.Property.call(this,t);var e=this;this._controller=void 0,this._object_inc=0,this._startGeometry=!1,this._map_options=t.data.map_options,this._map_options.multiple=!1;var i={GOOGLE_MAP_LOADED:"google-map-loaded"+Charcoal.Admin.Property_Input_Geometry_Widget.EVENT_NAMESPACE};"undefined"==typeof google&&(!0!==window._geolocation_tmp_google&&(window._geolocation_tmp_google=!0,$.getScript("https://maps.googleapis.com/maps/api/js?sensor=false&callback=_geolocation_tmp_google_onload_function&key="+this._map_options.api_key,function(){}),window._geolocation_tmp_google_onload_function=function(){document.dispatchEvent(new Event(i.GOOGLE_MAP_LOADED))}),document.addEventListener(i.GOOGLE_MAP_LOADED,function(){e.init()},{once:!0}))},Charcoal.Admin.Property_Input_Geometry_Widget.EVENT_NAMESPACE=".geolocation",Charcoal.Admin.Property_Input_Geometry_Widget.prototype=Object.create(Charcoal.Admin.Property.prototype),Charcoal.Admin.Property_Input_Geometry_Widget.prototype.constructor=Charcoal.Admin.Property_Input_Geometry_Widget,Charcoal.Admin.Property_Input_Geometry_Widget.prototype.parent=Charcoal.Admin.Property.prototype,Charcoal.Admin.Property_Input_Geometry_Widget.prototype.init=function(){if(void 0!==window._tmp_google_onload_function&&delete window._tmp_google_onload_function,"undefined"==typeof BB||"undefined"==typeof google)return console.error("Plugins not loaded"),!1;void 0===this.opts().id&&console.error("Missing ID");var t=this.default_styles(),e=this.default_map_options(),e=$.extend(!0,e,this._map_options),i=this.element().find("input[type=hidden]").val();if(i){var o,r={object1:{ident:"object1",paths:this.reverse_translate_coords(i),editable:!0,draggable:!0,type:e.geometry_type,styles:t}},n={},a=0;for(o in r)a++,n[o]=r[o],n[o].styles=$.extend(r[o].styles,t);n&&(e.places=n),a&&(this._object_inc=a)}this.$map_maker=this.element().find(".js-map-maker"),this._controller=new window.BB.gmap.controller(this.element().find(".js-map-maker-map").get(0),e),this.controller().init().ready(function(t){t.fit_bounds(),t.remove_focus()}),this.controller().set_styles([{featureType:"poi",elementType:"all",stylers:[{visibility:"off"}]}]),this.controller().remove_focus(),this.link_related_property();for(var s=this,l=e.geometry_type,c=(s.hide_marker_toolbar(),"object"+s.object_index());s.controller().get_place(c);)c="object"+s.object_index();this.element().on("click",function(){var t=s.controller().export();if(t&&0!==Object.keys(t.places).length)return!1;if(!s._startGeometry)switch(s._startGeometry=!0,l){case"marker":case"line":case"polygon":s.controller().create_new(l,c)}}),this.element().on("click",".js-reset",function(t){s._startGeometry=!1,t.preventDefault(),s.controller().reset()})},Charcoal.Admin.Property_Input_Geometry_Widget.prototype.link_related_property=function(){var t,e=this.opts().data.related_property;if(!e)return!1;for(t in e)"charcoal/admin/object/geometry-blueprint"===e[t].obj_type&&this.related_object_geometry(t)},Charcoal.Admin.Property_Input_Geometry_Widget.prototype.related_object_geometry=function(t){var e=this.opts().data.related_property[t].obj_type;if(!e)return!1;var r=[],n=!1,a=this;$.ajax({url:Charcoal.Admin.admin_url()+"object/load",data:{obj_type:e},type:"GET",error:function(){},success:function(t){n=!0,r=t.collection}}),this.element().parents("fieldset").on("change",'[name="'+t+'"]',function(t){if(!n)return!1;for(var e in a.controller().reset(),r){var i,o;r[e].id===$(t.currentTarget).val()&&(e=r[e].geometry,i=a.default_styles(),o=a.default_map_options(),o=$.extend(!0,o,a._map_options),e={paths:a.reverse_translate_coords(e),editable:!0,draggable:!0,type:o.geometry_type,styles:i},a.controller().add_place("object1",e),a.controller().fit_bounds())}})},Charcoal.Admin.Property_Input_Geometry_Widget.prototype.controller=function(){return this._controller},Charcoal.Admin.Property_Input_Geometry_Widget.prototype.object_index=function(){return++this._object_inc},Charcoal.Admin.Property_Input_Geometry_Widget.prototype.default_styles=function(){return{strokeColor:"#000000",strokeOpacity:.8,strokeWeight:3,fillColor:"#ffffff",fillOpacity:.35,hover:{strokeColor:"#000000",strokeOpacity:1,strokeWeight:2,fillColor:"#ffffff",fillOpacity:.5},focused:{fillOpacity:.8}}},Charcoal.Admin.Property_Input_Geometry_Widget.prototype.default_map_options=function(){return{default_styles:this.default_styles(),use_clusterer:!1,map:{center:{x:45.3712923,y:-73.9820994},zoom:14,mapType:"roadmap",coordsType:"inpage",map_mode:"default"}}},Charcoal.Admin.Property_Input_Geometry_Widget.prototype.display_marker_toolbar=function(){this.$map_maker.addClass("is-header-open")},Charcoal.Admin.Property_Input_Geometry_Widget.prototype.hide_marker_toolbar=function(){this.$map_maker.removeClass("is-header-open")},Charcoal.Admin.Property_Input_Geometry_Widget.prototype.translate_coords=function(t){for(var e=0,i=t.length,o=[];e'),console.log("[Property_Input_Image.elfinder_callback]",t),this.$hidden.val(e),this.$input.find(".hide-if-no-file").removeClass("d-none"),this.$input.find(".show-if-no-file").addClass("d-none"),this.$previewText.html(t.name),this.$previewFile.append(i))},Charcoal.Admin.Property_Input_Map_Widget=function(t){t.input_type="charcoal/admin/property/input/map-widget",Charcoal.Admin.Property.call(this,t);var e=this;this._controller=void 0,this._object_inc=0,"undefined"==typeof google?(window._tmp_google_onload_function=function(){e.init()},$.getScript("https://maps.googleapis.com/maps/api/js?sensor=false&callback=_tmp_google_onload_function&key="+t.data.api_key,function(){})):e.init()},Charcoal.Admin.Property_Input_Map_Widget.prototype=Object.create(Charcoal.Admin.Property.prototype),Charcoal.Admin.Property_Input_Map_Widget.prototype.constructor=Charcoal.Admin.Property_Input_Map_Widget,Charcoal.Admin.Property_Input_Map_Widget.prototype.parent=Charcoal.Admin.Property.prototype,Charcoal.Admin.Property_Input_Map_Widget.prototype.init=function(){if(void 0!==window._tmp_google_onload_function&&delete window._tmp_google_onload_function,"undefined"==typeof BB||"undefined"==typeof google)return console.error("Plugins not loaded"),!1;var t=this.opts(),e=(void 0===t.id&&console.error("Missing ID"),{strokeColor:"#000000",strokeOpacity:.8,strokeWeight:3,fillColor:"#ffffff",fillOpacity:.35,hover:{strokeColor:"#000000",strokeOpacity:1,strokeWeight:2,fillColor:"#ffffff",fillOpacity:.5},focused:{fillOpacity:.8}}),i={default_styles:e,use_clusterer:!1,map:{center:{x:45.3712923,y:-73.9820994},zoom:14,mapType:"roadmap",coordsType:"inpage",map_mode:"default"}},i=$.extend(!0,i,t.data),t=this.element().find("input[type=hidden]").val();if(t){var o,r=JSON.parse(t),n={},a=0;for(o in r)a++,n[o]=r[o],n[o].styles=$.extend(r[o].styles,e);n&&(i.places=n),a&&(this._object_inc=a)}this.$map_maker=this.element().find(".js-map-maker"),this._controller=new window.BB.gmap.controller(this.element().find(".js-map-maker-map").get(0),i),this.controller().init().ready(function(t){t.fit_bounds(),t.remove_focus()}),this.controller().set_styles([{featureType:"poi",elementType:"all",stylers:[{visibility:"off"}]}]),this.controller().remove_focus();var s=this,l="object";this.element().on("change",'[name="'+this.opts("controls_name")+'"]',function(t){var e=$(t.currentTarget).val();switch(e){case"display_marker_toolbar":s.display_marker_toolbar();break;case"add_line":case"add_polygon":s.hide_marker_toolbar();for(var i=l+s.object_index();s.controller().get_place(i);)i=l+s.object_index();s.controller().create_new(e.replace("add_",""),i)}}),this.element().on("click",".js-add-marker",function(t){t.preventDefault();for(var e=l+s.object_index();s.controller().get_place(e);)e=l+s.object_index();s.controller().create_new("marker",e)}),this.element().on("click",".js-add_place_by_address",function(t){t.preventDefault();t=s.element().find(".js-address").text();if(!t)return!1;s.controller().add_place_by_address("object"+s.object_index(),t,{type:"marker",draggable:!0,editable:!0,loaded_callback:function(t){s.controller().map().setCenter(t.object().getPosition())}})}),this.element().on("click",".js-reset",function(t){t.preventDefault(),s.controller().reset()})},Charcoal.Admin.Property_Input_Map_Widget.prototype.controller=function(){return this._controller},Charcoal.Admin.Property_Input_Map_Widget.prototype.object_index=function(){return++this._object_inc},Charcoal.Admin.Property_Input_Map_Widget.prototype.display_marker_toolbar=function(){this.$map_maker.addClass("is-header-open")},Charcoal.Admin.Property_Input_Map_Widget.prototype.hide_marker_toolbar=function(){this.$map_maker.removeClass("is-header-open")},Charcoal.Admin.Property_Input_Map_Widget.prototype.save=function(){var t=this.controller().export(),t="object"==typeof t.places?t.places:{};return this.element().find("input[type=hidden]").val(JSON.stringify(t)),!0},Charcoal.Admin.Property_Input_Range=function(t){this.EVENT_NAMESPACE=Charcoal.Admin.Property_Input_Range.EVENT_NAMESPACE,Charcoal.Admin.Property.call(this,t),this.input_type="charcoal/admin/property/input/range",this.data=t.data,this.data.id=t.id,this.$output=null,this.$input=null,this.init()},Charcoal.Admin.Property_Input_Range.EVENT_NAMESPACE=".charcoal.property.range",Charcoal.Admin.Property_Input_Range.prototype=Object.create(Charcoal.Admin.Property.prototype),Charcoal.Admin.Property_Input_Range.prototype.constructor=Charcoal.Admin.Property_Input_Range,Charcoal.Admin.Property_Input_Range.prototype.parent=Charcoal.Admin.Property.prototype,Charcoal.Admin.Property_Input_Range.prototype.init=function(){if(!0===this.data.show_range_value&&"string"==typeof this.data.range_value_location){var t,e=this.id(),i=this.data.range_value_location;switch(i){case"prefix":this.$output=$("#"+e+"_prefix_text");break;case"suffix":this.$output=$("#"+e+"_suffix_text");break;default:"#"===i[0]||"."===i[0]?this.$output=$(i):this.$output=$("#"+e+"_"+i)}this.$output.addClass("js-show-range-value"),this.$input=$("#"+e),this.$input.exists()&&this.$output.exists()&&(this.on_change(this.$input,this.$output),t="oninput"in this.$input[0]?"input":"change",this.$input.on(t+this.EVENT_NAMESPACE,this.on_change.bind(this,this.$input,this.$output)))}},Charcoal.Admin.Property_Input_Range.prototype.on_change=function(t,e){e.text(e.text().replace(/[\d\.]+/,t.val()))},Charcoal.Admin.Property_Input_Range.prototype.destroy=function(){this.element().off(this.EVENT_NAMESPACE),this.$input&&this.$input.off(this.EVENT_NAMESPACE)},Charcoal.Admin.Property_Input_SelectPicker=function(t){Charcoal.Admin.Property.call(this,t),this.input_type="charcoal/admin/property/input/select",this.input_id=null,this.select_selector=null,this.select_options=null,this.set_properties(t).create_select()},Charcoal.Admin.Property_Input_SelectPicker.prototype=Object.create(Charcoal.Admin.Property.prototype),Charcoal.Admin.Property_Input_SelectPicker.prototype.constructor=Charcoal.Admin.Property_Input_SelectPicker,Charcoal.Admin.Property_Input_SelectPicker.prototype.parent=Charcoal.Admin.Property.prototype,Charcoal.Admin.Property_Input_SelectPicker.prototype.set_properties=function(t){this.input_id=t.id||this.input_id,this.select_selector=t.data.select_selector||this.select_selector,this.select_options=t.data.select_options||this.select_options;return this.select_options=$.extend({},{},this.select_options),this},Charcoal.Admin.Property_Input_SelectPicker.prototype.create_select=function(){return $(this.select_selector).selectpicker(this.select_options),this},function(){function t(t){Charcoal.Admin.Property.call(this,t),this.input_type="charcoal/admin/property/input/selectize",this.input_id=null,this.obj_type=null,this.remote_source=null,this.copy_items=!1,this.title=null,this.translations=null,this.pattern=null,this.multiple=!1,this.separator=",",this.selectize=null,this.selectize_selector=null,this.form_data={},this.form_ident=null,this.form_widget=null,this.selectize_options={},this.choice_obj_map={},this.selectize_property_ident=null,this.selectize_property=null,this.selectize_obj_type=null,this.selectize_templates={},this.clipboard=null,this.allow_update=null,this.set_properties(t).init(),this.selectize_init()}t.prototype=Object.create(Charcoal.Admin.Property.prototype),t.constructor=Charcoal.Admin.Property_Input_Selectize,t.parent=Charcoal.Admin.Property.prototype,t.prototype.init=function(){},t.prototype.selectize_init=function(){this.init_selectize(),this.init_clipboard(),this.init_allow_update(),this.init_allow_create();var e=this;this.selectize.on("update_item",function(t){e.create_item(null,t.callback,{id:t.value,step:0})})},t.prototype.set_properties=function(t){this.input_id=t.id||this.input_id,this.obj_type=t.data.obj_type||this.obj_type,this.remote_source=t.data.remote_source||this.remote_source,this.copy_items=t.data.copy_items||this.copy_items,this.allow_update=t.data.allow_update||this.allow_update,this.allow_create=t.data.allow_create||this.allow_create,this.title=t.data.title||this.title,this.dialog_title_update=t.data.dialog_title_update||this.dialog_title_update,this.dialog_title_create=t.data.dialog_title_create||this.dialog_title_create,this.translations=t.data.translations||this.translations,this.pattern=t.data.pattern||this.pattern,this.multiple=t.data.multiple||this.multiple,this.separator=t.data.multiple_separator||this.multiple_separator||",",this.form_data=t.data.form_data||this.form_data,this.form_ident=t.data.form_ident||this.form_ident,this.form_widget=t.data.form_widget||this.form_widget,this.selectize_selector=t.data.selectize_selector||this.selectize_selector,this.selectize_options=t.data.selectize_options||this.selectize_options,this.choice_obj_map=t.data.choice_obj_map||this.choice_obj_map,this.selectize_property_ident=t.data.selectize_property_ident||this.selectize_property_ident,this.selectize_property=t.data.selectize_property||this.selectize_property,this.selectize_obj_type=t.data.selectize_obj_type||this.selectize_obj_type,this.selectize_templates=t.data.selectize_templates||this.selectize_templates,this.$input=$(this.selectize_selector||"#"+this.input_id),t=this.multiple?{drag_drop:{},charcoal_item:{}}:{charcoal_item:{}};var e=this.obj_type,i=this.remote_source,o={plugins:t,formData:{},delimiter:this.separator,persist:!0,preload:"focus",openOnFocus:!0,labelField:"label",searchField:["value","label"],dropdownParent:this.$input.closest(".form-field"),render:{},onItemRemove:function(t){this.refreshOption(t)},createFilter:function(t){for(var e in this.options)if((e=this.options[e]).label===t)return!1;return!0},onInitialize:function(){var e=this;e.sifter.iterator(this.items,function(t){e.refreshItem(t,e.getItem(t))}),e.sifter.iterator(this.options,function(t){e.refreshOption(t.value)})}};if(this.selectize_templates.item&&(o.render.item=function(t,e){return t.item_render?''+t.item_render+"
":''+e(t[o.labelField])+"
"}),this.selectize_templates.option&&(o.render.option=function(t,e){return t.option_render?''+t.option_render+"
":''+e(t[o.labelField])+"
"}),i?(o.create=function(t){return{value:t,label:t}},o.load=this.load_from_remote.bind(this)):e?(o.create=this.create_item.bind(this),o.load=this.load_items.bind(this)):(o.plugins.create_on_enter={},o.create=function(t){return{value:t,label:t}}),this.selectize_options.splitOn){var r=this.selectize_options.splitOn;if("array"===$.type(r)){for(var n=r.length-1;0<=n;n--)switch(r[n]){case"comma":r[n]="\\s*,\\s*";break;case"tab":r[n]="\\t+";break;default:r[n]=r[n].replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}r=r.join("|")}this.selectize_options.splitOn=new RegExp(r)}return this.selectize_options=$.extend(!0,{},o,this.selectize_options),this},t.prototype.create_item=function(i,o,t){var r=this.form_data||{},n=this,e=this.obj_type,a=this.title,s=this.translations,l=this.selectize_options,c=(t=t||{}).step||0,p=this.form_ident,d=this.form_widget||"charcoal/admin/widget/quick-form",u=null,h=t.id||null,_=this.selectize_property,m=this.selectize_property_ident,f=this.selectize_obj_type,t=(h?this.dialog_title_update&&(a=this.dialog_title_update):this.dialog_title_create&&(a=this.dialog_title_create),p&&"object"==typeof p&&(!h&&p.create?(p=p.create,a+=" - "+s.statusTemplate.replaceMap({"[[ current ]]":1,"[[ total ]]":2}),c=1,u="Next"):h&&p.update?(p=p.update,2===c&&(a+=" - "+s.statusTemplate.replaceMap({"[[ current ]]":2,"[[ total ]]":2}),u="Finish")):p=null),$.isEmptyObject(l.formData)?(i&&(r[this.choice_obj_map.label]=i),r.form_ident=p,r.submit_label=u):i&&(r=$.extend({},l.formData),$.each(r,function(t,e){":input"===e&&(r[t]=i)})),{title:a,size:BootstrapDialog.SIZE_WIDE,cssClass:"-quick-form",dialog_options:{onhide:function(){void 0!==n.widget_id&&Charcoal.Admin.manager().destroy_component("widgets",n.widget_id),o({return:!1})}},widget_type:d,with_data:!0,widget_options:{obj_type:e,obj_id:h,form_data:r}}),y=(0',title:"Remove",className:"selectize-button-remove",append:!0},t),this.require("buttons");var e,i;"single"!==this.settings.mode&&(t=t,(i=e=this).addButton(e,t,function(t){t.preventDefault(),i.isLocked||(t=$(t.currentTarget).parent(),i.setActiveItem(t),i.deleteSelection()&&i.setCaret(i.items.length))}))}),Selectize.define("btn_update",function(t){t=$.extend({label:'',title:"Update",className:"selectize-button-update",append:!0},t),this.require("buttons");var e,i;"single"!==this.settings.mode&&(t=t,(i=e=this).addButton(e,t,function(t){t.preventDefault(),i.isLocked||(t=$(t.currentTarget).parent(),i.setActiveItem(t),i.trigger("update_item",{item:t,value:t.eq(0).data("value"),callback:function(t){t&&t.value&&(i.updateOption(t.value,t),i.refreshOption(t.value,t),i.refreshItem(t.value,i.getItem(t.value)))}}))}))}),Selectize.define("buttons",function(){this.buttonOffset=40,this.currentButtonOffset=0,this.addButton=function(r,t,e){var i,n=r,a='/g,">").replace(/"/g,""")+'" style="right:'+n.currentButtonOffset+'px">'+t.label+"";n.currentButtonOffset+=n.buttonOffset;r.setup=(i=n.setup,function(){var o;t.append&&(o=n.settings.render.item,n.settings.render.item=function(){return t=o.apply(r,arguments),e=n.currentButtonOffset,i=$(t),e=i.hasClass("item")?(i.css("padding-right",e+8+"px"),i[0]):t,i=a,(t=$(e)).hasClass("item")?(t.append($(i)),t[0]):e;var t,e,i}),i.apply(r,arguments),r.$control.on("mousedown","."+t.className,function(t){t.preventDefault(),n.$control.data("ui-sortable")&&(n.$control.sortable("disable"),$(document).on("mouseup.sortable",function(){$(document).off("mouseup.sortable"),n.$control.sortable("enable")}))}),r.$control.on("click","."+t.className,function(t){"function"==typeof e&&e(t)})})}}),Selectize.define("create_on_blur",function(){var t,e;"multi"===this.settings.mode&&((t=this).onBlur=(e=t.onBlur,function(){return""!==this.$control_input.val().trim()&&t.createItem(this.$control_input.val()),e.apply(this,arguments)}))}),Selectize.define("create_on_enter",function(){var e,i;"multi"===this.settings.mode&&((e=this).onKeyUp=(i=e.onKeyUp,function(t){return 13===t.keyCode&&""!==this.$control_input.val().trim()&&e.createItem(this.$control_input.val()),i.apply(this,arguments)}))}),Selectize.define("charcoal_item",function(o){o=$.extend({classField:"class",colorField:"color"},o);var r=this,n=null;this.refreshItem=function(t,e){var i=r.options[t];if(i.hasOwnProperty(o.colorField)&&i[o.colorField]&&(e.addClass("has-color"),e.css("border-left-color",i[o.colorField])),i.hasOwnProperty(o.classField)&&e.addClass(i[o.classField]),n)return n.apply(this,arguments)},this.refreshOption=function(t){var e=r.options[t],i=(r.refreshOptions(!1),r.getElementWithValue(t,r.$dropdown_content.find(".option")));if(e.hasOwnProperty(o.colorField)&&e[o.colorField]&&(i.addClass("has-color"),i.css("border-left-color",e[o.colorField])),n)return n.apply(this,arguments)},this.settings.onOptionAdd=(n=null,r.settings.hasOwnProperty("onOptionAdd")&&(n=r.settings.onOptionAdd),r.refreshOption),this.settings.onItemAdd=(n=null,r.settings.hasOwnProperty("onItemAdd")&&(n=r.settings.onItemAdd),r.refreshItem)}),function(){function t(t){this.input_type="charcoal/admin/property/input/selectize/list",this.input_id=null,this.obj_type=null,this.copy_items=!1,this.title=null,this.translations=null,this.pattern=null,this.multiple=!1,this.separator=",",this.selectize=null,this.selectize_selector=null,this.form_ident=null,this.selectize_options={},this.clipboard=null,this.allow_update=!1,this.set_properties(t).init()}t.prototype=Object.create(Charcoal.Admin.Property_Input_Selectize.prototype),t.constructor=Charcoal.Admin.Property_Input_Selectize,t.parent=Charcoal.Admin.Property_Input_Selectize.prototype,t.prototype.set_properties=function(t){this.input_id=t.id||this.input_id,this.obj_type=t.data.obj_type||this.obj_type,this.copy_items=t.data.copy_items||this.copy_items,this.allow_update=t.data.allow_update||this.allow_update,this.title=t.data.title||this.title,this.translations=t.data.translations||this.translations,this.pattern=t.data.pattern||this.pattern,this.multiple=t.data.multiple||this.multiple,this.separator=t.data.multiple_separator||this.multiple_separator||",",this.form_ident=t.data.form_ident||this.form_ident,this.selectize_selector=t.data.selectize_selector||this.selectize_selector,this.selectize_options=t.data.selectize_options||this.selectize_options,this.$input=$(this.selectize_selector||"#"+this.input_id),t=this.multiple?{drag_drop:{},charcoal_item:{}}:{charcoal_item:{}};var e=this.obj_type,t={plugins:t,formData:{},delimiter:this.separator,persist:!0,preload:"focus",openOnFocus:!0,searchField:["value","label"],dropdownParent:this.$input.closest(".form-field"),createFilter:function(t){for(var e in this.options)if((e=this.options[e]).label===t)return!1;return!0},onInitialize:function(){var i=this;i.sifter.iterator(this.items,function(t){var e=i.options[t],t=i.getItem(t);e.color&&t.css("background-color",e.color)})}};if(e?(t.create=this.create_item.bind(this),t.load=this.load_items.bind(this)):(t.plugins.create_on_enter={},t.create=function(t){return{value:t,label:t}}),this.selectize_options.splitOn){var i=this.selectize_options.splitOn;if("array"===$.type(i)){for(var o=i.length-1;0<=o;o--)switch(i[o]){case"comma":i[o]="\\s*,\\s*";break;case"tab":i[o]="\\t+";break;default:i[o]=i[o].replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}i=i.join("|")}this.selectize_options.splitOn=new RegExp(i)}return this.selectize_options=$.extend(!0,{},t,this.selectize_options),this},Charcoal.Admin.Property_Input_Selectize_List=t}((jQuery,document)),Charcoal.Admin.Property_Input_Selectize_Tags=function(t){this.input_type="charcoal/admin/property/input/selectize/tags",this.input_id=null,this.obj_type=null,this.copy_items=!1,this.title=null,this.multiple=!1,this.separator=",",this._tags=null,this.form_widget=null,this.selectize=null,this.selectize_selector=null,this.selectize_options={},this.clipboard=null,this.set_properties(t).init()},Charcoal.Admin.Property_Input_Selectize_Tags.prototype=Object.create(Charcoal.Admin.Property.prototype),Charcoal.Admin.Property_Input_Selectize_Tags.prototype.constructor=Charcoal.Admin.Property_Input_Selectize_Tags,Charcoal.Admin.Property_Input_Selectize_Tags.prototype.parent=Charcoal.Admin.Property.prototype,Charcoal.Admin.Property_Input_Selectize_Tags.prototype.init=function(){if("function"!=typeof $.fn.sortable)return Charcoal.Admin.loadScript("https://ajax.googleapis.com/ajax/libs/jqueryui/1.13.2/jquery-ui.min.js",this.init.bind(this)),this;this.init_selectize(),this.init_clipboard()},Charcoal.Admin.Property_Input_Selectize_Tags.prototype.set_properties=function(t){this.input_id=t.id||this.input_id,this.obj_type=t.data.obj_type||this.obj_type,this.copy_items=t.data.copy_items||this.copy_items,this.title=t.data.title||this.title,this.multiple=t.data.multiple||this.multiple,this.separator=t.data.multiple_separator||this.multiple_separator||",",this.form_widget=t.data.form_widget||this.form_widget,this.selectize_selector=t.data.selectize_selector||this.selectize_selector,this.selectize_options=t.data.selectize_options||this.selectize_options,this.$input=$(this.selectize_selector||"#"+this.input_id),t=this.multiple?["remove_button","drag_drop","charcoal_item"]:["charcoal_item"];var e=this.obj_type,t={plugins:t,formData:{},delimiter:this.separator,persist:!1,preload:!0,openOnFocus:!0,dropdownParent:this.$input.closest(".form-field"),createFilter:function(t){for(var e in this.options)if((e=this.options[e]).text===t)return!1;return!0},onInitialize:function(){var i=this;i.sifter.iterator(this.items,function(t){var e=i.options[t],t=i.getItem(t);e.color&&t.css("background-color",e.color)})}};if(e?(t.create=this.create_tag.bind(this),t.load=this.load_tags.bind(this)):(t.plugins.push("create_on_enter"),t.create=function(t){return{value:t,text:t}}),this.selectize_options=$.extend({},t,this.selectize_options),this.selectize_options.splitOn){var i=this.selectize_options.splitOn;if("array"===$.type(i)){for(var o=i.length-1;0<=o;o--)switch(i[o]){case"comma":i[o]="\\s*,\\s*";break;case"tab":i[o]="\\t+";break;default:i[o]=i[o].replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}i=i.join("|")}this.selectize_options.splitOn=new RegExp(i)}return this},Charcoal.Admin.Property_Input_Selectize_Tags.prototype.create_tag=function(i,o){var e=this.obj_type,r=this.id,t=this.title,n=this.selectize_options,a=this.form_widget||"charcoal/admin/widget/quick-form",s={},n=($.isEmptyObject(n.formData)?s={name:i}:(s=$.extend({},n.formData),$.each(s,function(t,e){":input"===e&&(s[t]=i)})),{title:t,size:BootstrapDialog.SIZE_WIDE,cssClass:"-quick-form",dialog_options:{onhide:function(){o({return:!1})}},widget_type:a,widget_options:{obj_type:e,obj_id:r,form_data:s}}),l=this.dialog(n,function(t){if(t.success){if(!t.widget_id)return!1;Charcoal.Admin.manager().add_widget({id:t.widget_id,type:a,data:{obj_type:e},obj_id:r,save_callback:function(t){var e=t.obj.id;"name"in t.obj&&t.obj.name&&(e=t.obj.name[Charcoal.Admin.lang()]||t.obj.name),o({value:t.obj.id,text:e,color:t.obj.color,class:"new"}),l.close()}})}})},Charcoal.Admin.Property_Input_Selectize_Tags.prototype.load_tags=function(t,r){var e=this.obj_type;if(!t.length)return r();$.ajax({url:Charcoal.Admin.admin_url()+"object/load",data:{obj_type:e},type:"GET",error:function(){r()},success:function(t){var e=[];for(i in t.collection){var i,o=(i=t.collection[i]).id;"name"in i&&i.name&&(o=i.name[Charcoal.Admin.lang()]||i.name),e.push({value:i.id,text:o,color:i.color})}r(e)}})},Charcoal.Admin.Property_Input_Selectize_Tags.prototype.dialog=Charcoal.Admin.Widget.prototype.dialog,Charcoal.Admin.Property_Input_Selectize_Tags.prototype.onKeyDown=function(t){var e=this,i=!1,o=/Mac/.test(navigator.userAgent);if(e.isLocked&&9!==t.keyCode&&t.preventDefault(),"undefined"===$.type(e.isCmdDown)&&(i=!0,e.isCmdDown=t[o?"metaKey":"ctrlKey"]),e.isCmdDown&&67===t.keyCode){if(i&&(e.isCmdDown=void 0),e.$activeItems.length)for(var r=[],n=0,a=e.$activeItems.length;n{var e=t.getData();if(void 0!==e.active){const i=t.getElement();!0!==e.active?i.style.backgroundColor="#FFEFEF":i.style.backgroundColor=null}},footerElement:this.tabulator_selector+"-tabulator-footer"},"function"==typeof t.pre_tabulator_options&&t.pre_tabulator_options.apply(this),this.tabulator_options=Object.assign({},i,this.tabulator_options),"function"==typeof t.post_tabulator_options&&t.post_tabulator_options.apply(this),this.parse_tabulator_options(),this;console.error("Tabulator input element or selector not defined")}},c.Admin.Property_Input_Tabulator.prototype.parse_tabulator_options=function(){if("newRowData"===this.tabulator_options?.tabEndNewRow&&(this.tabulator_options.tabEndNewRow=this.input_options.newRowData||!0),this.tabulator_options?.autoColumns)!this.tabulator_options?.autoColumnsDefinitions&&(this.tabulator_options?.columns||this.input_options?.defaultColumnTemplate||this.input_options?.autoColumnTemplates)&&(this.tabulator_options.autoColumnsDefinitions=t=>{Array.isArray(this.tabulator_options?.columns)&&(t=t.filter(({field:e})=>!this.tabulator_options.columns.some(({field:t})=>e===t)),t=this.tabulator_options.columns.concat(t));const n=this.input_options?.defaultColumnTemplate||{},a=this.input_options?.autoColumnTemplates;if(!n&&!a)return t;const s="number"==typeof this.input_options?.autoColumnStartIndex;return t.map(e=>{const i=e.field;if(void 0!==i){if(a)for(const r in a){let t;try{t=l(r)}catch(t){console.error("[Charcoal.Property.Tabulator]","Bad autoColumnTemplates key:",r,t);break}var o=a[r];t instanceof RegExp?t.test(i)&&((e=Object.assign({},e,n,o)).title=i.replace(t,o.title),e.field=i.replace(t,o.field),s&&e.autoColumnStartIndex&&(this.input_options.autoColumnStartIndex=parseInt(i.replace(t,e.autoColumnStartIndex))),delete e.autoColumnStartIndex):t===i&&((e=Object.assign({},e,n,o)).title=o.title,e.field=o.field)}else n&&(e=Object.assign({},e,n));e=this.parse_tabulator_column_definition(e)}return e})});else if(this.tabulator_options?.columns)if(this.input_options?.defaultColumnTemplate){const e=this.input_options.defaultColumnTemplate;this.tabulator_options.columns=this.tabulator_options.columns.map(t=>(t=Object.assign({},e,t),t=this.parse_tabulator_column_definition(t)))}else this.tabulator_options.columns=this.tabulator_options.columns.map(t=>this.parse_tabulator_column_definition(t));Array.isArray(this.tabulator_options?.groupContextMenu)&&(this.tabulator_options.groupContextMenu=this.tabulator_options.groupContextMenu.map(t=>this.parse_tabulator_column_menu_item(t))),Array.isArray(this.tabulator_options?.rowContextMenu)&&(this.tabulator_options.rowContextMenu=this.tabulator_options.rowContextMenu.map(t=>this.parse_tabulator_row_menu_item(t)))},c.Admin.Property_Input_Tabulator.prototype.parse_tabulator_column_definition=function(t){if(Array.isArray(t?.clickMenu)&&(t.clickMenu=t.clickMenu.map(t=>this.parse_tabulator_cell_menu_item(t))),Array.isArray(t?.contextMenu)&&(t.contextMenu=t.contextMenu.map(t=>this.parse_tabulator_cell_menu_item(t))),Array.isArray(t?.headerContextMenu)&&(t.headerContextMenu=t.headerContextMenu.map(t=>this.parse_tabulator_column_menu_item(t))),Array.isArray(t?.headerMenu)&&(t.headerMenu=t.headerMenu.map(t=>this.parse_tabulator_column_menu_item(t))),"string"==typeof t?.cellClick&&(t.cellClick=this.parse_tabulator_cell_click_action(t.cellClick)),"string"==typeof t?.formatterIcon){const e=t.formatterIcon;delete t.formatterIcon,t.formatter=()=>``}return("required"===t?.validator||Array.isArray(t?.validator)&&t.validator.includes("required"))&&(t.title+=' *'),t},c.Admin.Property_Input_Tabulator.prototype.parse_tabulator_cell_click_action=function(t){switch(t){case"addRow":return(t,e)=>{this.add_row(e.getRow()),this.update_input_data()};case"removeRow":return(t,e)=>{this.tabulator_instance.deleteRow(e.getRow()),this.update_input_data()};case"toggleCell":return(t,e)=>{e.setValue(!e.getValue())}}return null},c.Admin.Property_Input_Tabulator.prototype.parse_tabulator_cell_menu_item=function(t){return"string"==typeof t?.action&&"function"==typeof i[t.action]&&(t.action=i[t.action].bind(this)),t},c.Admin.Property_Input_Tabulator.prototype.parse_tabulator_column_menu_item=function(t){return"string"==typeof t?.action&&"function"==typeof o[t.action]&&(t.action=o[t.action].bind(this)),t},c.Admin.Property_Input_Tabulator.prototype.parse_tabulator_row_menu_item=function(t){return"string"==typeof t?.action&&"function"==typeof a[t.action]&&(t.action=a[t.action].bind(this)),t},c.Admin.Property_Input_Tabulator.prototype.set_events=function(){e(`.js-${this.input_id}-add-col`).on("click.charcoal.tabulator",()=>{this.add_col(),this.update_input_data()}),e(`.js-${this.input_id}-add-row`).on("click.charcoal.tabulator",()=>{this.add_row(),this.update_input_data()}),e(`.js-${this.input_id}-history-undo`).on("click.charcoal.tabulator",()=>{this.tabulator_instance.undo(),this.update_input_data()}),e(`.js-${this.input_id}-history-redo`).on("click.charcoal.tabulator",()=>{this.tabulator_instance.redo(),this.update_input_data()})},c.Admin.Property_Input_Tabulator.prototype.new_col_data=function(){let t=this.input_options.newColumnData;var e,i=this.input_options?.defaultColumnTemplate||{};return"string"==typeof t?this.input_options?.autoColumnTemplates[t]&&(e=this.input_options.autoColumnTemplates[t],t=Object.assign({},i,e),"number"==typeof this.input_options?.autoColumnStartIndex&&(e=++this.input_options.autoColumnStartIndex,t.title=t.title.replace("$1",e),t.field=t.field.replace("$1",e),delete t.autoColumnStartIndex)):t=Object.assign({},i,t),t=this.parse_tabulator_column_definition(t),Array.isArray(t)?[...t]:Object.assign({},t)},c.Admin.Property_Input_Tabulator.prototype.new_row_data=function(){var t=this.input_options?.newRowData||{};return Array.isArray(t)?[...t]:Object.assign({},t)},c.Admin.Property_Input_Tabulator.prototype.add_col=function(t=null){const e=this.tabulator_instance.addColumn(this.new_col_data(),void 0,t);this.input_options?.columnsManipulateData&&e.then(t=>{const i=t.getField();this.tabulator_instance.getRows().forEach(t=>{const e=t.getData();void 0===e[i]&&(e[i]=this.input_options?.newRowData?.[i]??"",t.update(e))})})},c.Admin.Property_Input_Tabulator.prototype.add_row=function(t=null){this.tabulator_instance.setHeight(),this.tabulator_instance.addRow(this.new_row_data(),void 0,t)},c.Admin.Property_Input_Tabulator.prototype.delete_column=function(t){if("string"!=typeof t||(t=this.tabulator_instance.getColumn(t))){const i=t.getField(),e=t.delete();this.input_options?.columnsManipulateData&&e.then(()=>{this.tabulator_instance.getRows().forEach(t=>{const e=t.getData();void 0!==e[i]&&(delete e[i],t.update(e))})})}else console.error("[Charcoal.Property.Tabulator]","Column does not exist:",t)},c.Admin.Property_Input_Tabulator.prototype.update_input_data=function(){try{var t=this.get_table_data(),e=JSON.stringify(t);this.tabulator_input.value=e}catch(t){console.warn("[Charcoal.Property.Tabulator]","Could not update input value:",t),c.Admin.feedback([{level:"error",message:commonL10n.errorTemplate.replaceMap({"[[ errorMessage ]]":this.property_label,"[[ errorThrown ]]":tabulatorWidgetL10n.data.badOutput})}]).dispatch()}},c.Admin.Property_Input_Tabulator.prototype.get_input_data=function(){try{var t=this.tabulator_input.value.trim();return t?JSON.parse(t):[]}catch(t){console.warn("[Charcoal.Property.Tabulator]","Could not retrieve input value:",t),c.Admin.feedback([{level:"error",message:commonL10n.errorTemplate.replaceMap({"[[ errorMessage ]]":this.property_label,"[[ errorThrown ]]":tabulatorWidgetL10n.data.badInput})}]).dispatch()}return[]},c.Admin.Property_Input_Tabulator.prototype.get_table_data=function(){return this.tabulator_instance.getData(this.input_options?.storableRowRange)},c.Admin.Property_Input_Tabulator.prototype.validate_table=function(){return this.tabulator_instance?.validate()},c.Admin.Property_Input_Tabulator.prototype.create_tabulator=function(){this.tabulator_instance=new r(this.tabulator_selector+"-tabulator",{data:this.get_input_data(),...this.tabulator_options});var t,e,i=()=>this.update_input_data();this.tabulator_instance.on("columnMoved",i),this.tabulator_instance.on("dataChanged",i),this.tabulator_instance.on("rowMoved",i);for([t,e]of this.tabulator_events)this.tabulator_instance.on(t,e);if(Array.isArray(this.input_options?.validateOn)){const o=()=>{try{this.validate_table()}catch(t){console.warn("[Charcoal.Property.Tabulator]","Could not validate table on callback:",t)}};this.input_options.validateOn.forEach(t=>{"string"!=typeof t&&console.error("[Charcoal.Property.Tabulator]","Invalid validateOn callback:",t),this.tabulator_instance.on(t,o)})}return this},c.Admin.Property_Input_Tabulator.prototype.will_validate=function(t){return t&&e.contains(t.element()[0],this.element()[0])},c.Admin.Property_Input_Tabulator.prototype.validate=function(){const t=this.tabulator_instance.validate();if(!0===t)return!0;const s=n.querySelector('label[for="'+this.input_id.replace(/_[a-z]{2}$/,"")+'"]').textContent,l={};return t.forEach(t=>{const e=t.getRow(),i=t.getColumn();var o=i.getElement().textContent.replace(/\s+\*$/,"").trim();const r=e.getIndex()??e.getPosition(!0)+1,n=`${s||this.tabulator_input.name} ${o} #`+r,a=t._getSelf().modules.validate.invalid??[];l[r]??={},a.forEach(t=>{t=t.parameters?.validationMessage??p(t)??formWidgetL10n.validation.badInput;l?.[r]?.[t]||(l[r][t]=!0,c.Admin.feedback([{level:"error",message:commonL10n.errorTemplate.replaceMap({"[[ errorMessage ]]":n,"[[ errorThrown ]]":t})}]))})}),!1};const i={deleteColumn:function(t,e){this.delete_column(e.getColumn()),this.update_input_data()},deleteRow:function(t,e){e.getRow().delete(),this.update_input_data()},insertColumn:function(t,e){this.add_col(e.getColumn()),this.update_input_data()},insertRow:function(t,e){this.add_row(e.getRow()),this.update_input_data()}},o={deleteColumn:function(t,e){this.delete_column(e),this.update_input_data()},insertColumn:function(t,e){this.add_col(e),this.update_input_data()}},a={deleteRow:function(t,e){e.delete(),this.update_input_data()},insertRow:function(t,e){this.add_row(e),this.update_input_data()}},l=t=>{const e=t.match(/^\/(.*)\/([a-z]*)$/);return e?new RegExp(e[1],-1===e[2].indexOf("i")?"":"i"):t},p=t=>{switch(t.type){case"integer":case"float":case"numeric":return formWidgetL10n.validation.typeMismatchNumber;case"string":return formWidgetL10n.validation.typeMismatch;case"max":return formWidgetL10n.validation.rangeOverflow.replace("{{ max }}",t.parameters);case"min":return formWidgetL10n.validation.rangeUnderflow.replace("{{ min }}",t.parameters);case"starts":return formWidgetL10n.validation.patternMismatchWithStart.replace("{{ format }}",t.parameters);case"ends":return formWidgetL10n.validation.patternMismatchWithEnd.replace("{{ format }}",t.parameters);case"maxLength":return formWidgetL10n.validation.tooLong.replace("{{ max }}",t.parameters);case"minLength":return formWidgetL10n.validation.tooShort.replace("{{ min }}",t.parameters);case"in":return formWidgetL10n.validation.valueMissingSelect;case"regex":return formWidgetL10n.validation.patternMismatch;case"unique":return formWidgetL10n.validation.notUnique;case"required":return formWidgetL10n.validation.valueMissing}return null}}(Charcoal,jQuery,document,Tabulator),Charcoal.Admin.Property_Input_Text=function(t){return Charcoal.Admin.Property.call(this,t),this.input_type="charcoal/admin/property/input/text",this.data=t.data,this.set_input_id(t.id),this.set_data(this.data),this.multiple_initialized=!1,this.initialisation=!0,this.init(),this.initialisation=!1,this},Charcoal.Admin.Property_Input_Text.prototype=Object.create(Charcoal.Admin.Property.prototype),Charcoal.Admin.Property_Input_Text.prototype.constructor=Charcoal.Admin.Property_Input_Text,Charcoal.Admin.Property_Input_Text.prototype.parent=Charcoal.Admin.Property.prototype,Charcoal.Admin.Property_Input_Text.prototype.set_data=function(t){this.set_input_name(t.input_name),this.set_input_val(t.input_val),this.set_readonly(t.readonly),this.set_required(t.required),this.set_min_length(t.min_length),this.set_max_length(t.max_length),this.set_size(t.size),this.set_multiple(t.multiple),this.set_multiple_separator(t.multiple_separator);var e=t.multiple_options?t.multiple_options.min:0,i=t.multiple_options?t.multiple_options.max:0,e=(this.set_multiple_min(e),this.set_multiple_max(i),t.multiple_options?t.multiple_options.split_on:null);return this.set_split_on(e),this},Charcoal.Admin.Property_Input_Text.prototype.init=function(){if(!this.input_id)return this;this.$input=$("#"+this.input_id),this.multiple&&!this.multiple_initialized&&this.init_multiple()},Charcoal.Admin.Property_Input_Text.prototype.init_multiple=function(){if(this.multiple_initialized=!0,this.chars_new=[13],this.chars_remove=[8,46],this.char_next=[40],this.char_prev=[38],this.currentValAmount=1,this.$container=this.$input.parent("div"),this.bind_keyboard_events(this.$input),this.split_val(this.$input),this.multiple_min)for(var t=this.multiple_min-this.currentValAmount;0i.multiple_min)&&""===$(this).val()&&(t.preventDefault(),i.remove_item($(this))),-1");return e&&l.attr("type",e),i&&l.attr("class",i),o&&l.attr("minlength",o),r&&l.attr("maxlength",r),n&&l.attr("required","required"),a&&l.attr("readonly","readonly"),t&&l.val(t),l.attr("name",s),l},Charcoal.Admin.Property_Input_Text.prototype.set_input_id=function(t){return this.input_id=t,this},Charcoal.Admin.Property_Input_Text.prototype.set_input_name=function(t){return this.input_name=t,this},Charcoal.Admin.Property_Input_Text.prototype.set_input_val=function(t){return this.input_val=t,this},Charcoal.Admin.Property_Input_Text.prototype.set_readonly=function(t){return this.readonly=t=t||!1,this},Charcoal.Admin.Property_Input_Text.prototype.set_required=function(t){return this.required=t=t||!1,this},Charcoal.Admin.Property_Input_Text.prototype.set_min_length=function(t){return this.min_length=t=t||0,this},Charcoal.Admin.Property_Input_Text.prototype.set_max_length=function(t){return this.max_length=t=t||0,this},Charcoal.Admin.Property_Input_Text.prototype.set_size=function(t){return this.size=t=t||0,this},Charcoal.Admin.Property_Input_Text.prototype.set_multiple=function(t){return this.multiple=t=t||!1,this},Charcoal.Admin.Property_Input_Text.prototype.set_multiple_min=function(t){return this.multiple_min=t=t||!1,this},Charcoal.Admin.Property_Input_Text.prototype.set_multiple_max=function(t){return this.multiple_max=t=t||!1,this},Charcoal.Admin.Property_Input_Text.prototype.set_multiple_separator=function(t){return this.multiple_separator=t=t||",",this},Charcoal.Admin.Property_Input_Text.prototype.set_split_on=function(t){if(t){if("array"===$.type(t)){for(var e=t.length-1;0<=e;e--)switch(t[e]){case"comma":t[e]="\\s*,\\s*";break;case"tab":t[e]="\\t+";break;case"newline":t[e]="[\\n\\r]+";break;default:t[e]=t[e].replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}t=t.join("|")}t=new RegExp(t)}else t=this.multiple_separator;return this.split_on=t,this},Charcoal.Admin.Property_Input_Text.prototype.destroy=function(){},$(document).on("focusin",function(t){$(t.target).closest(".tox-tinymce-aux, .moxman-window, .tam-assetmanager-root").length&&t.stopImmediatePropagation()}),Charcoal.Admin.Property_Input_Tinymce=function(t){Charcoal.Admin.Property.call(this,t),this.input_type="charcoal/admin/property/input/tinymce",this.input_id=null,this.data=t.data,this.editor_options=null,this._editor=null,window.elFinderCallback||(window.elFinderCallback={}),this.set_properties(t),this.init()},Charcoal.Admin.Property_Input_Tinymce.prototype=Object.create(Charcoal.Admin.Property.prototype),Charcoal.Admin.Property_Input_Tinymce.prototype.constructor=Charcoal.Admin.Property_Input_Tinymce,Charcoal.Admin.Property_Input_Tinymce.prototype.parent=Charcoal.Admin.Property.prototype,Charcoal.Admin.Property_Input_Tinymce.prototype.init=function(){this.create_tinymce(),this.bind_events()},Charcoal.Admin.Property_Input_Tinymce.prototype.bind_events=function(){var r=this,t=this.element(),t=(t.on("invalid",function(t){var e=r.editor(),t=t.target;if(e&&t){var i,o=t.validity;for(i in o)if("valid"!==i&&o[i]&&formWidgetL10n.validation[i])return void e.notificationManager.open({text:formWidgetL10n.validation[i],type:"error"})}}),t.closest(".modal-open .modal"));(t=t.length?t:$(document)).on("scroll",Charcoal.Admin.debounce(function(){var t=r.editor();t&&t.notificationManager.getNotifications().forEach(function(t){t.moveRel()})},50))},Charcoal.Admin.Property_Input_Tinymce.prototype.base_url=function(){return Charcoal.Admin.base_url()+"assets/admin/tinymce"},Charcoal.Admin.Property_Input_Tinymce.prototype.set_properties=function(t){this.input_id=t.input_id||this.input_id,this.editor_options=t.editor_options||t.data.editor_options||this.editor_options,window.elFinderCallback[this.input_id]=this.elfinder_callback.bind(this);var t=Charcoal.Admin.locale().match(/([a-zA-Z]{2})(_|-)([a-zA-Z]{2})/)[0]||"en",r={language:t=(t=t.replace("-","_")).match(/en_/)?"en":t,plugins:["advlist","autolink","autoresize","charcoal","charmap","code","fullscreen","hr","image","link","lists","media","nonbreaking","noneditable","paste","placeholder","quickbars","searchreplace","tabfocus","table","visualblocks","visualchars","wordcount"],toolbar:["undo redo","styleselect","bold italic","alignleft aligncenter alignright alignjustify","bullist numlist","outdent indent","link image"].join(" | "),contextmenu:["link linkchecker image imagetools table"].join(" | "),browser_spellcheck:!0,end_container_on_empty_block:!0,entity_encoding:"raw",allow_conditional_comments:!0,forced_root_block:"p",allow_script_urls:!1,document_base_url:Charcoal.Admin.base_url(),relative_urls:!0,remove_script_host:!1,min_height:"150px",max_height:"400px",file_picker_callback:$.proxy(this.elfinder_browser,null,this),image_advtab:!0,importcss_append:!0,media_alt_source:!1,nonbreaking_force_tab:!1,paste_data_images:!0,paste_as_text:!0,paste_merge_formats:!0,root_lang_attr:$("#"+this.input_id).closest("[data-lang]").data("lang"),table_grid:!0,table_tab_navigation:!0,visualblocks_default_state:!1,automatic_uploads:!0,images_upload_url:"tinymce/upload/image"};return"plugins"in r&&"plugins"in this.editor_options&&("string"===$.type(this.editor_options.plugins)&&(this.editor_options.plugins=this.editor_options.plugins.split(" ")),$.each(this.editor_options.plugins,function(t,e){var i,o=0===e.indexOf("!");if(o&&(e=e.slice(1)),o)for(;-1<(i=r.plugins.indexOf(e));)delete r.plugins[i];else-1===r.plugins.indexOf(e)&&r.plugins.push(e)}),delete this.editor_options.plugins),this.editor_options=$.extend({},r,this.editor_options),this.editor_options.selector="#"+this.input_id,this.editor_options.setup=function(t){t.on("change",function(){window.tinymce.triggerSave()})},this},Charcoal.Admin.Property_Input_Tinymce.prototype.create_tinymce=function(){var t,e=this;if("object"!=typeof window.tinyMCE)return t=this.base_url()+"/tinymce.min.js",Charcoal.Admin.loadScript(t,this.create_tinymce.bind(this)),this;window.tinyMCE.dom.Event.domLoaded=!0,window.tinyMCE.baseURI=new window.tinyMCE.util.URI(this.base_url()),window.tinyMCE.baseURL=this.base_url(),window.tinyMCE.suffix=".min",window.tinyMCE.PluginManager.get(this.input_id)||(window.tinyMCE.PluginManager.add(this.input_id,function(t){e.set_editor(t)}),"array"!==$.type(this.editor_options.plugins)&&(this.editor_options.plugins=[]),this.editor_options.plugins.push(this.input_id)),window.tinyMCE.init(this.editor_options)},Charcoal.Admin.Property_Input_Tinymce.prototype.elfinder_callback=function(t,e){this.elfinder_dialog?(this.elfinder_dialog.onInsert(t,e),this.elfinder_dialog.close()):(window.parent.alert("Something went wrong. Could not insert file."),window.parent.postMessage({mceAction:"close"}))},Charcoal.Admin.Property_Input_Tinymce.prototype.elfinder_browser=function(t,n,e,a){var s=this;return t.elfinder_dialog=window.tinyMCE.activeEditor.windowManager.openUrl({url:t.data.elfinder_url+"&"+$.param(a),title:t.data.dialog_title||"",width:900,height:450}),t.elfinder_dialog.onInsert=function(t,e){for(var i,o=t.url,r=/\/[^/]+?\/\.\.\//;o.match(r);)o=o.replace(r,"/");0===(i=s.selection.getContent()).length&&"A"===s.selection.getNode().nodeName&&(i=s.selection.getNode().textContent),e=t.name+" ("+e.formatSize(t.size)+")","file"===a.filetype&&n(o,{text:i||e,title:e}),"image"===a.filetype&&n(o,{alt:e}),"media"===a.filetype&&n(o)},console.log("Dialog:",t.elfinder_dialog),console.groupEnd(),!1},Charcoal.Admin.Property_Input_Tinymce.prototype.set_editor=function(t){return this._editor=t,this},Charcoal.Admin.Property_Input_Tinymce.prototype.editor=function(){return this._editor},Charcoal.Admin.Property_Input_Tinymce.prototype.destroy=function(){var t=this.editor();t&&t.remove()},Charcoal.Admin.Property_Input_Video=function(t){this.EVENT_NAMESPACE=Charcoal.Admin.Property_Input_Video.EVENT_NAMESPACE,this.input_type="charcoal/admin/property/input/video",Charcoal.Admin.Property.call(this,t),this.data=t.data,this.dialog=null,this.set_input_id(t.id).init()},Charcoal.Admin.Property_Input_Video.EVENT_NAMESPACE=".charcoal.property.video",Charcoal.Admin.Property_Input_Video.prototype=Object.create(Charcoal.Admin.Property_Input_File.prototype),Charcoal.Admin.Property_Input_Video.prototype.constructor=Charcoal.Admin.Property_Input_Video,Charcoal.Admin.Property_Input_Video.prototype.parent=Charcoal.Admin.Property.prototype,Charcoal.Admin.Property_Input_Video.prototype.change_file=function(t){var e,i;this.$input.find(".hide-if-no-file").addClass("d-none"),this.$input.find(".show-if-no-file").removeClass("d-none"),this.$previewText.empty(),this.$previewFile.empty(),t.target&&t.target.files&&t.target.files[0]&&(e=t.target.files[0],(i=new FileReader).addEventListener("loadend",function(){var t=document.createElement("video");console.log("[Property_Input_Video.change_file]",e),t.innerHTML=videoPropertyL10n.unsupportedElement,t.style="max-width: 100%",t.controls=!0,t.title=e.name,t.src=i.result,t.load(),this.$input.find(".hide-if-no-file").removeClass("d-none"),this.$input.find(".show-if-no-file").addClass("d-none"),this.$previewFile.append(t),this.$previewText.html(e.name)}.bind(this),!1),i.readAsDataURL(e))},Charcoal.Admin.Property_Input_Video.prototype.elfinder_callback=function(t){var e,i;this.dialog&&this.dialog.close(),this.$input.find(".hide-if-no-file").addClass("d-none"),this.$input.find(".show-if-no-file").removeClass("d-none"),this.$previewText.empty(),this.$previewFile.empty(),t&&t.url&&(e=decodeURI(t.url).replace(Charcoal.Admin.base_url(),""),i=$('"),console.log("[Property_Input_Video.elfinder_callback]",t),this.$hidden.val(e),this.$input.find(".hide-if-no-file").removeClass("d-none"),this.$input.find(".show-if-no-file").addClass("d-none"),this.$previewText.html(t.name),this.$previewFile.append(i))},Charcoal.Admin.Template=function(t){return Charcoal.Admin.Component.call(this,t),this},Charcoal.Admin.Template.prototype=Object.create(Charcoal.Admin.Component.prototype),Charcoal.Admin.Template.prototype.constructor=Charcoal.Admin.Template,Charcoal.Admin.Template.prototype.parent=Charcoal.Admin.Component.prototype,Charcoal.Admin.Template_Login=function(t){this.template_type="charcoal/admin/template/login",this.init(t)},Charcoal.Admin.Template_Login.prototype=Object.create(Charcoal.Admin.Template.prototype),Charcoal.Admin.Template_Login.prototype.constructor=Charcoal.Admin.Template_Login,Charcoal.Admin.Template_Login.prototype.parent=Charcoal.Admin.Template.prototype,Charcoal.Admin.Template_Login.prototype.init=function(){this.bind_events()},Charcoal.Admin.Template_Login.prototype.bind_events=function(){var t=$("#login-form");t.on("submit.charcoal.login",$.proxy(this.onSubmit,this)),window.CharcoalCaptchaLoginCallback=this.submitForm.bind(this,t)},Charcoal.Admin.Template_Login.prototype.onSubmit=function(t){t.preventDefault();var t=$(t.currentTarget),e=Charcoal.Admin.recaptcha();e.hasInvisibleWidget(t,"#g-recaptcha-challenge")?e.getApi().execute():this.submitForm.call(this,t)},Charcoal.Admin.Template_Login.prototype.submitForm=function(t){var r=this,e=t.prop("action")||window.location.href,t=t.serialize(),i=Charcoal.Admin.queryParams();"redirect_to"in i&&(t=t.concat("&next_url="+encodeURIComponent(i.redirect_to))),$.post(e,t,Charcoal.Admin.resolveJqXhrFalsePositive.bind(this),"json").done(function(t){function e(){window.location.href=i}var i=t.next_url||Charcoal.Admin.admin_url(),t=r.parseFeedbackAsHtml(t)||authL10n.authSuccess;t+=""+authL10n.postLoginRedirect+" "+authL10n.postLoginFallback.replace("[[ url ]]",i)+"
",BootstrapDialog.show({title:authL10n.loginTitle,message:t,type:BootstrapDialog.TYPE_SUCCESS,onhidden:e}),setTimeout(e,300)}).fail(function(t,e,i){var t=Charcoal.Admin.parseJqXhrResponse(t,e,i),e=r.parseFeedbackAsHtml(t)||authL10n.authFailed,o=Charcoal.Admin.recaptcha(),i=null;o.hasApi()&&(i=function(){o.getApi().reset()}),BootstrapDialog.show({title:authL10n.loginTitle,message:e,type:BootstrapDialog.TYPE_DANGER,onhidden:i})})},Charcoal.Admin.Template_Login.prototype.parseFeedbackAsHtml=function(t){if(t.feedbacks&&(t=t.feedbacks),!1===Array.isArray(t)||0===t.length)return null;if(0===t.length)return null;var e,t=Charcoal.Admin.feedback(t),i=t.getMessagesMap(),o="";for(e in i)o+=i[e].join("
");return o+="
",t.empty(),""===o?null:o},Charcoal.Admin.Template_MenuHeader=function(){$(".js-toggle-class").click(function(t){t.preventDefault();var t=$(this),e=t.data("class"),t=t.data("target");$(t).toggleClass(e)}),$(document).on("click",".js-accordion-header",function(t){t.preventDefault(),$(this).toggleClass("is-open").siblings(".js-accordion-content").stop().slideToggle()})},Charcoal.Admin.Template_Account_LostPassword=function(t){this.template_type="charcoal/admin/template/account/lost-password",this.init(t)},Charcoal.Admin.Template_Account_LostPassword.prototype=Object.create(Charcoal.Admin.Template.prototype),Charcoal.Admin.Template_Account_LostPassword.prototype.constructor=Charcoal.Admin.Template_Account_LostPassword,Charcoal.Admin.Template_Account_LostPassword.prototype.parent=Charcoal.Admin.Template.prototype,Charcoal.Admin.Template_Account_LostPassword.prototype.init=function(t){window.console.debug(t),this.bind_events()},Charcoal.Admin.Template_Account_LostPassword.prototype.bind_events=function(){var t=$("#lost-password-form");t.on("submit.charcoal.password",$.proxy(this.onSubmit,this)),window.CharcoalCaptchaResetPassCallback=this.submitForm.bind(this,t)},Charcoal.Admin.Template_Account_LostPassword.prototype.onSubmit=Charcoal.Admin.Template_Login.prototype.onSubmit,Charcoal.Admin.Template_Account_LostPassword.prototype.parseFeedbackAsHtml=Charcoal.Admin.Template_Login.prototype.parseFeedbackAsHtml,Charcoal.Admin.Template_Account_LostPassword.prototype.submitForm=function(t){var r=this,e=t.prop("action")||window.location.href,t=t.serialize();$.post(e,t,Charcoal.Admin.resolveJqXhrFalsePositive.bind(this),"json").done(function(t){var e=r.parseFeedbackAsHtml(t)||authL10n.lostPassSuccess;BootstrapDialog.show({title:authL10n.lostPassword,message:e,type:BootstrapDialog.TYPE_SUCCESS,onhidden:function(){window.location.href=t.next_url||Charcoal.Admin.admin_url("login?notice=resetpass")}})}).fail(function(t,e,i){var t=Charcoal.Admin.parseJqXhrResponse(t,e,i),e=r.parseFeedbackAsHtml(t)||authL10n.lostPassFailed,o=Charcoal.Admin.recaptcha(),i=null;o.hasApi()&&(i=function(){o.getApi().reset()}),BootstrapDialog.show({title:authL10n.lostPassword,message:e,type:BootstrapDialog.TYPE_DANGER,onhidden:i})})},Charcoal.Admin.Template_Account_ResetPassword=function(t){this.template_type="charcoal/admin/template/account/reset-password",this.init(t)},Charcoal.Admin.Template_Account_ResetPassword.prototype=Object.create(Charcoal.Admin.Template.prototype),Charcoal.Admin.Template_Account_ResetPassword.prototype.constructor=Charcoal.Admin.Template_Account_ResetPassword,Charcoal.Admin.Template_Account_ResetPassword.prototype.parent=Charcoal.Admin.Template.prototype,Charcoal.Admin.Template_Account_ResetPassword.prototype.init=function(t){window.console.debug(t),this.bind_events()},Charcoal.Admin.Template_Account_ResetPassword.prototype.bind_events=function(){var t=$("#reset-password-form");t.on("submit.charcoal.password",$.proxy(this.onSubmit,this)),window.CharcoalCaptchaChangePassCallback=this.submitForm.bind(this,t)},Charcoal.Admin.Template_Account_ResetPassword.prototype.onSubmit=Charcoal.Admin.Template_Login.prototype.onSubmit,Charcoal.Admin.Template_Account_ResetPassword.prototype.parseFeedbackAsHtml=Charcoal.Admin.Template_Login.prototype.parseFeedbackAsHtml,Charcoal.Admin.Template_Account_ResetPassword.prototype.submitForm=function(t){var r=this,e=t.prop("action")||window.location.href,t=t.serialize();$.post(e,t,Charcoal.Admin.resolveJqXhrFalsePositive.bind(this),"json").done(function(t){var e=r.parseFeedbackAsHtml(t)||authL10n.resetPassSuccess;BootstrapDialog.show({title:authL10n.passwordReset,message:e,type:BootstrapDialog.TYPE_SUCCESS,onhidden:function(){window.location.href=t.next_url||Charcoal.Admin.admin_url("login?notice=newpass")}})}).fail(function(t,e,i){var t=Charcoal.Admin.parseJqXhrResponse(t,e,i),e=r.parseFeedbackAsHtml(t)||authL10n.resetPassFailed,o=Charcoal.Admin.recaptcha(),i=null;o.hasApi()&&(i=function(){o.getApi().reset()}),BootstrapDialog.show({title:authL10n.passwordReset,message:e,type:BootstrapDialog.TYPE_DANGER,onhidden:i})})};
\ No newline at end of file
diff --git a/packages/admin/assets/src/scripts/charcoal/admin/property/input/tabulator.js b/packages/admin/assets/src/scripts/charcoal/admin/property/input/tabulator.js
index 7aaaecae1..c3ce1d9b4 100644
--- a/packages/admin/assets/src/scripts/charcoal/admin/property/input/tabulator.js
+++ b/packages/admin/assets/src/scripts/charcoal/admin/property/input/tabulator.js
@@ -274,6 +274,13 @@
};
}
+ if (
+ column?.validator === 'required' ||
+ (Array.isArray(column?.validator) && column.validator.includes('required'))
+ ) {
+ column.title += ' *';
+ }
+
return column;
};
@@ -586,20 +593,33 @@
const propLabel = document.querySelector('label[for="' + this.input_id.replace(/_[a-z]{2}$/, '') + '"]').textContent;
+ const uniqueMessagesPerRow = {};
+
validity.forEach((cellComponent) => {
const rowComponent = cellComponent.getRow();
- const rowIndex = (rowComponent.getIndex() ?? (rowComponent.getPosition(true) + 1));
+ const colComponent = cellComponent.getColumn();
+
+ const colTitle = colComponent.getElement().textContent.replace(/\s+\*$/, '').trim();
+ const rowIndex = (rowComponent.getIndex() ?? (rowComponent.getPosition(true) + 1));
- const fieldLabel = `${propLabel || this.tabulator_input.name} #${rowIndex}`;
+ const fieldLabel = `${propLabel || this.tabulator_input.name} ${colTitle} #${rowIndex}`;
const constraints = cellComponent._getSelf().modules.validate.invalid ?? [];
+ uniqueMessagesPerRow[rowIndex] ??= {};
+
constraints.forEach((constraint) => {
- let message = (
+ const message = (
constraint.parameters?.validationMessage ??
resolveTabulatorValidatorMessage(constraint) ??
formWidgetL10n.validation.badInput
);
+ if (uniqueMessagesPerRow?.[rowIndex]?.[message]) {
+ return;
+ }
+
+ uniqueMessagesPerRow[rowIndex][message] = true;
+
Charcoal.Admin.feedback([ {
level: 'error',
message: commonL10n.errorTemplate.replaceMap({