mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-27 09:12:41 +01:00
0569218201
Summary: If `jsxmin` is not available, use a pure PHP implementation instead (JsShrink). Test Plan: - Ran `arc lint --lintall` on all JS and fixed every relevant warning. - Forced minification on and browsed around the site using JS behaviors. Didn't hit anything problematic. Reviewers: vrana, btrahan Reviewed By: vrana CC: aran, Korvin Differential Revision: https://secure.phabricator.com/D5670
71 lines
2 KiB
JavaScript
71 lines
2 KiB
JavaScript
/**
|
|
* Experimental interpreter for nice views.
|
|
* This is CoffeeScript:
|
|
*
|
|
* d = declare
|
|
* selectable: false
|
|
* boxOrientation: Orientation.HORIZONTAL
|
|
* additionalClasses: ['some-css-class']
|
|
* MultiAvatar ref: 'avatars'
|
|
* div
|
|
* flex: 1
|
|
* div(
|
|
* span className: 'some-css-class', ref: 'actorTargetLine'
|
|
* span className: 'message-css', ref: 'message'
|
|
* )
|
|
*
|
|
* div
|
|
* boxOrientation: Orientation.HORIZONTAL
|
|
* className: 'attachment-css-class'
|
|
* div
|
|
* className: 'attachment-image-css-class'
|
|
* ref: 'attachmentImageContainer'
|
|
* boxOrientation: Orientation.HORIZONTAL
|
|
* div className: 'inline attachment-text', ref: 'attachmentText',
|
|
* div
|
|
* className: 'attachment-title'
|
|
* ref: 'attachmentTitle'
|
|
* flex: 1
|
|
* div
|
|
* className: 'attachment-subtitle'
|
|
* ref: 'attachmentSubtitle'
|
|
* flex: 1
|
|
* div className: 'clear'
|
|
* MiniUfi ref: 'miniUfi'
|
|
* FeedbackFlyout ref: 'feedbackFlyout'
|
|
*
|
|
* It renders to nested function calls of the form:
|
|
* view({....options...}, child1, child2, ...);
|
|
*
|
|
* This view interpreter is meant to make it work.
|
|
*
|
|
* @provides javelin-view-interpreter
|
|
* @requires javelin-view
|
|
* javelin-install
|
|
* javelin-dom
|
|
*/
|
|
|
|
JX.install('ViewInterpreter', {
|
|
members : {
|
|
register : function(name, view_cls) {
|
|
this[name] = function(/* [properties, ]children... */) {
|
|
var properties = arguments[0] || {};
|
|
var children = Array.prototype.slice.call(arguments, 1);
|
|
|
|
// Passing properties is optional
|
|
if (properties instanceof JX.View ||
|
|
properties instanceof JX.HTML ||
|
|
properties.nodeType ||
|
|
typeof properties === "string") {
|
|
children.unshift(properties);
|
|
properties = {};
|
|
}
|
|
|
|
var result = new view_cls(properties).setName(name);
|
|
result.addChildren(children);
|
|
|
|
return result;
|
|
};
|
|
}
|
|
}
|
|
});
|