ember-material-icons
Version:
Google Material icons for your ember-cli app
609 lines • 52.2 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const WireFormat = require("@glimmer/wire-format");
const value_1 = require("../compiled/expressions/value");
const has_block_1 = require("../compiled/expressions/has-block");
const scanner_1 = require("../scanner");
const util_1 = require("@glimmer/util");
const lookups_1 = require("../compiled/expressions/lookups");
const helper_1 = require("../compiled/expressions/helper");
const concat_1 = require("../compiled/expressions/concat");
const args_1 = require("../compiled/expressions/args");
const has_block_2 = require("../compiled/expressions/has-block");
const function_1 = require("../compiled/expressions/function");
const { defaultBlock, params, hash } = scanner_1.BaselineSyntax.NestedBlock;
function debugCallback(context, get) {
console.info('Use `context`, and `get(<path>)` to debug this template.');
/* tslint:disable */
debugger;
/* tslint:enable */
return { context, get };
}
function getter(vm, builder) {
return (path) => {
let parts = path.split('.');
if (parts[0] === 'this') {
parts[0] = null;
}
return compileRef(parts, builder).evaluate(vm);
};
}
let callback = debugCallback;
// For testing purposes
function setDebuggerCallback(cb) {
callback = cb;
}
exports.setDebuggerCallback = setDebuggerCallback;
function resetDebuggerCallback() {
callback = debugCallback;
}
exports.resetDebuggerCallback = resetDebuggerCallback;
class Compilers {
constructor() {
this.names = util_1.dict();
this.funcs = [];
}
add(name, func) {
this.funcs.push(func);
this.names[name] = this.funcs.length - 1;
}
compile(sexp, builder) {
let name = sexp[0];
let index = this.names[name];
let func = this.funcs[index];
util_1.assert(!!func, `expected an implementation for ${sexp[0]}`);
return func(sexp, builder);
}
}
exports.Compilers = Compilers;
let { Ops } = WireFormat;
exports.STATEMENTS = new Compilers();
exports.STATEMENTS.add(Ops.Text, (sexp, builder) => {
builder.text(sexp[1]);
});
exports.STATEMENTS.add(Ops.Comment, (sexp, builder) => {
builder.comment(sexp[1]);
});
exports.STATEMENTS.add(Ops.CloseElement, (_sexp, builder) => {
util_1.LOGGER.trace('close-element statement');
builder.closeElement();
});
exports.STATEMENTS.add(Ops.FlushElement, (_sexp, builder) => {
builder.flushElement();
});
exports.STATEMENTS.add(Ops.Modifier, (sexp, builder) => {
let [, path, params, hash] = sexp;
let args = compileArgs(params, hash, builder);
if (builder.env.hasModifier(path[0], builder.symbolTable)) {
builder.modifier(path[0], args);
}
else {
throw new Error(`Compile Error ${path.join('.')} is not a modifier: Helpers may not be used in the element form.`);
}
});
exports.STATEMENTS.add(Ops.StaticAttr, (sexp, builder) => {
let [, name, value, namespace] = sexp;
builder.staticAttr(name, namespace, value);
});
exports.STATEMENTS.add(Ops.AnyDynamicAttr, (sexp, builder) => {
let [, name, value, namespace, trusting] = sexp;
builder.putValue(value);
if (namespace) {
builder.dynamicAttrNS(name, namespace, trusting);
}
else {
builder.dynamicAttr(name, trusting);
}
});
exports.STATEMENTS.add(Ops.OpenElement, (sexp, builder) => {
util_1.LOGGER.trace('open-element statement');
builder.openPrimitiveElement(sexp[1]);
});
exports.STATEMENTS.add(Ops.OptimizedAppend, (sexp, builder) => {
let [, value, trustingMorph] = sexp;
let { inlines } = builder.env.macros();
let returned = inlines.compile(sexp, builder) || value;
if (returned === true)
return;
builder.putValue(returned[1]);
if (trustingMorph) {
builder.trustingAppend();
}
else {
builder.cautiousAppend();
}
});
exports.STATEMENTS.add(Ops.UnoptimizedAppend, (sexp, builder) => {
let [, value, trustingMorph] = sexp;
let { inlines } = builder.env.macros();
let returned = inlines.compile(sexp, builder) || value;
if (returned === true)
return;
if (trustingMorph) {
builder.guardedTrustingAppend(returned[1]);
}
else {
builder.guardedCautiousAppend(returned[1]);
}
});
exports.STATEMENTS.add(Ops.NestedBlock, (sexp, builder) => {
let { blocks } = builder.env.macros();
blocks.compile(sexp, builder);
});
exports.STATEMENTS.add(Ops.ScannedBlock, (sexp, builder) => {
let [, path, params, hash, template, inverse] = sexp;
let templateBlock = template && template.scan();
let inverseBlock = inverse && inverse.scan();
let { blocks } = builder.env.macros();
blocks.compile([Ops.NestedBlock, path, params, hash, templateBlock, inverseBlock], builder);
});
// this fixes an issue with Ember versions using glimmer-vm@0.22 when attempting
// to use nested web components. This is obviously not correct for angle bracket components
// but since no consumers are currently using them with glimmer@0.22.x we are hard coding
// support to just use the fallback case.
exports.STATEMENTS.add(Ops.Component, (sexp, builder) => {
let [, tag, component] = sexp;
let { attrs, statements } = component;
builder.openPrimitiveElement(tag);
for (let i = 0; i < attrs.length; i++) {
exports.STATEMENTS.compile(attrs[i], builder);
}
builder.flushElement();
for (let i = 0; i < statements.length; i++) {
exports.STATEMENTS.compile(statements[i], builder);
}
builder.closeElement();
});
exports.STATEMENTS.add(Ops.ScannedComponent, (sexp, builder) => {
let [, tag, attrs, rawArgs, rawBlock] = sexp;
let block = rawBlock && rawBlock.scan();
let args = compileBlockArgs(null, rawArgs, { default: block, inverse: null }, builder);
let definition = builder.env.getComponentDefinition(tag, builder.symbolTable);
builder.putComponentDefinition(definition);
builder.openComponent(args, attrs.scan());
builder.closeComponent();
});
exports.STATEMENTS.add(Ops.StaticPartial, (sexp, builder) => {
let [, name] = sexp;
if (!builder.env.hasPartial(name, builder.symbolTable)) {
throw new Error(`Compile Error: Could not find a partial named "${name}"`);
}
let definition = builder.env.lookupPartial(name, builder.symbolTable);
builder.putPartialDefinition(definition);
builder.evaluatePartial();
});
exports.STATEMENTS.add(Ops.DynamicPartial, (sexp, builder) => {
let [, name] = sexp;
builder.startLabels();
builder.putValue(name);
builder.test('simple');
builder.enter('BEGIN', 'END');
builder.label('BEGIN');
builder.jumpUnless('END');
builder.putDynamicPartialDefinition();
builder.evaluatePartial();
builder.label('END');
builder.exit();
builder.stopLabels();
});
exports.STATEMENTS.add(Ops.Yield, function (sexp, builder) {
let [, to, params] = sexp;
let args = compileArgs(params, null, builder);
builder.yield(args, to);
});
exports.STATEMENTS.add(Ops.Debugger, (sexp, builder) => {
builder.putValue([Ops.Function, (vm) => {
let context = vm.getSelf().value();
let get = (path) => {
return getter(vm, builder)(path).value();
};
callback(context, get);
}]);
return sexp;
});
let EXPRESSIONS = new Compilers();
function expr(expression, builder) {
if (Array.isArray(expression)) {
return EXPRESSIONS.compile(expression, builder);
}
else {
return new value_1.default(expression);
}
}
exports.expr = expr;
EXPRESSIONS.add(Ops.Unknown, (sexp, builder) => {
let path = sexp[1];
let name = path[0];
if (builder.env.hasHelper(name, builder.symbolTable)) {
return new helper_1.default(name, builder.env.lookupHelper(name, builder.symbolTable), args_1.CompiledArgs.empty(), builder.symbolTable);
}
else {
return compileRef(path, builder);
}
});
EXPRESSIONS.add(Ops.Concat, ((sexp, builder) => {
let params = sexp[1].map(p => expr(p, builder));
return new concat_1.default(params);
}));
EXPRESSIONS.add(Ops.Function, (sexp, builder) => {
return new function_1.CompiledFunctionExpression(sexp[1], builder.symbolTable);
});
EXPRESSIONS.add(Ops.Helper, (sexp, builder) => {
let { env, symbolTable } = builder;
let [, [name], params, hash] = sexp;
if (env.hasHelper(name, symbolTable)) {
let args = compileArgs(params, hash, builder);
return new helper_1.default(name, env.lookupHelper(name, symbolTable), args, symbolTable);
}
else {
throw new Error(`Compile Error: ${name} is not a helper`);
}
});
EXPRESSIONS.add(Ops.Get, (sexp, builder) => {
return compileRef(sexp[1], builder);
});
EXPRESSIONS.add(Ops.Undefined, (_sexp, _builder) => {
return new value_1.default(undefined);
});
EXPRESSIONS.add(Ops.Arg, (sexp, builder) => {
let [, parts] = sexp;
let head = parts[0];
let named, partial;
if (named = builder.symbolTable.getSymbol('named', head)) {
let path = parts.slice(1);
let inner = new lookups_1.CompiledSymbol(named, head);
return lookups_1.default.create(inner, path);
}
else if (partial = builder.symbolTable.getPartialArgs()) {
let path = parts.slice(1);
let inner = new lookups_1.CompiledInPartialName(partial, head);
return lookups_1.default.create(inner, path);
}
else {
throw new Error(`[BUG] @${parts.join('.')} is not a valid lookup path.`);
}
});
EXPRESSIONS.add(Ops.HasBlock, (sexp, builder) => {
let blockName = sexp[1];
let yields, partial;
if (yields = builder.symbolTable.getSymbol('yields', blockName)) {
let inner = new has_block_2.CompiledGetBlockBySymbol(yields, blockName);
return new has_block_1.default(inner);
}
else if (partial = builder.symbolTable.getPartialArgs()) {
let inner = new has_block_2.CompiledInPartialGetBlock(partial, blockName);
return new has_block_1.default(inner);
}
else {
throw new Error('[BUG] ${blockName} is not a valid block name.');
}
});
EXPRESSIONS.add(Ops.HasBlockParams, (sexp, builder) => {
let blockName = sexp[1];
let yields, partial;
if (yields = builder.symbolTable.getSymbol('yields', blockName)) {
let inner = new has_block_2.CompiledGetBlockBySymbol(yields, blockName);
return new has_block_1.CompiledHasBlockParams(inner);
}
else if (partial = builder.symbolTable.getPartialArgs()) {
let inner = new has_block_2.CompiledInPartialGetBlock(partial, blockName);
return new has_block_1.CompiledHasBlockParams(inner);
}
else {
throw new Error('[BUG] ${blockName} is not a valid block name.');
}
});
function compileArgs(params, hash, builder) {
let compiledParams = compileParams(params, builder);
let compiledHash = compileHash(hash, builder);
return args_1.CompiledArgs.create(compiledParams, compiledHash, args_1.EMPTY_BLOCKS);
}
exports.compileArgs = compileArgs;
function compileBlockArgs(params, hash, blocks, builder) {
let compiledParams = compileParams(params, builder);
let compiledHash = compileHash(hash, builder);
return args_1.CompiledArgs.create(compiledParams, compiledHash, blocks);
}
exports.compileBlockArgs = compileBlockArgs;
function compileBaselineArgs(args, builder) {
let [params, hash, _default, inverse] = args;
return args_1.CompiledArgs.create(compileParams(params, builder), compileHash(hash, builder), { default: _default, inverse });
}
exports.compileBaselineArgs = compileBaselineArgs;
function compileParams(params, builder) {
if (!params || params.length === 0)
return args_1.COMPILED_EMPTY_POSITIONAL_ARGS;
let compiled = new Array(params.length);
for (let i = 0; i < params.length; i++) {
compiled[i] = expr(params[i], builder);
}
return args_1.CompiledPositionalArgs.create(compiled);
}
function compileHash(hash, builder) {
if (!hash)
return args_1.COMPILED_EMPTY_NAMED_ARGS;
let [keys, values] = hash;
if (keys.length === 0)
return args_1.COMPILED_EMPTY_NAMED_ARGS;
let compiled = new Array(values.length);
for (let i = 0; i < values.length; i++) {
compiled[i] = expr(values[i], builder);
}
return new args_1.CompiledNamedArgs(keys, compiled);
}
function compileRef(parts, builder) {
let head = parts[0];
let local;
if (head === null) {
let inner = new lookups_1.CompiledSelf();
let path = parts.slice(1);
return lookups_1.default.create(inner, path);
}
else if (local = builder.symbolTable.getSymbol('local', head)) {
let path = parts.slice(1);
let inner = new lookups_1.CompiledSymbol(local, head);
return lookups_1.default.create(inner, path);
}
else {
let inner = new lookups_1.CompiledSelf();
return lookups_1.default.create(inner, parts);
}
}
class Blocks {
constructor() {
this.names = util_1.dict();
this.funcs = [];
}
add(name, func) {
this.funcs.push(func);
this.names[name] = this.funcs.length - 1;
}
addMissing(func) {
this.missing = func;
}
compile(sexp, builder) {
// assert(sexp[1].length === 1, 'paths in blocks are not supported');
let name = sexp[1][0];
let index = this.names[name];
if (index === undefined) {
util_1.assert(!!this.missing, `${name} not found, and no catch-all block handler was registered`);
let func = this.missing;
let handled = func(sexp, builder);
util_1.assert(!!handled, `${name} not found, and the catch-all block handler didn't handle it`);
}
else {
let func = this.funcs[index];
func(sexp, builder);
}
}
}
exports.Blocks = Blocks;
exports.BLOCKS = new Blocks();
class Inlines {
constructor() {
this.names = util_1.dict();
this.funcs = [];
}
add(name, func) {
this.funcs.push(func);
this.names[name] = this.funcs.length - 1;
}
addMissing(func) {
this.missing = func;
}
compile(sexp, builder) {
let value = sexp[1];
// TODO: Fix this so that expression macros can return
// things like components, so that {{component foo}}
// is the same as {{(component foo)}}
if (!Array.isArray(value))
return ['expr', value];
let path;
let params;
let hash;
if (value[0] === Ops.Helper) {
path = value[1];
params = value[2];
hash = value[3];
}
else if (value[0] === Ops.Unknown) {
path = value[1];
params = hash = null;
}
else {
return ['expr', value];
}
if (path.length > 1 && !params && !hash) {
return ['expr', value];
}
let name = path[0];
let index = this.names[name];
if (index === undefined && this.missing) {
let func = this.missing;
let returned = func(path, params, hash, builder);
return returned === false ? ['expr', value] : returned;
}
else if (index !== undefined) {
let func = this.funcs[index];
let returned = func(path, params, hash, builder);
return returned === false ? ['expr', value] : returned;
}
else {
return ['expr', value];
}
}
}
exports.Inlines = Inlines;
exports.INLINES = new Inlines();
populateBuiltins(exports.BLOCKS, exports.INLINES);
function populateBuiltins(blocks = new Blocks(), inlines = new Inlines()) {
blocks.add('if', (sexp, builder) => {
// PutArgs
// Test(Environment)
// Enter(BEGIN, END)
// BEGIN: Noop
// JumpUnless(ELSE)
// Evaluate(default)
// Jump(END)
// ELSE: Noop
// Evalulate(inverse)
// END: Noop
// Exit
let [, , params, hash, _default, inverse] = sexp;
let args = compileArgs(params, hash, builder);
builder.putArgs(args);
builder.test('environment');
builder.labelled(null, b => {
if (_default && inverse) {
b.jumpUnless('ELSE');
b.evaluate(_default);
b.jump('END');
b.label('ELSE');
b.evaluate(inverse);
}
else if (_default) {
b.jumpUnless('END');
b.evaluate(_default);
}
else {
throw util_1.unreachable();
}
});
});
blocks.add('-in-element', (sexp, builder) => {
let block = defaultBlock(sexp);
let args = compileArgs(params(sexp), null, builder);
builder.putArgs(args);
builder.test('simple');
builder.labelled(null, b => {
b.jumpUnless('END');
b.pushRemoteElement();
b.evaluate(util_1.unwrap(block));
b.popRemoteElement();
});
});
blocks.add('-with-dynamic-vars', (sexp, builder) => {
let block = defaultBlock(sexp);
let args = compileArgs(params(sexp), hash(sexp), builder);
builder.unit(b => {
b.putArgs(args);
b.pushDynamicScope();
b.bindDynamicScope(args.named.keys);
b.evaluate(util_1.unwrap(block));
b.popDynamicScope();
});
});
blocks.add('unless', (sexp, builder) => {
// PutArgs
// Test(Environment)
// Enter(BEGIN, END)
// BEGIN: Noop
// JumpUnless(ELSE)
// Evaluate(default)
// Jump(END)
// ELSE: Noop
// Evalulate(inverse)
// END: Noop
// Exit
let [, , params, hash, _default, inverse] = sexp;
let args = compileArgs(params, hash, builder);
builder.putArgs(args);
builder.test('environment');
builder.labelled(null, b => {
if (_default && inverse) {
b.jumpIf('ELSE');
b.evaluate(_default);
b.jump('END');
b.label('ELSE');
b.evaluate(inverse);
}
else if (_default) {
b.jumpIf('END');
b.evaluate(_default);
}
else {
throw util_1.unreachable();
}
});
});
blocks.add('with', (sexp, builder) => {
// PutArgs
// Test(Environment)
// Enter(BEGIN, END)
// BEGIN: Noop
// JumpUnless(ELSE)
// Evaluate(default)
// Jump(END)
// ELSE: Noop
// Evalulate(inverse)
// END: Noop
// Exit
let [, , params, hash, _default, inverse] = sexp;
let args = compileArgs(params, hash, builder);
builder.putArgs(args);
builder.test('environment');
builder.labelled(null, b => {
if (_default && inverse) {
b.jumpUnless('ELSE');
b.evaluate(_default);
b.jump('END');
b.label('ELSE');
b.evaluate(inverse);
}
else if (_default) {
b.jumpUnless('END');
b.evaluate(_default);
}
else {
throw util_1.unreachable();
}
});
});
blocks.add('each', (sexp, builder) => {
// Enter(BEGIN, END)
// BEGIN: Noop
// PutArgs
// PutIterable
// JumpUnless(ELSE)
// EnterList(BEGIN2, END2)
// ITER: Noop
// NextIter(BREAK)
// EnterWithKey(BEGIN2, END2)
// BEGIN2: Noop
// PushChildScope
// Evaluate(default)
// PopScope
// END2: Noop
// Exit
// Jump(ITER)
// BREAK: Noop
// ExitList
// Jump(END)
// ELSE: Noop
// Evalulate(inverse)
// END: Noop
// Exit
let [, , params, hash, _default, inverse] = sexp;
let args = compileArgs(params, hash, builder);
builder.labelled(args, b => {
b.putIterator();
if (inverse) {
b.jumpUnless('ELSE');
}
else {
b.jumpUnless('END');
}
b.iter(b => {
b.evaluate(util_1.unwrap(_default));
});
if (inverse) {
b.jump('END');
b.label('ELSE');
b.evaluate(inverse);
}
});
});
return { blocks, inlines };
}
exports.populateBuiltins = populateBuiltins;
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnVuY3Rpb25zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vbGliL3N5bnRheC9mdW5jdGlvbnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxtREFBbUQ7QUFHbkQseURBQTBEO0FBQzFELGlFQUE2RjtBQUM3Rix3Q0FBNEM7QUFDNUMsd0NBQTBGO0FBQzFGLDZEQUl5QztBQUN6QywyREFBNEQ7QUFDNUQsMkRBQTREO0FBQzVELHVEQVFzQztBQUN0QyxpRUFHMkM7QUFJM0MsK0RBQThFO0FBQzlFLE1BQU0sRUFBRSxZQUFZLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxHQUFHLHdCQUFjLENBQUMsV0FBVyxDQUFDO0FBZWxFLHVCQUF1QixPQUFlLEVBQUUsR0FBYTtJQUNuRCxPQUFPLENBQUMsSUFBSSxDQUFDLDBEQUEwRCxDQUFDLENBQUM7SUFDekUsb0JBQW9CO0lBQ3BCLFFBQVEsQ0FBQztJQUNULG1CQUFtQjtJQUNuQixNQUFNLENBQUMsRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLENBQUM7QUFDMUIsQ0FBQztBQUVELGdCQUFnQixFQUFNLEVBQUUsT0FBc0I7SUFDNUMsTUFBTSxDQUFDLENBQUMsSUFBWTtRQUNsQixJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBUSxDQUFDO1FBRW5DLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsS0FBSyxNQUFNLENBQUMsQ0FBQyxDQUFDO1lBQ3hCLEtBQUssQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUM7UUFDbEIsQ0FBQztRQUVELE1BQU0sQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDLFFBQVEsQ0FBQyxFQUFjLENBQUMsQ0FBQztJQUM3RCxDQUFDLENBQUM7QUFDSixDQUFDO0FBRUQsSUFBSSxRQUFRLEdBQUcsYUFBYSxDQUFDO0FBRTdCLHVCQUF1QjtBQUN2Qiw2QkFBb0MsRUFBaUI7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