/*
Animate on scroll
The edited page should include the aos library https://github.com/michalsnik/aos
*/
//clean aos classes on save
$(window).on("vvveb.getHtml.before", function(event, doc) {
$("[data-aos]", doc).removeClass("aos-init aos-animate");
});
$(window).on("vvveb.getHtml.after", function(event, doc) {
$("[data-aos]", doc).addClass("aos-init aos-animate");
});
//ignore aos classes for styles
Vvveb.Builder.ignoreClasses = Vvveb.Builder.ignoreClasses.concat(["aos-init", "aos-animate"]);
var aosAnimations = [
{
value: "",
text: "[none]"
}, {
//Fade animations
optgroup: "Fade animations"
}, {
value: "fade",
text: "Fade"
}, {
value: "fade-up",
text: "Fade Up"
}, {
value: "fade-down",
text: "Fade down"
}, {
value: "fade-left",
text: "Fade left"
}, {
value: "fade-right",
text: "Fade right"
}, {
value: "fade-up-right",
text: "Fade up right"
}, {
value: "fade-up-left",
text: "Fade up left"
}, {
value: "fade-down-right",
text: "Fade down right"
}, {
value: "fade-down-left",
text: "Fade down left"
}, {
//Flip animations
optgroup: "Flip animations"
}, {
value: "flip-up",
text: "Flip Up"
}, {
value: "flip-down",
text: "Flip Down"
}, {
value: "flip-left",
text: "Flip left"
}, {
value: "flip-right",
text: "Flip right"
}, {
//Slide animations
optgroup: "Slide animations"
}, {
value: "slide-up",
text: "Slide up"
}, {
value: "slide-down",
text: "Slide down"
}, {
value: "slide-left",
text: "Slide left"
}, {
value: "slide-right",
text: "Slide right"
}, {
//Zoom animations
optgroup: "Zoom animations"
}, {
value: "zoom-in",
text: "Zoom in"
}, {
value: "zoom-in-up",
text: "Zoom in up"
}, {
value: "zoom-in-down",
text: "Zoom in down"
}, {
value: "zoom-in-left",
text: "Zoom in left"
}, {
value: "zoom-in-right",
text: "Zoom in right"
}, {
value: "zoom-out",
text: "Zoom out"
}, {
value: "zoom-out-up",
text: "Zoom out up"
}, {
value: "zoom-out-down",
text: "Zoom out down"
}, {
value: "zoom-out-left",
text: "Zoom out left"
}, {
value: "zoom-out-right",
text: "Zoom out right"
}
];
/*
var aosEasing = [
{
value: "",
text: "[default]"
}, {
value: "linear",
text: "linear"
}, {
value: "ease",
text: "ease"
}, {
value: "ease-out",
text: "ease-out"
}, {
value: "ease-in-out",
text: "ease-in-out"
}, {
value: "ease-in-back",
text: "ease-in-back"
}, {
value: "ease-out-back",
text: "ease-out-back"
}, {
value: "ease-in-out-back",
text: "ease-in-out-back"
}, {
value: "ease-in-sine",
text: "ease-in-sine"
}, {
value: "ease-out-sine",
text: "ease-out-sine"
}, {
value: "ease-in-quad",
text: "ease-in-quad"
}, {
value: "ease-out-quad",
text: "ease-out-quad"
}, {
value: "ease-in-out-quad",
text: "ease-in-out-quad"
}, {
value: "ease-in-cubic",
text: "ease-in-cubic"
}, {
value: "ease-out-cubic",
text: "ease-out-cubic"
}, {
value: "ease-in-out-cubic",
text: "ease-in-out-cubic"
}, {
value: "ease-in-quart",
text: "ease-in-quart"
}, {
value: "ease-out-quart",
text: "ease-out-quart"
}, {
value: "ease-in-out-quart",
text: "ease-in-out-quart"
}
];
*/
var ComponentBaseAnimateScroll = {
properties: [{
key: "animate_header",
inputtype: SectionInput,
name:false,
sort: base_sort++,
section: advanced_section,
data: {header:"Animate on scroll"},
}, {
name: "Animation type",
key: "type",
htmlAttr: "data-aos",
sort: base_sort++,
section: advanced_section,
inputtype: SelectInput,
data: {
options: aosAnimations,
},
onChange: function(node, value) {
node.removeClass("aos-init aos-animate");
if (value == "") {
node.removeAttr("data-aos data-aos-duration data-aos-delay");
} else {
delay(() => node.addClass("aos-init aos-animate"),
node.data("aos-duration") ? node.data("aos-duration") : 1000);
}
return node;
}
/* }, {
name: "Animation easing",
key: "easing",
htmlAttr: "data-aos-easing",
sort: base_sort++,
section: advanced_section,
inputtype: SelectInput,
data: {
options: aosEasing,
}*/
}, {
name: "Duration",
key: "duration",
htmlAttr: "data-aos-duration",
sort: base_sort++,
section: advanced_section,
inputtype: RangeInput,
data:{
max: 10000,
min:0,
step:100
},
defaultValue: 1000
}, {
name: "Delay",
key: "delay",
htmlAttr: "data-aos-delay",
sort: base_sort++,
section: advanced_section,
inputtype: RangeInput,
data:{
max: 10000,
min:0,
step:100
},
defaultValue: "0"
}, {
name: "",
key: "delay",
htmlAttr: "data-aos-delay",
sort: base_sort++,
section: advanced_section,
inputtype: ButtonInput,
data: {text:"Play animation", icon:"la-play"},
onChange: function(node, value) {
node.removeClass("aos-init aos-animate");
delay(() => node.addClass("aos-init aos-animate"),
node.data("aos-duration") ? node.data("aos-duration") : 1000);
return node;
}
}]
};
Vvveb.Components.extend("_base", "_base", ComponentBaseAnimateScroll);