Tao.helpers =
reflow: (el) -> $(el)[0].offsetHeight findComponent: (selectors, callback, scope = document) -> selectors = [selectors] unless _.isArray selectors components = _.flatten selectors.map (s) => $(scope).find(s).get() if components.length > 0 && _.isFunction callback Tao.helpers.componentReady components, -> callback(components...) if components.length > 1 components else if components.length == 1 components[0] else null componentReady: (components, callback) -> components = [components] unless _.isArray components promises = components.map (el) -> deferred = $.Deferred() if el.connected setTimeout -> deferred.resolve() else el.on 'tao:connected.taoReady', (e) -> return unless e.target == el el.off 'tao:connected.taoReady' deferred.resolve() deferred.promise() $.when(promises...).then -> callback()