infuse.host
Version:
Infuse your HTML with dynamic content.
94 lines (87 loc) • 3.01 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.setConfigs = setConfigs;
// Stores all the contexts objects created the first time an element is infused.
const contexts = exports.contexts = new WeakMap();
// Stores parsed templates.
const parsedTemplates = exports.parsedTemplates = new Map();
// Stores generated context functions.
const contextFunctions = exports.contextFunctions = new Map();
/**
* Default configuration options.
*/
const DEFAULTS = exports.DEFAULTS = [
/**
* Indicates whether or not event names in event handlers should be camel cased during the
* parsing process.
*/
['camelCaseEvents', false],
/**
* Prefix or regular expression used to determine if an attribute is a constant variable
* declaration.
*/
['constantExp', 'const-'],
/**
* When an element is parsed, an attribute will be set on the element with the ID of the
* generated context function. This configuration option is the name of that attribute.
*/
['contextFunctionId', 'data-cid'],
/**
* Prefix or regular expression used to determine if an attribute is an event handler.
*/
['eventHandlerExp', /^on-?(\w[\w:-]+)$/],
/**
* Name of the "event" variable to use in event callbacks/listeners.
*/
['eventName', 'event'],
/**
* Name of the placeholder ID attribute. Nested templates are replaced with "placeholder"
* templates. The presence of the placeholder ID attribute on a template indicates that the
* template is a placeholder. The value of the placeholder ID attribute can be used to find
* the original nested template.
*/
['placeholderId', 'data-pid'],
/**
* Name of the attribute that indicates an element must be sweept when it's removed from
* the DOM.
*/
['sweepFlag', 'data-sweep'],
/**
* An object that will contain all possible tag functions to be used with template literals.
* During parsing this can be an array of all possible tag function names. However, at run
* time, this must be an object where the keys are the names of the tag functions and the
* values are the tag functions.
*/
['tags', {}],
/**
* Name of the variable that contains all the tag functions.
*/
['tagsName', 'tags'],
/**
* Name of the template ID attribute. After parsing a template element, a template ID attribute
* is set on the template element. This configuration option is the name of that attribute.
*/
['templateId', 'data-tid'],
/**
* Prefix or regular expression used to determine if an attribute is a "watch" (event(s) in
* which an element, or parts of it, must be re-infused).
*/
['watchExp', 'watch-']];
// Container for configuration options.
const configs = new Map(DEFAULTS);
exports.default = configs;
/**
* Sets configuration options.
*
* @function setConfigs
* @param {Object} options Configuration options object.
*/
function setConfigs(options) {
if (Array.isArray(options)) {
options.forEach(([key, value]) => configs.set(key, value));
} else {
Object.keys(options).forEach(key => configs.set(key, options[key]));
}
}
;