diff --git a/dist/famous-angular.js b/dist/famous-angular.js index 4c87cdcc..04820d5e 100644 --- a/dist/famous-angular.js +++ b/dist/famous-angular.js @@ -4087,12 +4087,15 @@ angular.module('famous.angular') if (attrs.class) { isolate.renderNode.setClasses(attrs['class'].split(' ')); } + $famousDecorator.sequenceWith(scope, function(data) { + throw new Error('Cannot add FA- elements in fa-surface'); + }); }, post: function(scope, element, attrs){ var isolate = $famousDecorator.ensureIsolate(scope); var updateContent = function() { - isolate.renderNode.setContent(element[0].querySelector('div.fa-surface')); + isolate.renderNode.setContent(element[0].querySelector('div.fa-surface')); }; updateContent(); @@ -4110,6 +4113,8 @@ angular.module('famous.angular') $famousDecorator.registerChild(scope, element, isolate, function() { // TODO: hook into RenderController and hide this render node }); + + } }; } diff --git a/dist/famous-angular.min.js b/dist/famous-angular.min.js index 1274da1a..38f28c7e 100644 --- a/dist/famous-angular.min.js +++ b/dist/famous-angular.min.js @@ -4,4 +4,4 @@ * @link https://github.com/Famous/famous-angular * @license MPL v2.0 */ -"use strict";var ngFameApp=angular.module("famous.angular",[]);ngFameApp.provider("$famous",function(){var e={"famous/core/Context":famous.core.Context,"famous/core/ElementAllocator":famous.core.ElementAllocator,"famous/core/Engine":famous.core.Engine,"famous/core/Entity":famous.core.Entity,"famous/core/EventEmitter":famous.core.EventEmitter,"famous/core/EventHandler":famous.core.EventHandler,"famous/core/Group":famous.core.Group,"famous/core/Modifier":famous.core.Modifier,"famous/core/OptionsManager":famous.core.OptionsManager,"famous/core/RenderNode":famous.core.RenderNode,"famous/core/Scene":famous.core.Scene,"famous/core/SpecParser":famous.core.SpecParser,"famous/core/Surface":famous.core.Surface,"famous/core/Transform":famous.core.Transform,"famous/core/View":famous.core.View,"famous/core/ViewSequence":famous.core.ViewSequence,"famous/events/EventArbiter":famous.events.EventArbiter,"famous/events/EventFilter":famous.events.EventFilter,"famous/events/EventMapper":famous.events.EventMapper,"famous/inputs/FastClick":famous.inputs.FastClick,"famous/inputs/GenericSync":famous.inputs.GenericSync,"famous/inputs/MouseSync":famous.inputs.MouseSync,"famous/inputs/PinchSync":famous.inputs.PinchSync,"famous/inputs/RotateSync":famous.inputs.RotateSync,"famous/inputs/ScaleSync":famous.inputs.ScaleSync,"famous/inputs/ScrollSync":famous.inputs.ScrollSync,"famous/inputs/TouchSync":famous.inputs.TouchSync,"famous/inputs/TouchTracker":famous.inputs.TouchTracker,"famous/inputs/TwoFingerSync":famous.inputs.TwoFingerSync,"famous/math/Matrix":famous.math.Matrix,"famous/math/Quaternion":famous.math.Quaternion,"famous/math/Random":famous.math.Random,"famous/math/Utilities":famous.math.Utilities,"famous/math/Vector":famous.math.Vector,"famous/modifiers/Draggable":famous.modifiers.Draggable,"famous/modifiers/Fader":famous.modifiers.Fader,"famous/modifiers/ModifierChain":famous.modifiers.ModifierChain,"famous/modifiers/StateModifier":famous.modifiers.StateModifier,"famous/surfaces/CanvasSurface":famous.surfaces.CanvasSurface,"famous/surfaces/ContainerSurface":famous.surfaces.ContainerSurface,"famous/surfaces/FormContainerSurface":famous.surfaces.FormContainerSurface,"famous/surfaces/ImageSurface":famous.surfaces.ImageSurface,"famous/surfaces/InputSurface":famous.surfaces.InputSurface,"famous/surfaces/SubmitInputSurface":famous.surfaces.SubmitInputSurface,"famous/surfaces/TextareaSurface":famous.surfaces.TextareaSurface,"famous/surfaces/VideoSurface":famous.surfaces.VideoSurface,"famous/transitions/CachedMap":famous.transitions.CachedMap,"famous/transitions/Easing":famous.transitions.Easing,"famous/transitions/MultipleTransition":famous.transitions.MultipleTransition,"famous/transitions/SnapTransition":famous.transitions.SnapTransition,"famous/transitions/SpringTransition":famous.transitions.SpringTransition,"famous/transitions/Transitionable":famous.transitions.Transitionable,"famous/transitions/TransitionableTransform":famous.transitions.TransitionableTransform,"famous/transitions/TweenTransition":famous.transitions.TweenTransition,"famous/transitions/WallTransition":famous.transitions.WallTransition,"famous/utilities/KeyCodes":famous.utilities.KeyCodes,"famous/utilities/Timer":famous.utilities.Timer,"famous/utilities/Utility":famous.utilities.Utility,"famous/views/Deck":famous.views.Deck,"famous/views/EdgeSwapper":famous.views.EdgeSwapper,"famous/views/FlexibleLayout":famous.views.FlexibleLayout,"famous/views/Flipper":famous.views.Flipper,"famous/views/GridLayout":famous.views.GridLayout,"famous/views/HeaderFooterLayout":famous.views.HeaderFooterLayout,"famous/views/Lightbox":famous.views.Lightbox,"famous/views/RenderController":famous.views.RenderController,"famous/views/ScrollContainer":famous.views.ScrollContainer,"famous/views/Scroller":famous.views.Scroller,"famous/views/Scrollview":famous.views.Scrollview,"famous/views/SequentialLayout":famous.views.SequentialLayout,"famous/widgets/NavigationBar":famous.widgets.NavigationBar,"famous/widgets/Slider":famous.widgets.Slider,"famous/widgets/TabBar":famous.widgets.TabBar,"famous/widgets/ToggleButton":famous.widgets.ToggleButton,"famous/physics/PhysicsEngine":famous.physics.PhysicsEngine,"famous/physics/bodies/Body":famous.physics.bodies.Body,"famous/physics/bodies/Circle":famous.physics.bodies.Circle,"famous/physics/bodies/Particle":famous.physics.bodies.Particle,"famous/physics/bodies/Rectangle":famous.physics.bodies.Rectangle,"famous/physics/constraints/Collision":famous.physics.constraints.Collision,"famous/physics/constraints/Constraint":famous.physics.constraints.Constraint,"famous/physics/constraints/Curve":famous.physics.constraints.Curve,"famous/physics/constraints/Distance":famous.physics.constraints.Distance,"famous/physics/constraints/Snap":famous.physics.constraints.Snap,"famous/physics/constraints/Surface":famous.physics.constraints.Surface,"famous/physics/constraints/Wall":famous.physics.constraints.Wall,"famous/physics/constraints/Walls":famous.physics.constraints.Walls,"famous/physics/forces/Drag":famous.physics.forces.Drag,"famous/physics/forces/Force":famous.physics.forces.Force,"famous/physics/forces/Repulsion":famous.physics.forces.Repulsion,"famous/physics/forces/RotationalDrag":famous.physics.forces.RotationalDrag,"famous/physics/forces/RotationalSpring":famous.physics.forces.RotationalSpring,"famous/physics/forces/Spring":famous.physics.forces.Spring,"famous/physics/forces/VectorField":famous.physics.forces.VectorField,"famous/physics/integrators/SymplecticEuler":famous.physics.integrators.SymplecticEuler};this.registerModule=function(r,n){e[r]=n},e.getIsolate=function(e){return e&&"isolate"in e?e.isolate[e.$id]:{}},e.find=function(r){var n=angular.element(window.document.querySelectorAll(r)),o=function(e){var r=[];return angular.forEach(e,function(e,n){r[n]=angular.element(e).scope()}),r}(n),a=function(r){var n=[];return angular.forEach(r,function(r,o){n[o]=e.getIsolate(r)}),n}(o);return a},this.$get=function(){return e}}),angular.module("famous.angular").config(["$provide",function(e){e.decorator("$animate",["$delegate","$rootScope","$famous","$parse",function(e,r,n,o){function a(e){var r=n.getIsolate(e.scope());return r&&r.renderNode instanceof i}function t(e){var r=/^FA\-.*/;return r.test(e[0].tagName)}var i=n["famous/core/Surface"],s=n["famous/utilities/Timer"],u="$$faAnimationActive",f={enabled:e.enabled};return angular.forEach(["addClass","removeClass"],function(r){var o=angular.element.prototype[r];angular.element.prototype[r]=function(e){return o.apply(this,arguments),a(this)&&"string"==typeof e&&""!==e.trim()&&n.getIsolate(this.scope()).renderNode[r](e),this},f[r]=function(o,i,s){if(e[r](o,i,s),t(o)){var u=n.getIsolate(o.scope());if(a(o)){var f=u.renderNode;angular.forEach(i.split(" "),function(e){"ng-hide"===e?"addClass"===r?u.hide():"removeClass"===r&&u.show():f[r](e)})}else angular.forEach(i.split(" "),function(e){"ng-hide"===e&&("addClass"===r?u.hide():"removeClass"===r&&u.show())})}}}),f.setClass=function(r,o,t,i){if(e.setClass(r,o,t,i),a(r)){var s=n.getIsolate(r.scope()).renderNode;angular.forEach(o.split(" "),function(e){s.addClass(e)}),angular.forEach(t.split(" "),function(e){s.removeClass(e)})}},angular.forEach(["enter","leave","move"],function(a){f[a]=function(i){var f=this,c=arguments,l="enter"===a;l===!0&&e[a].apply(this,arguments),i.data(u)===!0&&o(i.attr("fa-animate-halt"))(i.scope()),i.data(u,!0);var d=function(){i.scope()&&i.scope().$id;if("leave"===a&&t(i)){var r=n.getIsolate(i.scope());r&&r.id&&r.hide()}i.data(u)!==!1&&(i.data(u,!1),l===!1&&e[a].apply(f,c))};r.$$postDigest(function(){var e=i.attr("fa-animate-"+a);if(void 0===e)return void d();var r=o(e)(i.scope(),{$done:d});"number"==typeof r&&s.setTimeout(d,r)})}}),f}])}]),angular.module("famous.angular").factory("$famousDecorator",function(e){var r={child:{},parent:{},renderable:function(r){var n=e["famous/core/RenderNode"];r.renderGate=new n,r.emptyNode=new n,r.show=function(){r.renderGate&&r.renderGate.set(r.renderNode)},r.hide=function(){r.renderGate.set(r.emptyNode)}}};return{addRole:function(e,n){r[e](n)},ensureIsolate:function(e){e.isolate=e.isolate||{},e.isolate[e.$id]=e.isolate[e.$id]||{};var r=e.isolate[e.$id];r.id=e.$id;var n=e.$eval("$index");return n&&"$index"!==n&&!r.index&&(r.index=n),r},registerChild:function(e,r,n,o){e.$emit("registerChild",n),r.one("$destroy",function(){"removeMethod"in n&&n.removeMethod(n.id),o&&o()})},sequenceWith:function(e,r,n,o){e.$on("registerChild",function(a,t){a.targetScope.$id!==e.$id&&(r(t),a.stopPropagation(),n&&(t.removeMethod=n),o&&(t.updateMethod=o))})}}}),angular.module("famous.angular").service("$famousPipe",function(){function e(e,r,n){e instanceof Array||(e=[e]),r instanceof Array||(r=[r]);for(var o=0;ow;w++)if(ycan affect a given field on the same modifier.");var S=function(){for(var e=s.timeline()||0,r=0,n=h[r],o=0;o=h[o].lowerBound&&e<=h[o].upperBound){n=h[o];break}if(o===h.length-1){n=h[o];break}if(e>=h[o].upperBound&&e=n.upperBound)return n.endValue;var a=n.upperBound-n.lowerBound,t=(e-n.lowerBound)/a;if(Array.isArray(n.startValue)){for(var i=[],u=0;u
',transclude:!0,scope:!0,restrict:"EA",compile:function(n,o,a){return{pre:function(n,o,a){function t(){s.apply(this,arguments)}{var i=r.ensureIsolate(n),s=e["famous/core/View"],u=e["famous/core/Engine"];e["famous/core/Transform"]}o.append('
'),i.context=u.createContext(o[0].querySelector(".famous-angular-container")),window.context=i.context;var f=function(){var e=parseInt(a.faPerspective);e&&i.context.setPerspective(e)};a.$observe("faPerspective",f),f(),t.prototype=Object.create(s.prototype),t.prototype.constructor=t;i.view=new t,i.context.add(i.view),n.$on("$destroy",function(){i.context.update=angular.noop}),n.$on("registerChild",function(e,r){i.view.add(r.renderNode),e.stopPropagation()})},post:function(e,n){var o=r.ensureIsolate(e);a(e,function(e){angular.element(n[0].querySelectorAll("div div")[0]).append(e)}),o.readyToRender=!0}}}}}]),angular.module("famous.angular").directive("faCanvasSurface",["$famous","$famousDecorator",function(e,r){return{scope:!0,transclude:!0,template:'',restrict:"EA",compile:function(n,o,a){return{pre:function(n,o,a){{var t=r.ensureIsolate(n),i=e["famous/surfaces/CanvasSurface"];e["famous/core/Transform"],e["famous/core/EventHandler"]}t.renderNode=new i({size:n.$eval(a.faSize)}),a.class&&t.renderNode.setClasses(a["class"].split(" "))},post:function(e,n){var o=r.ensureIsolate(e),t=function(){o.renderNode.setContent(n[0].querySelector("canvas.fa-canvas-surface"))};t(),a(e,function(e){angular.element(n[0].querySelectorAll("canvas.fa-canvas-surface")).append(e)}),r.registerChild(e,n,o,function(){})}}}}}]),angular.module("famous.angular").directive("faClick",["$parse","$famousDecorator",function(e,r){return{restrict:"A",compile:function(){return{post:function(n,o,a){var t=r.ensureIsolate(n);if(a.faClick){var i=t.renderNode._eventInput||t.renderNode;i.on("click",function(r){var o=e(a.faClick);o(n,{$event:r}),n.$$phase||n.$apply()})}}}}}}]),angular.module("famous.angular").directive("faContainerSurface",["$famous","$famousDecorator",function(e,r){return{template:"
",restrict:"E",transclude:!0,scope:!0,compile:function(n,o,a){return{pre:function(n,o,a){var t=r.ensureIsolate(n),i=e["famous/surfaces/ContainerSurface"],s=n.$eval(a.faOptions)||{};t.renderNode=new i(s),r.addRole("renderable",t),t.show(),r.sequenceWith(n,function(e){t.renderNode.add(e.renderGate)},function(){throw new Error("unimplemented: fa-container-surface does not support removing children")})},post:function(e,n){var o=r.ensureIsolate(e);a(e,function(e){n.find("div").append(e)}),r.registerChild(e,n,o)}}}}}]),angular.module("famous.angular").directive("faFlexibleLayout",["$famous","$famousDecorator",function(e,r){return{template:"
",restrict:"E",transclude:!0,scope:!0,compile:function(n,o,a){return{pre:function(n,o,a){var t=r.ensureIsolate(n),i=e["famous/views/FlexibleLayout"],s=(e["famous/core/ViewSequence"],e["famous/core/RenderNode"],[]),u=n.$eval(a.faOptions)||{};t.renderNode=new i(u),r.addRole("renderable",t),t.show();var f=function(){s.sort(function(e,r){return e.index-r.index}),t.renderNode.sequenceFrom(function(e){var r=[];return angular.forEach(e,function(e,n){r[n]=e.renderGate}),r}(s))};r.sequenceWith(n,function(e){s.push(e),f()},function(e){s=function(r){var n=[];return angular.forEach(r,function(r){r.id!==e&&n.push(r)}),n}(s),f()})},post:function(e,n){var o=r.ensureIsolate(e);a(e,function(e){n.find("div").append(e)}),e.$emit("registerChild",o)}}}}}]),angular.module("famous.angular").directive("faFlipper",["$famous","$famousDecorator",function(e,r){return{template:"
",restrict:"E",transclude:!0,scope:!0,compile:function(n,o,a){return{pre:function(n,o,a){var t=r.ensureIsolate(n),i=e["famous/views/Flipper"],s=n.$eval(a.faOptions)||{};t.renderNode=new i(s),r.addRole("renderable",t),t.show(),t.children=[],t.flip=function(e){t.renderNode.flip(e||n.$eval(a.faOptions))},r.sequenceWith(n,function(e){var r=t.children.length;if(0===r)t.renderNode.setFront(e.renderGate);else{if(1!==r)throw new Error("fa-flipper accepts only two child elements; more than two have been provided");t.renderNode.setBack(e.renderGate)}t.children.push(e.renderGate)},function(){t.children.splice(t.children.length-1,1)})},post:function(e,n){var o=r.ensureIsolate(e);a(e,function(e){n.find("div").append(e)}),r.registerChild(e,n,o)}}}}}]),angular.module("famous.angular").directive("faGridLayout",["$famous","$famousDecorator",function(e,r){return{template:"
",restrict:"E",transclude:!0,scope:!0,compile:function(n,o,a){return{pre:function(n,o,a){var t=r.ensureIsolate(n),i=e["famous/views/GridLayout"],s=(e["famous/core/ViewSequence"],[]),u=n.$eval(a.faOptions)||{};t.renderNode=new i(u),r.addRole("renderable",t),t.show(),n.$watch(function(){return n.$eval(a.faOptions)},function(e){t.renderNode.setOptions(e)},!0);var f=function(){n.$$postDigest(function(){s.sort(function(e,r){return e.index-r.index}),t.renderNode.sequenceFrom(function(e){var r=[];return angular.forEach(e,function(e,n){r[n]=e.renderGate}),r}(s))})};r.sequenceWith(n,function(e){s.push(e),f()},function(e){s=function(r){var n=[];return angular.forEach(r,function(r){r.id!==e&&n.push(r)}),n}(s),f()},f)},post:function(e,n){var o=r.ensureIsolate(e);a(e,function(e){n.find("div").append(e)}),r.registerChild(e,n,o)}}}}}]),angular.module("famous.angular").directive("faHeaderFooterLayout",["$famous","$famousDecorator",function(e,r){return{template:"
",restrict:"E",transclude:!0,scope:!0,compile:function(n,o,a){var t=e["famous/views/HeaderFooterLayout"],i=e["famous/core/RenderNode"];return{pre:function(e,n,o){var a=r.ensureIsolate(e),s=(new i,new i,new i,e.$eval(o.faOptions)||{});a.renderNode=new t(s),r.addRole("renderable",a),a.show();var u=0;r.sequenceWith(e,function(e){if(u++,1===u)a.renderNode.header.add(e.renderGate);else if(2===u)a.renderNode.content.add(e.renderGate);else{if(3!==u)throw new Error("fa-header-footer-layout can accept no more than 3 children");a.renderNode.footer.add(e.renderGate)}},function(){throw new Error("unimplemented: fa-header-footer-layout does not support removing children")})},post:function(e,n){var o=r.ensureIsolate(e);a(e,function(e){n.find("div").append(e)}),r.registerChild(e,n,o)}}}}}]),angular.module("famous.angular").directive("faImageSurface",["$famous","$famousDecorator",function(e,r){return{scope:!0,template:'
',restrict:"EA",compile:function(){return{pre:function(n,o,a){{var t=r.ensureIsolate(n),i=e["famous/surfaces/ImageSurface"];e["famous/core/Transform"],e["famous/core/EventHandler"]}n.$watch(function(){return t.getProperties()},function(){t.renderNode&&t.renderNode.setProperties(t.getProperties())},!0);var s=function(e){return"fa"+e.charAt(0).toUpperCase()+e.slice(1)};t.getProperties=function(){for(var e=n.$eval(a.faProperties)||{},r=["backgroundColor","color"],o=0;o",transclude:!0,restrict:"EA",priority:2,scope:!0,compile:function(a,t,i){return{post:function(a,t,s){function u(e){return e.replace(g,function(e,r,n,o){return o?n.toUpperCase():n}).replace(h,"Moz$1")}function f(e){return u(e.replace($,""))}var c=r.ensureIsolate(a),l=e["famous/core/RenderNode"],d=e["famous/core/Modifier"],m=e["famous/core/Transform"],p=e["famous/physics/bodies/Particle"],v=function(e){return e.getPosition()},g=/([\:\-\_]+(.))/g,h=/^moz([A-Z])/,$=/^(x[\:\-_]|data[\:\-_])/i,y=["aboutOrigin","perspective","rotate","rotateAxis","rotateX","rotateY","rotateZ","scale","skew","translate"];s.$observe("faTransformOrder",function(){var e=a.$eval(s.faTransformOrder);void 0!==e&&(y=e)});var w={};angular.forEach(y,function(e){var r=f("fa-"+e);s.$observe(r,function(){w[e]=n(s[r])})});var S=angular.noop;s.$observe("faTransform",function(){S=n(s.faTransform)}),c.getTransform=function(){var e=S(a);if(void 0!==e)return e instanceof Function?e():e instanceof Object&&void 0!==e.get?e.get():e;var r=[];return angular.forEach(y,function(e){var n=w[e]?w[e](a):void 0;void 0!==n&&(n instanceof Function&&(n=n()),r.push(n instanceof Array?m[e].apply(this,n):n instanceof p?m[e].apply(this,v(n)):m[e].call(this,n)))}),r.length?1===r.length?r[0]:m.multiply.apply(this,r):void 0};var b=angular.noop;s.$observe("faAlign",function(){b=n(s.faAlign)}),c.getAlign=function(){var e=b(a);return e instanceof Function?e():e instanceof Object&&void 0!==e.get?e.get():e instanceof p?v(e):e};var T=angular.noop;s.$observe("faOpacity",function(){T=n(s.faOpacity)}),c.getOpacity=function(){var e=T(a);return void 0===e?1:e instanceof Function?e():e instanceof Object&&void 0!==e.get?e.get():e instanceof p?v(e):e};var E=angular.noop;s.$observe("faSize",function(){E=n(s.faSize)}),c.getSize=function(){var e=E(a);return e instanceof Function?e():e instanceof Object&&void 0!==e.get?e.get():e instanceof p?v(e):e};var C=angular.noop;s.$observe("faOrigin",function(){C=n(s.faOrigin)}),c.getOrigin=function(){var e=C(a);return e instanceof Function?e():e instanceof Object&&void 0!==e.get?e.get():e instanceof p?v(e):e},c.modifier=new d({transform:c.getTransform,size:c.getSize,opacity:c.getOpacity,origin:c.getOrigin,align:c.getAlign}),c.renderNode=(new l).add(c.modifier),r.addRole("renderable",c),c.show(),r.sequenceWith(a,function(e){c.renderNode.add(e.renderGate)}),i(a,function(e){t.find("div").append(e)}),r.registerChild(a,t,c,function(){c.modifier.setOpacity(0)}),a.$$phase||o.$$phase||a.$apply()}}}}}]),angular.module("famous.angular").directive("faMouseover",["$parse","$famousDecorator",function(e,r){return{restrict:"A",scope:!1,compile:function(){return{post:function(n,o,a){var t=r.ensureIsolate(n);if(a.faMouseover){var i=t.renderNode._eventInput||t.renderNode;i.on("mouseover",function(r){var o=e(a.faMouseover);o(n,{$event:r}),n.$$phase||n.$apply()})}}}}}}]),angular.module("famous.angular").directive("faPipeFrom",["$famous","$famousDecorator","$famousPipe",function(e,r,n){return{restrict:"A",scope:!1,priority:16,compile:function(){var o=e["famous/core/Engine"];return{post:function(e,a,t){var i=r.ensureIsolate(e);e.$watch(function(){return e.$eval(t.faPipeFrom)},function(e,r){var a=i.renderNode||o;n.unpipesFromTargets(a,r),n.pipesToTargets(a,e)}),e.$on("$destroy",function(){n.unpipesFromTargets(i.renderNode||o,e.$eval(t.faPipeFrom))})}}}}}]),angular.module("famous.angular").directive("faPipeTo",["$famous","$famousDecorator","$famousPipe",function(e,r,n){return{restrict:"A",scope:!1,priority:16,compile:function(){var o=e["famous/core/Engine"];return{post:function(e,a,t){var i=r.ensureIsolate(e);e.$watch(function(){return e.$eval(t.faPipeTo)},function(e,r){var a=i.renderNode||o;n.unpipesFromTargets(r,a),n.pipesToTargets(e,a)}),e.$on("$destroy",function(){n.unpipesFromTargets(e.$eval(t.faPipeTo),i.renderNode||o)})}}}}}]),angular.module("famous.angular").directive("faRenderNode",["$famous","$famousDecorator",function(e,r){return{template:"
",transclude:!0,scope:!0,restrict:"EA",compile:function(n,o,a){return{pre:function(n,o,a){{var t=r.ensureIsolate(n),i=e["famous/core/Engine"];e["famous/core/RenderNode"]}t.children=[],a.$observe("faPipeTo",function(e){var r=n.$eval(e);r&&i.pipe(r)}),t.renderNode=n.$eval(a.faNode),r.addRole("renderable",t),t.show(),r.sequenceWith(n,function(e){t.renderNode.add(e.renderGate),t.children.push(e)})},post:function(e,n){var o=r.ensureIsolate(e);a(e,function(e){n.find("div").append(e)}),r.registerChild(e,n,o)}}}}}]),angular.module("famous.angular").directive("faScrollView",["$famous","$famousDecorator",function(e,r){return{template:"
",restrict:"E",transclude:!0,scope:!0,compile:function(n,o,a){return{pre:function(n,o,a){var t=r.ensureIsolate(n),i=e["famous/views/Scrollview"],s=e["famous/core/ViewSequence"],u=(e["famous/core/Surface"],[]),f=n.$eval(a.faOptions)||{};t.renderNode=new i(f),r.addRole("renderable",t),t.show();var c=function(e){n.$$postDigest(function(){u.sort(function(e,r){return e.index-r.index});var r={array:function(e){var r=[];return angular.forEach(e,function(e,n){r[n]=e.renderGate}),r}(u)};e&&(r.index=n.$eval(a.faStartIndex));var o=new s(r);t.renderNode.sequenceFrom(o)})};r.sequenceWith(n,function(e){u.push(e),c(!0)},function(e){u=function(r){var n=[];return angular.forEach(r,function(r){r.id!==e&&n.push(r)}),n}(u),c()},c)},post:function(e,n){var o=r.ensureIsolate(e);a(e,function(e){n.find("div").append(e)}),r.registerChild(e,n,o)}}}}}]),angular.module("famous.angular").directive("faSequentialLayout",["$famous","$famousDecorator",function(e,r){return{template:"
",restrict:"E",transclude:!0,scope:!0,compile:function(n,o,a){return window.$f=e,{pre:function(n,o,a){var t=r.ensureIsolate(n),i=e["famous/views/SequentialLayout"],s=[],u=n.$eval(a.faOptions)||{};t.renderNode=new i(u),r.addRole("renderable",t),t.show();var f=function(){s.sort(function(e,r){return e.index-r.index}),t.renderNode.sequenceFrom(function(e){var r=[];return angular.forEach(e,function(e,n){r[n]=e.renderGate}),r}(s))};r.sequenceWith(n,function(e){s.push(e),f()},function(e){s=function(r){var n=[];return angular.forEach(r,function(r){r.id!==e&&n.push(r)}),n}(s),f()})},post:function(e,n){var o=r.ensureIsolate(e);a(e,function(e){n.find("div").append(e)}),r.registerChild(e,n,o)}}}}}]),angular.module("famous.angular").directive("faSurface",["$famous","$famousDecorator","$interpolate","$controller","$compile",function(e,r){return{scope:!0,transclude:!0,template:'
',restrict:"EA",compile:function(n,o,a){return{pre:function(n,o,a){{var t=r.ensureIsolate(n),i=e["famous/core/Surface"];e["famous/core/Transform"],e["famous/core/EventHandler"]}n.$watch(function(){return t.getProperties()},function(){t.renderNode&&t.renderNode.setProperties(t.getProperties())},!0);var s=function(e){return"fa"+e.charAt(0).toUpperCase()+e.slice(1)};t.getProperties=function(){for(var e=n.$eval(a.faProperties)||{},r=["backgroundColor","margin","padding","color","pointerEvents","zIndex"],o=0;o",transclude:!0,scope:!0,restrict:"EA",compile:function(n,o,a){var t=e["famous/core/View"];return{pre:function(e,n,o){var a=r.ensureIsolate(e);a.children=[],a.renderNode=new t({size:e.$eval(o.faSize)||[void 0,void 0]}),r.addRole("renderable",a),a.show(),r.sequenceWith(e,function(e){a.renderNode.add(e.renderGate),a.children.push(e)})},post:function(e,n){var o=r.ensureIsolate(e);a(e,function(e){n.find("div").append(e)}),r.registerChild(e,n,o)}}}}}]); \ No newline at end of file +"use strict";var ngFameApp=angular.module("famous.angular",[]);ngFameApp.provider("$famous",function(){var e={"famous/core/Context":famous.core.Context,"famous/core/ElementAllocator":famous.core.ElementAllocator,"famous/core/Engine":famous.core.Engine,"famous/core/Entity":famous.core.Entity,"famous/core/EventEmitter":famous.core.EventEmitter,"famous/core/EventHandler":famous.core.EventHandler,"famous/core/Group":famous.core.Group,"famous/core/Modifier":famous.core.Modifier,"famous/core/OptionsManager":famous.core.OptionsManager,"famous/core/RenderNode":famous.core.RenderNode,"famous/core/Scene":famous.core.Scene,"famous/core/SpecParser":famous.core.SpecParser,"famous/core/Surface":famous.core.Surface,"famous/core/Transform":famous.core.Transform,"famous/core/View":famous.core.View,"famous/core/ViewSequence":famous.core.ViewSequence,"famous/events/EventArbiter":famous.events.EventArbiter,"famous/events/EventFilter":famous.events.EventFilter,"famous/events/EventMapper":famous.events.EventMapper,"famous/inputs/FastClick":famous.inputs.FastClick,"famous/inputs/GenericSync":famous.inputs.GenericSync,"famous/inputs/MouseSync":famous.inputs.MouseSync,"famous/inputs/PinchSync":famous.inputs.PinchSync,"famous/inputs/RotateSync":famous.inputs.RotateSync,"famous/inputs/ScaleSync":famous.inputs.ScaleSync,"famous/inputs/ScrollSync":famous.inputs.ScrollSync,"famous/inputs/TouchSync":famous.inputs.TouchSync,"famous/inputs/TouchTracker":famous.inputs.TouchTracker,"famous/inputs/TwoFingerSync":famous.inputs.TwoFingerSync,"famous/math/Matrix":famous.math.Matrix,"famous/math/Quaternion":famous.math.Quaternion,"famous/math/Random":famous.math.Random,"famous/math/Utilities":famous.math.Utilities,"famous/math/Vector":famous.math.Vector,"famous/modifiers/Draggable":famous.modifiers.Draggable,"famous/modifiers/Fader":famous.modifiers.Fader,"famous/modifiers/ModifierChain":famous.modifiers.ModifierChain,"famous/modifiers/StateModifier":famous.modifiers.StateModifier,"famous/surfaces/CanvasSurface":famous.surfaces.CanvasSurface,"famous/surfaces/ContainerSurface":famous.surfaces.ContainerSurface,"famous/surfaces/FormContainerSurface":famous.surfaces.FormContainerSurface,"famous/surfaces/ImageSurface":famous.surfaces.ImageSurface,"famous/surfaces/InputSurface":famous.surfaces.InputSurface,"famous/surfaces/SubmitInputSurface":famous.surfaces.SubmitInputSurface,"famous/surfaces/TextareaSurface":famous.surfaces.TextareaSurface,"famous/surfaces/VideoSurface":famous.surfaces.VideoSurface,"famous/transitions/CachedMap":famous.transitions.CachedMap,"famous/transitions/Easing":famous.transitions.Easing,"famous/transitions/MultipleTransition":famous.transitions.MultipleTransition,"famous/transitions/SnapTransition":famous.transitions.SnapTransition,"famous/transitions/SpringTransition":famous.transitions.SpringTransition,"famous/transitions/Transitionable":famous.transitions.Transitionable,"famous/transitions/TransitionableTransform":famous.transitions.TransitionableTransform,"famous/transitions/TweenTransition":famous.transitions.TweenTransition,"famous/transitions/WallTransition":famous.transitions.WallTransition,"famous/utilities/KeyCodes":famous.utilities.KeyCodes,"famous/utilities/Timer":famous.utilities.Timer,"famous/utilities/Utility":famous.utilities.Utility,"famous/views/Deck":famous.views.Deck,"famous/views/EdgeSwapper":famous.views.EdgeSwapper,"famous/views/FlexibleLayout":famous.views.FlexibleLayout,"famous/views/Flipper":famous.views.Flipper,"famous/views/GridLayout":famous.views.GridLayout,"famous/views/HeaderFooterLayout":famous.views.HeaderFooterLayout,"famous/views/Lightbox":famous.views.Lightbox,"famous/views/RenderController":famous.views.RenderController,"famous/views/ScrollContainer":famous.views.ScrollContainer,"famous/views/Scroller":famous.views.Scroller,"famous/views/Scrollview":famous.views.Scrollview,"famous/views/SequentialLayout":famous.views.SequentialLayout,"famous/widgets/NavigationBar":famous.widgets.NavigationBar,"famous/widgets/Slider":famous.widgets.Slider,"famous/widgets/TabBar":famous.widgets.TabBar,"famous/widgets/ToggleButton":famous.widgets.ToggleButton,"famous/physics/PhysicsEngine":famous.physics.PhysicsEngine,"famous/physics/bodies/Body":famous.physics.bodies.Body,"famous/physics/bodies/Circle":famous.physics.bodies.Circle,"famous/physics/bodies/Particle":famous.physics.bodies.Particle,"famous/physics/bodies/Rectangle":famous.physics.bodies.Rectangle,"famous/physics/constraints/Collision":famous.physics.constraints.Collision,"famous/physics/constraints/Constraint":famous.physics.constraints.Constraint,"famous/physics/constraints/Curve":famous.physics.constraints.Curve,"famous/physics/constraints/Distance":famous.physics.constraints.Distance,"famous/physics/constraints/Snap":famous.physics.constraints.Snap,"famous/physics/constraints/Surface":famous.physics.constraints.Surface,"famous/physics/constraints/Wall":famous.physics.constraints.Wall,"famous/physics/constraints/Walls":famous.physics.constraints.Walls,"famous/physics/forces/Drag":famous.physics.forces.Drag,"famous/physics/forces/Force":famous.physics.forces.Force,"famous/physics/forces/Repulsion":famous.physics.forces.Repulsion,"famous/physics/forces/RotationalDrag":famous.physics.forces.RotationalDrag,"famous/physics/forces/RotationalSpring":famous.physics.forces.RotationalSpring,"famous/physics/forces/Spring":famous.physics.forces.Spring,"famous/physics/forces/VectorField":famous.physics.forces.VectorField,"famous/physics/integrators/SymplecticEuler":famous.physics.integrators.SymplecticEuler};this.registerModule=function(r,n){e[r]=n},e.getIsolate=function(e){return e&&"isolate"in e?e.isolate[e.$id]:{}},e.find=function(r){var n=angular.element(window.document.querySelectorAll(r)),o=function(e){var r=[];return angular.forEach(e,function(e,n){r[n]=angular.element(e).scope()}),r}(n),a=function(r){var n=[];return angular.forEach(r,function(r,o){n[o]=e.getIsolate(r)}),n}(o);return a},this.$get=function(){return e}}),angular.module("famous.angular").config(["$provide",function(e){e.decorator("$animate",["$delegate","$rootScope","$famous","$parse",function(e,r,n,o){function a(e){var r=n.getIsolate(e.scope());return r&&r.renderNode instanceof i}function t(e){var r=/^FA\-.*/;return r.test(e[0].tagName)}var i=n["famous/core/Surface"],s=n["famous/utilities/Timer"],u="$$faAnimationActive",f={enabled:e.enabled};return angular.forEach(["addClass","removeClass"],function(r){var o=angular.element.prototype[r];angular.element.prototype[r]=function(e){return o.apply(this,arguments),a(this)&&"string"==typeof e&&""!==e.trim()&&n.getIsolate(this.scope()).renderNode[r](e),this},f[r]=function(o,i,s){if(e[r](o,i,s),t(o)){var u=n.getIsolate(o.scope());if(a(o)){var f=u.renderNode;angular.forEach(i.split(" "),function(e){"ng-hide"===e?"addClass"===r?u.hide():"removeClass"===r&&u.show():f[r](e)})}else angular.forEach(i.split(" "),function(e){"ng-hide"===e&&("addClass"===r?u.hide():"removeClass"===r&&u.show())})}}}),f.setClass=function(r,o,t,i){if(e.setClass(r,o,t,i),a(r)){var s=n.getIsolate(r.scope()).renderNode;angular.forEach(o.split(" "),function(e){s.addClass(e)}),angular.forEach(t.split(" "),function(e){s.removeClass(e)})}},angular.forEach(["enter","leave","move"],function(a){f[a]=function(i){var f=this,c=arguments,l="enter"===a;l===!0&&e[a].apply(this,arguments),i.data(u)===!0&&o(i.attr("fa-animate-halt"))(i.scope()),i.data(u,!0);var d=function(){i.scope()&&i.scope().$id;if("leave"===a&&t(i)){var r=n.getIsolate(i.scope());r&&r.id&&r.hide()}i.data(u)!==!1&&(i.data(u,!1),l===!1&&e[a].apply(f,c))};r.$$postDigest(function(){var e=i.attr("fa-animate-"+a);if(void 0===e)return void d();var r=o(e)(i.scope(),{$done:d});"number"==typeof r&&s.setTimeout(d,r)})}}),f}])}]),angular.module("famous.angular").factory("$famousDecorator",function(e){var r={child:{},parent:{},renderable:function(r){var n=e["famous/core/RenderNode"];r.renderGate=new n,r.emptyNode=new n,r.show=function(){r.renderGate&&r.renderGate.set(r.renderNode)},r.hide=function(){r.renderGate.set(r.emptyNode)}}};return{addRole:function(e,n){r[e](n)},ensureIsolate:function(e){e.isolate=e.isolate||{},e.isolate[e.$id]=e.isolate[e.$id]||{};var r=e.isolate[e.$id];r.id=e.$id;var n=e.$eval("$index");return n&&"$index"!==n&&!r.index&&(r.index=n),r},registerChild:function(e,r,n,o){e.$emit("registerChild",n),r.one("$destroy",function(){"removeMethod"in n&&n.removeMethod(n.id),o&&o()})},sequenceWith:function(e,r,n,o){e.$on("registerChild",function(a,t){a.targetScope.$id!==e.$id&&(r(t),a.stopPropagation(),n&&(t.removeMethod=n),o&&(t.updateMethod=o))})}}}),angular.module("famous.angular").service("$famousPipe",function(){function e(e,r,n){e instanceof Array||(e=[e]),r instanceof Array||(r=[r]);for(var o=0;ow;w++)if(ycan affect a given field on the same modifier.");var S=function(){for(var e=s.timeline()||0,r=0,n=h[r],o=0;o=h[o].lowerBound&&e<=h[o].upperBound){n=h[o];break}if(o===h.length-1){n=h[o];break}if(e>=h[o].upperBound&&e=n.upperBound)return n.endValue;var a=n.upperBound-n.lowerBound,t=(e-n.lowerBound)/a;if(Array.isArray(n.startValue)){for(var i=[],u=0;u
',transclude:!0,scope:!0,restrict:"EA",compile:function(n,o,a){return{pre:function(n,o,a){function t(){s.apply(this,arguments)}{var i=r.ensureIsolate(n),s=e["famous/core/View"],u=e["famous/core/Engine"];e["famous/core/Transform"]}o.append('
'),i.context=u.createContext(o[0].querySelector(".famous-angular-container")),window.context=i.context;var f=function(){var e=parseInt(a.faPerspective);e&&i.context.setPerspective(e)};a.$observe("faPerspective",f),f(),t.prototype=Object.create(s.prototype),t.prototype.constructor=t;i.view=new t,i.context.add(i.view),n.$on("$destroy",function(){i.context.update=angular.noop}),n.$on("registerChild",function(e,r){i.view.add(r.renderNode),e.stopPropagation()})},post:function(e,n){var o=r.ensureIsolate(e);a(e,function(e){angular.element(n[0].querySelectorAll("div div")[0]).append(e)}),o.readyToRender=!0}}}}}]),angular.module("famous.angular").directive("faCanvasSurface",["$famous","$famousDecorator",function(e,r){return{scope:!0,transclude:!0,template:'',restrict:"EA",compile:function(n,o,a){return{pre:function(n,o,a){{var t=r.ensureIsolate(n),i=e["famous/surfaces/CanvasSurface"];e["famous/core/Transform"],e["famous/core/EventHandler"]}t.renderNode=new i({size:n.$eval(a.faSize)}),a.class&&t.renderNode.setClasses(a["class"].split(" "))},post:function(e,n){var o=r.ensureIsolate(e),t=function(){o.renderNode.setContent(n[0].querySelector("canvas.fa-canvas-surface"))};t(),a(e,function(e){angular.element(n[0].querySelectorAll("canvas.fa-canvas-surface")).append(e)}),r.registerChild(e,n,o,function(){})}}}}}]),angular.module("famous.angular").directive("faClick",["$parse","$famousDecorator",function(e,r){return{restrict:"A",compile:function(){return{post:function(n,o,a){var t=r.ensureIsolate(n);if(a.faClick){var i=t.renderNode._eventInput||t.renderNode;i.on("click",function(r){var o=e(a.faClick);o(n,{$event:r}),n.$$phase||n.$apply()})}}}}}}]),angular.module("famous.angular").directive("faContainerSurface",["$famous","$famousDecorator",function(e,r){return{template:"
",restrict:"E",transclude:!0,scope:!0,compile:function(n,o,a){return{pre:function(n,o,a){var t=r.ensureIsolate(n),i=e["famous/surfaces/ContainerSurface"],s=n.$eval(a.faOptions)||{};t.renderNode=new i(s),r.addRole("renderable",t),t.show(),r.sequenceWith(n,function(e){t.renderNode.add(e.renderGate)},function(){throw new Error("unimplemented: fa-container-surface does not support removing children")})},post:function(e,n){var o=r.ensureIsolate(e);a(e,function(e){n.find("div").append(e)}),r.registerChild(e,n,o)}}}}}]),angular.module("famous.angular").directive("faFlexibleLayout",["$famous","$famousDecorator",function(e,r){return{template:"
",restrict:"E",transclude:!0,scope:!0,compile:function(n,o,a){return{pre:function(n,o,a){var t=r.ensureIsolate(n),i=e["famous/views/FlexibleLayout"],s=(e["famous/core/ViewSequence"],e["famous/core/RenderNode"],[]),u=n.$eval(a.faOptions)||{};t.renderNode=new i(u),r.addRole("renderable",t),t.show();var f=function(){s.sort(function(e,r){return e.index-r.index}),t.renderNode.sequenceFrom(function(e){var r=[];return angular.forEach(e,function(e,n){r[n]=e.renderGate}),r}(s))};r.sequenceWith(n,function(e){s.push(e),f()},function(e){s=function(r){var n=[];return angular.forEach(r,function(r){r.id!==e&&n.push(r)}),n}(s),f()})},post:function(e,n){var o=r.ensureIsolate(e);a(e,function(e){n.find("div").append(e)}),e.$emit("registerChild",o)}}}}}]),angular.module("famous.angular").directive("faFlipper",["$famous","$famousDecorator",function(e,r){return{template:"
",restrict:"E",transclude:!0,scope:!0,compile:function(n,o,a){return{pre:function(n,o,a){var t=r.ensureIsolate(n),i=e["famous/views/Flipper"],s=n.$eval(a.faOptions)||{};t.renderNode=new i(s),r.addRole("renderable",t),t.show(),t.children=[],t.flip=function(e){t.renderNode.flip(e||n.$eval(a.faOptions))},r.sequenceWith(n,function(e){var r=t.children.length;if(0===r)t.renderNode.setFront(e.renderGate);else{if(1!==r)throw new Error("fa-flipper accepts only two child elements; more than two have been provided");t.renderNode.setBack(e.renderGate)}t.children.push(e.renderGate)},function(){t.children.splice(t.children.length-1,1)})},post:function(e,n){var o=r.ensureIsolate(e);a(e,function(e){n.find("div").append(e)}),r.registerChild(e,n,o)}}}}}]),angular.module("famous.angular").directive("faGridLayout",["$famous","$famousDecorator",function(e,r){return{template:"
",restrict:"E",transclude:!0,scope:!0,compile:function(n,o,a){return{pre:function(n,o,a){var t=r.ensureIsolate(n),i=e["famous/views/GridLayout"],s=(e["famous/core/ViewSequence"],[]),u=n.$eval(a.faOptions)||{};t.renderNode=new i(u),r.addRole("renderable",t),t.show(),n.$watch(function(){return n.$eval(a.faOptions)},function(e){t.renderNode.setOptions(e)},!0);var f=function(){n.$$postDigest(function(){s.sort(function(e,r){return e.index-r.index}),t.renderNode.sequenceFrom(function(e){var r=[];return angular.forEach(e,function(e,n){r[n]=e.renderGate}),r}(s))})};r.sequenceWith(n,function(e){s.push(e),f()},function(e){s=function(r){var n=[];return angular.forEach(r,function(r){r.id!==e&&n.push(r)}),n}(s),f()},f)},post:function(e,n){var o=r.ensureIsolate(e);a(e,function(e){n.find("div").append(e)}),r.registerChild(e,n,o)}}}}}]),angular.module("famous.angular").directive("faHeaderFooterLayout",["$famous","$famousDecorator",function(e,r){return{template:"
",restrict:"E",transclude:!0,scope:!0,compile:function(n,o,a){var t=e["famous/views/HeaderFooterLayout"],i=e["famous/core/RenderNode"];return{pre:function(e,n,o){var a=r.ensureIsolate(e),s=(new i,new i,new i,e.$eval(o.faOptions)||{});a.renderNode=new t(s),r.addRole("renderable",a),a.show();var u=0;r.sequenceWith(e,function(e){if(u++,1===u)a.renderNode.header.add(e.renderGate);else if(2===u)a.renderNode.content.add(e.renderGate);else{if(3!==u)throw new Error("fa-header-footer-layout can accept no more than 3 children");a.renderNode.footer.add(e.renderGate)}},function(){throw new Error("unimplemented: fa-header-footer-layout does not support removing children")})},post:function(e,n){var o=r.ensureIsolate(e);a(e,function(e){n.find("div").append(e)}),r.registerChild(e,n,o)}}}}}]),angular.module("famous.angular").directive("faImageSurface",["$famous","$famousDecorator",function(e,r){return{scope:!0,template:'
',restrict:"EA",compile:function(){return{pre:function(n,o,a){{var t=r.ensureIsolate(n),i=e["famous/surfaces/ImageSurface"];e["famous/core/Transform"],e["famous/core/EventHandler"]}n.$watch(function(){return t.getProperties()},function(){t.renderNode&&t.renderNode.setProperties(t.getProperties())},!0);var s=function(e){return"fa"+e.charAt(0).toUpperCase()+e.slice(1)};t.getProperties=function(){for(var e=n.$eval(a.faProperties)||{},r=["backgroundColor","color"],o=0;o",transclude:!0,restrict:"EA",priority:2,scope:!0,compile:function(a,t,i){return{post:function(a,t,s){function u(e){return e.replace(g,function(e,r,n,o){return o?n.toUpperCase():n}).replace(h,"Moz$1")}function f(e){return u(e.replace($,""))}var c=r.ensureIsolate(a),l=e["famous/core/RenderNode"],d=e["famous/core/Modifier"],m=e["famous/core/Transform"],p=e["famous/physics/bodies/Particle"],v=function(e){return e.getPosition()},g=/([\:\-\_]+(.))/g,h=/^moz([A-Z])/,$=/^(x[\:\-_]|data[\:\-_])/i,y=["aboutOrigin","perspective","rotate","rotateAxis","rotateX","rotateY","rotateZ","scale","skew","translate"];s.$observe("faTransformOrder",function(){var e=a.$eval(s.faTransformOrder);void 0!==e&&(y=e)});var w={};angular.forEach(y,function(e){var r=f("fa-"+e);s.$observe(r,function(){w[e]=n(s[r])})});var S=angular.noop;s.$observe("faTransform",function(){S=n(s.faTransform)}),c.getTransform=function(){var e=S(a);if(void 0!==e)return e instanceof Function?e():e instanceof Object&&void 0!==e.get?e.get():e;var r=[];return angular.forEach(y,function(e){var n=w[e]?w[e](a):void 0;void 0!==n&&(n instanceof Function&&(n=n()),r.push(n instanceof Array?m[e].apply(this,n):n instanceof p?m[e].apply(this,v(n)):m[e].call(this,n)))}),r.length?1===r.length?r[0]:m.multiply.apply(this,r):void 0};var b=angular.noop;s.$observe("faAlign",function(){b=n(s.faAlign)}),c.getAlign=function(){var e=b(a);return e instanceof Function?e():e instanceof Object&&void 0!==e.get?e.get():e instanceof p?v(e):e};var T=angular.noop;s.$observe("faOpacity",function(){T=n(s.faOpacity)}),c.getOpacity=function(){var e=T(a);return void 0===e?1:e instanceof Function?e():e instanceof Object&&void 0!==e.get?e.get():e instanceof p?v(e):e};var E=angular.noop;s.$observe("faSize",function(){E=n(s.faSize)}),c.getSize=function(){var e=E(a);return e instanceof Function?e():e instanceof Object&&void 0!==e.get?e.get():e instanceof p?v(e):e};var C=angular.noop;s.$observe("faOrigin",function(){C=n(s.faOrigin)}),c.getOrigin=function(){var e=C(a);return e instanceof Function?e():e instanceof Object&&void 0!==e.get?e.get():e instanceof p?v(e):e},c.modifier=new d({transform:c.getTransform,size:c.getSize,opacity:c.getOpacity,origin:c.getOrigin,align:c.getAlign}),c.renderNode=(new l).add(c.modifier),r.addRole("renderable",c),c.show(),r.sequenceWith(a,function(e){c.renderNode.add(e.renderGate)}),i(a,function(e){t.find("div").append(e)}),r.registerChild(a,t,c,function(){c.modifier.setOpacity(0)}),a.$$phase||o.$$phase||a.$apply()}}}}}]),angular.module("famous.angular").directive("faMouseover",["$parse","$famousDecorator",function(e,r){return{restrict:"A",scope:!1,compile:function(){return{post:function(n,o,a){var t=r.ensureIsolate(n);if(a.faMouseover){var i=t.renderNode._eventInput||t.renderNode;i.on("mouseover",function(r){var o=e(a.faMouseover);o(n,{$event:r}),n.$$phase||n.$apply()})}}}}}}]),angular.module("famous.angular").directive("faPipeFrom",["$famous","$famousDecorator","$famousPipe",function(e,r,n){return{restrict:"A",scope:!1,priority:16,compile:function(){var o=e["famous/core/Engine"];return{post:function(e,a,t){var i=r.ensureIsolate(e);e.$watch(function(){return e.$eval(t.faPipeFrom)},function(e,r){var a=i.renderNode||o;n.unpipesFromTargets(a,r),n.pipesToTargets(a,e)}),e.$on("$destroy",function(){n.unpipesFromTargets(i.renderNode||o,e.$eval(t.faPipeFrom))})}}}}}]),angular.module("famous.angular").directive("faPipeTo",["$famous","$famousDecorator","$famousPipe",function(e,r,n){return{restrict:"A",scope:!1,priority:16,compile:function(){var o=e["famous/core/Engine"];return{post:function(e,a,t){var i=r.ensureIsolate(e);e.$watch(function(){return e.$eval(t.faPipeTo)},function(e,r){var a=i.renderNode||o;n.unpipesFromTargets(r,a),n.pipesToTargets(e,a)}),e.$on("$destroy",function(){n.unpipesFromTargets(e.$eval(t.faPipeTo),i.renderNode||o)})}}}}}]),angular.module("famous.angular").directive("faRenderNode",["$famous","$famousDecorator",function(e,r){return{template:"
",transclude:!0,scope:!0,restrict:"EA",compile:function(n,o,a){return{pre:function(n,o,a){{var t=r.ensureIsolate(n),i=e["famous/core/Engine"];e["famous/core/RenderNode"]}t.children=[],a.$observe("faPipeTo",function(e){var r=n.$eval(e);r&&i.pipe(r)}),t.renderNode=n.$eval(a.faNode),r.addRole("renderable",t),t.show(),r.sequenceWith(n,function(e){t.renderNode.add(e.renderGate),t.children.push(e)})},post:function(e,n){var o=r.ensureIsolate(e);a(e,function(e){n.find("div").append(e)}),r.registerChild(e,n,o)}}}}}]),angular.module("famous.angular").directive("faScrollView",["$famous","$famousDecorator",function(e,r){return{template:"
",restrict:"E",transclude:!0,scope:!0,compile:function(n,o,a){return{pre:function(n,o,a){var t=r.ensureIsolate(n),i=e["famous/views/Scrollview"],s=e["famous/core/ViewSequence"],u=(e["famous/core/Surface"],[]),f=n.$eval(a.faOptions)||{};t.renderNode=new i(f),r.addRole("renderable",t),t.show();var c=function(e){n.$$postDigest(function(){u.sort(function(e,r){return e.index-r.index});var r={array:function(e){var r=[];return angular.forEach(e,function(e,n){r[n]=e.renderGate}),r}(u)};e&&(r.index=n.$eval(a.faStartIndex));var o=new s(r);t.renderNode.sequenceFrom(o)})};r.sequenceWith(n,function(e){u.push(e),c(!0)},function(e){u=function(r){var n=[];return angular.forEach(r,function(r){r.id!==e&&n.push(r)}),n}(u),c()},c)},post:function(e,n){var o=r.ensureIsolate(e);a(e,function(e){n.find("div").append(e)}),r.registerChild(e,n,o)}}}}}]),angular.module("famous.angular").directive("faSequentialLayout",["$famous","$famousDecorator",function(e,r){return{template:"
",restrict:"E",transclude:!0,scope:!0,compile:function(n,o,a){return window.$f=e,{pre:function(n,o,a){var t=r.ensureIsolate(n),i=e["famous/views/SequentialLayout"],s=[],u=n.$eval(a.faOptions)||{};t.renderNode=new i(u),r.addRole("renderable",t),t.show();var f=function(){s.sort(function(e,r){return e.index-r.index}),t.renderNode.sequenceFrom(function(e){var r=[];return angular.forEach(e,function(e,n){r[n]=e.renderGate}),r}(s))};r.sequenceWith(n,function(e){s.push(e),f()},function(e){s=function(r){var n=[];return angular.forEach(r,function(r){r.id!==e&&n.push(r)}),n}(s),f()})},post:function(e,n){var o=r.ensureIsolate(e);a(e,function(e){n.find("div").append(e)}),r.registerChild(e,n,o)}}}}}]),angular.module("famous.angular").directive("faSurface",["$famous","$famousDecorator","$interpolate","$controller","$compile",function(e,r){return{scope:!0,transclude:!0,template:'
',restrict:"EA",compile:function(n,o,a){return{pre:function(n,o,a){{var t=r.ensureIsolate(n),i=e["famous/core/Surface"];e["famous/core/Transform"],e["famous/core/EventHandler"]}n.$watch(function(){return t.getProperties()},function(){t.renderNode&&t.renderNode.setProperties(t.getProperties())},!0);var s=function(e){return"fa"+e.charAt(0).toUpperCase()+e.slice(1)};t.getProperties=function(){for(var e=n.$eval(a.faProperties)||{},r=["backgroundColor","margin","padding","color","pointerEvents","zIndex"],o=0;o",transclude:!0,scope:!0,restrict:"EA",compile:function(n,o,a){var t=e["famous/core/View"];return{pre:function(e,n,o){var a=r.ensureIsolate(e);a.children=[],a.renderNode=new t({size:e.$eval(o.faSize)||[void 0,void 0]}),r.addRole("renderable",a),a.show(),r.sequenceWith(e,function(e){a.renderNode.add(e.renderGate),a.children.push(e)})},post:function(e,n){var o=r.ensureIsolate(e);a(e,function(e){n.find("div").append(e)}),r.registerChild(e,n,o)}}}}}]); \ No newline at end of file diff --git a/famous-angular-docs b/famous-angular-docs index ae1c616a..6741e06d 160000 --- a/famous-angular-docs +++ b/famous-angular-docs @@ -1 +1 @@ -Subproject commit ae1c616a98799d838fb22d17bffb8e7678303e88 +Subproject commit 6741e06d593c0cff7132808909da1d96c38b1bbb diff --git a/famous-angular-examples b/famous-angular-examples index e6c7d53f..7c42f7a0 160000 --- a/famous-angular-examples +++ b/famous-angular-examples @@ -1 +1 @@ -Subproject commit e6c7d53fc1626faf153d2d59cef3e508e4657d40 +Subproject commit 7c42f7a0f4d09dcd57745fb78697534b1b30cab6 diff --git a/src/scripts/directives/fa-surface.js b/src/scripts/directives/fa-surface.js index 29a8751f..21ca2b33 100644 --- a/src/scripts/directives/fa-surface.js +++ b/src/scripts/directives/fa-surface.js @@ -204,12 +204,16 @@ angular.module('famous.angular') if (attrs.class) { isolate.renderNode.setClasses(attrs['class'].split(' ')); } + // Throw an exception if anyother famous scene graph element is added on fa-surface. + $famousDecorator.sequenceWith(scope, function(data) { + throw new Error('Fa-surface cannot contain a scene graph element unless enclosed in an fa-app'); + }); }, post: function(scope, element, attrs){ var isolate = $famousDecorator.ensureIsolate(scope); var updateContent = function() { - isolate.renderNode.setContent(element[0].querySelector('div.fa-surface')); + isolate.renderNode.setContent(element[0].querySelector('div.fa-surface')); }; updateContent(); @@ -227,6 +231,8 @@ angular.module('famous.angular') $famousDecorator.registerChild(scope, element, isolate, function() { // TODO: hook into RenderController and hide this render node }); + + } }; } diff --git a/src/scripts/famous b/src/scripts/famous new file mode 160000 index 00000000..81850e9a --- /dev/null +++ b/src/scripts/famous @@ -0,0 +1 @@ +Subproject commit 81850e9a56b810e465eb4fb0b4c959b4912402e7