PluginProbe
GamiPress – Gamification plugin to reward points, badges & ranks in WordPress, now with AI / 8.0.4
GamiPress – Gamification plugin to reward points, badges & ranks in WordPress, now with AI v8.0.4
8.0.6 8.0.5 8.0.4 8.0.3 8.0.1 8.0.2 8.0.0 7.9.9.7 7.9.9.6 7.9.9.5 7.9.9.4 7.9.9.3 7.9.9.2 7.9.9.1 7.9.9 7.9.8 7.9.7 7.9.6 7.9.5 7.9.4 7.9.3 7.9.2 7.9.1 7.9.0 7.8.9 All 48 releases
gamipress / assets / js / gamipress-badge-builder-editor.min.js

gamipress-badge-builder-editor.min.js in GamiPress – Gamification plugin to reward points, badges & ranks in WordPress, now with AI 8.0.4, at assets/js/gamipress-badge-builder-editor.min.js

874 lines 134.2 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 var BBP_Utils={clone:function(obj){try{return JSON.parse(JSON.stringify(obj))}catch(e){return obj}},render:function(canvas){if(!canvas){return}
2 if(typeof canvas.requestRenderAll==='function'){canvas.requestRenderAll()}else if(typeof canvas.renderAll==='function'){canvas.renderAll()}}};var BBP_Command_Manager=function(args){args=args||{};this.max_steps=(args.max_steps)?parseInt(args.max_steps,10):150;this.undo_stack=[];this.redo_stack=[];this.is_restoring=!1;this.is_executing_command=!1;this._undo_redo_lock=!1;this._undo_redo_lock_action=null;this._undo_redo_lock_timer=null;this._focus_sync_timer=null;this._focus_sync_running=!1};BBP_Command_Manager.prototype.can_undo=function(){return(this.undo_stack.length>0)};BBP_Command_Manager.prototype.can_redo=function(){return(this.redo_stack.length>0)};BBP_Command_Manager.prototype.clear_stacks=function(){this.undo_stack=[];this.redo_stack=[]};BBP_Command_Manager.prototype._acquire_undo_redo_lock=function(action){var lock_action=action||'';if(this._undo_redo_lock&&this._undo_redo_lock_action===lock_action){return!1}
3 this._undo_redo_lock=!0;this._undo_redo_lock_action=lock_action;if(this._undo_redo_lock_timer){clearTimeout(this._undo_redo_lock_timer)}
4 var self=this;this._undo_redo_lock_timer=setTimeout(function(){self._undo_redo_lock=!1;self._undo_redo_lock_action=null;self._undo_redo_lock_timer=null},120);return!0};BBP_Command_Manager.prototype.begin_restore=function(){this.is_restoring=!0};BBP_Command_Manager.prototype.end_restore=function(){this.is_restoring=!1};BBP_Command_Manager.prototype.with_restore=function(callback){if(typeof callback!=='function'){return}
5 this.begin_restore();try{callback()}finally{this.end_restore()}};BBP_Command_Manager.prototype._schedule_focus_sync=function(){var self=this;if(this._focus_sync_timer){clearTimeout(this._focus_sync_timer)}
6 this._focus_sync_timer=setTimeout(function(){self._focus_sync_timer=null;if(self._focus_sync_running){self._schedule_focus_sync();return}
7 self._focus_sync_running=!0;try{var canvas=null;if(typeof window.gamipress_badge_builder_canvas!=='undefined'&&window.gamipress_badge_builder_canvas){canvas=window.gamipress_badge_builder_canvas}else if(typeof window.GamiPress_Badge_Builder!=='undefined'&&window.GamiPress_Badge_Builder&&window.GamiPress_Badge_Builder.canvas){canvas=window.GamiPress_Badge_Builder.canvas}
8 if(!canvas||typeof canvas.getActiveObject!=='function'){return}
9 var active=null;try{active=canvas.getActiveObject()}catch(e1){active=null}
10 var core_active=active;if(active&&active.type&&String(active.type).toLowerCase()==='activeselection'&&typeof active.getObjects==='function'){var sel_objects=active.getObjects()||[];core_active=sel_objects.length?sel_objects[sel_objects.length-1]:null}
11 if(typeof window.gamipress_badge_builder_active_obj!=='undefined'){window.gamipress_badge_builder_active_obj=core_active||undefined}
12 if(typeof window.gamipress_badge_builder_active_obj_index!=='undefined'){var idx=-1;if(core_active&&typeof canvas.getObjects==='function'){idx=canvas.getObjects().indexOf(core_active)}
13 window.gamipress_badge_builder_active_obj_index=idx}
14 if(typeof window.bbp_sync_selection_ui==='function'){try{window.bbp_sync_selection_ui(canvas,active,core_active)}catch(e_ui){}}
15 if(typeof window.gamipress_badge_builder_update_selection_form==='function'){var had_sync_flag=(typeof window.bbp_selection_form_syncing!=='undefined');var prev_sync_flag=window.bbp_selection_form_syncing;window.bbp_selection_form_syncing=!0;try{window.gamipress_badge_builder_update_selection_form()}catch(e2){}finally{if(had_sync_flag){window.bbp_selection_form_syncing=prev_sync_flag}else{try{delete window.bbp_selection_form_syncing}catch(e3){window.bbp_selection_form_syncing=!1}}}}}finally{self._focus_sync_running=!1}},0)};BBP_Command_Manager.prototype.execute=function(command){if(!command){return}
16 this.is_executing_command=!0;try{if(typeof command.execute==='function'){command.execute()}}finally{this.is_executing_command=!1}
17 this.undo_stack.push(command);this.redo_stack=[];if(this.max_steps>0&&this.undo_stack.length>this.max_steps){this.undo_stack.shift()}
18 if(window.BBP_DEBUG&&window.console&&typeof window.console.log==='function'){window.console.log('[BBP] Command executed',command)}
19 this._schedule_focus_sync()};BBP_Command_Manager.prototype.undo=function(){if(!this._acquire_undo_redo_lock('undo')){return}
20 if(this.undo_stack.length===0){if(window.BBP_DEBUG&&window.console&&typeof window.console.log==='function'){window.console.log('[BBP] Undo ignored (empty stack)')}
21 return}
22 var self=this;this.is_executing_command=!0;try{this.with_restore(function(){var command=self.undo_stack.pop();var did_undo=!1;if(command&&typeof command.undo==='function'){try{command.undo();did_undo=!0}catch(err){if(window.BBP_DEBUG&&window.console&&typeof window.console.error==='function'){window.console.error('[BBP] Undo command failed',err,command)}}}
23 if(did_undo){self.redo_stack.push(command)}
24 if(window.BBP_DEBUG&&window.console&&typeof window.console.log==='function'){window.console.log('[BBP] Undo',command)}})}finally{this.is_executing_command=!1}
25 this._schedule_focus_sync()};BBP_Command_Manager.prototype.redo=function(){if(!this._acquire_undo_redo_lock('redo')){return}
26 if(this.redo_stack.length===0){if(window.BBP_DEBUG&&window.console&&typeof window.console.log==='function'){window.console.log('[BBP] Redo ignored (empty stack)')}
27 return}
28 var self=this;this.is_executing_command=!0;try{this.with_restore(function(){var command=self.redo_stack.pop();var did_redo=!1;if(command&&typeof command.redo==='function'){try{command.redo();did_redo=!0}catch(err){if(window.BBP_DEBUG&&window.console&&typeof window.console.error==='function'){window.console.error('[BBP] Redo command failed',err,command)}}}else if(command&&typeof command.execute==='function'){try{command.execute();did_redo=!0}catch(err2){if(window.BBP_DEBUG&&window.console&&typeof window.console.error==='function'){window.console.error('[BBP] Redo execute failed',err2,command)}}}
29 if(did_redo){self.undo_stack.push(command)}
30 if(window.BBP_DEBUG&&window.console&&typeof window.console.log==='function'){window.console.log('[BBP] Redo',command)}})}finally{this.is_executing_command=!1}
31 this._schedule_focus_sync()};var BBP_Command=function(args){this.type='command';this.label='';this.configure(args)};BBP_Command.prototype.configure=function(args){if(!args){return}
32 if(typeof args.type!=='undefined'){this.type=String(args.type)}
33 if(typeof args.label!=='undefined'){this.label=String(args.label)}};BBP_Command.prototype.apply=function(){};BBP_Command.prototype.revert=function(){};var BBP_Props_Command=function(objects,before,after,args){BBP_Command.call(this,args);this.type='props';this.objects=(Array.isArray(objects)?objects:(objects?[objects]:[]));this.before=(Array.isArray(before)?before:[]);this.after=(Array.isArray(after)?after:[])};BBP_Props_Command.prototype=Object.create(BBP_Command.prototype);BBP_Props_Command.prototype.constructor=BBP_Props_Command;BBP_Props_Command.prototype.execute=function(){this.apply()};BBP_Props_Command.prototype.undo=function(){this.revert()};BBP_Props_Command.prototype.redo=function(){this.apply()};BBP_Props_Command.prototype.apply=function(){this._apply_states(this.after)};BBP_Props_Command.prototype.revert=function(){this._apply_states(this.before)};BBP_Props_Command.prototype._apply_states=function(states){if(this.objects.length===0){return}
34 if(!Array.isArray(states)){return}
35 var canvas=null;for(var i=0;i<this.objects.length;i++){var object=this.objects[i];var state=(states[i]?states[i]:null);if(!object||!state){continue}
36 if(!canvas&&object.canvas){canvas=object.canvas}
37 var next_state=state;if(next_state&&typeof next_state==='object'){next_state=BBP_Utils.clone(next_state);if(next_state.fill&&typeof next_state.fill==='object'&&next_state.fill.__bbp_gradient&&next_state.fill.value){if(typeof fabric!=='undefined'&&typeof fabric.Gradient!=='undefined'){try{next_state.fill=new fabric.Gradient(next_state.fill.value)}catch(e){next_state.fill=next_state.fill.value}}else{next_state.fill=next_state.fill.value}}
38 if(next_state.stroke&&typeof next_state.stroke==='object'&&next_state.stroke.__bbp_gradient&&next_state.stroke.value){if(typeof fabric!=='undefined'&&typeof fabric.Gradient!=='undefined'){try{next_state.stroke=new fabric.Gradient(next_state.stroke.value)}catch(e2){next_state.stroke=next_state.stroke.value}}else{next_state.stroke=next_state.stroke.value}}}
39 object.set(next_state);if(typeof object.setCoords==='function'){object.setCoords()}}
40 if(canvas){if(typeof canvas.requestRenderAll==='function'){canvas.requestRenderAll()}else if(typeof canvas.renderAll==='function'){canvas.renderAll()}}};var BBP_Arrange_Command=function(args){args=args||{};BBP_Command.call(this,args);this.type='arrange';this.canvas=(args.canvas)?args.canvas:null;this.before_order=(Array.isArray(args.before_order))?args.before_order.slice(0):null;this.after_order=(Array.isArray(args.after_order))?args.after_order.slice(0):null;this.label=(args.label)?args.label:'arrange'};BBP_Arrange_Command.prototype=Object.create(BBP_Command.prototype);BBP_Arrange_Command.prototype.constructor=BBP_Arrange_Command;BBP_Arrange_Command.prototype.execute=function(){};BBP_Arrange_Command.prototype.undo=function(){this.apply_order(this.before_order)};BBP_Arrange_Command.prototype.redo=function(){this.apply_order(this.after_order)};BBP_Arrange_Command.prototype._key=function(obj){if(!obj){return null}
41 if(obj.bbp_id){return obj.bbp_id}
42 if(obj.bbp_uid){return obj.bbp_uid}
43 return null};BBP_Arrange_Command.prototype.apply_order=function(order){if(!this.canvas||!order||!Array.isArray(order)){return}
44 if(typeof this.canvas.getObjects!=='function'){return}
45 if(window.bbp_command_manager&&typeof window.bbp_command_manager.begin_restore==='function'){window.bbp_command_manager.begin_restore()}
46 try{var objects=this.canvas.getObjects();var uid_seed=Date.now();var by_key={};for(var i=0;i<objects.length;i++){var obj=objects[i];if(!obj){continue}
47 if(!obj.bbp_id&&!obj.bbp_uid){obj.bbp_uid='bbp_uid_'+uid_seed+'_'+i}
48 var key=this._key(obj);if(key){by_key[key]=obj}}
49 if(typeof this.canvas.moveObjectTo==='function'||typeof this.canvas.moveTo==='function'){for(var j=0;j<order.length;j++){var k=order[j];if(!k||!by_key[k]){continue}
50 if(typeof this.canvas.moveObjectTo==='function'){this.canvas.moveObjectTo(by_key[k],j)}else{this.canvas.moveTo(by_key[k],j)}}}else if(this.canvas._objects&&Array.isArray(this.canvas._objects)){var cleaned=[];for(var x=0;x<order.length;x++){var kk=order[x];if(kk&&by_key[kk]){cleaned.push(by_key[kk])}}
51 if(cleaned.length){this.canvas._objects=cleaned}}
52 if(typeof this.canvas.discardActiveObject==='function'){this.canvas.discardActiveObject()}
53 if(typeof this.canvas.requestRenderAll==='function'){this.canvas.requestRenderAll()}else if(typeof this.canvas.renderAll==='function'){this.canvas.renderAll()}}finally{if(window.bbp_command_manager&&typeof window.bbp_command_manager.end_restore==='function'){window.bbp_command_manager.end_restore()}}};var BBP_Transform_Command=function(args){args=args||{};this.canvas=(args.canvas)?args.canvas:null;this.object_id=(args.object_id)?args.object_id:null;this.before=(args.before)?args.before:null;this.after=(args.after)?args.after:null};BBP_Transform_Command.prototype.execute=function(){this.apply(this.after)};BBP_Transform_Command.prototype.undo=function(){this.apply(this.before)};BBP_Transform_Command.prototype.redo=function(){this.apply(this.after)};BBP_Transform_Command.prototype._find_in_group=function(group,bbp_id){if(!group||!bbp_id||typeof group.getObjects!=='function'){return null}
54 var items=group.getObjects()||[];for(var i=0;i<items.length;i++){var item=items[i];if(item&&item.bbp_id&&item.bbp_id===bbp_id){return item}
55 if(item&&item.type&&String(item.type).toLowerCase()==='group'){var nested=this._find_in_group(item,bbp_id);if(nested){return nested}}}
56 return null};BBP_Transform_Command.prototype.find_object=function(bbp_id){if(!this.canvas||!bbp_id||typeof this.canvas.getObjects!=='function'){return null}
57 var list=this.canvas.getObjects()||[];for(var i=0;i<list.length;i++){var obj=list[i];if(obj&&obj.bbp_id&&obj.bbp_id===bbp_id){return obj}
58 if(obj&&obj.type&&String(obj.type).toLowerCase()==='group'){var nested=this._find_in_group(obj,bbp_id);if(nested){return nested}}}
59 return null};BBP_Transform_Command.prototype.is_finite_number=function(value){return(typeof value==='number'&&isFinite(value))};BBP_Transform_Command.prototype.clamp=function(value,min,max){if(!this.is_finite_number(value)){return value}
60 if(value<min){return min}
61 if(value>max){return max}
62 return value};BBP_Transform_Command.prototype._explode_active_selection_for_target=function(target){if(!this.canvas||!target||typeof this.canvas.getActiveObject!=='function'){return!1}
63 var active=null;try{active=this.canvas.getActiveObject()}catch(e0){active=null}
64 if(!active||!active.type||String(active.type).toLowerCase()!=='activeselection'||typeof active.getObjects!=='function'){return!1}
65 var list=active.getObjects()||[];if(list.indexOf(target)===-1){return!1}
66 try{if(typeof active.removeAll==='function'){active.removeAll()}else if(typeof active._exitGroup==='function'){list.slice().forEach(function(obj){if(obj){active._exitGroup(obj,!1)}})}}catch(e1){}
67 try{if(typeof this.canvas.discardActiveObject==='function'){this.canvas.discardActiveObject()}}catch(e2){}
68 list.forEach(function(obj){if(!obj){return}
69 var parent=obj.group||null;var guard=0;while(parent&&guard<4){if(typeof parent._exitGroup==='function'){try{parent._exitGroup(obj,!1)}catch(e3){break}}else if(typeof parent.remove==='function'){try{parent.remove(obj)}catch(e4){break}}else{break}
70 guard++;parent=obj.group||null}
71 if(typeof this.canvas.getObjects==='function'&&this.canvas.getObjects().indexOf(obj)===-1){try{this.canvas.add(obj)}catch(e5){}}
72 if(typeof obj.setCoords==='function'){obj.setCoords()}},this);return!0};BBP_Transform_Command.prototype._detach_stale_parent=function(target){if(!this.canvas||!target||!target.group||typeof this.canvas.getObjects!=='function'){return}
73 var list=this.canvas.getObjects()||[];var parent=target.group;var active=(typeof this.canvas.getActiveObject==='function')?this.canvas.getActiveObject():null;var active_sel=(active&&active.type&&String(active.type).toLowerCase()==='activeselection')?active:null;var parent_in_canvas=!1;var parent_cursor=parent;var parent_guard=0;while(parent_cursor&&parent_guard<8){if(list.indexOf(parent_cursor)!==-1){parent_in_canvas=!0;break}
74 parent_cursor=parent_cursor.group||parent_cursor.parent||null;parent_guard++}
75 var parent_is_active=!!(active&&parent===active);var parent_is_active_sel=!!(active_sel&&parent===active_sel);if(parent_in_canvas||parent_is_active||parent_is_active_sel){return}
76 if(typeof parent._exitGroup==='function'){try{parent._exitGroup(target,!1)}catch(e1){}}else if(typeof parent.remove==='function'){try{parent.remove(target)}catch(e2){}}
77 if(typeof target.setCoords==='function'){target.setCoords()}};BBP_Transform_Command.prototype.apply=function(state){if(!this.canvas||!state||!state.bbp_id){return}
78 var target=this.find_object(state.bbp_id);if(!target){return}
79 this._explode_active_selection_for_target(target);target=this.find_object(state.bbp_id)||target;this._detach_stale_parent(target);var scale_x=state.scaleX;var scale_y=state.scaleY;if(!this.is_finite_number(scale_x)||!this.is_finite_number(scale_y)){return}
80 scale_x=this.clamp(scale_x,0.01,50);scale_y=this.clamp(scale_y,0.01,50);if(typeof state.originX!=='undefined'){target.set('originX',state.originX)}
81 if(typeof state.originY!=='undefined'){target.set('originY',state.originY)}
82 target.set({scaleX:scale_x,scaleY:scale_y,angle:(this.is_finite_number(state.angle)?state.angle:0),flipX:!!state.flipX,flipY:!!state.flipY,skewX:(this.is_finite_number(state.skewX)?state.skewX:0),skewY:(this.is_finite_number(state.skewY)?state.skewY:0)});var origin_x=(typeof state.originX!=='undefined'?state.originX:(target.originX||'left'));var origin_y=(typeof state.originY!=='undefined'?state.originY:(target.originY||'top'));var target_in_group=!!target.group;var can_use_center=(!target_in_group&&state.center&&this.is_finite_number(state.center.x)&&this.is_finite_number(state.center.y)&&(origin_x==='center'||origin_x==='middle')&&(origin_y==='center'||origin_y==='middle'));if(can_use_center&&typeof target.setPositionByOrigin==='function'){target.setPositionByOrigin({x:state.center.x,y:state.center.y},origin_x,origin_y)}else{if(this.is_finite_number(state.left)){target.set('left',state.left)}
83 if(this.is_finite_number(state.top)){target.set('top',state.top)}}
84 if(typeof target.setCoords==='function'){target.setCoords()}
85 if(typeof BBP_Utils!=='undefined'&&BBP_Utils&&typeof BBP_Utils.render==='function'){BBP_Utils.render(this.canvas)}else if(typeof this.canvas.requestRenderAll==='function'){this.canvas.requestRenderAll()}else if(typeof this.canvas.renderAll==='function'){this.canvas.renderAll()}};var BBP_Multi_Transform_Command=function(args){args=args||{};this.canvas=(args.canvas)?args.canvas:null;this.object_ids=(args.object_ids&&args.object_ids.length)?args.object_ids:[];this.before=(args.before&&args.before.length)?args.before:[];this.after=(args.after&&args.after.length)?args.after:[]};BBP_Multi_Transform_Command.prototype.is_finite_number=function(value){return(typeof value==='number'&&isFinite(value))};BBP_Multi_Transform_Command.prototype.clamp=function(value,min,max){if(!this.is_finite_number(value)){return value}
86 if(value<min){return min}
87 if(value>max){return max}
88 return value};BBP_Multi_Transform_Command.prototype._key=function(obj){if(!obj){return null}
89 if(obj.bbp_id){return obj.bbp_id}
90 if(obj.bbp_uid){return obj.bbp_uid}
91 return null};BBP_Multi_Transform_Command.prototype.find_object=function(id){if(!this.canvas||!id||typeof this.canvas.getObjects!=='function'){return null}
92 var objects=this.canvas.getObjects();for(var i=0;i<objects.length;i++){if(objects[i]&&this._key(objects[i])===id){return objects[i]}}
93 return null};BBP_Multi_Transform_Command.prototype._explode_active_selection=function(){if(!this.canvas||typeof this.canvas.getActiveObject!=='function'){return null}
94 var active=null;try{active=this.canvas.getActiveObject()}catch(e){active=null}
95 if(!active||!active.type||String(active.type).toLowerCase()!=='activeselection'){return null}
96 if(typeof active.getObjects!=='function'){return null}
97 var list=active.getObjects()||[];if(!list.length){return null}
98 var has_match=!1;for(var i=0;i<list.length;i++){if(this._key(list[i])&&this.object_ids.indexOf(this._key(list[i]))!==-1){has_match=!0;break}}
99 if(!has_match){return null}
100 try{if(typeof active.removeAll==='function'){active.removeAll()}else if(typeof active._exitGroup==='function'){list.slice().forEach(function(obj){if(obj){active._exitGroup(obj,!1)}})}}catch(e2){}
101 try{if(typeof this.canvas.discardActiveObject==='function'){this.canvas.discardActiveObject()}}catch(e3){}
102 list.forEach(function(obj){if(!obj){return}
103 var parent=obj.group||null;var guard=0;while(parent&&guard<4){if(typeof parent._exitGroup==='function'){try{parent._exitGroup(obj,!1)}catch(e4){break}}else if(typeof parent.remove==='function'){try{parent.remove(obj)}catch(e5){break}}else{break}
104 guard++;parent=obj.group||null}
105 if(typeof this.canvas.getObjects==='function'&&this.canvas.getObjects().indexOf(obj)===-1){try{this.canvas.add(obj)}catch(e6){}}
106 if(typeof obj.setCoords==='function'){obj.setCoords()}},this);return list};BBP_Multi_Transform_Command.prototype._reselect_objects=function(list){if(!list||!list.length||!this.canvas||!window.fabric||!window.fabric.ActiveSelection){return}
107 var objects=[];var canvas_objects=(typeof this.canvas.getObjects==='function')?this.canvas.getObjects():null;for(var i=0;i<list.length;i++){var obj=list[i];if(!obj){continue}
108 if(canvas_objects&&canvas_objects.indexOf(obj)===-1){continue}
109 objects.push(obj)}
110 if(!objects.length){return}
111 try{var sel=new window.fabric.ActiveSelection(objects,{canvas:this.canvas});if(typeof this.canvas.setActiveObject==='function'){this.canvas.setActiveObject(sel)}}catch(e){}};BBP_Multi_Transform_Command.prototype.apply_state=function(obj,state){if(!obj||!state){return}
112 var scale_x=state.scaleX;var scale_y=state.scaleY;if(!this.is_finite_number(scale_x)||!this.is_finite_number(scale_y)){return}
113 scale_x=this.clamp(scale_x,0.01,50);scale_y=this.clamp(scale_y,0.01,50);if(typeof state.originX!=='undefined'&&typeof obj.set==='function'){obj.set('originX',state.originX)}
114 if(typeof state.originY!=='undefined'&&typeof obj.set==='function'){obj.set('originY',state.originY)}
115 if(typeof obj.set==='function'){obj.set({scaleX:scale_x,scaleY:scale_y,angle:(this.is_finite_number(state.angle)?state.angle:0),flipX:!!state.flipX,flipY:!!state.flipY,skewX:(this.is_finite_number(state.skewX)?state.skewX:0),skewY:(this.is_finite_number(state.skewY)?state.skewY:0)})}else{obj.originX=state.originX;obj.originY=state.originY;obj.scaleX=scale_x;obj.scaleY=scale_y;obj.angle=(this.is_finite_number(state.angle)?state.angle:0);obj.flipX=!!state.flipX;obj.flipY=!!state.flipY;obj.skewX=(this.is_finite_number(state.skewX)?state.skewX:0);obj.skewY=(this.is_finite_number(state.skewY)?state.skewY:0)}
116 var origin_x=(typeof state.originX!=='undefined'?state.originX:(obj.originX||'left'));var origin_y=(typeof state.originY!=='undefined'?state.originY:(obj.originY||'top'));var can_use_center=(state.center&&this.is_finite_number(state.center.x)&&this.is_finite_number(state.center.y)&&(origin_x==='center'||origin_x==='middle')&&(origin_y==='center'||origin_y==='middle'));if(can_use_center&&typeof obj.setPositionByOrigin==='function'){obj.setPositionByOrigin({x:state.center.x,y:state.center.y},origin_x,origin_y)}else{if(this.is_finite_number(state.left)){obj.left=state.left}
117 if(this.is_finite_number(state.top)){obj.top=state.top}}
118 if(typeof obj.setCoords==='function'){obj.setCoords()}};BBP_Multi_Transform_Command.prototype.execute=function(){};BBP_Multi_Transform_Command.prototype.undo=function(){if(!this.canvas){return}
119 var selection=this._explode_active_selection();for(var i=0;i<this.object_ids.length;i++){var obj=this.find_object(this.object_ids[i]);if(obj){this.apply_state(obj,this.before[i])}}
120 if(selection){this._reselect_objects(selection)}
121 if(typeof this.canvas.requestRenderAll==='function'){this.canvas.requestRenderAll()}else if(typeof this.canvas.renderAll==='function'){this.canvas.renderAll()}};BBP_Multi_Transform_Command.prototype.redo=function(){if(!this.canvas){return}
122 var selection=this._explode_active_selection();for(var i=0;i<this.object_ids.length;i++){var obj=this.find_object(this.object_ids[i]);if(obj){this.apply_state(obj,this.after[i])}}
123 if(selection){this._reselect_objects(selection)}
124 if(typeof this.canvas.requestRenderAll==='function'){this.canvas.requestRenderAll()}else if(typeof this.canvas.renderAll==='function'){this.canvas.renderAll()}};var BBP_Fabric_Transform_Adapter=function(args){args=args||{};this.canvas=(args.canvas)?args.canvas:null;this.manager=(args.manager)?args.manager:null;this.is_tracking=!1;this.before=null;this.object_id=null};BBP_Fabric_Transform_Adapter.prototype.init=function(){if(!this.canvas||!this.manager){return}
125 var self=this;if(typeof this.canvas.getObjects==='function'){this.canvas.getObjects().forEach(function(obj){if(obj&&!obj.bbp_id){obj.bbp_id=self.generate_id()}})}
126 this.canvas.on('mouse:down',function(opt){if(window.bbp_ms_suppress_transform_adapter){self.reset();return}
127 if(self.is_restoring()){self.reset();return}
128 var target=(opt&&opt.target)?opt.target:null;if(!target){self.reset();return}
129 if(target&&target.type&&String(target.type).toLowerCase()==='activeselection'){self.reset();return}
130 if(!target.bbp_id){target.bbp_id=self.generate_id()}
131 self.before=self.capture(target);self.object_id=target.bbp_id;self.is_tracking=!0});this.canvas.on('object:modified',function(opt){if(window.bbp_ms_suppress_transform_adapter){self.reset();return}
132 if(self.is_restoring()){self.reset();return}
133 var target=(opt&&opt.target)?opt.target:null;if(!self.is_tracking||!self.before||!target){self.reset();return}
134 if(target&&target.type&&String(target.type).toLowerCase()==='activeselection'){self.reset();return}
135 if(!target.bbp_id){target.bbp_id=self.generate_id()}
136 if(self.object_id&&target.bbp_id!==self.object_id){self.reset();return}
137 var after=self.capture(target);if(!after){self.reset();return}
138 if(self.is_same_transform(self.before,after)){self.reset();return}
139 if(!self.is_valid_scale(after.scaleX)||!self.is_valid_scale(after.scaleY)){self.reset();return}
140 self.manager.execute(new BBP_Transform_Command({canvas:self.canvas,object_id:target.bbp_id,before:self.before,after:after}));self.reset()});if(window.BBP_DEBUG&&window.console&&typeof window.console.log==='function'){window.console.log('[BBP] Fabric transform adapter initialized')}};BBP_Fabric_Transform_Adapter.prototype.is_restoring=function(){if(!this.manager){return!1}
141 return!!this.manager.is_restoring};BBP_Fabric_Transform_Adapter.prototype.generate_id=function(){return 'bbp_'+Date.now()+'_'+Math.floor(Math.random()*100000)};BBP_Fabric_Transform_Adapter.prototype.is_finite_number=function(value){return(typeof value==='number'&&isFinite(value))};BBP_Fabric_Transform_Adapter.prototype.is_valid_scale=function(value){if(!this.is_finite_number(value)){return!1}
142 if(value<0.01){return!1}
143 if(value>50){return!1}
144 return!0};BBP_Fabric_Transform_Adapter.prototype.capture=function(obj){if(!obj){return null}
145 if(!obj.bbp_id){obj.bbp_id=this.generate_id()}
146 var center=null;var in_group=!!obj.group;if(typeof obj.getCenterPoint==='function'){center=obj.getCenterPoint()}
147 return{bbp_id:obj.bbp_id||null,originX:(obj.originX||'left'),originY:(obj.originY||'top'),center:(!in_group&&center&&this.is_finite_number(center.x)&&this.is_finite_number(center.y))?{x:center.x,y:center.y}:null,left:(this.is_finite_number(obj.left)?obj.left:0),top:(this.is_finite_number(obj.top)?obj.top:0),scaleX:(this.is_finite_number(obj.scaleX)?obj.scaleX:1),scaleY:(this.is_finite_number(obj.scaleY)?obj.scaleY:1),angle:(this.is_finite_number(obj.angle)?obj.angle:0),flipX:!!obj.flipX,flipY:!!obj.flipY,skewX:(this.is_finite_number(obj.skewX)?obj.skewX:0),skewY:(this.is_finite_number(obj.skewY)?obj.skewY:0)}};BBP_Fabric_Transform_Adapter.prototype.is_same_transform=function(a,b){if(!a||!b){return!1}
148 return(a.originX===b.originX&&a.originY===b.originY&&((!a.center&&!b.center)||(a.center&&b.center&&a.center.x===b.center.x&&a.center.y===b.center.y))&&a.scaleX===b.scaleX&&a.scaleY===b.scaleY&&a.angle===b.angle&&a.flipX===b.flipX&&a.flipY===b.flipY&&a.skewX===b.skewX&&a.skewY===b.skewY)};BBP_Fabric_Transform_Adapter.prototype.reset=function(){this.is_tracking=!1;this.before=null;this.object_id=null};var BBP_UI_Props_Adapter=function(args){this.canvas=null;this.manager=null;this.is_enabled=!0;this.is_tracking=!1;this.tracking_objects=[];this.tracking_before=[];this.configure(args)};BBP_UI_Props_Adapter.prototype.configure=function(args){if(!args){return}
149 if(typeof args.canvas!=='undefined'){this.canvas=args.canvas}
150 if(typeof args.manager!=='undefined'){this.manager=args.manager}
151 if(typeof args.is_enabled!=='undefined'){this.is_enabled=!!args.is_enabled}};BBP_UI_Props_Adapter.prototype.init=function(){if(!this.canvas){return}
152 if(!this.manager){return}};BBP_UI_Props_Adapter.prototype.begin_tracking=function(){if(!this.is_enabled){return}
153 if(this.manager.is_applying){return}
154 if(this.manager.is_suspended){return}
155 var objects=this._get_selected_objects();if(objects.length===0){this.is_tracking=!1;this.tracking_objects=[];this.tracking_before=[];return}
156 this.is_tracking=!0;this.tracking_objects=objects;this.tracking_before=this._capture_props(objects)};BBP_UI_Props_Adapter.prototype.apply_live=function(props){if(!this.is_enabled){return}
157 if(!this.is_tracking){return}
158 if(!props){return}
159 for(var i=0;i<this.tracking_objects.length;i++){var object=this.tracking_objects[i];if(!object){continue}
160 object.set(props);if(typeof object.setCoords==='function'){object.setCoords()}}
161 if(this.canvas){if(typeof this.canvas.requestRenderAll==='function'){this.canvas.requestRenderAll()}else if(typeof this.canvas.renderAll==='function'){this.canvas.renderAll()}}};BBP_UI_Props_Adapter.prototype.end_tracking=function(label){if(!this.is_enabled){return}
162 if(!this.is_tracking){return}
163 var objects=this.tracking_objects;var before=this.tracking_before;var after=this._capture_props(objects);this.is_tracking=!1;this.tracking_objects=[];this.tracking_before=[];if(objects.length===0){return}
164 if(this._same_props(before,after)){return}
165 var command=new BBP_Props_Command(objects,before,after,{label:(label?String(label):'Properties')});this.manager.execute(command)};BBP_UI_Props_Adapter.prototype._get_selected_objects=function(){if(!this.canvas){return[]}
166 var active=(typeof this.canvas.getActiveObject==='function'?this.canvas.getActiveObject():null);if(active&&active.type==='activeSelection'&&typeof active.getObjects==='function'){return active.getObjects()}
167 if(active){return[active]}
168 return[]};BBP_UI_Props_Adapter.prototype._capture_props=function(objects){var states=[];for(var i=0;i<objects.length;i++){var object=objects[i];if(!object){states.push({});continue}
169 var fill_state=object.fill;var stroke_state=object.stroke;if(fill_state&&typeof fill_state==='object'&&typeof fill_state.toObject==='function'){fill_state={__bbp_gradient:!0,value:BBP_Utils.clone(fill_state.toObject())}}else if(fill_state&&typeof fill_state==='object'){fill_state=BBP_Utils.clone(fill_state)}
170 if(stroke_state&&typeof stroke_state==='object'&&typeof stroke_state.toObject==='function'){stroke_state={__bbp_gradient:!0,value:BBP_Utils.clone(stroke_state.toObject())}}else if(stroke_state&&typeof stroke_state==='object'){stroke_state=BBP_Utils.clone(stroke_state)}
171 states.push({fill:fill_state,stroke:stroke_state,strokeWidth:object.strokeWidth,strokeLineJoin:object.strokeLineJoin,strokeType:object.strokeType,gradientAngle:object.gradientAngle,gradientRadius:object.gradientRadius,strokeGradientAngle:object.strokeGradientAngle,strokeGradientRadius:object.strokeGradientRadius,fontFamily:object.fontFamily,fontSize:object.fontSize,fontStyle:object.fontStyle,fontWeight:object.fontWeight,textAlign:object.textAlign,lineHeight:object.lineHeight,charSpacing:object.charSpacing,underline:object.underline,linethrough:object.linethrough,opacity:object.opacity})}
172 return states};BBP_UI_Props_Adapter.prototype._same_props=function(before,after){if(!Array.isArray(before)||!Array.isArray(after)){return!1}
173 if(before.length!==after.length){return!1}
174 for(var i=0;i<before.length;i++){var a=before[i]||{};var b=after[i]||{};var fill_a=a.fill;var fill_b=b.fill;var stroke_a=a.stroke;var stroke_b=b.stroke;if(fill_a&&typeof fill_a==='object'){fill_a=JSON.stringify(fill_a)}
175 if(fill_b&&typeof fill_b==='object'){fill_b=JSON.stringify(fill_b)}
176 if(stroke_a&&typeof stroke_a==='object'){stroke_a=JSON.stringify(stroke_a)}
177 if(stroke_b&&typeof stroke_b==='object'){stroke_b=JSON.stringify(stroke_b)}
178 if(fill_a!==fill_b||stroke_a!==stroke_b||a.strokeWidth!==b.strokeWidth||a.strokeLineJoin!==b.strokeLineJoin||a.strokeType!==b.strokeType||a.gradientAngle!==b.gradientAngle||a.gradientRadius!==b.gradientRadius||a.strokeGradientAngle!==b.strokeGradientAngle||a.strokeGradientRadius!==b.strokeGradientRadius||a.fontFamily!==b.fontFamily||a.fontSize!==b.fontSize||a.fontStyle!==b.fontStyle||a.fontWeight!==b.fontWeight||a.textAlign!==b.textAlign||a.lineHeight!==b.lineHeight||a.charSpacing!==b.charSpacing||a.underline!==b.underline||a.linethrough!==b.linethrough||a.opacity!==b.opacity){return!1}}
179 return!0};(function(){function bbp_lite_keyboard_contract_create(deps){deps=deps||{};var bbp_lite_trigger_event=(typeof deps.trigger_event==='function')?deps.trigger_event:function(name,ctx){return ctx};var bbp_lite_get_manager=(typeof deps.get_manager==='function')?deps.get_manager:function(){return null};var bbp_lite_get_active_raw=(typeof deps.get_active_raw==='function')?deps.get_active_raw:function(){return null};function bbp_lite_keyboard_target_blocked(e){var tag=(e&&e.target&&e.target.tagName)?String(e.target.tagName).toUpperCase():'';if(e&&e.target&&e.target.isContentEditable){return!0}
180 return['INPUT','SELECT','TEXTAREA'].indexOf(tag)!==-1}
181 function bbp_lite_snapshot_keyboard_event(e){if(!e){return null}
182 return{key:(typeof e.key!=='undefined')?e.key:'',code:(typeof e.code!=='undefined')?e.code:'',ctrlKey:!!e.ctrlKey,shiftKey:!!e.shiftKey,altKey:!!e.altKey,metaKey:!!e.metaKey,keyCode:(typeof e.keyCode!=='undefined')?e.keyCode:null,which:(typeof e.which!=='undefined')?e.which:null,timeStamp:Date.now()}}
183 function bbp_lite_keyboard_tool_actions_from_event(e){if(!e||bbp_lite_keyboard_target_blocked(e)){return null}
184 var key=(typeof e.key==='string')?e.key:'';var has_active_obj=!!window.gamipress_badge_builder_active_obj;var has_cmd_mod=!!(e.ctrlKey||e.metaKey);if(e.shiftKey&&has_cmd_mod){if(key==='Z'||key==='z'){return['redo']}}else if(has_cmd_mod){if(key==='Z'||key==='z'){return['undo']}}
185 if(!has_active_obj){return null}
186 if(key==='Delete'){return['delete']}
187 if(key==='+'){return['scale-up']}
188 if(key==='-'){return['scale-down']}
189 if(!e.shiftKey&&!e.altKey&&!has_cmd_mod){return null}
190 if(e.shiftKey){switch(key){case 'ArrowUp':return['align-vertical-top'];case 'ArrowDown':return['align-vertical-bottom'];case 'ArrowLeft':return['align-horizontal-left'];case 'ArrowRight':return['align-horizontal-right'];case 'C':case 'c':return['align-horizontal-center','align-vertical-center'];case 'D':case 'd':return['duplicate'];case 'F':case 'f':return['fit']}
191 return null}
192 if(e.altKey){switch(key){case 'ArrowLeft':case 'ArrowRight':return['flip-horizontal'];case 'ArrowUp':case 'ArrowDown':return['flip-vertical']}
193 return null}
194 if(has_cmd_mod){switch(key){case 'ArrowLeft':return['rotate-left'];case 'ArrowRight':return['rotate-right'];case 'ArrowUp':return['send-front'];case 'ArrowDown':return['send-back']}}
195 return null}
196 function bbp_lite_keyboard_raw_move_from_event(e){var key;var has_cmd_mod;var move_step=2;var target_obj=window.gamipress_badge_builder_active_obj||null;if(!e||bbp_lite_keyboard_target_blocked(e)||!target_obj){return null}
197 has_cmd_mod=!!(e.ctrlKey||e.metaKey);if(e.shiftKey||e.altKey||has_cmd_mod){return null}
198 key=(typeof e.key==='string')?e.key:'';switch(key){case 'ArrowUp':return{action:'move-up',move:{dx:0,dy:-move_step,step:move_step,accelerated:!1,source:'keyboard-arrow'},target:target_obj};case 'ArrowDown':return{action:'move-down',move:{dx:0,dy:move_step,step:move_step,accelerated:!1,source:'keyboard-arrow'},target:target_obj};case 'ArrowLeft':return{action:'move-left',move:{dx:-move_step,dy:0,step:move_step,accelerated:!1,source:'keyboard-arrow'},target:target_obj};case 'ArrowRight':return{action:'move-right',move:{dx:move_step,dy:0,step:move_step,accelerated:!1,source:'keyboard-arrow'},target:target_obj}}
199 return null}
200 function bbp_lite_clear_keyboard_shortcut_pending(){window.__bbp_lite_keyboard_shortcut_pending=null}
201 function bbp_lite_consume_keyboard_shortcut_pending(tool_name){var pending=window.__bbp_lite_keyboard_shortcut_pending||null;if(!pending||!Array.isArray(pending.actions)||!pending.actions.length){return null}
202 if((Date.now()-parseInt(pending.ts||0,10))>1500){bbp_lite_clear_keyboard_shortcut_pending();return null}
203 if(pending.actions[0]!==tool_name){return null}
204 pending.actions.shift();if(!pending.actions.length){bbp_lite_clear_keyboard_shortcut_pending()}
205 return{action:tool_name,event:pending.event||null}}
206 function bbp_lite_clear_keyboard_raw_move_pending(){window.__bbp_lite_keyboard_raw_move_pending=null}
207 function bbp_lite_consume_keyboard_raw_move_pending_for_call(obj,dx,dy){var pending=window.__bbp_lite_keyboard_raw_move_pending||null;if(!pending){return null}
208 if((Date.now()-parseInt(pending.ts||0,10))>1500){bbp_lite_clear_keyboard_raw_move_pending();return null}
209 if(pending.target&&obj&&pending.target!==obj){return null}
210 if(typeof pending.dx==='number'&&typeof pending.dy==='number'&&(pending.dx!==dx||pending.dy!==dy)){return null}
211 bbp_lite_clear_keyboard_raw_move_pending();return{action:pending.action||'',move:pending.move||null,event:pending.event||null}}
212 function bbp_lite_emit_after_keyboard_shortcut(meta,action,result){if(!meta){return}
213 bbp_lite_trigger_event('gamipress_badge_builder_after_keyboard_shortcut',{event:meta.event||null,action:action,result:result})}
214 function bbp_lite_bind_keyboard_shortcut_contract(canvas){if(window.__bbp_lite_keyboard_shortcut_contract_bound){return}
215 window.__bbp_lite_keyboard_shortcut_contract_bound=!0;document.addEventListener('keydown',function(e){var actions=bbp_lite_keyboard_tool_actions_from_event(e);var manager=bbp_lite_get_manager();var active=bbp_lite_get_active_raw(canvas);var raw_move=null;var action_payload;var before_ctx;if(!actions||!actions.length){raw_move=bbp_lite_keyboard_raw_move_from_event(e);if(!raw_move){return}
216 before_ctx={event:e,action:raw_move.action,move:raw_move.move?{dx:raw_move.move.dx,dy:raw_move.move.dy,step:raw_move.move.step,accelerated:!!raw_move.move.accelerated,source:raw_move.move.source||'keyboard-arrow'}:null,canvas:canvas||null,active:active||null,manager:manager||null,handled:!1,cancel:!1,result:undefined};bbp_lite_trigger_event('gamipress_badge_builder_before_keyboard_shortcut',before_ctx);if(before_ctx.cancel){bbp_lite_clear_keyboard_raw_move_pending();e.preventDefault();e.stopPropagation();if(typeof e.stopImmediatePropagation==='function'){e.stopImmediatePropagation()}
217 return!1}
218 if(before_ctx.handled){bbp_lite_clear_keyboard_raw_move_pending();e.preventDefault();e.stopPropagation();if(typeof e.stopImmediatePropagation==='function'){e.stopImmediatePropagation()}
219 bbp_lite_trigger_event('gamipress_badge_builder_after_keyboard_shortcut',{event:bbp_lite_snapshot_keyboard_event(e),action:raw_move.action,result:before_ctx.result});return!1}
220 window.__bbp_lite_keyboard_raw_move_pending={action:raw_move.action,dx:raw_move.move?raw_move.move.dx:0,dy:raw_move.move?raw_move.move.dy:0,move:raw_move.move?{dx:raw_move.move.dx,dy:raw_move.move.dy,step:raw_move.move.step,accelerated:!!raw_move.move.accelerated,source:raw_move.move.source||'keyboard-arrow'}:null,target:raw_move.target||null,ts:Date.now(),event:bbp_lite_snapshot_keyboard_event(e)};return!0}
221 action_payload=(actions.length===1)?actions[0]:actions.slice(0);before_ctx={event:e,action:action_payload,canvas:canvas||null,active:active||null,manager:manager||null,handled:!1,cancel:!1};bbp_lite_trigger_event('gamipress_badge_builder_before_keyboard_shortcut',before_ctx);if(before_ctx.cancel){bbp_lite_clear_keyboard_shortcut_pending();e.preventDefault();e.stopPropagation();if(typeof e.stopImmediatePropagation==='function'){e.stopImmediatePropagation()}
222 return!1}
223 if(before_ctx.handled){bbp_lite_clear_keyboard_shortcut_pending();e.preventDefault();e.stopPropagation();if(typeof e.stopImmediatePropagation==='function'){e.stopImmediatePropagation()}
224 bbp_lite_trigger_event('gamipress_badge_builder_after_keyboard_shortcut',{event:bbp_lite_snapshot_keyboard_event(e),action:action_payload,result:before_ctx.result});return!1}
225 window.__bbp_lite_keyboard_shortcut_pending={actions:actions.slice(0),ts:Date.now(),event:bbp_lite_snapshot_keyboard_event(e)};return!0},!0)}
226 return{keyboard_target_blocked:bbp_lite_keyboard_target_blocked,snapshot_keyboard_event:bbp_lite_snapshot_keyboard_event,keyboard_tool_actions_from_event:bbp_lite_keyboard_tool_actions_from_event,clear_keyboard_shortcut_pending:bbp_lite_clear_keyboard_shortcut_pending,consume_keyboard_shortcut_pending:bbp_lite_consume_keyboard_shortcut_pending,clear_keyboard_raw_move_pending:bbp_lite_clear_keyboard_raw_move_pending,consume_keyboard_raw_move_pending_for_call:bbp_lite_consume_keyboard_raw_move_pending_for_call,emit_after_keyboard_shortcut:bbp_lite_emit_after_keyboard_shortcut,bind_keyboard_shortcut_contract:bbp_lite_bind_keyboard_shortcut_contract}}
227 window.BBP_Lite_Keyboard_Contract=window.BBP_Lite_Keyboard_Contract||{create:bbp_lite_keyboard_contract_create}})();(function(){function bbp_lite_group_edit_create(deps){deps=deps||{};var bbp_lite_is_group=(typeof deps.is_group==='function')?deps.is_group:function(){return!1};var bbp_lite_is_active_selection=(typeof deps.is_active_selection==='function')?deps.is_active_selection:function(){return!1};var bbp_lite_generate_id=(typeof deps.generate_id==='function')?deps.generate_id:function(){return String(Date.now())};function bbp_lite_prepare_group_for_subtargets(group,allow_child_interaction){if(!bbp_lite_is_group(group)){return}
228 var child_interaction=!!allow_child_interaction;if(typeof group.set==='function'){try{group.set({subTargetCheck:!0,interactive:child_interaction})}catch(e0){group.subTargetCheck=!0;group.interactive=child_interaction}}else{group.subTargetCheck=!0;group.interactive=child_interaction}}
229 function bbp_lite_prepare_group_tree(node,allow_child_interaction){if(!node){return}
230 if(bbp_lite_is_group(node)){bbp_lite_prepare_group_for_subtargets(node,allow_child_interaction);if(typeof node.getObjects==='function'){var children=node.getObjects()||[];children.forEach(function(child){bbp_lite_prepare_group_tree(child,allow_child_interaction)})}}}
231 function bbp_lite_group_edit_get_group(canvas,group_id){if(!canvas||!group_id||typeof canvas.getObjects!=='function'){return null}
232 var list=canvas.getObjects()||[];for(var i=0;i<list.length;i++){var obj=list[i];if(bbp_lite_is_group(obj)&&obj.bbp_id===group_id){return obj}}
233 return null}
234 function bbp_lite_group_edit_find_child(group,child_id){if(!bbp_lite_is_group(group)||!child_id||typeof group.getObjects!=='function'){return null}
235 var stack=(group.getObjects()||[]).slice();var guard=0;while(stack.length&&guard<512){var child=stack.shift();if(child&&child.bbp_id===child_id){return child}
236 if(bbp_lite_is_group(child)&&typeof child.getObjects==='function'){var nested=child.getObjects()||[];nested.forEach(function(obj){if(obj){stack.push(obj)}})}
237 guard++}
238 return null}
239 function bbp_lite_group_edit_is_descendant(node,group){if(!node||!group){return!1}
240 var cursor=node;var guard=0;while(cursor&&guard<32){if(cursor===group){return!0}
241 cursor=cursor.group||null;guard++}
242 return!1}
243 function bbp_lite_group_edit_pick_child(group,preferred){if(!bbp_lite_is_group(group)||typeof group.getObjects!=='function'){return null}
244 var children=(group.getObjects()||[]).filter(function(obj){return!!obj});if(!children.length){return null}
245 if(preferred&&children.indexOf(preferred)!==-1){return preferred}
246 if(preferred&&preferred.bbp_id){var by_id=bbp_lite_group_edit_find_child(group,preferred.bbp_id);if(by_id){return by_id}}
247 return children[0]}
248 function bbp_lite_group_edit_exit(canvas,options){if(!canvas){return!1}
249 var state=canvas.__bbp_lite_group_edit_mode||null;if(!state){return!1}
250 options=options||{};var group=bbp_lite_group_edit_get_group(canvas,state.group_id);canvas.__bbp_lite_group_edit_mode=null;if(group){delete group.__bbp_group_editing;bbp_lite_prepare_group_for_subtargets(group,!1)}
251 if(options.keep_active){if(window.bbp_command_manager&&typeof window.bbp_command_manager._schedule_focus_sync==='function'){window.bbp_command_manager._schedule_focus_sync()}
252 return!0}
253 setTimeout(function(){if(canvas.__bbp_lite_group_edit_mode){return}
254 if(group&&typeof canvas.setActiveObject==='function'){try{canvas.setActiveObject(group)}catch(e0){}
255 if(typeof group.setCoords==='function'){group.setCoords()}}
256 if(typeof canvas.requestRenderAll==='function'){canvas.requestRenderAll()}else if(typeof canvas.renderAll==='function'){canvas.renderAll()}
257 if(window.bbp_command_manager&&typeof window.bbp_command_manager._schedule_focus_sync==='function'){window.bbp_command_manager._schedule_focus_sync()}},0);return!0}
258 function bbp_lite_group_edit_enter(canvas,group,child){if(!canvas||!bbp_lite_is_group(group)){return!1}
259 bbp_lite_prepare_group_for_subtargets(group,!0);if(!group.bbp_id){group.bbp_id=bbp_lite_generate_id()}
260 var target_child=bbp_lite_group_edit_pick_child(group,child);if(!target_child){return!1}
261 if(!target_child.bbp_id){target_child.bbp_id=bbp_lite_generate_id()}
262 var now=Date.now();var previous=canvas.__bbp_lite_group_edit_mode||null;if(previous&&previous.group_id&&previous.group_id!==group.bbp_id){var previous_group=bbp_lite_group_edit_get_group(canvas,previous.group_id);if(previous_group){delete previous_group.__bbp_group_editing;bbp_lite_prepare_group_for_subtargets(previous_group,!1)}}
263 canvas.__bbp_lite_group_edit_mode={group_id:group.bbp_id,child_id:target_child.bbp_id,ts:now};group.__bbp_group_editing=!0;setTimeout(function(){var state=canvas.__bbp_lite_group_edit_mode||null;if(!state||state.group_id!==group.bbp_id){return}
264 var resolved_group=bbp_lite_group_edit_get_group(canvas,state.group_id)||group;var resolved_child=bbp_lite_group_edit_find_child(resolved_group,state.child_id)||target_child;if(!resolved_child||typeof canvas.setActiveObject!=='function'){return}
265 try{canvas.setActiveObject(resolved_child)}catch(e0){}
266 if(typeof resolved_child.setCoords==='function'){resolved_child.setCoords()}
267 if(typeof canvas.requestRenderAll==='function'){canvas.requestRenderAll()}else if(typeof canvas.renderAll==='function'){canvas.renderAll()}
268 if(window.bbp_command_manager&&typeof window.bbp_command_manager._schedule_focus_sync==='function'){window.bbp_command_manager._schedule_focus_sync()}},0);return!0}
269 function bbp_lite_group_edit_sync(canvas){if(!canvas){return}
270 var state=canvas.__bbp_lite_group_edit_mode||null;if(!state||!state.group_id){return}
271 var group=bbp_lite_group_edit_get_group(canvas,state.group_id);if(!group){canvas.__bbp_lite_group_edit_mode=null;if(window.bbp_command_manager&&typeof window.bbp_command_manager._schedule_focus_sync==='function'){window.bbp_command_manager._schedule_focus_sync()}
272 return}
273 var active=null;try{active=(typeof canvas.getActiveObject==='function')?canvas.getActiveObject():null}catch(e0){active=null}
274 var now=Date.now();var in_entry_window=!!(state.ts&&(now-state.ts)<80);if(!active){if(in_entry_window){return}
275 bbp_lite_group_edit_exit(canvas,{keep_active:!0});return}
276 if(active===group){if(in_entry_window){return}
277 canvas.__bbp_lite_group_edit_mode=null;delete group.__bbp_group_editing;bbp_lite_prepare_group_for_subtargets(group,!1);if(window.bbp_command_manager&&typeof window.bbp_command_manager._schedule_focus_sync==='function'){window.bbp_command_manager._schedule_focus_sync()}
278 return}
279 if(bbp_lite_group_edit_is_descendant(active,group)){if(!active.bbp_id){active.bbp_id=bbp_lite_generate_id()}
280 state.child_id=active.bbp_id||state.child_id;return}
281 if(bbp_lite_is_active_selection(active)&&typeof active.getObjects==='function'){var grouped_list=active.getObjects().filter(function(obj){return!!(obj&&bbp_lite_group_edit_is_descendant(obj,group))});if(grouped_list.length){var last=grouped_list[grouped_list.length-1];if(!last.bbp_id){last.bbp_id=bbp_lite_generate_id()}
282 state.child_id=last.bbp_id||state.child_id;return}}
283 if(in_entry_window){return}
284 bbp_lite_group_edit_exit(canvas,{keep_active:!0})}
285 function bbp_lite_bind_group_edit_escape(canvas){if(!canvas||canvas.__bbp_lite_group_edit_escape_bound){return}
286 canvas.__bbp_lite_group_edit_escape_bound=!0;var key_handler=function(e){var state=canvas.__bbp_lite_group_edit_mode||null;if(!state){return}
287 var key=(e&&e.key)?String(e.key):'';var is_escape=(key==='Escape'||key==='Esc'||(e&&(e.keyCode===27||e.which===27)));if(!is_escape){return}
288 var tag=(e&&e.target&&e.target.tagName)?String(e.target.tagName).toLowerCase():'';if(e&&e.target&&e.target.isContentEditable){return}
289 if(tag==='input'||tag==='textarea'||tag==='select'){return}
290 e.preventDefault();e.stopPropagation();if(typeof e.stopImmediatePropagation==='function'){e.stopImmediatePropagation()}
291 setTimeout(function(){bbp_lite_group_edit_exit(canvas)},0)};canvas.__bbp_lite_group_edit_escape_handler=key_handler;document.addEventListener('keydown',key_handler,!0)}
292 function bbp_lite_bind_group_edit_hooks(canvas){if(!canvas||typeof canvas.on!=='function'||canvas.__bbp_lite_group_edit_hooks_bound){return}
293 canvas.__bbp_lite_group_edit_hooks_bound=!0;var schedule_sync=function(){setTimeout(function(){bbp_lite_group_edit_sync(canvas)},0)};canvas.on('selection:cleared',schedule_sync);canvas.on('selection:created',schedule_sync);canvas.on('selection:updated',schedule_sync);canvas.on('object:removed',schedule_sync);bbp_lite_bind_group_edit_escape(canvas)}
294 function bbp_lite_bind_group_dblclick_edit(canvas){if(!canvas||typeof canvas.on!=='function'||canvas.__bbp_lite_group_dblclick_bound){return}
295 canvas.__bbp_lite_group_dblclick_bound=!0;canvas.on('mouse:dblclick',function(event){var target=(event&&event.target)?event.target:null;if(!target){return}
296 var target_type=(target.type)?String(target.type).toLowerCase():'';var group=null;if(target_type==='group'){group=target}else if(target.group&&bbp_lite_is_group(target.group)){group=target.group}
297 if(!group){return}
298 bbp_lite_prepare_group_for_subtargets(group,!1);var clicked_sub=null;if(event&&Array.isArray(event.subTargets)&&event.subTargets.length){clicked_sub=event.subTargets[event.subTargets.length-1]}else if(event&&event.subTarget){clicked_sub=event.subTarget}else if(target!==group&&target.group===group){clicked_sub=target}
299 if(bbp_lite_is_group(clicked_sub)){clicked_sub=null}
300 setTimeout(function(){var resolved_group=group;if(group.bbp_id){resolved_group=bbp_lite_group_edit_get_group(canvas,group.bbp_id)||group}
301 var preferred_child=clicked_sub;if(!preferred_child){var state=canvas.__bbp_lite_group_edit_mode||null;if(state&&state.group_id&&resolved_group&&resolved_group.bbp_id===state.group_id){preferred_child=bbp_lite_group_edit_find_child(resolved_group,state.child_id)}}
302 bbp_lite_group_edit_enter(canvas,resolved_group,preferred_child)},0)})}
303 return{prepare_group_for_subtargets:bbp_lite_prepare_group_for_subtargets,prepare_group_tree:bbp_lite_prepare_group_tree,group_edit_get_group:bbp_lite_group_edit_get_group,group_edit_find_child:bbp_lite_group_edit_find_child,group_edit_is_descendant:bbp_lite_group_edit_is_descendant,group_edit_pick_child:bbp_lite_group_edit_pick_child,group_edit_exit:bbp_lite_group_edit_exit,group_edit_enter:bbp_lite_group_edit_enter,group_edit_sync:bbp_lite_group_edit_sync,bind_group_edit_escape:bbp_lite_bind_group_edit_escape,bind_group_edit_hooks:bbp_lite_bind_group_edit_hooks,bind_group_dblclick_edit:bbp_lite_bind_group_dblclick_edit}}
304 window.BBP_Lite_Group_Edit=window.BBP_Lite_Group_Edit||{create:bbp_lite_group_edit_create}})();(function(){function bbp_lite_safe_group_ops_create(deps){deps=deps||{};var bbp_lite_get_active_raw=(typeof deps.get_active_raw==='function')?deps.get_active_raw:function(){return null};var bbp_lite_is_group=(typeof deps.is_group==='function')?deps.is_group:function(){return!1};var bbp_lite_is_active_selection=(typeof deps.is_active_selection==='function')?deps.is_active_selection:function(){return!1};var bbp_lite_is_artboard=(typeof deps.is_artboard==='function')?deps.is_artboard:function(){return!1};var bbp_lite_generate_id=(typeof deps.generate_id==='function')?deps.generate_id:function(){return String(Date.now())};var bbp_lite_prepare_group_for_subtargets=(typeof deps.prepare_group_for_subtargets==='function')?deps.prepare_group_for_subtargets:function(){};var bbp_lite_history_checkpoint=(typeof deps.history_checkpoint==='function')?deps.history_checkpoint:function(){};function bbp_lite_safe_ungroup(canvas){if(!canvas){return!1}
305 var group=bbp_lite_get_active_raw(canvas);if(!bbp_lite_is_group(group)){return!1}
306 if(!group||typeof group.getObjects!=='function'){return!1}
307 var objects=(group.getObjects()||[]).filter(function(obj){return!!(obj&&!bbp_lite_is_artboard(obj))});if(!objects.length){return!1}
308 var active_selection=null;if(typeof canvas.discardActiveObject==='function'){try{canvas.discardActiveObject()}catch(e1){}}
309 if(typeof group._restoreObjectsState==='function'){try{group._restoreObjectsState()}catch(e2){}}
310 try{canvas.remove(group)}catch(e3){}
311 objects.forEach(function(obj){if(!obj){return}
312 try{if(typeof obj.set==='function'){obj.set('parent',null)}}catch(e3b){}
313 try{obj.parent=null}catch(e3c){}
314 if(typeof canvas.getObjects==='function'&&canvas.getObjects().indexOf(obj)===-1){try{canvas.add(obj)}catch(e4){}}
315 if(typeof obj.setCoords==='function'){obj.setCoords()}});if(window.fabric&&window.fabric.ActiveSelection&&objects.length>1&&typeof canvas.setActiveObject==='function'){try{active_selection=new window.fabric.ActiveSelection(objects,{canvas:canvas});canvas.setActiveObject(active_selection)}catch(e5){}}else if(objects.length===1&&typeof canvas.setActiveObject==='function'){try{canvas.setActiveObject(objects[0])}catch(e6){}}
316 if(typeof canvas.requestRenderAll==='function'){canvas.requestRenderAll()}else if(typeof canvas.renderAll==='function'){canvas.renderAll()}
317 bbp_lite_history_checkpoint({immediate:!0});return!0}
318 function bbp_lite_safe_group(canvas){if(!canvas){return!1}
319 var active=bbp_lite_get_active_raw(canvas);if(!bbp_lite_is_active_selection(active)||typeof active.getObjects!=='function'){return!1}
320 var objects=(active.getObjects()||[]).filter(function(obj){return!!(obj&&!bbp_lite_is_artboard(obj))});if(objects.length<2){return!1}
321 var group=null;if(typeof active.toGroup==='function'){try{group=active.toGroup()}catch(e0){group=null}}
322 if(!group&&window.fabric&&window.fabric.Group){if(typeof canvas.discardActiveObject==='function'){try{canvas.discardActiveObject()}catch(e1){}}
323 objects.forEach(function(obj){try{canvas.remove(obj)}catch(e2){}});try{group=new window.fabric.Group(objects,{originX:'center',originY:'center'});canvas.add(group)}catch(e3){group=null}}
324 if(!group){return!1}
325 if(!group.bbp_id){group.bbp_id=bbp_lite_generate_id()}
326 bbp_lite_prepare_group_for_subtargets(group,!1);if(typeof canvas.setActiveObject==='function'){try{canvas.setActiveObject(group)}catch(e4){}}
327 if(typeof group.setCoords==='function'){group.setCoords()}
328 if(typeof canvas.requestRenderAll==='function'){canvas.requestRenderAll()}else if(typeof canvas.renderAll==='function'){canvas.renderAll()}
329 bbp_lite_history_checkpoint({immediate:!0});return!0}
330 function bbp_lite_explode_active_selection(canvas,active){if(!canvas||!bbp_lite_is_active_selection(active)||typeof active.getObjects!=='function'){return[]}
331 var list=(active.getObjects()||[]).filter(function(obj){return!!(obj&&!bbp_lite_is_artboard(obj))});try{if(typeof active.removeAll==='function'){active.removeAll()}else if(typeof active._exitGroup==='function'){list.slice().forEach(function(obj){if(obj){active._exitGroup(obj,!1)}})}}catch(e0){}
332 try{if(typeof canvas.discardActiveObject==='function'){canvas.discardActiveObject()}}catch(e1){}
333 list.forEach(function(obj){if(!obj){return}
334 var parent=obj.group||obj.parent||null;var guard=0;while(parent&&guard<4){if(typeof parent._exitGroup==='function'){try{parent._exitGroup(obj,!1)}catch(e2){break}}else if(typeof parent.remove==='function'){try{parent.remove(obj)}catch(e3){break}}else{break}
335 guard++;parent=obj.group||obj.parent||null}
336 try{if(typeof obj.set==='function'){obj.set('parent',null)}}catch(e4){}
337 try{obj.parent=null}catch(e5){}
338 if(typeof canvas.getObjects==='function'&&canvas.getObjects().indexOf(obj)===-1){try{canvas.add(obj)}catch(e6){}}
339 if(typeof obj.setCoords==='function'){obj.setCoords()}});if(typeof canvas.requestRenderAll==='function'){canvas.requestRenderAll()}else if(typeof canvas.renderAll==='function'){canvas.renderAll()}
340 return list}
341 return{safe_ungroup:bbp_lite_safe_ungroup,safe_group:bbp_lite_safe_group,explode_active_selection:bbp_lite_explode_active_selection}}
342 window.BBP_Lite_Safe_Group_Ops=window.BBP_Lite_Safe_Group_Ops||{create:bbp_lite_safe_group_ops_create}})();(function($){function bbp_lite_get_canvas(){if(typeof window.gamipress_badge_builder_canvas!=='undefined'&&window.gamipress_badge_builder_canvas){return window.gamipress_badge_builder_canvas}
343 if(typeof window.GamiPress_Badge_Builder!=='undefined'&&window.GamiPress_Badge_Builder&&window.GamiPress_Badge_Builder.canvas){return window.GamiPress_Badge_Builder.canvas}
344 return null}
345 function bbp_lite_has_pro_bridge(){if(window.BBP_FORCE_CORE_BRIDGE===!0){return!1}
346 if(typeof window.bbp_editor_bootstrapped!=='undefined'){return!0}
347 if(typeof window.gamipress_badge_builder_pro_runtime!=='undefined'){return!0}
348 return!1}
349 function bbp_lite_is_active_selection(obj){return!!(obj&&obj.type&&String(obj.type).toLowerCase()==='activeselection')}
350 function bbp_lite_is_group(obj){return!!(obj&&obj.type&&String(obj.type).toLowerCase()==='group')}
351 function bbp_lite_is_artboard(obj){if(!obj){return!1}
352 return(obj.data==='artboard'||(obj.data&&obj.data.role==='artboard'))}
353 function bbp_lite_get_manager(){if(typeof window.bbp_command_manager!=='undefined'&&window.bbp_command_manager){return window.bbp_command_manager}
354 if(typeof window.gamipress_badge_builder_bbp_command_manager!=='undefined'&&window.gamipress_badge_builder_bbp_command_manager&&typeof window.gamipress_badge_builder_bbp_command_manager.execute==='function'){window.bbp_command_manager=window.gamipress_badge_builder_bbp_command_manager;return window.bbp_command_manager}
355 if(typeof window.BBP_Command_Manager!=='undefined'&&window.BBP_Command_Manager&&typeof window.BBP_Command_Manager.execute==='function'){window.bbp_command_manager=window.BBP_Command_Manager;return window.bbp_command_manager}
356 return null}
357 function bbp_lite_ensure_manager(){var manager=bbp_lite_get_manager();if(manager){return manager}
358 if(typeof BBP_Command_Manager==='undefined'){return null}
359 if(typeof BBP_Command_Manager!=='function'){return null}
360 window.bbp_command_manager=new BBP_Command_Manager({max_steps:150});window.gamipress_badge_builder_bbp_command_manager=window.bbp_command_manager;return window.bbp_command_manager}
361 function bbp_lite_ensure_adapters(canvas,manager){if(!canvas||!manager){return}
362 if(typeof BBP_Fabric_Transform_Adapter!=='undefined'){if(!window.bbp_fabric_transform_adapter){window.bbp_fabric_transform_adapter=new BBP_Fabric_Transform_Adapter({canvas:canvas,manager:manager})}
363 if(window.bbp_fabric_transform_adapter&&!window.bbp_fabric_transform_adapter.__bbp_inited&&typeof window.bbp_fabric_transform_adapter.init==='function'){window.bbp_fabric_transform_adapter.init();window.bbp_fabric_transform_adapter.__bbp_inited=!0}}
364 if(typeof BBP_UI_Props_Adapter!=='undefined'){if(!window.bbp_ui_props_adapter){window.bbp_ui_props_adapter=new BBP_UI_Props_Adapter({canvas:canvas,manager:manager})}
365 if(window.bbp_ui_props_adapter&&!window.bbp_ui_props_adapter.__bbp_inited&&typeof window.bbp_ui_props_adapter.init==='function'){window.bbp_ui_props_adapter.init();window.bbp_ui_props_adapter.__bbp_inited=!0}}}
366 function bbp_lite_get_event_bus(){if(typeof window.gamipress_badge_builder!=='undefined'&&window.gamipress_badge_builder&&typeof window.gamipress_badge_builder.trigger==='function'){return window.gamipress_badge_builder}
367 return $(document)}
368 function bbp_lite_trigger_event(name,ctx){var bus=bbp_lite_get_event_bus();try{bus.trigger(name,[ctx])}catch(e){}
369 return ctx}
370 function bbp_lite_get_gradient_color_provider(){if(typeof window.gamipress_badge_builder_get_gradient_color==='function'&&window.gamipress_badge_builder_get_gradient_color!==bbp_lite_get_gradient_color_provider){return window.gamipress_badge_builder_get_gradient_color}
371 if(typeof window.gamipress_badge_builder_pro_get_gradient_color==='function'){return window.gamipress_badge_builder_pro_get_gradient_color}
372 return null}
373 function bbp_lite_register_gradient_color_provider(){if(typeof window.gamipress_badge_builder_get_gradient_color_provider!=='function'){window.gamipress_badge_builder_get_gradient_color_provider=bbp_lite_get_gradient_color_provider}}
374 function bbp_lite_get_bridge_version(){return 'core-bridge-contract-1'}
375 function bbp_lite_get_capabilities(canvas,manager){return{hybrid_history:!0,command_manager:!!(manager&&typeof manager.execute==='function'),multiselect_bridge:!!(window.bbp_ms_inited===!0||window.bbp_ms_process_tool_wrapped===!0||window.bbp_ms_selection_change_wrapped===!0),group_edit_dblclick:!0,contract_events:!0,keyboard_shortcut_hooks:!0,keyboard_raw_move_shortcuts:!0,release_bundle_loader:!0,active_selection:!!(window.fabric&&window.fabric.ActiveSelection)}}
376 function bbp_lite_emit_editor_ready(canvas,manager,force){var capabilities=bbp_lite_get_capabilities(canvas,manager);var signature=JSON.stringify(capabilities);if(!force&&window.__bbp_lite_editor_ready_signature===signature){return}
377 window.__bbp_lite_editor_ready_signature=signature;bbp_lite_trigger_event('gamipress_badge_builder_editor_ready',{canvas:canvas||null,fabric:window.fabric||null,manager:manager||bbp_lite_get_manager(),bridge_version:bbp_lite_get_bridge_version(),capabilities:capabilities})}
378 function bbp_lite_get_tool_name(tool){if(typeof tool==='string'){return tool}
379 if(tool&&tool.name){return tool.name}
380 if(tool&&tool.tool){return tool.tool}
381 return ''}
382 var bbp_lite_keyboard_contract_api=null;function bbp_lite_get_keyboard_contract_api(){if(bbp_lite_keyboard_contract_api){return bbp_lite_keyboard_contract_api}
383 if(typeof window.BBP_Lite_Keyboard_Contract!=='undefined'&&window.BBP_Lite_Keyboard_Contract&&typeof window.BBP_Lite_Keyboard_Contract.create==='function'){bbp_lite_keyboard_contract_api=window.BBP_Lite_Keyboard_Contract.create({trigger_event:bbp_lite_trigger_event,get_manager:bbp_lite_get_manager,get_active_raw:bbp_lite_get_active_raw})}
384 return bbp_lite_keyboard_contract_api}
385 function bbp_lite_keyboard_target_blocked(e){var api=bbp_lite_get_keyboard_contract_api();return!!(api&&typeof api.keyboard_target_blocked==='function'&&api.keyboard_target_blocked(e))}
386 function bbp_lite_snapshot_keyboard_event(e){var api=bbp_lite_get_keyboard_contract_api();return(api&&typeof api.snapshot_keyboard_event==='function')?api.snapshot_keyboard_event(e):null}
387 function bbp_lite_keyboard_tool_actions_from_event(e){var api=bbp_lite_get_keyboard_contract_api();return(api&&typeof api.keyboard_tool_actions_from_event==='function')?api.keyboard_tool_actions_from_event(e):null}
388 function bbp_lite_clear_keyboard_shortcut_pending(){var api=bbp_lite_get_keyboard_contract_api();if(api&&typeof api.clear_keyboard_shortcut_pending==='function'){api.clear_keyboard_shortcut_pending()}else{window.__bbp_lite_keyboard_shortcut_pending=null}}
389 function bbp_lite_consume_keyboard_shortcut_pending(tool_name){var api=bbp_lite_get_keyboard_contract_api();return(api&&typeof api.consume_keyboard_shortcut_pending==='function')?api.consume_keyboard_shortcut_pending(tool_name):null}
390 function bbp_lite_clear_keyboard_raw_move_pending(){var api=bbp_lite_get_keyboard_contract_api();if(api&&typeof api.clear_keyboard_raw_move_pending==='function'){api.clear_keyboard_raw_move_pending()}else{window.__bbp_lite_keyboard_raw_move_pending=null}}
391 function bbp_lite_consume_keyboard_raw_move_pending_for_call(obj,dx,dy){var api=bbp_lite_get_keyboard_contract_api();if(api&&typeof api.consume_keyboard_raw_move_pending_for_call==='function'){return api.consume_keyboard_raw_move_pending_for_call(obj,dx,dy)}
392 return null}
393 function bbp_lite_emit_after_keyboard_shortcut(meta,action,result){var api=bbp_lite_get_keyboard_contract_api();if(api&&typeof api.emit_after_keyboard_shortcut==='function'){api.emit_after_keyboard_shortcut(meta,action,result)}}
394 function bbp_lite_bind_keyboard_shortcut_contract(canvas){var api=bbp_lite_get_keyboard_contract_api();if(api&&typeof api.bind_keyboard_shortcut_contract==='function'){api.bind_keyboard_shortcut_contract(canvas)}}
395 function bbp_lite_wrap_contract_dispatchers(canvas){canvas=canvas||bbp_lite_get_canvas();if(typeof window.gamipress_badge_builder_process_tool==='function'&&!window.gamipress_badge_builder_process_tool.__bbp_lite_contract_wrapper){(function(original_process_tool){window.gamipress_badge_builder_process_tool=function(tool){var manager=bbp_lite_get_manager();var tool_name=bbp_lite_get_tool_name(tool);var active_before=bbp_lite_get_active_raw(canvas);var keyboard_meta=bbp_lite_consume_keyboard_shortcut_pending(tool_name);var source=keyboard_meta?'keyboard':'ui';var before_ctx={tool:tool,canvas:canvas||null,active:active_before||null,manager:manager||null,handled:!1,cancel:!1,result:undefined,source:source};var ret;var after_ctx;bbp_lite_trigger_event('gamipress_badge_builder_before_process_tool',before_ctx);if(before_ctx.cancel){ret=(typeof before_ctx.result!=='undefined')?before_ctx.result:!1;if(keyboard_meta){bbp_lite_emit_after_keyboard_shortcut(keyboard_meta,tool_name,ret)}
396 return ret}
397 if(before_ctx.handled){ret=before_ctx.result;after_ctx={tool:before_ctx.tool,canvas:canvas||null,active_before:active_before||null,active_after:bbp_lite_get_active_raw(canvas),source:source,result:ret};bbp_lite_trigger_event('gamipress_badge_builder_after_process_tool',after_ctx);if(keyboard_meta){bbp_lite_emit_after_keyboard_shortcut(keyboard_meta,tool_name,ret)}
398 return ret}
399 if(before_ctx.tool!==tool){var new_args=Array.prototype.slice.call(arguments);new_args[0]=before_ctx.tool;ret=original_process_tool.apply(this,new_args)}else{ret=original_process_tool.apply(this,arguments)}
400 after_ctx={tool:before_ctx.tool,canvas:canvas||null,active_before:active_before||null,active_after:bbp_lite_get_active_raw(canvas),source:source,result:ret};bbp_lite_trigger_event('gamipress_badge_builder_after_process_tool',after_ctx);if(keyboard_meta){bbp_lite_emit_after_keyboard_shortcut(keyboard_meta,tool_name,ret)}
401 return ret};window.gamipress_badge_builder_process_tool.__bbp_lite_contract_wrapper=!0;window.gamipress_badge_builder_process_tool.__bbp_lite_contract_inner=original_process_tool})(window.gamipress_badge_builder_process_tool)}
402 if(typeof window.gamipress_badge_builder_move_object==='function'&&!window.gamipress_badge_builder_move_object.__bbp_lite_keyboard_contract_wrapper){(function(original_move_object){window.gamipress_badge_builder_move_object=function(obj,dx,dy){var keyboard_move_meta=bbp_lite_consume_keyboard_raw_move_pending_for_call(obj,dx,dy);var ret=original_move_object.apply(this,arguments);if(keyboard_move_meta){bbp_lite_emit_after_keyboard_shortcut(keyboard_move_meta,keyboard_move_meta.action,ret)}
403 return ret};window.gamipress_badge_builder_move_object.__bbp_lite_keyboard_contract_wrapper=!0;window.gamipress_badge_builder_move_object.__bbp_lite_keyboard_contract_inner=original_move_object})(window.gamipress_badge_builder_move_object)}
404 if(typeof window.gamipress_badge_builder_selection_form_change==='function'&&!window.gamipress_badge_builder_selection_form_change.__bbp_lite_contract_wrapper){(function(original_selection_change){window.gamipress_badge_builder_selection_form_change=function(field){var manager=bbp_lite_get_manager();var $field=$(field);var field_id=$field.length?($field.attr('id')||''):'';var value=$field.length?$field.val():undefined;var active_before=bbp_lite_get_active_raw(canvas);var before_ctx={field:field,field_id:field_id,value:value,canvas:canvas||null,active:active_before||null,manager:manager||null,handled:!1,cancel:!1,result:undefined};var ret;bbp_lite_trigger_event('gamipress_badge_builder_before_selection_form_change',before_ctx);if(before_ctx.cancel){return(typeof before_ctx.result!=='undefined')?before_ctx.result:!1}
405 if(before_ctx.handled){ret=before_ctx.result}else if(before_ctx.field!==field){ret=original_selection_change.call(this,before_ctx.field)}else{ret=original_selection_change.apply(this,arguments)}
406 bbp_lite_trigger_event('gamipress_badge_builder_after_selection_form_change',{field:before_ctx.field,field_id:before_ctx.field_id,value:before_ctx.value,canvas:canvas||null,active_before:active_before||null,active_after:bbp_lite_get_active_raw(canvas),result:ret});return ret};window.gamipress_badge_builder_selection_form_change.__bbp_lite_contract_wrapper=!0;window.gamipress_badge_builder_selection_form_change.__bbp_lite_contract_inner=original_selection_change})(window.gamipress_badge_builder_selection_form_change)}
407 return!0}
408 function bbp_lite_get_active_object(canvas){if(!canvas||typeof canvas.getActiveObject!=='function'){return null}
409 var active=null;try{active=canvas.getActiveObject()}catch(e){active=null}
410 if(active&&bbp_lite_is_active_selection(active)&&typeof active.getObjects==='function'){var list=active.getObjects()||[];return(list.length?list[list.length-1]:null)}
411 return active}
412 function bbp_lite_get_active_raw(canvas){if(!canvas||typeof canvas.getActiveObject!=='function'){return null}
413 try{return canvas.getActiveObject()}catch(e){return null}}
414 function bbp_lite_pointer_from_event(canvas,event){var dom_event=(event&&event.e)?event.e:null;var pointer=null;var x=null;var y=null;var rect=null;if(!canvas||!dom_event){return null}
415 if(typeof canvas.getPointer==='function'){try{pointer=canvas.getPointer(dom_event);if(pointer&&Number.isFinite(Number(pointer.x))&&Number.isFinite(Number(pointer.y))){return{x:Number(pointer.x),y:Number(pointer.y)}}}catch(e0){}}
416 x=Number(dom_event.offsetX);y=Number(dom_event.offsetY);if(Number.isFinite(x)&&Number.isFinite(y)){return{x:x,y:y}}
417 x=Number(dom_event.layerX);y=Number(dom_event.layerY);if(Number.isFinite(x)&&Number.isFinite(y)){return{x:x,y:y}}
418 if(canvas.upperCanvasEl&&typeof canvas.upperCanvasEl.getBoundingClientRect==='function'){rect=canvas.upperCanvasEl.getBoundingClientRect();x=Number(dom_event.clientX)-Number(rect.left||0);y=Number(dom_event.clientY)-Number(rect.top||0);if(Number.isFinite(x)&&Number.isFinite(y)){return{x:x,y:y}}}
419 return null}
420 function bbp_lite_pick_active_selection_member(active,pointer){if(!active||!pointer||typeof active.getObjects!=='function'){return null}
421 var members=active.getObjects()||[];for(var i=members.length-1;i>=0;i--){var obj=members[i];var bb=null;if(!obj||bbp_lite_is_artboard(obj)){continue}
422 try{bb=obj.getBoundingRect(!0,!0)}catch(e0){try{bb=obj.getBoundingRect()}catch(e1){bb=null}}
423 if(bb&&pointer.x>=Number(bb.left||0)&&pointer.x<=(Number(bb.left||0)+Number(bb.width||0))&&pointer.y>=Number(bb.top||0)&&pointer.y<=(Number(bb.top||0)+Number(bb.height||0))){return obj}}
424 return null}
425 function bbp_lite_bind_active_selection_single_click_isolation(canvas){if(!canvas||canvas.__bbp_lite_single_click_isolation_bound||typeof canvas.on!=='function'){return}
426 canvas.__bbp_lite_single_click_isolation_bound=!0;canvas.on('mouse:up',function(event){var dom_event=(event&&event.e)?event.e:null;var active=null;var pointer=null;var target=null;if(!dom_event){return}
427 if(dom_event.ctrlKey||dom_event.metaKey||dom_event.shiftKey||dom_event.altKey){return}
428 if(event&&event.transform&&event.transform.actionPerformed){return}
429 try{active=(typeof canvas.getActiveObject==='function')?canvas.getActiveObject():null}catch(e0){active=null}
430 if(!active||!bbp_lite_is_active_selection(active)||typeof active.getObjects!=='function'){return}
431 pointer=bbp_lite_pointer_from_event(canvas,event);if(!pointer){return}
432 target=bbp_lite_pick_active_selection_member(active,pointer);if(!target){return}
433 setTimeout(function(){var current=null;var members=[];try{current=(typeof canvas.getActiveObject==='function')?canvas.getActiveObject():null}catch(e1){current=null}
434 if(!current||!bbp_lite_is_active_selection(current)||typeof current.getObjects!=='function'){return}
435 members=current.getObjects()||[];if(members.indexOf(target)===-1){return}
436 if(typeof canvas.discardActiveObject==='function'){try{canvas.discardActiveObject()}catch(e2){}}
437 if(typeof canvas.setActiveObject==='function'){try{canvas.setActiveObject(target)}catch(e3){return}}
438 if(typeof target.setCoords==='function'){target.setCoords()}
439 if(typeof canvas.requestRenderAll==='function'){canvas.requestRenderAll()}else if(typeof canvas.renderAll==='function'){canvas.renderAll()}},0)})}
440 function bbp_lite_key(obj){if(!obj){return null}
441 if(obj.bbp_id){return obj.bbp_id}
442 if(obj.bbp_uid){return obj.bbp_uid}
443 return null}
444 function bbp_lite_generate_id(){return 'bbp_'+Date.now()+'_'+Math.floor(Math.random()*100000)}
445 function bbp_lite_ensure_uid(canvas){if(!canvas||typeof canvas.getObjects!=='function'){return}
446 if(typeof window.bbp_uid_counter==='undefined'){window.bbp_uid_counter=1}
447 canvas.getObjects().forEach(function(obj){if(!obj){return}
448 if(!obj.bbp_id){obj.bbp_id=bbp_lite_generate_id();if(obj.data&&typeof obj.data==='object'&&typeof obj.data.bbp_id==='undefined'){try{obj.data.bbp_id=obj.bbp_id}catch(e0){}}
449 return}
450 if(!obj.bbp_uid){obj.bbp_uid='bbp_uid_'+(window.bbp_uid_counter++)}})}
451 function bbp_lite_order_snapshot(canvas){if(!canvas||typeof canvas.getObjects!=='function'){return[]}
452 bbp_lite_ensure_uid(canvas);return canvas.getObjects().map(function(obj){return bbp_lite_key(obj)}).filter(function(key){return!!key})}
453 function bbp_lite_capture_transform(obj){if(!obj){return null}
454 if(!obj.bbp_id){obj.bbp_id=bbp_lite_generate_id()}
455 if(window.bbp_fabric_transform_adapter&&typeof window.bbp_fabric_transform_adapter.capture==='function'){return window.bbp_fabric_transform_adapter.capture(obj)}
456 return null}
457 function bbp_lite_is_same_transform(before,after){if(!before||!after){return!1}
458 if(window.bbp_fabric_transform_adapter&&typeof window.bbp_fabric_transform_adapter.is_same_transform==='function'){return window.bbp_fabric_transform_adapter.is_same_transform(before,after)}
459 return!1}
460 function bbp_lite_is_transform_tool(tool_name){if(!tool_name){return!1}
461 return(tool_name.indexOf('align-')===0||tool_name.indexOf('rotate')===0||tool_name.indexOf('scale')===0||tool_name.indexOf('flip')===0||tool_name==='fit'||tool_name==='fit-canvas'||tool_name==='fit-to-canvas')}
462 function bbp_lite_is_arrange_tool(tool_name){return(tool_name==='send-front'||tool_name==='send-back'||tool_name==='send-to-front'||tool_name==='send-to-back')}
463 function bbp_lite_is_text_tool(obj){return!!(obj&&obj.textAlign!==undefined)}
464 function bbp_lite_is_text_style_tool(tool_name){if(!tool_name){return!1}
465 return(['bold','italic','underline','strikethrough','text-align-left','text-align-center','text-align-right','text-align-justify'].indexOf(tool_name)!==-1)}
466 function bbp_lite_capture_text_tool_objects(active_raw){if(!active_raw){return[]}
467 if(bbp_lite_is_active_selection(active_raw)&&typeof active_raw.getObjects==='function'){return(active_raw.getObjects()||[]).filter(function(obj){return obj&&!bbp_lite_is_artboard(obj)&&bbp_lite_is_text_tool(obj)})}
468 if(bbp_lite_is_artboard(active_raw)||!bbp_lite_is_text_tool(active_raw)){return[]}
469 return[active_raw]}
470 function bbp_lite_is_gradient_field(field_id){if(!field_id){return!1}
471 return(['fill','fill_2','fill_color_type','gradient_type','angle','radius','stroke','stroke_2','stroke_color_type','stroke_gradient_type','stroke_angle','stroke_radius','stroke_width','stroke_type','stroke_linejoin'].indexOf(field_id)!==-1)}
472 function bbp_lite_clone_state(value){if(typeof BBP_Utils!=='undefined'&&BBP_Utils&&typeof BBP_Utils.clone==='function'){return BBP_Utils.clone(value)}
473 try{return JSON.parse(JSON.stringify(value))}catch(e0){return value}}
474 function bbp_lite_same_objects(a,b){if(!Array.isArray(a)||!Array.isArray(b)){return!1}
475 if(a.length!==b.length){return!1}
476 for(var i=0;i<a.length;i++){if(a[i]!==b[i]){return!1}}
477 return!0}
478 function bbp_lite_try_merge_props_command(manager,objects,after,label,field_id){if(!manager||!bbp_lite_is_gradient_field(field_id)){return!1}
479 if(!Array.isArray(manager.undo_stack)||!Array.isArray(manager.redo_stack)){return!1}
480 if(manager.redo_stack.length>0||manager.undo_stack.length===0){return!1}
481 var last=manager.undo_stack[manager.undo_stack.length-1];if(!last||last.type!=='props'||!bbp_lite_same_objects(last.objects,objects)){return!1}
482 var now=Date.now();var last_ts=parseInt(last.__bbp_props_batch_ts||0,10);if(!last_ts||(now-last_ts)>500){return!1}
483 last.after=bbp_lite_clone_state(after);last.label=label||last.label;last.__bbp_props_batch_ts=now;last.__bbp_props_batch_field=field_id||'';if(typeof manager._schedule_focus_sync==='function'){manager._schedule_focus_sync()}
484 return!0}
485 var bbp_lite_group_edit_api=null;function bbp_lite_get_group_edit_api(){if(bbp_lite_group_edit_api){return bbp_lite_group_edit_api}
486 if(typeof window.BBP_Lite_Group_Edit!=='undefined'&&window.BBP_Lite_Group_Edit&&typeof window.BBP_Lite_Group_Edit.create==='function'){bbp_lite_group_edit_api=window.BBP_Lite_Group_Edit.create({is_group:bbp_lite_is_group,is_active_selection:bbp_lite_is_active_selection,generate_id:bbp_lite_generate_id})}
487 return bbp_lite_group_edit_api}
488 function bbp_lite_prepare_group_for_subtargets(group,allow_child_interaction){var api=bbp_lite_get_group_edit_api();if(api&&typeof api.prepare_group_for_subtargets==='function'){return api.prepare_group_for_subtargets(group,allow_child_interaction)}}
489 function bbp_lite_prepare_group_tree(node,allow_child_interaction){var api=bbp_lite_get_group_edit_api();if(api&&typeof api.prepare_group_tree==='function'){return api.prepare_group_tree(node,allow_child_interaction)}}
490 function bbp_lite_group_edit_get_group(canvas,group_id){var api=bbp_lite_get_group_edit_api();return(api&&typeof api.group_edit_get_group==='function')?api.group_edit_get_group(canvas,group_id):null}
491 function bbp_lite_group_edit_find_child(group,child_id){var api=bbp_lite_get_group_edit_api();return(api&&typeof api.group_edit_find_child==='function')?api.group_edit_find_child(group,child_id):null}
492 function bbp_lite_group_edit_is_descendant(node,group){var api=bbp_lite_get_group_edit_api();return!!(api&&typeof api.group_edit_is_descendant==='function'&&api.group_edit_is_descendant(node,group))}
493 function bbp_lite_group_edit_pick_child(group,preferred){var api=bbp_lite_get_group_edit_api();return(api&&typeof api.group_edit_pick_child==='function')?api.group_edit_pick_child(group,preferred):null}
494 function bbp_lite_group_edit_exit(canvas,options){var api=bbp_lite_get_group_edit_api();return!!(api&&typeof api.group_edit_exit==='function'&&api.group_edit_exit(canvas,options))}
495 function bbp_lite_group_edit_enter(canvas,group,child){var api=bbp_lite_get_group_edit_api();return!!(api&&typeof api.group_edit_enter==='function'&&api.group_edit_enter(canvas,group,child))}
496 function bbp_lite_group_edit_sync(canvas){var api=bbp_lite_get_group_edit_api();if(api&&typeof api.group_edit_sync==='function'){api.group_edit_sync(canvas)}}
497 function bbp_lite_bind_group_edit_escape(canvas){var api=bbp_lite_get_group_edit_api();if(api&&typeof api.bind_group_edit_escape==='function'){api.bind_group_edit_escape(canvas)}}
498 function bbp_lite_bind_group_edit_hooks(canvas){var api=bbp_lite_get_group_edit_api();if(api&&typeof api.bind_group_edit_hooks==='function'){api.bind_group_edit_hooks(canvas)}}
499 function bbp_lite_bind_group_dblclick_edit(canvas){var api=bbp_lite_get_group_edit_api();if(api&&typeof api.bind_group_dblclick_edit==='function'){api.bind_group_dblclick_edit(canvas)}}
500 function bbp_lite_history_checkpoint(options){options=options||{};if(typeof window.gamipress_badge_builder_history_applying!=='undefined'&&window.gamipress_badge_builder_history_applying){return}
501 var immediate=!!options.immediate;if(immediate){window.__bbp_lite_history_suppress_until=Date.now()+900;if(typeof window.gamipress_badge_builder_history_timer!=='undefined'&&window.gamipress_badge_builder_history_timer){clearTimeout(window.gamipress_badge_builder_history_timer);window.gamipress_badge_builder_history_timer=null}
502 if(typeof window.gamipress_badge_builder_history_save==='function'){window.gamipress_badge_builder_history_save();return}}
503 if(typeof window.gamipress_badge_builder_history_schedule==='function'){window.gamipress_badge_builder_history_schedule()}}
504 function bbp_lite_history_json_same(a,b){try{return JSON.stringify(a)===JSON.stringify(b)}catch(e0){return!1}}
505 function bbp_lite_history_snapshot_objects_count(snapshot){if(!snapshot||!Array.isArray(snapshot.objects)){return 0}
506 var count=0;snapshot.objects.forEach(function(obj){if(!obj){return}
507 if(obj.data==='artboard'){return}
508 if(obj.data&&typeof obj.data==='object'&&obj.data.role==='artboard'){return}
509 count++});return count}
510 function bbp_lite_history_normalize_floor(){if(window.__bbp_lite_history_floor_normalized){return}
511 if(!Array.isArray(window.gamipress_badge_builder_history)){return}
512 var history=window.gamipress_badge_builder_history;if(history.length<2){return}
513 var first=history[0];var second=history[1];var first_count=bbp_lite_history_snapshot_objects_count(first);var second_count=bbp_lite_history_snapshot_objects_count(second);if(first_count===0&&second_count>=2){history[0]=bbp_lite_clone_state(second);window.__bbp_lite_history_floor_normalized=!0}}
514 function bbp_lite_history_is_applying(){return!!(typeof window.gamipress_badge_builder_history_applying!=='undefined'&&window.gamipress_badge_builder_history_applying)}
515 function bbp_lite_mark_json_boundary(){var history=window.gamipress_badge_builder_history;var len=Array.isArray(history)?history.length:0;window.__bbp_lite_json_boundary_history_len=len}
516 function bbp_lite_clear_json_boundary(){window.__bbp_lite_json_boundary_history_len=0}
517 function bbp_lite_can_cross_manager_json_boundary(){var history=window.gamipress_badge_builder_history;if(!Array.isArray(history)||history.length<=1){return!1}
518 var boundary_len=parseInt(window.__bbp_lite_json_boundary_history_len||0,10);if(isNaN(boundary_len)||boundary_len<=1){return!1}
519 return(history.length>=boundary_len)}
520 function bbp_lite_get_history_action_queue(){if(!Array.isArray(window.__bbp_lite_history_action_queue)){window.__bbp_lite_history_action_queue=[]}
521 return window.__bbp_lite_history_action_queue}
522 function bbp_lite_get_history_action_epoch(){var epoch=parseInt(window.__bbp_lite_history_action_epoch||0,10);if(isNaN(epoch)||epoch<0){epoch=0}
523 return epoch}
524 function bbp_lite_touch_history_action_epoch(){window.__bbp_lite_history_action_epoch=bbp_lite_get_history_action_epoch()+1;return window.__bbp_lite_history_action_epoch}
525 function bbp_lite_clear_history_action_queue(){window.__bbp_lite_history_action_queue=[];window.__bbp_lite_history_action_queue_running=!1;if(window.__bbp_lite_history_action_queue_timer){clearTimeout(window.__bbp_lite_history_action_queue_timer);window.__bbp_lite_history_action_queue_timer=null}}
526 function bbp_lite_drain_history_action_queue(){if(window.__bbp_lite_history_action_queue_running){return}
527 window.__bbp_lite_history_action_queue_running=!0;var run=function(){if(bbp_lite_history_is_applying()){window.__bbp_lite_history_action_queue_timer=setTimeout(run,25);return}
528 var queue=bbp_lite_get_history_action_queue();if(!queue.length){window.__bbp_lite_history_action_queue_running=!1;window.__bbp_lite_history_action_queue_timer=null;return}
529 var next=queue.shift();var action='';var epoch=bbp_lite_get_history_action_epoch();if(next&&typeof next==='object'){action=next.action||'';epoch=parseInt(next.epoch,10)}else{action=next||''}
530 if(isNaN(epoch)){epoch=bbp_lite_get_history_action_epoch()}
531 if(epoch!==bbp_lite_get_history_action_epoch()){window.__bbp_lite_history_action_queue_timer=setTimeout(run,0);return}
532 if(action==='undo'){bbp_lite_hybrid_undo({allow_queue:!1})}else if(action==='redo'){bbp_lite_hybrid_redo({allow_queue:!1})}
533 window.__bbp_lite_history_action_queue_timer=setTimeout(run,25)};run()}
534 function bbp_lite_queue_history_action(action){if(action!=='undo'&&action!=='redo'){return}
535 var queue=bbp_lite_get_history_action_queue();queue.push({action:action,epoch:bbp_lite_get_history_action_epoch()});if(window.__bbp_lite_history_action_queue_running){return}
536 if(window.__bbp_lite_history_action_queue_timer){clearTimeout(window.__bbp_lite_history_action_queue_timer)}
537 window.__bbp_lite_history_action_queue_timer=setTimeout(function(){window.__bbp_lite_history_action_queue_timer=null;bbp_lite_drain_history_action_queue()},25)}
538 function bbp_lite_release_restore_when_history_idle(manager){if(!manager||typeof manager.end_restore!=='function'){return}
539 var attempts=0;var release=function(){attempts++;if(bbp_lite_history_is_applying()&&attempts<50){setTimeout(release,25);return}
540 manager.end_restore()};setTimeout(release,0)}
541 var bbp_lite_safe_group_ops_api=null;function bbp_lite_get_safe_group_ops_api(){if(bbp_lite_safe_group_ops_api){return bbp_lite_safe_group_ops_api}
542 if(typeof window.BBP_Lite_Safe_Group_Ops!=='undefined'&&window.BBP_Lite_Safe_Group_Ops&&typeof window.BBP_Lite_Safe_Group_Ops.create==='function'){bbp_lite_safe_group_ops_api=window.BBP_Lite_Safe_Group_Ops.create({get_active_raw:bbp_lite_get_active_raw,is_group:bbp_lite_is_group,is_active_selection:bbp_lite_is_active_selection,is_artboard:bbp_lite_is_artboard,generate_id:bbp_lite_generate_id,prepare_group_for_subtargets:bbp_lite_prepare_group_for_subtargets,history_checkpoint:bbp_lite_history_checkpoint})}
543 return bbp_lite_safe_group_ops_api}
544 function bbp_lite_safe_ungroup(canvas){var api=bbp_lite_get_safe_group_ops_api();return!!(api&&typeof api.safe_ungroup==='function'&&api.safe_ungroup(canvas))}
545 function bbp_lite_safe_group(canvas){var api=bbp_lite_get_safe_group_ops_api();return!!(api&&typeof api.safe_group==='function'&&api.safe_group(canvas))}
546 function bbp_lite_explode_active_selection(canvas,active){var api=bbp_lite_get_safe_group_ops_api();return(api&&typeof api.explode_active_selection==='function')?api.explode_active_selection(canvas,active):[]}
547 function bbp_lite_hybrid_undo(options){options=options||{};if(bbp_lite_history_is_applying()){if(options.allow_queue!==!1){bbp_lite_queue_history_action('undo')}
548 return}
549 var manager=bbp_lite_get_manager();var core_history=window.gamipress_badge_builder_history;if(manager&&typeof manager.can_undo==='function'&&manager.can_undo()&&typeof manager.undo==='function'){manager.undo();return}
550 if(manager&&typeof manager.can_undo==='function'&&typeof manager.can_redo==='function'){if(!manager.can_undo()&&manager.can_redo()){if(!bbp_lite_can_cross_manager_json_boundary()){return}
551 if(typeof manager.clear_stacks==='function'){manager.clear_stacks()}
552 bbp_lite_clear_json_boundary()}}
553 if(Array.isArray(core_history)&&core_history.length<=1){return}
554 if(typeof window.__bbp_lite_core_undo==='function'){if(manager&&typeof manager.begin_restore==='function'){manager.begin_restore()}
555 try{window.__bbp_lite_core_undo();if(window.__bbp_lite_restore_group_focus===!0){bbp_lite_schedule_group_focus_restore()}}finally{if(manager&&typeof manager.end_restore==='function'){bbp_lite_release_restore_when_history_idle(manager)}}}}
556 function bbp_lite_hybrid_redo(options){options=options||{};if(bbp_lite_history_is_applying()){if(options.allow_queue!==!1){bbp_lite_queue_history_action('redo')}
557 return}
558 var manager=bbp_lite_get_manager();var core_history_redo=window.gamipress_badge_builder_history_redo;if(manager&&typeof manager.can_redo==='function'&&manager.can_redo()&&typeof manager.redo==='function'){manager.redo();return}
559 if(manager&&typeof manager.can_undo==='function'&&typeof manager.can_redo==='function'){if(!manager.can_redo()&&manager.can_undo()){if(!bbp_lite_can_cross_manager_json_boundary()){return}
560 if(typeof manager.clear_stacks==='function'){manager.clear_stacks()}
561 bbp_lite_clear_json_boundary()}}
562 if(Array.isArray(core_history_redo)&&core_history_redo.length===0){return}
563 if(typeof window.__bbp_lite_core_redo==='function'){if(manager&&typeof manager.begin_restore==='function'){manager.begin_restore()}
564 try{window.__bbp_lite_core_redo();if(window.__bbp_lite_restore_group_focus===!0){bbp_lite_schedule_group_focus_restore()}}finally{if(manager&&typeof manager.end_restore==='function'){bbp_lite_release_restore_when_history_idle(manager)}}}}
565 function bbp_lite_schedule_group_focus_restore(){var delays=[120,320,650];var run_attempt=function(attempt){if(attempt>=delays.length){return}
566 setTimeout(function(){var canvas=bbp_lite_get_canvas();if(!canvas||typeof canvas.getActiveObject!=='function'){if(attempt+1<delays.length){run_attempt(attempt+1)}
567 return}
568 var active=null;try{active=canvas.getActiveObject()}catch(e0){active=null}
569 if(active){return}
570 if(typeof canvas.getObjects!=='function'){if(attempt+1<delays.length){run_attempt(attempt+1)}
571 return}
572 var objects=canvas.getObjects().filter(function(obj){return!!(obj&&!bbp_lite_is_artboard(obj))});if(!objects.length){if(attempt+1<delays.length){run_attempt(attempt+1)}
573 return}
574 var groups=objects.filter(function(obj){return bbp_lite_is_group(obj)});if(groups.length===1&&objects.length===1){try{canvas.setActiveObject(groups[0])}catch(e1){}}else if(objects.length>1&&window.fabric&&window.fabric.ActiveSelection){try{canvas.setActiveObject(new window.fabric.ActiveSelection(objects,{canvas:canvas}))}catch(e2){}}else if(objects.length===1){try{canvas.setActiveObject(objects[0])}catch(e3){}}
575 if(typeof canvas.requestRenderAll==='function'){canvas.requestRenderAll()}else if(typeof canvas.renderAll==='function'){canvas.renderAll()}
576 active=null;try{active=canvas.getActiveObject()}catch(e4){active=null}
577 if(!active&&attempt+1<delays.length){run_attempt(attempt+1)}},delays[attempt])};run_attempt(0)}
578 function bbp_lite_wrap_core(canvas){if(window.__bbp_lite_wrapped){return!0}
579 if(typeof window.gamipress_badge_builder_undo!=='function'||typeof window.gamipress_badge_builder_redo!=='function'||typeof window.gamipress_badge_builder_process_tool!=='function'||typeof window.gamipress_badge_builder_selection_form_change!=='function'){return!1}
580 var original_undo=window.gamipress_badge_builder_undo;var original_redo=window.gamipress_badge_builder_redo;var original_process_tool=window.gamipress_badge_builder_process_tool;var original_selection_change=window.gamipress_badge_builder_selection_form_change;var original_process_action=(typeof window.gamipress_badge_builder_process_action==='function')?window.gamipress_badge_builder_process_action:null;var original_history_reset=(typeof window.gamipress_badge_builder_history_reset==='function')?window.gamipress_badge_builder_history_reset:null;window.__bbp_lite_core_undo=original_undo;window.__bbp_lite_core_redo=original_redo;window.__bbp_lite_core_process_tool=original_process_tool;window.__bbp_lite_core_selection_form_change=original_selection_change;window.__bbp_lite_core_process_action=original_process_action;window.__bbp_lite_core_history_reset=original_history_reset;if(typeof window.bbp_core_selection_form_change==='undefined'){window.bbp_core_selection_form_change=original_selection_change}
581 if(!window.__bbp_lite_history_schedule_wrapped&&typeof window.gamipress_badge_builder_history_schedule==='function'){window.__bbp_lite_core_history_schedule=window.gamipress_badge_builder_history_schedule;window.__bbp_lite_history_schedule_wrapped=!0;window.gamipress_badge_builder_history_schedule=function(){var suppress_until=parseInt(window.__bbp_lite_history_suppress_until||0,10);if(suppress_until&&Date.now()<suppress_until){return}
582 return window.__bbp_lite_core_history_schedule.apply(this,arguments)}}
583 if(!window.__bbp_lite_history_save_wrapped&&typeof window.gamipress_badge_builder_history_save==='function'){window.__bbp_lite_core_history_save=window.gamipress_badge_builder_history_save;window.__bbp_lite_history_save_wrapped=!0;window.gamipress_badge_builder_history_save=function(){if(typeof window.gamipress_badge_builder_history_applying!=='undefined'&&window.gamipress_badge_builder_history_applying){return}
584 if(!window.gamipress_badge_builder_canvas||!Array.isArray(window.gamipress_badge_builder_history)){return window.__bbp_lite_core_history_save.apply(this,arguments)}
585 var snapshot=window.gamipress_badge_builder_canvas.toJSON(['data']);var history=window.gamipress_badge_builder_history;var last=history.length?history[history.length-1]:null;if(last&&bbp_lite_history_json_same(last,snapshot)){window.gamipress_badge_builder_history_redo=[];bbp_lite_history_normalize_floor();return}
586 history.push(snapshot);window.gamipress_badge_builder_history_redo=[];bbp_lite_history_normalize_floor()}}
587 window.gamipress_badge_builder_undo=function(){bbp_lite_hybrid_undo()};window.gamipress_badge_builder_redo=function(){bbp_lite_hybrid_redo()};if(original_history_reset){window.gamipress_badge_builder_history_reset=function(){bbp_lite_touch_history_action_epoch();bbp_lite_clear_history_action_queue();bbp_lite_clear_json_boundary();return original_history_reset.apply(this,arguments)}}
588 if(original_process_action){window.gamipress_badge_builder_process_action=function(){bbp_lite_touch_history_action_epoch();bbp_lite_clear_history_action_queue();var ret=original_process_action.apply(this,arguments);setTimeout(function(){bbp_lite_mark_json_boundary()},360);return ret}}
589 window.gamipress_badge_builder_process_tool=function(tool){var manager=bbp_lite_get_manager();var tool_name='';if(typeof tool==='string'){tool_name=tool}else if(tool&&tool.name){tool_name=tool.name}else if(tool&&tool.tool){tool_name=tool.tool}
590 bbp_lite_group_edit_sync(canvas);if(tool_name==='undo'){bbp_lite_hybrid_undo();return}
591 if(tool_name==='redo'){bbp_lite_hybrid_redo();return}
592 bbp_lite_touch_history_action_epoch();bbp_lite_clear_history_action_queue();if(!manager||manager.is_restoring){return original_process_tool.apply(this,arguments)}
593 var group_edit_state=canvas.__bbp_lite_group_edit_mode||null;var group_edit_group=null;if(group_edit_state&&group_edit_state.group_id){group_edit_group=bbp_lite_group_edit_get_group(canvas,group_edit_state.group_id);if(!group_edit_group){canvas.__bbp_lite_group_edit_mode=null;group_edit_state=null}}
594 if(group_edit_state){if(tool_name==='ungroup'){bbp_lite_group_edit_exit(canvas,{keep_active:!0});if(group_edit_group&&typeof canvas.setActiveObject==='function'){try{canvas.setActiveObject(group_edit_group)}catch(e_group_edit_ungroup){}
595 if(typeof group_edit_group.setCoords==='function'){group_edit_group.setCoords()}}}else if(tool_name==='group'||tool_name==='duplicate'||tool_name==='delete'){return!1}}
596 if(tool_name==='group'||tool_name==='ungroup'||tool_name==='duplicate'||tool_name==='delete'){if(typeof manager.begin_restore==='function'){manager.begin_restore()}
597 try{if(tool_name==='group'||tool_name==='ungroup'){var has_pending_history=!!(typeof window.gamipress_badge_builder_history_timer!=='undefined'&&window.gamipress_badge_builder_history_timer);var has_pending_commands=!!(manager&&Array.isArray(manager.undo_stack)&&manager.undo_stack.length>0);if(has_pending_history||has_pending_commands){bbp_lite_history_checkpoint({immediate:!0})}}
598 if(typeof manager.clear_stacks==='function'){manager.clear_stacks()}
599 if(tool_name==='group'){window.__bbp_lite_restore_group_focus=!0;bbp_lite_safe_group(canvas);bbp_lite_mark_json_boundary();return}
600 if(tool_name==='ungroup'){window.__bbp_lite_restore_group_focus=!0;bbp_lite_safe_ungroup(canvas);bbp_lite_mark_json_boundary();return}
601 if(tool_name==='duplicate'){var active_for_duplicate=bbp_lite_get_active_raw(canvas);var duplicate_target=null;if(bbp_lite_is_active_selection(active_for_duplicate)){var duplicate_list=bbp_lite_explode_active_selection(canvas,active_for_duplicate);duplicate_target=duplicate_list.length?duplicate_list[duplicate_list.length-1]:null;if(!duplicate_target){duplicate_target=bbp_lite_get_active_object(canvas)}}else{duplicate_target=bbp_lite_get_active_object(canvas)}
602 if(duplicate_target&&typeof original_process_tool==='function'){var prev_active_obj=window.gamipress_badge_builder_active_obj;var prev_active_index=window.gamipress_badge_builder_active_obj_index;var duplicate_index=-1;if(typeof canvas.getObjects==='function'){duplicate_index=canvas.getObjects().indexOf(duplicate_target)}
603 window.gamipress_badge_builder_active_obj=duplicate_target;window.gamipress_badge_builder_active_obj_index=duplicate_index;if(typeof canvas.setActiveObject==='function'){try{canvas.setActiveObject(duplicate_target)}catch(e_dup_set_active){}}
604 try{var duplicate_ret=original_process_tool.call(this,tool_name);setTimeout(function(){bbp_lite_mark_json_boundary()},360);return duplicate_ret}finally{window.gamipress_badge_builder_active_obj=prev_active_obj;window.gamipress_badge_builder_active_obj_index=prev_active_index}}}
605 if(tool_name==='delete'){var delete_ret=original_process_tool.apply(this,arguments);setTimeout(function(){bbp_lite_mark_json_boundary()},360);return delete_ret}
606 window.__bbp_lite_restore_group_focus=!1;return original_process_tool.apply(this,arguments)}finally{if(typeof manager.end_restore==='function'){manager.end_restore()}
607 if(typeof manager.clear_stacks==='function'){manager.clear_stacks()}}}
608 bbp_lite_ensure_uid(canvas);var active_raw_before=bbp_lite_get_active_raw(canvas);var active_is_multi=bbp_lite_is_active_selection(active_raw_before);var active_before=active_is_multi?null:bbp_lite_get_active_object(canvas);if(bbp_lite_is_arrange_tool(tool_name)&&!active_is_multi&&typeof BBP_Arrange_Command!=='undefined'){var before_order=bbp_lite_order_snapshot(canvas);var ret_arrange=original_process_tool.apply(this,arguments);var after_order=bbp_lite_order_snapshot(canvas);if(before_order.join('|')!==after_order.join('|')){manager.execute(new BBP_Arrange_Command({canvas:canvas,label:tool_name,before_order:before_order,after_order:after_order}))}
609 return ret_arrange}
610 if(bbp_lite_is_text_style_tool(tool_name)&&typeof BBP_Props_Command!=='undefined'&&window.bbp_ui_props_adapter&&typeof window.bbp_ui_props_adapter._capture_props==='function'){var text_objects=bbp_lite_capture_text_tool_objects(active_raw_before);if(text_objects.length){var before_text_props=window.bbp_ui_props_adapter._capture_props(text_objects);var ret_text_tool=original_process_tool.apply(this,arguments);var after_text_props=window.bbp_ui_props_adapter._capture_props(text_objects);if(!window.bbp_ui_props_adapter._same_props||!window.bbp_ui_props_adapter._same_props(before_text_props,after_text_props)){if(!bbp_lite_try_merge_props_command(manager,text_objects,after_text_props,tool_name,tool_name)){var text_props_command=new BBP_Props_Command(text_objects,before_text_props,after_text_props,{label:tool_name});text_props_command.__bbp_props_batch_ts=Date.now();text_props_command.__bbp_props_batch_field=tool_name;manager.execute(text_props_command)}}
611 return ret_text_tool}}
612 if(bbp_lite_is_transform_tool(tool_name)&&!active_is_multi&&typeof BBP_Transform_Command!=='undefined'){var before_transform=bbp_lite_capture_transform(active_before);var ret_transform=original_process_tool.apply(this,arguments);var active_after=bbp_lite_get_active_object(canvas);if(active_before&&active_before.bbp_id&&active_after&&!active_after.bbp_id){active_after.bbp_id=active_before.bbp_id}
613 var after_transform=bbp_lite_capture_transform(active_after);if(before_transform&&after_transform&&!bbp_lite_is_same_transform(before_transform,after_transform)){manager.execute(new BBP_Transform_Command({canvas:canvas,object_id:after_transform.bbp_id,before:before_transform,after:after_transform}))}
614 return ret_transform}
615 return original_process_tool.apply(this,arguments)};window.gamipress_badge_builder_selection_form_change=function(field){var manager=bbp_lite_get_manager();if(!manager||manager.is_restoring||manager._undo_redo_lock){return original_selection_change.apply(this,arguments)}
616 if(window.bbp_selection_form_syncing===!0||window.bbp_ms_updating_form===!0){return original_selection_change.apply(this,arguments)}
617 var $field=$(field);if(!$field.length){return original_selection_change.apply(this,arguments)}
618 bbp_lite_touch_history_action_epoch();bbp_lite_clear_history_action_queue();var id=$field.attr('id')||'';var name=$field.attr('name')||'';var group_edit_state=canvas.__bbp_lite_group_edit_mode||null;if(group_edit_state&&id==='icon'){return!1}
619 if(id==='icon'){bbp_lite_history_checkpoint({immediate:!0});if(manager&&typeof manager.clear_stacks==='function'){manager.clear_stacks()}
620 var ret_icon_change=original_selection_change.apply(this,arguments);setTimeout(function(){bbp_lite_mark_json_boundary();bbp_lite_history_checkpoint({immediate:!0});if(manager&&typeof manager.clear_stacks==='function'){manager.clear_stacks()}},420);return ret_icon_change}
621 if(['fill','fill_2','fill_color_type','gradient_type','angle','radius','stroke','stroke_2','stroke_color_type','stroke_gradient_type','stroke_angle','stroke_radius','stroke_width','stroke_type','stroke_linejoin','font_family','font_size','line_height','letter_spacing'].indexOf(id)===-1){return original_selection_change.apply(this,arguments)}
622 var active=(canvas&&typeof canvas.getActiveObject==='function')?canvas.getActiveObject():null;if(!active||bbp_lite_is_active_selection(active)){return original_selection_change.apply(this,arguments)}
623 var objects=[active];var before=(window.bbp_ui_props_adapter&&typeof window.bbp_ui_props_adapter._capture_props==='function')?window.bbp_ui_props_adapter._capture_props(objects):null;var ret=original_selection_change.apply(this,arguments);if(!before||!window.bbp_ui_props_adapter||typeof window.bbp_ui_props_adapter._capture_props!=='function'){return ret}
624 var after=window.bbp_ui_props_adapter._capture_props(objects);if(typeof window.bbp_ui_props_adapter._same_props==='function'&&window.bbp_ui_props_adapter._same_props(before,after)){return ret}
625 if(typeof BBP_Props_Command!=='undefined'){var props_label=(id||name||'props');if(!bbp_lite_try_merge_props_command(manager,objects,after,props_label,id)){var props_command=new BBP_Props_Command(objects,before,after,{label:props_label});props_command.__bbp_props_batch_ts=Date.now();props_command.__bbp_props_batch_field=id||'';manager.execute(props_command)}}
626 return ret};window.__bbp_lite_wrapped=!0;return!0}
627 function bbp_lite_bootstrap(){bbp_lite_register_gradient_color_provider();if(bbp_lite_has_pro_bridge()){window.__bbp_lite_disabled_due_pro=!0;return!0}
628 var canvas=bbp_lite_get_canvas();if(!canvas){return!1}
629 var manager=bbp_lite_ensure_manager();if(!manager){return!1}
630 bbp_lite_ensure_adapters(canvas,manager);if(typeof canvas.getObjects==='function'){canvas.getObjects().forEach(function(obj){bbp_lite_prepare_group_tree(obj,!1)})}
631 if(typeof canvas.on==='function'&&!canvas.__bbp_lite_group_object_added_bound){canvas.__bbp_lite_group_object_added_bound=!0;canvas.on('object:added',function(event){var added=(event&&event.target)?event.target:null;bbp_lite_prepare_group_tree(added,!1)})}
632 bbp_lite_bind_group_edit_hooks(canvas);bbp_lite_bind_group_dblclick_edit(canvas);bbp_lite_bind_keyboard_shortcut_contract(canvas);bbp_lite_bind_active_selection_single_click_isolation(canvas);var wrapped=bbp_lite_wrap_core(canvas);if(wrapped){bbp_lite_wrap_contract_dispatchers(canvas);bbp_lite_emit_editor_ready(canvas,manager)}
633 return wrapped}
634 window.bbp_lite_wrap_contract_dispatchers=bbp_lite_wrap_contract_dispatchers;window.bbp_lite_emit_editor_ready=bbp_lite_emit_editor_ready;window.bbp_lite_get_bridge_capabilities=bbp_lite_get_capabilities;$(document).ready(function(){var tries=0;var timer=setInterval(function(){tries++;var ok=bbp_lite_bootstrap();if(ok||tries>100){clearInterval(timer)}},50);setTimeout(bbp_lite_bootstrap,0);setTimeout(bbp_lite_bootstrap,100);setTimeout(bbp_lite_bootstrap,300)})})(jQuery);(function($){function bbp_ms_has_pro_bridge(){if(window.BBP_FORCE_CORE_BRIDGE===!0){return!1}
635 if(typeof window.bbp_editor_bootstrapped!=='undefined'){return!0}
636 if(typeof window.gamipress_badge_builder_pro_runtime!=='undefined'){return!0}
637 return!1}
638 function bbp_ms_get_canvas(){if(typeof window.gamipress_badge_builder_canvas!=='undefined'&&window.gamipress_badge_builder_canvas){return window.gamipress_badge_builder_canvas}
639 if(typeof window.GamiPress_Badge_Builder!=='undefined'&&window.GamiPress_Badge_Builder&&window.GamiPress_Badge_Builder.canvas){return window.GamiPress_Badge_Builder.canvas}
640 return null}
641 function bbp_ms_get_gradient_color_provider(){var provider=null;if(typeof window.gamipress_badge_builder_get_gradient_color_provider==='function'){try{provider=window.gamipress_badge_builder_get_gradient_color_provider()}catch(e_provider){provider=null}
642 if(typeof provider==='function'){return provider}}
643 if(typeof window.gamipress_badge_builder_get_gradient_color==='function'){return window.gamipress_badge_builder_get_gradient_color}
644 if(typeof window.gamipress_badge_builder_pro_get_gradient_color==='function'){return window.gamipress_badge_builder_pro_get_gradient_color}
645 return null}
646 function bbp_ms_enforce_selection_keys(canvas){if(!canvas){return}
647 canvas.selection=!0;canvas.selectionKey=['ctrlKey','metaKey'];canvas.altSelectionKey='shiftKey'}
648 function bbp_ms_is_artboard(obj){if(!obj){return!1}
649 return(obj.data==='artboard'||(obj.data&&obj.data.role==='artboard'))}
650 function bbp_ms_is_text(obj){return!!(obj&&obj.textAlign!==undefined)}
651 function bbp_ms_is_active_selection(obj){return(obj&&obj.type&&String(obj.type).toLowerCase()==='activeselection')}
652 function bbp_ms_clear_single_click_candidate(canvas){if(canvas){canvas.__bbp_ms_single_click_candidate=null}}
653 function bbp_ms_has_selection_modifier(dom_event){if(!dom_event){return!1}
654 return!!(dom_event.ctrlKey||dom_event.metaKey||dom_event.shiftKey||dom_event.altKey)}
655 function bbp_ms_pointer_from_event(canvas,event){var dom_event=(event&&event.e)?event.e:null;var x=null;var y=null;var rect=null;var pointer=null;if(!canvas||!dom_event){return null}
656 if(typeof canvas.getPointer==='function'){try{pointer=canvas.getPointer(dom_event);if(pointer&&Number.isFinite(Number(pointer.x))&&Number.isFinite(Number(pointer.y))){return{x:Number(pointer.x),y:Number(pointer.y)}}}catch(e0){}}
657 x=Number(dom_event.offsetX);y=Number(dom_event.offsetY);if(Number.isFinite(x)&&Number.isFinite(y)){return{x:x,y:y}}
658 x=Number(dom_event.layerX);y=Number(dom_event.layerY);if(Number.isFinite(x)&&Number.isFinite(y)){return{x:x,y:y}}
659 if(canvas.upperCanvasEl&&typeof canvas.upperCanvasEl.getBoundingClientRect==='function'){rect=canvas.upperCanvasEl.getBoundingClientRect();x=Number(dom_event.clientX)-Number(rect.left||0);y=Number(dom_event.clientY)-Number(rect.top||0);if(Number.isFinite(x)&&Number.isFinite(y)){return{x:x,y:y}}}
660 return null}
661 function bbp_ms_pick_active_member_from_pointer(active,event_target,sub_targets,pointer){if(!active||typeof active.getObjects!=='function'){return null}
662 var members=active.getObjects()||[];var i;var candidate=null;var candidates=[];if(event_target&&event_target!==active){candidates.push(event_target)}
663 if(Array.isArray(sub_targets)){sub_targets.forEach(function(obj){if(obj&&candidates.indexOf(obj)===-1){candidates.push(obj)}})}
664 for(i=0;i<candidates.length;i++){candidate=candidates[i];if(members.indexOf(candidate)!==-1){return candidate}}
665 if(!pointer){return null}
666 var point=pointer;if(window.fabric&&typeof window.fabric.Point==='function'){point=new window.fabric.Point(pointer.x,pointer.y)}
667 for(i=members.length-1;i>=0;i--){var obj=members[i];var bb=null;if(!obj||bbp_ms_is_artboard(obj)){continue}
668 try{if(typeof obj.containsPoint==='function'&&obj.containsPoint(point)){return obj}}catch(e0){}
669 try{bb=obj.getBoundingRect(!0,!0)}catch(e1){try{bb=obj.getBoundingRect()}catch(e2){bb=null}}
670 if(!bb){continue}
671 if(pointer.x>=Number(bb.left||0)&&pointer.x<=(Number(bb.left||0)+Number(bb.width||0))&&pointer.y>=Number(bb.top||0)&&pointer.y<=(Number(bb.top||0)+Number(bb.height||0))){return obj}}
672 return null}
673 function bbp_ms_mark_single_click_candidate(canvas,event){if(!canvas){return}
674 var active=null;var dom_event=(event&&event.e)?event.e:null;var pointer=null;var target=null;try{active=(typeof canvas.getActiveObject==='function')?canvas.getActiveObject():null}catch(e0){active=null}
675 if(!active||!bbp_ms_is_active_selection(active)){bbp_ms_clear_single_click_candidate(canvas);return}
676 if(bbp_ms_has_selection_modifier(dom_event)){bbp_ms_clear_single_click_candidate(canvas);return}
677 pointer=bbp_ms_pointer_from_event(canvas,event);target=bbp_ms_pick_active_member_from_pointer(active,event?event.target:null,event?event.subTargets:null,pointer);if(!target){bbp_ms_clear_single_click_candidate(canvas);return}
678 canvas.__bbp_ms_single_click_candidate={target:target,pointer:pointer,ts:Date.now()}}
679 function bbp_ms_track_single_click_motion(canvas,event){if(!canvas||!canvas.__bbp_ms_single_click_candidate){return}
680 var pointer=bbp_ms_pointer_from_event(canvas,event);var candidate=canvas.__bbp_ms_single_click_candidate;if(!pointer||!candidate.pointer){return}
681 var dx=pointer.x-candidate.pointer.x;var dy=pointer.y-candidate.pointer.y;if((dx*dx)+(dy*dy)>25){bbp_ms_clear_single_click_candidate(canvas)}}
682 function bbp_ms_isolate_single_click_candidate(canvas,event){if(!canvas){return}
683 var candidate=canvas.__bbp_ms_single_click_candidate||null;var dom_event=(event&&event.e)?event.e:null;var pointer=bbp_ms_pointer_from_event(canvas,event);var active_for_fallback=null;var fallback_target=null;if(bbp_ms_has_selection_modifier(dom_event)){bbp_ms_clear_single_click_candidate(canvas);return}
684 if((!candidate||!candidate.target)&&event&&event.transform&&event.transform.actionPerformed){bbp_ms_clear_single_click_candidate(canvas);return}
685 if(!candidate||!candidate.target){try{active_for_fallback=(typeof canvas.getActiveObject==='function')?canvas.getActiveObject():null}catch(e0){active_for_fallback=null}
686 if(active_for_fallback&&bbp_ms_is_active_selection(active_for_fallback)){fallback_target=bbp_ms_pick_active_member_from_pointer(active_for_fallback,event?event.target:null,event?event.subTargets:null,pointer)}
687 if(!fallback_target){bbp_ms_clear_single_click_candidate(canvas);return}
688 candidate={target:fallback_target,pointer:pointer,ts:Date.now()}}
689 bbp_ms_clear_single_click_candidate(canvas);if(!candidate||!candidate.target){return}
690 if(pointer&&candidate.pointer){var dx=pointer.x-candidate.pointer.x;var dy=pointer.y-candidate.pointer.y;if((dx*dx)+(dy*dy)>25){return}}
691 setTimeout(function(){var active_now=null;var members=[];try{active_now=(typeof canvas.getActiveObject==='function')?canvas.getActiveObject():null}catch(e0){active_now=null}
692 if(active_now&&!bbp_ms_is_active_selection(active_now)){if(active_now===candidate.target){return}
693 return}
694 if(!active_now||!bbp_ms_is_active_selection(active_now)||typeof active_now.getObjects!=='function'){return}
695 members=active_now.getObjects()||[];if(members.indexOf(candidate.target)===-1){return}
696 if(typeof canvas.discardActiveObject==='function'){try{canvas.discardActiveObject()}catch(e1){}}
697 if(typeof canvas.setActiveObject==='function'){try{canvas.setActiveObject(candidate.target)}catch(e2){return}}
698 if(typeof candidate.target.setCoords==='function'){candidate.target.setCoords()}
699 if(typeof canvas.requestRenderAll==='function'){canvas.requestRenderAll()}else if(typeof canvas.renderAll==='function'){canvas.renderAll()}},0)}
700 function bbp_ms_explode_active_selection(canvas,active){if(!canvas||!active||!bbp_ms_is_active_selection(active)){return}
701 var list=[];if(typeof active.getObjects==='function'){list=active.getObjects()||[]}
702 try{if(typeof active.removeAll==='function'){active.removeAll()}else if(typeof active._exitGroup==='function'&&list&&list.length){list.slice().forEach(function(obj){if(obj){active._exitGroup(obj,!1)}})}}catch(e1){}
703 try{if(typeof canvas.discardActiveObject==='function'){canvas.discardActiveObject()}}catch(e2){}
704 if(list&&list.length){list.forEach(function(obj){if(!obj){return}
705 var parent=obj.group||null;var guard=0;while(parent&&guard<4){if(typeof parent._exitGroup==='function'){try{parent._exitGroup(obj,!1)}catch(e3){break}}else if(typeof parent.remove==='function'){try{parent.remove(obj)}catch(e4){break}}else{break}
706 guard++;parent=obj.group||null}
707 if(typeof canvas.getObjects==='function'&&canvas.getObjects().indexOf(obj)===-1){try{canvas.add(obj)}catch(e5){}}
708 if(obj&&typeof obj.setCoords==='function'){obj.setCoords()}})}}
709 function bbp_ms_reselect_objects(canvas,objects){if(!canvas||!objects||!objects.length||!window.fabric||!window.fabric.ActiveSelection){return}
710 try{var sel=new window.fabric.ActiveSelection(objects,{canvas:canvas});if(typeof canvas.setActiveObject==='function'){canvas.setActiveObject(sel)}}catch(e){}}
711 function bbp_ms_selection_objects(active){if(!active||!active.type){return[]}
712 if(bbp_ms_is_active_selection(active)&&typeof active.getObjects==='function'){return active.getObjects().filter(function(o){return o&&!bbp_ms_is_artboard(o)})}
713 if(!bbp_ms_is_artboard(active)){return[active]}
714 return[]}
715 function bbp_ms_key(obj){if(!obj){return null}
716 return(obj.bbp_id)?obj.bbp_id:(obj.bbp_uid?obj.bbp_uid:null)}
717 function bbp_ms_ensure_uid(canvas){if(!canvas||typeof canvas.getObjects!=='function'){return}
718 if(typeof window.bbp_uid_counter==='undefined'){window.bbp_uid_counter=1}
719 canvas.getObjects().forEach(function(obj){if(!obj){return}
720 if(obj.bbp_id||obj.bbp_uid){return}
721 obj.bbp_uid='bbp_uid_'+(window.bbp_uid_counter++)})}
722 function bbp_ms_order_snapshot(canvas){if(!canvas||typeof canvas.getObjects!=='function'){return[]}
723 bbp_ms_ensure_uid(canvas);return canvas.getObjects().map(function(o){return bbp_ms_key(o)}).filter(function(key){return!!key})}
724 function bbp_ms_is_gradient_field(field_id){if(!field_id){return!1}
725 return(['fill','fill_2','fill_color_type','gradient_type','angle','radius','stroke','stroke_2','stroke_color_type','stroke_gradient_type','stroke_angle','stroke_radius','stroke_width','stroke_type','stroke_linejoin'].indexOf(field_id)!==-1)}
726 function bbp_ms_is_sync_change_field(field_id){if(!field_id){return!1}
727 return(['icon','fill','fill_2','fill_color_type','gradient_type','angle','radius','stroke','stroke_2','stroke_width','stroke_type','stroke_linejoin','stroke_color_type','stroke_gradient_type','stroke_angle','stroke_radius','font_family','font_size','line_height','letter_spacing'].indexOf(field_id)!==-1)}
728 function bbp_ms_start_programmatic_change_guard(ms){var duration=parseInt(ms,10);if(isNaN(duration)||duration<0){duration=0}
729 window.__bbp_ms_programmatic_change_until=Date.now()+duration}
730 function bbp_ms_is_programmatic_change_guard_active(){var until=parseInt(window.__bbp_ms_programmatic_change_until||0,10);if(isNaN(until)){return!1}
731 return(until>Date.now())}
732 function bbp_ms_clone_state(value){if(typeof BBP_Utils!=='undefined'&&BBP_Utils&&typeof BBP_Utils.clone==='function'){return BBP_Utils.clone(value)}
733 try{return JSON.parse(JSON.stringify(value))}catch(e){return value}}
734 function bbp_ms_same_objects(a,b){if(!Array.isArray(a)||!Array.isArray(b)){return!1}
735 if(a.length!==b.length){return!1}
736 for(var i=0;i<a.length;i++){if(a[i]!==b[i]){return!1}}
737 return!0}
738 function bbp_ms_try_merge_props_command(manager,objects,after,label,field_id){if(!manager||!bbp_ms_is_gradient_field(field_id)){return!1}
739 if(!Array.isArray(manager.undo_stack)||!Array.isArray(manager.redo_stack)){return!1}
740 if(manager.redo_stack.length>0||manager.undo_stack.length===0){return!1}
741 var last=manager.undo_stack[manager.undo_stack.length-1];if(!last||last.type!=='props'||!bbp_ms_same_objects(last.objects,objects)){return!1}
742 var now=Date.now();var last_ts=parseInt(last.__bbp_props_batch_ts||0,10);if(!last_ts||(now-last_ts)>500){return!1}
743 last.after=bbp_ms_clone_state(after);last.label=label||last.label;last.__bbp_props_batch_ts=now;last.__bbp_props_batch_field=field_id||'';if(typeof manager._schedule_focus_sync==='function'){manager._schedule_focus_sync()}
744 return!0}
745 function bbp_ms_reorder_block(canvas,objects,dir){if(!canvas||!Array.isArray(objects)||objects.length===0){return}
746 if(!canvas._objects||!Array.isArray(canvas._objects)){return}
747 bbp_ms_ensure_uid(canvas);var selected={};objects.forEach(function(o){var key=bbp_ms_key(o);if(key){selected[key]=!0}});var current=canvas._objects.slice();var picked=[];var rest=[];current.forEach(function(o){var key=bbp_ms_key(o);if(key&&selected[key]){picked.push(o)}else{rest.push(o)}});canvas._objects=(dir==='front')?rest.concat(picked):picked.concat(rest);if(typeof canvas.requestRenderAll==='function'){canvas.requestRenderAll()}else if(typeof canvas.renderAll==='function'){canvas.renderAll()}}
748 function bbp_ms_bbox(objects){var minX=null,minY=null,maxX=null,maxY=null;objects.forEach(function(o){if(!o||typeof o.getBoundingRect!=='function'){return}
749 var r=o.getBoundingRect(!0,!0);if(!r){return}
750 minX=(minX===null?r.left:Math.min(minX,r.left));minY=(minY===null?r.top:Math.min(minY,r.top));maxX=(maxX===null?(r.left+r.width):Math.max(maxX,r.left+r.width));maxY=(maxY===null?(r.top+r.height):Math.max(maxY,r.top+r.height))});if(minX===null){return null}
751 return{left:minX,top:minY,width:(maxX-minX),height:(maxY-minY),cx:(minX+(maxX-minX)/2),cy:(minY+(maxY-minY)/2)}}
752 function bbp_ms_transform_capture(obj){if(window.bbp_fabric_transform_adapter&&typeof window.bbp_fabric_transform_adapter.capture==='function'){return window.bbp_fabric_transform_adapter.capture(obj)}
753 return null}
754 function bbp_ms_apply_rotate(obj,delta){if(typeof window.gamipress_badge_builder_rotate==='function'){window.gamipress_badge_builder_rotate(obj,delta);return}
755 obj.set('angle',((obj.angle||0)+delta))}
756 function bbp_ms_apply_scale(obj,factor){if(!obj||typeof obj.set!=='function'){return}
757 var sx=(obj.scaleX||1)*factor;var sy=(obj.scaleY||1)*factor;if(sx<0.01){sx=0.01}
758 if(sy<0.01){sy=0.01}
759 obj.set({scaleX:sx,scaleY:sy})}
760 function bbp_ms_apply_scale_block(canvas,objects,factor){var box=bbp_ms_bbox(objects);if(!box){return}
761 var cx=box.cx;var cy=box.cy;objects.forEach(function(o){if(!o){return}
762 var oc=(typeof o.getCenterPoint==='function'?o.getCenterPoint():{x:(o.left||0),y:(o.top||0)});var relX=oc.x-cx;var relY=oc.y-cy;bbp_ms_apply_scale(o,factor);if(typeof o.setPositionByOrigin==='function'){o.setPositionByOrigin({x:(cx+relX*factor),y:(cy+relY*factor)},'center','center')}else{o.left=(cx+relX*factor);o.top=(cy+relY*factor)}
763 if(typeof o.setCoords==='function'){o.setCoords()}})}
764 function bbp_ms_apply_align_block(canvas,objects,tool){if(!canvas||!Array.isArray(objects)||objects.length===0){return}
765 objects.forEach(function(o){if(!o){return}
766 var dx=0;var dy=0;var bb=(typeof o.getBoundingRect==='function')?o.getBoundingRect(!0,!0):null;var has_bb=!!(bb&&typeof bb.left==='number'&&isFinite(bb.left)&&typeof bb.top==='number'&&isFinite(bb.top)&&typeof bb.width==='number'&&isFinite(bb.width)&&typeof bb.height==='number'&&isFinite(bb.height));if(has_bb){switch(tool){case 'align-horizontal-left':dx=-bb.left;break;case 'align-horizontal-center':dx=(canvas.width/2)-(bb.left+bb.width/2);break;case 'align-horizontal-right':dx=canvas.width-(bb.left+bb.width);break;case 'align-vertical-top':dy=-bb.top;break;case 'align-vertical-center':dy=(canvas.height/2)-(bb.top+bb.height/2);break;case 'align-vertical-bottom':dy=canvas.height-(bb.top+bb.height);break}}else{switch(tool){case 'align-horizontal-center':dx=(canvas.width/2)-(o.left||0);break;case 'align-vertical-center':dy=(canvas.height/2)-(o.top||0);break}}
767 o.left=(o.left||0)+dx;o.top=(o.top||0)+dy;if(typeof o.setCoords==='function'){o.setCoords()}})}
768 function bbp_ms_apply_fit(canvas,objects){var box=bbp_ms_bbox(objects);if(!box){return}
769 var m=0;var usableW=Math.max(1,canvas.width-m);var usableH=Math.max(1,canvas.height-m);var factor=Math.min(usableW/Math.max(1,box.width),usableH/Math.max(1,box.height));if(!isFinite(factor)||factor<=0){return}
770 var cx=box.cx;var cy=box.cy;objects.forEach(function(o){if(!o){return}
771 var oc=(typeof o.getCenterPoint==='function'?o.getCenterPoint():{x:(o.left||0),y:(o.top||0)});var relX=oc.x-cx;var relY=oc.y-cy;o.set({scaleX:(o.scaleX||1)*factor,scaleY:(o.scaleY||1)*factor});if(typeof o.setPositionByOrigin==='function'){o.setPositionByOrigin({x:(canvas.width/2+relX*factor),y:(canvas.height/2+relY*factor)},o.originX||'center',o.originY||'center')}else{o.left=(canvas.width/2+relX*factor);o.top=(canvas.height/2+relY*factor)}
772 if(typeof o.setCoords==='function'){o.setCoords()}})}
773 function bbp_ms_apply_align(canvas,objects,tool){objects.forEach(function(o){if(!o){return}
774 switch(tool){case 'align-horizontal-left':o.left=o.getScaledWidth()/2;break;case 'align-horizontal-center':o.left=canvas.width/2;break;case 'align-horizontal-right':o.left=canvas.width-o.getScaledWidth()/2;break;case 'align-vertical-top':o.top=o.getScaledHeight()/2;break;case 'align-vertical-center':o.top=canvas.height/2;break;case 'align-vertical-bottom':o.top=canvas.height-o.getScaledHeight()/2;break}
775 if(typeof o.setCoords==='function'){o.setCoords()}})}
776 function bbp_ms_apply_transform_tool(canvas,objects,tool_name){var scale_step=0.1;switch(tool_name){case 'scale-up':bbp_ms_apply_scale_block(canvas,objects,1.0+scale_step);break;case 'scale-down':bbp_ms_apply_scale_block(canvas,objects,1.0-scale_step);break;case 'rotate-left':objects.forEach(function(o){bbp_ms_apply_rotate(o,-5)});break;case 'rotate-right':objects.forEach(function(o){bbp_ms_apply_rotate(o,5)});break;case 'flip-horizontal':objects.forEach(function(o){o.toggle&&o.toggle('flipX')});break;case 'flip-vertical':objects.forEach(function(o){o.toggle&&o.toggle('flipY')});break;case 'fit':bbp_ms_apply_fit(canvas,objects);break;case 'align-horizontal-left':case 'align-horizontal-center':case 'align-horizontal-right':case 'align-vertical-top':case 'align-vertical-center':case 'align-vertical-bottom':bbp_ms_apply_align_block(canvas,objects,tool_name);break}
777 objects.forEach(function(o){if(o&&typeof o.setCoords==='function'){o.setCoords()}})}
778 function bbp_ms_apply_icon_change(canvas,active,objects,icon_id){if(!canvas||!icon_id){return}
779 if(!window.fabric||typeof window.fabric.loadSVGFromString!=='function'){return}
780 if(typeof window.gamipress_badge_builder_get_icon_svg!=='function'){return}
781 var targets=(Array.isArray(objects)?objects:[]).filter(function(o){return o&&!bbp_ms_is_text(o)});if(targets.length===0){return}
782 var ordered=targets.map(function(o){var idx=-1;if(typeof canvas.getObjects==='function'){idx=canvas.getObjects().indexOf(o)}
783 return{obj:o,index:idx}}).filter(function(entry){return entry.index>=0});if(ordered.length===0){return}
784 ordered.sort(function(a,b){return b.index-a.index});if(active&&bbp_ms_is_active_selection(active)){bbp_ms_explode_active_selection(canvas,active)}
785 var svg=window.gamipress_badge_builder_get_icon_svg(icon_id);if(!svg){return}
786 try{window.fabric.loadSVGFromString(svg).then(function(result){var svg_objects=result&&result.objects?result.objects:null;if(!svg_objects||!svg_objects.length){return}
787 var base=window.fabric.util.groupSVGElements(svg_objects);if(!base){return}
788 var clone_promises=ordered.map(function(entry){return base.clone().then(function(clone){var src=entry.obj;if(!src||!clone){return null}
789 clone.set({id:icon_id,left:src.left,top:src.top,fill:src.fill,strokeWidth:src.strokeWidth,strokeUniform:!0,strokeLineJoin:src.strokeLineJoin,stroke:src.stroke});if(typeof window.gamipress_badge_builder_duplicate_object_properties==='function'){window.gamipress_badge_builder_duplicate_object_properties(clone,src)}
790 if(base.height>base.width){clone.scaleToHeight(src.getScaledHeight()-src.strokeWidth)}else{clone.scaleToWidth(src.getScaledWidth()-src.strokeWidth)}
791 if(typeof canvas.add==='function'){canvas.add(clone);if(typeof canvas.moveTo==='function'){canvas.moveTo(clone,entry.index)}}
792 if(typeof canvas.fire==='function'){canvas.fire('object:modified',{target:clone})}
793 if(typeof canvas.remove==='function'){canvas.remove(src);if(typeof canvas.fire==='function'){canvas.fire('object:removed',{target:src})}}
794 if(typeof clone.setCoords==='function'){clone.setCoords()}
795 return clone})});Promise.all(clone_promises).then(function(clones){var new_objects=(clones||[]).filter(function(c){return!!c});if(new_objects.length){bbp_ms_reselect_objects(canvas,new_objects)}
796 if(typeof canvas.requestRenderAll==='function'){canvas.requestRenderAll()}else if(typeof canvas.renderAll==='function'){canvas.renderAll()}})})}catch(e){}}
797 function bbp_ms_apply_color_change(canvas,active,objects,form,field_id){if(!canvas||!objects||objects.length===0){return}
798 if(!form||!form.length){form=$('.gamipress-badge-builder-selection-options')}
799 if(!form||!form.length){return}
800 if(typeof window.gamipress_badge_builder_parse_color!=='function'){return}
801 var is_fill=(field_id==='fill'||field_id==='fill_2'||field_id==='fill_color_type'||field_id==='gradient_type'||field_id==='angle'||field_id==='radius');var is_stroke=(field_id==='stroke'||field_id==='stroke_2'||field_id==='stroke_color_type'||field_id==='stroke_gradient_type'||field_id==='stroke_angle'||field_id==='stroke_radius'||field_id==='stroke_width'||field_id==='stroke_type'||field_id==='stroke_linejoin');if(!is_fill&&!is_stroke){return}
802 var before=window.bbp_ui_props_adapter?window.bbp_ui_props_adapter._capture_props(objects):null;var reselect=!1;if(active&&bbp_ms_is_active_selection(active)){bbp_ms_explode_active_selection(canvas,active);reselect=!0}
803 objects.forEach(function(obj){if(!obj){return}
804 var gradient_provider=bbp_ms_get_gradient_color_provider();if(is_fill){var fill_type=form.find('#fill_color_type').val();var fill_1=form.find('#fill').val();if(fill_type==='single'){obj.set('fill',window.gamipress_badge_builder_parse_color(fill_1))}else if(gradient_provider){var fill_2=form.find('#fill_2').val();var gradient_type=form.find('#gradient_type').val();var angle=form.find('#angle').val();var radius=form.find('#radius').val();var gradient=gradient_provider(obj,fill_1,fill_2,gradient_type,angle,radius);obj.set('fill',gradient.fill);obj.set('gradientAngle',gradient.angle);obj.set('gradientRadius',gradient.radius)}}
805 if(is_stroke){if(field_id==='stroke_width'){var stroke_width=parseInt(form.find('#stroke_width').val(),10);if(isNaN(stroke_width)){stroke_width=0}
806 obj.set('strokeWidth',stroke_width)}else if(field_id==='stroke_type'||field_id==='stroke_linejoin'){var stroke_join=form.find('#stroke_type').val();if(typeof stroke_join==='undefined'||stroke_join===null){stroke_join=form.find('#stroke_linejoin').val()}
807 obj.set('strokeLineJoin',stroke_join)}
808 var stroke_type=form.find('#stroke_color_type').val();var stroke_1=form.find('#stroke').val();if(stroke_type==='single'){obj.set('stroke',window.gamipress_badge_builder_parse_color(stroke_1))}else if(gradient_provider){var stroke_2=form.find('#stroke_2').val();var stroke_gradient_type=form.find('#stroke_gradient_type').val();var stroke_angle=form.find('#stroke_angle').val();var stroke_radius=parseInt(form.find('#stroke_radius').val(),10);if(isNaN(stroke_radius)){stroke_radius=0}
809 stroke_radius*=15;var stroke_gradient=gradient_provider(obj,stroke_1,stroke_2,stroke_gradient_type,stroke_angle,stroke_radius);obj.set('stroke',stroke_gradient.fill);obj.set('strokeGradientAngle',stroke_gradient.angle);obj.set('strokeGradientRadius',stroke_gradient.radius)}}
810 if(typeof obj.setCoords==='function'){obj.setCoords()}
811 if(typeof canvas.fire==='function'){canvas.fire('object:modified',{target:obj})}});if(reselect){bbp_ms_reselect_objects(canvas,objects)}
812 if(typeof canvas.requestRenderAll==='function'){canvas.requestRenderAll()}else if(typeof canvas.renderAll==='function'){canvas.renderAll()}
813 if(!window.bbp_ui_props_adapter||!before){return}
814 var after=window.bbp_ui_props_adapter._capture_props(objects);if(window.bbp_ui_props_adapter._same_props&&window.bbp_ui_props_adapter._same_props(before,after)){return}
815 var color_label=field_id||'props';if(!bbp_ms_try_merge_props_command(window.bbp_command_manager,objects,after,color_label,field_id)){var color_command=new BBP_Props_Command(objects,before,after,{label:color_label});color_command.__bbp_props_batch_ts=Date.now();color_command.__bbp_props_batch_field=field_id||'';window.bbp_command_manager.execute(color_command)}}
816 function bbp_ms_bind(){var canvas=bbp_ms_get_canvas();if(!canvas){return!1}
817 var is_pro_mode=(bbp_ms_has_pro_bridge()||window.__bbp_lite_disabled_due_pro===!0);bbp_ms_enforce_selection_keys(canvas);if(typeof canvas.on==='function'){canvas.on('selection:created',function(){bbp_ms_enforce_selection_keys(canvas)});canvas.on('selection:updated',function(){bbp_ms_enforce_selection_keys(canvas)});canvas.on('selection:cleared',function(){bbp_ms_enforce_selection_keys(canvas)});canvas.on('mouse:down',function(event){bbp_ms_enforce_selection_keys(canvas);bbp_ms_mark_single_click_candidate(canvas,event)});canvas.on('mouse:move',function(event){bbp_ms_track_single_click_motion(canvas,event)});canvas.on('mouse:up',function(event){bbp_ms_isolate_single_click_candidate(canvas,event)})}
818 if(canvas&&typeof canvas.gamipress_badge_builder_update_selection==='function'&&!canvas.__bbp_ms_update_selection_wrapped){canvas.__bbp_ms_update_selection_wrapped=!0;var __bbp_ms_orig_update_sel=canvas.gamipress_badge_builder_update_selection;canvas.gamipress_badge_builder_update_selection=function(){var prev_active_obj=window.gamipress_badge_builder_active_obj;var active=null;try{active=canvas.getActiveObject&&canvas.getActiveObject()}catch(e){active=null}
819 if(active&&bbp_ms_is_active_selection(active)&&typeof active.getObjects==='function'){var list=active.getObjects();if(list&&list.length){var guide=list[list.length-1];var prev_fill=guide.fill;var prev_stroke=guide.stroke;if(guide.fill===null){guide.fill=''}
820 if(guide.stroke===null){guide.stroke=''}
821 window.gamipress_badge_builder_active_obj=guide;try{return __bbp_ms_orig_update_sel.apply(this,arguments)}catch(e2){return}finally{window.gamipress_badge_builder_active_obj=prev_active_obj;guide.fill=prev_fill;guide.stroke=prev_stroke}}}
822 try{return __bbp_ms_orig_update_sel.apply(this,arguments)}catch(e3){return}}}
823 if(typeof window.gamipress_badge_builder_update_selection_form==='function'&&!window.bbp_ms_update_form_wrapped){window.bbp_ms_update_form_wrapped=!0;var original_update_form=window.gamipress_badge_builder_update_selection_form;window.gamipress_badge_builder_update_selection_form=function(){var args=arguments;var active=null;var prev_flag=window.bbp_ms_updating_form;var prev_sync_flag=window.bbp_selection_form_syncing;window.bbp_ms_updating_form=!0;window.bbp_selection_form_syncing=!0;bbp_ms_start_programmatic_change_guard(0);try{try{active=canvas.getActiveObject&&canvas.getActiveObject()}catch(e){active=null}
824 try{if(args&&args.length&&args[0]&&bbp_ms_is_active_selection(args[0])&&typeof args[0].getObjects==='function'){active=args[0]}
825 if(active&&bbp_ms_is_active_selection(active)&&typeof active.getObjects==='function'){var list=active.getObjects();if(list&&list.length){var guide=list[list.length-1];var prev_active_obj=window.gamipress_badge_builder_active_obj;var prev_fill=guide.fill;var prev_stroke=guide.stroke;if(guide.fill===null){guide.fill=''}
826 if(guide.stroke===null){guide.stroke=''}
827 window.gamipress_badge_builder_active_obj=guide;if(args&&args.length){args=Array.prototype.slice.call(args);args[0]=guide}
828 try{return original_update_form.apply(this,args)}finally{window.gamipress_badge_builder_active_obj=prev_active_obj;guide.fill=prev_fill;guide.stroke=prev_stroke}}}}catch(e2){}
829 try{return original_update_form.apply(this,args)}catch(e3){return}}finally{window.bbp_ms_updating_form=prev_flag;window.bbp_selection_form_syncing=prev_sync_flag;bbp_ms_start_programmatic_change_guard(120)}}}
830 if(is_pro_mode){window.__bbp_ms_disabled_due_pro=!0}
831 if(!window.bbp_command_manager||!window.bbp_ui_props_adapter){return is_pro_mode?!0:!1}
832 if(typeof window.gamipress_badge_builder_selection_form_change==='function'&&!window.bbp_ms_selection_change_wrapped){window.bbp_ms_selection_change_wrapped=!0;var selection_change=window.gamipress_badge_builder_selection_form_change;window.gamipress_badge_builder_selection_form_change=function(field){var active=canvas.getActiveObject&&canvas.getActiveObject();var is_active_selection=(active&&active.type&&bbp_ms_is_active_selection(active));var is_group=(active&&active.type&&String(active.type).toLowerCase()==='group');if(!active||!active.type||(!is_active_selection&&!is_group)){return selection_change.apply(this,arguments)}
833 if(window.bbp_ms_updating_form||window.bbp_selection_form_syncing===!0){return}
834 if(window.bbp_command_manager.is_restoring){return selection_change.apply(this,arguments)}
835 if(window.bbp_command_manager._undo_redo_lock){return selection_change.apply(this,arguments)}
836 var objects=is_group?(active.getObjects?active.getObjects():[]):bbp_ms_selection_objects(active);if(objects.length<2){return selection_change.apply(this,arguments)}
837 var $field=$(field);if(!$field.length){return selection_change.apply(this,arguments)}
838 var id=$field.attr('id')||'';var name=$field.attr('name')||'';var is_icon=(id==='icon');if(bbp_ms_is_programmatic_change_guard_active()&&bbp_ms_is_sync_change_field(id)){return}
839 var track=!1;var is_color=!1;if(id==='fill'||id==='fill_2'||id==='fill_color_type'||id==='gradient_type'||id==='angle'||id==='radius'||id==='stroke'||id==='stroke_2'||id==='stroke_width'||id==='stroke_type'||id==='stroke_linejoin'||id==='stroke_color_type'||id==='stroke_gradient_type'||id==='stroke_angle'||id==='stroke_radius'){track=!0;is_color=!0}else if(id==='font_family'||id==='font_size'||id==='line_height'||id==='letter_spacing'){track=!0}
840 if(!track&&!is_icon){return selection_change.apply(this,arguments)}
841 if(is_icon){bbp_ms_apply_icon_change(canvas,active,objects,$field.val());return}
842 if(is_color){var form=$field.closest('.gamipress-badge-builder-selection-options');if(!form.length){form=$('.gamipress-badge-builder-selection-options')}
843 bbp_ms_apply_color_change(canvas,active,objects,form,id);return}
844 if(typeof window.bbp_core_selection_form_change!=='function'){return selection_change.apply(this,arguments)}
845 var before=window.bbp_ui_props_adapter?window.bbp_ui_props_adapter._capture_props(objects):null;var prev_active=window.gamipress_badge_builder_active_obj;var prev_index=window.gamipress_badge_builder_active_obj_index;var self=this;try{objects.forEach(function(obj){if(!obj){return}
846 window.gamipress_badge_builder_active_obj=obj;if(canvas&&typeof canvas.getObjects==='function'){window.gamipress_badge_builder_active_obj_index=canvas.getObjects().indexOf(obj)}
847 window.bbp_core_selection_form_change.call(self,field)})}finally{window.gamipress_badge_builder_active_obj=prev_active;window.gamipress_badge_builder_active_obj_index=prev_index}
848 if(!window.bbp_ui_props_adapter||!before){return}
849 var after=window.bbp_ui_props_adapter._capture_props(objects);if(window.bbp_ui_props_adapter._same_props&&window.bbp_ui_props_adapter._same_props(before,after)){return}
850 var label=id||name||'props';window.bbp_command_manager.execute(new BBP_Props_Command(objects,before,after,{label:label}));if(typeof canvas.requestRenderAll==='function'){canvas.requestRenderAll()}else if(typeof canvas.renderAll==='function'){canvas.renderAll()}}}
851 if(typeof window.gamipress_badge_builder_process_tool==='function'&&!window.bbp_ms_process_tool_wrapped){window.bbp_ms_process_tool_wrapped=!0;var process_tool=window.gamipress_badge_builder_process_tool;window.gamipress_badge_builder_process_tool=function(tool){var tool_name='';if(typeof tool==='string'){tool_name=tool}else if(tool&&tool.name){tool_name=tool.name}else if(tool&&tool.tool){tool_name=tool.tool}
852 var active=canvas.getActiveObject&&canvas.getActiveObject();if(!active||!active.type||!bbp_ms_is_active_selection(active)){return process_tool.apply(this,arguments)}
853 if(window.bbp_command_manager.is_restoring){return process_tool.apply(this,arguments)}
854 var objects=bbp_ms_selection_objects(active);if(objects.length<2){return process_tool.apply(this,arguments)}
855 if(tool_name==='send-front'||tool_name==='send-back'||tool_name==='send-to-front'||tool_name==='send-to-back'){var reselect_arrange=!1;if(active&&bbp_ms_is_active_selection(active)){bbp_ms_explode_active_selection(canvas,active);reselect_arrange=!0}
856 var before_order=bbp_ms_order_snapshot(canvas);bbp_ms_reorder_block(canvas,objects,(tool_name==='send-front'||tool_name==='send-to-front')?'front':'back');var after_order=bbp_ms_order_snapshot(canvas);if(before_order.join('|')!==after_order.join('|')){window.bbp_command_manager.execute(new BBP_Arrange_Command({canvas:canvas,label:tool_name,before_order:before_order,after_order:after_order}));if(typeof canvas.requestRenderAll==='function'){canvas.requestRenderAll()}}
857 if(reselect_arrange){bbp_ms_reselect_objects(canvas,objects);if(typeof canvas.requestRenderAll==='function'){canvas.requestRenderAll()}}
858 return}
859 var is_transform=!1;if(tool_name==='scale-up'||tool_name==='scale-down'||tool_name==='fit'||tool_name==='rotate-left'||tool_name==='rotate-right'||tool_name==='flip-horizontal'||tool_name==='flip-vertical'||tool_name.indexOf('align-')===0){is_transform=!0}
860 if(is_transform){var reselect=!1;var needs_block=(tool_name==='scale-up'||tool_name==='scale-down'||tool_name==='fit'||tool_name.indexOf('align-')===0);var suppress_prev=window.bbp_ms_suppress_transform_adapter;if(needs_block){window.bbp_ms_suppress_transform_adapter=!0}
861 try{if(needs_block){bbp_ms_explode_active_selection(canvas,active);reselect=!0}
862 var before_states=[];objects.forEach(function(o){before_states.push(bbp_ms_transform_capture(o))});var object_ids=before_states.map(function(state,idx){if(state&&state.bbp_id){return state.bbp_id}
863 return bbp_ms_key(objects[idx])});bbp_ms_apply_transform_tool(canvas,objects,tool_name);var after_states=[];objects.forEach(function(o2){after_states.push(bbp_ms_transform_capture(o2))});window.bbp_command_manager.execute(new BBP_Multi_Transform_Command({canvas:canvas,object_ids:object_ids,before:before_states,after:after_states,label:tool_name}));if(needs_block&&typeof canvas.fire==='function'){objects.forEach(function(obj){if(obj){canvas.fire('object:modified',{target:obj})}})}
864 if(reselect){bbp_ms_reselect_objects(canvas,objects)}
865 if(typeof canvas.requestRenderAll==='function'){canvas.requestRenderAll()}}finally{if(needs_block){window.bbp_ms_suppress_transform_adapter=suppress_prev}}
866 return}
867 return process_tool.apply(this,arguments)}}
868 if(typeof window.bbp_lite_wrap_contract_dispatchers==='function'){window.bbp_lite_wrap_contract_dispatchers(canvas)}
869 if(typeof window.bbp_lite_emit_editor_ready==='function'){window.bbp_lite_emit_editor_ready(canvas,window.bbp_command_manager||null)}
870 return!0}
871 function bbp_ms_init(){if(window.bbp_ms_inited){return}
872 var ok=bbp_ms_bind();if(!ok){return}
873 window.bbp_ms_inited=!0}
874 $(document).ready(function(){var tries=0;var timer=setInterval(function(){tries++;bbp_ms_init();if(window.bbp_ms_inited||tries>100){clearInterval(timer)}},50)})})(jQuery)