• Stars
    star
    294
  • Rank 137,098 (Top 3 %)
  • Language
    JavaScript
  • License
    MIT License
  • Created over 10 years ago
  • Updated about 7 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Support for not rendering offscreen views in an Ember app for performance

ember-cloaking

Support for not rendering offscreen views in an Ember app for performance and lowered memory usage.

Extracted from Discourse's infinite scrolling.

Import Version Notes

The latest version has been upgraded to work with Ember 1.11.3. If you need support for older versions of Ember, use the '1.8.1' branch.

Usage

  1. Include cloaked.js and cloaked-collection.js in your Ember project's views directory.
  2. To display a collection of cloaked items, use {{cloaked-collection}} in your handlebars templates like this:
  {{cloaked-collection itemViewClass="post" content=model.posts}}

itemViewClass is the name of the view to render in the collection. post would render PostView.

content is the collection of items to display.

Optional parameters

itemController

Default: undefined (not controller will be used)

Name of the controller for items in collection.

defaultHeight

Default: 100

Height of the cloaked views by default. You should pick a value that is in the ballpark of your average view height.

loadingHTML

Default: "Loading..."

HTML you want to render while the cloaking is loading.

preservesContext

Default: false

Set to "true" if you want to use content.xyz in your views instead of the context.

idProperty

Default: undefined

Name of item's property to generate cloaked view DOM id. If set id will be generated using itemViewClass like so: {{itemViewClass}}-cloak-{{item.idProperty}}. Check out demo

offsetFixedTop

Default: undefined

jQuery selector that will be used to offset the top of what is considered onscreen. Discourse uses this for example because we have a position: fixed; top: 0 header that is on top of content.

offsetFixedBottom

Default: undefined

jQuery selector that will be used to offset the bottom of what is considered onscreen. Discourse uses this for example because we have a position: fixed; bottom: 0 composer that is on top of content.

wrapperTop

Default: undefined

Current scroll position like native element.scrollTop (see iScroll support).

wrapperHeight

Default: undefined

Height of the "window" in which content is scrolling (see iScroll support).

uncloakDefault

Default: false

Whether or not to uncloak views by default when created. This is useful for sites like Discourse that perform infinite scrolling upwards, and depend on inserting elements above the top fold.

scrollDebounce

Default: 10

The amount of debouncing in ms that will be considered for cloaking. You probably don't have to change this value.

iScroll or other scrollers

Demo

  {{cloaked-collection itemViewClass="item" content=model wrapperTopBinding="view.scrollTop" wrapperHeightBinding="view.height"}}

wrapperTop is the current scroll position like native element.scrollTop

wrapperHeight is the height of the "window" in which content scrolling

Callbacks

You can add the following methods to the controller that contains the {{cloaked-collection}} to be notified when elements are onscreen:

bottomVisibleChanged: Called when the bottomost visible element changes topVisibleChanged: Called when the topmost visible element changes

License

MIT

More Repositories

1

tis-100

An emulator for the TIS-100 CPU
C
411
star
2

ember-renderspeed

A script for instrumenting rendering speed in an Ember.Js Application
JavaScript
172
star
3

agi-upscale

agi pic viewer
Ruby
152
star
4

ember-performance

A suite of tests for EmberJS to help with performance
JavaScript
140
star
5

emberreddit-old

A demonstration of Ember.js without using Ember data
JavaScript
81
star
6

kawaii

Kawaii is like a web frontend to script/console for your Rails apps, with nicely formatted output
JavaScript
74
star
7

rubycpu

An assembler compiler and bytecode virtual machine implemented in ruby for a made up CPU.
Ruby
64
star
8

emberreddit

A demonstration of how to use Ember without Ember Data.
JavaScript
60
star
9

discourse-droplet

A simple wizard to deploy Discourse on Digital Ocean using Docker
Ruby
52
star
10

emberpress

A clone of the LetterPress word game in EmberJS
JavaScript
45
star
11

ember-tv

Sample project for using ember to make a TV friendly interface
JavaScript
25
star
12

blog

Source code for my blog at http://eviltrout.com
HTML
23
star
13

nightmares

A companion repo for a YouTube video about remaking my childhood game
C
16
star
14

particles

A simple script that shows how you could create a particle system in Gosu using Ruby.
Ruby
10
star
15

fake5150

A port of sarien to a Godot texture
C
10
star
16

discourse-no-nazis

Block users from Discourse who participated in a neo-nazi forum
Ruby
8
star
17

overload

Information Overload
ActionScript
7
star
18

brigade

A subreddit crawler to determine downvote brigading
Ruby
7
star
19

embed-topics

Examples for Embedding Discourse Topics
Ruby
6
star
20

bugs

A simple bug tracking ember application for use in a debugger tutorial
JavaScript
5
star
21

adventofcode

Solutions to Advent of Code
Ruby
5
star
22

login

An example ember application to demonstrate Pretender
JavaScript
5
star
23

trout_emoji

Adds an evil trout emoji to a discourse install
Ruby
3
star
24

nntp_indexer

A celluloid based nntp indexer written in ruby
Ruby
3
star
25

benchmark-ember-rendering

A benchmark of Ember.js's rendering
JavaScript
3
star
26

beards-of-magic

Beards of Magic TOJAM 7
JavaScript
3
star
27

discourse-exolve-crossword

A Discourse Theme Component to show crossword puzzles
JavaScript
2
star
28

purple-tentacle

A sample plugin to show how to use handlebars templates on a custom admin route
JavaScript
2
star
29

discourse-gradle-issue

Links a topic to a gradle issue
JavaScript
1
star
30

ast

Talk about JS Performance and ASTs
HTML
1
star
31

test

test
1
star
32

discourse-plugin-test

A test plugin for Discourse.
1
star
33

benchmark-metamorph-css

A benchmark of the effects of metamorphs on the CSS performance
JavaScript
1
star
34

pixel

A pixel editor in ember.js
JavaScript
1
star
35

weather-component

Little test project for Integration tests for Ember components
JavaScript
1
star