aboutsummaryrefslogtreecommitdiff
path: root/node_modules/montage/ui
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/montage/ui')
-rwxr-xr-xnode_modules/montage/ui/component.js48
-rw-r--r--node_modules/montage/ui/composer/composer.js14
-rw-r--r--node_modules/montage/ui/composer/swipe-composer.js24
-rwxr-xr-xnode_modules/montage/ui/slot.reel/slot.js5
4 files changed, 70 insertions, 21 deletions
diff --git a/node_modules/montage/ui/component.js b/node_modules/montage/ui/component.js
index 90612f83..e41a1958 100755
--- a/node_modules/montage/ui/component.js
+++ b/node_modules/montage/ui/component.js
@@ -7,7 +7,6 @@
7 @module montage/ui/component 7 @module montage/ui/component
8 @requires montage/core/core 8 @requires montage/core/core
9 @requires montage/core/event/mutable-event 9 @requires montage/core/event/mutable-event
10 @requires montage/core/bitfield
11 @requires montage/ui/reel 10 @requires montage/ui/reel
12 @requires montage/core/gate 11 @requires montage/core/gate
13 @requires montage/core/logger | component 12 @requires montage/core/logger | component
@@ -16,7 +15,6 @@
16*/ 15*/
17var Montage = require("montage").Montage, 16var Montage = require("montage").Montage,
18 MutableEvent = require("core/event/mutable-event").MutableEvent, 17 MutableEvent = require("core/event/mutable-event").MutableEvent,
19 BitField = require("core/bitfield").BitField,
20 Template = require("ui/template").Template, 18 Template = require("ui/template").Template,
21 Gate = require("core/gate").Gate, 19 Gate = require("core/gate").Gate,
22 logger = require("core/logger").logger("component"), 20 logger = require("core/logger").logger("component"),
@@ -525,7 +523,11 @@ var Component = exports.Component = Montage.create(Montage,/** @lends module:mon
525 523
526 content: { 524 content: {
527 get: function() { 525 get: function() {
528 return Array.prototype.slice.call(this._element.childNodes, 0); 526 if (this._element) {
527 return Array.prototype.slice.call(this._element.childNodes, 0);
528 } else {
529 return null;
530 }
529 }, 531 },
530 set: function(value) { 532 set: function(value) {
531 var components = [], 533 var components = [],
@@ -891,11 +893,11 @@ var Component = exports.Component = Montage.create(Montage,/** @lends module:mon
891 Template.templateWithModuleId(info.require, templateModuleId, onTemplateLoad); 893 Template.templateWithModuleId(info.require, templateModuleId, onTemplateLoad);
892 }}, 894 }},
893 /** 895 /**
894 Callback for the <code>_canDrawBitField</code>.<br> 896 Callback for the <code>_canDrawGate</code>.<br>
895 Propagates to the parent and adds the component to the draw list. 897 Propagates to the parent and adds the component to the draw list.
896 @function 898 @function
897 @param {Property} gate 899 @param {Property} gate
898 @see _canDrawBitField 900 @see _canDrawGate
899 */ 901 */
900 gateDidBecomeTrue: { 902 gateDidBecomeTrue: {
901 value: function(gate) { 903 value: function(gate) {
@@ -1047,6 +1049,27 @@ var Component = exports.Component = Montage.create(Montage,/** @lends module:mon
1047 enumerable: false, 1049 enumerable: false,
1048 value: null 1050 value: null
1049 }, 1051 },
1052
1053 /**
1054 * Called to add event listeners on demand
1055 * @type function
1056 * @private
1057 */
1058 _prepareForActivationEvents: {
1059 value: function() {
1060 var i = this.composerList.length, composer;
1061 for (i = 0; i < this.composerList.length; i++) {
1062 composer = this.composerList[i];
1063 if (composer.lazyLoad) {
1064 composer._load();
1065 }
1066 }
1067 if (typeof this.prepareForActivationEvents === "function") {
1068 this.prepareForActivationEvents();
1069 }
1070 }
1071 },
1072
1050/** 1073/**
1051 Description TODO 1074 Description TODO
1052 @private 1075 @private
@@ -1297,7 +1320,11 @@ var Component = exports.Component = Montage.create(Montage,/** @lends module:mon
1297 this.composerList.push(composer); 1320 this.composerList.push(composer);
1298 1321
1299 if (!this._firstDraw) { // prepareForDraw has already happened so do the loading here 1322 if (!this._firstDraw) { // prepareForDraw has already happened so do the loading here
1300 composer._load(); 1323 if (!composer.lazyLoad) {
1324 composer._load();
1325 } else if (this._preparedForActivationEvents) { // even though it's lazyLoad prepareForActivationEvents has already happened
1326 composer._load();
1327 }
1301 } 1328 }
1302 } 1329 }
1303 }, 1330 },
@@ -1671,7 +1698,7 @@ var rootComponent = Montage.create(Component, /** @lends module:montage/ui/compo
1671 */ 1698 */
1672 addToDrawCycle: { 1699 addToDrawCycle: {
1673 value: function(component) { 1700 value: function(component) {
1674 var needsDrawListIndex = this._readyToDrawListIndex, length; 1701 var needsDrawListIndex = this._readyToDrawListIndex, length, composer;
1675 1702
1676 if (needsDrawListIndex.hasOwnProperty(component.uuid)) { 1703 if (needsDrawListIndex.hasOwnProperty(component.uuid)) {
1677 // Requesting a draw of a component that has already been drawn in the current cycle 1704 // Requesting a draw of a component that has already been drawn in the current cycle
@@ -1694,10 +1721,13 @@ var rootComponent = Montage.create(Component, /** @lends module:montage/ui/compo
1694 component.prepareForDraw(); 1721 component.prepareForDraw();
1695 } 1722 }
1696 1723
1697 // Load any composers that have been added 1724 // Load any non lazyLoad composers that have been added
1698 length = component.composerList.length; 1725 length = component.composerList.length;
1699 for (i = 0; i < length; i++) { 1726 for (i = 0; i < length; i++) {
1700 component.composerList[i]._load(); 1727 composer = component.composerList[i];
1728 if (!composer.lazyLoad) {
1729 composer._load();
1730 }
1701 } 1731 }
1702 1732
1703 // Will we expose a different property, firstDraw, for components to check 1733 // Will we expose a different property, firstDraw, for components to check
diff --git a/node_modules/montage/ui/composer/composer.js b/node_modules/montage/ui/composer/composer.js
index 2f91bb22..eee7be67 100644
--- a/node_modules/montage/ui/composer/composer.js
+++ b/node_modules/montage/ui/composer/composer.js
@@ -40,6 +40,20 @@ exports.Composer = Montage.create(Montage, /** @lends module:montage/ui/composer
40 } 40 }
41 }, 41 },
42 42
43
44 /**
45 * This property controls when a composer's load method is called. If `false`
46 * the composer's load method is called immediately as part of the next draw
47 * cycle after addComposer has been called on its associated component. If
48 * `true` loading of the composer is delayed until its associated component
49 * has prepareForActivationEvents called.
50 * @property
51 * @default false
52 */
53 lazyLoad: {
54 value: false
55 },
56
43 _needsFrame: { 57 _needsFrame: {
44 value: false 58 value: false
45 }, 59 },
diff --git a/node_modules/montage/ui/composer/swipe-composer.js b/node_modules/montage/ui/composer/swipe-composer.js
index 4eb9ee3b..2d9fe266 100644
--- a/node_modules/montage/ui/composer/swipe-composer.js
+++ b/node_modules/montage/ui/composer/swipe-composer.js
@@ -208,17 +208,19 @@ exports.SwipeComposer = Montage.create(Composer, /** @lends module:montage/ui/co
208 } 208 }
209 } 209 }
210 210
211 swipeEvent = document.createEvent("CustomEvent"); 211 if (dX != 0 || dY != 0) {
212 swipeEvent.initCustomEvent("swipemove", true, false, null); 212 swipeEvent = document.createEvent("CustomEvent");
213 swipeEvent.direction = direction; 213 swipeEvent.initCustomEvent("swipemove", true, false, null);
214 swipeEvent.angle = this._startSwipeAngle; 214 swipeEvent.direction = direction;
215 swipeEvent.velocity = this._findVelocity((event.timeStamp - this._startTimestamp)); 215 swipeEvent.angle = this._startSwipeAngle;
216 swipeEvent.startX = this._startX; 216 swipeEvent.velocity = this._findVelocity((event.timeStamp - this._startTimestamp));
217 swipeEvent.startY = this._startY; 217 swipeEvent.startX = this._startX;
218 swipeEvent.dX = this._deltaX; 218 swipeEvent.startY = this._startY;
219 swipeEvent.dY = this._deltaY; 219 swipeEvent.dX = this._deltaX;
220 220 swipeEvent.dY = this._deltaY;
221 this.dispatchEvent(swipeEvent); 221
222 this.dispatchEvent(swipeEvent);
223 }
222 } 224 }
223 }, 225 },
224 226
diff --git a/node_modules/montage/ui/slot.reel/slot.js b/node_modules/montage/ui/slot.reel/slot.js
index 45c0ac1d..818cc68d 100755
--- a/node_modules/montage/ui/slot.reel/slot.js
+++ b/node_modules/montage/ui/slot.reel/slot.js
@@ -247,7 +247,10 @@ var Slot = exports.Slot = Montage.create(Component, /** @lends module:"montage/u
247 247
248 // Introduce to the componentTree if content appended was a component 248 // Introduce to the componentTree if content appended was a component
249 if (this._contentToAppend && (typeof this._contentToAppend.element !== "undefined")) { 249 if (this._contentToAppend && (typeof this._contentToAppend.element !== "undefined")) {
250 this.childComponents = [this._contentToAppend]; 250 this._contentToAppend.attachToParentComponent();
251 // HACK: gets around the issue of the component never being part of the draw loop again because of the idempotence of the needsDraw = true.
252 this._contentToAppend.needsDraw = false;
253 this._contentToAppend.needsDraw = true;
251 } 254 }
252 } 255 }
253 256