Skip to content
Snippets Groups Projects
Unverified Commit 5d0d53d9 authored by Rodrigo Nascimento's avatar Rodrigo Nascimento
Browse files

Move NRR package to inside the project and convert from CoffeeScript

parent f2caedd1
No related branches found
No related tags found
No related merge requests found
...@@ -149,12 +149,12 @@ rocketchat:version ...@@ -149,12 +149,12 @@ rocketchat:version
rocketchat:videobridge rocketchat:videobridge
rocketchat:webrtc rocketchat:webrtc
rocketchat:wordpress rocketchat:wordpress
rocketchat:nrr
konecty:change-case konecty:change-case
konecty:delayed-task konecty:delayed-task
konecty:mongo-counter konecty:mongo-counter
konecty:multiple-instances-status konecty:multiple-instances-status
konecty:nrr
konecty:user-presence konecty:user-presence
deepwell:bootstrap-datepicker2 deepwell:bootstrap-datepicker2
......
...@@ -69,7 +69,6 @@ konecty:change-case@2.3.0 ...@@ -69,7 +69,6 @@ konecty:change-case@2.3.0
konecty:delayed-task@1.0.0 konecty:delayed-task@1.0.0
konecty:mongo-counter@0.0.5_3 konecty:mongo-counter@0.0.5_3
konecty:multiple-instances-status@1.1.0 konecty:multiple-instances-status@1.1.0
konecty:nrr@2.0.2
konecty:user-presence@2.0.1 konecty:user-presence@2.0.1
launch-screen@1.1.1 launch-screen@1.1.1
less@2.7.12 less@2.7.12
...@@ -191,6 +190,7 @@ rocketchat:message-snippet@0.0.1 ...@@ -191,6 +190,7 @@ rocketchat:message-snippet@0.0.1
rocketchat:message-star@0.0.1 rocketchat:message-star@0.0.1
rocketchat:migrations@0.0.1 rocketchat:migrations@0.0.1
rocketchat:monitoring@2.30.2_3 rocketchat:monitoring@2.30.2_3
rocketchat:nrr@1.0.0
rocketchat:oauth2-server@2.0.0 rocketchat:oauth2-server@2.0.0
rocketchat:oauth2-server-config@1.0.0 rocketchat:oauth2-server-config@1.0.0
rocketchat:oembed@0.0.1 rocketchat:oembed@0.0.1
......
# NRR - Non-Reactive Render
This package adds a helper to render templates with less reactivity and computations.
This is ideal to improve the render of a high amount of data.
# Use
```handlebars
{{#nrr nrrargs 'templateName' dataContext}}{{/nrr}}
```
or
```handlebars
{{#nrr nrrargs 'templateName' data1=data1 data2=data2}}{{/nrr}}
```
# Example
```handlebars
{{#nrr nrrargs 'message' message}}{{/nrr}}
```
/* eslint new-cap:0 */
import { Template } from 'meteor/templating';
import { Blaze } from 'meteor/blaze';
import { HTML } from 'meteor/htmljs';
import { Spacebars } from 'meteor/spacebars';
import { Tracker } from 'meteor/tracker';
Blaze.toHTMLWithDataNonReactive = function(content, data) {
const makeCursorReactive = function(obj) {
if (obj instanceof Meteor.Collection.Cursor) {
return obj._depend({
added: true,
removed: true,
changed: true
});
}
};
makeCursorReactive(data);
if (data instanceof Spacebars.kw && Object.keys(data.hash).length > 0) {
Object.keys(data.hash).forEach(key => {
makeCursorReactive(data.hash[key]);
});
data = data.hash;
}
return Tracker.nonreactive(() => Blaze.toHTMLWithData(content, data));
};
Blaze.registerHelper('nrrargs', function() {
return {
_arguments: arguments
};
});
Blaze.renderNonReactive = function(templateName, data) {
const { _arguments } = this.parentView.dataVar.get();
[templateName, data] = _arguments;
return Tracker.nonreactive(() => {
const view = new Blaze.View('nrr', () => {
return HTML.Raw(Blaze.toHTMLWithDataNonReactive(Template[templateName], data));
});
view.onViewReady(() => {
const { onViewReady } = Template[templateName];
return onViewReady && onViewReady.call(view, data);
});
view._onViewRendered(() => {
const { onViewRendered } = Template[templateName];
return onViewRendered && onViewRendered.call(view, data);
});
return view;
});
};
Blaze.registerHelper('nrr', Blaze.Template('nrr', Blaze.renderNonReactive));
Package.describe({
name: 'rocketchat:nrr',
summary: 'Non-Reactive render',
version: '1.0.0',
git: ''
});
Package.onUse(function(api) {
api.use('ecmascript');
api.mainModule('nrr.js');
});
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment