| 1 |
var gamipress_badge_builder;var gamipress_badge_builder_canvas;var gamipress_badge_builder_canvas_backup;var gamipress_badge_builder_multiple_canvas=[];var gamipress_badge_builder_multiple_details=[];var gamipress_badge_builder_active_obj;var gamipress_badge_builder_active_obj_index;var gamipress_badge_builder_history=[];var gamipress_badge_builder_history_redo=[];var gamipress_badge_builder_history_timer=null;var gamipress_badge_builder_history_applying=!1;var gamipress_badge_builder_history_suspended=0;(function($){gamipress_badge_builder=$('.gamipress-badge-builder');gamipress_badge_builder_canvas=new fabric.Canvas('gamipress-badge-builder-canvas',{preserveObjectStacking:!0,});gamipress_badge_builder_canvas_backup=new fabric.Canvas('gamipress-badge-builder-canvas-backup',{preserveObjectStacking:!0,});gamipress_badge_builder_generate_badge();gamipress_badge_builder_canvas.on('selection:created',gamipress_badge_builder_update_selection);gamipress_badge_builder_canvas.on('selection:updated',gamipress_badge_builder_update_selection);gamipress_badge_builder_canvas.on('selection:cleared',gamipress_badge_builder_update_selection);gamipress_badge_builder_canvas.on('mouse:down',function(){var active_el=(typeof document!=='undefined'&&document.activeElement)?document.activeElement:null;var tag=(active_el&&active_el.tagName)?String(active_el.tagName).toLowerCase():'';if(!active_el)return;if(active_el.isContentEditable||['input','textarea','select'].includes(tag)){if(typeof active_el.blur==='function'){active_el.blur()}}});setTimeout(gamipress_badge_builder_update_selection,100);gamipress_badge_builder_canvas.on('after:render',gamipress_badge_builder_history_schedule);gamipress_badge_builder_history_save();$('.gamipress-badge-builder-selection-options').on('click','.cmb2-id-icon .gamipress-badge-builder-icon',function(e){var selector=$('.gamipress-badge-builder-icon-selector');var sidebar=$('.gamipress-badge-builder-sidebar');if(selector.is(':visible')){selector.hide().scrollTop(0);sidebar.removeClass('gamipress-badge-builder-icon-selector-open')}else{selector.show().scrollTop(0);sidebar.addClass('gamipress-badge-builder-icon-selector-open')}});$('.gamipress-badge-builder-icon-selector').on('click','.gamipress-badge-builder-icon',function(e){var icon_id=$(this).data('id');gamipress_badge_builder_update_icon_field(icon_id);$('.gamipress-badge-builder-selection-options .cmb2-id-icon input').val(icon_id).trigger('change');$('.gamipress-badge-builder-icon-selector').hide().scrollTop(0);$('.gamipress-badge-builder-sidebar').removeClass('gamipress-badge-builder-icon-selector-open');$('.gamipress-badge-builder-icon-selector .gamipress-badge-builder-icon-selector-filter input').val('').change()});$('.gamipress-badge-builder-icon-selector').on('click','.gamipress-badge-builder-icon-selector-filter .dashicons',function(e){$('.gamipress-badge-builder-icon-selector').hide().scrollTop(0);$('.gamipress-badge-builder-sidebar').removeClass('gamipress-badge-builder-icon-selector-open');$('.gamipress-badge-builder-icon-selector .gamipress-badge-builder-icon-selector-filter input').val('').change()});$('.gamipress-badge-builder-icon-selector').on('change input','.gamipress-badge-builder-icon-selector-filter input',function(e){var search=$(this).val().toLowerCase();if(search===''){$('.gamipress-badge-builder-icon-selector .gamipress-badge-builder-icon').show();$('.gamipress-badge-builder-icon-selector strong').show();return} |
| 2 |
$('.gamipress-badge-builder-icon-selector .gamipress-badge-builder-icon').hide();$('.gamipress-badge-builder-icon-selector strong').hide();var found=$('.gamipress-badge-builder-icon-selector .gamipress-badge-builder-icon[data-id*="'+search+'"],'+'.gamipress-badge-builder-icon-selector .gamipress-badge-builder-icon[data-id^="'+search+'"],'+'.gamipress-badge-builder-icon-selector .gamipress-badge-builder-icon[data-id*="'+search+'"],'+'.gamipress-badge-builder-icon-selector .gamipress-badge-builder-icon[data-id="'+search+'"]');found.show();found.parent().prev('strong').show()});$('.gamipress-badge-builder-selection-options').on('change input','.gamipress-badge-builder-range-input',function(e){var $this=$(this);$this.parent().find('input[type="range"]').val($this.val()).trigger('change')});$('.gamipress-badge-builder-selection-options').on('change input','input[type="range"]',function(e){var $this=$(this);$this.parent().find('.gamipress-badge-builder-range-input').val($this.val())});$('.gamipress-badge-builder-selection-options').on('change input','input, select',function(e){gamipress_badge_builder_selection_form_change($(this))});gamipress_badge_builder_handle_colorpicker_changes();$('.gamipress-badge-builder-toolbar').on('click','.gamipress-badge-builder-toolbar-control',function(e){gamipress_badge_builder_process_action($(this).data('action'),$(this))});$('.gamipress-badge-builder-sidebar').on('click','.gamipress-badge-builder-sidebar-control',function(e){gamipress_badge_builder_process_action($(this).data('action'),$(this))});$('.gamipress-badge-builder-generate-multiple-view').on('click','.gamipress-badge-builder-preview-action',function(e){gamipress_badge_builder_process_action($(this).data('action'),$(this))});$('.gamipress-badge-builder-tools').on('click','.gamipress-badge-builder-tool',function(e){gamipress_badge_builder_process_tool($(this).data('tool'))});$('body').on('click','.gamipress-badge-builder-shortcuts-toggle',function(e){e.preventDefault();var $this=$(this);$('.gamipress-badge-builder-shortcuts-wrapper').slideToggle('fast');if($this.text()===gamipress_admin_badge_builder.show_text){$this.text(gamipress_admin_badge_builder.hide_text)}else{$this.text(gamipress_admin_badge_builder.show_text)}});$('body').on('click','.gamipress-badge-builder-upload-gpb',function(e){$('input#gamipress-badge-builder-upload-gpb-input')[0].click()});$('body').on('change','.gamipress-badge-builder-upload-gpb input',function(e){gamipress_badge_builder_import_gpb(this)});$('body').on('click','.gamipress-badge-builder-action-save-dropdown li',function(e){var format=$(this).attr('class').replace('gamipress-badge-builder-save-','');gamipress_badge_builder_process_save(format)});$('body').on('click','.gamipress-badge-builder-preview-action-download-dropdown li',function(e){var format=$(this).attr('class').replace('gamipress-badge-builder-preview-save-','');var i=parseInt($(this).closest('.gamipress-badge-builder-preview').data('index'));var details=gamipress_badge_builder_multiple_details[i];details.canvas=gamipress_badge_builder_canvas_backup;gamipress_badge_builder_canvas_backup.clear();gamipress_badge_builder_generate_badge(details);setTimeout(function(){gamipress_badge_builder_process_save(format,gamipress_badge_builder_canvas_backup)},100)})})(jQuery);function gamipress_badge_builder_colors_pairs(){return{material:[['#e3574d','#822c28','#f59191','#822c28'],['#e3574d','#822c28','#ffeeee','#822c28'],['#822c28','#e3574d','#f59191','#e3574d'],['#71b243','#276d36','#bad970','#276d36'],['#71b243','#276d36','#eeffee','#276d36'],['#276d36','#71b243','#bad970','#71b243'],['#6cc8bd','#2f7b76','#b3e0dd','#2f7b76'],['#6cc8bd','#2f7b76','#eeffff','#2f7b76'],['#2f7b76','#6cc8bd','#b3e0dd','#6cc8bd'],['#f27da2','#bc374b','#ebc5bf','#bc374b'],['#f27da2','#bc374b','#FFFFFF','#bc374b'],['#bc374b','#f27da2','#ebc5bf','#f27da2'],['#e6c539','#d18529','#fcf6d9','#d18529'],['#e6c539','#d18529','#FFFFFF','#d18529'],['#d18529','#e6c539','#fcf6d9','#e6c539'],['#3ea5d0','#265771','#9adbf4','#265771'],['#3ea5d0','#265771','#FFFFFF','#265771'],['#265771','#3ea5d0','#9adbf4','#3ea5d0'],['#937cb9','#513d78','#ddd5e9','#513d78'],['#937cb9','#513d78','#FFFFFF','#513d78'],['#513d78','#937cb9','#ddd5e9','#937cb9'],['#f69625','#a74824','#ead0bf','#a74824'],['#f69625','#a74824','#FFFFFF','#a74824'],['#a74824','#f69625','#ead0bf','#f69625'],],pastel:[['#fbdfe4','#f7a3b2','#f9f9f9','#f7a3b2'],['#f7a3b2','#fbdfe4','#f9f9f9','#fbdfe4'],['#cbb0d7','#bd89c6','#f0def7','#bd89c6'],['#bd89c6','#cbb0d7','#f0def7','#cbb0d7'],['#fda384','#f28583','#fcddd4','#f28583'],['#f28583','#fda384','#fcddd4','#fda384'],['#98c2ea','#7aacdb','#dbe6ff','#7aacdb'],['#7aacdb','#98c2ea','#dbe6ff','#98c2ea'],['#a1dacb','#88bdab','#e3f9f8','#88bdab'],['#88bdab','#a1dacb','#e3f9f8','#a1dacb'],['#baedb6','#9ddb8a','#d9f4db','#9ddb8a'],['#9ddb8a','#baedb6','#d9f4db','#baedb6'],['#e6ee92','#d8e54e','#f2fcd6','#d8e54e'],['#d8e54e','#e6ee92','#f2fcd6','#e6ee92'],['#bdcab3','#9fb492','#cfe2c9','#9fb492'],['#9fb492','#bdcab3','#cfe2c9','#bdcab3'],['#f9f4ad','#f2e774','#f9f9de','#f2e774'],['#f2e774','#f9f4ad','#f9f9de','#f9f4ad'],],vintage:[['#233D4D','#215E61','#E5D9B0','#FE7F2D'],['#233D4D','#215E61','#FE7F2D','#E5D9B0'],['#E5D9B0','#DE802B','#5C6F2B','#EEEEEE'],['#3b4f00','#5C6F2B','#DE802B','#E5D9B0'],['#656D3F','#84934A','#492828','#E5D9B0'],['#79C9C5','#3F9AAE','#FFE2AF','#F96E5B'],['#FFE2AF','#F96E5B','#79C9C5','#3F9AAE'],['#FDB5CE','#3B9797','#3B9797','#FFFFFF'],['#213C51','#6594B1','#DDAED3','#EEEEEE'],['#213C51','#6594B1','#EEEEEE','#DDAED3'],['#DDAED3','#6594B1','#EEEEEE','#6594B1'],['#84994F','#FFE797','#FFE797','#FCB53B'],['#37353E','#44444E','#715A5A','#D3DAD9'],['#44444E','#37353E','#D3DAD9','#715A5A'],],}} |
| 3 |
function gamipress_badge_builder_get_shapes(){return gamipress_admin_badge_builder.shapes} |
| 4 |
function gamipress_badge_builder_get_icons(){return gamipress_admin_badge_builder.icons} |
| 5 |
function gamipress_badge_builder_generate_badge(options){if(options===undefined){options={}} |
| 6 |
if(options.canvas===undefined){options.canvas=gamipress_badge_builder_canvas} |
| 7 |
if(options.is_preview===undefined){options.is_preview=!1} |
| 8 |
var colors=gamipress_badge_builder_colors_pairs();if(options.palette===undefined||options.palette===''){var palette=Object.keys(colors);options.palette=palette[Math.floor(Math.random()*palette.length)]} |
| 9 |
if(options.colors===undefined){colors=colors[options.palette];colors=colors[Math.floor(Math.random()*colors.length)];if(colors[3]===undefined) |
| 10 |
colors[3]=colors[1];options.colors=colors} |
| 11 |
if(options.shape===undefined||options.shape===''){var shape=gamipress_badge_builder_get_shapes();options.shape=shape[Math.floor(Math.random()*shape.length)]} |
| 12 |
if(options.icon===undefined||options.icon===''){var icon=gamipress_badge_builder_get_icons();options.icon=icon[Math.floor(Math.random()*icon.length)]} |
| 13 |
fabric.loadSVGFromString(gamipress_badge_builder_get_icon_svg(options.shape)).then(({objects})=>{var obj=fabric.util.groupSVGElements(objects);obj.clone().then(clone=>{clone.set({id:options.shape.split('/').pop().replace('.svg',''),fill:options.colors[0],strokeWidth:options.canvas.width/20,strokeUniform:!0,strokeLineJoin:'round',stroke:options.colors[1],selectable:!options.is_preview,});gamipress_badge_builder_default_object_properties(clone);if(clone.height>clone.width){clone.scaleToHeight(options.canvas.height-30)}else{clone.scaleToWidth(options.canvas.width-30)} |
| 14 |
options.canvas.add(clone);options.canvas.centerObject(clone);if(!options.is_preview) |
| 15 |
options.canvas.setActiveObject(clone)})});fabric.loadSVGFromString(gamipress_badge_builder_get_icon_svg(options.icon)).then(({objects})=>{var obj=fabric.util.groupSVGElements(objects);obj.clone().then(clone=>{clone.set({id:options.icon.split('/').pop().replace('.svg',''),fill:options.colors[2],strokeWidth:options.canvas.width/60,strokeUniform:!0,strokeLineJoin:'round',stroke:options.colors[3],selectable:!options.is_preview,});gamipress_badge_builder_default_object_properties(clone);if(clone.height>clone.width){clone.scaleToHeight((options.canvas.height/2)-10)}else{clone.scaleToWidth((options.canvas.width/2)-10)} |
| 16 |
options.canvas.add(clone);options.canvas.centerObject(clone);if(options.shape==='triangle-shape'){gamipress_badge_builder_scale(clone,0.8);gamipress_badge_builder_move_object(clone,0,options.canvas.height/6);if(options.is_preview){gamipress_badge_builder_move_object(clone,0,-6)}}else if(options.shape==='pentagon-shape'){gamipress_badge_builder_move_object(clone,0,options.canvas.height/12);if(options.is_preview){gamipress_badge_builder_move_object(clone,0,-4)}}else if(options.shape==='shield-shape'){gamipress_badge_builder_move_object(clone,0,-(options.canvas.height/15));if(options.is_preview){gamipress_badge_builder_move_object(clone,0,+5)}}})});options.canvas.renderAll();return options} |
| 17 |
function gamipress_badge_builder_handle_colorpicker_changes(){var $=$||jQuery;var colorpickers=$('.gamipress-badge-builder-selection-options .wp-color-picker');if(colorpickers.length===0){setTimeout(gamipress_badge_builder_handle_colorpicker_changes,500);return} |
| 18 |
colorpickers.wpColorPicker('option','change',function(e,ui){setTimeout(function(){gamipress_badge_builder_selection_form_change($(e.target))},1)})} |
| 19 |
function gamipress_badge_builder_get_icon_svg(icon_id){return jQuery('.gamipress-badge-builder-icon-selector .gamipress-badge-builder-icon-'+icon_id+' .gamipress-badge-builder-icon-svg').html()} |
| 20 |
function gamipress_badge_builder_update_icon_field(icon_id){var $=$||jQuery;var form=$('.gamipress-badge-builder-selection-options');var icon=$('.gamipress-badge-builder-icon-selector .gamipress-badge-builder-icon-'+icon_id);if(icon.length){$('.gamipress-badge-builder-icon-selector .gamipress-badge-builder-icon-selected').toggleClass('gamipress-badge-builder-icon-selected') |
| 21 |
icon.toggleClass('gamipress-badge-builder-icon-selected') |
| 22 |
var svg=gamipress_badge_builder_get_icon_svg(icon_id);var name=icon.find('span.cmb-tooltip-desc').html();form.find('#icon').val(icon_id);form.find('.cmb2-id-icon .gamipress-badge-builder-icon .gamipress-badge-builder-icon-svg').html(svg);form.find('.cmb2-id-icon .gamipress-badge-builder-icon .cmb-tooltip-desc').html(name)}} |
| 23 |
function gamipress_badge_builder_update_selection(){gamipress_badge_builder_active_obj=gamipress_badge_builder_canvas.getActiveObject();gamipress_badge_builder_active_obj_index=gamipress_badge_builder_canvas.getObjects().indexOf(gamipress_badge_builder_active_obj);gamipress_badge_builder_update_selection_form()} |
| 24 |
function gamipress_badge_builder_update_selection_form(){var $=$||jQuery;var form=$('.gamipress-badge-builder-selection-options');var sidebar=$('.gamipress-badge-builder-sidebar');if(!gamipress_badge_builder_active_obj){sidebar.css('right','-24%');return} |
| 25 |
var obj=gamipress_badge_builder_active_obj;sidebar.css('right','0%');form.find('.cmb2-id-icon').show();gamipress_badge_builder_update_icon_field(obj.id);if(typeof obj.fill=='object'){form.find('#fill').val(gamipress_badge_builder_parse_color(obj.fill.colorStops[0].color))}else{form.find('#fill').val(gamipress_badge_builder_parse_color(obj.fill))} |
| 26 |
if(typeof obj.stroke=='object'){form.find('#stroke').val(gamipress_badge_builder_parse_color(obj.stroke.colorStops[0].color))}else{form.find('#stroke').val(gamipress_badge_builder_parse_color(obj.stroke))} |
| 27 |
form.find('#stroke_width').val(obj.strokeWidth);form.find('#stroke_type').val(obj.strokeLineJoin);gamipress_badge_builder.trigger('gamipress_badge_builder_update_selection_form',[form]);form.find('#fill').trigger('change');form.find('#stroke_width').trigger('change');form.find('#stroke').trigger('change')} |
| 28 |
function gamipress_badge_builder_selection_form_change(field){var $=$||jQuery;if(!gamipress_badge_builder_active_obj)return;var obj=gamipress_badge_builder_active_obj;var form=$('.gamipress-badge-builder-selection-options');var field_id=field.attr('id');var value=field.val();switch(field_id){case 'icon':var index=gamipress_badge_builder_active_obj_index;var swap_obj=gamipress_badge_builder_active_obj;gamipress_badge_builder_history_suspended++;fabric.loadSVGFromString(gamipress_badge_builder_get_icon_svg(value)).then(({objects})=>{var new_obj=fabric.util.groupSVGElements(objects);return new_obj.clone().then(clone=>{clone.set({id:value,left:swap_obj.left,top:swap_obj.top,fill:swap_obj.fill,strokeWidth:swap_obj.strokeWidth,strokeUniform:!0,strokeLineJoin:swap_obj.strokeLineJoin,stroke:swap_obj.stroke,});gamipress_badge_builder_duplicate_object_properties(clone,swap_obj);if(new_obj.height>new_obj.width){clone.scaleToHeight(swap_obj.getScaledHeight()-swap_obj.strokeWidth)}else{clone.scaleToWidth(swap_obj.getScaledWidth()-swap_obj.strokeWidth)} |
| 29 |
gamipress_badge_builder_canvas.insertAt(index,clone);gamipress_badge_builder_canvas.setActiveObject(clone);gamipress_badge_builder_canvas.requestRenderAll()})}).catch(function(){}).then(function(){if(gamipress_badge_builder_history_suspended>0){gamipress_badge_builder_history_suspended--} |
| 30 |
if(typeof gamipress_badge_builder_history_schedule==='function'){setTimeout(function(){gamipress_badge_builder_history_schedule()},0)}});gamipress_badge_builder_delete(swap_obj);break;case 'fill':obj.set('fill',gamipress_badge_builder_parse_color(value));break;case 'stroke_width':value=parseInt(value);if(isNaN(value))value=0;obj.set('strokeWidth',value);break;case 'stroke':obj.set('stroke',gamipress_badge_builder_parse_color(value));break;case 'stroke_type':obj.set('strokeLineJoin',value);break} |
| 31 |
gamipress_badge_builder.trigger('gamipress_badge_builder_selection_form_change',[form,field,field_id,value]);gamipress_badge_builder_canvas.renderAll()} |
| 32 |
function gamipress_badge_builder_process_action(action,element){var $=$||jQuery;switch(action){case 'add-icon':gamipress_badge_builder_show_options_form('selection');fabric.loadSVGFromString(gamipress_badge_builder_get_icon_svg('circle-shape')).then(({objects})=>{var new_obj=fabric.util.groupSVGElements(objects);new_obj.clone().then(clone=>{clone.set({id:'circle-shape',left:gamipress_badge_builder_canvas.width/2,top:gamipress_badge_builder_canvas.height/2,fill:'#000000',strokeWidth:0,strokeUniform:!0,strokeLineJoin:'round',stroke:'#ff0000',});gamipress_badge_builder_default_object_properties(clone);if(clone.height>clone.width){clone.scaleToHeight((gamipress_badge_builder_canvas.height/2))}else{clone.scaleToWidth((gamipress_badge_builder_canvas.width/2))} |
| 33 |
gamipress_badge_builder_canvas.add(clone);gamipress_badge_builder_canvas.setActiveObject(clone)})});gamipress_badge_builder_canvas.renderAll();$('.gamipress-badge-builder-selection-options .cmb2-id-icon .gamipress-badge-builder-icon').trigger('click');break;case 'open-generate-badge':gamipress_badge_builder_show_options_form('generate-badge');break;case 'close-generate-badge':gamipress_badge_builder_close_options_form('generate-badge');break;case 'generate-badge':var palette=$('.gamipress-badge-builder-generate-badge-options input[name="badge_palette"]:checked').val();gamipress_badge_builder_canvas.clear();gamipress_badge_builder_generate_badge({palette:palette});break;case 'open-generate-multiple':var palette=$('.gamipress-badge-builder-generate-multiple-options input[name="multiple_palette"]:checked').val();$('.gamipress-badge-builder-generate-multiple-view .gamipress-badge-builder-preview').each(function(){var i=parseInt($(this).data('index'));if(gamipress_badge_builder_multiple_canvas[i]===undefined){gamipress_badge_builder_multiple_canvas[i]=new fabric.Canvas($(this).attr('class')+'-canvas-'+i,{preserveObjectStacking:!0,});gamipress_badge_builder_multiple_canvas[i].clear();var details=gamipress_badge_builder_generate_badge({canvas:gamipress_badge_builder_multiple_canvas[i],palette:palette,is_preview:!0,});gamipress_badge_builder_multiple_details[i]=details;$(this).find('.gamipress-badge-builder-preview-palette-name').text(gamipress_admin_badge_builder.color_palettes[details.palette].name)}});gamipress_badge_builder_show_options_form('generate-multiple');$('.gamipress-badge-builder-generate-multiple-view').css('left','-2%');break;case 'close-generate-multiple':gamipress_badge_builder_close_options_form('generate-multiple');$('.gamipress-badge-builder-generate-multiple-view').css('left','-84%');break;case 'generate-multiple':var palette=$('.gamipress-badge-builder-generate-multiple-options input[name="multiple_palette"]:checked').val();$('.gamipress-badge-builder-generate-multiple-view .gamipress-badge-builder-preview').each(function(){var i=parseInt($(this).data('index'));gamipress_badge_builder_multiple_canvas[i].clear();var details=gamipress_badge_builder_generate_badge({canvas:gamipress_badge_builder_multiple_canvas[i],palette:palette,is_preview:!0,});gamipress_badge_builder_multiple_details[i]=details;$(this).find('.gamipress-badge-builder-preview-palette-name').text(gamipress_admin_badge_builder.color_palettes[details.palette].name)});break;case 'generate-multiple-edit':var i=parseInt(element.closest('.gamipress-badge-builder-preview').data('index'));var details=gamipress_badge_builder_multiple_details[i];details.canvas=gamipress_badge_builder_canvas;details.is_preview=!1;gamipress_badge_builder_canvas.clear();gamipress_badge_builder_generate_badge(details);gamipress_badge_builder_close_options_form('generate-multiple');$('.gamipress-badge-builder-generate-multiple-view').css('left','-84%');break;default:gamipress_badge_builder.trigger('gamipress_badge_builder_process_action',[action,element]);break}} |
| 34 |
function gamipress_badge_builder_show_options_form(options){var $=$||jQuery;$('.gamipress-badge-builder-sidebar > div').hide();$('.gamipress-badge-builder-'+options+'-options').show();$('.gamipress-badge-builder-sidebar').css('right','0%');$('.gamipress-badge-builder-generate-multiple-view').css('left','-84%');$('.gamipress-badge-builder-icon-selector').hide().scrollTop(0);$('.gamipress-badge-builder-sidebar').removeClass('gamipress-badge-builder-icon-selector-open');$('.gamipress-badge-builder-icon-selector .gamipress-badge-builder-icon-selector-filter input').val('').change()} |
| 35 |
function gamipress_badge_builder_close_options_form(options){var $=$||jQuery;$('.gamipress-badge-builder-sidebar > div').hide();$('.gamipress-badge-builder-selection-options').show();if(!gamipress_badge_builder_active_obj){$('.gamipress-badge-builder-sidebar').css('right','-24%')}} |
| 36 |
function gamipress_badge_builder_process_tool(tool){var $=$||jQuery;if(!gamipress_badge_builder_active_obj)return;var obj=gamipress_badge_builder_active_obj;var scale_step=0.1;switch(tool){case 'scale-up':gamipress_badge_builder_scale(obj,1.0+scale_step);break;case 'scale-down':gamipress_badge_builder_scale(obj,1.0-scale_step);break;case 'fit':var fit_padding=parseFloat(obj.strokeWidth||0);var fit_max_w=Math.max(0,gamipress_badge_builder_canvas.width-fit_padding);var fit_max_h=Math.max(0,gamipress_badge_builder_canvas.height-fit_padding);var fit_obj_w=obj.getScaledWidth();var fit_obj_h=obj.getScaledHeight();var fit_factor=1;if(fit_obj_w>0&&fit_obj_h>0){fit_factor=Math.min(fit_max_w/fit_obj_w,fit_max_h/fit_obj_h)} |
| 37 |
if(isFinite(fit_factor)&&fit_factor>0){obj.scaleX*=fit_factor;obj.scaleY*=fit_factor} |
| 38 |
gamipress_badge_builder_canvas.centerObject(obj);obj.setCoords();break;case 'rotate-left':gamipress_badge_builder_rotate(obj,-5) |
| 39 |
break;case 'rotate-right':gamipress_badge_builder_rotate(obj,5);break;case 'flip-horizontal':obj.toggle('flipX');break;case 'flip-vertical':obj.toggle('flipY');break;case 'align-horizontal-left':obj.left=obj.getScaledWidth()/2;obj.setCoords();break;case 'align-horizontal-center':obj.left=gamipress_badge_builder_canvas.width/2;obj.setCoords();break;case 'align-horizontal-right':obj.left=gamipress_badge_builder_canvas.width-obj.getScaledWidth()/2;obj.setCoords();break;case 'align-vertical-top':obj.top=obj.getScaledHeight()/2;obj.setCoords();break;case 'align-vertical-center':obj.top=gamipress_badge_builder_canvas.height/2;obj.setCoords();break;case 'align-vertical-bottom':obj.top=gamipress_badge_builder_canvas.height-obj.getScaledHeight()/2;obj.setCoords();break;case 'group':if(obj.type!=="activeselection")return;if(!obj._objects||obj._objects.length<2)return;var objects=obj._objects.filter(clone=>clone.data!=="artboard");if(objects.length<2)return;const group=new fabric.Group(objects,{originX:"center",originY:"center"});gamipress_badge_builder_canvas.discardActiveObject();objects.forEach(obj=>gamipress_badge_builder_canvas.remove(obj));gamipress_badge_builder_canvas.add(group);gamipress_badge_builder_canvas.setActiveObject(group);break;case 'ungroup':console.log('ungroup');if(obj.type!=="group")return;const items=obj._objects?obj.getObjects():[];if(!items.length)return;gamipress_badge_builder_canvas.discardActiveObject();gamipress_badge_builder_canvas.remove(obj);items.forEach(clone=>{var point=fabric.util.transformPoint({x:clone.left,y:clone.top},obj.calcTransformMatrix());clone.set({left:point.x,top:point.y,scaleX:clone.scaleX*obj.scaleX,scaleY:clone.scaleY*obj.scaleY,angle:clone.angle+obj.angle});clone.setCoords();gamipress_badge_builder_canvas.add(clone)});const selection=new fabric.ActiveSelection(items,{canvas:gamipress_badge_builder_canvas});gamipress_badge_builder_canvas.setActiveObject(selection);break;case 'send-front':gamipress_badge_builder_canvas.bringObjectForward(obj);break;case 'send-back':gamipress_badge_builder_canvas.sendObjectBackwards(obj);break;case 'duplicate':obj.clone().then((clone)=>{clone.set({id:obj.id,});gamipress_badge_builder_duplicate_object_properties(clone,obj);clone.left+=20;clone.top+=20;gamipress_badge_builder_canvas.add(clone);gamipress_badge_builder_canvas.setActiveObject(clone)});break;case 'undo':gamipress_badge_builder_undo();break;case 'redo':gamipress_badge_builder_redo();break;case 'delete':gamipress_badge_builder_delete(obj);break;default:gamipress_badge_builder.trigger('gamipress_badge_builder_process_tool',[tool]);break} |
| 40 |
gamipress_badge_builder_canvas.renderAll()} |
| 41 |
function gamipress_badge_builder_set_object_center(obj,x,y){obj.set({originX:'center',originY:'center',left:x,top:y});obj.setCoords()} |
| 42 |
function gamipress_badge_builder_scale(obj,factor){var c=obj.getCenterPoint();obj.scaleX*=factor;obj.scaleY*=factor;gamipress_badge_builder_set_object_center(obj,c.x,c.y)} |
| 43 |
function gamipress_badge_builder_rotate(obj,delta){obj.rotate((obj.angle||0)+delta);obj.setCoords()} |
| 44 |
function gamipress_badge_builder_delete(obj){gamipress_badge_builder_canvas.remove(obj);gamipress_badge_builder_canvas.requestRenderAll();gamipress_badge_builder_active_obj=undefined;gamipress_badge_builder_active_obj_index=-1} |
| 45 |
function gamipress_badge_builder_parse_color(color){return '#'+new fabric.Color(color).toHex()} |
| 46 |
function gamipress_badge_builder_is_valid_file(field,format){if(field.files.length===0){return!1} |
| 47 |
var file=field.files[0];var ext=file.name.split('.').pop();if(ext!==format){return!1} |
| 48 |
return!0} |
| 49 |
function gamipress_badge_builder_import_gpb(field){if(!gamipress_badge_builder_is_valid_file(field,'gpb')){console.log('not valid file');return} |
| 50 |
var file=field.files[0];const reader=new FileReader();reader.onload=(e)=>{if(e.target.result.length>0){gamipress_badge_builder_canvas.loadFromJSON(e.target.result);setTimeout(function(){gamipress_badge_builder_canvas.renderAll()},1)}};reader.readAsText(file)} |
| 51 |
function gamipress_badge_builder_process_save(format,canvas){if(canvas===undefined){canvas=gamipress_badge_builder_canvas} |
| 52 |
switch(format){case 'gpb':var gpb=JSON.stringify(canvas.toJSON());gamipress_badge_builder_download("data:text/plain,"+encodeURIComponent(gpb),'gpb');break;case 'png':gamipress_badge_builder_download(canvas.toDataURL('png'),'png');break;default:gamipress_badge_builder.trigger('gamipress_badge_builder_process_save',[format,canvas]);break}} |
| 53 |
function gamipress_badge_builder_download(url,ext){var $=$||jQuery;var filename=$('#filename').val();if(filename===''){filename='gamipress-badge'} |
| 54 |
filename=filename.replace(/[\/|\\:*?"<>]/g," ");filename+='.'+ext;var a=document.createElement('a');a.href=url;a.download=filename;document.body.appendChild(a);a.click();document.body.removeChild(a)} |
| 55 |
function gamipress_badge_builder_move_object(obj,dx,dy){obj.left+=dx;obj.top+=dy;obj.setCoords();gamipress_badge_builder_canvas.renderAll()} |
| 56 |
function gamipress_badge_builder_default_object_properties(clone){gamipress_badge_builder.trigger('gamipress_badge_builder_default_object_properties',[clone])} |
| 57 |
function gamipress_badge_builder_duplicate_object_properties(clone,obj){gamipress_badge_builder.trigger('gamipress_badge_builder_duplicate_object_properties',[clone,obj])} |
| 58 |
function gamipress_badge_builder_history_schedule(){if(gamipress_badge_builder_history_applying||gamipress_badge_builder_history_suspended>0)return;clearTimeout(gamipress_badge_builder_history_timer);gamipress_badge_builder_history_timer=setTimeout(gamipress_badge_builder_history_save,300)} |
| 59 |
function gamipress_badge_builder_history_save(){if(gamipress_badge_builder_history_applying||gamipress_badge_builder_history_suspended>0)return;gamipress_badge_builder_history.push(gamipress_badge_builder_canvas.toJSON(["data"]));gamipress_badge_builder_history_redo=[]} |
| 60 |
function gamipress_badge_builder_history_reset(){gamipress_badge_builder_history=[];gamipress_badge_builder_history_redo=[];gamipress_badge_builder_history_save()} |
| 61 |
function gamipress_badge_builder_undo(){if(!gamipress_badge_builder_history.length>0)return;gamipress_badge_builder_history_applying=!0;var preferred_active_id=(gamipress_badge_builder_active_obj&&gamipress_badge_builder_active_obj.id)?gamipress_badge_builder_active_obj.id:null;var current=gamipress_badge_builder_history.pop();gamipress_badge_builder_history_redo.push(current);const prev=gamipress_badge_builder_history[gamipress_badge_builder_history.length-1];gamipress_badge_builder_history_apply(prev,preferred_active_id)} |
| 62 |
function gamipress_badge_builder_redo(){if(!gamipress_badge_builder_history_redo.length>0)return;gamipress_badge_builder_history_applying=!0;var preferred_active_id=(gamipress_badge_builder_active_obj&&gamipress_badge_builder_active_obj.id)?gamipress_badge_builder_active_obj.id:null;const next=gamipress_badge_builder_history_redo.pop();gamipress_badge_builder_history.push(next);gamipress_badge_builder_history_apply(next,preferred_active_id)} |
| 63 |
function gamipress_badge_builder_history_apply(json,preferred_active_id){if(json===undefined)return;gamipress_badge_builder_history_applying=!0;var finalized=!1;var finalize_apply=function(){if(finalized){return} |
| 64 |
finalized=!0;var list=(typeof gamipress_badge_builder_canvas.getObjects==='function')?gamipress_badge_builder_canvas.getObjects():[];var target=null;if(preferred_active_id){for(var i=0;i<list.length;i++){if(list[i]&&String(list[i].id||'')===String(preferred_active_id)){target=list[i];break}}} |
| 65 |
if(!target){var non_artboard=list.filter(function(entry){return entry&&!(entry.data==='artboard'||(entry.data&&entry.data.role==='artboard'))});if(non_artboard.length===1){target=non_artboard[0]}} |
| 66 |
if(target&&typeof gamipress_badge_builder_canvas.setActiveObject==='function'){gamipress_badge_builder_canvas.setActiveObject(target);if(typeof target.setCoords==='function'){target.setCoords()}}else if(typeof gamipress_badge_builder_canvas.discardActiveObject==='function'){gamipress_badge_builder_canvas.discardActiveObject()} |
| 67 |
gamipress_badge_builder_canvas.renderAll();gamipress_badge_builder_update_selection();gamipress_badge_builder_history_applying=!1};var loaded=gamipress_badge_builder_canvas.loadFromJSON(json,finalize_apply);if(loaded&&typeof loaded.then==='function'){loaded.then(finalize_apply).catch(finalize_apply)} |
| 68 |
setTimeout(function(){finalize_apply()},320)} |
| 69 |
document.addEventListener('keydown',e=>{var obj=gamipress_badge_builder_active_obj;var has_cmd_mod=!!(e.ctrlKey||e.metaKey);if(!obj)return;if(['INPUT','SELECT','TEXTAREA'].includes(e.target.tagName))return;switch(e.key){case 'Delete':e.preventDefault();gamipress_badge_builder_process_tool('delete');break;case '+':e.preventDefault();gamipress_badge_builder_process_tool('scale-up');break;case '-':e.preventDefault();gamipress_badge_builder_process_tool('scale-down');break} |
| 70 |
if(!e.shiftKey&&!e.altKey&&!has_cmd_mod){var move_step=2;switch(e.key){case 'ArrowUp':e.preventDefault();gamipress_badge_builder_move_object(obj,0,-move_step);break;case 'ArrowDown':e.preventDefault();gamipress_badge_builder_move_object(obj,0,move_step);break;case 'ArrowLeft':e.preventDefault();gamipress_badge_builder_move_object(obj,-move_step,0);break;case 'ArrowRight':e.preventDefault();gamipress_badge_builder_move_object(obj,move_step,0);break}}else if(e.shiftKey){switch(e.key){case 'ArrowUp':e.preventDefault();gamipress_badge_builder_process_tool('align-vertical-top');break;case 'ArrowDown':e.preventDefault();gamipress_badge_builder_process_tool('align-vertical-bottom');break;case 'ArrowLeft':e.preventDefault();gamipress_badge_builder_process_tool('align-horizontal-left');break;case 'ArrowRight':e.preventDefault();gamipress_badge_builder_process_tool('align-horizontal-right');break;case 'C':case 'c':e.preventDefault();gamipress_badge_builder_process_tool('align-horizontal-center');gamipress_badge_builder_process_tool('align-vertical-center');break;case 'D':case 'd':e.preventDefault();gamipress_badge_builder_process_tool('duplicate');break;case 'F':case 'f':e.preventDefault();gamipress_badge_builder_process_tool('fit');break}}else if(e.altKey){switch(e.key){case 'ArrowLeft':e.preventDefault();gamipress_badge_builder_process_tool('flip-horizontal');break;case 'ArrowRight':e.preventDefault();gamipress_badge_builder_process_tool('flip-horizontal');break;case 'ArrowUp':e.preventDefault();gamipress_badge_builder_process_tool('flip-vertical');break;case 'ArrowDown':e.preventDefault();gamipress_badge_builder_process_tool('flip-vertical');break}}else if(has_cmd_mod){switch(e.key){case 'ArrowLeft':e.preventDefault();gamipress_badge_builder_process_tool('rotate-left');break;case 'ArrowRight':e.preventDefault();gamipress_badge_builder_process_tool('rotate-right');break;case 'ArrowUp':e.preventDefault();gamipress_badge_builder_process_tool('send-front');break;case 'ArrowDown':e.preventDefault();gamipress_badge_builder_process_tool('send-back');break}}});document.addEventListener('keydown',e=>{var has_cmd_mod=!!(e.ctrlKey||e.metaKey);if(e.shiftKey&&has_cmd_mod){switch(e.key){case 'Z':case 'z':e.preventDefault();gamipress_badge_builder_process_tool('redo');break}}else if(has_cmd_mod){switch(e.key){case 'Z':case 'z':e.preventDefault();gamipress_badge_builder_process_tool('undo');break}}}) |