|
|
|
function updatePanel(selection) { |
|
if (!selection) { |
|
$('#align').addClass('align-off'); |
|
$('#object-specific').html(canvas_panel); |
|
$('#preset').append("<option value='custom'>Custom</option>"); |
|
presets.forEach(function (preset) { |
|
$('#preset').append( |
|
"<option value='" + |
|
preset.id + |
|
"'>" + |
|
preset.name + |
|
'</option>' |
|
); |
|
}); |
|
$('#preset').val(activepreset); |
|
$('#canvas-duration input').val(duration / 1000); |
|
$('#preset').niceSelect(); |
|
updatePanelValues(); |
|
colormode = 'back'; |
|
o_fill.setColor(canvas.backgroundColor); |
|
} else if ( |
|
selection && |
|
canvas.getActiveObjects().length == 1 && |
|
canvas.getActiveObject().get('assetType') == 'audio' |
|
) { |
|
$('#object-specific').html(audio_panel); |
|
$('#object-volume input').val( |
|
canvas.getActiveObject().get('volume') * 200 |
|
); |
|
} else if ( |
|
selection && |
|
canvas.getActiveObjects().length == 1 && |
|
canvas.getActiveObject().get('type') != 'group' |
|
) { |
|
if (!cropping) { |
|
updateChromaUI(); |
|
checkFilter(); |
|
} |
|
$('#align').removeClass('align-off'); |
|
$('#object-specific').html(object_panel); |
|
if ( |
|
canvas.getActiveObject().get('type') == 'image' && |
|
!canvas.getActiveObject().get('assetType') |
|
) { |
|
$('#object-specific').append(image_panel); |
|
$('#object-specific').append(image_more_panel); |
|
} else if ( |
|
canvas.getActiveObject().get('id').indexOf('Video') >= 0 |
|
) { |
|
$('#object-specific').append(image_panel); |
|
$('#object-specific').append(video_more_panel); |
|
} else { |
|
$('#object-specific').append(back_panel); |
|
} |
|
objects.forEach(function (object) { |
|
if (object.id != canvas.getActiveObject().get('id')) { |
|
$('#masks').append( |
|
"<option value='" + |
|
object.id + |
|
"'>" + |
|
object.id + |
|
'</option>' |
|
); |
|
} |
|
}); |
|
$('#masks').niceSelect(); |
|
var selectme = document.getElementById('select-opacity'); |
|
o_slider = new RangeSlider(selectme, { |
|
design: '2d', |
|
theme: 'default', |
|
handle: 'round', |
|
popup: null, |
|
showMinMaxLabels: false, |
|
unit: '%', |
|
min: 0, |
|
max: 100, |
|
value: 100, |
|
onmove: function (x) { |
|
document |
|
.getElementById('object-o') |
|
.getElementsByTagName('input')[0].value = x; |
|
canvas.getActiveObject().set({ |
|
opacity: x / 100, |
|
}); |
|
canvas.renderAll(); |
|
}, |
|
onfinish: function (x) { |
|
document |
|
.getElementById('object-o') |
|
.getElementsByTagName('input')[0].value = x; |
|
updateObjectValues('opacity'); |
|
}, |
|
onstart: function (x) { |
|
document |
|
.getElementById('object-o') |
|
.getElementsByTagName('input')[0].value = x; |
|
}, |
|
}); |
|
if (canvas.getActiveObject().get('type') == 'rect') { |
|
$('#object-specific').append(shape_panel); |
|
} else if ( |
|
canvas.getActiveObject().get('type') == 'path' || |
|
canvas.getActiveObject().get('type') == 'circle' |
|
) { |
|
$('#object-specific').append(path_panel); |
|
} else if (canvas.getActiveObject().get('type') == 'textbox') { |
|
$('#object-specific').append(text_panel); |
|
selectme = document.getElementById('select-letter'); |
|
o_letter_slider = new RangeSlider(selectme, { |
|
design: '2d', |
|
theme: 'default', |
|
handle: 'round', |
|
popup: null, |
|
showMinMaxLabels: false, |
|
unit: '%', |
|
min: -200, |
|
max: 200, |
|
value: parseFloat( |
|
(canvas.getActiveObject().get('charSpacing') / 10).toFixed( |
|
2 |
|
) |
|
), |
|
onmove: function (x) { |
|
document |
|
.getElementById('text-h') |
|
.getElementsByTagName('input')[0].value = x; |
|
canvas.getActiveObject().set({ charSpacing: x * 10 }); |
|
canvas.renderAll(); |
|
updatePanelValues(); |
|
}, |
|
onfinish: function (x) { |
|
document |
|
.getElementById('text-h') |
|
.getElementsByTagName('input')[0].value = x; |
|
updateObjectValues('opacity3'); |
|
}, |
|
onstart: function (x) { |
|
document |
|
.getElementById('text-h') |
|
.getElementsByTagName('input')[0].value = x; |
|
}, |
|
}); |
|
selectme = document.getElementById('select-line'); |
|
o_line_slider = new RangeSlider(selectme, { |
|
design: '2d', |
|
theme: 'default', |
|
handle: 'round', |
|
popup: null, |
|
showMinMaxLabels: false, |
|
unit: '%', |
|
min: 1, |
|
max: 500, |
|
value: parseFloat( |
|
(canvas.getActiveObject().get('lineHeight') * 100).toFixed( |
|
2 |
|
) |
|
), |
|
onmove: function (x) { |
|
document |
|
.getElementById('text-v') |
|
.getElementsByTagName('input')[0].value = x; |
|
canvas |
|
.getActiveObject() |
|
.set({ lineHeight: parseFloat(x / 100) }); |
|
canvas.renderAll(); |
|
}, |
|
onfinish: function (x) { |
|
document |
|
.getElementById('text-v') |
|
.getElementsByTagName('input')[0].value = x; |
|
updateObjectValues('opacity3'); |
|
}, |
|
onstart: function (x) { |
|
document |
|
.getElementById('text-v') |
|
.getElementsByTagName('input')[0].value = x; |
|
}, |
|
}); |
|
updateTextValues(); |
|
} |
|
$('#object-specific').append(stroke_panel); |
|
$('#object-specific').append(shadow_panel); |
|
$('#line-cap').niceSelect(); |
|
updatePanelValues(); |
|
} else if ( |
|
canvas.getActiveObjects().length > 1 || |
|
canvas.getActiveObject().get('type') == 'group' |
|
) { |
|
$('#align').removeClass('align-off'); |
|
$('#object-specific').html(object_panel); |
|
if (canvas.getActiveObject().get('type') == 'group') { |
|
if ( |
|
canvas.getActiveObject().get('assetType') == 'animatedText' |
|
) { |
|
$('#object-specific').append(other_panel); |
|
$('#object-specific').append(animated_text_panel); |
|
$('#object-specific').append(start_animation_panel); |
|
fonts.forEach(function (font) { |
|
$('#font-picker').append( |
|
"<option value='" + font + "'>" + font + '</option>' |
|
); |
|
}); |
|
$('#font-picker').val( |
|
animatedtext.find( |
|
(x) => x.id == canvas.getActiveObject().id |
|
).props.fontFamily |
|
); |
|
$('#font-picker').niceSelect(); |
|
$('#text-color input').val( |
|
convertToHex( |
|
animatedtext.find( |
|
(x) => x.id == canvas.getActiveObject().id |
|
).props.fill |
|
) |
|
); |
|
$('#color-text-side').css( |
|
'background-color', |
|
animatedtext.find( |
|
(x) => x.id == canvas.getActiveObject().id |
|
).props.fill |
|
); |
|
text_animation_list.forEach(function (preset) { |
|
$('#preset-picker').append( |
|
"<option value='" + |
|
preset.name + |
|
"'>" + |
|
preset.label + |
|
'</option>' |
|
); |
|
}); |
|
$('#preset-picker').val( |
|
animatedtext.find( |
|
(x) => x.id == canvas.getActiveObject().id |
|
).props.preset |
|
); |
|
$('#preset-picker').niceSelect(); |
|
$('.order-toggle-item-active').removeClass( |
|
'order-toggle-item-active' |
|
); |
|
$('.order-toggle-item-active-2').removeClass( |
|
'order-toggle-item-active-2' |
|
); |
|
if ( |
|
animatedtext.find( |
|
(x) => x.id == canvas.getActiveObject().id |
|
).props.order == 'backward' |
|
) { |
|
$('#order-backward').addClass('order-toggle-item-active'); |
|
} else { |
|
$('#order-forward').addClass('order-toggle-item-active'); |
|
} |
|
if ( |
|
animatedtext.find( |
|
(x) => x.id == canvas.getActiveObject().id |
|
).props.typeAnim == 'letter' |
|
) { |
|
$('#type-letters').addClass('order-toggle-item-active-2'); |
|
} else { |
|
$('#type-words').addClass('order-toggle-item-active-2'); |
|
} |
|
$('#easing-picker').val( |
|
animatedtext.find( |
|
(x) => x.id == canvas.getActiveObject().id |
|
).props.easing |
|
); |
|
$('#easing-picker').niceSelect(); |
|
$('#durationinput').val( |
|
animatedtext.find( |
|
(x) => x.id == canvas.getActiveObject().id |
|
).props.duration / 1000 |
|
); |
|
$('#masks').niceSelect(); |
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} else { |
|
$('#object-specific').append(selection_panel); |
|
} |
|
var selectme = document.getElementById('select-opacity'); |
|
o_slider = new RangeSlider(selectme, { |
|
design: '2d', |
|
theme: 'default', |
|
handle: 'round', |
|
popup: null, |
|
showMinMaxLabels: false, |
|
unit: '%', |
|
min: 0, |
|
max: 100, |
|
value: 100, |
|
onmove: function (x) { |
|
document |
|
.getElementById('object-o') |
|
.getElementsByTagName('input')[0].value = x; |
|
canvas.getActiveObject().set({ opacity: x / 100 }); |
|
canvas.renderAll(); |
|
}, |
|
onfinish: function (x) { |
|
document |
|
.getElementById('object-o') |
|
.getElementsByTagName('input')[0].value = x; |
|
updateObjectValues('opacity'); |
|
}, |
|
onstart: function (x) { |
|
document |
|
.getElementById('object-o') |
|
.getElementsByTagName('input')[0].value = x; |
|
}, |
|
}); |
|
updatePanelValues(); |
|
} |
|
} |
|
|
|
function convertToHex(nonHexColorString) { |
|
var ctx = document.createElement('canvas').getContext('2d'); |
|
ctx.fillStyle = nonHexColorString; |
|
return ctx.fillStyle.toUpperCase(); |
|
} |
|
|
|
function updateStrokeValues() { |
|
const object = canvas.getActiveObject(); |
|
$('.line-join-active').removeClass('line-join-active'); |
|
if ( |
|
object.get('strokeDashArray') == false && |
|
object.get('strokeWidth') == 0 |
|
) { |
|
$('#miter').addClass('line-join-active'); |
|
$('#miter img').attr('src', 'assets/miter-active.svg'); |
|
} else if (object.get('strokeDashArray') == false) { |
|
$('#bevel').addClass('line-join-active'); |
|
$('#bevel img').attr('src', 'assets/bevel-active.svg'); |
|
} else if (object.get('strokeDashArray') == [10, 5]) { |
|
$('#round').addClass('line-join-active'); |
|
$('#round img').attr('src', 'assets/round-active.svg'); |
|
} else { |
|
$('#small-dash').addClass('line-join-active'); |
|
$('#small-dash img').attr('src', 'assets/dash2-active.svg'); |
|
} |
|
} |
|
|
|
function toggleAnimationOrder() { |
|
var object = canvas.getActiveObject(); |
|
$('.order-toggle-item-active').removeClass( |
|
'order-toggle-item-active' |
|
); |
|
if ($(this).attr('id') == 'order-backward') { |
|
animatedtext |
|
.find((x) => x.id == object.id) |
|
.setProp({ order: 'backward' }, canvas); |
|
} else if ($(this).attr('id') == 'order-forward') { |
|
animatedtext |
|
.find((x) => x.id == object.id) |
|
.setProp({ order: 'forward' }, canvas); |
|
} |
|
$(this).addClass('order-toggle-item-active'); |
|
animate(currenttime, false); |
|
save(); |
|
} |
|
function toggleAnimationType() { |
|
var object = canvas.getActiveObject(); |
|
$('.order-toggle-item-active-2').removeClass( |
|
'order-toggle-item-active-2' |
|
); |
|
if ($(this).attr('id') == 'type-words') { |
|
animatedtext |
|
.find((x) => x.id == object.id) |
|
.setProp({ typeAnim: 'word' }, canvas); |
|
} else if ($(this).attr('id') == 'type-letters') { |
|
animatedtext |
|
.find((x) => x.id == object.id) |
|
.setProp({ typeAnim: 'letter' }, canvas); |
|
} |
|
$(this).addClass('order-toggle-item-active-2'); |
|
animate(currenttime, false); |
|
save(); |
|
} |
|
$(document).on( |
|
'click', |
|
'.order-toggle-item:not(.order-toggle-item-active)', |
|
toggleAnimationOrder |
|
); |
|
$(document).on( |
|
'click', |
|
'.order-toggle-item-2:not(.order-toggle-item-active-2)', |
|
toggleAnimationType |
|
); |
|
|
|
function updateTextValues() { |
|
const object = canvas.getActiveObject(); |
|
fonts.forEach(function (font) { |
|
$('#font-picker').append( |
|
"<option value='" + font + "'>" + font + '</option>' |
|
); |
|
}); |
|
$('#font-picker').val(object.get('fontFamily')); |
|
$('#font-picker').niceSelect(); |
|
$('#text-h input').val( |
|
parseFloat((object.get('charSpacing') / 10).toFixed(2)) |
|
); |
|
$('#text-v input').val( |
|
parseFloat((object.get('lineHeight') * 100).toFixed(2)) |
|
); |
|
if (object.get('textAlign') == 'left') { |
|
$('#align-text-left').addClass('align-text-active'); |
|
$('#align-text-left img').attr( |
|
'src', |
|
'assets/align-text-left-active.svg' |
|
); |
|
} else if (object.get('textAlign') == 'center') { |
|
$('#align-text-center').addClass('align-text-active'); |
|
$('#align-text-center img').attr( |
|
'src', |
|
'assets/align-text-center-active.svg' |
|
); |
|
} else if (object.get('textAlign') == 'right') { |
|
$('#align-text-right').addClass('align-text-right-active'); |
|
$('#align-text-right img').attr( |
|
'src', |
|
'assets/align-text-right-active.svg' |
|
); |
|
} else { |
|
$('#align-text-justify').addClass('align-text-justify-active'); |
|
$('#align-text-justify img').attr( |
|
'src', |
|
'assets/align-text-justify-active.svg' |
|
); |
|
} |
|
if ( |
|
object.get('fontWeight') == 'bold' || |
|
object.get('fontWeight') == 700 |
|
) { |
|
$('#format-bold').addClass('format-text-active'); |
|
$('#format-bold img').attr('src', 'assets/bold-active.svg'); |
|
} |
|
if (object.get('fontStyle') == 'italic') { |
|
$('#format-italic').addClass('format-text-active'); |
|
$('#format-italic img').attr('src', 'assets/italic-active.svg'); |
|
} |
|
if (object.get('underline') == true) { |
|
$('#format-underline').addClass('format-text-active'); |
|
$('#format-underline img').attr( |
|
'src', |
|
'assets/underline-active.svg' |
|
); |
|
} |
|
if (object.get('linethrough') == true) { |
|
$('#format-strike').addClass('format-text-active'); |
|
$('#format-strike img').attr('src', 'assets/strike-active.svg'); |
|
} |
|
} |
|
|
|
|
|
function updatePanelValues() { |
|
if (canvas.getActiveObject()) { |
|
if (canvas.getActiveObject().get('assetType') == 'audio') { |
|
$('#object-volume input').val( |
|
canvas.getActiveObject().get('volume') * 200 |
|
); |
|
return false; |
|
} |
|
setting = true; |
|
var tempstore = false; |
|
var object = canvas.getActiveObject(); |
|
if ( |
|
canvas.getActiveObjects.length > 1 || |
|
object.get('type') == 'activeSelection' |
|
) { |
|
object = object.toGroup(); |
|
object.set({ |
|
shadow: { |
|
blur: 0, |
|
color: 'black', |
|
offsetX: 0, |
|
offsetY: 0, |
|
opacity: 0, |
|
}, |
|
}); |
|
tempstore = true; |
|
} |
|
if (object.get('assetType') == 'animatedText') { |
|
$('#animated-text input').val( |
|
animatedtext.find((x) => x.id == object.id).text |
|
); |
|
} |
|
if (objects.find((x) => x.id == object.get('id'))) { |
|
if ( |
|
$( |
|
"#masks option[value='" + |
|
objects.find((x) => x.id == object.get('id')).mask + |
|
"']" |
|
).length == 0 |
|
) { |
|
$('#masks').val('none'); |
|
objects.find((x) => x.id == object.get('id')).mask = 'none'; |
|
object.clipPath = null; |
|
canvas.renderAll(); |
|
} else { |
|
$('#masks').val( |
|
objects.find((x) => x.id == object.get('id')).mask |
|
); |
|
} |
|
$('#masks').niceSelect('update'); |
|
} |
|
updateStrokeValues(); |
|
$('#object-x input').val( |
|
parseFloat( |
|
( |
|
object.get('left') - |
|
artboard.get('left') - |
|
(object.get('width') * object.get('scaleX')) / 2 |
|
).toFixed(2) |
|
) |
|
); |
|
$('#object-y input').val( |
|
parseFloat( |
|
( |
|
object.get('top') - |
|
artboard.get('top') - |
|
(object.get('height') * object.get('scaleY')) / 2 |
|
).toFixed(2) |
|
) |
|
); |
|
$('#object-w input').val( |
|
parseFloat( |
|
(object.get('width') * object.get('scaleX')).toFixed(2) |
|
) |
|
); |
|
$('#object-h input').val( |
|
parseFloat( |
|
(object.get('height') * object.get('scaleY')).toFixed(2) |
|
) |
|
); |
|
$('#object-r input').val( |
|
parseFloat(object.get('angle').toFixed(2)) |
|
); |
|
$('#object-stroke input').val( |
|
parseFloat(object.get('strokeWidth').toFixed(2)) |
|
); |
|
if (object.get('type') != 'group') { |
|
$('#object-shadow-x input').val( |
|
parseFloat(object.shadow.offsetX.toFixed(2)) |
|
); |
|
$('#object-shadow-y input').val( |
|
parseFloat(object.shadow.offsetY.toFixed(2)) |
|
); |
|
$('#object-blur input').val( |
|
parseFloat(object.shadow.blur.toFixed(2)) |
|
); |
|
colormode = 'stroke'; |
|
o_fill.setColor(object.get('stroke')); |
|
colormode = 'shadow'; |
|
o_fill.setColor(object.shadow.color); |
|
} |
|
o_slider.setValue(object.get('opacity') * 100); |
|
if (object.get('type') == 'rect') { |
|
$('#object-corners input').val( |
|
parseFloat(object.get('rx').toFixed(2)) |
|
); |
|
colormode = 'fill'; |
|
o_fill.setColor(object.get('fill')); |
|
} else if ( |
|
object.get('type') == 'path' || |
|
object.get('type') == 'circle' || |
|
object.get('type') == 'textbox' |
|
) { |
|
colormode = 'fill'; |
|
o_fill.setColor(object.get('fill')); |
|
} |
|
if (tempstore) { |
|
object.toActiveSelection(); |
|
canvas.renderAll(); |
|
} |
|
setting = false; |
|
} else { |
|
$('#canvas-w input').val(artboard.get('width')); |
|
$('#canvas-h input').val(artboard.get('height')); |
|
} |
|
} |
|
|
|
|
|
function updateInputs(id) { |
|
if (canvas.getActiveObject().get('assetType') == 'audio') { |
|
return false; |
|
} |
|
if ($('#object-o input').val() > 100) { |
|
$('#object-o input').val(100); |
|
} else if ($('#object-o input').val() < 0) { |
|
$('#object-o input').val(0); |
|
} |
|
o_slider.setValue($('#object-o input').val()); |
|
if ( |
|
!isNaN(parseFloat($('#object-color-fill-opacity input').val())) && |
|
id == 'object-color-fill-opacity' |
|
) { |
|
if ($('#object-color-fill-opacity input').val() > 100) { |
|
$('#object-color-fill-opacity').val(100); |
|
} else if ($('#object-color-fill-opacity input').val() < 0) { |
|
$('#object-color-fill-opacity input').val(0); |
|
} |
|
colormode = 'fill'; |
|
o_fill.setColor( |
|
'rgba(' + |
|
o_fill.getColor().toRGBA()[0] + |
|
',' + |
|
o_fill.getColor().toRGBA()[1] + |
|
',' + |
|
o_fill.getColor().toRGBA()[2] + |
|
',' + |
|
$('#object-color-fill-opacity input').val() / 100 + |
|
')' |
|
); |
|
} |
|
if ( |
|
!isNaN( |
|
parseFloat($('#object-color-stroke-opacity input').val()) |
|
) && |
|
id == 'object-color-stroke-opacity' |
|
) { |
|
if ($('#object-color-stroke-opacity input').val() > 100) { |
|
$('#object-color-stroke-opacity').val(100); |
|
} else if ($('#object-color-stroke-opacity input').val() < 0) { |
|
$('#object-color-stroke-opacity input').val(0); |
|
} |
|
colormode = 'stroke'; |
|
o_fill.setColor( |
|
'rgba(' + |
|
o_fill.getColor().toRGBA()[0] + |
|
',' + |
|
o_fill.getColor().toRGBA()[1] + |
|
',' + |
|
o_fill.getColor().toRGBA()[2] + |
|
',' + |
|
$('#object-color-stroke-opacity input').val() / 100 + |
|
')' |
|
); |
|
} |
|
if ( |
|
!isNaN( |
|
parseFloat($('#object-color-shadow-opacity input').val()) |
|
) && |
|
id == 'object-color-shadow-opacity' |
|
) { |
|
if ($('#object-color-shadow-opacity input').val() > 100) { |
|
$('#object-color-shadow-opacity').val(100); |
|
} else if ($('#object-color-shadow-opacity input').val() < 0) { |
|
$('#object-color-shadow-opacity input').val(0); |
|
} |
|
colormode = 'shadow'; |
|
o_fill.setColor( |
|
'rgba(' + |
|
o_fill.getColor().toRGBA()[0] + |
|
',' + |
|
o_fill.getColor().toRGBA()[1] + |
|
',' + |
|
o_fill.getColor().toRGBA()[2] + |
|
',' + |
|
$('#object-color-shadow-opacity input').val() / 100 + |
|
')' |
|
); |
|
} |
|
} |
|
|
|
|
|
function updateObjectValues(type) { |
|
autoSave(); |
|
if (canvas.getActiveObjects().length > 0) { |
|
if ($(this).find('input').val() || type) { |
|
var object = canvas.getActiveObject(); |
|
if ($(this).attr('id') == 'animated-text') { |
|
return false; |
|
} |
|
if ($(this).attr('id') == 'animated-text-duration') { |
|
var obj = p_keyframes.find((x) => x.id == object.id); |
|
var length = obj.end - obj.start; |
|
if ($(this).find('input').val() * 1000 > length) { |
|
$(this) |
|
.find('input') |
|
.val(length / 1000); |
|
} |
|
animatedtext |
|
.find((x) => x.id == object.id) |
|
.setProp( |
|
{ duration: $(this).find('input').val() * 1000 }, |
|
canvas |
|
); |
|
save(); |
|
return false; |
|
} |
|
if ($(this).attr('id') == 'object-volume') { |
|
newKeyframe( |
|
'volume', |
|
canvas.getActiveObject(), |
|
currenttime, |
|
parseFloat($(this).find('input').val()) / 200, |
|
true |
|
); |
|
canvas |
|
.getActiveObject() |
|
.set( |
|
'volume', |
|
parseFloat($(this).find('input').val()) / 200 |
|
); |
|
} |
|
editingpanel = true; |
|
var selection = false; |
|
const tempselection = canvas.getActiveObjects(); |
|
const id = $(this).attr('id'); |
|
updateInputs(id); |
|
if (tempselection.length > 1) { |
|
object = object.toGroup(); |
|
selection = true; |
|
} |
|
if (objects.find((x) => x.id == object.get('id'))) { |
|
objects.find((x) => x.id == object.get('id')).mask = |
|
$('#masks').val(); |
|
if ($('#masks').val() == 'none') { |
|
object.clipPath = null; |
|
canvas.renderAll(); |
|
} else { |
|
object.clipPath = canvas.getItemById($('#masks').val()); |
|
canvas.renderAll(); |
|
} |
|
} |
|
object.set({ |
|
left: |
|
parseFloat($('#object-x input').val()) + |
|
artboard.get('left') + |
|
(object.get('width') * object.get('scaleX')) / 2, |
|
top: |
|
parseFloat($('#object-y input').val()) + |
|
artboard.get('top') + |
|
(object.get('height') * object.get('scaleY')) / 2, |
|
scaleX: parseFloat( |
|
$('#object-w input').val() / object.get('width') |
|
), |
|
scaleY: parseFloat( |
|
$('#object-h input').val() / object.get('height') |
|
), |
|
angle: parseFloat($('#object-r input').val()), |
|
opacity: parseFloat($('#object-o input').val() / 100), |
|
strokeWidth: parseFloat($('#object-stroke input').val()), |
|
}); |
|
if (object.get('type') != 'group') { |
|
object.set({ |
|
shadow: { |
|
color: object.shadow.color, |
|
offsetX: parseFloat($('#object-shadow-x input').val()), |
|
offsetY: parseFloat($('#object-shadow-y input').val()), |
|
opacity: 1, |
|
blur: parseFloat($('#object-blur input').val()), |
|
}, |
|
}); |
|
} |
|
canvas.renderAll(); |
|
if (tempselection.length > 1) { |
|
object.toActiveSelection(); |
|
object = canvas.getActiveObject(); |
|
} |
|
canvas.discardActiveObject(); |
|
tempselection.forEach(function (obj) { |
|
keyframeChanges(obj, type, id, selection); |
|
}); |
|
if (object) { |
|
reselect(object); |
|
editingpanel = false; |
|
} |
|
$('#' + id + ' input').focus(); |
|
save(); |
|
if (type) { |
|
updatePanelValues(); |
|
} else if ($(this).find('input').val().length > 0) { |
|
updatePanelValues(); |
|
} |
|
} |
|
} else { |
|
if ( |
|
$(this).attr('id') == 'canvas-w' || |
|
$(this).attr('id') == 'canvas-h' |
|
) { |
|
artboard.set({ |
|
width: parseFloat($('#canvas-w input').val()), |
|
height: parseFloat($('#canvas-h input').val()), |
|
}); |
|
canvas.renderAll(); |
|
resizeCanvas(); |
|
if (activepreset != 'custom') { |
|
if ( |
|
presets.find((x) => x.id == activepreset).width != |
|
$('#canvas-w input').val() || |
|
presets.find((x) => x.id == activepreset).height != |
|
$('#canvas-h input').val() |
|
) { |
|
activepreset = 'custom'; |
|
updatePanel(); |
|
} |
|
} |
|
} else if ($(this).attr('id') == 'canvas-duration') { |
|
if (!isNaN(parseFloat($(this).find('input').val()))) { |
|
setDuration(parseFloat($(this).find('input').val()) * 1000); |
|
} |
|
} |
|
if (!isNaN(parseFloat($('#canvas-color-opacity input').val()))) { |
|
if ($('#canvas-color-opacity input').val() > 100) { |
|
$('#canvas-color-opacity input').val(100); |
|
} else if ($('#canvas-color-opacity input').val() < 0) { |
|
$('#canvas-color-opacity input').val(0); |
|
} |
|
colormode = 'back'; |
|
o_fill.setColor( |
|
'rgba(' + |
|
o_fill.getColor().toRGBA()[0] + |
|
',' + |
|
o_fill.getColor().toRGBA()[1] + |
|
',' + |
|
o_fill.getColor().toRGBA()[2] + |
|
',' + |
|
$('#canvas-color-opacity input').val() / 100 + |
|
')' |
|
); |
|
} |
|
} |
|
} |
|
function setTextAnimation() { |
|
var object = canvas.getActiveObject(); |
|
animatedtext |
|
.find((x) => x.id == object.id) |
|
.reset( |
|
$(this).parent().find('input').val(), |
|
animatedtext.find((x) => x.id == object.id).props, |
|
canvas |
|
); |
|
} |
|
|
|
$(document).on('input', '.property-input', updateObjectValues); |
|
$(document).on('change', '.property-input', updateObjectValues); |
|
$(document).on('change', '#masks', updateObjectValues); |
|
$(document).on('click', '#animatedset', setTextAnimation); |
|
|
|
|
|
function togglePicker() { |
|
const object = canvas.getActiveObject(); |
|
if (!o_fill.isOpen()) { |
|
newcolorkeyframe = true; |
|
if ($(this).attr('id') == 'object-color-fill') { |
|
colormode = 'fill'; |
|
o_fill.setColor(object.get('fill')); |
|
} else if ($(this).attr('id') == 'object-color-stroke') { |
|
colormode = 'stroke'; |
|
o_fill.setColor(object.get('stroke')); |
|
} else if ($(this).attr('id') == 'canvas-color') { |
|
colormode = 'back'; |
|
o_fill.setColor(canvas.backgroundColor); |
|
} else if ($(this).attr('id') == 'chroma-color') { |
|
colormode = 'chroma'; |
|
if (object.filters.find((x) => x.type == 'RemoveColor')) { |
|
o_fill.setColor( |
|
object.filters.find((x) => x.type == 'RemoveColor').color |
|
); |
|
} else { |
|
o_fill.setColor('#FFF'); |
|
} |
|
} else if ($(this).attr('id') == 'text-color') { |
|
colormode = 'text'; |
|
o_fill.setColor( |
|
animatedtext.find((x) => x.id == object.id).props.fill |
|
); |
|
} else { |
|
colormode = 'shadow'; |
|
o_fill.setColor(object.shadow.color); |
|
} |
|
newcolorkeyframe = false; |
|
o_fill.show(); |
|
} else { |
|
o_fill.hide(); |
|
} |
|
} |
|
$(document).on('click', '#canvas-color', togglePicker); |
|
$(document).on('click', '#object-color-fill', togglePicker); |
|
$(document).on('click', '#object-color-stroke', togglePicker); |
|
$(document).on('click', '#object-color-shadow', togglePicker); |
|
$(document).on('click', '#chroma-color', togglePicker); |
|
$(document).on('click', '#text-color', togglePicker); |
|
|
|
window.onLoadImage = function (temp) { |
|
$(temp).css('background-image', 'none'); |
|
}; |
|
|
|
|
|
function populateGrid(type) { |
|
if (type == 'shape-tool') { |
|
$('#shapes-row').html(''); |
|
$('#emojis-row').html(''); |
|
shape_grid_items.forEach(function (item) { |
|
$('#shapes-row').append( |
|
"<div class='grid-item'><img onload='onLoadImage(this)' draggable=false src='" + |
|
item + |
|
"'></div>" |
|
); |
|
}); |
|
emoji_items.forEach(function (item) { |
|
$('#emojis-row').append( |
|
"<div class='grid-emoji-item'><img onload='onLoadImage(this)' draggable=false src='" + |
|
item + |
|
"'></div>" |
|
); |
|
}); |
|
} else if (type == 'image-tool') { |
|
$('#images-grid').html(''); |
|
image_categories.forEach(function (category) { |
|
$('#categories').append( |
|
"<div class='category' data-name='" + |
|
category.name + |
|
"'><img onload='onLoadImage(this)' src='" + |
|
category.image + |
|
"'>" + |
|
category.name + |
|
'</div>' |
|
); |
|
}); |
|
} else if (type == 'video-tool') { |
|
$('#images-grid').html(''); |
|
video_categories.forEach(function (category) { |
|
$('#categories').append( |
|
"<div class='category' data-name='" + |
|
category.name + |
|
"'><img onload='onLoadImage(this)' src='" + |
|
category.image + |
|
"'>" + |
|
category.name + |
|
'</div>' |
|
); |
|
}); |
|
} else if (type == 'images-tab') { |
|
$('#images-grid').html(''); |
|
var flag = false; |
|
uploaded_images |
|
.slice() |
|
.reverse() |
|
.forEach(function (item) { |
|
if (!item.hidden) { |
|
flag = true; |
|
$('#images-grid').append( |
|
"<div class='image-grid-item' data-src='" + |
|
item.src + |
|
"' data-type='" + |
|
item.type + |
|
"' data-key='" + |
|
item.key + |
|
"'><img class='delete-media' draggable=false src='assets/more-options.svg'><img draggable=false onload='onLoadImage(this)' class='image-thing' src='" + |
|
item.thumb + |
|
"'</div>" |
|
); |
|
} |
|
}); |
|
$('#landing').remove(); |
|
if (!flag) { |
|
$('#upload-tabs').after( |
|
'<div id="landing" class="upload-landing"><div id="landing-text">Your uploaded images will show up here for easy access.</div></div>' |
|
); |
|
} |
|
} else if (type == 'videos-tab') { |
|
$('#images-grid').html(''); |
|
var flag = false; |
|
uploaded_videos |
|
.slice() |
|
.reverse() |
|
.forEach(function (item) { |
|
if (!item.hidden) { |
|
flag = true; |
|
$('#images-grid').append( |
|
"<div class='video-grid-item' data-src='" + |
|
item.src + |
|
"' data-type='" + |
|
item.type + |
|
"' data-key='" + |
|
item.key + |
|
"'><img class='delete-media' draggable=false src='assets/more-options.svg'><img draggable=false onload='onLoadImage(this)' class='image-thing' src='" + |
|
item.thumb + |
|
"'></div>" |
|
); |
|
} |
|
}); |
|
$('#landing').remove(); |
|
if (!flag) { |
|
$('#upload-tabs').after( |
|
'<div id="landing" class="upload-landing"><div id="landing-text">Your uploaded videos will show up here for easy access.</div></div>' |
|
); |
|
} |
|
} else if (type == 'audio-tool') { |
|
var flag = false; |
|
audio_items.forEach(function (item) { |
|
if (item.src == background_key) { |
|
flag = true; |
|
$('#audio-list').append( |
|
"<div class='audio-item audio-item-active' data-src='" + |
|
item.src + |
|
"'><div class='audio-preview'><img src='assets/play-button.svg'></div><img class='audio-thumb' src='" + |
|
item.thumb + |
|
"'><div class='audio-info'><div class='audio-info-title'>" + |
|
item.name + |
|
"</div><a href='" + |
|
item.link + |
|
"' target='_blank' class='audio-info-desc'>" + |
|
item.desc + |
|
"</a><div class='audio-info-duration'>" + |
|
item.duration + |
|
'</div></div></div></div>' |
|
); |
|
} else { |
|
$('#audio-list').append( |
|
"<div class='audio-item' data-src='" + |
|
item.src + |
|
"'><div class='audio-preview'><img src='assets/play-button.svg'></div><img class='audio-thumb' src='" + |
|
item.thumb + |
|
"'><div class='audio-info'><div class='audio-info-title'>" + |
|
item.name + |
|
"</div><a href='" + |
|
item.link + |
|
"' target='_blank' class='audio-info-desc'>" + |
|
item.desc + |
|
"</a><div class='audio-info-duration'>" + |
|
item.duration + |
|
'</div></div></div></div>' |
|
); |
|
} |
|
}); |
|
} else if (type == 'text-tool') { |
|
$('#shapes-cont').append("<p class='row-title'>Animated</p>"); |
|
$('#shapes-cont').append( |
|
"<div class='animated-text-grid'></div>" |
|
); |
|
text_animation_list.forEach(function (text) { |
|
$('.animated-text-grid').append( |
|
"<div class='animated-text-item noselect' data-id='" + |
|
text.name + |
|
"'><img draggable='false' class='noselect' src='" + |
|
text.src + |
|
"'></div>" |
|
); |
|
}); |
|
$('#shapes-cont').append("<p class='row-title'>Sans Serif</p>"); |
|
text_items.sansserif.forEach(function (text) { |
|
WebFont.load({ |
|
google: { |
|
families: [text.fontname], |
|
}, |
|
}); |
|
$('#shapes-cont').append( |
|
"<div id='item-text' class='add-text noselect' data-font='" + |
|
text.fontname + |
|
"' style='font-family: " + |
|
text.fontname + |
|
", sans-serif'>" + |
|
text.name + |
|
'</div>' |
|
); |
|
}); |
|
$('#shapes-cont').append("<p class='row-title'>Serif</p>"); |
|
text_items.serif.forEach(function (text) { |
|
WebFont.load({ |
|
google: { |
|
families: [text.fontname], |
|
}, |
|
}); |
|
$('#shapes-cont').append( |
|
"<div id='item-text' class='add-text noselect' data-font='" + |
|
text.fontname + |
|
"' style='font-family: " + |
|
text.fontname + |
|
"'>" + |
|
text.name + |
|
'</div>' |
|
); |
|
}); |
|
$('#shapes-cont').append("<p class='row-title'>Monospace</p>"); |
|
text_items.monospace.forEach(function (text) { |
|
WebFont.load({ |
|
google: { |
|
families: [text.fontname], |
|
}, |
|
}); |
|
$('#shapes-cont').append( |
|
"<div id='item-text' class='add-text noselect' data-font='" + |
|
text.fontname + |
|
"' style='font-family: " + |
|
text.fontname + |
|
"'>" + |
|
text.name + |
|
'</div>' |
|
); |
|
}); |
|
$('#shapes-cont').append("<p class='row-title'>Handwriting</p>"); |
|
text_items.handwriting.forEach(function (text) { |
|
WebFont.load({ |
|
google: { |
|
families: [text.fontname], |
|
}, |
|
}); |
|
$('#shapes-cont').append( |
|
"<div id='item-text' class='add-text noselect' data-font='" + |
|
text.fontname + |
|
"' style='font-family: " + |
|
text.fontname + |
|
"'>" + |
|
text.name + |
|
'</div>' |
|
); |
|
}); |
|
$('#shapes-cont').append("<p class='row-title'>Display</p>"); |
|
text_items.display.forEach(function (text) { |
|
WebFont.load({ |
|
google: { |
|
families: [text.fontname], |
|
}, |
|
}); |
|
$('#shapes-cont').append( |
|
"<div id='item-text' class='add-text noselect' data-font='" + |
|
text.fontname + |
|
"' style='font-family: " + |
|
text.fontname + |
|
"'>" + |
|
text.name + |
|
'</div>' |
|
); |
|
}); |
|
} |
|
} |
|
|
|
function scrollBottom() { |
|
if ( |
|
$(this).scrollTop() + $(this).innerHeight() >= |
|
$(this)[0].scrollHeight - 50 |
|
) { |
|
loadMoreMedia(); |
|
} |
|
if ($(this).scrollTop() > 0) { |
|
$('#search-fixed').addClass('search-scrolling'); |
|
} else { |
|
$('.search-scrolling').removeClass('search-scrolling'); |
|
} |
|
} |
|
|
|
function addAnimatedText() { |
|
var newtext = new AnimatedText('Your text', { |
|
left: artboard.get('left') + artboard.get('width') / 2, |
|
top: artboard.get('top') + artboard.get('height') / 2, |
|
preset: $(this).attr('data-id'), |
|
typeAnim: 'letter', |
|
order: 'forward', |
|
fontFamily: 'Syne', |
|
duration: 1000, |
|
easing: 'easeInQuad', |
|
fill: '#FFFFFF', |
|
}); |
|
animatedtext.push(newtext); |
|
newtext.render(canvas); |
|
} |
|
|
|
$(document).on('click', '.animated-text-item', addAnimatedText); |
|
|
|
|
|
function updateBrowser(type) { |
|
$('#browser').scrollTop(0); |
|
if (type == 'image-tool') { |
|
$('#browser-container').html(image_browser); |
|
populateGrid(type); |
|
$('#browser').on('scroll', scrollBottom); |
|
} else if (type == 'shape-tool') { |
|
$('#browser-container').html(shape_browser); |
|
populateGrid(type); |
|
$('#browser').on('scroll', scrollBottom); |
|
} else if (type == 'video-tool') { |
|
$('#browser-container').html(video_browser); |
|
populateGrid(type); |
|
$('#browser').on('scroll', scrollBottom); |
|
} else if (type == 'text-tool') { |
|
$('#browser-container').html(text_browser); |
|
populateGrid(type); |
|
$('#browser').on('scroll', scrollBottom); |
|
} else if (type == 'upload-tool') { |
|
$('#browser-container').html(upload_browser); |
|
populateGrid('images-tab'); |
|
$('#browser').on('scroll', scrollBottom); |
|
} else if (type == 'audio-tool') { |
|
$('#browser-container').html(audio_browser); |
|
populateGrid(type); |
|
$('#browser').on('scroll', scrollBottom); |
|
} |
|
} |
|
|
|
|
|
function updateUploadType() { |
|
$('.upload-tab-active').removeClass('upload-tab-active'); |
|
$(this).addClass('upload-tab-active'); |
|
populateGrid($(this).attr('id')); |
|
} |
|
$(document).on( |
|
'click', |
|
'.upload-tab:not(.upload-tab-active)', |
|
updateUploadType |
|
); |
|
|
|
|
|
function switchTool(e) { |
|
$('#browser').removeClass('collapsed'); |
|
$('#canvas-area').removeClass('canvas-full'); |
|
if ($(this).attr('id') == 'more-tool') { |
|
showMore(); |
|
return false; |
|
} |
|
resizeCanvas(); |
|
var act = $('.tool-active'); |
|
if (act.attr('id') == 'image-tool') { |
|
act.find('img').attr('src', 'assets/image.svg'); |
|
} else if (act.attr('id') == 'text-tool') { |
|
act.find('img').attr('src', 'assets/text.svg'); |
|
} else if (act.attr('id') == 'mockup-tool') { |
|
act.find('img').attr('src', 'assets/mockup.svg'); |
|
} else if (act.attr('id') == 'video-tool') { |
|
act.find('img').attr('src', 'assets/video.svg'); |
|
} else if (act.attr('id') == 'shape-tool') { |
|
act.find('img').attr('src', 'assets/shape.svg'); |
|
} else if (act.attr('id') == 'upload-tool') { |
|
act.find('img').attr('src', 'assets/uploads.svg'); |
|
} else if (act.attr('id') == 'audio-tool') { |
|
act.find('img').attr('src', 'assets/audio.svg'); |
|
} |
|
$('.tool-active').removeClass('tool-active'); |
|
$(this).addClass('tool-active'); |
|
if ($(this).attr('id') == 'image-tool') { |
|
$(this).find('img').attr('src', 'assets/image-active.svg'); |
|
} else if ($(this).attr('id') == 'text-tool') { |
|
$(this).find('img').attr('src', 'assets/text-active.svg'); |
|
} else if ($(this).attr('id') == 'mockup-tool') { |
|
$(this).find('img').attr('src', 'assets/mockup-active.svg'); |
|
} else if ($(this).attr('id') == 'video-tool') { |
|
$(this).find('img').attr('src', 'assets/video-active.svg'); |
|
} else if ($(this).attr('id') == 'shape-tool') { |
|
$(this).find('img').attr('src', 'assets/shape-active.svg'); |
|
} else if ($(this).attr('id') == 'upload-tool') { |
|
$(this).find('img').attr('src', 'assets/uploads-active.svg'); |
|
} else if ($(this).attr('id') == 'audio-tool') { |
|
$(this).find('img').attr('src', 'assets/audio-active.svg'); |
|
} |
|
updateBrowser($(this).attr('id')); |
|
resetHeight(); |
|
} |
|
$(document).on('click', '.tool:not(.tool-active)', switchTool); |
|
|
|
|
|
function replaceObject(src, object) { |
|
var img = new Image(); |
|
var width = object.width; |
|
var height = object.height; |
|
oldsrc = object._originalElement.currentSrc; |
|
oldobj = object; |
|
img.onload = function () { |
|
object.setElement(img); |
|
object.set('width', width); |
|
object.set('height', height); |
|
canvas.renderAll(); |
|
}; |
|
img.src = src; |
|
} |
|
|
|
|
|
function dragObject(e) { |
|
if (e.which == 3) { |
|
return false; |
|
} |
|
var drag = $(this).clone(); |
|
drag.css({ |
|
background: 'transparent', |
|
boxShadow: 'none', |
|
color: '#000', |
|
}); |
|
drag.appendTo('body'); |
|
drag.css({ |
|
position: 'absolute', |
|
zIndex: 9999999, |
|
left: $(this).offset().left, |
|
top: $(this).offset().top, |
|
width: canvas.getZoom() * drag.width(), |
|
pointerEvents: 'none', |
|
opacity: 0, |
|
}); |
|
var pageX = e.pageX; |
|
var pageY = e.pageY; |
|
var offset = drag.offset(); |
|
var offsetx = drag.offset().left + drag.width() / 2 - e.pageX; |
|
var offsety = drag.offset().top + drag.height() / 2 - e.pageY; |
|
var replacing = false; |
|
draggingPanel = true; |
|
var move = false; |
|
canvas.discardActiveObject(); |
|
canvas.renderAll(); |
|
function dragging(e) { |
|
$('#bottom-area').addClass('noselect'); |
|
$('#toolbar').addClass('noselect'); |
|
$('#browser').addClass('noselect'); |
|
$('#properties').addClass('noselect'); |
|
$('#controls').addClass('noselect'); |
|
move = true; |
|
var left = offset.left + (e.pageX - pageX); |
|
var top = offset.top + (e.pageY - pageY); |
|
drag.offset({ left: left, top: top }); |
|
|
|
if ( |
|
overCanvas && |
|
canvas.getActiveObject() && |
|
!replacing && |
|
canvas.getActiveObject().type == 'image' && |
|
(drag.hasClass('image-grid-item') || |
|
drag.hasClass('video-grid-item')) |
|
) { |
|
if (e.ctrlKey) { |
|
drag.css('visibility', 'hidden'); |
|
replaceObject( |
|
drag.attr('data-src'), |
|
canvas.getActiveObject() |
|
); |
|
replacing = true; |
|
} else { |
|
$('#replace-image').addClass('replace-active'); |
|
} |
|
} else if ( |
|
(replacing && !canvas.getActiveObject()) || |
|
(replacing && !e.ctrlKey) |
|
) { |
|
drag.css('visibility', 'visible'); |
|
replaceObject(oldsrc, oldobj); |
|
replacing = false; |
|
canvas.discardActiveObject(); |
|
$('#replace-image').removeClass('replace-active'); |
|
} else { |
|
$('#replace-image').removeClass('replace-active'); |
|
} |
|
|
|
if (overCanvas) { |
|
drag.css({ opacity: 1 }); |
|
} else { |
|
drag.css({ opacity: 0.5 }); |
|
} |
|
} |
|
function released(e) { |
|
$('#replace-image').removeClass('replace-active'); |
|
$('#bottom-area').removeClass('noselect'); |
|
$('#toolbar').removeClass('noselect'); |
|
$('#browser').removeClass('noselect'); |
|
$('#properties').removeClass('noselect'); |
|
$('#controls').removeClass('noselect'); |
|
draggingPanel = false; |
|
$('body').off('mousemove', dragging).off('mouseup', released); |
|
canvasx = canvas.getPointer(e).x; |
|
canvasy = canvas.getPointer(e).y; |
|
var xpos = canvasx + offsetx - artboard.get('left'); |
|
var ypos = canvasy + offsety - artboard.get('top'); |
|
if (!overCanvas && move) { |
|
drag.remove(); |
|
return false; |
|
} |
|
if (move && !replacing) { |
|
if (drag.hasClass('grid-item')) { |
|
newSVG( |
|
drag.find('img').attr('src'), |
|
xpos, |
|
ypos, |
|
drag.width(), |
|
false |
|
); |
|
} else if (drag.hasClass('image-external-grid-item')) { |
|
$('#load-image').addClass('loading-active'); |
|
savePixabayImage( |
|
drag.attr('data-src'), |
|
xpos, |
|
ypos, |
|
drag.width() |
|
); |
|
} else if (drag.hasClass('video-external-grid-item')) { |
|
savePixabayVideo( |
|
drag.attr('data-src'), |
|
drag.find('img').attr('src'), |
|
xpos, |
|
ypos |
|
); |
|
} else if (drag.hasClass('image-grid-item')) { |
|
$('#load-image').addClass('loading-active'); |
|
loadImage( |
|
drag.attr('data-src'), |
|
xpos, |
|
ypos, |
|
drag.width(), |
|
false |
|
); |
|
} else if (drag.hasClass('grid-emoji-item')) { |
|
$('#load-image').addClass('loading-active'); |
|
loadImage( |
|
drag.find('img').attr('src'), |
|
xpos, |
|
ypos, |
|
drag.width(), |
|
false |
|
); |
|
} else if (drag.hasClass('add-text')) { |
|
if (drag.attr('id') == 'heading-text') { |
|
newTextbox( |
|
50, |
|
700, |
|
'Add a heading', |
|
canvasx - artboard.get('left'), |
|
canvasy - artboard.get('top'), |
|
drag.width(), |
|
false, |
|
drag.attr('data-font') |
|
); |
|
} else if (drag.attr('id') == 'subheading-text') { |
|
newTextbox( |
|
22, |
|
500, |
|
'Add a subheading', |
|
canvasx - artboard.get('left'), |
|
canvasy - artboard.get('top'), |
|
drag.width(), |
|
false, |
|
drag.attr('data-font') |
|
); |
|
} else if (drag.attr('id') == 'body-text') { |
|
newTextbox( |
|
18, |
|
400, |
|
'Add body text', |
|
canvasx - artboard.get('left'), |
|
canvasy - artboard.get('top'), |
|
drag.width(), |
|
false, |
|
drag.attr('data-font') |
|
); |
|
} else { |
|
newTextbox( |
|
18, |
|
400, |
|
'Your text', |
|
canvasx - artboard.get('left'), |
|
canvasy - artboard.get('top'), |
|
drag.width(), |
|
false, |
|
drag.attr('data-font') |
|
); |
|
} |
|
} else if (drag.hasClass('video-grid-item')) { |
|
$('#load-video').addClass('loading-active'); |
|
loadVideo(drag.attr('data-src'), canvasx, canvasy); |
|
} |
|
} else if (!move && !replacing) { |
|
if (drag.hasClass('grid-item')) { |
|
newSVG( |
|
drag.find('img').attr('src'), |
|
artboard.get('left') + artboard.get('width') / 2, |
|
artboard.get('top') + artboard.get('height') / 2, |
|
100, |
|
true |
|
); |
|
} else if (drag.hasClass('image-external-grid-item')) { |
|
savePixabayImage( |
|
drag.attr('data-src'), |
|
artboard.get('left') + artboard.get('width') / 2, |
|
artboard.get('top') + artboard.get('height') / 2, |
|
150 |
|
); |
|
} else if (drag.hasClass('video-external-grid-item')) { |
|
savePixabayVideo( |
|
drag.attr('data-src'), |
|
drag.find('img').attr('src'), |
|
artboard.get('left') + artboard.get('width') / 2, |
|
artboard.get('top') + artboard.get('height') / 2 |
|
); |
|
} else if (drag.hasClass('image-grid-item')) { |
|
$('#load-image').addClass('loading-active'); |
|
loadImage( |
|
drag.attr('data-src'), |
|
artboard.get('left') + artboard.get('width') / 2, |
|
artboard.get('top') + artboard.get('height') / 2, |
|
150, |
|
true |
|
); |
|
} else if (drag.hasClass('grid-emoji-item')) { |
|
$('#load-image').addClass('loading-active'); |
|
loadImage( |
|
drag.find('img').attr('src'), |
|
artboard.get('left') + artboard.get('width') / 2, |
|
artboard.get('top') + artboard.get('height') / 2, |
|
50, |
|
true |
|
); |
|
} else if (drag.hasClass('add-text')) { |
|
if (drag.attr('id') == 'heading-text') { |
|
newTextbox( |
|
50, |
|
700, |
|
'Add a heading', |
|
artboard.get('left') + artboard.get('width') / 2, |
|
artboard.get('top') + artboard.get('height') / 2, |
|
drag.width(), |
|
true, |
|
drag.attr('data-font') |
|
); |
|
} else if (drag.attr('id') == 'subheading-text') { |
|
newTextbox( |
|
22, |
|
500, |
|
'Add a subheading', |
|
artboard.get('left') + artboard.get('width') / 2, |
|
artboard.get('top') + artboard.get('height') / 2, |
|
drag.width(), |
|
true, |
|
drag.attr('data-font') |
|
); |
|
} else if (drag.attr('id') == 'body-text') { |
|
newTextbox( |
|
18, |
|
400, |
|
'Add body text', |
|
artboard.get('left') + artboard.get('width') / 2, |
|
artboard.get('top') + artboard.get('height') / 2, |
|
drag.width(), |
|
true, |
|
drag.attr('data-font') |
|
); |
|
} else { |
|
newTextbox( |
|
18, |
|
400, |
|
'Your text', |
|
artboard.get('left') + artboard.get('width') / 2, |
|
artboard.get('top') + artboard.get('height') / 2, |
|
drag.width(), |
|
true, |
|
drag.attr('data-font') |
|
); |
|
} |
|
} else if (drag.hasClass('video-grid-item')) { |
|
$('#load-video').addClass('loading-active'); |
|
loadVideo( |
|
drag.attr('data-src'), |
|
artboard.get('left') + artboard.get('width') / 2, |
|
artboard.get('top') + artboard.get('height') / 2, |
|
true |
|
); |
|
} |
|
} |
|
drag.remove(); |
|
} |
|
$('body').on('mouseup', released).on('mousemove', dragging); |
|
} |
|
$(document).on('mousedown', '.image-grid-item', dragObject); |
|
$(document).on('mousedown', '.video-grid-item', dragObject); |
|
$(document).on('mousedown', '.grid-item', dragObject); |
|
$(document).on('mousedown', '.grid-emoji-item', dragObject); |
|
$(document).on('mousedown', '.add-text', dragObject); |
|
$(document).on('mousedown click mouseup', '.credit', function (e) { |
|
e.stopPropagation(); |
|
}); |
|
|
|
|
|
function collapsePanel() { |
|
$('#browser').addClass('collapsed'); |
|
$('#behind-browser').addClass('collapsed'); |
|
$('#canvas-area').addClass('canvas-full'); |
|
var act = $('.tool-active'); |
|
if (act.attr('id') == 'image-tool') { |
|
act.find('img').attr('src', 'assets/image.svg'); |
|
} else if (act.attr('id') == 'text-tool') { |
|
act.find('img').attr('src', 'assets/text.svg'); |
|
} else if (act.attr('id') == 'mockup-tool') { |
|
act.find('img').attr('src', 'assets/mockup.svg'); |
|
} else if (act.attr('id') == 'video-tool') { |
|
act.find('img').attr('src', 'assets/video.svg'); |
|
} else if (act.attr('id') == 'shape-tool') { |
|
act.find('img').attr('src', 'assets/shape.svg'); |
|
} else if (act.attr('id') == 'upload-tool') { |
|
act.find('img').attr('src', 'assets/uploads.svg'); |
|
} |
|
$('.tool-active').removeClass('tool-active'); |
|
resizeCanvas(); |
|
} |
|
$(document).on('click', '#collapse', collapsePanel); |
|
$(document).on('click', '.tool-active', collapsePanel); |
|
|
|
|
|
function setPreset() { |
|
if ($(this).val() != 'custom') { |
|
artboard.set({ |
|
width: presets.find((x) => x.id == $(this).val()).width, |
|
height: presets.find((x) => x.id == $(this).val()).height, |
|
}); |
|
canvas.renderAll(); |
|
resizeCanvas(); |
|
} |
|
activepreset = $(this).val(); |
|
updatePanel(); |
|
save(); |
|
} |
|
$(document).on('change', '#preset', setPreset); |
|
|
|
function setTextPreset() { |
|
var object = canvas.getActiveObject(); |
|
animatedtext |
|
.find((x) => x.id == object.id) |
|
.setProp({ preset: $(this).val() }, canvas); |
|
save(); |
|
} |
|
function setTextEasing() { |
|
var object = canvas.getActiveObject(); |
|
animatedtext |
|
.find((x) => x.id == object.id) |
|
.setProp({ easing: $(this).val() }, canvas); |
|
save(); |
|
} |
|
$(document).on('change', '#preset-picker', setTextPreset); |
|
$(document).on('change', '#easing-picker', setTextEasing); |
|
|
|
|
|
function deleteMedia(e) { |
|
e.preventDefault(); |
|
e.stopPropagation(); |
|
var key = $(this).parent().attr('data-key'); |
|
if ( |
|
window.confirm( |
|
'Are you sure you want to permanently delete this asset? It will also remove any instances of it in the canvas.' |
|
) |
|
) { |
|
deleteAsset(key); |
|
} |
|
} |
|
$(document).on('mousedown', '.delete-media', deleteMedia); |
|
|
|
|
|
function saveLayerName() { |
|
$('.name-active').prop('readonly', true); |
|
if ($('.name-active').val() == '') { |
|
$('.name-active').val('Untitled layer'); |
|
} |
|
objects.find( |
|
(x) => |
|
x.id == $('.name-active').parent().parent().attr('data-object') |
|
).label = $('.name-active').val(); |
|
save(); |
|
$('.name-active').removeClass('name-active'); |
|
if (window.getSelection) { |
|
if (window.getSelection().empty) { |
|
window.getSelection().empty(); |
|
} else if (window.getSelection().removeAllRanges) { |
|
window.getSelection().removeAllRanges(); |
|
} |
|
} else if (document.selection) { |
|
document.selection.empty(); |
|
} |
|
editinglayer = false; |
|
} |
|
$(document).on('focusout', '.layer-custom-name', saveLayerName); |
|
|
|
|
|
function zoomTo() { |
|
var zoom; |
|
if ($(this).attr('data-zoom') == 'in') { |
|
zoom = canvas.getZoom() + 0.2; |
|
} else if ($(this).attr('data-zoom') == 'out') { |
|
zoom = canvas.getZoom() - 0.2; |
|
} else { |
|
zoom = parseInt($(this).attr('data-zoom')) / 100; |
|
} |
|
if (zoom > 20) zoom = 20; |
|
if (zoom < 0.01) zoom = 0.01; |
|
canvas.setZoom(1); |
|
canvas.renderAll(); |
|
var vpw = canvas.width / zoom; |
|
var vph = canvas.height / zoom; |
|
var x = artboard.left + artboard.width / 2 - vpw / 2; |
|
var y = artboard.top + artboard.height / 2 - vph / 2; |
|
canvas.absolutePan({ x: x, y: y }); |
|
canvas.setZoom(zoom); |
|
canvas.renderAll(); |
|
$('#zoom-level span').html( |
|
(canvas.getZoom() * 100).toFixed(0) + '%' |
|
); |
|
} |
|
$(document).on('click', '.zoom-options-item', zoomTo); |
|
|
|
|
|
function addBackgroundAudio() { |
|
background_audio = new Audio('assets/audio.wav'); |
|
} |
|
|
|
|
|
function hideModals() { |
|
$('.modal-open').removeClass('modal-open'); |
|
} |
|
$('#background-overlay').on('click', hideModals); |
|
|
|
|
|
function downloadModal() { |
|
if (!recording) { |
|
hideModals(); |
|
$('#download-modal').addClass('modal-open'); |
|
$('#background-overlay').addClass('modal-open'); |
|
} |
|
} |
|
$('#download').on('click', downloadModal); |
|
|
|
|
|
function importExportModal() { |
|
hideModals(); |
|
$('#import-export-modal').toggleClass('modal-open'); |
|
$('#background-overlay').toggleClass('modal-open'); |
|
} |
|
$('#share').on('click', importExportModal); |
|
|
|
function searchInput() { |
|
var value = $(this).val().toLowerCase(); |
|
if (value == '') { |
|
$('#delete-search').removeClass('show-delete'); |
|
} else { |
|
$('#delete-search').addClass('show-delete'); |
|
} |
|
} |
|
|
|
function fancyTimeFormat(duration) { |
|
var hrs = ~~(duration / 3600); |
|
var mins = ~~((duration % 3600) / 60); |
|
var secs = ~~duration % 60; |
|
var ret = ''; |
|
if (hrs > 0) { |
|
ret += '' + hrs + ':' + (mins < 10 ? '0' : ''); |
|
} |
|
ret += '' + mins + ':' + (secs < 10 ? '0' : ''); |
|
ret += '' + secs; |
|
return ret; |
|
} |
|
|
|
function loadMoreMedia() { |
|
var value = $('#browser-search input').val(); |
|
if (value != '' && page != false) { |
|
page += 1; |
|
if ($('#image-tool').hasClass('tool-active')) { |
|
var URL = |
|
'https://pixabay.com/api/?key=' + |
|
API_KEY + |
|
'&q=' + |
|
encodeURIComponent(value) + |
|
'&page=' + |
|
page; |
|
$.getJSON(URL, function (data) { |
|
if (parseInt(data.totalHits) > 0) { |
|
$.each(data.hits, function (i, hit) { |
|
$('#images-grid').append( |
|
"<div class='image-grid-item image-external-grid-item' data-src='" + |
|
hit.webformatURL + |
|
"'><a class='credit' href='" + |
|
hit.pageURL + |
|
"' target='_blank'>" + |
|
hit.user + |
|
"</a><img draggable=false onload='onLoadImage(this)' src='" + |
|
hit.webformatURL + |
|
"'</div>" |
|
); |
|
}); |
|
} else { |
|
page = false; |
|
} |
|
}); |
|
} else if ($('#video-tool').hasClass('tool-active')) { |
|
var URL = |
|
'https://pixabay.com/api/videos/?key=' + |
|
API_KEY + |
|
'&q=' + |
|
encodeURIComponent(value) + |
|
'&page=' + |
|
page; |
|
$.getJSON(URL, function (data) { |
|
if (parseInt(data.totalHits) > 0) { |
|
$.each(data.hits, function (i, hit) { |
|
var video = hit.videos.medium.url; |
|
$('#images-grid').append( |
|
"<div class='image-grid-item video-external-grid-item' data-src='" + |
|
video + |
|
"'><a class='credit' href='" + |
|
hit.pageURL + |
|
"' target='_blank'>" + |
|
hit.user + |
|
"</a><div id='time-video'>" + |
|
fancyTimeFormat(hit.duration) + |
|
"</div><img draggable=false onload='onLoadImage(this)' src='assets/transparent.png'</div>" |
|
); |
|
createVideoThumbnail(video, 250, 0, true).then(function ( |
|
data |
|
) { |
|
$(".image-grid-item[data-src='" + video + "']") |
|
.find('img') |
|
.attr('src', data); |
|
}); |
|
}); |
|
} else { |
|
page = false; |
|
} |
|
}); |
|
} |
|
} |
|
} |
|
|
|
function search() { |
|
page = 1; |
|
var value = $('#browser-search input').val(); |
|
if ($('#image-tool').hasClass('tool-active')) { |
|
var URL = |
|
'https://pixabay.com/api/?key=' + |
|
API_KEY + |
|
'&q=' + |
|
encodeURIComponent(value) + |
|
'&page=' + |
|
page; |
|
$('#images-grid').html(''); |
|
if (value != '') { |
|
$('#pixabay').addClass('hide-pixabay'); |
|
$('#landing').addClass('hide-landing'); |
|
$.getJSON(URL, function (data) { |
|
if (parseInt(data.totalHits) > 0) { |
|
$.each(data.hits, function (i, hit) { |
|
$('#images-grid').append( |
|
"<div class='image-grid-item image-external-grid-item' data-src='" + |
|
hit.webformatURL + |
|
"'><a class='credit' href='" + |
|
hit.pageURL + |
|
"' target='_blank'>" + |
|
hit.user + |
|
"</a><img draggable=false onload='onLoadImage(this)' src='" + |
|
hit.webformatURL + |
|
"'</div>" |
|
); |
|
}); |
|
} else { |
|
$('#shapes-cont').html( |
|
"<div id='no-results'>Sorry, we couldn't find any results for "" + |
|
encodeURIComponent(value) + |
|
'". Please try a different query.</div>' |
|
); |
|
} |
|
}); |
|
} else { |
|
$('#pixabay').removeClass('hide-pixabay'); |
|
$('#landing').removeClass('hide-landing'); |
|
} |
|
} else if ($('#video-tool').hasClass('tool-active')) { |
|
var URL = |
|
'https://pixabay.com/api/videos/?key=' + |
|
API_KEY + |
|
'&q=' + |
|
encodeURIComponent(value); |
|
$('#images-grid').html(''); |
|
if (value != '') { |
|
$('#landing').addClass('hide-landing'); |
|
$('#pixabay').addClass('hide-pixabay'); |
|
$.getJSON(URL, function (data) { |
|
if (parseInt(data.totalHits) > 0) { |
|
$.each(data.hits, function (i, hit) { |
|
var video = hit.videos.medium.url; |
|
$('#images-grid').append( |
|
"<div class='image-grid-item video-external-grid-item' data-src='" + |
|
video + |
|
"'><a class='credit' href='" + |
|
hit.pageURL + |
|
"' target='_blank'>" + |
|
hit.user + |
|
"</a><div id='time-video'>" + |
|
fancyTimeFormat(hit.duration) + |
|
"</div><img draggable=false onload='onLoadImage(this)' src='assets/transparent.png'</div>" |
|
); |
|
|
|
$(".image-grid-item[data-src='" + video + "']") |
|
.find('img') |
|
.attr( |
|
'src', |
|
'https://i.vimeocdn.com/video/' + |
|
hit.picture_id + |
|
'_640x360.jpg' |
|
); |
|
|
|
}); |
|
} else { |
|
$('#shapes-cont').html( |
|
"<div id='no-results'>Sorry, we couldn't find any results for "" + |
|
encodeURIComponent(value) + |
|
'". Please try a different query.</div>' |
|
); |
|
} |
|
}); |
|
} else { |
|
$('#pixabay').removeClass('hide-pixabay'); |
|
$('#landing').removeClass('hide-landing'); |
|
} |
|
} else if ($('#shape-tool').hasClass('tool-active')) { |
|
if (value == '') { |
|
$('#shapes-cont').html( |
|
'<p class="row-title">Shapes</p><div class="gallery-row" id="shapes-row"></div><p class="row-title">Emojis</p><div class="gallery-row" id="emojis-row"></div>' |
|
); |
|
populateGrid('shape-tool'); |
|
} else { |
|
$('.row-title').remove(); |
|
$('.gallery-row').remove(); |
|
$('#shapes-cont').html("<div class='gallery-row'></div>"); |
|
var combined = shape_grid_items.concat(emoji_items); |
|
var flag = false; |
|
combined.forEach(function (item) { |
|
if (item.indexOf(value) > -1) { |
|
flag = true; |
|
if (item.indexOf('emoji') > -1) { |
|
$('.gallery-row').append( |
|
"<div class='grid-emoji-item'><img draggable=false src='" + |
|
item + |
|
"'></div>" |
|
); |
|
} else { |
|
$('.gallery-row').append( |
|
"<div class='grid-item'><img draggable=false src='" + |
|
item + |
|
"'></div>" |
|
); |
|
} |
|
} |
|
}); |
|
if (!flag) { |
|
$('#shapes-cont').html( |
|
"<div id='no-results'>Sorry, we couldn't find any results for "" + |
|
encodeURIComponent(value) + |
|
'". Please try a different query.</div>' |
|
); |
|
} |
|
} |
|
} else if ($('#text-tool').hasClass('tool-active')) { |
|
if (value == '') { |
|
$('#browser-container').html(text_browser); |
|
populateGrid('text-tool'); |
|
} else { |
|
$('#shapes-cont').html(''); |
|
$('.row-title').remove(); |
|
var flag = false; |
|
fonts.forEach(function (font) { |
|
if (font.toLowerCase().indexOf(value) > -1) { |
|
flag = true; |
|
WebFont.load({ |
|
google: { |
|
families: [font], |
|
}, |
|
}); |
|
$('#shapes-cont').append( |
|
"<div id='item-text' class='add-text noselect' data-font='" + |
|
font + |
|
"' style='font-family: " + |
|
font + |
|
"'>" + |
|
font + |
|
'</div>' |
|
); |
|
} |
|
}); |
|
if (!flag) { |
|
$('#shapes-cont').html( |
|
"<div id='no-results'>Sorry, we couldn't find any results for "" + |
|
encodeURIComponent(value) + |
|
'". Please try a different query.</div>' |
|
); |
|
} |
|
} |
|
} |
|
} |
|
|
|
function searchCategory() { |
|
$('#browser-search input').val($(this).attr('data-name')); |
|
$('#delete-search').addClass('show-delete'); |
|
search(); |
|
$('#pixabay').addClass('hide-pixabay'); |
|
} |
|
|
|
function deleteSearch() { |
|
$('#browser-search input').val(''); |
|
$('#delete-search').removeClass('show-delete'); |
|
if ($('#shape-tool').hasClass('tool-active')) { |
|
$('#shapes-cont').html( |
|
'<p class="row-title">Shapes</p><div class="gallery-row" id="shapes-row"></div><p class="row-title">Emojis</p><div class="gallery-row" id="emojis-row"></div>' |
|
); |
|
populateGrid('shape-tool'); |
|
} else if ($('#image-tool').hasClass('tool-active')) { |
|
$('#images-grid').html(''); |
|
$('#landing').removeClass('hide-landing'); |
|
$('#pixabay').removeClass('hide-pixabay'); |
|
} else if ($('#video-tool').hasClass('tool-active')) { |
|
$('#images-grid').html(''); |
|
$('#landing').removeClass('hide-landing'); |
|
$('#pixabay').removeClass('hide-pixabay'); |
|
} else if ($('#text-tool').hasClass('tool-active')) { |
|
$('#browser-container').html(text_browser); |
|
populateGrid('text-tool'); |
|
} |
|
} |
|
$(document).on('click', '#delete-search', deleteSearch); |
|
$(document).on('input', '#browser-search input', searchInput); |
|
$(document).on('click', '#search-button', search); |
|
$(document).on('click', '.category', searchCategory); |
|
|
|
function replaceAudioBackground() { |
|
var src = $(this).attr('data-src'); |
|
newAudioLayer(src); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
$(document).on('click', '.audio-item', replaceAudioBackground); |
|
|
|
function previewAudioBackground(e) { |
|
e.preventDefault(); |
|
e.stopPropagation(); |
|
var src = $(this).parent().attr('data-src'); |
|
if ($(this).find('img').attr('src') == 'assets/play-button.svg') { |
|
temp_audio = new Audio(src); |
|
temp_audio.crossOrigin = 'anonymous'; |
|
temp_audio.currentTime = 0; |
|
temp_audio.play(); |
|
$(this).find('img').attr('src', 'assets/pause-button.svg'); |
|
} else { |
|
if (temp_audio != false) { |
|
temp_audio.pause(); |
|
} |
|
$(this).find('img').attr('src', 'assets/play-button.svg'); |
|
} |
|
} |
|
$(document).on('click', '.audio-preview', previewAudioBackground); |
|
|
|
|
|
function checkFilter() { |
|
resetFilters(); |
|
if (canvas.getActiveObject()) { |
|
var obj = canvas.getActiveObject(); |
|
if ( |
|
canvas.getActiveObjects().length == 1 && |
|
(obj.type == 'image' || obj.type == 'video') |
|
) { |
|
var value = 'none'; |
|
if (obj.filters.length > 0) { |
|
obj.filters.forEach(function (filter) { |
|
if ( |
|
filter.type == 'BlackWhite' || |
|
filter.type == 'Invert' || |
|
filter.type == 'Sepia' || |
|
filter.type == 'Kodachrome' || |
|
filter.type == 'Polaroid' || |
|
filter.type == 'Technicolor' || |
|
filter.type == 'Brownie' || |
|
filter.type == 'Vintage' |
|
) { |
|
value = filter.type; |
|
} else if (filter.type == 'Brightness') { |
|
sliders |
|
.find((x) => x.name == 'filter-brightness') |
|
.slider.setValue(filter.brightness * 100); |
|
} else if (filter.type == 'Contrast') { |
|
sliders |
|
.find((x) => x.name == 'filter-contrast') |
|
.slider.setValue(filter.contrast * 100); |
|
} else if (filter.type == 'Vibrance') { |
|
sliders |
|
.find((x) => x.name == 'filter-vibrance') |
|
.slider.setValue(filter.vibrance * 100); |
|
} else if (filter.type == 'Saturation') { |
|
sliders |
|
.find((x) => x.name == 'filter-saturation') |
|
.slider.setValue(filter.saturation * 100); |
|
} else if (filter.type == 'HueRotation') { |
|
sliders |
|
.find((x) => x.name == 'filter-hue') |
|
.slider.setValue(filter.rotation * 100); |
|
} else if (filter.type == 'Blur') { |
|
blurslider.setValue(filter.blur * 100); |
|
} else if (filter.type == 'Noise') { |
|
noiseslider.setValue(filter.noise); |
|
} |
|
$('#filters-list').val(value); |
|
$('#filters-list').niceSelect('update'); |
|
}); |
|
} else { |
|
$('#filters-list').val(value); |
|
$('#filters-list').niceSelect('update'); |
|
} |
|
} |
|
} |
|
} |
|
function clearFilters() { |
|
if (canvas.getActiveObject()) { |
|
var obj = canvas.getActiveObject(); |
|
obj.filters = $.grep(obj.filters, function (i) { |
|
return ( |
|
i.type != 'BlackWhite' && |
|
i.type != 'Invert' && |
|
i.type != 'Sepia' && |
|
i.type != 'Kodachrome' && |
|
i.type != 'Polaroid' && |
|
i.type != 'Technicolor' && |
|
i.type != 'Brownie' && |
|
i.type != 'Vintage' |
|
); |
|
}); |
|
canvas.renderAll(); |
|
} |
|
} |
|
function applyFilter(name) { |
|
if (canvas.getActiveObject()) { |
|
var obj = canvas.getActiveObject(); |
|
if (name == 'Sepia') { |
|
obj.filters.push(new f.Sepia()); |
|
} else if (name == 'Invert') { |
|
obj.filters.push(new f.Invert()); |
|
} else if (name == 'BlackWhite') { |
|
obj.filters.push(new f.BlackWhite()); |
|
} else if (name == 'Kodachrome') { |
|
obj.filters.push(new f.Kodachrome()); |
|
} else if (name == 'Polaroid') { |
|
obj.filters.push(new f.Polaroid()); |
|
} else if (name == 'Technicolor') { |
|
obj.filters.push(new f.Technicolor()); |
|
} else if (name == 'Vintage') { |
|
obj.filters.push(new f.Vintage()); |
|
} else if (name == 'Brownie') { |
|
obj.filters.push(new f.Brownie()); |
|
} |
|
obj.applyFilters(); |
|
canvas.renderAll(); |
|
save(); |
|
} |
|
} |
|
function updateMediaFilters() { |
|
var value = $(this).val(); |
|
if (canvas.getActiveObject()) { |
|
clearFilters(); |
|
applyFilter(value); |
|
} |
|
} |
|
$(document).on('change', '#filters select', updateMediaFilters); |
|
|
|
function resetFilters() { |
|
if (canvas.getActiveObject()) { |
|
var object = canvas.getActiveObject(); |
|
if (object.filters) { |
|
if (!object.filters.find((x) => x.type == 'Blur')) { |
|
blurslider.setValue(0); |
|
} |
|
if (!object.filters.find((x) => x.type == 'Noise')) { |
|
noiseslider.setValue(0); |
|
} |
|
if (object.filters.length > 0) { |
|
sliders.forEach(function (slider) { |
|
var name = ''; |
|
if (slider.name == 'filter-hue') { |
|
name = 'HueRotation'; |
|
} else if (slider.name == 'filter-brightness') { |
|
name = 'Brightness'; |
|
} else if (slider.name == 'filter-vibrance') { |
|
name = 'Vibrance'; |
|
} else if (slider.name == 'filter-contrast') { |
|
name = 'Contrast'; |
|
} else if (slider.name == 'filter-saturation') { |
|
name = 'Saturation'; |
|
} |
|
if (!object.filters.find((x) => x.type == name)) { |
|
slider.slider.setValue(0); |
|
} |
|
}); |
|
} else { |
|
sliders.forEach(function (slider) { |
|
slider.slider.setValue(0); |
|
}); |
|
} |
|
} else { |
|
sliders.forEach(function (slider) { |
|
slider.slider.setValue(0); |
|
}); |
|
} |
|
} |
|
} |
|
function removeFilters() { |
|
sliders.forEach(function (slider) { |
|
slider.slider.setValue(0); |
|
}); |
|
} |
|
$(document).on('click', '#reset-filters', removeFilters); |
|
|
|
function updateChromaValues() { |
|
if (canvas.getActiveObject()) { |
|
var obj = canvas.getActiveObject(); |
|
if ($('.status-active').attr('id') == 'status-on') { |
|
if (obj.filters.find((x) => x.type == 'RemoveColor')) { |
|
obj.filters.find((x) => x.type == 'RemoveColor').distance = |
|
chromaslider.getValue() / 100; |
|
obj.filters.find((x) => x.type == 'RemoveColor').color = $( |
|
'#chroma-color input' |
|
).val(); |
|
} else { |
|
obj.filters.push( |
|
new f.RemoveColor({ |
|
distance: chromaslider.getValue() / 100, |
|
color: $('#chroma-color input').val(), |
|
}) |
|
); |
|
} |
|
obj.applyFilters(); |
|
canvas.renderAll(); |
|
save(); |
|
} else { |
|
if (obj.filters.find((x) => x.type == 'RemoveColor')) { |
|
obj.filters = $.grep(obj.filters, function (i) { |
|
return i.type != 'RemoveColor'; |
|
}); |
|
obj.applyFilters(); |
|
canvas.renderAll(); |
|
save(); |
|
} |
|
} |
|
} |
|
} |
|
|
|
function updateChromaUI() { |
|
if (canvas.getActiveObject()) { |
|
var obj = canvas.getActiveObject(); |
|
if (obj.filters) { |
|
if (obj.filters.length > 0) { |
|
if (obj.filters.find((x) => x.type == 'RemoveColor')) { |
|
$('.status-active').removeClass('status-active'); |
|
$('#status-on').addClass('status-active'); |
|
chromaslider.setValue( |
|
obj.filters.find((x) => x.type == 'RemoveColor').distance |
|
); |
|
$('#chroma-color input').val( |
|
obj.filters.find((x) => x.type == 'RemoveColor').color |
|
); |
|
$('#color-chroma-side').css( |
|
'background-color', |
|
obj.filters.find((x) => x.type == 'RemoveColor').color |
|
); |
|
} else { |
|
$('.status-active').removeClass('status-active'); |
|
$('#status-off').addClass('status-active'); |
|
chromaslider.setValue(1); |
|
$('#chroma-color input').val('#FFFFFF'); |
|
$('#color-chroma-side').css('background-color', '#FFFFF'); |
|
} |
|
} |
|
} |
|
} |
|
} |
|
|
|
function toggleChroma() { |
|
if (canvas.getActiveObject()) { |
|
$('.status-active').removeClass('status-active'); |
|
$(this).addClass('status-active'); |
|
updateChromaValues(); |
|
} |
|
} |
|
|
|
$(document).on( |
|
'click', |
|
'.status-trigger:not(.status-active)', |
|
toggleChroma |
|
); |
|
|
|
async function getColor() { |
|
try { |
|
const selectedColor = await eyeDropper.open(); |
|
colormode = 'chroma'; |
|
o_fill.setColor(selectedColor.sRGBHex); |
|
} catch (err) {} |
|
} |
|
$(document).on('click', '.pcr-current-color', getColor); |
|
|
|
function closeFilters() { |
|
$('.show-filters').removeClass('show-filters'); |
|
} |
|
|
|
function openFilters() { |
|
$('#filters-parent').addClass('show-filters'); |
|
} |
|
|
|
$(document).on('click', '#filters-button', openFilters); |
|
$(document).on('click', '#filters-close', closeFilters); |
|
|
|
function toggleSpeed(e) { |
|
e.stopPropagation(); |
|
e.preventDefault(); |
|
$('#speed-settings').toggleClass('show-speed'); |
|
$('#speed-arrow').toggleClass('arrow-on'); |
|
} |
|
function setSpeed(e) { |
|
e.stopPropagation(); |
|
e.preventDefault(); |
|
speed = parseFloat($(this).attr('data-speed')); |
|
$('#speed span').html($(this).html()); |
|
toggleSpeed(e); |
|
save(); |
|
} |
|
|
|
$(document).on('click', '.speed', setSpeed); |
|
$(document).on('click', '#speed', toggleSpeed); |
|
|
|
function showMore() { |
|
$('#more-over').css( |
|
'top', |
|
$('#more-tool').offset().top + 5 - $('#more-over').height() / 4 |
|
); |
|
$('#more-over').addClass('more-show'); |
|
} |
|
function hideMore() { |
|
$('#more-over').removeClass('more-show'); |
|
} |
|
|
|
function handleLottieUpload() { |
|
var filething = $('#filepick3').get(0).files; |
|
var reader = new FileReader(); |
|
reader.onload = function (event) { |
|
newLottieAnimation( |
|
artboard.get('left') + artboard.get('width') / 2, |
|
artboard.get('top') + artboard.get('height') / 2, |
|
event.target.result |
|
); |
|
}; |
|
reader.readAsDataURL(filething.item(0)); |
|
} |
|
|
|
$(document).on('change', '#filepick3', handleLottieUpload); |
|
|
|
function uploadLottie() { |
|
$('#filepick3').click(); |
|
} |
|
$(document).on('click', '#upload-lottie', uploadLottie); |
|
|