diff --git a/.babelrc b/.babelrc new file mode 100644 index 00000000..d9bc3196 --- /dev/null +++ b/.babelrc @@ -0,0 +1,23 @@ +{ + "env": { + "test": { + "presets": [ + ["@babel/env", { + "targets": { + "node": 8 + } + }] + ] + }, + "development": { + "presets": [ + ["@babel/env", { + "modules": false + }] + ] + } + }, + "plugins": [ + "@babel/plugin-proposal-export-default-from" + ] +} diff --git a/.eslintrc b/.eslintrc new file mode 100644 index 00000000..1ec68eeb --- /dev/null +++ b/.eslintrc @@ -0,0 +1,16 @@ +{ + "env": { + "browser": true, + "es6": true + }, + "parserOptions": { + "ecmaVersion": 6, + "sourceType": "module", + "ecmaFeatures": { + "jsx": true + } + }, + "rules": { + "semi": 2 + } +} diff --git a/.jsdoc/.bin/contributors.js b/.jsdoc/.bin/contributors.js new file mode 100755 index 00000000..5f6ae085 --- /dev/null +++ b/.jsdoc/.bin/contributors.js @@ -0,0 +1,55 @@ +#!/usr/bin/env node + +const fs = require('fs'); +const path = require('path'); +const https = require('https'); +const { exec } = require('child_process'); +const readline = require('readline').createInterface({ + input: process.stdin, + output: process.stdout +}); + +const options = { + port: 443, + method: 'GET', + hostname: 'api.github.com', + path: '/repos/objectivehtml/FlipClock/contributors', + headers: { + 'User-Agent': 'node' + } +}; + +const req = https.request(options, (res) => { + let body = ''; + + res.on('data', chunk => body += chunk); + res.on('end', () => { + let html = '

Contributors

'; + + const contributors = JSON.parse(body); + + contributors.forEach(contributor => { + html += [ + `\n`, + ``, + ` `, + `
`, + `
${contributor.login}
`, + `
(${contributor.contributions} contribution${contributor.contributions !== 1 ? 's' : ''})
`, + `
`, + `
` + ].join('\n'); + }); + + fs.writeFileSync(path.join(__dirname, '../../docs/contributors.html'), html); + + process.exit(0); + }); + +}); + +req.on('error', (error) => { + console.error(error) +}); + +req.end(); \ No newline at end of file diff --git a/.jsdoc/flipclock/README.md b/.jsdoc/flipclock/README.md new file mode 100755 index 00000000..1946bef5 --- /dev/null +++ b/.jsdoc/flipclock/README.md @@ -0,0 +1,12 @@ +The default template for JSDoc 3 uses: [the Taffy Database library](http://taffydb.com/) and the [Underscore Template library](http://underscorejs.org/). + + +## Generating Typeface Fonts + +The default template uses the [OpenSans](https://www.google.com/fonts/specimen/Open+Sans) typeface. The font files can be regenerated as follows: + +1. Open the [OpenSans page at Font Squirrel](). +2. Click on the 'Webfont Kit' tab. +3. Either leave the subset drop-down as 'Western Latin (Default)', or, if we decide we need more glyphs, than change it to 'No Subsetting'. +4. Click the 'DOWNLOAD @FONT-FACE KIT' button. +5. For each typeface variant we plan to use, copy the 'eot', 'svg' and 'woff' files into the 'templates/default/static/fonts' directory. diff --git a/.jsdoc/flipclock/publish.js b/.jsdoc/flipclock/publish.js new file mode 100755 index 00000000..ce09b341 --- /dev/null +++ b/.jsdoc/flipclock/publish.js @@ -0,0 +1,807 @@ +const doop = require('jsdoc/util/doop'); +const env = require('jsdoc/env'); +const fs = require('jsdoc/fs'); +const helper = require('jsdoc/util/templateHelper'); +const logger = require('jsdoc/util/logger'); +const path = require('jsdoc/path'); +const stripBom = require('jsdoc/util/stripbom'); +const taffy = require('taffydb').taffy; +const template = require('jsdoc/template'); +const util = require('util'); +const _ = require('underscore'); + +const pkg = JSON.parse(fs.readFileSync('./package.json', 'utf8')); + +const htmlsafe = helper.htmlsafe; +const linkto = helper.linkto; +const resolveAuthorLinks = helper.resolveAuthorLinks; +const hasOwnProp = Object.prototype.hasOwnProperty; + +let data; +let view; + +let outdir = path.normalize(env.opts.destination); + +function find(spec) { + return helper.find(data, spec); +} + +function tutoriallink(tutorial) { + return helper.toTutorial(tutorial, null, { + tag: 'em', + classname: 'disabled', + prefix: 'Tutorial: ' + }); +} + +function getAncestorLinks(doclet) { + return helper.getAncestorLinks(data, doclet); +} + +function hashToLink(doclet, hash) { + let url; + + if ( !/^(#.+)/.test(hash) ) { + return hash; + } + + url = helper.createLink(doclet); + url = url.replace(/(#.+|$)/, hash); + + return `${hash}`; +} + +function needsSignature({kind, type, meta}) { + let needsSig = false; + + // function and class definitions always get a signature + if (kind === 'function' || kind === 'class') { + needsSig = true; + } + // typedefs that contain functions get a signature, too + else if (kind === 'typedef' && type && type.names && + type.names.length) { + for (let i = 0, l = type.names.length; i < l; i++) { + if (type.names[i].toLowerCase() === 'function') { + needsSig = true; + break; + } + } + } + // and namespaces that are functions get a signature (but finding them is a + // bit messy) + else if (kind === 'namespace' && meta && meta.code && + meta.code.type && meta.code.type.match(/[Ff]unction/)) { + needsSig = true; + } + + return needsSig; +} + +function getSignatureAttributes({optional, nullable}) { + const attributes = []; + + if (optional) { + attributes.push('opt'); + } + + if (nullable === true) { + attributes.push('nullable'); + } + else if (nullable === false) { + attributes.push('non-null'); + } + + return attributes; +} + +function updateItemName(item) { + const attributes = getSignatureAttributes(item); + let itemName = item.name || ''; + + if (item.variable) { + itemName = `…${itemName}`; + } + + if (attributes && attributes.length) { + itemName = util.format( '%s%s', itemName, + attributes.join(', ') ); + } + + return itemName; +} + +function addParamAttributes(params) { + return params.filter(({name}) => name && !name.includes('.')).map(updateItemName); +} + +function buildItemTypeStrings(item) { + const types = []; + + if (item && item.type && item.type.names) { + item.type.names.forEach(name => { + types.push( linkto(name, htmlsafe(name)) ); + }); + } + + return types; +} + +function buildAttribsString(attribs) { + let attribsString = ''; + + if (attribs && attribs.length) { + attribsString = htmlsafe( util.format('(%s) ', attribs.join(', ')) ); + } + + return attribsString; +} + +function addNonParamAttributes(items) { + let types = []; + + items.forEach(item => { + types = types.concat( buildItemTypeStrings(item) ); + }); + + return types; +} + +function addSignatureParams(f) { + const params = f.params ? addParamAttributes(f.params) : []; + + f.signature = util.format( '%s(%s)', (f.signature || ''), params.join(', ') ); +} + +function addSignatureReturns(f) { + const attribs = []; + let attribsString = ''; + let returnTypes = []; + let returnTypesString = ''; + const source = f.yields || f.returns; + + // jam all the return-type attributes into an array. this could create odd results (for example, + // if there are both nullable and non-nullable return types), but let's assume that most people + // who use multiple @return tags aren't using Closure Compiler type annotations, and vice-versa. + if (source) { + source.forEach(item => { + helper.getAttribs(item).forEach(attrib => { + if (!attribs.includes(attrib)) { + attribs.push(attrib); + } + }); + }); + + attribsString = buildAttribsString(attribs); + } + + if (source) { + returnTypes = addNonParamAttributes(source); + } + if (returnTypes.length) { + returnTypesString = util.format( ' → %s{%s}', attribsString, returnTypes.join('|') ); + } + + f.signature = `${f.signature || ''}${returnTypesString}`; +} + +function addSignatureTypes(f) { + const types = f.type ? buildItemTypeStrings(f) : []; + + f.signature = `${f.signature || ''}${types.length ? ` :${types.join('|')}` : ''}`; +} + +function addAttribs(f) { + const attribs = helper.getAttribs(f); + const attribsString = buildAttribsString(attribs); + + f.attribs = util.format('%s', attribsString); +} + +function shortenPaths(files, commonPrefix) { + Object.keys(files).forEach(file => { + files[file].shortened = files[file].resolved.replace(commonPrefix, '') + // always use forward slashes + .replace(/\\/g, '/'); + }); + + return files; +} + +function getPathFromDoclet({meta}) { + if (!meta) { + return null; + } + + return meta.path && meta.path !== 'null' ? + path.join(meta.path, meta.filename) : + meta.filename; +} + +function generate(title, docs, filename, resolveLinks) { + let docData; + let html; + let outpath; + + resolveLinks = resolveLinks !== false; + + docData = { + env: env, + pkg: pkg, + title: title, + docs: docs + }; + + outpath = path.join(outdir, filename); + html = view.render('container.tmpl', docData); + + if (resolveLinks) { + html = helper.resolveLinks(html); // turn {@link foo} into foo + } + + fs.writeFileSync(outpath, html, 'utf8'); +} + +function generateSourceFiles(sourceFiles, encoding = 'utf8') { + Object.keys(sourceFiles).forEach(file => { + let source; + // links are keyed to the shortened path in each doclet's `meta.shortpath` property + const sourceOutfile = helper.getUniqueFilename(sourceFiles[file].shortened); + + helper.registerLink(sourceFiles[file].shortened, sourceOutfile); + + try { + source = { + kind: 'source', + code: helper.htmlsafe( fs.readFileSync(sourceFiles[file].resolved, encoding) ) + }; + } + catch (e) { + logger.error('Error while generating source file %s: %s', file, e.message); + } + + generate(`Source: ${sourceFiles[file].shortened}`, [source], sourceOutfile, false); + }); +} + +/** + * Look for classes or functions with the same name as modules (which indicates that the module + * exports only that class or function), then attach the classes or functions to the `module` + * property of the appropriate module doclets. The name of each class or function is also updated + * for display purposes. This function mutates the original arrays. + * + * @private + * @param {Array.} doclets - The array of classes and functions to + * check. + * @param {Array.} modules - The array of module doclets to search. + */ +function attachModuleSymbols(doclets, modules) { + const symbols = {}; + + // build a lookup table + doclets.forEach(symbol => { + symbols[symbol.longname] = symbols[symbol.longname] || []; + symbols[symbol.longname].push(symbol); + }); + + modules.forEach(module => { + if (symbols[module.longname]) { + module.modules = symbols[module.longname] + // Only show symbols that have a description. Make an exception for classes, because + // we want to show the constructor-signature heading no matter what. + .filter(({description, kind}) => description || kind === 'class') + .map(symbol => { + symbol = doop(symbol); + + if (symbol.kind === 'class' || symbol.kind === 'function') { + symbol.name = `${symbol.name.replace('module:', '(require("')}"))`; + } + + return symbol; + }); + } + }); +} + +function buildMemberNav(items, itemHeading, itemsSeen, linktoFn, itemsOnly = false) { + let nav = ''; + + if (items.length) { + let itemsNav = ''; + + items.forEach(item => { + let displayName; + + if ( !hasOwnProp.call(item, 'longname') ) { + itemsNav += `
  • ${linktoFn('', item.name)}
  • `; + } + else if ( !hasOwnProp.call(itemsSeen, item.longname) ) { + if (env.conf.templates.default.useLongnameInNav) { + displayName = item.longname; + } else { + displayName = item.name; + } + itemsNav += `
  • ${linktoFn(item.longname, displayName.replace(/\b(module|event):/g, ''))}
  • `; + + itemsSeen[item.longname] = true; + } + }); + + if (itemsOnly) { + return itemsNav; + } + + if (itemsNav !== '') { + if(itemHeading) { + nav += `

    ${itemHeading}

    `; + } + + nav += `
      ${itemsNav}
    `; + } + } + + return nav; +} + +function linktoTutorial(longName, name) { + return tutoriallink(name); +} + +function linktoExternal(longName, name) { + return linkto(longName, name.replace(/(^"|"$)/g, '')); +} + +/** + * Create the navigation sidebar. + * @param {object} members The members that will be used to create the sidebar. + * @param {array} members.classes + * @param {array} members.externals + * @param {array} members.globals + * @param {array} members.mixins + * @param {array} members.modules + * @param {array} members.namespaces + * @param {array} members.tutorials + * @param {array} members.events + * @param {array} members.interfaces + * @return {string} The HTML for the navigation sidebar. + */ +function buildNav(members) { + let globalNav; + let nav = ''; + const seen = {}; + const seenTutorials = {}; + + nav += '
      '; + nav += buildMemberNav(members.tutorials, null, seenTutorials, linktoTutorial, true); + nav += buildMemberNav(members.namespaces.filter(member => member.scope === 'global'), null, seen, linkto, true); + nav += '
    '; + + nav += buildMemberNav(members.classes.filter(member => member.scope === 'global'), 'Classes', seen, linkto); + + nav += buildMemberNav(members.modules, 'Modules', {}, linkto); + nav += buildMemberNav(members.externals, 'Externals', seen, linktoExternal); + nav += buildMemberNav(members.interfaces, 'Interfaces', seen, linkto); + nav += buildMemberNav(members.events, 'Events', seen, linkto); + nav += buildMemberNav(members.mixins, 'Mixins', seen, linkto); + + if (members.globals.length) { + globalNav = ''; + + members.globals.forEach(({kind, longname, name}) => { + if ( kind !== 'typedef' && !hasOwnProp.call(seen, longname) ) { + globalNav += `
  • ${linkto(longname, name)}
  • `; + } + seen[longname] = true; + }); + + if (!globalNav) { + // turn the heading into a link so you can actually get to the global page + nav += `

    ${linkto('global', 'Global')}

    `; + } + else { + nav += `

    Global

      ${globalNav}
    `; + } + } + + return nav; +} + +function extractAndApplyToParent(filepath, tutorials, parent) { + const extracted = []; + + ls(filepath, ['html', 'md'], name => { + const index = tutorials.children.findIndex(child => child.name === name); + + tutorials._tutorials[name].parent = parent; + + const tutorial = tutorials.children.splice(index, 1).pop(); + + parent.children.push(tutorial); + + extracted.push(tutorial); + }); + + return extracted; +} + +function ls(filepath, types, fn) { + if(typeof types === 'function') { + fn = types; + types = null; + } + + if(types && !(types instanceof Array)) { + types = [types]; + } + + if(!(types instanceof Array)) { + types = []; + } + + const finder = /^(.*)\.(x(?:ht)?ml|html?|md|markdown|json)$/i; + const files = fs.ls(filepath, env.opts.recurse ? env.conf.recurseDepth : undefined); + + files.forEach(file => { + const match = file.match(finder); + const name = path.basename(match[1]); + + let content = fs.readFileSync(file, env.opts.encoding); + + switch (match[2].toLowerCase()) { + // configuration file + case 'json': + content = JSON.parse(stripBom.strip(content)); + + break; + } + + if((fn instanceof Function) && (!types.length || types.indexOf(match[2]) !== -1)) { + fn(name, content, match[2]); + } + }); +} + +function isTutorialJSON(json) { + // if conf.title exists or conf.children exists, it is metadata for a tutorial + return (hasOwnProp.call(json, 'title') || hasOwnProp.call(json, 'children')); +} + +function extractAndApplyMeta(filepath, tutorials) { + ls(filepath, ['json'], (name, json) => { + if(isTutorialJSON(json) && tutorials._tutorials[name]) { + Object.assign(tutorials._tutorials[name], json || {}); + } + else { + for(let [key, value] of Object.entries(json)) { + if(tutorials._tutorials[key]) { + Object.assign(tutorials._tutorials[key], json[key] || {}); + } + } + } + }); +} + +/** + @param {TAFFY} taffyData See . + @param {object} opts + @param {Tutorial} tutorials + */ +exports.publish = (taffyData, opts, tutorials) => { + let classes; + let conf; + let externals; + let files; + let fromDir; + let globalUrl; + let indexUrl; + let interfaces; + let members; + let mixins; + let modules; + let namespaces; + let outputSourceFiles; + let packageInfo; + let packages; + const sourceFilePaths = []; + let sourceFiles = {}; + let staticFileFilter; + let staticFilePaths; + let staticFiles; + let staticFileScanner; + let templatePath; + + data = taffyData; + + conf = env.conf.templates || {}; + conf.default = conf.default || {}; + + templatePath = path.normalize(opts.template); + view = new template.Template( path.join(templatePath, 'tmpl') ); + + // claim some special filenames in advance, so the All-Powerful Overseer of Filename Uniqueness + // doesn't try to hand them out later + indexUrl = helper.getUniqueFilename('index'); + // don't call registerLink() on this one! 'index' is also a valid longname + + globalUrl = helper.getUniqueFilename('global'); + helper.registerLink('global', globalUrl); + + // set up templating + view.layout = conf.default.layoutFile ? + path.getResourcePath(path.dirname(conf.default.layoutFile), + path.basename(conf.default.layoutFile) ) : + 'layout.tmpl'; + + // Since JSDoc doesn't support meta data in .json files out of the box + // extract it and apply it to the tutorials object. + + extractAndApplyMeta('./docs', tutorials); + extractAndApplyToParent('./docs/examples', tutorials, tutorials._tutorials['examples']).forEach(tutorial => { + if(!tutorial.meta) { + tutorial.meta = {}; + } + + tutorial.meta.header = true; + }); + + // set up tutorials for helper + helper.setTutorials(tutorials); + + data = helper.prune(data); + data.sort('longname, version, since'); + helper.addEventListeners(data); + + + data().each(doclet => { + let sourcePath; + + doclet.attribs = ''; + + if (doclet.examples) { + doclet.examples = doclet.examples.map(example => { + let caption; + let code; + + if (example.match(/^\s*([\s\S]+?)<\/caption>(\s*[\n\r])([\s\S]+)$/i)) { + caption = RegExp.$1; + code = RegExp.$3; + } + + return { + caption: caption || '', + code: code || example + }; + }); + } + if (doclet.see) { + doclet.see.forEach((seeItem, i) => { + doclet.see[i] = hashToLink(doclet, seeItem); + }); + } + + // build a list of source files + if (doclet.meta) { + sourcePath = getPathFromDoclet(doclet); + sourceFiles[sourcePath] = { + resolved: sourcePath, + shortened: null + }; + if (!sourceFilePaths.includes(sourcePath)) { + sourceFilePaths.push(sourcePath); + } + } + }); + + // update outdir if necessary, then create outdir + packageInfo = ( find({kind: 'package'}) || [] )[0]; + if (packageInfo && packageInfo.name) { + outdir = path.join( outdir, packageInfo.name, (packageInfo.version || '') ); + } + fs.mkPath(outdir); + + // copy the template's static files to outdir + fromDir = path.join(templatePath, 'static'); + staticFiles = fs.ls(fromDir, 3); + + staticFiles.forEach(fileName => { + const toDir = fs.toDir( fileName.replace(fromDir, outdir) ); + + fs.mkPath(toDir); + fs.copyFileSync(fileName, toDir); + }); + + // copy user-specified static files to outdir + if (conf.default.staticFiles) { + // The canonical property name is `include`. We accept `paths` for backwards compatibility + // with a bug in JSDoc 3.2.x. + staticFilePaths = conf.default.staticFiles.include || + conf.default.staticFiles.paths || + []; + staticFileFilter = new (require('jsdoc/src/filter').Filter)(conf.default.staticFiles); + staticFileScanner = new (require('jsdoc/src/scanner').Scanner)(); + + staticFilePaths.forEach(filePath => { + let extraStaticFiles; + + filePath = path.resolve(env.pwd, filePath); + extraStaticFiles = staticFileScanner.scan([filePath], 10, staticFileFilter); + + extraStaticFiles.forEach(fileName => { + const sourcePath = fs.toDir(filePath); + const toDir = fs.toDir( fileName.replace(sourcePath, outdir) ); + + fs.mkPath(toDir); + fs.copyFileSync(fileName, toDir); + }); + }); + } + + if (sourceFilePaths.length) { + sourceFiles = shortenPaths( sourceFiles, path.commonPrefix(sourceFilePaths) ); + } + data().each(doclet => { + let docletPath; + const url = helper.createLink(doclet); + + helper.registerLink(doclet.longname, url); + + // add a shortened version of the full path + if (doclet.meta) { + docletPath = getPathFromDoclet(doclet); + docletPath = sourceFiles[docletPath].shortened; + if (docletPath) { + doclet.meta.shortpath = docletPath; + } + } + }); + + data().each(doclet => { + const url = helper.longnameToUrl[doclet.longname]; + + if (url.includes('#')) { + doclet.id = helper.longnameToUrl[doclet.longname].split(/#/).pop(); + } + else { + doclet.id = doclet.name; + } + + if ( needsSignature(doclet) ) { + addSignatureParams(doclet); + addSignatureReturns(doclet); + addAttribs(doclet); + } + }); + + // do this after the urls have all been generated + data().each(doclet => { + doclet.ancestors = getAncestorLinks(doclet); + + if (doclet.kind === 'member') { + addSignatureTypes(doclet); + addAttribs(doclet); + } + + if (doclet.kind === 'constant') { + addSignatureTypes(doclet); + addAttribs(doclet); + doclet.kind = 'member'; + } + }); + + members = helper.getMembers(data); + members.tutorials = tutorials.children; + + // output pretty-printed source files by default + outputSourceFiles = conf.default && conf.default.outputSourceFiles !== false; + + // add template helpers + view.find = find; + view.linkto = linkto; + view.resolveAuthorLinks = resolveAuthorLinks; + view.tutoriallink = tutoriallink; + view.htmlsafe = htmlsafe; + view.outputSourceFiles = outputSourceFiles; + + // once for all + view.nav = buildNav(members); + attachModuleSymbols( find({ longname: {left: 'module:'} }), members.modules ); + + // generate the pretty-printed source files first so other pages can link to them + if (outputSourceFiles) { + generateSourceFiles(sourceFiles, opts.encoding); + } + + if (members.globals.length) { generate('Global', [{kind: 'globalobj'}], globalUrl); } + + // index page displays information from package.json and lists files + files = find({kind: 'file'}); + packages = find({kind: 'package'}); + + generate('Home', + packages.concat( + [{ + kind: 'mainpage', + readme: opts.readme, + longname: (opts.mainpagetitle) ? opts.mainpagetitle : 'Main Page' + }] + ).concat(files), indexUrl); + + // set up the lists that we'll use to generate pages + classes = taffy(members.classes); + modules = taffy(members.modules); + namespaces = taffy(members.namespaces); + mixins = taffy(members.mixins); + externals = taffy(members.externals); + interfaces = taffy(members.interfaces); + + Object.keys(helper.longnameToUrl).forEach(longname => { + const myClasses = helper.find(classes, {longname: longname}); + const myExternals = helper.find(externals, {longname: longname}); + const myInterfaces = helper.find(interfaces, {longname: longname}); + const myMixins = helper.find(mixins, {longname: longname}); + const myModules = helper.find(modules, {longname: longname}); + const myNamespaces = helper.find(namespaces, {longname: longname}); + + if (myModules.length) { + generate(`Module: ${myModules[0].name}`, myModules, helper.longnameToUrl[longname]); + } + + if (myClasses.length) { + generate(`Class: ${myClasses[0].name}`, myClasses, helper.longnameToUrl[longname]); + } + + if (myNamespaces.length) { + generate(`Namespace: ${myNamespaces[0].name}`, myNamespaces, helper.longnameToUrl[longname]); + } + + if (myMixins.length) { + generate(`Mixin: ${myMixins[0].name}`, myMixins, helper.longnameToUrl[longname]); + } + + if (myExternals.length) { + generate(`External: ${myExternals[0].name}`, myExternals, helper.longnameToUrl[longname]); + } + + if (myInterfaces.length) { + generate(`Interface: ${myInterfaces[0].name}`, myInterfaces, helper.longnameToUrl[longname]); + } + }); + + // TODO: move the tutorial functions to templateHelper.js + function generateTutorial(title, tutorial, filename, members) { + const tutorialTemplate = _.template(tutorial.content, view.settings); + + tutorial.content = tutorialTemplate({ + pkg, + title, + members, + tutorial + }); + + const tutorialData = { + pkg, + title, + tutorial, + content: tutorial.parse(), + }; + + const tutorialPath = path.join(outdir, filename); + + let html = view.render('tutorial.tmpl', tutorialData); + + // yes, you can use {@link} in tutorials too! + html = helper.resolveLinks(html); // turn {@link foo} into foo + + fs.writeFileSync(tutorialPath, html, 'utf8'); + } + + // tutorials can have only one parent so there is no risk for loops + function saveChildren({children}) { + children.forEach(child => { + generateTutorial(`Tutorial: ${child.title}`, child, helper.tutorialToUrl(child.name), members); + saveChildren(child); + }); + } + + saveChildren(tutorials); +}; diff --git a/.jsdoc/flipclock/static/fonts/OpenSans-Bold-webfont.eot b/.jsdoc/flipclock/static/fonts/OpenSans-Bold-webfont.eot new file mode 100755 index 00000000..5d20d916 Binary files /dev/null and b/.jsdoc/flipclock/static/fonts/OpenSans-Bold-webfont.eot differ diff --git a/.jsdoc/flipclock/static/fonts/OpenSans-Bold-webfont.svg b/.jsdoc/flipclock/static/fonts/OpenSans-Bold-webfont.svg new file mode 100755 index 00000000..3ed7be4b --- /dev/null +++ b/.jsdoc/flipclock/static/fonts/OpenSans-Bold-webfont.svg @@ -0,0 +1,1830 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.jsdoc/flipclock/static/fonts/OpenSans-Bold-webfont.woff b/.jsdoc/flipclock/static/fonts/OpenSans-Bold-webfont.woff new file mode 100755 index 00000000..1205787b Binary files /dev/null and b/.jsdoc/flipclock/static/fonts/OpenSans-Bold-webfont.woff differ diff --git a/.jsdoc/flipclock/static/fonts/OpenSans-BoldItalic-webfont.eot b/.jsdoc/flipclock/static/fonts/OpenSans-BoldItalic-webfont.eot new file mode 100755 index 00000000..1f639a15 Binary files /dev/null and b/.jsdoc/flipclock/static/fonts/OpenSans-BoldItalic-webfont.eot differ diff --git a/.jsdoc/flipclock/static/fonts/OpenSans-BoldItalic-webfont.svg b/.jsdoc/flipclock/static/fonts/OpenSans-BoldItalic-webfont.svg new file mode 100755 index 00000000..6a2607b9 --- /dev/null +++ b/.jsdoc/flipclock/static/fonts/OpenSans-BoldItalic-webfont.svg @@ -0,0 +1,1830 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.jsdoc/flipclock/static/fonts/OpenSans-BoldItalic-webfont.woff b/.jsdoc/flipclock/static/fonts/OpenSans-BoldItalic-webfont.woff new file mode 100755 index 00000000..ed760c06 Binary files /dev/null and b/.jsdoc/flipclock/static/fonts/OpenSans-BoldItalic-webfont.woff differ diff --git a/.jsdoc/flipclock/static/fonts/OpenSans-Italic-webfont.eot b/.jsdoc/flipclock/static/fonts/OpenSans-Italic-webfont.eot new file mode 100755 index 00000000..0c8a0ae0 Binary files /dev/null and b/.jsdoc/flipclock/static/fonts/OpenSans-Italic-webfont.eot differ diff --git a/.jsdoc/flipclock/static/fonts/OpenSans-Italic-webfont.svg b/.jsdoc/flipclock/static/fonts/OpenSans-Italic-webfont.svg new file mode 100755 index 00000000..e1075dcc --- /dev/null +++ b/.jsdoc/flipclock/static/fonts/OpenSans-Italic-webfont.svg @@ -0,0 +1,1830 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.jsdoc/flipclock/static/fonts/OpenSans-Italic-webfont.woff b/.jsdoc/flipclock/static/fonts/OpenSans-Italic-webfont.woff new file mode 100755 index 00000000..ff652e64 Binary files /dev/null and b/.jsdoc/flipclock/static/fonts/OpenSans-Italic-webfont.woff differ diff --git a/.jsdoc/flipclock/static/fonts/OpenSans-Light-webfont.eot b/.jsdoc/flipclock/static/fonts/OpenSans-Light-webfont.eot new file mode 100755 index 00000000..14868406 Binary files /dev/null and b/.jsdoc/flipclock/static/fonts/OpenSans-Light-webfont.eot differ diff --git a/.jsdoc/flipclock/static/fonts/OpenSans-Light-webfont.svg b/.jsdoc/flipclock/static/fonts/OpenSans-Light-webfont.svg new file mode 100755 index 00000000..11a472ca --- /dev/null +++ b/.jsdoc/flipclock/static/fonts/OpenSans-Light-webfont.svg @@ -0,0 +1,1831 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.jsdoc/flipclock/static/fonts/OpenSans-Light-webfont.woff b/.jsdoc/flipclock/static/fonts/OpenSans-Light-webfont.woff new file mode 100755 index 00000000..e7860748 Binary files /dev/null and b/.jsdoc/flipclock/static/fonts/OpenSans-Light-webfont.woff differ diff --git a/.jsdoc/flipclock/static/fonts/OpenSans-LightItalic-webfont.eot b/.jsdoc/flipclock/static/fonts/OpenSans-LightItalic-webfont.eot new file mode 100755 index 00000000..8f445929 Binary files /dev/null and b/.jsdoc/flipclock/static/fonts/OpenSans-LightItalic-webfont.eot differ diff --git a/.jsdoc/flipclock/static/fonts/OpenSans-LightItalic-webfont.svg b/.jsdoc/flipclock/static/fonts/OpenSans-LightItalic-webfont.svg new file mode 100755 index 00000000..431d7e35 --- /dev/null +++ b/.jsdoc/flipclock/static/fonts/OpenSans-LightItalic-webfont.svg @@ -0,0 +1,1835 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.jsdoc/flipclock/static/fonts/OpenSans-LightItalic-webfont.woff b/.jsdoc/flipclock/static/fonts/OpenSans-LightItalic-webfont.woff new file mode 100755 index 00000000..43e8b9e6 Binary files /dev/null and b/.jsdoc/flipclock/static/fonts/OpenSans-LightItalic-webfont.woff differ diff --git a/.jsdoc/flipclock/static/fonts/OpenSans-Regular-webfont.eot b/.jsdoc/flipclock/static/fonts/OpenSans-Regular-webfont.eot new file mode 100755 index 00000000..6bbc3cf5 Binary files /dev/null and b/.jsdoc/flipclock/static/fonts/OpenSans-Regular-webfont.eot differ diff --git a/.jsdoc/flipclock/static/fonts/OpenSans-Regular-webfont.svg b/.jsdoc/flipclock/static/fonts/OpenSans-Regular-webfont.svg new file mode 100755 index 00000000..25a39523 --- /dev/null +++ b/.jsdoc/flipclock/static/fonts/OpenSans-Regular-webfont.svg @@ -0,0 +1,1831 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.jsdoc/flipclock/static/fonts/OpenSans-Regular-webfont.woff b/.jsdoc/flipclock/static/fonts/OpenSans-Regular-webfont.woff new file mode 100755 index 00000000..e231183d Binary files /dev/null and b/.jsdoc/flipclock/static/fonts/OpenSans-Regular-webfont.woff differ diff --git a/.jsdoc/flipclock/static/img/binding_dark.png b/.jsdoc/flipclock/static/img/binding_dark.png new file mode 100644 index 00000000..2c69fa64 Binary files /dev/null and b/.jsdoc/flipclock/static/img/binding_dark.png differ diff --git a/.jsdoc/flipclock/static/scripts/linenumber.js b/.jsdoc/flipclock/static/scripts/linenumber.js new file mode 100755 index 00000000..4354785c --- /dev/null +++ b/.jsdoc/flipclock/static/scripts/linenumber.js @@ -0,0 +1,25 @@ +/*global document */ +(() => { + const source = document.getElementsByClassName('prettyprint source linenums'); + let i = 0; + let lineNumber = 0; + let lineId; + let lines; + let totalLines; + let anchorHash; + + if (source && source[0]) { + anchorHash = document.location.hash.substring(1); + lines = source[0].getElementsByTagName('li'); + totalLines = lines.length; + + for (; i < totalLines; i++) { + lineNumber++; + lineId = `line${lineNumber}`; + lines[i].id = lineId; + if (lineId === anchorHash) { + lines[i].className += ' selected'; + } + } + } +})(); diff --git a/.jsdoc/flipclock/static/scripts/prettify/Apache-License-2.0.txt b/.jsdoc/flipclock/static/scripts/prettify/Apache-License-2.0.txt new file mode 100755 index 00000000..d6456956 --- /dev/null +++ b/.jsdoc/flipclock/static/scripts/prettify/Apache-License-2.0.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/.jsdoc/flipclock/static/scripts/prettify/lang-css.js b/.jsdoc/flipclock/static/scripts/prettify/lang-css.js new file mode 100755 index 00000000..041e1f59 --- /dev/null +++ b/.jsdoc/flipclock/static/scripts/prettify/lang-css.js @@ -0,0 +1,2 @@ +PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\f\r ]+/,null," \t\r\n "]],[["str",/^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/,null],["str",/^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/,null],["lang-css-str",/^url\(([^"')]*)\)/i],["kwd",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],["com", +/^(?:<\!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#[\da-f]{3,6}/i],["pln",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],["pun",/^[^\s\w"']+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^"')]+/]]),["css-str"]); diff --git a/.jsdoc/flipclock/static/scripts/prettify/prettify.js b/.jsdoc/flipclock/static/scripts/prettify/prettify.js new file mode 100755 index 00000000..eef5ad7e --- /dev/null +++ b/.jsdoc/flipclock/static/scripts/prettify/prettify.js @@ -0,0 +1,28 @@ +var q=null;window.PR_SHOULD_USE_CONTINUATION=!0; +(function(){function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var b=a.charAt(1);return(f=r[b])?f:"0"<=b&&b<="7"?parseInt(a.substring(1),8):b==="u"||b==="x"?parseInt(a.substring(2),16):a.charCodeAt(1)}function e(a){if(a<32)return(a<16?"\\x0":"\\x")+a.toString(16);a=String.fromCharCode(a);if(a==="\\"||a==="-"||a==="["||a==="]")a="\\"+a;return a}function h(a){for(var f=a.substring(1,a.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),a= +[],b=[],o=f[0]==="^",c=o?1:0,i=f.length;c122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;ci[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m), +l=[],p={},d=0,g=e.length;d=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/, +q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/, +q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g, +"");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a), +a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e} +for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"], +"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"], +H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"], +J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+ +I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]), +["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css", +/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}), +["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes", +hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p=0){var k=k.match(g),f,b;if(b= +!k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}pp:first-child, .props td.description>p:first-child { + margin-top: 0; + padding-top: 0; +} + +.params td.description>p:last-child, .props td.description>p:last-child { + margin-bottom: 0; + padding-bottom: 0; +} + +.disabled { + color: #454545; +} + +.contributor { + display: flex; + width: 100%; + padding: 1em; +} + +.contributor .rounded-circle { + width: 5rem; + height: 5rem; + margin-right: 1em; +} + +.contributor .name { + font-size: 1.3em; +} + +.card .table { + border-right: 0; + border-left: 0; + margin-bottom: 0; +} + +.card .table:last-child { + border-bottom: 0; +} + +.card .table td:last-child, +.card .table th:last-child { + border-right: 0; +} + +.card .table td:first-child, +.card .table th:first-child { + border-left: 0; +} + +.card .table tr:first-child td, +.card .table tr:first-child th { + border-top: 0; +} + +.card .table tr:last-child td { + border-bottom: 0; +} \ No newline at end of file diff --git a/.jsdoc/flipclock/static/styles/prettify-jsdoc.css b/.jsdoc/flipclock/static/styles/prettify-jsdoc.css new file mode 100755 index 00000000..5a2526e3 --- /dev/null +++ b/.jsdoc/flipclock/static/styles/prettify-jsdoc.css @@ -0,0 +1,111 @@ +/* JSDoc prettify.js theme */ + +/* plain text */ +.pln { + color: #000000; + font-weight: normal; + font-style: normal; +} + +/* string content */ +.str { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* a keyword */ +.kwd { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* a comment */ +.com { + font-weight: normal; + font-style: italic; +} + +/* a type name */ +.typ { + color: #000000; + font-weight: normal; + font-style: normal; +} + +/* a literal value */ +.lit { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* punctuation */ +.pun { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* lisp open bracket */ +.opn { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* lisp close bracket */ +.clo { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* a markup tag name */ +.tag { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* a markup attribute name */ +.atn { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* a markup attribute value */ +.atv { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* a declaration */ +.dec { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* a variable name */ +.var { + color: #000000; + font-weight: normal; + font-style: normal; +} + +/* a function name */ +.fun { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* Specify class=linenums on a pre to get line numbering */ +ol.linenums { + margin-top: 0; + margin-bottom: 0; +} diff --git a/.jsdoc/flipclock/static/styles/prettify-tomorrow.css b/.jsdoc/flipclock/static/styles/prettify-tomorrow.css new file mode 100755 index 00000000..b6f92a78 --- /dev/null +++ b/.jsdoc/flipclock/static/styles/prettify-tomorrow.css @@ -0,0 +1,132 @@ +/* Tomorrow Theme */ +/* Original theme - https://github.com/chriskempson/tomorrow-theme */ +/* Pretty printing styles. Used with prettify.js. */ +/* SPAN elements with the classes below are added by prettyprint. */ +/* plain text */ +.pln { + color: #4d4d4c; } + +@media screen { + /* string content */ + .str { + color: #718c00; } + + /* a keyword */ + .kwd { + color: #8959a8; } + + /* a comment */ + .com { + color: #8e908c; } + + /* a type name */ + .typ { + color: #4271ae; } + + /* a literal value */ + .lit { + color: #f5871f; } + + /* punctuation */ + .pun { + color: #4d4d4c; } + + /* lisp open bracket */ + .opn { + color: #4d4d4c; } + + /* lisp close bracket */ + .clo { + color: #4d4d4c; } + + /* a markup tag name */ + .tag { + color: #c82829; } + + /* a markup attribute name */ + .atn { + color: #f5871f; } + + /* a markup attribute value */ + .atv { + color: #3e999f; } + + /* a declaration */ + .dec { + color: #f5871f; } + + /* a variable name */ + .var { + color: #c82829; } + + /* a function name */ + .fun { + color: #4271ae; } } +/* Use higher contrast and text-weight for printable form. */ +@media print, projection { + .str { + color: #060; } + + .kwd { + color: #006; + font-weight: bold; } + + .com { + color: #600; + font-style: italic; } + + .typ { + color: #404; + font-weight: bold; } + + .lit { + color: #044; } + + .pun, .opn, .clo { + color: #440; } + + .tag { + color: #006; + font-weight: bold; } + + .atn { + color: #404; } + + .atv { + color: #060; } } +/* Style */ +/* +pre.prettyprint { + background: white; + font-family: Consolas, Monaco, 'Andale Mono', monospace; + font-size: 12px; + line-height: 1.5; + border: 1px solid #ccc; + padding: 10px; } +*/ + +/* Specify class=linenums on a pre to get line numbering */ +ol.linenums { + margin-top: 0; + margin-bottom: 0; } + +/* IE indents via margin-left */ +li.L0, +li.L1, +li.L2, +li.L3, +li.L4, +li.L5, +li.L6, +li.L7, +li.L8, +li.L9 { + /* */ } + +/* Alternate shading for lines */ +li.L1, +li.L3, +li.L5, +li.L7, +li.L9 { + /* */ } diff --git a/.jsdoc/flipclock/tmpl/augments.tmpl b/.jsdoc/flipclock/tmpl/augments.tmpl new file mode 100755 index 00000000..446d28aa --- /dev/null +++ b/.jsdoc/flipclock/tmpl/augments.tmpl @@ -0,0 +1,10 @@ + + + +
      +
    • +
    + diff --git a/.jsdoc/flipclock/tmpl/container.tmpl b/.jsdoc/flipclock/tmpl/container.tmpl new file mode 100755 index 00000000..add22ffc --- /dev/null +++ b/.jsdoc/flipclock/tmpl/container.tmpl @@ -0,0 +1,209 @@ + + + + + + + + + +
    + +
    + +

    + +

    + +
    + + + + +
    + + + +
    + +
    +
    + + +
    + + + + + + + + + +
    + + + + + +

    Example 1? 's':'' ?>

    + + + +
    + + +
    +

    Extends

    + + +
    + + + +

    Requires

    + +
      +
    • +
    + + + + +
    +

    Classes

    + +
    +
    +
    +
    +
    + + + +

    Interfaces

    + +
    +
    +
    +
    + + + +

    Mixins

    + +
    +
    +
    +
    + + + +
    +

    Namespaces

    + +
    +
    +
    +
    +
    + + + +

    Members

    + + +
    + +
    + + + + + + +

    Methods

    + + +
    + +
    + + + + +

    Type Definitions

    + + +
    + +
    + + + + +

    Events

    + + + + + +
    + +
    + + + diff --git a/.jsdoc/flipclock/tmpl/details.tmpl b/.jsdoc/flipclock/tmpl/details.tmpl new file mode 100755 index 00000000..4a5bd49f --- /dev/null +++ b/.jsdoc/flipclock/tmpl/details.tmpl @@ -0,0 +1,143 @@ +" + data.defaultvalue + ""; + defaultObjectClass = ' class="object-value"'; +} +?> + + +
    Properties:
    + + + + + +
    + + +
    Version:
    +
    + + + +
    Since:
    +
    + + + +
    Inherited From:
    +
    • + +
    + + + +
    Overrides:
    +
    • + +
    + + + +
    Implementations:
    +
      + +
    • + +
    + + + +
    Implements:
    +
      + +
    • + +
    + + + +
    Mixes In:
    + +
      + +
    • + +
    + + + +
    Deprecated:
    • Yes
    + + + +
    Author:
    +
    +
      +
    • +
    +
    + + + + + + + + +
    License:
    +
    + + + +
    Default Value:
    +
      + > +
    + + + +
    Source:
    +
    • + , +
    + + + +
    Tutorials:
    +
    +
      +
    • +
    +
    + + + +
    See:
    +
    +
      +
    • +
    +
    + + + +
    To Do:
    +
    +
      +
    • +
    +
    + +
    diff --git a/.jsdoc/flipclock/tmpl/example.tmpl b/.jsdoc/flipclock/tmpl/example.tmpl new file mode 100755 index 00000000..e87caa5b --- /dev/null +++ b/.jsdoc/flipclock/tmpl/example.tmpl @@ -0,0 +1,2 @@ + +
    diff --git a/.jsdoc/flipclock/tmpl/examples.tmpl b/.jsdoc/flipclock/tmpl/examples.tmpl new file mode 100755 index 00000000..04d975e9 --- /dev/null +++ b/.jsdoc/flipclock/tmpl/examples.tmpl @@ -0,0 +1,13 @@ + +

    + +
    + \ No newline at end of file diff --git a/.jsdoc/flipclock/tmpl/exceptions.tmpl b/.jsdoc/flipclock/tmpl/exceptions.tmpl new file mode 100755 index 00000000..9cef6c7d --- /dev/null +++ b/.jsdoc/flipclock/tmpl/exceptions.tmpl @@ -0,0 +1,32 @@ + + +
    +
    +
    + +
    +
    +
    +
    +
    +
    + Type +
    +
    + +
    +
    +
    +
    +
    + +
    + + + + + +
    + diff --git a/.jsdoc/flipclock/tmpl/layout.tmpl b/.jsdoc/flipclock/tmpl/layout.tmpl new file mode 100755 index 00000000..5b7f378e --- /dev/null +++ b/.jsdoc/flipclock/tmpl/layout.tmpl @@ -0,0 +1,96 @@ + + + + + FlipClock.js :: <?js= title ?> + + + + + + + + + + + + + + + + + + + + +
    +
    +

    FlipClock.js

    +
    v
    +
    + + + + +
    +
    + + + + +
    +
    + +
    + +
    +
    + +
    + © Justin Kimbrell - Version +
    +
    + + + + + diff --git a/.jsdoc/flipclock/tmpl/mainpage.tmpl b/.jsdoc/flipclock/tmpl/mainpage.tmpl new file mode 100755 index 00000000..64e9e594 --- /dev/null +++ b/.jsdoc/flipclock/tmpl/mainpage.tmpl @@ -0,0 +1,14 @@ + + + +

    + + + +
    +
    +
    + diff --git a/.jsdoc/flipclock/tmpl/members.tmpl b/.jsdoc/flipclock/tmpl/members.tmpl new file mode 100755 index 00000000..154c17b6 --- /dev/null +++ b/.jsdoc/flipclock/tmpl/members.tmpl @@ -0,0 +1,38 @@ + +

    + + +

    + + + +
    + +
    + + + +
    Type:
    +
      +
    • + +
    • +
    + + + + + +
    Fires:
    +
      +
    • +
    + + + +
    Example 1? 's':'' ?>
    + + diff --git a/.jsdoc/flipclock/tmpl/method.tmpl b/.jsdoc/flipclock/tmpl/method.tmpl new file mode 100755 index 00000000..0125fe29 --- /dev/null +++ b/.jsdoc/flipclock/tmpl/method.tmpl @@ -0,0 +1,131 @@ + + + +

    Constructor

    + + + +

    + + + +

    + + + + +
    + +
    + + + +
    Extends:
    + + + + +
    Type:
    +
      +
    • + +
    • +
    + + + +
    This:
    +
    + + + +
    Parameters:
    + + + + + + +
    Requires:
    +
      +
    • +
    + + + +
    Fires:
    +
      +
    • +
    + + + +
    Listens to Events:
    +
      +
    • +
    + + + +
    Listeners of This Event:
    +
      +
    • +
    + + + +
    Modifies:
    + 1) { ?>
      +
    • +
    + + + + +
    Throws:
    + 1) { ?>
      +
    • +
    + + + + +
    Returns:
    + 1) { ?>
      +
    • +
    + + + + +
    Yields:
    + 1) { ?>
      +
    • +
    + + + + +
    Example 1? 's':'' ?>
    + + diff --git a/.jsdoc/flipclock/tmpl/modifies.tmpl b/.jsdoc/flipclock/tmpl/modifies.tmpl new file mode 100755 index 00000000..16ccbf8d --- /dev/null +++ b/.jsdoc/flipclock/tmpl/modifies.tmpl @@ -0,0 +1,14 @@ + + + +
    +
    + Type +
    +
    + +
    +
    + diff --git a/.jsdoc/flipclock/tmpl/params.tmpl b/.jsdoc/flipclock/tmpl/params.tmpl new file mode 100755 index 00000000..a3e84408 --- /dev/null +++ b/.jsdoc/flipclock/tmpl/params.tmpl @@ -0,0 +1,133 @@ + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    + + + + + + <optional>
    + + + + <nullable>
    + + + + <repeatable>
    + +
    + + + + +
    Properties
    + +
    +
    \ No newline at end of file diff --git a/.jsdoc/flipclock/tmpl/properties.tmpl b/.jsdoc/flipclock/tmpl/properties.tmpl new file mode 100755 index 00000000..faa3b640 --- /dev/null +++ b/.jsdoc/flipclock/tmpl/properties.tmpl @@ -0,0 +1,110 @@ + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    + + + + + + <optional>
    + + + + <nullable>
    + +
    + + + + +
    Properties
    +
    +
    \ No newline at end of file diff --git a/.jsdoc/flipclock/tmpl/returns.tmpl b/.jsdoc/flipclock/tmpl/returns.tmpl new file mode 100755 index 00000000..d0704592 --- /dev/null +++ b/.jsdoc/flipclock/tmpl/returns.tmpl @@ -0,0 +1,19 @@ + +
    + +
    + + + +
    +
    + Type +
    +
    + +
    +
    + \ No newline at end of file diff --git a/.jsdoc/flipclock/tmpl/source.tmpl b/.jsdoc/flipclock/tmpl/source.tmpl new file mode 100755 index 00000000..e559b5d1 --- /dev/null +++ b/.jsdoc/flipclock/tmpl/source.tmpl @@ -0,0 +1,8 @@ + +
    +
    +
    +
    +
    \ No newline at end of file diff --git a/.jsdoc/flipclock/tmpl/tutorial.tmpl b/.jsdoc/flipclock/tmpl/tutorial.tmpl new file mode 100755 index 00000000..bc8ee36b --- /dev/null +++ b/.jsdoc/flipclock/tmpl/tutorial.tmpl @@ -0,0 +1,17 @@ +
    +
    + +

    + + + +
    + + 0) { ?> +
      +
    • +
    + +
    diff --git a/.jsdoc/flipclock/tmpl/type.tmpl b/.jsdoc/flipclock/tmpl/type.tmpl new file mode 100755 index 00000000..ec2c6c0d --- /dev/null +++ b/.jsdoc/flipclock/tmpl/type.tmpl @@ -0,0 +1,7 @@ + + +| + \ No newline at end of file diff --git a/CHANGE LOG.md b/CHANGE LOG.md index 0e06c714..0f1f7bf5 100644 --- a/CHANGE LOG.md +++ b/CHANGE LOG.md @@ -1,5 +1,32 @@ # FlipClock.js +#### 0.8.0 +##### 01/09/2014 + +*This update is a major refactor and contains a few breaking API changes.* + +- (API) Added new Flipclock.Uuid generator classes which is used for "cid", a unique id assigned to all objects created by FlipClock +- (API) Added FlipClock.Translator classes to provide an abstraction for translating strings in FlipClock +- (API) Added FlipClock.NumericList for numeric based clocks +- (API) Added new FlipClock.ListItem class handle all the list items instead of using jQuery and strings +- (API) Drastically simplified the FlipClock.Factory object. No longer passing the object to child classes as a property +- (API) Added new FlipClock.Event classes to facilitate event handling +- (API) Added new EnglishAlphaFace to handle alphabetical clocks +- (API) Added FlipClock.Divider class to handle the dividers instead of using strings and jQuery +- (API) Added new event handling to all application objects instead of using callbacks in properties +- (API) Added new event handling to all application objects instead of using callbacks in properties +- (API) Renamed Twenty Four Hour Clock source file +- (API) Renamed Twelve Hour Clock file +- (API) Renamed Minute Counter Face file +- (API) Renamed Hourly Clock Face file +- (API) Renamed Daily Counter File +- (Bug Fix) Removed leaky abstractions in FlipClock.Timer +- (Bug Fix) Removed leaky abstractions in FlipClock.Time +- (Bug Fix) Removed leaky abstractions in FlipClock.List +- (Bug Fix) Removed leaky abstractions in FlipClock.Face +- (Examples) Updated example to match all the new code changes + + #### 0.7.8 ##### 12/12/2014 diff --git a/Gruntfile.js b/Gruntfile.js deleted file mode 100644 index 1c34978e..00000000 --- a/Gruntfile.js +++ /dev/null @@ -1,56 +0,0 @@ -module.exports = function(grunt) { - - // Project configuration. - grunt.initConfig({ - pkg: grunt.file.readJSON('package.json'), - concat: { - css: { - src: [ - 'src/flipclock/css/flipclock.css' - ], - dest: 'compiled/flipclock.css', - }, - js: { - src: [ - 'src/flipclock/js/vendor/*.js', - 'src/flipclock/js/libs/core.js', - 'src/flipclock/js/libs/*.js', - 'src/flipclock/js/faces/twentyfourhourclock.js', - 'src/flipclock/js/faces/*.js', - 'src/flipclock/js/lang/*.js', - ], - dest: 'compiled/flipclock.js', - } - }, - uglify: { - options: { - banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n' - }, - dist: { - files: { - 'compiled/flipclock.min.js': ['<%= concat.js.dest %>'] - } - } - }, - watch: { - options: { - livereload: true - }, - scripts: { - files: ['<%= concat.js.src %>'], - tasks: ['concat'], - }, - css: { - files: ['<%= concat.css.src %>'], - tasks: ['concat'], - } - }, - }); - - grunt.loadNpmTasks('grunt-contrib-concat'); - grunt.loadNpmTasks('grunt-contrib-uglify'); - grunt.loadNpmTasks('grunt-contrib-watch'); - - // Default task(s). - grunt.registerTask('default', ['concat', 'uglify', 'watch']); -}; \ No newline at end of file diff --git a/README.md b/README.md index 8b3baf2d..99afdf2e 100644 --- a/README.md +++ b/README.md @@ -1,29 +1,73 @@ # FlipClock.js -### Installation +## Installation -FlipClock.js can be installed in the following ways: +FlipClock is designed to be used a UMD or ES6 module that can be required and +imported. NPM is the primary package manager. The CDN exposes `FlipClock` as a +global variable. -#### Bower +### NPM - bower install FlipClock +```npm install flipclock --save``` -#### Node (NPM) +### CDN - npm install flipclock +**Specific version** -#### Download .zip +`https://cdn.jsdelivr.net/npm/flipclock@/dist/flipclock.min.js` -[Download .ZIP](https://github.com/objectivehtml/FlipClock/releases) +**Always use latest version** + +`https://cdn.jsdelivr.net/npm/flipclock/dist/flipclock.min.js` + + + Download .ZIP + + +--- + +### New in v1.0 + +FlipClock originally was developed an example library for a computer science class that I taught. I never actually thought people would use it, let alone imagine how people would use it. It's been a long time coming, but FlipClock.js has been rewritten for a modern age with no dependencies. + +- Rewritten ES6 Syntax +- No dependencies, pure vanilla JS +- Import with Webpack, Rollup, Browserify with the UMD build +- Mobile friendly with responsive CSS +- Supports negative values +- Supports alpha values +- All new CSS themes for different flip effects +- All new clock faces +- Extensible and customizable +- Unit testing with Jest + +--- + +### Basic Usage + + import FlipClock from 'flipclock'; + + const el = document.querySelector('.clock'); + + const clock = new FlipClock(el, new Date, { + face: 'HourCounter' + }); + +--- + +### Collaborators + +- [Justin Kimbrell](https://github.com/objectivehtml) +- [Brian Espinosa](https://github.com/brianespinosa) --- -### Demo & Documentation +### Special Credit -Website and documentation at http://flipclockjs.com/ +Big thanks to all the examples on the Internet. But in particular, a huge thanks goes out to Adem Ilter who built [this example](http://codepen.io/ademilter/pen/czIGo), which provided the best animation and least amount of code to prove the concept. --- ### License -Copyright (c) 2013 Objective HTML, LCC shared under MIT LICENSE +[Licensed under MIT](./license.txt) diff --git a/bower.json b/bower.json index cf588af3..2fbfa611 100644 --- a/bower.json +++ b/bower.json @@ -8,8 +8,8 @@ ], "description": "FlipClock.js is a proper abstract object oriented clock and counter library with a realistic flip effect.", "main": [ - "compiled/flipclock.js", - "compiled/flipclock.css" + "dist/flipclock.js", + "dist/flipclock.css" ], "license": "MIT", "ignore": [ diff --git a/compiled/flipclock.css b/compiled/flipclock.css deleted file mode 100644 index 2914ce08..00000000 --- a/compiled/flipclock.css +++ /dev/null @@ -1,431 +0,0 @@ -/* Get the bourbon mixin from http://bourbon.io */ -/* Reset */ -.flip-clock-wrapper * { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - -o-box-sizing: border-box; - box-sizing: border-box; - -webkit-backface-visibility: hidden; - -moz-backface-visibility: hidden; - -ms-backface-visibility: hidden; - -o-backface-visibility: hidden; - backface-visibility: hidden; -} - -.flip-clock-wrapper a { - cursor: pointer; - text-decoration: none; - color: #ccc; } - -.flip-clock-wrapper a:hover { - color: #fff; } - -.flip-clock-wrapper ul { - list-style: none; } - -.flip-clock-wrapper.clearfix:before, -.flip-clock-wrapper.clearfix:after { - content: " "; - display: table; } - -.flip-clock-wrapper.clearfix:after { - clear: both; } - -.flip-clock-wrapper.clearfix { - *zoom: 1; } - -/* Main */ -.flip-clock-wrapper { - font: normal 11px "Helvetica Neue", Helvetica, sans-serif; - -webkit-user-select: none; } - -.flip-clock-meridium { - background: none !important; - box-shadow: 0 0 0 !important; - font-size: 36px !important; } - -.flip-clock-meridium a { color: #313333; } - -.flip-clock-wrapper { - text-align: center; - position: relative; - width: 100%; - margin: 1em; -} - -.flip-clock-wrapper:before, -.flip-clock-wrapper:after { - content: " "; /* 1 */ - display: table; /* 2 */ -} -.flip-clock-wrapper:after { - clear: both; -} - -/* Skeleton */ -.flip-clock-wrapper ul { - position: relative; - float: left; - margin: 5px; - width: 60px; - height: 90px; - font-size: 80px; - font-weight: bold; - line-height: 87px; - border-radius: 6px; - background: #000; -} - -.flip-clock-wrapper ul li { - z-index: 1; - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - line-height: 87px; - text-decoration: none !important; -} - -.flip-clock-wrapper ul li:first-child { - z-index: 2; } - -.flip-clock-wrapper ul li a { - display: block; - height: 100%; - -webkit-perspective: 200px; - -moz-perspective: 200px; - perspective: 200px; - margin: 0 !important; - overflow: visible !important; - cursor: default !important; } - -.flip-clock-wrapper ul li a div { - z-index: 1; - position: absolute; - left: 0; - width: 100%; - height: 50%; - font-size: 80px; - overflow: hidden; - outline: 1px solid transparent; } - -.flip-clock-wrapper ul li a div .shadow { - position: absolute; - width: 100%; - height: 100%; - z-index: 2; } - -.flip-clock-wrapper ul li a div.up { - -webkit-transform-origin: 50% 100%; - -moz-transform-origin: 50% 100%; - -ms-transform-origin: 50% 100%; - -o-transform-origin: 50% 100%; - transform-origin: 50% 100%; - top: 0; } - -.flip-clock-wrapper ul li a div.up:after { - content: ""; - position: absolute; - top: 44px; - left: 0; - z-index: 5; - width: 100%; - height: 3px; - background-color: #000; - background-color: rgba(0, 0, 0, 0.4); } - -.flip-clock-wrapper ul li a div.down { - -webkit-transform-origin: 50% 0; - -moz-transform-origin: 50% 0; - -ms-transform-origin: 50% 0; - -o-transform-origin: 50% 0; - transform-origin: 50% 0; - bottom: 0; - border-bottom-left-radius: 6px; - border-bottom-right-radius: 6px; -} - -.flip-clock-wrapper ul li a div div.inn { - position: absolute; - left: 0; - z-index: 1; - width: 100%; - height: 200%; - color: #ccc; - text-shadow: 0 1px 2px #000; - text-align: center; - background-color: #333; - border-radius: 6px; - font-size: 70px; } - -.flip-clock-wrapper ul li a div.up div.inn { - top: 0; } - -.flip-clock-wrapper ul li a div.down div.inn { - bottom: 0; } - -/* PLAY */ -.flip-clock-wrapper ul.play li.flip-clock-before { - z-index: 3; } - -.flip-clock-wrapper .flip { box-shadow: 0 2px 5px rgba(0, 0, 0, 0.7); } - -.flip-clock-wrapper ul.play li.flip-clock-active { - -webkit-animation: asd 0.5s 0.5s linear both; - -moz-animation: asd 0.5s 0.5s linear both; - animation: asd 0.5s 0.5s linear both; - z-index: 5; } - -.flip-clock-divider { - float: left; - display: inline-block; - position: relative; - width: 20px; - height: 100px; } - -.flip-clock-divider:first-child { - width: 0; } - -.flip-clock-dot { - display: block; - background: #323434; - width: 10px; - height: 10px; - position: absolute; - border-radius: 50%; - box-shadow: 0 0 5px rgba(0, 0, 0, 0.5); - left: 5px; } - -.flip-clock-divider .flip-clock-label { - position: absolute; - top: -1.5em; - right: -86px; - color: black; - text-shadow: none; } - -.flip-clock-divider.minutes .flip-clock-label { - right: -88px; } - -.flip-clock-divider.seconds .flip-clock-label { - right: -91px; } - -.flip-clock-dot.top { - top: 30px; } - -.flip-clock-dot.bottom { - bottom: 30px; } - -@-webkit-keyframes asd { - 0% { - z-index: 2; } - - 20% { - z-index: 4; } - - 100% { - z-index: 4; } } - -@-moz-keyframes asd { - 0% { - z-index: 2; } - - 20% { - z-index: 4; } - - 100% { - z-index: 4; } } - -@-o-keyframes asd { - 0% { - z-index: 2; } - - 20% { - z-index: 4; } - - 100% { - z-index: 4; } } - -@keyframes asd { - 0% { - z-index: 2; } - - 20% { - z-index: 4; } - - 100% { - z-index: 4; } } - -.flip-clock-wrapper ul.play li.flip-clock-active .down { - z-index: 2; - -webkit-animation: turn 0.5s 0.5s linear both; - -moz-animation: turn 0.5s 0.5s linear both; - animation: turn 0.5s 0.5s linear both; } - -@-webkit-keyframes turn { - 0% { - -webkit-transform: rotateX(90deg); } - - 100% { - -webkit-transform: rotateX(0deg); } } - -@-moz-keyframes turn { - 0% { - -moz-transform: rotateX(90deg); } - - 100% { - -moz-transform: rotateX(0deg); } } - -@-o-keyframes turn { - 0% { - -o-transform: rotateX(90deg); } - - 100% { - -o-transform: rotateX(0deg); } } - -@keyframes turn { - 0% { - transform: rotateX(90deg); } - - 100% { - transform: rotateX(0deg); } } - -.flip-clock-wrapper ul.play li.flip-clock-before .up { - z-index: 2; - -webkit-animation: turn2 0.5s linear both; - -moz-animation: turn2 0.5s linear both; - animation: turn2 0.5s linear both; } - -@-webkit-keyframes turn2 { - 0% { - -webkit-transform: rotateX(0deg); } - - 100% { - -webkit-transform: rotateX(-90deg); } } - -@-moz-keyframes turn2 { - 0% { - -moz-transform: rotateX(0deg); } - - 100% { - -moz-transform: rotateX(-90deg); } } - -@-o-keyframes turn2 { - 0% { - -o-transform: rotateX(0deg); } - - 100% { - -o-transform: rotateX(-90deg); } } - -@keyframes turn2 { - 0% { - transform: rotateX(0deg); } - - 100% { - transform: rotateX(-90deg); } } - -.flip-clock-wrapper ul li.flip-clock-active { - z-index: 3; } - -/* SHADOW */ -.flip-clock-wrapper ul.play li.flip-clock-before .up .shadow { - background: -moz-linear-gradient(top, rgba(0, 0, 0, 0.1) 0%, black 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(0, 0, 0, 0.1)), color-stop(100%, black)); - background: linear, top, rgba(0, 0, 0, 0.1) 0%, black 100%; - background: -o-linear-gradient(top, rgba(0, 0, 0, 0.1) 0%, black 100%); - background: -ms-linear-gradient(top, rgba(0, 0, 0, 0.1) 0%, black 100%); - background: linear, to bottom, rgba(0, 0, 0, 0.1) 0%, black 100%; - -webkit-animation: show 0.5s linear both; - -moz-animation: show 0.5s linear both; - animation: show 0.5s linear both; } - -.flip-clock-wrapper ul.play li.flip-clock-active .up .shadow { - background: -moz-linear-gradient(top, rgba(0, 0, 0, 0.1) 0%, black 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(0, 0, 0, 0.1)), color-stop(100%, black)); - background: linear, top, rgba(0, 0, 0, 0.1) 0%, black 100%; - background: -o-linear-gradient(top, rgba(0, 0, 0, 0.1) 0%, black 100%); - background: -ms-linear-gradient(top, rgba(0, 0, 0, 0.1) 0%, black 100%); - background: linear, to bottom, rgba(0, 0, 0, 0.1) 0%, black 100%; - -webkit-animation: hide 0.5s 0.3s linear both; - -moz-animation: hide 0.5s 0.3s linear both; - animation: hide 0.5s 0.3s linear both; } - -/*DOWN*/ -.flip-clock-wrapper ul.play li.flip-clock-before .down .shadow { - background: -moz-linear-gradient(top, black 0%, rgba(0, 0, 0, 0.1) 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, black), color-stop(100%, rgba(0, 0, 0, 0.1))); - background: linear, top, black 0%, rgba(0, 0, 0, 0.1) 100%; - background: -o-linear-gradient(top, black 0%, rgba(0, 0, 0, 0.1) 100%); - background: -ms-linear-gradient(top, black 0%, rgba(0, 0, 0, 0.1) 100%); - background: linear, to bottom, black 0%, rgba(0, 0, 0, 0.1) 100%; - -webkit-animation: show 0.5s linear both; - -moz-animation: show 0.5s linear both; - animation: show 0.5s linear both; } - -.flip-clock-wrapper ul.play li.flip-clock-active .down .shadow { - background: -moz-linear-gradient(top, black 0%, rgba(0, 0, 0, 0.1) 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, black), color-stop(100%, rgba(0, 0, 0, 0.1))); - background: linear, top, black 0%, rgba(0, 0, 0, 0.1) 100%; - background: -o-linear-gradient(top, black 0%, rgba(0, 0, 0, 0.1) 100%); - background: -ms-linear-gradient(top, black 0%, rgba(0, 0, 0, 0.1) 100%); - background: linear, to bottom, black 0%, rgba(0, 0, 0, 0.1) 100%; - -webkit-animation: hide 0.5s 0.3s linear both; - -moz-animation: hide 0.5s 0.3s linear both; - animation: hide 0.5s 0.2s linear both; } - -@-webkit-keyframes show { - 0% { - opacity: 0; } - - 100% { - opacity: 1; } } - -@-moz-keyframes show { - 0% { - opacity: 0; } - - 100% { - opacity: 1; } } - -@-o-keyframes show { - 0% { - opacity: 0; } - - 100% { - opacity: 1; } } - -@keyframes show { - 0% { - opacity: 0; } - - 100% { - opacity: 1; } } - -@-webkit-keyframes hide { - 0% { - opacity: 1; } - - 100% { - opacity: 0; } } - -@-moz-keyframes hide { - 0% { - opacity: 1; } - - 100% { - opacity: 0; } } - -@-o-keyframes hide { - 0% { - opacity: 1; } - - 100% { - opacity: 0; } } - -@keyframes hide { - 0% { - opacity: 1; } - - 100% { - opacity: 0; } } diff --git a/compiled/flipclock.js b/compiled/flipclock.js deleted file mode 100644 index 8d97c49f..00000000 --- a/compiled/flipclock.js +++ /dev/null @@ -1,2782 +0,0 @@ -/* - Base.js, version 1.1a - Copyright 2006-2010, Dean Edwards - License: http://www.opensource.org/licenses/mit-license.php -*/ - -var Base = function() { - // dummy -}; - -Base.extend = function(_instance, _static) { // subclass - - "use strict"; - - var extend = Base.prototype.extend; - - // build the prototype - Base._prototyping = true; - - var proto = new this(); - - extend.call(proto, _instance); - - proto.base = function() { - // call this method from any other method to invoke that method's ancestor - }; - - delete Base._prototyping; - - // create the wrapper for the constructor function - //var constructor = proto.constructor.valueOf(); //-dean - var constructor = proto.constructor; - var klass = proto.constructor = function() { - if (!Base._prototyping) { - if (this._constructing || this.constructor == klass) { // instantiation - this._constructing = true; - constructor.apply(this, arguments); - delete this._constructing; - } else if (arguments[0] !== null) { // casting - return (arguments[0].extend || extend).call(arguments[0], proto); - } - } - }; - - // build the class interface - klass.ancestor = this; - klass.extend = this.extend; - klass.forEach = this.forEach; - klass.implement = this.implement; - klass.prototype = proto; - klass.toString = this.toString; - klass.valueOf = function(type) { - //return (type == "object") ? klass : constructor; //-dean - return (type == "object") ? klass : constructor.valueOf(); - }; - extend.call(klass, _static); - // class initialisation - if (typeof klass.init == "function") klass.init(); - return klass; -}; - -Base.prototype = { - extend: function(source, value) { - if (arguments.length > 1) { // extending with a name/value pair - var ancestor = this[source]; - if (ancestor && (typeof value == "function") && // overriding a method? - // the valueOf() comparison is to avoid circular references - (!ancestor.valueOf || ancestor.valueOf() != value.valueOf()) && - /\bbase\b/.test(value)) { - // get the underlying method - var method = value.valueOf(); - // override - value = function() { - var previous = this.base || Base.prototype.base; - this.base = ancestor; - var returnValue = method.apply(this, arguments); - this.base = previous; - return returnValue; - }; - // point to the underlying method - value.valueOf = function(type) { - return (type == "object") ? value : method; - }; - value.toString = Base.toString; - } - this[source] = value; - } else if (source) { // extending with an object literal - var extend = Base.prototype.extend; - // if this object has a customised extend method then use it - if (!Base._prototyping && typeof this != "function") { - extend = this.extend || extend; - } - var proto = {toSource: null}; - // do the "toString" and other methods manually - var hidden = ["constructor", "toString", "valueOf"]; - // if we are prototyping then include the constructor - var i = Base._prototyping ? 0 : 1; - while (key = hidden[i++]) { - if (source[key] != proto[key]) { - extend.call(this, key, source[key]); - - } - } - // copy each of the source object's properties to this object - for (var key in source) { - if (!proto[key]) extend.call(this, key, source[key]); - } - } - return this; - } -}; - -// initialise -Base = Base.extend({ - constructor: function() { - this.extend(arguments[0]); - } -}, { - ancestor: Object, - version: "1.1", - - forEach: function(object, block, context) { - for (var key in object) { - if (this.prototype[key] === undefined) { - block.call(context, object[key], key, object); - } - } - }, - - implement: function() { - for (var i = 0; i < arguments.length; i++) { - if (typeof arguments[i] == "function") { - // if it's a function, call it - arguments[i](this.prototype); - } else { - // add the interface using the extend method - this.prototype.extend(arguments[i]); - } - } - return this; - }, - - toString: function() { - return String(this.valueOf()); - } -}); -/*jshint smarttabs:true */ - -var FlipClock; - -/** - * FlipClock.js - * - * @author Justin Kimbrell - * @copyright 2013 - Objective HTML, LLC - * @licesnse http://www.opensource.org/licenses/mit-license.php - */ - -(function($) { - - "use strict"; - - /** - * FlipFlock Helper - * - * @param object A jQuery object or CSS select - * @param int An integer used to start the clock (no. seconds) - * @param object An object of properties to override the default - */ - - FlipClock = function(obj, digit, options) { - if(digit instanceof Object && digit instanceof Date === false) { - options = digit; - digit = 0; - } - - return new FlipClock.Factory(obj, digit, options); - }; - - /** - * The global FlipClock.Lang object - */ - - FlipClock.Lang = {}; - - /** - * The Base FlipClock class is used to extend all other FlipFlock - * classes. It handles the callbacks and the basic setters/getters - * - * @param object An object of the default properties - * @param object An object of properties to override the default - */ - - FlipClock.Base = Base.extend({ - - /** - * Build Date - */ - - buildDate: '2014-12-12', - - /** - * Version - */ - - version: '0.7.7', - - /** - * Sets the default options - * - * @param object The default options - * @param object The override options - */ - - constructor: function(_default, options) { - if(typeof _default !== "object") { - _default = {}; - } - if(typeof options !== "object") { - options = {}; - } - this.setOptions($.extend(true, {}, _default, options)); - }, - - /** - * Delegates the callback to the defined method - * - * @param object The default options - * @param object The override options - */ - - callback: function(method) { - if(typeof method === "function") { - var args = []; - - for(var x = 1; x <= arguments.length; x++) { - if(arguments[x]) { - args.push(arguments[x]); - } - } - - method.apply(this, args); - } - }, - - /** - * Log a string into the console if it exists - * - * @param string The name of the option - * @return mixed - */ - - log: function(str) { - if(window.console && console.log) { - console.log(str); - } - }, - - /** - * Get an single option value. Returns false if option does not exist - * - * @param string The name of the option - * @return mixed - */ - - getOption: function(index) { - if(this[index]) { - return this[index]; - } - return false; - }, - - /** - * Get all options - * - * @return bool - */ - - getOptions: function() { - return this; - }, - - /** - * Set a single option value - * - * @param string The name of the option - * @param mixed The value of the option - */ - - setOption: function(index, value) { - this[index] = value; - }, - - /** - * Set a multiple options by passing a JSON object - * - * @param object The object with the options - * @param mixed The value of the option - */ - - setOptions: function(options) { - for(var key in options) { - if(typeof options[key] !== "undefined") { - this.setOption(key, options[key]); - } - } - } - - }); - -}(jQuery)); - -/*jshint smarttabs:true */ - -/** - * FlipClock.js - * - * @author Justin Kimbrell - * @copyright 2013 - Objective HTML, LLC - * @licesnse http://www.opensource.org/licenses/mit-license.php - */ - -(function($) { - - "use strict"; - - /** - * The FlipClock Face class is the base class in which to extend - * all other FlockClock.Face classes. - * - * @param object The parent FlipClock.Factory object - * @param object An object of properties to override the default - */ - - FlipClock.Face = FlipClock.Base.extend({ - - /** - * Sets whether or not the clock should start upon instantiation - */ - - autoStart: true, - - /** - * An array of jQuery objects used for the dividers (the colons) - */ - - dividers: [], - - /** - * An array of FlipClock.List objects - */ - - factory: false, - - /** - * An array of FlipClock.List objects - */ - - lists: [], - - /** - * Constructor - * - * @param object The parent FlipClock.Factory object - * @param object An object of properties to override the default - */ - - constructor: function(factory, options) { - this.dividers = []; - this.lists = []; - this.base(options); - this.factory = factory; - }, - - /** - * Build the clock face - */ - - build: function() { - if(this.autoStart) { - this.start(); - } - }, - - /** - * Creates a jQuery object used for the digit divider - * - * @param mixed The divider label text - * @param mixed Set true to exclude the dots in the divider. - * If not set, is false. - */ - - createDivider: function(label, css, excludeDots) { - if(typeof css == "boolean" || !css) { - excludeDots = css; - css = label; - } - - var dots = [ - '', - '' - ].join(''); - - if(excludeDots) { - dots = ''; - } - - label = this.factory.localize(label); - - var html = [ - '', - ''+(label ? label : '')+'', - dots, - '' - ]; - - var $html = $(html.join('')); - - this.dividers.push($html); - - return $html; - }, - - /** - * Creates a FlipClock.List object and appends it to the DOM - * - * @param mixed The digit to select in the list - * @param object An object to override the default properties - */ - - createList: function(digit, options) { - if(typeof digit === "object") { - options = digit; - digit = 0; - } - - var obj = new FlipClock.List(this.factory, digit, options); - - this.lists.push(obj); - - return obj; - }, - - /** - * Triggers when the clock is reset - */ - - reset: function() { - this.factory.time = new FlipClock.Time( - this.factory, - this.factory.original ? Math.round(this.factory.original) : 0, - { - minimumDigits: this.factory.minimumDigits - } - ); - - this.flip(this.factory.original, false); - }, - - /** - * Append a newly created list to the clock - */ - - appendDigitToClock: function(obj) { - obj.$el.append(false); - }, - - /** - * Add a digit to the clock face - */ - - addDigit: function(digit) { - var obj = this.createList(digit, { - classes: { - active: this.factory.classes.active, - before: this.factory.classes.before, - flip: this.factory.classes.flip - } - }); - - this.appendDigitToClock(obj); - }, - - /** - * Triggers when the clock is started - */ - - start: function() {}, - - /** - * Triggers when the time on the clock stops - */ - - stop: function() {}, - - /** - * Auto increments/decrements the value of the clock face - */ - - autoIncrement: function() { - if(!this.factory.countdown) { - this.increment(); - } - else { - this.decrement(); - } - }, - - /** - * Increments the value of the clock face - */ - - increment: function() { - this.factory.time.addSecond(); - }, - - /** - * Decrements the value of the clock face - */ - - decrement: function() { - if(this.factory.time.getTimeSeconds() == 0) { - this.factory.stop() - } - else { - this.factory.time.subSecond(); - } - }, - - /** - * Triggers when the numbers on the clock flip - */ - - flip: function(time, doNotAddPlayClass) { - var t = this; - - $.each(time, function(i, digit) { - var list = t.lists[i]; - - if(list) { - if(!doNotAddPlayClass && digit != list.digit) { - list.play(); - } - - list.select(digit); - } - else { - t.addDigit(digit); - } - }); - } - - }); - -}(jQuery)); - -/*jshint smarttabs:true */ - -/** - * FlipClock.js - * - * @author Justin Kimbrell - * @copyright 2013 - Objective HTML, LLC - * @licesnse http://www.opensource.org/licenses/mit-license.php - */ - -(function($) { - - "use strict"; - - /** - * The FlipClock Factory class is used to build the clock and manage - * all the public methods. - * - * @param object A jQuery object or CSS selector used to fetch - the wrapping DOM nodes - * @param mixed This is the digit used to set the clock. If an - object is passed, 0 will be used. - * @param object An object of properties to override the default - */ - - FlipClock.Factory = FlipClock.Base.extend({ - - /** - * The clock's animation rate. - * - * Note, currently this property doesn't do anything. - * This property is here to be used in the future to - * programmaticaly set the clock's animation speed - */ - - animationRate: 1000, - - /** - * Auto start the clock on page load (True|False) - */ - - autoStart: true, - - /** - * The callback methods - */ - - callbacks: { - destroy: false, - create: false, - init: false, - interval: false, - start: false, - stop: false, - reset: false - }, - - /** - * The CSS classes - */ - - classes: { - active: 'flip-clock-active', - before: 'flip-clock-before', - divider: 'flip-clock-divider', - dot: 'flip-clock-dot', - label: 'flip-clock-label', - flip: 'flip', - play: 'play', - wrapper: 'flip-clock-wrapper' - }, - - /** - * The name of the clock face class in use - */ - - clockFace: 'HourlyCounter', - - /** - * The name of the clock face class in use - */ - - countdown: false, - - /** - * The name of the default clock face class to use if the defined - * clockFace variable is not a valid FlipClock.Face object - */ - - defaultClockFace: 'HourlyCounter', - - /** - * The default language - */ - - defaultLanguage: 'english', - - /** - * The jQuery object - */ - - $el: false, - - /** - * The FlipClock.Face object - */ - - face: true, - - /** - * The language object after it has been loaded - */ - - lang: false, - - /** - * The language being used to display labels (string) - */ - - language: 'english', - - /** - * The minimum digits the clock must have - */ - - minimumDigits: 0, - - /** - * The original starting value of the clock. Used for the reset method. - */ - - original: false, - - /** - * Is the clock running? (True|False) - */ - - running: false, - - /** - * The FlipClock.Time object - */ - - time: false, - - /** - * The FlipClock.Timer object - */ - - timer: false, - - /** - * The jQuery object (depcrecated) - */ - - $wrapper: false, - - /** - * Constructor - * - * @param object The wrapping jQuery object - * @param object Number of seconds used to start the clock - * @param object An object override options - */ - - constructor: function(obj, digit, options) { - - if(!options) { - options = {}; - } - - this.lists = []; - this.running = false; - this.base(options); - - this.$el = $(obj).addClass(this.classes.wrapper); - - // Depcrated support of the $wrapper property. - this.$wrapper = this.$el; - - this.original = (digit instanceof Date) ? digit : (digit ? Math.round(digit) : 0); - - this.time = new FlipClock.Time(this, this.original, { - minimumDigits: this.minimumDigits, - animationRate: this.animationRate - }); - - this.timer = new FlipClock.Timer(this, options); - - this.loadLanguage(this.language); - - this.loadClockFace(this.clockFace, options); - - if(this.autoStart) { - this.start(); - } - - }, - - /** - * Load the FlipClock.Face object - * - * @param object The name of the FlickClock.Face class - * @param object An object override options - */ - - loadClockFace: function(name, options) { - var face, suffix = 'Face', hasStopped = false; - - name = name.ucfirst()+suffix; - - if(this.face.stop) { - this.stop(); - hasStopped = true; - } - - this.$el.html(''); - - this.time.minimumDigits = this.minimumDigits; - - if(FlipClock[name]) { - face = new FlipClock[name](this, options); - } - else { - face = new FlipClock[this.defaultClockFace+suffix](this, options); - } - - face.build(); - - this.face = face - - if(hasStopped) { - this.start(); - } - - return this.face; - }, - - /** - * Load the FlipClock.Lang object - * - * @param object The name of the language to load - */ - - loadLanguage: function(name) { - var lang; - - if(FlipClock.Lang[name.ucfirst()]) { - lang = FlipClock.Lang[name.ucfirst()]; - } - else if(FlipClock.Lang[name]) { - lang = FlipClock.Lang[name]; - } - else { - lang = FlipClock.Lang[this.defaultLanguage]; - } - - return this.lang = lang; - }, - - /** - * Localize strings into various languages - * - * @param string The index of the localized string - * @param object Optionally pass a lang object - */ - - localize: function(index, obj) { - var lang = this.lang; - - if(!index) { - return null; - } - - var lindex = index.toLowerCase(); - - if(typeof obj == "object") { - lang = obj; - } - - if(lang && lang[lindex]) { - return lang[lindex]; - } - - return index; - }, - - - /** - * Starts the clock - */ - - start: function(callback) { - var t = this; - - if(!t.running && (!t.countdown || t.countdown && t.time.time > 0)) { - t.face.start(t.time); - t.timer.start(function() { - t.flip(); - - if(typeof callback === "function") { - callback(); - } - }); - } - else { - t.log('Trying to start timer when countdown already at 0'); - } - }, - - /** - * Stops the clock - */ - - stop: function(callback) { - this.face.stop(); - this.timer.stop(callback); - - for(var x in this.lists) { - if (this.lists.hasOwnProperty(x)) { - this.lists[x].stop(); - } - } - }, - - /** - * Reset the clock - */ - - reset: function(callback) { - this.timer.reset(callback); - this.face.reset(); - }, - - /** - * Sets the clock time - */ - - setTime: function(time) { - this.time.time = time; - this.flip(true); - }, - - /** - * Get the clock time - * - * @return object Returns a FlipClock.Time object - */ - - getTime: function(time) { - return this.time; - }, - - /** - * Changes the increment of time to up or down (add/sub) - */ - - setCountdown: function(value) { - var running = this.running; - - this.countdown = value ? true : false; - - if(running) { - this.stop(); - this.start(); - } - }, - - /** - * Flip the digits on the clock - * - * @param array An array of digits - */ - flip: function(doNotAddPlayClass) { - this.face.flip(false, doNotAddPlayClass); - } - - }); - -}(jQuery)); - -/*jshint smarttabs:true */ - -/** - * FlipClock.js - * - * @author Justin Kimbrell - * @copyright 2013 - Objective HTML, LLC - * @licesnse http://www.opensource.org/licenses/mit-license.php - */ - -(function($) { - - "use strict"; - - /** - * The FlipClock List class is used to build the list used to create - * the card flip effect. This object fascilates selecting the correct - * node by passing a specific digit. - * - * @param object A FlipClock.Factory object - * @param mixed This is the digit used to set the clock. If an - * object is passed, 0 will be used. - * @param object An object of properties to override the default - */ - - FlipClock.List = FlipClock.Base.extend({ - - /** - * The digit (0-9) - */ - - digit: 0, - - /** - * The CSS classes - */ - - classes: { - active: 'flip-clock-active', - before: 'flip-clock-before', - flip: 'flip' - }, - - /** - * The parent FlipClock.Factory object - */ - - factory: false, - - /** - * The jQuery object - */ - - $el: false, - - /** - * The jQuery object (deprecated) - */ - - $obj: false, - - /** - * The items in the list - */ - - items: [], - - /** - * The last digit - */ - - lastDigit: 0, - - /** - * Constructor - * - * @param object A FlipClock.Factory object - * @param int An integer use to select the correct digit - * @param object An object to override the default properties - */ - - constructor: function(factory, digit, options) { - this.factory = factory; - this.digit = digit; - this.lastDigit = digit; - this.$el = this.createList(); - - // Depcrated support of the $obj property. - this.$obj = this.$el; - - if(digit > 0) { - this.select(digit); - } - - this.factory.$el.append(this.$el); - }, - - /** - * Select the digit in the list - * - * @param int A digit 0-9 - */ - - select: function(digit) { - if(typeof digit === "undefined") { - digit = this.digit; - } - else { - this.digit = digit; - } - - if(this.digit != this.lastDigit) { - var $delete = this.$el.find('.'+this.classes.before).removeClass(this.classes.before); - - this.$el.find('.'+this.classes.active).removeClass(this.classes.active) - .addClass(this.classes.before); - - this.appendListItem(this.classes.active, this.digit); - - $delete.remove(); - - this.lastDigit = this.digit; - } - }, - - /** - * Adds the play class to the DOM object - */ - - play: function() { - this.$el.addClass(this.factory.classes.play); - }, - - /** - * Removes the play class to the DOM object - */ - - stop: function() { - var t = this; - - setTimeout(function() { - t.$el.removeClass(t.factory.classes.play); - }, this.factory.timer.interval); - }, - - /** - * Creates the list item HTML and returns as a string - */ - - createListItem: function(css, value) { - return [ - '
  • ', - '', - '
    ', - '
    ', - '
    '+(value ? value : '')+'
    ', - '
    ', - '
    ', - '
    ', - '
    '+(value ? value : '')+'
    ', - '
    ', - '
    ', - '
  • ' - ].join(''); - }, - - /** - * Append the list item to the parent DOM node - */ - - appendListItem: function(css, value) { - var html = this.createListItem(css, value); - - this.$el.append(html); - }, - - /** - * Create the list of digits and appends it to the DOM object - */ - - createList: function() { - - var lastDigit = this.getPrevDigit() ? this.getPrevDigit() : this.digit; - - var html = $([ - '
      ', - this.createListItem(this.classes.before, lastDigit), - this.createListItem(this.classes.active, this.digit), - '
    ' - ].join('')); - - return html; - }, - - getNextDigit: function() { - return this.digit == 9 ? 0 : this.digit + 1; - }, - - getPrevDigit: function() { - return this.digit == 0 ? 9 : this.digit - 1; - } - - }); - - -}(jQuery)); - -/*jshint smarttabs:true */ - -/** - * FlipClock.js - * - * @author Justin Kimbrell - * @copyright 2013 - Objective HTML, LLC - * @licesnse http://www.opensource.org/licenses/mit-license.php - */ - -(function($) { - - "use strict"; - - /** - * Capitalize the first letter in a string - * - * @return string - */ - - String.prototype.ucfirst = function() { - return this.substr(0, 1).toUpperCase() + this.substr(1); - }; - - /** - * jQuery helper method - * - * @param int An integer used to start the clock (no. seconds) - * @param object An object of properties to override the default - */ - - $.fn.FlipClock = function(digit, options) { - return new FlipClock($(this), digit, options); - }; - - /** - * jQuery helper method - * - * @param int An integer used to start the clock (no. seconds) - * @param object An object of properties to override the default - */ - - $.fn.flipClock = function(digit, options) { - return $.fn.FlipClock(digit, options); - }; - -}(jQuery)); - -/*jshint smarttabs:true */ - -/** - * FlipClock.js - * - * @author Justin Kimbrell - * @copyright 2013 - Objective HTML, LLC - * @licesnse http://www.opensource.org/licenses/mit-license.php - */ - -(function($) { - - "use strict"; - - /** - * The FlipClock Time class is used to manage all the time - * calculations. - * - * @param object A FlipClock.Factory object - * @param mixed This is the digit used to set the clock. If an - * object is passed, 0 will be used. - * @param object An object of properties to override the default - */ - - FlipClock.Time = FlipClock.Base.extend({ - - /** - * The time (in seconds) or a date object - */ - - time: 0, - - /** - * The parent FlipClock.Factory object - */ - - factory: false, - - /** - * The minimum number of digits the clock face must have - */ - - minimumDigits: 0, - - /** - * Constructor - * - * @param object A FlipClock.Factory object - * @param int An integer use to select the correct digit - * @param object An object to override the default properties - */ - - constructor: function(factory, time, options) { - if(typeof options != "object") { - options = {}; - } - - if(!options.minimumDigits) { - options.minimumDigits = factory.minimumDigits; - } - - this.base(options); - this.factory = factory; - - if(time) { - this.time = time; - } - }, - - /** - * Convert a string or integer to an array of digits - * - * @param mixed String or Integer of digits - * @return array An array of digits - */ - - convertDigitsToArray: function(str) { - var data = []; - - str = str.toString(); - - for(var x = 0;x < str.length; x++) { - if(str[x].match(/^\d*$/g)) { - data.push(str[x]); - } - } - - return data; - }, - - /** - * Get a specific digit from the time integer - * - * @param int The specific digit to select from the time - * @return mixed Returns FALSE if no digit is found, otherwise - * the method returns the defined digit - */ - - digit: function(i) { - var timeStr = this.toString(); - var length = timeStr.length; - - if(timeStr[length - i]) { - return timeStr[length - i]; - } - - return false; - }, - - /** - * Formats any array of digits into a valid array of digits - * - * @param mixed An array of digits - * @return array An array of digits - */ - - digitize: function(obj) { - var data = []; - - $.each(obj, function(i, value) { - value = value.toString(); - - if(value.length == 1) { - value = '0'+value; - } - - for(var x = 0; x < value.length; x++) { - data.push(value.charAt(x)); - } - }); - - if(data.length > this.minimumDigits) { - this.minimumDigits = data.length; - } - - if(this.minimumDigits > data.length) { - for(var x = data.length; x < this.minimumDigits; x++) { - data.unshift('0'); - } - } - - return data; - }, - - /** - * Gets a new Date object for the current time - * - * @return array Returns a Date object - */ - - getDateObject: function() { - if(this.time instanceof Date) { - return this.time; - } - - return new Date((new Date()).getTime() + this.getTimeSeconds() * 1000); - }, - - /** - * Gets a digitized daily counter - * - * @return object Returns a digitized object - */ - - getDayCounter: function(includeSeconds) { - var digits = [ - this.getDays(), - this.getHours(true), - this.getMinutes(true) - ]; - - if(includeSeconds) { - digits.push(this.getSeconds(true)); - } - - return this.digitize(digits); - }, - - /** - * Gets number of days - * - * @param bool Should perform a modulus? If not sent, then no. - * @return int Retuns a floored integer - */ - - getDays: function(mod) { - var days = this.getTimeSeconds() / 60 / 60 / 24; - - if(mod) { - days = days % 7; - } - - return Math.floor(days); - }, - - /** - * Gets an hourly breakdown - * - * @return object Returns a digitized object - */ - - getHourCounter: function() { - var obj = this.digitize([ - this.getHours(), - this.getMinutes(true), - this.getSeconds(true) - ]); - - return obj; - }, - - /** - * Gets an hourly breakdown - * - * @return object Returns a digitized object - */ - - getHourly: function() { - return this.getHourCounter(); - }, - - /** - * Gets number of hours - * - * @param bool Should perform a modulus? If not sent, then no. - * @return int Retuns a floored integer - */ - - getHours: function(mod) { - var hours = this.getTimeSeconds() / 60 / 60; - - if(mod) { - hours = hours % 24; - } - - return Math.floor(hours); - }, - - /** - * Gets the twenty-four hour time - * - * @return object returns a digitized object - */ - - getMilitaryTime: function(date, showSeconds) { - if(typeof showSeconds === "undefined") { - showSeconds = true; - } - - if(!date) { - date = this.getDateObject(); - } - - var data = [ - date.getHours(), - date.getMinutes() - ]; - - if(showSeconds === true) { - data.push(date.getSeconds()); - } - - return this.digitize(data); - }, - - /** - * Gets number of minutes - * - * @param bool Should perform a modulus? If not sent, then no. - * @return int Retuns a floored integer - */ - - getMinutes: function(mod) { - var minutes = this.getTimeSeconds() / 60; - - if(mod) { - minutes = minutes % 60; - } - - return Math.floor(minutes); - }, - - /** - * Gets a minute breakdown - */ - - getMinuteCounter: function() { - var obj = this.digitize([ - this.getMinutes(), - this.getSeconds(true) - ]); - - return obj; - }, - - /** - * Gets time count in seconds regardless of if targetting date or not. - * - * @return int Returns a floored integer - */ - - getTimeSeconds: function(date) { - if(!date) { - date = new Date(); - } - - if (this.time instanceof Date) { - if (this.factory.countdown) { - return Math.max(this.time.getTime()/1000 - date.getTime()/1000,0); - } else { - return date.getTime()/1000 - this.time.getTime()/1000 ; - } - } else { - return this.time; - } - }, - - /** - * Gets the current twelve hour time - * - * @return object Returns a digitized object - */ - - getTime: function(date, showSeconds) { - if(typeof showSeconds === "undefined") { - showSeconds = true; - } - - if(!date) { - date = this.getDateObject(); - } - - console.log(date); - - - var hours = date.getHours(); - var merid = hours > 12 ? 'PM' : 'AM'; - var data = [ - hours > 12 ? hours - 12 : (hours === 0 ? 12 : hours), - date.getMinutes() - ]; - - if(showSeconds === true) { - data.push(date.getSeconds()); - } - - return this.digitize(data); - }, - - /** - * Gets number of seconds - * - * @param bool Should perform a modulus? If not sent, then no. - * @return int Retuns a ceiled integer - */ - - getSeconds: function(mod) { - var seconds = this.getTimeSeconds(); - - if(mod) { - if(seconds == 60) { - seconds = 0; - } - else { - seconds = seconds % 60; - } - } - - return Math.ceil(seconds); - }, - - /** - * Gets number of weeks - * - * @param bool Should perform a modulus? If not sent, then no. - * @return int Retuns a floored integer - */ - - getWeeks: function(mod) { - var weeks = this.getTimeSeconds() / 60 / 60 / 24 / 7; - - if(mod) { - weeks = weeks % 52; - } - - return Math.floor(weeks); - }, - - /** - * Removes a specific number of leading zeros from the array. - * This method prevents you from removing too many digits, even - * if you try. - * - * @param int Total number of digits to remove - * @return array An array of digits - */ - - removeLeadingZeros: function(totalDigits, digits) { - var total = 0; - var newArray = []; - - $.each(digits, function(i, digit) { - if(i < totalDigits) { - total += parseInt(digits[i], 10); - } - else { - newArray.push(digits[i]); - } - }); - - if(total === 0) { - return newArray; - } - - return digits; - }, - - /** - * Adds X second to the current time - */ - - addSeconds: function(x) { - if(this.time instanceof Date) { - this.time.setSeconds(this.time.getSeconds() + x); - } - else { - this.time += x; - } - }, - - /** - * Adds 1 second to the current time - */ - - addSecond: function() { - this.addSeconds(1); - }, - - /** - * Substracts X seconds from the current time - */ - - subSeconds: function(x) { - if(this.time instanceof Date) { - this.time.setSeconds(this.time.getSeconds() - x); - } - else { - this.time -= x; - } - }, - - /** - * Substracts 1 second from the current time - */ - - subSecond: function() { - this.subSeconds(1); - }, - - /** - * Converts the object to a human readable string - */ - - toString: function() { - return this.getTimeSeconds().toString(); - } - - /* - getYears: function() { - return Math.floor(this.time / 60 / 60 / 24 / 7 / 52); - }, - - getDecades: function() { - return Math.floor(this.getWeeks() / 10); - }*/ - }); - -}(jQuery)); - -/*jshint smarttabs:true */ - -/** - * FlipClock.js - * - * @author Justin Kimbrell - * @copyright 2013 - Objective HTML, LLC - * @licesnse http://www.opensource.org/licenses/mit-license.php - */ - -(function($) { - - "use strict"; - - /** - * The FlipClock.Timer object managers the JS timers - * - * @param object The parent FlipClock.Factory object - * @param object Override the default options - */ - - FlipClock.Timer = FlipClock.Base.extend({ - - /** - * Callbacks - */ - - callbacks: { - destroy: false, - create: false, - init: false, - interval: false, - start: false, - stop: false, - reset: false - }, - - /** - * FlipClock timer count (how many intervals have passed) - */ - - count: 0, - - /** - * The parent FlipClock.Factory object - */ - - factory: false, - - /** - * Timer interval (1 second by default) - */ - - interval: 1000, - - /** - * The rate of the animation in milliseconds (not currently in use) - */ - - animationRate: 1000, - - /** - * Constructor - * - * @return void - */ - - constructor: function(factory, options) { - this.base(options); - this.factory = factory; - this.callback(this.callbacks.init); - this.callback(this.callbacks.create); - }, - - /** - * This method gets the elapsed the time as an interger - * - * @return void - */ - - getElapsed: function() { - return this.count * this.interval; - }, - - /** - * This method gets the elapsed the time as a Date object - * - * @return void - */ - - getElapsedTime: function() { - return new Date(this.time + this.getElapsed()); - }, - - /** - * This method is resets the timer - * - * @param callback This method resets the timer back to 0 - * @return void - */ - - reset: function(callback) { - clearInterval(this.timer); - this.count = 0; - this._setInterval(callback); - this.callback(this.callbacks.reset); - }, - - /** - * This method is starts the timer - * - * @param callback A function that is called once the timer is destroyed - * @return void - */ - - start: function(callback) { - this.factory.running = true; - this._createTimer(callback); - this.callback(this.callbacks.start); - }, - - /** - * This method is stops the timer - * - * @param callback A function that is called once the timer is destroyed - * @return void - */ - - stop: function(callback) { - this.factory.running = false; - this._clearInterval(callback); - this.callback(this.callbacks.stop); - this.callback(callback); - }, - - /** - * Clear the timer interval - * - * @return void - */ - - _clearInterval: function() { - clearInterval(this.timer); - }, - - /** - * Create the timer object - * - * @param callback A function that is called once the timer is created - * @return void - */ - - _createTimer: function(callback) { - this._setInterval(callback); - }, - - /** - * Destroy the timer object - * - * @param callback A function that is called once the timer is destroyed - * @return void - */ - - _destroyTimer: function(callback) { - this._clearInterval(); - this.timer = false; - this.callback(callback); - this.callback(this.callbacks.destroy); - }, - - /** - * This method is called each time the timer interval is ran - * - * @param callback A function that is called once the timer is destroyed - * @return void - */ - - _interval: function(callback) { - this.callback(this.callbacks.interval); - this.callback(callback); - this.count++; - }, - - /** - * This sets the timer interval - * - * @param callback A function that is called once the timer is destroyed - * @return void - */ - - _setInterval: function(callback) { - var t = this; - - t._interval(callback); - - t.timer = setInterval(function() { - t._interval(callback); - }, this.interval); - } - - }); - -}(jQuery)); - -(function($) { - - /** - * Twenty-Four Hour Clock Face - * - * This class will generate a twenty-four our clock for FlipClock.js - * - * @param object The parent FlipClock.Factory object - * @param object An object of properties to override the default - */ - - FlipClock.TwentyFourHourClockFace = FlipClock.Face.extend({ - - /** - * Constructor - * - * @param object The parent FlipClock.Factory object - * @param object An object of properties to override the default - */ - - constructor: function(factory, options) { - this.base(factory, options); - }, - - /** - * Build the clock face - * - * @param object Pass the time that should be used to display on the clock. - */ - - build: function(time) { - var t = this; - var children = this.factory.$el.find('ul'); - - if(!this.factory.time.time) { - this.factory.original = new Date(); - - this.factory.time = new FlipClock.Time(this.factory, this.factory.original); - } - - var time = time ? time : this.factory.time.getMilitaryTime(false, this.showSeconds); - - if(time.length > children.length) { - $.each(time, function(i, digit) { - t.createList(digit); - }); - } - - this.createDivider(); - this.createDivider(); - - $(this.dividers[0]).insertBefore(this.lists[this.lists.length - 2].$el); - $(this.dividers[1]).insertBefore(this.lists[this.lists.length - 4].$el); - - this.base(); - }, - - /** - * Flip the clock face - */ - - flip: function(time, doNotAddPlayClass) { - this.autoIncrement(); - - time = time ? time : this.factory.time.getMilitaryTime(false, this.showSeconds); - - this.base(time, doNotAddPlayClass); - } - - }); - -}(jQuery)); -(function($) { - - /** - * Counter Clock Face - * - * This class will generate a generice flip counter. The timer has been - * disabled. clock.increment() and clock.decrement() have been added. - * - * @param object The parent FlipClock.Factory object - * @param object An object of properties to override the default - */ - - FlipClock.CounterFace = FlipClock.Face.extend({ - - /** - * Tells the counter clock face if it should auto-increment - */ - - shouldAutoIncrement: false, - - /** - * Constructor - * - * @param object The parent FlipClock.Factory object - * @param object An object of properties to override the default - */ - - constructor: function(factory, options) { - - if(typeof options != "object") { - options = {}; - } - - factory.autoStart = options.autoStart ? true : false; - - if(options.autoStart) { - this.shouldAutoIncrement = true; - } - - factory.increment = function() { - factory.countdown = false; - factory.setTime(factory.getTime().getTimeSeconds() + 1); - }; - - factory.decrement = function() { - factory.countdown = true; - var time = factory.getTime().getTimeSeconds(); - if(time > 0) { - factory.setTime(time - 1); - } - }; - - factory.setValue = function(digits) { - factory.setTime(digits); - }; - - factory.setCounter = function(digits) { - factory.setTime(digits); - }; - - this.base(factory, options); - }, - - /** - * Build the clock face - */ - - build: function() { - var t = this; - var children = this.factory.$el.find('ul'); - var time = this.factory.getTime().digitize([this.factory.getTime().time]); - - if(time.length > children.length) { - $.each(time, function(i, digit) { - var list = t.createList(digit); - - list.select(digit); - }); - - } - - $.each(this.lists, function(i, list) { - list.play(); - }); - - this.base(); - }, - - /** - * Flip the clock face - */ - - flip: function(time, doNotAddPlayClass) { - if(this.shouldAutoIncrement) { - this.autoIncrement(); - } - - if(!time) { - time = this.factory.getTime().digitize([this.factory.getTime().time]); - } - - this.base(time, doNotAddPlayClass); - }, - - /** - * Reset the clock face - */ - - reset: function() { - this.factory.time = new FlipClock.Time( - this.factory, - this.factory.original ? Math.round(this.factory.original) : 0 - ); - - this.flip(); - } - }); - -}(jQuery)); -(function($) { - - /** - * Daily Counter Clock Face - * - * This class will generate a daily counter for FlipClock.js. A - * daily counter will track days, hours, minutes, and seconds. If - * the number of available digits is exceeded in the count, a new - * digit will be created. - * - * @param object The parent FlipClock.Factory object - * @param object An object of properties to override the default - */ - - FlipClock.DailyCounterFace = FlipClock.Face.extend({ - - showSeconds: true, - - /** - * Constructor - * - * @param object The parent FlipClock.Factory object - * @param object An object of properties to override the default - */ - - constructor: function(factory, options) { - this.base(factory, options); - }, - - /** - * Build the clock face - */ - - build: function(time) { - var t = this; - var children = this.factory.$el.find('ul'); - var offset = 0; - - time = time ? time : this.factory.time.getDayCounter(this.showSeconds); - - if(time.length > children.length) { - $.each(time, function(i, digit) { - t.createList(digit); - }); - } - - if(this.showSeconds) { - $(this.createDivider('Seconds')).insertBefore(this.lists[this.lists.length - 2].$el); - } - else - { - offset = 2; - } - - $(this.createDivider('Minutes')).insertBefore(this.lists[this.lists.length - 4 + offset].$el); - $(this.createDivider('Hours')).insertBefore(this.lists[this.lists.length - 6 + offset].$el); - $(this.createDivider('Days', true)).insertBefore(this.lists[0].$el); - - this.base(); - }, - - /** - * Flip the clock face - */ - - flip: function(time, doNotAddPlayClass) { - if(!time) { - time = this.factory.time.getDayCounter(this.showSeconds); - } - - this.autoIncrement(); - - this.base(time, doNotAddPlayClass); - } - - }); - -}(jQuery)); -(function($) { - - /** - * Hourly Counter Clock Face - * - * This class will generate an hourly counter for FlipClock.js. An - * hour counter will track hours, minutes, and seconds. If number of - * available digits is exceeded in the count, a new digit will be - * created. - * - * @param object The parent FlipClock.Factory object - * @param object An object of properties to override the default - */ - - FlipClock.HourlyCounterFace = FlipClock.Face.extend({ - - // clearExcessDigits: true, - - /** - * Constructor - * - * @param object The parent FlipClock.Factory object - * @param object An object of properties to override the default - */ - - constructor: function(factory, options) { - this.base(factory, options); - }, - - /** - * Build the clock face - */ - - build: function(excludeHours, time) { - var t = this; - var children = this.factory.$el.find('ul'); - - time = time ? time : this.factory.time.getHourCounter(); - - if(time.length > children.length) { - $.each(time, function(i, digit) { - t.createList(digit); - }); - } - - $(this.createDivider('Seconds')).insertBefore(this.lists[this.lists.length - 2].$el); - $(this.createDivider('Minutes')).insertBefore(this.lists[this.lists.length - 4].$el); - - if(!excludeHours) { - $(this.createDivider('Hours', true)).insertBefore(this.lists[0].$el); - } - - this.base(); - }, - - /** - * Flip the clock face - */ - - flip: function(time, doNotAddPlayClass) { - if(!time) { - time = this.factory.time.getHourCounter(); - } - - this.autoIncrement(); - - this.base(time, doNotAddPlayClass); - }, - - /** - * Append a newly created list to the clock - */ - - appendDigitToClock: function(obj) { - this.base(obj); - - this.dividers[0].insertAfter(this.dividers[0].next()); - } - - }); - -}(jQuery)); -(function($) { - - /** - * Minute Counter Clock Face - * - * This class will generate a minute counter for FlipClock.js. A - * minute counter will track minutes and seconds. If an hour is - * reached, the counter will reset back to 0. (4 digits max) - * - * @param object The parent FlipClock.Factory object - * @param object An object of properties to override the default - */ - - FlipClock.MinuteCounterFace = FlipClock.HourlyCounterFace.extend({ - - clearExcessDigits: false, - - /** - * Constructor - * - * @param object The parent FlipClock.Factory object - * @param object An object of properties to override the default - */ - - constructor: function(factory, options) { - this.base(factory, options); - }, - - /** - * Build the clock face - */ - - build: function() { - this.base(true, this.factory.time.getMinuteCounter()); - }, - - /** - * Flip the clock face - */ - - flip: function(time, doNotAddPlayClass) { - if(!time) { - time = this.factory.time.getMinuteCounter(); - } - - this.base(time, doNotAddPlayClass); - } - - }); - -}(jQuery)); -(function($) { - - /** - * Twelve Hour Clock Face - * - * This class will generate a twelve hour clock for FlipClock.js - * - * @param object The parent FlipClock.Factory object - * @param object An object of properties to override the default - */ - - FlipClock.TwelveHourClockFace = FlipClock.TwentyFourHourClockFace.extend({ - - /** - * The meridium jQuery DOM object - */ - - meridium: false, - - /** - * The meridium text as string for easy access - */ - - meridiumText: 'AM', - - /** - * Build the clock face - * - * @param object Pass the time that should be used to display on the clock. - */ - - build: function() { - var t = this; - - var time = this.factory.time.getTime(false, this.showSeconds); - - this.base(time); - this.meridiumText = this.getMeridium(); - this.meridium = $([ - '' - ].join('')); - - this.meridium.insertAfter(this.lists[this.lists.length-1].$el); - }, - - /** - * Flip the clock face - */ - - flip: function(time, doNotAddPlayClass) { - if(this.meridiumText != this.getMeridium()) { - this.meridiumText = this.getMeridium(); - this.meridium.find('a').html(this.meridiumText); - } - this.base(this.factory.time.getTime(false, this.showSeconds), doNotAddPlayClass); - }, - - /** - * Get the current meridium - * - * @return string Returns the meridium (AM|PM) - */ - - getMeridium: function() { - return new Date().getHours() >= 12 ? 'PM' : 'AM'; - }, - - /** - * Is it currently in the post-medirium? - * - * @return bool Returns true or false - */ - - isPM: function() { - return this.getMeridium() == 'PM' ? true : false; - }, - - /** - * Is it currently before the post-medirium? - * - * @return bool Returns true or false - */ - - isAM: function() { - return this.getMeridium() == 'AM' ? true : false; - } - - }); - -}(jQuery)); -(function($) { - - /** - * FlipClock Arabic Language Pack - * - * This class will be used to translate tokens into the Arabic language. - * - */ - - FlipClock.Lang.Arabic = { - - 'years' : 'سنوات', - 'months' : 'شهور', - 'days' : 'أيام', - 'hours' : 'ساعات', - 'minutes' : 'دقائق', - 'seconds' : 'ثواني' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['ar'] = FlipClock.Lang.Arabic; - FlipClock.Lang['ar-ar'] = FlipClock.Lang.Arabic; - FlipClock.Lang['arabic'] = FlipClock.Lang.Arabic; - -}(jQuery)); -(function($) { - - /** - * FlipClock Danish Language Pack - * - * This class will used to translate tokens into the Danish language. - * - */ - - FlipClock.Lang.Danish = { - - 'years' : 'År', - 'months' : 'Måneder', - 'days' : 'Dage', - 'hours' : 'Timer', - 'minutes' : 'Minutter', - 'seconds' : 'Sekunder' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['da'] = FlipClock.Lang.Danish; - FlipClock.Lang['da-dk'] = FlipClock.Lang.Danish; - FlipClock.Lang['danish'] = FlipClock.Lang.Danish; - -}(jQuery)); -(function($) { - - /** - * FlipClock German Language Pack - * - * This class will used to translate tokens into the German language. - * - */ - - FlipClock.Lang.German = { - - 'years' : 'Jahre', - 'months' : 'Monate', - 'days' : 'Tage', - 'hours' : 'Stunden', - 'minutes' : 'Minuten', - 'seconds' : 'Sekunden' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['de'] = FlipClock.Lang.German; - FlipClock.Lang['de-de'] = FlipClock.Lang.German; - FlipClock.Lang['german'] = FlipClock.Lang.German; - -}(jQuery)); -(function($) { - - /** - * FlipClock English Language Pack - * - * This class will used to translate tokens into the English language. - * - */ - - FlipClock.Lang.English = { - - 'years' : 'Years', - 'months' : 'Months', - 'days' : 'Days', - 'hours' : 'Hours', - 'minutes' : 'Minutes', - 'seconds' : 'Seconds' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['en'] = FlipClock.Lang.English; - FlipClock.Lang['en-us'] = FlipClock.Lang.English; - FlipClock.Lang['english'] = FlipClock.Lang.English; - -}(jQuery)); -(function($) { - - /** - * FlipClock Spanish Language Pack - * - * This class will used to translate tokens into the Spanish language. - * - */ - - FlipClock.Lang.Spanish = { - - 'years' : 'Años', - 'months' : 'Meses', - 'days' : 'Días', - 'hours' : 'Horas', - 'minutes' : 'Minutos', - 'seconds' : 'Segundos' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['es'] = FlipClock.Lang.Spanish; - FlipClock.Lang['es-es'] = FlipClock.Lang.Spanish; - FlipClock.Lang['spanish'] = FlipClock.Lang.Spanish; - -}(jQuery)); -(function($) { - - /** - * FlipClock Finnish Language Pack - * - * This class will used to translate tokens into the Finnish language. - * - */ - - FlipClock.Lang.Finnish = { - - 'years' : 'Vuotta', - 'months' : 'Kuukautta', - 'days' : 'Päivää', - 'hours' : 'Tuntia', - 'minutes' : 'Minuuttia', - 'seconds' : 'Sekuntia' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['fi'] = FlipClock.Lang.Finnish; - FlipClock.Lang['fi-fi'] = FlipClock.Lang.Finnish; - FlipClock.Lang['finnish'] = FlipClock.Lang.Finnish; - -}(jQuery)); - -(function($) { - - /** - * FlipClock Canadian French Language Pack - * - * This class will used to translate tokens into the Canadian French language. - * - */ - - FlipClock.Lang.French = { - - 'years' : 'Ans', - 'months' : 'Mois', - 'days' : 'Jours', - 'hours' : 'Heures', - 'minutes' : 'Minutes', - 'seconds' : 'Secondes' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['fr'] = FlipClock.Lang.French; - FlipClock.Lang['fr-ca'] = FlipClock.Lang.French; - FlipClock.Lang['french'] = FlipClock.Lang.French; - -}(jQuery)); - -(function($) { - - /** - * FlipClock Italian Language Pack - * - * This class will used to translate tokens into the Italian language. - * - */ - - FlipClock.Lang.Italian = { - - 'years' : 'Anni', - 'months' : 'Mesi', - 'days' : 'Giorni', - 'hours' : 'Ore', - 'minutes' : 'Minuti', - 'seconds' : 'Secondi' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['it'] = FlipClock.Lang.Italian; - FlipClock.Lang['it-it'] = FlipClock.Lang.Italian; - FlipClock.Lang['italian'] = FlipClock.Lang.Italian; - -}(jQuery)); - -(function($) { - - /** - * FlipClock Latvian Language Pack - * - * This class will used to translate tokens into the Latvian language. - * - */ - - FlipClock.Lang.Latvian = { - - 'years' : 'Gadi', - 'months' : 'Mēneši', - 'days' : 'Dienas', - 'hours' : 'Stundas', - 'minutes' : 'Minūtes', - 'seconds' : 'Sekundes' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['lv'] = FlipClock.Lang.Latvian; - FlipClock.Lang['lv-lv'] = FlipClock.Lang.Latvian; - FlipClock.Lang['latvian'] = FlipClock.Lang.Latvian; - -}(jQuery)); -(function($) { - - /** - * FlipClock Dutch Language Pack - * - * This class will used to translate tokens into the Dutch language. - */ - - FlipClock.Lang.Dutch = { - - 'years' : 'Jaren', - 'months' : 'Maanden', - 'days' : 'Dagen', - 'hours' : 'Uren', - 'minutes' : 'Minuten', - 'seconds' : 'Seconden' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['nl'] = FlipClock.Lang.Dutch; - FlipClock.Lang['nl-be'] = FlipClock.Lang.Dutch; - FlipClock.Lang['dutch'] = FlipClock.Lang.Dutch; - -}(jQuery)); - -(function($) { - - /** - * FlipClock Norwegian-Bokmål Language Pack - * - * This class will used to translate tokens into the Norwegian language. - * - */ - - FlipClock.Lang.Norwegian = { - - 'years' : 'År', - 'months' : 'Måneder', - 'days' : 'Dager', - 'hours' : 'Timer', - 'minutes' : 'Minutter', - 'seconds' : 'Sekunder' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['no'] = FlipClock.Lang.Norwegian; - FlipClock.Lang['nb'] = FlipClock.Lang.Norwegian; - FlipClock.Lang['no-nb'] = FlipClock.Lang.Norwegian; - FlipClock.Lang['norwegian'] = FlipClock.Lang.Norwegian; - -}(jQuery)); - -(function($) { - - /** - * FlipClock Portuguese Language Pack - * - * This class will used to translate tokens into the Portuguese language. - * - */ - - FlipClock.Lang.Portuguese = { - - 'years' : 'Anos', - 'months' : 'Meses', - 'days' : 'Dias', - 'hours' : 'Horas', - 'minutes' : 'Minutos', - 'seconds' : 'Segundos' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['pt'] = FlipClock.Lang.Portuguese; - FlipClock.Lang['pt-br'] = FlipClock.Lang.Portuguese; - FlipClock.Lang['portuguese'] = FlipClock.Lang.Portuguese; - -}(jQuery)); -(function($) { - - /** - * FlipClock Russian Language Pack - * - * This class will used to translate tokens into the Russian language. - * - */ - - FlipClock.Lang.Russian = { - - 'years' : 'лет', - 'months' : 'месяцев', - 'days' : 'дней', - 'hours' : 'часов', - 'minutes' : 'минут', - 'seconds' : 'секунд' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['ru'] = FlipClock.Lang.Russian; - FlipClock.Lang['ru-ru'] = FlipClock.Lang.Russian; - FlipClock.Lang['russian'] = FlipClock.Lang.Russian; - -}(jQuery)); -(function($) { - - /** - * FlipClock Swedish Language Pack - * - * This class will used to translate tokens into the Swedish language. - * - */ - - FlipClock.Lang.Swedish = { - - 'years' : 'År', - 'months' : 'Månader', - 'days' : 'Dagar', - 'hours' : 'Timmar', - 'minutes' : 'Minuter', - 'seconds' : 'Sekunder' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['sv'] = FlipClock.Lang.Swedish; - FlipClock.Lang['sv-se'] = FlipClock.Lang.Swedish; - FlipClock.Lang['swedish'] = FlipClock.Lang.Swedish; - -}(jQuery)); - -(function($) { - - /** - * FlipClock Chinese Language Pack - * - * This class will used to translate tokens into the Chinese language. - * - */ - - FlipClock.Lang.Chinese = { - - 'years' : '年', - 'months' : '月', - 'days' : '日', - 'hours' : '时', - 'minutes' : '分', - 'seconds' : '秒' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['zh'] = FlipClock.Lang.Chinese; - FlipClock.Lang['zh-cn'] = FlipClock.Lang.Chinese; - FlipClock.Lang['chinese'] = FlipClock.Lang.Chinese; - -}(jQuery)); \ No newline at end of file diff --git a/compiled/flipclock.min.js b/compiled/flipclock.min.js deleted file mode 100644 index 7c2ca7e2..00000000 --- a/compiled/flipclock.min.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! flipclock 2015-08-31 */ -var Base=function(){};Base.extend=function(a,b){"use strict";var c=Base.prototype.extend;Base._prototyping=!0;var d=new this;c.call(d,a),d.base=function(){},delete Base._prototyping;var e=d.constructor,f=d.constructor=function(){if(!Base._prototyping)if(this._constructing||this.constructor==f)this._constructing=!0,e.apply(this,arguments),delete this._constructing;else if(null!==arguments[0])return(arguments[0].extend||c).call(arguments[0],d)};return f.ancestor=this,f.extend=this.extend,f.forEach=this.forEach,f.implement=this.implement,f.prototype=d,f.toString=this.toString,f.valueOf=function(a){return"object"==a?f:e.valueOf()},c.call(f,b),"function"==typeof f.init&&f.init(),f},Base.prototype={extend:function(a,b){if(arguments.length>1){var c=this[a];if(c&&"function"==typeof b&&(!c.valueOf||c.valueOf()!=b.valueOf())&&/\bbase\b/.test(b)){var d=b.valueOf();b=function(){var a=this.base||Base.prototype.base;this.base=c;var b=d.apply(this,arguments);return this.base=a,b},b.valueOf=function(a){return"object"==a?b:d},b.toString=Base.toString}this[a]=b}else if(a){var e=Base.prototype.extend;Base._prototyping||"function"==typeof this||(e=this.extend||e);for(var f={toSource:null},g=["constructor","toString","valueOf"],h=Base._prototyping?0:1;i=g[h++];)a[i]!=f[i]&&e.call(this,i,a[i]);for(var i in a)f[i]||e.call(this,i,a[i])}return this}},Base=Base.extend({constructor:function(){this.extend(arguments[0])}},{ancestor:Object,version:"1.1",forEach:function(a,b,c){for(var d in a)void 0===this.prototype[d]&&b.call(c,a[d],d,a)},implement:function(){for(var a=0;a',''].join("");d&&(e=""),b=this.factory.localize(b);var f=['',''+(b?b:"")+"",e,""],g=a(f.join(""));return this.dividers.push(g),g},createList:function(a,b){"object"==typeof a&&(b=a,a=0);var c=new FlipClock.List(this.factory,a,b);return this.lists.push(c),c},reset:function(){this.factory.time=new FlipClock.Time(this.factory,this.factory.original?Math.round(this.factory.original):0,{minimumDigits:this.factory.minimumDigits}),this.flip(this.factory.original,!1)},appendDigitToClock:function(a){a.$el.append(!1)},addDigit:function(a){var b=this.createList(a,{classes:{active:this.factory.classes.active,before:this.factory.classes.before,flip:this.factory.classes.flip}});this.appendDigitToClock(b)},start:function(){},stop:function(){},autoIncrement:function(){this.factory.countdown?this.decrement():this.increment()},increment:function(){this.factory.time.addSecond()},decrement:function(){0==this.factory.time.getTimeSeconds()?this.factory.stop():this.factory.time.subSecond()},flip:function(b,c){var d=this;a.each(b,function(a,b){var e=d.lists[a];e?(c||b==e.digit||e.play(),e.select(b)):d.addDigit(b)})}})}(jQuery),function(a){"use strict";FlipClock.Factory=FlipClock.Base.extend({animationRate:1e3,autoStart:!0,callbacks:{destroy:!1,create:!1,init:!1,interval:!1,start:!1,stop:!1,reset:!1},classes:{active:"flip-clock-active",before:"flip-clock-before",divider:"flip-clock-divider",dot:"flip-clock-dot",label:"flip-clock-label",flip:"flip",play:"play",wrapper:"flip-clock-wrapper"},clockFace:"HourlyCounter",countdown:!1,defaultClockFace:"HourlyCounter",defaultLanguage:"english",$el:!1,face:!0,lang:!1,language:"english",minimumDigits:0,original:!1,running:!1,time:!1,timer:!1,$wrapper:!1,constructor:function(b,c,d){d||(d={}),this.lists=[],this.running=!1,this.base(d),this.$el=a(b).addClass(this.classes.wrapper),this.$wrapper=this.$el,this.original=c instanceof Date?c:c?Math.round(c):0,this.time=new FlipClock.Time(this,this.original,{minimumDigits:this.minimumDigits,animationRate:this.animationRate}),this.timer=new FlipClock.Timer(this,d),this.loadLanguage(this.language),this.loadClockFace(this.clockFace,d),this.autoStart&&this.start()},loadClockFace:function(a,b){var c,d="Face",e=!1;return a=a.ucfirst()+d,this.face.stop&&(this.stop(),e=!0),this.$el.html(""),this.time.minimumDigits=this.minimumDigits,c=FlipClock[a]?new FlipClock[a](this,b):new FlipClock[this.defaultClockFace+d](this,b),c.build(),this.face=c,e&&this.start(),this.face},loadLanguage:function(a){var b;return b=FlipClock.Lang[a.ucfirst()]?FlipClock.Lang[a.ucfirst()]:FlipClock.Lang[a]?FlipClock.Lang[a]:FlipClock.Lang[this.defaultLanguage],this.lang=b},localize:function(a,b){var c=this.lang;if(!a)return null;var d=a.toLowerCase();return"object"==typeof b&&(c=b),c&&c[d]?c[d]:a},start:function(a){var b=this;b.running||b.countdown&&!(b.countdown&&b.time.time>0)?b.log("Trying to start timer when countdown already at 0"):(b.face.start(b.time),b.timer.start(function(){b.flip(),"function"==typeof a&&a()}))},stop:function(a){this.face.stop(),this.timer.stop(a);for(var b in this.lists)this.lists.hasOwnProperty(b)&&this.lists[b].stop()},reset:function(a){this.timer.reset(a),this.face.reset()},setTime:function(a){this.time.time=a,this.flip(!0)},getTime:function(a){return this.time},setCountdown:function(a){var b=this.running;this.countdown=a?!0:!1,b&&(this.stop(),this.start())},flip:function(a){this.face.flip(!1,a)}})}(jQuery),function(a){"use strict";FlipClock.List=FlipClock.Base.extend({digit:0,classes:{active:"flip-clock-active",before:"flip-clock-before",flip:"flip"},factory:!1,$el:!1,$obj:!1,items:[],lastDigit:0,constructor:function(a,b,c){this.factory=a,this.digit=b,this.lastDigit=b,this.$el=this.createList(),this.$obj=this.$el,b>0&&this.select(b),this.factory.$el.append(this.$el)},select:function(a){if("undefined"==typeof a?a=this.digit:this.digit=a,this.digit!=this.lastDigit){var b=this.$el.find("."+this.classes.before).removeClass(this.classes.before);this.$el.find("."+this.classes.active).removeClass(this.classes.active).addClass(this.classes.before),this.appendListItem(this.classes.active,this.digit),b.remove(),this.lastDigit=this.digit}},play:function(){this.$el.addClass(this.factory.classes.play)},stop:function(){var a=this;setTimeout(function(){a.$el.removeClass(a.factory.classes.play)},this.factory.timer.interval)},createListItem:function(a,b){return['
  • ','','
    ','
    ','
    '+(b?b:"")+"
    ","
    ",'
    ','
    ','
    '+(b?b:"")+"
    ","
    ","
    ","
  • "].join("")},appendListItem:function(a,b){var c=this.createListItem(a,b);this.$el.append(c)},createList:function(){var b=this.getPrevDigit()?this.getPrevDigit():this.digit,c=a(['
      ',this.createListItem(this.classes.before,b),this.createListItem(this.classes.active,this.digit),"
    "].join(""));return c},getNextDigit:function(){return 9==this.digit?0:this.digit+1},getPrevDigit:function(){return 0==this.digit?9:this.digit-1}})}(jQuery),function(a){"use strict";String.prototype.ucfirst=function(){return this.substr(0,1).toUpperCase()+this.substr(1)},a.fn.FlipClock=function(b,c){return new FlipClock(a(this),b,c)},a.fn.flipClock=function(b,c){return a.fn.FlipClock(b,c)}}(jQuery),function(a){"use strict";FlipClock.Time=FlipClock.Base.extend({time:0,factory:!1,minimumDigits:0,constructor:function(a,b,c){"object"!=typeof c&&(c={}),c.minimumDigits||(c.minimumDigits=a.minimumDigits),this.base(c),this.factory=a,b&&(this.time=b)},convertDigitsToArray:function(a){var b=[];a=a.toString();for(var c=0;cthis.minimumDigits&&(this.minimumDigits=c.length),this.minimumDigits>c.length)for(var d=c.length;d12?c-12:0===c?12:c,a.getMinutes()];return b===!0&&d.push(a.getSeconds()),this.digitize(d)},getSeconds:function(a){var b=this.getTimeSeconds();return a&&(60==b?b=0:b%=60),Math.ceil(b)},getWeeks:function(a){var b=this.getTimeSeconds()/60/60/24/7;return a&&(b%=52),Math.floor(b)},removeLeadingZeros:function(b,c){var d=0,e=[];return a.each(c,function(a,f){b>a?d+=parseInt(c[a],10):e.push(c[a])}),0===d?e:c},addSeconds:function(a){this.time instanceof Date?this.time.setSeconds(this.time.getSeconds()+a):this.time+=a},addSecond:function(){this.addSeconds(1)},subSeconds:function(a){this.time instanceof Date?this.time.setSeconds(this.time.getSeconds()-a):this.time-=a},subSecond:function(){this.subSeconds(1)},toString:function(){return this.getTimeSeconds().toString()}})}(jQuery),function(a){"use strict";FlipClock.Timer=FlipClock.Base.extend({callbacks:{destroy:!1,create:!1,init:!1,interval:!1,start:!1,stop:!1,reset:!1},count:0,factory:!1,interval:1e3,animationRate:1e3,constructor:function(a,b){this.base(b),this.factory=a,this.callback(this.callbacks.init),this.callback(this.callbacks.create)},getElapsed:function(){return this.count*this.interval},getElapsedTime:function(){return new Date(this.time+this.getElapsed())},reset:function(a){clearInterval(this.timer),this.count=0,this._setInterval(a),this.callback(this.callbacks.reset)},start:function(a){this.factory.running=!0,this._createTimer(a),this.callback(this.callbacks.start)},stop:function(a){this.factory.running=!1,this._clearInterval(a),this.callback(this.callbacks.stop),this.callback(a)},_clearInterval:function(){clearInterval(this.timer)},_createTimer:function(a){this._setInterval(a)},_destroyTimer:function(a){this._clearInterval(),this.timer=!1,this.callback(a),this.callback(this.callbacks.destroy)},_interval:function(a){this.callback(this.callbacks.interval),this.callback(a),this.count++},_setInterval:function(a){var b=this;b._interval(a),b.timer=setInterval(function(){b._interval(a)},this.interval)}})}(jQuery),function(a){FlipClock.TwentyFourHourClockFace=FlipClock.Face.extend({constructor:function(a,b){this.base(a,b)},build:function(b){var c=this,d=this.factory.$el.find("ul");this.factory.time.time||(this.factory.original=new Date,this.factory.time=new FlipClock.Time(this.factory,this.factory.original));var b=b?b:this.factory.time.getMilitaryTime(!1,this.showSeconds);b.length>d.length&&a.each(b,function(a,b){c.createList(b)}),this.createDivider(),this.createDivider(),a(this.dividers[0]).insertBefore(this.lists[this.lists.length-2].$el),a(this.dividers[1]).insertBefore(this.lists[this.lists.length-4].$el),this.base()},flip:function(a,b){this.autoIncrement(),a=a?a:this.factory.time.getMilitaryTime(!1,this.showSeconds),this.base(a,b)}})}(jQuery),function(a){FlipClock.CounterFace=FlipClock.Face.extend({shouldAutoIncrement:!1,constructor:function(a,b){"object"!=typeof b&&(b={}),a.autoStart=b.autoStart?!0:!1,b.autoStart&&(this.shouldAutoIncrement=!0),a.increment=function(){a.countdown=!1,a.setTime(a.getTime().getTimeSeconds()+1)},a.decrement=function(){a.countdown=!0;var b=a.getTime().getTimeSeconds();b>0&&a.setTime(b-1)},a.setValue=function(b){a.setTime(b)},a.setCounter=function(b){a.setTime(b)},this.base(a,b)},build:function(){var b=this,c=this.factory.$el.find("ul"),d=this.factory.getTime().digitize([this.factory.getTime().time]);d.length>c.length&&a.each(d,function(a,c){var d=b.createList(c);d.select(c)}),a.each(this.lists,function(a,b){b.play()}),this.base()},flip:function(a,b){this.shouldAutoIncrement&&this.autoIncrement(),a||(a=this.factory.getTime().digitize([this.factory.getTime().time])),this.base(a,b)},reset:function(){this.factory.time=new FlipClock.Time(this.factory,this.factory.original?Math.round(this.factory.original):0),this.flip()}})}(jQuery),function(a){FlipClock.DailyCounterFace=FlipClock.Face.extend({showSeconds:!0,constructor:function(a,b){this.base(a,b)},build:function(b){var c=this,d=this.factory.$el.find("ul"),e=0;b=b?b:this.factory.time.getDayCounter(this.showSeconds),b.length>d.length&&a.each(b,function(a,b){c.createList(b)}),this.showSeconds?a(this.createDivider("Seconds")).insertBefore(this.lists[this.lists.length-2].$el):e=2,a(this.createDivider("Minutes")).insertBefore(this.lists[this.lists.length-4+e].$el),a(this.createDivider("Hours")).insertBefore(this.lists[this.lists.length-6+e].$el),a(this.createDivider("Days",!0)).insertBefore(this.lists[0].$el),this.base()},flip:function(a,b){a||(a=this.factory.time.getDayCounter(this.showSeconds)),this.autoIncrement(),this.base(a,b)}})}(jQuery),function(a){FlipClock.HourlyCounterFace=FlipClock.Face.extend({constructor:function(a,b){this.base(a,b)},build:function(b,c){var d=this,e=this.factory.$el.find("ul");c=c?c:this.factory.time.getHourCounter(),c.length>e.length&&a.each(c,function(a,b){d.createList(b)}),a(this.createDivider("Seconds")).insertBefore(this.lists[this.lists.length-2].$el),a(this.createDivider("Minutes")).insertBefore(this.lists[this.lists.length-4].$el),b||a(this.createDivider("Hours",!0)).insertBefore(this.lists[0].$el),this.base()},flip:function(a,b){a||(a=this.factory.time.getHourCounter()),this.autoIncrement(),this.base(a,b)},appendDigitToClock:function(a){this.base(a),this.dividers[0].insertAfter(this.dividers[0].next())}})}(jQuery),function(a){FlipClock.MinuteCounterFace=FlipClock.HourlyCounterFace.extend({clearExcessDigits:!1,constructor:function(a,b){this.base(a,b)},build:function(){this.base(!0,this.factory.time.getMinuteCounter())},flip:function(a,b){a||(a=this.factory.time.getMinuteCounter()),this.base(a,b)}})}(jQuery),function(a){FlipClock.TwelveHourClockFace=FlipClock.TwentyFourHourClockFace.extend({meridium:!1,meridiumText:"AM",build:function(){var b=this.factory.time.getTime(!1,this.showSeconds);this.base(b),this.meridiumText=this.getMeridium(),this.meridium=a(['"].join("")),this.meridium.insertAfter(this.lists[this.lists.length-1].$el)},flip:function(a,b){this.meridiumText!=this.getMeridium()&&(this.meridiumText=this.getMeridium(),this.meridium.find("a").html(this.meridiumText)),this.base(this.factory.time.getTime(!1,this.showSeconds),b)},getMeridium:function(){return(new Date).getHours()>=12?"PM":"AM"},isPM:function(){return"PM"==this.getMeridium()?!0:!1},isAM:function(){return"AM"==this.getMeridium()?!0:!1}})}(jQuery),function(a){FlipClock.Lang.Arabic={years:"سنوات",months:"شهور",days:"أيام",hours:"ساعات",minutes:"دقائق",seconds:"ثواني"},FlipClock.Lang.ar=FlipClock.Lang.Arabic,FlipClock.Lang["ar-ar"]=FlipClock.Lang.Arabic,FlipClock.Lang.arabic=FlipClock.Lang.Arabic}(jQuery),function(a){FlipClock.Lang.Danish={years:"År",months:"Måneder",days:"Dage",hours:"Timer",minutes:"Minutter",seconds:"Sekunder"},FlipClock.Lang.da=FlipClock.Lang.Danish,FlipClock.Lang["da-dk"]=FlipClock.Lang.Danish,FlipClock.Lang.danish=FlipClock.Lang.Danish}(jQuery),function(a){FlipClock.Lang.German={years:"Jahre",months:"Monate",days:"Tage",hours:"Stunden",minutes:"Minuten",seconds:"Sekunden"},FlipClock.Lang.de=FlipClock.Lang.German,FlipClock.Lang["de-de"]=FlipClock.Lang.German,FlipClock.Lang.german=FlipClock.Lang.German}(jQuery),function(a){FlipClock.Lang.English={years:"Years",months:"Months",days:"Days",hours:"Hours",minutes:"Minutes",seconds:"Seconds"},FlipClock.Lang.en=FlipClock.Lang.English,FlipClock.Lang["en-us"]=FlipClock.Lang.English,FlipClock.Lang.english=FlipClock.Lang.English}(jQuery),function(a){FlipClock.Lang.Spanish={years:"Años",months:"Meses",days:"Días",hours:"Horas",minutes:"Minutos",seconds:"Segundos"},FlipClock.Lang.es=FlipClock.Lang.Spanish,FlipClock.Lang["es-es"]=FlipClock.Lang.Spanish,FlipClock.Lang.spanish=FlipClock.Lang.Spanish}(jQuery),function(a){FlipClock.Lang.Finnish={years:"Vuotta",months:"Kuukautta",days:"Päivää",hours:"Tuntia",minutes:"Minuuttia",seconds:"Sekuntia"},FlipClock.Lang.fi=FlipClock.Lang.Finnish,FlipClock.Lang["fi-fi"]=FlipClock.Lang.Finnish,FlipClock.Lang.finnish=FlipClock.Lang.Finnish}(jQuery),function(a){FlipClock.Lang.French={years:"Ans",months:"Mois",days:"Jours",hours:"Heures",minutes:"Minutes",seconds:"Secondes"},FlipClock.Lang.fr=FlipClock.Lang.French,FlipClock.Lang["fr-ca"]=FlipClock.Lang.French,FlipClock.Lang.french=FlipClock.Lang.French}(jQuery),function(a){FlipClock.Lang.Italian={years:"Anni",months:"Mesi",days:"Giorni",hours:"Ore",minutes:"Minuti",seconds:"Secondi"},FlipClock.Lang.it=FlipClock.Lang.Italian,FlipClock.Lang["it-it"]=FlipClock.Lang.Italian,FlipClock.Lang.italian=FlipClock.Lang.Italian}(jQuery),function(a){FlipClock.Lang.Latvian={years:"Gadi",months:"Mēneši",days:"Dienas",hours:"Stundas",minutes:"Minūtes",seconds:"Sekundes"},FlipClock.Lang.lv=FlipClock.Lang.Latvian,FlipClock.Lang["lv-lv"]=FlipClock.Lang.Latvian,FlipClock.Lang.latvian=FlipClock.Lang.Latvian}(jQuery),function(a){FlipClock.Lang.Dutch={years:"Jaren",months:"Maanden",days:"Dagen",hours:"Uren",minutes:"Minuten",seconds:"Seconden"},FlipClock.Lang.nl=FlipClock.Lang.Dutch,FlipClock.Lang["nl-be"]=FlipClock.Lang.Dutch,FlipClock.Lang.dutch=FlipClock.Lang.Dutch}(jQuery),function(a){FlipClock.Lang.Norwegian={years:"År",months:"Måneder",days:"Dager",hours:"Timer",minutes:"Minutter",seconds:"Sekunder"},FlipClock.Lang.no=FlipClock.Lang.Norwegian,FlipClock.Lang.nb=FlipClock.Lang.Norwegian,FlipClock.Lang["no-nb"]=FlipClock.Lang.Norwegian,FlipClock.Lang.norwegian=FlipClock.Lang.Norwegian}(jQuery),function(a){FlipClock.Lang.Portuguese={years:"Anos",months:"Meses",days:"Dias",hours:"Horas",minutes:"Minutos",seconds:"Segundos"},FlipClock.Lang.pt=FlipClock.Lang.Portuguese,FlipClock.Lang["pt-br"]=FlipClock.Lang.Portuguese,FlipClock.Lang.portuguese=FlipClock.Lang.Portuguese}(jQuery),function(a){FlipClock.Lang.Russian={years:"лет",months:"месяцев",days:"дней",hours:"часов",minutes:"минут",seconds:"секунд"},FlipClock.Lang.ru=FlipClock.Lang.Russian,FlipClock.Lang["ru-ru"]=FlipClock.Lang.Russian,FlipClock.Lang.russian=FlipClock.Lang.Russian}(jQuery),function(a){FlipClock.Lang.Swedish={years:"År",months:"Månader",days:"Dagar",hours:"Timmar",minutes:"Minuter",seconds:"Sekunder"},FlipClock.Lang.sv=FlipClock.Lang.Swedish,FlipClock.Lang["sv-se"]=FlipClock.Lang.Swedish,FlipClock.Lang.swedish=FlipClock.Lang.Swedish}(jQuery),function(a){FlipClock.Lang.Chinese={years:"年",months:"月",days:"日",hours:"时",minutes:"分",seconds:"秒"},FlipClock.Lang.zh=FlipClock.Lang.Chinese,FlipClock.Lang["zh-cn"]=FlipClock.Lang.Chinese,FlipClock.Lang.chinese=FlipClock.Lang.Chinese}(jQuery); \ No newline at end of file diff --git a/dist/flipclock.css b/dist/flipclock.css new file mode 100644 index 00000000..d696d5a0 --- /dev/null +++ b/dist/flipclock.css @@ -0,0 +1,208 @@ +.flip-clock { + font-family: "Helvetica Neue", Helvetica, sans-serif; + font-size: 16px; + -webkit-user-select: none; + text-align: center; + position: relative; + width: 100%; + display: inline-flex; + font-size: 1vw; + font-family: "Helvetica Neue", Helvetica, sans-serif; + box-sizing: border-box; + align-items: flex-end; } + .flip-clock .flip-clock-group { + display: flex; + position: relative; } + .flip-clock .flip-clock-group .flip-clock-label { + position: absolute; + top: 0; + left: 0; + width: 100%; + font-size: 1em; + height: 2em; + line-height: 2em; + font-weight: 400; + text-transform: capitalize; + transform: translateY(-100%); } + .flip-clock .flip-clock-group .flip-clock-label.flip-clock-meridium { + font-size: 1.75em; + line-height: 1.75em; + top: 50%; + left: 100%; + flex: 0; + width: auto; + text-transform: uppercase; + font-weight: 200; + transform: translate(0.5em, -50%); } + .flip-clock .flip-clock-group .flip-clock-list { + width: 4em; + height: 6em; + position: relative; + border-radius: .75rem; + box-shadow: 0 1.5px 3px rgba(0, 0, 0, 0.24), 0 3px 8px rgba(0, 0, 0, 0.05); + font-weight: bold; + color: #ccc; } + .flip-clock .flip-clock-group .flip-clock-list:not(:last-child) { + margin-right: .333em; } + .flip-clock .flip-clock-group .flip-clock-list:not(.flip) .active .flip-clock-list-item-inner { + z-index: 4; } + .flip-clock .flip-clock-group .flip-clock-list:not(.flip) .flip-clock-list-item-inner .top:after, + .flip-clock .flip-clock-group .flip-clock-list:not(.flip) .flip-clock-list-item-inner .bottom:after { + display: none; } + .flip-clock .flip-clock-group .flip-clock-list .flip-clock-list-item-inner { + position: absolute; + width: 100%; + height: 100%; } + .flip-clock .flip-clock-group .flip-clock-list.flip { + animation-delay: 500ms; + animation-duration: 500ms; } + .flip-clock .flip-clock-group .flip-clock-list.flip .flip-clock-list-item-inner { + perspective: 15em; } + .flip-clock .flip-clock-group .flip-clock-list.flip .top, + .flip-clock .flip-clock-group .flip-clock-list.flip .bottom, + .flip-clock .flip-clock-group .flip-clock-list.flip .active, + .flip-clock .flip-clock-group .flip-clock-list.flip .active > div, + .flip-clock .flip-clock-group .flip-clock-list.flip .before, + .flip-clock .flip-clock-group .flip-clock-list.flip .before > div { + animation-delay: inherit; + animation-fill-mode: forwards; + animation-duration: inherit; + animation-timing-function: ease-in; } + .flip-clock .flip-clock-group .flip-clock-list.flip .top:after, + .flip-clock .flip-clock-group .flip-clock-list.flip .bottom:after, + .flip-clock .flip-clock-group .flip-clock-list.flip .active:after, + .flip-clock .flip-clock-group .flip-clock-list.flip .active > div:after, + .flip-clock .flip-clock-group .flip-clock-list.flip .before:after, + .flip-clock .flip-clock-group .flip-clock-list.flip .before > div:after { + animation-duration: inherit; + animation-fill-mode: inherit; + animation-timing-function: inherit; } + .flip-clock .flip-clock-group .flip-clock-list.flip .before { + animation-delay: 0s; } + .flip-clock .flip-clock-group .flip-clock-list.flip .before .top { + animation-name: flip-top; } + .flip-clock .flip-clock-group .flip-clock-list.flip .before .top:after, + .flip-clock .flip-clock-group .flip-clock-list.flip .before .bottom:after { + animation-name: show-shadow; } + .flip-clock .flip-clock-group .flip-clock-list.flip .active > div { + animation-name: indexing; } + .flip-clock .flip-clock-group .flip-clock-list.flip .active .top:after, + .flip-clock .flip-clock-group .flip-clock-list.flip .active .bottom:after { + animation-delay: calc(500ms * .15); + animation-name: hide-shadow; } + .flip-clock .flip-clock-group .flip-clock-list.flip .active .bottom { + animation-name: flip-bottom; } + .flip-clock .flip-clock-group .flip-clock-list .active { + z-index: 2; } + .flip-clock .flip-clock-group .flip-clock-list .active .bottom { + z-index: 2; + transform-origin: top center; } + .flip-clock .flip-clock-group .flip-clock-list .before { + z-index: 3; } + .flip-clock .flip-clock-group .flip-clock-list .before .top { + z-index: 2; + transform-origin: bottom center; } + .flip-clock .flip-clock-group .flip-clock-list .before .top:after { + background: linear-gradient(to bottom, rgba(0, 0, 0, 0.1) 0%, black 100%); } + .flip-clock .flip-clock-group .flip-clock-list .before .bottom:after { + background: linear-gradient(to bottom, black 0%, rgba(0, 0, 0, 0.1) 100%); } + .flip-clock .flip-clock-group .flip-clock-list .flip-clock-list-item-inner { + position: absolute; + width: 100%; + height: 100%; + transform: rotateX(0.0001deg); } + .flip-clock .flip-clock-group .flip-clock-list .flip-clock-list-item-inner:first-child { + z-index: 2; } + .flip-clock .flip-clock-group .flip-clock-list .flip-clock-list-item-inner > .top, + .flip-clock .flip-clock-group .flip-clock-list .flip-clock-list-item-inner > .bottom { + width: 100%; + height: 50%; + overflow: hidden; + position: relative; + font-size: 4.5em; + background: #333; + box-shadow: inset 0 0 0.2em rgba(0, 0, 0, 0.5); } + .flip-clock .flip-clock-group .flip-clock-list .flip-clock-list-item-inner > .top:after, + .flip-clock .flip-clock-group .flip-clock-list .flip-clock-list-item-inner > .bottom:after { + content: " "; + display: block; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + overflow: hidden; } + .flip-clock .flip-clock-group .flip-clock-list .flip-clock-list-item-inner > .top:before, + .flip-clock .flip-clock-group .flip-clock-list .flip-clock-list-item-inner > .bottom:before { + content: " "; + display: block; + width: 100%; + height: 1px; + position: absolute; } + .flip-clock .flip-clock-group .flip-clock-list .flip-clock-list-item-inner .top { + border-radius: .75rem .75rem 0 0; + line-height: 1.33333; } + .flip-clock .flip-clock-group .flip-clock-list .flip-clock-list-item-inner .top:after { + border-radius: .75rem .75rem 0 0; } + .flip-clock .flip-clock-group .flip-clock-list .flip-clock-list-item-inner .top:before { + background: #333; + opacity: .4; + bottom: 0; } + .flip-clock .flip-clock-group .flip-clock-list .flip-clock-list-item-inner .bottom { + border-radius: 0 0 .75rem .75rem; + line-height: 0; } + .flip-clock .flip-clock-group .flip-clock-list .flip-clock-list-item-inner .bottom:after { + border-radius: 0 0 .75rem .75rem; } + .flip-clock .flip-clock-group .flip-clock-list .flip-clock-list-item-inner .bottom:before { + background: #ccc; + opacity: .1; } + .flip-clock .flip-clock-divider { + position: relative; + width: 1.5em; + height: 6em; } + .flip-clock .flip-clock-divider:before, .flip-clock .flip-clock-divider:after { + content: " "; + display: block; + width: .75em; + height: .75em; + background: #333; + border-radius: 50%; + position: absolute; + top: 50%; + left: 50%; } + .flip-clock .flip-clock-divider:before { + transform: translate(-50%, 75%); } + .flip-clock .flip-clock-divider:after { + transform: translate(-50%, -175%); } + +@keyframes indexing { + 0% { + z-index: 2; } + 1% { + z-index: 3; } + 100% { + z-index: 4; } } + +@keyframes flip-bottom { + 0% { + transform: rotateX(90deg); } + 100% { + transform: rotateX(0); } } + +@keyframes flip-top { + 0% { + transform: rotateX(0); } + 100% { + transform: rotateX(-90deg); } } + +@keyframes show-shadow { + 0% { + opacity: 0; } + 100% { + opacity: 1; } } + +@keyframes hide-shadow { + 0% { + opacity: 1; } + 100% { + opacity: 0; } } diff --git a/dist/flipclock.js b/dist/flipclock.js new file mode 100644 index 00000000..3a66cbcc --- /dev/null +++ b/dist/flipclock.js @@ -0,0 +1,4280 @@ +(function (global, factory) { + typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() : + typeof define === 'function' && define.amd ? define(factory) : + (global.FlipClock = factory()); +}(this, (function () { 'use strict'; + + function _typeof(obj) { + if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { + _typeof = function (obj) { + return typeof obj; + }; + } else { + _typeof = function (obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; + }; + } + + return _typeof(obj); + } + + function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } + } + + function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } + } + + function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + return Constructor; + } + + function _inherits(subClass, superClass) { + if (typeof superClass !== "function" && superClass !== null) { + throw new TypeError("Super expression must either be null or a function"); + } + + subClass.prototype = Object.create(superClass && superClass.prototype, { + constructor: { + value: subClass, + writable: true, + configurable: true + } + }); + if (superClass) _setPrototypeOf(subClass, superClass); + } + + function _getPrototypeOf(o) { + _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { + return o.__proto__ || Object.getPrototypeOf(o); + }; + return _getPrototypeOf(o); + } + + function _setPrototypeOf(o, p) { + _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }; + + return _setPrototypeOf(o, p); + } + + function isNativeReflectConstruct() { + if (typeof Reflect === "undefined" || !Reflect.construct) return false; + if (Reflect.construct.sham) return false; + if (typeof Proxy === "function") return true; + + try { + Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); + return true; + } catch (e) { + return false; + } + } + + function _construct(Parent, args, Class) { + if (isNativeReflectConstruct()) { + _construct = Reflect.construct; + } else { + _construct = function _construct(Parent, args, Class) { + var a = [null]; + a.push.apply(a, args); + var Constructor = Function.bind.apply(Parent, a); + var instance = new Constructor(); + if (Class) _setPrototypeOf(instance, Class.prototype); + return instance; + }; + } + + return _construct.apply(null, arguments); + } + + function _assertThisInitialized(self) { + if (self === void 0) { + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + } + + return self; + } + + function _possibleConstructorReturn(self, call) { + if (call && (typeof call === "object" || typeof call === "function")) { + return call; + } + + return _assertThisInitialized(self); + } + + function _superPropBase(object, property) { + while (!Object.prototype.hasOwnProperty.call(object, property)) { + object = _getPrototypeOf(object); + if (object === null) break; + } + + return object; + } + + function _get(target, property, receiver) { + if (typeof Reflect !== "undefined" && Reflect.get) { + _get = Reflect.get; + } else { + _get = function _get(target, property, receiver) { + var base = _superPropBase(target, property); + + if (!base) return; + var desc = Object.getOwnPropertyDescriptor(base, property); + + if (desc.get) { + return desc.get.call(receiver); + } + + return desc.value; + }; + } + + return _get(target, property, receiver || target); + } + + /** + * These are a collection of helper functions, some borrowed from Lodash, + * Underscore, etc, to provide common functionality without the need for using + * a dependency. All of this is an attempt to reduce the file size of the + * library. + * + * @namespace Helpers.Functions + */ + + /** + * Throw a string as an Error exception. + * + * @function error + * @param {string} string - The error message. + * @return {void} + * @memberof Helpers.Functions + */ + function error(string) { + throw Error(string); + } + /** + * Check if `fn` is a function, and call it with `this` context and pass the + * arguments. + * + * @function callback + * @param {string} string - The callback fn. + * @param {...*} args - The arguments to pass. + * @return {void} + * @memberof Helpers.Functions + */ + + function callback(fn) { + if (isFunction(fn)) { + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + return fn.call.apply(fn, [this].concat(args)); + } + } + /** + * Round the value to the correct value. Takes into account negative numbers. + * + * @function round + * @param {value} string - The value to round. + * @return {string} - The rounded value. + * @memberof Helpers.Functions + */ + + function round(value) { + return isNegativeZero(value = isNegative(value) ? Math.ceil(value) : Math.floor(value)) ? ('-' + value).toString() : value; + } + /** + * Returns `true` if `undefined or `null`. + * + * @function noop + * @param {value} string - The value to check. + * @return {boolean} - `true` if `undefined or `null`. + * @memberof Helpers.Functions + */ + + function noop(value) { + return !isUndefined(value) && !isNull(value); + } + /** + * Returns a function that executes the `before` attribute and passes that value + * to `after` and the subsequent value is returned. + * + * @function chain + * @param {function} before - The first function to execute. + * @param {function} after - The subsequent function to execute. + * @return {function} - A function that executes the chain. + * @memberof Helpers.Functions + */ + + function chain(before, after) { + return function () { + return after(before()); + }; + } + /** + * Returns a function that returns maps the values before concatenating them. + * + * @function concatMap + * @param {function} fn - The map callback function. + * @return {function} - A function that executes the map and concatenation. + * @memberof Helpers.Functions + */ + + function concatMap(fn) { + return function (x) { + return x.map(fn).reduce(function (x, y) { + return x.concat(y); + }, []); + }; + } + /** + * Flatten an array. + * + * @function flatten + * @param {array} value - The array to flatten. + * @return {array} - The flattened array. + * @memberof Helpers.Functions + */ + + function flatten(value) { + return concatMap(function (value) { + return value; + })(value); + } + /** + * Deep flatten an array. + * + * @function deepFlatten + * @param {array} value - The array to flatten. + * @return {array} - The flattened array. + * @memberof Helpers.Functions + */ + + function deepFlatten(x) { + return concatMap(function (x) { + return Array.isArray(x) ? deepFlatten(x) : x; + })(x); + } + /** + * Returns the length of a deep flatten array. + * + * @function length + * @param {array} value - The array to count. + * @return {number} - The length of the deep flattened array. + * @memberof Helpers.Functions + */ + + function length(value) { + return deepFlatten(value).length; + } + /** + * Determines if a value is a negative zero. + * + * @function isNegativeZero + * @param {number} value - The value to check. + * @return {boolean} - Returns `true` if the value is a negative zero (`-0`). + * @memberof Helpers.Functions + */ + + function isNegativeZero(value) { + return 1 / Math.round(value) === -Infinity; + } + /** + * Determines if a value is a negative. + * + * @function isNegative + * @param {number} value - The value to check. + * @return {boolean} - Returns `true` if the value is a negative. + * @memberof Helpers.Functions + */ + + function isNegative(value) { + return isNegativeZero(value) || value < 0; + } + /** + * Determines if a value is `null`. + * + * @function isNull + * @param {*} value - The value to check. + * @return {boolean} - Returns `true` if the value is a `null`. + * @memberof Helpers.Functions + */ + + function isNull(value) { + return value === null; // || typeof value === 'null'; + } + /** + * Determines if a value is `undefined`. + * + * @function isNull + * @param {*} value - The value to check. + * @return {boolean} - Returns `true` if the value is a `undefined`. + * @memberof Helpers.Functions + */ + + function isUndefined(value) { + return typeof value === 'undefined'; + } + /** + * Determines if a value is a constructor. + * + * @function isConstructor + * @param {*} value - The value to check. + * @return {boolean} - Returns `true` if the value is a constructor. + * @memberof Helpers.Functions + */ + + function isConstructor(value) { + return value instanceof Function && !!value.name; + } + /** + * Determines if a value is a string. + * + * @function isString + * @param {*} value - The value to check. + * @return {boolean} - Returns `true` if the value is a string. + * @memberof Helpers.Functions + */ + + function isString(value) { + return typeof value === 'string'; + } + /** + * Determines if a value is a array. + * + * @function isString + * @param {*} value - The value to check. + * @return {boolean} - Returns `true` if the value is a string. + * @memberof Helpers.Functions + */ + + function isArray(value) { + return value instanceof Array; + } + /** + * Determines if a value is an object. + * + * @function isObject + * @param {*} value - The value to check. + * @return {boolean} - Returns `true` if the value is an object. + * @memberof Helpers.Functions + */ + + function isObject(value) { + var type = _typeof(value); + + return value != null && !isArray(value) && (type == 'object' || type == 'function'); + } + /** + * Determines if a value is a function. + * + * @function isObject + * @param {*} value - The value to check. + * @return {boolean} - Returns `true` if the value is a function. + * @memberof Helpers.Functions + */ + + function isFunction(value) { + return value instanceof Function; + } + /** + * Determines if a value is a number. + * + * @function isObject + * @param {*} value - The value to check. + * @return {boolean} - Returns `true` if the value is a number. + * @memberof Helpers.Functions + */ + + function isNumber(value) { + return !isNaN(value); + } + /** + * Converts a string into kebab case. + * + * @function kebabCase + * @param {string} string - The string to convert. + * @return {string} - The converted string. + * @memberof Helpers.Functions + */ + + function kebabCase(string) { + return string.replace(/([a-z])([A-Z])/g, '$1-$2').replace(/\s+/g, '-').toLowerCase(); + } + + var Component = + /*#__PURE__*/ + function () { + /** + * Abstract base class. + * + * @class Component + * @param {(object|undefined)} [attributes] - The instance attributes. + */ + function Component(attributes) { + _classCallCheck(this, Component); + + this.setAttribute(Object.assign({ + events: {} + }, attributes)); + } + /** + * Get the `name` attribute. + * + * @type {string} + */ + + + _createClass(Component, [{ + key: "emit", + + /** + * Emit an event. + * + * @param {string} key - The event id/key. + * @return {Component} - Returns `this` instance. + */ + value: function emit(key) { + var _this = this; + + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + if (this.events[key]) { + this.events[key].forEach(function (event) { + event.apply(_this, args); + }); + } + + return this; + } + /** + * Start listening to an event. + * + * @param {string} key - The event id/key. + * @param {Function} fn - The listener callback function. + * @param {boolean} [once=false] - Should the event handler be fired a + * single time. + * @return {Component} - Returns `this` instance. + */ + + }, { + key: "on", + value: function on(key, fn) { + + if (!this.events[key]) { + this.events[key] = []; + } + + this.events[key].push(fn); + return this; + } + /** + * Stop listening to an event. + * + * @param {string} key - The event id/key. + * @param {(Function|undefined)} fn - The listener callback function. If no + * function is defined, all events with the specified id/key will be + * removed. Otherwise, only the event listeners matching the id/key AND + * callback will be removed. + * @return {Component} - Returns `this` instance. + */ + + }, { + key: "off", + value: function off(key, fn) { + if (this.events[key] && fn) { + this.events[key] = this.events[key].filter(function (event) { + return event !== fn; + }); + } else { + this.events[key] = []; + } + + return this; + } + /** + * Listen to an event only one time. + * + * @param {string} key - The event id/key. + * @param {Function} fn - The listener callback function. + * @return {Component} - Returns `this` instance. + */ + + }, { + key: "once", + value: function once(key, fn) { + var _this2 = this; + + fn = chain(fn, function () { + return _this2.off(key, fn); + }); + return this.on(key, fn, true); + } + /** + * Get an attribute. Returns null if no attribute is defined. + * + * @param {string} key - The attribute name. + * @return {*} - The attribute value. + */ + + }, { + key: "getAttribute", + value: function getAttribute(key) { + return this.hasOwnProperty(key) ? this[key] : null; + } + /** + * Get all the atttributes for this instance. + * + * @return {object} - The attribute dictionary. + */ + + }, { + key: "getAttributes", + value: function getAttributes() { + var _this3 = this; + + var attributes = {}; + Object.getOwnPropertyNames(this).forEach(function (key) { + attributes[key] = _this3.getAttribute(key); + }); + return attributes; + } + /** + * Get only public the atttributes for this instance. Omits any attribute + * that starts with `$`, which is used internally. + * + * @return {object} - The attribute dictionary. + */ + + }, { + key: "getPublicAttributes", + value: function getPublicAttributes() { + var _this4 = this; + + return Object.keys(this.getAttributes()).filter(function (key) { + return !key.match(/^\$/); + }).reduce(function (obj, key) { + obj[key] = _this4.getAttribute(key); + return obj; + }, {}); + } + /** + * Set an attribute key and value. + * + * @param {string} key - The attribute name. + * @param {*} value - The attribute value. + * @return {void} + */ + + }, { + key: "setAttribute", + value: function setAttribute(key, value) { + if (isObject(key)) { + this.setAttributes(key); + } else { + this[key] = value; + } + } + /** + * Set an attributes by object of key/value pairs. + * + * @param {object} values - The object dictionary. + * @return {void} + */ + + }, { + key: "setAttributes", + value: function setAttributes(values) { + for (var i in values) { + this.setAttribute(i, values[i]); + } + } + /** + * Helper method to execute the `callback()` function. + * + * @param {Function} fn - The callback function. + * @return {*} - Returns the executed callback function. + */ + + }, { + key: "callback", + value: function callback$$1(fn) { + return callback.call(this, fn); + } + /** + * Factor method to static instantiate new instances. Useful for writing + * clean expressive syntax with chained methods. + * + * @param {...*} args - The callback arguments. + * @return {*} - The new component instance. + */ + + }, { + key: "name", + get: function get() { + if (!(this.constructor.defineName instanceof Function)) { + error('Every class must define its name.'); + } + + return this.constructor.defineName(); + } + /** + * The `events` attribute. + * + * @type {object} + */ + + }, { + key: "events", + get: function get() { + return this.$events || {}; + }, + set: function set(value) { + this.$events = value; + } + }], [{ + key: "make", + value: function make() { + for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) { + args[_key2] = arguments[_key2]; + } + + return _construct(this, args); + } + }]); + + return Component; + }(); + + /** + * @namespace Helpers.Digitize + */ + /** + * Digitize a number, string, or an array into a digitized array. This function + * use by the `Face`, which convert the digitized array into an array of `List` + * instances. + * + * @function digitize + * @param {*} value - The value to digitize. + * @param {(Object|undefined)} [options] - The digitizer options. + * @return {array} - The digitized array. + * @memberof Helpers.Digitize + */ + + function digitize(value, options) { + options = Object.assign({ + minimumDigits: 0, + prependLeadingZero: true + }, options); + + function prepend(number) { + var shouldPrependZero = options.prependLeadingZero && number.toString().split('').length === 1; + return (shouldPrependZero ? '0' : '').concat(number); + } + + function digits(arr, min) { + var length$$1 = deepFlatten(arr).length; + + if (length$$1 < min) { + for (var i = 0; i < min - length$$1; i++) { + arr[0].unshift('0'); + } + } + + return arr; + } + + return digits(flatten([value]).map(function (number) { + return flatten(deepFlatten([number]).map(function (number) { + return prepend(number).split(''); + })); + }), options.minimumDigits || 0); + } + + /** + * @namespace Helpers.Value + */ + + /** + * An array of objects with min/max ranges. + * + * @private + * @type {array} + */ + var RANGES = [{ + // 0-9 + min: 48, + max: 57 + }, { + // a-z + min: 65, + max: 90 + }, { + // A-Z + min: 97, + max: 122 + }]; + /** + * Format a string into a new data type. Currently only supports string to + * number conversion. + * + * @private + * @function format + * @param {string} string - The string to format. + * @param {string} type - The data type (represented as a string) used to + * convert the string. + * @return {boolean} - Returns the formatted string. + */ + + function format(string, type) { + switch (type) { + case 'number': + return parseFloat(string); + } + + return string; + } + /** + * Find the range object from the `RANGES` constant from the character given. + * This is mainly an interval method, but can be used by faces to help + * determine what the next value of a string should be. + * + * @private + * @function format + * @param {string} char - The char used to determine the range. + * @param {string} type - The data type (represented as a string) used to + * convert the string. + * @return {boolean} - Returns the formatted string. + */ + + + function findRange(_char) { + for (var i in RANGES) { + var code = _char.toString().charCodeAt(0); + + if (RANGES[i].min <= code && RANGES[i].max >= code) { + return RANGES[i]; + } + } + + return null; + } + /** + * Create a string from a character code, which is returned by the callback. + * + * @private + * @callback stringFromCharCodeBy + * @param {string} char - The char used to determine the range. + * @param {function} fn - The callback function receives `range` and `code` + * arguments. This function should return a character code. + * @return {string} - Creates a string from the character code returned by the + * callback function. + */ + + + function stringFromCharCodeBy(_char2, fn) { + return String.fromCharCode(fn(findRange(_char2), _char2.charCodeAt(0))); + } + /** + * Calculate the next value for a string. 'a' becomes 'b'. 'A' becomes 'B'. 1 + * becomes 2, etc. If multiple character strings are passed, 'aa' would become + * 'bb'. + * + * @function next + * @param {(string|number)} value - The string or number to convert. + * @return {string} - The formatted string + * @memberof Helpers.Value + */ + + + function next(value) { + var converted = value.toString().split('').map(function (_char3) { + return stringFromCharCodeBy(_char3, function (range, code) { + return !range || code < range.max ? code + 1 : range.min; + }); + }).join(''); + return format(converted, _typeof(value)); + } + /** + * Calculate the prev value for a string. 'b' becomes 'a'. 'B' becomes 'A'. 2 + * becomes 1, 0 becomes 9, etc. If multiple character strings are passed, 'bb' + * would become 'aa'. + * + * @function prev + * @param {(string|number)} value - The string or number to convert. + * @return {string} - The formatted string + * @memberof Helpers.Value + */ + + function prev(value) { + var converted = value.toString().split('').map(function (_char4) { + return stringFromCharCodeBy(_char4, function (range, code) { + return !range || code > range.min ? code - 1 : range.max; + }); + }).join(''); + return format(converted, _typeof(value)); + } + + var FaceValue = + /*#__PURE__*/ + function (_Component) { + _inherits(FaceValue, _Component); + + /** + * The `FaceValue` class handles all the digitizing for the `Face`. + * + * @class FaceValue + * @extends Component + * @param {*} value - The `FaceValue`'s actual value. Most likely should + * string, number, or Date. But since the Face handles the value, it + * could be anything. + * @param {(object|undefined)} [attributes] - The instance attributes. + */ + function FaceValue(value, attributes) { + var _this; + + _classCallCheck(this, FaceValue); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(FaceValue).call(this, Object.assign({ + format: function format(value) { + return value; + }, + prependLeadingZero: true, + minimumDigits: 0 + }, attributes))); + + if (!_this.value) { + _this.value = value; + } + + return _this; + } + /** + * The `digits` attribute. + * + * @type {(Array|undefined)} + */ + + + _createClass(FaceValue, [{ + key: "isNaN", + + /** + * Returns `true` if the `value` attribute is not a number. + * + * @return {boolean} - `true` is the value is not a number. + */ + value: function (_isNaN) { + function isNaN() { + return _isNaN.apply(this, arguments); + } + + isNaN.toString = function () { + return _isNaN.toString(); + }; + + return isNaN; + }(function () { + return isNaN(this.value); + }) + /** + * Returns `true` if the `value` attribute is a number. + * + * @return {boolean} - `true` is the value is a number. + */ + + }, { + key: "isNumber", + value: function isNumber$$1() { + return isNumber(); + } + /** + * Clones the current `FaceValue` instance, but sets a new value to the + * cloned instance. Used for copying the current instance options and + * methods, but setting a new value. + * + * @param {*} value - The n + * @param {(object|undefined)} [attributes] - The instance attributes. + * @return {FaceValue} - The cloned `FaceValue`. + */ + + }, { + key: "clone", + value: function clone(value, attributes) { + return new this.constructor(value, Object.assign(this.getPublicAttributes(), attributes)); + } + /** + * Define the name of the class. + * + * @return {string} + */ + + }, { + key: "digits", + get: function get() { + return this.$digits; + }, + set: function set(value) { + this.$digits = value; + this.minimumDigits = Math.max(this.minimumDigits, length(value)); + } + /** + * The `value` attribute. + * + * @type {*} + */ + + }, { + key: "value", + get: function get() { + return this.$value; + }, + set: function set(value) { + this.$value = value; + this.digits = digitize(this.format(value), { + minimumDigits: this.minimumDigits, + prependLeadingZero: this.prependLeadingZero + }); + } + }], [{ + key: "defineName", + value: function defineName() { + return 'FaceValue'; + } + }]); + + return FaceValue; + }(Component); + + /** + * Validate the data type of a variable. + * + * @function validate + * @param {*} value - The value to validate. + * @param {...*} args - The data types to use for validate. + * @return {boolean} - Returns `true`is the value has a valid data type. + * @memberof Helpers.Validate + */ + + function validate(value) { + var success = false; + + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + flatten(args).forEach(function (arg) { + if (isNull(value) && isNull(arg) || isObject(arg) && value instanceof arg || isFunction(arg) && !isConstructor(arg) && arg(value) === true || isString(arg) && _typeof(value) === arg) { + success = true; + } + }); + return success; + } + + /** + * @alias ConsoleMessages + * @type {object} + * @memberof module:Config/ConsoleMessages + */ + var ConsoleMessages = { + className: 'The className() is not defined.', + items: 'The items property must be an array.', + theme: 'The theme property must be an object.', + language: 'The language must be an object.', + date: 'The value must be an instance of a Date.', + face: 'The face must be an instance of a Face class.', + element: 'The element must be an instance of an HTMLElement', + faceValue: 'The face must be an instance of a FaceValue class.', + timer: 'The timer property must be an instance of a Timer class.' + }; + + var Face = + /*#__PURE__*/ + function (_Component) { + _inherits(Face, _Component); + + /** + * This class is meant to be provide an interface for all other faces to + * extend. + * + * @class Face + * @extends Component + * @param {(FaceValue|object)} value - The `Face` value. If not an instance + * of FaceValue, this argument is assumed to be the instance attributes. + * @param {(object|undefined)} [attributes] - The instance attributes. + */ + function Face(value, attributes) { + var _this; + + _classCallCheck(this, Face); + + if (!(value instanceof FaceValue) && isObject(value)) { + attributes = value; + value = undefined; + } + + _this = _possibleConstructorReturn(this, _getPrototypeOf(Face).call(this)); + + _this.setAttributes(Object.assign({ + autoStart: true, + countdown: false, + animationRate: 500 + }, _this.defaultAttributes(), attributes || {})); + + if (isNull(value) || isUndefined(value)) { + value = _this.defaultValue(); + } + + if (value) { + _this.value = value; + } + + return _this; + } + /** + * The `dataType` attribute. + * + * @type {*} + */ + + + _createClass(Face, [{ + key: "interval", + + /** + * This method is called with every interval, or every time the clock + * should change, and handles the actual incrementing and decrementing the + * clock's `FaceValue`. + * + * @param {FlipClock} instance - The `FlipClock` instance. + * @param {Function} fn - The interval callback. + * @return {Face} - This `Face` instance. + */ + value: function interval(instance, fn) { + if (this.countdown) { + this.decrement(instance); + } else { + this.increment(instance); + } + + callback.call(this, fn); + + if (this.shouldStop(instance)) { + instance.stop(); + } + + return this.emit('interval'); + } + /** + * Determines if the clock should stop or not. + * + * @param {FlipClock} instance - The `FlipClock` instance. + * @return {boolean} - Returns `true` if the clock should stop. + */ + + }, { + key: "shouldStop", + value: function shouldStop(instance) { + return !isUndefined(this.stopAt) ? this.stopAt === instance.value.value : false; + } + /** + * By default this just returns the value unformatted. + * + * @param {FlipClock} instance - The `FlipClock` instance. + * @param {*} value - The value to format. + * @return {*} - The formatted value. + */ + + }, { + key: "format", + value: function format(instance, value) { + return value; + } + /** + * The default value for the `Face`. + * + * @return {*} - The default value. + */ + + }, { + key: "defaultValue", + value: function defaultValue() {} // + + /** + * The default attributes for the `Face`. + * + * @return {(Object|undefined)} - The default attributes. + */ + + }, { + key: "defaultAttributes", + value: function defaultAttributes() {} // + + /** + * The default data type for the `Face` value. + * + * @return {(Object|undefined)} - The default data type. + */ + + }, { + key: "defaultDataType", + value: function defaultDataType() {} // + + /** + * Increment the clock. + * + * @param {FlipClock} instance - The `FlipClock` instance. + * @param {Number} [amount] - The amount to increment. If the amount is not + * defined, it is left up to the `Face` to determine the default value. + * @return {void} + */ + + }, { + key: "increment", + value: function increment(instance, amount) {} // + + /** + * Decrement the clock. + * + * @param {FlipClock} instance - The `FlipClock` instance. + * @param {Number} [amount] - The amount to decrement. If the amount is not + * defined, it is left up to the `Face` to determine the default value. + * @return {void} + */ + + }, { + key: "decrement", + value: function decrement(instance, amount) {} // + + /** + * This method is called right after clock has started. + * + * @param {FlipClock} instance - The `FlipClock` instance. + * @return {void} + */ + + }, { + key: "started", + value: function started(instance) {} // + + /** + * This method is called right after clock has stopped. + * + * @param {FlipClock} instance - The `FlipClock` instance. + * @return {void} + */ + + }, { + key: "stopped", + value: function stopped(instance) {} // + + /** + * This method is called right after clock has reset. + * + * @param {FlipClock} instance - The `FlipClock` instance. + * @return {void} + */ + + }, { + key: "reset", + value: function reset(instance) {} // + + /** + * This method is called right after `Face` has initialized. + * + * @param {FlipClock} instance - The `FlipClock` instance. + * @return {void} + */ + + }, { + key: "initialized", + value: function initialized(instance) {} // + + /** + * This method is called right after `Face` has rendered. + * + * @param {FlipClock} instance - The `FlipClock` instance. + * @return {void} + */ + + }, { + key: "rendered", + value: function rendered(instance) {} // + + /** + * This method is called right after `Face` has mounted. + * + * @param {FlipClock} instance - The `FlipClock` instance. + * @return {void} + */ + + }, { + key: "mounted", + value: function mounted(instance) { + if (this.autoStart && instance.timer.isStopped) { + window.requestAnimationFrame(function () { + return instance.start(instance); + }); + } + } + /** + * Helper method to instantiate a new `FaceValue`. + * + * @param {FlipClock} instance - The `FlipClock` instance. + * @param {object|undefined} [attributes] - The attributes passed to the + * `FaceValue` instance. + * @return {Divider} - The instantiated `FaceValue`. + */ + + }, { + key: "createFaceValue", + value: function createFaceValue(instance, value) { + var _this2 = this; + + return FaceValue.make(isFunction(value) && !value.name ? value() : value, { + minimumDigits: this.minimumDigits, + format: function format(value) { + return _this2.format(instance, value); + } + }); + } + }, { + key: "dataType", + get: function get() { + return this.defaultDataType(); + } + /** + * The `value` attribute. + * + * @type {*} + */ + + }, { + key: "value", + get: function get() { + return this.$value; + }, + set: function set(value) { + if (!(value instanceof FaceValue)) { + value = this.createFaceValue(value); + } + + this.$value = value; + } + /** + * The `stopAt` attribute. + * + * @type {*} + */ + + }, { + key: "stopAt", + get: function get() { + return this.$stopAt; + }, + set: function set(value) { + this.$stopAt = value; + } + /** + * The `originalValue` attribute. + * + * @type {*} + */ + + }, { + key: "originalValue", + get: function get() { + return this.$originalValue; + }, + set: function set(value) { + this.$originalValue = value; + } + }]); + + return Face; + }(Component); + + /** + * @classdesc Arabic Language Pack + * @desc This class will be used to translate tokens into the Arabic language. + * @namespace Languages.Arabic + */ + + /** + * @constant dictionary + * @type {object} + * @memberof Languages.Arabic + */ + var dictionary = { + 'years': 'سنوات', + 'months': 'شهور', + 'days': 'أيام', + 'hours': 'ساعات', + 'minutes': 'دقائق', + 'seconds': 'ثواني' + }; + /** + * @constant aliases + * @type {array} + * @memberof Languages.Arabic + */ + + var aliases = ['ar', 'ar-ar', 'arabic']; + + var arAr = /*#__PURE__*/Object.freeze({ + dictionary: dictionary, + aliases: aliases + }); + + /** + * @classdesc Catalan Language Pack + * @desc This class will used to translate tokens into the Catalan language. + * @namespace Languages.Catalan + */ + + /** + * @constant dictionary + * @type {object} + * @memberof Languages.Catalan + */ + var dictionary$1 = { + 'years': 'Anys', + 'months': 'Mesos', + 'days': 'Dies', + 'hours': 'Hores', + 'minutes': 'Minuts', + 'seconds': 'Segons' + }; + /** + * @constant aliases + * @type {array} + * @memberof Languages.Catalan + */ + + var aliases$1 = ['ca', 'ca-es', 'catalan']; + + var caEs = /*#__PURE__*/Object.freeze({ + dictionary: dictionary$1, + aliases: aliases$1 + }); + + /** + * @classdesc Czech Language Pack + * @desc This class will used to translate tokens into the Czech language. + * @namespace Languages.Czech + */ + + /** + * @constant dictionary + * @type {object} + * @memberof Languages.Czech + */ + var dictionary$2 = { + 'years': 'Roky', + 'months': 'Měsíce', + 'days': 'Dny', + 'hours': 'Hodiny', + 'minutes': 'Minuty', + 'seconds': 'Sekundy' + }; + /** + * @constant aliases + * @type {array} + * @memberof Languages.Czech + */ + + var aliases$2 = ['cs', 'cs-cz', 'cz', 'cz-cs', 'czech']; + + var csCz = /*#__PURE__*/Object.freeze({ + dictionary: dictionary$2, + aliases: aliases$2 + }); + + /** + * @classdesc Danish Language Pack + * @desc This class will used to translate tokens into the Danish language. + * @namespace Languages.Danish + */ + + /** + * @constant dictionary + * @type {object} + * @memberof Languages.Danish + */ + var dictionary$3 = { + 'years': 'År', + 'months': 'Måneder', + 'days': 'Dage', + 'hours': 'Timer', + 'minutes': 'Minutter', + 'seconds': 'Sekunder' + }; + /** + * @constant aliases + * @type {array} + * @memberof Languages.Danish + */ + + var aliases$3 = ['da', 'da-dk', 'danish']; + + var daDk = /*#__PURE__*/Object.freeze({ + dictionary: dictionary$3, + aliases: aliases$3 + }); + + /** + * @classdesc German Language Pack + * @desc This class will used to translate tokens into the German language. + * @namespace Languages.German + */ + + /** + * @constant dictionary + * @type {object} + * @memberof Languages.German + */ + var dictionary$4 = { + 'years': 'Jahre', + 'months': 'Monate', + 'days': 'Tage', + 'hours': 'Stunden', + 'minutes': 'Minuten', + 'seconds': 'Sekunden' + }; + /** + * @constant aliases + * @type {array} + * @memberof Languages.German + */ + + var aliases$4 = ['de', 'de-de', 'german']; + + var deDe = /*#__PURE__*/Object.freeze({ + dictionary: dictionary$4, + aliases: aliases$4 + }); + + /** + * @classdesc English Language Pack + * @desc This class will used to translate tokens into the English language. + * @namespace Languages.English + */ + + /** + * @constant dictionary + * @type {object} + * @memberof Languages.English + */ + var dictionary$5 = { + 'years': 'Years', + 'months': 'Months', + 'days': 'Days', + 'hours': 'Hours', + 'minutes': 'Minutes', + 'seconds': 'Seconds' + }; + /** + * @constant aliases + * @type {array} + * @memberof Languages.English + */ + + var aliases$5 = ['en', 'en-us', 'english']; + + var English = /*#__PURE__*/Object.freeze({ + dictionary: dictionary$5, + aliases: aliases$5 + }); + + /** + * @classdesc Spanish Language Pack + * @desc This class will used to translate tokens into the Spanish language. + * @namespace Languages.Spanish + */ + + /** + * @constant dictionary + * @type {object} + * @memberof Languages.Spanish + */ + var dictionary$6 = { + 'years': 'Años', + 'months': 'Meses', + 'days': 'Días', + 'hours': 'Horas', + 'minutes': 'Minutos', + 'seconds': 'Segundos' + }; + /** + * @constant aliases + * @type {array} + * @memberof Languages.Spanish + */ + + var aliases$6 = ['es', 'es-es', 'spanish']; + + var esEs = /*#__PURE__*/Object.freeze({ + dictionary: dictionary$6, + aliases: aliases$6 + }); + + /** + * @classdesc Persian Language Pack + * @desc This class will used to translate tokens into the Persian language. + * @namespace Languages.Persian + */ + + /** + * @constant dictionary + * @type {object} + * @memberof Languages.Persian + */ + var dictionary$7 = { + 'years': 'سال', + 'months': 'ماه', + 'days': 'روز', + 'hours': 'ساعت', + 'minutes': 'دقیقه', + 'seconds': 'ثانیه' + }; + /** + * @constant aliases + * @type {array} + * @memberof Languages.Persian + */ + + var aliases$7 = ['fa', 'fa-ir', 'persian']; + + var faIr = /*#__PURE__*/Object.freeze({ + dictionary: dictionary$7, + aliases: aliases$7 + }); + + /** + * @classdesc Finnish Language Pack + * @desc This class will used to translate tokens into the Finnish language. + * @namespace Languages.Finnish + */ + + /** + * @constant dictionary + * @type {object} + * @memberof Languages.Finnish + */ + var dictionary$8 = { + 'years': 'Vuotta', + 'months': 'Kuukautta', + 'days': 'Päivää', + 'hours': 'Tuntia', + 'minutes': 'Minuuttia', + 'seconds': 'Sekuntia' + }; + /** + * @constant aliases + * @type {array} + * @memberof Languages.Finnish + */ + + var aliases$8 = ['fi', 'fi-fi', 'finnish']; + + var fiFi = /*#__PURE__*/Object.freeze({ + dictionary: dictionary$8, + aliases: aliases$8 + }); + + /** + * @classdesc Canadian French Language Pack + * @desc This class will used to translate tokens into the Canadian French language. + * @namespace Languages.CanadianFrench + */ + + /** + * @constant dictionary + * @type {object} + * @memberof Languages.CanadianFrench + */ + var dictionary$9 = { + 'years': 'Ans', + 'months': 'Mois', + 'days': 'Jours', + 'hours': 'Heures', + 'minutes': 'Minutes', + 'seconds': 'Secondes' + }; + /** + * @constant aliases + * @type {array} + * @memberof Languages.CanadianFrench + */ + + var aliases$9 = ['fr', 'fr-ca', 'french']; + + var frCa = /*#__PURE__*/Object.freeze({ + dictionary: dictionary$9, + aliases: aliases$9 + }); + + /** + * @classdesc Hebrew Language Pack + * @desc This class will used to translate tokens into the Hebrew language. + * @namespace Languages.Hebrew + */ + + /** + * @constant dictionary + * @type {object} + * @memberof Languages.Hebrew + */ + var dictionary$10 = { + 'years': 'שנים', + 'months': 'חודש', + 'days': 'ימים', + 'hours': 'שעות', + 'minutes': 'דקות', + 'seconds': 'שניות' + }; + /** + * @constant aliases + * @type {array} + * @memberof Languages.Hebrew + */ + + var aliases$10 = ['il', 'he-il', 'hebrew']; + + var heIl = /*#__PURE__*/Object.freeze({ + dictionary: dictionary$10, + aliases: aliases$10 + }); + + /** + * @classdesc Hungarian Language Pack + * @desc This class will used to translate tokens into the Hungarian language. + * @namespace Languages.Hungarian + */ + + /** + * @constant dictionary + * @type {object} + * @memberof Languages.Hungarian + */ + var dictionary$11 = { + 'years': 'Év', + 'months': 'Hónap', + 'days': 'Nap', + 'hours': 'Óra', + 'minutes': 'Perc', + 'seconds': 'Másodperc' + }; + /** + * @constant aliases + * @type {array} + * @memberof Languages.Hungarian + */ + + var aliases$11 = ['hu', 'hu-hu', 'hungarian']; + + var huHu = /*#__PURE__*/Object.freeze({ + dictionary: dictionary$11, + aliases: aliases$11 + }); + + /** + * @classdesc Italian Language Pack + * @desc This class will used to translate tokens into the Italian language. + * @namespace Languages.Italian + */ + + /** + * @constant dictionary + * @type {object} + * @memberof Languages.Italian + */ + var dictionary$12 = { + 'years': 'Anni', + 'months': 'Mesi', + 'days': 'Giorni', + 'hours': 'Ore', + 'minutes': 'Minuti', + 'seconds': 'Secondi' + }; + /** + * @constant aliases + * @type {array} + * @memberof Languages.Italian + */ + + var aliases$12 = ['da', 'da-dk', 'danish']; + + var itIt = /*#__PURE__*/Object.freeze({ + dictionary: dictionary$12, + aliases: aliases$12 + }); + + /** + * @classdesc Japanese Language Pack + * @desc This class will used to translate tokens into the Japanese language. + * @namespace Languages.Japanese + */ + + /** + * @constant dictionary + * @type {object} + * @memberof Languages.Japanese + */ + var dictionary$13 = { + 'years': '年', + 'months': '月', + 'days': '日', + 'hours': '時', + 'minutes': '分', + 'seconds': '秒' + }; + /** + * @constant aliases + * @type {array} + * @memberof Languages.Japanese + */ + + var aliases$13 = ['jp', 'ja-jp', 'japanese']; + + var jaJp = /*#__PURE__*/Object.freeze({ + dictionary: dictionary$13, + aliases: aliases$13 + }); + + /** + * @classdesc Korean Language Pack + * @desc This class will used to translate tokens into the Korean language. + * @namespace Languages.Korean + */ + + /** + * @constant dictionary + * @type {object} + * @memberof Languages.Korean + */ + var dictionary$14 = { + 'years': '년', + 'months': '월', + 'days': '일', + 'hours': '시', + 'minutes': '분', + 'seconds': '초' + }; + /** + * @constant aliases + * @type {array} + * @memberof Languages.Korean + */ + + var aliases$14 = ['ko', 'ko-kr', 'korean']; + + var koKr = /*#__PURE__*/Object.freeze({ + dictionary: dictionary$14, + aliases: aliases$14 + }); + + /** + * @classdesc Latvian Language Pack + * @desc This class will used to translate tokens into the Latvian language. + * @namespace Languages.Latvian + */ + + /** + * @constant dictionary + * @type {object} + * @memberof Languages.Latvian + */ + var dictionary$15 = { + 'years': 'Gadi', + 'months': 'Mēneši', + 'days': 'Dienas', + 'hours': 'Stundas', + 'minutes': 'Minūtes', + 'seconds': 'Sekundes' + }; + /** + * @constant aliases + * @type {array} + * @memberof Languages.Latvian + */ + + var aliases$15 = ['lv', 'lv-lv', 'latvian']; + + var lvLv = /*#__PURE__*/Object.freeze({ + dictionary: dictionary$15, + aliases: aliases$15 + }); + + /** + * @classdesc Dutch Language Pack + * @desc This class will used to translate tokens into the Dutch language. + * @namespace Languages.Dutch + */ + + /** + * @constant dictionary + * @type {object} + * @memberof Languages.Dutch + */ + var dictionary$16 = { + 'years': 'Jaren', + 'months': 'Maanden', + 'days': 'Dagen', + 'hours': 'Uren', + 'minutes': 'Minuten', + 'seconds': 'Seconden' + }; + /** + * @constant aliases + * @type {array} + * @memberof Languages.Dutch + */ + + var aliases$16 = ['nl', 'nl-be', 'dutch']; + + var nlBe = /*#__PURE__*/Object.freeze({ + dictionary: dictionary$16, + aliases: aliases$16 + }); + + /** + * @classdesc Norwegian-Bokmål Language Pack + * @desc This class will used to translate tokens into the Norwegian-Bokmål language. + * @namespace Languages.Norwegian + */ + + /** + * @constant dictionary + * @type {object} + * @memberof Languages.Norwegian + */ + var dictionary$17 = { + 'years': 'År', + 'months': 'Måneder', + 'days': 'Dager', + 'hours': 'Timer', + 'minutes': 'Minutter', + 'seconds': 'Sekunder' + }; + /** + * @constant aliases + * @type {array} + * @memberof Languages.Norwegian + */ + + var aliases$17 = ['no', 'nb', 'no-nb', 'norwegian']; + + var noNb = /*#__PURE__*/Object.freeze({ + dictionary: dictionary$17, + aliases: aliases$17 + }); + + /** + * @classdesc Polish Language Pack + * @desc This class will used to translate tokens into the Polish language. + * @namespace Languages.Polish + */ + + /** + * @constant dictionary + * @type {object} + * @memberof Languages.Polish + */ + var dictionary$18 = { + 'years': 'Lat', + 'months': 'Miesięcy', + 'days': 'Dni', + 'hours': 'Godziny', + 'minutes': 'Minuty', + 'seconds': 'Sekundy' + }; + /** + * @constant aliases + * @type {array} + * @memberof Languages.Polish + */ + + var aliases$18 = ['pl', 'pl-pl', 'polish']; + + var plPl = /*#__PURE__*/Object.freeze({ + dictionary: dictionary$18, + aliases: aliases$18 + }); + + /** + * @classdesc Portuguese Language Pack + * @desc This class will used to translate tokens into the Portuguese language. + * @namespace Languages.Portuguese + */ + + /** + * @constant dictionary + * @type {object} + * @memberof Languages.Portuguese + */ + var dictionary$19 = { + 'years': 'Anos', + 'months': 'Meses', + 'days': 'Dias', + 'hours': 'Horas', + 'minutes': 'Minutos', + 'seconds': 'Segundos' + }; + /** + * @constant aliases + * @type {array} + * @memberof Languages.Portuguese + */ + + var aliases$19 = ['pt', 'pt-br', 'portuguese']; + + var ptBr = /*#__PURE__*/Object.freeze({ + dictionary: dictionary$19, + aliases: aliases$19 + }); + + /** + * @classdesc Romanian Language Pack + * @desc This class will used to translate tokens into the Romanian language. + * @namespace Languages.Romanian + */ + + /** + * @constant dictionary + * @type {object} + * @memberof Languages.Romanian + */ + var dictionary$20 = { + 'years': 'Ani', + 'months': 'Luni', + 'days': 'Zile', + 'hours': 'Ore', + 'minutes': 'Minute', + 'seconds': 'sSecunde' + }; + /** + * @constant aliases + * @type {array} + * @memberof Languages.Romanian + */ + + var aliases$20 = ['ro', 'ro-ro', 'romana']; + + var roRo = /*#__PURE__*/Object.freeze({ + dictionary: dictionary$20, + aliases: aliases$20 + }); + + /** + * @classdesc Russian Language Pack + * @desc This class will used to translate tokens into the Russian language. + * @namespace Languages.Russian + */ + + /** + * @constant dictionary + * @type {object} + * @memberof Languages.Russian + */ + var dictionary$21 = { + 'years': 'лет', + 'months': 'месяцев', + 'days': 'дней', + 'hours': 'часов', + 'minutes': 'минут', + 'seconds': 'секунд' + }; + /** + * @constant aliases + * @type {array} + * @memberof Languages.Russian + */ + + var aliases$21 = ['ru', 'ru-ru', 'russian']; + + var ruRu = /*#__PURE__*/Object.freeze({ + dictionary: dictionary$21, + aliases: aliases$21 + }); + + /** + * @classdesc Slovak Language Pack + * @desc This class will used to translate tokens into the Slovak language. + * @namespace Languages.Slovak + */ + + /** + * @constant dictionary + * @type {object} + * @memberof Languages.Slovak + */ + var dictionary$22 = { + 'years': 'Roky', + 'months': 'Mesiace', + 'days': 'Dni', + 'hours': 'Hodiny', + 'minutes': 'Minúty', + 'seconds': 'Sekundy' + }; + /** + * @constant aliases + * @type {array} + * @memberof Languages.Slovak + */ + + var aliases$22 = ['sk', 'sk-sk', 'slovak']; + + var skSk = /*#__PURE__*/Object.freeze({ + dictionary: dictionary$22, + aliases: aliases$22 + }); + + /** + * @classdesc Swedish Language Pack + * @desc This class will used to translate tokens into the Swedish language. + * @namespace Languages.Swedish + */ + + /** + * @constant dictionary + * @type {object} + * @memberof Languages.Swedish + */ + var dictionary$23 = { + 'years': 'År', + 'months': 'Månader', + 'days': 'Dagar', + 'hours': 'Timmar', + 'minutes': 'Minuter', + 'seconds': 'Sekunder' + }; + /** + * @constant aliases + * @type {array} + * @memberof Languages.Swedish + */ + + var aliases$23 = ['sv', 'sv-se', 'swedish']; + + var svSe = /*#__PURE__*/Object.freeze({ + dictionary: dictionary$23, + aliases: aliases$23 + }); + + /** + * @classdesc Thai Language Pack + * @desc This class will used to translate tokens into the Thai language. + * @namespace Languages.Thai + */ + + /** + * @constant dictionary + * @type {object} + * @memberof Languages.Thai + */ + var dictionary$24 = { + 'years': 'ปี', + 'months': 'เดือน', + 'days': 'วัน', + 'hours': 'ชั่วโมง', + 'minutes': 'นาที', + 'seconds': 'วินาที' + }; + /** + * @constant aliases + * @type {array} + * @memberof Languages.Thai + */ + + var aliases$24 = ['th', 'th-th', 'thai']; + + var thTh = /*#__PURE__*/Object.freeze({ + dictionary: dictionary$24, + aliases: aliases$24 + }); + + /** + * @classdesc Turkish Language Pack + * @desc This class will used to translate tokens into the Turkish language. + * @namespace Languages.Turkish + */ + + /** + * @constant dictionary + * @type {object} + * @memberof Languages.Turkish + */ + var dictionary$25 = { + 'years': 'Yıl', + 'months': 'Ay', + 'days': 'Gün', + 'hours': 'Saat', + 'minutes': 'Dakika', + 'seconds': 'Saniye' + }; + /** + * @constant aliases + * @type {array} + * @memberof Languages.Turkish + */ + + var aliases$25 = ['tr', 'tr-tr', 'turkish']; + + var trTr = /*#__PURE__*/Object.freeze({ + dictionary: dictionary$25, + aliases: aliases$25 + }); + + /** + * @classdesc Ukrainian Language Pack + * @desc This class will used to translate tokens into the Ukrainian language. + * @namespace Languages.Ukrainian + */ + + /** + * @constant dictionary + * @type {object} + * @memberof Languages.Ukrainian + */ + var dictionary$26 = { + 'years': 'роки', + 'months': 'місяці', + 'days': 'дні', + 'hours': 'години', + 'minutes': 'хвилини', + 'seconds': 'секунди' + }; + /** + * @constant aliases + * @type {array} + * @memberof Languages.Ukrainian + */ + + var aliases$26 = ['ua', 'ua-ua', 'ukraine']; + + var uaUa = /*#__PURE__*/Object.freeze({ + dictionary: dictionary$26, + aliases: aliases$26 + }); + + /** + * @classdesc Vietnamese Language Pack + * @desc This class will used to translate tokens into the Vietnamese language. + * @namespace Languages.Vietnamese + */ + + /** + * @constant dictionary + * @type {object} + * @memberof Languages.Vietnamese + */ + var dictionary$27 = { + 'years': 'Năm', + 'months': 'Tháng', + 'days': 'Ngày', + 'hours': 'Giờ', + 'minutes': 'Phút', + 'seconds': 'Giây' + }; + /** + * @constant aliases + * @type {array} + * @memberof Languages.Vietnamese + */ + + var aliases$27 = ['vn', 'vn-vn', 'vietnamese']; + + var vnVn = /*#__PURE__*/Object.freeze({ + dictionary: dictionary$27, + aliases: aliases$27 + }); + + /** + * @classdesc Chinese Language Pack + * @desc This class will used to translate tokens into the Chinese language. + * @namespace Languages.Chinese + */ + + /** + * @constant dictionary + * @type {object} + * @memberof Languages.Chinese + */ + var dictionary$28 = { + 'years': '年', + 'months': '月', + 'days': '日', + 'hours': '时', + 'minutes': '分', + 'seconds': '秒' + }; + /** + * @constant aliases + * @type {array} + * @memberof Languages.Chinese + */ + + var aliases$28 = ['zh', 'zh-cn', 'chinese']; + + var zhCn = /*#__PURE__*/Object.freeze({ + dictionary: dictionary$28, + aliases: aliases$28 + }); + + /** + * @classdesc Traditional Chinese Language Pack + * @desc This class will used to translate tokens into the Traditional Chinese language. + * @namespace Languages.TraditionalChinese + */ + + /** + * @constant dictionary + * @type {object} + * @memberof Languages.TraditionalChinese + */ + var dictionary$29 = { + 'years': '年', + 'months': '月', + 'days': '日', + 'hours': '時', + 'minutes': '分', + 'seconds': '秒' + }; + /** + * @constant aliases + * @type {array} + * @memberof Languages.TraditionalChinese + */ + + var aliases$29 = ['zh-tw']; + + var zhTw = /*#__PURE__*/Object.freeze({ + dictionary: dictionary$29, + aliases: aliases$29 + }); + + /** + * @namespace Languages + */ + + var LANGUAGES = /*#__PURE__*/Object.freeze({ + Arabic: arAr, + Catalan: caEs, + Czech: csCz, + Danish: daDk, + German: deDe, + English: English, + Spanish: esEs, + Persian: faIr, + Finnish: fiFi, + French: frCa, + Hebrew: heIl, + Hungarian: huHu, + Italian: itIt, + Japanese: jaJp, + Korean: koKr, + Latvian: lvLv, + Dutch: nlBe, + Norwegian: noNb, + Polish: plPl, + Portuguese: ptBr, + Romanian: roRo, + Russian: ruRu, + Slovak: skSk, + Swedish: svSe, + Thai: thTh, + Turkish: trTr, + Ukrainian: uaUa, + Vietnamese: vnVn, + Chinese: zhCn, + TraditionalChinese: zhTw + }); + + /** + * @namespace Helpers.Language + */ + /** + * Return the language associated with the key. Returns `null` if no language is + * found. + * + * @function language + * @param {string} name - The name or id of the language. + * @return {object|null} - The language dictionary, or null if not found. + * @memberof Helpers.Language + */ + + function language(name) { + return name ? LANGUAGES[name.toLowerCase()] || Object.values(LANGUAGES).find(function (value) { + return value.aliases.indexOf(name) !== -1; + }) : null; + } + + /** + * @namespace Helpers.Translate + */ + /** + * Translate an English string into another language. + * + * @function translate + * @param {string} string - The string to translate. + * @param {(string|object)} from - The language used to translate. If a string, + * the language is loaded into an object. + * @return {string} - If no diction key is found, the untranslated string is + * returned. + * @memberof Helpers.Translate + */ + + function translate(string, from) { + var lang = isString(from) ? language(from) : from; + var dictionary = lang.dictionary || lang; + return dictionary[string] || string; + } + + /** + * A collection of functions to manage DOM nodes and theme templates. + * + * @namespace Helpers.Template + */ + /** + * Swap a new DOM node with an existing one. + * + * @function swap + * @param {HTMLElement} subject - The new DOM node. + * @param {HTMLElement} existing - The existing DOM node. + * @return {HTMLElement} - Returns the new element if it was mounted, otherwise + * the existing node is returned. + * @memberof Helpers.Template + */ + + function swap(subject, existing) { + if (existing.parentNode) { + existing.parentNode.replaceChild(subject, existing); + return subject; + } + + return existing; + } + /** + * Set the attribute of an element. + * + * @function setAttributes + * @param {HTMLElement} el - The DOM node that will receive the attributes. + * @param {Object|undefined} [attributes] - The attribute object, or if no object + * is passed, then the action is ignored. + * @return {HTMLElement} el - The DOM node that received the attributes. + * @memberof Helpers.Template + */ + + function setAttributes(el, attributes) { + if (isObject(attributes)) { + for (var i in attributes) { + el.setAttribute(i, attributes[i]); + } + } + + return el; + } + /** + * Append an array of DOM nodes to a parent. + * + * @function appendChildren + * @param {HTMLElement} el - The parent DOM node. + * @param {Array|undefined} [children] - The array of children. If no array + * is passed, then the method silently fails to run. + * @return {HTMLElement} el - The DOM node that received the attributes. + * @memberof Helpers.Template + */ + + function appendChildren(el, children) { + if (isArray(children)) { + children.filter(noop).forEach(function (child) { + if (child instanceof HTMLElement) { + el.appendChild(child); + } + }); + } + + return el; + } + /** + * Create a new HTMLElement instance. + * + * @function createElement + * @param {HTMLElement} el - The parent DOM node. + * @param {Array|undefined} [children] - The array of children. If no array + * is passed, then the method silently fails to run. + * @param {Object|undefined} [attributes] - The attributes object. + * @return {HTMLElement} el - The DOM node that received the attributes. + * @memberof Helpers.Template + */ + + function createElement(el, children, attributes) { + if (!(el instanceof HTMLElement)) { + el = document.createElement(el); + } + + setAttributes(el, isObject(children) ? children : attributes); + + if (!isObject(children) && !isArray(children)) { + el.innerHTML = children; + } else { + appendChildren(el, children); + } + + return el; + } + + var DomComponent = + /*#__PURE__*/ + function (_Component) { + _inherits(DomComponent, _Component); + + /** + * An abstract class that all other DOM components can extend. + * + * @class DomComponent + * @extends Component + * @param {(object|undefined)} [attributes] - The instance attributes. + */ + function DomComponent(attributes) { + var _this; + + _classCallCheck(this, DomComponent); + + _this = _possibleConstructorReturn(this, _getPrototypeOf(DomComponent).call(this, Object.assign({ + parent: null + }, attributes))); + + if (!_this.theme) { + error("".concat(_this.name, " does not have a theme defined.")); + } + + if (!_this.language) { + error("".concat(_this.name, " does not have a language defined.")); + } + + if (!_this.theme[_this.name]) { + throw new Error("".concat(_this.name, " cannot be rendered because it has no template.")); + } + + return _this; + } + /** + * The `className` attribute. Used for CSS. + * + * @type {string} + */ + + + _createClass(DomComponent, [{ + key: "translate", + + /** + * Translate a string. + * + * @param {string} string - The string to translate. + * @return {string} - The translated string. If no tranlation found, the + * untranslated string is returned. + */ + value: function translate$$1(string) { + return translate(string, this.language); + } + /** + * Alias to translate(string); + * + * @alias DomComponent.translate + */ + + }, { + key: "t", + value: function t(string) { + return this.translate(string); + } + /** + * Render the DOM component. + * + * @return {HTMLElement} - The `el` attribute. + */ + + }, { + key: "render", + value: function render() { + var el = createElement('div', { + "class": this.className === 'flip-clock' ? this.className : 'flip-clock-' + this.className + }); + this.theme[this.name](el, this); + + if (!this.el) { + this.el = el; + } else if (this.el.innerHTML !== el.innerHTML) { + this.el = swap(el, this.el); + } + + return this.el; + } + /** + * Mount a DOM component to a parent node. + * + * @param {HTMLElement} parent - The parent DOM node. + * @param {(false|HTMLElement)} [before=false] - If `false`, element is + * appended to the parent node. If an instance of an `HTMLElement`, + * the component will be inserted before the specified element. + * @return {HTMLElement} - The `el` attribute. + */ + + }, { + key: "mount", + value: function mount(parent) { + var before = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false; + this.render(); + this.parent = parent; + + if (!before) { + this.parent.appendChild(this.el); + } else { + this.parent.insertBefore(this.el, before); + } + + return this.el; + } + }, { + key: "className", + get: function get() { + return kebabCase(this.constructor.defineName()); + } + /** + * The `el` attribute. + * + * @type {HTMLElement} + */ + + }, { + key: "el", + get: function get() { + return this.$el; + }, + set: function set(value) { + if (!validate(value, null, HTMLElement)) { + error(ConsoleMessages.element); + } + + this.$el = value; + } + /** + * The `parent` attribute. Parent is set when `DomComponent` instances are + * mounted. + * + * @type {DomComponent} + */ + + }, { + key: "parent", + get: function get() { + return this.$parent; + }, + set: function set(parent) { + this.$parent = parent; + } + /** + * The `theme` attribute. + * + * @type {object} + */ + + }, { + key: "theme", + get: function get() { + return this.$theme; + }, + set: function set(value) { + if (!validate(value, 'object')) { + error(ConsoleMessages.value); + } + + this.$theme = value; + } + /** + * Get the language attribute. + * + * @type {object} + */ + + }, { + key: "language", + get: function get() { + return this.$language; + }, + set: function set(value) { + if (isString(value)) { + value = language(value); + } + + if (!validate(value, 'object')) { + error(ConsoleMessages.language); + } + + this.$language = value; + } + }]); + + return DomComponent; + }(Component); + + /** + * Create a new `Divider` instance. + * + * The purpose of this class is to return a unique class name so the theme can + * render it appropriately, since each `DomComponent` can receive its own template + * from the theme. + * + * @class Divider + * @extends DomComponent + * @param {(object|undefined)} [attributes] - The instance attributes. + */ + + var Divider = + /*#__PURE__*/ + function (_DomComponent) { + _inherits(Divider, _DomComponent); + + function Divider() { + _classCallCheck(this, Divider); + + return _possibleConstructorReturn(this, _getPrototypeOf(Divider).apply(this, arguments)); + } + + _createClass(Divider, null, [{ + key: "defineName", + + /** + * Define the name of the class. + * + * @return {string} + */ + value: function defineName() { + return 'Divider'; + } + }]); + + return Divider; + }(DomComponent); + + var ListItem = + /*#__PURE__*/ + function (_DomComponent) { + _inherits(ListItem, _DomComponent); + + /** + * This class is used to represent a single digits in a `List`. + * + * @class ListItem + * @extends DomComponent + * @param {(Number|String)} value - The value of the `ListItem`. + * @param {object|undefined} [attributes] - The instance attributes. + */ + function ListItem(value, attributes) { + _classCallCheck(this, ListItem); + + return _possibleConstructorReturn(this, _getPrototypeOf(ListItem).call(this, Object.assign({ + value: value + }, isObject(value) ? value : null, attributes))); + } + /** + * Define the name of the class. + * + * @return {string} + */ + + + _createClass(ListItem, null, [{ + key: "defineName", + value: function defineName() { + return 'ListItem'; + } + }]); + + return ListItem; + }(DomComponent); + + var List = + /*#__PURE__*/ + function (_DomComponent) { + _inherits(List, _DomComponent); + + /** + * This class is used to add a digit to the clock face. This class is called + * `List` because it contains a list of `ListItem`'s which are used to + * create flip effects. In the context of FlipClock.js a `List` represents + * one single digit. + * + * @class List + * @extends DomComponent + * @param {Number|String|Object} label - The active value. If an object, it + * is assumed that it is the instance attributes. + * @param {object|undefined} [attributes] - The instance attributes. + */ + function List(value, attributes) { + _classCallCheck(this, List); + + return _possibleConstructorReturn(this, _getPrototypeOf(List).call(this, Object.assign({ + value: value, + items: [] + }, isObject(value) ? value : null, attributes))); + } + /** + * Get the `value` attribute. + * + * @type {(Number|String)} + */ + + + _createClass(List, [{ + key: "createListItem", + + /** + * Helper method to instantiate a new `ListItem`. + * + * @param {(Number|String)} value - The `ListItem` value. + * @param {(Object|undefined)} [attributes] - The instance attributes. + * @return {ListItem} - The instantiated `ListItem`. + */ + value: function createListItem(value, attributes) { + var item = new ListItem(value, Object.assign({ + theme: this.theme, + language: this.language + }, attributes)); + this.$items.push(item); + return item; + } + /** + * Define the name of the class. + * + * @return {string} + */ + + }, { + key: "value", + get: function get() { + return this.$value; + }, + set: function set(value) { + this.$value = value; + } + /** + * Get the `items` attribute. + * + * @type {(Number|String)} + */ + + }, { + key: "items", + get: function get() { + return this.$items; + }, + set: function set(value) { + this.$items = value; + } + }], [{ + key: "defineName", + value: function defineName() { + return 'List'; + } + }]); + + return List; + }(DomComponent); + + var Group = + /*#__PURE__*/ + function (_DomComponent) { + _inherits(Group, _DomComponent); + + /** + * This class is used to group values within a clock face. How the groups + * are displayed is determined by the theme. + * + * @class Group + * @extends DomComponent + * @param {Array|Object} items - An array `List` instances or an object of + * attributes. If not an array, assumed to be the attributes. + * @param {object|undefined} [attributes] - The instance attributes. + */ + function Group(items, attributes) { + _classCallCheck(this, Group); + + return _possibleConstructorReturn(this, _getPrototypeOf(Group).call(this, Object.assign({ + items: isArray(items) ? items : [] + }, isObject(items) ? items : null, attributes))); + } + /** + * Define the name of the class. + * + * @return {string} + */ + + + _createClass(Group, null, [{ + key: "defineName", + value: function defineName() { + return 'Group'; + } + }]); + + return Group; + }(DomComponent); + + var Label = + /*#__PURE__*/ + function (_DomComponent) { + _inherits(Label, _DomComponent); + + /** + * This class is used to add a label to the clock face. + * + * @class Label + * @extends DomComponent + * @param {Number|String|Object} label - The label attribute. If an object, + * it is assumed that it is the instance attributes. + * @param {object|undefined} [attributes] - The instance attributes. + */ + function Label(label, attributes) { + _classCallCheck(this, Label); + + return _possibleConstructorReturn(this, _getPrototypeOf(Label).call(this, Object.assign({ + label: label + }, isObject(label) ? label : null, attributes))); + } + /** + * Define the name of the class. + * + * @return {string} + */ + + + _createClass(Label, null, [{ + key: "defineName", + value: function defineName() { + return 'Label'; + } + }]); + + return Label; + }(DomComponent); + + var Timer = + /*#__PURE__*/ + function (_Component) { + _inherits(Timer, _Component); + + /** + * Create a new `Timer` instance. + * + * @class Timer + * @extends Component + * @param {(Object|Number)} interval - The interval passed as a `Number`, + * or can set the attribute of the class with an object. + */ + function Timer(interval) { + _classCallCheck(this, Timer); + + return _possibleConstructorReturn(this, _getPrototypeOf(Timer).call(this, Object.assign({ + count: 0, + handle: null, + started: null, + running: false, + interval: isNumber(interval) ? interval : null + }, isObject(interval) ? interval : null))); + } + /** + * The `elapsed` attribute. + * + * @type {Number} + */ + + + _createClass(Timer, [{ + key: "reset", + + /** + * Resets the timer. + * + * @param {(Function|undefined)} fn - The interval callback. + * @return {Timer} - The `Timer` instance. + */ + value: function reset(fn) { + var _this = this; + + this.stop(function () { + _this.count = 0; + + _this.start(function () { + return callback.call(_this, fn); + }); + + _this.emit('reset'); + }); + return this; + } + /** + * Starts the timer. + * + * @param {Function} fn - The interval callback. + * @return {Timer} - The `Timer` instance. + */ + + }, { + key: "start", + value: function start(fn) { + var _this2 = this; + + this.started = new Date(); + this.lastLoop = Date.now(); + this.running = true; + this.emit('start'); + + var loop = function loop() { + if (Date.now() - _this2.lastLoop >= _this2.interval) { + callback.call(_this2, fn); + _this2.lastLoop = Date.now(); + + _this2.emit('interval'); + + _this2.count++; + } + + _this2.handle = window.requestAnimationFrame(loop); + return _this2; + }; + + return loop(); + } + /** + * Stops the timer. + * + * @param {Function} fn - The stop callback. + * @return {Timer} - The `Timer` instance. + */ + + }, { + key: "stop", + value: function stop(fn) { + var _this3 = this; + + if (this.isRunning) { + setTimeout(function () { + window.cancelAnimationFrame(_this3.handle); + _this3.running = false; + callback.call(_this3, fn); + + _this3.emit('stop'); + }); + } + + return this; + } + /** + * Define the name of the class. + * + * @return {string} + */ + + }, { + key: "elapsed", + get: function get() { + return !this.lastLoop ? 0 : this.lastLoop - (this.started ? this.started.getTime() : new Date().getTime()); + } + /** + * The `isRunning` attribute. + * + * @type {boolean} + */ + + }, { + key: "isRunning", + get: function get() { + return this.running === true; + } + /** + * The `isStopped` attribute. + * + * @type {boolean} + */ + + }, { + key: "isStopped", + get: function get() { + return this.running === false; + } + }], [{ + key: "defineName", + value: function defineName() { + return 'Timer'; + } + }]); + + return Timer; + }(Component); + + /** + * @classdesc This face is designed to increment and decrement numberic values, + * not `Date` objects. + * @extends Face + * @param {(FaceValue|object)} value - The `Face` value. If not an instance + * of FaceValue, this argument is assumed to be the instance attributes. + * @param {(object|undefined)} [attributes] - The instance attributes. + * @memberof Faces + */ + + var Counter = + /*#__PURE__*/ + function (_Face) { + _inherits(Counter, _Face); + + function Counter() { + _classCallCheck(this, Counter); + + return _possibleConstructorReturn(this, _getPrototypeOf(Counter).apply(this, arguments)); + } + + _createClass(Counter, [{ + key: "increment", + value: function increment(instance) { + var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; + instance.value = this.value.value + value; + } + }, { + key: "decrement", + value: function decrement(instance) { + var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1; + instance.value = this.value.value - value; + } + /** + * Define the name of the class. + * + * @return {string} + */ + + }], [{ + key: "defineName", + value: function defineName() { + return 'Counter'; + } + }]); + + return Counter; + }(Face); + + /** + * @classdesc This face is meant to display a clock that shows minutes, and + * seconds. + * @extends Face + * @param {(FaceValue|object)} value - The `Face` value. If not an instance + * of FaceValue, this argument is assumed to be the instance attributes. + * @param {(object|undefined)} [attributes] - The instance attributes. + * @memberof Faces + */ + + var MinuteCounter = + /*#__PURE__*/ + function (_Face) { + _inherits(MinuteCounter, _Face); + + function MinuteCounter() { + _classCallCheck(this, MinuteCounter); + + return _possibleConstructorReturn(this, _getPrototypeOf(MinuteCounter).apply(this, arguments)); + } + + _createClass(MinuteCounter, [{ + key: "defaultDataType", + value: function defaultDataType() { + return Date; + } + }, { + key: "defaultAttributes", + value: function defaultAttributes() { + return { + showSeconds: true, + showLabels: true + }; + } + }, { + key: "shouldStop", + value: function shouldStop(instance) { + if (isNull(instance.stopAt) || isUndefined(instance.stopAt)) { + return false; + } + + if (this.stopAt instanceof Date) { + return this.countdown ? this.stopAt.getTime() >= this.value.value.getTime() : this.stopAt.getTime() <= this.value.value.getTime(); + } else if (isNumber(this.stopAt)) { + var diff = Math.floor((this.value.value.getTime() - this.originalValue.getTime()) / 1000); + return this.countdown ? this.stopAt >= diff : this.stopAt <= diff; + } + + throw new Error("the stopAt property must be an instance of Date or Number."); + } + }, { + key: "increment", + value: function increment(instance) { + var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + instance.value = new Date(this.value.value.getTime() + value + (new Date().getTime() - instance.timer.lastLoop)); + } + }, { + key: "decrement", + value: function decrement(instance) { + var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + instance.value = new Date(this.value.value.getTime() - value - (new Date().getTime() - instance.timer.lastLoop)); + } + }, { + key: "format", + value: function format(instance, value) { + var started = instance.timer.isRunning ? instance.timer.started : new Date(Date.now() - 50); + return [[this.getMinutes(value, started)], this.showSeconds ? [this.getSeconds(value, started)] : null].filter(noop); + } + }, { + key: "getMinutes", + value: function getMinutes(a, b) { + return round(this.getTotalSeconds(a, b) / 60); + } + }, { + key: "getSeconds", + value: function getSeconds(a, b) { + var totalSeconds = this.getTotalSeconds(a, b); + return Math.abs(Math.ceil(totalSeconds === 60 ? 0 : totalSeconds % 60)); + } + }, { + key: "getTotalSeconds", + value: function getTotalSeconds(a, b) { + return a.getTime() === b.getTime() ? 0 : Math.round((a.getTime() - b.getTime()) / 1000); + } + /** + * Define the name of the class. + * + * @return {string} + */ + + }], [{ + key: "defineName", + value: function defineName() { + return 'MinuteCounter'; + } + }]); + + return MinuteCounter; + }(Face); + + /** + * @classdesc This face is meant to display a clock that shows + * hours, minutes, and seconds. + * @extends Face + * @param {(FaceValue|object)} value - The `Face` value. If not an instance + * of FaceValue, this argument is assumed to be the instance attributes. + * @param {(object|undefined)} [attributes] - The instance attributes. + * @memberof Faces + */ + + var HourCounter = + /*#__PURE__*/ + function (_MinuteCounter) { + _inherits(HourCounter, _MinuteCounter); + + function HourCounter() { + _classCallCheck(this, HourCounter); + + return _possibleConstructorReturn(this, _getPrototypeOf(HourCounter).apply(this, arguments)); + } + + _createClass(HourCounter, [{ + key: "format", + value: function format(instance, value) { + var now = !instance.timer.started ? new Date() : value; + var originalValue = instance.originalValue || value; + var a = !this.countdown ? now : originalValue; + var b = !this.countdown ? originalValue : now; + var data = [[this.getHours(a, b)], [this.getMinutes(a, b)]]; + + if (this.showSeconds) { + data.push([this.getSeconds(a, b)]); + } + + return data; + } + }, { + key: "getMinutes", + value: function getMinutes(a, b) { + return Math.abs(_get(_getPrototypeOf(HourCounter.prototype), "getMinutes", this).call(this, a, b) % 60); + } + }, { + key: "getHours", + value: function getHours(a, b) { + return Math.floor(this.getTotalSeconds(a, b) / 60 / 60); + } + /** + * Define the name of the class. + * + * @return {string} + */ + + }], [{ + key: "defineName", + value: function defineName() { + return 'HourCounter'; + } + }]); + + return HourCounter; + }(MinuteCounter); + + /** + * @classdesc This face is meant to display a clock that shows days, hours, + * minutes, and seconds. + * @extends HourCounter + * @param {(FaceValue|object)} value - The `Face` value. If not an instance + * of FaceValue, this argument is assumed to be the instance attributes. + * @param {(object|undefined)} [attributes] - The instance attributes. + * @memberof Faces + */ + + var DayCounter = + /*#__PURE__*/ + function (_HourCounter) { + _inherits(DayCounter, _HourCounter); + + function DayCounter() { + _classCallCheck(this, DayCounter); + + return _possibleConstructorReturn(this, _getPrototypeOf(DayCounter).apply(this, arguments)); + } + + _createClass(DayCounter, [{ + key: "format", + value: function format(instance, value) { + var now = !instance.started ? new Date() : value; + var originalValue = instance.originalValue || value; + var a = !this.countdown ? now : originalValue; + var b = !this.countdown ? originalValue : now; + var data = [[this.getDays(a, b)], [this.getHours(a, b)], [this.getMinutes(a, b)]]; + + if (this.showSeconds) { + data.push([this.getSeconds(a, b)]); + } + + return data; + } + }, { + key: "getDays", + value: function getDays(a, b) { + return Math.floor(this.getTotalSeconds(a, b) / 60 / 60 / 24); + } + }, { + key: "getHours", + value: function getHours(a, b) { + return Math.abs(_get(_getPrototypeOf(DayCounter.prototype), "getHours", this).call(this, a, b) % 24); + } + /** + * Define the name of the class. + * + * @return {string} + */ + + }], [{ + key: "defineName", + value: function defineName() { + return 'DayCounter'; + } + }]); + + return DayCounter; + }(HourCounter); + + /** + * @classdesc This face shows the current time in twenty-four hour format. + * @extends Face + * @param {(FaceValue|object)} value - The `Face` value. If not an instance + * of FaceValue, this argument is assumed to be the instance attributes. + * @param {(object|undefined)} [attributes] - The instance attributes. + * @memberof Faces + */ + + var TwentyFourHourClock = + /*#__PURE__*/ + function (_Face) { + _inherits(TwentyFourHourClock, _Face); + + function TwentyFourHourClock() { + _classCallCheck(this, TwentyFourHourClock); + + return _possibleConstructorReturn(this, _getPrototypeOf(TwentyFourHourClock).apply(this, arguments)); + } + + _createClass(TwentyFourHourClock, [{ + key: "defaultDataType", + value: function defaultDataType() { + return Date; + } + }, { + key: "defaultValue", + value: function defaultValue() { + return new Date(); + } + }, { + key: "defaultAttributes", + value: function defaultAttributes() { + return { + showSeconds: true, + showLabels: false + }; + } + }, { + key: "format", + value: function format(instance, value) { + if (!value) { + value = new Date(); + } + + var groups = [[value.getHours()], [value.getMinutes()]]; + + if (this.showSeconds) { + groups.push([value.getSeconds()]); + } + + return groups; + } + }, { + key: "increment", + value: function increment(instance) { + var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + instance.value = new Date(this.value.value.getTime() + offset + (new Date().getTime() - instance.timer.lastLoop)); + } + }, { + key: "decrement", + value: function decrement(instance) { + var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; + instance.value = new Date(this.value.value.getTime() - offset - (new Date().getTime() - instance.timer.lastLoop)); + } + /** + * Define the name of the class. + * + * @return {string} + */ + + }], [{ + key: "defineName", + value: function defineName() { + return 'TwentyFourHourClock'; + } + }]); + + return TwentyFourHourClock; + }(Face); + + /** + * @classdesc This face shows the current time in twelve hour format, with AM + * and PM. + * @extends Face + * @param {(FaceValue|object)} value - The `Face` value. If not an instance + * of FaceValue, this argument is assumed to be the instance attributes. + * @param {(object|undefined)} [attributes] - The instance attributes. + * @memberof Faces + */ + + var TwelveHourClock = + /*#__PURE__*/ + function (_TwentyFourHourClock) { + _inherits(TwelveHourClock, _TwentyFourHourClock); + + function TwelveHourClock() { + _classCallCheck(this, TwelveHourClock); + + return _possibleConstructorReturn(this, _getPrototypeOf(TwelveHourClock).apply(this, arguments)); + } + + _createClass(TwelveHourClock, [{ + key: "defaultAttributes", + value: function defaultAttributes() { + return { + showLabels: false, + showSeconds: true, + showMeridium: true + }; + } + }, { + key: "format", + value: function format(instance, value) { + if (!value) { + value = new Date(); + } + + var hours = value.getHours(); + var groups = [hours > 12 ? hours - 12 : hours === 0 ? 12 : hours, value.getMinutes()]; + this.meridium = hours > 12 ? 'pm' : 'am'; + + if (this.showSeconds) { + groups.push(value.getSeconds()); + } + + return groups; + } + /** + * Define the name of the class. + * + * @return {string} + */ + + }], [{ + key: "defineName", + value: function defineName() { + return 'TwelveHourClock'; + } + }]); + + return TwelveHourClock; + }(TwentyFourHourClock); + + /** + * @classdesc This face is meant to display a clock that shows weeks, days, + * hours, minutes, and seconds. + * @extends Face + * @param {(FaceValue|object)} value - The `Face` value. If not an instance + * of FaceValue, this argument is assumed to be the instance attributes. + * @param {(object|undefined)} [attributes] - The instance attributes. + * @memberof Faces + */ + + var WeekCounter = + /*#__PURE__*/ + function (_DayCounter) { + _inherits(WeekCounter, _DayCounter); + + function WeekCounter() { + _classCallCheck(this, WeekCounter); + + return _possibleConstructorReturn(this, _getPrototypeOf(WeekCounter).apply(this, arguments)); + } + + _createClass(WeekCounter, [{ + key: "format", + value: function format(instance, value) { + var now = !instance.timer.started ? new Date() : value; + var originalValue = instance.originalValue || value; + var a = !this.countdown ? now : originalValue; + var b = !this.countdown ? originalValue : now; + var data = [[this.getWeeks(a, b)], [this.getDays(a, b)], [this.getHours(a, b)], [this.getMinutes(a, b)]]; + + if (this.showSeconds) { + data.push([this.getSeconds(a, b)]); + } + + return data; + } + }, { + key: "getWeeks", + value: function getWeeks(a, b) { + return Math.floor(this.getTotalSeconds(a, b) / 60 / 60 / 24 / 7); + } + }, { + key: "getDays", + value: function getDays(a, b) { + return Math.abs(_get(_getPrototypeOf(WeekCounter.prototype), "getDays", this).call(this, a, b) % 7); + } + /** + * Define the name of the class. + * + * @return {string} + */ + + }], [{ + key: "defineName", + value: function defineName() { + return 'WeekCounter'; + } + }]); + + return WeekCounter; + }(DayCounter); + + /** + * @classdesc This face is meant to display a clock that shows years, weeks, + * days, hours, minutes, and seconds. + * @extends Face + * @param {(FaceValue|object)} value - The `Face` value. If not an instance + * of FaceValue, this argument is assumed to be the instance attributes. + * @param {(object|undefined)} [attributes] - The instance attributes. + * @memberof Faces + */ + + var YearCounter = + /*#__PURE__*/ + function (_WeekCounter) { + _inherits(YearCounter, _WeekCounter); + + function YearCounter() { + _classCallCheck(this, YearCounter); + + return _possibleConstructorReturn(this, _getPrototypeOf(YearCounter).apply(this, arguments)); + } + + _createClass(YearCounter, [{ + key: "format", + value: function format(instance, value) { + var now = !instance.timer.started ? new Date() : value; + var originalValue = instance.originalValue || value; + var a = !this.countdown ? now : originalValue; + var b = !this.countdown ? originalValue : now; + var data = [[this.getYears(a, b)], [this.getWeeks(a, b)], [this.getDays(a, b)], [this.getHours(a, b)], [this.getMinutes(a, b)]]; + + if (this.showSeconds) { + data.push([this.getSeconds(a, b)]); + } + + return data; + } + }, { + key: "getYears", + value: function getYears(a, b) { + return Math.floor(Math.max(0, this.getTotalSeconds(a, b) / 60 / 60 / 24 / 7 / 52)); + } + }, { + key: "getWeeks", + value: function getWeeks(a, b) { + return Math.abs(_get(_getPrototypeOf(YearCounter.prototype), "getWeeks", this).call(this, a, b) % 52); + } + /** + * Define the name of the class. + * + * @return {string} + */ + + }], [{ + key: "defineName", + value: function defineName() { + return 'YearCounter'; + } + }]); + + return YearCounter; + }(WeekCounter); + + /** + * Faces are classes that hook into the core of Flipclock to provide unique + * functionality. The core doesn't do a lot, except facilitate the interaction + * between all the components. The Face is what makes the clock "tick". + * + * @namespace Faces + */ + + var Faces = /*#__PURE__*/Object.freeze({ + Counter: Counter, + DayCounter: DayCounter, + MinuteCounter: MinuteCounter, + HourCounter: HourCounter, + TwelveHourClock: TwelveHourClock, + TwentyFourHourClock: TwentyFourHourClock, + WeekCounter: WeekCounter, + YearCounter: YearCounter + }); + + function Divider$1 (el, instance) { + appendChildren(el, [createElement('div', { + "class": 'flip-clock-dot top' + }), createElement('div', { + "class": 'flip-clock-dot bottom' + })]); + } + + function child(el, index) { + return el ? el.childNodes ? el.childNodes[index] : el[index] : null; + } + + function _char(el) { + return el ? el.querySelector('.flip-clock-list-item:first-child .top').innerHTML : null; + } + + function FlipClock (el, instance) { + var parts = instance.value.digits.map(function (group, x) { + var groupEl = child(instance.el ? instance.el.querySelectorAll('.flip-clock-group') : null, x); + var lists = group.map(function (value, y) { + var listEl = child(groupEl ? groupEl.querySelectorAll('.flip-clock-list') : null, y); + + var listValue = _char(listEl); + + return instance.createList(value, { + domValue: listValue, + countdown: instance.countdown, + animationRate: instance.face.animationRate || instance.face.delay + }); + }); + return instance.createGroup(lists); + }); + var nodes = parts.map(function (group) { + return group.render(); + }); + appendChildren(el, nodes); + } + + function Group$1 (el, instance) { + var items = instance.items.map(function (item) { + return item.render(); + }); + appendChildren(el, items); + } + + function Label$1 (el, instance) { + el.innerHTML = instance.t(instance.label); + } + + function List$1 (el, instance) { + var beforeValue = instance.domValue || (!instance.countdown ? prev(instance.value) : next(instance.value)); + + if (instance.domValue && instance.domValue !== instance.value) { + el.classList.add('flip'); + } + + el.style.animationDelay = "".concat(instance.animationRate / 2, "ms"); + el.style.animationDuration = "".concat(instance.animationRate / 2, "ms"); + instance.items = [instance.createListItem(instance.value, { + active: true + }), instance.createListItem(beforeValue, { + active: false + })]; + appendChildren(el, instance.items.map(function (item) { + return item.render(); + })); + } + + function ListItem$1 (el, instance) { + var className = instance.active === true ? 'active' : instance.active === false ? 'before' : null; + el.classList.add(className); + appendChildren(el, [createElement('div', [createElement('div', instance.value, { + "class": 'top' + }), createElement('div', instance.value, { + "class": 'bottom' + })], { + "class": 'flip-clock-list-item-inner' + })]); + } + + function DayCounter$1 (el, instance) { + instance.createDivider().mount(el, el.childNodes[1]); + instance.createDivider().mount(el, el.childNodes[3]); + + if (instance.face.showSeconds) { + instance.createDivider().mount(el, el.childNodes[5]); + } + + if (instance.face.showLabels) { + instance.createLabel('days').mount(el.childNodes[0]); + instance.createLabel('hours').mount(el.childNodes[2]); + instance.createLabel('minutes').mount(el.childNodes[4]); + + if (instance.face.showSeconds) { + instance.createLabel('seconds').mount(el.childNodes[6]); + } + } + } + + function HourCounter$1 (el, instance) { + instance.createDivider().mount(el, el.childNodes[1]); + + if (instance.face.showSeconds) { + instance.createDivider().mount(el, el.childNodes[3]); + } + + if (instance.face.showLabels) { + instance.createLabel('hours').mount(el.childNodes[0]); + instance.createLabel('minutes').mount(el.childNodes[2]); + + if (instance.face.showSeconds) { + instance.createLabel('seconds').mount(el.childNodes[4]); + } + } + } + + function MinuteCounter$1 (el, instance) { + if (instance.face.showSeconds) { + instance.createDivider().mount(el, el.childNodes[1]); + } + + if (instance.face.showLabels) { + instance.createLabel('minutes').mount(el.childNodes[0]); + + if (instance.face.showSeconds) { + instance.createLabel('seconds').mount(el.childNodes[2]); + } + } + } + + function TwentyFourHourClock$1 (el, instance) { + instance.createDivider().mount(el, el.childNodes[1]); + + if (instance.face.showSeconds) { + instance.createDivider().mount(el, el.childNodes[3]); + } + + if (instance.face.showLabels) { + instance.createLabel('hours').mount(el.childNodes[0]); + instance.createLabel('minutes').mount(el.childNodes[2]); + + if (instance.face.showSeconds) { + instance.createLabel('seconds').mount(el.childNodes[4]); + } + } + } + + function TwelveHourClock$1 (el, instance) { + TwentyFourHourClock$1(el, instance); + + if (instance.face.showMeridium && instance.face.meridium) { + var label = instance.createLabel(instance.face.meridium); + var parent = el.childNodes[el.childNodes.length - 1]; + label.mount(parent).classList.add('flip-clock-meridium'); + } + } + + function WeekCounter$1 (el, instance) { + instance.createDivider().mount(el, el.childNodes[1]); + instance.createDivider().mount(el, el.childNodes[3]); + instance.createDivider().mount(el, el.childNodes[5]); + + if (instance.face.showSeconds) { + instance.createDivider().mount(el, el.childNodes[7]); + } + + if (instance.face.showLabels) { + instance.createLabel('weeks').mount(el.childNodes[0]); + instance.createLabel('days').mount(el.childNodes[2]); + instance.createLabel('hours').mount(el.childNodes[4]); + instance.createLabel('minutes').mount(el.childNodes[6]); + + if (instance.face.showSeconds) { + instance.createLabel('seconds').mount(el.childNodes[8]); + } + } + } + + function YearCounter$1 (el, instance) { + instance.createDivider().mount(el, el.childNodes[1]); + instance.createDivider().mount(el, el.childNodes[3]); + instance.createDivider().mount(el, el.childNodes[5]); + instance.createDivider().mount(el, el.childNodes[7]); + + if (instance.face.showSeconds) { + instance.createDivider().mount(el, el.childNodes[9]); + } + + if (instance.face.showLabels) { + instance.createLabel('years').mount(el.childNodes[0]); + instance.createLabel('weeks').mount(el.childNodes[2]); + instance.createLabel('days').mount(el.childNodes[4]); + instance.createLabel('hours').mount(el.childNodes[6]); + instance.createLabel('minutes').mount(el.childNodes[8]); + + if (instance.face.showSeconds) { + instance.createLabel('seconds').mount(el.childNodes[10]); + } + } + } + + + + var faces = /*#__PURE__*/Object.freeze({ + DayCounter: DayCounter$1, + HourCounter: HourCounter$1, + MinuteCounter: MinuteCounter$1, + TwelveHourClock: TwelveHourClock$1, + TwentyFourHourClock: TwentyFourHourClock$1, + WeekCounter: WeekCounter$1, + YearCounter: YearCounter$1 + }); + + var Original = { + Divider: Divider$1, + FlipClock: FlipClock, + Group: Group$1, + Label: Label$1, + List: List$1, + ListItem: ListItem$1, + faces: faces + }; + + /** + * @alias DefaultValues + * @type {object} + * @memberof module:Config/DefaultValues + */ + + var DefaultValues = { + face: Counter, + theme: Original, + language: English + }; + + var FlipClock$1 = + /*#__PURE__*/ + function (_DomComponent) { + _inherits(FlipClock, _DomComponent); + + /** + * Create a new `FlipClock` instance. + * + * @class FlipClock + * @extends DomComponent + * @param {HTMLElement} el - The HTML element used to bind clock DOM node. + * @param {*} value - The value that is passed to the clock face. + * @param {object|undefined} attributes - {@link FlipClock.Options} passed an object with key/value. + */ + + /** + * @namespace FlipClock.Options + * @classdesc An object of key/value pairs that will be used to set the attributes. + * + * ##### Example: + * + * { + * face: 'DayCounter', + * language: 'es', + * timer: Timer.make(500) + * } + * + * @property {string|Face} [face={@link Faces.DayCounter}] - The clock's {@link Face} instance. + * @property {number} [interval=1000] - The clock's interval rate (in milliseconds). + * @property {object} [theme={@link Themes.Original}] - The clock's theme. + * @property {string|object} [language={@link Languages.English}] - The clock's language. + * @property {Timer} [timer={@link Timer}] - The clock's timer. + */ + function FlipClock(el, value, attributes) { + var _this; + + _classCallCheck(this, FlipClock); + + if (!validate(el, HTMLElement)) { + error(ConsoleMessages.element); + } + + if (isObject(value) && !attributes) { + attributes = value; + value = undefined; + } + + var face = attributes.face || DefaultValues.face; + delete attributes.face; + _this = _possibleConstructorReturn(this, _getPrototypeOf(FlipClock).call(this, Object.assign({ + originalValue: value, + theme: DefaultValues.theme, + language: DefaultValues.language, + timer: Timer.make(attributes.interval || 1000) + }, attributes))); + + if (!_this.face) { + _this.face = face; + } + + _this.mount(el); + + return _this; + } + /** + * The clock `Face`. + * + * @type {Face} + */ + + + _createClass(FlipClock, [{ + key: "mount", + + /** + * Mount the clock to the parent DOM element. + * + * @param {HTMLElement} el - The parent `HTMLElement`. + * @return {FlipClock} - The `FlipClock` instance. + */ + value: function mount(el) { + _get(_getPrototypeOf(FlipClock.prototype), "mount", this).call(this, el); + + this.face.mounted(this); + return this; + } + /** + * Render the clock's DOM nodes. + * + * @return {HTMLElement} - The parent `HTMLElement`. + */ + + }, { + key: "render", + value: function render() { + // Call the parent render function + _get(_getPrototypeOf(FlipClock.prototype), "render", this).call(this); // Check to see if the face has a render function defined in the theme. + // This allows a face to completely re-render or add to the theme. + // This allows face specific interfaces for a theme. + + + if (this.theme.faces[this.face.name]) { + this.theme.faces[this.face.name](this.el, this); + } // Pass the clock instance to the rendered() function on the face. + // This allows global modifications to the rendered templates not + // theme specific. + + + this.face.rendered(this); // Return the rendered `HTMLElement`. + + return this.el; + } + /** + * Start the clock. + * + * @param {Function} fn - The interval callback. + * @return {FlipClock} - The `FlipClock` instance. + */ + + }, { + key: "start", + value: function start(fn) { + var _this2 = this; + + if (!this.timer.started) { + this.value = this.originalValue; + } + + isUndefined(this.face.stopAt) && (this.face.stopAt = this.stopAt); + isUndefined(this.face.originalValue) && (this.face.originalValue = this.originalValue); + this.timer.start(function () { + _this2.face.interval(_this2, fn); + }); + this.face.started(this); + return this.emit('start'); + } + /** + * Stop the clock. + * + * @param {Function} fn - The stop callback. + * @return {FlipClock} - The `FlipClock` instance. + */ + + }, { + key: "stop", + value: function stop(fn) { + this.timer.stop(fn); + this.face.stopped(this); + return this.emit('stop'); + } + /** + * Reset the clock to the original value. + * + * @param {Function} fn - The interval callback. + * @return {FlipClock} - The `FlipClock` instance. + */ + + }, { + key: "reset", + value: function reset(fn) { + var _this3 = this; + + this.value = this.originalValue; + this.timer.reset(function () { + return _this3.interval(_this3, fn); + }); + this.face.reset(this); + return this.emit('reset'); + } + /** + * Helper method to increment the clock's value. + * + * @param {*|undefined} value - Increment the clock by the specified value. + * If no value is passed, then the default increment is determined by + * the Face, which is usually `1`. + * @return {FlipClock} - The `FlipClock` instance. + */ + + }, { + key: "increment", + value: function increment(value) { + this.face.increment(this, value); + return this; + } + /** + * Helper method to decrement the clock's value. + * + * @param {*|undefined} value - Decrement the clock by the specified value. + * If no value is passed, then the default decrement is determined by + * the `Face`, which is usually `1`. + * @return {FlipClock} - The `FlipClock` instance. + */ + + }, { + key: "decrement", + value: function decrement(value) { + this.face.decrement(this, value); + return this; + } + /** + * Helper method to instantiate a new `Divider`. + * + * @param {object|undefined} [attributes] - The attributes passed to the + * `Divider` instance. + * @return {Divider} - The instantiated Divider. + */ + + }, { + key: "createDivider", + value: function createDivider(attributes) { + return Divider.make(Object.assign({ + theme: this.theme, + language: this.language + }, attributes)); + } + /** + * Helper method to instantiate a new `List`. + * + * @param {*} value - The `List` value. + * @param {object|undefined} [attributes] - The attributes passed to the + * `List` instance. + * @return {List} - The instantiated `List`. + */ + + }, { + key: "createList", + value: function createList(value, attributes) { + return List.make(value, Object.assign({ + theme: this.theme, + language: this.language + }, attributes)); + } + /** + * Helper method to instantiate a new `Label`. + * + * @param {*} value - The `Label` value. + * @param {object|undefined} [attributes] - The attributes passed to the + * `Label` instance. + * @return {Label} - The instantiated `Label`. + */ + + }, { + key: "createLabel", + value: function createLabel(value, attributes) { + return Label.make(value, Object.assign({ + theme: this.theme, + language: this.language + }, attributes)); + } + /** + * Helper method to instantiate a new `Group`. + * + * @param {array} items - An array of `List` items to group. + * @param {Group|undefined} [attributes] - The attributes passed to the + * `Group` instance. + * @return {Group} - The instantiated `Group`. + */ + + }, { + key: "createGroup", + value: function createGroup(items, attributes) { + return Group.make(items, Object.assign({ + theme: this.theme, + language: this.language + }, attributes)); + } + /** + * The `defaults` attribute. + * + * @type {object} + */ + + }, { + key: "face", + get: function get$$1() { + return this.$face; + }, + set: function set(value) { + if (!validate(value, [Face, 'string', 'function'])) { + error(ConsoleMessages.face); + } + + this.$face = (Faces[value] || value).make(Object.assign(this.getPublicAttributes(), { + originalValue: this.face ? this.face.originalValue : undefined + })); + this.$face.initialized(this); + + if (this.value) { + this.$face.value = this.face.createFaceValue(this, this.value.value); + } else if (!this.value) { + this.value = this.originalValue; + } + + this.el && this.render(); + } + /** + * The `stopAt` attribute. + * + * @type {*} + */ + + }, { + key: "stopAt", + get: function get$$1() { + return isFunction(this.$stopAt) ? this.$stopAt(this) : this.$stopAt; + }, + set: function set(value) { + this.$stopAt = value; + } + /** + * The `timer` instance. + * + * @type {Timer} + */ + + }, { + key: "timer", + get: function get$$1() { + return this.$timer; + }, + set: function set(timer) { + if (!validate(timer, Timer)) { + error(ConsoleMessages.timer); + } + + this.$timer = timer; + } + /** + * Helper method to The clock's `FaceValue` instance. + * + * @type {FaceValue|null} + */ + + }, { + key: "value", + get: function get$$1() { + return this.face ? this.face.value : null; + }, + set: function set(value) { + if (!this.face) { + throw new Error('A face must be set before setting a value.'); + } + + if (value instanceof FaceValue) { + this.face.value = value; + } else if (this.value) { + this.face.value = this.face.value.clone(value); + } else { + this.face.value = this.face.createFaceValue(this, value); + } + + this.el && this.render(); + } + /** + * The `originalValue` attribute. + * + * @type {*} + */ + + }, { + key: "originalValue", + get: function get$$1() { + if (isFunction(this.$originalValue) && !this.$originalValue.name) { + return this.$originalValue(); + } + + if (!isUndefined(this.$originalValue) && !isNull(this.$originalValue)) { + return this.$originalValue; + } + + return this.face ? this.face.defaultValue() : undefined; + }, + set: function set(value) { + this.$originalValue = value; + } + }], [{ + key: "defineName", + + /** + * Define the name of the class. + * + * @return {string} + */ + value: function defineName() { + return 'FlipClock'; + } + /** + * Helper method to set the default `Face` value. + * + * @param {Face} value - The default `Face` class.This should be a + * constructor. + * @return {void} + */ + + }, { + key: "setDefaultFace", + value: function setDefaultFace(value) { + if (!validate(value, Face)) { + error(ConsoleMessages.face); + } + + DefaultValues.face = value; + } + /** + * Helper method to set the default theme. + * + * @param {object} value - The default theme. + * @return {void} + */ + + }, { + key: "setDefaultTheme", + value: function setDefaultTheme(value) { + if (!validate(value, 'object')) { + error(ConsoleMessages.theme); + } + + DefaultValues.theme = value; + } + /** + * Helper method to set the default language. + * + * @param {object} value - The default language. + * @return {void} + */ + + }, { + key: "setDefaultLanguage", + value: function setDefaultLanguage(value) { + if (!validate(value, 'object')) { + error(ConsoleMessages.language); + } + + DefaultValues.language = value; + } + }, { + key: "defaults", + get: function get$$1() { + return DefaultValues; + } + }]); + + return FlipClock; + }(DomComponent); + + return FlipClock$1; + +}))); +//# sourceMappingURL=flipclock.js.map diff --git a/dist/flipclock.js.map b/dist/flipclock.js.map new file mode 100644 index 00000000..dcc766c9 --- /dev/null +++ b/dist/flipclock.js.map @@ -0,0 +1 @@ +{"version":3,"file":"flipclock.js","sources":["../src/js/Helpers/Functions.js","../src/js/Components/Component.js","../src/js/Helpers/Digitize.js","../src/js/Helpers/Value.js","../src/js/Components/FaceValue.js","../src/js/Helpers/Validate.js","../src/js/Config/ConsoleMessages.js","../src/js/Components/Face.js","../src/js/Languages/ar-ar.js","../src/js/Languages/ca-es.js","../src/js/Languages/cs-cz.js","../src/js/Languages/da-dk.js","../src/js/Languages/de-de.js","../src/js/Languages/en-us.js","../src/js/Languages/es-es.js","../src/js/Languages/fa-ir.js","../src/js/Languages/fi-fi.js","../src/js/Languages/fr-ca.js","../src/js/Languages/he-il.js","../src/js/Languages/hu-hu.js","../src/js/Languages/it-it.js","../src/js/Languages/ja-jp.js","../src/js/Languages/ko-kr.js","../src/js/Languages/lv-lv.js","../src/js/Languages/nl-be.js","../src/js/Languages/no-nb.js","../src/js/Languages/pl-pl.js","../src/js/Languages/pt-br.js","../src/js/Languages/ro-ro.js","../src/js/Languages/ru-ru.js","../src/js/Languages/sk-sk.js","../src/js/Languages/sv-se.js","../src/js/Languages/th-th.js","../src/js/Languages/tr-tr.js","../src/js/Languages/ua-ua.js","../src/js/Languages/vn-vn.js","../src/js/Languages/zh-cn.js","../src/js/Languages/zh-tw.js","../src/js/Languages/index.js","../src/js/Helpers/Language.js","../src/js/Helpers/Translate.js","../src/js/Helpers/Template.js","../src/js/Components/DomComponent.js","../src/js/Components/Divider.js","../src/js/Components/ListItem.js","../src/js/Components/List.js","../src/js/Components/Group.js","../src/js/Components/Label.js","../src/js/Components/Timer.js","../src/js/Faces/Counter.js","../src/js/Faces/MinuteCounter.js","../src/js/Faces/HourCounter.js","../src/js/Faces/DayCounter.js","../src/js/Faces/TwentyFourHourClock.js","../src/js/Faces/TwelveHourClock.js","../src/js/Faces/WeekCounter.js","../src/js/Faces/YearCounter.js","../src/js/Faces/index.js","../src/js/Themes/Original/Divider.js","../src/js/Themes/Original/FlipClock.js","../src/js/Themes/Original/Group.js","../src/js/Themes/Original/Label.js","../src/js/Themes/Original/List.js","../src/js/Themes/Original/ListItem.js","../src/js/Themes/Original/Faces/DayCounter.js","../src/js/Themes/Original/Faces/HourCounter.js","../src/js/Themes/Original/Faces/MinuteCounter.js","../src/js/Themes/Original/Faces/TwentyFourHourClock.js","../src/js/Themes/Original/Faces/TwelveHourClock.js","../src/js/Themes/Original/Faces/WeekCounter.js","../src/js/Themes/Original/Faces/YearCounter.js","../src/js/Themes/Original/index.js","../src/js/Config/DefaultValues.js","../src/js/Components/FlipClock.js"],"sourcesContent":["/**\n * These are a collection of helper functions, some borrowed from Lodash,\n * Underscore, etc, to provide common functionality without the need for using\n * a dependency. All of this is an attempt to reduce the file size of the\n * library.\n *\n * @namespace Helpers.Functions\n */\n\n/**\n * Throw a string as an Error exception.\n *\n * @function error\n * @param {string} string - The error message.\n * @return {void}\n * @memberof Helpers.Functions\n */\nexport function error(string) {\n throw Error(string);\n}\n\n/**\n * Check if `fn` is a function, and call it with `this` context and pass the\n * arguments.\n *\n * @function callback\n * @param {string} string - The callback fn.\n * @param {...*} args - The arguments to pass.\n * @return {void}\n * @memberof Helpers.Functions\n */\nexport function callback(fn, ...args) {\n if(isFunction(fn)) {\n return fn.call(this, ...args);\n }\n}\n\n/**\n * Round the value to the correct value. Takes into account negative numbers.\n *\n * @function round\n * @param {value} string - The value to round.\n * @return {string} - The rounded value.\n * @memberof Helpers.Functions\n */\nexport function round(value) {\n return isNegativeZero(\n value = isNegative(value) ? Math.ceil(value) : Math.floor(value)\n ) ? ('-' + value).toString() : value;\n}\n\n/**\n * Returns `true` if `undefined or `null`.\n *\n * @function noop\n * @param {value} string - The value to check.\n * @return {boolean} - `true` if `undefined or `null`.\n * @memberof Helpers.Functions\n */\nexport function noop(value) {\n return !isUndefined(value) && !isNull(value);\n}\n\n/**\n * Returns a function that executes the `before` attribute and passes that value\n * to `after` and the subsequent value is returned.\n *\n * @function chain\n * @param {function} before - The first function to execute.\n * @param {function} after - The subsequent function to execute.\n * @return {function} - A function that executes the chain.\n * @memberof Helpers.Functions\n */\nexport function chain(before, after) {\n return () => after(before());\n}\n\n/**\n * Returns a function that returns maps the values before concatenating them.\n *\n * @function concatMap\n * @param {function} fn - The map callback function.\n * @return {function} - A function that executes the map and concatenation.\n * @memberof Helpers.Functions\n */\nexport function concatMap(fn) {\n return x => {\n return x.map(fn).reduce((x, y) => x.concat(y), []);\n }\n}\n\n/**\n * Flatten an array.\n *\n * @function flatten\n * @param {array} value - The array to flatten.\n * @return {array} - The flattened array.\n * @memberof Helpers.Functions\n */\nexport function flatten(value) {\n return concatMap(value => value)(value)\n}\n\n/**\n * Deep flatten an array.\n *\n * @function deepFlatten\n * @param {array} value - The array to flatten.\n * @return {array} - The flattened array.\n * @memberof Helpers.Functions\n */\nexport function deepFlatten(x) {\n return concatMap(x => Array.isArray(x) ? deepFlatten (x) : x)(x);\n}\n\n/**\n * Capitalize the first letter in a string.\n *\n * @function ucfirst\n * @param {string} string - The string to capitalize.\n * @return {string} - The capitalized string.\n * @memberof Helpers.Functions\n */\nexport function ucfirst(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\n/**\n * Returns the length of a deep flatten array.\n *\n * @function length\n * @param {array} value - The array to count.\n * @return {number} - The length of the deep flattened array.\n * @memberof Helpers.Functions\n */\nexport function length(value) {\n return deepFlatten(value).length;\n}\n\n/**\n * Determines if a value is a negative zero.\n *\n * @function isNegativeZero\n * @param {number} value - The value to check.\n * @return {boolean} - Returns `true` if the value is a negative zero (`-0`).\n * @memberof Helpers.Functions\n */\nexport function isNegativeZero(value) {\n return 1 / Math.round(value) === -Infinity;\n}\n\n/**\n * Determines if a value is a negative.\n *\n * @function isNegative\n * @param {number} value - The value to check.\n * @return {boolean} - Returns `true` if the value is a negative.\n * @memberof Helpers.Functions\n */\nexport function isNegative(value) {\n return isNegativeZero(value) || value < 0;\n}\n\n/**\n * Determines if a value is `null`.\n *\n * @function isNull\n * @param {*} value - The value to check.\n * @return {boolean} - Returns `true` if the value is a `null`.\n * @memberof Helpers.Functions\n */\nexport function isNull(value) {\n return value === null;// || typeof value === 'null';\n}\n\n/**\n * Determines if a value is `undefined`.\n *\n * @function isNull\n * @param {*} value - The value to check.\n * @return {boolean} - Returns `true` if the value is a `undefined`.\n * @memberof Helpers.Functions\n */\nexport function isUndefined(value) {\n return typeof value === 'undefined';\n}\n\n/**\n * Determines if a value is a constructor.\n *\n * @function isConstructor\n * @param {*} value - The value to check.\n * @return {boolean} - Returns `true` if the value is a constructor.\n * @memberof Helpers.Functions\n */\nexport function isConstructor(value) {\n return (value instanceof Function) && !!value.name;\n}\n\n/**\n * Determines if a value is a string.\n *\n * @function isString\n * @param {*} value - The value to check.\n * @return {boolean} - Returns `true` if the value is a string.\n * @memberof Helpers.Functions\n */\nexport function isString(value) {\n return typeof value === 'string';\n}\n\n/**\n * Determines if a value is a array.\n *\n * @function isString\n * @param {*} value - The value to check.\n * @return {boolean} - Returns `true` if the value is a string.\n * @memberof Helpers.Functions\n */\nexport function isArray(value) {\n return value instanceof Array;\n}\n\n/**\n * Determines if a value is an object.\n *\n * @function isObject\n * @param {*} value - The value to check.\n * @return {boolean} - Returns `true` if the value is an object.\n * @memberof Helpers.Functions\n */\nexport function isObject(value) {\n const type = typeof value;\n return value != null && !isArray(value) && (\n type == 'object' || type == 'function'\n );\n}\n\n/**\n * Determines if a value is a function.\n *\n * @function isObject\n * @param {*} value - The value to check.\n * @return {boolean} - Returns `true` if the value is a function.\n * @memberof Helpers.Functions\n */\nexport function isFunction(value) {\n return value instanceof Function;\n}\n\n/**\n * Determines if a value is a number.\n *\n * @function isObject\n * @param {*} value - The value to check.\n * @return {boolean} - Returns `true` if the value is a number.\n * @memberof Helpers.Functions\n */\nexport function isNumber(value) {\n return !isNaN(value);\n}\n\n/**\n * Converts a string into kebab case.\n *\n * @function kebabCase\n * @param {string} string - The string to convert.\n * @return {string} - The converted string.\n * @memberof Helpers.Functions\n */\nexport function kebabCase(string) {\n return string.replace(/([a-z])([A-Z])/g, '$1-$2').replace(/\\s+/g, '-').toLowerCase();\n}\n","import { chain, error, callback, isObject, kebabCase } from '../Helpers/Functions';\n\nexport default class Component {\n\n /**\n * Abstract base class.\n *\n * @class Component\n * @param {(object|undefined)} [attributes] - The instance attributes.\n */\n constructor(attributes) {\n this.setAttribute(Object.assign({\n events: {}\n }, attributes));\n }\n\n /**\n * Get the `name` attribute.\n *\n * @type {string}\n */\n get name() {\n if(!(this.constructor.defineName instanceof Function)) {\n error('Every class must define its name.');\n }\n\n return this.constructor.defineName();\n }\n\n /**\n * The `events` attribute.\n *\n * @type {object}\n */\n get events() {\n return this.$events || {};\n }\n\n set events(value) {\n this.$events = value;\n }\n\n /**\n * Emit an event.\n *\n * @param {string} key - The event id/key.\n * @return {Component} - Returns `this` instance.\n */\n emit(key, ...args) {\n if(this.events[key]) {\n this.events[key].forEach(event => {\n event.apply(this, args);\n });\n }\n\n return this;\n }\n\n /**\n * Start listening to an event.\n *\n * @param {string} key - The event id/key.\n * @param {Function} fn - The listener callback function.\n * @param {boolean} [once=false] - Should the event handler be fired a\n * single time.\n * @return {Component} - Returns `this` instance.\n */\n on(key, fn, once = false) {\n if(!this.events[key]) {\n this.events[key] = [];\n }\n\n this.events[key].push(fn);\n\n return this;\n }\n\n /**\n * Stop listening to an event.\n *\n * @param {string} key - The event id/key.\n * @param {(Function|undefined)} fn - The listener callback function. If no\n * function is defined, all events with the specified id/key will be\n * removed. Otherwise, only the event listeners matching the id/key AND\n * callback will be removed.\n * @return {Component} - Returns `this` instance.\n */\n off(key, fn) {\n if(this.events[key] && fn) {\n this.events[key] = this.events[key].filter(event => {\n return event !== fn;\n });\n }\n else {\n this.events[key] = [];\n }\n\n return this;\n }\n\n /**\n * Listen to an event only one time.\n *\n * @param {string} key - The event id/key.\n * @param {Function} fn - The listener callback function.\n * @return {Component} - Returns `this` instance.\n */\n once(key, fn) {\n fn = chain(fn, () => this.off(key, fn));\n\n return this.on(key, fn, true);\n }\n\n /**\n * Get an attribute. Returns null if no attribute is defined.\n *\n * @param {string} key - The attribute name.\n * @return {*} - The attribute value.\n */\n getAttribute(key) {\n return this.hasOwnProperty(key) ? this[key] : null;\n }\n\n /**\n * Get all the atttributes for this instance.\n *\n * @return {object} - The attribute dictionary.\n */\n getAttributes() {\n const attributes = {};\n\n Object.getOwnPropertyNames(this).forEach(key => {\n attributes[key] = this.getAttribute(key);\n });\n\n return attributes;\n }\n\n /**\n * Get only public the atttributes for this instance. Omits any attribute\n * that starts with `$`, which is used internally.\n *\n * @return {object} - The attribute dictionary.\n */\n getPublicAttributes() {\n return Object.keys(this.getAttributes())\n .filter(key => {\n return !key.match(/^\\$/);\n })\n .reduce((obj, key) => {\n obj[key] = this.getAttribute(key);\n return obj;\n }, {});\n }\n\n /**\n * Set an attribute key and value.\n *\n * @param {string} key - The attribute name.\n * @param {*} value - The attribute value.\n * @return {void}\n */\n setAttribute(key, value) {\n if(isObject(key)) {\n this.setAttributes(key);\n }\n else {\n this[key] = value;\n }\n }\n\n /**\n * Set an attributes by object of key/value pairs.\n *\n * @param {object} values - The object dictionary.\n * @return {void}\n */\n setAttributes(values) {\n for(const i in values) {\n this.setAttribute(i, values[i]);\n }\n }\n\n /**\n * Helper method to execute the `callback()` function.\n *\n * @param {Function} fn - The callback function.\n * @return {*} - Returns the executed callback function.\n */\n callback(fn) {\n return callback.call(this, fn);\n }\n\n /**\n * Factor method to static instantiate new instances. Useful for writing\n * clean expressive syntax with chained methods.\n *\n * @param {...*} args - The callback arguments.\n * @return {*} - The new component instance.\n */\n static make(...args) {\n return new this(...args);\n }\n\n}\n","/**\n * @namespace Helpers.Digitize\n */\nimport { flatten } from './Functions';\nimport { deepFlatten } from './Functions';\n\n/**\n * Digitize a number, string, or an array into a digitized array. This function\n * use by the `Face`, which convert the digitized array into an array of `List`\n * instances.\n *\n * @function digitize\n * @param {*} value - The value to digitize.\n * @param {(Object|undefined)} [options] - The digitizer options.\n * @return {array} - The digitized array.\n * @memberof Helpers.Digitize\n */\nexport default function digitize(value, options) {\n options = Object.assign({\n minimumDigits: 0,\n prependLeadingZero: true\n }, options);\n\n function prepend(number) {\n const shouldPrependZero = options.prependLeadingZero &&\n number.toString().split('').length === 1;\n\n return (shouldPrependZero ? '0' : '').concat(number);\n }\n\n function digits(arr, min) {\n const length = deepFlatten(arr).length;\n\n if(length < min) {\n for(let i = 0; i < min - length; i++) {\n arr[0].unshift('0');\n }\n }\n\n return arr;\n }\n\n return digits(flatten([value]).map(number => {\n return flatten(deepFlatten([number]).map(number => {\n return prepend(number).split('');\n }));\n }), options.minimumDigits || 0);\n}\n","/**\n * @namespace Helpers.Value\n */\n\n/**\n * An array of objects with min/max ranges.\n *\n * @private\n * @type {array}\n */\nconst RANGES = [{\n // 0-9\n min: 48,\n max: 57\n},{\n // a-z\n min: 65,\n max: 90\n},{\n // A-Z\n min: 97,\n max: 122\n}];\n\n/**\n * Format a string into a new data type. Currently only supports string to\n * number conversion.\n *\n * @private\n * @function format\n * @param {string} string - The string to format.\n * @param {string} type - The data type (represented as a string) used to\n * convert the string.\n * @return {boolean} - Returns the formatted string.\n */\nfunction format(string, type) {\n switch(type) {\n case 'number':\n return parseFloat(string);\n }\n\n return string;\n}\n\n/**\n * Find the range object from the `RANGES` constant from the character given.\n * This is mainly an interval method, but can be used by faces to help\n * determine what the next value of a string should be.\n *\n * @private\n * @function format\n * @param {string} char - The char used to determine the range.\n * @param {string} type - The data type (represented as a string) used to\n * convert the string.\n * @return {boolean} - Returns the formatted string.\n */\nfunction findRange(char) {\n for(const i in RANGES) {\n const code = char.toString().charCodeAt(0);\n\n if(RANGES[i].min <= code && RANGES[i].max >= code) {\n return RANGES[i];\n }\n }\n\n return null;\n}\n\n/**\n * Create a string from a character code, which is returned by the callback.\n *\n * @private\n * @callback stringFromCharCodeBy\n * @param {string} char - The char used to determine the range.\n * @param {function} fn - The callback function receives `range` and `code`\n * arguments. This function should return a character code.\n * @return {string} - Creates a string from the character code returned by the\n * callback function.\n */\nfunction stringFromCharCodeBy(char, fn) {\n return String.fromCharCode(\n fn(findRange(char), char.charCodeAt(0))\n );\n}\n\n/**\n * Calculate the next value for a string. 'a' becomes 'b'. 'A' becomes 'B'. 1\n * becomes 2, etc. If multiple character strings are passed, 'aa' would become\n * 'bb'.\n *\n * @function next\n * @param {(string|number)} value - The string or number to convert.\n * @return {string} - The formatted string\n * @memberof Helpers.Value\n */\nexport function next(value) {\n const converted = (value)\n .toString()\n .split('')\n .map(char => stringFromCharCodeBy(char, (range, code) => {\n return !range || code < range.max ? code + 1 : range.min\n }))\n .join('');\n\n return format(converted, typeof value);\n}\n\n/**\n * Calculate the prev value for a string. 'b' becomes 'a'. 'B' becomes 'A'. 2\n * becomes 1, 0 becomes 9, etc. If multiple character strings are passed, 'bb'\n * would become 'aa'.\n *\n * @function prev\n * @param {(string|number)} value - The string or number to convert.\n * @return {string} - The formatted string\n * @memberof Helpers.Value\n */\nexport function prev(value) {\n const converted = (value)\n .toString()\n .split('')\n .map(char => stringFromCharCodeBy(char, (range, code) => {\n return !range || code > range.min ? code - 1 : range.max\n }))\n .join('');\n\n return format(converted, typeof value);\n}\n","import Component from './Component';\nimport digitize from '../Helpers/Digitize';\nimport { next, prev } from '../Helpers/Value';\nimport { length, isObject, isNumber } from '../Helpers/Functions';\n\nexport default class FaceValue extends Component {\n\n /**\n * The `FaceValue` class handles all the digitizing for the `Face`.\n *\n * @class FaceValue\n * @extends Component\n * @param {*} value - The `FaceValue`'s actual value. Most likely should\n * string, number, or Date. But since the Face handles the value, it\n * could be anything.\n * @param {(object|undefined)} [attributes] - The instance attributes.\n */\n constructor(value, attributes) {\n super(Object.assign({\n format: value => value,\n prependLeadingZero: true,\n minimumDigits: 0\n }, attributes));\n\n if(!this.value) {\n this.value = value;\n }\n }\n\n /**\n * The `digits` attribute.\n *\n * @type {(Array|undefined)}\n */\n get digits() {\n return this.$digits;\n }\n\n set digits(value) {\n this.$digits = value;\n this.minimumDigits = Math.max(this.minimumDigits, length(value));\n }\n\n /**\n * The `value` attribute.\n *\n * @type {*}\n */\n get value() {\n return this.$value;\n }\n\n set value(value) {\n this.$value = value;\n this.digits = digitize(this.format(value), {\n minimumDigits: this.minimumDigits,\n prependLeadingZero: this.prependLeadingZero\n });\n }\n\n /**\n * Returns `true` if the `value` attribute is not a number.\n *\n * @return {boolean} - `true` is the value is not a number.\n */\n isNaN() {\n return isNaN(this.value);\n }\n\n /**\n * Returns `true` if the `value` attribute is a number.\n *\n * @return {boolean} - `true` is the value is a number.\n */\n isNumber() {\n return isNumber();\n }\n\n /**\n * Clones the current `FaceValue` instance, but sets a new value to the\n * cloned instance. Used for copying the current instance options and\n * methods, but setting a new value.\n *\n * @param {*} value - The n\n * @param {(object|undefined)} [attributes] - The instance attributes.\n * @return {FaceValue} - The cloned `FaceValue`.\n */\n clone(value, attributes) {\n return new this.constructor(value, Object.assign(\n this.getPublicAttributes(), attributes\n ));\n }\n\n /**\n * Define the name of the class.\n *\n * @return {string}\n */\n static defineName() {\n return 'FaceValue';\n }\n\n}\n","/**\n * @namespace Helpers.Validate\n */\nimport { isNull } from './Functions';\nimport { flatten } from './Functions';\nimport { isString } from './Functions';\nimport { isObject } from './Functions';\nimport { isFunction } from './Functions';\nimport { isConstructor } from './Functions';\n\n/**\n * Validate the data type of a variable.\n *\n * @function validate\n * @param {*} value - The value to validate.\n * @param {...*} args - The data types to use for validate.\n * @return {boolean} - Returns `true`is the value has a valid data type.\n * @memberof Helpers.Validate\n */\nexport default function validate(value, ...args) {\n let success = false;\n\n flatten(args).forEach(arg => {\n if( (isNull(value) && isNull(arg)) ||\n (isObject(arg) && (value instanceof arg)) ||\n (isFunction(arg) && !isConstructor(arg) && arg(value) === true) ||\n (isString(arg) && (typeof value === arg))) {\n success = true;\n }\n });\n\n return success;\n}\n","/**\n * @alias ConsoleMessages\n * @type {object}\n * @memberof module:Config/ConsoleMessages\n */\nexport default {\n className: 'The className() is not defined.',\n items: 'The items property must be an array.',\n theme: 'The theme property must be an object.',\n language: 'The language must be an object.',\n date: 'The value must be an instance of a Date.',\n face: 'The face must be an instance of a Face class.',\n element: 'The element must be an instance of an HTMLElement',\n faceValue: 'The face must be an instance of a FaceValue class.',\n timer: 'The timer property must be an instance of a Timer class.'\n};\n","import Component from './Component';\nimport FaceValue from './FaceValue';\nimport validate from '../Helpers/Validate';\nimport ConsoleMessages from '../Config/ConsoleMessages';\nimport { error, isNull, isUndefined, isObject, isArray, isFunction, callback } from '../Helpers/Functions';\n\nexport default class Face extends Component {\n\n /**\n * This class is meant to be provide an interface for all other faces to\n * extend.\n *\n * @class Face\n * @extends Component\n * @param {(FaceValue|object)} value - The `Face` value. If not an instance\n * of FaceValue, this argument is assumed to be the instance attributes.\n * @param {(object|undefined)} [attributes] - The instance attributes.\n */\n constructor(value, attributes) {\n if(!(value instanceof FaceValue) && isObject(value)) {\n attributes = value;\n value = undefined;\n }\n\n super();\n\n this.setAttributes(Object.assign({\n autoStart: true,\n countdown: false,\n animationRate: 500\n }, this.defaultAttributes(), attributes || {}));\n\n if(isNull(value) || isUndefined(value)) {\n value = this.defaultValue();\n }\n\n if(value) {\n this.value = value;\n }\n }\n\n /**\n * The `dataType` attribute.\n *\n * @type {*}\n */\n get dataType() {\n return this.defaultDataType();\n }\n\n /**\n * The `value` attribute.\n *\n * @type {*}\n */\n get value() {\n return this.$value;\n }\n\n set value(value) {\n if(!(value instanceof FaceValue)) {\n value = this.createFaceValue(value);\n }\n\n this.$value = value;\n }\n\n /**\n * The `stopAt` attribute.\n *\n * @type {*}\n */\n get stopAt() {\n return this.$stopAt;\n }\n\n set stopAt(value) {\n this.$stopAt = value;\n }\n\n /**\n * The `originalValue` attribute.\n *\n * @type {*}\n */\n get originalValue() {\n return this.$originalValue;\n }\n\n set originalValue(value) {\n this.$originalValue = value;\n }\n\n /**\n * This method is called with every interval, or every time the clock\n * should change, and handles the actual incrementing and decrementing the\n * clock's `FaceValue`.\n *\n * @param {FlipClock} instance - The `FlipClock` instance.\n * @param {Function} fn - The interval callback.\n * @return {Face} - This `Face` instance.\n */\n interval(instance, fn) {\n if(this.countdown) {\n this.decrement(instance);\n }\n else {\n this.increment(instance);\n }\n\n callback.call(this, fn);\n\n if(this.shouldStop(instance)) {\n instance.stop();\n }\n\n return this.emit('interval');\n }\n\n /**\n * Determines if the clock should stop or not.\n *\n * @param {FlipClock} instance - The `FlipClock` instance.\n * @return {boolean} - Returns `true` if the clock should stop.\n */\n shouldStop(instance) {\n return !isUndefined(this.stopAt) ? this.stopAt === instance.value.value : false;\n }\n\n /**\n * By default this just returns the value unformatted.\n *\n * @param {FlipClock} instance - The `FlipClock` instance.\n * @param {*} value - The value to format.\n * @return {*} - The formatted value.\n */\n format(instance, value) {\n return value;\n }\n\n /**\n * The default value for the `Face`.\n *\n * @return {*} - The default value.\n */\n defaultValue() {\n //\n }\n\n /**\n * The default attributes for the `Face`.\n *\n * @return {(Object|undefined)} - The default attributes.\n */\n defaultAttributes() {\n //\n }\n\n /**\n * The default data type for the `Face` value.\n *\n * @return {(Object|undefined)} - The default data type.\n */\n defaultDataType() {\n //\n }\n\n /**\n * Increment the clock.\n *\n * @param {FlipClock} instance - The `FlipClock` instance.\n * @param {Number} [amount] - The amount to increment. If the amount is not\n * defined, it is left up to the `Face` to determine the default value.\n * @return {void}\n */\n increment(instance, amount) {\n //\n }\n\n /**\n * Decrement the clock.\n *\n * @param {FlipClock} instance - The `FlipClock` instance.\n * @param {Number} [amount] - The amount to decrement. If the amount is not\n * defined, it is left up to the `Face` to determine the default value.\n * @return {void}\n */\n decrement(instance, amount) {\n //\n }\n\n /**\n * This method is called right after clock has started.\n *\n * @param {FlipClock} instance - The `FlipClock` instance.\n * @return {void}\n */\n started(instance) {\n //\n }\n\n /**\n * This method is called right after clock has stopped.\n *\n * @param {FlipClock} instance - The `FlipClock` instance.\n * @return {void}\n */\n stopped(instance) {\n //\n }\n\n /**\n * This method is called right after clock has reset.\n *\n * @param {FlipClock} instance - The `FlipClock` instance.\n * @return {void}\n */\n reset(instance) {\n //\n }\n\n /**\n * This method is called right after `Face` has initialized.\n *\n * @param {FlipClock} instance - The `FlipClock` instance.\n * @return {void}\n */\n initialized(instance) {\n //\n }\n\n /**\n * This method is called right after `Face` has rendered.\n *\n * @param {FlipClock} instance - The `FlipClock` instance.\n * @return {void}\n */\n rendered(instance) {\n //\n }\n\n /**\n * This method is called right after `Face` has mounted.\n *\n * @param {FlipClock} instance - The `FlipClock` instance.\n * @return {void}\n */\n mounted(instance) {\n if(this.autoStart && instance.timer.isStopped) {\n window.requestAnimationFrame(() => instance.start(instance));\n }\n }\n\n /**\n * Helper method to instantiate a new `FaceValue`.\n *\n * @param {FlipClock} instance - The `FlipClock` instance.\n * @param {object|undefined} [attributes] - The attributes passed to the\n * `FaceValue` instance.\n * @return {Divider} - The instantiated `FaceValue`.\n */\n createFaceValue(instance, value) {\n return FaceValue.make(\n isFunction(value) && !value.name ? value() : value, {\n minimumDigits: this.minimumDigits,\n format: value => this.format(instance, value)\n }\n );\n }\n\n}\n","/**\n * @classdesc Arabic Language Pack\n * @desc This class will be used to translate tokens into the Arabic language.\n * @namespace Languages.Arabic\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Arabic\n */\nexport const dictionary = {\n 'years' : 'سنوات',\n 'months' : 'شهور',\n 'days' : 'أيام',\n 'hours' : 'ساعات',\n 'minutes' : 'دقائق',\n 'seconds' : 'ثواني'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Arabic\n */\nexport const aliases = ['ar', 'ar-ar', 'arabic'];\n","/**\n * @classdesc Catalan Language Pack\n * @desc This class will used to translate tokens into the Catalan language.\n * @namespace Languages.Catalan\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Catalan\n */\nexport const dictionary = {\n 'years' : 'Anys',\n 'months' : 'Mesos',\n 'days' : 'Dies',\n 'hours' : 'Hores',\n 'minutes' : 'Minuts',\n 'seconds' : 'Segons'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Catalan\n */\nexport const aliases = ['ca', 'ca-es', 'catalan'];\n","/**\n * @classdesc Czech Language Pack\n * @desc This class will used to translate tokens into the Czech language.\n * @namespace Languages.Czech\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Czech\n */\nexport const dictionary = {\n 'years' : 'Roky',\n 'months' : 'Měsíce',\n 'days' : 'Dny',\n 'hours' : 'Hodiny',\n 'minutes' : 'Minuty',\n 'seconds' : 'Sekundy'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Czech\n */\nexport const aliases = ['cs', 'cs-cz', 'cz', 'cz-cs', 'czech'];\n","/**\n * @classdesc Danish Language Pack\n * @desc This class will used to translate tokens into the Danish language.\n * @namespace Languages.Danish\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Danish\n */\nexport const dictionary = {\n\t'years' : 'År',\n\t'months' : 'Måneder',\n\t'days' : 'Dage',\n\t'hours' : 'Timer',\n\t'minutes' : 'Minutter',\n\t'seconds' : 'Sekunder'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Danish\n */\nexport const aliases = ['da', 'da-dk', 'danish'];\n","/**\n * @classdesc German Language Pack\n * @desc This class will used to translate tokens into the German language.\n * @namespace Languages.German\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.German\n */\nexport const dictionary = {\n\t'years' : 'Jahre',\n\t'months' : 'Monate',\n\t'days' : 'Tage',\n\t'hours' : 'Stunden',\n\t'minutes' : 'Minuten',\n\t'seconds' : 'Sekunden'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.German\n */\nexport const aliases = ['de', 'de-de', 'german'];\n","/**\n * @classdesc English Language Pack\n * @desc This class will used to translate tokens into the English language.\n * @namespace Languages.English\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.English\n */\nexport const dictionary = {\n\t'years' : 'Years',\n\t'months' : 'Months',\n\t'days' : 'Days',\n\t'hours' : 'Hours',\n\t'minutes' : 'Minutes',\n\t'seconds' : 'Seconds'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.English\n */\nexport const aliases = ['en', 'en-us', 'english'];\n","/**\n * @classdesc Spanish Language Pack\n * @desc This class will used to translate tokens into the Spanish language.\n * @namespace Languages.Spanish\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Spanish\n */\nexport const dictionary = {\n\t'years' : 'Años',\n\t'months' : 'Meses',\n\t'days' : 'Días',\n\t'hours' : 'Horas',\n\t'minutes' : 'Minutos',\n\t'seconds' : 'Segundos'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Spanish\n */\nexport const aliases = ['es', 'es-es', 'spanish'];\n","/**\n * @classdesc Persian Language Pack\n * @desc This class will used to translate tokens into the Persian language.\n * @namespace Languages.Persian\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Persian\n */\nexport const dictionary = {\n\t'years' : 'سال',\n\t'months' : 'ماه',\n\t'days' : 'روز',\n\t'hours' : 'ساعت',\n\t'minutes' : 'دقیقه',\n\t'seconds' : 'ثانیه'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Persian\n */\nexport const aliases = ['fa', 'fa-ir', 'persian'];\n","/**\n * @classdesc Finnish Language Pack\n * @desc This class will used to translate tokens into the Finnish language.\n * @namespace Languages.Finnish\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Finnish\n */\nexport const dictionary = {\n\t'years' : 'Vuotta',\n\t'months' : 'Kuukautta',\n\t'days' : 'Päivää',\n\t'hours' : 'Tuntia',\n\t'minutes' : 'Minuuttia',\n\t'seconds' : 'Sekuntia'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Finnish\n */\nexport const aliases = ['fi', 'fi-fi', 'finnish'];\n","/**\n * @classdesc Canadian French Language Pack\n * @desc This class will used to translate tokens into the Canadian French language.\n * @namespace Languages.CanadianFrench\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.CanadianFrench\n */\nexport const dictionary = {\n 'years' : 'Ans',\n 'months' : 'Mois',\n 'days' : 'Jours',\n 'hours' : 'Heures',\n 'minutes' : 'Minutes',\n 'seconds' : 'Secondes'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.CanadianFrench\n */\nexport const aliases = ['fr', 'fr-ca', 'french'];\n","/**\n * @classdesc Hebrew Language Pack\n * @desc This class will used to translate tokens into the Hebrew language.\n * @namespace Languages.Hebrew\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Hebrew\n */\nexport const dictionary = {\n\t'years' : 'שנים',\n\t'months' : 'חודש',\n\t'days' : 'ימים',\n\t'hours' : 'שעות',\n\t'minutes' : 'דקות',\n\t'seconds' : 'שניות'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Hebrew\n */\nexport const aliases = ['il', 'he-il', 'hebrew'];\n","/**\n * @classdesc Hungarian Language Pack\n * @desc This class will used to translate tokens into the Hungarian language.\n * @namespace Languages.Hungarian\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Hungarian\n */\nexport const dictionary = {\n\t'years' : 'Év',\n 'months' : 'Hónap',\n 'days' : 'Nap',\n 'hours' : 'Óra',\n 'minutes' : 'Perc',\n 'seconds' : 'Másodperc'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Hungarian\n */\nexport const aliases = ['hu', 'hu-hu', 'hungarian'];\n","/**\n * @classdesc Italian Language Pack\n * @desc This class will used to translate tokens into the Italian language.\n * @namespace Languages.Italian\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Italian\n */\nexport const dictionary = {\n\t'years' : 'Anni',\n\t'months' : 'Mesi',\n\t'days' : 'Giorni',\n\t'hours' : 'Ore',\n\t'minutes' : 'Minuti',\n\t'seconds' : 'Secondi'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Italian\n */\nexport const aliases = ['da', 'da-dk', 'danish'];\n","/**\n * @classdesc Japanese Language Pack\n * @desc This class will used to translate tokens into the Japanese language.\n * @namespace Languages.Japanese\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Japanese\n */\nexport const dictionary = {\n\t'years' : '年',\n\t'months' : '月',\n\t'days' : '日',\n\t'hours' : '時',\n\t'minutes' : '分',\n\t'seconds' : '秒'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Japanese\n */\nexport const aliases = ['jp', 'ja-jp', 'japanese'];\n","/**\n * @classdesc Korean Language Pack\n * @desc This class will used to translate tokens into the Korean language.\n * @namespace Languages.Korean\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Korean\n */\nexport const dictionary = {\n\t'years' : '년',\n\t'months' : '월',\n\t'days' : '일',\n\t'hours' : '시',\n\t'minutes' : '분',\n\t'seconds' : '초'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Korean\n */\nexport const aliases = ['ko', 'ko-kr', 'korean'];\n","/**\n * @classdesc Latvian Language Pack\n * @desc This class will used to translate tokens into the Latvian language.\n * @namespace Languages.Latvian\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Latvian\n */\nexport const dictionary = {\n 'years' : 'Gadi',\n 'months' : 'Mēneši',\n 'days' : 'Dienas',\n 'hours' : 'Stundas',\n 'minutes' : 'Minūtes',\n 'seconds' : 'Sekundes'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Latvian\n */\nexport const aliases = ['lv', 'lv-lv', 'latvian'];\n","/**\n * @classdesc Dutch Language Pack\n * @desc This class will used to translate tokens into the Dutch language.\n * @namespace Languages.Dutch\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Dutch\n */\nexport const dictionary = {\n 'years' : 'Jaren',\n 'months' : 'Maanden',\n 'days' : 'Dagen',\n 'hours' : 'Uren',\n 'minutes' : 'Minuten',\n 'seconds' : 'Seconden'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Dutch\n */\nexport const aliases = ['nl', 'nl-be', 'dutch'];\n","/**\n * @classdesc Norwegian-Bokmål Language Pack\n * @desc This class will used to translate tokens into the Norwegian-Bokmål language.\n * @namespace Languages.Norwegian\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Norwegian\n */\nexport const dictionary = {\n\t'years' : 'År',\n\t'months' : 'Måneder',\n\t'days' : 'Dager',\n\t'hours' : 'Timer',\n\t'minutes' : 'Minutter',\n\t'seconds' : 'Sekunder'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Norwegian\n */\nexport const aliases = ['no', 'nb', 'no-nb', 'norwegian'];\n","/**\n * @classdesc Polish Language Pack\n * @desc This class will used to translate tokens into the Polish language.\n * @namespace Languages.Polish\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Polish\n */\nexport const dictionary = {\n\t'years' : 'Lat',\n\t'months' : 'Miesięcy',\n\t'days' : 'Dni',\n\t'hours' : 'Godziny',\n\t'minutes' : 'Minuty',\n\t'seconds' : 'Sekundy'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Polish\n */\nexport const aliases = ['pl', 'pl-pl', 'polish'];\n","/**\n * @classdesc Portuguese Language Pack\n * @desc This class will used to translate tokens into the Portuguese language.\n * @namespace Languages.Portuguese\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Portuguese\n */\nexport const dictionary = {\n\t'years' : 'Anos',\n\t'months' : 'Meses',\n\t'days' : 'Dias',\n\t'hours' : 'Horas',\n\t'minutes' : 'Minutos',\n\t'seconds' : 'Segundos'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Portuguese\n */\nexport const aliases = ['pt', 'pt-br', 'portuguese'];\n","/**\n * @classdesc Romanian Language Pack\n * @desc This class will used to translate tokens into the Romanian language.\n * @namespace Languages.Romanian\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Romanian\n */\nexport const dictionary = {\n\t'years': 'Ani',\n\t'months': 'Luni',\n\t'days': 'Zile',\n\t'hours': 'Ore',\n\t'minutes': 'Minute',\n\t'seconds': 'sSecunde'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Romanian\n */\nexport const aliases = ['ro', 'ro-ro', 'romana'];\n","/**\n * @classdesc Russian Language Pack\n * @desc This class will used to translate tokens into the Russian language.\n * @namespace Languages.Russian\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Russian\n */\nexport const dictionary = {\n 'years' : 'лет',\n 'months' : 'месяцев',\n 'days' : 'дней',\n 'hours' : 'часов',\n 'minutes' : 'минут',\n 'seconds' : 'секунд'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Russian\n */\nexport const aliases = ['ru', 'ru-ru', 'russian'];\n","/**\n * @classdesc Slovak Language Pack\n * @desc This class will used to translate tokens into the Slovak language.\n * @namespace Languages.Slovak\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Slovak\n */\nexport const dictionary = {\n\t'years' : 'Roky',\n\t'months' : 'Mesiace',\n\t'days' : 'Dni',\n\t'hours' : 'Hodiny',\n\t'minutes' : 'Minúty',\n\t'seconds' : 'Sekundy'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Slovak\n */\nexport const aliases = ['sk', 'sk-sk', 'slovak'];\n","/**\n * @classdesc Swedish Language Pack\n * @desc This class will used to translate tokens into the Swedish language.\n * @namespace Languages.Swedish\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Swedish\n */\nexport const dictionary = {\n\t'years' : 'År',\n\t'months' : 'Månader',\n\t'days' : 'Dagar',\n\t'hours' : 'Timmar',\n\t'minutes' : 'Minuter',\n\t'seconds' : 'Sekunder'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Swedish\n */\nexport const aliases = ['sv', 'sv-se', 'swedish'];\n","/**\n * @classdesc Thai Language Pack\n * @desc This class will used to translate tokens into the Thai language.\n * @namespace Languages.Thai\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Thai\n */\nexport const dictionary = {\n\t'years' : 'ปี',\n\t'months' : 'เดือน',\n\t'days' : 'วัน',\n\t'hours' : 'ชั่วโมง',\n\t'minutes' : 'นาที',\n\t'seconds' : 'วินาที'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Thai\n */\nexport const aliases = ['th', 'th-th', 'thai'];\n","/**\n * @classdesc Turkish Language Pack\n * @desc This class will used to translate tokens into the Turkish language.\n * @namespace Languages.Turkish\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Turkish\n */\nexport const dictionary = {\n\t'years' : 'Yıl',\n\t'months' : 'Ay',\n\t'days' : 'Gün',\n\t'hours' : 'Saat',\n\t'minutes' : 'Dakika',\n\t'seconds' : 'Saniye'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Turkish\n */\nexport const aliases = ['tr', 'tr-tr', 'turkish'];\n","/**\n * @classdesc Ukrainian Language Pack\n * @desc This class will used to translate tokens into the Ukrainian language.\n * @namespace Languages.Ukrainian\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Ukrainian\n */\nexport const dictionary = {\n 'years' : 'роки',\n 'months' : 'місяці',\n 'days' : 'дні',\n 'hours' : 'години',\n 'minutes' : 'хвилини',\n 'seconds' : 'секунди'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Ukrainian\n */\nexport const aliases = ['ua', 'ua-ua', 'ukraine'];\n","/**\n * @classdesc Vietnamese Language Pack\n * @desc This class will used to translate tokens into the Vietnamese language.\n * @namespace Languages.Vietnamese\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Vietnamese\n */\nexport const dictionary = {\n\t'years' : 'Năm',\n\t'months' : 'Tháng',\n\t'days' : 'Ngày',\n\t'hours' : 'Giờ',\n\t'minutes' : 'Phút',\n\t'seconds' : 'Giây'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Vietnamese\n */\nexport const aliases = ['vn', 'vn-vn', 'vietnamese'];\n","/**\n * @classdesc Chinese Language Pack\n * @desc This class will used to translate tokens into the Chinese language.\n * @namespace Languages.Chinese\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Chinese\n */\nexport const dictionary = {\n\t'years' : '年',\n\t'months' : '月',\n\t'days' : '日',\n\t'hours' : '时',\n\t'minutes' : '分',\n\t'seconds' : '秒'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Chinese\n */\nexport const aliases = ['zh', 'zh-cn', 'chinese'];\n","/**\n * @classdesc Traditional Chinese Language Pack\n * @desc This class will used to translate tokens into the Traditional Chinese language.\n * @namespace Languages.TraditionalChinese\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.TraditionalChinese\n */\nexport const dictionary = {\n\t'years' : '年',\n\t'months' : '月',\n\t'days' : '日',\n\t'hours' : '時',\n\t'minutes' : '分',\n\t'seconds' : '秒'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.TraditionalChinese\n */\nexport const aliases = ['zh-tw'];\n","/**\n * @namespace Languages\n */\nimport * as Arabic from './ar-ar';\nimport * as Catalan from './ca-es';\nimport * as Czech from './cs-cz';\nimport * as Danish from './da-dk';\nimport * as German from './de-de';\nimport * as English from './en-us';\nimport * as Spanish from './es-es';\nimport * as Persian from './fa-ir';\nimport * as Finnish from './fi-fi';\nimport * as French from './fr-ca';\nimport * as Hebrew from './he-il';\nimport * as Hungarian from './hu-hu';\nimport * as Italian from './it-it';\nimport * as Japanese from './ja-jp';\nimport * as Korean from './ko-kr';\nimport * as Latvian from './lv-lv';\nimport * as Dutch from './nl-be';\nimport * as Norwegian from './no-nb';\nimport * as Polish from './pl-pl';\nimport * as Portuguese from './pt-br';\nimport * as Romanian from './ro-ro';\nimport * as Russian from './ru-ru';\nimport * as Slovak from './sk-sk';\nimport * as Swedish from './sv-se';\nimport * as Thai from './th-th';\nimport * as Turkish from './tr-tr';\nimport * as Ukrainian from './ua-ua';\nimport * as Vietnamese from './vn-vn';\nimport * as Chinese from './zh-cn';\nimport * as TraditionalChinese from './zh-tw';\n\nexport {\n Arabic,\n Catalan,\n Czech,\n Danish,\n German,\n English,\n Spanish,\n Persian,\n Finnish,\n French,\n Hebrew,\n Hungarian,\n Italian,\n Japanese,\n Korean,\n Latvian,\n Dutch,\n Norwegian,\n Polish,\n Portuguese,\n Romanian,\n Russian,\n Slovak,\n Swedish,\n Thai,\n Turkish,\n Ukrainian,\n Vietnamese,\n Chinese,\n TraditionalChinese\n}\n","/**\n * @namespace Helpers.Language\n */\nimport * as LANGUAGES from '../Languages';\n\n/**\n * Return the language associated with the key. Returns `null` if no language is\n * found.\n * \n * @function language\n * @param {string} name - The name or id of the language.\n * @return {object|null} - The language dictionary, or null if not found.\n * @memberof Helpers.Language\n */\nexport default function language(name) {\n return name ? LANGUAGES[name.toLowerCase()] || Object.values(LANGUAGES).find(value => {\n return value.aliases.indexOf(name) !== -1;\n }) : null;\n}\n","/**\n * @namespace Helpers.Translate\n */\nimport language from './Language';\nimport { isString } from './Functions';\n\n/**\n * Translate an English string into another language.\n * \n * @function translate\n * @param {string} string - The string to translate.\n * @param {(string|object)} from - The language used to translate. If a string,\n * the language is loaded into an object.\n * @return {string} - If no diction key is found, the untranslated string is\n * returned.\n * @memberof Helpers.Translate\n */\nexport default function translate(string, from) {\n const lang = isString(from) ? language(from) : from;\n const dictionary = lang.dictionary || lang;\n return dictionary[string] || string;\n};\n","/**\n * A collection of functions to manage DOM nodes and theme templates.\n *\n * @namespace Helpers.Template\n */\nimport { noop } from './Functions';\nimport { isArray } from './Functions';\nimport { isObject } from './Functions';\nimport { isString } from './Functions';\nimport { deepFlatten } from './Functions';\n\n/**\n * Swap a new DOM node with an existing one.\n *\n * @function swap\n * @param {HTMLElement} subject - The new DOM node.\n * @param {HTMLElement} existing - The existing DOM node.\n * @return {HTMLElement} - Returns the new element if it was mounted, otherwise\n * the existing node is returned.\n * @memberof Helpers.Template\n */\nexport function swap(subject, existing) {\n\tif(existing.parentNode) {\n\t\texisting.parentNode.replaceChild(subject, existing);\n\n\t\treturn subject;\n\t}\n\n\treturn existing;\n}\n\n/**\n * Set the attribute of an element.\n *\n * @function setAttributes\n * @param {HTMLElement} el - The DOM node that will receive the attributes.\n * @param {Object|undefined} [attributes] - The attribute object, or if no object\n * is passed, then the action is ignored.\n * @return {HTMLElement} el - The DOM node that received the attributes.\n * @memberof Helpers.Template\n */\nexport function setAttributes(el, attributes) {\n\tif(isObject(attributes)) {\n\t\tfor(const i in attributes) {\n\t\t\tel.setAttribute(i, attributes[i]);\n\t\t}\n\t}\n\n\treturn el;\n}\n\n/**\n * Append an array of DOM nodes to a parent.\n *\n * @function appendChildren\n * @param {HTMLElement} el - The parent DOM node.\n * @param {Array|undefined} [children] - The array of children. If no array\n * is passed, then the method silently fails to run.\n * @return {HTMLElement} el - The DOM node that received the attributes.\n * @memberof Helpers.Template\n */\nexport function appendChildren(el, children) {\n\tif(isArray(children)) {\n\t\tchildren.filter(noop).forEach(child => {\n\t\t\tif(child instanceof HTMLElement) {\n\t\t\t\tel.appendChild(child);\n\t\t\t}\n\t\t});\n\t}\n\n\treturn el;\n}\n\n/**\n * Create a new HTMLElement instance.\n *\n * @function createElement\n * @param {HTMLElement} el - The parent DOM node.\n * @param {Array|undefined} [children] - The array of children. If no array\n * is passed, then the method silently fails to run.\n * @param {Object|undefined} [attributes] - The attributes object.\n * @return {HTMLElement} el - The DOM node that received the attributes.\n * @memberof Helpers.Template\n */\nexport function createElement(el, children, attributes) {\n\tif(!(el instanceof HTMLElement)) {\n\t\tel = document.createElement(el);\n\t}\n\n\tsetAttributes(el, isObject(children) ? children : attributes);\n\n\tif(!isObject(children) && !isArray(children)) {\n\t\tel.innerHTML = children;\n\t}\n\telse {\n\t\tappendChildren(el, children)\n\t}\n\n\treturn el;\n}\n","import Component from './Component';\nimport language from '../Helpers/Language';\nimport validate from '../Helpers/Validate';\nimport translate from '../Helpers/Translate';\nimport { isString } from '../Helpers/Functions';\nimport ConsoleMessages from '../Config/ConsoleMessages';\nimport { error, kebabCase } from '../Helpers/Functions';\nimport { swap, createElement } from '../Helpers/Template';\n\nexport default class DomComponent extends Component {\n\n /**\n * An abstract class that all other DOM components can extend.\n *\n * @class DomComponent\n * @extends Component\n * @param {(object|undefined)} [attributes] - The instance attributes.\n */\n constructor(attributes) {\n super(Object.assign({\n parent: null\n }, attributes));\n\n if(!this.theme) {\n error(`${this.name} does not have a theme defined.`);\n }\n\n if(!this.language) {\n error(`${this.name} does not have a language defined.`);\n }\n\n\t\tif(!this.theme[this.name]) {\n throw new Error(\n `${this.name} cannot be rendered because it has no template.`\n );\n }\n }\n\n /**\n * The `className` attribute. Used for CSS.\n *\n * @type {string}\n */\n get className() {\n return kebabCase(this.constructor.defineName());\n }\n\n /**\n * The `el` attribute.\n *\n * @type {HTMLElement}\n */\n get el() {\n return this.$el;\n }\n\n set el(value) {\n if(!validate(value, null, HTMLElement)) {\n error(ConsoleMessages.element);\n }\n\n this.$el = value;\n }\n\n /**\n * The `parent` attribute. Parent is set when `DomComponent` instances are\n * mounted.\n *\n * @type {DomComponent}\n */\n get parent() {\n return this.$parent;\n }\n\n set parent(parent) {\n this.$parent = parent;\n }\n\n /**\n * The `theme` attribute.\n *\n * @type {object}\n */\n get theme() {\n return this.$theme;\n }\n\n set theme(value) {\n if(!validate(value, 'object')) {\n error(ConsoleMessages.value);\n }\n\n this.$theme = value;\n }\n\n /**\n * Get the language attribute.\n *\n * @type {object}\n */\n get language() {\n return this.$language;\n }\n\n set language(value) {\n if(isString(value)) {\n value = language(value);\n }\n\n if(!validate(value, 'object')) {\n error(ConsoleMessages.language);\n }\n\n this.$language = value;\n }\n\n /**\n * Translate a string.\n *\n * @param {string} string - The string to translate.\n * @return {string} - The translated string. If no tranlation found, the\n * untranslated string is returned.\n */\n translate(string) {\n return translate(string, this.language);\n }\n\n /**\n * Alias to translate(string);\n *\n * @alias DomComponent.translate\n */\n t(string) {\n return this.translate(string);\n }\n\n /**\n * Render the DOM component.\n *\n * @return {HTMLElement} - The `el` attribute.\n */\n\trender() {\n const el = createElement('div', {\n class: this.className === 'flip-clock' ? this.className : 'flip-clock-' + this.className\n });\n\n this.theme[this.name](el, this);\n\n if(!this.el) {\n this.el = el;\n }\n else if(this.el.innerHTML !== el.innerHTML) {\n this.el = swap(el, this.el);\n }\n\n return this.el;\n\t}\n\n /**\n * Mount a DOM component to a parent node.\n *\n * @param {HTMLElement} parent - The parent DOM node.\n * @param {(false|HTMLElement)} [before=false] - If `false`, element is\n * appended to the parent node. If an instance of an `HTMLElement`,\n * the component will be inserted before the specified element.\n * @return {HTMLElement} - The `el` attribute.\n */\n mount(parent, before = false) {\n this.render();\n this.parent = parent;\n\n if(!before) {\n this.parent.appendChild(this.el);\n }\n else {\n this.parent.insertBefore(this.el, before);\n }\n\n return this.el;\n }\n\n}\n","import DomComponent from './DomComponent';\n\n/**\n * Create a new `Divider` instance.\n *\n * The purpose of this class is to return a unique class name so the theme can\n * render it appropriately, since each `DomComponent` can receive its own template\n * from the theme.\n *\n * @class Divider\n * @extends DomComponent\n * @param {(object|undefined)} [attributes] - The instance attributes.\n */\nexport default class Divider extends DomComponent {\n\n /**\n * Define the name of the class.\n *\n * @return {string}\n */\n static defineName() {\n return 'Divider';\n }\n\n}\n","import DomComponent from './DomComponent';\nimport { isObject } from '../Helpers/Functions';\n\nexport default class ListItem extends DomComponent {\n\n /**\n * This class is used to represent a single digits in a `List`.\n *\n * @class ListItem\n * @extends DomComponent\n * @param {(Number|String)} value - The value of the `ListItem`.\n * @param {object|undefined} [attributes] - The instance attributes.\n */\n constructor(value, attributes) {\n super(Object.assign({\n value: value\n }, isObject(value) ? value : null, attributes));\n }\n\n /**\n * Define the name of the class.\n *\n * @return {string}\n */\n static defineName() {\n return 'ListItem';\n }\n\n}\n","import Divider from './Divider';\nimport ListItem from './ListItem';\nimport DomComponent from './DomComponent';\nimport { next, prev, } from '../Helpers/Value';\nimport { isObject, } from '../Helpers/Functions';\n\nexport default class List extends DomComponent {\n\n /**\n * This class is used to add a digit to the clock face. This class is called\n * `List` because it contains a list of `ListItem`'s which are used to\n * create flip effects. In the context of FlipClock.js a `List` represents\n * one single digit.\n *\n * @class List\n * @extends DomComponent\n * @param {Number|String|Object} label - The active value. If an object, it\n * is assumed that it is the instance attributes.\n * @param {object|undefined} [attributes] - The instance attributes.\n */\n constructor(value, attributes) {\n super(Object.assign({\n value: value,\n items: [],\n }, isObject(value) ? value : null, attributes));\n }\n\n /**\n * Get the `value` attribute.\n *\n * @type {(Number|String)}\n */\n get value() {\n return this.$value;\n }\n set value(value) {\n this.$value = value;\n }\n\n /**\n * Get the `items` attribute.\n *\n * @type {(Number|String)}\n */\n get items() {\n return this.$items;\n }\n\n set items(value) {\n this.$items = value;\n }\n\n /**\n * Helper method to instantiate a new `ListItem`.\n *\n * @param {(Number|String)} value - The `ListItem` value.\n * @param {(Object|undefined)} [attributes] - The instance attributes.\n * @return {ListItem} - The instantiated `ListItem`.\n */\n createListItem(value, attributes) {\n const item = new ListItem(value, Object.assign({\n theme: this.theme,\n language: this.language\n }, attributes));\n\n this.$items.push(item);\n\n return item;\n }\n\n /**\n * Define the name of the class.\n *\n * @return {string}\n */\n static defineName() {\n return 'List';\n }\n\n}\n","import DomComponent from './DomComponent';\nimport { isObject, isArray } from '../Helpers/Functions';\n\nexport default class Group extends DomComponent {\n\n /**\n * This class is used to group values within a clock face. How the groups\n * are displayed is determined by the theme.\n *\n * @class Group\n * @extends DomComponent\n * @param {Array|Object} items - An array `List` instances or an object of\n * attributes. If not an array, assumed to be the attributes.\n * @param {object|undefined} [attributes] - The instance attributes.\n */\n constructor(items, attributes) {\n super(Object.assign({\n items: isArray(items) ? items : []\n }, (isObject(items) ? items : null), attributes));\n }\n\n /**\n * Define the name of the class.\n *\n * @return {string}\n */\n static defineName() {\n return 'Group';\n }\n\n}\n","import DomComponent from './DomComponent';\nimport { isObject } from '../Helpers/Functions';\n\nexport default class Label extends DomComponent {\n\n /**\n * This class is used to add a label to the clock face.\n *\n * @class Label\n * @extends DomComponent\n * @param {Number|String|Object} label - The label attribute. If an object,\n * it is assumed that it is the instance attributes.\n * @param {object|undefined} [attributes] - The instance attributes.\n */\n constructor(label, attributes) {\n super(Object.assign({\n label: label\n }, (isObject(label) ? label : null), attributes));\n }\n\n /**\n * Define the name of the class.\n *\n * @return {string}\n */\n static defineName() {\n return 'Label';\n }\n\n}\n","import Component from './Component';\nimport { isObject, isNumber, callback } from '../Helpers/Functions';\n\nexport default class Timer extends Component {\n\n /**\n * Create a new `Timer` instance.\n *\n * @class Timer\n * @extends Component\n * @param {(Object|Number)} interval - The interval passed as a `Number`,\n * or can set the attribute of the class with an object.\n */\n constructor(interval) {\n super(Object.assign({\n count: 0,\n handle: null,\n started: null,\n running: false,\n interval: isNumber(interval) ? interval : null,\n }, isObject(interval) ? interval : null));\n }\n\n /**\n * The `elapsed` attribute.\n *\n * @type {Number}\n */\n get elapsed() {\n return !this.lastLoop ? 0 : this.lastLoop - (\n this.started ? this.started.getTime() : new Date().getTime()\n );\n }\n\n /**\n * The `isRunning` attribute.\n *\n * @type {boolean}\n */\n get isRunning() {\n return this.running === true;\n }\n\n /**\n * The `isStopped` attribute.\n *\n * @type {boolean}\n */\n get isStopped() {\n return this.running === false;\n }\n\n /**\n * Resets the timer.\n *\n * @param {(Function|undefined)} fn - The interval callback.\n * @return {Timer} - The `Timer` instance.\n */\n reset(fn) {\n this.stop(() => {\n this.count = 0;\n this.start(() => callback.call(this, fn));\n this.emit('reset');\n });\n\n return this;\n }\n\n /**\n * Starts the timer.\n *\n * @param {Function} fn - The interval callback.\n * @return {Timer} - The `Timer` instance.\n */\n start(fn) {\n this.started = new Date;\n this.lastLoop = Date.now();\n this.running = true;\n this.emit('start');\n\n const loop = () => {\n if(Date.now() - this.lastLoop >= this.interval) {\n callback.call(this, fn);\n this.lastLoop = Date.now();\n this.emit('interval');\n this.count++;\n }\n\n this.handle = window.requestAnimationFrame(loop);\n\n return this;\n };\n\n return loop();\n }\n\n /**\n * Stops the timer.\n *\n * @param {Function} fn - The stop callback.\n * @return {Timer} - The `Timer` instance.\n */\n stop(fn) {\n if(this.isRunning) {\n setTimeout(() => {\n window.cancelAnimationFrame(this.handle);\n\n this.running = false;\n\n callback.call(this, fn);\n\n this.emit('stop');\n });\n }\n\n return this;\n }\n\n /**\n * Define the name of the class.\n *\n * @return {string}\n */\n static defineName() {\n return 'Timer';\n }\n}\n","import Face from '../Components/Face';\n\n/**\n * @classdesc This face is designed to increment and decrement numberic values,\n * not `Date` objects.\n * @extends Face\n * @param {(FaceValue|object)} value - The `Face` value. If not an instance\n * of FaceValue, this argument is assumed to be the instance attributes.\n * @param {(object|undefined)} [attributes] - The instance attributes.\n * @memberof Faces\n */\nexport default class Counter extends Face {\n\n increment(instance, value = 1) {\n instance.value = this.value.value + value;\n }\n\n decrement(instance, value = 1) {\n instance.value = this.value.value - value;\n }\n\n /**\n * Define the name of the class.\n *\n * @return {string}\n */\n static defineName() {\n return 'Counter';\n }\n}\n","import Face from '../Components/Face';\nimport { noop, round, isNull, isUndefined, isNumber, callback } from '../Helpers/Functions';\n\n/**\n * @classdesc This face is meant to display a clock that shows minutes, and\n * seconds.\n * @extends Face\n * @param {(FaceValue|object)} value - The `Face` value. If not an instance\n * of FaceValue, this argument is assumed to be the instance attributes.\n * @param {(object|undefined)} [attributes] - The instance attributes.\n * @memberof Faces\n */\nexport default class MinuteCounter extends Face {\n\n defaultDataType() {\n return Date;\n }\n\n defaultAttributes() {\n return {\n showSeconds: true,\n showLabels: true\n };\n }\n\n shouldStop(instance) {\n if(isNull(instance.stopAt) || isUndefined(instance.stopAt)) {\n return false;\n }\n\n if(this.stopAt instanceof Date) {\n return this.countdown ?\n this.stopAt.getTime() >= this.value.value.getTime():\n this.stopAt.getTime() <= this.value.value.getTime();\n }\n else if(isNumber(this.stopAt)) {\n const diff = Math.floor((this.value.value.getTime() - this.originalValue.getTime()) / 1000);\n\n return this.countdown ?\n this.stopAt >= diff:\n this.stopAt <= diff;\n }\n\n throw new Error(`the stopAt property must be an instance of Date or Number.`);\n }\n\n increment(instance, value = 0) {\n instance.value = new Date(this.value.value.getTime() + value + (new Date().getTime() - instance.timer.lastLoop));\n }\n\n decrement(instance, value = 0) {\n instance.value = new Date(this.value.value.getTime() - value - (new Date().getTime() - instance.timer.lastLoop));\n }\n\n format(instance, value) {\n const started = instance.timer.isRunning ? instance.timer.started : new Date(Date.now() - 50);\n\n return [\n [this.getMinutes(value, started)],\n this.showSeconds ? [this.getSeconds(value, started)] : null\n ].filter(noop);\n }\n\n getMinutes(a, b) {\n return round(this.getTotalSeconds(a, b) / 60);\n }\n\n getSeconds(a, b) {\n const totalSeconds = this.getTotalSeconds(a, b);\n\n return Math.abs(Math.ceil(totalSeconds === 60 ? 0 : totalSeconds % 60));\n }\n\n getTotalSeconds(a, b) {\n return a.getTime() === b.getTime() ? 0 : Math.round((a.getTime() - b.getTime()) / 1000);\n }\n\n /**\n * Define the name of the class.\n *\n * @return {string}\n */\n static defineName() {\n return 'MinuteCounter';\n }\n}\n","import MinuteCounter from './MinuteCounter';\n\n/**\n * @classdesc This face is meant to display a clock that shows\n * hours, minutes, and seconds.\n * @extends Face\n * @param {(FaceValue|object)} value - The `Face` value. If not an instance\n * of FaceValue, this argument is assumed to be the instance attributes.\n * @param {(object|undefined)} [attributes] - The instance attributes.\n * @memberof Faces\n */\nexport default class HourCounter extends MinuteCounter {\n\n format(instance, value) {\n const now = !instance.timer.started ? new Date : value;\n const originalValue = instance.originalValue || value;\n const a = !this.countdown ? now : originalValue;\n const b = !this.countdown ? originalValue : now;\n\n const data = [\n [this.getHours(a, b)],\n [this.getMinutes(a, b)]\n ];\n\n if(this.showSeconds) {\n data.push([this.getSeconds(a, b)]);\n }\n\n return data;\n }\n\n getMinutes(a, b) {\n return Math.abs(super.getMinutes(a, b) % 60);\n }\n\n getHours(a, b) {\n return Math.floor(this.getTotalSeconds(a, b) / 60 / 60);\n }\n\n /**\n * Define the name of the class.\n *\n * @return {string}\n */\n static defineName() {\n return 'HourCounter';\n }\n}\n","import HourCounter from './HourCounter';\n\n/**\n * @classdesc This face is meant to display a clock that shows days, hours,\n * minutes, and seconds.\n * @extends HourCounter\n * @param {(FaceValue|object)} value - The `Face` value. If not an instance\n * of FaceValue, this argument is assumed to be the instance attributes.\n * @param {(object|undefined)} [attributes] - The instance attributes.\n * @memberof Faces\n */\nexport default class DayCounter extends HourCounter {\n\n format(instance, value) {\n const now = !instance.started ? new Date : value;\n const originalValue = instance.originalValue || value;\n const a = !this.countdown ? now : originalValue;\n const b = !this.countdown ? originalValue : now;\n\n const data = [\n [this.getDays(a, b)],\n [this.getHours(a, b)],\n [this.getMinutes(a, b)]\n ];\n\n if(this.showSeconds) {\n data.push([this.getSeconds(a, b)]);\n }\n\n return data;\n }\n\n getDays(a, b) {\n return Math.floor(this.getTotalSeconds(a, b) / 60 / 60 / 24);\n }\n\n getHours(a, b) {\n return Math.abs(super.getHours(a, b) % 24);\n }\n\n /**\n * Define the name of the class.\n *\n * @return {string}\n */\n static defineName() {\n return 'DayCounter';\n }\n}\n","import Face from '../Components/Face';\nimport { callback } from '../Helpers/Functions';\n\n/**\n * @classdesc This face shows the current time in twenty-four hour format.\n * @extends Face\n * @param {(FaceValue|object)} value - The `Face` value. If not an instance\n * of FaceValue, this argument is assumed to be the instance attributes.\n * @param {(object|undefined)} [attributes] - The instance attributes.\n * @memberof Faces\n */\nexport default class TwentyFourHourClock extends Face {\n\n defaultDataType() {\n return Date;\n }\n\n defaultValue() {\n return new Date;\n }\n\n defaultAttributes() {\n return {\n showSeconds: true,\n showLabels: false\n };\n }\n\n format(instance, value) {\n if(!value) {\n value = new Date;\n }\n\n const groups = [\n [value.getHours()],\n [value.getMinutes()]\n ];\n\n if(this.showSeconds) {\n groups.push([value.getSeconds()]);\n }\n\n return groups;\n }\n\n increment(instance, offset = 0) {\n instance.value = new Date(this.value.value.getTime() + offset + (new Date().getTime() - instance.timer.lastLoop));\n }\n\n decrement(instance, offset = 0) {\n instance.value = new Date(this.value.value.getTime() - offset - (new Date().getTime() - instance.timer.lastLoop));\n }\n\n /**\n * Define the name of the class.\n *\n * @return {string}\n */\n static defineName() {\n return 'TwentyFourHourClock';\n }\n}\n","import TwentyFourHourClock from './TwentyFourHourClock';\n\n/**\n * @classdesc This face shows the current time in twelve hour format, with AM\n * and PM.\n * @extends Face\n * @param {(FaceValue|object)} value - The `Face` value. If not an instance\n * of FaceValue, this argument is assumed to be the instance attributes.\n * @param {(object|undefined)} [attributes] - The instance attributes.\n * @memberof Faces\n */\nexport default class TwelveHourClock extends TwentyFourHourClock {\n\n defaultAttributes() {\n return {\n showLabels: false,\n showSeconds: true,\n showMeridium: true\n };\n }\n\n format(instance, value) {\n if(!value) {\n value = new Date;\n }\n\n const hours = value.getHours();\n\t\tconst groups = [\n\t\t\thours > 12 ? hours - 12 : (hours === 0 ? 12 : hours),\n\t\t\tvalue.getMinutes()\n\t\t];\n\n this.meridium = hours > 12 ? 'pm' : 'am';\n\n\t\tif(this.showSeconds) {\n\t\t\tgroups.push(value.getSeconds());\n\t\t}\n\n\t\treturn groups;\n }\n\n /**\n * Define the name of the class.\n *\n * @return {string}\n */\n static defineName() {\n return 'TwelveHourClock';\n }\n}\n","import DayCounter from './DayCounter';\n\n/**\n * @classdesc This face is meant to display a clock that shows weeks, days,\n * hours, minutes, and seconds.\n * @extends Face\n * @param {(FaceValue|object)} value - The `Face` value. If not an instance\n * of FaceValue, this argument is assumed to be the instance attributes.\n * @param {(object|undefined)} [attributes] - The instance attributes.\n * @memberof Faces\n */\nexport default class WeekCounter extends DayCounter {\n\n format(instance, value) {\n const now = !instance.timer.started ? new Date : value;\n const originalValue = instance.originalValue || value;\n const a = !this.countdown ? now : originalValue;\n const b = !this.countdown ? originalValue : now;\n\n const data = [\n [this.getWeeks(a, b)],\n [this.getDays(a, b)],\n [this.getHours(a, b)],\n [this.getMinutes(a, b)]\n ];\n\n if(this.showSeconds) {\n data.push([this.getSeconds(a, b)]);\n }\n\n return data;\n }\n\n getWeeks(a, b) {\n return Math.floor(this.getTotalSeconds(a, b) / 60 / 60 / 24 / 7);\n }\n\n getDays(a, b) {\n return Math.abs(super.getDays(a, b) % 7);\n }\n\n /**\n * Define the name of the class.\n *\n * @return {string}\n */\n static defineName() {\n return 'WeekCounter';\n }\n}\n","import WeekCounter from './WeekCounter';\n\n/**\n * @classdesc This face is meant to display a clock that shows years, weeks,\n * days, hours, minutes, and seconds.\n * @extends Face\n * @param {(FaceValue|object)} value - The `Face` value. If not an instance\n * of FaceValue, this argument is assumed to be the instance attributes.\n * @param {(object|undefined)} [attributes] - The instance attributes.\n * @memberof Faces\n */\nexport default class YearCounter extends WeekCounter {\n\n format(instance, value) {\n const now = !instance.timer.started ? new Date : value;\n const originalValue = instance.originalValue || value;\n const a = !this.countdown ? now : originalValue;\n const b = !this.countdown ? originalValue : now;\n\n const data = [\n [this.getYears(a, b)],\n [this.getWeeks(a, b)],\n [this.getDays(a, b)],\n [this.getHours(a, b)],\n [this.getMinutes(a, b)]\n ];\n\n if(this.showSeconds) {\n data.push([this.getSeconds(a, b)]);\n }\n\n return data;\n }\n\n getYears(a, b) {\n return Math.floor(Math.max(0, this.getTotalSeconds(a, b) / 60 / 60 / 24 / 7 / 52));\n }\n\n getWeeks(a, b) {\n return Math.abs(super.getWeeks(a, b) % 52);\n }\n\n /**\n * Define the name of the class.\n *\n * @return {string}\n */\n static defineName() {\n return 'YearCounter';\n }\n}\n","/**\n * Faces are classes that hook into the core of Flipclock to provide unique\n * functionality. The core doesn't do a lot, except facilitate the interaction\n * between all the components. The Face is what makes the clock \"tick\".\n *\n * @namespace Faces\n */\n\nimport Counter from './Counter';\nimport DayCounter from './DayCounter';\nimport HourCounter from './HourCounter';\nimport MinuteCounter from './MinuteCounter';\nimport TwelveHourClock from './TwelveHourClock';\nimport TwentyFourHourClock from './TwentyFourHourClock';\nimport WeekCounter from './WeekCounter';\nimport YearCounter from './YearCounter';\n\nexport {\n Counter,\n DayCounter,\n MinuteCounter,\n HourCounter,\n TwelveHourClock,\n TwentyFourHourClock,\n WeekCounter,\n YearCounter\n};\n","import { appendChildren, createElement } from '../../Helpers/Template';\n\nexport default function(el, instance) {\n appendChildren(el, [\n createElement('div', {class: 'flip-clock-dot top'}),\n createElement('div', {class: 'flip-clock-dot bottom'})\n ]);\n}\n","import { next } from '../../Helpers/Value';\nimport { appendChildren } from '../../Helpers/Template';\n\nfunction child(el, index) {\n return el ? (el.childNodes ? el.childNodes[index] : el[index]) : null;\n}\n\nfunction char(el) {\n return el ? el.querySelector('.flip-clock-list-item:first-child .top').innerHTML : null;\n}\n\nexport default function(el, instance) {\n const parts = instance.value.digits.map((group, x) => {\n const groupEl = child(instance.el ? instance.el.querySelectorAll('.flip-clock-group') : null, x);\n\n const lists = group.map((value, y) => {\n const listEl = child(groupEl ? groupEl.querySelectorAll('.flip-clock-list') : null, y);\n const listValue = char(listEl);\n\n return instance.createList(value, {\n domValue: listValue,\n countdown: instance.countdown,\n animationRate: instance.face.animationRate || instance.face.delay\n });\n });\n\n return instance.createGroup(lists);\n });\n\n const nodes = parts.map(group => {\n return group.render();\n });\n\n appendChildren(el, nodes);\n}\n","import { createElement, appendChildren } from '../../Helpers/Template';\n\nexport default function(el, instance) {\n const items = instance.items.map(item => {\n return item.render();\n });\n\n appendChildren(el, items);\n}\n","import { createElement } from '../../Helpers/Template';\n\nexport default function(el, instance) {\n el.innerHTML = instance.t(instance.label);\n}\n","import { next, prev } from '../../Helpers/Value';\nimport ListItem from '../../Components/ListItem';\nimport { createElement, appendChildren } from '../../Helpers/Template';\n\nexport default function(el, instance) {\n const beforeValue = instance.domValue || (\n !instance.countdown ? prev(instance.value) : next(instance.value)\n );\n\n if( instance.domValue && instance.domValue !== instance.value) {\n el.classList.add('flip');\n }\n\n el.style.animationDelay = `${instance.animationRate / 2}ms`;\n el.style.animationDuration = `${instance.animationRate / 2}ms`;\n\n instance.items = [\n instance.createListItem(instance.value, {\n active: true\n }),\n instance.createListItem(beforeValue, {\n active: false\n })\n ];\n\n appendChildren(el, instance.items.map(item => item.render()));\n}\n","import { createElement, appendChildren } from '../../Helpers/Template';\n\nexport default function(el, instance) {\n const className = instance.active === true ? 'active' : (\n instance.active === false ? 'before' : null\n );\n\n el.classList.add(className);\n\n appendChildren(el, [\n createElement('div', [\n createElement('div', instance.value, {class: 'top'}),\n createElement('div', instance.value, {class: 'bottom'})\n ], {class: 'flip-clock-list-item-inner'})\n ]);\n}\n","export default function(el, instance) {\n instance.createDivider().mount(el, el.childNodes[1]);\n instance.createDivider().mount(el, el.childNodes[3]);\n\n if(instance.face.showSeconds) {\n instance.createDivider().mount(el, el.childNodes[5]);\n }\n\n if(instance.face.showLabels) {\n instance.createLabel('days').mount(el.childNodes[0]);\n instance.createLabel('hours').mount(el.childNodes[2]);\n instance.createLabel('minutes').mount(el.childNodes[4]);\n\n if(instance.face.showSeconds) {\n instance.createLabel('seconds').mount(el.childNodes[6]);\n }\n }\n}\n","export default function(el, instance) {\n instance.createDivider().mount(el, el.childNodes[1]);\n\n if(instance.face.showSeconds) {\n instance.createDivider().mount(el, el.childNodes[3]);\n }\n \n if(instance.face.showLabels) {\n instance.createLabel('hours').mount(el.childNodes[0]);\n instance.createLabel('minutes').mount(el.childNodes[2]);\n\n if(instance.face.showSeconds) {\n instance.createLabel('seconds').mount(el.childNodes[4]);\n }\n }\n}\n","export default function(el, instance) {\n if(instance.face.showSeconds) {\n instance.createDivider().mount(el, el.childNodes[1]);\n }\n\n if(instance.face.showLabels) {\n instance.createLabel('minutes').mount(el.childNodes[0]);\n\n if(instance.face.showSeconds) {\n instance.createLabel('seconds').mount(el.childNodes[2]);\n }\n }\n}\n","export default function(el, instance) {\n instance.createDivider().mount(el, el.childNodes[1]);\n\n if(instance.face.showSeconds) {\n instance.createDivider().mount(el, el.childNodes[3]);\n }\n \n if(instance.face.showLabels) {\n instance.createLabel('hours').mount(el.childNodes[0]);\n instance.createLabel('minutes').mount(el.childNodes[2]);\n\n if(instance.face.showSeconds) {\n instance.createLabel('seconds').mount(el.childNodes[4]);\n }\n }\n\n}\n","import TwentyFourHourClock from './TwentyFourHourClock';\n\nexport default function(el, instance) {\n TwentyFourHourClock(el, instance);\n\n if(instance.face.showMeridium && instance.face.meridium) {\n const label = instance.createLabel(instance.face.meridium);\n const parent = el.childNodes[el.childNodes.length - 1];\n\n label.mount(parent).classList.add('flip-clock-meridium');\n }\n}\n","export default function(el, instance) {\n instance.createDivider().mount(el, el.childNodes[1]);\n instance.createDivider().mount(el, el.childNodes[3]);\n instance.createDivider().mount(el, el.childNodes[5]);\n\n if(instance.face.showSeconds) {\n instance.createDivider().mount(el, el.childNodes[7]);\n }\n\n if(instance.face.showLabels) {\n instance.createLabel('weeks').mount(el.childNodes[0]);\n instance.createLabel('days').mount(el.childNodes[2]);\n instance.createLabel('hours').mount(el.childNodes[4]);\n instance.createLabel('minutes').mount(el.childNodes[6]);\n\n if(instance.face.showSeconds) {\n instance.createLabel('seconds').mount(el.childNodes[8]);\n }\n }\n}\n","export default function(el, instance) {\n instance.createDivider().mount(el, el.childNodes[1]);\n instance.createDivider().mount(el, el.childNodes[3]);\n instance.createDivider().mount(el, el.childNodes[5]);\n instance.createDivider().mount(el, el.childNodes[7]);\n\n if(instance.face.showSeconds) {\n instance.createDivider().mount(el, el.childNodes[9]);\n }\n\n if(instance.face.showLabels) {\n instance.createLabel('years').mount(el.childNodes[0]);\n instance.createLabel('weeks').mount(el.childNodes[2]);\n instance.createLabel('days').mount(el.childNodes[4]);\n instance.createLabel('hours').mount(el.childNodes[6]);\n instance.createLabel('minutes').mount(el.childNodes[8]);\n\n if(instance.face.showSeconds) {\n instance.createLabel('seconds').mount(el.childNodes[10]);\n }\n }\n}\n","import Divider from './Divider';\nimport FlipClock from './FlipClock';\nimport Group from './Group';\nimport Label from './Label';\nimport List from './List';\nimport ListItem from './ListItem';\nimport * as faces from './Faces';\n\nexport default {\n Divider,\n FlipClock,\n Group,\n Label,\n List,\n ListItem,\n faces\n};\n","import { Counter } from '../Faces';\nimport { Original } from '../Themes';\nimport { English } from '../Languages';\n\n/**\n * @alias DefaultValues\n * @type {object}\n * @memberof module:Config/DefaultValues\n */\nexport default {\n face: Counter,\n theme: Original,\n language: English\n};\n","import Face from './Face';\nimport List from './List';\nimport Group from './Group';\nimport Label from './Label';\nimport Timer from './Timer';\nimport Divider from './Divider';\nimport * as Faces from '../Faces';\nimport FaceValue from './FaceValue';\nimport DomComponent from './DomComponent';\nimport validate from '../Helpers/Validate';\nimport DefaultValues from '../Config/DefaultValues';\nimport ConsoleMessages from '../Config/ConsoleMessages';\nimport { flatten, isNull, isString, isObject, isUndefined, isFunction, error } from '../Helpers/Functions';\n\nexport default class FlipClock extends DomComponent {\n \n /**\n * Create a new `FlipClock` instance.\n *\n * @class FlipClock\n * @extends DomComponent\n * @param {HTMLElement} el - The HTML element used to bind clock DOM node.\n * @param {*} value - The value that is passed to the clock face.\n * @param {object|undefined} attributes - {@link FlipClock.Options} passed an object with key/value.\n */\n \n /**\n * @namespace FlipClock.Options\n * @classdesc An object of key/value pairs that will be used to set the attributes.\n * \n * ##### Example:\n * \n * {\n * face: 'DayCounter',\n * language: 'es',\n * timer: Timer.make(500)\n * }\n * \n * @property {string|Face} [face={@link Faces.DayCounter}] - The clock's {@link Face} instance.\n * @property {number} [interval=1000] - The clock's interval rate (in milliseconds).\n * @property {object} [theme={@link Themes.Original}] - The clock's theme.\n * @property {string|object} [language={@link Languages.English}] - The clock's language.\n * @property {Timer} [timer={@link Timer}] - The clock's timer.\n */\n \n constructor(el, value, attributes) {\n if(!validate(el, HTMLElement)) {\n error(ConsoleMessages.element);\n }\n\n if(isObject(value) && !attributes) {\n attributes = value;\n value = undefined;\n }\n\n const face = attributes.face || DefaultValues.face;\n\n delete attributes.face;\n\n super(Object.assign({\n originalValue: value,\n theme: DefaultValues.theme,\n language: DefaultValues.language,\n timer: Timer.make(attributes.interval || 1000),\n }, attributes));\n\n if(!this.face) {\n this.face = face;\n }\n\n this.mount(el);\n }\n\n /**\n * The clock `Face`.\n *\n * @type {Face}\n */\n get face() {\n return this.$face;\n }\n\n set face(value) {\n if(!validate(value, [Face, 'string', 'function'])) {\n error(ConsoleMessages.face);\n }\n\n this.$face = (Faces[value] || value).make(Object.assign(this.getPublicAttributes(), {\n originalValue: this.face ? this.face.originalValue : undefined\n }));\n\n this.$face.initialized(this);\n\n if(this.value) {\n this.$face.value = this.face.createFaceValue(this, this.value.value);\n }\n else if(!this.value) {\n this.value = this.originalValue;\n }\n\n this.el && this.render();\n }\n\n /**\n * The `stopAt` attribute.\n *\n * @type {*}\n */\n get stopAt() {\n return isFunction(this.$stopAt) ? this.$stopAt(this) : this.$stopAt;\n }\n\n set stopAt(value) {\n this.$stopAt = value;\n }\n\n /**\n * The `timer` instance.\n *\n * @type {Timer}\n */\n get timer() {\n return this.$timer;\n }\n\n set timer(timer) {\n if(!validate(timer, Timer)) {\n error(ConsoleMessages.timer);\n }\n\n this.$timer = timer;\n }\n\n /**\n * Helper method to The clock's `FaceValue` instance.\n *\n * @type {FaceValue|null}\n */\n get value() {\n return this.face ? this.face.value : null;\n }\n\n set value(value) {\n if(!this.face) {\n throw new Error('A face must be set before setting a value.');\n }\n\n if(value instanceof FaceValue) {\n this.face.value = value;\n }\n else if(this.value) {\n this.face.value = this.face.value.clone(value);\n }\n else {\n this.face.value = this.face.createFaceValue(this, value);\n }\n\n this.el && this.render();\n }\n\n /**\n * The `originalValue` attribute.\n *\n * @type {*}\n */\n get originalValue() {\n if(isFunction(this.$originalValue) && !this.$originalValue.name) {\n return this.$originalValue();\n }\n\n if(!isUndefined(this.$originalValue) && !isNull(this.$originalValue)) {\n return this.$originalValue;\n }\n\n return this.face ? this.face.defaultValue() : undefined;\n }\n\n set originalValue(value) {\n this.$originalValue = value;\n }\n\n /**\n * Mount the clock to the parent DOM element.\n *\n * @param {HTMLElement} el - The parent `HTMLElement`.\n * @return {FlipClock} - The `FlipClock` instance.\n */\n mount(el) {\n super.mount(el);\n\n this.face.mounted(this);\n\n return this;\n }\n\n /**\n * Render the clock's DOM nodes.\n *\n * @return {HTMLElement} - The parent `HTMLElement`.\n */\n render() {\n // Call the parent render function\n super.render();\n\n // Check to see if the face has a render function defined in the theme.\n // This allows a face to completely re-render or add to the theme.\n // This allows face specific interfaces for a theme.\n if(this.theme.faces[this.face.name]) {\n this.theme.faces[this.face.name](this.el, this);\n }\n\n // Pass the clock instance to the rendered() function on the face.\n // This allows global modifications to the rendered templates not\n // theme specific.\n this.face.rendered(this);\n\n // Return the rendered `HTMLElement`.\n return this.el;\n }\n\n /**\n * Start the clock.\n *\n * @param {Function} fn - The interval callback.\n * @return {FlipClock} - The `FlipClock` instance.\n */\n start(fn) {\n if(!this.timer.started) {\n this.value = this.originalValue;\n }\n\n isUndefined(this.face.stopAt) && (this.face.stopAt = this.stopAt);\n isUndefined(this.face.originalValue) && (this.face.originalValue = this.originalValue);\n\n this.timer.start(() => {\n this.face.interval(this, fn);\n });\n\n this.face.started(this);\n\n return this.emit('start');\n }\n\n /**\n * Stop the clock.\n *\n * @param {Function} fn - The stop callback.\n * @return {FlipClock} - The `FlipClock` instance.\n */\n stop(fn) {\n this.timer.stop(fn);\n this.face.stopped(this);\n\n return this.emit('stop');\n }\n\n /**\n * Reset the clock to the original value.\n *\n * @param {Function} fn - The interval callback.\n * @return {FlipClock} - The `FlipClock` instance.\n */\n reset(fn) {\n this.value = this.originalValue;\n this.timer.reset(() => this.interval(this, fn));\n this.face.reset(this);\n\n return this.emit('reset');\n }\n\n /**\n * Helper method to increment the clock's value.\n *\n * @param {*|undefined} value - Increment the clock by the specified value.\n * If no value is passed, then the default increment is determined by\n * the Face, which is usually `1`.\n * @return {FlipClock} - The `FlipClock` instance.\n */\n increment(value) {\n this.face.increment(this, value);\n\n return this;\n }\n\n /**\n * Helper method to decrement the clock's value.\n *\n * @param {*|undefined} value - Decrement the clock by the specified value.\n * If no value is passed, then the default decrement is determined by\n * the `Face`, which is usually `1`.\n * @return {FlipClock} - The `FlipClock` instance.\n */\n decrement(value) {\n this.face.decrement(this, value);\n\n return this;\n }\n\n /**\n * Helper method to instantiate a new `Divider`.\n *\n * @param {object|undefined} [attributes] - The attributes passed to the\n * `Divider` instance.\n * @return {Divider} - The instantiated Divider.\n */\n createDivider(attributes) {\n return Divider.make(Object.assign({\n theme: this.theme,\n language: this.language\n }, attributes));\n }\n\n /**\n * Helper method to instantiate a new `List`.\n *\n * @param {*} value - The `List` value.\n * @param {object|undefined} [attributes] - The attributes passed to the\n * `List` instance.\n * @return {List} - The instantiated `List`.\n */\n createList(value, attributes) {\n return List.make(value, Object.assign({\n theme: this.theme,\n language: this.language\n }, attributes));\n }\n\n /**\n * Helper method to instantiate a new `Label`.\n *\n * @param {*} value - The `Label` value.\n * @param {object|undefined} [attributes] - The attributes passed to the\n * `Label` instance.\n * @return {Label} - The instantiated `Label`.\n */\n createLabel(value, attributes) {\n return Label.make(value, Object.assign({\n theme: this.theme,\n language: this.language\n }, attributes));\n }\n\n /**\n * Helper method to instantiate a new `Group`.\n *\n * @param {array} items - An array of `List` items to group.\n * @param {Group|undefined} [attributes] - The attributes passed to the\n * `Group` instance.\n * @return {Group} - The instantiated `Group`.\n */\n createGroup(items, attributes) {\n return Group.make(items, Object.assign({\n theme: this.theme,\n language: this.language\n }, attributes));\n }\n\n /**\n * The `defaults` attribute.\n *\n * @type {object}\n */\n static get defaults() {\n return DefaultValues;\n }\n\n /**\n * Define the name of the class.\n *\n * @return {string}\n */\n static defineName() {\n return 'FlipClock';\n }\n\n /**\n * Helper method to set the default `Face` value.\n *\n * @param {Face} value - The default `Face` class.This should be a\n * constructor.\n * @return {void}\n */\n static setDefaultFace(value) {\n if(!validate(value, Face)) {\n error(ConsoleMessages.face);\n }\n\n DefaultValues.face = value;\n }\n\n /**\n * Helper method to set the default theme.\n *\n * @param {object} value - The default theme.\n * @return {void}\n */\n static setDefaultTheme(value) {\n if(!validate(value, 'object')) {\n error(ConsoleMessages.theme);\n }\n\n DefaultValues.theme = value;\n }\n\n /**\n * Helper method to set the default language.\n *\n * @param {object} value - The default language.\n * @return {void}\n */\n static setDefaultLanguage(value) {\n if(!validate(value, 'object')) {\n error(ConsoleMessages.language);\n }\n\n DefaultValues.language = value;\n }\n\n}\n"],"names":["error","string","Error","callback","fn","isFunction","args","call","round","value","isNegativeZero","isNegative","Math","ceil","floor","toString","noop","isUndefined","isNull","chain","before","after","concatMap","x","map","reduce","y","concat","flatten","deepFlatten","Array","isArray","length","Infinity","isConstructor","Function","name","isString","isObject","type","isNumber","isNaN","kebabCase","replace","toLowerCase","Component","attributes","setAttribute","Object","assign","events","key","forEach","event","apply","push","filter","off","on","hasOwnProperty","getOwnPropertyNames","getAttribute","keys","getAttributes","match","obj","setAttributes","values","i","constructor","defineName","$events","digitize","options","minimumDigits","prependLeadingZero","prepend","number","shouldPrependZero","split","digits","arr","min","unshift","RANGES","max","format","parseFloat","findRange","char","code","charCodeAt","stringFromCharCodeBy","String","fromCharCode","next","converted","range","join","prev","FaceValue","getPublicAttributes","$digits","$value","validate","success","arg","className","items","theme","language","date","face","element","faceValue","timer","Face","undefined","autoStart","countdown","animationRate","defaultAttributes","defaultValue","instance","decrement","increment","shouldStop","stop","emit","stopAt","amount","isStopped","window","requestAnimationFrame","start","make","defaultDataType","createFaceValue","$stopAt","$originalValue","dictionary","aliases","LANGUAGES","find","indexOf","translate","from","lang","swap","subject","existing","parentNode","replaceChild","el","appendChildren","children","child","HTMLElement","appendChild","createElement","document","innerHTML","DomComponent","parent","render","insertBefore","$el","ConsoleMessages","$parent","$theme","$language","Divider","ListItem","List","item","$items","Group","Label","label","Timer","interval","count","handle","started","running","Date","lastLoop","now","loop","isRunning","setTimeout","cancelAnimationFrame","getTime","Counter","MinuteCounter","showSeconds","showLabels","diff","originalValue","getMinutes","getSeconds","a","b","getTotalSeconds","totalSeconds","abs","HourCounter","data","getHours","DayCounter","getDays","TwentyFourHourClock","groups","offset","TwelveHourClock","showMeridium","hours","meridium","WeekCounter","getWeeks","YearCounter","getYears","index","childNodes","querySelector","parts","group","groupEl","querySelectorAll","lists","listEl","listValue","createList","domValue","delay","createGroup","nodes","t","beforeValue","classList","add","style","animationDelay","animationDuration","createListItem","active","createDivider","mount","createLabel","FlipClock","faces","Original","English","DefaultValues","mounted","rendered","stopped","reset","$face","Faces","initialized","$timer","clone"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAAA;;;;;;;;;IASA;;;;;;;;AAQA,IAAO,SAASA,KAAT,CAAeC,MAAf,EAAuB;IAC1B,QAAMC,KAAK,CAACD,MAAD,CAAX;IACH;IAED;;;;;;;;;;;AAUA,IAAO,SAASE,QAAT,CAAkBC,EAAlB,EAA+B;IAClC,MAAGC,UAAU,CAACD,EAAD,CAAb,EAAmB;IAAA,sCADSE,IACT;IADSA,MAAAA,IACT;IAAA;;IACf,WAAOF,EAAE,CAACG,IAAH,OAAAH,EAAE,GAAM,IAAN,SAAeE,IAAf,EAAT;IACH;IACJ;IAED;;;;;;;;;AAQA,IAAO,SAASE,KAAT,CAAeC,KAAf,EAAsB;IACzB,SAAOC,cAAc,CACjBD,KAAK,GAAGE,UAAU,CAACF,KAAD,CAAV,GAAoBG,IAAI,CAACC,IAAL,CAAUJ,KAAV,CAApB,GAAuCG,IAAI,CAACE,KAAL,CAAWL,KAAX,CAD9B,CAAd,GAEH,CAAC,MAAMA,KAAP,EAAcM,QAAd,EAFG,GAEwBN,KAF/B;IAGH;IAED;;;;;;;;;AAQA,IAAO,SAASO,IAAT,CAAcP,KAAd,EAAqB;IACxB,SAAO,CAACQ,WAAW,CAACR,KAAD,CAAZ,IAAuB,CAACS,MAAM,CAACT,KAAD,CAArC;IACH;IAED;;;;;;;;;;;AAUA,IAAO,SAASU,KAAT,CAAeC,MAAf,EAAuBC,KAAvB,EAA8B;IACjC,SAAO;IAAA,WAAMA,KAAK,CAACD,MAAM,EAAP,CAAX;IAAA,GAAP;IACH;IAED;;;;;;;;;AAQA,IAAO,SAASE,SAAT,CAAmBlB,EAAnB,EAAuB;IAC1B,SAAO,UAAAmB,CAAC,EAAI;IACR,WAAOA,CAAC,CAACC,GAAF,CAAMpB,EAAN,EAAUqB,MAAV,CAAiB,UAACF,CAAD,EAAIG,CAAJ;IAAA,aAAUH,CAAC,CAACI,MAAF,CAASD,CAAT,CAAV;IAAA,KAAjB,EAAwC,EAAxC,CAAP;IACH,GAFD;IAGH;IAED;;;;;;;;;AAQA,IAAO,SAASE,OAAT,CAAiBnB,KAAjB,EAAwB;IAC3B,SAAOa,SAAS,CAAC,UAAAb,KAAK;IAAA,WAAIA,KAAJ;IAAA,GAAN,CAAT,CAA0BA,KAA1B,CAAP;IACH;IAED;;;;;;;;;AAQA,IAAO,SAASoB,WAAT,CAAqBN,CAArB,EAAwB;IAC3B,SAAOD,SAAS,CAAC,UAAAC,CAAC;IAAA,WAAIO,KAAK,CAACC,OAAN,CAAcR,CAAd,IAAmBM,WAAW,CAAEN,CAAF,CAA9B,GAAqCA,CAAzC;IAAA,GAAF,CAAT,CAAuDA,CAAvD,CAAP;IACH;AAED,IAYA;;;;;;;;;AAQA,IAAO,SAASS,MAAT,CAAgBvB,KAAhB,EAAuB;IAC1B,SAAOoB,WAAW,CAACpB,KAAD,CAAX,CAAmBuB,MAA1B;IACH;IAED;;;;;;;;;AAQA,IAAO,SAAStB,cAAT,CAAwBD,KAAxB,EAA+B;IAClC,SAAO,IAAIG,IAAI,CAACJ,KAAL,CAAWC,KAAX,CAAJ,KAA0B,CAACwB,QAAlC;IACH;IAED;;;;;;;;;AAQA,IAAO,SAAStB,UAAT,CAAoBF,KAApB,EAA2B;IAC9B,SAAOC,cAAc,CAACD,KAAD,CAAd,IAAyBA,KAAK,GAAG,CAAxC;IACH;IAED;;;;;;;;;AAQA,IAAO,SAASS,MAAT,CAAgBT,KAAhB,EAAuB;IAC1B,SAAOA,KAAK,KAAK,IAAjB,CAD0B;IAE7B;IAED;;;;;;;;;AAQA,IAAO,SAASQ,WAAT,CAAqBR,KAArB,EAA4B;IAC/B,SAAO,OAAOA,KAAP,KAAiB,WAAxB;IACH;IAED;;;;;;;;;AAQA,IAAO,SAASyB,aAAT,CAAuBzB,KAAvB,EAA8B;IACjC,SAAQA,KAAK,YAAY0B,QAAlB,IAA+B,CAAC,CAAC1B,KAAK,CAAC2B,IAA9C;IACH;IAED;;;;;;;;;AAQA,IAAO,SAASC,QAAT,CAAkB5B,KAAlB,EAAyB;IAC5B,SAAO,OAAOA,KAAP,KAAiB,QAAxB;IACH;IAED;;;;;;;;;AAQA,IAAO,SAASsB,OAAT,CAAiBtB,KAAjB,EAAwB;IAC3B,SAAOA,KAAK,YAAYqB,KAAxB;IACH;IAED;;;;;;;;;AAQA,IAAO,SAASQ,QAAT,CAAkB7B,KAAlB,EAAyB;IAC5B,MAAM8B,IAAI,WAAU9B,KAAV,CAAV;;IACA,SAAOA,KAAK,IAAI,IAAT,IAAiB,CAACsB,OAAO,CAACtB,KAAD,CAAzB,KACH8B,IAAI,IAAI,QAAR,IAAoBA,IAAI,IAAI,UADzB,CAAP;IAGH;IAED;;;;;;;;;AAQA,IAAO,SAASlC,UAAT,CAAoBI,KAApB,EAA2B;IAC9B,SAAOA,KAAK,YAAY0B,QAAxB;IACH;IAED;;;;;;;;;AAQA,IAAO,SAASK,QAAT,CAAkB/B,KAAlB,EAAyB;IAC5B,SAAO,CAACgC,KAAK,CAAChC,KAAD,CAAb;IACH;IAED;;;;;;;;;AAQA,IAAO,SAASiC,SAAT,CAAmBzC,MAAnB,EAA2B;IAC9B,SAAOA,MAAM,CAAC0C,OAAP,CAAe,iBAAf,EAAkC,OAAlC,EAA2CA,OAA3C,CAAmD,MAAnD,EAA2D,GAA3D,EAAgEC,WAAhE,EAAP;IACH;;QC9QoBC;;;IAEjB;;;;;;IAMA,qBAAYC,UAAZ,EAAwB;IAAA;;IACpB,SAAKC,YAAL,CAAkBC,MAAM,CAACC,MAAP,CAAc;IAC5BC,MAAAA,MAAM,EAAE;IADoB,KAAd,EAEfJ,UAFe,CAAlB;IAGH;IAED;;;;;;;;;;IA0BA;;;;;;6BAMKK,KAAc;IAAA;;IAAA,wCAAN7C,IAAM;IAANA,QAAAA,IAAM;IAAA;;IACf,UAAG,KAAK4C,MAAL,CAAYC,GAAZ,CAAH,EAAqB;IACjB,aAAKD,MAAL,CAAYC,GAAZ,EAAiBC,OAAjB,CAAyB,UAAAC,KAAK,EAAI;IAC9BA,UAAAA,KAAK,CAACC,KAAN,CAAY,KAAZ,EAAkBhD,IAAlB;IACH,SAFD;IAGH;;IAED,aAAO,IAAP;IACH;IAED;;;;;;;;;;;;2BASG6C,KAAK/C,IAAkB;AAAA;IACtB,UAAG,CAAC,KAAK8C,MAAL,CAAYC,GAAZ,CAAJ,EAAsB;IAClB,aAAKD,MAAL,CAAYC,GAAZ,IAAmB,EAAnB;IACH;;IAED,WAAKD,MAAL,CAAYC,GAAZ,EAAiBI,IAAjB,CAAsBnD,EAAtB;IAEA,aAAO,IAAP;IACH;IAED;;;;;;;;;;;;;4BAUI+C,KAAK/C,IAAI;IACT,UAAG,KAAK8C,MAAL,CAAYC,GAAZ,KAAoB/C,EAAvB,EAA2B;IACvB,aAAK8C,MAAL,CAAYC,GAAZ,IAAmB,KAAKD,MAAL,CAAYC,GAAZ,EAAiBK,MAAjB,CAAwB,UAAAH,KAAK,EAAI;IAChD,iBAAOA,KAAK,KAAKjD,EAAjB;IACH,SAFkB,CAAnB;IAGH,OAJD,MAKK;IACD,aAAK8C,MAAL,CAAYC,GAAZ,IAAmB,EAAnB;IACH;;IAED,aAAO,IAAP;IACH;IAED;;;;;;;;;;6BAOKA,KAAK/C,IAAI;IAAA;;IACVA,MAAAA,EAAE,GAAGe,KAAK,CAACf,EAAD,EAAK;IAAA,eAAM,MAAI,CAACqD,GAAL,CAASN,GAAT,EAAc/C,EAAd,CAAN;IAAA,OAAL,CAAV;IAEA,aAAO,KAAKsD,EAAL,CAAQP,GAAR,EAAa/C,EAAb,EAAiB,IAAjB,CAAP;IACH;IAED;;;;;;;;;qCAMa+C,KAAK;IACd,aAAO,KAAKQ,cAAL,CAAoBR,GAApB,IAA2B,KAAKA,GAAL,CAA3B,GAAuC,IAA9C;IACH;IAED;;;;;;;;wCAKgB;IAAA;;IACZ,UAAML,UAAU,GAAG,EAAnB;IAEAE,MAAAA,MAAM,CAACY,mBAAP,CAA2B,IAA3B,EAAiCR,OAAjC,CAAyC,UAAAD,GAAG,EAAI;IAC5CL,QAAAA,UAAU,CAACK,GAAD,CAAV,GAAkB,MAAI,CAACU,YAAL,CAAkBV,GAAlB,CAAlB;IACH,OAFD;IAIA,aAAOL,UAAP;IACH;IAED;;;;;;;;;8CAMsB;IAAA;;IAClB,aAAOE,MAAM,CAACc,IAAP,CAAY,KAAKC,aAAL,EAAZ,EACFP,MADE,CACK,UAAAL,GAAG,EAAI;IACX,eAAO,CAACA,GAAG,CAACa,KAAJ,CAAU,KAAV,CAAR;IACH,OAHE,EAIFvC,MAJE,CAIK,UAACwC,GAAD,EAAMd,GAAN,EAAc;IAClBc,QAAAA,GAAG,CAACd,GAAD,CAAH,GAAW,MAAI,CAACU,YAAL,CAAkBV,GAAlB,CAAX;IACA,eAAOc,GAAP;IACH,OAPE,EAOA,EAPA,CAAP;IAQH;IAED;;;;;;;;;;qCAOad,KAAK1C,OAAO;IACrB,UAAG6B,QAAQ,CAACa,GAAD,CAAX,EAAkB;IACd,aAAKe,aAAL,CAAmBf,GAAnB;IACH,OAFD,MAGK;IACD,aAAKA,GAAL,IAAY1C,KAAZ;IACH;IACJ;IAED;;;;;;;;;sCAMc0D,QAAQ;IAClB,WAAI,IAAMC,CAAV,IAAeD,MAAf,EAAuB;IACnB,aAAKpB,YAAL,CAAkBqB,CAAlB,EAAqBD,MAAM,CAACC,CAAD,CAA3B;IACH;IACJ;IAED;;;;;;;;;oCAMShE,IAAI;IACT,aAAOD,QAAQ,CAACI,IAAT,CAAc,IAAd,EAAoBH,EAApB,CAAP;IACH;IAED;;;;;;;;;;4BA5KW;IACP,UAAG,EAAE,KAAKiE,WAAL,CAAiBC,UAAjB,YAAuCnC,QAAzC,CAAH,EAAuD;IACnDnC,QAAAA,KAAK,CAAC,mCAAD,CAAL;IACH;;IAED,aAAO,KAAKqE,WAAL,CAAiBC,UAAjB,EAAP;IACH;IAED;;;;;;;;4BAKa;IACT,aAAO,KAAKC,OAAL,IAAgB,EAAvB;IACH;0BAEU9D,OAAO;IACd,WAAK8D,OAAL,GAAe9D,KAAf;IACH;;;+BAgKoB;IAAA,yCAANH,IAAM;IAANA,QAAAA,IAAM;IAAA;;IACjB,wBAAW,IAAX,EAAmBA,IAAnB;IACH;;;;;;IC1ML;;;AAGA,IAGA;;;;;;;;;;;;AAWA,IAAe,SAASkE,QAAT,CAAkB/D,KAAlB,EAAyBgE,OAAzB,EAAkC;IAC7CA,EAAAA,OAAO,GAAGzB,MAAM,CAACC,MAAP,CAAc;IACpByB,IAAAA,aAAa,EAAE,CADK;IAEpBC,IAAAA,kBAAkB,EAAE;IAFA,GAAd,EAGPF,OAHO,CAAV;;IAKA,WAASG,OAAT,CAAiBC,MAAjB,EAAyB;IACrB,QAAMC,iBAAiB,GAAGL,OAAO,CAACE,kBAAR,IACtBE,MAAM,CAAC9D,QAAP,GAAkBgE,KAAlB,CAAwB,EAAxB,EAA4B/C,MAA5B,KAAuC,CAD3C;IAGA,WAAO,CAAC8C,iBAAiB,GAAG,GAAH,GAAS,EAA3B,EAA+BnD,MAA/B,CAAsCkD,MAAtC,CAAP;IACH;;IAED,WAASG,MAAT,CAAgBC,GAAhB,EAAqBC,GAArB,EAA0B;IACtB,QAAMlD,SAAM,GAAGH,WAAW,CAACoD,GAAD,CAAX,CAAiBjD,MAAhC;;IAEA,QAAGA,SAAM,GAAGkD,GAAZ,EAAiB;IACb,WAAI,IAAId,CAAC,GAAG,CAAZ,EAAeA,CAAC,GAAGc,GAAG,GAAGlD,SAAzB,EAAiCoC,CAAC,EAAlC,EAAsC;IAClCa,QAAAA,GAAG,CAAC,CAAD,CAAH,CAAOE,OAAP,CAAe,GAAf;IACH;IACJ;;IAED,WAAOF,GAAP;IACH;;IAED,SAAOD,MAAM,CAACpD,OAAO,CAAC,CAACnB,KAAD,CAAD,CAAP,CAAiBe,GAAjB,CAAqB,UAAAqD,MAAM,EAAI;IACzC,WAAOjD,OAAO,CAACC,WAAW,CAAC,CAACgD,MAAD,CAAD,CAAX,CAAsBrD,GAAtB,CAA0B,UAAAqD,MAAM,EAAI;IAC/C,aAAOD,OAAO,CAACC,MAAD,CAAP,CAAgBE,KAAhB,CAAsB,EAAtB,CAAP;IACH,KAFc,CAAD,CAAd;IAGH,GAJa,CAAD,EAITN,OAAO,CAACC,aAAR,IAAyB,CAJhB,CAAb;IAKH;;IC/CD;;;;IAIA;;;;;;IAMA,IAAMU,MAAM,GAAG,CAAC;IACZ;IACAF,EAAAA,GAAG,EAAE,EAFO;IAGZG,EAAAA,GAAG,EAAE;IAHO,CAAD,EAIb;IACE;IACAH,EAAAA,GAAG,EAAE,EAFP;IAGEG,EAAAA,GAAG,EAAE;IAHP,CAJa,EAQb;IACE;IACAH,EAAAA,GAAG,EAAE,EAFP;IAGEG,EAAAA,GAAG,EAAE;IAHP,CARa,CAAf;IAcA;;;;;;;;;;;;IAWA,SAASC,MAAT,CAAgBrF,MAAhB,EAAwBsC,IAAxB,EAA8B;IAC1B,UAAOA,IAAP;IACI,SAAK,QAAL;IACI,aAAOgD,UAAU,CAACtF,MAAD,CAAjB;IAFR;;IAKA,SAAOA,MAAP;IACH;IAED;;;;;;;;;;;;;;IAYA,SAASuF,SAAT,CAAmBC,KAAnB,EAAyB;IACrB,OAAI,IAAMrB,CAAV,IAAegB,MAAf,EAAuB;IACnB,QAAMM,IAAI,GAAGD,KAAI,CAAC1E,QAAL,GAAgB4E,UAAhB,CAA2B,CAA3B,CAAb;;IAEA,QAAGP,MAAM,CAAChB,CAAD,CAAN,CAAUc,GAAV,IAAiBQ,IAAjB,IAAyBN,MAAM,CAAChB,CAAD,CAAN,CAAUiB,GAAV,IAAiBK,IAA7C,EAAmD;IAC/C,aAAON,MAAM,CAAChB,CAAD,CAAb;IACH;IACJ;;IAED,SAAO,IAAP;IACH;IAED;;;;;;;;;;;;;IAWA,SAASwB,oBAAT,CAA8BH,MAA9B,EAAoCrF,EAApC,EAAwC;IACpC,SAAOyF,MAAM,CAACC,YAAP,CACH1F,EAAE,CAACoF,SAAS,CAACC,MAAD,CAAV,EAAkBA,MAAI,CAACE,UAAL,CAAgB,CAAhB,CAAlB,CADC,CAAP;IAGH;IAED;;;;;;;;;;;;AAUA,IAAO,SAASI,IAAT,CAActF,KAAd,EAAqB;IACxB,MAAMuF,SAAS,GAAIvF,KAAD,CACbM,QADa,GAEbgE,KAFa,CAEP,EAFO,EAGbvD,GAHa,CAGT,UAAAiE,MAAI;IAAA,WAAIG,oBAAoB,CAACH,MAAD,EAAO,UAACQ,KAAD,EAAQP,IAAR,EAAiB;IACrD,aAAO,CAACO,KAAD,IAAUP,IAAI,GAAGO,KAAK,CAACZ,GAAvB,GAA6BK,IAAI,GAAG,CAApC,GAAwCO,KAAK,CAACf,GAArD;IACH,KAFgC,CAAxB;IAAA,GAHK,EAMbgB,IANa,CAMR,EANQ,CAAlB;IAQA,SAAOZ,MAAM,CAACU,SAAD,UAAmBvF,KAAnB,EAAb;IACH;IAED;;;;;;;;;;;AAUA,IAAO,SAAS0F,IAAT,CAAc1F,KAAd,EAAqB;IACxB,MAAMuF,SAAS,GAAIvF,KAAD,CACbM,QADa,GAEbgE,KAFa,CAEP,EAFO,EAGbvD,GAHa,CAGT,UAAAiE,MAAI;IAAA,WAAIG,oBAAoB,CAACH,MAAD,EAAO,UAACQ,KAAD,EAAQP,IAAR,EAAiB;IACrD,aAAO,CAACO,KAAD,IAAUP,IAAI,GAAGO,KAAK,CAACf,GAAvB,GAA6BQ,IAAI,GAAG,CAApC,GAAwCO,KAAK,CAACZ,GAArD;IACH,KAFgC,CAAxB;IAAA,GAHK,EAMba,IANa,CAMR,EANQ,CAAlB;IAQA,SAAOZ,MAAM,CAACU,SAAD,UAAmBvF,KAAnB,EAAb;IACH;;QC1HoB2F;;;;;IAEjB;;;;;;;;;;IAUA,qBAAY3F,KAAZ,EAAmBqC,UAAnB,EAA+B;IAAA;;IAAA;;IAC3B,mFAAME,MAAM,CAACC,MAAP,CAAc;IAChBqC,MAAAA,MAAM,EAAE,gBAAA7E,KAAK;IAAA,eAAIA,KAAJ;IAAA,OADG;IAEhBkE,MAAAA,kBAAkB,EAAE,IAFJ;IAGhBD,MAAAA,aAAa,EAAE;IAHC,KAAd,EAIH5B,UAJG,CAAN;;IAMA,QAAG,CAAC,MAAKrC,KAAT,EAAgB;IACZ,YAAKA,KAAL,GAAaA,KAAb;IACH;;IAT0B;IAU9B;IAED;;;;;;;;;;IA+BA;;;;;;;;;;;;;;;sBAKQ;IACJ,aAAOgC,KAAK,CAAC,KAAKhC,KAAN,CAAZ;IACH;IAED;;;;;;;;sCAKW;IACP,aAAO+B,QAAQ,EAAf;IACH;IAED;;;;;;;;;;;;8BASM/B,OAAOqC,YAAY;IACrB,aAAO,IAAI,KAAKuB,WAAT,CAAqB5D,KAArB,EAA4BuC,MAAM,CAACC,MAAP,CAC/B,KAAKoD,mBAAL,EAD+B,EACHvD,UADG,CAA5B,CAAP;IAGH;IAED;;;;;;;;4BA3Da;IACT,aAAO,KAAKwD,OAAZ;IACH;0BAEU7F,OAAO;IACd,WAAK6F,OAAL,GAAe7F,KAAf;IACA,WAAKiE,aAAL,GAAqB9D,IAAI,CAACyE,GAAL,CAAS,KAAKX,aAAd,EAA6B1C,MAAM,CAACvB,KAAD,CAAnC,CAArB;IACH;IAED;;;;;;;;4BAKY;IACR,aAAO,KAAK8F,MAAZ;IACH;0BAES9F,OAAO;IACb,WAAK8F,MAAL,GAAc9F,KAAd;IACA,WAAKuE,MAAL,GAAcR,QAAQ,CAAC,KAAKc,MAAL,CAAY7E,KAAZ,CAAD,EAAqB;IACvCiE,QAAAA,aAAa,EAAE,KAAKA,aADmB;IAEvCC,QAAAA,kBAAkB,EAAE,KAAKA;IAFc,OAArB,CAAtB;IAIH;;;qCAwCmB;IAChB,aAAO,WAAP;IACH;;;;MA/FkC9B;;ICKvC;;;;;;;;;;AASA,IAAe,SAAS2D,QAAT,CAAkB/F,KAAlB,EAAkC;IAC7C,MAAIgG,OAAO,GAAG,KAAd;;IAD6C,oCAANnG,IAAM;IAANA,IAAAA,IAAM;IAAA;;IAG7CsB,EAAAA,OAAO,CAACtB,IAAD,CAAP,CAAc8C,OAAd,CAAsB,UAAAsD,GAAG,EAAI;IACzB,QAAKxF,MAAM,CAACT,KAAD,CAAN,IAAiBS,MAAM,CAACwF,GAAD,CAAxB,IACCpE,QAAQ,CAACoE,GAAD,CAAR,IAAkBjG,KAAK,YAAYiG,GADpC,IAECrG,UAAU,CAACqG,GAAD,CAAV,IAAmB,CAACxE,aAAa,CAACwE,GAAD,CAAjC,IAA0CA,GAAG,CAACjG,KAAD,CAAH,KAAe,IAF1D,IAGC4B,QAAQ,CAACqE,GAAD,CAAR,IAAkB,QAAOjG,KAAP,MAAiBiG,GAHxC,EAG+C;IAC3CD,MAAAA,OAAO,GAAG,IAAV;IACH;IACJ,GAPD;IASA,SAAOA,OAAP;IACH;;IChCD;;;;;AAKA,0BAAe;IACXE,EAAAA,SAAS,EAAE,iCADA;IAEXC,EAAAA,KAAK,EAAE,sCAFI;IAGXC,EAAAA,KAAK,EAAE,uCAHI;IAIXC,EAAAA,QAAQ,EAAE,iCAJC;IAKXC,EAAAA,IAAI,EAAE,0CALK;IAMXC,EAAAA,IAAI,EAAE,+CANK;IAOXC,EAAAA,OAAO,EAAE,mDAPE;IAQXC,EAAAA,SAAS,EAAE,oDARA;IASXC,EAAAA,KAAK,EAAE;IATI,CAAf;;QCCqBC;;;;;IAEjB;;;;;;;;;;IAUA,gBAAY3G,KAAZ,EAAmBqC,UAAnB,EAA+B;IAAA;;IAAA;;IAC3B,QAAG,EAAErC,KAAK,YAAY2F,SAAnB,KAAiC9D,QAAQ,CAAC7B,KAAD,CAA5C,EAAqD;IACjDqC,MAAAA,UAAU,GAAGrC,KAAb;IACAA,MAAAA,KAAK,GAAG4G,SAAR;IACH;;IAED;;IAEA,UAAKnD,aAAL,CAAmBlB,MAAM,CAACC,MAAP,CAAc;IAC7BqE,MAAAA,SAAS,EAAE,IADkB;IAE7BC,MAAAA,SAAS,EAAE,KAFkB;IAG7BC,MAAAA,aAAa,EAAE;IAHc,KAAd,EAIhB,MAAKC,iBAAL,EAJgB,EAIU3E,UAAU,IAAI,EAJxB,CAAnB;;IAMA,QAAG5B,MAAM,CAACT,KAAD,CAAN,IAAiBQ,WAAW,CAACR,KAAD,CAA/B,EAAwC;IACpCA,MAAAA,KAAK,GAAG,MAAKiH,YAAL,EAAR;IACH;;IAED,QAAGjH,KAAH,EAAU;IACN,YAAKA,KAAL,GAAaA,KAAb;IACH;;IApB0B;IAqB9B;IAED;;;;;;;;;;IAoDA;;;;;;;;;iCASSkH,UAAUvH,IAAI;IACnB,UAAG,KAAKmH,SAAR,EAAmB;IACf,aAAKK,SAAL,CAAeD,QAAf;IACH,OAFD,MAGK;IACD,aAAKE,SAAL,CAAeF,QAAf;IACH;;IAEDxH,MAAAA,QAAQ,CAACI,IAAT,CAAc,IAAd,EAAoBH,EAApB;;IAEA,UAAG,KAAK0H,UAAL,CAAgBH,QAAhB,CAAH,EAA8B;IAC1BA,QAAAA,QAAQ,CAACI,IAAT;IACH;;IAED,aAAO,KAAKC,IAAL,CAAU,UAAV,CAAP;IACH;IAED;;;;;;;;;mCAMWL,UAAU;IACjB,aAAO,CAAC1G,WAAW,CAAC,KAAKgH,MAAN,CAAZ,GAA4B,KAAKA,MAAL,KAAgBN,QAAQ,CAAClH,KAAT,CAAeA,KAA3D,GAAmE,KAA1E;IACH;IAED;;;;;;;;;;+BAOOkH,UAAUlH,OAAO;IACpB,aAAOA,KAAP;IACH;IAED;;;;;;;;uCAKe;;IAIf;;;;;;;;4CAKoB;;IAIpB;;;;;;;;0CAKkB;;IAIlB;;;;;;;;;;;kCAQUkH,UAAUO,QAAQ;;IAI5B;;;;;;;;;;;kCAQUP,UAAUO,QAAQ;;IAI5B;;;;;;;;;gCAMQP,UAAU;;IAIlB;;;;;;;;;gCAMQA,UAAU;;IAIlB;;;;;;;;;8BAMMA,UAAU;;IAIhB;;;;;;;;;oCAMYA,UAAU;;IAItB;;;;;;;;;iCAMSA,UAAU;;IAInB;;;;;;;;;gCAMQA,UAAU;IACd,UAAG,KAAKL,SAAL,IAAkBK,QAAQ,CAACR,KAAT,CAAegB,SAApC,EAA+C;IAC3CC,QAAAA,MAAM,CAACC,qBAAP,CAA6B;IAAA,iBAAMV,QAAQ,CAACW,KAAT,CAAeX,QAAf,CAAN;IAAA,SAA7B;IACH;IACJ;IAED;;;;;;;;;;;wCAQgBA,UAAUlH,OAAO;IAAA;;IAC7B,aAAO2F,SAAS,CAACmC,IAAV,CACHlI,UAAU,CAACI,KAAD,CAAV,IAAqB,CAACA,KAAK,CAAC2B,IAA5B,GAAmC3B,KAAK,EAAxC,GAA6CA,KAD1C,EACiD;IAChDiE,QAAAA,aAAa,EAAE,KAAKA,aAD4B;IAEhDY,QAAAA,MAAM,EAAE,gBAAA7E,KAAK;IAAA,iBAAI,MAAI,CAAC6E,MAAL,CAAYqC,QAAZ,EAAsBlH,KAAtB,CAAJ;IAAA;IAFmC,OADjD,CAAP;IAMH;;;4BA9Nc;IACX,aAAO,KAAK+H,eAAL,EAAP;IACH;IAED;;;;;;;;4BAKY;IACR,aAAO,KAAKjC,MAAZ;IACH;0BAES9F,OAAO;IACb,UAAG,EAAEA,KAAK,YAAY2F,SAAnB,CAAH,EAAkC;IAC9B3F,QAAAA,KAAK,GAAG,KAAKgI,eAAL,CAAqBhI,KAArB,CAAR;IACH;;IAED,WAAK8F,MAAL,GAAc9F,KAAd;IACH;IAED;;;;;;;;4BAKa;IACT,aAAO,KAAKiI,OAAZ;IACH;0BAEUjI,OAAO;IACd,WAAKiI,OAAL,GAAejI,KAAf;IACH;IAED;;;;;;;;4BAKoB;IAChB,aAAO,KAAKkI,cAAZ;IACH;0BAEiBlI,OAAO;IACrB,WAAKkI,cAAL,GAAsBlI,KAAtB;IACH;;;;MArF6BoC;;ICNlC;;;;;;IAMA;;;;;AAKA,IAAO,IAAM+F,UAAU,GAAG;IACtB,WAAY,OADU;IAEtB,YAAY,MAFU;IAGtB,UAAY,MAHU;IAItB,WAAY,OAJU;IAKtB,aAAY,OALU;IAMtB,aAAY;IANU,CAAnB;IASP;;;;;;AAKA,IAAO,IAAMC,OAAO,GAAG,CAAC,IAAD,EAAO,OAAP,EAAgB,QAAhB,CAAhB;;;;;;;ICzBP;;;;;;IAMA;;;;;AAKA,IAAO,IAAMD,YAAU,GAAG;IACtB,WAAU,MADY;IAEtB,YAAW,OAFW;IAGtB,UAAS,MAHa;IAItB,WAAU,OAJY;IAKtB,aAAY,QALU;IAMtB,aAAY;IANU,CAAnB;IASP;;;;;;AAKA,IAAO,IAAMC,SAAO,GAAG,CAAC,IAAD,EAAO,OAAP,EAAgB,SAAhB,CAAhB;;;;;;;ICzBP;;;;;;IAMA;;;;;AAKA,IAAO,IAAMD,YAAU,GAAG;IACtB,WAAY,MADU;IAEtB,YAAY,QAFU;IAGtB,UAAY,KAHU;IAItB,WAAY,QAJU;IAKtB,aAAY,QALU;IAMtB,aAAY;IANU,CAAnB;IASP;;;;;;AAKA,IAAO,IAAMC,SAAO,GAAG,CAAC,IAAD,EAAO,OAAP,EAAgB,IAAhB,EAAsB,OAAtB,EAA+B,OAA/B,CAAhB;;;;;;;ICzBP;;;;;;IAMA;;;;;AAKA,IAAO,IAAMD,YAAU,GAAG;IACzB,WAAY,IADa;IAEzB,YAAY,SAFa;IAGzB,UAAY,MAHa;IAIzB,WAAY,OAJa;IAKzB,aAAY,UALa;IAMzB,aAAY;IANa,CAAnB;IASP;;;;;;AAKA,IAAO,IAAMC,SAAO,GAAG,CAAC,IAAD,EAAO,OAAP,EAAgB,QAAhB,CAAhB;;;;;;;ICzBP;;;;;;IAMA;;;;;AAKA,IAAO,IAAMD,YAAU,GAAG;IACzB,WAAY,OADa;IAEzB,YAAY,QAFa;IAGzB,UAAY,MAHa;IAIzB,WAAY,SAJa;IAKzB,aAAY,SALa;IAMzB,aAAY;IANa,CAAnB;IASP;;;;;;AAKA,IAAO,IAAMC,SAAO,GAAG,CAAC,IAAD,EAAO,OAAP,EAAgB,QAAhB,CAAhB;;;;;;;ICzBP;;;;;;IAMA;;;;;AAKA,IAAO,IAAMD,YAAU,GAAG;IACzB,WAAY,OADa;IAEzB,YAAY,QAFa;IAGzB,UAAY,MAHa;IAIzB,WAAY,OAJa;IAKzB,aAAY,SALa;IAMzB,aAAY;IANa,CAAnB;IASP;;;;;;AAKA,IAAO,IAAMC,SAAO,GAAG,CAAC,IAAD,EAAO,OAAP,EAAgB,SAAhB,CAAhB;;;;;;;ICzBP;;;;;;IAMA;;;;;AAKA,IAAO,IAAMD,YAAU,GAAG;IACzB,WAAY,MADa;IAEzB,YAAY,OAFa;IAGzB,UAAY,MAHa;IAIzB,WAAY,OAJa;IAKzB,aAAY,SALa;IAMzB,aAAY;IANa,CAAnB;IASP;;;;;;AAKA,IAAO,IAAMC,SAAO,GAAG,CAAC,IAAD,EAAO,OAAP,EAAgB,SAAhB,CAAhB;;;;;;;ICzBP;;;;;;IAMA;;;;;AAKA,IAAO,IAAMD,YAAU,GAAG;IACzB,WAAY,KADa;IAEzB,YAAY,KAFa;IAGzB,UAAY,KAHa;IAIzB,WAAY,MAJa;IAKzB,aAAY,OALa;IAMzB,aAAY;IANa,CAAnB;IASP;;;;;;AAKA,IAAO,IAAMC,SAAO,GAAG,CAAC,IAAD,EAAO,OAAP,EAAgB,SAAhB,CAAhB;;;;;;;ICzBP;;;;;;IAMA;;;;;AAKA,IAAO,IAAMD,YAAU,GAAG;IACzB,WAAY,QADa;IAEzB,YAAY,WAFa;IAGzB,UAAY,QAHa;IAIzB,WAAY,QAJa;IAKzB,aAAY,WALa;IAMzB,aAAY;IANa,CAAnB;IASP;;;;;;AAKA,IAAO,IAAMC,SAAO,GAAG,CAAC,IAAD,EAAO,OAAP,EAAgB,SAAhB,CAAhB;;;;;;;ICzBP;;;;;;IAMA;;;;;AAKA,IAAO,IAAMD,YAAU,GAAG;IACtB,WAAY,KADU;IAEtB,YAAY,MAFU;IAGtB,UAAY,OAHU;IAItB,WAAY,QAJU;IAKtB,aAAY,SALU;IAMtB,aAAY;IANU,CAAnB;IASP;;;;;;AAKA,IAAO,IAAMC,SAAO,GAAG,CAAC,IAAD,EAAO,OAAP,EAAgB,QAAhB,CAAhB;;;;;;;ICzBP;;;;;;IAMA;;;;;AAKA,IAAO,IAAMD,aAAU,GAAG;IACzB,WAAY,MADa;IAEzB,YAAY,MAFa;IAGzB,UAAY,MAHa;IAIzB,WAAY,MAJa;IAKzB,aAAY,MALa;IAMzB,aAAY;IANa,CAAnB;IASP;;;;;;AAKA,IAAO,IAAMC,UAAO,GAAG,CAAC,IAAD,EAAO,OAAP,EAAgB,QAAhB,CAAhB;;;;;;;ICzBP;;;;;;IAMA;;;;;AAKA,IAAO,IAAMD,aAAU,GAAG;IACzB,WAAY,IADa;IAEtB,YAAY,OAFU;IAGtB,UAAY,KAHU;IAItB,WAAY,KAJU;IAKtB,aAAY,MALU;IAMtB,aAAY;IANU,CAAnB;IASP;;;;;;AAKA,IAAO,IAAMC,UAAO,GAAG,CAAC,IAAD,EAAO,OAAP,EAAgB,WAAhB,CAAhB;;;;;;;ICzBP;;;;;;IAMA;;;;;AAKA,IAAO,IAAMD,aAAU,GAAG;IACzB,WAAY,MADa;IAEzB,YAAY,MAFa;IAGzB,UAAY,QAHa;IAIzB,WAAY,KAJa;IAKzB,aAAY,QALa;IAMzB,aAAY;IANa,CAAnB;IASP;;;;;;AAKA,IAAO,IAAMC,UAAO,GAAG,CAAC,IAAD,EAAO,OAAP,EAAgB,QAAhB,CAAhB;;;;;;;ICzBP;;;;;;IAMA;;;;;AAKA,IAAO,IAAMD,aAAU,GAAG;IACzB,WAAY,GADa;IAEzB,YAAY,GAFa;IAGzB,UAAY,GAHa;IAIzB,WAAY,GAJa;IAKzB,aAAY,GALa;IAMzB,aAAY;IANa,CAAnB;IASP;;;;;;AAKA,IAAO,IAAMC,UAAO,GAAG,CAAC,IAAD,EAAO,OAAP,EAAgB,UAAhB,CAAhB;;;;;;;ICzBP;;;;;;IAMA;;;;;AAKA,IAAO,IAAMD,aAAU,GAAG;IACzB,WAAY,GADa;IAEzB,YAAY,GAFa;IAGzB,UAAY,GAHa;IAIzB,WAAY,GAJa;IAKzB,aAAY,GALa;IAMzB,aAAY;IANa,CAAnB;IASP;;;;;;AAKA,IAAO,IAAMC,UAAO,GAAG,CAAC,IAAD,EAAO,OAAP,EAAgB,QAAhB,CAAhB;;;;;;;ICzBP;;;;;;IAMA;;;;;AAKA,IAAO,IAAMD,aAAU,GAAG;IACtB,WAAY,MADU;IAEtB,YAAY,QAFU;IAGtB,UAAY,QAHU;IAItB,WAAY,SAJU;IAKtB,aAAY,SALU;IAMtB,aAAY;IANU,CAAnB;IASP;;;;;;AAKA,IAAO,IAAMC,UAAO,GAAG,CAAC,IAAD,EAAO,OAAP,EAAgB,SAAhB,CAAhB;;;;;;;ICzBP;;;;;;IAMA;;;;;AAKA,IAAO,IAAMD,aAAU,GAAG;IACtB,WAAY,OADU;IAEtB,YAAY,SAFU;IAGtB,UAAY,OAHU;IAItB,WAAY,MAJU;IAKtB,aAAY,SALU;IAMtB,aAAY;IANU,CAAnB;IASP;;;;;;AAKA,IAAO,IAAMC,UAAO,GAAG,CAAC,IAAD,EAAO,OAAP,EAAgB,OAAhB,CAAhB;;;;;;;ICzBP;;;;;;IAMA;;;;;AAKA,IAAO,IAAMD,aAAU,GAAG;IACzB,WAAY,IADa;IAEzB,YAAY,SAFa;IAGzB,UAAY,OAHa;IAIzB,WAAY,OAJa;IAKzB,aAAY,UALa;IAMzB,aAAY;IANa,CAAnB;IASP;;;;;;AAKA,IAAO,IAAMC,UAAO,GAAG,CAAC,IAAD,EAAO,IAAP,EAAa,OAAb,EAAsB,WAAtB,CAAhB;;;;;;;ICzBP;;;;;;IAMA;;;;;AAKA,IAAO,IAAMD,aAAU,GAAG;IACzB,WAAY,KADa;IAEzB,YAAY,UAFa;IAGzB,UAAY,KAHa;IAIzB,WAAY,SAJa;IAKzB,aAAY,QALa;IAMzB,aAAY;IANa,CAAnB;IASP;;;;;;AAKA,IAAO,IAAMC,UAAO,GAAG,CAAC,IAAD,EAAO,OAAP,EAAgB,QAAhB,CAAhB;;;;;;;ICzBP;;;;;;IAMA;;;;;AAKA,IAAO,IAAMD,aAAU,GAAG;IACzB,WAAY,MADa;IAEzB,YAAY,OAFa;IAGzB,UAAY,MAHa;IAIzB,WAAY,OAJa;IAKzB,aAAY,SALa;IAMzB,aAAY;IANa,CAAnB;IASP;;;;;;AAKA,IAAO,IAAMC,UAAO,GAAG,CAAC,IAAD,EAAO,OAAP,EAAgB,YAAhB,CAAhB;;;;;;;ICzBP;;;;;;IAMA;;;;;AAKA,IAAO,IAAMD,aAAU,GAAG;IACzB,WAAS,KADgB;IAEzB,YAAU,MAFe;IAGzB,UAAQ,MAHiB;IAIzB,WAAS,KAJgB;IAKzB,aAAW,QALc;IAMzB,aAAW;IANc,CAAnB;IASP;;;;;;AAKA,IAAO,IAAMC,UAAO,GAAG,CAAC,IAAD,EAAO,OAAP,EAAgB,QAAhB,CAAhB;;;;;;;ICzBP;;;;;;IAMA;;;;;AAKA,IAAO,IAAMD,aAAU,GAAG;IACtB,WAAY,KADU;IAEtB,YAAY,SAFU;IAGtB,UAAY,MAHU;IAItB,WAAY,OAJU;IAKtB,aAAY,OALU;IAMtB,aAAY;IANU,CAAnB;IASP;;;;;;AAKA,IAAO,IAAMC,UAAO,GAAG,CAAC,IAAD,EAAO,OAAP,EAAgB,SAAhB,CAAhB;;;;;;;ICzBP;;;;;;IAMA;;;;;AAKA,IAAO,IAAMD,aAAU,GAAG;IACzB,WAAY,MADa;IAEzB,YAAY,SAFa;IAGzB,UAAY,KAHa;IAIzB,WAAY,QAJa;IAKzB,aAAY,QALa;IAMzB,aAAY;IANa,CAAnB;IASP;;;;;;AAKA,IAAO,IAAMC,UAAO,GAAG,CAAC,IAAD,EAAO,OAAP,EAAgB,QAAhB,CAAhB;;;;;;;ICzBP;;;;;;IAMA;;;;;AAKA,IAAO,IAAMD,aAAU,GAAG;IACzB,WAAY,IADa;IAEzB,YAAY,SAFa;IAGzB,UAAY,OAHa;IAIzB,WAAY,QAJa;IAKzB,aAAY,SALa;IAMzB,aAAY;IANa,CAAnB;IASP;;;;;;AAKA,IAAO,IAAMC,UAAO,GAAG,CAAC,IAAD,EAAO,OAAP,EAAgB,SAAhB,CAAhB;;;;;;;ICzBP;;;;;;IAMA;;;;;AAKA,IAAO,IAAMD,aAAU,GAAG;IACzB,WAAY,IADa;IAEzB,YAAY,OAFa;IAGzB,UAAY,KAHa;IAIzB,WAAY,SAJa;IAKzB,aAAY,MALa;IAMzB,aAAY;IANa,CAAnB;IASP;;;;;;AAKA,IAAO,IAAMC,UAAO,GAAG,CAAC,IAAD,EAAO,OAAP,EAAgB,MAAhB,CAAhB;;;;;;;ICzBP;;;;;;IAMA;;;;;AAKA,IAAO,IAAMD,aAAU,GAAG;IACzB,WAAY,KADa;IAEzB,YAAY,IAFa;IAGzB,UAAY,KAHa;IAIzB,WAAY,MAJa;IAKzB,aAAY,QALa;IAMzB,aAAY;IANa,CAAnB;IASP;;;;;;AAKA,IAAO,IAAMC,UAAO,GAAG,CAAC,IAAD,EAAO,OAAP,EAAgB,SAAhB,CAAhB;;;;;;;ICzBP;;;;;;IAMA;;;;;AAKA,IAAO,IAAMD,aAAU,GAAG;IACtB,WAAY,MADU;IAEtB,YAAY,QAFU;IAGtB,UAAY,KAHU;IAItB,WAAY,QAJU;IAKtB,aAAY,SALU;IAMtB,aAAY;IANU,CAAnB;IASP;;;;;;AAKA,IAAO,IAAMC,UAAO,GAAG,CAAC,IAAD,EAAO,OAAP,EAAgB,SAAhB,CAAhB;;;;;;;ICzBP;;;;;;IAMA;;;;;AAKA,IAAO,IAAMD,aAAU,GAAG;IACzB,WAAY,KADa;IAEzB,YAAY,OAFa;IAGzB,UAAY,MAHa;IAIzB,WAAY,KAJa;IAKzB,aAAY,MALa;IAMzB,aAAY;IANa,CAAnB;IASP;;;;;;AAKA,IAAO,IAAMC,UAAO,GAAG,CAAC,IAAD,EAAO,OAAP,EAAgB,YAAhB,CAAhB;;;;;;;ICzBP;;;;;;IAMA;;;;;AAKA,IAAO,IAAMD,aAAU,GAAG;IACzB,WAAY,GADa;IAEzB,YAAY,GAFa;IAGzB,UAAY,GAHa;IAIzB,WAAY,GAJa;IAKzB,aAAY,GALa;IAMzB,aAAY;IANa,CAAnB;IASP;;;;;;AAKA,IAAO,IAAMC,UAAO,GAAG,CAAC,IAAD,EAAO,OAAP,EAAgB,SAAhB,CAAhB;;;;;;;ICzBP;;;;;;IAMA;;;;;AAKA,IAAO,IAAMD,aAAU,GAAG;IACzB,WAAY,GADa;IAEzB,YAAY,GAFa;IAGzB,UAAY,GAHa;IAIzB,WAAY,GAJa;IAKzB,aAAY,GALa;IAMzB,aAAY;IANa,CAAnB;IASP;;;;;;AAKA,IAAO,IAAMC,UAAO,GAAG,CAAC,OAAD,CAAhB;;;;;;;ICzBP;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ICAA;;;AAGA,IAEA;;;;;;;;;;AASA,IAAe,SAAS/B,QAAT,CAAkB1E,IAAlB,EAAwB;IACnC,SAAOA,IAAI,GAAG0G,SAAS,CAAC1G,IAAI,CAACQ,WAAL,EAAD,CAAT,IAAiCI,MAAM,CAACmB,MAAP,CAAc2E,SAAd,EAAyBC,IAAzB,CAA8B,UAAAtI,KAAK,EAAI;IAClF,WAAOA,KAAK,CAACoI,OAAN,CAAcG,OAAd,CAAsB5G,IAAtB,MAAgC,CAAC,CAAxC;IACH,GAF8C,CAApC,GAEN,IAFL;IAGH;;IClBD;;;AAGA,IAGA;;;;;;;;;;;;AAWA,IAAe,SAAS6G,SAAT,CAAmBhJ,MAAnB,EAA2BiJ,IAA3B,EAAiC;IAC5C,MAAMC,IAAI,GAAG9G,QAAQ,CAAC6G,IAAD,CAAR,GAAiBpC,QAAQ,CAACoC,IAAD,CAAzB,GAAkCA,IAA/C;IACA,MAAMN,UAAU,GAAGO,IAAI,CAACP,UAAL,IAAmBO,IAAtC;IACA,SAAOP,UAAU,CAAC3I,MAAD,CAAV,IAAsBA,MAA7B;IACH;;ICrBD;;;;;AAKA,IAMA;;;;;;;;;;;AAUA,IAAO,SAASmJ,IAAT,CAAcC,OAAd,EAAuBC,QAAvB,EAAiC;IACvC,MAAGA,QAAQ,CAACC,UAAZ,EAAwB;IACvBD,IAAAA,QAAQ,CAACC,UAAT,CAAoBC,YAApB,CAAiCH,OAAjC,EAA0CC,QAA1C;IAEA,WAAOD,OAAP;IACA;;IAED,SAAOC,QAAP;IACA;IAED;;;;;;;;;;;AAUA,IAAO,SAASpF,aAAT,CAAuBuF,EAAvB,EAA2B3G,UAA3B,EAAuC;IAC7C,MAAGR,QAAQ,CAACQ,UAAD,CAAX,EAAyB;IACxB,SAAI,IAAMsB,CAAV,IAAetB,UAAf,EAA2B;IAC1B2G,MAAAA,EAAE,CAAC1G,YAAH,CAAgBqB,CAAhB,EAAmBtB,UAAU,CAACsB,CAAD,CAA7B;IACA;IACD;;IAED,SAAOqF,EAAP;IACA;IAED;;;;;;;;;;;AAUA,IAAO,SAASC,cAAT,CAAwBD,EAAxB,EAA4BE,QAA5B,EAAsC;IAC5C,MAAG5H,OAAO,CAAC4H,QAAD,CAAV,EAAsB;IACrBA,IAAAA,QAAQ,CAACnG,MAAT,CAAgBxC,IAAhB,EAAsBoC,OAAtB,CAA8B,UAAAwG,KAAK,EAAI;IACtC,UAAGA,KAAK,YAAYC,WAApB,EAAiC;IAChCJ,QAAAA,EAAE,CAACK,WAAH,CAAeF,KAAf;IACA;IACD,KAJD;IAKA;;IAED,SAAOH,EAAP;IACA;IAED;;;;;;;;;;;;AAWA,IAAO,SAASM,aAAT,CAAuBN,EAAvB,EAA2BE,QAA3B,EAAqC7G,UAArC,EAAiD;IACvD,MAAG,EAAE2G,EAAE,YAAYI,WAAhB,CAAH,EAAiC;IAChCJ,IAAAA,EAAE,GAAGO,QAAQ,CAACD,aAAT,CAAuBN,EAAvB,CAAL;IACA;;IAEDvF,EAAAA,aAAa,CAACuF,EAAD,EAAKnH,QAAQ,CAACqH,QAAD,CAAR,GAAqBA,QAArB,GAAgC7G,UAArC,CAAb;;IAEA,MAAG,CAACR,QAAQ,CAACqH,QAAD,CAAT,IAAuB,CAAC5H,OAAO,CAAC4H,QAAD,CAAlC,EAA8C;IAC7CF,IAAAA,EAAE,CAACQ,SAAH,GAAeN,QAAf;IACA,GAFD,MAGK;IACJD,IAAAA,cAAc,CAACD,EAAD,EAAKE,QAAL,CAAd;IACA;;IAED,SAAOF,EAAP;IACA;;QC1FoBS;;;;;IAEjB;;;;;;;IAOA,wBAAYpH,UAAZ,EAAwB;IAAA;;IAAA;;IACpB,sFAAME,MAAM,CAACC,MAAP,CAAc;IAChBkH,MAAAA,MAAM,EAAE;IADQ,KAAd,EAEHrH,UAFG,CAAN;;IAIA,QAAG,CAAC,MAAK+D,KAAT,EAAgB;IACZ7G,MAAAA,KAAK,WAAI,MAAKoC,IAAT,qCAAL;IACH;;IAED,QAAG,CAAC,MAAK0E,QAAT,EAAmB;IACf9G,MAAAA,KAAK,WAAI,MAAKoC,IAAT,wCAAL;IACH;;IAEP,QAAG,CAAC,MAAKyE,KAAL,CAAW,MAAKzE,IAAhB,CAAJ,EAA2B;IACjB,YAAM,IAAIlC,KAAJ,WACC,MAAKkC,IADN,qDAAN;IAGH;;IAjBmB;IAkBvB;IAED;;;;;;;;;;IA8EA;;;;;;;qCAOUnC,QAAQ;IACd,aAAOgJ,SAAS,CAAChJ,MAAD,EAAS,KAAK6G,QAAd,CAAhB;IACH;IAED;;;;;;;;0BAKE7G,QAAQ;IACN,aAAO,KAAKgJ,SAAL,CAAehJ,MAAf,CAAP;IACH;IAED;;;;;;;;iCAKM;IACF,UAAMwJ,EAAE,GAAGM,aAAa,CAAC,KAAD,EAAQ;IAC5B,iBAAO,KAAKpD,SAAL,KAAmB,YAAnB,GAAkC,KAAKA,SAAvC,GAAmD,gBAAgB,KAAKA;IADnD,OAAR,CAAxB;IAIA,WAAKE,KAAL,CAAW,KAAKzE,IAAhB,EAAsBqH,EAAtB,EAA0B,IAA1B;;IAEA,UAAG,CAAC,KAAKA,EAAT,EAAa;IACT,aAAKA,EAAL,GAAUA,EAAV;IACH,OAFD,MAGK,IAAG,KAAKA,EAAL,CAAQQ,SAAR,KAAsBR,EAAE,CAACQ,SAA5B,EAAuC;IACxC,aAAKR,EAAL,GAAUL,IAAI,CAACK,EAAD,EAAK,KAAKA,EAAV,CAAd;IACH;;IAED,aAAO,KAAKA,EAAZ;IACN;IAEE;;;;;;;;;;;;8BASMU,QAAwB;IAAA,UAAhB/I,MAAgB,uEAAP,KAAO;IAC1B,WAAKgJ,MAAL;IACA,WAAKD,MAAL,GAAcA,MAAd;;IAEA,UAAG,CAAC/I,MAAJ,EAAY;IACR,aAAK+I,MAAL,CAAYL,WAAZ,CAAwB,KAAKL,EAA7B;IACH,OAFD,MAGK;IACD,aAAKU,MAAL,CAAYE,YAAZ,CAAyB,KAAKZ,EAA9B,EAAkCrI,MAAlC;IACH;;IAED,aAAO,KAAKqI,EAAZ;IACH;;;4BAxIe;IACZ,aAAO/G,SAAS,CAAC,KAAK2B,WAAL,CAAiBC,UAAjB,EAAD,CAAhB;IACH;IAED;;;;;;;;4BAKS;IACL,aAAO,KAAKgG,GAAZ;IACH;0BAEM7J,OAAO;IACV,UAAG,CAAC+F,QAAQ,CAAC/F,KAAD,EAAQ,IAAR,EAAcoJ,WAAd,CAAZ,EAAwC;IACpC7J,QAAAA,KAAK,CAACuK,eAAe,CAACtD,OAAjB,CAAL;IACH;;IAED,WAAKqD,GAAL,GAAW7J,KAAX;IACH;IAED;;;;;;;;;4BAMa;IACT,aAAO,KAAK+J,OAAZ;IACH;0BAEUL,QAAQ;IACf,WAAKK,OAAL,GAAeL,MAAf;IACH;IAED;;;;;;;;4BAKY;IACR,aAAO,KAAKM,MAAZ;IACH;0BAEShK,OAAO;IACb,UAAG,CAAC+F,QAAQ,CAAC/F,KAAD,EAAQ,QAAR,CAAZ,EAA+B;IAC3BT,QAAAA,KAAK,CAACuK,eAAe,CAAC9J,KAAjB,CAAL;IACH;;IAED,WAAKgK,MAAL,GAAchK,KAAd;IACH;IAED;;;;;;;;4BAKe;IACX,aAAO,KAAKiK,SAAZ;IACH;0BAEYjK,OAAO;IAChB,UAAG4B,QAAQ,CAAC5B,KAAD,CAAX,EAAoB;IAChBA,QAAAA,KAAK,GAAGqG,QAAQ,CAACrG,KAAD,CAAhB;IACH;;IAED,UAAG,CAAC+F,QAAQ,CAAC/F,KAAD,EAAQ,QAAR,CAAZ,EAA+B;IAC3BT,QAAAA,KAAK,CAACuK,eAAe,CAACzD,QAAjB,CAAL;IACH;;IAED,WAAK4D,SAAL,GAAiBjK,KAAjB;IACH;;;;MAzGqCoC;;ICP1C;;;;;;;;;;;;QAWqB8H;;;;;;;;;;;;;;IAEjB;;;;;qCAKoB;IAChB,aAAO,SAAP;IACH;;;;MATgCT;;QCVhBU;;;;;IAEjB;;;;;;;;IAQA,oBAAYnK,KAAZ,EAAmBqC,UAAnB,EAA+B;IAAA;;IAAA,iFACrBE,MAAM,CAACC,MAAP,CAAc;IAChBxC,MAAAA,KAAK,EAAEA;IADS,KAAd,EAEH6B,QAAQ,CAAC7B,KAAD,CAAR,GAAkBA,KAAlB,GAA0B,IAFvB,EAE6BqC,UAF7B,CADqB;IAI9B;IAED;;;;;;;;;qCAKoB;IAChB,aAAO,UAAP;IACH;;;;MAvBiCoH;;QCGjBW;;;;;IAEjB;;;;;;;;;;;;IAYA,gBAAYpK,KAAZ,EAAmBqC,UAAnB,EAA+B;IAAA;;IAAA,6EACrBE,MAAM,CAACC,MAAP,CAAc;IAChBxC,MAAAA,KAAK,EAAEA,KADS;IAEhBmG,MAAAA,KAAK,EAAE;IAFS,KAAd,EAGHtE,QAAQ,CAAC7B,KAAD,CAAR,GAAkBA,KAAlB,GAA0B,IAHvB,EAG6BqC,UAH7B,CADqB;IAK9B;IAED;;;;;;;;;;IAyBA;;;;;;;uCAOerC,OAAOqC,YAAY;IAC9B,UAAMgI,IAAI,GAAG,IAAIF,QAAJ,CAAanK,KAAb,EAAoBuC,MAAM,CAACC,MAAP,CAAc;IAC3C4D,QAAAA,KAAK,EAAE,KAAKA,KAD+B;IAE3CC,QAAAA,QAAQ,EAAE,KAAKA;IAF4B,OAAd,EAG9BhE,UAH8B,CAApB,CAAb;IAKA,WAAKiI,MAAL,CAAYxH,IAAZ,CAAiBuH,IAAjB;IAEA,aAAOA,IAAP;IACH;IAED;;;;;;;;4BAtCY;IACR,aAAO,KAAKvE,MAAZ;IACH;0BACS9F,OAAO;IACb,WAAK8F,MAAL,GAAc9F,KAAd;IACH;IAED;;;;;;;;4BAKY;IACR,aAAO,KAAKsK,MAAZ;IACH;0BAEStK,OAAO;IACb,WAAKsK,MAAL,GAActK,KAAd;IACH;;;qCAyBmB;IAChB,aAAO,MAAP;IACH;;;;MAvE6ByJ;;QCHbc;;;;;IAEjB;;;;;;;;;;IAUA,iBAAYpE,KAAZ,EAAmB9D,UAAnB,EAA+B;IAAA;;IAAA,8EACrBE,MAAM,CAACC,MAAP,CAAc;IAChB2D,MAAAA,KAAK,EAAE7E,OAAO,CAAC6E,KAAD,CAAP,GAAiBA,KAAjB,GAAyB;IADhB,KAAd,EAEFtE,QAAQ,CAACsE,KAAD,CAAR,GAAkBA,KAAlB,GAA0B,IAFxB,EAE+B9D,UAF/B,CADqB;IAI9B;IAED;;;;;;;;;qCAKoB;IAChB,aAAO,OAAP;IACH;;;;MAzB8BoH;;QCAde;;;;;IAEjB;;;;;;;;;IASA,iBAAYC,KAAZ,EAAmBpI,UAAnB,EAA+B;IAAA;;IAAA,8EACrBE,MAAM,CAACC,MAAP,CAAc;IAChBiI,MAAAA,KAAK,EAAEA;IADS,KAAd,EAEF5I,QAAQ,CAAC4I,KAAD,CAAR,GAAkBA,KAAlB,GAA0B,IAFxB,EAE+BpI,UAF/B,CADqB;IAI9B;IAED;;;;;;;;;qCAKoB;IAChB,aAAO,OAAP;IACH;;;;MAxB8BoH;;QCAdiB;;;;;IAEjB;;;;;;;;IAQA,iBAAYC,QAAZ,EAAsB;IAAA;;IAAA,8EACZpI,MAAM,CAACC,MAAP,CAAc;IAChBoI,MAAAA,KAAK,EAAE,CADS;IAEhBC,MAAAA,MAAM,EAAE,IAFQ;IAGhBC,MAAAA,OAAO,EAAE,IAHO;IAIhBC,MAAAA,OAAO,EAAE,KAJO;IAKhBJ,MAAAA,QAAQ,EAAE5I,QAAQ,CAAC4I,QAAD,CAAR,GAAqBA,QAArB,GAAgC;IAL1B,KAAd,EAMH9I,QAAQ,CAAC8I,QAAD,CAAR,GAAqBA,QAArB,GAAgC,IAN7B,CADY;IAQrB;IAED;;;;;;;;;;IA6BA;;;;;;8BAMMhL,IAAI;IAAA;;IACN,WAAK2H,IAAL,CAAU,YAAM;IACZ,QAAA,KAAI,CAACsD,KAAL,GAAa,CAAb;;IACA,QAAA,KAAI,CAAC/C,KAAL,CAAW;IAAA,iBAAMnI,QAAQ,CAACI,IAAT,CAAc,KAAd,EAAoBH,EAApB,CAAN;IAAA,SAAX;;IACA,QAAA,KAAI,CAAC4H,IAAL,CAAU,OAAV;IACH,OAJD;IAMA,aAAO,IAAP;IACH;IAED;;;;;;;;;8BAMM5H,IAAI;IAAA;;IACN,WAAKmL,OAAL,GAAe,IAAIE,IAAJ,EAAf;IACA,WAAKC,QAAL,GAAgBD,IAAI,CAACE,GAAL,EAAhB;IACA,WAAKH,OAAL,GAAe,IAAf;IACA,WAAKxD,IAAL,CAAU,OAAV;;IAEA,UAAM4D,IAAI,GAAG,SAAPA,IAAO,GAAM;IACf,YAAGH,IAAI,CAACE,GAAL,KAAa,MAAI,CAACD,QAAlB,IAA8B,MAAI,CAACN,QAAtC,EAAgD;IAC5CjL,UAAAA,QAAQ,CAACI,IAAT,CAAc,MAAd,EAAoBH,EAApB;IACA,UAAA,MAAI,CAACsL,QAAL,GAAgBD,IAAI,CAACE,GAAL,EAAhB;;IACA,UAAA,MAAI,CAAC3D,IAAL,CAAU,UAAV;;IACA,UAAA,MAAI,CAACqD,KAAL;IACH;;IAED,QAAA,MAAI,CAACC,MAAL,GAAclD,MAAM,CAACC,qBAAP,CAA6BuD,IAA7B,CAAd;IAEA,eAAO,MAAP;IACH,OAXD;;IAaA,aAAOA,IAAI,EAAX;IACH;IAED;;;;;;;;;6BAMKxL,IAAI;IAAA;;IACL,UAAG,KAAKyL,SAAR,EAAmB;IACfC,QAAAA,UAAU,CAAC,YAAM;IACb1D,UAAAA,MAAM,CAAC2D,oBAAP,CAA4B,MAAI,CAACT,MAAjC;IAEA,UAAA,MAAI,CAACE,OAAL,GAAe,KAAf;IAEArL,UAAAA,QAAQ,CAACI,IAAT,CAAc,MAAd,EAAoBH,EAApB;;IAEA,UAAA,MAAI,CAAC4H,IAAL,CAAU,MAAV;IACH,SARS,CAAV;IASH;;IAED,aAAO,IAAP;IACH;IAED;;;;;;;;4BA1Fc;IACV,aAAO,CAAC,KAAK0D,QAAN,GAAiB,CAAjB,GAAqB,KAAKA,QAAL,IACxB,KAAKH,OAAL,GAAe,KAAKA,OAAL,CAAaS,OAAb,EAAf,GAAwC,IAAIP,IAAJ,GAAWO,OAAX,EADhB,CAA5B;IAGH;IAED;;;;;;;;4BAKgB;IACZ,aAAO,KAAKR,OAAL,KAAiB,IAAxB;IACH;IAED;;;;;;;;4BAKgB;IACZ,aAAO,KAAKA,OAAL,KAAiB,KAAxB;IACH;;;qCAyEmB;IAChB,aAAO,OAAP;IACH;;;;MA1H8B3I;;ICDnC;;;;;;;;;;QASqBoJ;;;;;;;;;;;;;kCAEPtE,UAAqB;IAAA,UAAXlH,KAAW,uEAAH,CAAG;IAC3BkH,MAAAA,QAAQ,CAAClH,KAAT,GAAiB,KAAKA,KAAL,CAAWA,KAAX,GAAmBA,KAApC;IACH;;;kCAESkH,UAAqB;IAAA,UAAXlH,KAAW,uEAAH,CAAG;IAC3BkH,MAAAA,QAAQ,CAAClH,KAAT,GAAiB,KAAKA,KAAL,CAAWA,KAAX,GAAmBA,KAApC;IACH;IAED;;;;;;;;qCAKoB;IAChB,aAAO,SAAP;IACH;;;;MAjBgC2G;;ICRrC;;;;;;;;;;QASqB8E;;;;;;;;;;;;;0CAEC;IACd,aAAOT,IAAP;IACH;;;4CAEmB;IAChB,aAAO;IACHU,QAAAA,WAAW,EAAE,IADV;IAEHC,QAAAA,UAAU,EAAE;IAFT,OAAP;IAIH;;;mCAEUzE,UAAU;IACjB,UAAGzG,MAAM,CAACyG,QAAQ,CAACM,MAAV,CAAN,IAA2BhH,WAAW,CAAC0G,QAAQ,CAACM,MAAV,CAAzC,EAA4D;IACxD,eAAO,KAAP;IACH;;IAED,UAAG,KAAKA,MAAL,YAAuBwD,IAA1B,EAAgC;IAC5B,eAAO,KAAKlE,SAAL,GACH,KAAKU,MAAL,CAAY+D,OAAZ,MAAyB,KAAKvL,KAAL,CAAWA,KAAX,CAAiBuL,OAAjB,EADtB,GAEH,KAAK/D,MAAL,CAAY+D,OAAZ,MAAyB,KAAKvL,KAAL,CAAWA,KAAX,CAAiBuL,OAAjB,EAF7B;IAGH,OAJD,MAKK,IAAGxJ,QAAQ,CAAC,KAAKyF,MAAN,CAAX,EAA0B;IAC3B,YAAMoE,IAAI,GAAGzL,IAAI,CAACE,KAAL,CAAW,CAAC,KAAKL,KAAL,CAAWA,KAAX,CAAiBuL,OAAjB,KAA6B,KAAKM,aAAL,CAAmBN,OAAnB,EAA9B,IAA8D,IAAzE,CAAb;IAEA,eAAO,KAAKzE,SAAL,GACH,KAAKU,MAAL,IAAeoE,IADZ,GAEH,KAAKpE,MAAL,IAAeoE,IAFnB;IAGH;;IAED,YAAM,IAAInM,KAAJ,8DAAN;IACH;;;kCAESyH,UAAqB;IAAA,UAAXlH,KAAW,uEAAH,CAAG;IAC3BkH,MAAAA,QAAQ,CAAClH,KAAT,GAAiB,IAAIgL,IAAJ,CAAS,KAAKhL,KAAL,CAAWA,KAAX,CAAiBuL,OAAjB,KAA6BvL,KAA7B,IAAsC,IAAIgL,IAAJ,GAAWO,OAAX,KAAuBrE,QAAQ,CAACR,KAAT,CAAeuE,QAA5E,CAAT,CAAjB;IACH;;;kCAES/D,UAAqB;IAAA,UAAXlH,KAAW,uEAAH,CAAG;IAC3BkH,MAAAA,QAAQ,CAAClH,KAAT,GAAiB,IAAIgL,IAAJ,CAAS,KAAKhL,KAAL,CAAWA,KAAX,CAAiBuL,OAAjB,KAA6BvL,KAA7B,IAAsC,IAAIgL,IAAJ,GAAWO,OAAX,KAAuBrE,QAAQ,CAACR,KAAT,CAAeuE,QAA5E,CAAT,CAAjB;IACH;;;+BAEM/D,UAAUlH,OAAO;IACpB,UAAM8K,OAAO,GAAG5D,QAAQ,CAACR,KAAT,CAAe0E,SAAf,GAA2BlE,QAAQ,CAACR,KAAT,CAAeoE,OAA1C,GAAoD,IAAIE,IAAJ,CAASA,IAAI,CAACE,GAAL,KAAa,EAAtB,CAApE;IAEA,aAAO,CACH,CAAC,KAAKY,UAAL,CAAgB9L,KAAhB,EAAuB8K,OAAvB,CAAD,CADG,EAEH,KAAKY,WAAL,GAAmB,CAAC,KAAKK,UAAL,CAAgB/L,KAAhB,EAAuB8K,OAAvB,CAAD,CAAnB,GAAuD,IAFpD,EAGL/H,MAHK,CAGExC,IAHF,CAAP;IAIH;;;mCAEUyL,GAAGC,GAAG;IACb,aAAOlM,KAAK,CAAC,KAAKmM,eAAL,CAAqBF,CAArB,EAAwBC,CAAxB,IAA6B,EAA9B,CAAZ;IACH;;;mCAEUD,GAAGC,GAAG;IACb,UAAME,YAAY,GAAG,KAAKD,eAAL,CAAqBF,CAArB,EAAwBC,CAAxB,CAArB;IAEA,aAAO9L,IAAI,CAACiM,GAAL,CAASjM,IAAI,CAACC,IAAL,CAAU+L,YAAY,KAAK,EAAjB,GAAsB,CAAtB,GAA0BA,YAAY,GAAG,EAAnD,CAAT,CAAP;IACH;;;wCAEeH,GAAGC,GAAG;IAClB,aAAOD,CAAC,CAACT,OAAF,OAAgBU,CAAC,CAACV,OAAF,EAAhB,GAA8B,CAA9B,GAAkCpL,IAAI,CAACJ,KAAL,CAAW,CAACiM,CAAC,CAACT,OAAF,KAAcU,CAAC,CAACV,OAAF,EAAf,IAA8B,IAAzC,CAAzC;IACH;IAED;;;;;;;;qCAKoB;IAChB,aAAO,eAAP;IACH;;;;MAxEsC5E;;ICV3C;;;;;;;;;;QASqB0F;;;;;;;;;;;;;+BAEVnF,UAAUlH,OAAO;IACpB,UAAMkL,GAAG,GAAG,CAAChE,QAAQ,CAACR,KAAT,CAAeoE,OAAhB,GAA0B,IAAIE,IAAJ,EAA1B,GAAqChL,KAAjD;IACA,UAAM6L,aAAa,GAAG3E,QAAQ,CAAC2E,aAAT,IAA0B7L,KAAhD;IACA,UAAMgM,CAAC,GAAG,CAAC,KAAKlF,SAAN,GAAkBoE,GAAlB,GAAwBW,aAAlC;IACA,UAAMI,CAAC,GAAG,CAAC,KAAKnF,SAAN,GAAkB+E,aAAlB,GAAkCX,GAA5C;IAEA,UAAMoB,IAAI,GAAG,CACT,CAAC,KAAKC,QAAL,CAAcP,CAAd,EAAiBC,CAAjB,CAAD,CADS,EAET,CAAC,KAAKH,UAAL,CAAgBE,CAAhB,EAAmBC,CAAnB,CAAD,CAFS,CAAb;;IAKA,UAAG,KAAKP,WAAR,EAAqB;IACjBY,QAAAA,IAAI,CAACxJ,IAAL,CAAU,CAAC,KAAKiJ,UAAL,CAAgBC,CAAhB,EAAmBC,CAAnB,CAAD,CAAV;IACH;;IAED,aAAOK,IAAP;IACH;;;mCAEUN,GAAGC,GAAG;IACb,aAAO9L,IAAI,CAACiM,GAAL,CAAS,4EAAiBJ,CAAjB,EAAoBC,CAApB,IAAyB,EAAlC,CAAP;IACH;;;iCAEQD,GAAGC,GAAG;IACX,aAAO9L,IAAI,CAACE,KAAL,CAAW,KAAK6L,eAAL,CAAqBF,CAArB,EAAwBC,CAAxB,IAA6B,EAA7B,GAAkC,EAA7C,CAAP;IACH;IAED;;;;;;;;qCAKoB;IAChB,aAAO,aAAP;IACH;;;;MAnCoCR;;ICTzC;;;;;;;;;;QASqBe;;;;;;;;;;;;;+BAEVtF,UAAUlH,OAAO;IACpB,UAAMkL,GAAG,GAAG,CAAChE,QAAQ,CAAC4D,OAAV,GAAoB,IAAIE,IAAJ,EAApB,GAA+BhL,KAA3C;IACA,UAAM6L,aAAa,GAAG3E,QAAQ,CAAC2E,aAAT,IAA0B7L,KAAhD;IACA,UAAMgM,CAAC,GAAG,CAAC,KAAKlF,SAAN,GAAkBoE,GAAlB,GAAwBW,aAAlC;IACA,UAAMI,CAAC,GAAG,CAAC,KAAKnF,SAAN,GAAkB+E,aAAlB,GAAkCX,GAA5C;IAEA,UAAMoB,IAAI,GAAG,CACT,CAAC,KAAKG,OAAL,CAAaT,CAAb,EAAgBC,CAAhB,CAAD,CADS,EAET,CAAC,KAAKM,QAAL,CAAcP,CAAd,EAAiBC,CAAjB,CAAD,CAFS,EAGT,CAAC,KAAKH,UAAL,CAAgBE,CAAhB,EAAmBC,CAAnB,CAAD,CAHS,CAAb;;IAMA,UAAG,KAAKP,WAAR,EAAqB;IACjBY,QAAAA,IAAI,CAACxJ,IAAL,CAAU,CAAC,KAAKiJ,UAAL,CAAgBC,CAAhB,EAAmBC,CAAnB,CAAD,CAAV;IACH;;IAED,aAAOK,IAAP;IACH;;;gCAEON,GAAGC,GAAG;IACV,aAAO9L,IAAI,CAACE,KAAL,CAAW,KAAK6L,eAAL,CAAqBF,CAArB,EAAwBC,CAAxB,IAA6B,EAA7B,GAAkC,EAAlC,GAAuC,EAAlD,CAAP;IACH;;;iCAEQD,GAAGC,GAAG;IACX,aAAO9L,IAAI,CAACiM,GAAL,CAAS,yEAAeJ,CAAf,EAAkBC,CAAlB,IAAuB,EAAhC,CAAP;IACH;IAED;;;;;;;;qCAKoB;IAChB,aAAO,YAAP;IACH;;;;MApCmCI;;ICRxC;;;;;;;;;QAQqBK;;;;;;;;;;;;;0CAEC;IACd,aAAO1B,IAAP;IACH;;;uCAEc;IACX,aAAO,IAAIA,IAAJ,EAAP;IACH;;;4CAEmB;IAChB,aAAO;IACHU,QAAAA,WAAW,EAAE,IADV;IAEHC,QAAAA,UAAU,EAAE;IAFT,OAAP;IAIH;;;+BAEMzE,UAAUlH,OAAO;IACpB,UAAG,CAACA,KAAJ,EAAW;IACPA,QAAAA,KAAK,GAAG,IAAIgL,IAAJ,EAAR;IACH;;IAED,UAAM2B,MAAM,GAAG,CACX,CAAC3M,KAAK,CAACuM,QAAN,EAAD,CADW,EAEX,CAACvM,KAAK,CAAC8L,UAAN,EAAD,CAFW,CAAf;;IAKA,UAAG,KAAKJ,WAAR,EAAqB;IACjBiB,QAAAA,MAAM,CAAC7J,IAAP,CAAY,CAAC9C,KAAK,CAAC+L,UAAN,EAAD,CAAZ;IACH;;IAED,aAAOY,MAAP;IACH;;;kCAESzF,UAAsB;IAAA,UAAZ0F,MAAY,uEAAH,CAAG;IAC5B1F,MAAAA,QAAQ,CAAClH,KAAT,GAAiB,IAAIgL,IAAJ,CAAS,KAAKhL,KAAL,CAAWA,KAAX,CAAiBuL,OAAjB,KAA6BqB,MAA7B,IAAuC,IAAI5B,IAAJ,GAAWO,OAAX,KAAuBrE,QAAQ,CAACR,KAAT,CAAeuE,QAA7E,CAAT,CAAjB;IACH;;;kCAES/D,UAAsB;IAAA,UAAZ0F,MAAY,uEAAH,CAAG;IAC5B1F,MAAAA,QAAQ,CAAClH,KAAT,GAAiB,IAAIgL,IAAJ,CAAS,KAAKhL,KAAL,CAAWA,KAAX,CAAiBuL,OAAjB,KAA6BqB,MAA7B,IAAuC,IAAI5B,IAAJ,GAAWO,OAAX,KAAuBrE,QAAQ,CAACR,KAAT,CAAeuE,QAA7E,CAAT,CAAjB;IACH;IAED;;;;;;;;qCAKoB;IAChB,aAAO,qBAAP;IACH;;;;MAjD4CtE;;ICTjD;;;;;;;;;;QASqBkG;;;;;;;;;;;;;4CAEG;IAChB,aAAO;IACHlB,QAAAA,UAAU,EAAE,KADT;IAEHD,QAAAA,WAAW,EAAE,IAFV;IAGHoB,QAAAA,YAAY,EAAE;IAHX,OAAP;IAKH;;;+BAEM5F,UAAUlH,OAAO;IACpB,UAAG,CAACA,KAAJ,EAAW;IACPA,QAAAA,KAAK,GAAG,IAAIgL,IAAJ,EAAR;IACH;;IAED,UAAM+B,KAAK,GAAG/M,KAAK,CAACuM,QAAN,EAAd;IACN,UAAMI,MAAM,GAAG,CACdI,KAAK,GAAG,EAAR,GAAaA,KAAK,GAAG,EAArB,GAA2BA,KAAK,KAAK,CAAV,GAAc,EAAd,GAAmBA,KADhC,EAEd/M,KAAK,CAAC8L,UAAN,EAFc,CAAf;IAKM,WAAKkB,QAAL,GAAgBD,KAAK,GAAG,EAAR,GAAa,IAAb,GAAoB,IAApC;;IAEN,UAAG,KAAKrB,WAAR,EAAqB;IACpBiB,QAAAA,MAAM,CAAC7J,IAAP,CAAY9C,KAAK,CAAC+L,UAAN,EAAZ;IACA;;IAED,aAAOY,MAAP;IACG;IAED;;;;;;;;qCAKoB;IAChB,aAAO,iBAAP;IACH;;;;MArCwCD;;ICT7C;;;;;;;;;;QASqBO;;;;;;;;;;;;;+BAEV/F,UAAUlH,OAAO;IACpB,UAAMkL,GAAG,GAAG,CAAChE,QAAQ,CAACR,KAAT,CAAeoE,OAAhB,GAA0B,IAAIE,IAAJ,EAA1B,GAAqChL,KAAjD;IACA,UAAM6L,aAAa,GAAG3E,QAAQ,CAAC2E,aAAT,IAA0B7L,KAAhD;IACA,UAAMgM,CAAC,GAAG,CAAC,KAAKlF,SAAN,GAAkBoE,GAAlB,GAAwBW,aAAlC;IACA,UAAMI,CAAC,GAAG,CAAC,KAAKnF,SAAN,GAAkB+E,aAAlB,GAAkCX,GAA5C;IAEA,UAAMoB,IAAI,GAAG,CACT,CAAC,KAAKY,QAAL,CAAclB,CAAd,EAAiBC,CAAjB,CAAD,CADS,EAET,CAAC,KAAKQ,OAAL,CAAaT,CAAb,EAAgBC,CAAhB,CAAD,CAFS,EAGT,CAAC,KAAKM,QAAL,CAAcP,CAAd,EAAiBC,CAAjB,CAAD,CAHS,EAIT,CAAC,KAAKH,UAAL,CAAgBE,CAAhB,EAAmBC,CAAnB,CAAD,CAJS,CAAb;;IAOA,UAAG,KAAKP,WAAR,EAAqB;IACjBY,QAAAA,IAAI,CAACxJ,IAAL,CAAU,CAAC,KAAKiJ,UAAL,CAAgBC,CAAhB,EAAmBC,CAAnB,CAAD,CAAV;IACH;;IAED,aAAOK,IAAP;IACH;;;iCAEQN,GAAGC,GAAG;IACX,aAAO9L,IAAI,CAACE,KAAL,CAAW,KAAK6L,eAAL,CAAqBF,CAArB,EAAwBC,CAAxB,IAA6B,EAA7B,GAAkC,EAAlC,GAAuC,EAAvC,GAA4C,CAAvD,CAAP;IACH;;;gCAEOD,GAAGC,GAAG;IACV,aAAO9L,IAAI,CAACiM,GAAL,CAAS,yEAAcJ,CAAd,EAAiBC,CAAjB,IAAsB,CAA/B,CAAP;IACH;IAED;;;;;;;;qCAKoB;IAChB,aAAO,aAAP;IACH;;;;MArCoCO;;ICTzC;;;;;;;;;;QASqBW;;;;;;;;;;;;;+BAEVjG,UAAUlH,OAAO;IACpB,UAAMkL,GAAG,GAAG,CAAChE,QAAQ,CAACR,KAAT,CAAeoE,OAAhB,GAA0B,IAAIE,IAAJ,EAA1B,GAAqChL,KAAjD;IACA,UAAM6L,aAAa,GAAG3E,QAAQ,CAAC2E,aAAT,IAA0B7L,KAAhD;IACA,UAAMgM,CAAC,GAAG,CAAC,KAAKlF,SAAN,GAAkBoE,GAAlB,GAAwBW,aAAlC;IACA,UAAMI,CAAC,GAAG,CAAC,KAAKnF,SAAN,GAAkB+E,aAAlB,GAAkCX,GAA5C;IAEA,UAAMoB,IAAI,GAAG,CACT,CAAC,KAAKc,QAAL,CAAcpB,CAAd,EAAiBC,CAAjB,CAAD,CADS,EAET,CAAC,KAAKiB,QAAL,CAAclB,CAAd,EAAiBC,CAAjB,CAAD,CAFS,EAGT,CAAC,KAAKQ,OAAL,CAAaT,CAAb,EAAgBC,CAAhB,CAAD,CAHS,EAIT,CAAC,KAAKM,QAAL,CAAcP,CAAd,EAAiBC,CAAjB,CAAD,CAJS,EAKT,CAAC,KAAKH,UAAL,CAAgBE,CAAhB,EAAmBC,CAAnB,CAAD,CALS,CAAb;;IAQA,UAAG,KAAKP,WAAR,EAAqB;IACjBY,QAAAA,IAAI,CAACxJ,IAAL,CAAU,CAAC,KAAKiJ,UAAL,CAAgBC,CAAhB,EAAmBC,CAAnB,CAAD,CAAV;IACH;;IAED,aAAOK,IAAP;IACH;;;iCAEQN,GAAGC,GAAG;IACX,aAAO9L,IAAI,CAACE,KAAL,CAAWF,IAAI,CAACyE,GAAL,CAAS,CAAT,EAAY,KAAKsH,eAAL,CAAqBF,CAArB,EAAwBC,CAAxB,IAA6B,EAA7B,GAAkC,EAAlC,GAAuC,EAAvC,GAA4C,CAA5C,GAAgD,EAA5D,CAAX,CAAP;IACH;;;iCAEQD,GAAGC,GAAG;IACX,aAAO9L,IAAI,CAACiM,GAAL,CAAS,0EAAeJ,CAAf,EAAkBC,CAAlB,IAAuB,EAAhC,CAAP;IACH;IAED;;;;;;;;qCAKoB;IAChB,aAAO,aAAP;IACH;;;;MAtCoCgB;;ICXzC;;;;;;;;;;;;;;;;;;;ICEe,oBAASjE,EAAT,EAAa9B,QAAb,EAAuB;IAClC+B,EAAAA,cAAc,CAACD,EAAD,EAAK,CACfM,aAAa,CAAC,KAAD,EAAQ;IAAC,aAAO;IAAR,GAAR,CADE,EAEfA,aAAa,CAAC,KAAD,EAAQ;IAAC,aAAO;IAAR,GAAR,CAFE,CAAL,CAAd;IAIH;;ICJD,SAASH,KAAT,CAAeH,EAAf,EAAmBqE,KAAnB,EAA0B;IACtB,SAAOrE,EAAE,GAAIA,EAAE,CAACsE,UAAH,GAAgBtE,EAAE,CAACsE,UAAH,CAAcD,KAAd,CAAhB,GAAuCrE,EAAE,CAACqE,KAAD,CAA7C,GAAwD,IAAjE;IACH;;IAED,SAASrI,KAAT,CAAcgE,EAAd,EAAkB;IACd,SAAOA,EAAE,GAAGA,EAAE,CAACuE,aAAH,CAAiB,wCAAjB,EAA2D/D,SAA9D,GAA0E,IAAnF;IACH;;AAED,IAAe,oBAASR,EAAT,EAAa9B,QAAb,EAAuB;IAClC,MAAMsG,KAAK,GAAGtG,QAAQ,CAAClH,KAAT,CAAeuE,MAAf,CAAsBxD,GAAtB,CAA0B,UAAC0M,KAAD,EAAQ3M,CAAR,EAAc;IAClD,QAAM4M,OAAO,GAAGvE,KAAK,CAACjC,QAAQ,CAAC8B,EAAT,GAAc9B,QAAQ,CAAC8B,EAAT,CAAY2E,gBAAZ,CAA6B,mBAA7B,CAAd,GAAkE,IAAnE,EAAyE7M,CAAzE,CAArB;IAEA,QAAM8M,KAAK,GAAGH,KAAK,CAAC1M,GAAN,CAAU,UAACf,KAAD,EAAQiB,CAAR,EAAc;IAClC,UAAM4M,MAAM,GAAG1E,KAAK,CAACuE,OAAO,GAAGA,OAAO,CAACC,gBAAR,CAAyB,kBAAzB,CAAH,GAAkD,IAA1D,EAAgE1M,CAAhE,CAApB;;IACA,UAAM6M,SAAS,GAAG9I,KAAI,CAAC6I,MAAD,CAAtB;;IAEA,aAAO3G,QAAQ,CAAC6G,UAAT,CAAoB/N,KAApB,EAA2B;IAC9BgO,QAAAA,QAAQ,EAAEF,SADoB;IAE9BhH,QAAAA,SAAS,EAAEI,QAAQ,CAACJ,SAFU;IAG9BC,QAAAA,aAAa,EAAEG,QAAQ,CAACX,IAAT,CAAcQ,aAAd,IAA+BG,QAAQ,CAACX,IAAT,CAAc0H;IAH9B,OAA3B,CAAP;IAKH,KATa,CAAd;IAWA,WAAO/G,QAAQ,CAACgH,WAAT,CAAqBN,KAArB,CAAP;IACH,GAfa,CAAd;IAiBA,MAAMO,KAAK,GAAGX,KAAK,CAACzM,GAAN,CAAU,UAAA0M,KAAK,EAAI;IAC7B,WAAOA,KAAK,CAAC9D,MAAN,EAAP;IACH,GAFa,CAAd;IAIAV,EAAAA,cAAc,CAACD,EAAD,EAAKmF,KAAL,CAAd;IACH;;IChCc,kBAASnF,EAAT,EAAa9B,QAAb,EAAuB;IAClC,MAAMf,KAAK,GAAGe,QAAQ,CAACf,KAAT,CAAepF,GAAf,CAAmB,UAAAsJ,IAAI,EAAI;IACrC,WAAOA,IAAI,CAACV,MAAL,EAAP;IACH,GAFa,CAAd;IAIAV,EAAAA,cAAc,CAACD,EAAD,EAAK7C,KAAL,CAAd;IACH;;ICNc,kBAAS6C,EAAT,EAAa9B,QAAb,EAAuB;IAClC8B,EAAAA,EAAE,CAACQ,SAAH,GAAetC,QAAQ,CAACkH,CAAT,CAAWlH,QAAQ,CAACuD,KAApB,CAAf;IACH;;ICAc,iBAASzB,EAAT,EAAa9B,QAAb,EAAuB;IAClC,MAAMmH,WAAW,GAAGnH,QAAQ,CAAC8G,QAAT,KAChB,CAAC9G,QAAQ,CAACJ,SAAV,GAAsBpB,IAAI,CAACwB,QAAQ,CAAClH,KAAV,CAA1B,GAA6CsF,IAAI,CAAC4B,QAAQ,CAAClH,KAAV,CADjC,CAApB;;IAIA,MAAIkH,QAAQ,CAAC8G,QAAT,IAAqB9G,QAAQ,CAAC8G,QAAT,KAAsB9G,QAAQ,CAAClH,KAAxD,EAA+D;IAC3DgJ,IAAAA,EAAE,CAACsF,SAAH,CAAaC,GAAb,CAAiB,MAAjB;IACH;;IAEDvF,EAAAA,EAAE,CAACwF,KAAH,CAASC,cAAT,aAA6BvH,QAAQ,CAACH,aAAT,GAAyB,CAAtD;IACAiC,EAAAA,EAAE,CAACwF,KAAH,CAASE,iBAAT,aAAgCxH,QAAQ,CAACH,aAAT,GAAyB,CAAzD;IAEAG,EAAAA,QAAQ,CAACf,KAAT,GAAiB,CACbe,QAAQ,CAACyH,cAAT,CAAwBzH,QAAQ,CAAClH,KAAjC,EAAwC;IACpC4O,IAAAA,MAAM,EAAE;IAD4B,GAAxC,CADa,EAIb1H,QAAQ,CAACyH,cAAT,CAAwBN,WAAxB,EAAqC;IACjCO,IAAAA,MAAM,EAAE;IADyB,GAArC,CAJa,CAAjB;IASA3F,EAAAA,cAAc,CAACD,EAAD,EAAK9B,QAAQ,CAACf,KAAT,CAAepF,GAAf,CAAmB,UAAAsJ,IAAI;IAAA,WAAIA,IAAI,CAACV,MAAL,EAAJ;IAAA,GAAvB,CAAL,CAAd;IACH;;ICxBc,qBAASX,EAAT,EAAa9B,QAAb,EAAuB;IAClC,MAAMhB,SAAS,GAAGgB,QAAQ,CAAC0H,MAAT,KAAoB,IAApB,GAA2B,QAA3B,GACd1H,QAAQ,CAAC0H,MAAT,KAAoB,KAApB,GAA4B,QAA5B,GAAuC,IAD3C;IAIA5F,EAAAA,EAAE,CAACsF,SAAH,CAAaC,GAAb,CAAiBrI,SAAjB;IAEA+C,EAAAA,cAAc,CAACD,EAAD,EAAK,CACfM,aAAa,CAAC,KAAD,EAAQ,CACjBA,aAAa,CAAC,KAAD,EAAQpC,QAAQ,CAAClH,KAAjB,EAAwB;IAAC,aAAO;IAAR,GAAxB,CADI,EAEjBsJ,aAAa,CAAC,KAAD,EAAQpC,QAAQ,CAAClH,KAAjB,EAAwB;IAAC,aAAO;IAAR,GAAxB,CAFI,CAAR,EAGV;IAAC,aAAO;IAAR,GAHU,CADE,CAAL,CAAd;IAMH;;ICfc,uBAASgJ,EAAT,EAAa9B,QAAb,EAAuB;IAClCA,EAAAA,QAAQ,CAAC2H,aAAT,GAAyBC,KAAzB,CAA+B9F,EAA/B,EAAmCA,EAAE,CAACsE,UAAH,CAAc,CAAd,CAAnC;IACApG,EAAAA,QAAQ,CAAC2H,aAAT,GAAyBC,KAAzB,CAA+B9F,EAA/B,EAAmCA,EAAE,CAACsE,UAAH,CAAc,CAAd,CAAnC;;IAEA,MAAGpG,QAAQ,CAACX,IAAT,CAAcmF,WAAjB,EAA8B;IAC1BxE,IAAAA,QAAQ,CAAC2H,aAAT,GAAyBC,KAAzB,CAA+B9F,EAA/B,EAAmCA,EAAE,CAACsE,UAAH,CAAc,CAAd,CAAnC;IACH;;IAED,MAAGpG,QAAQ,CAACX,IAAT,CAAcoF,UAAjB,EAA6B;IACzBzE,IAAAA,QAAQ,CAAC6H,WAAT,CAAqB,MAArB,EAA6BD,KAA7B,CAAmC9F,EAAE,CAACsE,UAAH,CAAc,CAAd,CAAnC;IACApG,IAAAA,QAAQ,CAAC6H,WAAT,CAAqB,OAArB,EAA8BD,KAA9B,CAAoC9F,EAAE,CAACsE,UAAH,CAAc,CAAd,CAApC;IACApG,IAAAA,QAAQ,CAAC6H,WAAT,CAAqB,SAArB,EAAgCD,KAAhC,CAAsC9F,EAAE,CAACsE,UAAH,CAAc,CAAd,CAAtC;;IAEA,QAAGpG,QAAQ,CAACX,IAAT,CAAcmF,WAAjB,EAA8B;IAC1BxE,MAAAA,QAAQ,CAAC6H,WAAT,CAAqB,SAArB,EAAgCD,KAAhC,CAAsC9F,EAAE,CAACsE,UAAH,CAAc,CAAd,CAAtC;IACH;IACJ;IACJ;;ICjBc,wBAAStE,EAAT,EAAa9B,QAAb,EAAuB;IAClCA,EAAAA,QAAQ,CAAC2H,aAAT,GAAyBC,KAAzB,CAA+B9F,EAA/B,EAAmCA,EAAE,CAACsE,UAAH,CAAc,CAAd,CAAnC;;IAEA,MAAGpG,QAAQ,CAACX,IAAT,CAAcmF,WAAjB,EAA8B;IAC1BxE,IAAAA,QAAQ,CAAC2H,aAAT,GAAyBC,KAAzB,CAA+B9F,EAA/B,EAAmCA,EAAE,CAACsE,UAAH,CAAc,CAAd,CAAnC;IACH;;IAED,MAAGpG,QAAQ,CAACX,IAAT,CAAcoF,UAAjB,EAA6B;IACzBzE,IAAAA,QAAQ,CAAC6H,WAAT,CAAqB,OAArB,EAA8BD,KAA9B,CAAoC9F,EAAE,CAACsE,UAAH,CAAc,CAAd,CAApC;IACApG,IAAAA,QAAQ,CAAC6H,WAAT,CAAqB,SAArB,EAAgCD,KAAhC,CAAsC9F,EAAE,CAACsE,UAAH,CAAc,CAAd,CAAtC;;IAEA,QAAGpG,QAAQ,CAACX,IAAT,CAAcmF,WAAjB,EAA8B;IAC1BxE,MAAAA,QAAQ,CAAC6H,WAAT,CAAqB,SAArB,EAAgCD,KAAhC,CAAsC9F,EAAE,CAACsE,UAAH,CAAc,CAAd,CAAtC;IACH;IACJ;IACJ;;ICfc,0BAAStE,EAAT,EAAa9B,QAAb,EAAuB;IAClC,MAAGA,QAAQ,CAACX,IAAT,CAAcmF,WAAjB,EAA8B;IAC1BxE,IAAAA,QAAQ,CAAC2H,aAAT,GAAyBC,KAAzB,CAA+B9F,EAA/B,EAAmCA,EAAE,CAACsE,UAAH,CAAc,CAAd,CAAnC;IACH;;IAED,MAAGpG,QAAQ,CAACX,IAAT,CAAcoF,UAAjB,EAA6B;IACzBzE,IAAAA,QAAQ,CAAC6H,WAAT,CAAqB,SAArB,EAAgCD,KAAhC,CAAsC9F,EAAE,CAACsE,UAAH,CAAc,CAAd,CAAtC;;IAEA,QAAGpG,QAAQ,CAACX,IAAT,CAAcmF,WAAjB,EAA8B;IAC1BxE,MAAAA,QAAQ,CAAC6H,WAAT,CAAqB,SAArB,EAAgCD,KAAhC,CAAsC9F,EAAE,CAACsE,UAAH,CAAc,CAAd,CAAtC;IACH;IACJ;IACJ;;ICZc,gCAAStE,EAAT,EAAa9B,QAAb,EAAuB;IAClCA,EAAAA,QAAQ,CAAC2H,aAAT,GAAyBC,KAAzB,CAA+B9F,EAA/B,EAAmCA,EAAE,CAACsE,UAAH,CAAc,CAAd,CAAnC;;IAEA,MAAGpG,QAAQ,CAACX,IAAT,CAAcmF,WAAjB,EAA8B;IAC1BxE,IAAAA,QAAQ,CAAC2H,aAAT,GAAyBC,KAAzB,CAA+B9F,EAA/B,EAAmCA,EAAE,CAACsE,UAAH,CAAc,CAAd,CAAnC;IACH;;IAED,MAAGpG,QAAQ,CAACX,IAAT,CAAcoF,UAAjB,EAA6B;IACzBzE,IAAAA,QAAQ,CAAC6H,WAAT,CAAqB,OAArB,EAA8BD,KAA9B,CAAoC9F,EAAE,CAACsE,UAAH,CAAc,CAAd,CAApC;IACApG,IAAAA,QAAQ,CAAC6H,WAAT,CAAqB,SAArB,EAAgCD,KAAhC,CAAsC9F,EAAE,CAACsE,UAAH,CAAc,CAAd,CAAtC;;IAEA,QAAGpG,QAAQ,CAACX,IAAT,CAAcmF,WAAjB,EAA8B;IAC1BxE,MAAAA,QAAQ,CAAC6H,WAAT,CAAqB,SAArB,EAAgCD,KAAhC,CAAsC9F,EAAE,CAACsE,UAAH,CAAc,CAAd,CAAtC;IACH;IACJ;IAEJ;;ICdc,4BAAStE,EAAT,EAAa9B,QAAb,EAAuB;IAClCwF,EAAAA,qBAAmB,CAAC1D,EAAD,EAAK9B,QAAL,CAAnB;;IAEA,MAAGA,QAAQ,CAACX,IAAT,CAAcuG,YAAd,IAA8B5F,QAAQ,CAACX,IAAT,CAAcyG,QAA/C,EAAyD;IACrD,QAAMvC,KAAK,GAAGvD,QAAQ,CAAC6H,WAAT,CAAqB7H,QAAQ,CAACX,IAAT,CAAcyG,QAAnC,CAAd;IACA,QAAMtD,MAAM,GAAGV,EAAE,CAACsE,UAAH,CAActE,EAAE,CAACsE,UAAH,CAAc/L,MAAd,GAAuB,CAArC,CAAf;IAEAkJ,IAAAA,KAAK,CAACqE,KAAN,CAAYpF,MAAZ,EAAoB4E,SAApB,CAA8BC,GAA9B,CAAkC,qBAAlC;IACH;IACJ;;ICXc,wBAASvF,EAAT,EAAa9B,QAAb,EAAuB;IAClCA,EAAAA,QAAQ,CAAC2H,aAAT,GAAyBC,KAAzB,CAA+B9F,EAA/B,EAAmCA,EAAE,CAACsE,UAAH,CAAc,CAAd,CAAnC;IACApG,EAAAA,QAAQ,CAAC2H,aAAT,GAAyBC,KAAzB,CAA+B9F,EAA/B,EAAmCA,EAAE,CAACsE,UAAH,CAAc,CAAd,CAAnC;IACApG,EAAAA,QAAQ,CAAC2H,aAAT,GAAyBC,KAAzB,CAA+B9F,EAA/B,EAAmCA,EAAE,CAACsE,UAAH,CAAc,CAAd,CAAnC;;IAEA,MAAGpG,QAAQ,CAACX,IAAT,CAAcmF,WAAjB,EAA8B;IAC1BxE,IAAAA,QAAQ,CAAC2H,aAAT,GAAyBC,KAAzB,CAA+B9F,EAA/B,EAAmCA,EAAE,CAACsE,UAAH,CAAc,CAAd,CAAnC;IACH;;IAED,MAAGpG,QAAQ,CAACX,IAAT,CAAcoF,UAAjB,EAA6B;IACzBzE,IAAAA,QAAQ,CAAC6H,WAAT,CAAqB,OAArB,EAA8BD,KAA9B,CAAoC9F,EAAE,CAACsE,UAAH,CAAc,CAAd,CAApC;IACApG,IAAAA,QAAQ,CAAC6H,WAAT,CAAqB,MAArB,EAA6BD,KAA7B,CAAmC9F,EAAE,CAACsE,UAAH,CAAc,CAAd,CAAnC;IACApG,IAAAA,QAAQ,CAAC6H,WAAT,CAAqB,OAArB,EAA8BD,KAA9B,CAAoC9F,EAAE,CAACsE,UAAH,CAAc,CAAd,CAApC;IACApG,IAAAA,QAAQ,CAAC6H,WAAT,CAAqB,SAArB,EAAgCD,KAAhC,CAAsC9F,EAAE,CAACsE,UAAH,CAAc,CAAd,CAAtC;;IAEA,QAAGpG,QAAQ,CAACX,IAAT,CAAcmF,WAAjB,EAA8B;IAC1BxE,MAAAA,QAAQ,CAAC6H,WAAT,CAAqB,SAArB,EAAgCD,KAAhC,CAAsC9F,EAAE,CAACsE,UAAH,CAAc,CAAd,CAAtC;IACH;IACJ;IACJ;;ICnBc,wBAAStE,EAAT,EAAa9B,QAAb,EAAuB;IAClCA,EAAAA,QAAQ,CAAC2H,aAAT,GAAyBC,KAAzB,CAA+B9F,EAA/B,EAAmCA,EAAE,CAACsE,UAAH,CAAc,CAAd,CAAnC;IACApG,EAAAA,QAAQ,CAAC2H,aAAT,GAAyBC,KAAzB,CAA+B9F,EAA/B,EAAmCA,EAAE,CAACsE,UAAH,CAAc,CAAd,CAAnC;IACApG,EAAAA,QAAQ,CAAC2H,aAAT,GAAyBC,KAAzB,CAA+B9F,EAA/B,EAAmCA,EAAE,CAACsE,UAAH,CAAc,CAAd,CAAnC;IACApG,EAAAA,QAAQ,CAAC2H,aAAT,GAAyBC,KAAzB,CAA+B9F,EAA/B,EAAmCA,EAAE,CAACsE,UAAH,CAAc,CAAd,CAAnC;;IAEA,MAAGpG,QAAQ,CAACX,IAAT,CAAcmF,WAAjB,EAA8B;IAC1BxE,IAAAA,QAAQ,CAAC2H,aAAT,GAAyBC,KAAzB,CAA+B9F,EAA/B,EAAmCA,EAAE,CAACsE,UAAH,CAAc,CAAd,CAAnC;IACH;;IAED,MAAGpG,QAAQ,CAACX,IAAT,CAAcoF,UAAjB,EAA6B;IACzBzE,IAAAA,QAAQ,CAAC6H,WAAT,CAAqB,OAArB,EAA8BD,KAA9B,CAAoC9F,EAAE,CAACsE,UAAH,CAAc,CAAd,CAApC;IACApG,IAAAA,QAAQ,CAAC6H,WAAT,CAAqB,OAArB,EAA8BD,KAA9B,CAAoC9F,EAAE,CAACsE,UAAH,CAAc,CAAd,CAApC;IACApG,IAAAA,QAAQ,CAAC6H,WAAT,CAAqB,MAArB,EAA6BD,KAA7B,CAAmC9F,EAAE,CAACsE,UAAH,CAAc,CAAd,CAAnC;IACApG,IAAAA,QAAQ,CAAC6H,WAAT,CAAqB,OAArB,EAA8BD,KAA9B,CAAoC9F,EAAE,CAACsE,UAAH,CAAc,CAAd,CAApC;IACApG,IAAAA,QAAQ,CAAC6H,WAAT,CAAqB,SAArB,EAAgCD,KAAhC,CAAsC9F,EAAE,CAACsE,UAAH,CAAc,CAAd,CAAtC;;IAEA,QAAGpG,QAAQ,CAACX,IAAT,CAAcmF,WAAjB,EAA8B;IAC1BxE,MAAAA,QAAQ,CAAC6H,WAAT,CAAqB,SAArB,EAAgCD,KAAhC,CAAsC9F,EAAE,CAACsE,UAAH,CAAc,EAAd,CAAtC;IACH;IACJ;IACJ;;;;;;;;;;;;;;ACbD,mBAAe;IACXpD,EAAAA,OAAO,EAAPA,SADW;IAEX8E,EAAAA,SAAS,EAATA,SAFW;IAGXzE,EAAAA,KAAK,EAALA,OAHW;IAIXC,EAAAA,KAAK,EAALA,OAJW;IAKXJ,EAAAA,IAAI,EAAJA,MALW;IAMXD,EAAAA,QAAQ,EAARA,UANW;IAOX8E,EAAAA,KAAK,EAALA;IAPW,CAAf;;ICJA;;;;;;AAKA,wBAAe;IACX1I,EAAAA,IAAI,EAAEiF,OADK;IAEXpF,EAAAA,KAAK,EAAE8I,QAFI;IAGX7I,EAAAA,QAAQ,EAAE8I;IAHC,CAAf;;QCKqBH;;;;;IAEjB;;;;;;;;;;IAUA;;;;;;;;;;;;;;;;;;IAmBA,qBAAYhG,EAAZ,EAAgBhJ,KAAhB,EAAuBqC,UAAvB,EAAmC;IAAA;;IAAA;;IAC/B,QAAG,CAAC0D,QAAQ,CAACiD,EAAD,EAAKI,WAAL,CAAZ,EAA+B;IAC3B7J,MAAAA,KAAK,CAACuK,eAAe,CAACtD,OAAjB,CAAL;IACH;;IAED,QAAG3E,QAAQ,CAAC7B,KAAD,CAAR,IAAmB,CAACqC,UAAvB,EAAmC;IAC/BA,MAAAA,UAAU,GAAGrC,KAAb;IACAA,MAAAA,KAAK,GAAG4G,SAAR;IACH;;IAED,QAAML,IAAI,GAAGlE,UAAU,CAACkE,IAAX,IAAmB6I,aAAa,CAAC7I,IAA9C;IAEA,WAAOlE,UAAU,CAACkE,IAAlB;IAEA,mFAAMhE,MAAM,CAACC,MAAP,CAAc;IAChBqJ,MAAAA,aAAa,EAAE7L,KADC;IAEhBoG,MAAAA,KAAK,EAAEgJ,aAAa,CAAChJ,KAFL;IAGhBC,MAAAA,QAAQ,EAAE+I,aAAa,CAAC/I,QAHR;IAIhBK,MAAAA,KAAK,EAAEgE,KAAK,CAAC5C,IAAN,CAAWzF,UAAU,CAACsI,QAAX,IAAuB,IAAlC;IAJS,KAAd,EAKHtI,UALG,CAAN;;IAOA,QAAG,CAAC,MAAKkE,IAAT,EAAe;IACX,YAAKA,IAAL,GAAYA,IAAZ;IACH;;IAED,UAAKuI,KAAL,CAAW9F,EAAX;;IAzB+B;IA0BlC;IAED;;;;;;;;;;IA4GA;;;;;;8BAMMA,IAAI;IACN,2EAAYA,EAAZ;;IAEA,WAAKzC,IAAL,CAAU8I,OAAV,CAAkB,IAAlB;IAEA,aAAO,IAAP;IACH;IAED;;;;;;;;iCAKS;IACL;IACA,4EAFK;IAKL;IACA;;;IACA,UAAG,KAAKjJ,KAAL,CAAW6I,KAAX,CAAiB,KAAK1I,IAAL,CAAU5E,IAA3B,CAAH,EAAqC;IACjC,aAAKyE,KAAL,CAAW6I,KAAX,CAAiB,KAAK1I,IAAL,CAAU5E,IAA3B,EAAiC,KAAKqH,EAAtC,EAA0C,IAA1C;IACH,OATI;IAYL;IACA;;;IACA,WAAKzC,IAAL,CAAU+I,QAAV,CAAmB,IAAnB,EAdK;;IAiBL,aAAO,KAAKtG,EAAZ;IACH;IAED;;;;;;;;;8BAMMrJ,IAAI;IAAA;;IACN,UAAG,CAAC,KAAK+G,KAAL,CAAWoE,OAAf,EAAwB;IACpB,aAAK9K,KAAL,GAAa,KAAK6L,aAAlB;IACH;;IAEDrL,MAAAA,WAAW,CAAC,KAAK+F,IAAL,CAAUiB,MAAX,CAAX,KAAkC,KAAKjB,IAAL,CAAUiB,MAAV,GAAmB,KAAKA,MAA1D;IACAhH,MAAAA,WAAW,CAAC,KAAK+F,IAAL,CAAUsF,aAAX,CAAX,KAAyC,KAAKtF,IAAL,CAAUsF,aAAV,GAA0B,KAAKA,aAAxE;IAEA,WAAKnF,KAAL,CAAWmB,KAAX,CAAiB,YAAM;IACnB,QAAA,MAAI,CAACtB,IAAL,CAAUoE,QAAV,CAAmB,MAAnB,EAAyBhL,EAAzB;IACH,OAFD;IAIA,WAAK4G,IAAL,CAAUuE,OAAV,CAAkB,IAAlB;IAEA,aAAO,KAAKvD,IAAL,CAAU,OAAV,CAAP;IACH;IAED;;;;;;;;;6BAMK5H,IAAI;IACL,WAAK+G,KAAL,CAAWY,IAAX,CAAgB3H,EAAhB;IACA,WAAK4G,IAAL,CAAUgJ,OAAV,CAAkB,IAAlB;IAEA,aAAO,KAAKhI,IAAL,CAAU,MAAV,CAAP;IACH;IAED;;;;;;;;;8BAMM5H,IAAI;IAAA;;IACN,WAAKK,KAAL,GAAa,KAAK6L,aAAlB;IACA,WAAKnF,KAAL,CAAW8I,KAAX,CAAiB;IAAA,eAAM,MAAI,CAAC7E,QAAL,CAAc,MAAd,EAAoBhL,EAApB,CAAN;IAAA,OAAjB;IACA,WAAK4G,IAAL,CAAUiJ,KAAV,CAAgB,IAAhB;IAEA,aAAO,KAAKjI,IAAL,CAAU,OAAV,CAAP;IACH;IAED;;;;;;;;;;;kCAQUvH,OAAO;IACb,WAAKuG,IAAL,CAAUa,SAAV,CAAoB,IAApB,EAA0BpH,KAA1B;IAEA,aAAO,IAAP;IACH;IAED;;;;;;;;;;;kCAQUA,OAAO;IACb,WAAKuG,IAAL,CAAUY,SAAV,CAAoB,IAApB,EAA0BnH,KAA1B;IAEA,aAAO,IAAP;IACH;IAED;;;;;;;;;;sCAOcqC,YAAY;IACtB,aAAO6H,OAAO,CAACpC,IAAR,CAAavF,MAAM,CAACC,MAAP,CAAc;IAC9B4D,QAAAA,KAAK,EAAE,KAAKA,KADkB;IAE9BC,QAAAA,QAAQ,EAAE,KAAKA;IAFe,OAAd,EAGjBhE,UAHiB,CAAb,CAAP;IAIH;IAED;;;;;;;;;;;mCAQWrC,OAAOqC,YAAY;IAC1B,aAAO+H,IAAI,CAACtC,IAAL,CAAU9H,KAAV,EAAiBuC,MAAM,CAACC,MAAP,CAAc;IAClC4D,QAAAA,KAAK,EAAE,KAAKA,KADsB;IAElCC,QAAAA,QAAQ,EAAE,KAAKA;IAFmB,OAAd,EAGrBhE,UAHqB,CAAjB,CAAP;IAIH;IAED;;;;;;;;;;;oCAQYrC,OAAOqC,YAAY;IAC3B,aAAOmI,KAAK,CAAC1C,IAAN,CAAW9H,KAAX,EAAkBuC,MAAM,CAACC,MAAP,CAAc;IACnC4D,QAAAA,KAAK,EAAE,KAAKA,KADuB;IAEnCC,QAAAA,QAAQ,EAAE,KAAKA;IAFoB,OAAd,EAGtBhE,UAHsB,CAAlB,CAAP;IAIH;IAED;;;;;;;;;;;oCAQY8D,OAAO9D,YAAY;IAC3B,aAAOkI,KAAK,CAACzC,IAAN,CAAW3B,KAAX,EAAkB5D,MAAM,CAACC,MAAP,CAAc;IACnC4D,QAAAA,KAAK,EAAE,KAAKA,KADuB;IAEnCC,QAAAA,QAAQ,EAAE,KAAKA;IAFoB,OAAd,EAGtBhE,UAHsB,CAAlB,CAAP;IAIH;IAED;;;;;;;;+BAvRW;IACP,aAAO,KAAKoN,KAAZ;IACH;0BAEQzP,OAAO;IACZ,UAAG,CAAC+F,QAAQ,CAAC/F,KAAD,EAAQ,CAAC2G,IAAD,EAAO,QAAP,EAAiB,UAAjB,CAAR,CAAZ,EAAmD;IAC/CpH,QAAAA,KAAK,CAACuK,eAAe,CAACvD,IAAjB,CAAL;IACH;;IAED,WAAKkJ,KAAL,GAAa,CAACC,KAAK,CAAC1P,KAAD,CAAL,IAAgBA,KAAjB,EAAwB8H,IAAxB,CAA6BvF,MAAM,CAACC,MAAP,CAAc,KAAKoD,mBAAL,EAAd,EAA0C;IAChFiG,QAAAA,aAAa,EAAE,KAAKtF,IAAL,GAAY,KAAKA,IAAL,CAAUsF,aAAtB,GAAsCjF;IAD2B,OAA1C,CAA7B,CAAb;IAIA,WAAK6I,KAAL,CAAWE,WAAX,CAAuB,IAAvB;;IAEA,UAAG,KAAK3P,KAAR,EAAe;IACX,aAAKyP,KAAL,CAAWzP,KAAX,GAAmB,KAAKuG,IAAL,CAAUyB,eAAV,CAA0B,IAA1B,EAAgC,KAAKhI,KAAL,CAAWA,KAA3C,CAAnB;IACH,OAFD,MAGK,IAAG,CAAC,KAAKA,KAAT,EAAgB;IACjB,aAAKA,KAAL,GAAa,KAAK6L,aAAlB;IACH;;IAED,WAAK7C,EAAL,IAAW,KAAKW,MAAL,EAAX;IACH;IAED;;;;;;;;+BAKa;IACT,aAAO/J,UAAU,CAAC,KAAKqI,OAAN,CAAV,GAA2B,KAAKA,OAAL,CAAa,IAAb,CAA3B,GAAgD,KAAKA,OAA5D;IACH;0BAEUjI,OAAO;IACd,WAAKiI,OAAL,GAAejI,KAAf;IACH;IAED;;;;;;;;+BAKY;IACR,aAAO,KAAK4P,MAAZ;IACH;0BAESlJ,OAAO;IACb,UAAG,CAACX,QAAQ,CAACW,KAAD,EAAQgE,KAAR,CAAZ,EAA4B;IACxBnL,QAAAA,KAAK,CAACuK,eAAe,CAACpD,KAAjB,CAAL;IACH;;IAED,WAAKkJ,MAAL,GAAclJ,KAAd;IACH;IAED;;;;;;;;+BAKY;IACR,aAAO,KAAKH,IAAL,GAAY,KAAKA,IAAL,CAAUvG,KAAtB,GAA8B,IAArC;IACH;0BAESA,OAAO;IACb,UAAG,CAAC,KAAKuG,IAAT,EAAe;IACX,cAAM,IAAI9G,KAAJ,CAAU,4CAAV,CAAN;IACH;;IAED,UAAGO,KAAK,YAAY2F,SAApB,EAA+B;IAC3B,aAAKY,IAAL,CAAUvG,KAAV,GAAkBA,KAAlB;IACH,OAFD,MAGK,IAAG,KAAKA,KAAR,EAAe;IAChB,aAAKuG,IAAL,CAAUvG,KAAV,GAAkB,KAAKuG,IAAL,CAAUvG,KAAV,CAAgB6P,KAAhB,CAAsB7P,KAAtB,CAAlB;IACH,OAFI,MAGA;IACD,aAAKuG,IAAL,CAAUvG,KAAV,GAAkB,KAAKuG,IAAL,CAAUyB,eAAV,CAA0B,IAA1B,EAAgChI,KAAhC,CAAlB;IACH;;IAED,WAAKgJ,EAAL,IAAW,KAAKW,MAAL,EAAX;IACH;IAED;;;;;;;;+BAKoB;IAChB,UAAG/J,UAAU,CAAC,KAAKsI,cAAN,CAAV,IAAmC,CAAC,KAAKA,cAAL,CAAoBvG,IAA3D,EAAiE;IAC7D,eAAO,KAAKuG,cAAL,EAAP;IACH;;IAED,UAAG,CAAC1H,WAAW,CAAC,KAAK0H,cAAN,CAAZ,IAAqC,CAACzH,MAAM,CAAC,KAAKyH,cAAN,CAA/C,EAAsE;IAClE,eAAO,KAAKA,cAAZ;IACH;;IAED,aAAO,KAAK3B,IAAL,GAAY,KAAKA,IAAL,CAAUU,YAAV,EAAZ,GAAuCL,SAA9C;IACH;0BAEiB5G,OAAO;IACrB,WAAKkI,cAAL,GAAsBlI,KAAtB;IACH;;;;IA2LD;;;;;qCAKoB;IAChB,aAAO,WAAP;IACH;IAED;;;;;;;;;;uCAOsBA,OAAO;IACzB,UAAG,CAAC+F,QAAQ,CAAC/F,KAAD,EAAQ2G,IAAR,CAAZ,EAA2B;IACvBpH,QAAAA,KAAK,CAACuK,eAAe,CAACvD,IAAjB,CAAL;IACH;;IAED6I,MAAAA,aAAa,CAAC7I,IAAd,GAAqBvG,KAArB;IACH;IAED;;;;;;;;;wCAMuBA,OAAO;IAC1B,UAAG,CAAC+F,QAAQ,CAAC/F,KAAD,EAAQ,QAAR,CAAZ,EAA+B;IAC3BT,QAAAA,KAAK,CAACuK,eAAe,CAAC1D,KAAjB,CAAL;IACH;;IAEDgJ,MAAAA,aAAa,CAAChJ,KAAd,GAAsBpG,KAAtB;IACH;IAED;;;;;;;;;2CAM0BA,OAAO;IAC7B,UAAG,CAAC+F,QAAQ,CAAC/F,KAAD,EAAQ,QAAR,CAAZ,EAA+B;IAC3BT,QAAAA,KAAK,CAACuK,eAAe,CAACzD,QAAjB,CAAL;IACH;;IAED+I,MAAAA,aAAa,CAAC/I,QAAd,GAAyBrG,KAAzB;IACH;;;+BAtDqB;IAClB,aAAOoP,aAAP;IACH;;;;MA9VkC3F;;;;;;;;"} \ No newline at end of file diff --git a/dist/flipclock.min.js b/dist/flipclock.min.js new file mode 100644 index 00000000..ff8eb9c6 --- /dev/null +++ b/dist/flipclock.min.js @@ -0,0 +1,2 @@ +!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.FlipClock=t()}(this,function(){"use strict";function _typeof(e){return(_typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,t){for(var n=0;n1?t-1:0),i=1;i=i)return t[n]}return null}function stringFromCharCodeBy(e,t){return String.fromCharCode(t(findRange(e),e.charCodeAt(0)))}function next(e){return format(e.toString().split("").map(function(e){return stringFromCharCodeBy(e,function(e,t){return!e||te.min?t-1:e.max})}).join(""),_typeof(e))}function validate(e){for(var t=!1,n=arguments.length,i=new Array(n>1?n-1:0),r=1;r1?n-1:0),r=1;r1&&void 0!==arguments[1]&&arguments[1];return this.render(),this.parent=e,t?this.parent.insertBefore(this.el,t):this.parent.appendChild(this.el),this.el}},{key:"className",get:function get(){return kebabCase(this.constructor.defineName())}},{key:"el",get:function get(){return this.$el},set:function set(e){validate(e,null,HTMLElement)||error(i.element),this.$el=e}},{key:"parent",get:function get(){return this.$parent},set:function set(e){this.$parent=e}},{key:"theme",get:function get(){return this.$theme},set:function set(e){validate(e,"object")||error(i.value),this.$theme=e}},{key:"language",get:function get(){return this.$language},set:function set(e){isString(e)&&(e=language(e)),validate(e,"object")||error(i.language),this.$language=e}}]),DomComponent}(e),Ie=function(e){function Divider(){return _classCallCheck(this,Divider),_possibleConstructorReturn(this,_getPrototypeOf(Divider).apply(this,arguments))}return _inherits(Divider,e),_createClass(Divider,null,[{key:"defineName",value:function defineName(){return"Divider"}}]),Divider}(We),Ye=function(e){function ListItem(e,t){return _classCallCheck(this,ListItem),_possibleConstructorReturn(this,_getPrototypeOf(ListItem).call(this,Object.assign({value:e},isObject(e)?e:null,t)))}return _inherits(ListItem,e),_createClass(ListItem,null,[{key:"defineName",value:function defineName(){return"ListItem"}}]),ListItem}(We),xe=function(e){function List(e,t){return _classCallCheck(this,List),_possibleConstructorReturn(this,_getPrototypeOf(List).call(this,Object.assign({value:e,items:[]},isObject(e)?e:null,t)))}return _inherits(List,e),_createClass(List,[{key:"createListItem",value:function createListItem(e,t){var n=new Ye(e,Object.assign({theme:this.theme,language:this.language},t));return this.$items.push(n),n}},{key:"value",get:function get(){return this.$value},set:function set(e){this.$value=e}},{key:"items",get:function get(){return this.$items},set:function set(e){this.$items=e}}],[{key:"defineName",value:function defineName(){return"List"}}]),List}(We),Ue=function(e){function Group(e,t){return _classCallCheck(this,Group),_possibleConstructorReturn(this,_getPrototypeOf(Group).call(this,Object.assign({items:isArray(e)?e:[]},isObject(e)?e:null,t)))}return _inherits(Group,e),_createClass(Group,null,[{key:"defineName",value:function defineName(){return"Group"}}]),Group}(We),Ze=function(e){function Label(e,t){return _classCallCheck(this,Label),_possibleConstructorReturn(this,_getPrototypeOf(Label).call(this,Object.assign({label:e},isObject(e)?e:null,t)))}return _inherits(Label,e),_createClass(Label,null,[{key:"defineName",value:function defineName(){return"Label"}}]),Label}(We),Be=function(e){function Timer(e){return _classCallCheck(this,Timer),_possibleConstructorReturn(this,_getPrototypeOf(Timer).call(this,Object.assign({count:0,handle:null,started:null,running:!1,interval:isNumber(e)?e:null},isObject(e)?e:null)))}return _inherits(Timer,e),_createClass(Timer,[{key:"reset",value:function reset(e){var t=this;return this.stop(function(){t.count=0,t.start(function(){return callback.call(t,e)}),t.emit("reset")}),this}},{key:"start",value:function start(e){var t=this;this.started=new Date,this.lastLoop=Date.now(),this.running=!0,this.emit("start");return function loop(){return Date.now()-t.lastLoop>=t.interval&&(callback.call(t,e),t.lastLoop=Date.now(),t.emit("interval"),t.count++),t.handle=window.requestAnimationFrame(loop),t}()}},{key:"stop",value:function stop(e){var t=this;return this.isRunning&&setTimeout(function(){window.cancelAnimationFrame(t.handle),t.running=!1,callback.call(t,e),t.emit("stop")}),this}},{key:"elapsed",get:function get(){return this.lastLoop?this.lastLoop-(this.started?this.started.getTime():(new Date).getTime()):0}},{key:"isRunning",get:function get(){return!0===this.running}},{key:"isStopped",get:function get(){return!1===this.running}}],[{key:"defineName",value:function defineName(){return"Timer"}}]),Timer}(e),qe=function(e){function Counter(){return _classCallCheck(this,Counter),_possibleConstructorReturn(this,_getPrototypeOf(Counter).apply(this,arguments))}return _inherits(Counter,e),_createClass(Counter,[{key:"increment",value:function increment(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;e.value=this.value.value+t}},{key:"decrement",value:function decrement(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1;e.value=this.value.value-t}}],[{key:"defineName",value:function defineName(){return"Counter"}}]),Counter}(r),Je=function(e){function MinuteCounter(){return _classCallCheck(this,MinuteCounter),_possibleConstructorReturn(this,_getPrototypeOf(MinuteCounter).apply(this,arguments))}return _inherits(MinuteCounter,e),_createClass(MinuteCounter,[{key:"defaultDataType",value:function defaultDataType(){return Date}},{key:"defaultAttributes",value:function defaultAttributes(){return{showSeconds:!0,showLabels:!0}}},{key:"shouldStop",value:function shouldStop(e){if(isNull(e.stopAt)||isUndefined(e.stopAt))return!1;if(this.stopAt instanceof Date)return this.countdown?this.stopAt.getTime()>=this.value.value.getTime():this.stopAt.getTime()<=this.value.value.getTime();if(isNumber(this.stopAt)){var t=Math.floor((this.value.value.getTime()-this.originalValue.getTime())/1e3);return this.countdown?this.stopAt>=t:this.stopAt<=t}throw new Error("the stopAt property must be an instance of Date or Number.")}},{key:"increment",value:function increment(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;e.value=new Date(this.value.value.getTime()+t+((new Date).getTime()-e.timer.lastLoop))}},{key:"decrement",value:function decrement(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;e.value=new Date(this.value.value.getTime()-t-((new Date).getTime()-e.timer.lastLoop))}},{key:"format",value:function format(e,t){var n=e.timer.isRunning?e.timer.started:new Date(Date.now()-50);return[[this.getMinutes(t,n)],this.showSeconds?[this.getSeconds(t,n)]:null].filter(noop)}},{key:"getMinutes",value:function getMinutes(e,t){return round(this.getTotalSeconds(e,t)/60)}},{key:"getSeconds",value:function getSeconds(e,t){var n=this.getTotalSeconds(e,t);return Math.abs(Math.ceil(60===n?0:n%60))}},{key:"getTotalSeconds",value:function getTotalSeconds(e,t){return e.getTime()===t.getTime()?0:Math.round((e.getTime()-t.getTime())/1e3)}}],[{key:"defineName",value:function defineName(){return"MinuteCounter"}}]),MinuteCounter}(r),Ke=function(e){function HourCounter(){return _classCallCheck(this,HourCounter),_possibleConstructorReturn(this,_getPrototypeOf(HourCounter).apply(this,arguments))}return _inherits(HourCounter,e),_createClass(HourCounter,[{key:"format",value:function format(e,t){var n=e.timer.started?t:new Date,i=e.originalValue||t,r=this.countdown?i:n,s=this.countdown?n:i,a=[[this.getHours(r,s)],[this.getMinutes(r,s)]];return this.showSeconds&&a.push([this.getSeconds(r,s)]),a}},{key:"getMinutes",value:function getMinutes(e,t){return Math.abs(_get(_getPrototypeOf(HourCounter.prototype),"getMinutes",this).call(this,e,t)%60)}},{key:"getHours",value:function getHours(e,t){return Math.floor(this.getTotalSeconds(e,t)/60/60)}}],[{key:"defineName",value:function defineName(){return"HourCounter"}}]),HourCounter}(Je),Qe=function(e){function DayCounter(){return _classCallCheck(this,DayCounter),_possibleConstructorReturn(this,_getPrototypeOf(DayCounter).apply(this,arguments))}return _inherits(DayCounter,e),_createClass(DayCounter,[{key:"format",value:function format(e,t){var n=e.started?t:new Date,i=e.originalValue||t,r=this.countdown?i:n,s=this.countdown?n:i,a=[[this.getDays(r,s)],[this.getHours(r,s)],[this.getMinutes(r,s)]];return this.showSeconds&&a.push([this.getSeconds(r,s)]),a}},{key:"getDays",value:function getDays(e,t){return Math.floor(this.getTotalSeconds(e,t)/60/60/24)}},{key:"getHours",value:function getHours(e,t){return Math.abs(_get(_getPrototypeOf(DayCounter.prototype),"getHours",this).call(this,e,t)%24)}}],[{key:"defineName",value:function defineName(){return"DayCounter"}}]),DayCounter}(Ke),Xe=function(e){function TwentyFourHourClock(){return _classCallCheck(this,TwentyFourHourClock),_possibleConstructorReturn(this,_getPrototypeOf(TwentyFourHourClock).apply(this,arguments))}return _inherits(TwentyFourHourClock,e),_createClass(TwentyFourHourClock,[{key:"defaultDataType",value:function defaultDataType(){return Date}},{key:"defaultValue",value:function defaultValue(){return new Date}},{key:"defaultAttributes",value:function defaultAttributes(){return{showSeconds:!0,showLabels:!1}}},{key:"format",value:function format(e,t){t||(t=new Date);var n=[[t.getHours()],[t.getMinutes()]];return this.showSeconds&&n.push([t.getSeconds()]),n}},{key:"increment",value:function increment(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;e.value=new Date(this.value.value.getTime()+t+((new Date).getTime()-e.timer.lastLoop))}},{key:"decrement",value:function decrement(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;e.value=new Date(this.value.value.getTime()-t-((new Date).getTime()-e.timer.lastLoop))}}],[{key:"defineName",value:function defineName(){return"TwentyFourHourClock"}}]),TwentyFourHourClock}(r),et=function(e){function TwelveHourClock(){return _classCallCheck(this,TwelveHourClock),_possibleConstructorReturn(this,_getPrototypeOf(TwelveHourClock).apply(this,arguments))}return _inherits(TwelveHourClock,e),_createClass(TwelveHourClock,[{key:"defaultAttributes",value:function defaultAttributes(){return{showLabels:!1,showSeconds:!0,showMeridium:!0}}},{key:"format",value:function format(e,t){t||(t=new Date);var n=t.getHours(),i=[n>12?n-12:0===n?12:n,t.getMinutes()];return this.meridium=n>12?"pm":"am",this.showSeconds&&i.push(t.getSeconds()),i}}],[{key:"defineName",value:function defineName(){return"TwelveHourClock"}}]),TwelveHourClock}(Xe),tt=function(e){function WeekCounter(){return _classCallCheck(this,WeekCounter),_possibleConstructorReturn(this,_getPrototypeOf(WeekCounter).apply(this,arguments))}return _inherits(WeekCounter,e),_createClass(WeekCounter,[{key:"format",value:function format(e,t){var n=e.timer.started?t:new Date,i=e.originalValue||t,r=this.countdown?i:n,s=this.countdown?n:i,a=[[this.getWeeks(r,s)],[this.getDays(r,s)],[this.getHours(r,s)],[this.getMinutes(r,s)]];return this.showSeconds&&a.push([this.getSeconds(r,s)]),a}},{key:"getWeeks",value:function getWeeks(e,t){return Math.floor(this.getTotalSeconds(e,t)/60/60/24/7)}},{key:"getDays",value:function getDays(e,t){return Math.abs(_get(_getPrototypeOf(WeekCounter.prototype),"getDays",this).call(this,e,t)%7)}}],[{key:"defineName",value:function defineName(){return"WeekCounter"}}]),WeekCounter}(Qe),nt=function(e){function YearCounter(){return _classCallCheck(this,YearCounter),_possibleConstructorReturn(this,_getPrototypeOf(YearCounter).apply(this,arguments))}return _inherits(YearCounter,e),_createClass(YearCounter,[{key:"format",value:function format(e,t){var n=e.timer.started?t:new Date,i=e.originalValue||t,r=this.countdown?i:n,s=this.countdown?n:i,a=[[this.getYears(r,s)],[this.getWeeks(r,s)],[this.getDays(r,s)],[this.getHours(r,s)],[this.getMinutes(r,s)]];return this.showSeconds&&a.push([this.getSeconds(r,s)]),a}},{key:"getYears",value:function getYears(e,t){return Math.floor(Math.max(0,this.getTotalSeconds(e,t)/60/60/24/7/52))}},{key:"getWeeks",value:function getWeeks(e,t){return Math.abs(_get(_getPrototypeOf(YearCounter.prototype),"getWeeks",this).call(this,e,t)%52)}}],[{key:"defineName",value:function defineName(){return"YearCounter"}}]),YearCounter}(tt),it=Object.freeze({Counter:qe,DayCounter:Qe,MinuteCounter:Je,HourCounter:Ke,TwelveHourClock:et,TwentyFourHourClock:Xe,WeekCounter:tt,YearCounter:nt}),rt={face:qe,theme:{Divider:Divider$1,FlipClock:FlipClock,Group:Group$1,Label:Label$1,List:List$1,ListItem:ListItem$1,faces:Object.freeze({DayCounter:DayCounter$1,HourCounter:HourCounter$1,MinuteCounter:MinuteCounter$1,TwelveHourClock:TwelveHourClock$1,TwentyFourHourClock:TwentyFourHourClock$1,WeekCounter:WeekCounter$1,YearCounter:YearCounter$1})},language:_};return function(e){function FlipClock(e,t,n){var r;_classCallCheck(this,FlipClock),validate(e,HTMLElement)||error(i.element),isObject(t)&&!n&&(n=t,t=void 0);var s=n.face||rt.face;return delete n.face,(r=_possibleConstructorReturn(this,_getPrototypeOf(FlipClock).call(this,Object.assign({originalValue:t,theme:rt.theme,language:rt.language,timer:Be.make(n.interval||1e3)},n)))).face||(r.face=s),r.mount(e),r}return _inherits(FlipClock,e),_createClass(FlipClock,[{key:"mount",value:function mount(e){return _get(_getPrototypeOf(FlipClock.prototype),"mount",this).call(this,e),this.face.mounted(this),this}},{key:"render",value:function render(){return _get(_getPrototypeOf(FlipClock.prototype),"render",this).call(this),this.theme.faces[this.face.name]&&this.theme.faces[this.face.name](this.el,this),this.face.rendered(this),this.el}},{key:"start",value:function start(e){var t=this;return this.timer.started||(this.value=this.originalValue),isUndefined(this.face.stopAt)&&(this.face.stopAt=this.stopAt),isUndefined(this.face.originalValue)&&(this.face.originalValue=this.originalValue),this.timer.start(function(){t.face.interval(t,e)}),this.face.started(this),this.emit("start")}},{key:"stop",value:function stop(e){return this.timer.stop(e),this.face.stopped(this),this.emit("stop")}},{key:"reset",value:function reset(e){var t=this;return this.value=this.originalValue,this.timer.reset(function(){return t.interval(t,e)}),this.face.reset(this),this.emit("reset")}},{key:"increment",value:function increment(e){return this.face.increment(this,e),this}},{key:"decrement",value:function decrement(e){return this.face.decrement(this,e),this}},{key:"createDivider",value:function createDivider(e){return Ie.make(Object.assign({theme:this.theme,language:this.language},e))}},{key:"createList",value:function createList(e,t){return xe.make(e,Object.assign({theme:this.theme,language:this.language},t))}},{key:"createLabel",value:function createLabel(e,t){return Ze.make(e,Object.assign({theme:this.theme,language:this.language},t))}},{key:"createGroup",value:function createGroup(e,t){return Ue.make(e,Object.assign({theme:this.theme,language:this.language},t))}},{key:"face",get:function get$$1(){return this.$face},set:function set(e){validate(e,[r,"string","function"])||error(i.face),this.$face=(it[e]||e).make(Object.assign(this.getPublicAttributes(),{originalValue:this.face?this.face.originalValue:void 0})),this.$face.initialized(this),this.value?this.$face.value=this.face.createFaceValue(this,this.value.value):this.value||(this.value=this.originalValue),this.el&&this.render()}},{key:"stopAt",get:function get$$1(){return isFunction(this.$stopAt)?this.$stopAt(this):this.$stopAt},set:function set(e){this.$stopAt=e}},{key:"timer",get:function get$$1(){return this.$timer},set:function set(e){validate(e,Be)||error(i.timer),this.$timer=e}},{key:"value",get:function get$$1(){return this.face?this.face.value:null},set:function set(e){if(!this.face)throw new Error("A face must be set before setting a value.");e instanceof n?this.face.value=e:this.value?this.face.value=this.face.value.clone(e):this.face.value=this.face.createFaceValue(this,e),this.el&&this.render()}},{key:"originalValue",get:function get$$1(){return isFunction(this.$originalValue)&&!this.$originalValue.name?this.$originalValue():isUndefined(this.$originalValue)||isNull(this.$originalValue)?this.face?this.face.defaultValue():void 0:this.$originalValue},set:function set(e){this.$originalValue=e}}],[{key:"defineName",value:function defineName(){return"FlipClock"}},{key:"setDefaultFace",value:function setDefaultFace(e){validate(e,r)||error(i.face),rt.face=e}},{key:"setDefaultTheme",value:function setDefaultTheme(e){validate(e,"object")||error(i.theme),rt.theme=e}},{key:"setDefaultLanguage",value:function setDefaultLanguage(e){validate(e,"object")||error(i.language),rt.language=e}},{key:"defaults",get:function get$$1(){return rt}}]),FlipClock}(We)}); +//# sourceMappingURL=flipclock.min.js.map diff --git a/dist/flipclock.min.js.map b/dist/flipclock.min.js.map new file mode 100644 index 00000000..cd8f8045 --- /dev/null +++ b/dist/flipclock.min.js.map @@ -0,0 +1 @@ +{"version":3,"file":"flipclock.min.js","sources":["../src/js/Helpers/Functions.js","../src/js/Helpers/Digitize.js","../src/js/Helpers/Value.js","../src/js/Helpers/Validate.js","../src/js/Helpers/Language.js","../src/js/Helpers/Translate.js","../src/js/Helpers/Template.js","../src/js/Themes/Original/Divider.js","../src/js/Themes/Original/FlipClock.js","../src/js/Themes/Original/Group.js","../src/js/Themes/Original/Label.js","../src/js/Themes/Original/List.js","../src/js/Themes/Original/ListItem.js","../src/js/Themes/Original/Faces/DayCounter.js","../src/js/Themes/Original/Faces/HourCounter.js","../src/js/Themes/Original/Faces/MinuteCounter.js","../src/js/Themes/Original/Faces/TwentyFourHourClock.js","../src/js/Themes/Original/Faces/TwelveHourClock.js","../src/js/Themes/Original/Faces/WeekCounter.js","../src/js/Themes/Original/Faces/YearCounter.js","../src/js/Components/Component.js","../src/js/Components/FaceValue.js","../src/js/Config/ConsoleMessages.js","../src/js/Components/Face.js","../src/js/Languages/ar-ar.js","../src/js/Languages/ca-es.js","../src/js/Languages/cs-cz.js","../src/js/Languages/da-dk.js","../src/js/Languages/de-de.js","../src/js/Languages/en-us.js","../src/js/Languages/es-es.js","../src/js/Languages/fa-ir.js","../src/js/Languages/fi-fi.js","../src/js/Languages/fr-ca.js","../src/js/Languages/he-il.js","../src/js/Languages/hu-hu.js","../src/js/Languages/it-it.js","../src/js/Languages/ja-jp.js","../src/js/Languages/ko-kr.js","../src/js/Languages/lv-lv.js","../src/js/Languages/nl-be.js","../src/js/Languages/no-nb.js","../src/js/Languages/pl-pl.js","../src/js/Languages/pt-br.js","../src/js/Languages/ro-ro.js","../src/js/Languages/ru-ru.js","../src/js/Languages/sk-sk.js","../src/js/Languages/sv-se.js","../src/js/Languages/th-th.js","../src/js/Languages/tr-tr.js","../src/js/Languages/ua-ua.js","../src/js/Languages/vn-vn.js","../src/js/Languages/zh-cn.js","../src/js/Languages/zh-tw.js","../src/js/Components/DomComponent.js","../src/js/Components/Divider.js","../src/js/Components/ListItem.js","../src/js/Components/List.js","../src/js/Components/Group.js","../src/js/Components/Label.js","../src/js/Components/Timer.js","../src/js/Faces/Counter.js","../src/js/Faces/MinuteCounter.js","../src/js/Faces/HourCounter.js","../src/js/Faces/DayCounter.js","../src/js/Faces/TwentyFourHourClock.js","../src/js/Faces/TwelveHourClock.js","../src/js/Faces/WeekCounter.js","../src/js/Faces/YearCounter.js","../src/js/Config/DefaultValues.js","../src/js/Themes/Original/index.js","../src/js/Components/FlipClock.js"],"sourcesContent":["/**\n * These are a collection of helper functions, some borrowed from Lodash,\n * Underscore, etc, to provide common functionality without the need for using\n * a dependency. All of this is an attempt to reduce the file size of the\n * library.\n *\n * @namespace Helpers.Functions\n */\n\n/**\n * Throw a string as an Error exception.\n *\n * @function error\n * @param {string} string - The error message.\n * @return {void}\n * @memberof Helpers.Functions\n */\nexport function error(string) {\n throw Error(string);\n}\n\n/**\n * Check if `fn` is a function, and call it with `this` context and pass the\n * arguments.\n *\n * @function callback\n * @param {string} string - The callback fn.\n * @param {...*} args - The arguments to pass.\n * @return {void}\n * @memberof Helpers.Functions\n */\nexport function callback(fn, ...args) {\n if(isFunction(fn)) {\n return fn.call(this, ...args);\n }\n}\n\n/**\n * Round the value to the correct value. Takes into account negative numbers.\n *\n * @function round\n * @param {value} string - The value to round.\n * @return {string} - The rounded value.\n * @memberof Helpers.Functions\n */\nexport function round(value) {\n return isNegativeZero(\n value = isNegative(value) ? Math.ceil(value) : Math.floor(value)\n ) ? ('-' + value).toString() : value;\n}\n\n/**\n * Returns `true` if `undefined or `null`.\n *\n * @function noop\n * @param {value} string - The value to check.\n * @return {boolean} - `true` if `undefined or `null`.\n * @memberof Helpers.Functions\n */\nexport function noop(value) {\n return !isUndefined(value) && !isNull(value);\n}\n\n/**\n * Returns a function that executes the `before` attribute and passes that value\n * to `after` and the subsequent value is returned.\n *\n * @function chain\n * @param {function} before - The first function to execute.\n * @param {function} after - The subsequent function to execute.\n * @return {function} - A function that executes the chain.\n * @memberof Helpers.Functions\n */\nexport function chain(before, after) {\n return () => after(before());\n}\n\n/**\n * Returns a function that returns maps the values before concatenating them.\n *\n * @function concatMap\n * @param {function} fn - The map callback function.\n * @return {function} - A function that executes the map and concatenation.\n * @memberof Helpers.Functions\n */\nexport function concatMap(fn) {\n return x => {\n return x.map(fn).reduce((x, y) => x.concat(y), []);\n }\n}\n\n/**\n * Flatten an array.\n *\n * @function flatten\n * @param {array} value - The array to flatten.\n * @return {array} - The flattened array.\n * @memberof Helpers.Functions\n */\nexport function flatten(value) {\n return concatMap(value => value)(value)\n}\n\n/**\n * Deep flatten an array.\n *\n * @function deepFlatten\n * @param {array} value - The array to flatten.\n * @return {array} - The flattened array.\n * @memberof Helpers.Functions\n */\nexport function deepFlatten(x) {\n return concatMap(x => Array.isArray(x) ? deepFlatten (x) : x)(x);\n}\n\n/**\n * Capitalize the first letter in a string.\n *\n * @function ucfirst\n * @param {string} string - The string to capitalize.\n * @return {string} - The capitalized string.\n * @memberof Helpers.Functions\n */\nexport function ucfirst(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\n\n/**\n * Returns the length of a deep flatten array.\n *\n * @function length\n * @param {array} value - The array to count.\n * @return {number} - The length of the deep flattened array.\n * @memberof Helpers.Functions\n */\nexport function length(value) {\n return deepFlatten(value).length;\n}\n\n/**\n * Determines if a value is a negative zero.\n *\n * @function isNegativeZero\n * @param {number} value - The value to check.\n * @return {boolean} - Returns `true` if the value is a negative zero (`-0`).\n * @memberof Helpers.Functions\n */\nexport function isNegativeZero(value) {\n return 1 / Math.round(value) === -Infinity;\n}\n\n/**\n * Determines if a value is a negative.\n *\n * @function isNegative\n * @param {number} value - The value to check.\n * @return {boolean} - Returns `true` if the value is a negative.\n * @memberof Helpers.Functions\n */\nexport function isNegative(value) {\n return isNegativeZero(value) || value < 0;\n}\n\n/**\n * Determines if a value is `null`.\n *\n * @function isNull\n * @param {*} value - The value to check.\n * @return {boolean} - Returns `true` if the value is a `null`.\n * @memberof Helpers.Functions\n */\nexport function isNull(value) {\n return value === null;// || typeof value === 'null';\n}\n\n/**\n * Determines if a value is `undefined`.\n *\n * @function isNull\n * @param {*} value - The value to check.\n * @return {boolean} - Returns `true` if the value is a `undefined`.\n * @memberof Helpers.Functions\n */\nexport function isUndefined(value) {\n return typeof value === 'undefined';\n}\n\n/**\n * Determines if a value is a constructor.\n *\n * @function isConstructor\n * @param {*} value - The value to check.\n * @return {boolean} - Returns `true` if the value is a constructor.\n * @memberof Helpers.Functions\n */\nexport function isConstructor(value) {\n return (value instanceof Function) && !!value.name;\n}\n\n/**\n * Determines if a value is a string.\n *\n * @function isString\n * @param {*} value - The value to check.\n * @return {boolean} - Returns `true` if the value is a string.\n * @memberof Helpers.Functions\n */\nexport function isString(value) {\n return typeof value === 'string';\n}\n\n/**\n * Determines if a value is a array.\n *\n * @function isString\n * @param {*} value - The value to check.\n * @return {boolean} - Returns `true` if the value is a string.\n * @memberof Helpers.Functions\n */\nexport function isArray(value) {\n return value instanceof Array;\n}\n\n/**\n * Determines if a value is an object.\n *\n * @function isObject\n * @param {*} value - The value to check.\n * @return {boolean} - Returns `true` if the value is an object.\n * @memberof Helpers.Functions\n */\nexport function isObject(value) {\n const type = typeof value;\n return value != null && !isArray(value) && (\n type == 'object' || type == 'function'\n );\n}\n\n/**\n * Determines if a value is a function.\n *\n * @function isObject\n * @param {*} value - The value to check.\n * @return {boolean} - Returns `true` if the value is a function.\n * @memberof Helpers.Functions\n */\nexport function isFunction(value) {\n return value instanceof Function;\n}\n\n/**\n * Determines if a value is a number.\n *\n * @function isObject\n * @param {*} value - The value to check.\n * @return {boolean} - Returns `true` if the value is a number.\n * @memberof Helpers.Functions\n */\nexport function isNumber(value) {\n return !isNaN(value);\n}\n\n/**\n * Converts a string into kebab case.\n *\n * @function kebabCase\n * @param {string} string - The string to convert.\n * @return {string} - The converted string.\n * @memberof Helpers.Functions\n */\nexport function kebabCase(string) {\n return string.replace(/([a-z])([A-Z])/g, '$1-$2').replace(/\\s+/g, '-').toLowerCase();\n}\n","/**\n * @namespace Helpers.Digitize\n */\nimport { flatten } from './Functions';\nimport { deepFlatten } from './Functions';\n\n/**\n * Digitize a number, string, or an array into a digitized array. This function\n * use by the `Face`, which convert the digitized array into an array of `List`\n * instances.\n *\n * @function digitize\n * @param {*} value - The value to digitize.\n * @param {(Object|undefined)} [options] - The digitizer options.\n * @return {array} - The digitized array.\n * @memberof Helpers.Digitize\n */\nexport default function digitize(value, options) {\n options = Object.assign({\n minimumDigits: 0,\n prependLeadingZero: true\n }, options);\n\n function prepend(number) {\n const shouldPrependZero = options.prependLeadingZero &&\n number.toString().split('').length === 1;\n\n return (shouldPrependZero ? '0' : '').concat(number);\n }\n\n function digits(arr, min) {\n const length = deepFlatten(arr).length;\n\n if(length < min) {\n for(let i = 0; i < min - length; i++) {\n arr[0].unshift('0');\n }\n }\n\n return arr;\n }\n\n return digits(flatten([value]).map(number => {\n return flatten(deepFlatten([number]).map(number => {\n return prepend(number).split('');\n }));\n }), options.minimumDigits || 0);\n}\n","/**\n * @namespace Helpers.Value\n */\n\n/**\n * An array of objects with min/max ranges.\n *\n * @private\n * @type {array}\n */\nconst RANGES = [{\n // 0-9\n min: 48,\n max: 57\n},{\n // a-z\n min: 65,\n max: 90\n},{\n // A-Z\n min: 97,\n max: 122\n}];\n\n/**\n * Format a string into a new data type. Currently only supports string to\n * number conversion.\n *\n * @private\n * @function format\n * @param {string} string - The string to format.\n * @param {string} type - The data type (represented as a string) used to\n * convert the string.\n * @return {boolean} - Returns the formatted string.\n */\nfunction format(string, type) {\n switch(type) {\n case 'number':\n return parseFloat(string);\n }\n\n return string;\n}\n\n/**\n * Find the range object from the `RANGES` constant from the character given.\n * This is mainly an interval method, but can be used by faces to help\n * determine what the next value of a string should be.\n *\n * @private\n * @function format\n * @param {string} char - The char used to determine the range.\n * @param {string} type - The data type (represented as a string) used to\n * convert the string.\n * @return {boolean} - Returns the formatted string.\n */\nfunction findRange(char) {\n for(const i in RANGES) {\n const code = char.toString().charCodeAt(0);\n\n if(RANGES[i].min <= code && RANGES[i].max >= code) {\n return RANGES[i];\n }\n }\n\n return null;\n}\n\n/**\n * Create a string from a character code, which is returned by the callback.\n *\n * @private\n * @callback stringFromCharCodeBy\n * @param {string} char - The char used to determine the range.\n * @param {function} fn - The callback function receives `range` and `code`\n * arguments. This function should return a character code.\n * @return {string} - Creates a string from the character code returned by the\n * callback function.\n */\nfunction stringFromCharCodeBy(char, fn) {\n return String.fromCharCode(\n fn(findRange(char), char.charCodeAt(0))\n );\n}\n\n/**\n * Calculate the next value for a string. 'a' becomes 'b'. 'A' becomes 'B'. 1\n * becomes 2, etc. If multiple character strings are passed, 'aa' would become\n * 'bb'.\n *\n * @function next\n * @param {(string|number)} value - The string or number to convert.\n * @return {string} - The formatted string\n * @memberof Helpers.Value\n */\nexport function next(value) {\n const converted = (value)\n .toString()\n .split('')\n .map(char => stringFromCharCodeBy(char, (range, code) => {\n return !range || code < range.max ? code + 1 : range.min\n }))\n .join('');\n\n return format(converted, typeof value);\n}\n\n/**\n * Calculate the prev value for a string. 'b' becomes 'a'. 'B' becomes 'A'. 2\n * becomes 1, 0 becomes 9, etc. If multiple character strings are passed, 'bb'\n * would become 'aa'.\n *\n * @function prev\n * @param {(string|number)} value - The string or number to convert.\n * @return {string} - The formatted string\n * @memberof Helpers.Value\n */\nexport function prev(value) {\n const converted = (value)\n .toString()\n .split('')\n .map(char => stringFromCharCodeBy(char, (range, code) => {\n return !range || code > range.min ? code - 1 : range.max\n }))\n .join('');\n\n return format(converted, typeof value);\n}\n","/**\n * @namespace Helpers.Validate\n */\nimport { isNull } from './Functions';\nimport { flatten } from './Functions';\nimport { isString } from './Functions';\nimport { isObject } from './Functions';\nimport { isFunction } from './Functions';\nimport { isConstructor } from './Functions';\n\n/**\n * Validate the data type of a variable.\n *\n * @function validate\n * @param {*} value - The value to validate.\n * @param {...*} args - The data types to use for validate.\n * @return {boolean} - Returns `true`is the value has a valid data type.\n * @memberof Helpers.Validate\n */\nexport default function validate(value, ...args) {\n let success = false;\n\n flatten(args).forEach(arg => {\n if( (isNull(value) && isNull(arg)) ||\n (isObject(arg) && (value instanceof arg)) ||\n (isFunction(arg) && !isConstructor(arg) && arg(value) === true) ||\n (isString(arg) && (typeof value === arg))) {\n success = true;\n }\n });\n\n return success;\n}\n","/**\n * @namespace Helpers.Language\n */\nimport * as LANGUAGES from '../Languages';\n\n/**\n * Return the language associated with the key. Returns `null` if no language is\n * found.\n * \n * @function language\n * @param {string} name - The name or id of the language.\n * @return {object|null} - The language dictionary, or null if not found.\n * @memberof Helpers.Language\n */\nexport default function language(name) {\n return name ? LANGUAGES[name.toLowerCase()] || Object.values(LANGUAGES).find(value => {\n return value.aliases.indexOf(name) !== -1;\n }) : null;\n}\n","/**\n * @namespace Helpers.Translate\n */\nimport language from './Language';\nimport { isString } from './Functions';\n\n/**\n * Translate an English string into another language.\n * \n * @function translate\n * @param {string} string - The string to translate.\n * @param {(string|object)} from - The language used to translate. If a string,\n * the language is loaded into an object.\n * @return {string} - If no diction key is found, the untranslated string is\n * returned.\n * @memberof Helpers.Translate\n */\nexport default function translate(string, from) {\n const lang = isString(from) ? language(from) : from;\n const dictionary = lang.dictionary || lang;\n return dictionary[string] || string;\n};\n","/**\n * A collection of functions to manage DOM nodes and theme templates.\n *\n * @namespace Helpers.Template\n */\nimport { noop } from './Functions';\nimport { isArray } from './Functions';\nimport { isObject } from './Functions';\nimport { isString } from './Functions';\nimport { deepFlatten } from './Functions';\n\n/**\n * Swap a new DOM node with an existing one.\n *\n * @function swap\n * @param {HTMLElement} subject - The new DOM node.\n * @param {HTMLElement} existing - The existing DOM node.\n * @return {HTMLElement} - Returns the new element if it was mounted, otherwise\n * the existing node is returned.\n * @memberof Helpers.Template\n */\nexport function swap(subject, existing) {\n\tif(existing.parentNode) {\n\t\texisting.parentNode.replaceChild(subject, existing);\n\n\t\treturn subject;\n\t}\n\n\treturn existing;\n}\n\n/**\n * Set the attribute of an element.\n *\n * @function setAttributes\n * @param {HTMLElement} el - The DOM node that will receive the attributes.\n * @param {Object|undefined} [attributes] - The attribute object, or if no object\n * is passed, then the action is ignored.\n * @return {HTMLElement} el - The DOM node that received the attributes.\n * @memberof Helpers.Template\n */\nexport function setAttributes(el, attributes) {\n\tif(isObject(attributes)) {\n\t\tfor(const i in attributes) {\n\t\t\tel.setAttribute(i, attributes[i]);\n\t\t}\n\t}\n\n\treturn el;\n}\n\n/**\n * Append an array of DOM nodes to a parent.\n *\n * @function appendChildren\n * @param {HTMLElement} el - The parent DOM node.\n * @param {Array|undefined} [children] - The array of children. If no array\n * is passed, then the method silently fails to run.\n * @return {HTMLElement} el - The DOM node that received the attributes.\n * @memberof Helpers.Template\n */\nexport function appendChildren(el, children) {\n\tif(isArray(children)) {\n\t\tchildren.filter(noop).forEach(child => {\n\t\t\tif(child instanceof HTMLElement) {\n\t\t\t\tel.appendChild(child);\n\t\t\t}\n\t\t});\n\t}\n\n\treturn el;\n}\n\n/**\n * Create a new HTMLElement instance.\n *\n * @function createElement\n * @param {HTMLElement} el - The parent DOM node.\n * @param {Array|undefined} [children] - The array of children. If no array\n * is passed, then the method silently fails to run.\n * @param {Object|undefined} [attributes] - The attributes object.\n * @return {HTMLElement} el - The DOM node that received the attributes.\n * @memberof Helpers.Template\n */\nexport function createElement(el, children, attributes) {\n\tif(!(el instanceof HTMLElement)) {\n\t\tel = document.createElement(el);\n\t}\n\n\tsetAttributes(el, isObject(children) ? children : attributes);\n\n\tif(!isObject(children) && !isArray(children)) {\n\t\tel.innerHTML = children;\n\t}\n\telse {\n\t\tappendChildren(el, children)\n\t}\n\n\treturn el;\n}\n","import { appendChildren, createElement } from '../../Helpers/Template';\n\nexport default function(el, instance) {\n appendChildren(el, [\n createElement('div', {class: 'flip-clock-dot top'}),\n createElement('div', {class: 'flip-clock-dot bottom'})\n ]);\n}\n","import { next } from '../../Helpers/Value';\nimport { appendChildren } from '../../Helpers/Template';\n\nfunction child(el, index) {\n return el ? (el.childNodes ? el.childNodes[index] : el[index]) : null;\n}\n\nfunction char(el) {\n return el ? el.querySelector('.flip-clock-list-item:first-child .top').innerHTML : null;\n}\n\nexport default function(el, instance) {\n const parts = instance.value.digits.map((group, x) => {\n const groupEl = child(instance.el ? instance.el.querySelectorAll('.flip-clock-group') : null, x);\n\n const lists = group.map((value, y) => {\n const listEl = child(groupEl ? groupEl.querySelectorAll('.flip-clock-list') : null, y);\n const listValue = char(listEl);\n\n return instance.createList(value, {\n domValue: listValue,\n countdown: instance.countdown,\n animationRate: instance.face.animationRate || instance.face.delay\n });\n });\n\n return instance.createGroup(lists);\n });\n\n const nodes = parts.map(group => {\n return group.render();\n });\n\n appendChildren(el, nodes);\n}\n","import { createElement, appendChildren } from '../../Helpers/Template';\n\nexport default function(el, instance) {\n const items = instance.items.map(item => {\n return item.render();\n });\n\n appendChildren(el, items);\n}\n","import { createElement } from '../../Helpers/Template';\n\nexport default function(el, instance) {\n el.innerHTML = instance.t(instance.label);\n}\n","import { next, prev } from '../../Helpers/Value';\nimport ListItem from '../../Components/ListItem';\nimport { createElement, appendChildren } from '../../Helpers/Template';\n\nexport default function(el, instance) {\n const beforeValue = instance.domValue || (\n !instance.countdown ? prev(instance.value) : next(instance.value)\n );\n\n if( instance.domValue && instance.domValue !== instance.value) {\n el.classList.add('flip');\n }\n\n el.style.animationDelay = `${instance.animationRate / 2}ms`;\n el.style.animationDuration = `${instance.animationRate / 2}ms`;\n\n instance.items = [\n instance.createListItem(instance.value, {\n active: true\n }),\n instance.createListItem(beforeValue, {\n active: false\n })\n ];\n\n appendChildren(el, instance.items.map(item => item.render()));\n}\n","import { createElement, appendChildren } from '../../Helpers/Template';\n\nexport default function(el, instance) {\n const className = instance.active === true ? 'active' : (\n instance.active === false ? 'before' : null\n );\n\n el.classList.add(className);\n\n appendChildren(el, [\n createElement('div', [\n createElement('div', instance.value, {class: 'top'}),\n createElement('div', instance.value, {class: 'bottom'})\n ], {class: 'flip-clock-list-item-inner'})\n ]);\n}\n","export default function(el, instance) {\n instance.createDivider().mount(el, el.childNodes[1]);\n instance.createDivider().mount(el, el.childNodes[3]);\n\n if(instance.face.showSeconds) {\n instance.createDivider().mount(el, el.childNodes[5]);\n }\n\n if(instance.face.showLabels) {\n instance.createLabel('days').mount(el.childNodes[0]);\n instance.createLabel('hours').mount(el.childNodes[2]);\n instance.createLabel('minutes').mount(el.childNodes[4]);\n\n if(instance.face.showSeconds) {\n instance.createLabel('seconds').mount(el.childNodes[6]);\n }\n }\n}\n","export default function(el, instance) {\n instance.createDivider().mount(el, el.childNodes[1]);\n\n if(instance.face.showSeconds) {\n instance.createDivider().mount(el, el.childNodes[3]);\n }\n \n if(instance.face.showLabels) {\n instance.createLabel('hours').mount(el.childNodes[0]);\n instance.createLabel('minutes').mount(el.childNodes[2]);\n\n if(instance.face.showSeconds) {\n instance.createLabel('seconds').mount(el.childNodes[4]);\n }\n }\n}\n","export default function(el, instance) {\n if(instance.face.showSeconds) {\n instance.createDivider().mount(el, el.childNodes[1]);\n }\n\n if(instance.face.showLabels) {\n instance.createLabel('minutes').mount(el.childNodes[0]);\n\n if(instance.face.showSeconds) {\n instance.createLabel('seconds').mount(el.childNodes[2]);\n }\n }\n}\n","export default function(el, instance) {\n instance.createDivider().mount(el, el.childNodes[1]);\n\n if(instance.face.showSeconds) {\n instance.createDivider().mount(el, el.childNodes[3]);\n }\n \n if(instance.face.showLabels) {\n instance.createLabel('hours').mount(el.childNodes[0]);\n instance.createLabel('minutes').mount(el.childNodes[2]);\n\n if(instance.face.showSeconds) {\n instance.createLabel('seconds').mount(el.childNodes[4]);\n }\n }\n\n}\n","import TwentyFourHourClock from './TwentyFourHourClock';\n\nexport default function(el, instance) {\n TwentyFourHourClock(el, instance);\n\n if(instance.face.showMeridium && instance.face.meridium) {\n const label = instance.createLabel(instance.face.meridium);\n const parent = el.childNodes[el.childNodes.length - 1];\n\n label.mount(parent).classList.add('flip-clock-meridium');\n }\n}\n","export default function(el, instance) {\n instance.createDivider().mount(el, el.childNodes[1]);\n instance.createDivider().mount(el, el.childNodes[3]);\n instance.createDivider().mount(el, el.childNodes[5]);\n\n if(instance.face.showSeconds) {\n instance.createDivider().mount(el, el.childNodes[7]);\n }\n\n if(instance.face.showLabels) {\n instance.createLabel('weeks').mount(el.childNodes[0]);\n instance.createLabel('days').mount(el.childNodes[2]);\n instance.createLabel('hours').mount(el.childNodes[4]);\n instance.createLabel('minutes').mount(el.childNodes[6]);\n\n if(instance.face.showSeconds) {\n instance.createLabel('seconds').mount(el.childNodes[8]);\n }\n }\n}\n","export default function(el, instance) {\n instance.createDivider().mount(el, el.childNodes[1]);\n instance.createDivider().mount(el, el.childNodes[3]);\n instance.createDivider().mount(el, el.childNodes[5]);\n instance.createDivider().mount(el, el.childNodes[7]);\n\n if(instance.face.showSeconds) {\n instance.createDivider().mount(el, el.childNodes[9]);\n }\n\n if(instance.face.showLabels) {\n instance.createLabel('years').mount(el.childNodes[0]);\n instance.createLabel('weeks').mount(el.childNodes[2]);\n instance.createLabel('days').mount(el.childNodes[4]);\n instance.createLabel('hours').mount(el.childNodes[6]);\n instance.createLabel('minutes').mount(el.childNodes[8]);\n\n if(instance.face.showSeconds) {\n instance.createLabel('seconds').mount(el.childNodes[10]);\n }\n }\n}\n","import { chain, error, callback, isObject, kebabCase } from '../Helpers/Functions';\n\nexport default class Component {\n\n /**\n * Abstract base class.\n *\n * @class Component\n * @param {(object|undefined)} [attributes] - The instance attributes.\n */\n constructor(attributes) {\n this.setAttribute(Object.assign({\n events: {}\n }, attributes));\n }\n\n /**\n * Get the `name` attribute.\n *\n * @type {string}\n */\n get name() {\n if(!(this.constructor.defineName instanceof Function)) {\n error('Every class must define its name.');\n }\n\n return this.constructor.defineName();\n }\n\n /**\n * The `events` attribute.\n *\n * @type {object}\n */\n get events() {\n return this.$events || {};\n }\n\n set events(value) {\n this.$events = value;\n }\n\n /**\n * Emit an event.\n *\n * @param {string} key - The event id/key.\n * @return {Component} - Returns `this` instance.\n */\n emit(key, ...args) {\n if(this.events[key]) {\n this.events[key].forEach(event => {\n event.apply(this, args);\n });\n }\n\n return this;\n }\n\n /**\n * Start listening to an event.\n *\n * @param {string} key - The event id/key.\n * @param {Function} fn - The listener callback function.\n * @param {boolean} [once=false] - Should the event handler be fired a\n * single time.\n * @return {Component} - Returns `this` instance.\n */\n on(key, fn, once = false) {\n if(!this.events[key]) {\n this.events[key] = [];\n }\n\n this.events[key].push(fn);\n\n return this;\n }\n\n /**\n * Stop listening to an event.\n *\n * @param {string} key - The event id/key.\n * @param {(Function|undefined)} fn - The listener callback function. If no\n * function is defined, all events with the specified id/key will be\n * removed. Otherwise, only the event listeners matching the id/key AND\n * callback will be removed.\n * @return {Component} - Returns `this` instance.\n */\n off(key, fn) {\n if(this.events[key] && fn) {\n this.events[key] = this.events[key].filter(event => {\n return event !== fn;\n });\n }\n else {\n this.events[key] = [];\n }\n\n return this;\n }\n\n /**\n * Listen to an event only one time.\n *\n * @param {string} key - The event id/key.\n * @param {Function} fn - The listener callback function.\n * @return {Component} - Returns `this` instance.\n */\n once(key, fn) {\n fn = chain(fn, () => this.off(key, fn));\n\n return this.on(key, fn, true);\n }\n\n /**\n * Get an attribute. Returns null if no attribute is defined.\n *\n * @param {string} key - The attribute name.\n * @return {*} - The attribute value.\n */\n getAttribute(key) {\n return this.hasOwnProperty(key) ? this[key] : null;\n }\n\n /**\n * Get all the atttributes for this instance.\n *\n * @return {object} - The attribute dictionary.\n */\n getAttributes() {\n const attributes = {};\n\n Object.getOwnPropertyNames(this).forEach(key => {\n attributes[key] = this.getAttribute(key);\n });\n\n return attributes;\n }\n\n /**\n * Get only public the atttributes for this instance. Omits any attribute\n * that starts with `$`, which is used internally.\n *\n * @return {object} - The attribute dictionary.\n */\n getPublicAttributes() {\n return Object.keys(this.getAttributes())\n .filter(key => {\n return !key.match(/^\\$/);\n })\n .reduce((obj, key) => {\n obj[key] = this.getAttribute(key);\n return obj;\n }, {});\n }\n\n /**\n * Set an attribute key and value.\n *\n * @param {string} key - The attribute name.\n * @param {*} value - The attribute value.\n * @return {void}\n */\n setAttribute(key, value) {\n if(isObject(key)) {\n this.setAttributes(key);\n }\n else {\n this[key] = value;\n }\n }\n\n /**\n * Set an attributes by object of key/value pairs.\n *\n * @param {object} values - The object dictionary.\n * @return {void}\n */\n setAttributes(values) {\n for(const i in values) {\n this.setAttribute(i, values[i]);\n }\n }\n\n /**\n * Helper method to execute the `callback()` function.\n *\n * @param {Function} fn - The callback function.\n * @return {*} - Returns the executed callback function.\n */\n callback(fn) {\n return callback.call(this, fn);\n }\n\n /**\n * Factor method to static instantiate new instances. Useful for writing\n * clean expressive syntax with chained methods.\n *\n * @param {...*} args - The callback arguments.\n * @return {*} - The new component instance.\n */\n static make(...args) {\n return new this(...args);\n }\n\n}\n","import Component from './Component';\nimport digitize from '../Helpers/Digitize';\nimport { next, prev } from '../Helpers/Value';\nimport { length, isObject, isNumber } from '../Helpers/Functions';\n\nexport default class FaceValue extends Component {\n\n /**\n * The `FaceValue` class handles all the digitizing for the `Face`.\n *\n * @class FaceValue\n * @extends Component\n * @param {*} value - The `FaceValue`'s actual value. Most likely should\n * string, number, or Date. But since the Face handles the value, it\n * could be anything.\n * @param {(object|undefined)} [attributes] - The instance attributes.\n */\n constructor(value, attributes) {\n super(Object.assign({\n format: value => value,\n prependLeadingZero: true,\n minimumDigits: 0\n }, attributes));\n\n if(!this.value) {\n this.value = value;\n }\n }\n\n /**\n * The `digits` attribute.\n *\n * @type {(Array|undefined)}\n */\n get digits() {\n return this.$digits;\n }\n\n set digits(value) {\n this.$digits = value;\n this.minimumDigits = Math.max(this.minimumDigits, length(value));\n }\n\n /**\n * The `value` attribute.\n *\n * @type {*}\n */\n get value() {\n return this.$value;\n }\n\n set value(value) {\n this.$value = value;\n this.digits = digitize(this.format(value), {\n minimumDigits: this.minimumDigits,\n prependLeadingZero: this.prependLeadingZero\n });\n }\n\n /**\n * Returns `true` if the `value` attribute is not a number.\n *\n * @return {boolean} - `true` is the value is not a number.\n */\n isNaN() {\n return isNaN(this.value);\n }\n\n /**\n * Returns `true` if the `value` attribute is a number.\n *\n * @return {boolean} - `true` is the value is a number.\n */\n isNumber() {\n return isNumber();\n }\n\n /**\n * Clones the current `FaceValue` instance, but sets a new value to the\n * cloned instance. Used for copying the current instance options and\n * methods, but setting a new value.\n *\n * @param {*} value - The n\n * @param {(object|undefined)} [attributes] - The instance attributes.\n * @return {FaceValue} - The cloned `FaceValue`.\n */\n clone(value, attributes) {\n return new this.constructor(value, Object.assign(\n this.getPublicAttributes(), attributes\n ));\n }\n\n /**\n * Define the name of the class.\n *\n * @return {string}\n */\n static defineName() {\n return 'FaceValue';\n }\n\n}\n","/**\n * @alias ConsoleMessages\n * @type {object}\n * @memberof module:Config/ConsoleMessages\n */\nexport default {\n className: 'The className() is not defined.',\n items: 'The items property must be an array.',\n theme: 'The theme property must be an object.',\n language: 'The language must be an object.',\n date: 'The value must be an instance of a Date.',\n face: 'The face must be an instance of a Face class.',\n element: 'The element must be an instance of an HTMLElement',\n faceValue: 'The face must be an instance of a FaceValue class.',\n timer: 'The timer property must be an instance of a Timer class.'\n};\n","import Component from './Component';\nimport FaceValue from './FaceValue';\nimport validate from '../Helpers/Validate';\nimport ConsoleMessages from '../Config/ConsoleMessages';\nimport { error, isNull, isUndefined, isObject, isArray, isFunction, callback } from '../Helpers/Functions';\n\nexport default class Face extends Component {\n\n /**\n * This class is meant to be provide an interface for all other faces to\n * extend.\n *\n * @class Face\n * @extends Component\n * @param {(FaceValue|object)} value - The `Face` value. If not an instance\n * of FaceValue, this argument is assumed to be the instance attributes.\n * @param {(object|undefined)} [attributes] - The instance attributes.\n */\n constructor(value, attributes) {\n if(!(value instanceof FaceValue) && isObject(value)) {\n attributes = value;\n value = undefined;\n }\n\n super();\n\n this.setAttributes(Object.assign({\n autoStart: true,\n countdown: false,\n animationRate: 500\n }, this.defaultAttributes(), attributes || {}));\n\n if(isNull(value) || isUndefined(value)) {\n value = this.defaultValue();\n }\n\n if(value) {\n this.value = value;\n }\n }\n\n /**\n * The `dataType` attribute.\n *\n * @type {*}\n */\n get dataType() {\n return this.defaultDataType();\n }\n\n /**\n * The `value` attribute.\n *\n * @type {*}\n */\n get value() {\n return this.$value;\n }\n\n set value(value) {\n if(!(value instanceof FaceValue)) {\n value = this.createFaceValue(value);\n }\n\n this.$value = value;\n }\n\n /**\n * The `stopAt` attribute.\n *\n * @type {*}\n */\n get stopAt() {\n return this.$stopAt;\n }\n\n set stopAt(value) {\n this.$stopAt = value;\n }\n\n /**\n * The `originalValue` attribute.\n *\n * @type {*}\n */\n get originalValue() {\n return this.$originalValue;\n }\n\n set originalValue(value) {\n this.$originalValue = value;\n }\n\n /**\n * This method is called with every interval, or every time the clock\n * should change, and handles the actual incrementing and decrementing the\n * clock's `FaceValue`.\n *\n * @param {FlipClock} instance - The `FlipClock` instance.\n * @param {Function} fn - The interval callback.\n * @return {Face} - This `Face` instance.\n */\n interval(instance, fn) {\n if(this.countdown) {\n this.decrement(instance);\n }\n else {\n this.increment(instance);\n }\n\n callback.call(this, fn);\n\n if(this.shouldStop(instance)) {\n instance.stop();\n }\n\n return this.emit('interval');\n }\n\n /**\n * Determines if the clock should stop or not.\n *\n * @param {FlipClock} instance - The `FlipClock` instance.\n * @return {boolean} - Returns `true` if the clock should stop.\n */\n shouldStop(instance) {\n return !isUndefined(this.stopAt) ? this.stopAt === instance.value.value : false;\n }\n\n /**\n * By default this just returns the value unformatted.\n *\n * @param {FlipClock} instance - The `FlipClock` instance.\n * @param {*} value - The value to format.\n * @return {*} - The formatted value.\n */\n format(instance, value) {\n return value;\n }\n\n /**\n * The default value for the `Face`.\n *\n * @return {*} - The default value.\n */\n defaultValue() {\n //\n }\n\n /**\n * The default attributes for the `Face`.\n *\n * @return {(Object|undefined)} - The default attributes.\n */\n defaultAttributes() {\n //\n }\n\n /**\n * The default data type for the `Face` value.\n *\n * @return {(Object|undefined)} - The default data type.\n */\n defaultDataType() {\n //\n }\n\n /**\n * Increment the clock.\n *\n * @param {FlipClock} instance - The `FlipClock` instance.\n * @param {Number} [amount] - The amount to increment. If the amount is not\n * defined, it is left up to the `Face` to determine the default value.\n * @return {void}\n */\n increment(instance, amount) {\n //\n }\n\n /**\n * Decrement the clock.\n *\n * @param {FlipClock} instance - The `FlipClock` instance.\n * @param {Number} [amount] - The amount to decrement. If the amount is not\n * defined, it is left up to the `Face` to determine the default value.\n * @return {void}\n */\n decrement(instance, amount) {\n //\n }\n\n /**\n * This method is called right after clock has started.\n *\n * @param {FlipClock} instance - The `FlipClock` instance.\n * @return {void}\n */\n started(instance) {\n //\n }\n\n /**\n * This method is called right after clock has stopped.\n *\n * @param {FlipClock} instance - The `FlipClock` instance.\n * @return {void}\n */\n stopped(instance) {\n //\n }\n\n /**\n * This method is called right after clock has reset.\n *\n * @param {FlipClock} instance - The `FlipClock` instance.\n * @return {void}\n */\n reset(instance) {\n //\n }\n\n /**\n * This method is called right after `Face` has initialized.\n *\n * @param {FlipClock} instance - The `FlipClock` instance.\n * @return {void}\n */\n initialized(instance) {\n //\n }\n\n /**\n * This method is called right after `Face` has rendered.\n *\n * @param {FlipClock} instance - The `FlipClock` instance.\n * @return {void}\n */\n rendered(instance) {\n //\n }\n\n /**\n * This method is called right after `Face` has mounted.\n *\n * @param {FlipClock} instance - The `FlipClock` instance.\n * @return {void}\n */\n mounted(instance) {\n if(this.autoStart && instance.timer.isStopped) {\n window.requestAnimationFrame(() => instance.start(instance));\n }\n }\n\n /**\n * Helper method to instantiate a new `FaceValue`.\n *\n * @param {FlipClock} instance - The `FlipClock` instance.\n * @param {object|undefined} [attributes] - The attributes passed to the\n * `FaceValue` instance.\n * @return {Divider} - The instantiated `FaceValue`.\n */\n createFaceValue(instance, value) {\n return FaceValue.make(\n isFunction(value) && !value.name ? value() : value, {\n minimumDigits: this.minimumDigits,\n format: value => this.format(instance, value)\n }\n );\n }\n\n}\n","/**\n * @classdesc Arabic Language Pack\n * @desc This class will be used to translate tokens into the Arabic language.\n * @namespace Languages.Arabic\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Arabic\n */\nexport const dictionary = {\n 'years' : 'سنوات',\n 'months' : 'شهور',\n 'days' : 'أيام',\n 'hours' : 'ساعات',\n 'minutes' : 'دقائق',\n 'seconds' : 'ثواني'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Arabic\n */\nexport const aliases = ['ar', 'ar-ar', 'arabic'];\n","/**\n * @classdesc Catalan Language Pack\n * @desc This class will used to translate tokens into the Catalan language.\n * @namespace Languages.Catalan\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Catalan\n */\nexport const dictionary = {\n 'years' : 'Anys',\n 'months' : 'Mesos',\n 'days' : 'Dies',\n 'hours' : 'Hores',\n 'minutes' : 'Minuts',\n 'seconds' : 'Segons'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Catalan\n */\nexport const aliases = ['ca', 'ca-es', 'catalan'];\n","/**\n * @classdesc Czech Language Pack\n * @desc This class will used to translate tokens into the Czech language.\n * @namespace Languages.Czech\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Czech\n */\nexport const dictionary = {\n 'years' : 'Roky',\n 'months' : 'Měsíce',\n 'days' : 'Dny',\n 'hours' : 'Hodiny',\n 'minutes' : 'Minuty',\n 'seconds' : 'Sekundy'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Czech\n */\nexport const aliases = ['cs', 'cs-cz', 'cz', 'cz-cs', 'czech'];\n","/**\n * @classdesc Danish Language Pack\n * @desc This class will used to translate tokens into the Danish language.\n * @namespace Languages.Danish\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Danish\n */\nexport const dictionary = {\n\t'years' : 'År',\n\t'months' : 'Måneder',\n\t'days' : 'Dage',\n\t'hours' : 'Timer',\n\t'minutes' : 'Minutter',\n\t'seconds' : 'Sekunder'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Danish\n */\nexport const aliases = ['da', 'da-dk', 'danish'];\n","/**\n * @classdesc German Language Pack\n * @desc This class will used to translate tokens into the German language.\n * @namespace Languages.German\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.German\n */\nexport const dictionary = {\n\t'years' : 'Jahre',\n\t'months' : 'Monate',\n\t'days' : 'Tage',\n\t'hours' : 'Stunden',\n\t'minutes' : 'Minuten',\n\t'seconds' : 'Sekunden'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.German\n */\nexport const aliases = ['de', 'de-de', 'german'];\n","/**\n * @classdesc English Language Pack\n * @desc This class will used to translate tokens into the English language.\n * @namespace Languages.English\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.English\n */\nexport const dictionary = {\n\t'years' : 'Years',\n\t'months' : 'Months',\n\t'days' : 'Days',\n\t'hours' : 'Hours',\n\t'minutes' : 'Minutes',\n\t'seconds' : 'Seconds'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.English\n */\nexport const aliases = ['en', 'en-us', 'english'];\n","/**\n * @classdesc Spanish Language Pack\n * @desc This class will used to translate tokens into the Spanish language.\n * @namespace Languages.Spanish\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Spanish\n */\nexport const dictionary = {\n\t'years' : 'Años',\n\t'months' : 'Meses',\n\t'days' : 'Días',\n\t'hours' : 'Horas',\n\t'minutes' : 'Minutos',\n\t'seconds' : 'Segundos'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Spanish\n */\nexport const aliases = ['es', 'es-es', 'spanish'];\n","/**\n * @classdesc Persian Language Pack\n * @desc This class will used to translate tokens into the Persian language.\n * @namespace Languages.Persian\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Persian\n */\nexport const dictionary = {\n\t'years' : 'سال',\n\t'months' : 'ماه',\n\t'days' : 'روز',\n\t'hours' : 'ساعت',\n\t'minutes' : 'دقیقه',\n\t'seconds' : 'ثانیه'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Persian\n */\nexport const aliases = ['fa', 'fa-ir', 'persian'];\n","/**\n * @classdesc Finnish Language Pack\n * @desc This class will used to translate tokens into the Finnish language.\n * @namespace Languages.Finnish\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Finnish\n */\nexport const dictionary = {\n\t'years' : 'Vuotta',\n\t'months' : 'Kuukautta',\n\t'days' : 'Päivää',\n\t'hours' : 'Tuntia',\n\t'minutes' : 'Minuuttia',\n\t'seconds' : 'Sekuntia'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Finnish\n */\nexport const aliases = ['fi', 'fi-fi', 'finnish'];\n","/**\n * @classdesc Canadian French Language Pack\n * @desc This class will used to translate tokens into the Canadian French language.\n * @namespace Languages.CanadianFrench\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.CanadianFrench\n */\nexport const dictionary = {\n 'years' : 'Ans',\n 'months' : 'Mois',\n 'days' : 'Jours',\n 'hours' : 'Heures',\n 'minutes' : 'Minutes',\n 'seconds' : 'Secondes'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.CanadianFrench\n */\nexport const aliases = ['fr', 'fr-ca', 'french'];\n","/**\n * @classdesc Hebrew Language Pack\n * @desc This class will used to translate tokens into the Hebrew language.\n * @namespace Languages.Hebrew\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Hebrew\n */\nexport const dictionary = {\n\t'years' : 'שנים',\n\t'months' : 'חודש',\n\t'days' : 'ימים',\n\t'hours' : 'שעות',\n\t'minutes' : 'דקות',\n\t'seconds' : 'שניות'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Hebrew\n */\nexport const aliases = ['il', 'he-il', 'hebrew'];\n","/**\n * @classdesc Hungarian Language Pack\n * @desc This class will used to translate tokens into the Hungarian language.\n * @namespace Languages.Hungarian\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Hungarian\n */\nexport const dictionary = {\n\t'years' : 'Év',\n 'months' : 'Hónap',\n 'days' : 'Nap',\n 'hours' : 'Óra',\n 'minutes' : 'Perc',\n 'seconds' : 'Másodperc'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Hungarian\n */\nexport const aliases = ['hu', 'hu-hu', 'hungarian'];\n","/**\n * @classdesc Italian Language Pack\n * @desc This class will used to translate tokens into the Italian language.\n * @namespace Languages.Italian\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Italian\n */\nexport const dictionary = {\n\t'years' : 'Anni',\n\t'months' : 'Mesi',\n\t'days' : 'Giorni',\n\t'hours' : 'Ore',\n\t'minutes' : 'Minuti',\n\t'seconds' : 'Secondi'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Italian\n */\nexport const aliases = ['da', 'da-dk', 'danish'];\n","/**\n * @classdesc Japanese Language Pack\n * @desc This class will used to translate tokens into the Japanese language.\n * @namespace Languages.Japanese\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Japanese\n */\nexport const dictionary = {\n\t'years' : '年',\n\t'months' : '月',\n\t'days' : '日',\n\t'hours' : '時',\n\t'minutes' : '分',\n\t'seconds' : '秒'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Japanese\n */\nexport const aliases = ['jp', 'ja-jp', 'japanese'];\n","/**\n * @classdesc Korean Language Pack\n * @desc This class will used to translate tokens into the Korean language.\n * @namespace Languages.Korean\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Korean\n */\nexport const dictionary = {\n\t'years' : '년',\n\t'months' : '월',\n\t'days' : '일',\n\t'hours' : '시',\n\t'minutes' : '분',\n\t'seconds' : '초'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Korean\n */\nexport const aliases = ['ko', 'ko-kr', 'korean'];\n","/**\n * @classdesc Latvian Language Pack\n * @desc This class will used to translate tokens into the Latvian language.\n * @namespace Languages.Latvian\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Latvian\n */\nexport const dictionary = {\n 'years' : 'Gadi',\n 'months' : 'Mēneši',\n 'days' : 'Dienas',\n 'hours' : 'Stundas',\n 'minutes' : 'Minūtes',\n 'seconds' : 'Sekundes'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Latvian\n */\nexport const aliases = ['lv', 'lv-lv', 'latvian'];\n","/**\n * @classdesc Dutch Language Pack\n * @desc This class will used to translate tokens into the Dutch language.\n * @namespace Languages.Dutch\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Dutch\n */\nexport const dictionary = {\n 'years' : 'Jaren',\n 'months' : 'Maanden',\n 'days' : 'Dagen',\n 'hours' : 'Uren',\n 'minutes' : 'Minuten',\n 'seconds' : 'Seconden'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Dutch\n */\nexport const aliases = ['nl', 'nl-be', 'dutch'];\n","/**\n * @classdesc Norwegian-Bokmål Language Pack\n * @desc This class will used to translate tokens into the Norwegian-Bokmål language.\n * @namespace Languages.Norwegian\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Norwegian\n */\nexport const dictionary = {\n\t'years' : 'År',\n\t'months' : 'Måneder',\n\t'days' : 'Dager',\n\t'hours' : 'Timer',\n\t'minutes' : 'Minutter',\n\t'seconds' : 'Sekunder'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Norwegian\n */\nexport const aliases = ['no', 'nb', 'no-nb', 'norwegian'];\n","/**\n * @classdesc Polish Language Pack\n * @desc This class will used to translate tokens into the Polish language.\n * @namespace Languages.Polish\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Polish\n */\nexport const dictionary = {\n\t'years' : 'Lat',\n\t'months' : 'Miesięcy',\n\t'days' : 'Dni',\n\t'hours' : 'Godziny',\n\t'minutes' : 'Minuty',\n\t'seconds' : 'Sekundy'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Polish\n */\nexport const aliases = ['pl', 'pl-pl', 'polish'];\n","/**\n * @classdesc Portuguese Language Pack\n * @desc This class will used to translate tokens into the Portuguese language.\n * @namespace Languages.Portuguese\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Portuguese\n */\nexport const dictionary = {\n\t'years' : 'Anos',\n\t'months' : 'Meses',\n\t'days' : 'Dias',\n\t'hours' : 'Horas',\n\t'minutes' : 'Minutos',\n\t'seconds' : 'Segundos'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Portuguese\n */\nexport const aliases = ['pt', 'pt-br', 'portuguese'];\n","/**\n * @classdesc Romanian Language Pack\n * @desc This class will used to translate tokens into the Romanian language.\n * @namespace Languages.Romanian\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Romanian\n */\nexport const dictionary = {\n\t'years': 'Ani',\n\t'months': 'Luni',\n\t'days': 'Zile',\n\t'hours': 'Ore',\n\t'minutes': 'Minute',\n\t'seconds': 'sSecunde'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Romanian\n */\nexport const aliases = ['ro', 'ro-ro', 'romana'];\n","/**\n * @classdesc Russian Language Pack\n * @desc This class will used to translate tokens into the Russian language.\n * @namespace Languages.Russian\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Russian\n */\nexport const dictionary = {\n 'years' : 'лет',\n 'months' : 'месяцев',\n 'days' : 'дней',\n 'hours' : 'часов',\n 'minutes' : 'минут',\n 'seconds' : 'секунд'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Russian\n */\nexport const aliases = ['ru', 'ru-ru', 'russian'];\n","/**\n * @classdesc Slovak Language Pack\n * @desc This class will used to translate tokens into the Slovak language.\n * @namespace Languages.Slovak\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Slovak\n */\nexport const dictionary = {\n\t'years' : 'Roky',\n\t'months' : 'Mesiace',\n\t'days' : 'Dni',\n\t'hours' : 'Hodiny',\n\t'minutes' : 'Minúty',\n\t'seconds' : 'Sekundy'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Slovak\n */\nexport const aliases = ['sk', 'sk-sk', 'slovak'];\n","/**\n * @classdesc Swedish Language Pack\n * @desc This class will used to translate tokens into the Swedish language.\n * @namespace Languages.Swedish\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Swedish\n */\nexport const dictionary = {\n\t'years' : 'År',\n\t'months' : 'Månader',\n\t'days' : 'Dagar',\n\t'hours' : 'Timmar',\n\t'minutes' : 'Minuter',\n\t'seconds' : 'Sekunder'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Swedish\n */\nexport const aliases = ['sv', 'sv-se', 'swedish'];\n","/**\n * @classdesc Thai Language Pack\n * @desc This class will used to translate tokens into the Thai language.\n * @namespace Languages.Thai\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Thai\n */\nexport const dictionary = {\n\t'years' : 'ปี',\n\t'months' : 'เดือน',\n\t'days' : 'วัน',\n\t'hours' : 'ชั่วโมง',\n\t'minutes' : 'นาที',\n\t'seconds' : 'วินาที'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Thai\n */\nexport const aliases = ['th', 'th-th', 'thai'];\n","/**\n * @classdesc Turkish Language Pack\n * @desc This class will used to translate tokens into the Turkish language.\n * @namespace Languages.Turkish\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Turkish\n */\nexport const dictionary = {\n\t'years' : 'Yıl',\n\t'months' : 'Ay',\n\t'days' : 'Gün',\n\t'hours' : 'Saat',\n\t'minutes' : 'Dakika',\n\t'seconds' : 'Saniye'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Turkish\n */\nexport const aliases = ['tr', 'tr-tr', 'turkish'];\n","/**\n * @classdesc Ukrainian Language Pack\n * @desc This class will used to translate tokens into the Ukrainian language.\n * @namespace Languages.Ukrainian\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Ukrainian\n */\nexport const dictionary = {\n 'years' : 'роки',\n 'months' : 'місяці',\n 'days' : 'дні',\n 'hours' : 'години',\n 'minutes' : 'хвилини',\n 'seconds' : 'секунди'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Ukrainian\n */\nexport const aliases = ['ua', 'ua-ua', 'ukraine'];\n","/**\n * @classdesc Vietnamese Language Pack\n * @desc This class will used to translate tokens into the Vietnamese language.\n * @namespace Languages.Vietnamese\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Vietnamese\n */\nexport const dictionary = {\n\t'years' : 'Năm',\n\t'months' : 'Tháng',\n\t'days' : 'Ngày',\n\t'hours' : 'Giờ',\n\t'minutes' : 'Phút',\n\t'seconds' : 'Giây'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Vietnamese\n */\nexport const aliases = ['vn', 'vn-vn', 'vietnamese'];\n","/**\n * @classdesc Chinese Language Pack\n * @desc This class will used to translate tokens into the Chinese language.\n * @namespace Languages.Chinese\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.Chinese\n */\nexport const dictionary = {\n\t'years' : '年',\n\t'months' : '月',\n\t'days' : '日',\n\t'hours' : '时',\n\t'minutes' : '分',\n\t'seconds' : '秒'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.Chinese\n */\nexport const aliases = ['zh', 'zh-cn', 'chinese'];\n","/**\n * @classdesc Traditional Chinese Language Pack\n * @desc This class will used to translate tokens into the Traditional Chinese language.\n * @namespace Languages.TraditionalChinese\n */\n\n/**\n * @constant dictionary\n * @type {object}\n * @memberof Languages.TraditionalChinese\n */\nexport const dictionary = {\n\t'years' : '年',\n\t'months' : '月',\n\t'days' : '日',\n\t'hours' : '時',\n\t'minutes' : '分',\n\t'seconds' : '秒'\n};\n\n/**\n * @constant aliases\n * @type {array}\n * @memberof Languages.TraditionalChinese\n */\nexport const aliases = ['zh-tw'];\n","import Component from './Component';\nimport language from '../Helpers/Language';\nimport validate from '../Helpers/Validate';\nimport translate from '../Helpers/Translate';\nimport { isString } from '../Helpers/Functions';\nimport ConsoleMessages from '../Config/ConsoleMessages';\nimport { error, kebabCase } from '../Helpers/Functions';\nimport { swap, createElement } from '../Helpers/Template';\n\nexport default class DomComponent extends Component {\n\n /**\n * An abstract class that all other DOM components can extend.\n *\n * @class DomComponent\n * @extends Component\n * @param {(object|undefined)} [attributes] - The instance attributes.\n */\n constructor(attributes) {\n super(Object.assign({\n parent: null\n }, attributes));\n\n if(!this.theme) {\n error(`${this.name} does not have a theme defined.`);\n }\n\n if(!this.language) {\n error(`${this.name} does not have a language defined.`);\n }\n\n\t\tif(!this.theme[this.name]) {\n throw new Error(\n `${this.name} cannot be rendered because it has no template.`\n );\n }\n }\n\n /**\n * The `className` attribute. Used for CSS.\n *\n * @type {string}\n */\n get className() {\n return kebabCase(this.constructor.defineName());\n }\n\n /**\n * The `el` attribute.\n *\n * @type {HTMLElement}\n */\n get el() {\n return this.$el;\n }\n\n set el(value) {\n if(!validate(value, null, HTMLElement)) {\n error(ConsoleMessages.element);\n }\n\n this.$el = value;\n }\n\n /**\n * The `parent` attribute. Parent is set when `DomComponent` instances are\n * mounted.\n *\n * @type {DomComponent}\n */\n get parent() {\n return this.$parent;\n }\n\n set parent(parent) {\n this.$parent = parent;\n }\n\n /**\n * The `theme` attribute.\n *\n * @type {object}\n */\n get theme() {\n return this.$theme;\n }\n\n set theme(value) {\n if(!validate(value, 'object')) {\n error(ConsoleMessages.value);\n }\n\n this.$theme = value;\n }\n\n /**\n * Get the language attribute.\n *\n * @type {object}\n */\n get language() {\n return this.$language;\n }\n\n set language(value) {\n if(isString(value)) {\n value = language(value);\n }\n\n if(!validate(value, 'object')) {\n error(ConsoleMessages.language);\n }\n\n this.$language = value;\n }\n\n /**\n * Translate a string.\n *\n * @param {string} string - The string to translate.\n * @return {string} - The translated string. If no tranlation found, the\n * untranslated string is returned.\n */\n translate(string) {\n return translate(string, this.language);\n }\n\n /**\n * Alias to translate(string);\n *\n * @alias DomComponent.translate\n */\n t(string) {\n return this.translate(string);\n }\n\n /**\n * Render the DOM component.\n *\n * @return {HTMLElement} - The `el` attribute.\n */\n\trender() {\n const el = createElement('div', {\n class: this.className === 'flip-clock' ? this.className : 'flip-clock-' + this.className\n });\n\n this.theme[this.name](el, this);\n\n if(!this.el) {\n this.el = el;\n }\n else if(this.el.innerHTML !== el.innerHTML) {\n this.el = swap(el, this.el);\n }\n\n return this.el;\n\t}\n\n /**\n * Mount a DOM component to a parent node.\n *\n * @param {HTMLElement} parent - The parent DOM node.\n * @param {(false|HTMLElement)} [before=false] - If `false`, element is\n * appended to the parent node. If an instance of an `HTMLElement`,\n * the component will be inserted before the specified element.\n * @return {HTMLElement} - The `el` attribute.\n */\n mount(parent, before = false) {\n this.render();\n this.parent = parent;\n\n if(!before) {\n this.parent.appendChild(this.el);\n }\n else {\n this.parent.insertBefore(this.el, before);\n }\n\n return this.el;\n }\n\n}\n","import DomComponent from './DomComponent';\n\n/**\n * Create a new `Divider` instance.\n *\n * The purpose of this class is to return a unique class name so the theme can\n * render it appropriately, since each `DomComponent` can receive its own template\n * from the theme.\n *\n * @class Divider\n * @extends DomComponent\n * @param {(object|undefined)} [attributes] - The instance attributes.\n */\nexport default class Divider extends DomComponent {\n\n /**\n * Define the name of the class.\n *\n * @return {string}\n */\n static defineName() {\n return 'Divider';\n }\n\n}\n","import DomComponent from './DomComponent';\nimport { isObject } from '../Helpers/Functions';\n\nexport default class ListItem extends DomComponent {\n\n /**\n * This class is used to represent a single digits in a `List`.\n *\n * @class ListItem\n * @extends DomComponent\n * @param {(Number|String)} value - The value of the `ListItem`.\n * @param {object|undefined} [attributes] - The instance attributes.\n */\n constructor(value, attributes) {\n super(Object.assign({\n value: value\n }, isObject(value) ? value : null, attributes));\n }\n\n /**\n * Define the name of the class.\n *\n * @return {string}\n */\n static defineName() {\n return 'ListItem';\n }\n\n}\n","import Divider from './Divider';\nimport ListItem from './ListItem';\nimport DomComponent from './DomComponent';\nimport { next, prev, } from '../Helpers/Value';\nimport { isObject, } from '../Helpers/Functions';\n\nexport default class List extends DomComponent {\n\n /**\n * This class is used to add a digit to the clock face. This class is called\n * `List` because it contains a list of `ListItem`'s which are used to\n * create flip effects. In the context of FlipClock.js a `List` represents\n * one single digit.\n *\n * @class List\n * @extends DomComponent\n * @param {Number|String|Object} label - The active value. If an object, it\n * is assumed that it is the instance attributes.\n * @param {object|undefined} [attributes] - The instance attributes.\n */\n constructor(value, attributes) {\n super(Object.assign({\n value: value,\n items: [],\n }, isObject(value) ? value : null, attributes));\n }\n\n /**\n * Get the `value` attribute.\n *\n * @type {(Number|String)}\n */\n get value() {\n return this.$value;\n }\n set value(value) {\n this.$value = value;\n }\n\n /**\n * Get the `items` attribute.\n *\n * @type {(Number|String)}\n */\n get items() {\n return this.$items;\n }\n\n set items(value) {\n this.$items = value;\n }\n\n /**\n * Helper method to instantiate a new `ListItem`.\n *\n * @param {(Number|String)} value - The `ListItem` value.\n * @param {(Object|undefined)} [attributes] - The instance attributes.\n * @return {ListItem} - The instantiated `ListItem`.\n */\n createListItem(value, attributes) {\n const item = new ListItem(value, Object.assign({\n theme: this.theme,\n language: this.language\n }, attributes));\n\n this.$items.push(item);\n\n return item;\n }\n\n /**\n * Define the name of the class.\n *\n * @return {string}\n */\n static defineName() {\n return 'List';\n }\n\n}\n","import DomComponent from './DomComponent';\nimport { isObject, isArray } from '../Helpers/Functions';\n\nexport default class Group extends DomComponent {\n\n /**\n * This class is used to group values within a clock face. How the groups\n * are displayed is determined by the theme.\n *\n * @class Group\n * @extends DomComponent\n * @param {Array|Object} items - An array `List` instances or an object of\n * attributes. If not an array, assumed to be the attributes.\n * @param {object|undefined} [attributes] - The instance attributes.\n */\n constructor(items, attributes) {\n super(Object.assign({\n items: isArray(items) ? items : []\n }, (isObject(items) ? items : null), attributes));\n }\n\n /**\n * Define the name of the class.\n *\n * @return {string}\n */\n static defineName() {\n return 'Group';\n }\n\n}\n","import DomComponent from './DomComponent';\nimport { isObject } from '../Helpers/Functions';\n\nexport default class Label extends DomComponent {\n\n /**\n * This class is used to add a label to the clock face.\n *\n * @class Label\n * @extends DomComponent\n * @param {Number|String|Object} label - The label attribute. If an object,\n * it is assumed that it is the instance attributes.\n * @param {object|undefined} [attributes] - The instance attributes.\n */\n constructor(label, attributes) {\n super(Object.assign({\n label: label\n }, (isObject(label) ? label : null), attributes));\n }\n\n /**\n * Define the name of the class.\n *\n * @return {string}\n */\n static defineName() {\n return 'Label';\n }\n\n}\n","import Component from './Component';\nimport { isObject, isNumber, callback } from '../Helpers/Functions';\n\nexport default class Timer extends Component {\n\n /**\n * Create a new `Timer` instance.\n *\n * @class Timer\n * @extends Component\n * @param {(Object|Number)} interval - The interval passed as a `Number`,\n * or can set the attribute of the class with an object.\n */\n constructor(interval) {\n super(Object.assign({\n count: 0,\n handle: null,\n started: null,\n running: false,\n interval: isNumber(interval) ? interval : null,\n }, isObject(interval) ? interval : null));\n }\n\n /**\n * The `elapsed` attribute.\n *\n * @type {Number}\n */\n get elapsed() {\n return !this.lastLoop ? 0 : this.lastLoop - (\n this.started ? this.started.getTime() : new Date().getTime()\n );\n }\n\n /**\n * The `isRunning` attribute.\n *\n * @type {boolean}\n */\n get isRunning() {\n return this.running === true;\n }\n\n /**\n * The `isStopped` attribute.\n *\n * @type {boolean}\n */\n get isStopped() {\n return this.running === false;\n }\n\n /**\n * Resets the timer.\n *\n * @param {(Function|undefined)} fn - The interval callback.\n * @return {Timer} - The `Timer` instance.\n */\n reset(fn) {\n this.stop(() => {\n this.count = 0;\n this.start(() => callback.call(this, fn));\n this.emit('reset');\n });\n\n return this;\n }\n\n /**\n * Starts the timer.\n *\n * @param {Function} fn - The interval callback.\n * @return {Timer} - The `Timer` instance.\n */\n start(fn) {\n this.started = new Date;\n this.lastLoop = Date.now();\n this.running = true;\n this.emit('start');\n\n const loop = () => {\n if(Date.now() - this.lastLoop >= this.interval) {\n callback.call(this, fn);\n this.lastLoop = Date.now();\n this.emit('interval');\n this.count++;\n }\n\n this.handle = window.requestAnimationFrame(loop);\n\n return this;\n };\n\n return loop();\n }\n\n /**\n * Stops the timer.\n *\n * @param {Function} fn - The stop callback.\n * @return {Timer} - The `Timer` instance.\n */\n stop(fn) {\n if(this.isRunning) {\n setTimeout(() => {\n window.cancelAnimationFrame(this.handle);\n\n this.running = false;\n\n callback.call(this, fn);\n\n this.emit('stop');\n });\n }\n\n return this;\n }\n\n /**\n * Define the name of the class.\n *\n * @return {string}\n */\n static defineName() {\n return 'Timer';\n }\n}\n","import Face from '../Components/Face';\n\n/**\n * @classdesc This face is designed to increment and decrement numberic values,\n * not `Date` objects.\n * @extends Face\n * @param {(FaceValue|object)} value - The `Face` value. If not an instance\n * of FaceValue, this argument is assumed to be the instance attributes.\n * @param {(object|undefined)} [attributes] - The instance attributes.\n * @memberof Faces\n */\nexport default class Counter extends Face {\n\n increment(instance, value = 1) {\n instance.value = this.value.value + value;\n }\n\n decrement(instance, value = 1) {\n instance.value = this.value.value - value;\n }\n\n /**\n * Define the name of the class.\n *\n * @return {string}\n */\n static defineName() {\n return 'Counter';\n }\n}\n","import Face from '../Components/Face';\nimport { noop, round, isNull, isUndefined, isNumber, callback } from '../Helpers/Functions';\n\n/**\n * @classdesc This face is meant to display a clock that shows minutes, and\n * seconds.\n * @extends Face\n * @param {(FaceValue|object)} value - The `Face` value. If not an instance\n * of FaceValue, this argument is assumed to be the instance attributes.\n * @param {(object|undefined)} [attributes] - The instance attributes.\n * @memberof Faces\n */\nexport default class MinuteCounter extends Face {\n\n defaultDataType() {\n return Date;\n }\n\n defaultAttributes() {\n return {\n showSeconds: true,\n showLabels: true\n };\n }\n\n shouldStop(instance) {\n if(isNull(instance.stopAt) || isUndefined(instance.stopAt)) {\n return false;\n }\n\n if(this.stopAt instanceof Date) {\n return this.countdown ?\n this.stopAt.getTime() >= this.value.value.getTime():\n this.stopAt.getTime() <= this.value.value.getTime();\n }\n else if(isNumber(this.stopAt)) {\n const diff = Math.floor((this.value.value.getTime() - this.originalValue.getTime()) / 1000);\n\n return this.countdown ?\n this.stopAt >= diff:\n this.stopAt <= diff;\n }\n\n throw new Error(`the stopAt property must be an instance of Date or Number.`);\n }\n\n increment(instance, value = 0) {\n instance.value = new Date(this.value.value.getTime() + value + (new Date().getTime() - instance.timer.lastLoop));\n }\n\n decrement(instance, value = 0) {\n instance.value = new Date(this.value.value.getTime() - value - (new Date().getTime() - instance.timer.lastLoop));\n }\n\n format(instance, value) {\n const started = instance.timer.isRunning ? instance.timer.started : new Date(Date.now() - 50);\n\n return [\n [this.getMinutes(value, started)],\n this.showSeconds ? [this.getSeconds(value, started)] : null\n ].filter(noop);\n }\n\n getMinutes(a, b) {\n return round(this.getTotalSeconds(a, b) / 60);\n }\n\n getSeconds(a, b) {\n const totalSeconds = this.getTotalSeconds(a, b);\n\n return Math.abs(Math.ceil(totalSeconds === 60 ? 0 : totalSeconds % 60));\n }\n\n getTotalSeconds(a, b) {\n return a.getTime() === b.getTime() ? 0 : Math.round((a.getTime() - b.getTime()) / 1000);\n }\n\n /**\n * Define the name of the class.\n *\n * @return {string}\n */\n static defineName() {\n return 'MinuteCounter';\n }\n}\n","import MinuteCounter from './MinuteCounter';\n\n/**\n * @classdesc This face is meant to display a clock that shows\n * hours, minutes, and seconds.\n * @extends Face\n * @param {(FaceValue|object)} value - The `Face` value. If not an instance\n * of FaceValue, this argument is assumed to be the instance attributes.\n * @param {(object|undefined)} [attributes] - The instance attributes.\n * @memberof Faces\n */\nexport default class HourCounter extends MinuteCounter {\n\n format(instance, value) {\n const now = !instance.timer.started ? new Date : value;\n const originalValue = instance.originalValue || value;\n const a = !this.countdown ? now : originalValue;\n const b = !this.countdown ? originalValue : now;\n\n const data = [\n [this.getHours(a, b)],\n [this.getMinutes(a, b)]\n ];\n\n if(this.showSeconds) {\n data.push([this.getSeconds(a, b)]);\n }\n\n return data;\n }\n\n getMinutes(a, b) {\n return Math.abs(super.getMinutes(a, b) % 60);\n }\n\n getHours(a, b) {\n return Math.floor(this.getTotalSeconds(a, b) / 60 / 60);\n }\n\n /**\n * Define the name of the class.\n *\n * @return {string}\n */\n static defineName() {\n return 'HourCounter';\n }\n}\n","import HourCounter from './HourCounter';\n\n/**\n * @classdesc This face is meant to display a clock that shows days, hours,\n * minutes, and seconds.\n * @extends HourCounter\n * @param {(FaceValue|object)} value - The `Face` value. If not an instance\n * of FaceValue, this argument is assumed to be the instance attributes.\n * @param {(object|undefined)} [attributes] - The instance attributes.\n * @memberof Faces\n */\nexport default class DayCounter extends HourCounter {\n\n format(instance, value) {\n const now = !instance.started ? new Date : value;\n const originalValue = instance.originalValue || value;\n const a = !this.countdown ? now : originalValue;\n const b = !this.countdown ? originalValue : now;\n\n const data = [\n [this.getDays(a, b)],\n [this.getHours(a, b)],\n [this.getMinutes(a, b)]\n ];\n\n if(this.showSeconds) {\n data.push([this.getSeconds(a, b)]);\n }\n\n return data;\n }\n\n getDays(a, b) {\n return Math.floor(this.getTotalSeconds(a, b) / 60 / 60 / 24);\n }\n\n getHours(a, b) {\n return Math.abs(super.getHours(a, b) % 24);\n }\n\n /**\n * Define the name of the class.\n *\n * @return {string}\n */\n static defineName() {\n return 'DayCounter';\n }\n}\n","import Face from '../Components/Face';\nimport { callback } from '../Helpers/Functions';\n\n/**\n * @classdesc This face shows the current time in twenty-four hour format.\n * @extends Face\n * @param {(FaceValue|object)} value - The `Face` value. If not an instance\n * of FaceValue, this argument is assumed to be the instance attributes.\n * @param {(object|undefined)} [attributes] - The instance attributes.\n * @memberof Faces\n */\nexport default class TwentyFourHourClock extends Face {\n\n defaultDataType() {\n return Date;\n }\n\n defaultValue() {\n return new Date;\n }\n\n defaultAttributes() {\n return {\n showSeconds: true,\n showLabels: false\n };\n }\n\n format(instance, value) {\n if(!value) {\n value = new Date;\n }\n\n const groups = [\n [value.getHours()],\n [value.getMinutes()]\n ];\n\n if(this.showSeconds) {\n groups.push([value.getSeconds()]);\n }\n\n return groups;\n }\n\n increment(instance, offset = 0) {\n instance.value = new Date(this.value.value.getTime() + offset + (new Date().getTime() - instance.timer.lastLoop));\n }\n\n decrement(instance, offset = 0) {\n instance.value = new Date(this.value.value.getTime() - offset - (new Date().getTime() - instance.timer.lastLoop));\n }\n\n /**\n * Define the name of the class.\n *\n * @return {string}\n */\n static defineName() {\n return 'TwentyFourHourClock';\n }\n}\n","import TwentyFourHourClock from './TwentyFourHourClock';\n\n/**\n * @classdesc This face shows the current time in twelve hour format, with AM\n * and PM.\n * @extends Face\n * @param {(FaceValue|object)} value - The `Face` value. If not an instance\n * of FaceValue, this argument is assumed to be the instance attributes.\n * @param {(object|undefined)} [attributes] - The instance attributes.\n * @memberof Faces\n */\nexport default class TwelveHourClock extends TwentyFourHourClock {\n\n defaultAttributes() {\n return {\n showLabels: false,\n showSeconds: true,\n showMeridium: true\n };\n }\n\n format(instance, value) {\n if(!value) {\n value = new Date;\n }\n\n const hours = value.getHours();\n\t\tconst groups = [\n\t\t\thours > 12 ? hours - 12 : (hours === 0 ? 12 : hours),\n\t\t\tvalue.getMinutes()\n\t\t];\n\n this.meridium = hours > 12 ? 'pm' : 'am';\n\n\t\tif(this.showSeconds) {\n\t\t\tgroups.push(value.getSeconds());\n\t\t}\n\n\t\treturn groups;\n }\n\n /**\n * Define the name of the class.\n *\n * @return {string}\n */\n static defineName() {\n return 'TwelveHourClock';\n }\n}\n","import DayCounter from './DayCounter';\n\n/**\n * @classdesc This face is meant to display a clock that shows weeks, days,\n * hours, minutes, and seconds.\n * @extends Face\n * @param {(FaceValue|object)} value - The `Face` value. If not an instance\n * of FaceValue, this argument is assumed to be the instance attributes.\n * @param {(object|undefined)} [attributes] - The instance attributes.\n * @memberof Faces\n */\nexport default class WeekCounter extends DayCounter {\n\n format(instance, value) {\n const now = !instance.timer.started ? new Date : value;\n const originalValue = instance.originalValue || value;\n const a = !this.countdown ? now : originalValue;\n const b = !this.countdown ? originalValue : now;\n\n const data = [\n [this.getWeeks(a, b)],\n [this.getDays(a, b)],\n [this.getHours(a, b)],\n [this.getMinutes(a, b)]\n ];\n\n if(this.showSeconds) {\n data.push([this.getSeconds(a, b)]);\n }\n\n return data;\n }\n\n getWeeks(a, b) {\n return Math.floor(this.getTotalSeconds(a, b) / 60 / 60 / 24 / 7);\n }\n\n getDays(a, b) {\n return Math.abs(super.getDays(a, b) % 7);\n }\n\n /**\n * Define the name of the class.\n *\n * @return {string}\n */\n static defineName() {\n return 'WeekCounter';\n }\n}\n","import WeekCounter from './WeekCounter';\n\n/**\n * @classdesc This face is meant to display a clock that shows years, weeks,\n * days, hours, minutes, and seconds.\n * @extends Face\n * @param {(FaceValue|object)} value - The `Face` value. If not an instance\n * of FaceValue, this argument is assumed to be the instance attributes.\n * @param {(object|undefined)} [attributes] - The instance attributes.\n * @memberof Faces\n */\nexport default class YearCounter extends WeekCounter {\n\n format(instance, value) {\n const now = !instance.timer.started ? new Date : value;\n const originalValue = instance.originalValue || value;\n const a = !this.countdown ? now : originalValue;\n const b = !this.countdown ? originalValue : now;\n\n const data = [\n [this.getYears(a, b)],\n [this.getWeeks(a, b)],\n [this.getDays(a, b)],\n [this.getHours(a, b)],\n [this.getMinutes(a, b)]\n ];\n\n if(this.showSeconds) {\n data.push([this.getSeconds(a, b)]);\n }\n\n return data;\n }\n\n getYears(a, b) {\n return Math.floor(Math.max(0, this.getTotalSeconds(a, b) / 60 / 60 / 24 / 7 / 52));\n }\n\n getWeeks(a, b) {\n return Math.abs(super.getWeeks(a, b) % 52);\n }\n\n /**\n * Define the name of the class.\n *\n * @return {string}\n */\n static defineName() {\n return 'YearCounter';\n }\n}\n","import { Counter } from '../Faces';\nimport { Original } from '../Themes';\nimport { English } from '../Languages';\n\n/**\n * @alias DefaultValues\n * @type {object}\n * @memberof module:Config/DefaultValues\n */\nexport default {\n face: Counter,\n theme: Original,\n language: English\n};\n","import Divider from './Divider';\nimport FlipClock from './FlipClock';\nimport Group from './Group';\nimport Label from './Label';\nimport List from './List';\nimport ListItem from './ListItem';\nimport * as faces from './Faces';\n\nexport default {\n Divider,\n FlipClock,\n Group,\n Label,\n List,\n ListItem,\n faces\n};\n","import Face from './Face';\nimport List from './List';\nimport Group from './Group';\nimport Label from './Label';\nimport Timer from './Timer';\nimport Divider from './Divider';\nimport * as Faces from '../Faces';\nimport FaceValue from './FaceValue';\nimport DomComponent from './DomComponent';\nimport validate from '../Helpers/Validate';\nimport DefaultValues from '../Config/DefaultValues';\nimport ConsoleMessages from '../Config/ConsoleMessages';\nimport { flatten, isNull, isString, isObject, isUndefined, isFunction, error } from '../Helpers/Functions';\n\nexport default class FlipClock extends DomComponent {\n \n /**\n * Create a new `FlipClock` instance.\n *\n * @class FlipClock\n * @extends DomComponent\n * @param {HTMLElement} el - The HTML element used to bind clock DOM node.\n * @param {*} value - The value that is passed to the clock face.\n * @param {object|undefined} attributes - {@link FlipClock.Options} passed an object with key/value.\n */\n \n /**\n * @namespace FlipClock.Options\n * @classdesc An object of key/value pairs that will be used to set the attributes.\n * \n * ##### Example:\n * \n * {\n * face: 'DayCounter',\n * language: 'es',\n * timer: Timer.make(500)\n * }\n * \n * @property {string|Face} [face={@link Faces.DayCounter}] - The clock's {@link Face} instance.\n * @property {number} [interval=1000] - The clock's interval rate (in milliseconds).\n * @property {object} [theme={@link Themes.Original}] - The clock's theme.\n * @property {string|object} [language={@link Languages.English}] - The clock's language.\n * @property {Timer} [timer={@link Timer}] - The clock's timer.\n */\n \n constructor(el, value, attributes) {\n if(!validate(el, HTMLElement)) {\n error(ConsoleMessages.element);\n }\n\n if(isObject(value) && !attributes) {\n attributes = value;\n value = undefined;\n }\n\n const face = attributes.face || DefaultValues.face;\n\n delete attributes.face;\n\n super(Object.assign({\n originalValue: value,\n theme: DefaultValues.theme,\n language: DefaultValues.language,\n timer: Timer.make(attributes.interval || 1000),\n }, attributes));\n\n if(!this.face) {\n this.face = face;\n }\n\n this.mount(el);\n }\n\n /**\n * The clock `Face`.\n *\n * @type {Face}\n */\n get face() {\n return this.$face;\n }\n\n set face(value) {\n if(!validate(value, [Face, 'string', 'function'])) {\n error(ConsoleMessages.face);\n }\n\n this.$face = (Faces[value] || value).make(Object.assign(this.getPublicAttributes(), {\n originalValue: this.face ? this.face.originalValue : undefined\n }));\n\n this.$face.initialized(this);\n\n if(this.value) {\n this.$face.value = this.face.createFaceValue(this, this.value.value);\n }\n else if(!this.value) {\n this.value = this.originalValue;\n }\n\n this.el && this.render();\n }\n\n /**\n * The `stopAt` attribute.\n *\n * @type {*}\n */\n get stopAt() {\n return isFunction(this.$stopAt) ? this.$stopAt(this) : this.$stopAt;\n }\n\n set stopAt(value) {\n this.$stopAt = value;\n }\n\n /**\n * The `timer` instance.\n *\n * @type {Timer}\n */\n get timer() {\n return this.$timer;\n }\n\n set timer(timer) {\n if(!validate(timer, Timer)) {\n error(ConsoleMessages.timer);\n }\n\n this.$timer = timer;\n }\n\n /**\n * Helper method to The clock's `FaceValue` instance.\n *\n * @type {FaceValue|null}\n */\n get value() {\n return this.face ? this.face.value : null;\n }\n\n set value(value) {\n if(!this.face) {\n throw new Error('A face must be set before setting a value.');\n }\n\n if(value instanceof FaceValue) {\n this.face.value = value;\n }\n else if(this.value) {\n this.face.value = this.face.value.clone(value);\n }\n else {\n this.face.value = this.face.createFaceValue(this, value);\n }\n\n this.el && this.render();\n }\n\n /**\n * The `originalValue` attribute.\n *\n * @type {*}\n */\n get originalValue() {\n if(isFunction(this.$originalValue) && !this.$originalValue.name) {\n return this.$originalValue();\n }\n\n if(!isUndefined(this.$originalValue) && !isNull(this.$originalValue)) {\n return this.$originalValue;\n }\n\n return this.face ? this.face.defaultValue() : undefined;\n }\n\n set originalValue(value) {\n this.$originalValue = value;\n }\n\n /**\n * Mount the clock to the parent DOM element.\n *\n * @param {HTMLElement} el - The parent `HTMLElement`.\n * @return {FlipClock} - The `FlipClock` instance.\n */\n mount(el) {\n super.mount(el);\n\n this.face.mounted(this);\n\n return this;\n }\n\n /**\n * Render the clock's DOM nodes.\n *\n * @return {HTMLElement} - The parent `HTMLElement`.\n */\n render() {\n // Call the parent render function\n super.render();\n\n // Check to see if the face has a render function defined in the theme.\n // This allows a face to completely re-render or add to the theme.\n // This allows face specific interfaces for a theme.\n if(this.theme.faces[this.face.name]) {\n this.theme.faces[this.face.name](this.el, this);\n }\n\n // Pass the clock instance to the rendered() function on the face.\n // This allows global modifications to the rendered templates not\n // theme specific.\n this.face.rendered(this);\n\n // Return the rendered `HTMLElement`.\n return this.el;\n }\n\n /**\n * Start the clock.\n *\n * @param {Function} fn - The interval callback.\n * @return {FlipClock} - The `FlipClock` instance.\n */\n start(fn) {\n if(!this.timer.started) {\n this.value = this.originalValue;\n }\n\n isUndefined(this.face.stopAt) && (this.face.stopAt = this.stopAt);\n isUndefined(this.face.originalValue) && (this.face.originalValue = this.originalValue);\n\n this.timer.start(() => {\n this.face.interval(this, fn);\n });\n\n this.face.started(this);\n\n return this.emit('start');\n }\n\n /**\n * Stop the clock.\n *\n * @param {Function} fn - The stop callback.\n * @return {FlipClock} - The `FlipClock` instance.\n */\n stop(fn) {\n this.timer.stop(fn);\n this.face.stopped(this);\n\n return this.emit('stop');\n }\n\n /**\n * Reset the clock to the original value.\n *\n * @param {Function} fn - The interval callback.\n * @return {FlipClock} - The `FlipClock` instance.\n */\n reset(fn) {\n this.value = this.originalValue;\n this.timer.reset(() => this.interval(this, fn));\n this.face.reset(this);\n\n return this.emit('reset');\n }\n\n /**\n * Helper method to increment the clock's value.\n *\n * @param {*|undefined} value - Increment the clock by the specified value.\n * If no value is passed, then the default increment is determined by\n * the Face, which is usually `1`.\n * @return {FlipClock} - The `FlipClock` instance.\n */\n increment(value) {\n this.face.increment(this, value);\n\n return this;\n }\n\n /**\n * Helper method to decrement the clock's value.\n *\n * @param {*|undefined} value - Decrement the clock by the specified value.\n * If no value is passed, then the default decrement is determined by\n * the `Face`, which is usually `1`.\n * @return {FlipClock} - The `FlipClock` instance.\n */\n decrement(value) {\n this.face.decrement(this, value);\n\n return this;\n }\n\n /**\n * Helper method to instantiate a new `Divider`.\n *\n * @param {object|undefined} [attributes] - The attributes passed to the\n * `Divider` instance.\n * @return {Divider} - The instantiated Divider.\n */\n createDivider(attributes) {\n return Divider.make(Object.assign({\n theme: this.theme,\n language: this.language\n }, attributes));\n }\n\n /**\n * Helper method to instantiate a new `List`.\n *\n * @param {*} value - The `List` value.\n * @param {object|undefined} [attributes] - The attributes passed to the\n * `List` instance.\n * @return {List} - The instantiated `List`.\n */\n createList(value, attributes) {\n return List.make(value, Object.assign({\n theme: this.theme,\n language: this.language\n }, attributes));\n }\n\n /**\n * Helper method to instantiate a new `Label`.\n *\n * @param {*} value - The `Label` value.\n * @param {object|undefined} [attributes] - The attributes passed to the\n * `Label` instance.\n * @return {Label} - The instantiated `Label`.\n */\n createLabel(value, attributes) {\n return Label.make(value, Object.assign({\n theme: this.theme,\n language: this.language\n }, attributes));\n }\n\n /**\n * Helper method to instantiate a new `Group`.\n *\n * @param {array} items - An array of `List` items to group.\n * @param {Group|undefined} [attributes] - The attributes passed to the\n * `Group` instance.\n * @return {Group} - The instantiated `Group`.\n */\n createGroup(items, attributes) {\n return Group.make(items, Object.assign({\n theme: this.theme,\n language: this.language\n }, attributes));\n }\n\n /**\n * The `defaults` attribute.\n *\n * @type {object}\n */\n static get defaults() {\n return DefaultValues;\n }\n\n /**\n * Define the name of the class.\n *\n * @return {string}\n */\n static defineName() {\n return 'FlipClock';\n }\n\n /**\n * Helper method to set the default `Face` value.\n *\n * @param {Face} value - The default `Face` class.This should be a\n * constructor.\n * @return {void}\n */\n static setDefaultFace(value) {\n if(!validate(value, Face)) {\n error(ConsoleMessages.face);\n }\n\n DefaultValues.face = value;\n }\n\n /**\n * Helper method to set the default theme.\n *\n * @param {object} value - The default theme.\n * @return {void}\n */\n static setDefaultTheme(value) {\n if(!validate(value, 'object')) {\n error(ConsoleMessages.theme);\n }\n\n DefaultValues.theme = value;\n }\n\n /**\n * Helper method to set the default language.\n *\n * @param {object} value - The default language.\n * @return {void}\n */\n static setDefaultLanguage(value) {\n if(!validate(value, 'object')) {\n error(ConsoleMessages.language);\n }\n\n DefaultValues.language = value;\n }\n\n}\n"],"names":["error","string","Error","callback","fn","isFunction","args","call","this","round","value","isNegativeZero","isNegative","Math","ceil","floor","toString","noop","isUndefined","isNull","chain","before","after","concatMap","x","map","reduce","y","concat","flatten","deepFlatten","Array","isArray","length","Infinity","isConstructor","Function","name","isString","isObject","type","isNumber","isNaN","kebabCase","replace","toLowerCase","digitize","options","prepend","number","prependLeadingZero","split","Object","assign","minimumDigits","digits","arr","min","i","unshift","format","parseFloat","findRange","char","RANGES","code","charCodeAt","max","stringFromCharCodeBy","String","fromCharCode","next","range","join","prev","validate","success","forEach","arg","_typeof","language","LANGUAGES","values","find","aliases","indexOf","translate","from","lang","dictionary","swap","subject","existing","parentNode","replaceChild","setAttributes","el","attributes","setAttribute","appendChildren","children","filter","child","HTMLElement","appendChild","createElement","document","innerHTML","instance","index","childNodes","querySelector","group","groupEl","querySelectorAll","lists","listValue","createList","domValue","countdown","animationRate","face","delay","createGroup","render","items","item","t","label","beforeValue","classList","add","style","animationDelay","animationDuration","createListItem","active","className","createDivider","mount","showSeconds","showLabels","createLabel","TwentyFourHourClock","showMeridium","meridium","parent","Component","events","key","event","apply","_this","push","_this2","off","on","hasOwnProperty","getOwnPropertyNames","_this3","getAttribute","keys","getAttributes","match","obj","_this4","constructor","defineName","$events","FaceValue","getPublicAttributes","$digits","$value","theme","date","element","faceValue","timer","Face","undefined","autoStart","defaultAttributes","defaultValue","decrement","increment","shouldStop","stop","emit","stopAt","amount","isStopped","window","requestAnimationFrame","start","make","defaultDataType","createFaceValue","$stopAt","$originalValue","DomComponent","insertBefore","$el","ConsoleMessages","$parent","$theme","$language","Divider","ListItem","List","$items","Group","Label","Timer","interval","count","handle","started","running","Date","lastLoop","now","loop","isRunning","setTimeout","cancelAnimationFrame","getTime","Counter","MinuteCounter","diff","originalValue","getMinutes","getSeconds","a","b","getTotalSeconds","totalSeconds","abs","HourCounter","data","getHours","_get","DayCounter","getDays","groups","offset","TwelveHourClock","hours","WeekCounter","getWeeks","YearCounter","getYears","FlipClock","faces","English","DefaultValues","mounted","rendered","stopped","reset","$face","Faces","initialized","$timer","clone"],"mappings":"08EAiBO,QAASA,OAAMC,QACZC,OAAMD,GAaT,QAASE,UAASC,MAClBC,WAAWD,GAAK,4BADSE,mCAAAA,0BAEjBF,GAAGG,WAAHH,GAAQI,aAASF,KAYzB,QAASG,OAAMC,SACXC,gBACHD,EAAQE,WAAWF,GAASG,KAAKC,KAAKJ,GAASG,KAAKE,MAAML,KACzD,IAAMA,GAAOM,WAAaN,EAW5B,QAASO,MAAKP,UACTQ,YAAYR,KAAWS,OAAOT,GAanC,QAASU,OAAMC,EAAQC,SACnB,kBAAMA,GAAMD,MAWhB,QAASE,WAAUnB,SACf,UAAAoB,SACIA,GAAEC,IAAIrB,GAAIsB,OAAO,SAACF,EAAGG,SAAMH,GAAEI,OAAOD,SAY5C,QAASE,SAAQnB,SACba,WAAU,SAAAb,SAASA,KAAOA,GAW9B,QAASoB,aAAYN,SACjBD,WAAU,SAAAC,SAAKO,OAAMC,QAAQR,GAAKM,YAAaN,GAAKA,IAAGA,GAuB3D,QAASS,QAAOvB,SACZoB,aAAYpB,GAAOuB,OAWvB,QAAStB,gBAAeD,SACpB,GAAIG,KAAKJ,MAAMC,KAAYwB,EAAAA,EAW/B,QAAStB,YAAWF,SAChBC,gBAAeD,IAAUA,EAAQ,EAWrC,QAASS,QAAOT,SACF,QAAVA,EAWJ,QAASQ,aAAYR,cACA,KAAVA,EAWX,QAASyB,eAAczB,SAClBA,aAAiB0B,aAAe1B,EAAM2B,KAW3C,QAASC,UAAS5B,SACG,gBAAVA,GAWX,QAASsB,SAAQtB,SACbA,aAAiBqB,OAWrB,QAASQ,UAAS7B,MACf8B,WAAc9B,SACJ,OAATA,IAAkBsB,QAAQtB,KACrB,UAAR8B,GAA4B,YAARA,GAYrB,QAASnC,YAAWK,SAChBA,aAAiB0B,UAWrB,QAASK,UAAS/B,UACbgC,MAAMhC,GAWX,QAASiC,WAAU1C,SACfA,GAAO2C,QAAQ,kBAAmB,SAASA,QAAQ,OAAQ,KAAKC,cC9P5D,QAASC,UAASpC,EAAOqC,WAM3BC,SAAQC,UACaF,EAAQG,oBACS,IAAvCD,EAAOjC,WAAWmC,MAAM,IAAIlB,OAEJ,IAAM,IAAIL,OAAOqB,SATjDF,GAAUK,OAAOC,QACbC,cAAe,EACfJ,oBAAoB,GACrBH,WASMQ,QAAOC,EAAKC,MACXxB,GAASH,YAAY0B,GAAKvB,UAE7BA,EAASwB,MACJ,GAAIC,GAAI,EAAGA,EAAID,EAAMxB,EAAQyB,IAC7BF,EAAI,GAAGG,QAAQ,WAIhBH,IAGG3B,SAASnB,IAAQe,IAAI,SAAAwB,SACxBpB,SAAQC,aAAamB,IAASxB,IAAI,SAAAwB,SAC9BD,SAAQC,GAAQE,MAAM,SAEjCJ,EAAQO,eAAiB,GCXjC,QAASM,QAAO3D,EAAQuC,UACbA,OACE,eACMqB,YAAW5D,SAGnBA,GAeX,QAAS6D,WAAUC,OACX,GAAML,KAAKM,GAAQ,IACbC,GAAOF,EAAK/C,WAAWkD,WAAW,MAErCF,EAAON,GAAGD,KAAOQ,GAAQD,EAAON,GAAGS,KAAOF,QAClCD,GAAON,SAIf,MAcX,QAASU,sBAAqBL,EAAM3D,SACzBiE,QAAOC,aACVlE,EAAG0D,UAAUC,GAAOA,EAAKG,WAAW,KAcrC,QAASK,MAAK7D,SASVkD,QARYlD,EACdM,WACAmC,MAAM,IACN1B,IAAI,SAAAsC,SAAQK,sBAAqBL,EAAM,SAACS,EAAOP,UACpCO,GAASP,EAAOO,EAAML,IAAMF,EAAO,EAAIO,EAAMf,QAExDgB,KAAK,YAEsB/D,IAa7B,QAASgE,MAAKhE,SASVkD,QARYlD,EACdM,WACAmC,MAAM,IACN1B,IAAI,SAAAsC,SAAQK,sBAAqBL,EAAM,SAACS,EAAOP,UACpCO,GAASP,EAAOO,EAAMf,IAAMQ,EAAO,EAAIO,EAAML,QAExDM,KAAK,YAEsB/D,IC3GrB,QAASiE,UAASjE,UACzBkE,IAAU,qBADyBtE,mCAAAA,0BAGvCuB,SAAQvB,GAAMuE,QAAQ,SAAAC,IACb3D,OAAOT,IAAUS,OAAO2D,IACxBvC,SAASuC,IAASpE,YAAiBoE,IACnCzE,WAAWyE,KAAS3C,cAAc2C,KAAuB,IAAfA,EAAIpE,IAC9C4B,SAASwC,IAASC,QAAOrE,KAAUoE,KACpCF,GAAU,KAIXA,ECjBI,QAASI,UAAS3C,SACtBA,GAAO4C,GAAU5C,EAAKQ,gBAAkBO,OAAO8B,OAAOD,IAAWE,KAAK,SAAAzE,UACjC,IAAjCA,EAAM0E,QAAQC,QAAQhD,KAC5B,KCAM,QAASiD,WAAUrF,EAAQsF,MAChCC,GAAOlD,SAASiD,GAAQP,SAASO,GAAQA,SAC5BC,EAAKC,YAAcD,GACpBvF,IAAWA,ECC1B,QAASyF,MAAKC,EAASC,SAC1BA,GAASC,YACXD,EAASC,WAAWC,aAAaH,EAASC,GAEnCD,GAGDC,EAaD,QAASG,eAAcC,EAAIC,MAC9B1D,SAAS0D,OACP,GAAMvC,KAAKuC,GACdD,EAAGE,aAAaxC,EAAGuC,EAAWvC,UAIzBsC,GAaD,QAASG,gBAAeH,EAAII,SAC/BpE,SAAQoE,IACVA,EAASC,OAAOpF,MAAM4D,QAAQ,SAAAyB,GAC1BA,YAAiBC,cACnBP,EAAGQ,YAAYF,KAKXN,EAcD,QAASS,eAAcT,EAAII,EAAUH,SACtCD,aAAcO,eAClBP,EAAKU,SAASD,cAAcT,IAG7BD,cAAcC,EAAIzD,SAAS6D,GAAYA,EAAWH,GAE9C1D,SAAS6D,IAAcpE,QAAQoE,GAIlCD,eAAeH,EAAII,GAHnBJ,EAAGW,UAAYP,EAMTJ,EChGO,mBAASA,EAAIY,GACxBT,eAAeH,GACXS,cAAc,aAAe,uBAC7BA,cAAc,aAAe,oCCF5BH,OAAMN,EAAIa,SACRb,GAAMA,EAAGc,WAAad,EAAGc,WAAWD,GAASb,EAAGa,GAAU,KAGrE,QAAS9C,OAAKiC,SACHA,GAAKA,EAAGe,cAAc,0CAA0CJ,UAAY,KAGxE,mBAASX,EAAIY,GAsBxBT,eAAeH,EArBDY,EAASlG,MAAM6C,OAAO9B,IAAI,SAACuF,EAAOxF,MACtCyF,GAAUX,MAAMM,EAASZ,GAAKY,EAASZ,GAAGkB,iBAAiB,qBAAuB,KAAM1F,GAExF2F,EAAQH,EAAMvF,IAAI,SAACf,EAAOiB,MAEtByF,GAAYrD,MADHuC,MAAMW,EAAUA,EAAQC,iBAAiB,oBAAsB,KAAMvF,UAG7EiF,GAASS,WAAW3G,GACvB4G,SAAUF,EACVG,UAAWX,EAASW,UACpBC,cAAeZ,EAASa,KAAKD,eAAiBZ,EAASa,KAAKC,gBAI7Dd,GAASe,YAAYR,KAGZ1F,IAAI,SAAAuF,SACbA,GAAMY,6BC5BG5B,EAAIY,GAKxBT,eAAeH,EAJDY,EAASiB,MAAMpG,IAAI,SAAAqG,SACtBA,GAAKF,6BCFI5B,EAAIY,GACxBZ,EAAGW,UAAYC,EAASmB,EAAEnB,EAASoB,uBCCfhC,EAAIY,MAClBqB,GAAcrB,EAASU,WACxBV,EAASW,UAAmChD,KAAKqC,EAASlG,OAArCgE,KAAKkC,EAASlG,OAGpCkG,GAASU,UAAYV,EAASU,WAAaV,EAASlG,OACpDsF,EAAGkC,UAAUC,IAAI,QAGrBnC,EAAGoC,MAAMC,yBAAoBzB,EAASY,cAAgB,QACtDxB,EAAGoC,MAAME,4BAAuB1B,EAASY,cAAgB,QAEzDZ,EAASiB,OACLjB,EAAS2B,eAAe3B,EAASlG,OAC7B8H,QAAQ,IAEZ5B,EAAS2B,eAAeN,GACpBO,QAAQ,KAIhBrC,eAAeH,EAAIY,EAASiB,MAAMpG,IAAI,SAAAqG,SAAQA,GAAKF,gCCvB/B5B,EAAIY,MAClB6B,IAAgC,IAApB7B,EAAS4B,OAAkB,UACrB,IAApB5B,EAAS4B,OAAmB,SAAW,IAG3CxC,GAAGkC,UAAUC,IAAIM,GAEjBtC,eAAeH,GACXS,cAAc,OACVA,cAAc,MAAOG,EAASlG,aAAe,QAC7C+F,cAAc,MAAOG,EAASlG,aAAe,mBACtC,uDCbKsF,EAAIY,GACxBA,EAAS8B,gBAAgBC,MAAM3C,EAAIA,EAAGc,WAAW,IACjDF,EAAS8B,gBAAgBC,MAAM3C,EAAIA,EAAGc,WAAW,IAE9CF,EAASa,KAAKmB,aACbhC,EAAS8B,gBAAgBC,MAAM3C,EAAIA,EAAGc,WAAW,IAGlDF,EAASa,KAAKoB,aACbjC,EAASkC,YAAY,QAAQH,MAAM3C,EAAGc,WAAW,IACjDF,EAASkC,YAAY,SAASH,MAAM3C,EAAGc,WAAW,IAClDF,EAASkC,YAAY,WAAWH,MAAM3C,EAAGc,WAAW,IAEjDF,EAASa,KAAKmB,aACbhC,EAASkC,YAAY,WAAWH,MAAM3C,EAAGc,WAAW,4BCdxCd,EAAIY,GACxBA,EAAS8B,gBAAgBC,MAAM3C,EAAIA,EAAGc,WAAW,IAE9CF,EAASa,KAAKmB,aACbhC,EAAS8B,gBAAgBC,MAAM3C,EAAIA,EAAGc,WAAW,IAGlDF,EAASa,KAAKoB,aACbjC,EAASkC,YAAY,SAASH,MAAM3C,EAAGc,WAAW,IAClDF,EAASkC,YAAY,WAAWH,MAAM3C,EAAGc,WAAW,IAEjDF,EAASa,KAAKmB,aACbhC,EAASkC,YAAY,WAAWH,MAAM3C,EAAGc,WAAW,8BCZxCd,EAAIY,GACrBA,EAASa,KAAKmB,aACbhC,EAAS8B,gBAAgBC,MAAM3C,EAAIA,EAAGc,WAAW,IAGlDF,EAASa,KAAKoB,aACbjC,EAASkC,YAAY,WAAWH,MAAM3C,EAAGc,WAAW,IAEjDF,EAASa,KAAKmB,aACbhC,EAASkC,YAAY,WAAWH,MAAM3C,EAAGc,WAAW,oCCTxCd,EAAIY,GACxBA,EAAS8B,gBAAgBC,MAAM3C,EAAIA,EAAGc,WAAW,IAE9CF,EAASa,KAAKmB,aACbhC,EAAS8B,gBAAgBC,MAAM3C,EAAIA,EAAGc,WAAW,IAGlDF,EAASa,KAAKoB,aACbjC,EAASkC,YAAY,SAASH,MAAM3C,EAAGc,WAAW,IAClDF,EAASkC,YAAY,WAAWH,MAAM3C,EAAGc,WAAW,IAEjDF,EAASa,KAAKmB,aACbhC,EAASkC,YAAY,WAAWH,MAAM3C,EAAGc,WAAW,gCCVxCd,EAAIY,MACxBmC,sBAAoB/C,EAAIY,GAErBA,EAASa,KAAKuB,cAAgBpC,EAASa,KAAKwB,SAAU,IAC/CjB,GAAQpB,EAASkC,YAAYlC,EAASa,KAAKwB,UAC3CC,EAASlD,EAAGc,WAAWd,EAAGc,WAAW7E,OAAS,EAEpD+F,GAAMW,MAAMO,GAAQhB,UAAUC,IAAI,+CCTlBnC,EAAIY,GACxBA,EAAS8B,gBAAgBC,MAAM3C,EAAIA,EAAGc,WAAW,IACjDF,EAAS8B,gBAAgBC,MAAM3C,EAAIA,EAAGc,WAAW,IACjDF,EAAS8B,gBAAgBC,MAAM3C,EAAIA,EAAGc,WAAW,IAE9CF,EAASa,KAAKmB,aACbhC,EAAS8B,gBAAgBC,MAAM3C,EAAIA,EAAGc,WAAW,IAGlDF,EAASa,KAAKoB,aACbjC,EAASkC,YAAY,SAASH,MAAM3C,EAAGc,WAAW,IAClDF,EAASkC,YAAY,QAAQH,MAAM3C,EAAGc,WAAW,IACjDF,EAASkC,YAAY,SAASH,MAAM3C,EAAGc,WAAW,IAClDF,EAASkC,YAAY,WAAWH,MAAM3C,EAAGc,WAAW,IAEjDF,EAASa,KAAKmB,aACbhC,EAASkC,YAAY,WAAWH,MAAM3C,EAAGc,WAAW,4BChBxCd,EAAIY,GACxBA,EAAS8B,gBAAgBC,MAAM3C,EAAIA,EAAGc,WAAW,IACjDF,EAAS8B,gBAAgBC,MAAM3C,EAAIA,EAAGc,WAAW,IACjDF,EAAS8B,gBAAgBC,MAAM3C,EAAIA,EAAGc,WAAW,IACjDF,EAAS8B,gBAAgBC,MAAM3C,EAAIA,EAAGc,WAAW,IAE9CF,EAASa,KAAKmB,aACbhC,EAAS8B,gBAAgBC,MAAM3C,EAAIA,EAAGc,WAAW,IAGlDF,EAASa,KAAKoB,aACbjC,EAASkC,YAAY,SAASH,MAAM3C,EAAGc,WAAW,IAClDF,EAASkC,YAAY,SAASH,MAAM3C,EAAGc,WAAW,IAClDF,EAASkC,YAAY,QAAQH,MAAM3C,EAAGc,WAAW,IACjDF,EAASkC,YAAY,SAASH,MAAM3C,EAAGc,WAAW,IAClDF,EAASkC,YAAY,WAAWH,MAAM3C,EAAGc,WAAW,IAEjDF,EAASa,KAAKmB,aACbhC,EAASkC,YAAY,WAAWH,MAAM3C,EAAGc,WAAW,SChB3CqC,iCAQLlD,wCACHC,aAAa9C,OAAOC,QACrB+F,WACDnD,mEAmCFoD,qCAAQ/I,mCAAAA,0BACNE,MAAK4I,OAAOC,SACND,OAAOC,GAAKxE,QAAQ,SAAAyE,GACrBA,EAAMC,MAAMC,EAAMlJ,KAInBE,mCAYR6I,EAAKjJ,SACAI,MAAK4I,OAAOC,UACPD,OAAOC,YAGXD,OAAOC,GAAKI,KAAKrJ,GAEfI,qCAaP6I,EAAKjJ,SACFI,MAAK4I,OAAOC,IAAQjJ,OACdgJ,OAAOC,GAAO7I,KAAK4I,OAAOC,GAAKhD,OAAO,SAAAiD,SAChCA,KAAUlJ,SAIhBgJ,OAAOC,MAGT7I,uCAUN6I,EAAKjJ,oBACNA,GAAKgB,MAAMhB,EAAI,iBAAMsJ,GAAKC,IAAIN,EAAKjJ,KAE5BI,KAAKoJ,GAAGP,EAAKjJ,GAAI,qDASfiJ,SACF7I,MAAKqJ,eAAeR,GAAO7I,KAAK6I,GAAO,sEASxCpD,WAEN7C,QAAO0G,oBAAoBtJ,MAAMqE,QAAQ,SAAAwE,GACrCpD,EAAWoD,GAAOU,EAAKC,aAAaX,KAGjCpD,qFAUA7C,QAAO6G,KAAKzJ,KAAK0J,iBACnB7D,OAAO,SAAAgD,UACIA,EAAIc,MAAM,SAErBzI,OAAO,SAAC0I,EAAKf,SACVe,GAAIf,GAAOgB,EAAKL,aAAaX,GACtBe,yDAWNf,EAAK3I,GACX6B,SAAS8G,QACHtD,cAAcsD,QAGdA,GAAO3I,sDAUNwE,OACN,GAAMxB,KAAKwB,QACNgB,aAAaxC,EAAGwB,EAAOxB,iDAU3BtD,SACED,UAASI,KAAKC,KAAMJ,0CAxKtBI,MAAK8J,YAAYC,qBAAsBnI,WACxCpC,MAAM,qCAGHQ,KAAK8J,YAAYC,sDASjB/J,MAAKgK,8BAGL9J,QACF8J,QAAU9J,mEAiKJJ,2BAAAA,oCACAE,KAAQF,oBlB/LrB0D,IAEFP,IAAK,GACLU,IAAK,KAGLV,IAAK,GACLU,IAAK,KAGLV,IAAK,GACLU,IAAK,MmBhBYsG,iCAYL/J,EAAOuF,wHACT7C,OAAOC,QACTO,OAAQ,gBAAAlD,SAASA,IACjBwC,oBAAoB,EACpBI,cAAe,GAChB2C,MAEMvF,UACAA,MAAQA,wNAyCVgC,OAAMlC,KAAKE,6DASX+B,gDAYL/B,EAAOuF,SACF,IAAIzF,MAAK8J,YAAY5J,EAAO0C,OAAOC,OACtC7C,KAAKkK,sBAAuBzE,6CAtDzBzF,MAAKmK,0BAGLjK,QACFiK,QAAUjK,OACV4C,cAAgBzC,KAAKsD,IAAI3D,KAAK8C,cAAerB,OAAOvB,4CASlDF,MAAKoK,yBAGNlK,QACDkK,OAASlK,OACT6C,OAAST,SAAStC,KAAKoD,OAAOlD,IAC/B4C,cAAe9C,KAAK8C,cACpBJ,mBAAoB1C,KAAK0C,6EA2CtB,2BA9FwBiG,MCCnCV,UAAW,kCACXZ,MAAO,uCACPgD,MAAO,wCACP7F,SAAU,kCACV8F,KAAM,2CACNrD,KAAM,gDACNsD,QAAS,oDACTC,UAAW,qDACXC,MAAO,4DCRUC,4BAYLxK,EAAOuF,2CACVvF,YAAiB+J,KAAclI,SAAS7B,KACzCuF,EAAavF,EACbA,MAAQyK,0EAKPpF,cAAc3C,OAAOC,QACtB+H,WAAW,EACX7D,WAAW,EACXC,cAAe,KAChBgC,EAAK6B,oBAAqBpF,SAE1B9E,OAAOT,IAAUQ,YAAYR,MAC5BA,EAAQ8I,EAAK8B,gBAGd5K,MACMA,MAAQA,yFAiEZkG,EAAUxG,SACZI,MAAK+G,eACCgE,UAAU3E,QAGV4E,UAAU5E,GAGnBzG,SAASI,KAAKC,KAAMJ,GAEjBI,KAAKiL,WAAW7E,IACfA,EAAS8E,OAGNlL,KAAKmL,KAAK,0DASV/E,UACC1F,YAAYV,KAAKoL,SAAUpL,KAAKoL,SAAWhF,EAASlG,MAAMA,4CAU/DkG,EAAUlG,SACNA,8NAsCDkG,EAAUiF,gDAYVjF,EAAUiF,4CAUZjF,4CAUAA,wCAUFA,oDAUMA,8CAUHA,4CAUDA,GACDpG,KAAK4K,WAAaxE,EAASqE,MAAMa,WAChCC,OAAOC,sBAAsB,iBAAMpF,GAASqF,MAAMrF,6DAY1CA,EAAUlG,oBACf+J,GAAUyB,KACb7L,WAAWK,KAAWA,EAAM2B,KAAO3B,IAAUA,GACzC4C,cAAe9C,KAAK8C,cACpBM,OAAQ,gBAAAlD,SAASgJ,GAAK9F,OAAOgD,EAAUlG,iDA1NxCF,MAAK2L,0DASL3L,MAAKoK,yBAGNlK,GACDA,YAAiB+J,KAClB/J,EAAQF,KAAK4L,gBAAgB1L,SAG5BkK,OAASlK,2CASPF,MAAK6L,0BAGL3L,QACF2L,QAAU3L,kDASRF,MAAK8L,iCAGE5L,QACT4L,eAAiB5L,YApFIyI,GCKrB1D,SACG,eACA,YACA,aACA,gBACA,gBACA,SAQHL,GAAW,KAAM,QAAS,oDCd1BK,SACC,cACC,aACF,aACC,gBACE,iBACA,UAQHL,GAAW,KAAM,QAAS,qDCd1BK,SACG,cACA,cACA,YACA,iBACA,iBACA,WAQHL,GAAW,KAAM,QAAS,KAAM,QAAS,mDCdzCK,SACA,YACA,eACA,aACA,gBACA,mBACA,YAQAL,GAAW,KAAM,QAAS,oDCd1BK,SACA,eACA,cACA,aACA,kBACA,kBACA,YAQAL,GAAW,KAAM,QAAS,oDCd1BK,SACA,eACA,cACA,aACA,gBACA,kBACA,WAQAL,GAAW,KAAM,QAAS,qDCd1BK,SACA,cACA,aACA,aACA,gBACA,kBACA,YAQAL,GAAW,KAAM,QAAS,qDCd1BK,SACA,aACA,WACA,YACA,eACA,gBACA,SAQAL,GAAW,KAAM,QAAS,qDCd1BK,SACA,gBACA,iBACA,eACA,iBACA,oBACA,YAQAL,GAAW,KAAM,QAAS,qDCd1BK,SACG,aACA,YACA,cACA,iBACA,kBACA,YAQHL,GAAW,KAAM,QAAS,oDCd1BK,SACA,cACA,YACA,aACA,eACA,eACA,SAQAL,GAAW,KAAM,QAAS,oDCd1BK,SACA,YACG,aACA,YACA,cACA,eACA,aAQHL,GAAW,KAAM,QAAS,uDCd1BK,SACA,cACA,YACA,eACA,cACA,iBACA,WAQAL,GAAW,KAAM,QAAS,oDCd1BK,SACA,WACA,SACA,UACA,YACA,YACA,KAQAL,GAAW,KAAM,QAAS,sDCd1BK,SACA,WACA,SACA,UACA,YACA,YACA,KAQAL,GAAW,KAAM,QAAS,oDCd1BK,SACG,cACA,cACA,eACA,kBACA,kBACA,YAQHL,GAAW,KAAM,QAAS,qDCd1BK,SACG,eACA,eACA,cACA,eACA,kBACA,YAQHL,IAAW,KAAM,QAAS,qDCd1BK,UACA,YACA,eACA,cACA,gBACA,mBACA,YAQAL,IAAW,KAAM,KAAM,QAAS,0DCdhCK,UACA,aACA,gBACA,YACA,kBACA,iBACA,WAQAL,IAAW,KAAM,QAAS,uDCd1BK,UACA,cACA,aACA,aACA,gBACA,kBACA,YAQAL,IAAW,KAAM,QAAS,2DCd1BK,UACH,aACC,YACF,aACC,cACE,iBACA,YAQCL,IAAW,KAAM,QAAS,uDCd1BK,UACG,aACA,eACA,aACA,gBACA,gBACA,UAQHL,IAAW,KAAM,QAAS,wDCd1BK,UACA,cACA,eACA,YACA,iBACA,iBACA,WAQAL,IAAW,KAAM,QAAS,uDCd1BK,UACA,YACA,eACA,cACA,iBACA,kBACA,YAQAL,IAAW,KAAM,QAAS,wDCd1BK,UACA,YACA,aACA,YACA,kBACA,eACA,UAQAL,IAAW,KAAM,QAAS,qDCd1BK,UACA,aACA,UACA,YACA,eACA,iBACA,UAQAL,IAAW,KAAM,QAAS,wDCd1BK,UACG,cACA,cACA,YACA,iBACA,kBACA,WAQHL,IAAW,KAAM,QAAS,wDCd1BK,UACA,aACA,aACA,aACA,cACA,eACA,QAQAL,IAAW,KAAM,QAAS,2DCd1BK,UACA,WACA,SACA,UACA,YACA,YACA,KAQAL,IAAW,KAAM,QAAS,wDCd1BK,UACA,WACA,SACA,UACA,YACA,YACA,KAQAL,IAAW,8YChBHmH,qCASLtG,0HACF7C,OAAOC,QACT6F,OAAQ,MACTjD,MAEM4E,OACL7K,gBAASwJ,EAAKnH,yCAGdmH,EAAKxE,UACLhF,gBAASwJ,EAAKnH,6CAGpBmH,EAAKqB,MAAMrB,EAAKnH,WACJ,IAAInC,iBACHsJ,EAAKnH,2KA0FVpC,SACCqF,WAAUrF,EAAQO,KAAKwE,sCAQhC/E,SACSO,MAAK8E,UAAUrF,8CAShB+F,GAAKS,cAAc,aACK,eAAnBjG,KAAKiI,UAA6BjI,KAAKiI,UAAY,cAAgBjI,KAAKiI,wBAG9EoC,MAAMrK,KAAK6B,MAAM2D,EAAIxF,MAEtBA,KAAKwF,GAGDxF,KAAKwF,GAAGW,YAAcX,EAAGW,iBACxBX,GAAKN,KAAKM,EAAIxF,KAAKwF,UAHnBA,GAAKA,EAMPxF,KAAKwF,uCAYVkD,MAAQ7H,uEACLuG,cACAsB,OAASA,EAEV7H,OAIK6H,OAAOsD,aAAahM,KAAKwF,GAAI3E,QAH7B6H,OAAO1C,YAAYhG,KAAKwF,IAM1BxF,KAAKwF,+CAtILrD,WAAUnC,KAAK8J,YAAYC,mDAS3B/J,MAAKiM,sBAGT/L,GACCiE,SAASjE,EAAO,KAAM6F,cACtBvG,MAAM0M,EAAgB3B,cAGrB0B,IAAM/L,2CAUJF,MAAKmM,0BAGLzD,QACFyD,QAAUzD,0CASR1I,MAAKoM,yBAGNlM,GACFiE,SAASjE,EAAO,WAChBV,MAAM0M,EAAgBhM,YAGrBkM,OAASlM,6CASPF,MAAKqM,4BAGHnM,GACN4B,SAAS5B,KACRA,EAAQsE,SAAStE,IAGjBiE,SAASjE,EAAO,WAChBV,MAAM0M,EAAgB1H,eAGrB6H,UAAYnM,oBAxGiByI,GCIrB2D,kQAQN,uBARsBP,ICVhBQ,iCAULrM,EAAOuF,6GACT7C,OAAOC,QACT3C,MAAOA,GACR6B,SAAS7B,GAASA,EAAQ,KAAMuF,kHAS5B,yBAtBuBsG,ICGjBS,6BAcLtM,EAAOuF,qGACT7C,OAAOC,QACT3C,MAAOA,EACPmH,UACDtF,SAAS7B,GAASA,EAAQ,KAAMuF,qGAmCxBvF,EAAOuF,MACZ6B,GAAO,GAAIiF,IAASrM,EAAO0C,OAAOC,QACpCwH,MAAOrK,KAAKqK,MACZ7F,SAAUxE,KAAKwE,UAChBiB,gBAEEgH,OAAOxD,KAAK3B,GAEVA,0CAlCAtH,MAAKoK,yBAENlK,QACDkK,OAASlK,0CASPF,MAAKyM,yBAGNvM,QACDuM,OAASvM,0DA2BP,iBAtEmB6L,ICHbW,8BAYLrF,EAAO5B,uGACT7C,OAAOC,QACTwE,MAAO7F,QAAQ6F,GAASA,MACxBtF,SAASsF,GAASA,EAAQ,KAAO5B,4GAS9B,mBAxBoBsG,ICAdY,8BAWLnF,EAAO/B,uGACT7C,OAAOC,QACT2E,MAAOA,GACPzF,SAASyF,GAASA,EAAQ,KAAO/B,4GAS9B,mBAvBoBsG,ICAda,8BAULC,uGACFjK,OAAOC,QACTiK,MAAO,EACPC,OAAQ,KACRC,QAAS,KACTC,SAAS,EACTJ,SAAU5K,SAAS4K,GAAYA,EAAW,MAC3C9K,SAAS8K,GAAYA,EAAW,wFAsCjCjN,0BACGsL,KAAK,WACNlC,EAAK8D,MAAQ,EACb9D,EAAKyC,MAAM,iBAAM9L,UAASI,KAAKiJ,EAAMpJ,KACrCoJ,EAAKmC,KAAK,WAGPnL,yCASLJ,mBACGoN,QAAU,GAAIE,WACdC,SAAWD,KAAKE,WAChBH,SAAU,OACV9B,KAAK,eAEG,SAAPkC,cACCH,MAAKE,MAAQlE,EAAKiE,UAAYjE,EAAK2D,WAClClN,SAASI,KAAKmJ,EAAMtJ,GACpBsJ,EAAKiE,SAAWD,KAAKE,MACrBlE,EAAKiC,KAAK,YACVjC,EAAK4D,SAGT5D,EAAK6D,OAASxB,OAAOC,sBAAsB6B,MAEpCnE,uCAYVtJ,oBACEI,MAAKsN,WACJC,WAAW,WACPhC,OAAOiC,qBAAqBjE,EAAKwD,QAEjCxD,EAAK0D,SAAU,EAEftN,SAASI,KAAKwJ,EAAM3J,GAEpB2J,EAAK4B,KAAK,UAIXnL,+CAtFCA,MAAKmN,SAAenN,KAAKmN,UAC7BnN,KAAKgN,QAAUhN,KAAKgN,QAAQS,WAAY,GAAIP,OAAOO,WAD/B,+CAWA,IAAjBzN,KAAKiN,qDASY,IAAjBjN,KAAKiN,gEA2EL,mBAzHoBtE,GCQd+E,mPAEPtH,MAAUlG,0DAAQ,CACxBkG,GAASlG,MAAQF,KAAKE,MAAMA,MAAQA,8CAG9BkG,MAAUlG,0DAAQ,CACxBkG,GAASlG,MAAQF,KAAKE,MAAMA,MAAQA,0DAS7B,uBAhBsBwK,GCChBiD,qSAGNT,2EAKH9E,aAAa,EACbC,YAAY,iDAITjC,MACJzF,OAAOyF,EAASgF,SAAW1K,YAAY0F,EAASgF,eACxC,KAGRpL,KAAKoL,iBAAkB8B,YACflN,MAAK+G,UACR/G,KAAKoL,OAAOqC,WAAazN,KAAKE,MAAMA,MAAMuN,UAC1CzN,KAAKoL,OAAOqC,WAAazN,KAAKE,MAAMA,MAAMuN,SAE7C,IAAGxL,SAASjC,KAAKoL,QAAS,IACrBwC,GAAOvN,KAAKE,OAAOP,KAAKE,MAAMA,MAAMuN,UAAYzN,KAAK6N,cAAcJ,WAAa,WAE/EzN,MAAK+G,UACR/G,KAAKoL,QAAUwC,EACf5N,KAAKoL,QAAUwC,OAGjB,IAAIlO,iHAGJ0G,MAAUlG,0DAAQ,CACxBkG,GAASlG,MAAQ,GAAIgN,MAAKlN,KAAKE,MAAMA,MAAMuN,UAAYvN,IAAS,GAAIgN,OAAOO,UAAYrH,EAASqE,MAAM0C,uDAGhG/G,MAAUlG,0DAAQ,CACxBkG,GAASlG,MAAQ,GAAIgN,MAAKlN,KAAKE,MAAMA,MAAMuN,UAAYvN,IAAS,GAAIgN,OAAOO,UAAYrH,EAASqE,MAAM0C,iDAGnG/G,EAAUlG,MACP8M,GAAU5G,EAASqE,MAAM6C,UAAYlH,EAASqE,MAAMuC,QAAU,GAAIE,MAAKA,KAAKE,MAAQ,YAGrFpN,KAAK8N,WAAW5N,EAAO8M,IACxBhN,KAAKoI,aAAepI,KAAK+N,WAAW7N,EAAO8M,IAAY,MACzDnH,OAAOpF,oDAGFuN,EAAGC,SACHhO,OAAMD,KAAKkO,gBAAgBF,EAAGC,GAAK,kDAGnCD,EAAGC,MACJE,GAAenO,KAAKkO,gBAAgBF,EAAGC,SAEtC5N,MAAK+N,IAAI/N,KAAKC,KAAsB,KAAjB6N,EAAsB,EAAIA,EAAe,6DAGvDH,EAAGC,SACRD,GAAEP,YAAcQ,EAAER,UAAY,EAAIpN,KAAKJ,OAAO+N,EAAEP,UAAYQ,EAAER,WAAa,6DAS3E,mCAvE4B/C,GCDtB2D,iQAEVjI,EAAUlG,MACPkN,GAAOhH,EAASqE,MAAMuC,QAAqB9M,EAAX,GAAIgN,MACpCW,EAAgBzH,EAASyH,eAAiB3N,EAC1C8N,EAAKhO,KAAK+G,UAAkB8G,EAANT,EACtBa,EAAKjO,KAAK+G,UAA4BqG,EAAhBS,EAEtBS,IACDtO,KAAKuO,SAASP,EAAGC,KACjBjO,KAAK8N,WAAWE,EAAGC,WAGrBjO,MAAKoI,aACJkG,EAAKrF,MAAMjJ,KAAK+N,WAAWC,EAAGC,KAG3BK,gDAGAN,EAAGC,SACH5N,MAAK+N,IAAII,yEAAiBR,EAAGC,GAAK,8CAGpCD,EAAGC,SACD5N,MAAKE,MAAMP,KAAKkO,gBAAgBF,EAAGC,GAAK,GAAK,4DAS7C,+BAlC0BN,ICApBc,4PAEVrI,EAAUlG,MACPkN,GAAOhH,EAAS4G,QAAqB9M,EAAX,GAAIgN,MAC9BW,EAAgBzH,EAASyH,eAAiB3N,EAC1C8N,EAAKhO,KAAK+G,UAAkB8G,EAANT,EACtBa,EAAKjO,KAAK+G,UAA4BqG,EAAhBS,EAEtBS,IACDtO,KAAK0O,QAAQV,EAAGC,KAChBjO,KAAKuO,SAASP,EAAGC,KACjBjO,KAAK8N,WAAWE,EAAGC,WAGrBjO,MAAKoI,aACJkG,EAAKrF,MAAMjJ,KAAK+N,WAAWC,EAAGC,KAG3BK,0CAGHN,EAAGC,SACA5N,MAAKE,MAAMP,KAAKkO,gBAAgBF,EAAGC,GAAK,GAAK,GAAK,8CAGpDD,EAAGC,SACD5N,MAAK+N,IAAII,sEAAeR,EAAGC,GAAK,4DAShC,6BAnCyBI,ICAnB9F,mUAGN2E,gEAIA,IAAIA,2EAKP9E,aAAa,EACbC,YAAY,yCAIbjC,EAAUlG,GACTA,IACAA,EAAQ,GAAIgN,UAGVyB,KACDzO,EAAMqO,aACNrO,EAAM4N,qBAGR9N,MAAKoI,aACJuG,EAAO1F,MAAM/I,EAAM6N,eAGhBY,8CAGDvI,MAAUwI,0DAAS,CACzBxI,GAASlG,MAAQ,GAAIgN,MAAKlN,KAAKE,MAAMA,MAAMuN,UAAYmB,IAAU,GAAI1B,OAAOO,UAAYrH,EAASqE,MAAM0C,uDAGjG/G,MAAUwI,0DAAS,CACzBxI,GAASlG,MAAQ,GAAIgN,MAAKlN,KAAKE,MAAMA,MAAMuN,UAAYmB,IAAU,GAAI1B,OAAOO,UAAYrH,EAASqE,MAAM0C,mEAShG,+CAhDkCzC,GCA5BmE,oTAITxG,YAAY,EACZD,aAAa,EACbI,cAAc,yCAIfpC,EAAUlG,GACTA,IACAA,EAAQ,GAAIgN,UAGV4B,GAAQ5O,EAAMqO,WACpBI,GACLG,EAAQ,GAAKA,EAAQ,GAAgB,IAAVA,EAAc,GAAKA,EAC9C5O,EAAM4N,0BAGIrF,SAAWqG,EAAQ,GAAK,KAAO,KAEvC9O,KAAKoI,aACPuG,EAAO1F,KAAK/I,EAAM6N,cAGZY,0DASM,uCApC8BpG,ICAxBwG,iQAEV3I,EAAUlG,MACPkN,GAAOhH,EAASqE,MAAMuC,QAAqB9M,EAAX,GAAIgN,MACpCW,EAAgBzH,EAASyH,eAAiB3N,EAC1C8N,EAAKhO,KAAK+G,UAAkB8G,EAANT,EACtBa,EAAKjO,KAAK+G,UAA4BqG,EAAhBS,EAEtBS,IACDtO,KAAKgP,SAAShB,EAAGC,KACjBjO,KAAK0O,QAAQV,EAAGC,KAChBjO,KAAKuO,SAASP,EAAGC,KACjBjO,KAAK8N,WAAWE,EAAGC,WAGrBjO,MAAKoI,aACJkG,EAAKrF,MAAMjJ,KAAK+N,WAAWC,EAAGC,KAG3BK,4CAGFN,EAAGC,SACD5N,MAAKE,MAAMP,KAAKkO,gBAAgBF,EAAGC,GAAK,GAAK,GAAK,GAAK,2CAG1DD,EAAGC,SACA5N,MAAK+N,IAAII,sEAAcR,EAAGC,GAAK,2DAS/B,+BApC0BQ,ICApBQ,iQAEV7I,EAAUlG,MACPkN,GAAOhH,EAASqE,MAAMuC,QAAqB9M,EAAX,GAAIgN,MACpCW,EAAgBzH,EAASyH,eAAiB3N,EAC1C8N,EAAKhO,KAAK+G,UAAkB8G,EAANT,EACtBa,EAAKjO,KAAK+G,UAA4BqG,EAAhBS,EAEtBS,IACDtO,KAAKkP,SAASlB,EAAGC,KACjBjO,KAAKgP,SAAShB,EAAGC,KACjBjO,KAAK0O,QAAQV,EAAGC,KAChBjO,KAAKuO,SAASP,EAAGC,KACjBjO,KAAK8N,WAAWE,EAAGC,WAGrBjO,MAAKoI,aACJkG,EAAKrF,MAAMjJ,KAAK+N,WAAWC,EAAGC,KAG3BK,4CAGFN,EAAGC,SACD5N,MAAKE,MAAMF,KAAKsD,IAAI,EAAG3D,KAAKkO,gBAAgBF,EAAGC,GAAK,GAAK,GAAK,GAAK,EAAI,+CAGzED,EAAGC,SACD5N,MAAK+N,IAAII,uEAAeR,EAAGC,GAAK,4DAShC,+BArC0Bc,6JCDrC9H,KAAMyG,GACNrD,OCFAiC,QAAAA,UACA6C,UAAAA,UACAzC,MAAAA,QACAC,MAAAA,QACAH,KAAAA,OACAD,SAAAA,WACA6C,wODHA5K,SAAU6K,yCEiCE7J,EAAItF,EAAOuF,yCACftB,SAASqB,EAAIO,cACbvG,MAAM0M,EAAgB3B,SAGvBxI,SAAS7B,KAAWuF,IACnBA,EAAavF,EACbA,MAAQyK,OAGN1D,GAAOxB,EAAWwB,MAAQqI,GAAcrI,kBAEvCxB,GAAWwB,6EAEZrE,OAAOC,QACTgL,cAAe3N,EACfmK,MAAOiF,GAAcjF,MACrB7F,SAAU8K,GAAc9K,SACxBiG,MAAOmC,GAAMlB,KAAKjG,EAAWoH,UAAY,MAC1CpH,MAEMwB,SACAA,KAAOA,KAGXkB,MAAM3C,6FAqHTA,4EACUA,QAEPyB,KAAKsI,QAAQvP,MAEXA,wHAeJA,KAAKqK,MAAM+E,MAAMpP,KAAKiH,KAAKpF,YACrBwI,MAAM+E,MAAMpP,KAAKiH,KAAKpF,MAAM7B,KAAKwF,GAAIxF,WAMzCiH,KAAKuI,SAASxP,MAGZA,KAAKwF,uCASV5F,oBACEI,MAAKyK,MAAMuC,eACN9M,MAAQF,KAAK6N,eAGtBnN,YAAYV,KAAKiH,KAAKmE,UAAYpL,KAAKiH,KAAKmE,OAASpL,KAAKoL,QAC1D1K,YAAYV,KAAKiH,KAAK4G,iBAAmB7N,KAAKiH,KAAK4G,cAAgB7N,KAAK6N,oBAEnEpD,MAAMgB,MAAM,WACbvC,EAAKjC,KAAK4F,SAAS3D,EAAMtJ,UAGxBqH,KAAK+F,QAAQhN,MAEXA,KAAKmL,KAAK,2CAShBvL,eACI6K,MAAMS,KAAKtL,QACXqH,KAAKwI,QAAQzP,MAEXA,KAAKmL,KAAK,4CASfvL,0BACGM,MAAQF,KAAK6N,mBACbpD,MAAMiF,MAAM,iBAAMnG,GAAKsD,SAAStD,EAAM3J,UACtCqH,KAAKyI,MAAM1P,MAETA,KAAKmL,KAAK,qDAWXjL,eACD+G,KAAK+D,UAAUhL,KAAME,GAEnBF,iDAWDE,eACD+G,KAAK8D,UAAU/K,KAAME,GAEnBF,yDAUGyF,SACH6G,IAAQZ,KAAK9I,OAAOC,QACvBwH,MAAOrK,KAAKqK,MACZ7F,SAAUxE,KAAKwE,UAChBiB,kDAWIvF,EAAOuF,SACP+G,IAAKd,KAAKxL,EAAO0C,OAAOC,QAC3BwH,MAAOrK,KAAKqK,MACZ7F,SAAUxE,KAAKwE,UAChBiB,oDAWKvF,EAAOuF,SACRkH,IAAMjB,KAAKxL,EAAO0C,OAAOC,QAC5BwH,MAAOrK,KAAKqK,MACZ7F,SAAUxE,KAAKwE,UAChBiB,oDAWK4B,EAAO5B,SACRiH,IAAMhB,KAAKrE,EAAOzE,OAAOC,QAC5BwH,MAAOrK,KAAKqK,MACZ7F,SAAUxE,KAAKwE,UAChBiB,8CAnRIzF,MAAK2P,wBAGPzP,GACDiE,SAASjE,GAAQwK,EAAM,SAAU,cACjClL,MAAM0M,EAAgBjF,WAGrB0I,OAASC,GAAM1P,IAAUA,GAAOwL,KAAK9I,OAAOC,OAAO7C,KAAKkK,uBACzD2D,cAAe7N,KAAKiH,KAAOjH,KAAKiH,KAAK4G,kBAAgBlD,WAGpDgF,MAAME,YAAY7P,MAEpBA,KAAKE,WACCyP,MAAMzP,MAAQF,KAAKiH,KAAK2E,gBAAgB5L,KAAMA,KAAKE,MAAMA,OAEzDF,KAAKE,aACLA,MAAQF,KAAK6N,oBAGjBrI,IAAMxF,KAAKoH,qDASTvH,YAAWG,KAAK6L,SAAW7L,KAAK6L,QAAQ7L,MAAQA,KAAK6L,0BAGrD3L,QACF2L,QAAU3L,6CASRF,MAAK8P,yBAGNrF,GACFtG,SAASsG,EAAOmC,KAChBpN,MAAM0M,EAAgBzB,YAGrBqF,OAASrF,6CASPzK,MAAKiH,KAAOjH,KAAKiH,KAAK/G,MAAQ,uBAG/BA,OACFF,KAAKiH,UACC,IAAIvH,OAAM,6CAGjBQ,aAAiB+J,QACXhD,KAAK/G,MAAQA,EAEdF,KAAKE,WACJ+G,KAAK/G,MAAQF,KAAKiH,KAAK/G,MAAM6P,MAAM7P,QAGnC+G,KAAK/G,MAAQF,KAAKiH,KAAK2E,gBAAgB5L,KAAME,QAGjDsF,IAAMxF,KAAKoH,4DASbvH,YAAWG,KAAK8L,kBAAoB9L,KAAK8L,eAAejK,KAChD7B,KAAK8L,iBAGZpL,YAAYV,KAAK8L,iBAAoBnL,OAAOX,KAAK8L,gBAI9C9L,KAAKiH,KAAOjH,KAAKiH,KAAK6D,mBAAiBH,GAHnC3K,KAAK8L,iCAMF5L,QACT4L,eAAiB5L,0DAkMf,kEAUWA,GACdiE,SAASjE,EAAOwK,IAChBlL,MAAM0M,EAAgBjF,MAG1BqI,GAAcrI,KAAO/G,0DASFA,GACfiE,SAASjE,EAAO,WAChBV,MAAM0M,EAAgB7B,OAG1BiF,GAAcjF,MAAQnK,gEASAA,GAClBiE,SAASjE,EAAO,WAChBV,MAAM0M,EAAgB1H,UAG1B8K,GAAc9K,SAAWtE,gDApDlBoP,mBA7VwBvD"} \ No newline at end of file diff --git a/docs/contributors.html b/docs/contributors.html new file mode 100644 index 00000000..6d473cdc --- /dev/null +++ b/docs/contributors.html @@ -0,0 +1,241 @@ +

    Contributors

    + + + +
    +
    objectivehtml
    +
    (221 contributions)
    +
    +
    + + + +
    +
    effel
    +
    (5 contributions)
    +
    +
    + + + +
    +
    thirdender
    +
    (3 contributions)
    +
    +
    + + + +
    +
    gmazzap
    +
    (2 contributions)
    +
    +
    + + + +
    +
    lkol
    +
    (2 contributions)
    +
    +
    + + + +
    +
    PureMango
    +
    (2 contributions)
    +
    +
    + + + +
    +
    vegaen
    +
    (2 contributions)
    +
    +
    + + + +
    +
    brianespinosa
    +
    (2 contributions)
    +
    +
    + + + +
    +
    practicous
    +
    (2 contributions)
    +
    +
    + + + +
    +
    albertpastrana
    +
    (1 contribution)
    +
    +
    + + + +
    +
    equinox7
    +
    (1 contribution)
    +
    +
    + + + +
    +
    brandonkelly
    +
    (1 contribution)
    +
    +
    + + + +
    +
    eka7a
    +
    (1 contribution)
    +
    +
    + + + +
    +
    betesh
    +
    (1 contribution)
    +
    +
    + + + +
    +
    cupofjoakim
    +
    (1 contribution)
    +
    +
    + + + +
    +
    kevinrefvik
    +
    (1 contribution)
    +
    +
    + + + +
    +
    kittinan
    +
    (1 contribution)
    +
    +
    + + + +
    +
    driv3r
    +
    (1 contribution)
    +
    +
    + + + +
    +
    MJafarMashhadi
    +
    (1 contribution)
    +
    +
    + + + +
    +
    melz
    +
    (1 contribution)
    +
    +
    + + + +
    +
    PeterDaveHello
    +
    (1 contribution)
    +
    +
    + + + +
    +
    winwar
    +
    (1 contribution)
    +
    +
    + + + +
    +
    Robby2023
    +
    (1 contribution)
    +
    +
    + + + +
    +
    filmstarr
    +
    (1 contribution)
    +
    +
    + + + +
    +
    rustygreen
    +
    (1 contribution)
    +
    +
    + + + +
    +
    sxd1140
    +
    (1 contribution)
    +
    +
    + + + +
    +
    tkreis
    +
    (1 contribution)
    +
    +
    + + + +
    +
    Tropicalista
    +
    (1 contribution)
    +
    +
    + + + +
    +
    wimsymons
    +
    (1 contribution)
    +
    +
    + + + +
    +
    YukinobuKurata
    +
    (1 contribution)
    +
    +
    \ No newline at end of file diff --git a/docs/creating-examples.md b/docs/creating-examples.md new file mode 100644 index 00000000..68051b09 --- /dev/null +++ b/docs/creating-examples.md @@ -0,0 +1,28 @@ +# Creating Examples + +We try to provide a lot of examples. A lot of issues get created due to a lack +of examples and demonstration. If you run into a scenario that you think should +be an example, read the following steps: + +1. [Fork the repo on Github](https://github.com/objectivehtml/flipclock) +2. Create a new directory in the `./docs/examples`. Follow the existing kebab + case format. Example `my-example-name`. +3. Within the newly created directory, be sure to include two files: + `my-example-name.json` and `my-example-name.md`. The name of the files must + match parent directory exactly. +4. `my-example-name.md` should have a description, and the code to run the + example. The following is some code of how an example could look. + + This examples shows a Faces.TwelveHourClock without seconds. + +
    + + +5. Commit your changes with some quality comments and description of what you + just added. And then put in a pull request. \ No newline at end of file diff --git a/docs/examples.md b/docs/examples.md new file mode 100644 index 00000000..1b976a9b --- /dev/null +++ b/docs/examples.md @@ -0,0 +1 @@ +# Examples \ No newline at end of file diff --git a/docs/examples/daily-counter/daily-counter.json b/docs/examples/daily-counter/daily-counter.json new file mode 100644 index 00000000..0774717a --- /dev/null +++ b/docs/examples/daily-counter/daily-counter.json @@ -0,0 +1,6 @@ +{ + "title": "Daily Counter", + "meta": { + "test": 123 + } +} \ No newline at end of file diff --git a/docs/examples/daily-counter/daily-counter.md b/docs/examples/daily-counter/daily-counter.md new file mode 100644 index 00000000..8d337cf6 --- /dev/null +++ b/docs/examples/daily-counter/daily-counter.md @@ -0,0 +1,11 @@ +This is the most basic example of a DayCounter. + +
    + + \ No newline at end of file diff --git a/docs/examples/event-binding/event-binding.json b/docs/examples/event-binding/event-binding.json new file mode 100644 index 00000000..8c755307 --- /dev/null +++ b/docs/examples/event-binding/event-binding.json @@ -0,0 +1,3 @@ +{ + "title": "Event Binding" +} \ No newline at end of file diff --git a/docs/examples/event-binding/event-binding.md b/docs/examples/event-binding/event-binding.md new file mode 100644 index 00000000..cf20004f --- /dev/null +++ b/docs/examples/event-binding/event-binding.md @@ -0,0 +1,23 @@ +This example show how to bind and unbind events. + +
    + + \ No newline at end of file diff --git a/docs/examples/hourly-counter/hourly-counter.json b/docs/examples/hourly-counter/hourly-counter.json new file mode 100644 index 00000000..2dce2679 --- /dev/null +++ b/docs/examples/hourly-counter/hourly-counter.json @@ -0,0 +1,3 @@ +{ + "title": "Hourly Counter" +} \ No newline at end of file diff --git a/docs/examples/hourly-counter/hourly-counter.md b/docs/examples/hourly-counter/hourly-counter.md new file mode 100644 index 00000000..c69c1e7e --- /dev/null +++ b/docs/examples/hourly-counter/hourly-counter.md @@ -0,0 +1,11 @@ +This is the most basic example of a {@link Faces.HourCounter}. + +
    + + \ No newline at end of file diff --git a/docs/examples/load-new-clock-face/load-new-clock-face.json b/docs/examples/load-new-clock-face/load-new-clock-face.json new file mode 100644 index 00000000..94c81fd9 --- /dev/null +++ b/docs/examples/load-new-clock-face/load-new-clock-face.json @@ -0,0 +1,3 @@ +{ + "title": "Load New Clock Face" +} \ No newline at end of file diff --git a/docs/examples/load-new-clock-face/load-new-clock-face.md b/docs/examples/load-new-clock-face/load-new-clock-face.md new file mode 100644 index 00000000..a83f365b --- /dev/null +++ b/docs/examples/load-new-clock-face/load-new-clock-face.md @@ -0,0 +1,20 @@ +This examples show how to change a clock the {@link Faces.HourCounter} to the {@link Faces.MinuteCounter} during runtime. + +
    + + \ No newline at end of file diff --git a/docs/examples/localization-custom-dictionary/localization-custom-dictionary.json b/docs/examples/localization-custom-dictionary/localization-custom-dictionary.json new file mode 100644 index 00000000..87d87d16 --- /dev/null +++ b/docs/examples/localization-custom-dictionary/localization-custom-dictionary.json @@ -0,0 +1,3 @@ +{ + "title": "Localization Custom Dictionary" +} \ No newline at end of file diff --git a/docs/examples/localization-custom-dictionary/localization-custom-dictionary.md b/docs/examples/localization-custom-dictionary/localization-custom-dictionary.md new file mode 100644 index 00000000..ce01cae2 --- /dev/null +++ b/docs/examples/localization-custom-dictionary/localization-custom-dictionary.md @@ -0,0 +1,19 @@ +This examples show how localize the clock using a custom dictionary. + +
    + + \ No newline at end of file diff --git a/docs/examples/localization/localization.json b/docs/examples/localization/localization.json new file mode 100644 index 00000000..f9484a65 --- /dev/null +++ b/docs/examples/localization/localization.json @@ -0,0 +1,3 @@ +{ + "title": "Localization" +} \ No newline at end of file diff --git a/docs/examples/localization/localization.md b/docs/examples/localization/localization.md new file mode 100644 index 00000000..e13084bd --- /dev/null +++ b/docs/examples/localization/localization.md @@ -0,0 +1,12 @@ +This examples show how localize the clock using spanish. + +
    + + \ No newline at end of file diff --git a/docs/examples/minute-counter-overflow/minute-counter-overflow.json b/docs/examples/minute-counter-overflow/minute-counter-overflow.json new file mode 100644 index 00000000..cca214da --- /dev/null +++ b/docs/examples/minute-counter-overflow/minute-counter-overflow.json @@ -0,0 +1,3 @@ +{ + "title": "Minute Counter with Overflow" +} \ No newline at end of file diff --git a/docs/examples/minute-counter-overflow/minute-counter-overflow.md b/docs/examples/minute-counter-overflow/minute-counter-overflow.md new file mode 100644 index 00000000..9db914a8 --- /dev/null +++ b/docs/examples/minute-counter-overflow/minute-counter-overflow.md @@ -0,0 +1,19 @@ +This examples shows how the {@link Faces.MinuteCounter} handles adding new digits, aka: overflowing. + +
    + + \ No newline at end of file diff --git a/docs/examples/minute-counter-with-buttons/minute-counter-with-buttons.json b/docs/examples/minute-counter-with-buttons/minute-counter-with-buttons.json new file mode 100644 index 00000000..b1ff5ca8 --- /dev/null +++ b/docs/examples/minute-counter-with-buttons/minute-counter-with-buttons.json @@ -0,0 +1,3 @@ +{ + "title": "Minute Counter with Buttons" +} \ No newline at end of file diff --git a/docs/examples/minute-counter-with-buttons/minute-counter-with-buttons.md b/docs/examples/minute-counter-with-buttons/minute-counter-with-buttons.md new file mode 100644 index 00000000..42b4d875 --- /dev/null +++ b/docs/examples/minute-counter-with-buttons/minute-counter-with-buttons.md @@ -0,0 +1,38 @@ +This is an example of the {@link Faces.MinuteCounter} that counts up 5 seconds and stops. + +
    + +

    + + + + + diff --git a/docs/examples/minute-counter/minute-counter.json b/docs/examples/minute-counter/minute-counter.json new file mode 100644 index 00000000..d002c1a7 --- /dev/null +++ b/docs/examples/minute-counter/minute-counter.json @@ -0,0 +1,3 @@ +{ + "title": "Minute Counter" +} \ No newline at end of file diff --git a/docs/examples/minute-counter/minute-counter.md b/docs/examples/minute-counter/minute-counter.md new file mode 100644 index 00000000..1c45be04 --- /dev/null +++ b/docs/examples/minute-counter/minute-counter.md @@ -0,0 +1,11 @@ +This is an example of the {@link Faces.MinuteCounter}. + +
    + + diff --git a/docs/examples/multiple-instances/multiple-instances.json b/docs/examples/multiple-instances/multiple-instances.json new file mode 100644 index 00000000..c1f070a2 --- /dev/null +++ b/docs/examples/multiple-instances/multiple-instances.json @@ -0,0 +1,3 @@ +{ + "title": "Multiple Instances" +} \ No newline at end of file diff --git a/docs/examples/multiple-instances/multiple-instances.md b/docs/examples/multiple-instances/multiple-instances.md new file mode 100644 index 00000000..63824a67 --- /dev/null +++ b/docs/examples/multiple-instances/multiple-instances.md @@ -0,0 +1,30 @@ +This examples show how you can use multiple clock instances on the same page. + +
    +
    +
    + +
    +
    +
    + + diff --git a/docs/examples/new-years-countdown-without-seconds/new-years-countdown-without-seconds.json b/docs/examples/new-years-countdown-without-seconds/new-years-countdown-without-seconds.json new file mode 100644 index 00000000..8cc20e59 --- /dev/null +++ b/docs/examples/new-years-countdown-without-seconds/new-years-countdown-without-seconds.json @@ -0,0 +1,3 @@ +{ + "title": "New Years Countdown (without seconds)" +} \ No newline at end of file diff --git a/docs/examples/new-years-countdown-without-seconds/new-years-countdown-without-seconds.md b/docs/examples/new-years-countdown-without-seconds/new-years-countdown-without-seconds.md new file mode 100644 index 00000000..62ad8e81 --- /dev/null +++ b/docs/examples/new-years-countdown-without-seconds/new-years-countdown-without-seconds.md @@ -0,0 +1,19 @@ +This is an example of the {@link Faces.DayCounter} that counts down to the next New Year without showing the seconds. + +
    + + \ No newline at end of file diff --git a/docs/examples/new-years-countdown/new-years-countdown.json b/docs/examples/new-years-countdown/new-years-countdown.json new file mode 100644 index 00000000..9091f37d --- /dev/null +++ b/docs/examples/new-years-countdown/new-years-countdown.json @@ -0,0 +1,3 @@ +{ + "title": "New Years Countdown" +} \ No newline at end of file diff --git a/docs/examples/new-years-countdown/new-years-countdown.md b/docs/examples/new-years-countdown/new-years-countdown.md new file mode 100644 index 00000000..0e31b089 --- /dev/null +++ b/docs/examples/new-years-countdown/new-years-countdown.md @@ -0,0 +1,18 @@ +This is an example of the {@link Faces.DayCounter} that counts down to the next New Year with the seconds showing. + +
    + + \ No newline at end of file diff --git a/docs/examples/new-years-counter-without-seconds/new-years-counter-without-seconds.json b/docs/examples/new-years-counter-without-seconds/new-years-counter-without-seconds.json new file mode 100644 index 00000000..155ac1a6 --- /dev/null +++ b/docs/examples/new-years-counter-without-seconds/new-years-counter-without-seconds.json @@ -0,0 +1,3 @@ +{ + "title": "New Years Counter (without seconds)" +} \ No newline at end of file diff --git a/docs/examples/new-years-counter-without-seconds/new-years-counter-without-seconds.md b/docs/examples/new-years-counter-without-seconds/new-years-counter-without-seconds.md new file mode 100644 index 00000000..5f8ff23f --- /dev/null +++ b/docs/examples/new-years-counter-without-seconds/new-years-counter-without-seconds.md @@ -0,0 +1,18 @@ +This is an example of the {@link Faces.DayCounter} that counts up from the last New Year without showing the seconds. + +
    + + \ No newline at end of file diff --git a/docs/examples/new-years-counter/new-years-counter.json b/docs/examples/new-years-counter/new-years-counter.json new file mode 100644 index 00000000..2db72e1a --- /dev/null +++ b/docs/examples/new-years-counter/new-years-counter.json @@ -0,0 +1,3 @@ +{ + "title": "New Years Counter" +} \ No newline at end of file diff --git a/docs/examples/new-years-counter/new-years-counter.md b/docs/examples/new-years-counter/new-years-counter.md new file mode 100644 index 00000000..b2cd5494 --- /dev/null +++ b/docs/examples/new-years-counter/new-years-counter.md @@ -0,0 +1,17 @@ +This is an example of the {@link Faces.DayCounter} that counts up from the last New Year with the seconds showing. + +
    + + diff --git a/docs/examples/simple-counter-minimum-digits/simple-counter-minimum-digits.json b/docs/examples/simple-counter-minimum-digits/simple-counter-minimum-digits.json new file mode 100644 index 00000000..fdf959fd --- /dev/null +++ b/docs/examples/simple-counter-minimum-digits/simple-counter-minimum-digits.json @@ -0,0 +1,3 @@ +{ + "title": "Simple Counter with Minimums Digits" +} \ No newline at end of file diff --git a/docs/examples/simple-counter-minimum-digits/simple-counter-minimum-digits.md b/docs/examples/simple-counter-minimum-digits/simple-counter-minimum-digits.md new file mode 100644 index 00000000..2208abec --- /dev/null +++ b/docs/examples/simple-counter-minimum-digits/simple-counter-minimum-digits.md @@ -0,0 +1,11 @@ +This examples shows a {@link Faces.Counter} with a minimum of `6` digits. + +
    + + diff --git a/docs/examples/simple-counter/simple-counter.json b/docs/examples/simple-counter/simple-counter.json new file mode 100644 index 00000000..693f0aee --- /dev/null +++ b/docs/examples/simple-counter/simple-counter.json @@ -0,0 +1,3 @@ +{ + "title": "Simple Counter" +} \ No newline at end of file diff --git a/docs/examples/simple-counter/simple-counter.md b/docs/examples/simple-counter/simple-counter.md new file mode 100644 index 00000000..75590d0f --- /dev/null +++ b/docs/examples/simple-counter/simple-counter.md @@ -0,0 +1,44 @@ +This examples shows a {@link Faces.Counter} with buttons to increment the clock. + +
    + + + + + + + + + + + + + + + + diff --git a/docs/examples/twelve-hour-clock-custom-time/twelve-hour-clock-custom-time.json b/docs/examples/twelve-hour-clock-custom-time/twelve-hour-clock-custom-time.json new file mode 100644 index 00000000..f0d51962 --- /dev/null +++ b/docs/examples/twelve-hour-clock-custom-time/twelve-hour-clock-custom-time.json @@ -0,0 +1,3 @@ +{ + "title": "12hr Clock with Custom Time" +} \ No newline at end of file diff --git a/docs/examples/twelve-hour-clock-custom-time/twelve-hour-clock-custom-time.md b/docs/examples/twelve-hour-clock-custom-time/twelve-hour-clock-custom-time.md new file mode 100644 index 00000000..7dc54298 --- /dev/null +++ b/docs/examples/twelve-hour-clock-custom-time/twelve-hour-clock-custom-time.md @@ -0,0 +1,11 @@ +This examples shows a {@link Faces.TwelveHourClock} with a custom time. + +
    + + diff --git a/docs/examples/twelve-hour-clock-without-seconds/twelve-hour-clock-without-seconds.json b/docs/examples/twelve-hour-clock-without-seconds/twelve-hour-clock-without-seconds.json new file mode 100644 index 00000000..ff686e47 --- /dev/null +++ b/docs/examples/twelve-hour-clock-without-seconds/twelve-hour-clock-without-seconds.json @@ -0,0 +1,3 @@ +{ + "title": "12hr Clock Without Seconds" +} \ No newline at end of file diff --git a/docs/examples/twelve-hour-clock-without-seconds/twelve-hour-clock-without-seconds.md b/docs/examples/twelve-hour-clock-without-seconds/twelve-hour-clock-without-seconds.md new file mode 100644 index 00000000..9f6e5975 --- /dev/null +++ b/docs/examples/twelve-hour-clock-without-seconds/twelve-hour-clock-without-seconds.md @@ -0,0 +1,12 @@ +This examples shows a {@link Faces.TwelveHourClock} without seconds. + +
    + + diff --git a/docs/examples/twelve-hour-clock/twelve-hour-clock.json b/docs/examples/twelve-hour-clock/twelve-hour-clock.json new file mode 100644 index 00000000..b46c9820 --- /dev/null +++ b/docs/examples/twelve-hour-clock/twelve-hour-clock.json @@ -0,0 +1,3 @@ +{ + "title": "12hr Clock" +} \ No newline at end of file diff --git a/docs/examples/twelve-hour-clock/twelve-hour-clock.md b/docs/examples/twelve-hour-clock/twelve-hour-clock.md new file mode 100644 index 00000000..5e3e0625 --- /dev/null +++ b/docs/examples/twelve-hour-clock/twelve-hour-clock.md @@ -0,0 +1,11 @@ +This examples shows a {@link Faces.TwelveHourClock} without seconds. + +
    + + diff --git a/docs/examples/twenty-four-hour-clock-custom-time/twenty-four-hour-clock-custom-time.json b/docs/examples/twenty-four-hour-clock-custom-time/twenty-four-hour-clock-custom-time.json new file mode 100644 index 00000000..d461190d --- /dev/null +++ b/docs/examples/twenty-four-hour-clock-custom-time/twenty-four-hour-clock-custom-time.json @@ -0,0 +1,3 @@ +{ + "title": "24hr Clock with Custom Time" +} \ No newline at end of file diff --git a/docs/examples/twenty-four-hour-clock-custom-time/twenty-four-hour-clock-custom-time.md b/docs/examples/twenty-four-hour-clock-custom-time/twenty-four-hour-clock-custom-time.md new file mode 100644 index 00000000..1f60f39c --- /dev/null +++ b/docs/examples/twenty-four-hour-clock-custom-time/twenty-four-hour-clock-custom-time.md @@ -0,0 +1,11 @@ +This examples shows a {@link Faces.TwentyFourHourClock} with a custom time. + +
    + + diff --git a/docs/examples/twenty-four-hour-clock-without-seconds/twenty-four-hour-clock-without-seconds.json b/docs/examples/twenty-four-hour-clock-without-seconds/twenty-four-hour-clock-without-seconds.json new file mode 100644 index 00000000..0b90c416 --- /dev/null +++ b/docs/examples/twenty-four-hour-clock-without-seconds/twenty-four-hour-clock-without-seconds.json @@ -0,0 +1,3 @@ +{ + "title": "24hr Clock Without Seconds" +} \ No newline at end of file diff --git a/docs/examples/twenty-four-hour-clock-without-seconds/twenty-four-hour-clock-without-seconds.md b/docs/examples/twenty-four-hour-clock-without-seconds/twenty-four-hour-clock-without-seconds.md new file mode 100644 index 00000000..53e82b59 --- /dev/null +++ b/docs/examples/twenty-four-hour-clock-without-seconds/twenty-four-hour-clock-without-seconds.md @@ -0,0 +1,12 @@ +This examples shows a {@link Faces.TwentyFourHourClock} without seconds. + +
    + + diff --git a/docs/examples/twenty-four-hour-clock/twenty-four-hour-clock.json b/docs/examples/twenty-four-hour-clock/twenty-four-hour-clock.json new file mode 100644 index 00000000..a4c2a4ae --- /dev/null +++ b/docs/examples/twenty-four-hour-clock/twenty-four-hour-clock.json @@ -0,0 +1,3 @@ +{ + "title": "24hr Clock" +} \ No newline at end of file diff --git a/docs/examples/twenty-four-hour-clock/twenty-four-hour-clock.md b/docs/examples/twenty-four-hour-clock/twenty-four-hour-clock.md new file mode 100644 index 00000000..a700ba7f --- /dev/null +++ b/docs/examples/twenty-four-hour-clock/twenty-four-hour-clock.md @@ -0,0 +1,11 @@ +This examples shows a {@link Faces.TwentyFourHourClock}. + +
    + + diff --git a/docs/getting-started.md b/docs/getting-started.md new file mode 100644 index 00000000..fcbd2f15 --- /dev/null +++ b/docs/getting-started.md @@ -0,0 +1,27 @@ +# Getting Started + +FlipClock is easy to get up and going fast. Simply instantiate a new +{@link FlipClock} instance and pass a DOM node, the starting value, and some +options. + +``` +
    + + +``` + +
    + + \ No newline at end of file diff --git a/docs/installation.md b/docs/installation.md new file mode 100644 index 00000000..d316dbc6 --- /dev/null +++ b/docs/installation.md @@ -0,0 +1,27 @@ +# Installation + +FlipClock is designed to be used a UMD or ES6 module that can be required and +imported. NPM is the primary package manager. The CDN exposes `FlipClock` as a +global variable. + +### NPM + +
    +
    + ```npm install flipclock --save``` +
    +
    + +### CDN + +
    +
    + Specific version
    + +

    `https://cdn.jsdelivr.net/npm/flipclock@/dist/flipclock.min.js`

    + + Always use latest version
    + +

    `https://cdn.jsdelivr.net/npm/flipclock/dist/flipclock.min.js`

    +
    +
    diff --git a/docs/options.md b/docs/options.md new file mode 100644 index 00000000..29408f4a --- /dev/null +++ b/docs/options.md @@ -0,0 +1,13 @@ +# Options + + member.name === 'FlipClock').pop() ?> + + + +
    + + +
    :string
    + + +
    \ No newline at end of file diff --git a/docs/tutorials.json b/docs/tutorials.json new file mode 100644 index 00000000..961137cb --- /dev/null +++ b/docs/tutorials.json @@ -0,0 +1,26 @@ +{ + "installation": { + "title": "Installation", + "order": 1 + }, + "getting-started": { + "title": "Getting Started", + "order": 2 + }, + "options": { + "title": "Options", + "order": 3 + }, + "contributors": { + "title": "Contributors", + "order": 4 + }, + "examples": { + "title": "Examples", + "order": 4 + }, + "creating-examples": { + "title": "Creating Examples", + "order": 5 + } +} \ No newline at end of file diff --git a/examples/_responsive.html b/examples/_responsive.html new file mode 100644 index 00000000..5d35e23c --- /dev/null +++ b/examples/_responsive.html @@ -0,0 +1,214 @@ + + + + + + + + + + + + + +
    + +
    +
    +
    +
    +
    + +
    +
    + +
    +
    +
    Days
    +
    +
    +
    0
    +
    0
    +
    +
    +
    +
    +
    0
    +
    0
    +
    +
    +
    +
    +
    0
    +
    0
    +
    +
    +
    +
    +
    0
    +
    0
    +
    +
    +
    +
    +
    +
    Hours
    +
    +
    +
    0
    +
    0
    +
    +
    +
    1
    +
    1
    +
    +
    +
    2
    +
    2
    +
    +
    +
    3
    +
    3
    +
    +
    +
    4
    +
    4
    +
    +
    +
    5
    +
    5
    +
    +
    +
    6
    +
    6
    +
    +
    +
    7
    +
    7
    +
    +
    +
    8
    +
    8
    +
    +
    +
    9
    +
    9
    +
    +
    +
    +
    +
    0
    +
    0
    +
    +
    +
    +
    +
    +
    Minutes
    +
    +
    +
    0
    +
    0
    +
    +
    +
    +
    +
    0
    +
    0
    +
    +
    +
    +
    +
    +
    Seconds
    +
    +
    +
    0
    +
    0
    +
    +
    +
    +
    +
    0
    +
    0
    +
    +
    +
    +
    + +
    +
    + +
    + +
    + + + + + \ No newline at end of file diff --git a/examples/base.html b/examples/base.html deleted file mode 100644 index 5ed3250d..00000000 --- a/examples/base.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - -
    -
    - - - - - \ No newline at end of file diff --git a/examples/countdown-from-new-years-without-seconds.html b/examples/countdown-from-new-years-without-seconds.html deleted file mode 100644 index 16ab3c95..00000000 --- a/examples/countdown-from-new-years-without-seconds.html +++ /dev/null @@ -1,35 +0,0 @@ - - - - - - - - - -
    - - - - - \ No newline at end of file diff --git a/examples/countdown-from-new-years.html b/examples/countdown-from-new-years.html deleted file mode 100644 index 65d7cf9b..00000000 --- a/examples/countdown-from-new-years.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - -
    - - - - - \ No newline at end of file diff --git a/examples/countdown-start-callback.html b/examples/countdown-start-callback.html deleted file mode 100644 index d27242b7..00000000 --- a/examples/countdown-start-callback.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - - - - - -
    -
    - - - - - - - \ No newline at end of file diff --git a/examples/countdown-start-stop-buttons.html b/examples/countdown-start-stop-buttons.html new file mode 100644 index 00000000..8cb7a7a6 --- /dev/null +++ b/examples/countdown-start-stop-buttons.html @@ -0,0 +1,44 @@ + + + + + + +
    +
    + + + + + + + + diff --git a/examples/countdown-stop-callback.html b/examples/countdown-stop-callback.html deleted file mode 100644 index 66869d9c..00000000 --- a/examples/countdown-stop-callback.html +++ /dev/null @@ -1,33 +0,0 @@ - - - - - - - - - -
    -
    - - - - - \ No newline at end of file diff --git a/examples/countdown-to-new-years-without-seconds.html b/examples/countdown-to-new-years-without-seconds.html index 6ec0405b..0639ac16 100644 --- a/examples/countdown-to-new-years-without-seconds.html +++ b/examples/countdown-to-new-years-without-seconds.html @@ -1,36 +1,26 @@ - - - - - + +
    - - - + - \ No newline at end of file + diff --git a/examples/countdown-to-new-years.html b/examples/countdown-to-new-years.html index 0fe052b9..1dc23332 100644 --- a/examples/countdown-to-new-years.html +++ b/examples/countdown-to-new-years.html @@ -1,35 +1,25 @@ - - - - - + +
    - - - + - \ No newline at end of file + diff --git a/examples/counter-from-new-years-without-seconds.html b/examples/counter-from-new-years-without-seconds.html new file mode 100644 index 00000000..be6baa5a --- /dev/null +++ b/examples/counter-from-new-years-without-seconds.html @@ -0,0 +1,25 @@ + + + + + + +
    + + + + + diff --git a/examples/counter-from-new-years.html b/examples/counter-from-new-years.html new file mode 100644 index 00000000..09ad07a1 --- /dev/null +++ b/examples/counter-from-new-years.html @@ -0,0 +1,24 @@ + + + + + + +
    + + + + + diff --git a/examples/daily-counter-countdown.html b/examples/daily-counter-countdown.html deleted file mode 100644 index 5ed3250d..00000000 --- a/examples/daily-counter-countdown.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - - - - - - -
    -
    - - - - - \ No newline at end of file diff --git a/examples/daily-counter.html b/examples/daily-counter.html index b7a7a072..1633b0a5 100644 --- a/examples/daily-counter.html +++ b/examples/daily-counter.html @@ -1,25 +1,18 @@ - - - - - + + -
    -
    +
    + + - - - \ No newline at end of file + diff --git a/examples/hourly-counter.html b/examples/hourly-counter.html index 853baea3..09b38890 100644 --- a/examples/hourly-counter.html +++ b/examples/hourly-counter.html @@ -1,25 +1,18 @@ - - - - - + + -
    -
    +
    + + - - - \ No newline at end of file + diff --git a/examples/interval-callback.html b/examples/interval-callback.html deleted file mode 100644 index 97655b8d..00000000 --- a/examples/interval-callback.html +++ /dev/null @@ -1,34 +0,0 @@ - - - - - - - - - -
    -
    - - - - - \ No newline at end of file diff --git a/examples/interval-event.html b/examples/interval-event.html new file mode 100644 index 00000000..03701ee9 --- /dev/null +++ b/examples/interval-event.html @@ -0,0 +1,23 @@ + + + + + + + +
    + + + + + diff --git a/examples/load-new-clock-face.html b/examples/load-new-clock-face.html index 305159d0..a50cc49b 100644 --- a/examples/load-new-clock-face.html +++ b/examples/load-new-clock-face.html @@ -1,40 +1,27 @@ - - - - - + + -
    - - - setTimeout(function() { - clock.loadClockFace('Counter', { - autoStart: true - }); - }, 10000); - }); - - - \ No newline at end of file + diff --git a/examples/localization-custom-dictionary.html b/examples/localization-custom-dictionary.html new file mode 100644 index 00000000..a98b7863 --- /dev/null +++ b/examples/localization-custom-dictionary.html @@ -0,0 +1,26 @@ + + + + + + +
    + + + + + diff --git a/examples/localization.html b/examples/localization.html index dedcae1c..15763b1c 100644 --- a/examples/localization.html +++ b/examples/localization.html @@ -1,24 +1,19 @@ - - - - - + +
    - + - \ No newline at end of file + diff --git a/examples/minute-counter-overflow.html b/examples/minute-counter-overflow.html index dcd8c154..d93cdcbe 100644 --- a/examples/minute-counter-overflow.html +++ b/examples/minute-counter-overflow.html @@ -1,26 +1,26 @@ - - - - - + + -
    - - - clock.setTime(60*100-5); - }); - - - \ No newline at end of file + diff --git a/examples/minute-counter.html b/examples/minute-counter.html index dbba448d..28a6fc56 100644 --- a/examples/minute-counter.html +++ b/examples/minute-counter.html @@ -1,25 +1,18 @@ - - - - - + + -
    -
    +
    + + - - - \ No newline at end of file + diff --git a/examples/multiple-instances.html b/examples/multiple-instances.html index 3f7fcb2c..55e78272 100644 --- a/examples/multiple-instances.html +++ b/examples/multiple-instances.html @@ -1,34 +1,34 @@ - - - - - + + -
    - -
    - -
    +
    + +
    - + - \ No newline at end of file + diff --git a/examples/simple-countdown-autostart.html b/examples/simple-countdown-autostart.html deleted file mode 100644 index 6b24f19d..00000000 --- a/examples/simple-countdown-autostart.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - - - - - -
    - - - - - \ No newline at end of file diff --git a/examples/simple-counter-autostart.html b/examples/simple-counter-autostart.html deleted file mode 100644 index 8bd7c8fa..00000000 --- a/examples/simple-counter-autostart.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - - - - - - -
    - - - - - \ No newline at end of file diff --git a/examples/simple-counter-minimum-digits.html b/examples/simple-counter-minimum-digits.html index 053544a5..e3ee3803 100644 --- a/examples/simple-counter-minimum-digits.html +++ b/examples/simple-counter-minimum-digits.html @@ -1,27 +1,17 @@ - - - - - + +
    - - \ No newline at end of file + diff --git a/examples/simple-counter.html b/examples/simple-counter.html index 3ff1474a..e9c844a5 100644 --- a/examples/simple-counter.html +++ b/examples/simple-counter.html @@ -1,66 +1,51 @@ - - - - - + +
    - - - - - - - - + - \ No newline at end of file + diff --git a/examples/test.html b/examples/test.html index 7067e265..ead074bc 100644 --- a/examples/test.html +++ b/examples/test.html @@ -1,47 +1,23 @@ - - - - - +
    - + - + - \ No newline at end of file + diff --git a/examples/twelve-hour-clock-custom-time.html b/examples/twelve-hour-clock-custom-time.html index 226cd5d3..ddbda542 100644 --- a/examples/twelve-hour-clock-custom-time.html +++ b/examples/twelve-hour-clock-custom-time.html @@ -1,25 +1,21 @@ - + - +
    - + - \ No newline at end of file + diff --git a/examples/twelve-hour-clock-without-seconds.html b/examples/twelve-hour-clock-without-seconds.html index 569f213c..704e5302 100644 --- a/examples/twelve-hour-clock-without-seconds.html +++ b/examples/twelve-hour-clock-without-seconds.html @@ -1,24 +1,20 @@ - + - - - +
    - + - \ No newline at end of file + diff --git a/examples/twelve-hour-clock.html b/examples/twelve-hour-clock.html index 00246cc8..a9cd209c 100644 --- a/examples/twelve-hour-clock.html +++ b/examples/twelve-hour-clock.html @@ -1,23 +1,19 @@ - + - - - +
    - + - \ No newline at end of file + diff --git a/examples/twenty-four-hour-clock-custom-time.html b/examples/twenty-four-hour-clock-custom-time.html index ea72ecb6..661fcf8e 100644 --- a/examples/twenty-four-hour-clock-custom-time.html +++ b/examples/twenty-four-hour-clock-custom-time.html @@ -1,25 +1,21 @@ - + - +
    - + - \ No newline at end of file + diff --git a/examples/twenty-four-hour-clock-without-seconds.html b/examples/twenty-four-hour-clock-without-seconds.html index f0ac6a0b..6e92e4a1 100644 --- a/examples/twenty-four-hour-clock-without-seconds.html +++ b/examples/twenty-four-hour-clock-without-seconds.html @@ -1,24 +1,20 @@ - + - - - +
    - + - \ No newline at end of file + diff --git a/examples/twenty-four-hour-clock.html b/examples/twenty-four-hour-clock.html index 01a67456..3fd9ddf4 100644 --- a/examples/twenty-four-hour-clock.html +++ b/examples/twenty-four-hour-clock.html @@ -1,23 +1,19 @@ - + - - - +
    - + - \ No newline at end of file + diff --git a/gulpfile.js b/gulpfile.js new file mode 100644 index 00000000..d68d05b4 --- /dev/null +++ b/gulpfile.js @@ -0,0 +1,108 @@ +var + gulp = require('gulp'), + browserSync = require('browser-sync').create(), + sass = require('gulp-sass'), + sourcemaps = require('gulp-sourcemaps'), + autoprefixer = require('gulp-autoprefixer'); + header = require('gulp-header'); + uglify = require('gulp-uglify'); + concat = require('gulp-concat'); + notify = require('gulp-notify'); + gutil = require('gulp-util'); + rename = require('gulp-rename'); + pkg = require('./package.json'); +; + +var reportError = function (error) { + var lineNumber = (error.lineNumber) ? 'LINE ' + error.lineNumber + ' -- ' : ''; + + notify({ + title: 'Task Failed [' + error.plugin + ']', + message: lineNumber + 'See console.', + sound: 'Sosumi' // See: https://github.com/mikaelbr/node-notifier#all-notification-options-with-their-defaults + }).write(error); + + gutil.beep(); // Beep 'sosumi' again + + // Inspect the error object + //console.log(error); + + // Easy error reporting + //console.log(error.toString()); + + // Pretty error reporting + var report = ''; + var chalk = gutil.colors.white.bgRed; + + report += chalk('TASK:') + ' [' + error.plugin + ']\n'; + report += chalk('PROB:') + ' ' + error.message + '\n'; + if (error.lineNumber) { report += chalk('LINE:') + ' ' + error.lineNumber + '\n'; } + if (error.fileName) { report += chalk('FILE:') + ' ' + error.fileName + '\n'; } + console.error(report); + + // Prevent the 'watch' task from stopping + this.emit('end'); +} + +var banner = [ + '/* <%= pkg.name %> - v<%= pkg.version %> */', + '' +].join('\n'); + +// Static Server + watching scss/html files +gulp.task('dev', ['sass', 'dist'], function() { + + browserSync.init({ + server: { + baseDir: "examples", + routes: { + "/dist": "dist" + }, + directory: true + } + }); + + gulp.watch("src/flipclock/scss/**/*.scss", ['sass']); + gulp.watch("src/flipclock/js/**/*.js", ['dist']).on('change', browserSync.reload); + gulp.watch("examples/*.html").on('change', browserSync.reload); +}); + +// Minify js files +gulp.task('dist', function () { + return gulp.src([ + 'src/flipclock/js/vendor/*.js', + 'src/flipclock/js/libs/Base.js', + 'src/flipclock/js/libs/Plugins.js', + 'src/flipclock/js/libs/List.js', + 'src/flipclock/js/libs/ListItem.js', + 'src/flipclock/js/libs/EnglishAlphaList.js', + 'src/flipclock/js/libs/*.js', + 'src/flipclock/js/faces/TwentyFourHourClockFace.js', + 'src/flipclock/js/faces/*.js', + 'src/flipclock/js/lang/*.js' + ]) //select all javascript files + .pipe(concat('flipclock.js')) //the name of the resulting file + .pipe(gulp.dest('dist')) //the destination folder + .pipe(rename('flipclock.min.js')) //minify the compiled js + .pipe(uglify()) + .pipe(header(banner, {pkg: pkg})) //add a small version banner to the minified js + .pipe(gulp.dest('dist')) + .pipe(notify({ message: 'Finished minifying JavaScript'})); +}); + +// Compile sass into CSS & auto-inject into browsers +gulp.task('sass', function() { + return gulp.src("src/flipclock/scss/**/*.scss") + .pipe(sourcemaps.init()) + .pipe(sass({outputStyle: 'compressed'}).on('error', reportError)) + .pipe(autoprefixer({ + browsers: ['last 2 versions'], + cascade: false + })) + .pipe(sourcemaps.write("./")) + .pipe(gulp.dest("dist")) + .pipe(browserSync.stream()) + .pipe(notify({ message: 'Styles recompiled'})); +}); + +gulp.task('default', ['dev']); \ No newline at end of file diff --git a/jsdoc.config.js b/jsdoc.config.js new file mode 100644 index 00000000..d5e1fdc6 --- /dev/null +++ b/jsdoc.config.js @@ -0,0 +1,34 @@ +'use strict'; + +module.exports = { + plugins: [ + 'plugins/markdown', + './node_modules/jsdoc-export-default-interop/dist/index' + ], + source: { + 'include': [ + './src/js/Components', + './src/js/Config', + './src/js/Faces', + './src/js/Helpers', + './src/js/Languages', + './src/js/Themes' + ] + }, + opts: { + destination: './public/' + }, + templates: { + cleverLinks: true, + monospaceLinks: true, + default: { + useLongnameInNav: false, + staticFiles: { + include: [ + './docs/pages', + 'license.txt' + ] + } + } + } +}; diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..49ced568 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,15058 @@ +{ + "name": "flipclock", + "version": "0.10.8", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@ampproject/remapping": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", + "integrity": "sha512-qRmjj8nj9qmLTQXXmaR1cck3UXSRMPrbsLJAasZpF+t3riI71BXed5ebIOYwQntykeZuhjsdweEc9BxH5Jc26w==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.1.0", + "@jridgewell/trace-mapping": "^0.3.9" + } + }, + "@babel/cli": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/cli/-/cli-7.20.7.tgz", + "integrity": "sha512-WylgcELHB66WwQqItxNILsMlaTd8/SO6SgTTjMp4uCI7P4QyH1r3nqgFmO3BfM4AtfniHgFMH3EpYFj/zynBkQ==", + "dev": true, + "requires": { + "@jridgewell/trace-mapping": "^0.3.8", + "@nicolo-ribaudo/chokidar-2": "2.1.8-no-fsevents.3", + "chokidar": "^3.4.0", + "commander": "^4.0.1", + "convert-source-map": "^1.1.0", + "fs-readdir-recursive": "^1.1.0", + "glob": "^7.2.0", + "make-dir": "^2.1.0", + "slash": "^2.0.0" + } + }, + "@babel/code-frame": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.18.6.tgz", + "integrity": "sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q==", + "dev": true, + "requires": { + "@babel/highlight": "^7.18.6" + } + }, + "@babel/compat-data": { + "version": "7.20.14", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.20.14.tgz", + "integrity": "sha512-0YpKHD6ImkWMEINCyDAD0HLLUH/lPCefG8ld9it8DJB2wnApraKuhgYTvTY1z7UFIfBTGy5LwncZ+5HWWGbhFw==", + "dev": true + }, + "@babel/core": { + "version": "7.20.12", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.20.12.tgz", + "integrity": "sha512-XsMfHovsUYHFMdrIHkZphTN/2Hzzi78R08NuHfDBehym2VsPDL6Zn/JAD/JQdnRvbSsbQc4mVaU1m6JgtTEElg==", + "dev": true, + "requires": { + "@ampproject/remapping": "^2.1.0", + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.7", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helpers": "^7.20.7", + "@babel/parser": "^7.20.7", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.12", + "@babel/types": "^7.20.7", + "convert-source-map": "^1.7.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.2", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/generator": { + "version": "7.20.14", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.20.14.tgz", + "integrity": "sha512-AEmuXHdcD3A52HHXxaTmYlb8q/xMEhoRP67B3T4Oq7lbmSoqroMZzjnGj3+i1io3pdnF8iBYVu4Ilj+c4hBxYg==", + "dev": true, + "requires": { + "@babel/types": "^7.20.7", + "@jridgewell/gen-mapping": "^0.3.2", + "jsesc": "^2.5.1" + }, + "dependencies": { + "@jridgewell/gen-mapping": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz", + "integrity": "sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + } + } + } + }, + "@babel/helper-annotate-as-pure": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.18.6.tgz", + "integrity": "sha512-duORpUiYrEpzKIop6iNbjnwKLAKnJ47csTyRACyEmWj0QdUrm5aqNJGHSSEQSUAvNW0ojX0dOmK9dZduvkfeXA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-builder-binary-assignment-operator-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.18.9.tgz", + "integrity": "sha512-yFQ0YCHoIqarl8BCRwBL8ulYUaZpz3bNsA7oFepAzee+8/+ImtADXNOmO5vJvsPff3qi+hvpkY/NYBTrBQgdNw==", + "dev": true, + "requires": { + "@babel/helper-explode-assignable-expression": "^7.18.6", + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-compilation-targets": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.20.7.tgz", + "integrity": "sha512-4tGORmfQcrc+bvrjb5y3dG9Mx1IOZjsHqQVUz7XCNHO+iTmqxWnVg3KRygjGmpRLJGdQSKuvFinbIb0CnZwHAQ==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-validator-option": "^7.18.6", + "browserslist": "^4.21.3", + "lru-cache": "^5.1.1", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/helper-create-class-features-plugin": { + "version": "7.20.12", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.20.12.tgz", + "integrity": "sha512-9OunRkbT0JQcednL0UFvbfXpAsUXiGjUk0a7sN8fUXX7Mue79cUSMjHGDRRi/Vz9vYlpIhLV5fMD5dKoMhhsNQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-member-expression-to-functions": "^7.20.7", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-replace-supers": "^7.20.7", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/helper-split-export-declaration": "^7.18.6" + } + }, + "@babel/helper-create-regexp-features-plugin": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.20.5.tgz", + "integrity": "sha512-m68B1lkg3XDGX5yCvGO0kPx3v9WIYLnzjKfPcQiwntEQa5ZeRkPmo2X/ISJc8qxWGfwUr+kvZAeEzAwLec2r2w==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "regexpu-core": "^5.2.1" + } + }, + "@babel/helper-define-polyfill-provider": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.3.3.tgz", + "integrity": "sha512-z5aQKU4IzbqCC1XH0nAqfsFLMVSo22SBKUc0BxGrLkolTdPTructy0ToNnlO2zA4j9Q/7pjMZf0DSY+DSTYzww==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.17.7", + "@babel/helper-plugin-utils": "^7.16.7", + "debug": "^4.1.1", + "lodash.debounce": "^4.0.8", + "resolve": "^1.14.2", + "semver": "^6.1.2" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/helper-environment-visitor": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz", + "integrity": "sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg==", + "dev": true + }, + "@babel/helper-explode-assignable-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.18.6.tgz", + "integrity": "sha512-eyAYAsQmB80jNfg4baAtLeWAQHfHFiR483rzFK+BhETlGZaQC9bsfrugfXDCbRHLQbIA7U5NxhhOxN7p/dWIcg==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-function-name": { + "version": "7.19.0", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.19.0.tgz", + "integrity": "sha512-WAwHBINyrpqywkUH0nTnNgI5ina5TFn85HKS0pbPDfxFfhyR/aNQEn4hGi1P1JyT//I0t4OgXUlofzWILRvS5w==", + "dev": true, + "requires": { + "@babel/template": "^7.18.10", + "@babel/types": "^7.19.0" + } + }, + "@babel/helper-hoist-variables": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz", + "integrity": "sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-member-expression-to-functions": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.20.7.tgz", + "integrity": "sha512-9J0CxJLq315fEdi4s7xK5TQaNYjZw+nDVpVqr1axNGKzdrdwYBD5b4uKv3n75aABG0rCCTK8Im8Ww7eYfMrZgw==", + "dev": true, + "requires": { + "@babel/types": "^7.20.7" + } + }, + "@babel/helper-module-imports": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz", + "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-module-transforms": { + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.20.11.tgz", + "integrity": "sha512-uRy78kN4psmji1s2QtbtcCSaj/LILFDp0f/ymhpQH5QY3nljUZCaNWz9X1dEj/8MBdBEFECs7yRhKn8i7NjZgg==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-simple-access": "^7.20.2", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/helper-validator-identifier": "^7.19.1", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.10", + "@babel/types": "^7.20.7" + } + }, + "@babel/helper-optimise-call-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.18.6.tgz", + "integrity": "sha512-HP59oD9/fEHQkdcbgFCnbmgH5vIQTJbxh2yf+CdM89/glUNnuzr87Q8GIjGEnOktTROemO0Pe0iPAYbqZuOUiA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-plugin-utils": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.20.2.tgz", + "integrity": "sha512-8RvlJG2mj4huQ4pZ+rU9lqKi9ZKiRmuvGuM2HlWmkmgOhbs6zEAw6IEiJ5cQqGbDzGZOhwuOQNtZMi/ENLjZoQ==", + "dev": true + }, + "@babel/helper-remap-async-to-generator": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.18.9.tgz", + "integrity": "sha512-dI7q50YKd8BAv3VEfgg7PS7yD3Rtbi2J1XMXaalXO0W0164hYLnh8zpjRS0mte9MfVp/tltvr/cfdXPvJr1opA==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-wrap-function": "^7.18.9", + "@babel/types": "^7.18.9" + } + }, + "@babel/helper-replace-supers": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.20.7.tgz", + "integrity": "sha512-vujDMtB6LVfNW13jhlCrp48QNslK6JXi7lQG736HVbHz/mbf4Dc7tIRh1Xf5C0rF7BP8iiSxGMCmY6Ci1ven3A==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-member-expression-to-functions": "^7.20.7", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.7", + "@babel/types": "^7.20.7" + } + }, + "@babel/helper-simple-access": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.20.2.tgz", + "integrity": "sha512-+0woI/WPq59IrqDYbVGfshjT5Dmk/nnbdpcF8SnMhhXObpTq2KNBdLFRFrkVdbDOyUmHBCxzm5FHV1rACIkIbA==", + "dev": true, + "requires": { + "@babel/types": "^7.20.2" + } + }, + "@babel/helper-skip-transparent-expression-wrappers": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.20.0.tgz", + "integrity": "sha512-5y1JYeNKfvnT8sZcK9DVRtpTbGiomYIHviSP3OQWmDPU3DeH4a1ZlT/N2lyQ5P8egjcRaT/Y9aNqUxK0WsnIIg==", + "dev": true, + "requires": { + "@babel/types": "^7.20.0" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz", + "integrity": "sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA==", + "dev": true, + "requires": { + "@babel/types": "^7.18.6" + } + }, + "@babel/helper-string-parser": { + "version": "7.19.4", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz", + "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==", + "dev": true + }, + "@babel/helper-validator-identifier": { + "version": "7.19.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.19.1.tgz", + "integrity": "sha512-awrNfaMtnHUr653GgGEs++LlAvW6w+DcPrOliSMXWCKo597CwL5Acf/wWdNkf/tfEQE3mjkeD1YOVZOUV/od1w==", + "dev": true + }, + "@babel/helper-validator-option": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.18.6.tgz", + "integrity": "sha512-XO7gESt5ouv/LRJdrVjkShckw6STTaB7l9BrpBaAHDeF5YZT+01PCwmR0SJHnkW6i8OwW/EVWRShfi4j2x+KQw==", + "dev": true + }, + "@babel/helper-wrap-function": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.20.5.tgz", + "integrity": "sha512-bYMxIWK5mh+TgXGVqAtnu5Yn1un+v8DDZtqyzKRLUzrh70Eal2O3aZ7aPYiMADO4uKlkzOiRiZ6GX5q3qxvW9Q==", + "dev": true, + "requires": { + "@babel/helper-function-name": "^7.19.0", + "@babel/template": "^7.18.10", + "@babel/traverse": "^7.20.5", + "@babel/types": "^7.20.5" + } + }, + "@babel/helpers": { + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.20.13.tgz", + "integrity": "sha512-nzJ0DWCL3gB5RCXbUO3KIMMsBY2Eqbx8mBpKGE/02PgyRQFcPQLbkQ1vyy596mZLaP+dAfD+R4ckASzNVmW3jg==", + "dev": true, + "requires": { + "@babel/template": "^7.20.7", + "@babel/traverse": "^7.20.13", + "@babel/types": "^7.20.7" + } + }, + "@babel/highlight": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.18.6.tgz", + "integrity": "sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.18.6", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + } + }, + "@babel/parser": { + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.20.13.tgz", + "integrity": "sha512-gFDLKMfpiXCsjt4za2JA9oTMn70CeseCehb11kRZgvd7+F67Hih3OHOK24cRrWECJ/ljfPGac6ygXAs/C8kIvw==", + "dev": true + }, + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.18.6.tgz", + "integrity": "sha512-Dgxsyg54Fx1d4Nge8UnvTrED63vrwOdPmyvPzlNN/boaliRP54pm3pGzZD1SJUwrBA+Cs/xdG8kXX6Mn/RfISQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.20.7.tgz", + "integrity": "sha512-sbr9+wNE5aXMBBFBICk01tt7sBf2Oc9ikRFEcem/ZORup9IMUdNhW7/wVLEbbtlWOsEubJet46mHAL2C8+2jKQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-proposal-optional-chaining": "^7.20.7" + } + }, + "@babel/plugin-proposal-async-generator-functions": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", + "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", + "dev": true, + "requires": { + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-remap-async-to-generator": "^7.18.9", + "@babel/plugin-syntax-async-generators": "^7.8.4" + } + }, + "@babel/plugin-proposal-class-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-proposal-class-static-block": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.20.7.tgz", + "integrity": "sha512-AveGOoi9DAjUYYuUAG//Ig69GlazLnoyzMw68VCDux+c1tsnnH/OkYcpz/5xzMkEFC6UxjR5Gw1c+iY2wOGVeQ==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-class-static-block": "^7.14.5" + } + }, + "@babel/plugin-proposal-dynamic-import": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.18.6.tgz", + "integrity": "sha512-1auuwmK+Rz13SJj36R+jqFPMJWyKEDd7lLSdOj4oJK0UTgGueSAtkrCvz9ewmgyU/P941Rv2fQwZJN8s6QruXw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-dynamic-import": "^7.8.3" + } + }, + "@babel/plugin-proposal-export-default-from": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.18.10.tgz", + "integrity": "sha512-5H2N3R2aQFxkV4PIBUR/i7PUSwgTZjouJKzI8eKswfIjT0PhvzkPn0t0wIS5zn6maQuvtT0t1oHtMUz61LOuow==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-export-default-from": "^7.18.6" + } + }, + "@babel/plugin-proposal-export-namespace-from": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-namespace-from/-/plugin-proposal-export-namespace-from-7.18.9.tgz", + "integrity": "sha512-k1NtHyOMvlDDFeb9G5PhUXuGj8m/wiwojgQVEhJ/fsVsMCpLyOP4h0uGEjYJKrRI+EVPlb5Jk+Gt9P97lOGwtA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3" + } + }, + "@babel/plugin-proposal-json-strings": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-json-strings/-/plugin-proposal-json-strings-7.18.6.tgz", + "integrity": "sha512-lr1peyn9kOdbYc0xr0OdHTZ5FMqS6Di+H0Fz2I/JwMzGmzJETNeOFq2pBySw6X/KFL5EWDjlJuMsUGRFb8fQgQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-json-strings": "^7.8.3" + } + }, + "@babel/plugin-proposal-logical-assignment-operators": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-logical-assignment-operators/-/plugin-proposal-logical-assignment-operators-7.20.7.tgz", + "integrity": "sha512-y7C7cZgpMIjWlKE5T7eJwp+tnRYM89HmRvWM5EQuB5BoHEONjmQ8lSNmBUwOyy/GFRsohJED51YBF79hE1djug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" + } + }, + "@babel/plugin-proposal-nullish-coalescing-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" + } + }, + "@babel/plugin-proposal-numeric-separator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-numeric-separator": "^7.10.4" + } + }, + "@babel/plugin-proposal-object-rest-spread": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", + "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.20.5", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-transform-parameters": "^7.20.7" + } + }, + "@babel/plugin-proposal-optional-catch-binding": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" + } + }, + "@babel/plugin-proposal-optional-chaining": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.20.7.tgz", + "integrity": "sha512-T+A7b1kfjtRM51ssoOfS1+wbyCVqorfyZhT99TvxxLMirPShD8CzKMRepMlCBGM5RpHMbn8s+5MMHnPstJH6mQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", + "@babel/plugin-syntax-optional-chaining": "^7.8.3" + } + }, + "@babel/plugin-proposal-private-methods": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-methods/-/plugin-proposal-private-methods-7.18.6.tgz", + "integrity": "sha512-nutsvktDItsNn4rpGItSNV2sz1XwS+nfU0Rg8aCx3W3NOKVzdMjJRu0O5OkgDp3ZGICSTbgRpxZoWsxoKRvbeA==", + "dev": true, + "requires": { + "@babel/helper-create-class-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-proposal-private-property-in-object": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.20.5.tgz", + "integrity": "sha512-Vq7b9dUA12ByzB4EjQTPo25sFhY+08pQDBSZRtUAkj7lb7jahaHR5igera16QZ+3my1nYR4dKsNdYj5IjPHilQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-create-class-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5" + } + }, + "@babel/plugin-proposal-unicode-property-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.18.6.tgz", + "integrity": "sha512-2BShG/d5yoZyXZfVePH91urL5wTG6ASZU9M4o03lKK8u8UW1y08OMttBSOADTcJrnPMpvDXRG3G8fyLh4ovs8w==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.12.13" + } + }, + "@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-dynamic-import": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-export-default-from": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.18.6.tgz", + "integrity": "sha512-Kr//z3ujSVNx6E9z9ih5xXXMqK07VVTuqPmqGe6Mss/zW5XPeLZeSDZoP9ab/hT4wPKqAgjl2PnhPrcpk8Seew==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-syntax-export-namespace-from": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-namespace-from/-/plugin-syntax-export-namespace-from-7.8.3.tgz", + "integrity": "sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.3" + } + }, + "@babel/plugin-syntax-import-assertions": { + "version": "7.20.0", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.20.0.tgz", + "integrity": "sha512-IUh1vakzNoWalR8ch/areW7qFopR2AEw03JlG7BbrDqmQ4X3q9uuipQwSGrUn7oGiemKjtSLDhNtQHzMHr1JdQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.19.0" + } + }, + "@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-jsx": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.18.6.tgz", + "integrity": "sha512-6mmljtAedFGTWu2p/8WIORGwy+61PLgOMPOdazc7YoJ9ZCWUyFy3A6CpPkRKLKD1ToAesxX8KGEViAiLo9N+7Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.10.4" + } + }, + "@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.8.0" + } + }, + "@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.14.5" + } + }, + "@babel/plugin-transform-arrow-functions": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.20.7.tgz", + "integrity": "sha512-3poA5E7dzDomxj9WXWwuD6A5F3kc7VXwIJO+E+J8qtDtS+pXPAhrgEyh+9GBwBgPq1Z+bB+/JD60lp5jsN7JPQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-async-to-generator": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.20.7.tgz", + "integrity": "sha512-Uo5gwHPT9vgnSXQxqGtpdufUiWp96gk7yiP4Mp5bm1QMkEmLXBO7PAGYbKoJ6DhAwiNkcHFBol/x5zZZkL/t0Q==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-remap-async-to-generator": "^7.18.9" + } + }, + "@babel/plugin-transform-block-scoped-functions": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.18.6.tgz", + "integrity": "sha512-ExUcOqpPWnliRcPqves5HJcJOvHvIIWfuS4sroBUenPuMdmW+SMHDakmtS7qOo13sVppmUijqeTv7qqGsvURpQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-block-scoping": { + "version": "7.20.14", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.20.14.tgz", + "integrity": "sha512-sMPepQtsOs5fM1bwNvuJJHvaCfOEQfmc01FGw0ELlTpTJj5Ql/zuNRRldYhAPys4ghXdBIQJbRVYi44/7QflQQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-classes": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.20.7.tgz", + "integrity": "sha512-LWYbsiXTPKl+oBlXUGlwNlJZetXD5Am+CyBdqhPsDVjM9Jc8jwBJFrKhHf900Kfk2eZG1y9MAG3UNajol7A4VQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-compilation-targets": "^7.20.7", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-optimise-call-expression": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-replace-supers": "^7.20.7", + "@babel/helper-split-export-declaration": "^7.18.6", + "globals": "^11.1.0" + } + }, + "@babel/plugin-transform-computed-properties": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.20.7.tgz", + "integrity": "sha512-Lz7MvBK6DTjElHAmfu6bfANzKcxpyNPeYBGEafyA6E5HtRpjpZwU+u7Qrgz/2OR0z+5TvKYbPdphfSaAcZBrYQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/template": "^7.20.7" + } + }, + "@babel/plugin-transform-destructuring": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.20.7.tgz", + "integrity": "sha512-Xwg403sRrZb81IVB79ZPqNQME23yhugYVqgTxAhT99h485F4f+GMELFhhOsscDUB7HCswepKeCKLn/GZvUKoBA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-dotall-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.18.6.tgz", + "integrity": "sha512-6S3jpun1eEbAxq7TdjLotAsl4WpQI9DxfkycRcKrjhQYzU87qpXdknpBg/e+TdcMehqGnLFi7tnFUBR02Vq6wg==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-duplicate-keys": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.18.9.tgz", + "integrity": "sha512-d2bmXCtZXYc59/0SanQKbiWINadaJXqtvIQIzd4+hNwkWBgyCd5F/2t1kXoUdvPMrxzPvhK6EMQRROxsue+mfw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-exponentiation-operator": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.18.6.tgz", + "integrity": "sha512-wzEtc0+2c88FVR34aQmiz56dxEkxr2g8DQb/KfaFa1JYXOFVsbhvAonFN6PwVWj++fKmku8NP80plJ5Et4wqHw==", + "dev": true, + "requires": { + "@babel/helper-builder-binary-assignment-operator-visitor": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-for-of": { + "version": "7.18.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.18.8.tgz", + "integrity": "sha512-yEfTRnjuskWYo0k1mHUqrVWaZwrdq8AYbfrpqULOJOaucGSp4mNMVps+YtA8byoevxS/urwU75vyhQIxcCgiBQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-function-name": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.18.9.tgz", + "integrity": "sha512-WvIBoRPaJQ5yVHzcnJFor7oS5Ls0PYixlTYE63lCj2RtdQEl15M68FXQlxnG6wdraJIXRdR7KI+hQ7q/9QjrCQ==", + "dev": true, + "requires": { + "@babel/helper-compilation-targets": "^7.18.9", + "@babel/helper-function-name": "^7.18.9", + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.18.9.tgz", + "integrity": "sha512-IFQDSRoTPnrAIrI5zoZv73IFeZu2dhu6irxQjY9rNjTT53VmKg9fenjvoiOWOkJ6mm4jKVPtdMzBY98Fp4Z4cg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-member-expression-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.18.6.tgz", + "integrity": "sha512-qSF1ihLGO3q+/g48k85tUjD033C29TNTVB2paCwZPVmOsjn9pClvYYrM2VeJpBY2bcNkuny0YUyTNRyRxJ54KA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-modules-amd": { + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.20.11.tgz", + "integrity": "sha512-NuzCt5IIYOW0O30UvqktzHYR2ud5bOWbY0yaxWZ6G+aFzOMJvrs5YHNikrbdaT15+KNO31nPOy5Fim3ku6Zb5g==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-modules-commonjs": { + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.20.11.tgz", + "integrity": "sha512-S8e1f7WQ7cimJQ51JkAaDrEtohVEitXjgCGAS2N8S31Y42E+kWwfSz83LYz57QdBm7q9diARVqanIaH2oVgQnw==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-simple-access": "^7.20.2" + } + }, + "@babel/plugin-transform-modules-systemjs": { + "version": "7.20.11", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.20.11.tgz", + "integrity": "sha512-vVu5g9BPQKSFEmvt2TA4Da5N+QVS66EX21d8uoOihC+OCpUoGvzVsXeqFdtAEfVa5BILAeFt+U7yVmLbQnAJmw==", + "dev": true, + "requires": { + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-module-transforms": "^7.20.11", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-validator-identifier": "^7.19.1" + } + }, + "@babel/plugin-transform-modules-umd": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.18.6.tgz", + "integrity": "sha512-dcegErExVeXcRqNtkRU/z8WlBLnvD4MRnHgNs3MytRO1Mn1sHRyhbcpYbVMGclAqOjdW+9cfkdZno9dFdfKLfQ==", + "dev": true, + "requires": { + "@babel/helper-module-transforms": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-named-capturing-groups-regex": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-named-capturing-groups-regex/-/plugin-transform-named-capturing-groups-regex-7.20.5.tgz", + "integrity": "sha512-mOW4tTzi5iTLnw+78iEq3gr8Aoq4WNRGpmSlrogqaiCBoR1HFhpU4JkpQFOHfeYx3ReVIFWOQJS4aZBRvuZ6mA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.20.5", + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-new-target": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.18.6.tgz", + "integrity": "sha512-DjwFA/9Iu3Z+vrAn+8pBUGcjhxKguSMlsFqeCKbhb9BAV756v0krzVK04CRDi/4aqmk8BsHb4a/gFcaA5joXRw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-object-super": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.18.6.tgz", + "integrity": "sha512-uvGz6zk+pZoS1aTZrOvrbj6Pp/kK2mp45t2B+bTDre2UgsZZ8EZLSJtUg7m/no0zOJUWgFONpB7Zv9W2tSaFlA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-replace-supers": "^7.18.6" + } + }, + "@babel/plugin-transform-parameters": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.20.7.tgz", + "integrity": "sha512-WiWBIkeHKVOSYPO0pWkxGPfKeWrCJyD3NJ53+Lrp/QMSZbsVPovrVl2aWZ19D/LTVnaDv5Ap7GJ/B2CTOZdrfA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2" + } + }, + "@babel/plugin-transform-property-literals": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.18.6.tgz", + "integrity": "sha512-cYcs6qlgafTud3PAzrrRNbQtfpQ8+y/+M5tKmksS9+M1ckbH6kzY8MrexEM9mcA6JDsukE19iIRvAyYl463sMg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-react-display-name": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.18.6.tgz", + "integrity": "sha512-TV4sQ+T013n61uMoygyMRm+xf04Bd5oqFpv2jAEQwSZ8NwQA7zeRPg1LMVg2PWi3zWBz+CLKD+v5bcpZ/BS0aA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-react-jsx": { + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.20.13.tgz", + "integrity": "sha512-MmTZx/bkUrfJhhYAYt3Urjm+h8DQGrPrnKQ94jLo7NLuOU+T89a7IByhKmrb8SKhrIYIQ0FN0CHMbnFRen4qNw==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-module-imports": "^7.18.6", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/plugin-syntax-jsx": "^7.18.6", + "@babel/types": "^7.20.7" + } + }, + "@babel/plugin-transform-react-jsx-development": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.18.6.tgz", + "integrity": "sha512-SA6HEjwYFKF7WDjWcMcMGUimmw/nhNRDWxr+KaLSCrkD/LMDBvWRmHAYgE1HDeF8KUuI8OAu+RT6EOtKxSW2qA==", + "dev": true, + "requires": { + "@babel/plugin-transform-react-jsx": "^7.18.6" + } + }, + "@babel/plugin-transform-react-pure-annotations": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.18.6.tgz", + "integrity": "sha512-I8VfEPg9r2TRDdvnHgPepTKvuRomzA8+u+nhY7qSI1fR2hRNebasZEETLyM5mAUr0Ku56OkXJ0I7NHJnO6cJiQ==", + "dev": true, + "requires": { + "@babel/helper-annotate-as-pure": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-regenerator": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.20.5.tgz", + "integrity": "sha512-kW/oO7HPBtntbsahzQ0qSE3tFvkFwnbozz3NWFhLGqH75vLEg+sCGngLlhVkePlCs3Jv0dBBHDzCHxNiFAQKCQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2", + "regenerator-transform": "^0.15.1" + } + }, + "@babel/plugin-transform-reserved-words": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.18.6.tgz", + "integrity": "sha512-oX/4MyMoypzHjFrT1CdivfKZ+XvIPMFXwwxHp/r0Ddy2Vuomt4HDFGmft1TAY2yiTKiNSsh3kjBAzcM8kSdsjA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-shorthand-properties": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.18.6.tgz", + "integrity": "sha512-eCLXXJqv8okzg86ywZJbRn19YJHU4XUa55oz2wbHhaQVn/MM+XhukiT7SYqp/7o00dg52Rj51Ny+Ecw4oyoygw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-spread": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.20.7.tgz", + "integrity": "sha512-ewBbHQ+1U/VnH1fxltbJqDeWBU1oNLG8Dj11uIv3xVf7nrQu0bPGe5Rf716r7K5Qz+SqtAOVswoVunoiBtGhxw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0" + } + }, + "@babel/plugin-transform-sticky-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.18.6.tgz", + "integrity": "sha512-kfiDrDQ+PBsQDO85yj1icueWMfGfJFKN1KCkndygtu/C9+XUfydLC8Iv5UYJqRwy4zk8EcplRxEOeLyjq1gm6Q==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/plugin-transform-template-literals": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.18.9.tgz", + "integrity": "sha512-S8cOWfT82gTezpYOiVaGHrCbhlHgKhQt8XH5ES46P2XWmX92yisoZywf5km75wv5sYcXDUCLMmMxOLCtthDgMA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-typeof-symbol": { + "version": "7.18.9", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.18.9.tgz", + "integrity": "sha512-SRfwTtF11G2aemAZWivL7PD+C9z52v9EvMqH9BuYbabyPuKUvSWks3oCg6041pT925L4zVFqaVBeECwsmlguEw==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-unicode-escapes": { + "version": "7.18.10", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.18.10.tgz", + "integrity": "sha512-kKAdAI+YzPgGY/ftStBFXTI1LZFju38rYThnfMykS+IXy8BVx+res7s2fxf1l8I35DV2T97ezo6+SGrXz6B3iQ==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.9" + } + }, + "@babel/plugin-transform-unicode-regex": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.18.6.tgz", + "integrity": "sha512-gE7A6Lt7YLnNOL3Pb9BNeZvi+d8l7tcRrG4+pwJjK9hD2xX4mEvjlQW60G9EEmfXVYRPv9VRQcyegIVHCql/AA==", + "dev": true, + "requires": { + "@babel/helper-create-regexp-features-plugin": "^7.18.6", + "@babel/helper-plugin-utils": "^7.18.6" + } + }, + "@babel/preset-env": { + "version": "7.20.2", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.20.2.tgz", + "integrity": "sha512-1G0efQEWR1EHkKvKHqbG+IN/QdgwfByUpM5V5QroDzGV2t3S/WXNQd693cHiHTlCFMpr9B6FkPFXDA2lQcKoDg==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.20.1", + "@babel/helper-compilation-targets": "^7.20.0", + "@babel/helper-plugin-utils": "^7.20.2", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": "^7.18.6", + "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-async-generator-functions": "^7.20.1", + "@babel/plugin-proposal-class-properties": "^7.18.6", + "@babel/plugin-proposal-class-static-block": "^7.18.6", + "@babel/plugin-proposal-dynamic-import": "^7.18.6", + "@babel/plugin-proposal-export-namespace-from": "^7.18.9", + "@babel/plugin-proposal-json-strings": "^7.18.6", + "@babel/plugin-proposal-logical-assignment-operators": "^7.18.9", + "@babel/plugin-proposal-nullish-coalescing-operator": "^7.18.6", + "@babel/plugin-proposal-numeric-separator": "^7.18.6", + "@babel/plugin-proposal-object-rest-spread": "^7.20.2", + "@babel/plugin-proposal-optional-catch-binding": "^7.18.6", + "@babel/plugin-proposal-optional-chaining": "^7.18.9", + "@babel/plugin-proposal-private-methods": "^7.18.6", + "@babel/plugin-proposal-private-property-in-object": "^7.18.6", + "@babel/plugin-proposal-unicode-property-regex": "^7.18.6", + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-dynamic-import": "^7.8.3", + "@babel/plugin-syntax-export-namespace-from": "^7.8.3", + "@babel/plugin-syntax-import-assertions": "^7.20.0", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5", + "@babel/plugin-transform-arrow-functions": "^7.18.6", + "@babel/plugin-transform-async-to-generator": "^7.18.6", + "@babel/plugin-transform-block-scoped-functions": "^7.18.6", + "@babel/plugin-transform-block-scoping": "^7.20.2", + "@babel/plugin-transform-classes": "^7.20.2", + "@babel/plugin-transform-computed-properties": "^7.18.9", + "@babel/plugin-transform-destructuring": "^7.20.2", + "@babel/plugin-transform-dotall-regex": "^7.18.6", + "@babel/plugin-transform-duplicate-keys": "^7.18.9", + "@babel/plugin-transform-exponentiation-operator": "^7.18.6", + "@babel/plugin-transform-for-of": "^7.18.8", + "@babel/plugin-transform-function-name": "^7.18.9", + "@babel/plugin-transform-literals": "^7.18.9", + "@babel/plugin-transform-member-expression-literals": "^7.18.6", + "@babel/plugin-transform-modules-amd": "^7.19.6", + "@babel/plugin-transform-modules-commonjs": "^7.19.6", + "@babel/plugin-transform-modules-systemjs": "^7.19.6", + "@babel/plugin-transform-modules-umd": "^7.18.6", + "@babel/plugin-transform-named-capturing-groups-regex": "^7.19.1", + "@babel/plugin-transform-new-target": "^7.18.6", + "@babel/plugin-transform-object-super": "^7.18.6", + "@babel/plugin-transform-parameters": "^7.20.1", + "@babel/plugin-transform-property-literals": "^7.18.6", + "@babel/plugin-transform-regenerator": "^7.18.6", + "@babel/plugin-transform-reserved-words": "^7.18.6", + "@babel/plugin-transform-shorthand-properties": "^7.18.6", + "@babel/plugin-transform-spread": "^7.19.0", + "@babel/plugin-transform-sticky-regex": "^7.18.6", + "@babel/plugin-transform-template-literals": "^7.18.9", + "@babel/plugin-transform-typeof-symbol": "^7.18.9", + "@babel/plugin-transform-unicode-escapes": "^7.18.10", + "@babel/plugin-transform-unicode-regex": "^7.18.6", + "@babel/preset-modules": "^0.1.5", + "@babel/types": "^7.20.2", + "babel-plugin-polyfill-corejs2": "^0.3.3", + "babel-plugin-polyfill-corejs3": "^0.6.0", + "babel-plugin-polyfill-regenerator": "^0.4.1", + "core-js-compat": "^3.25.1", + "semver": "^6.3.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@babel/preset-modules": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@babel/preset-modules/-/preset-modules-0.1.5.tgz", + "integrity": "sha512-A57th6YRG7oR3cq/yt/Y84MvGgE0eJG2F1JLhKuyG+jFxEgrd/HAMJatiFtmOiZurz+0DkrvbheCLaV5f2JfjA==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-unicode-property-regex": "^7.4.4", + "@babel/plugin-transform-dotall-regex": "^7.4.4", + "@babel/types": "^7.4.4", + "esutils": "^2.0.2" + } + }, + "@babel/preset-react": { + "version": "7.18.6", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.18.6.tgz", + "integrity": "sha512-zXr6atUmyYdiWRVLOZahakYmOBHtWc2WGCkP8PYTgZi0iJXDY2CN180TdrIW4OGOAdLc7TifzDIvtx6izaRIzg==", + "dev": true, + "requires": { + "@babel/helper-plugin-utils": "^7.18.6", + "@babel/helper-validator-option": "^7.18.6", + "@babel/plugin-transform-react-display-name": "^7.18.6", + "@babel/plugin-transform-react-jsx": "^7.18.6", + "@babel/plugin-transform-react-jsx-development": "^7.18.6", + "@babel/plugin-transform-react-pure-annotations": "^7.18.6" + } + }, + "@babel/runtime": { + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz", + "integrity": "sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.13.11" + } + }, + "@babel/template": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.20.7.tgz", + "integrity": "sha512-8SegXApWe6VoNw0r9JHpSteLKTpTiLZ4rMlGIm9JQ18KiCtyQiAMEazujAHrUS5flrcqYZa75ukev3P6QmUwUw==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7" + } + }, + "@babel/traverse": { + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.20.13.tgz", + "integrity": "sha512-kMJXfF0T6DIS9E8cgdLCSAL+cuCK+YEZHWiLK0SXpTo8YRj5lpJu3CDNKiIBCne4m9hhTIqUg6SYTAI39tAiVQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.18.6", + "@babel/generator": "^7.20.7", + "@babel/helper-environment-visitor": "^7.18.9", + "@babel/helper-function-name": "^7.19.0", + "@babel/helper-hoist-variables": "^7.18.6", + "@babel/helper-split-export-declaration": "^7.18.6", + "@babel/parser": "^7.20.13", + "@babel/types": "^7.20.7", + "debug": "^4.1.0", + "globals": "^11.1.0" + } + }, + "@babel/types": { + "version": "7.20.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.20.7.tgz", + "integrity": "sha512-69OnhBxSSgK0OzTJai4kyPDiKTIe3j+ctaHdIGVbRahTLAT7L3R9oeXHC2aVSuGYt3cVnoAMDmOCgJ2yaiLMvg==", + "dev": true, + "requires": { + "@babel/helper-string-parser": "^7.19.4", + "@babel/helper-validator-identifier": "^7.19.1", + "to-fast-properties": "^2.0.0" + } + }, + "@jridgewell/gen-mapping": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.1.1.tgz", + "integrity": "sha512-sQXCasFk+U8lWYEe66WxRDOE9PjVz4vSM51fTu3Hw+ClTpUSQb718772vH3pyS5pShp6lvQM7SxgIDXXXmOX7w==", + "dev": true, + "requires": { + "@jridgewell/set-array": "^1.0.0", + "@jridgewell/sourcemap-codec": "^1.4.10" + } + }, + "@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "dev": true + }, + "@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "dev": true + }, + "@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", + "dev": true + }, + "@jridgewell/trace-mapping": { + "version": "0.3.17", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.17.tgz", + "integrity": "sha512-MCNzAp77qzKca9+W/+I0+sEpaUnZoeasnghNeVc41VZCEKaCH73Vq3BZZ/SzWIgrqE4H4ceI+p+b6C0mHf9T4g==", + "dev": true, + "requires": { + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" + } + }, + "@nicolo-ribaudo/chokidar-2": { + "version": "2.1.8-no-fsevents.3", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/chokidar-2/-/chokidar-2-2.1.8-no-fsevents.3.tgz", + "integrity": "sha512-s88O1aVtXftvp5bCPB7WnmXc5IwOZZ7YPuwNPt+GtOOXpPvad1LfbmjYv+qII7zP6RU2QGnqve27dnLycEnyEQ==", + "dev": true, + "optional": true + }, + "@socket.io/component-emitter": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.0.tgz", + "integrity": "sha512-+9jVqKhRSpsc591z5vX+X5Yyw+he/HCB4iQ/RYxw35CEPaY1gnsNE43nf9n9AaYjAQrTiI/mOwKUKdUs9vf7Xg==", + "dev": true + }, + "@types/acorn": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz", + "integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==", + "dev": true, + "requires": { + "@types/estree": "*" + } + }, + "@types/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==", + "dev": true + }, + "@types/cors": { + "version": "2.8.13", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.13.tgz", + "integrity": "sha512-RG8AStHlUiV5ysZQKq97copd2UmVYw3/pRMLefISZ3S1hK104Cwm7iLQ3fTKx+lsUH2CE8FlLaYeEA2LSeqYUA==", + "dev": true, + "requires": { + "@types/node": "*" + } + }, + "@types/estree": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", + "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", + "dev": true + }, + "@types/linkify-it": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-3.0.2.tgz", + "integrity": "sha512-HZQYqbiFVWufzCwexrvh694SOim8z2d+xJl5UNamcvQFejLY/2YUtzXHYi3cHdI7PMlS8ejH2slRAOJQ32aNbA==", + "dev": true + }, + "@types/markdown-it": { + "version": "12.2.3", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-12.2.3.tgz", + "integrity": "sha512-GKMHFfv3458yYy+v/N8gjufHO6MSZKCOXpZc5GXIWWy8uldwfmPn98vp81gZ5f9SVw8YYBctgfJ22a2d7AOMeQ==", + "dev": true, + "requires": { + "@types/linkify-it": "*", + "@types/mdurl": "*" + } + }, + "@types/mdurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-1.0.2.tgz", + "integrity": "sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==", + "dev": true + }, + "@types/node": { + "version": "18.11.18", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", + "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==", + "dev": true + }, + "abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "dev": true + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "abstract-leveldown": { + "version": "0.12.4", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-0.12.4.tgz", + "integrity": "sha512-TOod9d5RDExo6STLMGa+04HGkl+TlMfbDnTyN93/ETJ9DpQ0DaYLqcMZlbXvdc4W3vVo1Qrl+WhSp8zvDsJ+jA==", + "dev": true, + "requires": { + "xtend": "~3.0.0" + }, + "dependencies": { + "xtend": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-3.0.0.tgz", + "integrity": "sha512-sp/sT9OALMjRW1fKDlPeuSZlDQpkqReA0pyJukniWbTGoEKefHxhGJynE3PNhUMlcM8qWIjPwecwCw4LArS5Eg==", + "dev": true + } + } + }, + "accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "requires": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + } + }, + "acorn": { + "version": "5.7.4", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-5.7.4.tgz", + "integrity": "sha512-1D++VG7BhrtvQpNbBzovKNc1FLGGEE/oGe7b9xJm/RFHMBeUaUGpluV9RLjZa47YFdPcDAenEYuq9pQPcMdLJg==", + "dev": true + }, + "acorn-dynamic-import": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/acorn-dynamic-import/-/acorn-dynamic-import-3.0.0.tgz", + "integrity": "sha512-zVWV8Z8lislJoOKKqdNMOB+s6+XV5WERty8MnKBeFgwA+19XJjJHs2RP5dzM57FftIs+jQnRToLiWazKr6sSWg==", + "dev": true, + "requires": { + "acorn": "^5.0.0" + } + }, + "acorn-globals": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-4.3.4.tgz", + "integrity": "sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A==", + "dev": true, + "requires": { + "acorn": "^6.0.1", + "acorn-walk": "^6.0.1" + }, + "dependencies": { + "acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true + } + } + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true + }, + "acorn-walk": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-6.2.0.tgz", + "integrity": "sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA==", + "dev": true + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "alphanum-sort": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/alphanum-sort/-/alphanum-sort-1.0.2.tgz", + "integrity": "sha512-0FcBfdcmaumGPQ0qPn7Q5qTgz/ooXgIyp1rf8ik5bGX8mpE2YHjC0P/eyQvxu1GURYQgq9ozf2mteQ5ZD9YiyQ==", + "dev": true + }, + "amdefine": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==", + "dev": true + }, + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "append-transform": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-0.4.0.tgz", + "integrity": "sha512-Yisb7ew0ZEyDtRYQ+b+26o9KbiYPFxwcsxKzbssigzRRMJ9LpExPVUg6Fos7eP7yP3q7///tzze4nm4lTptPBw==", + "dev": true, + "requires": { + "default-require-extensions": "^1.0.0" + } + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.7.tgz", + "integrity": "sha512-nxwy40TuMiUGqMyRHgCSWZ9FM4VAoRP4xUYSTv5ImRog+h9yISPbVH7H8fASCIzYn9wlEv4zvFL7uKDMCFQm3g==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-2.0.0.tgz", + "integrity": "sha512-dtXTVMkh6VkEEA7OhXnN1Ecb8aAGFdZ1LFxtOCoqj4qkyOJMt7+qs6Ahdy6p/NQCPYsRSXXivhSB/J5E9jmYKA==", + "dev": true, + "requires": { + "arr-flatten": "^1.0.1" + } + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "dev": true + }, + "array-equal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-equal/-/array-equal-1.0.0.tgz", + "integrity": "sha512-H3LU5RLiSsGXPhN+Nipar0iR0IofH+8r89G2y1tBKxQ/agagKyAjhkAFDRBfodP2caPrNKHpAWNIM/c9yeL7uA==", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==", + "dev": true + }, + "array-unique": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.2.1.tgz", + "integrity": "sha512-G2n5bG5fSUCpnsXz4+8FUkYsGPkNfLn9YvS66U5qbTIXI2Ynnlo4Bi42bWv+omKUCqz+ejzfClwne0alJWJPhg==", + "dev": true + }, + "array.prototype.reduce": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/array.prototype.reduce/-/array.prototype.reduce-1.0.5.tgz", + "integrity": "sha512-kDdugMl7id9COE8R7MHF5jWk7Dqt/fs4Pv+JXoICnYwqpjjjbUurz6w5fT5IG6brLdJhv6/VoHB0H7oyIBXd+Q==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4", + "es-array-method-boxes-properly": "^1.0.0", + "is-string": "^1.0.7" + } + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", + "dev": true + }, + "asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "asn1.js": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-5.4.1.tgz", + "integrity": "sha512-+I//4cYPccV8LdmBLiX8CYvf9Sp3vQsrqu2QNXRcrbiWvcx/UdlFiqUJJzxRQxgsZmvhXhn4cSKeSmoFjVdupA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0", + "safer-buffer": "^2.1.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "dev": true + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "async": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", + "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "dev": true, + "requires": { + "lodash": "^4.17.14" + } + }, + "async-each": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/async-each/-/async-each-1.0.5.tgz", + "integrity": "sha512-5QzqtU3BlagehwmdoqwaS2FBQF2P5eL6vFqXwNsb5jwoEsmtfAXg1ocFvW7I6/gGLFhBMKwcMwZuy7uv/Bo9jA==", + "dev": true + }, + "async-each-series": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/async-each-series/-/async-each-series-0.1.1.tgz", + "integrity": "sha512-p4jj6Fws4Iy2m0iCmI2am2ZNZCgbdgE+P8F/8csmn2vx7ixXrO2zGcuNsD46X5uZSVecmkEy/M06X2vG8KD6dQ==", + "dev": true + }, + "async-foreach": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha512-VUeSMD8nEGBWaZK4lizI1sf3yEC7pnAQ/mrI7pC2fBz2s/tq5jWWEngTwaf0Gruu/OoXRGLGg1XFqpYBiGTYJA==", + "dev": true + }, + "async-limiter": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "autoprefixer": { + "version": "6.7.7", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-6.7.7.tgz", + "integrity": "sha512-WKExI/eSGgGAkWAO+wMVdFObZV7hQen54UpD1kCCTN3tvlL3W1jL4+lPP/M7MwoP7Q4RHzKtO3JQ4HxYEcd+xQ==", + "dev": true, + "requires": { + "browserslist": "^1.7.6", + "caniuse-db": "^1.0.30000634", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "postcss": "^5.2.16", + "postcss-value-parser": "^3.2.3" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha512-qHJblDE2bXVRYzuDetv/wAeHOJyO97+9wxC1cdCtyzgNuSozOyRCiiLaCR1f71AN66lQdVVBipWm63V+a7bPOw==", + "dev": true, + "requires": { + "caniuse-db": "^1.0.30000639", + "electron-to-chromium": "^1.2.7" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==", + "dev": true + }, + "aws4": { + "version": "1.12.0", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.12.0.tgz", + "integrity": "sha512-NmWvPnx0F1SfrQbYwOi7OeaNGokp9XhzNioJ/CSBs8Qa4vxug81mhJEAVZwxXuBmYB5KDRfMq/F3RR0BIU7sWg==", + "dev": true + }, + "axios": { + "version": "0.21.4", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz", + "integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==", + "dev": true, + "requires": { + "follow-redirects": "^1.14.0" + } + }, + "babel-code-frame": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", + "integrity": "sha512-XqYMR2dfdGMW+hd0IUZ2PwK+fGeFkOxZJ0wY+JaQAHzt1Zx8LcvpiZD2NiGkEG8qx0CfkAOr5xt76d1e8vG90g==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "js-tokens": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-3.0.2.tgz", + "integrity": "sha512-RjTcuD4xjtthQkaWH7dFlH85L+QaVtSoOyGdZ3g6HFhS9dFNDfLyqgm2NFe2X6cQpeFmt0452FJjFG5UameExg==", + "dev": true + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "babel-core": { + "version": "7.0.0-bridge.0", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", + "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==", + "dev": true + }, + "babel-generator": { + "version": "6.26.1", + "resolved": "https://registry.npmjs.org/babel-generator/-/babel-generator-6.26.1.tgz", + "integrity": "sha512-HyfwY6ApZj7BYTcJURpM5tznulaBvyio7/0d4zFOeMPUmfxkCjHocCuoLa2SAGzBI8AREcH3eP3758F672DppA==", + "dev": true, + "requires": { + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" + }, + "dependencies": { + "jsesc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-1.3.0.tgz", + "integrity": "sha512-Mke0DA0QjUWuJlhsE0ZPPhYiJkRap642SmI/4ztCFaUs6V2AiH1sfecc+57NgaryfAA2VR3v6O+CSjC1jZJKOA==", + "dev": true + } + } + }, + "babel-helper-builder-binary-assignment-operator-visitor": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-builder-binary-assignment-operator-visitor/-/babel-helper-builder-binary-assignment-operator-visitor-6.24.1.tgz", + "integrity": "sha512-gCtfYORSG1fUMX4kKraymq607FWgMWg+j42IFPc18kFQEsmtaibP4UrqsXt8FlEJle25HUd4tsoDR7H2wDhe9Q==", + "dev": true, + "requires": { + "babel-helper-explode-assignable-expression": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-builder-react-jsx": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-builder-react-jsx/-/babel-helper-builder-react-jsx-6.26.0.tgz", + "integrity": "sha512-02I9jDjnVEuGy2BR3LRm9nPRb/+Ja0pvZVLr1eI5TYAA/dB0Xoc+WBo50+aDfhGDLhlBY1+QURjn9uvcFd8gzg==", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "esutils": "^2.0.2" + } + }, + "babel-helper-call-delegate": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-call-delegate/-/babel-helper-call-delegate-6.24.1.tgz", + "integrity": "sha512-RL8n2NiEj+kKztlrVJM9JT1cXzzAdvWFh76xh/H1I4nKwunzE4INBXn8ieCZ+wh4zWszZk7NBS1s/8HR5jDkzQ==", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-define-map": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-define-map/-/babel-helper-define-map-6.26.0.tgz", + "integrity": "sha512-bHkmjcC9lM1kmZcVpA5t2om2nzT/xiZpo6TJq7UlZ3wqKfzia4veeXbIhKvJXAMzhhEBd3cR1IElL5AenWEUpA==", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-helper-explode-assignable-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-explode-assignable-expression/-/babel-helper-explode-assignable-expression-6.24.1.tgz", + "integrity": "sha512-qe5csbhbvq6ccry9G7tkXbzNtcDiH4r51rrPUbwwoTzZ18AqxWYRZT6AOmxrpxKnQBW0pYlBI/8vh73Z//78nQ==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-function-name/-/babel-helper-function-name-6.24.1.tgz", + "integrity": "sha512-Oo6+e2iX+o9eVvJ9Y5eKL5iryeRdsIkwRYheCuhYdVHsdEQysbc2z2QkqCLIYnNxkT5Ss3ggrHdXiDI7Dhrn4Q==", + "dev": true, + "requires": { + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-get-function-arity": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-get-function-arity/-/babel-helper-get-function-arity-6.24.1.tgz", + "integrity": "sha512-WfgKFX6swFB1jS2vo+DwivRN4NB8XUdM3ij0Y1gnC21y1tdBoe6xjVnd7NSI6alv+gZXCtJqvrTeMW3fR/c0ng==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-hoist-variables": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-hoist-variables/-/babel-helper-hoist-variables-6.24.1.tgz", + "integrity": "sha512-zAYl3tqerLItvG5cKYw7f1SpvIxS9zi7ohyGHaI9cgDUjAT6YcY9jIEH5CstetP5wHIVSceXwNS7Z5BpJg+rOw==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-optimise-call-expression": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-optimise-call-expression/-/babel-helper-optimise-call-expression-6.24.1.tgz", + "integrity": "sha512-Op9IhEaxhbRT8MDXx2iNuMgciu2V8lDvYCNQbDGjdBNCjaMvyLf4wl4A3b8IgndCyQF8TwfgsQ8T3VD8aX1/pA==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-helper-regex": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-helper-regex/-/babel-helper-regex-6.26.0.tgz", + "integrity": "sha512-VlPiWmqmGJp0x0oK27Out1D+71nVVCTSdlbhIVoaBAj2lUgrNjBCRR9+llO4lTSb2O4r7PJg+RobRkhBrf6ofg==", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-helper-remap-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-remap-async-to-generator/-/babel-helper-remap-async-to-generator-6.24.1.tgz", + "integrity": "sha512-RYqaPD0mQyQIFRu7Ho5wE2yvA/5jxqCIj/Lv4BXNq23mHYu/vxikOy2JueLiBxQknwapwrJeNCesvY0ZcfnlHg==", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helper-replace-supers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helper-replace-supers/-/babel-helper-replace-supers-6.24.1.tgz", + "integrity": "sha512-sLI+u7sXJh6+ToqDr57Bv973kCepItDhMou0xCP2YPVmR1jkHSCY+p1no8xErbV1Siz5QE8qKT1WIwybSWlqjw==", + "dev": true, + "requires": { + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-helpers": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-helpers/-/babel-helpers-6.24.1.tgz", + "integrity": "sha512-n7pFrqQm44TCYvrCDb0MqabAF+JUBq+ijBvNMUxpkLjJaAu32faIexewMumrH5KLLJ1HDyT0PTEqRyAe/GwwuQ==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-jest": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-23.6.0.tgz", + "integrity": "sha512-lqKGG6LYXYu+DQh/slrQ8nxXQkEkhugdXsU6St7GmhVS7Ilc/22ArwqXNJrf0QaOBjZB0360qZMwXqDYQHXaew==", + "dev": true, + "requires": { + "babel-plugin-istanbul": "^4.1.6", + "babel-preset-jest": "^23.2.0" + } + }, + "babel-messages": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-messages/-/babel-messages-6.23.0.tgz", + "integrity": "sha512-Bl3ZiA+LjqaMtNYopA9TYE9HP1tQ+E5dLxE0XrAzcIJeK2UqF0/EaqXwBn9esd4UmTfEab+P+UYQ1GnioFIb/w==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-check-es2015-constants": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-check-es2015-constants/-/babel-plugin-check-es2015-constants-6.22.0.tgz", + "integrity": "sha512-B1M5KBP29248dViEo1owyY32lk1ZSH2DaNNrXLGt8lyjjHm7pBqAdQ7VKUPR6EEDO323+OvT3MQXbCin8ooWdA==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-external-helpers": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-external-helpers/-/babel-plugin-external-helpers-6.22.0.tgz", + "integrity": "sha512-TdAMiM6MzLokhk3yCA0KCctmivVZ/mmCwbp7YPmRGkqh2KkcNuxE3R0jxuYU+4xmvfMZx4p4uo8d1cT9t5BLxA==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-istanbul": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-4.1.6.tgz", + "integrity": "sha512-PWP9FQ1AhZhS01T/4qLSKoHGY/xvkZdVBGlKM/HuxxS3+sC66HhTNR7+MpbO/so/cz/wY94MeSWJuP1hXIPfwQ==", + "dev": true, + "requires": { + "babel-plugin-syntax-object-rest-spread": "^6.13.0", + "find-up": "^2.1.0", + "istanbul-lib-instrument": "^1.10.1", + "test-exclude": "^4.2.1" + } + }, + "babel-plugin-jest-hoist": { + "version": "23.2.0", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-23.2.0.tgz", + "integrity": "sha512-N0MlMjZtahXK0yb0K3V9hWPrq5e7tThbghvDr0k3X75UuOOqwsWW6mk8XHD2QvEC0Ca9dLIfTgNU36TeJD6Hnw==", + "dev": true + }, + "babel-plugin-polyfill-corejs2": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.3.3.tgz", + "integrity": "sha512-8hOdmFYFSZhqg2C/JgLUQ+t52o5nirNwaWM2B9LWteozwIvM14VSwdsCAUET10qT+kmySAlseadmfeeSWFCy+Q==", + "dev": true, + "requires": { + "@babel/compat-data": "^7.17.7", + "@babel/helper-define-polyfill-provider": "^0.3.3", + "semver": "^6.1.1" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "babel-plugin-polyfill-corejs3": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.6.0.tgz", + "integrity": "sha512-+eHqR6OPcBhJOGgsIar7xoAB1GcSwVUA3XjAd7HJNzOXT4wv6/H7KIdA/Nc60cvUlDbKApmqNvD1B1bzOt4nyA==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.3", + "core-js-compat": "^3.25.1" + } + }, + "babel-plugin-polyfill-regenerator": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.4.1.tgz", + "integrity": "sha512-NtQGmyQDXjQqQ+IzRkBVwEOz9lQ4zxAQZgoAYEtU9dJjnl1Oc98qnN7jcp+bE7O7aYzVpavXE3/VKXNzUbh7aw==", + "dev": true, + "requires": { + "@babel/helper-define-polyfill-provider": "^0.3.3" + } + }, + "babel-plugin-syntax-async-functions": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-async-functions/-/babel-plugin-syntax-async-functions-6.13.0.tgz", + "integrity": "sha512-4Zp4unmHgw30A1eWI5EpACji2qMocisdXhAftfhXoSV9j0Tvj6nRFE3tOmRY912E0FMRm/L5xWE7MGVT2FoLnw==", + "dev": true + }, + "babel-plugin-syntax-exponentiation-operator": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-exponentiation-operator/-/babel-plugin-syntax-exponentiation-operator-6.13.0.tgz", + "integrity": "sha512-Z/flU+T9ta0aIEKl1tGEmN/pZiI1uXmCiGFRegKacQfEJzp7iNsKloZmyJlQr+75FCJtiFfGIK03SiCvCt9cPQ==", + "dev": true + }, + "babel-plugin-syntax-flow": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-flow/-/babel-plugin-syntax-flow-6.18.0.tgz", + "integrity": "sha512-HbTDIoG1A1op7Tl/wIFQPULIBA61tsJ8Ntq2FAhLwuijrzosM/92kAfgU1Q3Kc7DH/cprJg5vDfuTY4QUL4rDA==", + "dev": true + }, + "babel-plugin-syntax-jsx": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-jsx/-/babel-plugin-syntax-jsx-6.18.0.tgz", + "integrity": "sha512-qrPaCSo9c8RHNRHIotaufGbuOBN8rtdC4QrrFFc43vyWCCz7Kl7GL1PGaXtMGQZUXrkCjNEgxDfmAuAabr/rlw==", + "dev": true + }, + "babel-plugin-syntax-object-rest-spread": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-object-rest-spread/-/babel-plugin-syntax-object-rest-spread-6.13.0.tgz", + "integrity": "sha512-C4Aq+GaAj83pRQ0EFgTvw5YO6T3Qz2KGrNRwIj9mSoNHVvdZY4KO2uA6HNtNXCw993iSZnckY1aLW8nOi8i4+w==", + "dev": true + }, + "babel-plugin-syntax-trailing-function-commas": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz", + "integrity": "sha512-Gx9CH3Q/3GKbhs07Bszw5fPTlU+ygrOGfAhEt7W2JICwufpC4SuO0mG0+4NykPBSYPMJhqvVlDBU17qB1D+hMQ==", + "dev": true + }, + "babel-plugin-transform-async-to-generator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz", + "integrity": "sha512-7BgYJujNCg0Ti3x0c/DL3tStvnKS6ktIYOmo9wginv/dfZOrbSZ+qG4IRRHMBOzZ5Awb1skTiAsQXg/+IWkZYw==", + "dev": true, + "requires": { + "babel-helper-remap-async-to-generator": "^6.24.1", + "babel-plugin-syntax-async-functions": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-arrow-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-arrow-functions/-/babel-plugin-transform-es2015-arrow-functions-6.22.0.tgz", + "integrity": "sha512-PCqwwzODXW7JMrzu+yZIaYbPQSKjDTAsNNlK2l5Gg9g4rz2VzLnZsStvp/3c46GfXpwkyufb3NCyG9+50FF1Vg==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-block-scoped-functions": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoped-functions/-/babel-plugin-transform-es2015-block-scoped-functions-6.22.0.tgz", + "integrity": "sha512-2+ujAT2UMBzYFm7tidUsYh+ZoIutxJ3pN9IYrF1/H6dCKtECfhmB8UkHVpyxDwkj0CYbQG35ykoz925TUnBc3A==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-block-scoping": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-block-scoping/-/babel-plugin-transform-es2015-block-scoping-6.26.0.tgz", + "integrity": "sha512-YiN6sFAQ5lML8JjCmr7uerS5Yc/EMbgg9G8ZNmk2E3nYX4ckHR01wrkeeMijEf5WHNK5TW0Sl0Uu3pv3EdOJWw==", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "lodash": "^4.17.4" + } + }, + "babel-plugin-transform-es2015-classes": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-classes/-/babel-plugin-transform-es2015-classes-6.24.1.tgz", + "integrity": "sha512-5Dy7ZbRinGrNtmWpquZKZ3EGY8sDgIVB4CU8Om8q8tnMLrD/m94cKglVcHps0BCTdZ0TJeeAWOq2TK9MIY6cag==", + "dev": true, + "requires": { + "babel-helper-define-map": "^6.24.1", + "babel-helper-function-name": "^6.24.1", + "babel-helper-optimise-call-expression": "^6.24.1", + "babel-helper-replace-supers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-computed-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-computed-properties/-/babel-plugin-transform-es2015-computed-properties-6.24.1.tgz", + "integrity": "sha512-C/uAv4ktFP/Hmh01gMTvYvICrKze0XVX9f2PdIXuriCSvUmV9j+u+BB9f5fJK3+878yMK6dkdcq+Ymr9mrcLzw==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-destructuring": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-destructuring/-/babel-plugin-transform-es2015-destructuring-6.23.0.tgz", + "integrity": "sha512-aNv/GDAW0j/f4Uy1OEPZn1mqD+Nfy9viFGBfQ5bZyT35YqOiqx7/tXdyfZkJ1sC21NyEsBdfDY6PYmLHF4r5iA==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-duplicate-keys": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-duplicate-keys/-/babel-plugin-transform-es2015-duplicate-keys-6.24.1.tgz", + "integrity": "sha512-ossocTuPOssfxO2h+Z3/Ea1Vo1wWx31Uqy9vIiJusOP4TbF7tPs9U0sJ9pX9OJPf4lXRGj5+6Gkl/HHKiAP5ug==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-for-of": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-for-of/-/babel-plugin-transform-es2015-for-of-6.23.0.tgz", + "integrity": "sha512-DLuRwoygCoXx+YfxHLkVx5/NpeSbVwfoTeBykpJK7JhYWlL/O8hgAK/reforUnZDlxasOrVPPJVI/guE3dCwkw==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-function-name": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-function-name/-/babel-plugin-transform-es2015-function-name-6.24.1.tgz", + "integrity": "sha512-iFp5KIcorf11iBqu/y/a7DK3MN5di3pNCzto61FqCNnUX4qeBwcV1SLqe10oXNnCaxBUImX3SckX2/o1nsrTcg==", + "dev": true, + "requires": { + "babel-helper-function-name": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-literals/-/babel-plugin-transform-es2015-literals-6.22.0.tgz", + "integrity": "sha512-tjFl0cwMPpDYyoqYA9li1/7mGFit39XiNX5DKC/uCNjBctMxyL1/PT/l4rSlbvBG1pOKI88STRdUsWXB3/Q9hQ==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-modules-amd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-amd/-/babel-plugin-transform-es2015-modules-amd-6.24.1.tgz", + "integrity": "sha512-LnIIdGWIKdw7zwckqx+eGjcS8/cl8D74A3BpJbGjKTFFNJSMrjN4bIh22HY1AlkUbeLG6X6OZj56BDvWD+OeFA==", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-commonjs": { + "version": "6.26.2", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-commonjs/-/babel-plugin-transform-es2015-modules-commonjs-6.26.2.tgz", + "integrity": "sha512-CV9ROOHEdrjcwhIaJNBGMBCodN+1cfkwtM1SbUHmvyy35KGT7fohbpOxkE2uLz1o6odKK2Ck/tz47z+VqQfi9Q==", + "dev": true, + "requires": { + "babel-plugin-transform-strict-mode": "^6.24.1", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-types": "^6.26.0" + } + }, + "babel-plugin-transform-es2015-modules-systemjs": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-systemjs/-/babel-plugin-transform-es2015-modules-systemjs-6.24.1.tgz", + "integrity": "sha512-ONFIPsq8y4bls5PPsAWYXH/21Hqv64TBxdje0FvU3MhIV6QM2j5YS7KvAzg/nTIVLot2D2fmFQrFWCbgHlFEjg==", + "dev": true, + "requires": { + "babel-helper-hoist-variables": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-modules-umd": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-modules-umd/-/babel-plugin-transform-es2015-modules-umd-6.24.1.tgz", + "integrity": "sha512-LpVbiT9CLsuAIp3IG0tfbVo81QIhn6pE8xBJ7XSeCtFlMltuar5VuBV6y6Q45tpui9QWcy5i0vLQfCfrnF7Kiw==", + "dev": true, + "requires": { + "babel-plugin-transform-es2015-modules-amd": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-object-super": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-object-super/-/babel-plugin-transform-es2015-object-super-6.24.1.tgz", + "integrity": "sha512-8G5hpZMecb53vpD3mjs64NhI1au24TAmokQ4B+TBFBjN9cVoGoOvotdrMMRmHvVZUEvqGUPWL514woru1ChZMA==", + "dev": true, + "requires": { + "babel-helper-replace-supers": "^6.24.1", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-parameters": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-parameters/-/babel-plugin-transform-es2015-parameters-6.24.1.tgz", + "integrity": "sha512-8HxlW+BB5HqniD+nLkQ4xSAVq3bR/pcYW9IigY+2y0dI+Y7INFeTbfAQr+63T3E4UDsZGjyb+l9txUnABWxlOQ==", + "dev": true, + "requires": { + "babel-helper-call-delegate": "^6.24.1", + "babel-helper-get-function-arity": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-template": "^6.24.1", + "babel-traverse": "^6.24.1", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-shorthand-properties": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-shorthand-properties/-/babel-plugin-transform-es2015-shorthand-properties-6.24.1.tgz", + "integrity": "sha512-mDdocSfUVm1/7Jw/FIRNw9vPrBQNePy6wZJlR8HAUBLybNp1w/6lr6zZ2pjMShee65t/ybR5pT8ulkLzD1xwiw==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-spread": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-spread/-/babel-plugin-transform-es2015-spread-6.22.0.tgz", + "integrity": "sha512-3Ghhi26r4l3d0Js933E5+IhHwk0A1yiutj9gwvzmFbVV0sPMYk2lekhOufHBswX7NCoSeF4Xrl3sCIuSIa+zOg==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-sticky-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-sticky-regex/-/babel-plugin-transform-es2015-sticky-regex-6.24.1.tgz", + "integrity": "sha512-CYP359ADryTo3pCsH0oxRo/0yn6UsEZLqYohHmvLQdfS9xkf+MbCzE3/Kolw9OYIY4ZMilH25z/5CbQbwDD+lQ==", + "dev": true, + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-plugin-transform-es2015-template-literals": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-template-literals/-/babel-plugin-transform-es2015-template-literals-6.22.0.tgz", + "integrity": "sha512-x8b9W0ngnKzDMHimVtTfn5ryimars1ByTqsfBDwAqLibmuuQY6pgBQi5z1ErIsUOWBdw1bW9FSz5RZUojM4apg==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-typeof-symbol": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-typeof-symbol/-/babel-plugin-transform-es2015-typeof-symbol-6.23.0.tgz", + "integrity": "sha512-fz6J2Sf4gYN6gWgRZaoFXmq93X+Li/8vf+fb0sGDVtdeWvxC9y5/bTD7bvfWMEq6zetGEHpWjtzRGSugt5kNqw==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-es2015-unicode-regex": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-es2015-unicode-regex/-/babel-plugin-transform-es2015-unicode-regex-6.24.1.tgz", + "integrity": "sha512-v61Dbbihf5XxnYjtBN04B/JBvsScY37R1cZT5r9permN1cp+b70DY3Ib3fIkgn1DI9U3tGgBJZVD8p/mE/4JbQ==", + "dev": true, + "requires": { + "babel-helper-regex": "^6.24.1", + "babel-runtime": "^6.22.0", + "regexpu-core": "^2.0.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true + }, + "regexpu-core": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-2.0.0.tgz", + "integrity": "sha512-tJ9+S4oKjxY8IZ9jmjnp/mtytu1u3iyIQAfmI51IKWH6bFf7XR1ybtaO6j7INhZKXOTYADk7V5qxaqLkmNxiZQ==", + "dev": true, + "requires": { + "regenerate": "^1.2.1", + "regjsgen": "^0.2.0", + "regjsparser": "^0.1.4" + } + }, + "regjsgen": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.2.0.tgz", + "integrity": "sha512-x+Y3yA24uF68m5GA+tBjbGYo64xXVJpbToBaWCoSNSc1hdk6dfctaRWrNFTVJZIIhL5GxW8zwjoixbnifnK59g==", + "dev": true + }, + "regjsparser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.1.5.tgz", + "integrity": "sha512-jlQ9gYLfk2p3V5Ag5fYhA7fv7OHzd1KUH0PRP46xc3TgwjwgROIW572AfYg/X9kaNq/LJnu6oJcFRXlIrGoTRw==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + } + } + } + }, + "babel-plugin-transform-exponentiation-operator": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-exponentiation-operator/-/babel-plugin-transform-exponentiation-operator-6.24.1.tgz", + "integrity": "sha512-LzXDmbMkklvNhprr20//RStKVcT8Cu+SQtX18eMHLhjHf2yFzwtQ0S2f0jQ+89rokoNdmwoSqYzAhq86FxlLSQ==", + "dev": true, + "requires": { + "babel-helper-builder-binary-assignment-operator-visitor": "^6.24.1", + "babel-plugin-syntax-exponentiation-operator": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-flow-strip-types": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-strip-types/-/babel-plugin-transform-flow-strip-types-6.22.0.tgz", + "integrity": "sha512-TxIM0ZWNw9oYsoTthL3lvAK3+eTujzktoXJg4ubGvICGbVuXVYv5hHv0XXpz8fbqlJaGYY4q5SVzaSmsg3t4Fg==", + "dev": true, + "requires": { + "babel-plugin-syntax-flow": "^6.18.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-react-display-name": { + "version": "6.25.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-display-name/-/babel-plugin-transform-react-display-name-6.25.0.tgz", + "integrity": "sha512-QLYkLiZeeED2PKd4LuXGg5y9fCgPB5ohF8olWUuETE2ryHNRqqnXlEVP7RPuef89+HTfd3syptMGVHeoAu0Wig==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-react-jsx": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx/-/babel-plugin-transform-react-jsx-6.24.1.tgz", + "integrity": "sha512-s+q/Y2u2OgDPHRuod3t6zyLoV8pUHc64i/O7ZNgIOEdYTq+ChPeybcKBi/xk9VI60VriILzFPW+dUxAEbTxh2w==", + "dev": true, + "requires": { + "babel-helper-builder-react-jsx": "^6.24.1", + "babel-plugin-syntax-jsx": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-react-jsx-self": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-self/-/babel-plugin-transform-react-jsx-self-6.22.0.tgz", + "integrity": "sha512-Y3ZHP1nunv0U1+ysTNwLK39pabHj6cPVsfN4TRC7BDBfbgbyF4RifP5kd6LnbuMV9wcfedQMe7hn1fyKc7IzTQ==", + "dev": true, + "requires": { + "babel-plugin-syntax-jsx": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-react-jsx-source": { + "version": "6.22.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-react-jsx-source/-/babel-plugin-transform-react-jsx-source-6.22.0.tgz", + "integrity": "sha512-pcDNDsZ9q/6LJmujQ/OhjeoIlp5Nl546HJ2yiFIJK3mYpgNXhI5/S9mXfVxu5yqWAi7HdI7e/q6a9xtzwL69Vw==", + "dev": true, + "requires": { + "babel-plugin-syntax-jsx": "^6.8.0", + "babel-runtime": "^6.22.0" + } + }, + "babel-plugin-transform-regenerator": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-regenerator/-/babel-plugin-transform-regenerator-6.26.0.tgz", + "integrity": "sha512-LS+dBkUGlNR15/5WHKe/8Neawx663qttS6AGqoOUhICc9d1KciBvtrQSuc0PI+CxQ2Q/S1aKuJ+u64GtLdcEZg==", + "dev": true, + "requires": { + "regenerator-transform": "^0.10.0" + }, + "dependencies": { + "regenerator-transform": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.10.1.tgz", + "integrity": "sha512-PJepbvDbuK1xgIgnau7Y90cwaAmO/LCLMI2mPvaXq2heGMR3aWW5/BQvYrhJ8jgmQjXewXvBjzfqKcVOmhjZ6Q==", + "dev": true, + "requires": { + "babel-runtime": "^6.18.0", + "babel-types": "^6.19.0", + "private": "^0.1.6" + } + } + } + }, + "babel-plugin-transform-strict-mode": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-strict-mode/-/babel-plugin-transform-strict-mode-6.24.1.tgz", + "integrity": "sha512-j3KtSpjyLSJxNoCDrhwiJad8kw0gJ9REGj8/CqL0HeRyLnvUNYV9zcqluL6QJSXh3nfsLEmSLvwRfGzrgR96Pw==", + "dev": true, + "requires": { + "babel-runtime": "^6.22.0", + "babel-types": "^6.24.1" + } + }, + "babel-preset-env": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/babel-preset-env/-/babel-preset-env-1.7.0.tgz", + "integrity": "sha512-9OR2afuKDneX2/q2EurSftUYM0xGu4O2D9adAhVfADDhrYDaxXV0rBbevVYoY9n6nyX1PmQW/0jtpJvUNr9CHg==", + "dev": true, + "requires": { + "babel-plugin-check-es2015-constants": "^6.22.0", + "babel-plugin-syntax-trailing-function-commas": "^6.22.0", + "babel-plugin-transform-async-to-generator": "^6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoping": "^6.23.0", + "babel-plugin-transform-es2015-classes": "^6.23.0", + "babel-plugin-transform-es2015-computed-properties": "^6.22.0", + "babel-plugin-transform-es2015-destructuring": "^6.23.0", + "babel-plugin-transform-es2015-duplicate-keys": "^6.22.0", + "babel-plugin-transform-es2015-for-of": "^6.23.0", + "babel-plugin-transform-es2015-function-name": "^6.22.0", + "babel-plugin-transform-es2015-literals": "^6.22.0", + "babel-plugin-transform-es2015-modules-amd": "^6.22.0", + "babel-plugin-transform-es2015-modules-commonjs": "^6.23.0", + "babel-plugin-transform-es2015-modules-systemjs": "^6.23.0", + "babel-plugin-transform-es2015-modules-umd": "^6.23.0", + "babel-plugin-transform-es2015-object-super": "^6.22.0", + "babel-plugin-transform-es2015-parameters": "^6.23.0", + "babel-plugin-transform-es2015-shorthand-properties": "^6.22.0", + "babel-plugin-transform-es2015-spread": "^6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "^6.22.0", + "babel-plugin-transform-es2015-template-literals": "^6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "^6.23.0", + "babel-plugin-transform-es2015-unicode-regex": "^6.22.0", + "babel-plugin-transform-exponentiation-operator": "^6.22.0", + "babel-plugin-transform-regenerator": "^6.22.0", + "browserslist": "^3.2.6", + "invariant": "^2.2.2", + "semver": "^5.3.0" + }, + "dependencies": { + "browserslist": { + "version": "3.2.8", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-3.2.8.tgz", + "integrity": "sha512-WHVocJYavUwVgVViC0ORikPHQquXwVh939TaelZ4WDqpWgTX/FsGhl/+P4qBUAGcRvtOgDgC+xftNWWp2RUTAQ==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30000844", + "electron-to-chromium": "^1.3.47" + } + } + } + }, + "babel-preset-es2015": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-es2015/-/babel-preset-es2015-6.24.1.tgz", + "integrity": "sha512-XfwUqG1Ry6R43m4Wfob+vHbIVBIqTg/TJY4Snku1iIzeH7mUnwHA8Vagmv+ZQbPwhS8HgsdQvy28Py3k5zpoFQ==", + "dev": true, + "requires": { + "babel-plugin-check-es2015-constants": "^6.22.0", + "babel-plugin-transform-es2015-arrow-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoped-functions": "^6.22.0", + "babel-plugin-transform-es2015-block-scoping": "^6.24.1", + "babel-plugin-transform-es2015-classes": "^6.24.1", + "babel-plugin-transform-es2015-computed-properties": "^6.24.1", + "babel-plugin-transform-es2015-destructuring": "^6.22.0", + "babel-plugin-transform-es2015-duplicate-keys": "^6.24.1", + "babel-plugin-transform-es2015-for-of": "^6.22.0", + "babel-plugin-transform-es2015-function-name": "^6.24.1", + "babel-plugin-transform-es2015-literals": "^6.22.0", + "babel-plugin-transform-es2015-modules-amd": "^6.24.1", + "babel-plugin-transform-es2015-modules-commonjs": "^6.24.1", + "babel-plugin-transform-es2015-modules-systemjs": "^6.24.1", + "babel-plugin-transform-es2015-modules-umd": "^6.24.1", + "babel-plugin-transform-es2015-object-super": "^6.24.1", + "babel-plugin-transform-es2015-parameters": "^6.24.1", + "babel-plugin-transform-es2015-shorthand-properties": "^6.24.1", + "babel-plugin-transform-es2015-spread": "^6.22.0", + "babel-plugin-transform-es2015-sticky-regex": "^6.24.1", + "babel-plugin-transform-es2015-template-literals": "^6.22.0", + "babel-plugin-transform-es2015-typeof-symbol": "^6.22.0", + "babel-plugin-transform-es2015-unicode-regex": "^6.24.1", + "babel-plugin-transform-regenerator": "^6.24.1" + } + }, + "babel-preset-es2015-rollup": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/babel-preset-es2015-rollup/-/babel-preset-es2015-rollup-3.0.0.tgz", + "integrity": "sha512-BNYsMpqTFKsEsLOK9lrgffn/PcA90Zgvga0EuehojUcGi2aL+URxZYyi7cKpUUyO3OOa2yILlY4aNZ5HfxlrCQ==", + "dev": true, + "requires": { + "babel-plugin-external-helpers": "^6.18.0", + "babel-preset-es2015": "^6.3.13", + "require-relative": "^0.8.7" + } + }, + "babel-preset-flow": { + "version": "6.23.0", + "resolved": "https://registry.npmjs.org/babel-preset-flow/-/babel-preset-flow-6.23.0.tgz", + "integrity": "sha512-PQZFJXnM3d80Vq4O67OE6EMVKIw2Vmzy8UXovqulNogCtblWU8rzP7Sm5YgHiCg4uejUxzCkHfNXQ4Z6GI+Dhw==", + "dev": true, + "requires": { + "babel-plugin-transform-flow-strip-types": "^6.22.0" + } + }, + "babel-preset-jest": { + "version": "23.2.0", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-23.2.0.tgz", + "integrity": "sha512-AdfWwc0PYvDtwr009yyVNh72Ev68os7SsPmOFVX7zSA+STXuk5CV2iMVazZU01bEoHCSwTkgv4E4HOOcODPkPg==", + "dev": true, + "requires": { + "babel-plugin-jest-hoist": "^23.2.0", + "babel-plugin-syntax-object-rest-spread": "^6.13.0" + } + }, + "babel-preset-react": { + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/babel-preset-react/-/babel-preset-react-6.24.1.tgz", + "integrity": "sha512-phQe3bElbgF887UM0Dhz55d22ob8czTL1kbhZFwpCE6+R/X9kHktfwmx9JZb+bBSVRGphP5tZ9oWhVhlgjrX3Q==", + "dev": true, + "requires": { + "babel-plugin-syntax-jsx": "^6.3.13", + "babel-plugin-transform-react-display-name": "^6.23.0", + "babel-plugin-transform-react-jsx": "^6.24.1", + "babel-plugin-transform-react-jsx-self": "^6.22.0", + "babel-plugin-transform-react-jsx-source": "^6.22.0", + "babel-preset-flow": "^6.23.0" + } + }, + "babel-register": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-register/-/babel-register-6.26.0.tgz", + "integrity": "sha512-veliHlHX06wjaeY8xNITbveXSiI+ASFnOqvne/LaIJIqOWi2Ogmj91KOugEz/hoh/fwMhXNBJPCv8Xaz5CyM4A==", + "dev": true, + "requires": { + "babel-core": "^6.26.0", + "babel-runtime": "^6.26.0", + "core-js": "^2.5.0", + "home-or-tmp": "^2.0.0", + "lodash": "^4.17.4", + "mkdirp": "^0.5.1", + "source-map-support": "^0.4.15" + }, + "dependencies": { + "babel-core": { + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==", + "dev": true + } + } + }, + "babel-runtime": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-runtime/-/babel-runtime-6.26.0.tgz", + "integrity": "sha512-ITKNuq2wKlW1fJg9sSW52eepoYgZBggvOAHC0u/CYu/qxQ9EVzThCgR69BnSXLHjy2f7SY5zaQ4yt7H9ZVxY2g==", + "dev": true, + "requires": { + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" + }, + "dependencies": { + "regenerator-runtime": { + "version": "0.11.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.11.1.tgz", + "integrity": "sha512-MguG95oij0fC3QV3URf4V2SDYGJhJnJGqvIIgdECeODCT98wSWDAJ94SSuVpYQUoTcGUIL6L4yNB7j1DFFHSBg==", + "dev": true + } + } + }, + "babel-template": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-template/-/babel-template-6.26.0.tgz", + "integrity": "sha512-PCOcLFW7/eazGUKIoqH97sO9A2UYMahsn/yRQ7uOk37iutwjq7ODtcTNF+iFDSHNfkctqsLRjLP7URnOx0T1fg==", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" + } + }, + "babel-traverse": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-traverse/-/babel-traverse-6.26.0.tgz", + "integrity": "sha512-iSxeXx7apsjCHe9c7n8VtRXGzI2Bk1rBSOJgCCjfyXb6v1aCqE1KSEpq/8SXuVN8Ka/Rh1WDTF0MDzkvTA4MIA==", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "globals": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-9.18.0.tgz", + "integrity": "sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "babel-types": { + "version": "6.26.0", + "resolved": "https://registry.npmjs.org/babel-types/-/babel-types-6.26.0.tgz", + "integrity": "sha512-zhe3V/26rCWsEZK8kZN+HaQj5yQ1CilTObixFzKW1UWjqG7618Twz6YEsCnjfg5gBcJh02DrpCkS9h98ZqDY+g==", + "dev": true, + "requires": { + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" + }, + "dependencies": { + "to-fast-properties": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-1.0.3.tgz", + "integrity": "sha512-lxrWP8ejsq+7E3nNjwYmUBMAgjMTZoTI+sdBOpvNyijeDLa29LUn9QaoXAHv4+Z578hbmHHJKZknzxVtvo77og==", + "dev": true + } + } + }, + "babylon": { + "version": "6.18.0", + "resolved": "https://registry.npmjs.org/babylon/-/babylon-6.18.0.tgz", + "integrity": "sha512-q/UEjfGJ2Cm3oKV71DJz9d25TPnq5rhBVL2Q4fA5wcC3jcrdn7+SssEybFIxwAvvP+YCsCYNKughoF33GxgycQ==", + "dev": true + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } + } + }, + "base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "dev": true + }, + "batch": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "dev": true + }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "optional": true, + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "bl": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/bl/-/bl-0.8.2.tgz", + "integrity": "sha512-pfqikmByp+lifZCS0p6j6KreV6kNU6Apzpm2nKOk+94cZb/jvle55+JxWiByUQ0Wo/+XnDXEy5MxxKMb6r0VIw==", + "dev": true, + "requires": { + "readable-stream": "~1.0.26" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "dev": true + } + } + }, + "block-stream": { + "version": "0.0.9", + "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz", + "integrity": "sha512-OorbnJVPII4DuUKbjARAe8u8EfqOmkEEaSFIyoQ7OjTHn6kafxWl0wLgoZ2rXaYd7MyLcDaU4TmhfxtwgcccMQ==", + "dev": true, + "requires": { + "inherits": "~2.0.0" + } + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "dev": true + }, + "browser-process-hrtime": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", + "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", + "dev": true + }, + "browser-resolve": { + "version": "1.11.3", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", + "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", + "dev": true, + "requires": { + "resolve": "1.1.7" + }, + "dependencies": { + "resolve": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==", + "dev": true + } + } + }, + "browser-sync": { + "version": "2.27.11", + "resolved": "https://registry.npmjs.org/browser-sync/-/browser-sync-2.27.11.tgz", + "integrity": "sha512-U5f9u97OYJH66T0MGWWzG9rOQTW6ZmDMj97vsmtqwNS03JAwdLVES8eel2lD3rvAqQCNAFqaJ74NMacBI57vJg==", + "dev": true, + "requires": { + "browser-sync-client": "^2.27.11", + "browser-sync-ui": "^2.27.11", + "bs-recipes": "1.3.4", + "bs-snippet-injector": "^2.0.1", + "chokidar": "^3.5.1", + "connect": "3.6.6", + "connect-history-api-fallback": "^1", + "dev-ip": "^1.0.1", + "easy-extender": "^2.3.4", + "eazy-logger": "3.1.0", + "etag": "^1.8.1", + "fresh": "^0.5.2", + "fs-extra": "3.0.1", + "http-proxy": "^1.18.1", + "immutable": "^3", + "localtunnel": "^2.0.1", + "micromatch": "^4.0.2", + "opn": "5.3.0", + "portscanner": "2.2.0", + "qs": "^6.11.0", + "raw-body": "^2.3.2", + "resp-modifier": "6.0.2", + "rx": "4.1.0", + "send": "0.16.2", + "serve-index": "1.9.1", + "serve-static": "1.13.2", + "server-destroy": "1.0.1", + "socket.io": "^4.4.1", + "ua-parser-js": "1.0.2", + "yargs": "^17.3.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "dev": true, + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "qs": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", + "dev": true, + "requires": { + "side-channel": "^1.0.4" + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yargs": { + "version": "17.6.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.6.2.tgz", + "integrity": "sha512-1/9UrdHjDZc0eOU0HxOHoS78C69UD3JRMvzlJ7S79S2nTaWRA/whGCTV8o9e/N/1Va9YIV7Q4sOxD8VV4pCWOw==", + "dev": true, + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true + } + } + }, + "browser-sync-client": { + "version": "2.27.11", + "resolved": "https://registry.npmjs.org/browser-sync-client/-/browser-sync-client-2.27.11.tgz", + "integrity": "sha512-okMNfD2NasL/XD1/BclP3onXjhahisk3e/kTQ5HPDT/lLqdBqNDd6QFcjI5I1ak7na2hxKQSLjryql+7fp5gKQ==", + "dev": true, + "requires": { + "etag": "1.8.1", + "fresh": "0.5.2", + "mitt": "^1.1.3", + "rxjs": "^5.5.6", + "typescript": "^4.6.2" + } + }, + "browser-sync-ui": { + "version": "2.27.11", + "resolved": "https://registry.npmjs.org/browser-sync-ui/-/browser-sync-ui-2.27.11.tgz", + "integrity": "sha512-1T/Y8Pp1R68aUL7zVSFq0nxtr258xWd/nTasCAHX2M6EsGaswVOFtXsw3bKqsr35z+J+LfVfOdz1HFLYKxdgrA==", + "dev": true, + "requires": { + "async-each-series": "0.1.1", + "connect-history-api-fallback": "^1", + "immutable": "^3", + "server-destroy": "1.0.1", + "socket.io-client": "^4.4.1", + "stream-throttle": "^0.1.3" + } + }, + "browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", + "dev": true, + "requires": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "browserify-cipher": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/browserify-cipher/-/browserify-cipher-1.0.1.tgz", + "integrity": "sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==", + "dev": true, + "requires": { + "browserify-aes": "^1.0.4", + "browserify-des": "^1.0.0", + "evp_bytestokey": "^1.0.0" + } + }, + "browserify-des": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/browserify-des/-/browserify-des-1.0.2.tgz", + "integrity": "sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "des.js": "^1.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "browserify-fs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/browserify-fs/-/browserify-fs-1.0.0.tgz", + "integrity": "sha512-8LqHRPuAEKvyTX34R6tsw4bO2ro6j9DmlYBhiYWHRM26Zv2cBw1fJOU0NeUQ0RkXkPn/PFBjhA0dm4AgaBurTg==", + "dev": true, + "requires": { + "level-filesystem": "^1.0.1", + "level-js": "^2.1.3", + "levelup": "^0.18.2" + } + }, + "browserify-rsa": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/browserify-rsa/-/browserify-rsa-4.1.0.tgz", + "integrity": "sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==", + "dev": true, + "requires": { + "bn.js": "^5.0.0", + "randombytes": "^2.0.1" + } + }, + "browserify-sign": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/browserify-sign/-/browserify-sign-4.2.1.tgz", + "integrity": "sha512-/vrA5fguVAKKAVTNJjgSm1tRQDHUU6DbwO9IROu/0WAzC8PKhucDSh18J0RMvVeHAn5puMd+QHC2erPRNf8lmg==", + "dev": true, + "requires": { + "bn.js": "^5.1.1", + "browserify-rsa": "^4.0.1", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "elliptic": "^6.5.3", + "inherits": "^2.0.4", + "parse-asn1": "^5.1.5", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "browserslist": { + "version": "4.21.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.21.5.tgz", + "integrity": "sha512-tUkiguQGW7S3IhB7N+c2MV/HZPSCPAAiYBZXLsBhFB/PCy6ZKKsZrmBayHV9fdGV/ARIfJ14NkxKzRDjvp7L6w==", + "dev": true, + "requires": { + "caniuse-lite": "^1.0.30001449", + "electron-to-chromium": "^1.4.284", + "node-releases": "^2.0.8", + "update-browserslist-db": "^1.0.10" + } + }, + "bs-recipes": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/bs-recipes/-/bs-recipes-1.3.4.tgz", + "integrity": "sha512-BXvDkqhDNxXEjeGM8LFkSbR+jzmP/CYpCiVKYn+soB1dDldeU15EBNDkwVXndKuX35wnNUaPd0qSoQEAkmQtMw==", + "dev": true + }, + "bs-snippet-injector": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/bs-snippet-injector/-/bs-snippet-injector-2.0.1.tgz", + "integrity": "sha512-4u8IgB+L9L+S5hknOj3ddNSb42436gsnGm1AuM15B7CdbkpQTyVWgIM5/JUBiKiRwGOR86uo0Lu/OsX+SAlJmw==", + "dev": true + }, + "bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "requires": { + "node-int64": "^0.4.0" + } + }, + "buffer-es6": { + "version": "4.9.3", + "resolved": "https://registry.npmjs.org/buffer-es6/-/buffer-es6-4.9.3.tgz", + "integrity": "sha512-Ibt+oXxhmeYJSsCkODPqNpPmyegefiD8rfutH1NYGhMZQhSp95Rz7haemgnJ6dxa6LT+JLLbtgOMORRluwKktw==", + "dev": true + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "dev": true + }, + "builtin-modules": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-2.0.0.tgz", + "integrity": "sha512-3U5kUA5VPsRUA3nofm/BXX7GVHKfxz0hOBAPxXrIvHzlDRkQVqEn6yi8QJegxl4LzOHLdvb7XF5dVawa/VVYBg==", + "dev": true + }, + "bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "dev": true + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + } + } + }, + "call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + } + }, + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", + "dev": true + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha512-FxAv7HpHrXbh3aPo4o2qxHay2lkLY3x5Mw3KeE4KQE8ysVfziWeRZDwcjauvwBSGEC/nXUPzZy8zeh4HokqOnw==", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha512-bA/Z/DERHKqoEOrp+qeGKw1QlvEQkGZSc0XaY6VnTxZr+Kv1G5zFwttpjv8qxZ/sBPT4nthwZaAcsAZTJlSKXQ==", + "dev": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha512-DLIsRzJVBQu72meAKPkWQOLcujdXT32hwdfnkI1frSiSRMK1MofjKHf+MEx0SB6fjEFXL8fBDv1dKymBlOp4Qw==", + "dev": true + } + } + }, + "caniuse-api": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-1.6.1.tgz", + "integrity": "sha512-SBTl70K0PkDUIebbkXrxWqZlHNs0wRgRD6QZ8guctShjbh63gEPfF+Wj0Yw+75f5Y8tSzqAI/NcisYv/cCah2Q==", + "dev": true, + "requires": { + "browserslist": "^1.3.6", + "caniuse-db": "^1.0.30000529", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + }, + "dependencies": { + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha512-qHJblDE2bXVRYzuDetv/wAeHOJyO97+9wxC1cdCtyzgNuSozOyRCiiLaCR1f71AN66lQdVVBipWm63V+a7bPOw==", + "dev": true, + "requires": { + "caniuse-db": "^1.0.30000639", + "electron-to-chromium": "^1.2.7" + } + } + } + }, + "caniuse-db": { + "version": "1.0.30001450", + "resolved": "https://registry.npmjs.org/caniuse-db/-/caniuse-db-1.0.30001450.tgz", + "integrity": "sha512-HqXvh7yrdHTNLVaXu9t/8lkG49xXe97jD6zWvbnT6aQBGPl1I5ukZbSAlOLjJ6/hV8BduRMl1eR6ggNi/O0hTA==", + "dev": true + }, + "caniuse-lite": { + "version": "1.0.30001450", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001450.tgz", + "integrity": "sha512-qMBmvmQmFXaSxexkjjfMvD5rnDL0+m+dUMZKoDYsGG8iZN29RuYh9eRoMvKsT6uMAWlyUUGDEQGJJYjzCIO9ew==", + "dev": true + }, + "capture-exit": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-1.2.0.tgz", + "integrity": "sha512-IS4lTgp57lUcpXzyCaiUQcRZBxZAkzl+jNXrMUXZjdnr2yujpKUMG9OYeYL29i6fL66ihypvVJ/MeX0B+9pWOg==", + "dev": true, + "requires": { + "rsvp": "^3.3.3" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==", + "dev": true + }, + "catharsis": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/catharsis/-/catharsis-0.9.0.tgz", + "integrity": "sha512-prMTQVpcns/tzFgFVkVp6ak6RykZyWb3gu8ckUpd6YkTlacOd3DXGJjIpD4Q6zJirizvaiAjSSHlOsA+6sNh2A==", + "dev": true, + "requires": { + "lodash": "^4.17.15" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "ci-info": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-1.6.0.tgz", + "integrity": "sha512-vsGdkwSCDpWmP80ncATX7iea5DWQemg1UgCW5J8tqjU3lYw4FBYuj89J0CTVomA7BEfvSZd84GmHko+MxFQU2A==", + "dev": true + }, + "cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "clap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/clap/-/clap-1.2.3.tgz", + "integrity": "sha512-4CoL/A3hf90V3VIEjeuhSvlGFEHKzOz+Wfc2IVZc+FaUgU0ZQafJTP49fvnULipOPcAfqhyI2duwQyns6xqjYA==", + "dev": true, + "requires": { + "chalk": "^1.1.3" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + } + } + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "dev": true + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "clone": { + "version": "0.1.19", + "resolved": "https://registry.npmjs.org/clone/-/clone-0.1.19.tgz", + "integrity": "sha512-IO78I0y6JcSpEPHzK4obKdsL7E7oLdRVDVOLwr2Hkbjsb+Eoz0dxW6tef0WizoKu0gLC4oZSZuEF4U2K6w1WQw==", + "dev": true + }, + "co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true + }, + "coa": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/coa/-/coa-1.0.4.tgz", + "integrity": "sha512-KAGck/eNAmCL0dcT3BiuYwLbExK6lduR8DxM3C1TyDzaXhZHyZ8ooX5I5+na2e3dPFuibfxrGdorr0/Lr7RYCQ==", + "dev": true, + "requires": { + "q": "^1.1.2" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color": { + "version": "0.11.4", + "resolved": "https://registry.npmjs.org/color/-/color-0.11.4.tgz", + "integrity": "sha512-Ajpjd8asqZ6EdxQeqGzU5WBhhTfJ/0cA4Wlbre7e5vXfmDSmda7Ov6jeKoru+b0vHcb1CqvuroTHp5zIWzhVMA==", + "dev": true, + "requires": { + "clone": "^1.0.2", + "color-convert": "^1.3.0", + "color-string": "^0.3.0" + }, + "dependencies": { + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true + } + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "color-string": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-0.3.0.tgz", + "integrity": "sha512-sz29j1bmSDfoAxKIEU6zwoIZXN6BrFbAMIhfYCNyiZXBDuU/aiHlN84lp/xDzL2ubyFhLDobHIlU1X70XRrMDA==", + "dev": true, + "requires": { + "color-name": "^1.0.0" + } + }, + "colormin": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colormin/-/colormin-1.1.2.tgz", + "integrity": "sha512-XSEQUUQUR/lXqGyddiNH3XYFUPYlYr1vXy9rTFMsSOw+J7Q6EQkdlQIrTlYn4TccpsOaUE1PYQNjBn20gwCdgQ==", + "dev": true, + "requires": { + "color": "^0.11.0", + "css-color-names": "0.0.4", + "has": "^1.0.1" + } + }, + "colors": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/colors/-/colors-1.1.2.tgz", + "integrity": "sha512-ENwblkFQpqqia6b++zLD/KUWafYlVY/UNnAp7oz7LY7E924wmpye416wBOmvv/HMWzl8gL1kJlfvId/1Dg176w==", + "dev": true + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "concat-with-sourcemaps": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz", + "integrity": "sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==", + "dev": true, + "requires": { + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "connect": { + "version": "3.6.6", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.6.6.tgz", + "integrity": "sha512-OO7axMmPpu/2XuX1+2Yrg0ddju31B6xLZMWkJ5rYBu4YRmRVlOjvlY6kw2FJKiAzyxGwnrDUAG4s1Pf0sbBMCQ==", + "dev": true, + "requires": { + "debug": "2.6.9", + "finalhandler": "1.1.0", + "parseurl": "~1.3.2", + "utils-merge": "1.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "connect-history-api-fallback": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-1.6.0.tgz", + "integrity": "sha512-e54B99q/OUoH64zYYRf3HBP5z24G38h5D3qXu23JGRoigpX5Ss4r9ZnDk3g0Z8uQC2x2lPaJ+UlWBc1ZWBWdLg==", + "dev": true + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true + }, + "convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true + }, + "cookie": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.2.tgz", + "integrity": "sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==", + "dev": true + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==", + "dev": true + }, + "core-js": { + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.12.tgz", + "integrity": "sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==", + "dev": true + }, + "core-js-compat": { + "version": "3.27.2", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.27.2.tgz", + "integrity": "sha512-welaYuF7ZtbYKGrIy7y3eb40d37rG1FvzEOfe7hSLd2iD6duMDqUhRfSvCGyC46HhR6Y8JXXdZ2lnRUMkPBpvg==", + "dev": true, + "requires": { + "browserslist": "^4.21.4" + } + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==", + "dev": true + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dev": true, + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "cosmiconfig": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-2.2.2.tgz", + "integrity": "sha512-GiNXLwAFPYHy25XmTPpafYvn3CLAkJ8FLsscq78MQd1Kh0OU6Yzhn4eV2MVF4G9WEQZoWEGltatdR+ntGPMl5A==", + "dev": true, + "requires": { + "is-directory": "^0.3.1", + "js-yaml": "^3.4.3", + "minimist": "^1.2.0", + "object-assign": "^4.1.0", + "os-homedir": "^1.0.1", + "parse-json": "^2.2.0", + "require-from-string": "^1.1.0" + } + }, + "create-ecdh": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/create-ecdh/-/create-ecdh-4.0.4.tgz", + "integrity": "sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "elliptic": "^6.5.3" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" + } + }, + "create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", + "dev": true, + "requires": { + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "crypto-browserify": { + "version": "3.12.0", + "resolved": "https://registry.npmjs.org/crypto-browserify/-/crypto-browserify-3.12.0.tgz", + "integrity": "sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==", + "dev": true, + "requires": { + "browserify-cipher": "^1.0.0", + "browserify-sign": "^4.0.0", + "create-ecdh": "^4.0.0", + "create-hash": "^1.1.0", + "create-hmac": "^1.1.0", + "diffie-hellman": "^5.0.0", + "inherits": "^2.0.1", + "pbkdf2": "^3.0.3", + "public-encrypt": "^4.0.0", + "randombytes": "^2.0.0", + "randomfill": "^1.0.3" + } + }, + "css-color-names": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/css-color-names/-/css-color-names-0.0.4.tgz", + "integrity": "sha512-zj5D7X1U2h2zsXOAM8EyUREBnnts6H+Jm+d1M2DbiQQcUtnqgQsMrdo8JW9R80YFUmIdBZeMu5wvYM7hcgWP/Q==", + "dev": true + }, + "css-modules-loader-core": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/css-modules-loader-core/-/css-modules-loader-core-1.1.0.tgz", + "integrity": "sha512-XWOBwgy5nwBn76aA+6ybUGL/3JBnCtBX9Ay9/OWIpzKYWlVHMazvJ+WtHumfi+xxdPF440cWK7JCYtt8xDifew==", + "dev": true, + "requires": { + "icss-replace-symbols": "1.1.0", + "postcss": "6.0.1", + "postcss-modules-extract-imports": "1.1.0", + "postcss-modules-local-by-default": "1.2.0", + "postcss-modules-scope": "1.1.0", + "postcss-modules-values": "1.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.1.tgz", + "integrity": "sha512-VbGX1LQgQbf9l3cZ3qbUuC3hGqIEOGQFHAEHQ/Diaeo0yLgpgK5Rb8J+OcamIfQ9PbAU/fzBjVtQX3AhJHUvZw==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "css-selector-tokenizer": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.7.3.tgz", + "integrity": "sha512-jWQv3oCEL5kMErj4wRnK/OPoBi0D+P1FR2cDCKYPaMeD2eW3/mttav8HT4hT1CKopiJI/psEULjkClhvJo4Lvg==", + "dev": true, + "requires": { + "cssesc": "^3.0.0", + "fastparse": "^1.1.2" + } + }, + "cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true + }, + "cssnano": { + "version": "3.10.0", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-3.10.0.tgz", + "integrity": "sha512-0o0IMQE0Ezo4b41Yrm8U6Rp9/Ag81vNXY1gZMnT1XhO4DpjEf2utKERqWJbOoz3g1Wdc1d3QSta/cIuJ1wSTEg==", + "dev": true, + "requires": { + "autoprefixer": "^6.3.1", + "decamelize": "^1.1.2", + "defined": "^1.0.0", + "has": "^1.0.1", + "object-assign": "^4.0.1", + "postcss": "^5.0.14", + "postcss-calc": "^5.2.0", + "postcss-colormin": "^2.1.8", + "postcss-convert-values": "^2.3.4", + "postcss-discard-comments": "^2.0.4", + "postcss-discard-duplicates": "^2.0.1", + "postcss-discard-empty": "^2.0.1", + "postcss-discard-overridden": "^0.1.1", + "postcss-discard-unused": "^2.2.1", + "postcss-filter-plugins": "^2.0.0", + "postcss-merge-idents": "^2.1.5", + "postcss-merge-longhand": "^2.0.1", + "postcss-merge-rules": "^2.0.3", + "postcss-minify-font-values": "^1.0.2", + "postcss-minify-gradients": "^1.0.1", + "postcss-minify-params": "^1.0.4", + "postcss-minify-selectors": "^2.0.4", + "postcss-normalize-charset": "^1.1.0", + "postcss-normalize-url": "^3.0.7", + "postcss-ordered-values": "^2.1.0", + "postcss-reduce-idents": "^2.2.2", + "postcss-reduce-initial": "^1.0.0", + "postcss-reduce-transforms": "^1.0.3", + "postcss-svgo": "^2.1.1", + "postcss-unique-selectors": "^2.0.2", + "postcss-value-parser": "^3.2.3", + "postcss-zindex": "^2.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "csso": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/csso/-/csso-2.3.2.tgz", + "integrity": "sha512-FmCI/hmqDeHHLaIQckMhMZneS84yzUZdrWDAvJVVxOwcKE1P1LF9FGmzr1ktIQSxOw6fl3PaQsmfg+GN+VvR3w==", + "dev": true, + "requires": { + "clap": "^1.0.9", + "source-map": "^0.5.3" + } + }, + "cssom": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", + "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", + "dev": true + }, + "cssstyle": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-1.4.0.tgz", + "integrity": "sha512-GBrLZYZ4X4x6/QEoBnIrqb8B/f5l4+8me2dkom/j1Gtbxy0kBv6OGzKuAsGM75bkGwGAFkt56Iwg28S3XTZgSA==", + "dev": true, + "requires": { + "cssom": "0.3.x" + } + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==", + "dev": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "data-urls": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-1.1.0.tgz", + "integrity": "sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "whatwg-mimetype": "^2.2.0", + "whatwg-url": "^7.0.0" + }, + "dependencies": { + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + } + } + }, + "date-time": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/date-time/-/date-time-2.1.0.tgz", + "integrity": "sha512-/9+C44X7lot0IeiyfgJmETtRMhBidBYM2QFFIkGa0U1k+hSyY87Nw7PY3eDqpvCBm7I3WCSfPeZskW/YYq6m4g==", + "dev": true, + "requires": { + "time-zone": "^1.0.0" + } + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true + }, + "decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "dev": true + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "default-require-extensions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-1.0.0.tgz", + "integrity": "sha512-Dn2eAftOqXhNXs5f/Xjn7QTZ6kDYkx7u0EXQInN1oyYwsZysu11q7oTtaKcbzLxZRJiDHa8VmwpWmb4lY5FqgA==", + "dev": true, + "requires": { + "strip-bom": "^2.0.0" + } + }, + "deferred-leveldown": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-0.2.0.tgz", + "integrity": "sha512-+WCbb4+ez/SZ77Sdy1iadagFiVzMB89IKOBhglgnUkVxOxRWmmFsz8UDSNWh4Rhq+3wr/vMFlYj+rdEwWUDdng==", + "dev": true, + "requires": { + "abstract-leveldown": "~0.12.1" + } + }, + "define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "dev": true, + "requires": { + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } + } + }, + "defined": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz", + "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==", + "dev": true + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true + }, + "depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true + }, + "des.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.0.1.tgz", + "integrity": "sha512-Q0I4pfFrv2VPd34/vfLrFOoRmlYj3OV50i7fskps1jZWK1kApMWWT9G6RRUeYedLcBDIhnSDaUvJMb3AhUlaEA==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha512-3NdhDuEXnfun/z7x9GOElY49LoqVHoGScmOKwmxhsS8N5Y+Z8KyPPDnaSzqWgYt/ji4mqwfTS34Htrk0zPIXVg==", + "dev": true + }, + "detect-indent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-4.0.0.tgz", + "integrity": "sha512-BDKtmHlOzwI7iRuEkhzsnPoi5ypEhWAJB5RvHWe1kMr06js3uK5B3734i3ui5Yd+wOJV1cpE4JnivPD283GU/A==", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "detect-newline": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-2.1.0.tgz", + "integrity": "sha512-CwffZFvlJffUg9zZA0uqrjQayUTC8ob94pnr5sFwaVv3IOmkfUHcWH+jXaQK3askE51Cqe8/9Ql/0uXNwqZ8Zg==", + "dev": true + }, + "dev-ip": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dev-ip/-/dev-ip-1.0.1.tgz", + "integrity": "sha512-LmVkry/oDShEgSZPNgqCIp2/TlqtExeGmymru3uCELnfyjY11IzpAproLYs+1X88fXO6DBoYP3ul2Xo2yz2j6A==", + "dev": true + }, + "diff": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-3.5.0.tgz", + "integrity": "sha512-A46qtFgd+g7pDZinpnwiRJtxbC1hpgf0uzP3iG89scHk0AUC7A1TGxf5OiiOUv/JMZR8GOt8hL900hV0bOy5xA==", + "dev": true + }, + "diffie-hellman": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/diffie-hellman/-/diffie-hellman-5.0.3.tgz", + "integrity": "sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "miller-rabin": "^4.0.0", + "randombytes": "^2.0.0" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", + "dev": true + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "domexception": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/domexception/-/domexception-1.0.1.tgz", + "integrity": "sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug==", + "dev": true, + "requires": { + "webidl-conversions": "^4.0.2" + } + }, + "easy-extender": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/easy-extender/-/easy-extender-2.3.4.tgz", + "integrity": "sha512-8cAwm6md1YTiPpOvDULYJL4ZS6WfM5/cTeVVh4JsvyYZAoqlRVUpHL9Gr5Fy7HA6xcSZicUia3DeAgO3Us8E+Q==", + "dev": true, + "requires": { + "lodash": "^4.17.10" + } + }, + "eazy-logger": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/eazy-logger/-/eazy-logger-3.1.0.tgz", + "integrity": "sha512-/snsn2JqBtUSSstEl4R0RKjkisGHAhvYj89i7r3ytNUKW12y178KDZwXLXIgwDqLW6E/VRMT9qfld7wvFae8bQ==", + "dev": true, + "requires": { + "tfunk": "^4.0.0" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true + }, + "electron-to-chromium": { + "version": "1.4.284", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.284.tgz", + "integrity": "sha512-M8WEXFuKXMYMVr45fo8mq0wUrrJHheiKZf6BArTKk9ZBYCKJEOU5H8cdWgDT+qCVZf7Na4lVUaZsA+h6uA9+PA==", + "dev": true + }, + "elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", + "dev": true, + "requires": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "dev": true + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "dev": true + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "engine.io": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.2.1.tgz", + "integrity": "sha512-ECceEFcAaNRybd3lsGQKas3ZlMVjN3cyWwMP25D2i0zWfyiytVbTpRPa34qrr+FHddtpBVOmq4H/DCv1O0lZRA==", + "dev": true, + "requires": { + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.0.3", + "ws": "~8.2.3" + }, + "dependencies": { + "ws": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "dev": true + } + } + }, + "engine.io-client": { + "version": "6.2.3", + "resolved": "https://registry.npmjs.org/engine.io-client/-/engine.io-client-6.2.3.tgz", + "integrity": "sha512-aXPtgF1JS3RuuKcpSrBtimSjYvrbhKW9froICH4s0F3XQWLxsKNxqzG39nnvQZQnva4CMvUK63T7shevxRyYHw==", + "dev": true, + "requires": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1", + "engine.io-parser": "~5.0.3", + "ws": "~8.2.3", + "xmlhttprequest-ssl": "~2.0.0" + }, + "dependencies": { + "ws": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "dev": true + } + } + }, + "engine.io-parser": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.6.tgz", + "integrity": "sha512-tjuoZDMAdEhVnSFleYPCtdL2GXwVTGtNjoeJd9IhIG3C1xs9uwxqRNEu5WpnDZCaozwVlK/nuQhpodhXSIMaxw==", + "dev": true + }, + "entities": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.1.0.tgz", + "integrity": "sha512-hCx1oky9PFrJ611mf0ifBLBRW8lUUVRlFolb5gWRfIELabBlbp9xZvrqZLZAs+NxFnbfQoeGd8wDkygjg7U85w==", + "dev": true + }, + "errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", + "dev": true, + "requires": { + "prr": "~1.0.1" + } + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz", + "integrity": "sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.3", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.4", + "is-array-buffer": "^3.0.1", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.10", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.2", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.9" + } + }, + "es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", + "dev": true + }, + "es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true + }, + "escodegen": { + "version": "1.14.3", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", + "dev": true, + "requires": { + "esprima": "^4.0.1", + "estraverse": "^4.2.0", + "esutils": "^2.0.2", + "optionator": "^0.8.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "optional": true + } + } + }, + "eslint": { + "version": "5.16.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-5.16.0.tgz", + "integrity": "sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "ajv": "^6.9.1", + "chalk": "^2.1.0", + "cross-spawn": "^6.0.5", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "eslint-scope": "^4.0.3", + "eslint-utils": "^1.3.1", + "eslint-visitor-keys": "^1.0.0", + "espree": "^5.0.1", + "esquery": "^1.0.1", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob": "^7.1.2", + "globals": "^11.7.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "inquirer": "^6.2.2", + "js-yaml": "^3.13.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.3.0", + "lodash": "^4.17.11", + "minimatch": "^3.0.4", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "optionator": "^0.8.2", + "path-is-inside": "^1.0.2", + "progress": "^2.0.0", + "regexpp": "^2.0.1", + "semver": "^5.5.1", + "strip-ansi": "^4.0.0", + "strip-json-comments": "^2.0.1", + "table": "^5.2.3", + "text-table": "^0.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true + } + } + }, + "eslint-scope": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-4.0.3.tgz", + "integrity": "sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg==", + "dev": true, + "requires": { + "esrecurse": "^4.1.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-1.4.3.tgz", + "integrity": "sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + }, + "espree": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-5.0.1.tgz", + "integrity": "sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A==", + "dev": true, + "requires": { + "acorn": "^6.0.7", + "acorn-jsx": "^5.0.0", + "eslint-visitor-keys": "^1.0.0" + }, + "dependencies": { + "acorn": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-6.4.2.tgz", + "integrity": "sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ==", + "dev": true + } + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.0.tgz", + "integrity": "sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "estree-walker": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.6.1.tgz", + "integrity": "sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "dev": true + }, + "eventemitter3": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true + }, + "evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "dev": true, + "requires": { + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" + } + }, + "exec-sh": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.2.2.tgz", + "integrity": "sha512-FIUCJz1RbuS0FKTdaAafAByGS0CPvU3R0MeHxgtl+djzCc//F8HakL8GzmVNZanasTbTAY/3DRFA0KpVqj/eAw==", + "dev": true, + "requires": { + "merge": "^1.2.0" + } + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + } + }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true + }, + "expand-brackets": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-0.1.5.tgz", + "integrity": "sha512-hxx03P2dJxss6ceIeri9cmYOT4SRs3Zk3afZwWpOsRqLqprhTR8u++SlC+sFGsQr7WGFPdMF7Gjc1njDLDK6UA==", + "dev": true, + "requires": { + "is-posix-bracket": "^0.1.0" + } + }, + "expand-range": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/expand-range/-/expand-range-1.8.2.tgz", + "integrity": "sha512-AFASGfIlnIbkKPQwX1yHaDjFvh/1gyKJODme52V6IORh69uEYgZp0o9C+qsIGNVEiuuhQU0CSSl++Rlegg1qvA==", + "dev": true, + "requires": { + "fill-range": "^2.1.0" + }, + "dependencies": { + "fill-range": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-2.2.4.tgz", + "integrity": "sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q==", + "dev": true, + "requires": { + "is-number": "^2.1.0", + "isobject": "^2.0.0", + "randomatic": "^3.0.0", + "repeat-element": "^1.1.2", + "repeat-string": "^1.5.2" + } + }, + "is-number": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-2.1.0.tgz", + "integrity": "sha512-QUzH43Gfb9+5yckcrSA0VBDwEtDUchrk4F6tfJZQuNzDJbEDB9cZNzSfXGQ1jqmdDY/kl41lUOWM9syA8z8jlg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + } + } + }, + "expect": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-23.6.0.tgz", + "integrity": "sha512-dgSoOHgmtn/aDGRVFWclQyPDKl2CQRq0hmIEoUAuQs/2rn2NcvCWcSCovm6BLeuB/7EZuLGu2QfnR+qRt5OM4w==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "jest-diff": "^23.6.0", + "jest-get-type": "^22.1.0", + "jest-matcher-utils": "^23.6.0", + "jest-message-util": "^23.4.0", + "jest-regex-util": "^23.3.0" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + } + }, + "extglob": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-0.3.2.tgz", + "integrity": "sha512-1FOj1LOwn42TMrruOHGt18HemVnbwAmAak7krWk+wa93KXxGbK+2jpezm+ytJYDaBX0/SPLZFHKM7m+tKobWGg==", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==", + "dev": true + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "fastparse": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", + "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==", + "dev": true + }, + "fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "requires": { + "bser": "2.1.1" + } + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "optional": true + }, + "filename-regex": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/filename-regex/-/filename-regex-2.0.1.tgz", + "integrity": "sha512-BTCqyBaWBTsauvnHiE8i562+EdJj+oUpkqWp2R1iCoR8f6oo8STRu3of7WJJ0TqWtxN50a5YFpzYK4Jj9esYfQ==", + "dev": true + }, + "fileset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/fileset/-/fileset-2.0.3.tgz", + "integrity": "sha512-UxowFKnAFIwtmSxgKjWAVgjE3Fk7MQJT0ZIyl0NwIFZTrx4913rLaonGJ84V+x/2+w/pe4ULHRns+GZPs1TVuw==", + "dev": true, + "requires": { + "glob": "^7.0.3", + "minimatch": "^3.0.3" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "finalhandler": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.0.tgz", + "integrity": "sha512-ejnvM9ZXYzp6PUPUyQBMBf0Co5VX2gr5H2VQe2Ui2jWXNlxv+PYZo8wpAymJNJdLsG1R4p+M4aynF8KuoUEwRw==", + "dev": true, + "requires": { + "debug": "2.6.9", + "encodeurl": "~1.0.1", + "escape-html": "~1.0.3", + "on-finished": "~2.3.0", + "parseurl": "~1.3.2", + "statuses": "~1.3.1", + "unpipe": "~1.0.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + }, + "dependencies": { + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + } + } + }, + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, + "flatten": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", + "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==", + "dev": true + }, + "follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "dev": true + }, + "for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "requires": { + "is-callable": "^1.1.3" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==", + "dev": true + }, + "for-own": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/for-own/-/for-own-0.1.5.tgz", + "integrity": "sha512-SKmowqGTJoPzLO1T0BBJpkfp3EMacCMOuH40hOUbrbzElVktk4DioXVM99QkLCyKoiuOmyjgcWMpVz2xjE7LZw==", + "dev": true, + "requires": { + "for-in": "^1.0.1" + } + }, + "foreach": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/foreach/-/foreach-2.0.6.tgz", + "integrity": "sha512-k6GAGDyqLe9JaebCsFCoudPPWfihKu8pylYXRlqP1J7ms39iPoTtk2fviNglIeQEwdh0bQeKJ01ZPyuyQvKzwg==", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true + }, + "fs-extra": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-3.0.1.tgz", + "integrity": "sha512-V3Z3WZWVUYd8hoCL5xfXJCaHWYzmtwW5XWYSlLgERi8PWd8bx1kUHUk8L1BT57e49oKnDDD180mjfrHc1yA9rg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^3.0.0", + "universalify": "^0.1.0" + } + }, + "fs-readdir-recursive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fs-readdir-recursive/-/fs-readdir-recursive-1.1.0.tgz", + "integrity": "sha512-GNanXlVr2pf02+sPN40XN8HG+ePaNcvM0q5mZBd668Obwb0yD5GiUbZOFgwn8kGMY6I3mdyDJzieUy3PTYyTRA==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "optional": true + }, + "fstream": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz", + "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "inherits": "~2.0.0", + "mkdirp": ">=0.5 0", + "rimraf": "2" + } + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" + } + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", + "dev": true + }, + "functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true + }, + "fwd-stream": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/fwd-stream/-/fwd-stream-1.0.4.tgz", + "integrity": "sha512-q2qaK2B38W07wfPSQDKMiKOD5Nzv2XyuvQlrmh1q0pxyHNanKHq8lwQ6n9zHucAwA5EbzRJKEgds2orn88rYTg==", + "dev": true, + "requires": { + "readable-stream": "~1.0.26-4" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "dev": true + } + } + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha512-14x4kjc6lkD3ltw589k0NrPD6cCNTD6CWoVUNpB85+DrtONoZn+Rug6xZU5RvSC4+TZPxA5AnBibQYAvZn41Hg==", + "dev": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "gaze": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", + "dev": true, + "requires": { + "globule": "^1.0.0" + } + }, + "generic-names": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/generic-names/-/generic-names-2.0.1.tgz", + "integrity": "sha512-kPCHWa1m9wGG/OwQpeweTwM/PYiQLrUIxXbt/P4Nic3LbGjCP0YwrALHW1uNLKZ0LIMg+RF+XRlj2ekT9ZlZAQ==", + "dev": true, + "requires": { + "loader-utils": "^1.1.0" + } + }, + "gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "get-intrinsic": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", + "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", + "dev": true, + "requires": { + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" + } + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==", + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-base": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-base/-/glob-base-0.3.0.tgz", + "integrity": "sha512-ab1S1g1EbO7YzauaJLkgLp7DZVAqj9M/dvKlTt8DkXA2tiOIcSMrlVI2J1RZyB5iJVccEscjGn+kpOG9788MHA==", + "dev": true, + "requires": { + "glob-parent": "^2.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha512-JDYOvfxio/t42HKdxkAYaCiBN7oYiuxykOxKxdaUW5Qn0zaYN3gRQWolrwdnf0shM9/EP0ebuuTmyoXNr1cC5w==", + "dev": true, + "requires": { + "is-glob": "^2.0.0" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + }, + "globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3" + } + }, + "globule": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.4.tgz", + "integrity": "sha512-OPTIfhMBh7JbBYDpa5b+Q5ptmMWKwcNcFSR/0c6t8V4f3ZAVBEsKNY37QdVqmLRYSMhOUGYrY0QhSoEpzGr/Eg==", + "dev": true, + "requires": { + "glob": "~7.1.1", + "lodash": "^4.17.21", + "minimatch": "~3.0.2" + }, + "dependencies": { + "glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "minimatch": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", + "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.3" + } + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "graceful-readlink": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/graceful-readlink/-/graceful-readlink-1.0.1.tgz", + "integrity": "sha512-8tLu60LgxF6XpdbK8OW3FA+IfTNBn1ZHGHKF4KQbEeSkajYw5PlYJcKluntgegDPTg8UkHjpet1T82vk6TQ68w==", + "dev": true + }, + "growly": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", + "integrity": "sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==", + "dev": true + }, + "handlebars": { + "version": "4.7.7", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.7.tgz", + "integrity": "sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA==", + "dev": true, + "requires": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==", + "dev": true + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "dev": true, + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-ansi": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", + "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true + }, + "has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.1" + } + }, + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "dev": true + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true + }, + "has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + } + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" + }, + "dependencies": { + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + } + } + }, + "hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" + } + }, + "hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", + "dev": true, + "requires": { + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" + } + }, + "home-or-tmp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/home-or-tmp/-/home-or-tmp-2.0.0.tgz", + "integrity": "sha512-ycURW7oUxE2sNiPVw1HVEFsW+ecOpJ5zaj7eC0RlwhibhRBod20muUN8qu/gzx956YrLolVvs1MTXwKgC2rVEg==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.1" + } + }, + "hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "html-comment-regex": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/html-comment-regex/-/html-comment-regex-1.1.2.tgz", + "integrity": "sha512-P+M65QY2JQ5Y0G9KKdlDpo0zK+/OHptU5AaBwUfAIDJZk1MYf32Frm84EcOytfJE0t5JvkAnKlmjsXDnWzCJmQ==", + "dev": true + }, + "html-encoding-sniffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz", + "integrity": "sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw==", + "dev": true, + "requires": { + "whatwg-encoding": "^1.0.1" + } + }, + "http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "requires": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "dependencies": { + "statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true + } + } + }, + "http-proxy": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/http-proxy/-/http-proxy-1.18.1.tgz", + "integrity": "sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==", + "dev": true, + "requires": { + "eventemitter3": "^4.0.0", + "follow-redirects": "^1.0.0", + "requires-port": "^1.0.0" + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "icss-replace-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/icss-replace-symbols/-/icss-replace-symbols-1.1.0.tgz", + "integrity": "sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==", + "dev": true + }, + "idb-wrapper": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/idb-wrapper/-/idb-wrapper-1.7.2.tgz", + "integrity": "sha512-zfNREywMuf0NzDo9mVsL0yegjsirJxHpKHvWcyRozIqQy89g0a3U+oBPOCN4cc0oCiOuYgZHimzaW/R46G1Mpg==", + "dev": true + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "immutable": { + "version": "3.8.2", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", + "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==", + "dev": true + }, + "import-cwd": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-cwd/-/import-cwd-2.1.0.tgz", + "integrity": "sha512-Ew5AZzJQFqrOV5BTW3EIoHAnoie1LojZLXKcCQ/yTRyVZosBhK1x1ViYjHGf5pAFOq8ZyChZp6m/fSN7pJyZtg==", + "dev": true, + "requires": { + "import-from": "^2.1.0" + } + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + } + } + }, + "import-from": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/import-from/-/import-from-2.1.0.tgz", + "integrity": "sha512-0vdnLL2wSGnhlRmzHJAg5JHjt1l2vYhzJ7tNLGbeVg0fse56tpGaH0uzH+r9Slej+BSXXEHvBKDEnVSLLE9/+w==", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "import-local": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-1.0.0.tgz", + "integrity": "sha512-vAaZHieK9qjGo58agRBg+bhHX3hoTZU/Oa3GESWLz7t1U62fk63aHuDJJEteXoDeTCcPmUT+z38gkHPZkkmpmQ==", + "dev": true, + "requires": { + "pkg-dir": "^2.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true + }, + "in-publish": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/in-publish/-/in-publish-2.0.1.tgz", + "integrity": "sha512-oDM0kUSNFC31ShNxHKUyfZKy8ZeXZBWMjMdZHKLOk13uvT27VTL/QzRGfRUcevJhpkZAvlhPYuXkF7eNWrtyxQ==", + "dev": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha512-aqwDFWSgSgfRaEwao5lg5KEcVd/2a+D1rvoG7NdilmYz0NwRk6StWpWdz/Hpk34MKPpx7s8XxUqimfcQK6gGlg==", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "indexes-of": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", + "integrity": "sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==", + "dev": true + }, + "indexof": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/indexof/-/indexof-0.0.1.tgz", + "integrity": "sha512-i0G7hLJ1z0DE8dsqJa2rycj9dBmNKgXBvotXtZYXakU9oivfB9Uj2ZBC27qqef2U58/ZLwalxa1X/RDCdkHtVg==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "inquirer": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", + "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", + "dev": true, + "requires": { + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^2.0.0", + "lodash": "^4.17.12", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "rxjs": { + "version": "6.6.7", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", + "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "internal-slot": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz", + "integrity": "sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==", + "dev": true, + "requires": { + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "side-channel": "^1.0.4" + } + }, + "invariant": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", + "dev": true, + "requires": { + "loose-envify": "^1.0.0" + } + }, + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, + "is": { + "version": "0.2.7", + "resolved": "https://registry.npmjs.org/is/-/is-0.2.7.tgz", + "integrity": "sha512-ajQCouIvkcSnl2iRdK70Jug9mohIHVX9uKpoWnl115ov0R5mzBvRrXxrnHbsA+8AdwCwc/sfw7HXmd4I5EJBdQ==", + "dev": true + }, + "is-absolute-url": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-absolute-url/-/is-absolute-url-2.1.0.tgz", + "integrity": "sha512-vOx7VprsKyllwjSkLV79NIhpyLfr3jAp7VaTCMXOJHu4m0Ew1CZ2fcjASwmV1jI3BWuWHB013M48eyeldk9gYg==", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-array-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.1.tgz", + "integrity": "sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-typed-array": "^1.1.10" + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "requires": { + "has-bigints": "^1.0.1" + } + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true + }, + "is-ci": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-1.2.1.tgz", + "integrity": "sha512-s6tfsaQaQi3JNciBH6shVqEDvhGut0SUXr31ag8Pd8BBbVVlcGfWhpPmEOoM6RJ5TFhbypvf5yyRw/VXW1IiWg==", + "dev": true, + "requires": { + "ci-info": "^1.5.0" + } + }, + "is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", + "dev": true + }, + "is-dotfile": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-dotfile/-/is-dotfile-1.0.3.tgz", + "integrity": "sha512-9YclgOGtN/f8zx0Pr4FQYMdibBiTaH3sn52vjYip4ZSf6C4/6RfTEZ+MR4GvKhCxdPh21Bg42/WL55f6KSnKpg==", + "dev": true + }, + "is-equal-shallow": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", + "integrity": "sha512-0EygVC5qPvIyb+gSz7zdD5/AAoS6Qrx1e//6N4yv4oNm30kqvdmG66oZFWVlQHUWe5OjP08FuTw2IdT0EOTcYA==", + "dev": true, + "requires": { + "is-primitive": "^2.0.0" + } + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true + }, + "is-finite": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "dev": true + }, + "is-generator-fn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-1.0.0.tgz", + "integrity": "sha512-95jJZX6O/gdekidH2usRBr9WdRw4LU56CttPstXFxvG0r3QUE9eaIdz2p2Y7zrm6jxz7SjByAo1AtzwGlRvfOg==", + "dev": true + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-module": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", + "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", + "dev": true + }, + "is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-number-like": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/is-number-like/-/is-number-like-1.0.8.tgz", + "integrity": "sha512-6rZi3ezCyFcn5L71ywzz2bS5b2Igl1En3eTlZlvKjpz1n3IZLAYMbKYAIQgFmEu0GENg92ziU/faEOA/aixjbA==", + "dev": true, + "requires": { + "lodash.isfinite": "^3.3.2" + } + }, + "is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-object": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-0.1.2.tgz", + "integrity": "sha512-GkfZZlIZtpkFrqyAXPQSRBMsaHAw+CgoKe2HXAkjd/sfoI9+hS8PT4wg2rJxdQyUKr7N2vHJbg7/jQtE5l5vBQ==", + "dev": true + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + } + } + }, + "is-posix-bracket": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz", + "integrity": "sha512-Yu68oeXJ7LeWNmZ3Zov/xg/oDBnBK2RNxwYY1ilNJX+tKKZqgPK+qOn/Gs9jEu66KDY9Netf5XLKNGzas/vPfQ==", + "dev": true + }, + "is-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-primitive/-/is-primitive-2.0.0.tgz", + "integrity": "sha512-N3w1tFaRfk3UrPfqeRyD+GYDASU3W5VinKhlORy8EWVf/sIdDL9GAcew85XmktCfH+ngG7SRXEVDoO18WMdB/Q==", + "dev": true + }, + "is-reference": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", + "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", + "dev": true, + "requires": { + "@types/estree": "*" + } + }, + "is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + } + }, + "is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true + }, + "is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "requires": { + "has-tostringtag": "^1.0.0" + } + }, + "is-svg": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-svg/-/is-svg-2.1.0.tgz", + "integrity": "sha512-Ya1giYJUkcL/94quj0+XGcmts6cETPBW1MiFz1ReJrnDJ680F52qpAEGAEGU0nq96FRGIGPx6Yo1CyPXcOoyGw==", + "dev": true, + "requires": { + "html-comment-regex": "^1.1.0" + } + }, + "is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.2" + } + }, + "is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==", + "dev": true + }, + "is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2" + } + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "is-wsl": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "isbuffer": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/isbuffer/-/isbuffer-0.0.0.tgz", + "integrity": "sha512-xU+NoHp+YtKQkaM2HsQchYn0sltxMxew0HavMfHbjnucBoTSGbw745tL+Z7QBANleWM1eEQMenEpi174mIeS4g==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "dev": true + }, + "istanbul-api": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/istanbul-api/-/istanbul-api-1.3.7.tgz", + "integrity": "sha512-4/ApBnMVeEPG3EkSzcw25wDe4N66wxwn+KKn6b47vyek8Xb3NBAcg4xfuQbS7BqcZuTX4wxfD5lVagdggR3gyA==", + "dev": true, + "requires": { + "async": "^2.1.4", + "fileset": "^2.0.2", + "istanbul-lib-coverage": "^1.2.1", + "istanbul-lib-hook": "^1.2.2", + "istanbul-lib-instrument": "^1.10.2", + "istanbul-lib-report": "^1.1.5", + "istanbul-lib-source-maps": "^1.2.6", + "istanbul-reports": "^1.5.1", + "js-yaml": "^3.7.0", + "mkdirp": "^0.5.1", + "once": "^1.4.0" + } + }, + "istanbul-lib-coverage": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz", + "integrity": "sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ==", + "dev": true + }, + "istanbul-lib-hook": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-1.2.2.tgz", + "integrity": "sha512-/Jmq7Y1VeHnZEQ3TL10VHyb564mn6VrQXHchON9Jf/AEcmQ3ZIiyD1BVzNOKTZf/G3gE+kiGK6SmpF9y3qGPLw==", + "dev": true, + "requires": { + "append-transform": "^0.4.0" + } + }, + "istanbul-lib-instrument": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-1.10.2.tgz", + "integrity": "sha512-aWHxfxDqvh/ZlxR8BBaEPVSWDPUkGD63VjGQn3jcw8jCp7sHEMKcrj4xfJn/ABzdMEHiQNyvDQhqm5o8+SQg7A==", + "dev": true, + "requires": { + "babel-generator": "^6.18.0", + "babel-template": "^6.16.0", + "babel-traverse": "^6.18.0", + "babel-types": "^6.18.0", + "babylon": "^6.18.0", + "istanbul-lib-coverage": "^1.2.1", + "semver": "^5.3.0" + } + }, + "istanbul-lib-report": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-1.1.5.tgz", + "integrity": "sha512-UsYfRMoi6QO/doUshYNqcKJqVmFe9w51GZz8BS3WB0lYxAllQYklka2wP9+dGZeHYaWIdcXUx8JGdbqaoXRXzw==", + "dev": true, + "requires": { + "istanbul-lib-coverage": "^1.2.1", + "mkdirp": "^0.5.1", + "path-parse": "^1.0.5", + "supports-color": "^3.1.2" + }, + "dependencies": { + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-1.2.6.tgz", + "integrity": "sha512-TtbsY5GIHgbMsMiRw35YBHGpZ1DVFEO19vxxeiDMYaeOFOCzfnYVxvl6pOUIZR4dtPhAGpSMup8OyF8ubsaqEg==", + "dev": true, + "requires": { + "debug": "^3.1.0", + "istanbul-lib-coverage": "^1.2.1", + "mkdirp": "^0.5.1", + "rimraf": "^2.6.1", + "source-map": "^0.5.3" + }, + "dependencies": { + "debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "istanbul-reports": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-1.5.1.tgz", + "integrity": "sha512-+cfoZ0UXzWjhAdzosCPP3AN8vvef8XDkWtTfgaN+7L3YTpNYITnCaEkceo5SEYy644VkHka/P1FvkWvrG/rrJw==", + "dev": true, + "requires": { + "handlebars": "^4.0.3" + } + }, + "jest": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-23.6.0.tgz", + "integrity": "sha512-lWzcd+HSiqeuxyhG+EnZds6iO3Y3ZEnMrfZq/OTGvF/C+Z4fPMCdhWTGSAiO2Oym9rbEXfwddHhh6jqrTF3+Lw==", + "dev": true, + "requires": { + "import-local": "^1.0.0", + "jest-cli": "^23.6.0" + } + }, + "jest-changed-files": { + "version": "23.4.2", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-23.4.2.tgz", + "integrity": "sha512-EyNhTAUWEfwnK0Is/09LxoqNDOn7mU7S3EHskG52djOFS/z+IT0jT3h3Ql61+dklcG7bJJitIWEMB4Sp1piHmA==", + "dev": true, + "requires": { + "throat": "^4.0.0" + } + }, + "jest-cli": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-23.6.0.tgz", + "integrity": "sha512-hgeD1zRUp1E1zsiyOXjEn4LzRLWdJBV//ukAHGlx6s5mfCNJTbhbHjgxnDUXA8fsKWN/HqFFF6X5XcCwC/IvYQ==", + "dev": true, + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "exit": "^0.1.2", + "glob": "^7.1.2", + "graceful-fs": "^4.1.11", + "import-local": "^1.0.0", + "is-ci": "^1.0.10", + "istanbul-api": "^1.3.1", + "istanbul-lib-coverage": "^1.2.0", + "istanbul-lib-instrument": "^1.10.1", + "istanbul-lib-source-maps": "^1.2.4", + "jest-changed-files": "^23.4.2", + "jest-config": "^23.6.0", + "jest-environment-jsdom": "^23.4.0", + "jest-get-type": "^22.1.0", + "jest-haste-map": "^23.6.0", + "jest-message-util": "^23.4.0", + "jest-regex-util": "^23.3.0", + "jest-resolve-dependencies": "^23.6.0", + "jest-runner": "^23.6.0", + "jest-runtime": "^23.6.0", + "jest-snapshot": "^23.6.0", + "jest-util": "^23.4.0", + "jest-validate": "^23.6.0", + "jest-watcher": "^23.4.0", + "jest-worker": "^23.2.0", + "micromatch": "^2.3.11", + "node-notifier": "^5.2.1", + "prompts": "^0.1.9", + "realpath-native": "^1.0.0", + "rimraf": "^2.5.4", + "slash": "^1.0.0", + "string-length": "^2.0.0", + "strip-ansi": "^4.0.0", + "which": "^1.2.12", + "yargs": "^11.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "jest-config": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-23.6.0.tgz", + "integrity": "sha512-i8V7z9BeDXab1+VNo78WM0AtWpBRXJLnkT+lyT+Slx/cbP5sZJ0+NDuLcmBE5hXAoK0aUp7vI+MOxR+R4d8SRQ==", + "dev": true, + "requires": { + "babel-core": "^6.0.0", + "babel-jest": "^23.6.0", + "chalk": "^2.0.1", + "glob": "^7.1.1", + "jest-environment-jsdom": "^23.4.0", + "jest-environment-node": "^23.4.0", + "jest-get-type": "^22.1.0", + "jest-jasmine2": "^23.6.0", + "jest-regex-util": "^23.3.0", + "jest-resolve": "^23.6.0", + "jest-util": "^23.4.0", + "jest-validate": "^23.6.0", + "micromatch": "^2.3.11", + "pretty-format": "^23.6.0" + }, + "dependencies": { + "babel-core": { + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==", + "dev": true + } + } + }, + "jest-diff": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-23.6.0.tgz", + "integrity": "sha512-Gz9l5Ov+X3aL5L37IT+8hoCUsof1CVYBb2QEkOupK64XyRR3h+uRpYIm97K7sY8diFxowR8pIGEdyfMKTixo3g==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "diff": "^3.2.0", + "jest-get-type": "^22.1.0", + "pretty-format": "^23.6.0" + } + }, + "jest-docblock": { + "version": "23.2.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-23.2.0.tgz", + "integrity": "sha512-CB8MdScYLkzQ0Q/I4FYlt2UBkG9tFzi+ngSPVhSBB70nifaC+5iWz6GEfa/lB4T2KCqGy+DLzi1v34r9R1XzuA==", + "dev": true, + "requires": { + "detect-newline": "^2.1.0" + } + }, + "jest-each": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-23.6.0.tgz", + "integrity": "sha512-x7V6M/WGJo6/kLoissORuvLIeAoyo2YqLOoCDkohgJ4XOXSqOtyvr8FbInlAWS77ojBsZrafbozWoKVRdtxFCg==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "pretty-format": "^23.6.0" + } + }, + "jest-environment-jsdom": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-23.4.0.tgz", + "integrity": "sha512-UIXe32cMl/+DtyNHC15X+aFZMh04wx7PjWFBfz+nwoLgsIN2loKoNiKGSzUhMW/fVwbHrk8Qopglb7V4XB4EfQ==", + "dev": true, + "requires": { + "jest-mock": "^23.2.0", + "jest-util": "^23.4.0", + "jsdom": "^11.5.1" + } + }, + "jest-environment-node": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-23.4.0.tgz", + "integrity": "sha512-bk8qScgIfkb+EdwJ0JZ9xGvN7N3m6Qok73G8hi6tzvNadpe4kOxxuGmK2cJzAM3tPC/HBulzrOeNHEvaThQFrQ==", + "dev": true, + "requires": { + "jest-mock": "^23.2.0", + "jest-util": "^23.4.0" + } + }, + "jest-get-type": { + "version": "22.4.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-22.4.3.tgz", + "integrity": "sha512-/jsz0Y+V29w1chdXVygEKSz2nBoHoYqNShPe+QgxSNjAuP1i8+k4LbQNrfoliKej0P45sivkSCh7yiD6ubHS3w==", + "dev": true + }, + "jest-haste-map": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-23.6.0.tgz", + "integrity": "sha512-uyNhMyl6dr6HaXGHp8VF7cK6KpC6G9z9LiMNsst+rJIZ8l7wY0tk8qwjPmEghczojZ2/ZhtEdIabZ0OQRJSGGg==", + "dev": true, + "requires": { + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.1.11", + "invariant": "^2.2.4", + "jest-docblock": "^23.2.0", + "jest-serializer": "^23.0.1", + "jest-worker": "^23.2.0", + "micromatch": "^2.3.11", + "sane": "^2.0.0" + } + }, + "jest-jasmine2": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-23.6.0.tgz", + "integrity": "sha512-pe2Ytgs1nyCs8IvsEJRiRTPC0eVYd8L/dXJGU08GFuBwZ4sYH/lmFDdOL3ZmvJR8QKqV9MFuwlsAi/EWkFUbsQ==", + "dev": true, + "requires": { + "babel-traverse": "^6.0.0", + "chalk": "^2.0.1", + "co": "^4.6.0", + "expect": "^23.6.0", + "is-generator-fn": "^1.0.0", + "jest-diff": "^23.6.0", + "jest-each": "^23.6.0", + "jest-matcher-utils": "^23.6.0", + "jest-message-util": "^23.4.0", + "jest-snapshot": "^23.6.0", + "jest-util": "^23.4.0", + "pretty-format": "^23.6.0" + } + }, + "jest-leak-detector": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-23.6.0.tgz", + "integrity": "sha512-f/8zA04rsl1Nzj10HIyEsXvYlMpMPcy0QkQilVZDFOaPbv2ur71X5u2+C4ZQJGyV/xvVXtCCZ3wQ99IgQxftCg==", + "dev": true, + "requires": { + "pretty-format": "^23.6.0" + } + }, + "jest-matcher-utils": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-23.6.0.tgz", + "integrity": "sha512-rosyCHQfBcol4NsckTn01cdelzWLU9Cq7aaigDf8VwwpIRvWE/9zLgX2bON+FkEW69/0UuYslUe22SOdEf2nog==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "jest-get-type": "^22.1.0", + "pretty-format": "^23.6.0" + } + }, + "jest-message-util": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-23.4.0.tgz", + "integrity": "sha512-Tjqy7T8jHhPgV4Gsi+pKMMfaz3uP5DPtMGnm8RWNWUHIk2igqxQ3/9rud3JkINCvZDGqlpJVuFGIDXbltG4xLA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0-beta.35", + "chalk": "^2.0.1", + "micromatch": "^2.3.11", + "slash": "^1.0.0", + "stack-utils": "^1.0.1" + }, + "dependencies": { + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==", + "dev": true + } + } + }, + "jest-mock": { + "version": "23.2.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-23.2.0.tgz", + "integrity": "sha512-lz+Rf6dwRNDVowuGCXm93ib8hMyPntl1GGVt9PuZfBAmTjP5yKYgK14IASiEjs7XoMo4i/R7+dkrJY3eESwTJg==", + "dev": true + }, + "jest-regex-util": { + "version": "23.3.0", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-23.3.0.tgz", + "integrity": "sha512-pNilf1tXhv5z0qjJy2Hl6Ar6dsi+XX2zpCAuzxRs4qoputI0Bm9rU7pa2ErrFTfiHYe8VboTR7WATPZXqzpQ/g==", + "dev": true + }, + "jest-resolve": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-23.6.0.tgz", + "integrity": "sha512-XyoRxNtO7YGpQDmtQCmZjum1MljDqUCob7XlZ6jy9gsMugHdN2hY4+Acz9Qvjz2mSsOnPSH7skBmDYCHXVZqkA==", + "dev": true, + "requires": { + "browser-resolve": "^1.11.3", + "chalk": "^2.0.1", + "realpath-native": "^1.0.0" + } + }, + "jest-resolve-dependencies": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-23.6.0.tgz", + "integrity": "sha512-EkQWkFWjGKwRtRyIwRwI6rtPAEyPWlUC2MpzHissYnzJeHcyCn1Hc8j7Nn1xUVrS5C6W5+ZL37XTem4D4pLZdA==", + "dev": true, + "requires": { + "jest-regex-util": "^23.3.0", + "jest-snapshot": "^23.6.0" + } + }, + "jest-runner": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-23.6.0.tgz", + "integrity": "sha512-kw0+uj710dzSJKU6ygri851CObtCD9cN8aNkg8jWJf4ewFyEa6kwmiH/r/M1Ec5IL/6VFa0wnAk6w+gzUtjJzA==", + "dev": true, + "requires": { + "exit": "^0.1.2", + "graceful-fs": "^4.1.11", + "jest-config": "^23.6.0", + "jest-docblock": "^23.2.0", + "jest-haste-map": "^23.6.0", + "jest-jasmine2": "^23.6.0", + "jest-leak-detector": "^23.6.0", + "jest-message-util": "^23.4.0", + "jest-runtime": "^23.6.0", + "jest-util": "^23.4.0", + "jest-worker": "^23.2.0", + "source-map-support": "^0.5.6", + "throat": "^4.0.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + } + } + }, + "jest-runtime": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-23.6.0.tgz", + "integrity": "sha512-ycnLTNPT2Gv+TRhnAYAQ0B3SryEXhhRj1kA6hBPSeZaNQkJ7GbZsxOLUkwg6YmvWGdX3BB3PYKFLDQCAE1zNOw==", + "dev": true, + "requires": { + "babel-core": "^6.0.0", + "babel-plugin-istanbul": "^4.1.6", + "chalk": "^2.0.1", + "convert-source-map": "^1.4.0", + "exit": "^0.1.2", + "fast-json-stable-stringify": "^2.0.0", + "graceful-fs": "^4.1.11", + "jest-config": "^23.6.0", + "jest-haste-map": "^23.6.0", + "jest-message-util": "^23.4.0", + "jest-regex-util": "^23.3.0", + "jest-resolve": "^23.6.0", + "jest-snapshot": "^23.6.0", + "jest-util": "^23.4.0", + "jest-validate": "^23.6.0", + "micromatch": "^2.3.11", + "realpath-native": "^1.0.0", + "slash": "^1.0.0", + "strip-bom": "3.0.0", + "write-file-atomic": "^2.1.0", + "yargs": "^11.0.0" + }, + "dependencies": { + "babel-core": { + "version": "6.26.3", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-6.26.3.tgz", + "integrity": "sha512-6jyFLuDmeidKmUEb3NM+/yawG0M2bDZ9Z1qbZP59cyHLz8kYGKYwpJP0UwUKKUiTRNvxfLesJnTedqczP7cTDA==", + "dev": true, + "requires": { + "babel-code-frame": "^6.26.0", + "babel-generator": "^6.26.0", + "babel-helpers": "^6.24.1", + "babel-messages": "^6.23.0", + "babel-register": "^6.26.0", + "babel-runtime": "^6.26.0", + "babel-template": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "convert-source-map": "^1.5.1", + "debug": "^2.6.9", + "json5": "^0.5.1", + "lodash": "^4.17.4", + "minimatch": "^3.0.4", + "path-is-absolute": "^1.0.1", + "private": "^0.1.8", + "slash": "^1.0.0", + "source-map": "^0.5.7" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "json5": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/json5/-/json5-0.5.1.tgz", + "integrity": "sha512-4xrs1aW+6N5DalkqSVA8fxh458CXvR99WU8WLKmq4v8eWAL86Xo3BVqyd3SkA9wEVjCMqyvvRRkshAdOnBp5rw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==", + "dev": true + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true + } + } + }, + "jest-serializer": { + "version": "23.0.1", + "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-23.0.1.tgz", + "integrity": "sha512-l6cPuiGEQI72H4+qMePF62E+URkZscnAqdHBYHkMrhKJOwU08AHvGmftXdosUzfCGhh/Ih4Xk1VgxnJSwrvQvQ==", + "dev": true + }, + "jest-snapshot": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-23.6.0.tgz", + "integrity": "sha512-tM7/Bprftun6Cvj2Awh/ikS7zV3pVwjRYU2qNYS51VZHgaAMBs5l4o/69AiDHhQrj5+LA2Lq4VIvK7zYk/bswg==", + "dev": true, + "requires": { + "babel-types": "^6.0.0", + "chalk": "^2.0.1", + "jest-diff": "^23.6.0", + "jest-matcher-utils": "^23.6.0", + "jest-message-util": "^23.4.0", + "jest-resolve": "^23.6.0", + "mkdirp": "^0.5.1", + "natural-compare": "^1.4.0", + "pretty-format": "^23.6.0", + "semver": "^5.5.0" + } + }, + "jest-util": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-23.4.0.tgz", + "integrity": "sha512-OS1/0QSbbMF9N93MxF1hUmK93EF3NGQGbbaTBZZk95aytWtWmzxsFWwt/UXIIkfHbPCK1fXTrPklbL+ohuFFOA==", + "dev": true, + "requires": { + "callsites": "^2.0.0", + "chalk": "^2.0.1", + "graceful-fs": "^4.1.11", + "is-ci": "^1.0.10", + "jest-message-util": "^23.4.0", + "mkdirp": "^0.5.1", + "slash": "^1.0.0", + "source-map": "^0.6.0" + }, + "dependencies": { + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==", + "dev": true + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "jest-validate": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-23.6.0.tgz", + "integrity": "sha512-OFKapYxe72yz7agrDAWi8v2WL8GIfVqcbKRCLbRG9PAxtzF9b1SEDdTpytNDN12z2fJynoBwpMpvj2R39plI2A==", + "dev": true, + "requires": { + "chalk": "^2.0.1", + "jest-get-type": "^22.1.0", + "leven": "^2.1.0", + "pretty-format": "^23.6.0" + } + }, + "jest-watcher": { + "version": "23.4.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-23.4.0.tgz", + "integrity": "sha512-BZGZYXnte/vazfnmkD4ERByi2O2mW+C++W8Sb7dvOnwcSccvCKNQgmcz1L+9hxVD7HWtqymPctIY7v5ZbQGNyg==", + "dev": true, + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.1", + "string-length": "^2.0.0" + } + }, + "jest-worker": { + "version": "23.2.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-23.2.0.tgz", + "integrity": "sha512-zx0uwPCDxToGfYyQiSHh7T/sKIxQFnQqT6Uug7Y/L7PzEkFITPaufjQe6yaf1OXSnGvKC5Fwol1hIym0zDzyvw==", + "dev": true, + "requires": { + "merge-stream": "^1.0.1" + } + }, + "js-base64": { + "version": "2.6.4", + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "js2xmlparser": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/js2xmlparser/-/js2xmlparser-4.0.2.tgz", + "integrity": "sha512-6n4D8gLlLf1n5mNLQPRfViYzu9RATblzPEtm1SthMX1Pjao0r9YI9nw7ZIfRxQMERS87mcswrg+r/OYrPRX6jA==", + "dev": true, + "requires": { + "xmlcreate": "^2.0.4" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==", + "dev": true + }, + "jsdoc": { + "version": "3.6.11", + "resolved": "https://registry.npmjs.org/jsdoc/-/jsdoc-3.6.11.tgz", + "integrity": "sha512-8UCU0TYeIYD9KeLzEcAu2q8N/mx9O3phAGl32nmHlE0LpaJL71mMkP4d+QE5zWfNt50qheHtOZ0qoxVrsX5TUg==", + "dev": true, + "requires": { + "@babel/parser": "^7.9.4", + "@types/markdown-it": "^12.2.3", + "bluebird": "^3.7.2", + "catharsis": "^0.9.0", + "escape-string-regexp": "^2.0.0", + "js2xmlparser": "^4.0.2", + "klaw": "^3.0.0", + "markdown-it": "^12.3.2", + "markdown-it-anchor": "^8.4.1", + "marked": "^4.0.10", + "mkdirp": "^1.0.4", + "requizzle": "^0.2.3", + "strip-json-comments": "^3.1.0", + "taffydb": "2.6.2", + "underscore": "~1.13.2" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + }, + "mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true + } + } + }, + "jsdoc-export-default-interop": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/jsdoc-export-default-interop/-/jsdoc-export-default-interop-0.3.1.tgz", + "integrity": "sha512-8dXuye0ZZcfHO/u3xk3A4TSb2LgWo6HbhoVIj1Igrrpq4t61UnjMIXiqpq6xj4oQgrZHgSy8AWdhNB899BcfFA==", + "dev": true, + "requires": { + "in-publish": "^2.0.0", + "lodash": "^4.0.1" + } + }, + "jsdom": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-11.12.0.tgz", + "integrity": "sha512-y8Px43oyiBM13Zc1z780FrfNLJCXTL40EWlty/LXUtcjykRBNgLlCjWXpfSPBl2iv+N7koQN+dvqszHZgT/Fjw==", + "dev": true, + "requires": { + "abab": "^2.0.0", + "acorn": "^5.5.3", + "acorn-globals": "^4.1.0", + "array-equal": "^1.0.0", + "cssom": ">= 0.3.2 < 0.4.0", + "cssstyle": "^1.0.0", + "data-urls": "^1.0.0", + "domexception": "^1.0.1", + "escodegen": "^1.9.1", + "html-encoding-sniffer": "^1.0.2", + "left-pad": "^1.3.0", + "nwsapi": "^2.0.7", + "parse5": "4.0.0", + "pn": "^1.1.0", + "request": "^2.87.0", + "request-promise-native": "^1.0.5", + "sax": "^1.2.4", + "symbol-tree": "^3.2.2", + "tough-cookie": "^2.3.4", + "w3c-hr-time": "^1.0.1", + "webidl-conversions": "^4.0.2", + "whatwg-encoding": "^1.0.3", + "whatwg-mimetype": "^2.1.0", + "whatwg-url": "^6.4.1", + "ws": "^5.2.0", + "xml-name-validator": "^3.0.0" + }, + "dependencies": { + "parse5": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-4.0.0.tgz", + "integrity": "sha512-VrZ7eOd3T1Fk4XWNXMgiGBK/z0MG48BWG2uQNU4I72fkQuKUTZpl+u9k+CxEG0twMVzSmXEEz12z5Fnw1jIQFA==", + "dev": true + } + } + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-schema": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.4.0.tgz", + "integrity": "sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true + }, + "json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true + }, + "jsonfile": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-3.0.1.tgz", + "integrity": "sha512-oBko6ZHlubVB5mRFkur5vgYR1UyqX+S6Y/oCfLhqNdcc2fYFlDpIoNc7AfKS1KOGcnNAkvsr0grLck9ANM815w==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsprim": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz", + "integrity": "sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.4.0", + "verror": "1.10.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + }, + "klaw": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-3.0.0.tgz", + "integrity": "sha512-0Fo5oir+O9jnXu5EefYbVK+mHMBeEVEy2cmctR1O1NECcCkPRreJKrS6Qt/j3KC2C148Dfo9i3pCmCMsdqGr0g==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.9" + } + }, + "kleur": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-2.0.2.tgz", + "integrity": "sha512-77XF9iTllATmG9lSlIv0qdQ2BQ/h9t0bJllHlbvsQ0zUWfU7Yi0S8L5JXzPZgkefIiajLmBJJ4BsMJmqcf7oxQ==", + "dev": true + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "left-pad": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz", + "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==", + "dev": true + }, + "level-blobs": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/level-blobs/-/level-blobs-0.1.7.tgz", + "integrity": "sha512-n0iYYCGozLd36m/Pzm206+brIgXP8mxPZazZ6ZvgKr+8YwOZ8/PPpYC5zMUu2qFygRN8RO6WC/HH3XWMW7RMVg==", + "dev": true, + "requires": { + "level-peek": "1.0.6", + "once": "^1.3.0", + "readable-stream": "^1.0.26-4" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "dev": true + } + } + }, + "level-filesystem": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/level-filesystem/-/level-filesystem-1.2.0.tgz", + "integrity": "sha512-PhXDuCNYpngpxp3jwMT9AYBMgOvB6zxj3DeuIywNKmZqFj2djj9XfT2XDVslfqmo0Ip79cAd3SBy3FsfOZPJ1g==", + "dev": true, + "requires": { + "concat-stream": "^1.4.4", + "errno": "^0.1.1", + "fwd-stream": "^1.0.4", + "level-blobs": "^0.1.7", + "level-peek": "^1.0.6", + "level-sublevel": "^5.2.0", + "octal": "^1.0.0", + "once": "^1.3.0", + "xtend": "^2.2.0" + } + }, + "level-fix-range": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/level-fix-range/-/level-fix-range-1.0.2.tgz", + "integrity": "sha512-9llaVn6uqBiSlBP+wKiIEoBa01FwEISFgHSZiyec2S0KpyLUkGR4afW/FCZ/X8y+QJvzS0u4PGOlZDdh1/1avQ==", + "dev": true + }, + "level-hooks": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/level-hooks/-/level-hooks-4.5.0.tgz", + "integrity": "sha512-fxLNny/vL/G4PnkLhWsbHnEaRi+A/k8r5EH/M77npZwYL62RHi2fV0S824z3QdpAk6VTgisJwIRywzBHLK4ZVA==", + "dev": true, + "requires": { + "string-range": "~1.2" + } + }, + "level-js": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/level-js/-/level-js-2.2.4.tgz", + "integrity": "sha512-lZtjt4ZwHE00UMC1vAb271p9qzg8vKlnDeXfIesH3zL0KxhHRDjClQLGLWhyR0nK4XARnd4wc/9eD1ffd4PshQ==", + "dev": true, + "requires": { + "abstract-leveldown": "~0.12.0", + "idb-wrapper": "^1.5.0", + "isbuffer": "~0.0.0", + "ltgt": "^2.1.2", + "typedarray-to-buffer": "~1.0.0", + "xtend": "~2.1.2" + }, + "dependencies": { + "object-keys": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.4.0.tgz", + "integrity": "sha512-ncrLw+X55z7bkl5PnUvHwFK9FcGuFYo9gtjws2XtSzL+aZ8tm830P60WJ0dSmFVaSalWieW5MD7kEdnXda9yJw==", + "dev": true + }, + "xtend": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.1.2.tgz", + "integrity": "sha512-vMNKzr2rHP9Dp/e1NQFnLQlwlhp9L/LfvnsVdHxN1f+uggyVI3i08uD14GPvCToPkdsRfyPqIyYGmIk58V98ZQ==", + "dev": true, + "requires": { + "object-keys": "~0.4.0" + } + } + } + }, + "level-peek": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/level-peek/-/level-peek-1.0.6.tgz", + "integrity": "sha512-TKEzH5TxROTjQxWMczt9sizVgnmJ4F3hotBI48xCTYvOKd/4gA/uY0XjKkhJFo6BMic8Tqjf6jFMLWeg3MAbqQ==", + "dev": true, + "requires": { + "level-fix-range": "~1.0.2" + } + }, + "level-sublevel": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/level-sublevel/-/level-sublevel-5.2.3.tgz", + "integrity": "sha512-tO8jrFp+QZYrxx/Gnmjawuh1UBiifpvKNAcm4KCogesWr1Nm2+ckARitf+Oo7xg4OHqMW76eAqQ204BoIlscjA==", + "dev": true, + "requires": { + "level-fix-range": "2.0", + "level-hooks": ">=4.4.0 <5", + "string-range": "~1.2.1", + "xtend": "~2.0.4" + }, + "dependencies": { + "level-fix-range": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/level-fix-range/-/level-fix-range-2.0.0.tgz", + "integrity": "sha512-WrLfGWgwWbYPrHsYzJau+5+te89dUbENBg3/lsxOs4p2tYOhCHjbgXxBAj4DFqp3k/XBwitcRXoCh8RoCogASA==", + "dev": true, + "requires": { + "clone": "~0.1.9" + } + }, + "object-keys": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-0.2.0.tgz", + "integrity": "sha512-XODjdR2pBh/1qrjPcbSeSgEtKbYo7LqYNq64/TPuCf7j9SfDD3i21yatKoIy39yIWNvVM59iutfQQpCv1RfFzA==", + "dev": true, + "requires": { + "foreach": "~2.0.1", + "indexof": "~0.0.1", + "is": "~0.2.6" + } + }, + "xtend": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.0.6.tgz", + "integrity": "sha512-fOZg4ECOlrMl+A6Msr7EIFcON1L26mb4NY5rurSkOex/TWhazOrg6eXD/B0XkuiYcYhQDWLXzQxLMVJ7LXwokg==", + "dev": true, + "requires": { + "is-object": "~0.1.2", + "object-keys": "~0.2.0" + } + } + } + }, + "levelup": { + "version": "0.18.6", + "resolved": "https://registry.npmjs.org/levelup/-/levelup-0.18.6.tgz", + "integrity": "sha512-uB0auyRqIVXx+hrpIUtol4VAPhLRcnxcOsd2i2m6rbFIDarO5dnrupLOStYYpEcu8ZT087Z9HEuYw1wjr6RL6Q==", + "dev": true, + "requires": { + "bl": "~0.8.1", + "deferred-leveldown": "~0.2.0", + "errno": "~0.1.1", + "prr": "~0.0.0", + "readable-stream": "~1.0.26", + "semver": "~2.3.1", + "xtend": "~3.0.0" + }, + "dependencies": { + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true + }, + "prr": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/prr/-/prr-0.0.0.tgz", + "integrity": "sha512-LmUECmrW7RVj6mDWKjTXfKug7TFGdiz9P18HMcO4RHL+RW7MCOGNvpj5j47Rnp6ne6r4fZ2VzyUWEpKbg+tsjQ==", + "dev": true + }, + "readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "semver": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-2.3.2.tgz", + "integrity": "sha512-abLdIKCosKfpnmhS52NCTjO4RiLspDfsn37prjzGrp9im5DPJOgh82Os92vtwGh6XdQryKI/7SREZnV+aqiXrA==", + "dev": true + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", + "dev": true + }, + "xtend": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-3.0.0.tgz", + "integrity": "sha512-sp/sT9OALMjRW1fKDlPeuSZlDQpkqReA0pyJukniWbTGoEKefHxhGJynE3PNhUMlcM8qWIjPwecwCw4LArS5Eg==", + "dev": true + } + } + }, + "leven": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-2.1.0.tgz", + "integrity": "sha512-nvVPLpIHUxCUoRLrFqTgSxXJ614d8AgQoWl7zPe/2VadE8+1dpU3LBhowRuBAcuwruWtOdD8oYC9jDNJjXDPyA==", + "dev": true + }, + "levn": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2" + } + }, + "limiter": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/limiter/-/limiter-1.1.5.tgz", + "integrity": "sha512-FWWMIEOxz3GwUI4Ts/IvgVy6LPvoMPgjMdQ185nN6psJyBJ4yOpzqm695/h5umdLJg2vW3GR5iG11MAkR2AzJA==", + "dev": true + }, + "linkify-it": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-3.0.3.tgz", + "integrity": "sha512-ynTsyrFSdE5oZ/O9GEf00kPngmOfVwazR5GKDq6EYfhlpFug3J2zybX56a2PRRpc9P+FuSoGNAwjlbDs9jJBPQ==", + "dev": true, + "requires": { + "uc.micro": "^1.0.1" + } + }, + "livereload": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/livereload/-/livereload-0.6.3.tgz", + "integrity": "sha512-5SVeqHbKQWB69himud5GNRS8w1RgnMrYBnuIeZMiQ5ZctsIvhFfhKJclihxUS3NkOV7354rnA9rRz1IQBsgaNQ==", + "dev": true, + "requires": { + "chokidar": "^1.7.0", + "opts": ">= 1.2.0", + "ws": "^1.1.1" + }, + "dependencies": { + "anymatch": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-1.3.2.tgz", + "integrity": "sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA==", + "dev": true, + "requires": { + "micromatch": "^2.1.5", + "normalize-path": "^2.0.0" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "dev": true + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "chokidar": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", + "integrity": "sha512-mk8fAWcRUOxY7btlLtitj3A45jOwSAxH4tOFOoEGbVsl6cL6pPMWUy7dwZ/canfj3QEdP6FHSnf/l1c6/WkzVg==", + "dev": true, + "requires": { + "anymatch": "^1.3.0", + "async-each": "^1.0.0", + "fsevents": "^1.0.0", + "glob-parent": "^2.0.0", + "inherits": "^2.0.1", + "is-binary-path": "^1.0.0", + "is-glob": "^2.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.0.0" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "glob-parent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-2.0.0.tgz", + "integrity": "sha512-JDYOvfxio/t42HKdxkAYaCiBN7oYiuxykOxKxdaUW5Qn0zaYN3gRQWolrwdnf0shM9/EP0ebuuTmyoXNr1cC5w==", + "dev": true, + "requires": { + "is-glob": "^2.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + }, + "dependencies": { + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + } + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "ws": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ws/-/ws-1.1.5.tgz", + "integrity": "sha512-o3KqipXNUdS7wpQzBHSe180lBGO60SoK0yVo3CYJgb2MkobuWuBX6dhkYP5ORCLd55y+SaflMOV5fqAB53ux4w==", + "dev": true, + "requires": { + "options": ">=0.0.5", + "ultron": "1.0.x" + } + } + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha512-cy7ZdNRXdablkXYNI049pthVeXFurRyb9+hA/dZzerZ0pGTx42z+y+ssxBaVV2l70t1muq5IdKhn4UtcoGUY9A==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + } + } + }, + "loader-utils": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-1.4.2.tgz", + "integrity": "sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==", + "dev": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^1.0.1" + }, + "dependencies": { + "json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "requires": { + "minimist": "^1.2.0" + } + } + } + }, + "localtunnel": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/localtunnel/-/localtunnel-2.0.2.tgz", + "integrity": "sha512-n418Cn5ynvJd7m/N1d9WVJISLJF/ellZnfsLnx8WBWGzxv/ntNcFkJ1o6se5quUhCplfLGBNL5tYHiq5WF3Nug==", + "dev": true, + "requires": { + "axios": "0.21.4", + "debug": "4.3.2", + "openurl": "1.1.1", + "yargs": "17.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "debug": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.2.tgz", + "integrity": "sha512-mOp8wKcvj7XxC78zLgw/ZA+6TSgkoE2C/ienthhRD298T7UNwAg9diBpLRxC0mOezLl4B0xV7M0cCO6P/O0Xhw==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, + "yargs": { + "version": "17.1.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.1.1.tgz", + "integrity": "sha512-c2k48R0PwKIqKhPMWjeiF6y2xY/gPMUlro0sgxqXpbOIohWiLNXWslsootttv7E1e73QPAMQSg5FeySbVcpsPQ==", + "dev": true, + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + } + }, + "yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true + } + } + }, + "locate-character": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-2.0.5.tgz", + "integrity": "sha512-n2GmejDXtOPBAZdIiEFy5dJ5N38xBCXLNOtw2WpB9kGh6pnrEuKlwYI+Tkpofc4wDtVXHtoAOJaMRlYG/oYaxg==", + "dev": true + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "dev": true + }, + "lodash.debounce": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", + "dev": true + }, + "lodash.isfinite": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/lodash.isfinite/-/lodash.isfinite-3.3.2.tgz", + "integrity": "sha512-7FGG40uhC8Mm633uKW1r58aElFlBlxCrg9JfSi3P6aYiWmfiWF0PgMd86ZUsxE5GwWPdHoS2+48bwTh2VPkIQA==", + "dev": true + }, + "lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", + "dev": true + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true + }, + "loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "requires": { + "js-tokens": "^3.0.0 || ^4.0.0" + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha512-RPNliZOFkqFumDhvYqOaNY4Uz9oJM2K9tC6JWsJJsNdhuONW4LQHRBpb0qf4pJApVffI5N39SwzWZJuEhfd7eQ==", + "dev": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "ltgt": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz", + "integrity": "sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==", + "dev": true + }, + "magic-string": { + "version": "0.22.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.22.5.tgz", + "integrity": "sha512-oreip9rJZkzvA8Qzk9HFs8fZGF/u7H/gtrE8EN6RjKJ9kh2HlC+yQ2QezifqTZfGyiuAV0dRv5a+y/8gBb1m9w==", + "dev": true, + "requires": { + "vlq": "^0.2.2" + } + }, + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "requires": { + "tmpl": "1.0.5" + } + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==", + "dev": true + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "markdown-it": { + "version": "12.3.2", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-12.3.2.tgz", + "integrity": "sha512-TchMembfxfNVpHkbtriWltGWc+m3xszaRD0CZup7GFFhzIgQqxIfn3eGj1yZpfuflzPvfkt611B2Q/Bsk1YnGg==", + "dev": true, + "requires": { + "argparse": "^2.0.1", + "entities": "~2.1.0", + "linkify-it": "^3.0.1", + "mdurl": "^1.0.1", + "uc.micro": "^1.0.5" + }, + "dependencies": { + "argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + } + } + }, + "markdown-it-anchor": { + "version": "8.6.6", + "resolved": "https://registry.npmjs.org/markdown-it-anchor/-/markdown-it-anchor-8.6.6.tgz", + "integrity": "sha512-jRW30YGywD2ESXDc+l17AiritL0uVaSnWsb26f+68qaW9zgbIIr1f4v2Nsvc0+s0Z2N3uX6t/yAw7BwCQ1wMsA==", + "dev": true + }, + "marked": { + "version": "4.2.12", + "resolved": "https://registry.npmjs.org/marked/-/marked-4.2.12.tgz", + "integrity": "sha512-yr8hSKa3Fv4D3jdZmtMMPghgVt6TWbk86WQaWhDloQjRSQhMMYCAro7jP7VDJrjjdV8pxVxMssXS8B8Y5DZ5aw==", + "dev": true + }, + "math-expression-evaluator": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/math-expression-evaluator/-/math-expression-evaluator-1.4.0.tgz", + "integrity": "sha512-4vRUvPyxdO8cWULGTh9dZWL2tZK6LDBvj+OGHBER7poH9Qdt7kXEoj20wiz4lQUbUXQZFjPbe5mVDo9nutizCw==", + "dev": true + }, + "math-random": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/math-random/-/math-random-1.0.4.tgz", + "integrity": "sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A==", + "dev": true + }, + "md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" + } + }, + "mdurl": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-1.0.1.tgz", + "integrity": "sha512-/sKlQJCBYVY9Ers9hqzKou4H6V5UWc/M59TH2dvkt+84itfnq7uFOMLpOiOS4ujvHP4etln18fmIxA5R5fll0g==", + "dev": true + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + } + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha512-TNdwZs0skRlpPpCUK25StC4VH+tP5GgeY1HQOOGP+lQ2xtdkN2VtT/5tiX9k3IWpkBPV9b3LsAWXn4GGi/PrSA==", + "dev": true, + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + } + }, + "merge": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/merge/-/merge-1.2.1.tgz", + "integrity": "sha512-VjFo4P5Whtj4vsLzsYBu5ayHhoHJ0UqNm7ibvShmbmoz7tGi0vXaoJbGdB+GmDMLUdg8DpQXEIeVDAe8MaABvQ==", + "dev": true + }, + "merge-stream": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-1.0.1.tgz", + "integrity": "sha512-e6RM36aegd4f+r8BZCcYXlO2P3H6xbUM6ktL2Xmf45GAOit9bI4z6/3VU7JwllVO1L7u0UDSg/EhzQ5lmMLolA==", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + } + }, + "micromatch": { + "version": "2.3.11", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-2.3.11.tgz", + "integrity": "sha512-LnU2XFEk9xxSJ6rfgAry/ty5qwUTyHYOBU0g4R6tIw5ljwgGIBmiKhRWLw5NpMOnrgUNcDJ4WMp8rl3sYVHLNA==", + "dev": true, + "requires": { + "arr-diff": "^2.0.0", + "array-unique": "^0.2.1", + "braces": "^1.8.2", + "expand-brackets": "^0.1.4", + "extglob": "^0.3.1", + "filename-regex": "^2.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.1", + "kind-of": "^3.0.2", + "normalize-path": "^2.0.1", + "object.omit": "^2.0.0", + "parse-glob": "^3.0.4", + "regex-cache": "^0.4.2" + }, + "dependencies": { + "braces": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/braces/-/braces-1.8.5.tgz", + "integrity": "sha512-xU7bpz2ytJl1bH9cgIurjpg/n8Gohy9GTw81heDYLJQ4RU60dlyJsa+atVF2pI0yMMvKxI9HkKwjePCj5XI1hw==", + "dev": true, + "requires": { + "expand-range": "^1.8.1", + "preserve": "^0.2.0", + "repeat-element": "^1.1.2" + } + }, + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "miller-rabin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/miller-rabin/-/miller-rabin-4.0.1.tgz", + "integrity": "sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==", + "dev": true, + "requires": { + "bn.js": "^4.0.0", + "brorand": "^1.0.1" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "mime": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.4.1.tgz", + "integrity": "sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ==", + "dev": true + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "requires": { + "mime-db": "1.52.0" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, + "minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true + }, + "minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "dev": true + }, + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==", + "dev": true + }, + "mitt": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-1.2.0.tgz", + "integrity": "sha512-r6lj77KlwqLhIUku9UWYes7KJtsczvolZkzp8hbaDPPaE24OmWl5s539Mytlj22siEQKosZ26qCBgda2PKwoJw==", + "dev": true + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "dev": true, + "requires": { + "minimist": "^1.2.6" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha512-r65nCZhrbXXb6dXOACihYApHw2Q6pV0M3V0PSxd74N0+D8nzAdEAITq2oAjA1jVnKI+tGvEBUpqiMh0+rW6zDQ==", + "dev": true + }, + "nan": { + "version": "2.17.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.17.0.tgz", + "integrity": "sha512-2ZTgtl0nJsO0KQCjEpxcIr5D+Yv90plTitZt9JBfQvVJDS5seMl3FOvsh3+9CoYWXf/1l5OaZzzF6nDm4cagaQ==", + "dev": true + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node-gyp": { + "version": "3.8.0", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz", + "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==", + "dev": true, + "requires": { + "fstream": "^1.0.0", + "glob": "^7.0.3", + "graceful-fs": "^4.1.2", + "mkdirp": "^0.5.0", + "nopt": "2 || 3", + "npmlog": "0 || 1 || 2 || 3 || 4", + "osenv": "0", + "request": "^2.87.0", + "rimraf": "2", + "semver": "~5.3.0", + "tar": "^2.0.0", + "which": "1" + }, + "dependencies": { + "semver": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz", + "integrity": "sha512-mfmm3/H9+67MCVix1h+IXTpDwL6710LyHuk7+cWC9T1mE0qz4iHhh6r4hU2wrIT9iTsAAC2XQRvfblL028cpLw==", + "dev": true + } + } + }, + "node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node-notifier": { + "version": "5.4.5", + "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-5.4.5.tgz", + "integrity": "sha512-tVbHs7DyTLtzOiN78izLA85zRqB9NvEXkAf014Vx3jtSvn/xBl6bR8ZYifj+dFcFrKI21huSQgJZ6ZtL3B4HfQ==", + "dev": true, + "requires": { + "growly": "^1.3.0", + "is-wsl": "^1.1.0", + "semver": "^5.5.0", + "shellwords": "^0.1.1", + "which": "^1.3.0" + } + }, + "node-releases": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.9.tgz", + "integrity": "sha512-2xfmOrRkGogbTK9R6Leda0DGiXeY3p2NJpy4+gNCffdUvV6mdEJnaDEic1i3Ec2djAo8jWYoJMR5PB0MSMpxUA==", + "dev": true + }, + "node-sass": { + "version": "4.14.1", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-4.14.1.tgz", + "integrity": "sha512-sjCuOlvGyCJS40R8BscF5vhVlQjNN069NtQ1gSxyK1u9iqvn6tf7O1R4GNowVZfiZUCRt5MmMs1xd+4V/7Yr0g==", + "dev": true, + "requires": { + "async-foreach": "^0.1.3", + "chalk": "^1.1.1", + "cross-spawn": "^3.0.0", + "gaze": "^1.0.0", + "get-stdin": "^4.0.1", + "glob": "^7.0.3", + "in-publish": "^2.0.0", + "lodash": "^4.17.15", + "meow": "^3.7.0", + "mkdirp": "^0.5.1", + "nan": "^2.13.2", + "node-gyp": "^3.8.0", + "npmlog": "^4.0.0", + "request": "^2.88.0", + "sass-graph": "2.2.5", + "stdout-stream": "^1.4.0", + "true-case-path": "^1.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "cross-spawn": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-3.0.1.tgz", + "integrity": "sha512-eZ+m1WNhSZutOa/uRblAc9Ut5MQfukFrFMtPSm3bZCA888NmMd5AWXWdgRZ80zd+pTk1P2JrGjg9pUPTvl2PWQ==", + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + }, + "yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + } + } + }, + "nopt": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz", + "integrity": "sha512-4GUt3kSEYmk4ITxzB/b9vaIDfUVWN/Ml1Fwl11IlnIG2iaJ9O6WXZ9SrYM9NLI8OCBieN2Y8SWC2oJV0RQ7qYg==", + "dev": true, + "requires": { + "abbrev": "1" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "dev": true + }, + "normalize-url": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-1.9.1.tgz", + "integrity": "sha512-A48My/mtCklowHBlI8Fq2jFWK4tX4lJ5E6ytFsSOq1fzpvT0SQSgKhSg7lN5c2uYFOrUAOQp6zhhJnpp1eMloQ==", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "prepend-http": "^1.0.0", + "query-string": "^4.1.0", + "sort-keys": "^1.0.0" + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "num2fraction": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/num2fraction/-/num2fraction-1.2.2.tgz", + "integrity": "sha512-Y1wZESM7VUThYY+4W+X4ySH2maqcA+p7UR+w8VWNWVAd6lwuXXWz/w/Cz43J/dI2I+PS6wD5N+bJUF+gjWvIqg==", + "dev": true + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "dev": true + }, + "nwsapi": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.2.tgz", + "integrity": "sha512-90yv+6538zuvUMnN+zCr8LuV6bPFdq50304114vJYJ8RDyK8D5O9Phpbd6SZWgI7PwzmmfN1upeOJlvybDSgCw==", + "dev": true + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "object-inspect": { + "version": "1.12.3", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", + "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==", + "dev": true, + "requires": { + "isobject": "^3.0.0" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + } + } + }, + "object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.5.tgz", + "integrity": "sha512-yDNzckpM6ntyQiGTik1fKV1DcVDRS+w8bvpWNCBanvH5LfRX9O8WTHqQzG4RZwRAM4I0oU7TV11Lj5v0g20ibw==", + "dev": true, + "requires": { + "array.prototype.reduce": "^1.0.5", + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "object.omit": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/object.omit/-/object.omit-2.0.1.tgz", + "integrity": "sha512-UiAM5mhmIuKLsOvrL+B0U2d1hXHF3bFYWIuH1LMpuV2EJEHG1Ntz06PgLEHjm6VFd87NpH8rastvPoyv6UW2fA==", + "dev": true, + "requires": { + "for-own": "^0.1.4", + "is-extendable": "^0.1.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + }, + "dependencies": { + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + } + } + }, + "octal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/octal/-/octal-1.0.0.tgz", + "integrity": "sha512-nnda7W8d+A3vEIY+UrDQzzboPf1vhs4JYVhff5CDkq9QNoZY7Xrxeo/htox37j9dZf7yNHevZzqtejWgy1vCqQ==", + "dev": true + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "requires": { + "ee-first": "1.1.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + }, + "dependencies": { + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + } + } + }, + "opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "dev": true + }, + "openurl": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/openurl/-/openurl-1.1.1.tgz", + "integrity": "sha512-d/gTkTb1i1GKz5k3XE3XFV/PxQ1k45zDqGP2OA7YhgsaLoqm6qRvARAZOFer1fcXritWlGBRCu/UgeS4HAnXAA==", + "dev": true + }, + "opn": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/opn/-/opn-5.3.0.tgz", + "integrity": "sha512-bYJHo/LOmoTd+pfiYhfZDnf9zekVJrY+cnS2a5F2x+w5ppvTqObojTP7WiFG+kVZs9Inw+qQ/lw7TroWwhdd2g==", + "dev": true, + "requires": { + "is-wsl": "^1.1.0" + } + }, + "optionator": { + "version": "0.8.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", + "dev": true, + "requires": { + "deep-is": "~0.1.3", + "fast-levenshtein": "~2.0.6", + "levn": "~0.3.0", + "prelude-ls": "~1.1.2", + "type-check": "~0.3.2", + "word-wrap": "~1.2.3" + } + }, + "options": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/options/-/options-0.0.6.tgz", + "integrity": "sha512-bOj3L1ypm++N+n7CEbbe473A414AB7z+amKYshRb//iuL3MpdDCLhPnw6aVTdKB9g5ZRVHIEp8eUln6L2NUStg==", + "dev": true + }, + "opts": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/opts/-/opts-2.0.2.tgz", + "integrity": "sha512-k41FwbcLnlgnFh69f4qdUfvDQ+5vaSDnVPFI/y5XuhKRq97EnVVneO9F1ESVCdiVu4fCS2L8usX3mU331hB7pg==", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha512-B5JU3cabzk8c67mRRd3ECmROafjYMXbuzlwtqdM8IbS8ktlTix8aFGb2bAGKrSRIlnfKwovGUUr72JUPyOb6kQ==", + "dev": true + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha512-wB3wfAxZpk2AzOfUMJNL+d36xothRSyj8EXOa4f6GMqYDN9BJaaSISbsk+wS9abmnebVw95C2Kb5t85UmpCxuw==", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "dev": true + }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "dev": true + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-queue": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-2.4.2.tgz", + "integrity": "sha512-n8/y+yDJwBjoLQe1GSJbbaYQLTI7QHNZI2+rpmCDbe++WLf9HC3gf6iqj5yfPAV71W4UF3ql5W1+UBPXoXTxng==", + "dev": true + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "dev": true + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + }, + "dependencies": { + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + } + } + }, + "parse-asn1": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/parse-asn1/-/parse-asn1-5.1.6.tgz", + "integrity": "sha512-RnZRo1EPU6JBnra2vGHj0yhp6ebyjBZpmUCLHWiFhxlzvBCCpAuZ7elsBp1PVAbQN0/04VD/19rfzlBSwLstMw==", + "dev": true, + "requires": { + "asn1.js": "^5.2.0", + "browserify-aes": "^1.0.0", + "evp_bytestokey": "^1.0.0", + "pbkdf2": "^3.0.3", + "safe-buffer": "^5.1.1" + } + }, + "parse-glob": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/parse-glob/-/parse-glob-3.0.4.tgz", + "integrity": "sha512-FC5TeK0AwXzq3tUBFtH74naWkPQCEWs4K+xMxWZBlKDWu0bVHXGZa+KKqxKidd7xwhdZ19ZNuF2uO1M/r196HA==", + "dev": true, + "requires": { + "glob-base": "^0.3.0", + "is-dotfile": "^1.0.0", + "is-extglob": "^1.0.0", + "is-glob": "^2.0.0" + }, + "dependencies": { + "is-extglob": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-1.0.0.tgz", + "integrity": "sha512-7Q+VbVafe6x2T+Tu6NcOf6sRklazEPmBoB3IWk3WdGZM2iGUwU/Oe3Wtq5lSEkDTTlpp8yx+5t4pzO/i9Ty1ww==", + "dev": true + }, + "is-glob": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-2.0.1.tgz", + "integrity": "sha512-a1dBeB19NXsf/E0+FHqkagizel/LQw2DjSQpvQrj3zT+jYPpaUCryPnrQajXKFLCMuf4I6FhRpaGtw4lPrG6Eg==", + "dev": true, + "requires": { + "is-extglob": "^1.0.0" + } + } + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha512-QR/GGaKCkhwk1ePQNYDRKYZ3mwU9ypsKhB0XyFnLQdomyEqk3e8wpW3V5Jp88zbxK4n5ST1nqo+g9juTpownhQ==", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "parse-ms": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-1.0.1.tgz", + "integrity": "sha512-LpH1Cf5EYuVjkBvCDBYvkUPh+iv2bk3FHflxHkpCYT0/FZ1d3N3uJaLiHr4yGuMcFUhv6eAivitTvWZI4B/chg==", + "dev": true + }, + "parse5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-2.2.3.tgz", + "integrity": "sha512-yJQdbcT+hCt6HD+BuuUvjHUdNwerQIKSJSm7tXjtp6oIH5Mxbzlt/VIIeWxblsgcDt1+E7kxPeilD5McWswStA==", + "dev": true + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==", + "dev": true + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha512-S4eENJz1pkiQn9Znv33Q+deTOKmbl+jj1Fl+qiP/vYezj+S8x+J3Uo0ISrx/QoEvIlOaDWJhPaRd1flJ9HXZqg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + } + } + }, + "pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", + "dev": true, + "requires": { + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" + } + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==", + "dev": true + }, + "picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", + "dev": true + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz", + "integrity": "sha512-ojakdnUgL5pzJYWw2AIDEupaQCX5OPbM688ZevubICjdIX01PRSYKqm33fJoCOJBRseYCTUlQRnBNX+Pchaejw==", + "dev": true, + "requires": { + "find-up": "^2.1.0" + } + }, + "pn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/pn/-/pn-1.1.0.tgz", + "integrity": "sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA==", + "dev": true + }, + "portscanner": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/portscanner/-/portscanner-2.2.0.tgz", + "integrity": "sha512-IFroCz/59Lqa2uBvzK3bKDbDDIEaAY8XJ1jFxcLWTqosrsc32//P4VuSB2vZXoHiHqOmx8B5L5hnKOxL/7FlPw==", + "dev": true, + "requires": { + "async": "^2.6.0", + "is-number-like": "^1.0.3" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==", + "dev": true + }, + "postcss": { + "version": "6.0.23", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-6.0.23.tgz", + "integrity": "sha512-soOk1h6J3VMTZtVeVpv15/Hpdl2cBLX3CAw4TAbkpTJiNPk9YP/zWcD1ND+xEtvyuuvKzbxliTOIyvkSeSJ6ag==", + "dev": true, + "requires": { + "chalk": "^2.4.1", + "source-map": "^0.6.1", + "supports-color": "^5.4.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "postcss-calc": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-5.3.1.tgz", + "integrity": "sha512-iBcptYFq+QUh9gzP7ta2btw50o40s4uLI4UDVgd5yRAZtUDWc5APdl5yQDd2h/TyiZNbJrv0HiYhT102CMgN7Q==", + "dev": true, + "requires": { + "postcss": "^5.0.2", + "postcss-message-helpers": "^2.0.0", + "reduce-css-calc": "^1.2.6" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-colormin": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-2.2.2.tgz", + "integrity": "sha512-XXitQe+jNNPf+vxvQXIQ1+pvdQKWKgkx8zlJNltcMEmLma1ypDRDQwlLt+6cP26fBreihNhZxohh1rcgCH2W5w==", + "dev": true, + "requires": { + "colormin": "^1.0.5", + "postcss": "^5.0.13", + "postcss-value-parser": "^3.2.3" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-convert-values": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-2.6.1.tgz", + "integrity": "sha512-SE7mf25D3ORUEXpu3WUqQqy0nCbMuM5BEny+ULE/FXdS/0UMA58OdzwvzuHJRpIFlk1uojt16JhaEogtP6W2oA==", + "dev": true, + "requires": { + "postcss": "^5.0.11", + "postcss-value-parser": "^3.1.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-discard-comments": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-2.0.4.tgz", + "integrity": "sha512-yGbyBDo5FxsImE90LD8C87vgnNlweQkODMkUZlDVM/CBgLr9C5RasLGJxxh9GjVOBeG8NcCMatoqI1pXg8JNXg==", + "dev": true, + "requires": { + "postcss": "^5.0.14" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-discard-duplicates": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-2.1.0.tgz", + "integrity": "sha512-+lk5W1uqO8qIUTET+UETgj9GWykLC3LOldr7EehmymV0Wu36kyoHimC4cILrAAYpHQ+fr4ypKcWcVNaGzm0reA==", + "dev": true, + "requires": { + "postcss": "^5.0.4" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-discard-empty": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-2.1.0.tgz", + "integrity": "sha512-IBFoyrwk52dhF+5z/ZAbzq5Jy7Wq0aLUsOn69JNS+7YeuyHaNzJwBIYE0QlUH/p5d3L+OON72Fsexyb7OK/3og==", + "dev": true, + "requires": { + "postcss": "^5.0.14" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-discard-overridden": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-0.1.1.tgz", + "integrity": "sha512-IyKoDL8QNObOiUc6eBw8kMxBHCfxUaERYTUe2QF8k7j/xiirayDzzkmlR6lMQjrAM1p1DDRTvWrS7Aa8lp6/uA==", + "dev": true, + "requires": { + "postcss": "^5.0.16" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-discard-unused": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-discard-unused/-/postcss-discard-unused-2.2.3.tgz", + "integrity": "sha512-nCbFNfqYAbKCw9J6PSJubpN9asnrwVLkRDFc4KCwyUEdOtM5XDE/eTW3OpqHrYY1L4fZxgan7LLRAAYYBzwzrg==", + "dev": true, + "requires": { + "postcss": "^5.0.14", + "uniqs": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-filter-plugins": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/postcss-filter-plugins/-/postcss-filter-plugins-2.0.3.tgz", + "integrity": "sha512-T53GVFsdinJhgwm7rg1BzbeBRomOg9y5MBVhGcsV0CxurUdVj1UlPdKtn7aqYA/c/QVkzKMjq2bSV5dKG5+AwQ==", + "dev": true, + "requires": { + "postcss": "^5.0.4" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-load-config": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-1.2.0.tgz", + "integrity": "sha512-3fpCfnXo9Qd/O/q/XL4cJUhRsqjVD2V1Vhy3wOEcLE5kz0TGtdDXJSoiTdH4e847KphbEac4+EZSH4qLRYIgLw==", + "dev": true, + "requires": { + "cosmiconfig": "^2.1.0", + "object-assign": "^4.1.0", + "postcss-load-options": "^1.2.0", + "postcss-load-plugins": "^2.3.0" + } + }, + "postcss-load-options": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-load-options/-/postcss-load-options-1.2.0.tgz", + "integrity": "sha512-WKS5LJMZLWGwtfhs5ahb2ycpoYF3m0kK4QEaM+elr5EpiMt0H296P/9ETa13WXzjPwB0DDTBiUBBWSHoApQIJg==", + "dev": true, + "requires": { + "cosmiconfig": "^2.1.0", + "object-assign": "^4.1.0" + } + }, + "postcss-load-plugins": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/postcss-load-plugins/-/postcss-load-plugins-2.3.0.tgz", + "integrity": "sha512-/WGUMYhKiryWjYO6c7kAcqMuD7DVkaQ8HcbQenDme/d3OBOmrYMFObOKgUWyUy1uih5U2Dakq8H6VcJi5C9wHQ==", + "dev": true, + "requires": { + "cosmiconfig": "^2.1.1", + "object-assign": "^4.1.0" + } + }, + "postcss-merge-idents": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/postcss-merge-idents/-/postcss-merge-idents-2.1.7.tgz", + "integrity": "sha512-9DHmfCZ7/hNHhIKnNkz4CU0ejtGen5BbTRJc13Z2uHfCedeCUsK2WEQoAJRBL+phs68iWK6Qf8Jze71anuysWA==", + "dev": true, + "requires": { + "has": "^1.0.1", + "postcss": "^5.0.10", + "postcss-value-parser": "^3.1.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-merge-longhand": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-2.0.2.tgz", + "integrity": "sha512-ma7YvxjdLQdifnc1HFsW/AW6fVfubGyR+X4bE3FOSdBVMY9bZjKVdklHT+odknKBB7FSCfKIHC3yHK7RUAqRPg==", + "dev": true, + "requires": { + "postcss": "^5.0.4" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-merge-rules": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-2.1.2.tgz", + "integrity": "sha512-Wgg2FS6W3AYBl+5L9poL6ZUISi5YzL+sDCJfM7zNw/Q1qsyVQXXZ2cbVui6mu2cYJpt1hOKCGj1xA4mq/obz/Q==", + "dev": true, + "requires": { + "browserslist": "^1.5.2", + "caniuse-api": "^1.5.2", + "postcss": "^5.0.4", + "postcss-selector-parser": "^2.2.2", + "vendors": "^1.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "browserslist": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-1.7.7.tgz", + "integrity": "sha512-qHJblDE2bXVRYzuDetv/wAeHOJyO97+9wxC1cdCtyzgNuSozOyRCiiLaCR1f71AN66lQdVVBipWm63V+a7bPOw==", + "dev": true, + "requires": { + "caniuse-db": "^1.0.30000639", + "electron-to-chromium": "^1.2.7" + } + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-message-helpers": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/postcss-message-helpers/-/postcss-message-helpers-2.0.0.tgz", + "integrity": "sha512-tPLZzVAiIJp46TBbpXtrUAKqedXSyW5xDEo1sikrfEfnTs+49SBZR/xDdqCiJvSSbtr615xDsaMF3RrxS2jZlA==", + "dev": true + }, + "postcss-minify-font-values": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-1.0.5.tgz", + "integrity": "sha512-vFSPzrJhNe6/8McOLU13XIsERohBJiIFFuC1PolgajOZdRWqRgKITP/A4Z/n4GQhEmtbxmO9NDw3QLaFfE1dFQ==", + "dev": true, + "requires": { + "object-assign": "^4.0.1", + "postcss": "^5.0.4", + "postcss-value-parser": "^3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-minify-gradients": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-1.0.5.tgz", + "integrity": "sha512-DZhT0OE+RbVqVyGsTIKx84rU/5cury1jmwPa19bViqYPQu499ZU831yMzzsyC8EhiZVd73+h5Z9xb/DdaBpw7Q==", + "dev": true, + "requires": { + "postcss": "^5.0.12", + "postcss-value-parser": "^3.3.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-minify-params": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-1.2.2.tgz", + "integrity": "sha512-hhJdMVgP8vasrHbkKAk+ab28vEmPYgyuDzRl31V3BEB3QOR3L5TTIVEWLDNnZZ3+fiTi9d6Ker8GM8S1h8p2Ow==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.1", + "postcss": "^5.0.2", + "postcss-value-parser": "^3.0.2", + "uniqs": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-minify-selectors": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-2.1.1.tgz", + "integrity": "sha512-e13vxPBSo3ZaPne43KVgM+UETkx3Bs4/Qvm6yXI9HQpQp4nyb7HZ0gKpkF+Wn2x+/dbQ+swNpCdZSbMOT7+TIA==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.2", + "has": "^1.0.1", + "postcss": "^5.0.14", + "postcss-selector-parser": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-modules": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/postcss-modules/-/postcss-modules-1.5.0.tgz", + "integrity": "sha512-KiAihzcV0TxTTNA5OXreyIXctuHOfR50WIhqBpc8pe0Q5dcs/Uap9EVlifOI9am7zGGdGOJQ6B1MPYKo2UxgOg==", + "dev": true, + "requires": { + "css-modules-loader-core": "^1.1.0", + "generic-names": "^2.0.1", + "lodash.camelcase": "^4.3.0", + "postcss": "^7.0.1", + "string-hash": "^1.1.1" + }, + "dependencies": { + "picocolors": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", + "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", + "dev": true + }, + "postcss": { + "version": "7.0.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", + "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", + "dev": true, + "requires": { + "picocolors": "^0.2.1", + "source-map": "^0.6.1" + } + }, + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + } + } + }, + "postcss-modules-extract-imports": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-1.1.0.tgz", + "integrity": "sha512-zF9+UIEvtpeqMGxhpeT9XaIevQSrBBCz9fi7SwfkmjVacsSj8DY5eFVgn+wY8I9vvdDDwK5xC8Myq4UkoLFIkA==", + "dev": true, + "requires": { + "postcss": "^6.0.1" + } + }, + "postcss-modules-local-by-default": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-1.2.0.tgz", + "integrity": "sha512-X4cquUPIaAd86raVrBwO8fwRfkIdbwFu7CTfEOjiZQHVQwlHRSkTgH5NLDmMm5+1hQO8u6dZ+TOOJDbay1hYpA==", + "dev": true, + "requires": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + } + }, + "postcss-modules-scope": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-1.1.0.tgz", + "integrity": "sha512-LTYwnA4C1He1BKZXIx1CYiHixdSe9LWYVKadq9lK5aCCMkoOkFyZ7aigt+srfjlRplJY3gIol6KUNefdMQJdlw==", + "dev": true, + "requires": { + "css-selector-tokenizer": "^0.7.0", + "postcss": "^6.0.1" + } + }, + "postcss-modules-values": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-1.3.0.tgz", + "integrity": "sha512-i7IFaR9hlQ6/0UgFuqM6YWaCfA1Ej8WMg8A5DggnH1UGKJvTV/ugqq/KaULixzzOi3T/tF6ClBXcHGCzdd5unA==", + "dev": true, + "requires": { + "icss-replace-symbols": "^1.1.0", + "postcss": "^6.0.1" + } + }, + "postcss-normalize-charset": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-1.1.1.tgz", + "integrity": "sha512-RKgjEks83l8w4yEhztOwNZ+nLSrJ+NvPNhpS+mVDzoaiRHZQVoG7NF2TP5qjwnaN9YswUhj6m1E0S0Z+WDCgEQ==", + "dev": true, + "requires": { + "postcss": "^5.0.5" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-normalize-url": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-3.0.8.tgz", + "integrity": "sha512-WqtWG6GV2nELsQEFES0RzfL2ebVwmGl/M8VmMbshKto/UClBo+mznX8Zi4/hkThdqx7ijwv+O8HWPdpK7nH/Ig==", + "dev": true, + "requires": { + "is-absolute-url": "^2.0.0", + "normalize-url": "^1.4.0", + "postcss": "^5.0.14", + "postcss-value-parser": "^3.2.3" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-ordered-values": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-2.2.3.tgz", + "integrity": "sha512-5RB1IUZhkxDCfa5fx/ogp/A82mtq+r7USqS+7zt0e428HJ7+BHCxyeY39ClmkkUtxdOd3mk8gD6d9bjH2BECMg==", + "dev": true, + "requires": { + "postcss": "^5.0.4", + "postcss-value-parser": "^3.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-reduce-idents": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-idents/-/postcss-reduce-idents-2.4.0.tgz", + "integrity": "sha512-0+Ow9e8JLtffjumJJFPqvN4qAvokVbdQPnijUDSOX8tfTwrILLP4ETvrZcXZxAtpFLh/U0c+q8oRMJLr1Kiu4w==", + "dev": true, + "requires": { + "postcss": "^5.0.4", + "postcss-value-parser": "^3.0.2" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-reduce-initial": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-1.0.1.tgz", + "integrity": "sha512-jJFrV1vWOPCQsIVitawGesRgMgunbclERQ/IRGW7r93uHrVzNQQmHQ7znsOIjJPZ4yWMzs5A8NFhp3AkPHPbDA==", + "dev": true, + "requires": { + "postcss": "^5.0.4" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-reduce-transforms": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-1.0.4.tgz", + "integrity": "sha512-lGgRqnSuAR5i5uUg1TA33r9UngfTadWxOyL2qx1KuPoCQzfmtaHjp9PuwX7yVyRxG3BWBzeFUaS5uV9eVgnEgQ==", + "dev": true, + "requires": { + "has": "^1.0.1", + "postcss": "^5.0.8", + "postcss-value-parser": "^3.0.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-selector-parser": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-2.2.3.tgz", + "integrity": "sha512-3pqyakeGhrO0BQ5+/tGTfvi5IAUAhHRayGK8WFSu06aEv2BmHoXw/Mhb+w7VY5HERIuC+QoUI7wgrCcq2hqCVA==", + "dev": true, + "requires": { + "flatten": "^1.0.2", + "indexes-of": "^1.0.1", + "uniq": "^1.0.1" + } + }, + "postcss-svgo": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-2.1.6.tgz", + "integrity": "sha512-y5AdQdgBoF4rbpdbeWAJuxE953g/ylRfVNp6mvAi61VCN/Y25Tu9p5mh3CyI42WbTRIiwR9a1GdFtmDnNPeskQ==", + "dev": true, + "requires": { + "is-svg": "^2.0.0", + "postcss": "^5.0.14", + "postcss-value-parser": "^3.2.3", + "svgo": "^0.7.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-unique-selectors": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-2.0.2.tgz", + "integrity": "sha512-WZX8r1M0+IyljoJOJleg3kYm10hxNYF9scqAT7v/xeSX1IdehutOM85SNO0gP9K+bgs86XERr7Ud5u3ch4+D8g==", + "dev": true, + "requires": { + "alphanum-sort": "^1.0.1", + "postcss": "^5.0.4", + "uniqs": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "postcss-value-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==", + "dev": true + }, + "postcss-zindex": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/postcss-zindex/-/postcss-zindex-2.2.0.tgz", + "integrity": "sha512-uhRZ2hRgj0lorxm9cr62B01YzpUe63h0RXMXQ4gWW3oa2rpJh+FJAiEAytaFCPU/VgaBS+uW2SJ1XKyDNz1h4w==", + "dev": true, + "requires": { + "has": "^1.0.1", + "postcss": "^5.0.4", + "uniqs": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + }, + "dependencies": { + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "has-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", + "dev": true + }, + "postcss": { + "version": "5.2.18", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-5.2.18.tgz", + "integrity": "sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "js-base64": "^2.1.9", + "source-map": "^0.5.6", + "supports-color": "^3.2.3" + } + }, + "supports-color": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", + "dev": true, + "requires": { + "has-flag": "^1.0.0" + } + } + } + }, + "prelude-ls": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", + "integrity": "sha512-ESF23V4SKG6lVSGZgYNpbsiaAkdab6ZgOxe52p7+Kid3W3u3bxR4Vfd/o21dmN7jSt0IwgZ4v5MUd26FEtXE9w==", + "dev": true + }, + "prepend-http": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-1.0.4.tgz", + "integrity": "sha512-PhmXi5XmoyKw1Un4E+opM2KcsJInDvKyuOumcjjw3waw86ZNjHwVUOOWLc4bCzLdcKNaWBH9e99sbWzDQsVaYg==", + "dev": true + }, + "preserve": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/preserve/-/preserve-0.2.0.tgz", + "integrity": "sha512-s/46sYeylUfHNjI+sA/78FAHlmIuKqI9wNnzEOGehAlUUYeObv5C2mOinXBjyUyWmJ2SfcS2/ydApH4hTF4WXQ==", + "dev": true + }, + "pretty-format": { + "version": "23.6.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-23.6.0.tgz", + "integrity": "sha512-zf9NV1NSlDLDjycnwm6hpFATCGl/K1lt0R/GdkAK2O5LN/rwJoB+Mh93gGJjut4YbmecbfgLWVGSTCr0Ewvvbw==", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0", + "ansi-styles": "^3.2.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true + } + } + }, + "pretty-ms": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-3.2.0.tgz", + "integrity": "sha512-ZypexbfVUGTFxb0v+m1bUyy92DHe5SyYlnyY0msyms5zd3RwyvNgyxZZsXXgoyzlxjx5MiqtXUdhUfvQbe0A2Q==", + "dev": true, + "requires": { + "parse-ms": "^1.0.0" + } + }, + "private": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/private/-/private-0.1.8.tgz", + "integrity": "sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==", + "dev": true + }, + "process-es6": { + "version": "0.11.6", + "resolved": "https://registry.npmjs.org/process-es6/-/process-es6-0.11.6.tgz", + "integrity": "sha512-GYBRQtL4v3wgigq10Pv58jmTbFXlIiTbSfgnNqZLY0ldUPqy1rRxDI5fCjoCpnM6TqmHQI8ydzTBXW86OYc0gA==", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "promise.series": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/promise.series/-/promise.series-0.2.0.tgz", + "integrity": "sha512-VWQJyU2bcDTgZw8kpfBpB/ejZASlCrzwz5f2hjb/zlujOEB4oeiAhHygAWq8ubsX2GVkD4kCU5V2dwOTaCY5EQ==", + "dev": true + }, + "prompts": { + "version": "0.1.14", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-0.1.14.tgz", + "integrity": "sha512-rxkyiE9YH6zAz/rZpywySLKkpaj0NMVyNw1qhsubdbjjSgcayjTShDreZGlFMcGSu5sab3bAKPfFk78PB90+8w==", + "dev": true, + "requires": { + "kleur": "^2.0.1", + "sisteransi": "^0.1.1" + } + }, + "prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "dev": true + }, + "pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "dev": true + }, + "psl": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==", + "dev": true + }, + "public-encrypt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/public-encrypt/-/public-encrypt-4.0.3.tgz", + "integrity": "sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==", + "dev": true, + "requires": { + "bn.js": "^4.1.0", + "browserify-rsa": "^4.0.0", + "create-hash": "^1.1.0", + "parse-asn1": "^5.0.0", + "randombytes": "^2.0.1", + "safe-buffer": "^5.1.2" + }, + "dependencies": { + "bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", + "dev": true + } + } + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "punycode": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", + "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==", + "dev": true + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", + "dev": true + }, + "qs": { + "version": "6.5.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.3.tgz", + "integrity": "sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==", + "dev": true + }, + "query-string": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-4.3.4.tgz", + "integrity": "sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==", + "dev": true, + "requires": { + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + } + }, + "randomatic": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/randomatic/-/randomatic-3.1.1.tgz", + "integrity": "sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw==", + "dev": true, + "requires": { + "is-number": "^4.0.0", + "kind-of": "^6.0.0", + "math-random": "^1.0.1" + }, + "dependencies": { + "is-number": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-4.0.0.tgz", + "integrity": "sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ==", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } + } + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "randomfill": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/randomfill/-/randomfill-1.0.4.tgz", + "integrity": "sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==", + "dev": true, + "requires": { + "randombytes": "^2.0.5", + "safe-buffer": "^5.1.0" + } + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "dev": true + }, + "raw-body": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", + "dev": true, + "requires": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" + } + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha512-7BGwRHqt4s/uVbuyoeejRn4YmFnYZiFl4AuaeXHlgZf3sONF0SOGlxs2Pw8g6hCKupo08RafIO5YXFNOKTfwsQ==", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha512-WD9MTlNtI55IwYUS27iHh9tK3YoIVhxis8yKhLpTqWtml739uXc9NWTpxoHkfZf3+DkCCsXox94/VWZniuZm6A==", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + }, + "dependencies": { + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha512-jvElSjyuo4EMQGoTwo1uJU5pQMwTW5lS1x05zzfJuTIyLR3zwO27LYrxNg+dlvKpGOuGy/MzBdXh80g0ve5+HA==", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha512-yTltuKuhtNeFJKa1PiRzfLAU5182q1y4Eb4XCJ3PBqyzEDkAZRzBrKKBct682ls9reBVHf9udYLN5Nd+K1B9BQ==", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + } + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" + } + }, + "realpath-native": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/realpath-native/-/realpath-native-1.1.0.tgz", + "integrity": "sha512-wlgPA6cCIIg9gKz0fgAPjnzh4yR/LnXovwuo9hvyGvx3h8nX4+/iLZplfUWasXpqD8BdnGnP5njOFjkUwPzvjA==", + "dev": true, + "requires": { + "util.promisify": "^1.0.0" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha512-qtW5hKzGQZqKoh6JNSD+4lfitfPKGz42e6QwiRmPM5mmKtR0N41AbJRYu0xJi7nhOJ4WDgRkKvAk6tw4WIwR4g==", + "dev": true, + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "reduce-css-calc": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/reduce-css-calc/-/reduce-css-calc-1.3.0.tgz", + "integrity": "sha512-0dVfwYVOlf/LBA2ec4OwQ6p3X9mYxn/wOl2xTcLwjnPYrkgEfPx3VI4eGCH3rQLlPISG5v9I9bkZosKsNRTRKA==", + "dev": true, + "requires": { + "balanced-match": "^0.4.2", + "math-expression-evaluator": "^1.2.14", + "reduce-function-call": "^1.0.1" + }, + "dependencies": { + "balanced-match": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-0.4.2.tgz", + "integrity": "sha512-STw03mQKnGUYtoNjmowo4F2cRmIIxYEGiMsjjwla/u5P1lxadj/05WkNaFjNiKTgJkj8KiXbgAiRTmcQRwQNtg==", + "dev": true + } + } + }, + "reduce-function-call": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/reduce-function-call/-/reduce-function-call-1.0.3.tgz", + "integrity": "sha512-Hl/tuV2VDgWgCSEeWMLwxLZqX7OK59eU1guxXsRKTAyeYimivsKdtcV4fu3r710tpG5GmDKDhQ0HSZLExnNmyQ==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "regenerate": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", + "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", + "dev": true + }, + "regenerate-unicode-properties": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.0.tgz", + "integrity": "sha512-d1VudCLoIGitcU/hEg2QqvyGZQmdC0Lf8BqdOMXGFSvJP4bNV1+XqbPQeHHLD51Jh4QJJ225dlIFvY4Ly6MXmQ==", + "dev": true, + "requires": { + "regenerate": "^1.4.2" + } + }, + "regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "dev": true + }, + "regenerator-transform": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.1.tgz", + "integrity": "sha512-knzmNAcuyxV+gQCufkYcvOqX/qIIfHLv0u5x79kRxuGojfYVky1f15TzZEu2Avte8QGepvUNTnLskf8E6X6Vyg==", + "dev": true, + "requires": { + "@babel/runtime": "^7.8.4" + } + }, + "regex-cache": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/regex-cache/-/regex-cache-0.4.4.tgz", + "integrity": "sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ==", + "dev": true, + "requires": { + "is-equal-shallow": "^0.1.3" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + } + }, + "regexpp": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-2.0.1.tgz", + "integrity": "sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw==", + "dev": true + }, + "regexpu-core": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.2.2.tgz", + "integrity": "sha512-T0+1Zp2wjF/juXMrMxHxidqGYn8U4R+zleSJhX9tQ1PUsS8a9UtYfbsF9LdiVgNX3kiX8RNaKM42nfSgvFJjmw==", + "dev": true, + "requires": { + "regenerate": "^1.4.2", + "regenerate-unicode-properties": "^10.1.0", + "regjsgen": "^0.7.1", + "regjsparser": "^0.9.1", + "unicode-match-property-ecmascript": "^2.0.0", + "unicode-match-property-value-ecmascript": "^2.1.0" + } + }, + "regjsgen": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/regjsgen/-/regjsgen-0.7.1.tgz", + "integrity": "sha512-RAt+8H2ZEzHeYWxZ3H2z6tF18zyyOnlcdaafLrm21Bguj7uZy6ULibiAFdXEtKQY4Sy7wDTwDiOazasMLc4KPA==", + "dev": true + }, + "regjsparser": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", + "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", + "dev": true, + "requires": { + "jsesc": "~0.5.0" + }, + "dependencies": { + "jsesc": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", + "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", + "dev": true + } + } + }, + "remove-trailing-separator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", + "integrity": "sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==", + "dev": true + }, + "repeat-element": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", + "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha512-ZqtSMuVybkISo2OWvqvm7iHSWngvdaW3IpsT9/uP8v4gMi591LY6h35wdOfvQdWCKFWZWm2Y1Opp4kV7vQKT6A==", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "request-promise-core": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", + "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", + "dev": true, + "requires": { + "lodash": "^4.17.19" + } + }, + "request-promise-native": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", + "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", + "dev": true, + "requires": { + "request-promise-core": "1.1.4", + "stealthy-require": "^1.1.1", + "tough-cookie": "^2.3.3" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true + }, + "require-from-string": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-1.2.1.tgz", + "integrity": "sha512-H7AkJWMobeskkttHyhTVtS0fxpFLjxhbfMa6Bk3wimP7sdPRGL3EyCg3sAQenFfAe+xQ+oAc85Nmtvq0ROM83Q==", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha512-IqSUtOVP4ksd1C/ej5zeEh/BIP2ajqpn8c5x+q99gvcIG/Qf0cud5raVnE/Dwd0ua9TXYDoDc0RE5hBSdz22Ug==", + "dev": true + }, + "require-relative": { + "version": "0.8.7", + "resolved": "https://registry.npmjs.org/require-relative/-/require-relative-0.8.7.tgz", + "integrity": "sha512-AKGr4qvHiryxRb19m3PsLRGuKVAbJLUD7E6eOaHkfKhwc+vSgVOCY5xNvm9EkolBKTOf0GrQAZKLimOCz81Khg==", + "dev": true + }, + "requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true + }, + "requizzle": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/requizzle/-/requizzle-0.2.4.tgz", + "integrity": "sha512-JRrFk1D4OQ4SqovXOgdav+K8EAhSB/LJZqCz8tbX0KObcdeM15Ss59ozWMBWmmINMagCwmqn4ZNryUGpBsl6Jw==", + "dev": true, + "requires": { + "lodash": "^4.17.21" + } + }, + "reserved-words": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/reserved-words/-/reserved-words-0.1.2.tgz", + "integrity": "sha512-0S5SrIUJ9LfpbVl4Yzij6VipUdafHrOTzvmfazSw/jeZrZtQK303OPZW+obtkaw7jQlTQppy0UvZWm9872PbRw==", + "dev": true + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "dev": true, + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha512-ccu8zQTrzVr954472aUVPLEcB3YpKSYR3cg/3lo1okzobPBM+1INXBbBZlDbnI/hbEocnf8j0QVo43hQKrbchg==", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==", + "dev": true + }, + "resp-modifier": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/resp-modifier/-/resp-modifier-6.0.2.tgz", + "integrity": "sha512-U1+0kWC/+4ncRFYqQWTx/3qkfE6a4B/h3XXgmXypfa0SPZ3t7cbbaFk297PjQS/yov24R18h6OZe6iZwj3NSLw==", + "dev": true, + "requires": { + "debug": "^2.2.0", + "minimatch": "^3.0.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "dev": true, + "requires": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" + } + }, + "rollup": { + "version": "0.57.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-0.57.1.tgz", + "integrity": "sha512-I18GBqP0qJoJC1K1osYjreqA8VAKovxuI3I81RSk0Dmr4TgloI0tAULjZaox8OsJ+n7XRrhH6i0G2By/pj1LCA==", + "dev": true, + "requires": { + "@types/acorn": "^4.0.3", + "acorn": "^5.5.3", + "acorn-dynamic-import": "^3.0.0", + "date-time": "^2.1.0", + "is-reference": "^1.1.0", + "locate-character": "^2.0.5", + "pretty-ms": "^3.1.0", + "require-relative": "^0.8.7", + "rollup-pluginutils": "^2.0.1", + "signal-exit": "^3.0.2", + "sourcemap-codec": "^1.4.1" + } + }, + "rollup-plugin-babel": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-babel/-/rollup-plugin-babel-4.4.0.tgz", + "integrity": "sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==", + "dev": true, + "requires": { + "@babel/helper-module-imports": "^7.0.0", + "rollup-pluginutils": "^2.8.1" + } + }, + "rollup-plugin-browsersync": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/rollup-plugin-browsersync/-/rollup-plugin-browsersync-0.2.6.tgz", + "integrity": "sha512-ld9WQ7HLuhhmWKf6za4OwUy1wYwkPcMYMPyxXVVVXRYo/y7mP7oB0qV3K7jrNhoLWwW8Q9J3oWSdff0oh04Ihw==", + "dev": true, + "requires": { + "browser-sync": "^2.18.13" + } + }, + "rollup-plugin-commonjs": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-commonjs/-/rollup-plugin-commonjs-8.4.1.tgz", + "integrity": "sha512-mg+WuD+jlwoo8bJtW3Mvx7Tz6TsIdMsdhuvCnDMoyjh0oxsVgsjB/N0X984RJCWwc5IIiqNVJhXeeITcc73++A==", + "dev": true, + "requires": { + "acorn": "^5.2.1", + "estree-walker": "^0.5.0", + "magic-string": "^0.22.4", + "resolve": "^1.4.0", + "rollup-pluginutils": "^2.0.1" + }, + "dependencies": { + "estree-walker": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.5.2.tgz", + "integrity": "sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig==", + "dev": true + } + } + }, + "rollup-plugin-conditional": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-conditional/-/rollup-plugin-conditional-1.1.1.tgz", + "integrity": "sha512-fkymp9859UoWAY+0JucXTvSIyatDpKTVQKZbbCSwEwxKlIBIABoIHg5sR/oAyrL4Se4rQoFO9ViEsCwyOnUrDA==", + "dev": true + }, + "rollup-plugin-eslint": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-eslint/-/rollup-plugin-eslint-5.1.0.tgz", + "integrity": "sha512-jmjqDC42HQsevgBuGQuDb9xhkei4IRkwufAbd6pe5Cbd969p/CjO3SPIwVeINSxXrzrGh9VG72EKtYVFwybxpQ==", + "dev": true, + "requires": { + "eslint": "^5.1.0", + "rollup-pluginutils": "^2.3.0" + } + }, + "rollup-plugin-json": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-json/-/rollup-plugin-json-2.3.1.tgz", + "integrity": "sha512-alQQQVPo2z9pl6LSK8QqyDlWwCH5KeE8YxgQv7fa/SeTxz+gQe36jBjcha7hQW68MrVh9Ms71EQaMZDAG3w2yw==", + "dev": true, + "requires": { + "rollup-pluginutils": "^2.0.1" + } + }, + "rollup-plugin-livereload": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-livereload/-/rollup-plugin-livereload-0.6.0.tgz", + "integrity": "sha512-iDNJgceV7qAXCVFkZrklGehGY/xdJZUCLByOdsSS/O2gfoFpWzMM9I+ysXW5peUgQ5Rik4kFbcXmomN4ESVwXQ==", + "dev": true, + "requires": { + "livereload": "^0.6.0" + } + }, + "rollup-plugin-node-builtins": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-node-builtins/-/rollup-plugin-node-builtins-2.1.2.tgz", + "integrity": "sha512-bxdnJw8jIivr2yEyt8IZSGqZkygIJOGAWypXvHXnwKAbUcN4Q/dGTx7K0oAJryC/m6aq6tKutltSeXtuogU6sw==", + "dev": true, + "requires": { + "browserify-fs": "^1.0.0", + "buffer-es6": "^4.9.2", + "crypto-browserify": "^3.11.0", + "process-es6": "^0.11.2" + } + }, + "rollup-plugin-node-globals": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-node-globals/-/rollup-plugin-node-globals-1.4.0.tgz", + "integrity": "sha512-xRkB+W/m1KLIzPUmG0ofvR+CPNcvuCuNdjVBVS7ALKSxr3EDhnzNceGkGi1m8MToSli13AzKFYH4ie9w3I5L3g==", + "dev": true, + "requires": { + "acorn": "^5.7.3", + "buffer-es6": "^4.9.3", + "estree-walker": "^0.5.2", + "magic-string": "^0.22.5", + "process-es6": "^0.11.6", + "rollup-pluginutils": "^2.3.1" + }, + "dependencies": { + "estree-walker": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.5.2.tgz", + "integrity": "sha512-XpCnW/AE10ws/kDAs37cngSkvgIR8aN3G0MS85m7dUpuK2EREo9VJ00uvw6Dg/hXEpfsE1I1TvJOJr+Z+TL+ig==", + "dev": true + } + } + }, + "rollup-plugin-node-resolve": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-node-resolve/-/rollup-plugin-node-resolve-3.4.0.tgz", + "integrity": "sha512-PJcd85dxfSBWih84ozRtBkB731OjXk0KnzN0oGp7WOWcarAFkVa71cV5hTJg2qpVsV2U8EUwrzHP3tvy9vS3qg==", + "dev": true, + "requires": { + "builtin-modules": "^2.0.0", + "is-module": "^1.0.0", + "resolve": "^1.1.6" + } + }, + "rollup-plugin-postcss": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/rollup-plugin-postcss/-/rollup-plugin-postcss-1.6.3.tgz", + "integrity": "sha512-se1qftVETua9ZGViud4A4gbgEQenjYnLPvjh3kTqbBZU+f0mQ9YvJptIuzPhEk5kZAHZhkwIkk2jk+byrn1XPA==", + "dev": true, + "requires": { + "chalk": "^2.0.0", + "concat-with-sourcemaps": "^1.0.5", + "cssnano": "^3.10.0", + "fs-extra": "^5.0.0", + "import-cwd": "^2.1.0", + "p-queue": "^2.4.2", + "pify": "^3.0.0", + "postcss": "^6.0.21", + "postcss-load-config": "^1.2.0", + "postcss-modules": "^1.1.0", + "promise.series": "^0.2.0", + "reserved-words": "^0.1.2", + "resolve": "^1.5.0", + "rollup-pluginutils": "^2.0.1", + "style-inject": "^0.3.0" + }, + "dependencies": { + "fs-extra": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-5.0.0.tgz", + "integrity": "sha512-66Pm4RYbjzdyeuqudYqhFiNBbCIuI9kgRqLPSHIlXHidW8NIQtVdkM1yeZ4lXwuhbTETv3EUGMNHAAw6hiundQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true + } + } + }, + "rollup-plugin-progress": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-progress/-/rollup-plugin-progress-0.4.0.tgz", + "integrity": "sha512-j3czNYnrjAV5rL8tpMRlPMN30p1T3/+iBZJftQBYAYujs7A7zBdYlgrfFMlvKTzPr5mndbeQNgAvGC3H0W8y0g==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "rollup-pluginutils": "^1.5.1" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "estree-walker": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-0.2.1.tgz", + "integrity": "sha512-6/I1dwNKk0N9iGOU3ydzAAurz4NPo/ttxZNCqgIVbWFvWyzWBSNonRrJ5CpjDuyBfmM7ENN7WCzUi9aT/UPXXQ==", + "dev": true + }, + "rollup-pluginutils": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-1.5.2.tgz", + "integrity": "sha512-SjdWWWO/CUoMpDy8RUbZ/pSpG68YHmhk5ROKNIoi2En9bJ8bTt3IhYi254RWiTclQmL7Awmrq+rZFOhZkJAHmQ==", + "dev": true, + "requires": { + "estree-walker": "^0.2.1", + "minimatch": "^3.0.2" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "rollup-plugin-replace": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-replace/-/rollup-plugin-replace-2.2.0.tgz", + "integrity": "sha512-/5bxtUPkDHyBJAKketb4NfaeZjL5yLZdeUihSfbF2PQMz+rSTEb8ARKoOl3UBT4m7/X+QOXJo3sLTcq+yMMYTA==", + "dev": true, + "requires": { + "magic-string": "^0.25.2", + "rollup-pluginutils": "^2.6.0" + }, + "dependencies": { + "magic-string": { + "version": "0.25.9", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.25.9.tgz", + "integrity": "sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==", + "dev": true, + "requires": { + "sourcemap-codec": "^1.4.8" + } + } + } + }, + "rollup-plugin-root-import": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/rollup-plugin-root-import/-/rollup-plugin-root-import-0.2.4.tgz", + "integrity": "sha512-PpKu1jsCpueAgpZ2moF1ZOeNBXZKuq0GFKHozSrG/t8WHgT7RYhSQABr3Cj33E8xuiPvydnyTGaUNLc8vHrQOA==", + "dev": true + }, + "rollup-plugin-sass": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/rollup-plugin-sass/-/rollup-plugin-sass-0.9.3.tgz", + "integrity": "sha512-RSPZWz4J6qROX1+HVETuG9Kw56lSpezoOcC8e67yMdVTk4ROxZSl6xiX97arhol15FQhfm32UD9BTFKgzpTgBw==", + "dev": true, + "requires": { + "babel-runtime": "^6.23.0", + "fs-extra": "^0.30.0", + "pify": "^3.0.0", + "resolve": "^1.5.0", + "rollup-pluginutils": ">= 1.3.1", + "sass": "1.7.2" + }, + "dependencies": { + "fs-extra": { + "version": "0.30.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-0.30.0.tgz", + "integrity": "sha512-UvSPKyhMn6LEd/WpUaV9C9t3zATuqoqfWc3QdPhPLb58prN9tqYPlPWi8Krxi44loBoUzlobqZ3+8tGpxxSzwA==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "jsonfile": "^2.1.0", + "klaw": "^1.0.0", + "path-is-absolute": "^1.0.0", + "rimraf": "^2.2.8" + } + }, + "jsonfile": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-2.4.0.tgz", + "integrity": "sha512-PKllAqbgLgxHaj8TElYymKCAgrASebJrWpTnEkOaTowt23VKXXN0sUeriJ+eh7y6ufb/CC5ap11pz71/cM0hUw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "klaw": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/klaw/-/klaw-1.3.1.tgz", + "integrity": "sha512-TED5xi9gGQjGpNnvRWknrwAB1eL5GciPfVFOt3Vk1OJCVDQbzuSfrF3hkUQKlsgKrG1F+0t5W0m+Fje1jIt8rw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.9" + } + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true + } + } + }, + "rollup-plugin-scss": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/rollup-plugin-scss/-/rollup-plugin-scss-0.4.0.tgz", + "integrity": "sha512-frDGGdzSDF7z1DIYGYuEy2EUQyOACx1EfAojkgHUUkv0VEXgJGWMCKopZDb8VmLS1wE4FgidKH+tr4O3GJqZ6w==", + "dev": true, + "requires": { + "node-sass": "^4.5.3", + "rollup-pluginutils": "^2.0.1" + } + }, + "rollup-plugin-serve": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/rollup-plugin-serve/-/rollup-plugin-serve-0.4.2.tgz", + "integrity": "sha512-lQX8/MSgWDrsbp8euBQKxJ9O2KxQerMVmStYi3zlP9jYL1v3OPtWyXbWNRfgeQTTNJtcQvaZglMGWw9YTLWw3A==", + "dev": true, + "requires": { + "mime": "^1.3.6", + "opener": "^1.4.3" + } + }, + "rollup-plugin-uglify-es": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/rollup-plugin-uglify-es/-/rollup-plugin-uglify-es-0.0.1.tgz", + "integrity": "sha512-sj9KVB/bc8CxH7DBhmnWsXPtH5XgchFfsbTYusJ/9E22r96ufb4uqM53XRDN2LtJyu1QeRhMW7CebJKpASAz0Q==", + "dev": true, + "requires": { + "uglify-es": "3.0.3" + }, + "dependencies": { + "commander": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.9.0.tgz", + "integrity": "sha512-bmkUukX8wAOjHdN26xj5c4ctEV22TQ7dQYhSmuckKhToXrkUn0iIaolHdIxYYqD55nhpSPA9zPQ1yP57GdXP2A==", + "dev": true, + "requires": { + "graceful-readlink": ">= 1.0.0" + } + }, + "uglify-es": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.0.3.tgz", + "integrity": "sha512-IQgL0a6yfzLSr4o0dWmieFPERODRTBzTbR16zSjvPoE3+0AY9LkKG29SGgJKKo2WI21PmoyP4Jh5TBBIxbubYA==", + "dev": true, + "requires": { + "commander": "~2.9.0", + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0" + } + } + } + }, + "rollup-pluginutils": { + "version": "2.8.2", + "resolved": "https://registry.npmjs.org/rollup-pluginutils/-/rollup-pluginutils-2.8.2.tgz", + "integrity": "sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==", + "dev": true, + "requires": { + "estree-walker": "^0.6.1" + } + }, + "rsvp": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-3.6.2.tgz", + "integrity": "sha512-OfWGQTb9vnwRjwtA2QwpG2ICclHC3pgXZO5xt8H2EfgDquO0qVdSb5T88L4qJVAEugbS56pAuV4XZM58UX8ulw==", + "dev": true + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "rx": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/rx/-/rx-4.1.0.tgz", + "integrity": "sha512-CiaiuN6gapkdl+cZUr67W6I8jquN4lkak3vtIsIWCl4XIPP8ffsoyN6/+PuGXnQy8Cu8W2y9Xxh31Rq4M6wUug==", + "dev": true + }, + "rxjs": { + "version": "5.5.12", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-5.5.12.tgz", + "integrity": "sha512-xx2itnL5sBbqeeiVgNPVuQQ1nC8Jp2WfNJhXWHmElW9YmrpS9UVnNzhP3EH3HFqexO5Tlp8GhYY+WEcqcVMvGw==", + "dev": true, + "requires": { + "symbol-observable": "1.0.1" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "sane": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/sane/-/sane-2.5.2.tgz", + "integrity": "sha512-OuZwD1QJ2R9Dbnhd7Ur8zzD8l+oADp9npyxK63Q9nZ4AjhB2QwDQcQlD8iuUsGm5AZZqtEuCaJvK1rxGRxyQ1Q==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "capture-exit": "^1.2.0", + "exec-sh": "^0.2.0", + "fb-watchman": "^2.0.0", + "fsevents": "^1.2.3", + "micromatch": "^3.1.4", + "minimist": "^1.1.1", + "walker": "~1.0.5", + "watch": "~0.18.0" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "sass": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/sass/-/sass-1.7.2.tgz", + "integrity": "sha512-zUm2NXL77WtQDbp4MKgysAxH41Fzs5BnBUogEPi8IKNQ1M5rKoFe46YBXfxr0I+cQX+xbSc//psSdq5eyYhJsg==", + "dev": true, + "requires": { + "chokidar": "^2.0.0" + }, + "dependencies": { + "anymatch": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", + "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", + "dev": true, + "requires": { + "micromatch": "^3.1.4", + "normalize-path": "^2.1.1" + }, + "dependencies": { + "normalize-path": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", + "integrity": "sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==", + "dev": true, + "requires": { + "remove-trailing-separator": "^1.0.1" + } + } + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==", + "dev": true + }, + "binary-extensions": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-1.13.1.tgz", + "integrity": "sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw==", + "dev": true + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "chokidar": { + "version": "2.1.8", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-2.1.8.tgz", + "integrity": "sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg==", + "dev": true, + "requires": { + "anymatch": "^2.0.0", + "async-each": "^1.0.1", + "braces": "^2.3.2", + "fsevents": "^1.2.7", + "glob-parent": "^3.1.0", + "inherits": "^2.0.3", + "is-binary-path": "^1.0.0", + "is-glob": "^4.0.0", + "normalize-path": "^3.0.0", + "path-is-absolute": "^1.0.0", + "readdirp": "^2.2.1", + "upath": "^1.1.1" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha512-e1BM1qnDbMRG3ll2U9dSK0UMHuWOs3pY3AtcFsmvwPtKL3MML/Q86i+GilLfvqEs4GW+ExB91tQ3Ig9noDIZ+A==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha512-+w9D5ulSoBNlmw9OHn3U2v51SyoCd0he+bB3xMl62oijhrspxowjU+AIcDY0N3iEJbUEkB15IlMASQsxYigvXg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + } + }, + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "fsevents": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.2.13.tgz", + "integrity": "sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw==", + "dev": true, + "optional": true, + "requires": { + "bindings": "^1.5.0", + "nan": "^2.12.1" + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-binary-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-1.0.1.tgz", + "integrity": "sha512-9fRVlXc0uCxEDj1nQzaWONSpbTfx0FmJfzHF7pwlI8DkWGoHBBea4Pg5Ky0ojwwxQmnSifgbKkI06Qv0Ljgj+Q==", + "dev": true, + "requires": { + "binary-extensions": "^1.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "readdirp": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-2.2.1.tgz", + "integrity": "sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "micromatch": "^3.1.10", + "readable-stream": "^2.0.2" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "sass-graph": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-2.2.5.tgz", + "integrity": "sha512-VFWDAHOe6mRuT4mZRd4eKE+d8Uedrk6Xnh7Sh9b4NGufQLQjOrvf/MQoOdx+0s92L89FeyUUNfU597j/3uNpag==", + "dev": true, + "requires": { + "glob": "^7.0.0", + "lodash": "^4.0.0", + "scss-tokenizer": "^0.2.3", + "yargs": "^13.3.2" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + } + }, + "y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true + }, + "yargs": { + "version": "13.3.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-13.3.2.tgz", + "integrity": "sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^13.1.2" + } + }, + "yargs-parser": { + "version": "13.1.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-13.1.2.tgz", + "integrity": "sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true + }, + "scss-tokenizer": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.2.3.tgz", + "integrity": "sha512-dYE8LhncfBUar6POCxMTm0Ln+erjeczqEvCJib5/7XNkdw1FkUGgwMPY360FY0FgPWQxHWCx29Jl3oejyGLM9Q==", + "dev": true, + "requires": { + "js-base64": "^2.1.8", + "source-map": "^0.4.2" + }, + "dependencies": { + "source-map": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", + "integrity": "sha512-Y8nIfcb1s/7DcobUz1yOO1GSp7gyL+D9zLHDehT7iRESqGSxjJ448Sg7rvfgsRJCnKLdSl11uGf0s9X80cH0/A==", + "dev": true, + "requires": { + "amdefine": ">=0.0.4" + } + } + } + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "send": { + "version": "0.16.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.16.2.tgz", + "integrity": "sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw==", + "dev": true, + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "~1.6.2", + "mime": "1.4.1", + "ms": "2.0.0", + "on-finished": "~2.3.0", + "range-parser": "~1.2.0", + "statuses": "~1.4.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "statuses": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.4.0.tgz", + "integrity": "sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew==", + "dev": true + } + } + }, + "serve-index": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "batch": "0.6.1", + "debug": "2.6.9", + "escape-html": "~1.0.3", + "http-errors": "~1.6.2", + "mime-types": "~2.1.17", + "parseurl": "~1.3.2" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true + }, + "http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + } + }, + "inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + }, + "setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true + } + } + }, + "serve-static": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.13.2.tgz", + "integrity": "sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw==", + "dev": true, + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.2", + "send": "0.16.2" + } + }, + "server-destroy": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/server-destroy/-/server-destroy-1.0.1.tgz", + "integrity": "sha512-rb+9B5YBIEzYcD6x2VKidaa+cqYBJQKnU4oe4E3ANwRRN56yk/ua1YCJT1n21NTS8w6CcOclAKNP3PhdCXKYtQ==", + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true + }, + "sha.js": { + "version": "2.4.11", + "resolved": "https://registry.npmjs.org/sha.js/-/sha.js-2.4.11.tgz", + "integrity": "sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true + }, + "shellwords": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", + "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", + "dev": true + }, + "side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + } + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "sisteransi": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-0.1.1.tgz", + "integrity": "sha512-PmGOd02bM9YO5ifxpw36nrNMBTptEtfRl4qUYl9SndkolplkrZZOW7PGHjrZL53QvMVj9nQ+TKqUnRsw4tJa4g==", + "dev": true + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + } + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + } + }, + "socket.io": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.5.4.tgz", + "integrity": "sha512-m3GC94iK9MfIEeIBfbhJs5BqFibMtkRk8ZpKwG2QwxV0m/eEhPIV4ara6XCF1LWNAus7z58RodiZlAH71U3EhQ==", + "dev": true, + "requires": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "debug": "~4.3.2", + "engine.io": "~6.2.1", + "socket.io-adapter": "~2.4.0", + "socket.io-parser": "~4.2.1" + } + }, + "socket.io-adapter": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.4.0.tgz", + "integrity": "sha512-W4N+o69rkMEGVuk2D/cvca3uYsvGlMwsySWV447y99gUPghxq42BxqLNMndb+a1mm/5/7NeXVQS7RLa2XyXvYg==", + "dev": true + }, + "socket.io-client": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/socket.io-client/-/socket.io-client-4.5.4.tgz", + "integrity": "sha512-ZpKteoA06RzkD32IbqILZ+Cnst4xewU7ZYK12aS1mzHftFFjpoMz69IuhP/nL25pJfao/amoPI527KnuhFm01g==", + "dev": true, + "requires": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.2", + "engine.io-client": "~6.2.3", + "socket.io-parser": "~4.2.1" + } + }, + "socket.io-parser": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.2.tgz", + "integrity": "sha512-DJtziuKypFkMMHCm2uIshOYC7QaylbtzQwiMYDuCKy3OPkjLzu4B2vAhTlqipRHHzrI0NJeBAizTK7X+6m1jVw==", + "dev": true, + "requires": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + } + }, + "sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-support": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.4.18.tgz", + "integrity": "sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==", + "dev": true, + "requires": { + "source-map": "^0.5.6" + } + }, + "source-map-url": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", + "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", + "dev": true + }, + "sourcemap-codec": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz", + "integrity": "sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==", + "dev": true + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", + "dev": true + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "sshpk": { + "version": "1.17.0", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.17.0.tgz", + "integrity": "sha512-/9HIEs1ZXGhSPE8X6Ccm7Nam1z8KcoCqPdI7ecm1N33EzAetWahvQWVqLZtaZQ+IDKX4IyA2o0gBzqIMkAagHQ==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "stack-utils": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-1.0.5.tgz", + "integrity": "sha512-KZiTzuV3CnSnSvgMRrARVCj+Ht7rMbauGDK0LdVFRGyenwdylpajAp4Q0i6SX8rEmbTpMMf6ryq2gb8pPq2WgQ==", + "dev": true, + "requires": { + "escape-string-regexp": "^2.0.0" + }, + "dependencies": { + "escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true + } + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "statuses": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.3.1.tgz", + "integrity": "sha512-wuTCPGlJONk/a1kqZ4fQM2+908lC7fa7nPYpTC1EhnvqLX/IICbeP1OZGDtA374trpSq68YubKUMo8oRhN46yg==", + "dev": true + }, + "stdout-stream": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", + "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", + "dev": true, + "requires": { + "readable-stream": "^2.0.1" + } + }, + "stealthy-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", + "integrity": "sha512-ZnWpYnYugiOVEY5GkcuJK1io5V8QmNYChG62gSit9pQVGErXtrKuPC55ITaVSukmMta5qpMU7vqLt2Lnni4f/g==", + "dev": true + }, + "stream-throttle": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/stream-throttle/-/stream-throttle-0.1.3.tgz", + "integrity": "sha512-889+B9vN9dq7/vLbGyuHeZ6/ctf5sNuGWsDy89uNxkFTAgzy0eK7+w5fL3KLNRTkLle7EgZGvHUphZW0Q26MnQ==", + "dev": true, + "requires": { + "commander": "^2.2.0", + "limiter": "^1.0.5" + }, + "dependencies": { + "commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + } + } + }, + "strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", + "dev": true + }, + "string-hash": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", + "integrity": "sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==", + "dev": true + }, + "string-length": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-2.0.0.tgz", + "integrity": "sha512-Qka42GGrS8Mm3SZ+7cH8UXiIWI867/b/Z/feQSpQx/rbfB8UGknGEZVaUQMOUVj+soY6NpWAxily63HI1OckVQ==", + "dev": true, + "requires": { + "astral-regex": "^1.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string-range": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/string-range/-/string-range-1.2.2.tgz", + "integrity": "sha512-tYft6IFi8SjplJpxCUxyqisD3b+R2CSkomrtJYCkvuf1KuCAWgz7YXt4O0jip7efpfCemwHEzTEAO8EuOYgh3w==", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", + "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", + "dev": true + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "string.prototype.trimend": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "string.prototype.trimstart": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + }, + "dependencies": { + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + } + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha512-kwrX1y7czp1E69n2ajbG65mIo9dqvJ+8aBQXOGVxqwvNbsXdFM6Lq37dLAY3mknUwru8CfcCbfOLL/gMo+fi3g==", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "dev": true + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha512-I5iQq6aFMM62fBEAIB/hXzwJD6EEZ0xEGCX2t7oXqaKPIRgt4WruAQ285BISgdkP+HLGWyeGmNJcpIwFeRYRUA==", + "dev": true, + "requires": { + "get-stdin": "^4.0.1" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "style-inject": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/style-inject/-/style-inject-0.3.0.tgz", + "integrity": "sha512-IezA2qp+vcdlhJaVm5SOdPPTUu0FCEqfNSli2vRuSIBbu5Nq5UvygTk/VzeCqfLz2Atj3dVII5QBKGZRZ0edzw==", + "dev": true + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "svgo": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-0.7.2.tgz", + "integrity": "sha512-jT/g9FFMoe9lu2IT6HtAxTA7RR2XOrmcrmCtGnyB/+GQnV6ZjNn+KOHZbZ35yL81+1F/aB6OeEsJztzBQ2EEwA==", + "dev": true, + "requires": { + "coa": "~1.0.1", + "colors": "~1.1.2", + "csso": "~2.3.1", + "js-yaml": "~3.7.0", + "mkdirp": "~0.5.1", + "sax": "~1.2.1", + "whet.extend": "~0.9.9" + }, + "dependencies": { + "esprima": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-2.7.3.tgz", + "integrity": "sha512-OarPfz0lFCiW4/AV2Oy1Rp9qu0iusTKqykwTspGCZtPxmF81JR4MmIebvF1F9+UOKth2ZubLQ4XGGaU+hSn99A==", + "dev": true + }, + "js-yaml": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.7.0.tgz", + "integrity": "sha512-eIlkGty7HGmntbV6P/ZlAsoncFLGsNoM27lkTzS+oneY/EiNhj+geqD9ezg/ip+SW6Var0BJU2JtV0vEUZpWVQ==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^2.6.0" + } + } + } + }, + "symbol-observable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.0.1.tgz", + "integrity": "sha512-Kb3PrPYz4HanVF1LVGuAdW6LoVgIwjUYJGzFe7NDrBLCN4lsV/5J0MFurV+ygS4bRVwrCEt2c7MQ1R2a72oJDw==", + "dev": true + }, + "symbol-tree": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", + "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", + "dev": true + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "taffydb": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/taffydb/-/taffydb-2.6.2.tgz", + "integrity": "sha512-y3JaeRSplks6NYQuCOj3ZFMO3j60rTwbuKCvZxsAraGYH2epusatvZ0baZYA01WsGqJBq/Dl6vOrMUJqyMj8kA==", + "dev": true + }, + "tar": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz", + "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==", + "dev": true, + "requires": { + "block-stream": "*", + "fstream": "^1.0.12", + "inherits": "2" + } + }, + "test-exclude": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-4.2.3.tgz", + "integrity": "sha512-SYbXgY64PT+4GAL2ocI3HwPa4Q4TBKm0cwAVeKOt/Aoc0gSpNRjJX8w0pA1LMKZ3LBmd8pYBqApFNQLII9kavA==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "micromatch": "^2.3.11", + "object-assign": "^4.1.0", + "read-pkg-up": "^1.0.1", + "require-main-filename": "^1.0.1" + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "tfunk": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/tfunk/-/tfunk-4.0.0.tgz", + "integrity": "sha512-eJQ0dGfDIzWNiFNYFVjJ+Ezl/GmwHaFTBTjrtqNPW0S7cuVDBrZrmzUz6VkMeCR4DZFqhd4YtLwsw3i2wYHswQ==", + "dev": true, + "requires": { + "chalk": "^1.1.3", + "dlv": "^1.1.3" + }, + "dependencies": { + "ansi-styles": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", + "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "dev": true + }, + "chalk": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", + "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "dev": true, + "requires": { + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" + } + }, + "supports-color": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", + "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "dev": true + } + } + }, + "throat": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/throat/-/throat-4.1.0.tgz", + "integrity": "sha512-wCVxLDcFxw7ujDxaeJC6nfl2XfHJNYs8yUYJnvMgtPEFlttP9tHSfRUv2vBe6C4hkVFPWoP1P6ZccbYjmSEkKA==", + "dev": true + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "time-zone": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/time-zone/-/time-zone-1.0.0.tgz", + "integrity": "sha512-TIsDdtKo6+XrPtiTm1ssmMngN1sAhyKnTO2kunQWqNPWIVvCm15Wmw4SWInwTVgJ5u/Tr04+8Ei9TNcw4x4ONA==", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha512-Nm4cF79FhSTzrLKGDMi3I4utBtFv8qKy4sq1enftf2gMdpqI8oVQTAfySkTz5r49giVzDj88SVZXP4CeYQwjaw==", + "dev": true + }, + "trim-right": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-right/-/trim-right-1.0.1.tgz", + "integrity": "sha512-WZGXGstmCWgeevgTL54hrCuw1dyMQIzWy7ZfqRJfSmJZBwklI15egmQytFP6bPidmw3M8d5yEowl1niq4vmqZw==", + "dev": true + }, + "true-case-path": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-1.0.3.tgz", + "integrity": "sha512-m6s2OdQe5wgpFMC+pAJ+q9djG82O2jcHPOI6RNg1yy9rCYR+WD6Nbpl32fDpfC56nirdRy+opFa/Vk7HYhqaew==", + "dev": true, + "requires": { + "glob": "^7.1.2" + } + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==", + "dev": true + }, + "type-check": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", + "dev": true, + "requires": { + "prelude-ls": "~1.1.2" + } + }, + "typed-array-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "is-typed-array": "^1.1.9" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true + }, + "typedarray-to-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-1.0.4.tgz", + "integrity": "sha512-vjMKrfSoUDN8/Vnqitw2FmstOfuJ73G6CrSEKnf11A6RmasVxHqfeBcnTb6RsL4pTMuV5Zsv9IiHRphMZyckUw==", + "dev": true + }, + "typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true + }, + "ua-parser-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.2.tgz", + "integrity": "sha512-00y/AXhx0/SsnI51fTc0rLRmafiGOM4/O+ny10Ps7f+j/b8p/ZY11ytMgznXkOVo4GQ+KwQG5UQLkLGirsACRg==", + "dev": true + }, + "uc.micro": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-1.0.6.tgz", + "integrity": "sha512-8Y75pvTYkLJW2hWQHXxoqRgV7qb9B+9vFEtidML+7koHUFapnVJAZ6cKs+Qjz5Aw3aZWHMC6u0wJE3At+nSGwA==", + "dev": true + }, + "uglify-js": { + "version": "3.17.4", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.17.4.tgz", + "integrity": "sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==", + "dev": true, + "optional": true + }, + "uglify-to-browserify": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/uglify-to-browserify/-/uglify-to-browserify-1.0.2.tgz", + "integrity": "sha512-vb2s1lYx2xBtUgy+ta+b2J/GLVUR+wmpINwHePmPRhOsIVCG2wDzKJ0n14GslH1BifsqVzSOwQhRaCAsZ/nI4Q==", + "dev": true, + "optional": true + }, + "ultron": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/ultron/-/ultron-1.0.2.tgz", + "integrity": "sha512-QMpnpVtYaWEeY+MwKDN/UdKlE/LsFZXM5lO1u7GaZzNgmIbGixHEmVMIKT+vqYOALu3m5GYQy9kz4Xu4IVn7Ow==", + "dev": true + }, + "unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "requires": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + } + }, + "underscore": { + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", + "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==", + "dev": true + }, + "unicode-canonical-property-names-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", + "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", + "dev": true + }, + "unicode-match-property-ecmascript": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", + "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", + "dev": true, + "requires": { + "unicode-canonical-property-names-ecmascript": "^2.0.0", + "unicode-property-aliases-ecmascript": "^2.0.0" + } + }, + "unicode-match-property-value-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", + "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", + "dev": true + }, + "unicode-property-aliases-ecmascript": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", + "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "uniq": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", + "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==", + "dev": true + }, + "uniqs": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/uniqs/-/uniqs-2.0.0.tgz", + "integrity": "sha512-mZdDpf3vBV5Efh29kMw5tXoup/buMgxLzOt/XKFKcVmi+15ManNQWr6HfZ2aiZTYlYixbdNJ0KFmIZIv52tHSQ==", + "dev": true + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "dev": true + } + } + }, + "upath": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/upath/-/upath-1.2.0.tgz", + "integrity": "sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg==", + "dev": true + }, + "update-browserslist-db": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.10.tgz", + "integrity": "sha512-OztqDenkfFkbSG+tRxBeAnCVPckDBcvibKd35yDONx6OU8N7sqgwc7rCbkJ/WcYtVRZ4ba68d6byhC21GFh7sQ==", + "dev": true, + "requires": { + "escalade": "^3.1.1", + "picocolors": "^1.0.0" + } + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==", + "dev": true + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "util.promisify": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/util.promisify/-/util.promisify-1.1.1.tgz", + "integrity": "sha512-/s3UsZUrIfa6xDhr7zZhnE9SLQ5RIXyYfiVnMMyMDzOc8WhWN4Nbh36H842OyurKbCDAesZOJaVyvmSl6fhGQw==", + "dev": true, + "requires": { + "call-bind": "^1.0.0", + "define-properties": "^1.1.3", + "for-each": "^0.3.3", + "has-symbols": "^1.0.1", + "object.getownpropertydescriptors": "^2.1.1" + } + }, + "utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true + }, + "vendors": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/vendors/-/vendors-1.0.4.tgz", + "integrity": "sha512-/juG65kTL4Cy2su4P8HjtkTxk6VmJDiOPBufWniqQ6wknac6jNiXS9vU+hO3wgusiyqWlzTbVHi0dyJqRONg3w==", + "dev": true + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "vlq": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-0.2.3.tgz", + "integrity": "sha512-DRibZL6DsNhIgYQ+wNdWDL2SL3bKPlVrRiBqV5yuMm++op8W4kGFtaQfCs4KEJn0wBZcHVHJ3eoywX8983k1ow==", + "dev": true + }, + "w3c-hr-time": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", + "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", + "dev": true, + "requires": { + "browser-process-hrtime": "^1.0.0" + } + }, + "walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "requires": { + "makeerror": "1.0.12" + } + }, + "watch": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/watch/-/watch-0.18.0.tgz", + "integrity": "sha512-oUcoHFG3UF2pBlHcMORAojsN09BfqSfWYWlR3eSSjUFR7eBEx53WT2HX/vZeVTTIVCGShcazb+t6IcBRCNXqvA==", + "dev": true, + "requires": { + "exec-sh": "^0.2.0", + "minimist": "^1.2.0" + } + }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, + "whatwg-encoding": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", + "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", + "dev": true, + "requires": { + "iconv-lite": "0.4.24" + } + }, + "whatwg-mimetype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", + "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", + "dev": true + }, + "whatwg-url": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-6.5.0.tgz", + "integrity": "sha512-rhRZRqx/TLJQWUpQ6bmrt2UV4f0HCQ463yQuONJqC6fO2VoEb1pTYddbe59SkYq87aoM5A3bdhMZiUiVws+fzQ==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, + "whet.extend": { + "version": "0.9.9", + "resolved": "https://registry.npmjs.org/whet.extend/-/whet.extend-0.9.9.tgz", + "integrity": "sha512-mmIPAft2vTgEILgPeZFqE/wWh24SEsR/k+N9fJ3Jxrz44iDFy9aemCxdksfURSHYFCLmvs/d/7Iso5XjPpNfrA==", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "requires": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", + "dev": true + }, + "which-typed-array": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.9.tgz", + "integrity": "sha512-w9c4xkx6mPidwp7180ckYWfMmvxpjlZuIudNtDf4N/tTAUB8VJbX25qZoAsrtGuYNnGw3pa0AXgbGKRB8/EceA==", + "dev": true, + "requires": { + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0", + "is-typed-array": "^1.1.10" + } + }, + "wide-align": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2 || 3 || 4" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha512-vAaEaDM946gbNpH5pLVNR+vX2ht6n0Bt3GXwVB1AuAqZosOvHNF3P7wDnh8KLkSqgUh0uh77le7Owgoz+Z9XBw==", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, + "write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "ws": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-5.2.3.tgz", + "integrity": "sha512-jZArVERrMsKUatIdnLzqvcfydI85dvd/Fp1u/VOpfdDWQ4c9qWXe+VIeAbQ5FrDwciAkr+lzofXLz3Kuf26AOA==", + "dev": true, + "requires": { + "async-limiter": "~1.0.0" + } + }, + "xml-name-validator": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", + "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", + "dev": true + }, + "xmlcreate": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/xmlcreate/-/xmlcreate-2.0.4.tgz", + "integrity": "sha512-nquOebG4sngPmGPICTS5EnxqhKbCmz5Ox5hsszI2T6U5qdrJizBc+0ilYSEjTSzU0yZcmvppztXe/5Al5fUwdg==", + "dev": true + }, + "xmlhttprequest-ssl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/xmlhttprequest-ssl/-/xmlhttprequest-ssl-2.0.0.tgz", + "integrity": "sha512-QKxVRxiRACQcVuQEYFsI1hhkrMlrXHPegbbd1yn9UHOmRxY+si12nQYzri3vbzt8VdTTRviqcKxcyllFas5z2A==", + "dev": true + }, + "xtend": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.2.0.tgz", + "integrity": "sha512-SLt5uylT+4aoXxXuwtQp5ZnMMzhDb1Xkg4pEqc00WUJCQifPfV9Ub1VrNhp9kXkrjZD2I2Hl8WnjP37jzZLPZw==", + "dev": true + }, + "y18n": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.2.tgz", + "integrity": "sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "yargs": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.1.tgz", + "integrity": "sha512-PRU7gJrJaXv3q3yQZ/+/X6KBswZiaQ+zOmdprZcouPYtQgvNU35i+68M4b1ZHLZtYFT5QObFLV+ZkmJYcwKdiw==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.1.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^9.0.2" + } + }, + "yargs-parser": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha512-CswCfdOgCr4MMsT1GzbEJ7Z2uYudWyrGX8Bgh/0eyCzj/DXWdKq6a/ADufkzI1WAOIW6jYaXJvRyLhDO0kfqBw==", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } +} diff --git a/package.json b/package.json index 7bda3d31..e9b00583 100644 --- a/package.json +++ b/package.json @@ -1,25 +1,102 @@ { - "name": "flipclock", - "version": "0.7.8", - "email": "support@objectivehtml.com", - "author": "Objective HTML, LLC ", - "license": "MIT", - "main": "compiled/flipclock.js", - "devDependencies": { - "grunt": "~0.4.2", - "grunt-contrib-concat": "~0.3.0", - "grunt-contrib-jshint": "~0.6.3", - "grunt-contrib-uglify": "~0.2.7", - "grunt-contrib-watch": "^0.6.1" - }, - "repository": { - "type": "git", - "url": "https://github.com/objectivehtml/FlipClock" - }, - "bugs": { - "url": "https://github.com/nodejitsu/browsenpm.org/issues" - }, - "dependencies": { - "jquery": ">=1.7" - } + "name": "flipclock", + "version": "0.10.8", + "email": "support@objectivehtml.com", + "author": "Objective HTML, LLC ", + "contributors": [ + "Objective HTML, LLC ", + "Brian Espinosa " + ], + "description": "A fully featured countdown clock.", + "license": "MIT", + "main": "dist/flipclock.js", + "homepage": "http://flipclockjs.com/", + "repository": { + "type": "git", + "url": "https://github.com/objectivehtml/FlipClock" + }, + "bugs": { + "url": "https://github.com/objectivehtml/FlipClock/issues" + }, + "keywords": [ + "clock", + "countdown", + "time", + "javascript", + "html", + "css", + "sass", + "scss" + ], + "languages": [ + "Arabic", + "Czech", + "English", + "Spanish" + ], + "devDependencies": { + "@babel/cli": "^7.4.4", + "@babel/core": "^7.4.4", + "@babel/helper-plugin-utils": "^7.0.0", + "@babel/plugin-proposal-export-default-from": "^7.2.0", + "@babel/preset-env": "^7.4.4", + "@babel/preset-react": "^7.0.0", + "babel-core": "^7.0.0-bridge.0", + "babel-jest": "^23.6.0", + "babel-preset-env": "^1.7.0", + "babel-preset-es2015-rollup": "^3.0.0", + "babel-preset-react": "^6.24.1", + "jest": "^23.6.0", + "jest-cli": "^23.6.0", + "jsdoc": "^3.5.5", + "jsdoc-export-default-interop": "^0.3.1", + "jsdom": "^11.7.0", + "node-sass": "^4.12.0", + "parse5": "^2.2.3", + "rollup": "^0.57.1", + "rollup-plugin-babel": "^4.3.2", + "rollup-plugin-browsersync": "^0.2.6", + "rollup-plugin-commonjs": "^8.4.1", + "rollup-plugin-conditional": "^1.1.1", + "rollup-plugin-eslint": "^5.1.0", + "rollup-plugin-json": "^2.3.0", + "rollup-plugin-livereload": "^0.6.0", + "rollup-plugin-node-builtins": "^2.1.2", + "rollup-plugin-node-globals": "^1.2.0", + "rollup-plugin-node-resolve": "^3.3.0", + "rollup-plugin-postcss": "^1.6.3", + "rollup-plugin-progress": "^0.4.0", + "rollup-plugin-replace": "^2.2.0", + "rollup-plugin-root-import": "^0.2.4", + "rollup-plugin-sass": "^0.9.3", + "rollup-plugin-scss": "^0.4.0", + "rollup-plugin-serve": "^0.4.2", + "rollup-plugin-uglify-es": "0.0.1" + }, + "scripts": { + "build": "rollup -c", + "dev": "rollup -c --watch", + "commit": "git add -A && git commit -m $npm_package_version;", + "release-patch": "npm run release; npm version patch; npm run docs; npm run commit; npm publish;", + "release-minor": "npm run release; npm version minor; npm run docs; npm run commit; npm publish;", + "release-major": "npm run release; npm version major; npm run docs; npm run commit; npm publish;", + "release": "npm run build; npm run uglify;", + "uglify": "rollup -c rollup.uglify.js", + "docs": "rm -r ./public; ./node_modules/.bin/jsdoc -r -c jsdoc.config.js -u ./docs -t ./.jsdoc/flipclock -R ./README.md" + }, + "jest": { + "transform": { + "^.+\\.js?$": "babel-jest" + }, + "moduleFileExtensions": [ + "js", + "json" + ], + "moduleNameMapper": { + "^@/(.*)$": "/src/$1" + }, + "moduleDirectories": [ + "node_modules" + ] + } } diff --git a/public/Component.html b/public/Component.html new file mode 100644 index 00000000..e4041e81 --- /dev/null +++ b/public/Component.html @@ -0,0 +1,2296 @@ + + + + + FlipClock.js :: Class: Component + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    Component(attributesopt)

    + + +
    + +
    +
    + + + + + + +

    new Component(attributesopt)

    + + + + + + +
    +

    Abstract base class.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    attributes + + +object +| + +undefined + + + + + + <optional>
    + + + + + +

    The instance attributes.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + +

    Members

    + + +
    + +

    events :object

    + + + + +
    +

    The events attribute.

    +
    + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    name :string

    + + + + +
    +

    Get the name attribute.

    +
    + + + +
    Type:
    +
      +
    • + +string + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + + + + + + +

    Methods

    + + +
    + + + + + +

    (static) make(…args) → {*}

    + + + + + + +
    +

    Factor method to static instantiate new instances. Useful for writing +clean expressive syntax with chained methods.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    args + + +* + + + + + + + + + + <repeatable>
    + +

    The callback arguments.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The new component instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    callback(fn) → {*}

    + + + + + + +
    +

    Helper method to execute the callback() function.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    fn + + +function + + + +

    The callback function.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns the executed callback function.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    emit(key) → {Component}

    + + + + + + +
    +

    Emit an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getAttribute(key) → {*}

    + + + + + + +
    +

    Get an attribute. Returns null if no attribute is defined.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The attribute name.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute value.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getAttributes() → {object}

    + + + + + + +
    +

    Get all the atttributes for this instance.

    +
    + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute dictionary.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +object + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getPublicAttributes() → {object}

    + + + + + + +
    +

    Get only public the atttributes for this instance. Omits any attribute +that starts with $, which is used internally.

    +
    + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute dictionary.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +object + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    off(key, fn) → {Component}

    + + + + + + +
    +

    Stop listening to an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    fn + + +function +| + +undefined + + + +

    The listener callback function. If no + function is defined, all events with the specified id/key will be + removed. Otherwise, only the event listeners matching the id/key AND + callback will be removed.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    on(key, fn, onceopt) → {Component}

    + + + + + + +
    +

    Start listening to an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    key + + +string + + + + + + + + + + + +

    The event id/key.

    fn + + +function + + + + + + + + + + + +

    The listener callback function.

    once + + +boolean + + + + + + <optional>
    + + + + + +
    + + false + +

    Should the event handler be fired a + single time.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    once(key, fn) → {Component}

    + + + + + + +
    +

    Listen to an event only one time.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    fn + + +function + + + +

    The listener callback function.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    setAttribute(key, value) → {void}

    + + + + + + +
    +

    Set an attribute key and value.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The attribute name.

    value + + +* + + + +

    The attribute value.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    setAttributes(values) → {void}

    + + + + + + +
    +

    Set an attributes by object of key/value pairs.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    values + + +object + + + +

    The object dictionary.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Components_Component.js.html b/public/Components_Component.js.html new file mode 100644 index 00000000..c81a4dbb --- /dev/null +++ b/public/Components_Component.js.html @@ -0,0 +1,286 @@ + + + + + FlipClock.js :: Source: Components/Component.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    import { chain, error, callback, isObject, kebabCase } from '../Helpers/Functions';
    +
    +export default class Component {
    +
    +    /**
    +     * Abstract base class.
    +     *
    +     * @class Component
    +     * @param {(object|undefined)} [attributes] - The instance attributes.
    +     */
    +    constructor(attributes) {
    +        this.setAttribute(Object.assign({
    +            events: {}
    +        }, attributes));
    +    }
    +
    +    /**
    +     * Get the `name` attribute.
    +     *
    +     * @type {string}
    +     */
    +    get name() {
    +        if(!(this.constructor.defineName instanceof Function)) {
    +            error('Every class must define its name.');
    +        }
    +
    +        return this.constructor.defineName();
    +    }
    +
    +    /**
    +     * The `events` attribute.
    +     *
    +     * @type {object}
    +     */
    +    get events() {
    +        return this.$events || {};
    +    }
    +
    +    set events(value) {
    +        this.$events = value;
    +    }
    +
    +    /**
    +     * Emit an event.
    +     *
    +     * @param  {string} key - The event id/key.
    +     * @return {Component} - Returns `this` instance.
    +     */
    +    emit(key, ...args) {
    +        if(this.events[key]) {
    +            this.events[key].forEach(event => {
    +                event.apply(this, args);
    +            });
    +        }
    +
    +        return this;
    +    }
    +
    +    /**
    +     * Start listening to an event.
    +     *
    +     * @param  {string} key - The event id/key.
    +     * @param  {Function} fn - The listener callback function.
    +     * @param  {boolean} [once=false] - Should the event handler be fired a
    +     *     single time.
    +     * @return {Component} - Returns `this` instance.
    +     */
    +    on(key, fn, once = false) {
    +        if(!this.events[key]) {
    +            this.events[key] = [];
    +        }
    +
    +        this.events[key].push(fn);
    +
    +        return this;
    +    }
    +
    +    /**
    +     * Stop listening to an event.
    +     *
    +     * @param {string} key - The event id/key.
    +     * @param {(Function|undefined)} fn - The listener callback function. If no
    +     *     function is defined, all events with the specified id/key will be
    +     *     removed. Otherwise, only the event listeners matching the id/key AND
    +     *     callback will be removed.
    +     * @return {Component} - Returns `this` instance.
    +     */
    +    off(key, fn) {
    +        if(this.events[key] && fn) {
    +            this.events[key] = this.events[key].filter(event => {
    +                return event !== fn;
    +            });
    +        }
    +        else {
    +            this.events[key] = [];
    +        }
    +
    +        return this;
    +    }
    +
    +    /**
    +     * Listen to an event only one time.
    +     *
    +     * @param  {string} key - The event id/key.
    +     * @param  {Function} fn - The listener callback function.
    +     * @return {Component} - Returns `this` instance.
    +     */
    +    once(key, fn) {
    +        fn = chain(fn, () => this.off(key, fn));
    +
    +        return this.on(key, fn, true);
    +    }
    +
    +    /**
    +     * Get an attribute. Returns null if no attribute is defined.
    +     *
    +     * @param  {string} key - The attribute name.
    +     * @return {*} - The attribute value.
    +     */
    +    getAttribute(key) {
    +        return this.hasOwnProperty(key) ? this[key] : null;
    +    }
    +
    +    /**
    +     * Get all the atttributes for this instance.
    +     *
    +     * @return {object} - The attribute dictionary.
    +     */
    +    getAttributes() {
    +        const attributes = {};
    +
    +        Object.getOwnPropertyNames(this).forEach(key => {
    +            attributes[key] = this.getAttribute(key);
    +        });
    +
    +        return attributes;
    +    }
    +
    +    /**
    +     * Get only public the atttributes for this instance. Omits any attribute
    +     * that starts with `$`, which is used internally.
    +     *
    +     * @return {object} - The attribute dictionary.
    +     */
    +    getPublicAttributes() {
    +        return Object.keys(this.getAttributes())
    +            .filter(key => {
    +                return !key.match(/^\$/);
    +            })
    +            .reduce((obj, key) => {
    +                obj[key] = this.getAttribute(key);
    +                return obj;
    +            }, {});
    +    }
    +
    +    /**
    +     * Set an attribute key and value.
    +     *
    +     * @param  {string} key - The attribute name.
    +     * @param  {*} value - The attribute value.
    +     * @return {void}
    +     */
    +    setAttribute(key, value) {
    +        if(isObject(key)) {
    +            this.setAttributes(key);
    +        }
    +        else {
    +            this[key] = value;
    +        }
    +    }
    +
    +    /**
    +     * Set an attributes by object of key/value pairs.
    +     *
    +     * @param  {object} values - The object dictionary.
    +     * @return {void}
    +     */
    +    setAttributes(values) {
    +        for(const i in values) {
    +            this.setAttribute(i, values[i]);
    +        }
    +    }
    +
    +    /**
    +     * Helper method to execute the `callback()` function.
    +     *
    +     * @param  {Function} fn - The callback function.
    +     * @return {*} - Returns the executed callback function.
    +     */
    +    callback(fn) {
    +        return callback.call(this, fn);
    +    }
    +
    +    /**
    +     * Factor method to static instantiate new instances. Useful for writing
    +     * clean expressive syntax with chained methods.
    +     *
    +     * @param  {...*} args - The callback arguments.
    +     * @return {*} - The new component instance.
    +     */
    +    static make(...args) {
    +        return new this(...args);
    +    }
    +
    +}
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Components_Divider.js.html b/public/Components_Divider.js.html new file mode 100644 index 00000000..70182522 --- /dev/null +++ b/public/Components_Divider.js.html @@ -0,0 +1,106 @@ + + + + + FlipClock.js :: Source: Components/Divider.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    import DomComponent from './DomComponent';
    +
    +/**
    + * Create a new `Divider` instance.
    + *
    + * The purpose of this class is to return a unique class name so the theme can
    + * render it appropriately, since each `DomComponent` can receive its own template
    + * from the theme.
    + *
    + * @class Divider
    + * @extends DomComponent
    + * @param {(object|undefined)} [attributes] - The instance attributes.
    + */
    +export default class Divider extends DomComponent {
    +
    +    /**
    +     * Define the name of the class.
    +     *
    +     * @return {string}
    +     */
    +    static defineName() {
    +        return 'Divider';
    +    }
    +
    +}
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Components_DomComponent.js.html b/public/Components_DomComponent.js.html new file mode 100644 index 00000000..9aaa9cd1 --- /dev/null +++ b/public/Components_DomComponent.js.html @@ -0,0 +1,263 @@ + + + + + FlipClock.js :: Source: Components/DomComponent.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    import Component from './Component';
    +import language from '../Helpers/Language';
    +import validate from '../Helpers/Validate';
    +import translate from '../Helpers/Translate';
    +import { isString } from '../Helpers/Functions';
    +import ConsoleMessages from '../Config/ConsoleMessages';
    +import { error, kebabCase } from '../Helpers/Functions';
    +import { swap, createElement } from '../Helpers/Template';
    +
    +export default class DomComponent extends Component {
    +
    +    /**
    +     * An abstract class that all other DOM components can extend.
    +     *
    +     * @class DomComponent
    +     * @extends Component
    +     * @param {(object|undefined)} [attributes] - The instance attributes.
    +     */
    +    constructor(attributes) {
    +        super(Object.assign({
    +            parent: null
    +        }, attributes));
    +
    +        if(!this.theme) {
    +            error(`${this.name} does not have a theme defined.`);
    +        }
    +
    +        if(!this.language) {
    +            error(`${this.name} does not have a language defined.`);
    +        }
    +
    +		if(!this.theme[this.name]) {
    +            throw new Error(
    +                `${this.name} cannot be rendered because it has no template.`
    +            );
    +        }
    +    }
    +
    +    /**
    +     * The `className` attribute. Used for CSS.
    +     *
    +     * @type {string}
    +     */
    +    get className() {
    +        return kebabCase(this.constructor.defineName());
    +    }
    +
    +    /**
    +     * The `el` attribute.
    +     *
    +     * @type {HTMLElement}
    +     */
    +    get el() {
    +        return this.$el;
    +    }
    +
    +    set el(value) {
    +        if(!validate(value, null, HTMLElement)) {
    +            error(ConsoleMessages.element);
    +        }
    +
    +        this.$el = value;
    +    }
    +
    +    /**
    +     * The `parent` attribute. Parent is set when `DomComponent` instances are
    +     * mounted.
    +     *
    +     * @type {DomComponent}
    +     */
    +    get parent() {
    +        return this.$parent;
    +    }
    +
    +    set parent(parent) {
    +        this.$parent = parent;
    +    }
    +
    +    /**
    +     * The `theme` attribute.
    +     *
    +     * @type {object}
    +     */
    +    get theme() {
    +        return this.$theme;
    +    }
    +
    +    set theme(value) {
    +        if(!validate(value, 'object')) {
    +            error(ConsoleMessages.value);
    +        }
    +
    +        this.$theme = value;
    +    }
    +
    +    /**
    +     * Get the language attribute.
    +     *
    +     * @type {object}
    +     */
    +    get language() {
    +        return this.$language;
    +    }
    +
    +    set language(value) {
    +        if(isString(value)) {
    +            value = language(value);
    +        }
    +
    +        if(!validate(value, 'object')) {
    +            error(ConsoleMessages.language);
    +        }
    +
    +        this.$language = value;
    +    }
    +
    +    /**
    +     * Translate a string.
    +     *
    +     * @param  {string} string - The string to translate.
    +     * @return {string} - The translated string. If no tranlation found, the
    +     *     untranslated string is returned.
    +     */
    +    translate(string) {
    +        return translate(string, this.language);
    +    }
    +
    +    /**
    +     * Alias to translate(string);
    +     *
    +     * @alias DomComponent.translate
    +     */
    +    t(string) {
    +        return this.translate(string);
    +    }
    +
    +    /**
    +     * Render the DOM component.
    +     *
    +     * @return {HTMLElement} - The `el` attribute.
    +     */
    +	render() {
    +        const el = createElement('div', {
    +            class: this.className === 'flip-clock' ? this.className : 'flip-clock-' + this.className
    +        });
    +
    +        this.theme[this.name](el, this);
    +
    +        if(!this.el) {
    +            this.el = el;
    +        }
    +        else if(this.el.innerHTML !== el.innerHTML) {
    +            this.el = swap(el, this.el);
    +        }
    +
    +        return this.el;
    +	}
    +
    +    /**
    +     * Mount a DOM component to a parent node.
    +     *
    +     * @param  {HTMLElement} parent - The parent DOM node.
    +     * @param  {(false|HTMLElement)} [before=false] - If `false`, element is
    +     *     appended to the parent node. If an instance of an `HTMLElement`,
    +     *     the component will be inserted before the specified element.
    +     * @return {HTMLElement} - The `el` attribute.
    +     */
    +    mount(parent, before = false) {
    +        this.render();
    +        this.parent = parent;
    +
    +        if(!before) {
    +            this.parent.appendChild(this.el);
    +        }
    +        else {
    +            this.parent.insertBefore(this.el, before);
    +        }
    +
    +        return this.el;
    +    }
    +
    +}
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Components_Face.js.html b/public/Components_Face.js.html new file mode 100644 index 00000000..9ec4fce3 --- /dev/null +++ b/public/Components_Face.js.html @@ -0,0 +1,352 @@ + + + + + FlipClock.js :: Source: Components/Face.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    import Component from './Component';
    +import FaceValue from './FaceValue';
    +import validate from '../Helpers/Validate';
    +import ConsoleMessages from '../Config/ConsoleMessages';
    +import { error, isNull, isUndefined, isObject, isArray, isFunction, callback } from '../Helpers/Functions';
    +
    +export default class Face extends Component {
    +
    +    /**
    +     * This class is meant to be provide an interface for all other faces to
    +     * extend.
    +     *
    +     * @class Face
    +     * @extends Component
    +     * @param {(FaceValue|object)} value - The `Face` value. If not an instance
    +     *     of FaceValue, this argument is assumed to be the instance attributes.
    +     * @param {(object|undefined)} [attributes] - The instance attributes.
    +     */
    +    constructor(value, attributes) {
    +        if(!(value instanceof FaceValue) && isObject(value)) {
    +            attributes = value;
    +            value = undefined;
    +        }
    +
    +        super();
    +
    +        this.setAttributes(Object.assign({
    +            autoStart: true,
    +            countdown: false,
    +            animationRate: 500
    +        }, this.defaultAttributes(), attributes || {}));
    +
    +        if(isNull(value) || isUndefined(value)) {
    +            value = this.defaultValue();
    +        }
    +
    +        if(value) {
    +            this.value = value;
    +        }
    +    }
    +
    +    /**
    +     * The `dataType` attribute.
    +     *
    +     * @type {*}
    +     */
    +    get dataType() {
    +        return this.defaultDataType();
    +    }
    +
    +    /**
    +     * The `value` attribute.
    +     *
    +     * @type {*}
    +     */
    +    get value() {
    +        return this.$value;
    +    }
    +
    +    set value(value) {
    +        if(!(value instanceof FaceValue)) {
    +            value = this.createFaceValue(value);
    +        }
    +
    +        this.$value = value;
    +    }
    +
    +    /**
    +     * The `stopAt` attribute.
    +     *
    +     * @type {*}
    +     */
    +    get stopAt() {
    +        return this.$stopAt;
    +    }
    +
    +    set stopAt(value) {
    +        this.$stopAt = value;
    +    }
    +
    +    /**
    +     * The `originalValue` attribute.
    +     *
    +     * @type {*}
    +     */
    +    get originalValue() {
    +        return this.$originalValue;
    +    }
    +
    +    set originalValue(value) {
    +        this.$originalValue = value;
    +    }
    +
    +    /**
    +     * This method is called with every interval, or every time the clock
    +     * should change, and handles the actual incrementing and decrementing the
    +     * clock's `FaceValue`.
    +     *
    +     * @param  {FlipClock} instance - The `FlipClock` instance.
    +     * @param  {Function} fn - The interval callback.
    +     * @return {Face} - This `Face` instance.
    +     */
    +    interval(instance, fn) {
    +        if(this.countdown) {
    +            this.decrement(instance);
    +        }
    +        else {
    +            this.increment(instance);
    +        }
    +
    +        callback.call(this, fn);
    +
    +        if(this.shouldStop(instance)) {
    +            instance.stop();
    +        }
    +
    +        return this.emit('interval');
    +    }
    +
    +    /**
    +     * Determines if the clock should stop or not.
    +     *
    +     * @param  {FlipClock} instance - The `FlipClock` instance.
    +     * @return {boolean} - Returns `true` if the clock should stop.
    +     */
    +    shouldStop(instance) {
    +        return !isUndefined(this.stopAt) ? this.stopAt === instance.value.value : false;
    +    }
    +
    +    /**
    +     * By default this just returns the value unformatted.
    +     *
    +     * @param  {FlipClock} instance - The `FlipClock` instance.
    +     * @param  {*} value - The value to format.
    +     * @return {*} - The formatted value.
    +     */
    +    format(instance, value) {
    +        return value;
    +    }
    +
    +    /**
    +     * The default value for the `Face`.
    +     *
    +     * @return {*} - The default value.
    +     */
    +    defaultValue() {
    +        //
    +    }
    +
    +    /**
    +     * The default attributes for the `Face`.
    +     *
    +     * @return {(Object|undefined)} - The default attributes.
    +     */
    +    defaultAttributes() {
    +        //
    +    }
    +
    +    /**
    +     * The default data type for the `Face` value.
    +     *
    +     * @return {(Object|undefined)} - The default data type.
    +     */
    +    defaultDataType() {
    +        //
    +    }
    +
    +    /**
    +     * Increment the clock.
    +     *
    +     * @param  {FlipClock} instance - The `FlipClock` instance.
    +     * @param  {Number} [amount] - The amount to increment. If the amount is not
    +     *     defined, it is left up to the `Face` to determine the default value.
    +     * @return {void}
    +     */
    +    increment(instance, amount) {
    +        //
    +    }
    +
    +    /**
    +     * Decrement the clock.
    +     *
    +     * @param  {FlipClock} instance - The `FlipClock` instance.
    +     * @param  {Number} [amount] - The amount to decrement. If the amount is not
    +     *     defined, it is left up to the `Face` to determine the default value.
    +     * @return {void}
    +     */
    +    decrement(instance, amount) {
    +        //
    +    }
    +
    +    /**
    +     * This method is called right after clock has started.
    +     *
    +     * @param  {FlipClock} instance - The `FlipClock` instance.
    +     * @return {void}
    +     */
    +    started(instance) {
    +        //
    +    }
    +
    +    /**
    +     * This method is called right after clock has stopped.
    +     *
    +     * @param  {FlipClock} instance - The `FlipClock` instance.
    +     * @return {void}
    +     */
    +    stopped(instance) {
    +        //
    +    }
    +
    +    /**
    +     * This method is called right after clock has reset.
    +     *
    +     * @param  {FlipClock} instance - The `FlipClock` instance.
    +     * @return {void}
    +     */
    +    reset(instance) {
    +        //
    +    }
    +
    +    /**
    +     * This method is called right after `Face` has initialized.
    +     *
    +     * @param  {FlipClock} instance - The `FlipClock` instance.
    +     * @return {void}
    +     */
    +    initialized(instance) {
    +        //
    +    }
    +
    +    /**
    +     * This method is called right after `Face` has rendered.
    +     *
    +     * @param  {FlipClock} instance - The `FlipClock` instance.
    +     * @return {void}
    +     */
    +    rendered(instance) {
    +        //
    +    }
    +
    +    /**
    +     * This method is called right after `Face` has mounted.
    +     *
    +     * @param  {FlipClock} instance - The `FlipClock` instance.
    +     * @return {void}
    +     */
    +    mounted(instance) {
    +        if(this.autoStart && instance.timer.isStopped) {
    +            window.requestAnimationFrame(() => instance.start(instance));
    +        }
    +    }
    +
    +    /**
    +     * Helper method to instantiate a new `FaceValue`.
    +     *
    +     * @param  {FlipClock} instance - The `FlipClock` instance.
    +     * @param  {object|undefined} [attributes] - The attributes passed to the
    +     *     `FaceValue` instance.
    +     * @return {Divider} - The instantiated `FaceValue`.
    +     */
    +    createFaceValue(instance, value) {
    +        return FaceValue.make(
    +            isFunction(value) && !value.name ? value() : value, {
    +                minimumDigits: this.minimumDigits,
    +                format: value => this.format(instance, value)
    +            }
    +        );
    +    }
    +
    +}
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Components_FaceValue.js.html b/public/Components_FaceValue.js.html new file mode 100644 index 00000000..c912d8fa --- /dev/null +++ b/public/Components_FaceValue.js.html @@ -0,0 +1,184 @@ + + + + + FlipClock.js :: Source: Components/FaceValue.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    import Component from './Component';
    +import digitize from '../Helpers/Digitize';
    +import { next, prev } from '../Helpers/Value';
    +import { length, isObject, isNumber } from '../Helpers/Functions';
    +
    +export default class FaceValue extends Component {
    +
    +    /**
    +     * The `FaceValue` class handles all the digitizing for the `Face`.
    +     *
    +     * @class FaceValue
    +     * @extends Component
    +     * @param {*} value - The `FaceValue`'s actual value. Most likely should
    +     *     string, number, or Date. But since the Face handles the value, it
    +     *     could be anything.
    +     * @param {(object|undefined)} [attributes] - The instance attributes.
    +     */
    +    constructor(value, attributes) {
    +        super(Object.assign({
    +            format: value => value,
    +            prependLeadingZero: true,
    +            minimumDigits: 0
    +        }, attributes));
    +
    +        if(!this.value) {
    +            this.value = value;
    +        }
    +    }
    +
    +    /**
    +     * The `digits` attribute.
    +     *
    +     * @type {(Array|undefined)}
    +     */
    +    get digits() {
    +        return this.$digits;
    +    }
    +
    +    set digits(value) {
    +        this.$digits = value;
    +        this.minimumDigits = Math.max(this.minimumDigits, length(value));
    +    }
    +
    +    /**
    +     * The `value` attribute.
    +     *
    +     * @type {*}
    +     */
    +    get value() {
    +        return this.$value;
    +    }
    +
    +    set value(value) {
    +        this.$value = value;
    +        this.digits = digitize(this.format(value), {
    +            minimumDigits: this.minimumDigits,
    +            prependLeadingZero: this.prependLeadingZero
    +        });
    +    }
    +
    +    /**
    +     * Returns `true` if the `value` attribute is not a number.
    +     *
    +     * @return {boolean} - `true` is the value is not a number.
    +     */
    +    isNaN() {
    +        return isNaN(this.value);
    +    }
    +
    +    /**
    +     * Returns `true` if the `value` attribute is a number.
    +     *
    +     * @return {boolean} - `true` is the value is a number.
    +     */
    +    isNumber() {
    +        return isNumber();
    +    }
    +
    +    /**
    +     * Clones the current `FaceValue` instance, but sets a new value to the
    +     * cloned instance. Used for copying the current instance options and
    +     * methods, but setting a new value.
    +     *
    +     * @param  {*} value - The n
    +     * @param {(object|undefined)} [attributes] - The instance attributes.
    +     * @return {FaceValue} - The cloned `FaceValue`.
    +     */
    +    clone(value, attributes) {
    +        return new this.constructor(value, Object.assign(
    +            this.getPublicAttributes(), attributes
    +        ));
    +    }
    +
    +    /**
    +     * Define the name of the class.
    +     *
    +     * @return {string}
    +     */
    +    static defineName() {
    +        return 'FaceValue';
    +    }
    +
    +}
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Components_FlipClock.js.html b/public/Components_FlipClock.js.html new file mode 100644 index 00000000..2cfa70db --- /dev/null +++ b/public/Components_FlipClock.js.html @@ -0,0 +1,500 @@ + + + + + FlipClock.js :: Source: Components/FlipClock.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    import Face from './Face';
    +import List from './List';
    +import Group from './Group';
    +import Label from './Label';
    +import Timer from './Timer';
    +import Divider from './Divider';
    +import * as Faces from '../Faces';
    +import FaceValue from './FaceValue';
    +import DomComponent from './DomComponent';
    +import validate from '../Helpers/Validate';
    +import DefaultValues from '../Config/DefaultValues';
    +import ConsoleMessages from '../Config/ConsoleMessages';
    +import { flatten, isNull, isString, isObject, isUndefined, isFunction, error } from '../Helpers/Functions';
    +
    +export default class FlipClock extends DomComponent {
    +   
    +    /**
    +     * Create a new `FlipClock` instance.
    +     *
    +     * @class FlipClock
    +     * @extends DomComponent
    +     * @param {HTMLElement} el - The HTML element used to bind clock DOM node.
    +     * @param {*} value - The value that is passed to the clock face.
    +     * @param {object|undefined} attributes - {@link FlipClock.Options} passed an object with key/value.
    +     */
    +        
    +    /**
    +     * @namespace FlipClock.Options
    +     * @classdesc An object of key/value pairs that will be used to set the attributes.
    +     * 
    +     * ##### Example:
    +     * 
    +     *     {
    +     *        face: 'DayCounter',
    +     *        language: 'es',
    +     *        timer: Timer.make(500)
    +     *     }
    +     * 
    +     * @property {string|Face} [face={@link Faces.DayCounter}] - The clock's {@link Face} instance.
    +     * @property {number} [interval=1000] - The clock's interval rate (in milliseconds).
    +     * @property {object} [theme={@link Themes.Original}] - The clock's theme.
    +     * @property {string|object} [language={@link Languages.English}] - The clock's language.
    +     * @property {Timer} [timer={@link Timer}] - The clock's timer.
    +     */
    +    
    +    constructor(el, value, attributes) {
    +        if(!validate(el, HTMLElement)) {
    +            error(ConsoleMessages.element);
    +        }
    +
    +        if(isObject(value) && !attributes) {
    +            attributes = value;
    +            value = undefined;
    +        }
    +
    +        const face = attributes.face || DefaultValues.face;
    +
    +        delete attributes.face;
    +
    +        super(Object.assign({
    +            originalValue: value,
    +            theme: DefaultValues.theme,
    +            language: DefaultValues.language,
    +            timer: Timer.make(attributes.interval || 1000),
    +        }, attributes));
    +
    +        if(!this.face) {
    +            this.face = face;
    +        }
    +
    +        this.mount(el);
    +    }
    +
    +    /**
    +     * The clock `Face`.
    +     *
    +     * @type {Face}
    +     */
    +    get face() {
    +        return this.$face;
    +    }
    +
    +    set face(value) {
    +        if(!validate(value, [Face, 'string', 'function'])) {
    +            error(ConsoleMessages.face);
    +        }
    +
    +        this.$face = (Faces[value] || value).make(Object.assign(this.getPublicAttributes(), {
    +            originalValue: this.face ? this.face.originalValue : undefined
    +        }));
    +
    +        this.$face.initialized(this);
    +
    +        if(this.value) {
    +            this.$face.value = this.face.createFaceValue(this, this.value.value);
    +        }
    +        else if(!this.value) {
    +            this.value = this.originalValue;
    +        }
    +
    +        this.el && this.render();
    +    }
    +
    +    /**
    +     * The `stopAt` attribute.
    +     *
    +     * @type {*}
    +     */
    +    get stopAt() {
    +        return isFunction(this.$stopAt) ? this.$stopAt(this) : this.$stopAt;
    +    }
    +
    +    set stopAt(value) {
    +        this.$stopAt = value;
    +    }
    +
    +    /**
    +     * The `timer` instance.
    +     *
    +     * @type {Timer}
    +     */
    +    get timer() {
    +        return this.$timer;
    +    }
    +
    +    set timer(timer) {
    +        if(!validate(timer, Timer)) {
    +            error(ConsoleMessages.timer);
    +        }
    +
    +        this.$timer = timer;
    +    }
    +
    +    /**
    +     * Helper method to The clock's `FaceValue` instance.
    +     *
    +     * @type {FaceValue|null}
    +     */
    +    get value() {
    +        return this.face ? this.face.value : null;
    +    }
    +
    +    set value(value) {
    +        if(!this.face) {
    +            throw new Error('A face must be set before setting a value.');
    +        }
    +
    +        if(value instanceof FaceValue) {
    +            this.face.value = value;
    +        }
    +        else if(this.value) {
    +            this.face.value = this.face.value.clone(value);
    +        }
    +        else {
    +            this.face.value = this.face.createFaceValue(this, value);
    +        }
    +
    +        this.el && this.render();
    +    }
    +
    +    /**
    +     * The `originalValue` attribute.
    +     *
    +     * @type {*}
    +     */
    +    get originalValue() {
    +        if(isFunction(this.$originalValue) && !this.$originalValue.name) {
    +            return this.$originalValue();
    +        }
    +
    +        if(!isUndefined(this.$originalValue) && !isNull(this.$originalValue)) {
    +            return this.$originalValue;
    +        }
    +
    +        return this.face ? this.face.defaultValue() : undefined;
    +    }
    +
    +    set originalValue(value) {
    +        this.$originalValue = value;
    +    }
    +
    +    /**
    +     * Mount the clock to the parent DOM element.
    +     *
    +     * @param  {HTMLElement} el - The parent `HTMLElement`.
    +     * @return {FlipClock} - The `FlipClock` instance.
    +     */
    +    mount(el) {
    +        super.mount(el);
    +
    +        this.face.mounted(this);
    +
    +        return this;
    +    }
    +
    +    /**
    +     * Render the clock's DOM nodes.
    +     *
    +     * @return {HTMLElement} - The parent `HTMLElement`.
    +     */
    +    render() {
    +        // Call the parent render function
    +        super.render();
    +
    +        // Check to see if the face has a render function defined in the theme.
    +        // This allows a face to completely re-render or add to the theme.
    +        // This allows face specific interfaces for a theme.
    +        if(this.theme.faces[this.face.name]) {
    +            this.theme.faces[this.face.name](this.el, this);
    +        }
    +
    +        // Pass the clock instance to the rendered() function on the face.
    +        // This allows global modifications to the rendered templates not
    +        // theme specific.
    +        this.face.rendered(this);
    +
    +        // Return the rendered `HTMLElement`.
    +        return this.el;
    +    }
    +
    +    /**
    +     * Start the clock.
    +     *
    +     * @param  {Function} fn - The interval callback.
    +     * @return {FlipClock} - The `FlipClock` instance.
    +     */
    +    start(fn) {
    +        if(!this.timer.started) {
    +            this.value = this.originalValue;
    +        }
    +
    +        isUndefined(this.face.stopAt) && (this.face.stopAt = this.stopAt);
    +        isUndefined(this.face.originalValue) && (this.face.originalValue = this.originalValue);
    +
    +        this.timer.start(() => {
    +            this.face.interval(this, fn);
    +        });
    +
    +        this.face.started(this);
    +
    +        return this.emit('start');
    +    }
    +
    +    /**
    +     * Stop the clock.
    +     *
    +     * @param  {Function} fn - The stop callback.
    +     * @return {FlipClock} - The `FlipClock` instance.
    +     */
    +    stop(fn) {
    +        this.timer.stop(fn);
    +        this.face.stopped(this);
    +
    +        return this.emit('stop');
    +    }
    +
    +    /**
    +     * Reset the clock to the original value.
    +     *
    +     * @param  {Function} fn - The interval callback.
    +     * @return {FlipClock} - The `FlipClock` instance.
    +     */
    +    reset(fn) {
    +        this.value = this.originalValue;
    +        this.timer.reset(() => this.interval(this, fn));
    +        this.face.reset(this);
    +
    +        return this.emit('reset');
    +    }
    +
    +    /**
    +     * Helper method to increment the clock's value.
    +     *
    +     * @param  {*|undefined} value - Increment the clock by the specified value.
    +     *     If no value is passed, then the default increment is determined by
    +     *     the Face, which is usually `1`.
    +     * @return {FlipClock} - The `FlipClock` instance.
    +     */
    +    increment(value) {
    +        this.face.increment(this, value);
    +
    +        return this;
    +    }
    +
    +    /**
    +     * Helper method to decrement the clock's value.
    +     *
    +     * @param  {*|undefined} value - Decrement the clock by the specified value.
    +     *     If no value is passed, then the default decrement is determined by
    +     *     the `Face`, which is usually `1`.
    +     * @return {FlipClock} - The `FlipClock` instance.
    +     */
    +    decrement(value) {
    +        this.face.decrement(this, value);
    +
    +        return this;
    +    }
    +
    +    /**
    +     * Helper method to instantiate a new `Divider`.
    +     *
    +     * @param  {object|undefined} [attributes] - The attributes passed to the
    +     *     `Divider` instance.
    +     * @return {Divider} - The instantiated Divider.
    +     */
    +    createDivider(attributes) {
    +        return Divider.make(Object.assign({
    +            theme: this.theme,
    +            language: this.language
    +        }, attributes));
    +    }
    +
    +    /**
    +     * Helper method to instantiate a new `List`.
    +     *
    +     * @param  {*} value - The `List` value.
    +     * @param  {object|undefined} [attributes] - The attributes passed to the
    +     *     `List` instance.
    +     * @return {List} - The instantiated `List`.
    +     */
    +    createList(value, attributes) {
    +        return List.make(value, Object.assign({
    +            theme: this.theme,
    +            language: this.language
    +        }, attributes));
    +    }
    +
    +    /**
    +     * Helper method to instantiate a new `Label`.
    +     *
    +     * @param  {*} value - The `Label` value.
    +     * @param  {object|undefined} [attributes] - The attributes passed to the
    +     *     `Label` instance.
    +     * @return {Label} - The instantiated `Label`.
    +     */
    +    createLabel(value, attributes) {
    +        return Label.make(value, Object.assign({
    +            theme: this.theme,
    +            language: this.language
    +        }, attributes));
    +    }
    +
    +    /**
    +     * Helper method to instantiate a new `Group`.
    +     *
    +     * @param  {array} items - An array of `List` items to group.
    +     * @param  {Group|undefined} [attributes] - The attributes passed to the
    +     *     `Group` instance.
    +     * @return {Group} - The instantiated `Group`.
    +     */
    +    createGroup(items, attributes) {
    +        return Group.make(items, Object.assign({
    +            theme: this.theme,
    +            language: this.language
    +        }, attributes));
    +    }
    +
    +    /**
    +     * The `defaults` attribute.
    +     *
    +     * @type {object}
    +     */
    +    static get defaults() {
    +        return DefaultValues;
    +    }
    +
    +    /**
    +     * Define the name of the class.
    +     *
    +     * @return {string}
    +     */
    +    static defineName() {
    +        return 'FlipClock';
    +    }
    +
    +    /**
    +     * Helper method to set the default `Face` value.
    +     *
    +     * @param  {Face} value - The default `Face` class.This should be a
    +     *     constructor.
    +     * @return {void}
    +     */
    +    static setDefaultFace(value) {
    +        if(!validate(value, Face)) {
    +            error(ConsoleMessages.face);
    +        }
    +
    +        DefaultValues.face = value;
    +    }
    +
    +    /**
    +     * Helper method to set the default theme.
    +     *
    +     * @param {object} value - The default theme.
    +     * @return {void}
    +     */
    +    static setDefaultTheme(value) {
    +        if(!validate(value, 'object')) {
    +            error(ConsoleMessages.theme);
    +        }
    +
    +        DefaultValues.theme = value;
    +    }
    +
    +    /**
    +     * Helper method to set the default language.
    +     *
    +     * @param {object} value - The default language.
    +     * @return {void}
    +     */
    +    static setDefaultLanguage(value) {
    +        if(!validate(value, 'object')) {
    +            error(ConsoleMessages.language);
    +        }
    +
    +        DefaultValues.language = value;
    +    }
    +
    +}
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Components_Group.js.html b/public/Components_Group.js.html new file mode 100644 index 00000000..4593c4b0 --- /dev/null +++ b/public/Components_Group.js.html @@ -0,0 +1,112 @@ + + + + + FlipClock.js :: Source: Components/Group.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    import DomComponent from './DomComponent';
    +import { isObject, isArray } from '../Helpers/Functions';
    +
    +export default class Group extends DomComponent {
    +
    +    /**
    +     * This class is used to group values within a clock face. How the groups
    +     * are displayed is determined by the theme.
    +     *
    +     * @class Group
    +     * @extends DomComponent
    +     * @param {Array|Object} items - An array `List` instances or an object of
    +     *     attributes. If not an array, assumed to be the attributes.
    +     * @param {object|undefined} [attributes] - The instance attributes.
    +     */
    +    constructor(items, attributes) {
    +        super(Object.assign({
    +            items: isArray(items) ? items : []
    +        }, (isObject(items) ? items : null), attributes));
    +    }
    +
    +    /**
    +     * Define the name of the class.
    +     *
    +     * @return {string}
    +     */
    +    static defineName() {
    +        return 'Group';
    +    }
    +
    +}
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Components_Label.js.html b/public/Components_Label.js.html new file mode 100644 index 00000000..86e0679a --- /dev/null +++ b/public/Components_Label.js.html @@ -0,0 +1,111 @@ + + + + + FlipClock.js :: Source: Components/Label.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    import DomComponent from './DomComponent';
    +import { isObject } from '../Helpers/Functions';
    +
    +export default class Label extends DomComponent {
    +
    +    /**
    +     * This class is used to add a label to the clock face.
    +     *
    +     * @class Label
    +     * @extends DomComponent
    +     * @param {Number|String|Object} label - The label attribute. If an object,
    +     *     it is assumed that it is the instance attributes.
    +     * @param {object|undefined} [attributes] - The instance attributes.
    +     */
    +    constructor(label, attributes) {
    +        super(Object.assign({
    +            label: label
    +        }, (isObject(label) ? label : null), attributes));
    +    }
    +
    +    /**
    +     * Define the name of the class.
    +     *
    +     * @return {string}
    +     */
    +    static defineName() {
    +        return 'Label';
    +    }
    +
    +}
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Components_List.js.html b/public/Components_List.js.html new file mode 100644 index 00000000..3576bd46 --- /dev/null +++ b/public/Components_List.js.html @@ -0,0 +1,161 @@ + + + + + FlipClock.js :: Source: Components/List.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    import Divider from './Divider';
    +import ListItem from './ListItem';
    +import DomComponent from './DomComponent';
    +import { next, prev,  } from '../Helpers/Value';
    +import { isObject,  } from '../Helpers/Functions';
    +
    +export default class List extends DomComponent {
    +
    +    /**
    +     * This class is used to add a digit to the clock face. This class is called
    +     * `List` because it contains a list of `ListItem`'s which are used to
    +     * create flip effects. In the context of FlipClock.js a `List` represents
    +     * one single digit.
    +     *
    +     * @class List
    +     * @extends DomComponent
    +     * @param {Number|String|Object} label - The active value. If an object, it
    +     * is assumed that it is the instance attributes.
    +     * @param {object|undefined} [attributes] - The instance attributes.
    +     */
    +    constructor(value, attributes) {
    +        super(Object.assign({
    +            value: value,
    +            items: [],
    +        }, isObject(value) ? value : null, attributes));
    +    }
    +
    +    /**
    +     * Get the `value` attribute.
    +     *
    +     * @type {(Number|String)}
    +     */
    +    get value() {
    +        return this.$value;
    +    }
    +    set value(value) {
    +        this.$value = value;
    +    }
    +
    +    /**
    +     * Get the `items` attribute.
    +     *
    +     * @type {(Number|String)}
    +     */
    +    get items() {
    +        return this.$items;
    +    }
    +
    +    set items(value) {
    +        this.$items = value;
    +    }
    +
    +    /**
    +     * Helper method to instantiate a new `ListItem`.
    +     *
    +     * @param  {(Number|String)} value - The `ListItem` value.
    +     * @param  {(Object|undefined)} [attributes] - The instance attributes.
    +     * @return {ListItem} - The instantiated `ListItem`.
    +     */
    +    createListItem(value, attributes) {
    +        const item = new ListItem(value, Object.assign({
    +            theme: this.theme,
    +            language: this.language
    +        }, attributes));
    +
    +        this.$items.push(item);
    +
    +        return item;
    +    }
    +
    +    /**
    +     * Define the name of the class.
    +     *
    +     * @return {string}
    +     */
    +    static defineName() {
    +        return 'List';
    +    }
    +
    +}
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Components_ListItem.js.html b/public/Components_ListItem.js.html new file mode 100644 index 00000000..34371da9 --- /dev/null +++ b/public/Components_ListItem.js.html @@ -0,0 +1,110 @@ + + + + + FlipClock.js :: Source: Components/ListItem.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    import DomComponent from './DomComponent';
    +import { isObject } from '../Helpers/Functions';
    +
    +export default class ListItem extends DomComponent {
    +
    +    /**
    +     * This class is used to represent a single digits in a `List`.
    +     *
    +     * @class ListItem
    +     * @extends DomComponent
    +     * @param {(Number|String)} value - The value of the `ListItem`.
    +     * @param {object|undefined} [attributes] - The instance attributes.
    +     */
    +    constructor(value, attributes) {
    +        super(Object.assign({
    +            value: value
    +        }, isObject(value) ? value : null, attributes));
    +    }
    +
    +    /**
    +     * Define the name of the class.
    +     *
    +     * @return {string}
    +     */
    +    static defineName() {
    +        return 'ListItem';
    +    }
    +
    +}
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Components_Timer.js.html b/public/Components_Timer.js.html new file mode 100644 index 00000000..aa26f8fe --- /dev/null +++ b/public/Components_Timer.js.html @@ -0,0 +1,208 @@ + + + + + FlipClock.js :: Source: Components/Timer.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    import Component from './Component';
    +import { isObject, isNumber, callback } from '../Helpers/Functions';
    +
    +export default class Timer extends Component {
    +
    +    /**
    +     * Create a new `Timer` instance.
    +     *
    +     * @class Timer
    +     * @extends Component
    +     * @param {(Object|Number)} interval - The interval passed as a `Number`,
    +     *     or can set the attribute of the class with an object.
    +     */
    +    constructor(interval) {
    +        super(Object.assign({
    +            count: 0,
    +            handle: null,
    +            started: null,
    +            running: false,
    +            interval: isNumber(interval) ? interval : null,
    +        }, isObject(interval) ? interval : null));
    +    }
    +
    +    /**
    +     * The `elapsed` attribute.
    +     *
    +     * @type {Number}
    +     */
    +    get elapsed() {
    +        return !this.lastLoop ? 0 : this.lastLoop - (
    +            this.started ? this.started.getTime() : new Date().getTime()
    +        );
    +    }
    +
    +    /**
    +     * The `isRunning` attribute.
    +     *
    +     * @type {boolean}
    +     */
    +    get isRunning() {
    +        return this.running === true;
    +    }
    +
    +    /**
    +     * The `isStopped` attribute.
    +     *
    +     * @type {boolean}
    +     */
    +    get isStopped() {
    +        return this.running === false;
    +    }
    +
    +    /**
    +     * Resets the timer.
    +     *
    +     * @param  {(Function|undefined)} fn - The interval callback.
    +     * @return {Timer} - The `Timer` instance.
    +     */
    +    reset(fn) {
    +        this.stop(() => {
    +            this.count = 0;
    +            this.start(() => callback.call(this, fn));
    +            this.emit('reset');
    +        });
    +
    +        return this;
    +    }
    +
    +    /**
    +     * Starts the timer.
    +     *
    +     * @param  {Function} fn - The interval callback.
    +     * @return {Timer} - The `Timer` instance.
    +     */
    +    start(fn) {
    +        this.started = new Date;
    +        this.lastLoop = Date.now();
    +        this.running = true;
    +        this.emit('start');
    +
    +        const loop = () => {
    +            if(Date.now() - this.lastLoop >= this.interval) {
    +                callback.call(this, fn);
    +                this.lastLoop = Date.now();
    +                this.emit('interval');
    +                this.count++;
    +            }
    +
    +            this.handle = window.requestAnimationFrame(loop);
    +
    +            return this;
    +        };
    +
    +        return loop();
    +    }
    +
    +    /**
    +     * Stops the timer.
    +     *
    +     * @param  {Function} fn - The stop callback.
    +     * @return {Timer} - The `Timer` instance.
    +     */
    +    stop(fn) {
    +        if(this.isRunning) {
    +            setTimeout(() => {
    +                window.cancelAnimationFrame(this.handle);
    +
    +                this.running = false;
    +
    +                callback.call(this, fn);
    +
    +                this.emit('stop');
    +            });
    +        }
    +
    +        return this;
    +    }
    +
    +    /**
    +     * Define the name of the class.
    +     *
    +     * @return {string}
    +     */
    +    static defineName() {
    +        return 'Timer';
    +    }
    +}
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Config_ConsoleMessages.js.html b/public/Config_ConsoleMessages.js.html new file mode 100644 index 00000000..158b7510 --- /dev/null +++ b/public/Config_ConsoleMessages.js.html @@ -0,0 +1,97 @@ + + + + + FlipClock.js :: Source: Config/ConsoleMessages.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    /**
    + * @alias ConsoleMessages
    + * @type {object}
    + * @memberof module:Config/ConsoleMessages
    + */
    +export default {
    +    className: 'The className() is not defined.',
    +    items: 'The items property must be an array.',
    +    theme: 'The theme property must be an object.',
    +    language: 'The language must be an object.',
    +    date: 'The value must be an instance of a Date.',
    +    face: 'The face must be an instance of a Face class.',
    +    element: 'The element must be an instance of an HTMLElement',
    +    faceValue: 'The face must be an instance of a FaceValue class.',
    +    timer: 'The timer property must be an instance of a Timer class.'
    +};
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Config_DefaultValues.js.html b/public/Config_DefaultValues.js.html new file mode 100644 index 00000000..a239fe1b --- /dev/null +++ b/public/Config_DefaultValues.js.html @@ -0,0 +1,95 @@ + + + + + FlipClock.js :: Source: Config/DefaultValues.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    import { Counter } from '../Faces';
    +import { Original } from '../Themes';
    +import { English } from '../Languages';
    +
    +/**
    + * @alias DefaultValues
    + * @type {object}
    + * @memberof module:Config/DefaultValues
    + */
    +export default {
    +    face: Counter,
    +    theme: Original,
    +    language: English
    +};
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Divider.html b/public/Divider.html new file mode 100644 index 00000000..3efdb65f --- /dev/null +++ b/public/Divider.html @@ -0,0 +1,1314 @@ + + + + + FlipClock.js :: Class: Divider + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    Divider(attributesopt)

    + + +
    + +
    +
    + + + + + + +

    new Divider(attributesopt)

    + + + + + + +
    +

    Create a new Divider instance.

    +

    The purpose of this class is to return a unique class name so the theme can +render it appropriately, since each DomComponent can receive its own template +from the theme.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    attributes + + +object +| + +undefined + + + + + + <optional>
    + + + + + +

    The instance attributes.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    + + +
    +

    Extends

    + + + + + + + +
    + + + + + + + + + + + + + + +

    Members

    + + +
    + +

    className :string

    + + + + +
    +

    The className attribute. Used for CSS.

    +
    + + + +
    Type:
    +
      +
    • + +string + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    el :HTMLElement

    + + + + +
    +

    The el attribute.

    +
    + + + +
    Type:
    +
      +
    • + +HTMLElement + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    language :object

    + + + + +
    +

    Get the language attribute.

    +
    + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    parent :DomComponent

    + + + + +
    +

    The parent attribute. Parent is set when DomComponent instances are +mounted.

    +
    + + + +
    Type:
    + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    theme :object

    + + + + +
    +

    The theme attribute.

    +
    + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + + + + + + +

    Methods

    + + +
    + + + + + +

    (static) defineName() → {string}

    + + + + + + +
    +

    Define the name of the class.

    +
    + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +string + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    mount(parent, beforeopt) → {HTMLElement}

    + + + + + + +
    +

    Mount a DOM component to a parent node.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    parent + + +HTMLElement + + + + + + + + + + + +

    The parent DOM node.

    before + + +false +| + +HTMLElement + + + + + + <optional>
    + + + + + +
    + + false + +

    If false, element is + appended to the parent node. If an instance of an HTMLElement, + the component will be inserted before the specified element.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The el attribute.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +HTMLElement + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    render() → {HTMLElement}

    + + + + + + +
    +

    Render the DOM component.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The el attribute.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +HTMLElement + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    translate(string) → {string}

    + + + + + + +
    +

    Translate a string.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    string + + +string + + + +

    The string to translate.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The translated string. If no tranlation found, the + untranslated string is returned.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +string + + +
    +
    + + + + + + + +
    + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/DomComponent.html b/public/DomComponent.html new file mode 100644 index 00000000..c99e31f8 --- /dev/null +++ b/public/DomComponent.html @@ -0,0 +1,3156 @@ + + + + + FlipClock.js :: Class: DomComponent + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    DomComponent(attributesopt)

    + + +
    + +
    +
    + + + + + + +

    new DomComponent(attributesopt)

    + + + + + + +
    +

    An abstract class that all other DOM components can extend.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    attributes + + +object +| + +undefined + + + + + + <optional>
    + + + + + +

    The instance attributes.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    + + +
    +

    Extends

    + + + + + + + +
    + + + + + + + + + + + + + + +

    Members

    + + +
    + +

    className :string

    + + + + +
    +

    The className attribute. Used for CSS.

    +
    + + + +
    Type:
    +
      +
    • + +string + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    el :HTMLElement

    + + + + +
    +

    The el attribute.

    +
    + + + +
    Type:
    +
      +
    • + +HTMLElement + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    events :object

    + + + + +
    +

    The events attribute.

    +
    + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    language :object

    + + + + +
    +

    Get the language attribute.

    +
    + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    name :string

    + + + + +
    +

    Get the name attribute.

    +
    + + + +
    Type:
    +
      +
    • + +string + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    parent :DomComponent

    + + + + +
    +

    The parent attribute. Parent is set when DomComponent instances are +mounted.

    +
    + + + +
    Type:
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    theme :object

    + + + + +
    +

    The theme attribute.

    +
    + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + + + + + + +

    Methods

    + + +
    + + + + + +

    (static) translate()

    + + + + + + +
    +

    Alias to translate(string);

    +
    + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + + +

    callback(fn) → {*}

    + + + + + + +
    +

    Helper method to execute the callback() function.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    fn + + +function + + + +

    The callback function.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns the executed callback function.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    emit(key) → {Component}

    + + + + + + +
    +

    Emit an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getAttribute(key) → {*}

    + + + + + + +
    +

    Get an attribute. Returns null if no attribute is defined.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The attribute name.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute value.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getAttributes() → {object}

    + + + + + + +
    +

    Get all the atttributes for this instance.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute dictionary.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +object + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getPublicAttributes() → {object}

    + + + + + + +
    +

    Get only public the atttributes for this instance. Omits any attribute +that starts with $, which is used internally.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute dictionary.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +object + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    mount(parent, beforeopt) → {HTMLElement}

    + + + + + + +
    +

    Mount a DOM component to a parent node.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    parent + + +HTMLElement + + + + + + + + + + + +

    The parent DOM node.

    before + + +false +| + +HTMLElement + + + + + + <optional>
    + + + + + +
    + + false + +

    If false, element is + appended to the parent node. If an instance of an HTMLElement, + the component will be inserted before the specified element.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The el attribute.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +HTMLElement + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    off(key, fn) → {Component}

    + + + + + + +
    +

    Stop listening to an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    fn + + +function +| + +undefined + + + +

    The listener callback function. If no + function is defined, all events with the specified id/key will be + removed. Otherwise, only the event listeners matching the id/key AND + callback will be removed.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    on(key, fn, onceopt) → {Component}

    + + + + + + +
    +

    Start listening to an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    key + + +string + + + + + + + + + + + +

    The event id/key.

    fn + + +function + + + + + + + + + + + +

    The listener callback function.

    once + + +boolean + + + + + + <optional>
    + + + + + +
    + + false + +

    Should the event handler be fired a + single time.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    once(key, fn) → {Component}

    + + + + + + +
    +

    Listen to an event only one time.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    fn + + +function + + + +

    The listener callback function.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    render() → {HTMLElement}

    + + + + + + +
    +

    Render the DOM component.

    +
    + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The el attribute.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +HTMLElement + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    setAttribute(key, value) → {void}

    + + + + + + +
    +

    Set an attribute key and value.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The attribute name.

    value + + +* + + + +

    The attribute value.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    setAttributes(values) → {void}

    + + + + + + +
    +

    Set an attributes by object of key/value pairs.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    values + + +object + + + +

    The object dictionary.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    translate(string) → {string}

    + + + + + + +
    +

    Translate a string.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    string + + +string + + + +

    The string to translate.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The translated string. If no tranlation found, the + untranslated string is returned.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +string + + +
    +
    + + + + + + + +
    + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Face.html b/public/Face.html new file mode 100644 index 00000000..03dbef87 --- /dev/null +++ b/public/Face.html @@ -0,0 +1,4975 @@ + + + + + FlipClock.js :: Class: Face + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    Face(value, attributesopt)

    + + +
    + +
    +
    + + + + + + +

    new Face(value, attributesopt)

    + + + + + + +
    +

    This class is meant to be provide an interface for all other faces to +extend.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    value + + +FaceValue +| + +object + + + + + + + + + +

    The Face value. If not an instance + of FaceValue, this argument is assumed to be the instance attributes.

    attributes + + +object +| + +undefined + + + + + + <optional>
    + + + + + +

    The instance attributes.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    + + +
    +

    Extends

    + + + + + + + +
    + + + + + + + + + + + + + + +

    Members

    + + +
    + +

    dataType :*

    + + + + +
    +

    The dataType attribute.

    +
    + + + +
    Type:
    +
      +
    • + +* + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    events :object

    + + + + +
    +

    The events attribute.

    +
    + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    name :string

    + + + + +
    +

    Get the name attribute.

    +
    + + + +
    Type:
    +
      +
    • + +string + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    originalValue :*

    + + + + +
    +

    The originalValue attribute.

    +
    + + + +
    Type:
    +
      +
    • + +* + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    stopAt :*

    + + + + +
    +

    The stopAt attribute.

    +
    + + + +
    Type:
    +
      +
    • + +* + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    value :*

    + + + + +
    +

    The value attribute.

    +
    + + + +
    Type:
    +
      +
    • + +* + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + + + + + + +

    Methods

    + + +
    + + + + + +

    callback(fn) → {*}

    + + + + + + +
    +

    Helper method to execute the callback() function.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    fn + + +function + + + +

    The callback function.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns the executed callback function.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    createFaceValue(instance, attributesopt) → {Divider}

    + + + + + + +
    +

    Helper method to instantiate a new FaceValue.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    instance + + +FlipClock + + + + + + + + + +

    The FlipClock instance.

    attributes + + +object +| + +undefined + + + + + + <optional>
    + + + + + +

    The attributes passed to the + FaceValue instance.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The instantiated FaceValue.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Divider + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    decrement(instance, amountopt) → {void}

    + + + + + + +
    +

    Decrement the clock.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    instance + + +FlipClock + + + + + + + + + +

    The FlipClock instance.

    amount + + +Number + + + + + + <optional>
    + + + + + +

    The amount to decrement. If the amount is not + defined, it is left up to the Face to determine the default value.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    defaultAttributes() → {Object|undefined}

    + + + + + + +
    +

    The default attributes for the Face.

    +
    + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The default attributes.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Object +| + +undefined + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    defaultDataType() → {Object|undefined}

    + + + + + + +
    +

    The default data type for the Face value.

    +
    + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The default data type.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Object +| + +undefined + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    defaultValue() → {*}

    + + + + + + +
    +

    The default value for the Face.

    +
    + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The default value.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    emit(key) → {Component}

    + + + + + + +
    +

    Emit an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    format(instance, value) → {*}

    + + + + + + +
    +

    By default this just returns the value unformatted.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    value + + +* + + + +

    The value to format.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The formatted value.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getAttribute(key) → {*}

    + + + + + + +
    +

    Get an attribute. Returns null if no attribute is defined.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The attribute name.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute value.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getAttributes() → {object}

    + + + + + + +
    +

    Get all the atttributes for this instance.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute dictionary.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +object + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getPublicAttributes() → {object}

    + + + + + + +
    +

    Get only public the atttributes for this instance. Omits any attribute +that starts with $, which is used internally.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute dictionary.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +object + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    increment(instance, amountopt) → {void}

    + + + + + + +
    +

    Increment the clock.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    instance + + +FlipClock + + + + + + + + + +

    The FlipClock instance.

    amount + + +Number + + + + + + <optional>
    + + + + + +

    The amount to increment. If the amount is not + defined, it is left up to the Face to determine the default value.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    initialized(instance) → {void}

    + + + + + + +
    +

    This method is called right after Face has initialized.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    interval(instance, fn) → {Face}

    + + + + + + +
    +

    This method is called with every interval, or every time the clock +should change, and handles the actual incrementing and decrementing the +clock's FaceValue.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    fn + + +function + + + +

    The interval callback.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • This Face instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Face + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    mounted(instance) → {void}

    + + + + + + +
    +

    This method is called right after Face has mounted.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    off(key, fn) → {Component}

    + + + + + + +
    +

    Stop listening to an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    fn + + +function +| + +undefined + + + +

    The listener callback function. If no + function is defined, all events with the specified id/key will be + removed. Otherwise, only the event listeners matching the id/key AND + callback will be removed.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    on(key, fn, onceopt) → {Component}

    + + + + + + +
    +

    Start listening to an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    key + + +string + + + + + + + + + + + +

    The event id/key.

    fn + + +function + + + + + + + + + + + +

    The listener callback function.

    once + + +boolean + + + + + + <optional>
    + + + + + +
    + + false + +

    Should the event handler be fired a + single time.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    once(key, fn) → {Component}

    + + + + + + +
    +

    Listen to an event only one time.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    fn + + +function + + + +

    The listener callback function.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    rendered(instance) → {void}

    + + + + + + +
    +

    This method is called right after Face has rendered.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    reset(instance) → {void}

    + + + + + + +
    +

    This method is called right after clock has reset.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    setAttribute(key, value) → {void}

    + + + + + + +
    +

    Set an attribute key and value.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The attribute name.

    value + + +* + + + +

    The attribute value.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    setAttributes(values) → {void}

    + + + + + + +
    +

    Set an attributes by object of key/value pairs.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    values + + +object + + + +

    The object dictionary.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    shouldStop(instance) → {boolean}

    + + + + + + +
    +

    Determines if the clock should stop or not.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns true if the clock should stop.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +boolean + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    started(instance) → {void}

    + + + + + + +
    +

    This method is called right after clock has started.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    stopped(instance) → {void}

    + + + + + + +
    +

    This method is called right after clock has stopped.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/FaceValue.html b/public/FaceValue.html new file mode 100644 index 00000000..0d6131cb --- /dev/null +++ b/public/FaceValue.html @@ -0,0 +1,2924 @@ + + + + + FlipClock.js :: Class: FaceValue + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    FaceValue(value, attributesopt)

    + + +
    + +
    +
    + + + + + + +

    new FaceValue(value, attributesopt)

    + + + + + + +
    +

    The FaceValue class handles all the digitizing for the Face.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    value + + +* + + + + + + + + + +

    The FaceValue's actual value. Most likely should + string, number, or Date. But since the Face handles the value, it + could be anything.

    attributes + + +object +| + +undefined + + + + + + <optional>
    + + + + + +

    The instance attributes.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    + + +
    +

    Extends

    + + + + + + + +
    + + + + + + + + + + + + + + +

    Members

    + + +
    + +

    digits :Array|undefined

    + + + + +
    +

    The digits attribute.

    +
    + + + +
    Type:
    +
      +
    • + +Array +| + +undefined + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    events :object

    + + + + +
    +

    The events attribute.

    +
    + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    name :string

    + + + + +
    +

    Get the name attribute.

    +
    + + + +
    Type:
    +
      +
    • + +string + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    value :*

    + + + + +
    +

    The value attribute.

    +
    + + + +
    Type:
    +
      +
    • + +* + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + + + + + + +

    Methods

    + + +
    + + + + + +

    (static) defineName() → {string}

    + + + + + + +
    +

    Define the name of the class.

    +
    + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +string + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    callback(fn) → {*}

    + + + + + + +
    +

    Helper method to execute the callback() function.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    fn + + +function + + + +

    The callback function.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns the executed callback function.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    clone(value, attributesopt) → {FaceValue}

    + + + + + + +
    +

    Clones the current FaceValue instance, but sets a new value to the +cloned instance. Used for copying the current instance options and +methods, but setting a new value.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    value + + +* + + + + + + + + + +

    The n

    attributes + + +object +| + +undefined + + + + + + <optional>
    + + + + + +

    The instance attributes.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The cloned FaceValue.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +FaceValue + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    emit(key) → {Component}

    + + + + + + +
    +

    Emit an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getAttribute(key) → {*}

    + + + + + + +
    +

    Get an attribute. Returns null if no attribute is defined.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The attribute name.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute value.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getAttributes() → {object}

    + + + + + + +
    +

    Get all the atttributes for this instance.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute dictionary.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +object + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getPublicAttributes() → {object}

    + + + + + + +
    +

    Get only public the atttributes for this instance. Omits any attribute +that starts with $, which is used internally.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute dictionary.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +object + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    isNaN() → {boolean}

    + + + + + + +
    +

    Returns true if the value attribute is not a number.

    +
    + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • true is the value is not a number.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +boolean + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    isNumber() → {boolean}

    + + + + + + +
    +

    Returns true if the value attribute is a number.

    +
    + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • true is the value is a number.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +boolean + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    off(key, fn) → {Component}

    + + + + + + +
    +

    Stop listening to an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    fn + + +function +| + +undefined + + + +

    The listener callback function. If no + function is defined, all events with the specified id/key will be + removed. Otherwise, only the event listeners matching the id/key AND + callback will be removed.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    on(key, fn, onceopt) → {Component}

    + + + + + + +
    +

    Start listening to an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    key + + +string + + + + + + + + + + + +

    The event id/key.

    fn + + +function + + + + + + + + + + + +

    The listener callback function.

    once + + +boolean + + + + + + <optional>
    + + + + + +
    + + false + +

    Should the event handler be fired a + single time.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    once(key, fn) → {Component}

    + + + + + + +
    +

    Listen to an event only one time.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    fn + + +function + + + +

    The listener callback function.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    setAttribute(key, value) → {void}

    + + + + + + +
    +

    Set an attribute key and value.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The attribute name.

    value + + +* + + + +

    The attribute value.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    setAttributes(values) → {void}

    + + + + + + +
    +

    Set an attributes by object of key/value pairs.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    values + + +object + + + +

    The object dictionary.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Faces.Counter.html b/public/Faces.Counter.html new file mode 100644 index 00000000..949b5fe7 --- /dev/null +++ b/public/Faces.Counter.html @@ -0,0 +1,5179 @@ + + + + + FlipClock.js :: Class: Counter + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    + Faces.Counter(value, attributesopt)

    + +

    This face is designed to increment and decrement numberic values, + not Date objects.

    + + +
    + +
    +
    + + + + +

    Constructor

    + + + +

    new Counter(value, attributesopt)

    + + + + + + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    value + + +FaceValue +| + +object + + + + + + + + + +

    The Face value. If not an instance + of FaceValue, this argument is assumed to be the instance attributes.

    attributes + + +object +| + +undefined + + + + + + <optional>
    + + + + + +

    The instance attributes.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    + + +
    +

    Extends

    + + + + + + + +
    + + + + + + + + + + + + + + +

    Members

    + + +
    + +

    dataType :*

    + + + + +
    +

    The dataType attribute.

    +
    + + + +
    Type:
    +
      +
    • + +* + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    events :object

    + + + + +
    +

    The events attribute.

    +
    + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    name :string

    + + + + +
    +

    Get the name attribute.

    +
    + + + +
    Type:
    +
      +
    • + +string + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    originalValue :*

    + + + + +
    +

    The originalValue attribute.

    +
    + + + +
    Type:
    +
      +
    • + +* + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    stopAt :*

    + + + + +
    +

    The stopAt attribute.

    +
    + + + +
    Type:
    +
      +
    • + +* + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    value :*

    + + + + +
    +

    The value attribute.

    +
    + + + +
    Type:
    +
      +
    • + +* + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + + + + + + +

    Methods

    + + +
    + + + + + +

    (static) defineName() → {string}

    + + + + + + +
    +

    Define the name of the class.

    +
    + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +string + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    callback(fn) → {*}

    + + + + + + +
    +

    Helper method to execute the callback() function.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    fn + + +function + + + +

    The callback function.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns the executed callback function.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    createFaceValue(instance, attributesopt) → {Divider}

    + + + + + + +
    +

    Helper method to instantiate a new FaceValue.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    instance + + +FlipClock + + + + + + + + + +

    The FlipClock instance.

    attributes + + +object +| + +undefined + + + + + + <optional>
    + + + + + +

    The attributes passed to the + FaceValue instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The instantiated FaceValue.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Divider + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    decrement(instance, amountopt) → {void}

    + + + + + + +
    +

    Decrement the clock.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    instance + + +FlipClock + + + + + + + + + +

    The FlipClock instance.

    amount + + +Number + + + + + + <optional>
    + + + + + +

    The amount to decrement. If the amount is not + defined, it is left up to the Face to determine the default value.

    +
    + + + + + +
    + + + + + + + + +
    Overrides:
    +
    + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    defaultAttributes() → {Object|undefined}

    + + + + + + +
    +

    The default attributes for the Face.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The default attributes.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Object +| + +undefined + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    defaultDataType() → {Object|undefined}

    + + + + + + +
    +

    The default data type for the Face value.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The default data type.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Object +| + +undefined + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    defaultValue() → {*}

    + + + + + + +
    +

    The default value for the Face.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The default value.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    emit(key) → {Component}

    + + + + + + +
    +

    Emit an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    format(instance, value) → {*}

    + + + + + + +
    +

    By default this just returns the value unformatted.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    value + + +* + + + +

    The value to format.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The formatted value.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getAttribute(key) → {*}

    + + + + + + +
    +

    Get an attribute. Returns null if no attribute is defined.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The attribute name.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute value.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getAttributes() → {object}

    + + + + + + +
    +

    Get all the atttributes for this instance.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute dictionary.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +object + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getPublicAttributes() → {object}

    + + + + + + +
    +

    Get only public the atttributes for this instance. Omits any attribute +that starts with $, which is used internally.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute dictionary.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +object + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    increment(instance, amountopt) → {void}

    + + + + + + +
    +

    Increment the clock.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    instance + + +FlipClock + + + + + + + + + +

    The FlipClock instance.

    amount + + +Number + + + + + + <optional>
    + + + + + +

    The amount to increment. If the amount is not + defined, it is left up to the Face to determine the default value.

    +
    + + + + + +
    + + + + + + + + +
    Overrides:
    +
    + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    initialized(instance) → {void}

    + + + + + + +
    +

    This method is called right after Face has initialized.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    interval(instance, fn) → {Face}

    + + + + + + +
    +

    This method is called with every interval, or every time the clock +should change, and handles the actual incrementing and decrementing the +clock's FaceValue.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    fn + + +function + + + +

    The interval callback.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • This Face instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Face + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    mounted(instance) → {void}

    + + + + + + +
    +

    This method is called right after Face has mounted.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    off(key, fn) → {Component}

    + + + + + + +
    +

    Stop listening to an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    fn + + +function +| + +undefined + + + +

    The listener callback function. If no + function is defined, all events with the specified id/key will be + removed. Otherwise, only the event listeners matching the id/key AND + callback will be removed.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    on(key, fn, onceopt) → {Component}

    + + + + + + +
    +

    Start listening to an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    key + + +string + + + + + + + + + + + +

    The event id/key.

    fn + + +function + + + + + + + + + + + +

    The listener callback function.

    once + + +boolean + + + + + + <optional>
    + + + + + +
    + + false + +

    Should the event handler be fired a + single time.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    once(key, fn) → {Component}

    + + + + + + +
    +

    Listen to an event only one time.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    fn + + +function + + + +

    The listener callback function.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    rendered(instance) → {void}

    + + + + + + +
    +

    This method is called right after Face has rendered.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    reset(instance) → {void}

    + + + + + + +
    +

    This method is called right after clock has reset.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    setAttribute(key, value) → {void}

    + + + + + + +
    +

    Set an attribute key and value.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The attribute name.

    value + + +* + + + +

    The attribute value.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    setAttributes(values) → {void}

    + + + + + + +
    +

    Set an attributes by object of key/value pairs.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    values + + +object + + + +

    The object dictionary.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    shouldStop(instance) → {boolean}

    + + + + + + +
    +

    Determines if the clock should stop or not.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns true if the clock should stop.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +boolean + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    started(instance) → {void}

    + + + + + + +
    +

    This method is called right after clock has started.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    stopped(instance) → {void}

    + + + + + + +
    +

    This method is called right after clock has stopped.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Faces.DayCounter.html b/public/Faces.DayCounter.html new file mode 100644 index 00000000..9a7b50e0 --- /dev/null +++ b/public/Faces.DayCounter.html @@ -0,0 +1,430 @@ + + + + + FlipClock.js :: Class: DayCounter + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    + Faces.DayCounter(value, attributesopt)

    + +

    This face is meant to display a clock that shows days, hours, + minutes, and seconds.

    + + +
    + +
    +
    + + + + +

    Constructor

    + + + +

    new DayCounter(value, attributesopt)

    + + + + + + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    value + + +FaceValue +| + +object + + + + + + + + + +

    The Face value. If not an instance + of FaceValue, this argument is assumed to be the instance attributes.

    attributes + + +object +| + +undefined + + + + + + <optional>
    + + + + + +

    The instance attributes.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    + + +
    +

    Extends

    + + + + +
      +
    • HourCounter
    • +
    + + +
    + + + + + + + + + + + + + + + + + + +

    Methods

    + + +
    + + + + + +

    (static) defineName() → {string}

    + + + + + + +
    +

    Define the name of the class.

    +
    + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +string + + +
    +
    + + + + + + + +
    + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Faces.HourCounter.html b/public/Faces.HourCounter.html new file mode 100644 index 00000000..bc2e2210 --- /dev/null +++ b/public/Faces.HourCounter.html @@ -0,0 +1,5179 @@ + + + + + FlipClock.js :: Class: HourCounter + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    + Faces.HourCounter(value, attributesopt)

    + +

    This face is meant to display a clock that shows + hours, minutes, and seconds.

    + + +
    + +
    +
    + + + + +

    Constructor

    + + + +

    new HourCounter(value, attributesopt)

    + + + + + + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    value + + +FaceValue +| + +object + + + + + + + + + +

    The Face value. If not an instance + of FaceValue, this argument is assumed to be the instance attributes.

    attributes + + +object +| + +undefined + + + + + + <optional>
    + + + + + +

    The instance attributes.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    + + +
    +

    Extends

    + + + + + + + +
    + + + + + + + + + + + + + + +

    Members

    + + +
    + +

    dataType :*

    + + + + +
    +

    The dataType attribute.

    +
    + + + +
    Type:
    +
      +
    • + +* + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    events :object

    + + + + +
    +

    The events attribute.

    +
    + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    name :string

    + + + + +
    +

    Get the name attribute.

    +
    + + + +
    Type:
    +
      +
    • + +string + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    originalValue :*

    + + + + +
    +

    The originalValue attribute.

    +
    + + + +
    Type:
    +
      +
    • + +* + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    stopAt :*

    + + + + +
    +

    The stopAt attribute.

    +
    + + + +
    Type:
    +
      +
    • + +* + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    value :*

    + + + + +
    +

    The value attribute.

    +
    + + + +
    Type:
    +
      +
    • + +* + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + + + + + + +

    Methods

    + + +
    + + + + + +

    (static) defineName() → {string}

    + + + + + + +
    +

    Define the name of the class.

    +
    + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +string + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    callback(fn) → {*}

    + + + + + + +
    +

    Helper method to execute the callback() function.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    fn + + +function + + + +

    The callback function.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns the executed callback function.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    createFaceValue(instance, attributesopt) → {Divider}

    + + + + + + +
    +

    Helper method to instantiate a new FaceValue.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    instance + + +FlipClock + + + + + + + + + +

    The FlipClock instance.

    attributes + + +object +| + +undefined + + + + + + <optional>
    + + + + + +

    The attributes passed to the + FaceValue instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The instantiated FaceValue.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Divider + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    decrement(instance, amountopt) → {void}

    + + + + + + +
    +

    Decrement the clock.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    instance + + +FlipClock + + + + + + + + + +

    The FlipClock instance.

    amount + + +Number + + + + + + <optional>
    + + + + + +

    The amount to decrement. If the amount is not + defined, it is left up to the Face to determine the default value.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    defaultAttributes() → {Object|undefined}

    + + + + + + +
    +

    The default attributes for the Face.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The default attributes.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Object +| + +undefined + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    defaultDataType() → {Object|undefined}

    + + + + + + +
    +

    The default data type for the Face value.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The default data type.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Object +| + +undefined + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    defaultValue() → {*}

    + + + + + + +
    +

    The default value for the Face.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The default value.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    emit(key) → {Component}

    + + + + + + +
    +

    Emit an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    format(instance, value) → {*}

    + + + + + + +
    +

    By default this just returns the value unformatted.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    value + + +* + + + +

    The value to format.

    +
    + + + + + +
    + + + + + + + + +
    Overrides:
    +
    + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The formatted value.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getAttribute(key) → {*}

    + + + + + + +
    +

    Get an attribute. Returns null if no attribute is defined.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The attribute name.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute value.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getAttributes() → {object}

    + + + + + + +
    +

    Get all the atttributes for this instance.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute dictionary.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +object + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getPublicAttributes() → {object}

    + + + + + + +
    +

    Get only public the atttributes for this instance. Omits any attribute +that starts with $, which is used internally.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute dictionary.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +object + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    increment(instance, amountopt) → {void}

    + + + + + + +
    +

    Increment the clock.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    instance + + +FlipClock + + + + + + + + + +

    The FlipClock instance.

    amount + + +Number + + + + + + <optional>
    + + + + + +

    The amount to increment. If the amount is not + defined, it is left up to the Face to determine the default value.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    initialized(instance) → {void}

    + + + + + + +
    +

    This method is called right after Face has initialized.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    interval(instance, fn) → {Face}

    + + + + + + +
    +

    This method is called with every interval, or every time the clock +should change, and handles the actual incrementing and decrementing the +clock's FaceValue.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    fn + + +function + + + +

    The interval callback.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • This Face instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Face + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    mounted(instance) → {void}

    + + + + + + +
    +

    This method is called right after Face has mounted.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    off(key, fn) → {Component}

    + + + + + + +
    +

    Stop listening to an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    fn + + +function +| + +undefined + + + +

    The listener callback function. If no + function is defined, all events with the specified id/key will be + removed. Otherwise, only the event listeners matching the id/key AND + callback will be removed.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    on(key, fn, onceopt) → {Component}

    + + + + + + +
    +

    Start listening to an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    key + + +string + + + + + + + + + + + +

    The event id/key.

    fn + + +function + + + + + + + + + + + +

    The listener callback function.

    once + + +boolean + + + + + + <optional>
    + + + + + +
    + + false + +

    Should the event handler be fired a + single time.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    once(key, fn) → {Component}

    + + + + + + +
    +

    Listen to an event only one time.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    fn + + +function + + + +

    The listener callback function.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    rendered(instance) → {void}

    + + + + + + +
    +

    This method is called right after Face has rendered.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    reset(instance) → {void}

    + + + + + + +
    +

    This method is called right after clock has reset.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    setAttribute(key, value) → {void}

    + + + + + + +
    +

    Set an attribute key and value.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The attribute name.

    value + + +* + + + +

    The attribute value.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    setAttributes(values) → {void}

    + + + + + + +
    +

    Set an attributes by object of key/value pairs.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    values + + +object + + + +

    The object dictionary.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    shouldStop(instance) → {boolean}

    + + + + + + +
    +

    Determines if the clock should stop or not.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns true if the clock should stop.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +boolean + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    started(instance) → {void}

    + + + + + + +
    +

    This method is called right after clock has started.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    stopped(instance) → {void}

    + + + + + + +
    +

    This method is called right after clock has stopped.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Faces.MinuteCounter.html b/public/Faces.MinuteCounter.html new file mode 100644 index 00000000..57e472e2 --- /dev/null +++ b/public/Faces.MinuteCounter.html @@ -0,0 +1,5179 @@ + + + + + FlipClock.js :: Class: MinuteCounter + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    + Faces.MinuteCounter(value, attributesopt)

    + +

    This face is meant to display a clock that shows minutes, and + seconds.

    + + +
    + +
    +
    + + + + +

    Constructor

    + + + +

    new MinuteCounter(value, attributesopt)

    + + + + + + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    value + + +FaceValue +| + +object + + + + + + + + + +

    The Face value. If not an instance + of FaceValue, this argument is assumed to be the instance attributes.

    attributes + + +object +| + +undefined + + + + + + <optional>
    + + + + + +

    The instance attributes.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    + + +
    +

    Extends

    + + + + + + + +
    + + + + + + + + + + + + + + +

    Members

    + + +
    + +

    dataType :*

    + + + + +
    +

    The dataType attribute.

    +
    + + + +
    Type:
    +
      +
    • + +* + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    events :object

    + + + + +
    +

    The events attribute.

    +
    + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    name :string

    + + + + +
    +

    Get the name attribute.

    +
    + + + +
    Type:
    +
      +
    • + +string + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    originalValue :*

    + + + + +
    +

    The originalValue attribute.

    +
    + + + +
    Type:
    +
      +
    • + +* + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    stopAt :*

    + + + + +
    +

    The stopAt attribute.

    +
    + + + +
    Type:
    +
      +
    • + +* + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    value :*

    + + + + +
    +

    The value attribute.

    +
    + + + +
    Type:
    +
      +
    • + +* + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + + + + + + +

    Methods

    + + +
    + + + + + +

    (static) defineName() → {string}

    + + + + + + +
    +

    Define the name of the class.

    +
    + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +string + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    callback(fn) → {*}

    + + + + + + +
    +

    Helper method to execute the callback() function.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    fn + + +function + + + +

    The callback function.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns the executed callback function.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    createFaceValue(instance, attributesopt) → {Divider}

    + + + + + + +
    +

    Helper method to instantiate a new FaceValue.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    instance + + +FlipClock + + + + + + + + + +

    The FlipClock instance.

    attributes + + +object +| + +undefined + + + + + + <optional>
    + + + + + +

    The attributes passed to the + FaceValue instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The instantiated FaceValue.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Divider + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    decrement(instance, amountopt) → {void}

    + + + + + + +
    +

    Decrement the clock.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    instance + + +FlipClock + + + + + + + + + +

    The FlipClock instance.

    amount + + +Number + + + + + + <optional>
    + + + + + +

    The amount to decrement. If the amount is not + defined, it is left up to the Face to determine the default value.

    +
    + + + + + +
    + + + + + + + + +
    Overrides:
    +
    + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    defaultAttributes() → {Object|undefined}

    + + + + + + +
    +

    The default attributes for the Face.

    +
    + + + + + + + + + + + + + +
    + + + + + + + + +
    Overrides:
    +
    + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The default attributes.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Object +| + +undefined + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    defaultDataType() → {Object|undefined}

    + + + + + + +
    +

    The default data type for the Face value.

    +
    + + + + + + + + + + + + + +
    + + + + + + + + +
    Overrides:
    +
    + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The default data type.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Object +| + +undefined + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    defaultValue() → {*}

    + + + + + + +
    +

    The default value for the Face.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The default value.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    emit(key) → {Component}

    + + + + + + +
    +

    Emit an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    format(instance, value) → {*}

    + + + + + + +
    +

    By default this just returns the value unformatted.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    value + + +* + + + +

    The value to format.

    +
    + + + + + +
    + + + + + + + + +
    Overrides:
    +
    + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The formatted value.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getAttribute(key) → {*}

    + + + + + + +
    +

    Get an attribute. Returns null if no attribute is defined.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The attribute name.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute value.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getAttributes() → {object}

    + + + + + + +
    +

    Get all the atttributes for this instance.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute dictionary.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +object + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getPublicAttributes() → {object}

    + + + + + + +
    +

    Get only public the atttributes for this instance. Omits any attribute +that starts with $, which is used internally.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute dictionary.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +object + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    increment(instance, amountopt) → {void}

    + + + + + + +
    +

    Increment the clock.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    instance + + +FlipClock + + + + + + + + + +

    The FlipClock instance.

    amount + + +Number + + + + + + <optional>
    + + + + + +

    The amount to increment. If the amount is not + defined, it is left up to the Face to determine the default value.

    +
    + + + + + +
    + + + + + + + + +
    Overrides:
    +
    + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    initialized(instance) → {void}

    + + + + + + +
    +

    This method is called right after Face has initialized.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    interval(instance, fn) → {Face}

    + + + + + + +
    +

    This method is called with every interval, or every time the clock +should change, and handles the actual incrementing and decrementing the +clock's FaceValue.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    fn + + +function + + + +

    The interval callback.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • This Face instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Face + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    mounted(instance) → {void}

    + + + + + + +
    +

    This method is called right after Face has mounted.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    off(key, fn) → {Component}

    + + + + + + +
    +

    Stop listening to an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    fn + + +function +| + +undefined + + + +

    The listener callback function. If no + function is defined, all events with the specified id/key will be + removed. Otherwise, only the event listeners matching the id/key AND + callback will be removed.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    on(key, fn, onceopt) → {Component}

    + + + + + + +
    +

    Start listening to an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    key + + +string + + + + + + + + + + + +

    The event id/key.

    fn + + +function + + + + + + + + + + + +

    The listener callback function.

    once + + +boolean + + + + + + <optional>
    + + + + + +
    + + false + +

    Should the event handler be fired a + single time.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    once(key, fn) → {Component}

    + + + + + + +
    +

    Listen to an event only one time.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    fn + + +function + + + +

    The listener callback function.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    rendered(instance) → {void}

    + + + + + + +
    +

    This method is called right after Face has rendered.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    reset(instance) → {void}

    + + + + + + +
    +

    This method is called right after clock has reset.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    setAttribute(key, value) → {void}

    + + + + + + +
    +

    Set an attribute key and value.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The attribute name.

    value + + +* + + + +

    The attribute value.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    setAttributes(values) → {void}

    + + + + + + +
    +

    Set an attributes by object of key/value pairs.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    values + + +object + + + +

    The object dictionary.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    shouldStop(instance) → {boolean}

    + + + + + + +
    +

    Determines if the clock should stop or not.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + + + +
    Overrides:
    +
    + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns true if the clock should stop.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +boolean + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    started(instance) → {void}

    + + + + + + +
    +

    This method is called right after clock has started.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    stopped(instance) → {void}

    + + + + + + +
    +

    This method is called right after clock has stopped.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Faces.TwelveHourClock.html b/public/Faces.TwelveHourClock.html new file mode 100644 index 00000000..d327faa1 --- /dev/null +++ b/public/Faces.TwelveHourClock.html @@ -0,0 +1,5179 @@ + + + + + FlipClock.js :: Class: TwelveHourClock + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    + Faces.TwelveHourClock(value, attributesopt)

    + +

    This face shows the current time in twelve hour format, with AM + and PM.

    + + +
    + +
    +
    + + + + +

    Constructor

    + + + +

    new TwelveHourClock(value, attributesopt)

    + + + + + + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    value + + +FaceValue +| + +object + + + + + + + + + +

    The Face value. If not an instance + of FaceValue, this argument is assumed to be the instance attributes.

    attributes + + +object +| + +undefined + + + + + + <optional>
    + + + + + +

    The instance attributes.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    + + +
    +

    Extends

    + + + + + + + +
    + + + + + + + + + + + + + + +

    Members

    + + +
    + +

    dataType :*

    + + + + +
    +

    The dataType attribute.

    +
    + + + +
    Type:
    +
      +
    • + +* + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    events :object

    + + + + +
    +

    The events attribute.

    +
    + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    name :string

    + + + + +
    +

    Get the name attribute.

    +
    + + + +
    Type:
    +
      +
    • + +string + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    originalValue :*

    + + + + +
    +

    The originalValue attribute.

    +
    + + + +
    Type:
    +
      +
    • + +* + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    stopAt :*

    + + + + +
    +

    The stopAt attribute.

    +
    + + + +
    Type:
    +
      +
    • + +* + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    value :*

    + + + + +
    +

    The value attribute.

    +
    + + + +
    Type:
    +
      +
    • + +* + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + + + + + + +

    Methods

    + + +
    + + + + + +

    (static) defineName() → {string}

    + + + + + + +
    +

    Define the name of the class.

    +
    + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +string + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    callback(fn) → {*}

    + + + + + + +
    +

    Helper method to execute the callback() function.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    fn + + +function + + + +

    The callback function.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns the executed callback function.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    createFaceValue(instance, attributesopt) → {Divider}

    + + + + + + +
    +

    Helper method to instantiate a new FaceValue.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    instance + + +FlipClock + + + + + + + + + +

    The FlipClock instance.

    attributes + + +object +| + +undefined + + + + + + <optional>
    + + + + + +

    The attributes passed to the + FaceValue instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The instantiated FaceValue.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Divider + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    decrement(instance, amountopt) → {void}

    + + + + + + +
    +

    Decrement the clock.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    instance + + +FlipClock + + + + + + + + + +

    The FlipClock instance.

    amount + + +Number + + + + + + <optional>
    + + + + + +

    The amount to decrement. If the amount is not + defined, it is left up to the Face to determine the default value.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    defaultAttributes() → {Object|undefined}

    + + + + + + +
    +

    The default attributes for the Face.

    +
    + + + + + + + + + + + + + +
    + + + + + + + + +
    Overrides:
    +
    + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The default attributes.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Object +| + +undefined + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    defaultDataType() → {Object|undefined}

    + + + + + + +
    +

    The default data type for the Face value.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The default data type.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Object +| + +undefined + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    defaultValue() → {*}

    + + + + + + +
    +

    The default value for the Face.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The default value.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    emit(key) → {Component}

    + + + + + + +
    +

    Emit an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    format(instance, value) → {*}

    + + + + + + +
    +

    By default this just returns the value unformatted.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    value + + +* + + + +

    The value to format.

    +
    + + + + + +
    + + + + + + + + +
    Overrides:
    +
    + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The formatted value.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getAttribute(key) → {*}

    + + + + + + +
    +

    Get an attribute. Returns null if no attribute is defined.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The attribute name.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute value.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getAttributes() → {object}

    + + + + + + +
    +

    Get all the atttributes for this instance.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute dictionary.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +object + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getPublicAttributes() → {object}

    + + + + + + +
    +

    Get only public the atttributes for this instance. Omits any attribute +that starts with $, which is used internally.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute dictionary.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +object + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    increment(instance, amountopt) → {void}

    + + + + + + +
    +

    Increment the clock.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    instance + + +FlipClock + + + + + + + + + +

    The FlipClock instance.

    amount + + +Number + + + + + + <optional>
    + + + + + +

    The amount to increment. If the amount is not + defined, it is left up to the Face to determine the default value.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    initialized(instance) → {void}

    + + + + + + +
    +

    This method is called right after Face has initialized.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    interval(instance, fn) → {Face}

    + + + + + + +
    +

    This method is called with every interval, or every time the clock +should change, and handles the actual incrementing and decrementing the +clock's FaceValue.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    fn + + +function + + + +

    The interval callback.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • This Face instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Face + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    mounted(instance) → {void}

    + + + + + + +
    +

    This method is called right after Face has mounted.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    off(key, fn) → {Component}

    + + + + + + +
    +

    Stop listening to an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    fn + + +function +| + +undefined + + + +

    The listener callback function. If no + function is defined, all events with the specified id/key will be + removed. Otherwise, only the event listeners matching the id/key AND + callback will be removed.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    on(key, fn, onceopt) → {Component}

    + + + + + + +
    +

    Start listening to an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    key + + +string + + + + + + + + + + + +

    The event id/key.

    fn + + +function + + + + + + + + + + + +

    The listener callback function.

    once + + +boolean + + + + + + <optional>
    + + + + + +
    + + false + +

    Should the event handler be fired a + single time.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    once(key, fn) → {Component}

    + + + + + + +
    +

    Listen to an event only one time.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    fn + + +function + + + +

    The listener callback function.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    rendered(instance) → {void}

    + + + + + + +
    +

    This method is called right after Face has rendered.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    reset(instance) → {void}

    + + + + + + +
    +

    This method is called right after clock has reset.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    setAttribute(key, value) → {void}

    + + + + + + +
    +

    Set an attribute key and value.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The attribute name.

    value + + +* + + + +

    The attribute value.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    setAttributes(values) → {void}

    + + + + + + +
    +

    Set an attributes by object of key/value pairs.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    values + + +object + + + +

    The object dictionary.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    shouldStop(instance) → {boolean}

    + + + + + + +
    +

    Determines if the clock should stop or not.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns true if the clock should stop.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +boolean + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    started(instance) → {void}

    + + + + + + +
    +

    This method is called right after clock has started.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    stopped(instance) → {void}

    + + + + + + +
    +

    This method is called right after clock has stopped.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Faces.TwentyFourHourClock.html b/public/Faces.TwentyFourHourClock.html new file mode 100644 index 00000000..498200c9 --- /dev/null +++ b/public/Faces.TwentyFourHourClock.html @@ -0,0 +1,5178 @@ + + + + + FlipClock.js :: Class: TwentyFourHourClock + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    + Faces.TwentyFourHourClock(value, attributesopt)

    + +

    This face shows the current time in twenty-four hour format.

    + + +
    + +
    +
    + + + + +

    Constructor

    + + + +

    new TwentyFourHourClock(value, attributesopt)

    + + + + + + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    value + + +FaceValue +| + +object + + + + + + + + + +

    The Face value. If not an instance + of FaceValue, this argument is assumed to be the instance attributes.

    attributes + + +object +| + +undefined + + + + + + <optional>
    + + + + + +

    The instance attributes.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    + + +
    +

    Extends

    + + + + + + + +
    + + + + + + + + + + + + + + +

    Members

    + + +
    + +

    dataType :*

    + + + + +
    +

    The dataType attribute.

    +
    + + + +
    Type:
    +
      +
    • + +* + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    events :object

    + + + + +
    +

    The events attribute.

    +
    + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    name :string

    + + + + +
    +

    Get the name attribute.

    +
    + + + +
    Type:
    +
      +
    • + +string + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    originalValue :*

    + + + + +
    +

    The originalValue attribute.

    +
    + + + +
    Type:
    +
      +
    • + +* + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    stopAt :*

    + + + + +
    +

    The stopAt attribute.

    +
    + + + +
    Type:
    +
      +
    • + +* + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    value :*

    + + + + +
    +

    The value attribute.

    +
    + + + +
    Type:
    +
      +
    • + +* + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + + + + + + +

    Methods

    + + +
    + + + + + +

    (static) defineName() → {string}

    + + + + + + +
    +

    Define the name of the class.

    +
    + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +string + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    callback(fn) → {*}

    + + + + + + +
    +

    Helper method to execute the callback() function.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    fn + + +function + + + +

    The callback function.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns the executed callback function.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    createFaceValue(instance, attributesopt) → {Divider}

    + + + + + + +
    +

    Helper method to instantiate a new FaceValue.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    instance + + +FlipClock + + + + + + + + + +

    The FlipClock instance.

    attributes + + +object +| + +undefined + + + + + + <optional>
    + + + + + +

    The attributes passed to the + FaceValue instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The instantiated FaceValue.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Divider + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    decrement(instance, amountopt) → {void}

    + + + + + + +
    +

    Decrement the clock.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    instance + + +FlipClock + + + + + + + + + +

    The FlipClock instance.

    amount + + +Number + + + + + + <optional>
    + + + + + +

    The amount to decrement. If the amount is not + defined, it is left up to the Face to determine the default value.

    +
    + + + + + +
    + + + + + + + + +
    Overrides:
    +
    + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    defaultAttributes() → {Object|undefined}

    + + + + + + +
    +

    The default attributes for the Face.

    +
    + + + + + + + + + + + + + +
    + + + + + + + + +
    Overrides:
    +
    + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The default attributes.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Object +| + +undefined + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    defaultDataType() → {Object|undefined}

    + + + + + + +
    +

    The default data type for the Face value.

    +
    + + + + + + + + + + + + + +
    + + + + + + + + +
    Overrides:
    +
    + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The default data type.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Object +| + +undefined + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    defaultValue() → {*}

    + + + + + + +
    +

    The default value for the Face.

    +
    + + + + + + + + + + + + + +
    + + + + + + + + +
    Overrides:
    +
    + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The default value.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    emit(key) → {Component}

    + + + + + + +
    +

    Emit an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    format(instance, value) → {*}

    + + + + + + +
    +

    By default this just returns the value unformatted.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    value + + +* + + + +

    The value to format.

    +
    + + + + + +
    + + + + + + + + +
    Overrides:
    +
    + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The formatted value.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getAttribute(key) → {*}

    + + + + + + +
    +

    Get an attribute. Returns null if no attribute is defined.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The attribute name.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute value.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getAttributes() → {object}

    + + + + + + +
    +

    Get all the atttributes for this instance.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute dictionary.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +object + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getPublicAttributes() → {object}

    + + + + + + +
    +

    Get only public the atttributes for this instance. Omits any attribute +that starts with $, which is used internally.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute dictionary.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +object + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    increment(instance, amountopt) → {void}

    + + + + + + +
    +

    Increment the clock.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    instance + + +FlipClock + + + + + + + + + +

    The FlipClock instance.

    amount + + +Number + + + + + + <optional>
    + + + + + +

    The amount to increment. If the amount is not + defined, it is left up to the Face to determine the default value.

    +
    + + + + + +
    + + + + + + + + +
    Overrides:
    +
    + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    initialized(instance) → {void}

    + + + + + + +
    +

    This method is called right after Face has initialized.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    interval(instance, fn) → {Face}

    + + + + + + +
    +

    This method is called with every interval, or every time the clock +should change, and handles the actual incrementing and decrementing the +clock's FaceValue.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    fn + + +function + + + +

    The interval callback.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • This Face instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Face + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    mounted(instance) → {void}

    + + + + + + +
    +

    This method is called right after Face has mounted.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    off(key, fn) → {Component}

    + + + + + + +
    +

    Stop listening to an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    fn + + +function +| + +undefined + + + +

    The listener callback function. If no + function is defined, all events with the specified id/key will be + removed. Otherwise, only the event listeners matching the id/key AND + callback will be removed.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    on(key, fn, onceopt) → {Component}

    + + + + + + +
    +

    Start listening to an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    key + + +string + + + + + + + + + + + +

    The event id/key.

    fn + + +function + + + + + + + + + + + +

    The listener callback function.

    once + + +boolean + + + + + + <optional>
    + + + + + +
    + + false + +

    Should the event handler be fired a + single time.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    once(key, fn) → {Component}

    + + + + + + +
    +

    Listen to an event only one time.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    fn + + +function + + + +

    The listener callback function.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    rendered(instance) → {void}

    + + + + + + +
    +

    This method is called right after Face has rendered.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    reset(instance) → {void}

    + + + + + + +
    +

    This method is called right after clock has reset.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    setAttribute(key, value) → {void}

    + + + + + + +
    +

    Set an attribute key and value.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The attribute name.

    value + + +* + + + +

    The attribute value.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    setAttributes(values) → {void}

    + + + + + + +
    +

    Set an attributes by object of key/value pairs.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    values + + +object + + + +

    The object dictionary.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    shouldStop(instance) → {boolean}

    + + + + + + +
    +

    Determines if the clock should stop or not.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns true if the clock should stop.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +boolean + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    started(instance) → {void}

    + + + + + + +
    +

    This method is called right after clock has started.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    stopped(instance) → {void}

    + + + + + + +
    +

    This method is called right after clock has stopped.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Faces.WeekCounter.html b/public/Faces.WeekCounter.html new file mode 100644 index 00000000..f91e6ac2 --- /dev/null +++ b/public/Faces.WeekCounter.html @@ -0,0 +1,5179 @@ + + + + + FlipClock.js :: Class: WeekCounter + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    + Faces.WeekCounter(value, attributesopt)

    + +

    This face is meant to display a clock that shows weeks, days, + hours, minutes, and seconds.

    + + +
    + +
    +
    + + + + +

    Constructor

    + + + +

    new WeekCounter(value, attributesopt)

    + + + + + + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    value + + +FaceValue +| + +object + + + + + + + + + +

    The Face value. If not an instance + of FaceValue, this argument is assumed to be the instance attributes.

    attributes + + +object +| + +undefined + + + + + + <optional>
    + + + + + +

    The instance attributes.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    + + +
    +

    Extends

    + + + + + + + +
    + + + + + + + + + + + + + + +

    Members

    + + +
    + +

    dataType :*

    + + + + +
    +

    The dataType attribute.

    +
    + + + +
    Type:
    +
      +
    • + +* + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    events :object

    + + + + +
    +

    The events attribute.

    +
    + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    name :string

    + + + + +
    +

    Get the name attribute.

    +
    + + + +
    Type:
    +
      +
    • + +string + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    originalValue :*

    + + + + +
    +

    The originalValue attribute.

    +
    + + + +
    Type:
    +
      +
    • + +* + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    stopAt :*

    + + + + +
    +

    The stopAt attribute.

    +
    + + + +
    Type:
    +
      +
    • + +* + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    value :*

    + + + + +
    +

    The value attribute.

    +
    + + + +
    Type:
    +
      +
    • + +* + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + + + + + + +

    Methods

    + + +
    + + + + + +

    (static) defineName() → {string}

    + + + + + + +
    +

    Define the name of the class.

    +
    + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +string + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    callback(fn) → {*}

    + + + + + + +
    +

    Helper method to execute the callback() function.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    fn + + +function + + + +

    The callback function.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns the executed callback function.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    createFaceValue(instance, attributesopt) → {Divider}

    + + + + + + +
    +

    Helper method to instantiate a new FaceValue.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    instance + + +FlipClock + + + + + + + + + +

    The FlipClock instance.

    attributes + + +object +| + +undefined + + + + + + <optional>
    + + + + + +

    The attributes passed to the + FaceValue instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The instantiated FaceValue.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Divider + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    decrement(instance, amountopt) → {void}

    + + + + + + +
    +

    Decrement the clock.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    instance + + +FlipClock + + + + + + + + + +

    The FlipClock instance.

    amount + + +Number + + + + + + <optional>
    + + + + + +

    The amount to decrement. If the amount is not + defined, it is left up to the Face to determine the default value.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    defaultAttributes() → {Object|undefined}

    + + + + + + +
    +

    The default attributes for the Face.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The default attributes.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Object +| + +undefined + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    defaultDataType() → {Object|undefined}

    + + + + + + +
    +

    The default data type for the Face value.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The default data type.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Object +| + +undefined + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    defaultValue() → {*}

    + + + + + + +
    +

    The default value for the Face.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The default value.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    emit(key) → {Component}

    + + + + + + +
    +

    Emit an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    format(instance, value) → {*}

    + + + + + + +
    +

    By default this just returns the value unformatted.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    value + + +* + + + +

    The value to format.

    +
    + + + + + +
    + + + + + + + + +
    Overrides:
    +
    + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The formatted value.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getAttribute(key) → {*}

    + + + + + + +
    +

    Get an attribute. Returns null if no attribute is defined.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The attribute name.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute value.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getAttributes() → {object}

    + + + + + + +
    +

    Get all the atttributes for this instance.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute dictionary.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +object + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getPublicAttributes() → {object}

    + + + + + + +
    +

    Get only public the atttributes for this instance. Omits any attribute +that starts with $, which is used internally.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute dictionary.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +object + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    increment(instance, amountopt) → {void}

    + + + + + + +
    +

    Increment the clock.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    instance + + +FlipClock + + + + + + + + + +

    The FlipClock instance.

    amount + + +Number + + + + + + <optional>
    + + + + + +

    The amount to increment. If the amount is not + defined, it is left up to the Face to determine the default value.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    initialized(instance) → {void}

    + + + + + + +
    +

    This method is called right after Face has initialized.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    interval(instance, fn) → {Face}

    + + + + + + +
    +

    This method is called with every interval, or every time the clock +should change, and handles the actual incrementing and decrementing the +clock's FaceValue.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    fn + + +function + + + +

    The interval callback.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • This Face instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Face + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    mounted(instance) → {void}

    + + + + + + +
    +

    This method is called right after Face has mounted.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    off(key, fn) → {Component}

    + + + + + + +
    +

    Stop listening to an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    fn + + +function +| + +undefined + + + +

    The listener callback function. If no + function is defined, all events with the specified id/key will be + removed. Otherwise, only the event listeners matching the id/key AND + callback will be removed.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    on(key, fn, onceopt) → {Component}

    + + + + + + +
    +

    Start listening to an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    key + + +string + + + + + + + + + + + +

    The event id/key.

    fn + + +function + + + + + + + + + + + +

    The listener callback function.

    once + + +boolean + + + + + + <optional>
    + + + + + +
    + + false + +

    Should the event handler be fired a + single time.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    once(key, fn) → {Component}

    + + + + + + +
    +

    Listen to an event only one time.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    fn + + +function + + + +

    The listener callback function.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    rendered(instance) → {void}

    + + + + + + +
    +

    This method is called right after Face has rendered.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    reset(instance) → {void}

    + + + + + + +
    +

    This method is called right after clock has reset.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    setAttribute(key, value) → {void}

    + + + + + + +
    +

    Set an attribute key and value.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The attribute name.

    value + + +* + + + +

    The attribute value.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    setAttributes(values) → {void}

    + + + + + + +
    +

    Set an attributes by object of key/value pairs.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    values + + +object + + + +

    The object dictionary.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    shouldStop(instance) → {boolean}

    + + + + + + +
    +

    Determines if the clock should stop or not.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns true if the clock should stop.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +boolean + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    started(instance) → {void}

    + + + + + + +
    +

    This method is called right after clock has started.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    stopped(instance) → {void}

    + + + + + + +
    +

    This method is called right after clock has stopped.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Faces.YearCounter.html b/public/Faces.YearCounter.html new file mode 100644 index 00000000..4abbe714 --- /dev/null +++ b/public/Faces.YearCounter.html @@ -0,0 +1,5179 @@ + + + + + FlipClock.js :: Class: YearCounter + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    + Faces.YearCounter(value, attributesopt)

    + +

    This face is meant to display a clock that shows years, weeks, + days, hours, minutes, and seconds.

    + + +
    + +
    +
    + + + + +

    Constructor

    + + + +

    new YearCounter(value, attributesopt)

    + + + + + + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    value + + +FaceValue +| + +object + + + + + + + + + +

    The Face value. If not an instance + of FaceValue, this argument is assumed to be the instance attributes.

    attributes + + +object +| + +undefined + + + + + + <optional>
    + + + + + +

    The instance attributes.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    + + +
    +

    Extends

    + + + + + + + +
    + + + + + + + + + + + + + + +

    Members

    + + +
    + +

    dataType :*

    + + + + +
    +

    The dataType attribute.

    +
    + + + +
    Type:
    +
      +
    • + +* + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    events :object

    + + + + +
    +

    The events attribute.

    +
    + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    name :string

    + + + + +
    +

    Get the name attribute.

    +
    + + + +
    Type:
    +
      +
    • + +string + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    originalValue :*

    + + + + +
    +

    The originalValue attribute.

    +
    + + + +
    Type:
    +
      +
    • + +* + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    stopAt :*

    + + + + +
    +

    The stopAt attribute.

    +
    + + + +
    Type:
    +
      +
    • + +* + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    value :*

    + + + + +
    +

    The value attribute.

    +
    + + + +
    Type:
    +
      +
    • + +* + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + + + + + + +

    Methods

    + + +
    + + + + + +

    (static) defineName() → {string}

    + + + + + + +
    +

    Define the name of the class.

    +
    + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +string + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    callback(fn) → {*}

    + + + + + + +
    +

    Helper method to execute the callback() function.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    fn + + +function + + + +

    The callback function.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns the executed callback function.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    createFaceValue(instance, attributesopt) → {Divider}

    + + + + + + +
    +

    Helper method to instantiate a new FaceValue.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    instance + + +FlipClock + + + + + + + + + +

    The FlipClock instance.

    attributes + + +object +| + +undefined + + + + + + <optional>
    + + + + + +

    The attributes passed to the + FaceValue instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The instantiated FaceValue.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Divider + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    decrement(instance, amountopt) → {void}

    + + + + + + +
    +

    Decrement the clock.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    instance + + +FlipClock + + + + + + + + + +

    The FlipClock instance.

    amount + + +Number + + + + + + <optional>
    + + + + + +

    The amount to decrement. If the amount is not + defined, it is left up to the Face to determine the default value.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    defaultAttributes() → {Object|undefined}

    + + + + + + +
    +

    The default attributes for the Face.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The default attributes.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Object +| + +undefined + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    defaultDataType() → {Object|undefined}

    + + + + + + +
    +

    The default data type for the Face value.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The default data type.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Object +| + +undefined + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    defaultValue() → {*}

    + + + + + + +
    +

    The default value for the Face.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The default value.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    emit(key) → {Component}

    + + + + + + +
    +

    Emit an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    format(instance, value) → {*}

    + + + + + + +
    +

    By default this just returns the value unformatted.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    value + + +* + + + +

    The value to format.

    +
    + + + + + +
    + + + + + + + + +
    Overrides:
    +
    + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The formatted value.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getAttribute(key) → {*}

    + + + + + + +
    +

    Get an attribute. Returns null if no attribute is defined.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The attribute name.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute value.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getAttributes() → {object}

    + + + + + + +
    +

    Get all the atttributes for this instance.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute dictionary.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +object + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getPublicAttributes() → {object}

    + + + + + + +
    +

    Get only public the atttributes for this instance. Omits any attribute +that starts with $, which is used internally.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute dictionary.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +object + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    increment(instance, amountopt) → {void}

    + + + + + + +
    +

    Increment the clock.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    instance + + +FlipClock + + + + + + + + + +

    The FlipClock instance.

    amount + + +Number + + + + + + <optional>
    + + + + + +

    The amount to increment. If the amount is not + defined, it is left up to the Face to determine the default value.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    initialized(instance) → {void}

    + + + + + + +
    +

    This method is called right after Face has initialized.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    interval(instance, fn) → {Face}

    + + + + + + +
    +

    This method is called with every interval, or every time the clock +should change, and handles the actual incrementing and decrementing the +clock's FaceValue.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    fn + + +function + + + +

    The interval callback.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • This Face instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Face + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    mounted(instance) → {void}

    + + + + + + +
    +

    This method is called right after Face has mounted.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    off(key, fn) → {Component}

    + + + + + + +
    +

    Stop listening to an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    fn + + +function +| + +undefined + + + +

    The listener callback function. If no + function is defined, all events with the specified id/key will be + removed. Otherwise, only the event listeners matching the id/key AND + callback will be removed.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    on(key, fn, onceopt) → {Component}

    + + + + + + +
    +

    Start listening to an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    key + + +string + + + + + + + + + + + +

    The event id/key.

    fn + + +function + + + + + + + + + + + +

    The listener callback function.

    once + + +boolean + + + + + + <optional>
    + + + + + +
    + + false + +

    Should the event handler be fired a + single time.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    once(key, fn) → {Component}

    + + + + + + +
    +

    Listen to an event only one time.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    fn + + +function + + + +

    The listener callback function.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    rendered(instance) → {void}

    + + + + + + +
    +

    This method is called right after Face has rendered.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    reset(instance) → {void}

    + + + + + + +
    +

    This method is called right after clock has reset.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    setAttribute(key, value) → {void}

    + + + + + + +
    +

    Set an attribute key and value.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The attribute name.

    value + + +* + + + +

    The attribute value.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    setAttributes(values) → {void}

    + + + + + + +
    +

    Set an attributes by object of key/value pairs.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    values + + +object + + + +

    The object dictionary.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    shouldStop(instance) → {boolean}

    + + + + + + +
    +

    Determines if the clock should stop or not.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns true if the clock should stop.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +boolean + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    started(instance) → {void}

    + + + + + + +
    +

    This method is called right after clock has started.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    stopped(instance) → {void}

    + + + + + + +
    +

    This method is called right after clock has stopped.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    instance + + +FlipClock + + + +

    The FlipClock instance.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Faces.html b/public/Faces.html new file mode 100644 index 00000000..defa4cca --- /dev/null +++ b/public/Faces.html @@ -0,0 +1,195 @@ + + + + + FlipClock.js :: Namespace: Faces + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    Faces

    + + +
    + +
    +
    + + +

    Faces are classes that hook into the core of Flipclock to provide unique +functionality. The core doesn't do a lot, except facilitate the interaction +between all the components. The Face is what makes the clock "tick".

    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + +
    + + + + + + + +
    +

    Classes

    + +
    +
    Counter
    +
    + +
    DayCounter
    +
    + +
    HourCounter
    +
    + +
    MinuteCounter
    +
    + +
    TwelveHourClock
    +
    + +
    TwentyFourHourClock
    +
    + +
    WeekCounter
    +
    + +
    YearCounter
    +
    +
    +
    + + + + + + + + + + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Faces_Counter.js.html b/public/Faces_Counter.js.html new file mode 100644 index 00000000..69fc8273 --- /dev/null +++ b/public/Faces_Counter.js.html @@ -0,0 +1,111 @@ + + + + + FlipClock.js :: Source: Faces/Counter.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    import Face from '../Components/Face';
    +
    +/**
    + * @classdesc This face is designed to increment and decrement numberic values,
    + *     not `Date` objects.
    + * @extends Face
    + * @param {(FaceValue|object)} value - The `Face` value. If not an instance
    + *     of FaceValue, this argument is assumed to be the instance attributes.
    + * @param {(object|undefined)} [attributes] - The instance attributes.
    + * @memberof Faces
    + */
    +export default class Counter extends Face {
    +
    +    increment(instance, value = 1) {
    +        instance.value = this.value.value + value;
    +    }
    +
    +    decrement(instance, value = 1) {
    +        instance.value = this.value.value - value;
    +    }
    +
    +    /**
    +     * Define the name of the class.
    +     *
    +     * @return {string}
    +     */
    +    static defineName() {
    +        return 'Counter';
    +    }
    +}
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Faces_DayCounter.js.html b/public/Faces_DayCounter.js.html new file mode 100644 index 00000000..5b4786df --- /dev/null +++ b/public/Faces_DayCounter.js.html @@ -0,0 +1,130 @@ + + + + + FlipClock.js :: Source: Faces/DayCounter.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    import HourCounter from './HourCounter';
    +
    +/**
    + * @classdesc This face is meant to display a clock that shows days, hours,
    + *     minutes, and seconds.
    + * @extends HourCounter
    + * @param {(FaceValue|object)} value - The `Face` value. If not an instance
    + *     of FaceValue, this argument is assumed to be the instance attributes.
    + * @param {(object|undefined)} [attributes] - The instance attributes.
    + * @memberof Faces
    + */
    +export default class DayCounter extends HourCounter {
    +
    +    format(instance, value) {
    +        const now = !instance.started ? new Date : value;
    +        const originalValue = instance.originalValue || value;
    +        const a = !this.countdown ? now : originalValue;
    +        const b = !this.countdown ? originalValue : now;
    +
    +        const data = [
    +            [this.getDays(a, b)],
    +            [this.getHours(a, b)],
    +            [this.getMinutes(a, b)]
    +        ];
    +
    +        if(this.showSeconds) {
    +            data.push([this.getSeconds(a, b)]);
    +        }
    +
    +        return data;
    +    }
    +
    +    getDays(a, b) {
    +        return Math.floor(this.getTotalSeconds(a, b) / 60 / 60 / 24);
    +    }
    +
    +    getHours(a, b) {
    +        return Math.abs(super.getHours(a, b) % 24);
    +    }
    +
    +    /**
    +     * Define the name of the class.
    +     *
    +     * @return {string}
    +     */
    +    static defineName() {
    +        return 'DayCounter';
    +    }
    +}
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Faces_HourCounter.js.html b/public/Faces_HourCounter.js.html new file mode 100644 index 00000000..cdfd73d5 --- /dev/null +++ b/public/Faces_HourCounter.js.html @@ -0,0 +1,129 @@ + + + + + FlipClock.js :: Source: Faces/HourCounter.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    import MinuteCounter from './MinuteCounter';
    +
    +/**
    + * @classdesc This face is meant to display a clock that shows
    + *     hours, minutes, and seconds.
    + * @extends Face
    + * @param {(FaceValue|object)} value - The `Face` value. If not an instance
    + *     of FaceValue, this argument is assumed to be the instance attributes.
    + * @param {(object|undefined)} [attributes] - The instance attributes.
    + * @memberof Faces
    + */
    +export default class HourCounter extends MinuteCounter {
    +
    +    format(instance, value) {
    +        const now = !instance.timer.started ? new Date : value;
    +        const originalValue = instance.originalValue || value;
    +        const a = !this.countdown ? now : originalValue;
    +        const b = !this.countdown ? originalValue : now;
    +
    +        const data = [
    +            [this.getHours(a, b)],
    +            [this.getMinutes(a, b)]
    +        ];
    +
    +        if(this.showSeconds) {
    +            data.push([this.getSeconds(a, b)]);
    +        }
    +
    +        return data;
    +    }
    +
    +    getMinutes(a, b) {
    +        return Math.abs(super.getMinutes(a, b) % 60);
    +    }
    +
    +    getHours(a, b) {
    +        return Math.floor(this.getTotalSeconds(a, b) / 60 / 60);
    +    }
    +
    +    /**
    +     * Define the name of the class.
    +     *
    +     * @return {string}
    +     */
    +    static defineName() {
    +        return 'HourCounter';
    +    }
    +}
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Faces_MinuteCounter.js.html b/public/Faces_MinuteCounter.js.html new file mode 100644 index 00000000..7d3c6125 --- /dev/null +++ b/public/Faces_MinuteCounter.js.html @@ -0,0 +1,167 @@ + + + + + FlipClock.js :: Source: Faces/MinuteCounter.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    import Face from '../Components/Face';
    +import { noop, round, isNull, isUndefined, isNumber, callback } from '../Helpers/Functions';
    +
    +/**
    + * @classdesc This face is meant to display a clock that shows minutes, and
    + *     seconds.
    + * @extends Face
    + * @param {(FaceValue|object)} value - The `Face` value. If not an instance
    + *     of FaceValue, this argument is assumed to be the instance attributes.
    + * @param {(object|undefined)} [attributes] - The instance attributes.
    + * @memberof Faces
    + */
    +export default class MinuteCounter extends Face {
    +
    +    defaultDataType() {
    +        return Date;
    +    }
    +
    +    defaultAttributes() {
    +        return {
    +            showSeconds: true,
    +            showLabels: true
    +        };
    +    }
    +
    +    shouldStop(instance) {
    +        if(isNull(instance.stopAt) || isUndefined(instance.stopAt)) {
    +            return false;
    +        }
    +
    +        if(this.stopAt instanceof Date) {
    +            return this.countdown ?
    +                this.stopAt.getTime() >= this.value.value.getTime():
    +                this.stopAt.getTime() <= this.value.value.getTime();
    +        }
    +        else if(isNumber(this.stopAt)) {
    +            const diff = Math.floor((this.value.value.getTime() - this.originalValue.getTime()) / 1000);
    +
    +            return this.countdown ?
    +                this.stopAt >= diff:
    +                this.stopAt <= diff;
    +        }
    +
    +        throw new Error(`the stopAt property must be an instance of Date or Number.`);
    +    }
    +
    +    increment(instance, value = 0) {
    +        instance.value = new Date(this.value.value.getTime() + value + (new Date().getTime() - instance.timer.lastLoop));
    +    }
    +
    +    decrement(instance, value = 0) {
    +        instance.value = new Date(this.value.value.getTime() - value - (new Date().getTime() - instance.timer.lastLoop));
    +    }
    +
    +    format(instance, value) {
    +        const started = instance.timer.isRunning ? instance.timer.started : new Date(Date.now() - 50);
    +
    +        return [
    +            [this.getMinutes(value, started)],
    +            this.showSeconds ? [this.getSeconds(value, started)] : null
    +        ].filter(noop);
    +    }
    +
    +    getMinutes(a, b) {
    +        return round(this.getTotalSeconds(a, b) / 60);
    +    }
    +
    +    getSeconds(a, b) {
    +        const totalSeconds = this.getTotalSeconds(a, b);
    +
    +        return Math.abs(Math.ceil(totalSeconds === 60 ? 0 : totalSeconds % 60));
    +    }
    +
    +    getTotalSeconds(a, b) {
    +        return a.getTime() === b.getTime() ? 0 : Math.round((a.getTime() - b.getTime()) / 1000);
    +    }
    +
    +    /**
    +     * Define the name of the class.
    +     *
    +     * @return {string}
    +     */
    +    static defineName() {
    +        return 'MinuteCounter';
    +    }
    +}
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Faces_TwelveHourClock.js.html b/public/Faces_TwelveHourClock.js.html new file mode 100644 index 00000000..c9c22606 --- /dev/null +++ b/public/Faces_TwelveHourClock.js.html @@ -0,0 +1,131 @@ + + + + + FlipClock.js :: Source: Faces/TwelveHourClock.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    import TwentyFourHourClock from './TwentyFourHourClock';
    +
    +/**
    + * @classdesc This face shows the current time in twelve hour format, with AM
    + *     and PM.
    + * @extends Face
    + * @param {(FaceValue|object)} value - The `Face` value. If not an instance
    + *     of FaceValue, this argument is assumed to be the instance attributes.
    + * @param {(object|undefined)} [attributes] - The instance attributes.
    + * @memberof Faces
    + */
    +export default class TwelveHourClock extends TwentyFourHourClock {
    +
    +    defaultAttributes() {
    +        return {
    +            showLabels: false,
    +            showSeconds: true,
    +            showMeridium: true
    +        };
    +    }
    +
    +    format(instance, value) {
    +        if(!value) {
    +            value = new Date;
    +        }
    +
    +        const hours = value.getHours();
    +		const groups = [
    +			hours > 12 ? hours - 12 : (hours === 0 ? 12 : hours),
    +			value.getMinutes()
    +		];
    +
    +        this.meridium = hours > 12 ? 'pm' : 'am';
    +
    +		if(this.showSeconds) {
    +			groups.push(value.getSeconds());
    +		}
    +
    +		return groups;
    +    }
    +
    +    /**
    +     * Define the name of the class.
    +     *
    +     * @return {string}
    +     */
    +    static defineName() {
    +        return 'TwelveHourClock';
    +    }
    +}
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Faces_TwentyFourHourClock.js.html b/public/Faces_TwentyFourHourClock.js.html new file mode 100644 index 00000000..7fc5fefa --- /dev/null +++ b/public/Faces_TwentyFourHourClock.js.html @@ -0,0 +1,143 @@ + + + + + FlipClock.js :: Source: Faces/TwentyFourHourClock.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    import Face from '../Components/Face';
    +import { callback } from '../Helpers/Functions';
    +
    +/**
    + * @classdesc This face shows the current time in twenty-four hour format.
    + * @extends Face
    + * @param {(FaceValue|object)} value - The `Face` value. If not an instance
    + *     of FaceValue, this argument is assumed to be the instance attributes.
    + * @param {(object|undefined)} [attributes] - The instance attributes.
    + * @memberof Faces
    + */
    +export default class TwentyFourHourClock extends Face {
    +
    +    defaultDataType() {
    +        return Date;
    +    }
    +
    +    defaultValue() {
    +        return new Date;
    +    }
    +
    +    defaultAttributes() {
    +        return {
    +            showSeconds: true,
    +            showLabels: false
    +        };
    +    }
    +
    +    format(instance, value) {
    +        if(!value) {
    +            value = new Date;
    +        }
    +
    +        const groups = [
    +            [value.getHours()],
    +            [value.getMinutes()]
    +        ];
    +
    +        if(this.showSeconds) {
    +            groups.push([value.getSeconds()]);
    +        }
    +
    +        return groups;
    +    }
    +
    +    increment(instance, offset = 0) {
    +        instance.value = new Date(this.value.value.getTime() + offset + (new Date().getTime() - instance.timer.lastLoop));
    +    }
    +
    +    decrement(instance, offset = 0) {
    +        instance.value = new Date(this.value.value.getTime() - offset - (new Date().getTime() - instance.timer.lastLoop));
    +    }
    +
    +    /**
    +     * Define the name of the class.
    +     *
    +     * @return {string}
    +     */
    +    static defineName() {
    +        return 'TwentyFourHourClock';
    +    }
    +}
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Faces_WeekCounter.js.html b/public/Faces_WeekCounter.js.html new file mode 100644 index 00000000..ccfc1dca --- /dev/null +++ b/public/Faces_WeekCounter.js.html @@ -0,0 +1,131 @@ + + + + + FlipClock.js :: Source: Faces/WeekCounter.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    import DayCounter from './DayCounter';
    +
    +/**
    + * @classdesc This face is meant to display a clock that shows weeks, days,
    + *     hours, minutes, and seconds.
    + * @extends Face
    + * @param {(FaceValue|object)} value - The `Face` value. If not an instance
    + *     of FaceValue, this argument is assumed to be the instance attributes.
    + * @param {(object|undefined)} [attributes] - The instance attributes.
    + * @memberof Faces
    + */
    +export default class WeekCounter extends DayCounter {
    +
    +    format(instance, value) {
    +        const now = !instance.timer.started ? new Date : value;
    +        const originalValue = instance.originalValue || value;
    +        const a = !this.countdown ? now : originalValue;
    +        const b = !this.countdown ? originalValue : now;
    +
    +        const data = [
    +            [this.getWeeks(a, b)],
    +            [this.getDays(a, b)],
    +            [this.getHours(a, b)],
    +            [this.getMinutes(a, b)]
    +        ];
    +
    +        if(this.showSeconds) {
    +            data.push([this.getSeconds(a, b)]);
    +        }
    +
    +        return data;
    +    }
    +
    +    getWeeks(a, b) {
    +        return Math.floor(this.getTotalSeconds(a, b) / 60 / 60 / 24 / 7);
    +    }
    +
    +    getDays(a, b) {
    +        return Math.abs(super.getDays(a, b) % 7);
    +    }
    +
    +    /**
    +     * Define the name of the class.
    +     *
    +     * @return {string}
    +     */
    +    static defineName() {
    +        return 'WeekCounter';
    +    }
    +}
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Faces_YearCounter.js.html b/public/Faces_YearCounter.js.html new file mode 100644 index 00000000..1fbf4af3 --- /dev/null +++ b/public/Faces_YearCounter.js.html @@ -0,0 +1,132 @@ + + + + + FlipClock.js :: Source: Faces/YearCounter.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    import WeekCounter from './WeekCounter';
    +
    +/**
    + * @classdesc This face is meant to display a clock that shows years, weeks,
    + *     days, hours, minutes, and seconds.
    + * @extends Face
    + * @param {(FaceValue|object)} value - The `Face` value. If not an instance
    + *     of FaceValue, this argument is assumed to be the instance attributes.
    + * @param {(object|undefined)} [attributes] - The instance attributes.
    + * @memberof Faces
    + */
    +export default class YearCounter extends WeekCounter {
    +
    +    format(instance, value) {
    +        const now = !instance.timer.started ? new Date : value;
    +        const originalValue = instance.originalValue || value;
    +        const a = !this.countdown ? now : originalValue;
    +        const b = !this.countdown ? originalValue : now;
    +
    +        const data = [
    +            [this.getYears(a, b)],
    +            [this.getWeeks(a, b)],
    +            [this.getDays(a, b)],
    +            [this.getHours(a, b)],
    +            [this.getMinutes(a, b)]
    +        ];
    +
    +        if(this.showSeconds) {
    +            data.push([this.getSeconds(a, b)]);
    +        }
    +
    +        return data;
    +    }
    +
    +    getYears(a, b) {
    +        return Math.floor(Math.max(0, this.getTotalSeconds(a, b) / 60 / 60 / 24 / 7 / 52));
    +    }
    +
    +    getWeeks(a, b) {
    +        return Math.abs(super.getWeeks(a, b) % 52);
    +    }
    +
    +    /**
    +     * Define the name of the class.
    +     *
    +     * @return {string}
    +     */
    +    static defineName() {
    +        return 'YearCounter';
    +    }
    +}
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Faces_index.js.html b/public/Faces_index.js.html new file mode 100644 index 00000000..f5670807 --- /dev/null +++ b/public/Faces_index.js.html @@ -0,0 +1,108 @@ + + + + + FlipClock.js :: Source: Faces/index.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    /**
    + * Faces are classes that hook into the core of Flipclock to provide unique
    + * functionality. The core doesn't do a lot, except facilitate the interaction
    + * between all the components. The Face is what makes the clock "tick".
    + *
    + * @namespace Faces
    + */
    +
    +import Counter from './Counter';
    +import DayCounter from './DayCounter';
    +import HourCounter from './HourCounter';
    +import MinuteCounter from './MinuteCounter';
    +import TwelveHourClock from './TwelveHourClock';
    +import TwentyFourHourClock from './TwentyFourHourClock';
    +import WeekCounter from './WeekCounter';
    +import YearCounter from './YearCounter';
    +
    +export {
    +    Counter,
    +    DayCounter,
    +    MinuteCounter,
    +    HourCounter,
    +    TwelveHourClock,
    +    TwentyFourHourClock,
    +    WeekCounter,
    +    YearCounter
    +};
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/FlipClock.Options.html b/public/FlipClock.Options.html new file mode 100644 index 00000000..f2bcaaaa --- /dev/null +++ b/public/FlipClock.Options.html @@ -0,0 +1,394 @@ + + + + + FlipClock.js :: Namespace: Options + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    + FlipClock.Options

    + +

    An object of key/value pairs that will be used to set the attributes.

    +
    Example:
    {
    +   face: 'DayCounter',
    +   language: 'es',
    +   timer: Timer.make(500)
    +}
    + + +
    + +
    +
    + + + + + + +
    Properties:
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    face + + +string +| + +Face + + + + + + <optional>
    + + + +
    + + Faces.DayCounter + +

    The clock's Face instance.

    interval + + +number + + + + + + <optional>
    + + + +
    + + 1000 + +

    The clock's interval rate (in milliseconds).

    theme + + +object + + + + + + <optional>
    + + + +
    + + Themes.Original + +

    The clock's theme.

    language + + +string +| + +object + + + + + + <optional>
    + + + +
    + + Languages.English + +

    The clock's language.

    timer + + +Timer + + + + + + <optional>
    + + + +
    + + Timer + +

    The clock's timer.

    +
    + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/FlipClock.html b/public/FlipClock.html new file mode 100644 index 00000000..9b579227 --- /dev/null +++ b/public/FlipClock.html @@ -0,0 +1,5762 @@ + + + + + FlipClock.js :: Class: FlipClock + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    FlipClock(el, value, attributes)

    + + +
    + +
    +
    + + + + + + +

    new FlipClock(el, value, attributes)

    + + + + + + +
    +

    Create a new FlipClock instance.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    el + + +HTMLElement + + + +

    The HTML element used to bind clock DOM node.

    value + + +* + + + +

    The value that is passed to the clock face.

    attributes + + +object +| + +undefined + + + +

    FlipClock.Options passed an object with key/value.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    + + +
    +

    Extends

    + + + + + + + +
    + + + + + + + + + + + + +
    +

    Namespaces

    + +
    +
    Options
    +
    +
    +
    + + + +

    Members

    + + +
    + +

    (static) defaults :object

    + + + + +
    +

    The defaults attribute.

    +
    + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    className :string

    + + + + +
    +

    The className attribute. Used for CSS.

    +
    + + + +
    Type:
    +
      +
    • + +string + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    el :HTMLElement

    + + + + +
    +

    The el attribute.

    +
    + + + +
    Type:
    +
      +
    • + +HTMLElement + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    events :object

    + + + + +
    +

    The events attribute.

    +
    + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    face :Face

    + + + + +
    +

    The clock Face.

    +
    + + + +
    Type:
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    language :object

    + + + + +
    +

    Get the language attribute.

    +
    + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    name :string

    + + + + +
    +

    Get the name attribute.

    +
    + + + +
    Type:
    +
      +
    • + +string + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    originalValue :*

    + + + + +
    +

    The originalValue attribute.

    +
    + + + +
    Type:
    +
      +
    • + +* + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    parent :DomComponent

    + + + + +
    +

    The parent attribute. Parent is set when DomComponent instances are +mounted.

    +
    + + + +
    Type:
    + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    stopAt :*

    + + + + +
    +

    The stopAt attribute.

    +
    + + + +
    Type:
    +
      +
    • + +* + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    theme :object

    + + + + +
    +

    The theme attribute.

    +
    + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    timer :Timer

    + + + + +
    +

    The timer instance.

    +
    + + + +
    Type:
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    value :FaceValue|null

    + + + + +
    +

    Helper method to The clock's FaceValue instance.

    +
    + + + +
    Type:
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + + + + + + +

    Methods

    + + +
    + + + + + +

    (static) defineName() → {string}

    + + + + + + +
    +

    Define the name of the class.

    +
    + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +string + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    (static) setDefaultFace(value) → {void}

    + + + + + + +
    +

    Helper method to set the default Face value.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    value + + +Face + + + +

    The default Face class.This should be a + constructor.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    (static) setDefaultLanguage(value) → {void}

    + + + + + + +
    +

    Helper method to set the default language.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    value + + +object + + + +

    The default language.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    (static) setDefaultTheme(value) → {void}

    + + + + + + +
    +

    Helper method to set the default theme.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    value + + +object + + + +

    The default theme.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    callback(fn) → {*}

    + + + + + + +
    +

    Helper method to execute the callback() function.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    fn + + +function + + + +

    The callback function.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns the executed callback function.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    createDivider(attributesopt) → {Divider}

    + + + + + + +
    +

    Helper method to instantiate a new Divider.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    attributes + + +object +| + +undefined + + + + + + <optional>
    + + + + + +

    The attributes passed to the + Divider instance.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The instantiated Divider.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Divider + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    createGroup(items, attributesopt) → {Group}

    + + + + + + +
    +

    Helper method to instantiate a new Group.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    items + + +array + + + + + + + + + +

    An array of List items to group.

    attributes + + +Group +| + +undefined + + + + + + <optional>
    + + + + + +

    The attributes passed to the + Group instance.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The instantiated Group.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Group + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    createLabel(value, attributesopt) → {Label}

    + + + + + + +
    +

    Helper method to instantiate a new Label.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    value + + +* + + + + + + + + + +

    The Label value.

    attributes + + +object +| + +undefined + + + + + + <optional>
    + + + + + +

    The attributes passed to the + Label instance.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The instantiated Label.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Label + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    createList(value, attributesopt) → {List}

    + + + + + + +
    +

    Helper method to instantiate a new List.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    value + + +* + + + + + + + + + +

    The List value.

    attributes + + +object +| + +undefined + + + + + + <optional>
    + + + + + +

    The attributes passed to the + List instance.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The instantiated List.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +List + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    decrement(value) → {FlipClock}

    + + + + + + +
    +

    Helper method to decrement the clock's value.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    value + + +* +| + +undefined + + + +

    Decrement the clock by the specified value. + If no value is passed, then the default decrement is determined by + the Face, which is usually 1.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The FlipClock instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +FlipClock + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    emit(key) → {Component}

    + + + + + + +
    +

    Emit an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getAttribute(key) → {*}

    + + + + + + +
    +

    Get an attribute. Returns null if no attribute is defined.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The attribute name.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute value.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getAttributes() → {object}

    + + + + + + +
    +

    Get all the atttributes for this instance.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute dictionary.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +object + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getPublicAttributes() → {object}

    + + + + + + +
    +

    Get only public the atttributes for this instance. Omits any attribute +that starts with $, which is used internally.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute dictionary.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +object + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    increment(value) → {FlipClock}

    + + + + + + +
    +

    Helper method to increment the clock's value.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    value + + +* +| + +undefined + + + +

    Increment the clock by the specified value. + If no value is passed, then the default increment is determined by + the Face, which is usually 1.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The FlipClock instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +FlipClock + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    mount(el) → {FlipClock}

    + + + + + + +
    +

    Mount the clock to the parent DOM element.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    el + + +HTMLElement + + + +

    The parent HTMLElement.

    +
    + + + + + +
    + + + + + + + + +
    Overrides:
    +
    + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The FlipClock instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +FlipClock + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    off(key, fn) → {Component}

    + + + + + + +
    +

    Stop listening to an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    fn + + +function +| + +undefined + + + +

    The listener callback function. If no + function is defined, all events with the specified id/key will be + removed. Otherwise, only the event listeners matching the id/key AND + callback will be removed.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    on(key, fn, onceopt) → {Component}

    + + + + + + +
    +

    Start listening to an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    key + + +string + + + + + + + + + + + +

    The event id/key.

    fn + + +function + + + + + + + + + + + +

    The listener callback function.

    once + + +boolean + + + + + + <optional>
    + + + + + +
    + + false + +

    Should the event handler be fired a + single time.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    once(key, fn) → {Component}

    + + + + + + +
    +

    Listen to an event only one time.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    fn + + +function + + + +

    The listener callback function.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    render() → {HTMLElement}

    + + + + + + +
    +

    Render the clock's DOM nodes.

    +
    + + + + + + + + + + + + + +
    + + + + + + + + +
    Overrides:
    +
    + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The parent HTMLElement.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +HTMLElement + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    reset(fn) → {FlipClock}

    + + + + + + +
    +

    Reset the clock to the original value.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    fn + + +function + + + +

    The interval callback.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The FlipClock instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +FlipClock + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    setAttribute(key, value) → {void}

    + + + + + + +
    +

    Set an attribute key and value.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The attribute name.

    value + + +* + + + +

    The attribute value.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    setAttributes(values) → {void}

    + + + + + + +
    +

    Set an attributes by object of key/value pairs.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    values + + +object + + + +

    The object dictionary.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    start(fn) → {FlipClock}

    + + + + + + +
    +

    Start the clock.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    fn + + +function + + + +

    The interval callback.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The FlipClock instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +FlipClock + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    stop(fn) → {FlipClock}

    + + + + + + +
    +

    Stop the clock.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    fn + + +function + + + +

    The stop callback.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The FlipClock instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +FlipClock + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    translate(string) → {string}

    + + + + + + +
    +

    Translate a string.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    string + + +string + + + +

    The string to translate.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The translated string. If no tranlation found, the + untranslated string is returned.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +string + + +
    +
    + + + + + + + +
    + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Group.html b/public/Group.html new file mode 100644 index 00000000..bffa7fa5 --- /dev/null +++ b/public/Group.html @@ -0,0 +1,3250 @@ + + + + + FlipClock.js :: Class: Group + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    Group(items, attributesopt)

    + + +
    + +
    +
    + + + + + + +

    new Group(items, attributesopt)

    + + + + + + +
    +

    This class is used to group values within a clock face. How the groups +are displayed is determined by the theme.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    items + + +Array +| + +Object + + + + + + + + + +

    An array List instances or an object of + attributes. If not an array, assumed to be the attributes.

    attributes + + +object +| + +undefined + + + + + + <optional>
    + + + + + +

    The instance attributes.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    + + +
    +

    Extends

    + + + + + + + +
    + + + + + + + + + + + + + + +

    Members

    + + +
    + +

    className :string

    + + + + +
    +

    The className attribute. Used for CSS.

    +
    + + + +
    Type:
    +
      +
    • + +string + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    el :HTMLElement

    + + + + +
    +

    The el attribute.

    +
    + + + +
    Type:
    +
      +
    • + +HTMLElement + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    events :object

    + + + + +
    +

    The events attribute.

    +
    + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    language :object

    + + + + +
    +

    Get the language attribute.

    +
    + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    name :string

    + + + + +
    +

    Get the name attribute.

    +
    + + + +
    Type:
    +
      +
    • + +string + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    parent :DomComponent

    + + + + +
    +

    The parent attribute. Parent is set when DomComponent instances are +mounted.

    +
    + + + +
    Type:
    + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    theme :object

    + + + + +
    +

    The theme attribute.

    +
    + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + + + + + + +

    Methods

    + + +
    + + + + + +

    (static) defineName() → {string}

    + + + + + + +
    +

    Define the name of the class.

    +
    + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +string + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    callback(fn) → {*}

    + + + + + + +
    +

    Helper method to execute the callback() function.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    fn + + +function + + + +

    The callback function.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns the executed callback function.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    emit(key) → {Component}

    + + + + + + +
    +

    Emit an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getAttribute(key) → {*}

    + + + + + + +
    +

    Get an attribute. Returns null if no attribute is defined.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The attribute name.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute value.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getAttributes() → {object}

    + + + + + + +
    +

    Get all the atttributes for this instance.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute dictionary.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +object + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getPublicAttributes() → {object}

    + + + + + + +
    +

    Get only public the atttributes for this instance. Omits any attribute +that starts with $, which is used internally.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute dictionary.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +object + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    mount(parent, beforeopt) → {HTMLElement}

    + + + + + + +
    +

    Mount a DOM component to a parent node.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    parent + + +HTMLElement + + + + + + + + + + + +

    The parent DOM node.

    before + + +false +| + +HTMLElement + + + + + + <optional>
    + + + + + +
    + + false + +

    If false, element is + appended to the parent node. If an instance of an HTMLElement, + the component will be inserted before the specified element.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The el attribute.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +HTMLElement + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    off(key, fn) → {Component}

    + + + + + + +
    +

    Stop listening to an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    fn + + +function +| + +undefined + + + +

    The listener callback function. If no + function is defined, all events with the specified id/key will be + removed. Otherwise, only the event listeners matching the id/key AND + callback will be removed.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    on(key, fn, onceopt) → {Component}

    + + + + + + +
    +

    Start listening to an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    key + + +string + + + + + + + + + + + +

    The event id/key.

    fn + + +function + + + + + + + + + + + +

    The listener callback function.

    once + + +boolean + + + + + + <optional>
    + + + + + +
    + + false + +

    Should the event handler be fired a + single time.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    once(key, fn) → {Component}

    + + + + + + +
    +

    Listen to an event only one time.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    fn + + +function + + + +

    The listener callback function.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    render() → {HTMLElement}

    + + + + + + +
    +

    Render the DOM component.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The el attribute.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +HTMLElement + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    setAttribute(key, value) → {void}

    + + + + + + +
    +

    Set an attribute key and value.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The attribute name.

    value + + +* + + + +

    The attribute value.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    setAttributes(values) → {void}

    + + + + + + +
    +

    Set an attributes by object of key/value pairs.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    values + + +object + + + +

    The object dictionary.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    translate(string) → {string}

    + + + + + + +
    +

    Translate a string.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    string + + +string + + + +

    The string to translate.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The translated string. If no tranlation found, the + untranslated string is returned.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +string + + +
    +
    + + + + + + + +
    + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Helpers.Digitize.html b/public/Helpers.Digitize.html new file mode 100644 index 00000000..186538ce --- /dev/null +++ b/public/Helpers.Digitize.html @@ -0,0 +1,380 @@ + + + + + FlipClock.js :: Namespace: Digitize + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    + Helpers.Digitize

    + + +
    + +
    +
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + +
    + + + + + + + + + + + + + + + + + + + +

    Methods

    + + +
    + + + + + +

    (static) digitize(value, optionsopt) → {array}

    + + + + + + +
    +

    Digitize a number, string, or an array into a digitized array. This function +use by the Face, which convert the digitized array into an array of List +instances.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    value + + +* + + + + + + + + + +

    The value to digitize.

    options + + +Object +| + +undefined + + + + + + <optional>
    + + + + + +

    The digitizer options.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The digitized array.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +array + + +
    +
    + + + + + + + +
    + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Helpers.Functions.html b/public/Helpers.Functions.html new file mode 100644 index 00000000..ffbc6a2a --- /dev/null +++ b/public/Helpers.Functions.html @@ -0,0 +1,3673 @@ + + + + + FlipClock.js :: Namespace: Functions + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    + Helpers.Functions

    + + +
    + +
    +
    + + +

    These are a collection of helper functions, some borrowed from Lodash, +Underscore, etc, to provide common functionality without the need for using +a dependency. All of this is an attempt to reduce the file size of the +library.

    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + +
    + + + + + + + + + + + + + + + + + + + +

    Methods

    + + +
    + + + + + +

    (static) callback(string, …args) → {void}

    + + + + + + +
    +

    Check if fn is a function, and call it with this context and pass the +arguments.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    string + + +string + + + + + + + + + +

    The callback fn.

    args + + +* + + + + + + + + + + <repeatable>
    + +

    The arguments to pass.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    (static) chain(before, after) → {function}

    + + + + + + +
    +

    Returns a function that executes the before attribute and passes that value +to after and the subsequent value is returned.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    before + + +function + + + +

    The first function to execute.

    after + + +function + + + +

    The subsequent function to execute.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • A function that executes the chain.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +function + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    (static) concatMap(fn) → {function}

    + + + + + + +
    +

    Returns a function that returns maps the values before concatenating them.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    fn + + +function + + + +

    The map callback function.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • A function that executes the map and concatenation.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +function + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    (static) deepFlatten(value) → {array}

    + + + + + + +
    +

    Deep flatten an array.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    value + + +array + + + +

    The array to flatten.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The flattened array.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +array + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    (static) error(string) → {void}

    + + + + + + +
    +

    Throw a string as an Error exception.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    string + + +string + + + +

    The error message.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    (static) flatten(value) → {array}

    + + + + + + +
    +

    Flatten an array.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    value + + +array + + + +

    The array to flatten.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The flattened array.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +array + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    (static) isConstructor(value) → {boolean}

    + + + + + + +
    +

    Determines if a value is a constructor.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    value + + +* + + + +

    The value to check.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns true if the value is a constructor.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +boolean + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    (static) isNegative(value) → {boolean}

    + + + + + + +
    +

    Determines if a value is a negative.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    value + + +number + + + +

    The value to check.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns true if the value is a negative.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +boolean + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    (static) isNegativeZero(value) → {boolean}

    + + + + + + +
    +

    Determines if a value is a negative zero.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    value + + +number + + + +

    The value to check.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns true if the value is a negative zero (-0).
    • +
    +
    + + + +
    +
    + Type +
    +
    + +boolean + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    (static) isNull(value) → {boolean}

    + + + + + + +
    +

    Determines if a value is null.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    value + + +* + + + +

    The value to check.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns true if the value is a null.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +boolean + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    (static) isNull(value) → {boolean}

    + + + + + + +
    +

    Determines if a value is undefined.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    value + + +* + + + +

    The value to check.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns true if the value is a undefined.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +boolean + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    (static) isObject(value) → {boolean}

    + + + + + + +
    +

    Determines if a value is an object.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    value + + +* + + + +

    The value to check.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns true if the value is an object.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +boolean + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    (static) isObject(value) → {boolean}

    + + + + + + +
    +

    Determines if a value is a function.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    value + + +* + + + +

    The value to check.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns true if the value is a function.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +boolean + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    (static) isObject(value) → {boolean}

    + + + + + + +
    +

    Determines if a value is a number.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    value + + +* + + + +

    The value to check.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns true if the value is a number.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +boolean + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    (static) isString(value) → {boolean}

    + + + + + + +
    +

    Determines if a value is a string.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    value + + +* + + + +

    The value to check.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns true if the value is a string.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +boolean + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    (static) isString(value) → {boolean}

    + + + + + + +
    +

    Determines if a value is a array.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    value + + +* + + + +

    The value to check.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns true if the value is a string.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +boolean + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    (static) kebabCase(string) → {string}

    + + + + + + +
    +

    Converts a string into kebab case.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    string + + +string + + + +

    The string to convert.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The converted string.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +string + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    (static) length(value) → {number}

    + + + + + + +
    +

    Returns the length of a deep flatten array.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    value + + +array + + + +

    The array to count.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The length of the deep flattened array.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +number + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    (static) noop(string) → {boolean}

    + + + + + + +
    +

    Returns true if undefined ornull`.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    string + + +value + + + +

    The value to check.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • true if undefined ornull`.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +boolean + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    (static) round(string) → {string}

    + + + + + + +
    +

    Round the value to the correct value. Takes into account negative numbers.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    string + + +value + + + +

    The value to round.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The rounded value.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +string + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    (static) ucfirst(string) → {string}

    + + + + + + +
    +

    Capitalize the first letter in a string.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    string + + +string + + + +

    The string to capitalize.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The capitalized string.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +string + + +
    +
    + + + + + + + +
    + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Helpers.Language.html b/public/Helpers.Language.html new file mode 100644 index 00000000..70d63816 --- /dev/null +++ b/public/Helpers.Language.html @@ -0,0 +1,336 @@ + + + + + FlipClock.js :: Namespace: Language + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    + Helpers.Language

    + + +
    + +
    +
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + +
    + + + + + + + + + + + + + + + + + + + +

    Methods

    + + +
    + + + + + +

    (static) language(name) → {object|null}

    + + + + + + +
    +

    Return the language associated with the key. Returns null if no language is +found.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    name + + +string + + + +

    The name or id of the language.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The language dictionary, or null if not found.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +object +| + +null + + +
    +
    + + + + + + + +
    + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Helpers.Template.html b/public/Helpers.Template.html new file mode 100644 index 00000000..7aa21516 --- /dev/null +++ b/public/Helpers.Template.html @@ -0,0 +1,1021 @@ + + + + + FlipClock.js :: Namespace: Template + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    + Helpers.Template

    + + +
    + +
    +
    + + +

    A collection of functions to manage DOM nodes and theme templates.

    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + +
    + + + + + + + + + + + + + + + + + + + +

    Methods

    + + +
    + + + + + +

    (static) appendChildren(el, childrenopt) → {HTMLElement}

    + + + + + + +
    +

    Append an array of DOM nodes to a parent.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    el + + +HTMLElement + + + + + + + + + +

    The parent DOM node.

    children + + +Array +| + +undefined + + + + + + <optional>
    + + + + + +

    The array of children. If no array + is passed, then the method silently fails to run.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +

    el - The DOM node that received the attributes.

    +
    + + + +
    +
    + Type +
    +
    + +HTMLElement + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    (static) createElement(el, childrenopt, attributesopt) → {HTMLElement}

    + + + + + + +
    +

    Create a new HTMLElement instance.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    el + + +HTMLElement + + + + + + + + + +

    The parent DOM node.

    children + + +Array +| + +undefined + + + + + + <optional>
    + + + + + +

    The array of children. If no array + is passed, then the method silently fails to run.

    attributes + + +Object +| + +undefined + + + + + + <optional>
    + + + + + +

    The attributes object.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +

    el - The DOM node that received the attributes.

    +
    + + + +
    +
    + Type +
    +
    + +HTMLElement + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    (static) setAttributes(el, attributesopt) → {HTMLElement}

    + + + + + + +
    +

    Set the attribute of an element.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    el + + +HTMLElement + + + + + + + + + +

    The DOM node that will receive the attributes.

    attributes + + +Object +| + +undefined + + + + + + <optional>
    + + + + + +

    The attribute object, or if no object + is passed, then the action is ignored.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +

    el - The DOM node that received the attributes.

    +
    + + + +
    +
    + Type +
    +
    + +HTMLElement + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    (static) swap(subject, existing) → {HTMLElement}

    + + + + + + +
    +

    Swap a new DOM node with an existing one.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    subject + + +HTMLElement + + + +

    The new DOM node.

    existing + + +HTMLElement + + + +

    The existing DOM node.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns the new element if it was mounted, otherwise + the existing node is returned.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +HTMLElement + + +
    +
    + + + + + + + +
    + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Helpers.Translate.html b/public/Helpers.Translate.html new file mode 100644 index 00000000..268188ea --- /dev/null +++ b/public/Helpers.Translate.html @@ -0,0 +1,360 @@ + + + + + FlipClock.js :: Namespace: Translate + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    + Helpers.Translate

    + + +
    + +
    +
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + +
    + + + + + + + + + + + + + + + + + + + +

    Methods

    + + +
    + + + + + +

    (static) translate(string, from) → {string}

    + + + + + + +
    +

    Translate an English string into another language.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    string + + +string + + + +

    The string to translate.

    from + + +string +| + +object + + + +

    The language used to translate. If a string, + the language is loaded into an object.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • If no diction key is found, the untranslated string is + returned.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +string + + +
    +
    + + + + + + + +
    + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Helpers.Validate.html b/public/Helpers.Validate.html new file mode 100644 index 00000000..116c54e6 --- /dev/null +++ b/public/Helpers.Validate.html @@ -0,0 +1,375 @@ + + + + + FlipClock.js :: Namespace: Validate + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    + Helpers.Validate

    + + +
    + +
    +
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + +
    + + + + + + + + + + + + + + + + + + + +

    Methods

    + + +
    + + + + + +

    (static) validate(value, …args) → {boolean}

    + + + + + + +
    +

    Validate the data type of a variable.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    value + + +* + + + + + + + + + +

    The value to validate.

    args + + +* + + + + + + + + + + <repeatable>
    + +

    The data types to use for validate.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns trueis the value has a valid data type.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +boolean + + +
    +
    + + + + + + + +
    + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Helpers.Value.html b/public/Helpers.Value.html new file mode 100644 index 00000000..fa272fd5 --- /dev/null +++ b/public/Helpers.Value.html @@ -0,0 +1,506 @@ + + + + + FlipClock.js :: Namespace: Value + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    + Helpers.Value

    + + +
    + +
    +
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + +
    + + + + + + + + + + + + + + + + + + + +

    Methods

    + + +
    + + + + + +

    (static) next(value) → {string}

    + + + + + + +
    +

    Calculate the next value for a string. 'a' becomes 'b'. 'A' becomes 'B'. 1 +becomes 2, etc. If multiple character strings are passed, 'aa' would become +'bb'.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    value + + +string +| + +number + + + +

    The string or number to convert.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The formatted string
    • +
    +
    + + + +
    +
    + Type +
    +
    + +string + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    (static) prev(value) → {string}

    + + + + + + +
    +

    Calculate the prev value for a string. 'b' becomes 'a'. 'B' becomes 'A'. 2 +becomes 1, 0 becomes 9, etc. If multiple character strings are passed, 'bb' +would become 'aa'.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    value + + +string +| + +number + + + +

    The string or number to convert.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The formatted string
    • +
    +
    + + + +
    +
    + Type +
    +
    + +string + + +
    +
    + + + + + + + +
    + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Helpers.html b/public/Helpers.html new file mode 100644 index 00000000..4824d7d8 --- /dev/null +++ b/public/Helpers.html @@ -0,0 +1,192 @@ + + + + + FlipClock.js :: Namespace: Helpers + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    Helpers

    + + +
    + +
    +
    + + +

    Helpers are static functions to handle the recurring logic in the library. +Helpers can export one default function, or multiple functions into their +namespace.

    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + +
    + + + + + + + + + + + + + +
    +

    Namespaces

    + +
    +
    Digitize
    +
    + +
    Functions
    +
    + +
    Language
    +
    + +
    Template
    +
    + +
    Translate
    +
    + +
    Validate
    +
    + +
    Value
    +
    +
    +
    + + + + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Helpers_Digitize.js.html b/public/Helpers_Digitize.js.html new file mode 100644 index 00000000..5cc31624 --- /dev/null +++ b/public/Helpers_Digitize.js.html @@ -0,0 +1,129 @@ + + + + + FlipClock.js :: Source: Helpers/Digitize.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    /**
    + * @namespace Helpers.Digitize
    + */
    +import { flatten } from './Functions';
    +import { deepFlatten } from './Functions';
    +
    +/**
    + * Digitize a number, string, or an array into a digitized array. This function
    + * use by the `Face`, which convert the digitized array into an array of `List`
    + * instances.
    + *
    + * @function digitize
    + * @param  {*} value - The value to digitize.
    + * @param  {(Object|undefined)} [options] - The digitizer options.
    + * @return {array} - The digitized array.
    + * @memberof Helpers.Digitize
    + */
    +export default function digitize(value, options) {
    +    options = Object.assign({
    +        minimumDigits: 0,
    +        prependLeadingZero: true
    +    }, options);
    +
    +    function prepend(number) {
    +        const shouldPrependZero = options.prependLeadingZero &&
    +            number.toString().split('').length === 1;
    +
    +        return (shouldPrependZero ? '0' : '').concat(number);
    +    }
    +
    +    function digits(arr, min) {
    +        const length = deepFlatten(arr).length;
    +
    +        if(length < min) {
    +            for(let i = 0; i < min - length; i++) {
    +                arr[0].unshift('0');
    +            }
    +        }
    +
    +        return arr;
    +    }
    +
    +    return digits(flatten([value]).map(number => {
    +        return flatten(deepFlatten([number]).map(number => {
    +            return prepend(number).split('');
    +        }));
    +    }), options.minimumDigits || 0);
    +}
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Helpers_Functions.js.html b/public/Helpers_Functions.js.html new file mode 100644 index 00000000..bdeca2e9 --- /dev/null +++ b/public/Helpers_Functions.js.html @@ -0,0 +1,354 @@ + + + + + FlipClock.js :: Source: Helpers/Functions.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    /**
    + * These are a collection of helper functions, some borrowed from Lodash,
    + * Underscore, etc, to provide common functionality without the need for using
    + * a dependency. All of this is an attempt to reduce the file size of the
    + * library.
    + *
    + * @namespace Helpers.Functions
    + */
    +
    +/**
    + * Throw a string as an Error exception.
    + *
    + * @function error
    + * @param  {string} string - The error message.
    + * @return {void}
    + * @memberof Helpers.Functions
    + */
    +export function error(string) {
    +    throw Error(string);
    +}
    +
    +/**
    + * Check if `fn` is a function, and call it with `this` context and pass the
    + * arguments.
    + *
    + * @function callback
    + * @param  {string} string - The callback fn.
    + * @param  {...*} args - The arguments to pass.
    + * @return {void}
    + * @memberof Helpers.Functions
    + */
    +export function callback(fn, ...args) {
    +    if(isFunction(fn)) {
    +        return fn.call(this, ...args);
    +    }
    +}
    +
    +/**
    + * Round the value to the correct value. Takes into account negative numbers.
    + *
    + * @function round
    + * @param  {value} string - The value to round.
    + * @return {string} - The rounded value.
    + * @memberof Helpers.Functions
    + */
    +export function round(value) {
    +    return isNegativeZero(
    +        value = isNegative(value) ? Math.ceil(value) : Math.floor(value)
    +    ) ? ('-' + value).toString() : value;
    +}
    +
    +/**
    + * Returns `true` if `undefined or `null`.
    + *
    + * @function noop
    + * @param  {value} string - The value to check.
    + * @return {boolean} - `true` if `undefined or `null`.
    + * @memberof Helpers.Functions
    + */
    +export function noop(value) {
    +    return !isUndefined(value) && !isNull(value);
    +}
    +
    +/**
    + * Returns a function that executes the `before` attribute and passes that value
    + * to `after` and the subsequent value is returned.
    + *
    + * @function chain
    + * @param  {function} before - The first function to execute.
    + * @param  {function} after - The subsequent function to execute.
    + * @return {function} - A function that executes the chain.
    + * @memberof Helpers.Functions
    + */
    +export function chain(before, after) {
    +    return () => after(before());
    +}
    +
    +/**
    + * Returns a function that returns maps the values before concatenating them.
    + *
    + * @function concatMap
    + * @param  {function} fn - The map callback function.
    + * @return {function} - A function that executes the map and concatenation.
    + * @memberof Helpers.Functions
    + */
    +export function concatMap(fn) {
    +    return x => {
    +        return x.map(fn).reduce((x, y) => x.concat(y), []);
    +    }
    +}
    +
    +/**
    + * Flatten an array.
    + *
    + * @function flatten
    + * @param  {array} value - The array to flatten.
    + * @return {array} - The flattened array.
    + * @memberof Helpers.Functions
    + */
    +export function flatten(value) {
    +    return concatMap(value => value)(value)
    +}
    +
    +/**
    + * Deep flatten an array.
    + *
    + * @function deepFlatten
    + * @param  {array} value - The array to flatten.
    + * @return {array} - The flattened array.
    + * @memberof Helpers.Functions
    + */
    +export function deepFlatten(x) {
    +    return concatMap(x => Array.isArray(x) ? deepFlatten (x) : x)(x);
    +}
    +
    +/**
    + * Capitalize the first letter in a string.
    + *
    + * @function ucfirst
    + * @param  {string} string - The string to capitalize.
    + * @return {string} - The capitalized string.
    + * @memberof Helpers.Functions
    + */
    +export function ucfirst(string) {
    +    return string.charAt(0).toUpperCase() + string.slice(1);
    +}
    +
    +/**
    + * Returns the length of a deep flatten array.
    + *
    + * @function length
    + * @param  {array} value - The array to count.
    + * @return {number} - The length of the deep flattened array.
    + * @memberof Helpers.Functions
    + */
    +export function length(value) {
    +    return deepFlatten(value).length;
    +}
    +
    +/**
    + * Determines if a value is a negative zero.
    + *
    + * @function isNegativeZero
    + * @param  {number} value - The value to check.
    + * @return {boolean} - Returns `true` if the value is a negative zero (`-0`).
    + * @memberof Helpers.Functions
    + */
    +export function isNegativeZero(value) {
    +    return 1 / Math.round(value) === -Infinity;
    +}
    +
    +/**
    + * Determines if a value is a negative.
    + *
    + * @function isNegative
    + * @param  {number} value - The value to check.
    + * @return {boolean} - Returns `true` if the value is a negative.
    + * @memberof Helpers.Functions
    + */
    +export function isNegative(value) {
    +    return isNegativeZero(value) || value < 0;
    +}
    +
    +/**
    + * Determines if a value is `null`.
    + *
    + * @function isNull
    + * @param  {*} value - The value to check.
    + * @return {boolean} - Returns `true` if the value is a `null`.
    + * @memberof Helpers.Functions
    + */
    +export function isNull(value) {
    +    return value === null;// || typeof value === 'null';
    +}
    +
    +/**
    + * Determines if a value is `undefined`.
    + *
    + * @function isNull
    + * @param  {*} value - The value to check.
    + * @return {boolean} - Returns `true` if the value is a `undefined`.
    + * @memberof Helpers.Functions
    + */
    +export function isUndefined(value) {
    +    return typeof value === 'undefined';
    +}
    +
    +/**
    + * Determines if a value is a constructor.
    + *
    + * @function isConstructor
    + * @param  {*} value - The value to check.
    + * @return {boolean} - Returns `true` if the value is a constructor.
    + * @memberof Helpers.Functions
    + */
    +export function isConstructor(value) {
    +    return (value instanceof Function) && !!value.name;
    +}
    +
    +/**
    + * Determines if a value is a string.
    + *
    + * @function isString
    + * @param  {*} value - The value to check.
    + * @return {boolean} - Returns `true` if the value is a string.
    + * @memberof Helpers.Functions
    + */
    +export function isString(value) {
    +    return typeof value === 'string';
    +}
    +
    +/**
    + * Determines if a value is a array.
    + *
    + * @function isString
    + * @param  {*} value - The value to check.
    + * @return {boolean} - Returns `true` if the value is a string.
    + * @memberof Helpers.Functions
    + */
    +export function isArray(value) {
    +    return value instanceof Array;
    +}
    +
    +/**
    + * Determines if a value is an object.
    + *
    + * @function isObject
    + * @param  {*} value - The value to check.
    + * @return {boolean} - Returns `true` if the value is an object.
    + * @memberof Helpers.Functions
    + */
    +export function isObject(value) {
    +    const type = typeof value;
    +    return value != null && !isArray(value) && (
    +        type == 'object' || type == 'function'
    +    );
    +}
    +
    +/**
    + * Determines if a value is a function.
    + *
    + * @function isObject
    + * @param  {*} value - The value to check.
    + * @return {boolean} - Returns `true` if the value is a function.
    + * @memberof Helpers.Functions
    + */
    +export function isFunction(value) {
    +    return value instanceof Function;
    +}
    +
    +/**
    + * Determines if a value is a number.
    + *
    + * @function isObject
    + * @param  {*} value - The value to check.
    + * @return {boolean} - Returns `true` if the value is a number.
    + * @memberof Helpers.Functions
    + */
    +export function isNumber(value) {
    +    return !isNaN(value);
    +}
    +
    +/**
    + * Converts a string into kebab case.
    + *
    + * @function kebabCase
    + * @param  {string} string - The string to convert.
    + * @return {string} - The converted string.
    + * @memberof Helpers.Functions
    + */
    +export function kebabCase(string) {
    +    return string.replace(/([a-z])([A-Z])/g, '$1-$2').replace(/\s+/g, '-').toLowerCase();
    +}
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Helpers_Language.js.html b/public/Helpers_Language.js.html new file mode 100644 index 00000000..59831583 --- /dev/null +++ b/public/Helpers_Language.js.html @@ -0,0 +1,100 @@ + + + + + FlipClock.js :: Source: Helpers/Language.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    /**
    + * @namespace Helpers.Language
    + */
    +import * as LANGUAGES from '../Languages';
    +
    +/**
    + * Return the language associated with the key. Returns `null` if no language is
    + * found.
    + * 
    + * @function language
    + * @param  {string} name - The name or id of the language.
    + * @return {object|null} - The language dictionary, or null if not found.
    + * @memberof Helpers.Language
    + */
    +export default function language(name) {
    +    return name ? LANGUAGES[name.toLowerCase()] || Object.values(LANGUAGES).find(value => {
    +        return value.aliases.indexOf(name) !== -1;
    +    }) : null;
    +}
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Helpers_Template.js.html b/public/Helpers_Template.js.html new file mode 100644 index 00000000..d7fbd8f1 --- /dev/null +++ b/public/Helpers_Template.js.html @@ -0,0 +1,181 @@ + + + + + FlipClock.js :: Source: Helpers/Template.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    /**
    + * A collection of functions to manage DOM nodes and theme templates.
    + *
    + * @namespace Helpers.Template
    + */
    +import { noop } from './Functions';
    +import { isArray } from './Functions';
    +import { isObject } from './Functions';
    +import { isString } from './Functions';
    +import { deepFlatten } from './Functions';
    +
    +/**
    + * Swap a new DOM node with an existing one.
    + *
    + * @function swap
    + * @param  {HTMLElement} subject - The new DOM node.
    + * @param  {HTMLElement} existing - The existing DOM node.
    + * @return {HTMLElement} - Returns the new element if it was mounted, otherwise
    + *    the existing node is returned.
    + * @memberof Helpers.Template
    + */
    +export function swap(subject, existing) {
    +	if(existing.parentNode) {
    +		existing.parentNode.replaceChild(subject, existing);
    +
    +		return subject;
    +	}
    +
    +	return existing;
    +}
    +
    +/**
    + * Set the attribute of an element.
    + *
    + * @function setAttributes
    + * @param  {HTMLElement} el - The DOM node that will receive the attributes.
    + * @param  {Object|undefined} [attributes] - The attribute object, or if no object
    + *     is passed, then the action is ignored.
    + * @return {HTMLElement} el - The DOM node that received the attributes.
    + * @memberof Helpers.Template
    + */
    +export function setAttributes(el, attributes) {
    +	if(isObject(attributes)) {
    +		for(const i in attributes) {
    +			el.setAttribute(i, attributes[i]);
    +		}
    +	}
    +
    +	return el;
    +}
    +
    +/**
    + * Append an array of DOM nodes to a parent.
    + *
    + * @function appendChildren
    + * @param  {HTMLElement} el - The parent DOM node.
    + * @param  {Array|undefined} [children] - The array of children. If no array
    + *     is passed, then the method silently fails to run.
    + * @return {HTMLElement} el - The DOM node that received the attributes.
    + * @memberof Helpers.Template
    + */
    +export function appendChildren(el, children) {
    +	if(isArray(children)) {
    +		children.filter(noop).forEach(child => {
    +			if(child instanceof HTMLElement) {
    +				el.appendChild(child);
    +			}
    +		});
    +	}
    +
    +	return el;
    +}
    +
    +/**
    + * Create a new HTMLElement instance.
    + *
    + * @function createElement
    + * @param  {HTMLElement} el - The parent DOM node.
    + * @param  {Array|undefined} [children] - The array of children. If no array
    + *     is passed, then the method silently fails to run.
    + * @param  {Object|undefined} [attributes] - The attributes object.
    + * @return {HTMLElement} el - The DOM node that received the attributes.
    + * @memberof Helpers.Template
    + */
    +export function createElement(el, children, attributes) {
    +	if(!(el instanceof HTMLElement)) {
    +		el = document.createElement(el);
    +	}
    +
    +	setAttributes(el, isObject(children) ? children : attributes);
    +
    +	if(!isObject(children) && !isArray(children)) {
    +		el.innerHTML = children;
    +	}
    +	else {
    +		appendChildren(el, children)
    +	}
    +
    +	return el;
    +}
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Helpers_Translate.js.html b/public/Helpers_Translate.js.html new file mode 100644 index 00000000..932ba5ba --- /dev/null +++ b/public/Helpers_Translate.js.html @@ -0,0 +1,103 @@ + + + + + FlipClock.js :: Source: Helpers/Translate.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    /**
    + * @namespace Helpers.Translate
    + */
    +import language from './Language';
    +import { isString } from './Functions';
    +
    +/**
    + * Translate an English string into another language.
    + * 
    + * @function translate
    + * @param {string} string - The string to translate.
    + * @param {(string|object)} from - The language used to translate. If a string,
    + *     the language is loaded into an object.
    + * @return {string} - If no diction key is found, the untranslated string is
    + *     returned.
    + * @memberof Helpers.Translate
    + */
    +export default function translate(string, from) {
    +    const lang = isString(from) ? language(from) : from;
    +    const dictionary = lang.dictionary || lang;
    +    return dictionary[string] || string;
    +};
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Helpers_Validate.js.html b/public/Helpers_Validate.js.html new file mode 100644 index 00000000..7df73a3e --- /dev/null +++ b/public/Helpers_Validate.js.html @@ -0,0 +1,114 @@ + + + + + FlipClock.js :: Source: Helpers/Validate.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    /**
    + * @namespace Helpers.Validate
    + */
    +import { isNull } from './Functions';
    +import { flatten } from './Functions';
    +import { isString } from './Functions';
    +import { isObject } from './Functions';
    +import { isFunction } from './Functions';
    +import { isConstructor } from './Functions';
    +
    +/**
    + * Validate the data type of a variable.
    + *
    + * @function validate
    + * @param {*} value - The value to validate.
    + * @param {...*} args - The data types to use for validate.
    + * @return {boolean} - Returns `true`is the value has a valid data type.
    + * @memberof Helpers.Validate
    + */
    +export default function validate(value, ...args) {
    +    let success = false;
    +
    +    flatten(args).forEach(arg => {
    +        if( (isNull(value) && isNull(arg)) ||
    +            (isObject(arg) && (value instanceof arg)) ||
    +            (isFunction(arg) && !isConstructor(arg) && arg(value) === true) ||
    +            (isString(arg) && (typeof value === arg))) {
    +            success = true;
    +        }
    +    });
    +
    +    return success;
    +}
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Helpers_Value.js.html b/public/Helpers_Value.js.html new file mode 100644 index 00000000..89816537 --- /dev/null +++ b/public/Helpers_Value.js.html @@ -0,0 +1,209 @@ + + + + + FlipClock.js :: Source: Helpers/Value.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    /**
    + * @namespace Helpers.Value
    + */
    +
    +/**
    + * An array of objects with min/max ranges.
    + *
    + * @private
    + * @type {array}
    + */
    +const RANGES = [{
    +    // 0-9
    +    min: 48,
    +    max: 57
    +},{
    +    // a-z
    +    min: 65,
    +    max: 90
    +},{
    +    // A-Z
    +    min: 97,
    +    max: 122
    +}];
    +
    +/**
    + * Format a string into a new data type. Currently only supports string to
    + * number conversion.
    + *
    + * @private
    + * @function format
    + * @param {string} string - The string to format.
    + * @param {string} type - The data type (represented as a string) used to
    + *     convert the string.
    + * @return {boolean} - Returns the formatted string.
    + */
    +function format(string, type) {
    +    switch(type) {
    +        case 'number':
    +            return parseFloat(string);
    +    }
    +
    +    return string;
    +}
    +
    +/**
    + * Find the range object from the `RANGES` constant from the character given.
    + * This is mainly an interval method, but can be used by faces to help
    + * determine what the next value of a string should be.
    + *
    + * @private
    + * @function format
    + * @param {string} char - The char used to determine the range.
    + * @param {string} type - The data type (represented as a string) used to
    + *     convert the string.
    + * @return {boolean} - Returns the formatted string.
    + */
    +function findRange(char) {
    +    for(const i in RANGES) {
    +        const code = char.toString().charCodeAt(0);
    +
    +        if(RANGES[i].min <= code && RANGES[i].max >= code) {
    +            return RANGES[i];
    +        }
    +    }
    +
    +    return null;
    +}
    +
    +/**
    + * Create a string from a character code, which is returned by the callback.
    + *
    + * @private
    + * @callback stringFromCharCodeBy
    + * @param {string} char - The char used to determine the range.
    + * @param {function} fn - The callback function receives `range` and `code`
    + *     arguments. This function should return a character code.
    + * @return {string} - Creates a string from the character code returned by the
    + *     callback function.
    + */
    +function stringFromCharCodeBy(char, fn) {
    +    return String.fromCharCode(
    +        fn(findRange(char), char.charCodeAt(0))
    +    );
    +}
    +
    +/**
    + * Calculate the next value for a string. 'a' becomes 'b'. 'A' becomes 'B'. 1
    + * becomes 2, etc. If multiple character strings are passed, 'aa' would become
    + * 'bb'.
    + *
    + * @function next
    + * @param  {(string|number)} value - The string or number to convert.
    + * @return {string} - The formatted string
    + * @memberof Helpers.Value
    + */
    +export function next(value) {
    +    const converted = (value)
    +        .toString()
    +        .split('')
    +        .map(char => stringFromCharCodeBy(char, (range, code) => {
    +            return !range || code < range.max ? code + 1 : range.min
    +        }))
    +        .join('');
    +
    +    return format(converted, typeof value);
    +}
    +
    +/**
    + * Calculate the prev value for a string. 'b' becomes 'a'. 'B' becomes 'A'. 2
    + * becomes 1, 0 becomes 9, etc. If multiple character strings are passed, 'bb'
    + * would become 'aa'.
    + *
    + * @function prev
    + * @param  {(string|number)} value - The string or number to convert.
    + * @return {string} - The formatted string
    + * @memberof Helpers.Value
    + */
    +export function prev(value) {
    +    const converted = (value)
    +        .toString()
    +        .split('')
    +        .map(char => stringFromCharCodeBy(char, (range, code) => {
    +            return !range || code > range.min ? code - 1 : range.max
    +        }))
    +        .join('');
    +
    +    return format(converted, typeof value);
    +}
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Helpers_index.js.html b/public/Helpers_index.js.html new file mode 100644 index 00000000..91e56989 --- /dev/null +++ b/public/Helpers_index.js.html @@ -0,0 +1,101 @@ + + + + + FlipClock.js :: Source: Helpers/index.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    /**
    + * Helpers are static functions to handle the recurring logic in the library.
    + * Helpers can export one default function, or multiple functions into their
    + * namespace.
    + *
    + * @namespace Helpers
    + */
    +import Digitize from './Digitize';
    +import Language from './Language';
    +import Translate from './Translate';
    +import Validate from './Validate';
    +
    +export * from './Functions';
    +export * from './Template';
    +export {
    +    Digitize,
    +    Language,
    +    Translate,
    +    Validate
    +}
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Label.html b/public/Label.html new file mode 100644 index 00000000..34f8fb8b --- /dev/null +++ b/public/Label.html @@ -0,0 +1,3252 @@ + + + + + FlipClock.js :: Class: Label + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    Label(label, attributesopt)

    + + +
    + +
    +
    + + + + + + +

    new Label(label, attributesopt)

    + + + + + + +
    +

    This class is used to add a label to the clock face.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    label + + +Number +| + +String +| + +Object + + + + + + + + + +

    The label attribute. If an object, + it is assumed that it is the instance attributes.

    attributes + + +object +| + +undefined + + + + + + <optional>
    + + + + + +

    The instance attributes.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    + + +
    +

    Extends

    + + + + + + + +
    + + + + + + + + + + + + + + +

    Members

    + + +
    + +

    className :string

    + + + + +
    +

    The className attribute. Used for CSS.

    +
    + + + +
    Type:
    +
      +
    • + +string + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    el :HTMLElement

    + + + + +
    +

    The el attribute.

    +
    + + + +
    Type:
    +
      +
    • + +HTMLElement + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    events :object

    + + + + +
    +

    The events attribute.

    +
    + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    language :object

    + + + + +
    +

    Get the language attribute.

    +
    + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    name :string

    + + + + +
    +

    Get the name attribute.

    +
    + + + +
    Type:
    +
      +
    • + +string + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    parent :DomComponent

    + + + + +
    +

    The parent attribute. Parent is set when DomComponent instances are +mounted.

    +
    + + + +
    Type:
    + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    theme :object

    + + + + +
    +

    The theme attribute.

    +
    + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + + + + + + +

    Methods

    + + +
    + + + + + +

    (static) defineName() → {string}

    + + + + + + +
    +

    Define the name of the class.

    +
    + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +string + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    callback(fn) → {*}

    + + + + + + +
    +

    Helper method to execute the callback() function.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    fn + + +function + + + +

    The callback function.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns the executed callback function.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    emit(key) → {Component}

    + + + + + + +
    +

    Emit an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getAttribute(key) → {*}

    + + + + + + +
    +

    Get an attribute. Returns null if no attribute is defined.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The attribute name.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute value.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getAttributes() → {object}

    + + + + + + +
    +

    Get all the atttributes for this instance.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute dictionary.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +object + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getPublicAttributes() → {object}

    + + + + + + +
    +

    Get only public the atttributes for this instance. Omits any attribute +that starts with $, which is used internally.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute dictionary.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +object + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    mount(parent, beforeopt) → {HTMLElement}

    + + + + + + +
    +

    Mount a DOM component to a parent node.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    parent + + +HTMLElement + + + + + + + + + + + +

    The parent DOM node.

    before + + +false +| + +HTMLElement + + + + + + <optional>
    + + + + + +
    + + false + +

    If false, element is + appended to the parent node. If an instance of an HTMLElement, + the component will be inserted before the specified element.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The el attribute.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +HTMLElement + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    off(key, fn) → {Component}

    + + + + + + +
    +

    Stop listening to an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    fn + + +function +| + +undefined + + + +

    The listener callback function. If no + function is defined, all events with the specified id/key will be + removed. Otherwise, only the event listeners matching the id/key AND + callback will be removed.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    on(key, fn, onceopt) → {Component}

    + + + + + + +
    +

    Start listening to an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    key + + +string + + + + + + + + + + + +

    The event id/key.

    fn + + +function + + + + + + + + + + + +

    The listener callback function.

    once + + +boolean + + + + + + <optional>
    + + + + + +
    + + false + +

    Should the event handler be fired a + single time.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    once(key, fn) → {Component}

    + + + + + + +
    +

    Listen to an event only one time.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    fn + + +function + + + +

    The listener callback function.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    render() → {HTMLElement}

    + + + + + + +
    +

    Render the DOM component.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The el attribute.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +HTMLElement + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    setAttribute(key, value) → {void}

    + + + + + + +
    +

    Set an attribute key and value.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The attribute name.

    value + + +* + + + +

    The attribute value.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    setAttributes(values) → {void}

    + + + + + + +
    +

    Set an attributes by object of key/value pairs.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    values + + +object + + + +

    The object dictionary.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    translate(string) → {string}

    + + + + + + +
    +

    Translate a string.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    string + + +string + + + +

    The string to translate.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The translated string. If no tranlation found, the + untranslated string is returned.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +string + + +
    +
    + + + + + + + +
    + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Languages.Arabic.html b/public/Languages.Arabic.html new file mode 100644 index 00000000..11fac3d7 --- /dev/null +++ b/public/Languages.Arabic.html @@ -0,0 +1,310 @@ + + + + + FlipClock.js :: Namespace: Arabic + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    + Languages.Arabic

    + +

    Arabic Language Pack

    + + +
    + +
    +
    + + +

    This class will be used to translate tokens into the Arabic language.

    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + +
    + + + + + + + + + + + + + + + +

    Members

    + + +
    + +

    (static, constant) aliases :array

    + + + + + + +
    Type:
    +
      +
    • + +array + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    (static, constant) dictionary :object

    + + + + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + + + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Languages.CanadianFrench.html b/public/Languages.CanadianFrench.html new file mode 100644 index 00000000..680d020b --- /dev/null +++ b/public/Languages.CanadianFrench.html @@ -0,0 +1,310 @@ + + + + + FlipClock.js :: Namespace: CanadianFrench + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    + Languages.CanadianFrench

    + +

    Canadian French Language Pack

    + + +
    + +
    +
    + + +

    This class will used to translate tokens into the Canadian French language.

    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + +
    + + + + + + + + + + + + + + + +

    Members

    + + +
    + +

    (static, constant) aliases :array

    + + + + + + +
    Type:
    +
      +
    • + +array + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    (static, constant) dictionary :object

    + + + + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + + + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Languages.Catalan.html b/public/Languages.Catalan.html new file mode 100644 index 00000000..8a3cd087 --- /dev/null +++ b/public/Languages.Catalan.html @@ -0,0 +1,310 @@ + + + + + FlipClock.js :: Namespace: Catalan + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    + Languages.Catalan

    + +

    Catalan Language Pack

    + + +
    + +
    +
    + + +

    This class will used to translate tokens into the Catalan language.

    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + +
    + + + + + + + + + + + + + + + +

    Members

    + + +
    + +

    (static, constant) aliases :array

    + + + + + + +
    Type:
    +
      +
    • + +array + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    (static, constant) dictionary :object

    + + + + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + + + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Languages.Chinese.html b/public/Languages.Chinese.html new file mode 100644 index 00000000..52edaa78 --- /dev/null +++ b/public/Languages.Chinese.html @@ -0,0 +1,310 @@ + + + + + FlipClock.js :: Namespace: Chinese + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    + Languages.Chinese

    + +

    Chinese Language Pack

    + + +
    + +
    +
    + + +

    This class will used to translate tokens into the Chinese language.

    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + +
    + + + + + + + + + + + + + + + +

    Members

    + + +
    + +

    (static, constant) aliases :array

    + + + + + + +
    Type:
    +
      +
    • + +array + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    (static, constant) dictionary :object

    + + + + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + + + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Languages.Czech.html b/public/Languages.Czech.html new file mode 100644 index 00000000..8a135721 --- /dev/null +++ b/public/Languages.Czech.html @@ -0,0 +1,310 @@ + + + + + FlipClock.js :: Namespace: Czech + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    + Languages.Czech

    + +

    Czech Language Pack

    + + +
    + +
    +
    + + +

    This class will used to translate tokens into the Czech language.

    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + +
    + + + + + + + + + + + + + + + +

    Members

    + + +
    + +

    (static, constant) aliases :array

    + + + + + + +
    Type:
    +
      +
    • + +array + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    (static, constant) dictionary :object

    + + + + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + + + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Languages.Danish.html b/public/Languages.Danish.html new file mode 100644 index 00000000..94a21a43 --- /dev/null +++ b/public/Languages.Danish.html @@ -0,0 +1,310 @@ + + + + + FlipClock.js :: Namespace: Danish + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    + Languages.Danish

    + +

    Danish Language Pack

    + + +
    + +
    +
    + + +

    This class will used to translate tokens into the Danish language.

    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + +
    + + + + + + + + + + + + + + + +

    Members

    + + +
    + +

    (static, constant) aliases :array

    + + + + + + +
    Type:
    +
      +
    • + +array + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    (static, constant) dictionary :object

    + + + + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + + + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Languages.Dutch.html b/public/Languages.Dutch.html new file mode 100644 index 00000000..d4fb9dcf --- /dev/null +++ b/public/Languages.Dutch.html @@ -0,0 +1,310 @@ + + + + + FlipClock.js :: Namespace: Dutch + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    + Languages.Dutch

    + +

    Dutch Language Pack

    + + +
    + +
    +
    + + +

    This class will used to translate tokens into the Dutch language.

    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + +
    + + + + + + + + + + + + + + + +

    Members

    + + +
    + +

    (static, constant) aliases :array

    + + + + + + +
    Type:
    +
      +
    • + +array + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    (static, constant) dictionary :object

    + + + + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + + + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Languages.English.html b/public/Languages.English.html new file mode 100644 index 00000000..c8d9951e --- /dev/null +++ b/public/Languages.English.html @@ -0,0 +1,310 @@ + + + + + FlipClock.js :: Namespace: English + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    + Languages.English

    + +

    English Language Pack

    + + +
    + +
    +
    + + +

    This class will used to translate tokens into the English language.

    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + +
    + + + + + + + + + + + + + + + +

    Members

    + + +
    + +

    (static, constant) aliases :array

    + + + + + + +
    Type:
    +
      +
    • + +array + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    (static, constant) dictionary :object

    + + + + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + + + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Languages.Finnish.html b/public/Languages.Finnish.html new file mode 100644 index 00000000..29f25256 --- /dev/null +++ b/public/Languages.Finnish.html @@ -0,0 +1,310 @@ + + + + + FlipClock.js :: Namespace: Finnish + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    + Languages.Finnish

    + +

    Finnish Language Pack

    + + +
    + +
    +
    + + +

    This class will used to translate tokens into the Finnish language.

    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + +
    + + + + + + + + + + + + + + + +

    Members

    + + +
    + +

    (static, constant) aliases :array

    + + + + + + +
    Type:
    +
      +
    • + +array + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    (static, constant) dictionary :object

    + + + + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + + + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Languages.German.html b/public/Languages.German.html new file mode 100644 index 00000000..40670ca6 --- /dev/null +++ b/public/Languages.German.html @@ -0,0 +1,310 @@ + + + + + FlipClock.js :: Namespace: German + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    + Languages.German

    + +

    German Language Pack

    + + +
    + +
    +
    + + +

    This class will used to translate tokens into the German language.

    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + +
    + + + + + + + + + + + + + + + +

    Members

    + + +
    + +

    (static, constant) aliases :array

    + + + + + + +
    Type:
    +
      +
    • + +array + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    (static, constant) dictionary :object

    + + + + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + + + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Languages.Hebrew.html b/public/Languages.Hebrew.html new file mode 100644 index 00000000..2b8af271 --- /dev/null +++ b/public/Languages.Hebrew.html @@ -0,0 +1,310 @@ + + + + + FlipClock.js :: Namespace: Hebrew + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    + Languages.Hebrew

    + +

    Hebrew Language Pack

    + + +
    + +
    +
    + + +

    This class will used to translate tokens into the Hebrew language.

    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + +
    + + + + + + + + + + + + + + + +

    Members

    + + +
    + +

    (static, constant) aliases :array

    + + + + + + +
    Type:
    +
      +
    • + +array + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    (static, constant) dictionary :object

    + + + + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + + + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Languages.Hungarian.html b/public/Languages.Hungarian.html new file mode 100644 index 00000000..de1311c8 --- /dev/null +++ b/public/Languages.Hungarian.html @@ -0,0 +1,310 @@ + + + + + FlipClock.js :: Namespace: Hungarian + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    + Languages.Hungarian

    + +

    Hungarian Language Pack

    + + +
    + +
    +
    + + +

    This class will used to translate tokens into the Hungarian language.

    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + +
    + + + + + + + + + + + + + + + +

    Members

    + + +
    + +

    (static, constant) aliases :array

    + + + + + + +
    Type:
    +
      +
    • + +array + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    (static, constant) dictionary :object

    + + + + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + + + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Languages.Italian.html b/public/Languages.Italian.html new file mode 100644 index 00000000..8aa88f16 --- /dev/null +++ b/public/Languages.Italian.html @@ -0,0 +1,310 @@ + + + + + FlipClock.js :: Namespace: Italian + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    + Languages.Italian

    + +

    Italian Language Pack

    + + +
    + +
    +
    + + +

    This class will used to translate tokens into the Italian language.

    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + +
    + + + + + + + + + + + + + + + +

    Members

    + + +
    + +

    (static, constant) aliases :array

    + + + + + + +
    Type:
    +
      +
    • + +array + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    (static, constant) dictionary :object

    + + + + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + + + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Languages.Japanese.html b/public/Languages.Japanese.html new file mode 100644 index 00000000..7c35e0ed --- /dev/null +++ b/public/Languages.Japanese.html @@ -0,0 +1,310 @@ + + + + + FlipClock.js :: Namespace: Japanese + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    + Languages.Japanese

    + +

    Japanese Language Pack

    + + +
    + +
    +
    + + +

    This class will used to translate tokens into the Japanese language.

    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + +
    + + + + + + + + + + + + + + + +

    Members

    + + +
    + +

    (static, constant) aliases :array

    + + + + + + +
    Type:
    +
      +
    • + +array + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    (static, constant) dictionary :object

    + + + + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + + + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Languages.Korean.html b/public/Languages.Korean.html new file mode 100644 index 00000000..a09bea38 --- /dev/null +++ b/public/Languages.Korean.html @@ -0,0 +1,310 @@ + + + + + FlipClock.js :: Namespace: Korean + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    + Languages.Korean

    + +

    Korean Language Pack

    + + +
    + +
    +
    + + +

    This class will used to translate tokens into the Korean language.

    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + +
    + + + + + + + + + + + + + + + +

    Members

    + + +
    + +

    (static, constant) aliases :array

    + + + + + + +
    Type:
    +
      +
    • + +array + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    (static, constant) dictionary :object

    + + + + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + + + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Languages.Latvian.html b/public/Languages.Latvian.html new file mode 100644 index 00000000..cd609098 --- /dev/null +++ b/public/Languages.Latvian.html @@ -0,0 +1,310 @@ + + + + + FlipClock.js :: Namespace: Latvian + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    + Languages.Latvian

    + +

    Latvian Language Pack

    + + +
    + +
    +
    + + +

    This class will used to translate tokens into the Latvian language.

    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + +
    + + + + + + + + + + + + + + + +

    Members

    + + +
    + +

    (static, constant) aliases :array

    + + + + + + +
    Type:
    +
      +
    • + +array + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    (static, constant) dictionary :object

    + + + + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + + + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Languages.Norwegian.html b/public/Languages.Norwegian.html new file mode 100644 index 00000000..c0f05f3d --- /dev/null +++ b/public/Languages.Norwegian.html @@ -0,0 +1,310 @@ + + + + + FlipClock.js :: Namespace: Norwegian + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    + Languages.Norwegian

    + +

    Norwegian-Bokmål Language Pack

    + + +
    + +
    +
    + + +

    This class will used to translate tokens into the Norwegian-Bokmål language.

    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + +
    + + + + + + + + + + + + + + + +

    Members

    + + +
    + +

    (static, constant) aliases :array

    + + + + + + +
    Type:
    +
      +
    • + +array + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    (static, constant) dictionary :object

    + + + + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + + + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Languages.Persian.html b/public/Languages.Persian.html new file mode 100644 index 00000000..d2f6a5a6 --- /dev/null +++ b/public/Languages.Persian.html @@ -0,0 +1,310 @@ + + + + + FlipClock.js :: Namespace: Persian + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    + Languages.Persian

    + +

    Persian Language Pack

    + + +
    + +
    +
    + + +

    This class will used to translate tokens into the Persian language.

    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + +
    + + + + + + + + + + + + + + + +

    Members

    + + +
    + +

    (static, constant) aliases :array

    + + + + + + +
    Type:
    +
      +
    • + +array + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    (static, constant) dictionary :object

    + + + + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + + + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Languages.Polish.html b/public/Languages.Polish.html new file mode 100644 index 00000000..a0cfff2b --- /dev/null +++ b/public/Languages.Polish.html @@ -0,0 +1,310 @@ + + + + + FlipClock.js :: Namespace: Polish + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    + Languages.Polish

    + +

    Polish Language Pack

    + + +
    + +
    +
    + + +

    This class will used to translate tokens into the Polish language.

    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + +
    + + + + + + + + + + + + + + + +

    Members

    + + +
    + +

    (static, constant) aliases :array

    + + + + + + +
    Type:
    +
      +
    • + +array + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    (static, constant) dictionary :object

    + + + + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + + + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Languages.Portuguese.html b/public/Languages.Portuguese.html new file mode 100644 index 00000000..06d24bcb --- /dev/null +++ b/public/Languages.Portuguese.html @@ -0,0 +1,310 @@ + + + + + FlipClock.js :: Namespace: Portuguese + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    + Languages.Portuguese

    + +

    Portuguese Language Pack

    + + +
    + +
    +
    + + +

    This class will used to translate tokens into the Portuguese language.

    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + +
    + + + + + + + + + + + + + + + +

    Members

    + + +
    + +

    (static, constant) aliases :array

    + + + + + + +
    Type:
    +
      +
    • + +array + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    (static, constant) dictionary :object

    + + + + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + + + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Languages.Romanian.html b/public/Languages.Romanian.html new file mode 100644 index 00000000..b636ecf5 --- /dev/null +++ b/public/Languages.Romanian.html @@ -0,0 +1,310 @@ + + + + + FlipClock.js :: Namespace: Romanian + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    + Languages.Romanian

    + +

    Romanian Language Pack

    + + +
    + +
    +
    + + +

    This class will used to translate tokens into the Romanian language.

    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + +
    + + + + + + + + + + + + + + + +

    Members

    + + +
    + +

    (static, constant) aliases :array

    + + + + + + +
    Type:
    +
      +
    • + +array + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    (static, constant) dictionary :object

    + + + + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + + + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Languages.Russian.html b/public/Languages.Russian.html new file mode 100644 index 00000000..72a6de27 --- /dev/null +++ b/public/Languages.Russian.html @@ -0,0 +1,310 @@ + + + + + FlipClock.js :: Namespace: Russian + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    + Languages.Russian

    + +

    Russian Language Pack

    + + +
    + +
    +
    + + +

    This class will used to translate tokens into the Russian language.

    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + +
    + + + + + + + + + + + + + + + +

    Members

    + + +
    + +

    (static, constant) aliases :array

    + + + + + + +
    Type:
    +
      +
    • + +array + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    (static, constant) dictionary :object

    + + + + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + + + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Languages.Slovak.html b/public/Languages.Slovak.html new file mode 100644 index 00000000..5097e845 --- /dev/null +++ b/public/Languages.Slovak.html @@ -0,0 +1,310 @@ + + + + + FlipClock.js :: Namespace: Slovak + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    + Languages.Slovak

    + +

    Slovak Language Pack

    + + +
    + +
    +
    + + +

    This class will used to translate tokens into the Slovak language.

    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + +
    + + + + + + + + + + + + + + + +

    Members

    + + +
    + +

    (static, constant) aliases :array

    + + + + + + +
    Type:
    +
      +
    • + +array + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    (static, constant) dictionary :object

    + + + + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + + + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Languages.Spanish.html b/public/Languages.Spanish.html new file mode 100644 index 00000000..e228147e --- /dev/null +++ b/public/Languages.Spanish.html @@ -0,0 +1,310 @@ + + + + + FlipClock.js :: Namespace: Spanish + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    + Languages.Spanish

    + +

    Spanish Language Pack

    + + +
    + +
    +
    + + +

    This class will used to translate tokens into the Spanish language.

    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + +
    + + + + + + + + + + + + + + + +

    Members

    + + +
    + +

    (static, constant) aliases :array

    + + + + + + +
    Type:
    +
      +
    • + +array + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    (static, constant) dictionary :object

    + + + + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + + + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Languages.Swedish.html b/public/Languages.Swedish.html new file mode 100644 index 00000000..b3ba3ec8 --- /dev/null +++ b/public/Languages.Swedish.html @@ -0,0 +1,310 @@ + + + + + FlipClock.js :: Namespace: Swedish + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    + Languages.Swedish

    + +

    Swedish Language Pack

    + + +
    + +
    +
    + + +

    This class will used to translate tokens into the Swedish language.

    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + +
    + + + + + + + + + + + + + + + +

    Members

    + + +
    + +

    (static, constant) aliases :array

    + + + + + + +
    Type:
    +
      +
    • + +array + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    (static, constant) dictionary :object

    + + + + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + + + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Languages.Thai.html b/public/Languages.Thai.html new file mode 100644 index 00000000..ec131996 --- /dev/null +++ b/public/Languages.Thai.html @@ -0,0 +1,310 @@ + + + + + FlipClock.js :: Namespace: Thai + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    + Languages.Thai

    + +

    Thai Language Pack

    + + +
    + +
    +
    + + +

    This class will used to translate tokens into the Thai language.

    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + +
    + + + + + + + + + + + + + + + +

    Members

    + + +
    + +

    (static, constant) aliases :array

    + + + + + + +
    Type:
    +
      +
    • + +array + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    (static, constant) dictionary :object

    + + + + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + + + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Languages.TraditionalChinese.html b/public/Languages.TraditionalChinese.html new file mode 100644 index 00000000..c5eb0e54 --- /dev/null +++ b/public/Languages.TraditionalChinese.html @@ -0,0 +1,310 @@ + + + + + FlipClock.js :: Namespace: TraditionalChinese + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    + Languages.TraditionalChinese

    + +

    Traditional Chinese Language Pack

    + + +
    + +
    +
    + + +

    This class will used to translate tokens into the Traditional Chinese language.

    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + +
    + + + + + + + + + + + + + + + +

    Members

    + + +
    + +

    (static, constant) aliases :array

    + + + + + + +
    Type:
    +
      +
    • + +array + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    (static, constant) dictionary :object

    + + + + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + + + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Languages.Turkish.html b/public/Languages.Turkish.html new file mode 100644 index 00000000..c3974ffd --- /dev/null +++ b/public/Languages.Turkish.html @@ -0,0 +1,310 @@ + + + + + FlipClock.js :: Namespace: Turkish + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    + Languages.Turkish

    + +

    Turkish Language Pack

    + + +
    + +
    +
    + + +

    This class will used to translate tokens into the Turkish language.

    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + +
    + + + + + + + + + + + + + + + +

    Members

    + + +
    + +

    (static, constant) aliases :array

    + + + + + + +
    Type:
    +
      +
    • + +array + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    (static, constant) dictionary :object

    + + + + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + + + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Languages.Ukrainian.html b/public/Languages.Ukrainian.html new file mode 100644 index 00000000..7e388d43 --- /dev/null +++ b/public/Languages.Ukrainian.html @@ -0,0 +1,310 @@ + + + + + FlipClock.js :: Namespace: Ukrainian + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    + Languages.Ukrainian

    + +

    Ukrainian Language Pack

    + + +
    + +
    +
    + + +

    This class will used to translate tokens into the Ukrainian language.

    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + +
    + + + + + + + + + + + + + + + +

    Members

    + + +
    + +

    (static, constant) aliases :array

    + + + + + + +
    Type:
    +
      +
    • + +array + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    (static, constant) dictionary :object

    + + + + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + + + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Languages.Vietnamese.html b/public/Languages.Vietnamese.html new file mode 100644 index 00000000..80b5a437 --- /dev/null +++ b/public/Languages.Vietnamese.html @@ -0,0 +1,310 @@ + + + + + FlipClock.js :: Namespace: Vietnamese + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    + Languages.Vietnamese

    + +

    Vietnamese Language Pack

    + + +
    + +
    +
    + + +

    This class will used to translate tokens into the Vietnamese language.

    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + +
    + + + + + + + + + + + + + + + +

    Members

    + + +
    + +

    (static, constant) aliases :array

    + + + + + + +
    Type:
    +
      +
    • + +array + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    (static, constant) dictionary :object

    + + + + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + + + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Languages.html b/public/Languages.html new file mode 100644 index 00000000..82fd37e3 --- /dev/null +++ b/public/Languages.html @@ -0,0 +1,257 @@ + + + + + FlipClock.js :: Namespace: Languages + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    Languages

    + + +
    + +
    +
    + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + +
    + + + + + + + + + + + + + +
    +

    Namespaces

    + +
    +
    Arabic
    +
    + +
    CanadianFrench
    +
    + +
    Catalan
    +
    + +
    Chinese
    +
    + +
    Czech
    +
    + +
    Danish
    +
    + +
    Dutch
    +
    + +
    English
    +
    + +
    Finnish
    +
    + +
    German
    +
    + +
    Hebrew
    +
    + +
    Hungarian
    +
    + +
    Italian
    +
    + +
    Japanese
    +
    + +
    Korean
    +
    + +
    Latvian
    +
    + +
    Norwegian
    +
    + +
    Persian
    +
    + +
    Polish
    +
    + +
    Portuguese
    +
    + +
    Romanian
    +
    + +
    Russian
    +
    + +
    Slovak
    +
    + +
    Spanish
    +
    + +
    Swedish
    +
    + +
    Thai
    +
    + +
    TraditionalChinese
    +
    + +
    Turkish
    +
    + +
    Ukrainian
    +
    + +
    Vietnamese
    +
    +
    +
    + + + + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Languages_ar-ar.js.html b/public/Languages_ar-ar.js.html new file mode 100644 index 00000000..1ca014c6 --- /dev/null +++ b/public/Languages_ar-ar.js.html @@ -0,0 +1,107 @@ + + + + + FlipClock.js :: Source: Languages/ar-ar.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    /**
    + * @classdesc Arabic Language Pack
    + * @desc This class will be used to translate tokens into the Arabic language.
    + * @namespace Languages.Arabic
    + */
    +
    +/**
    + * @constant dictionary
    + * @type {object}
    + * @memberof Languages.Arabic
    + */
    +export const dictionary = {
    +    'years'   : 'سنوات',
    +    'months'  : 'شهور',
    +    'days'    : 'أيام',
    +    'hours'   : 'ساعات',
    +    'minutes' : 'دقائق',
    +    'seconds' : 'ثواني'
    +};
    +
    +/**
    + * @constant aliases
    + * @type {array}
    + * @memberof Languages.Arabic
    + */
    +export const aliases = ['ar', 'ar-ar', 'arabic'];
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Languages_ca-es.js.html b/public/Languages_ca-es.js.html new file mode 100644 index 00000000..d9dc88bb --- /dev/null +++ b/public/Languages_ca-es.js.html @@ -0,0 +1,107 @@ + + + + + FlipClock.js :: Source: Languages/ca-es.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    /**
    + * @classdesc Catalan Language Pack
    + * @desc This class will used to translate tokens into the Catalan language.
    + * @namespace Languages.Catalan
    + */
    +
    +/**
    + * @constant dictionary
    + * @type {object}
    + * @memberof Languages.Catalan
    + */
    +export const dictionary = {
    +    'years' : 'Anys',
    +    'months' : 'Mesos',
    +    'days' : 'Dies',
    +    'hours' : 'Hores',
    +    'minutes' : 'Minuts',
    +    'seconds' : 'Segons'
    +};
    +
    +/**
    + * @constant aliases
    + * @type {array}
    + * @memberof Languages.Catalan
    + */
    +export const aliases = ['ca', 'ca-es', 'catalan'];
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Languages_cs-cz.js.html b/public/Languages_cs-cz.js.html new file mode 100644 index 00000000..4edc0755 --- /dev/null +++ b/public/Languages_cs-cz.js.html @@ -0,0 +1,107 @@ + + + + + FlipClock.js :: Source: Languages/cs-cz.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    /**
    + * @classdesc Czech Language Pack
    + * @desc This class will used to translate tokens into the Czech language.
    + * @namespace Languages.Czech
    + */
    +
    +/**
    + * @constant dictionary
    + * @type {object}
    + * @memberof Languages.Czech
    + */
    +export const dictionary = {
    +    'years'   : 'Roky',
    +    'months'  : 'Měsíce',
    +    'days'    : 'Dny',
    +    'hours'   : 'Hodiny',
    +    'minutes' : 'Minuty',
    +    'seconds' : 'Sekundy'
    +};
    +
    +/**
    + * @constant aliases
    + * @type {array}
    + * @memberof Languages.Czech
    + */
    +export const aliases = ['cs', 'cs-cz', 'cz', 'cz-cs', 'czech'];
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Languages_da-dk.js.html b/public/Languages_da-dk.js.html new file mode 100644 index 00000000..13e4ef51 --- /dev/null +++ b/public/Languages_da-dk.js.html @@ -0,0 +1,107 @@ + + + + + FlipClock.js :: Source: Languages/da-dk.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    /**
    + * @classdesc Danish Language Pack
    + * @desc This class will used to translate tokens into the Danish language.
    + * @namespace Languages.Danish
    + */
    +
    +/**
    + * @constant dictionary
    + * @type {object}
    + * @memberof Languages.Danish
    + */
    +export const dictionary = {
    +	'years'   : 'År',
    +	'months'  : 'Måneder',
    +	'days'    : 'Dage',
    +	'hours'   : 'Timer',
    +	'minutes' : 'Minutter',
    +	'seconds' : 'Sekunder'
    +};
    +
    +/**
    + * @constant aliases
    + * @type {array}
    + * @memberof Languages.Danish
    + */
    +export const aliases = ['da', 'da-dk', 'danish'];
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Languages_de-de.js.html b/public/Languages_de-de.js.html new file mode 100644 index 00000000..c7c41dc8 --- /dev/null +++ b/public/Languages_de-de.js.html @@ -0,0 +1,107 @@ + + + + + FlipClock.js :: Source: Languages/de-de.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    /**
    + * @classdesc German Language Pack
    + * @desc This class will used to translate tokens into the German language.
    + * @namespace Languages.German
    + */
    +
    +/**
    + * @constant dictionary
    + * @type {object}
    + * @memberof Languages.German
    + */
    +export const dictionary = {
    +	'years'   : 'Jahre',
    +	'months'  : 'Monate',
    +	'days'    : 'Tage',
    +	'hours'   : 'Stunden',
    +	'minutes' : 'Minuten',
    +	'seconds' : 'Sekunden'
    +};
    +
    +/**
    + * @constant aliases
    + * @type {array}
    + * @memberof Languages.German
    + */
    +export const aliases = ['de', 'de-de', 'german'];
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Languages_en-us.js.html b/public/Languages_en-us.js.html new file mode 100644 index 00000000..aadb5482 --- /dev/null +++ b/public/Languages_en-us.js.html @@ -0,0 +1,107 @@ + + + + + FlipClock.js :: Source: Languages/en-us.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    /**
    + * @classdesc English Language Pack
    + * @desc This class will used to translate tokens into the English language.
    + * @namespace Languages.English
    + */
    +
    +/**
    + * @constant dictionary
    + * @type {object}
    + * @memberof Languages.English
    + */
    +export const dictionary = {
    +	'years'   : 'Years',
    +	'months'  : 'Months',
    +	'days'    : 'Days',
    +	'hours'   : 'Hours',
    +	'minutes' : 'Minutes',
    +	'seconds' : 'Seconds'
    +};
    +
    +/**
    + * @constant aliases
    + * @type {array}
    + * @memberof Languages.English
    + */
    +export const aliases = ['en', 'en-us', 'english'];
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Languages_es-es.js.html b/public/Languages_es-es.js.html new file mode 100644 index 00000000..1b919e6b --- /dev/null +++ b/public/Languages_es-es.js.html @@ -0,0 +1,107 @@ + + + + + FlipClock.js :: Source: Languages/es-es.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    /**
    + * @classdesc Spanish Language Pack
    + * @desc This class will used to translate tokens into the Spanish language.
    + * @namespace Languages.Spanish
    + */
    +
    +/**
    + * @constant dictionary
    + * @type {object}
    + * @memberof Languages.Spanish
    + */
    +export const dictionary = {
    +	'years'   : 'Años',
    +	'months'  : 'Meses',
    +	'days'    : 'Días',
    +	'hours'   : 'Horas',
    +	'minutes' : 'Minutos',
    +	'seconds' : 'Segundos'
    +};
    +
    +/**
    + * @constant aliases
    + * @type {array}
    + * @memberof Languages.Spanish
    + */
    +export const aliases = ['es', 'es-es', 'spanish'];
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Languages_fa-ir.js.html b/public/Languages_fa-ir.js.html new file mode 100644 index 00000000..6df2ed82 --- /dev/null +++ b/public/Languages_fa-ir.js.html @@ -0,0 +1,107 @@ + + + + + FlipClock.js :: Source: Languages/fa-ir.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    /**
    + * @classdesc Persian Language Pack
    + * @desc This class will used to translate tokens into the Persian language.
    + * @namespace Languages.Persian
    + */
    +
    +/**
    + * @constant dictionary
    + * @type {object}
    + * @memberof Languages.Persian
    + */
    +export const dictionary = {
    +	'years'   : 'سال',
    +	'months'  : 'ماه',
    +	'days'    : 'روز',
    +	'hours'   : 'ساعت',
    +	'minutes' : 'دقیقه',
    +	'seconds' : 'ثانیه'
    +};
    +
    +/**
    + * @constant aliases
    + * @type {array}
    + * @memberof Languages.Persian
    + */
    +export const aliases = ['fa', 'fa-ir', 'persian'];
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Languages_fi-fi.js.html b/public/Languages_fi-fi.js.html new file mode 100644 index 00000000..2d432942 --- /dev/null +++ b/public/Languages_fi-fi.js.html @@ -0,0 +1,107 @@ + + + + + FlipClock.js :: Source: Languages/fi-fi.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    /**
    + * @classdesc Finnish Language Pack
    + * @desc This class will used to translate tokens into the Finnish language.
    + * @namespace Languages.Finnish
    + */
    +
    +/**
    + * @constant dictionary
    + * @type {object}
    + * @memberof Languages.Finnish
    + */
    +export const dictionary = {
    +	'years'   : 'Vuotta',
    +	'months'  : 'Kuukautta',
    +	'days'    : 'Päivää',
    +	'hours'   : 'Tuntia',
    +	'minutes' : 'Minuuttia',
    +	'seconds' : 'Sekuntia'
    +};
    +
    +/**
    + * @constant aliases
    + * @type {array}
    + * @memberof Languages.Finnish
    + */
    +export const aliases = ['fi', 'fi-fi', 'finnish'];
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Languages_fr-ca.js.html b/public/Languages_fr-ca.js.html new file mode 100644 index 00000000..a595d452 --- /dev/null +++ b/public/Languages_fr-ca.js.html @@ -0,0 +1,107 @@ + + + + + FlipClock.js :: Source: Languages/fr-ca.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    /**
    + * @classdesc Canadian French Language Pack
    + * @desc This class will used to translate tokens into the Canadian French language.
    + * @namespace Languages.CanadianFrench
    + */
    +
    +/**
    + * @constant dictionary
    + * @type {object}
    + * @memberof Languages.CanadianFrench
    + */
    +export const dictionary = {
    +    'years'   : 'Ans',
    +    'months'  : 'Mois',
    +    'days'    : 'Jours',
    +    'hours'   : 'Heures',
    +    'minutes' : 'Minutes',
    +    'seconds' : 'Secondes'
    +};
    +
    +/**
    + * @constant aliases
    + * @type {array}
    + * @memberof Languages.CanadianFrench
    + */
    +export const aliases = ['fr', 'fr-ca', 'french'];
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Languages_he-il.js.html b/public/Languages_he-il.js.html new file mode 100644 index 00000000..93af8b2e --- /dev/null +++ b/public/Languages_he-il.js.html @@ -0,0 +1,107 @@ + + + + + FlipClock.js :: Source: Languages/he-il.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    /**
    + * @classdesc Hebrew Language Pack
    + * @desc This class will used to translate tokens into the Hebrew language.
    + * @namespace Languages.Hebrew
    + */
    +
    +/**
    + * @constant dictionary
    + * @type {object}
    + * @memberof Languages.Hebrew
    + */
    +export const dictionary = {
    +	'years'   : 'שנים',
    +	'months'  : 'חודש',
    +	'days'    : 'ימים',
    +	'hours'   : 'שעות',
    +	'minutes' : 'דקות',
    +	'seconds' : 'שניות'
    +};
    +
    +/**
    + * @constant aliases
    + * @type {array}
    + * @memberof Languages.Hebrew
    + */
    +export const aliases = ['il', 'he-il', 'hebrew'];
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Languages_hu-hu.js.html b/public/Languages_hu-hu.js.html new file mode 100644 index 00000000..94bccf6f --- /dev/null +++ b/public/Languages_hu-hu.js.html @@ -0,0 +1,107 @@ + + + + + FlipClock.js :: Source: Languages/hu-hu.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    /**
    + * @classdesc Hungarian Language Pack
    + * @desc This class will used to translate tokens into the Hungarian language.
    + * @namespace Languages.Hungarian
    + */
    +
    +/**
    + * @constant dictionary
    + * @type {object}
    + * @memberof Languages.Hungarian
    + */
    +export const dictionary = {
    +	'years'   : 'Év',
    +    'months'  : 'Hónap',
    +    'days'    : 'Nap',
    +    'hours'   : 'Óra',
    +    'minutes' : 'Perc',
    +    'seconds' : 'Másodperc'
    +};
    +
    +/**
    + * @constant aliases
    + * @type {array}
    + * @memberof Languages.Hungarian
    + */
    +export const aliases = ['hu', 'hu-hu', 'hungarian'];
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Languages_index.js.html b/public/Languages_index.js.html new file mode 100644 index 00000000..9bf29ab2 --- /dev/null +++ b/public/Languages_index.js.html @@ -0,0 +1,147 @@ + + + + + FlipClock.js :: Source: Languages/index.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    /**
    + * @namespace Languages
    + */
    +import * as Arabic from './ar-ar';
    +import * as Catalan from './ca-es';
    +import * as Czech from './cs-cz';
    +import * as Danish from './da-dk';
    +import * as German from './de-de';
    +import * as English from './en-us';
    +import * as Spanish from './es-es';
    +import * as Persian from './fa-ir';
    +import * as Finnish from './fi-fi';
    +import * as French from './fr-ca';
    +import * as Hebrew from './he-il';
    +import * as Hungarian from './hu-hu';
    +import * as Italian from './it-it';
    +import * as Japanese from './ja-jp';
    +import * as Korean from './ko-kr';
    +import * as Latvian from './lv-lv';
    +import * as Dutch from './nl-be';
    +import * as Norwegian from './no-nb';
    +import * as Polish from './pl-pl';
    +import * as Portuguese from './pt-br';
    +import * as Romanian from './ro-ro';
    +import * as Russian from './ru-ru';
    +import * as Slovak from './sk-sk';
    +import * as Swedish from './sv-se';
    +import * as Thai from './th-th';
    +import * as Turkish from './tr-tr';
    +import * as Ukrainian from './ua-ua';
    +import * as Vietnamese from './vn-vn';
    +import * as Chinese from './zh-cn';
    +import * as TraditionalChinese from './zh-tw';
    +
    +export {
    +    Arabic,
    +    Catalan,
    +    Czech,
    +    Danish,
    +    German,
    +    English,
    +    Spanish,
    +    Persian,
    +    Finnish,
    +    French,
    +    Hebrew,
    +    Hungarian,
    +    Italian,
    +    Japanese,
    +    Korean,
    +    Latvian,
    +    Dutch,
    +    Norwegian,
    +    Polish,
    +    Portuguese,
    +    Romanian,
    +    Russian,
    +    Slovak,
    +    Swedish,
    +    Thai,
    +    Turkish,
    +    Ukrainian,
    +    Vietnamese,
    +    Chinese,
    +    TraditionalChinese
    +}
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Languages_it-it.js.html b/public/Languages_it-it.js.html new file mode 100644 index 00000000..b531770d --- /dev/null +++ b/public/Languages_it-it.js.html @@ -0,0 +1,107 @@ + + + + + FlipClock.js :: Source: Languages/it-it.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    /**
    + * @classdesc Italian Language Pack
    + * @desc This class will used to translate tokens into the Italian language.
    + * @namespace Languages.Italian
    + */
    +
    +/**
    + * @constant dictionary
    + * @type {object}
    + * @memberof Languages.Italian
    + */
    +export const dictionary = {
    +	'years'   : 'Anni',
    +	'months'  : 'Mesi',
    +	'days'    : 'Giorni',
    +	'hours'   : 'Ore',
    +	'minutes' : 'Minuti',
    +	'seconds' : 'Secondi'
    +};
    +
    +/**
    + * @constant aliases
    + * @type {array}
    + * @memberof Languages.Italian
    + */
    +export const aliases = ['da', 'da-dk', 'danish'];
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Languages_ja-jp.js.html b/public/Languages_ja-jp.js.html new file mode 100644 index 00000000..405ac95d --- /dev/null +++ b/public/Languages_ja-jp.js.html @@ -0,0 +1,107 @@ + + + + + FlipClock.js :: Source: Languages/ja-jp.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    /**
    + * @classdesc Japanese Language Pack
    + * @desc This class will used to translate tokens into the Japanese language.
    + * @namespace Languages.Japanese
    + */
    +
    +/**
    + * @constant dictionary
    + * @type {object}
    + * @memberof Languages.Japanese
    + */
    +export const dictionary = {
    +	'years'   : '年',
    +	'months'  : '月',
    +	'days'    : '日',
    +	'hours'   : '時',
    +	'minutes' : '分',
    +	'seconds' : '秒'
    +};
    +
    +/**
    + * @constant aliases
    + * @type {array}
    + * @memberof Languages.Japanese
    + */
    +export const aliases = ['jp', 'ja-jp', 'japanese'];
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Languages_ko-kr.js.html b/public/Languages_ko-kr.js.html new file mode 100644 index 00000000..50fa33ed --- /dev/null +++ b/public/Languages_ko-kr.js.html @@ -0,0 +1,107 @@ + + + + + FlipClock.js :: Source: Languages/ko-kr.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    /**
    + * @classdesc Korean Language Pack
    + * @desc This class will used to translate tokens into the Korean language.
    + * @namespace Languages.Korean
    + */
    +
    +/**
    + * @constant dictionary
    + * @type {object}
    + * @memberof Languages.Korean
    + */
    +export const dictionary = {
    +	'years'   : '년',
    +	'months'  : '월',
    +	'days'    : '일',
    +	'hours'   : '시',
    +	'minutes' : '분',
    +	'seconds' : '초'
    +};
    +
    +/**
    + * @constant aliases
    + * @type {array}
    + * @memberof Languages.Korean
    + */
    +export const aliases = ['ko', 'ko-kr', 'korean'];
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Languages_lv-lv.js.html b/public/Languages_lv-lv.js.html new file mode 100644 index 00000000..c566c4a5 --- /dev/null +++ b/public/Languages_lv-lv.js.html @@ -0,0 +1,107 @@ + + + + + FlipClock.js :: Source: Languages/lv-lv.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    /**
    + * @classdesc Latvian Language Pack
    + * @desc This class will used to translate tokens into the Latvian language.
    + * @namespace Languages.Latvian
    + */
    +
    +/**
    + * @constant dictionary
    + * @type {object}
    + * @memberof Languages.Latvian
    + */
    +export const dictionary = {
    +    'years'   : 'Gadi',
    +    'months'  : 'Mēneši',
    +    'days'    : 'Dienas',
    +    'hours'   : 'Stundas',
    +    'minutes' : 'Minūtes',
    +    'seconds' : 'Sekundes'
    +};
    +
    +/**
    + * @constant aliases
    + * @type {array}
    + * @memberof Languages.Latvian
    + */
    +export const aliases = ['lv', 'lv-lv', 'latvian'];
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Languages_nl-be.js.html b/public/Languages_nl-be.js.html new file mode 100644 index 00000000..91111360 --- /dev/null +++ b/public/Languages_nl-be.js.html @@ -0,0 +1,107 @@ + + + + + FlipClock.js :: Source: Languages/nl-be.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    /**
    + * @classdesc Dutch Language Pack
    + * @desc This class will used to translate tokens into the Dutch language.
    + * @namespace Languages.Dutch
    + */
    +
    +/**
    + * @constant dictionary
    + * @type {object}
    + * @memberof Languages.Dutch
    + */
    +export const dictionary = {
    +    'years'   : 'Jaren',
    +    'months'  : 'Maanden',
    +    'days'    : 'Dagen',
    +    'hours'   : 'Uren',
    +    'minutes' : 'Minuten',
    +    'seconds' : 'Seconden'
    +};
    +
    +/**
    + * @constant aliases
    + * @type {array}
    + * @memberof Languages.Dutch
    + */
    +export const aliases = ['nl', 'nl-be', 'dutch'];
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Languages_no-nb.js.html b/public/Languages_no-nb.js.html new file mode 100644 index 00000000..64c070fd --- /dev/null +++ b/public/Languages_no-nb.js.html @@ -0,0 +1,107 @@ + + + + + FlipClock.js :: Source: Languages/no-nb.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    /**
    + * @classdesc Norwegian-Bokmål Language Pack
    + * @desc This class will used to translate tokens into the Norwegian-Bokmål language.
    + * @namespace Languages.Norwegian
    + */
    +
    +/**
    + * @constant dictionary
    + * @type {object}
    + * @memberof Languages.Norwegian
    + */
    +export const dictionary = {
    +	'years'   : 'År',
    +	'months'  : 'Måneder',
    +	'days'    : 'Dager',
    +	'hours'   : 'Timer',
    +	'minutes' : 'Minutter',
    +	'seconds' : 'Sekunder'
    +};
    +
    +/**
    + * @constant aliases
    + * @type {array}
    + * @memberof Languages.Norwegian
    + */
    +export const aliases = ['no', 'nb', 'no-nb', 'norwegian'];
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Languages_pl-pl.js.html b/public/Languages_pl-pl.js.html new file mode 100644 index 00000000..aadf7a0d --- /dev/null +++ b/public/Languages_pl-pl.js.html @@ -0,0 +1,107 @@ + + + + + FlipClock.js :: Source: Languages/pl-pl.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    /**
    + * @classdesc Polish Language Pack
    + * @desc This class will used to translate tokens into the Polish language.
    + * @namespace Languages.Polish
    + */
    +
    +/**
    + * @constant dictionary
    + * @type {object}
    + * @memberof Languages.Polish
    + */
    +export const dictionary = {
    +	'years'   : 'Lat',
    +	'months'  : 'Miesięcy',
    +	'days'    : 'Dni',
    +	'hours'   : 'Godziny',
    +	'minutes' : 'Minuty',
    +	'seconds' : 'Sekundy'
    +};
    +
    +/**
    + * @constant aliases
    + * @type {array}
    + * @memberof Languages.Polish
    + */
    +export const aliases = ['pl', 'pl-pl', 'polish'];
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Languages_pt-br.js.html b/public/Languages_pt-br.js.html new file mode 100644 index 00000000..2604c350 --- /dev/null +++ b/public/Languages_pt-br.js.html @@ -0,0 +1,107 @@ + + + + + FlipClock.js :: Source: Languages/pt-br.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    /**
    + * @classdesc Portuguese Language Pack
    + * @desc This class will used to translate tokens into the Portuguese language.
    + * @namespace Languages.Portuguese
    + */
    +
    +/**
    + * @constant dictionary
    + * @type {object}
    + * @memberof Languages.Portuguese
    + */
    +export const dictionary = {
    +	'years'   : 'Anos',
    +	'months'  : 'Meses',
    +	'days'    : 'Dias',
    +	'hours'   : 'Horas',
    +	'minutes' : 'Minutos',
    +	'seconds' : 'Segundos'
    +};
    +
    +/**
    + * @constant aliases
    + * @type {array}
    + * @memberof Languages.Portuguese
    + */
    +export const aliases = ['pt', 'pt-br', 'portuguese'];
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Languages_ro-ro.js.html b/public/Languages_ro-ro.js.html new file mode 100644 index 00000000..ce747076 --- /dev/null +++ b/public/Languages_ro-ro.js.html @@ -0,0 +1,107 @@ + + + + + FlipClock.js :: Source: Languages/ro-ro.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    /**
    + * @classdesc Romanian Language Pack
    + * @desc This class will used to translate tokens into the Romanian language.
    + * @namespace Languages.Romanian
    + */
    +
    +/**
    + * @constant dictionary
    + * @type {object}
    + * @memberof Languages.Romanian
    + */
    +export const dictionary = {
    +	'years': 'Ani',
    +	'months': 'Luni',
    +	'days': 'Zile',
    +	'hours': 'Ore',
    +	'minutes': 'Minute',
    +	'seconds': 'sSecunde'
    +};
    +
    +/**
    + * @constant aliases
    + * @type {array}
    + * @memberof Languages.Romanian
    + */
    +export const aliases = ['ro', 'ro-ro', 'romana'];
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Languages_ru-ru.js.html b/public/Languages_ru-ru.js.html new file mode 100644 index 00000000..85ae4dd9 --- /dev/null +++ b/public/Languages_ru-ru.js.html @@ -0,0 +1,107 @@ + + + + + FlipClock.js :: Source: Languages/ru-ru.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    /**
    + * @classdesc Russian Language Pack
    + * @desc This class will used to translate tokens into the Russian language.
    + * @namespace Languages.Russian
    + */
    +
    +/**
    + * @constant dictionary
    + * @type {object}
    + * @memberof Languages.Russian
    + */
    +export const dictionary = {
    +    'years'   : 'лет',
    +    'months'  : 'месяцев',
    +    'days'    : 'дней',
    +    'hours'   : 'часов',
    +    'minutes' : 'минут',
    +    'seconds' : 'секунд'
    +};
    +
    +/**
    + * @constant aliases
    + * @type {array}
    + * @memberof Languages.Russian
    + */
    +export const aliases = ['ru', 'ru-ru', 'russian'];
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Languages_sk-sk.js.html b/public/Languages_sk-sk.js.html new file mode 100644 index 00000000..8edad64a --- /dev/null +++ b/public/Languages_sk-sk.js.html @@ -0,0 +1,107 @@ + + + + + FlipClock.js :: Source: Languages/sk-sk.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    /**
    + * @classdesc Slovak Language Pack
    + * @desc This class will used to translate tokens into the Slovak language.
    + * @namespace Languages.Slovak
    + */
    +
    +/**
    + * @constant dictionary
    + * @type {object}
    + * @memberof Languages.Slovak
    + */
    +export const dictionary = {
    +	'years'   : 'Roky',
    +	'months'  : 'Mesiace',
    +	'days'    : 'Dni',
    +	'hours'   : 'Hodiny',
    +	'minutes' : 'Minúty',
    +	'seconds' : 'Sekundy'
    +};
    +
    +/**
    + * @constant aliases
    + * @type {array}
    + * @memberof Languages.Slovak
    + */
    +export const aliases = ['sk', 'sk-sk', 'slovak'];
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Languages_sv-se.js.html b/public/Languages_sv-se.js.html new file mode 100644 index 00000000..b5a462d2 --- /dev/null +++ b/public/Languages_sv-se.js.html @@ -0,0 +1,107 @@ + + + + + FlipClock.js :: Source: Languages/sv-se.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    /**
    + * @classdesc Swedish Language Pack
    + * @desc This class will used to translate tokens into the Swedish language.
    + * @namespace Languages.Swedish
    + */
    +
    +/**
    + * @constant dictionary
    + * @type {object}
    + * @memberof Languages.Swedish
    + */
    +export const dictionary = {
    +	'years'   : 'År',
    +	'months'  : 'Månader',
    +	'days'    : 'Dagar',
    +	'hours'   : 'Timmar',
    +	'minutes' : 'Minuter',
    +	'seconds' : 'Sekunder'
    +};
    +
    +/**
    + * @constant aliases
    + * @type {array}
    + * @memberof Languages.Swedish
    + */
    +export const aliases = ['sv', 'sv-se', 'swedish'];
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Languages_th-th.js.html b/public/Languages_th-th.js.html new file mode 100644 index 00000000..120db111 --- /dev/null +++ b/public/Languages_th-th.js.html @@ -0,0 +1,107 @@ + + + + + FlipClock.js :: Source: Languages/th-th.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    /**
    + * @classdesc Thai Language Pack
    + * @desc This class will used to translate tokens into the Thai language.
    + * @namespace Languages.Thai
    + */
    +
    +/**
    + * @constant dictionary
    + * @type {object}
    + * @memberof Languages.Thai
    + */
    +export const dictionary = {
    +	'years'   : 'ปี',
    +	'months'  : 'เดือน',
    +	'days'    : 'วัน',
    +	'hours'   : 'ชั่วโมง',
    +	'minutes' : 'นาที',
    +	'seconds' : 'วินาที'
    +};
    +
    +/**
    + * @constant aliases
    + * @type {array}
    + * @memberof Languages.Thai
    + */
    +export const aliases = ['th', 'th-th', 'thai'];
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Languages_tr-tr.js.html b/public/Languages_tr-tr.js.html new file mode 100644 index 00000000..5a1bd725 --- /dev/null +++ b/public/Languages_tr-tr.js.html @@ -0,0 +1,107 @@ + + + + + FlipClock.js :: Source: Languages/tr-tr.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    /**
    + * @classdesc Turkish Language Pack
    + * @desc This class will used to translate tokens into the Turkish language.
    + * @namespace Languages.Turkish
    + */
    +
    +/**
    + * @constant dictionary
    + * @type {object}
    + * @memberof Languages.Turkish
    + */
    +export const dictionary = {
    +	'years'   : 'Yıl',
    +	'months'  : 'Ay',
    +	'days'    : 'Gün',
    +	'hours'   : 'Saat',
    +	'minutes' : 'Dakika',
    +	'seconds' : 'Saniye'
    +};
    +
    +/**
    + * @constant aliases
    + * @type {array}
    + * @memberof Languages.Turkish
    + */
    +export const aliases = ['tr', 'tr-tr', 'turkish'];
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Languages_ua-ua.js.html b/public/Languages_ua-ua.js.html new file mode 100644 index 00000000..40a79cc3 --- /dev/null +++ b/public/Languages_ua-ua.js.html @@ -0,0 +1,107 @@ + + + + + FlipClock.js :: Source: Languages/ua-ua.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    /**
    + * @classdesc Ukrainian Language Pack
    + * @desc This class will used to translate tokens into the Ukrainian language.
    + * @namespace Languages.Ukrainian
    + */
    +
    +/**
    + * @constant dictionary
    + * @type {object}
    + * @memberof Languages.Ukrainian
    + */
    +export const dictionary = {
    +    'years'   : 'роки',
    +    'months'  : 'місяці',
    +    'days'    : 'дні',
    +    'hours'   : 'години',
    +    'minutes' : 'хвилини',
    +    'seconds' : 'секунди'
    +};
    +
    +/**
    + * @constant aliases
    + * @type {array}
    + * @memberof Languages.Ukrainian
    + */
    +export const aliases = ['ua', 'ua-ua', 'ukraine'];
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Languages_vn-vn.js.html b/public/Languages_vn-vn.js.html new file mode 100644 index 00000000..fdf08052 --- /dev/null +++ b/public/Languages_vn-vn.js.html @@ -0,0 +1,107 @@ + + + + + FlipClock.js :: Source: Languages/vn-vn.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    /**
    + * @classdesc Vietnamese Language Pack
    + * @desc This class will used to translate tokens into the Vietnamese language.
    + * @namespace Languages.Vietnamese
    + */
    +
    +/**
    + * @constant dictionary
    + * @type {object}
    + * @memberof Languages.Vietnamese
    + */
    +export const dictionary = {
    +	'years'   : 'Năm',
    +	'months'  : 'Tháng',
    +	'days'    : 'Ngày',
    +	'hours'   : 'Giờ',
    +	'minutes' : 'Phút',
    +	'seconds' : 'Giây'
    +};
    +
    +/**
    + * @constant aliases
    + * @type {array}
    + * @memberof Languages.Vietnamese
    + */
    +export const aliases = ['vn', 'vn-vn', 'vietnamese'];
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Languages_zh-cn.js.html b/public/Languages_zh-cn.js.html new file mode 100644 index 00000000..ca137ce3 --- /dev/null +++ b/public/Languages_zh-cn.js.html @@ -0,0 +1,107 @@ + + + + + FlipClock.js :: Source: Languages/zh-cn.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    /**
    + * @classdesc Chinese Language Pack
    + * @desc This class will used to translate tokens into the Chinese language.
    + * @namespace Languages.Chinese
    + */
    +
    +/**
    + * @constant dictionary
    + * @type {object}
    + * @memberof Languages.Chinese
    + */
    +export const dictionary = {
    +	'years'   : '年',
    +	'months'  : '月',
    +	'days'    : '日',
    +	'hours'   : '时',
    +	'minutes' : '分',
    +	'seconds' : '秒'
    +};
    +
    +/**
    + * @constant aliases
    + * @type {array}
    + * @memberof Languages.Chinese
    + */
    +export const aliases = ['zh', 'zh-cn', 'chinese'];
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/Languages_zh-tw.js.html b/public/Languages_zh-tw.js.html new file mode 100644 index 00000000..7c0b99ec --- /dev/null +++ b/public/Languages_zh-tw.js.html @@ -0,0 +1,107 @@ + + + + + FlipClock.js :: Source: Languages/zh-tw.js + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    +
    +
    /**
    + * @classdesc Traditional Chinese Language Pack
    + * @desc This class will used to translate tokens into the Traditional Chinese language.
    + * @namespace Languages.TraditionalChinese
    + */
    +
    +/**
    + * @constant dictionary
    + * @type {object}
    + * @memberof Languages.TraditionalChinese
    + */
    +export const dictionary = {
    +	'years'   : '年',
    +	'months'  : '月',
    +	'days'    : '日',
    +	'hours'   : '時',
    +	'minutes' : '分',
    +	'seconds' : '秒'
    +};
    +
    +/**
    + * @constant aliases
    + * @type {array}
    + * @memberof Languages.TraditionalChinese
    + */
    +export const aliases = ['zh-tw'];
    +
    +
    +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + diff --git a/public/List.html b/public/List.html new file mode 100644 index 00000000..2502612c --- /dev/null +++ b/public/List.html @@ -0,0 +1,3622 @@ + + + + + FlipClock.js :: Class: List + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    List(label, attributesopt)

    + + +
    + +
    +
    + + + + + + +

    new List(label, attributesopt)

    + + + + + + +
    +

    This class is used to add a digit to the clock face. This class is called +List because it contains a list of ListItem's which are used to +create flip effects. In the context of FlipClock.js a List represents +one single digit.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    label + + +Number +| + +String +| + +Object + + + + + + + + + +

    The active value. If an object, it +is assumed that it is the instance attributes.

    attributes + + +object +| + +undefined + + + + + + <optional>
    + + + + + +

    The instance attributes.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    + + +
    +

    Extends

    + + + + + + + +
    + + + + + + + + + + + + + + +

    Members

    + + +
    + +

    className :string

    + + + + +
    +

    The className attribute. Used for CSS.

    +
    + + + +
    Type:
    +
      +
    • + +string + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    el :HTMLElement

    + + + + +
    +

    The el attribute.

    +
    + + + +
    Type:
    +
      +
    • + +HTMLElement + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    events :object

    + + + + +
    +

    The events attribute.

    +
    + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    items :Number|String

    + + + + +
    +

    Get the items attribute.

    +
    + + + +
    Type:
    +
      +
    • + +Number +| + +String + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    language :object

    + + + + +
    +

    Get the language attribute.

    +
    + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    name :string

    + + + + +
    +

    Get the name attribute.

    +
    + + + +
    Type:
    +
      +
    • + +string + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    parent :DomComponent

    + + + + +
    +

    The parent attribute. Parent is set when DomComponent instances are +mounted.

    +
    + + + +
    Type:
    + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    theme :object

    + + + + +
    +

    The theme attribute.

    +
    + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    value :Number|String

    + + + + +
    +

    Get the value attribute.

    +
    + + + +
    Type:
    +
      +
    • + +Number +| + +String + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + + + + + + +

    Methods

    + + +
    + + + + + +

    (static) defineName() → {string}

    + + + + + + +
    +

    Define the name of the class.

    +
    + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +string + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    callback(fn) → {*}

    + + + + + + +
    +

    Helper method to execute the callback() function.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    fn + + +function + + + +

    The callback function.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns the executed callback function.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    createListItem(value, attributesopt) → {ListItem}

    + + + + + + +
    +

    Helper method to instantiate a new ListItem.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    value + + +Number +| + +String + + + + + + + + + +

    The ListItem value.

    attributes + + +Object +| + +undefined + + + + + + <optional>
    + + + + + +

    The instance attributes.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The instantiated ListItem.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +ListItem + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    emit(key) → {Component}

    + + + + + + +
    +

    Emit an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getAttribute(key) → {*}

    + + + + + + +
    +

    Get an attribute. Returns null if no attribute is defined.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The attribute name.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute value.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getAttributes() → {object}

    + + + + + + +
    +

    Get all the atttributes for this instance.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute dictionary.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +object + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getPublicAttributes() → {object}

    + + + + + + +
    +

    Get only public the atttributes for this instance. Omits any attribute +that starts with $, which is used internally.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute dictionary.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +object + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    mount(parent, beforeopt) → {HTMLElement}

    + + + + + + +
    +

    Mount a DOM component to a parent node.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    parent + + +HTMLElement + + + + + + + + + + + +

    The parent DOM node.

    before + + +false +| + +HTMLElement + + + + + + <optional>
    + + + + + +
    + + false + +

    If false, element is + appended to the parent node. If an instance of an HTMLElement, + the component will be inserted before the specified element.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The el attribute.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +HTMLElement + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    off(key, fn) → {Component}

    + + + + + + +
    +

    Stop listening to an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    fn + + +function +| + +undefined + + + +

    The listener callback function. If no + function is defined, all events with the specified id/key will be + removed. Otherwise, only the event listeners matching the id/key AND + callback will be removed.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    on(key, fn, onceopt) → {Component}

    + + + + + + +
    +

    Start listening to an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    key + + +string + + + + + + + + + + + +

    The event id/key.

    fn + + +function + + + + + + + + + + + +

    The listener callback function.

    once + + +boolean + + + + + + <optional>
    + + + + + +
    + + false + +

    Should the event handler be fired a + single time.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    once(key, fn) → {Component}

    + + + + + + +
    +

    Listen to an event only one time.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    fn + + +function + + + +

    The listener callback function.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    render() → {HTMLElement}

    + + + + + + +
    +

    Render the DOM component.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The el attribute.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +HTMLElement + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    setAttribute(key, value) → {void}

    + + + + + + +
    +

    Set an attribute key and value.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The attribute name.

    value + + +* + + + +

    The attribute value.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    setAttributes(values) → {void}

    + + + + + + +
    +

    Set an attributes by object of key/value pairs.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    values + + +object + + + +

    The object dictionary.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    translate(string) → {string}

    + + + + + + +
    +

    Translate a string.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    string + + +string + + + +

    The string to translate.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The translated string. If no tranlation found, the + untranslated string is returned.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +string + + +
    +
    + + + + + + + +
    + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/ListItem.html b/public/ListItem.html new file mode 100644 index 00000000..a035445c --- /dev/null +++ b/public/ListItem.html @@ -0,0 +1,3248 @@ + + + + + FlipClock.js :: Class: ListItem + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    ListItem(value, attributesopt)

    + + +
    + +
    +
    + + + + + + +

    new ListItem(value, attributesopt)

    + + + + + + +
    +

    This class is used to represent a single digits in a List.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDescription
    value + + +Number +| + +String + + + + + + + + + +

    The value of the ListItem.

    attributes + + +object +| + +undefined + + + + + + <optional>
    + + + + + +

    The instance attributes.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    + + +
    +

    Extends

    + + + + + + + +
    + + + + + + + + + + + + + + +

    Members

    + + +
    + +

    className :string

    + + + + +
    +

    The className attribute. Used for CSS.

    +
    + + + +
    Type:
    +
      +
    • + +string + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    el :HTMLElement

    + + + + +
    +

    The el attribute.

    +
    + + + +
    Type:
    +
      +
    • + +HTMLElement + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    events :object

    + + + + +
    +

    The events attribute.

    +
    + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    language :object

    + + + + +
    +

    Get the language attribute.

    +
    + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    name :string

    + + + + +
    +

    Get the name attribute.

    +
    + + + +
    Type:
    +
      +
    • + +string + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    parent :DomComponent

    + + + + +
    +

    The parent attribute. Parent is set when DomComponent instances are +mounted.

    +
    + + + +
    Type:
    + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    theme :object

    + + + + +
    +

    The theme attribute.

    +
    + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + + + + + + +

    Methods

    + + +
    + + + + + +

    (static) defineName() → {string}

    + + + + + + +
    +

    Define the name of the class.

    +
    + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +string + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    callback(fn) → {*}

    + + + + + + +
    +

    Helper method to execute the callback() function.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    fn + + +function + + + +

    The callback function.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns the executed callback function.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    emit(key) → {Component}

    + + + + + + +
    +

    Emit an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getAttribute(key) → {*}

    + + + + + + +
    +

    Get an attribute. Returns null if no attribute is defined.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The attribute name.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute value.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getAttributes() → {object}

    + + + + + + +
    +

    Get all the atttributes for this instance.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute dictionary.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +object + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getPublicAttributes() → {object}

    + + + + + + +
    +

    Get only public the atttributes for this instance. Omits any attribute +that starts with $, which is used internally.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute dictionary.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +object + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    mount(parent, beforeopt) → {HTMLElement}

    + + + + + + +
    +

    Mount a DOM component to a parent node.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    parent + + +HTMLElement + + + + + + + + + + + +

    The parent DOM node.

    before + + +false +| + +HTMLElement + + + + + + <optional>
    + + + + + +
    + + false + +

    If false, element is + appended to the parent node. If an instance of an HTMLElement, + the component will be inserted before the specified element.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The el attribute.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +HTMLElement + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    off(key, fn) → {Component}

    + + + + + + +
    +

    Stop listening to an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    fn + + +function +| + +undefined + + + +

    The listener callback function. If no + function is defined, all events with the specified id/key will be + removed. Otherwise, only the event listeners matching the id/key AND + callback will be removed.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    on(key, fn, onceopt) → {Component}

    + + + + + + +
    +

    Start listening to an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    key + + +string + + + + + + + + + + + +

    The event id/key.

    fn + + +function + + + + + + + + + + + +

    The listener callback function.

    once + + +boolean + + + + + + <optional>
    + + + + + +
    + + false + +

    Should the event handler be fired a + single time.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    once(key, fn) → {Component}

    + + + + + + +
    +

    Listen to an event only one time.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    fn + + +function + + + +

    The listener callback function.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    render() → {HTMLElement}

    + + + + + + +
    +

    Render the DOM component.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The el attribute.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +HTMLElement + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    setAttribute(key, value) → {void}

    + + + + + + +
    +

    Set an attribute key and value.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The attribute name.

    value + + +* + + + +

    The attribute value.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    setAttributes(values) → {void}

    + + + + + + +
    +

    Set an attributes by object of key/value pairs.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    values + + +object + + + +

    The object dictionary.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    translate(string) → {string}

    + + + + + + +
    +

    Translate a string.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    string + + +string + + + +

    The string to translate.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The translated string. If no tranlation found, the + untranslated string is returned.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +string + + +
    +
    + + + + + + + +
    + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/Timer.html b/public/Timer.html new file mode 100644 index 00000000..51246794 --- /dev/null +++ b/public/Timer.html @@ -0,0 +1,3006 @@ + + + + + FlipClock.js :: Class: Timer + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    + + + + + +
    + +
    + +

    Timer(interval)

    + + +
    + +
    +
    + + + + + + +

    new Timer(interval)

    + + + + + + +
    +

    Create a new Timer instance.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    interval + + +Object +| + +Number + + + +

    The interval passed as a Number, + or can set the attribute of the class with an object.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + +
    + + +
    +

    Extends

    + + + + + + + +
    + + + + + + + + + + + + + + +

    Members

    + + +
    + +

    elapsed :Number

    + + + + +
    +

    The elapsed attribute.

    +
    + + + +
    Type:
    +
      +
    • + +Number + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    events :object

    + + + + +
    +

    The events attribute.

    +
    + + + +
    Type:
    +
      +
    • + +object + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    isRunning :boolean

    + + + + +
    +

    The isRunning attribute.

    +
    + + + +
    Type:
    +
      +
    • + +boolean + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    isStopped :boolean

    + + + + +
    +

    The isStopped attribute.

    +
    + + + +
    Type:
    +
      +
    • + +boolean + + +
    • +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + +
    + +

    name :string

    + + + + +
    +

    Get the name attribute.

    +
    + + + +
    Type:
    +
      +
    • + +string + + +
    • +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + +
    + + + + + + +

    Methods

    + + +
    + + + + + +

    (static) defineName() → {string}

    + + + + + + +
    +

    Define the name of the class.

    +
    + + + + + + + + + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +string + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    callback(fn) → {*}

    + + + + + + +
    +

    Helper method to execute the callback() function.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    fn + + +function + + + +

    The callback function.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns the executed callback function.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    emit(key) → {Component}

    + + + + + + +
    +

    Emit an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getAttribute(key) → {*}

    + + + + + + +
    +

    Get an attribute. Returns null if no attribute is defined.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The attribute name.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute value.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +* + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getAttributes() → {object}

    + + + + + + +
    +

    Get all the atttributes for this instance.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute dictionary.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +object + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    getPublicAttributes() → {object}

    + + + + + + +
    +

    Get only public the atttributes for this instance. Omits any attribute +that starts with $, which is used internally.

    +
    + + + + + + + + + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The attribute dictionary.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +object + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    off(key, fn) → {Component}

    + + + + + + +
    +

    Stop listening to an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    fn + + +function +| + +undefined + + + +

    The listener callback function. If no + function is defined, all events with the specified id/key will be + removed. Otherwise, only the event listeners matching the id/key AND + callback will be removed.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    on(key, fn, onceopt) → {Component}

    + + + + + + +
    +

    Start listening to an event.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeAttributesDefaultDescription
    key + + +string + + + + + + + + + + + +

    The event id/key.

    fn + + +function + + + + + + + + + + + +

    The listener callback function.

    once + + +boolean + + + + + + <optional>
    + + + + + +
    + + false + +

    Should the event handler be fired a + single time.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    once(key, fn) → {Component}

    + + + + + + +
    +

    Listen to an event only one time.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The event id/key.

    fn + + +function + + + +

    The listener callback function.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • Returns this instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Component + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    reset(fn) → {Timer}

    + + + + + + +
    +

    Resets the timer.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    fn + + +function +| + +undefined + + + +

    The interval callback.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The Timer instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Timer + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    setAttribute(key, value) → {void}

    + + + + + + +
    +

    Set an attribute key and value.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    key + + +string + + + +

    The attribute name.

    value + + +* + + + +

    The attribute value.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    setAttributes(values) → {void}

    + + + + + + +
    +

    Set an attributes by object of key/value pairs.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    values + + +object + + + +

    The object dictionary.

    +
    + + + + + +
    + + + + + + +
    Inherited From:
    +
    + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + + + +
    +
    + Type +
    +
    + +void + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    start(fn) → {Timer}

    + + + + + + +
    +

    Starts the timer.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    fn + + +function + + + +

    The interval callback.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The Timer instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Timer + + +
    +
    + + + + + + + +
    + +
    + + + + + +

    stop(fn) → {Timer}

    + + + + + + +
    +

    Stops the timer.

    +
    + + + + + + + + + +
    Parameters:
    + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NameTypeDescription
    fn + + +function + + + +

    The stop callback.

    +
    + + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + +
    Source:
    +
    + + + + + + + +
    + + + + + + + + + + + + + + + +
    Returns:
    + + +
    +
      +
    • The Timer instance.
    • +
    +
    + + + +
    +
    + Type +
    +
    + +Timer + + +
    +
    + + + + + + + +
    + + + + + + +
    + +
    + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/fonts/OpenSans-Bold-webfont.eot b/public/fonts/OpenSans-Bold-webfont.eot new file mode 100644 index 00000000..5d20d916 Binary files /dev/null and b/public/fonts/OpenSans-Bold-webfont.eot differ diff --git a/public/fonts/OpenSans-Bold-webfont.svg b/public/fonts/OpenSans-Bold-webfont.svg new file mode 100644 index 00000000..3ed7be4b --- /dev/null +++ b/public/fonts/OpenSans-Bold-webfont.svg @@ -0,0 +1,1830 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/fonts/OpenSans-Bold-webfont.woff b/public/fonts/OpenSans-Bold-webfont.woff new file mode 100644 index 00000000..1205787b Binary files /dev/null and b/public/fonts/OpenSans-Bold-webfont.woff differ diff --git a/public/fonts/OpenSans-BoldItalic-webfont.eot b/public/fonts/OpenSans-BoldItalic-webfont.eot new file mode 100644 index 00000000..1f639a15 Binary files /dev/null and b/public/fonts/OpenSans-BoldItalic-webfont.eot differ diff --git a/public/fonts/OpenSans-BoldItalic-webfont.svg b/public/fonts/OpenSans-BoldItalic-webfont.svg new file mode 100644 index 00000000..6a2607b9 --- /dev/null +++ b/public/fonts/OpenSans-BoldItalic-webfont.svg @@ -0,0 +1,1830 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/fonts/OpenSans-BoldItalic-webfont.woff b/public/fonts/OpenSans-BoldItalic-webfont.woff new file mode 100644 index 00000000..ed760c06 Binary files /dev/null and b/public/fonts/OpenSans-BoldItalic-webfont.woff differ diff --git a/public/fonts/OpenSans-Italic-webfont.eot b/public/fonts/OpenSans-Italic-webfont.eot new file mode 100644 index 00000000..0c8a0ae0 Binary files /dev/null and b/public/fonts/OpenSans-Italic-webfont.eot differ diff --git a/public/fonts/OpenSans-Italic-webfont.svg b/public/fonts/OpenSans-Italic-webfont.svg new file mode 100644 index 00000000..e1075dcc --- /dev/null +++ b/public/fonts/OpenSans-Italic-webfont.svg @@ -0,0 +1,1830 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/fonts/OpenSans-Italic-webfont.woff b/public/fonts/OpenSans-Italic-webfont.woff new file mode 100644 index 00000000..ff652e64 Binary files /dev/null and b/public/fonts/OpenSans-Italic-webfont.woff differ diff --git a/public/fonts/OpenSans-Light-webfont.eot b/public/fonts/OpenSans-Light-webfont.eot new file mode 100644 index 00000000..14868406 Binary files /dev/null and b/public/fonts/OpenSans-Light-webfont.eot differ diff --git a/public/fonts/OpenSans-Light-webfont.svg b/public/fonts/OpenSans-Light-webfont.svg new file mode 100644 index 00000000..11a472ca --- /dev/null +++ b/public/fonts/OpenSans-Light-webfont.svg @@ -0,0 +1,1831 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/fonts/OpenSans-Light-webfont.woff b/public/fonts/OpenSans-Light-webfont.woff new file mode 100644 index 00000000..e7860748 Binary files /dev/null and b/public/fonts/OpenSans-Light-webfont.woff differ diff --git a/public/fonts/OpenSans-LightItalic-webfont.eot b/public/fonts/OpenSans-LightItalic-webfont.eot new file mode 100644 index 00000000..8f445929 Binary files /dev/null and b/public/fonts/OpenSans-LightItalic-webfont.eot differ diff --git a/public/fonts/OpenSans-LightItalic-webfont.svg b/public/fonts/OpenSans-LightItalic-webfont.svg new file mode 100644 index 00000000..431d7e35 --- /dev/null +++ b/public/fonts/OpenSans-LightItalic-webfont.svg @@ -0,0 +1,1835 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/fonts/OpenSans-LightItalic-webfont.woff b/public/fonts/OpenSans-LightItalic-webfont.woff new file mode 100644 index 00000000..43e8b9e6 Binary files /dev/null and b/public/fonts/OpenSans-LightItalic-webfont.woff differ diff --git a/public/fonts/OpenSans-Regular-webfont.eot b/public/fonts/OpenSans-Regular-webfont.eot new file mode 100644 index 00000000..6bbc3cf5 Binary files /dev/null and b/public/fonts/OpenSans-Regular-webfont.eot differ diff --git a/public/fonts/OpenSans-Regular-webfont.svg b/public/fonts/OpenSans-Regular-webfont.svg new file mode 100644 index 00000000..25a39523 --- /dev/null +++ b/public/fonts/OpenSans-Regular-webfont.svg @@ -0,0 +1,1831 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/fonts/OpenSans-Regular-webfont.woff b/public/fonts/OpenSans-Regular-webfont.woff new file mode 100644 index 00000000..e231183d Binary files /dev/null and b/public/fonts/OpenSans-Regular-webfont.woff differ diff --git a/public/img/binding_dark.png b/public/img/binding_dark.png new file mode 100644 index 00000000..2c69fa64 Binary files /dev/null and b/public/img/binding_dark.png differ diff --git a/public/index.html b/public/index.html new file mode 100644 index 00000000..7bf66ffa --- /dev/null +++ b/public/index.html @@ -0,0 +1,148 @@ + + + + + FlipClock.js :: Home + + + + + + + + + + + + + + + + + + + + +
    +
    +

    FlipClock.js

    +
    v0.10.8
    +
    + + + + +
    +
    + + +
    +
    + +
    + + + + + + + +

    + + + + + + + + + + + + + + + +
    +

    FlipClock.js

    Installation

    FlipClock is designed to be used a UMD or ES6 module that can be required and +imported. NPM is the primary package manager. The CDN exposes FlipClock as a +global variable.

    +

    NPM

    npm install flipclock --save

    +

    CDN

    Specific version

    +

    https://cdn.jsdelivr.net/npm/flipclock@<?js= pkg.version ?>/dist/flipclock.min.js

    +

    Always use latest version

    +

    https://cdn.jsdelivr.net/npm/flipclock/dist/flipclock.min.js

    +

    + Download .ZIP +

    +
    +

    New in v1.0

    FlipClock originally was developed an example library for a computer science class that I taught. I never actually thought people would use it, let alone imagine how people would use it. It's been a long time coming, but FlipClock.js has been rewritten for a modern age with no dependencies.

    +
      +
    • Rewritten ES6 Syntax
    • +
    • No dependencies, pure vanilla JS
    • +
    • Import with Webpack, Rollup, Browserify with the UMD build
    • +
    • Mobile friendly with responsive CSS
    • +
    • Supports negative values
    • +
    • Supports alpha values
    • +
    • All new CSS themes for different flip effects
    • +
    • All new clock faces
    • +
    • Extensible and customizable
    • +
    • Unit testing with Jest
    • +
    +
    +

    Basic Usage

    import FlipClock from 'flipclock';
    +
    +const el = document.querySelector('.clock');
    +
    +const clock = new FlipClock(el, new Date, {
    +    face: 'HourCounter'
    +});

    +

    Collaborators

    +
    +

    Special Credit

    Big thanks to all the examples on the Internet. But in particular, a huge thanks goes out to Adem Ilter who built this example, which provided the best animation and least amount of code to prove the concept.

    +
    +

    License

    Licensed under MIT

    +
    + + + + + + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/license.txt b/public/license.txt new file mode 100644 index 00000000..2a761bce --- /dev/null +++ b/public/license.txt @@ -0,0 +1,19 @@ +Copyright (c) 2013 Objective HTML, LLC + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/public/scripts/linenumber.js b/public/scripts/linenumber.js new file mode 100644 index 00000000..4354785c --- /dev/null +++ b/public/scripts/linenumber.js @@ -0,0 +1,25 @@ +/*global document */ +(() => { + const source = document.getElementsByClassName('prettyprint source linenums'); + let i = 0; + let lineNumber = 0; + let lineId; + let lines; + let totalLines; + let anchorHash; + + if (source && source[0]) { + anchorHash = document.location.hash.substring(1); + lines = source[0].getElementsByTagName('li'); + totalLines = lines.length; + + for (; i < totalLines; i++) { + lineNumber++; + lineId = `line${lineNumber}`; + lines[i].id = lineId; + if (lineId === anchorHash) { + lines[i].className += ' selected'; + } + } + } +})(); diff --git a/public/scripts/prettify/Apache-License-2.0.txt b/public/scripts/prettify/Apache-License-2.0.txt new file mode 100644 index 00000000..d6456956 --- /dev/null +++ b/public/scripts/prettify/Apache-License-2.0.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/public/scripts/prettify/lang-css.js b/public/scripts/prettify/lang-css.js new file mode 100644 index 00000000..041e1f59 --- /dev/null +++ b/public/scripts/prettify/lang-css.js @@ -0,0 +1,2 @@ +PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\f\r ]+/,null," \t\r\n "]],[["str",/^"(?:[^\n\f\r"\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*"/,null],["str",/^'(?:[^\n\f\r'\\]|\\(?:\r\n?|\n|\f)|\\[\S\s])*'/,null],["lang-css-str",/^url\(([^"')]*)\)/i],["kwd",/^(?:url|rgb|!important|@import|@page|@media|@charset|inherit)(?=[^\w-]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^*/][^*]*\*+)*\//],["com", +/^(?:<\!--|--\>)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#[\da-f]{3,6}/i],["pln",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i],["pun",/^[^\s\w"']+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|\\[\da-f]+ ?)(?:[\w-]|\\\\[\da-f]+ ?)*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^"')]+/]]),["css-str"]); diff --git a/public/scripts/prettify/prettify.js b/public/scripts/prettify/prettify.js new file mode 100644 index 00000000..eef5ad7e --- /dev/null +++ b/public/scripts/prettify/prettify.js @@ -0,0 +1,28 @@ +var q=null;window.PR_SHOULD_USE_CONTINUATION=!0; +(function(){function L(a){function m(a){var f=a.charCodeAt(0);if(f!==92)return f;var b=a.charAt(1);return(f=r[b])?f:"0"<=b&&b<="7"?parseInt(a.substring(1),8):b==="u"||b==="x"?parseInt(a.substring(2),16):a.charCodeAt(1)}function e(a){if(a<32)return(a<16?"\\x0":"\\x")+a.toString(16);a=String.fromCharCode(a);if(a==="\\"||a==="-"||a==="["||a==="]")a="\\"+a;return a}function h(a){for(var f=a.substring(1,a.length-1).match(/\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\[0-3][0-7]{0,2}|\\[0-7]{1,2}|\\[\S\s]|[^\\]/g),a= +[],b=[],o=f[0]==="^",c=o?1:0,i=f.length;c122||(d<65||j>90||b.push([Math.max(65,j)|32,Math.min(d,90)|32]),d<97||j>122||b.push([Math.max(97,j)&-33,Math.min(d,122)&-33]))}}b.sort(function(a,f){return a[0]-f[0]||f[1]-a[1]});f=[];j=[NaN,NaN];for(c=0;ci[0]&&(i[1]+1>i[0]&&b.push("-"),b.push(e(i[1])));b.push("]");return b.join("")}function y(a){for(var f=a.source.match(/\[(?:[^\\\]]|\\[\S\s])*]|\\u[\dA-Fa-f]{4}|\\x[\dA-Fa-f]{2}|\\\d+|\\[^\dux]|\(\?[!:=]|[()^]|[^()[\\^]+/g),b=f.length,d=[],c=0,i=0;c=2&&a==="["?f[c]=h(j):a!=="\\"&&(f[c]=j.replace(/[A-Za-z]/g,function(a){a=a.charCodeAt(0);return"["+String.fromCharCode(a&-33,a|32)+"]"}));return f.join("")}for(var t=0,s=!1,l=!1,p=0,d=a.length;p=5&&"lang-"===b.substring(0,5))&&!(o&&typeof o[1]==="string"))c=!1,b="src";c||(r[f]=b)}i=d;d+=f.length;if(c){c=o[1];var j=f.indexOf(c),k=j+c.length;o[2]&&(k=f.length-o[2].length,j=k-c.length);b=b.substring(5);B(l+i,f.substring(0,j),e,p);B(l+i+j,c,C(b,c),p);B(l+i+k,f.substring(k),e,p)}else p.push(l+i,b)}a.e=p}var h={},y;(function(){for(var e=a.concat(m), +l=[],p={},d=0,g=e.length;d=0;)h[n.charAt(k)]=r;r=r[1];n=""+r;p.hasOwnProperty(n)||(l.push(r),p[n]=q)}l.push(/[\S\s]/);y=L(l)})();var t=m.length;return e}function u(a){var m=[],e=[];a.tripleQuotedStrings?m.push(["str",/^(?:'''(?:[^'\\]|\\[\S\s]|''?(?=[^']))*(?:'''|$)|"""(?:[^"\\]|\\[\S\s]|""?(?=[^"]))*(?:"""|$)|'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$))/,q,"'\""]):a.multiLineStrings?m.push(["str",/^(?:'(?:[^'\\]|\\[\S\s])*(?:'|$)|"(?:[^"\\]|\\[\S\s])*(?:"|$)|`(?:[^\\`]|\\[\S\s])*(?:`|$))/, +q,"'\"`"]):m.push(["str",/^(?:'(?:[^\n\r'\\]|\\.)*(?:'|$)|"(?:[^\n\r"\\]|\\.)*(?:"|$))/,q,"\"'"]);a.verbatimStrings&&e.push(["str",/^@"(?:[^"]|"")*(?:"|$)/,q]);var h=a.hashComments;h&&(a.cStyleComments?(h>1?m.push(["com",/^#(?:##(?:[^#]|#(?!##))*(?:###|$)|.*)/,q,"#"]):m.push(["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\n\r]*)/,q,"#"]),e.push(["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,q])):m.push(["com",/^#[^\n\r]*/, +q,"#"]));a.cStyleComments&&(e.push(["com",/^\/\/[^\n\r]*/,q]),e.push(["com",/^\/\*[\S\s]*?(?:\*\/|$)/,q]));a.regexLiterals&&e.push(["lang-regex",/^(?:^^\.?|[!+-]|!=|!==|#|%|%=|&|&&|&&=|&=|\(|\*|\*=|\+=|,|-=|->|\/|\/=|:|::|;|<|<<|<<=|<=|=|==|===|>|>=|>>|>>=|>>>|>>>=|[?@[^]|\^=|\^\^|\^\^=|{|\||\|=|\|\||\|\|=|~|break|case|continue|delete|do|else|finally|instanceof|return|throw|try|typeof)\s*(\/(?=[^*/])(?:[^/[\\]|\\[\S\s]|\[(?:[^\\\]]|\\[\S\s])*(?:]|$))+\/)/]);(h=a.types)&&e.push(["typ",h]);a=(""+a.keywords).replace(/^ | $/g, +"");a.length&&e.push(["kwd",RegExp("^(?:"+a.replace(/[\s,]+/g,"|")+")\\b"),q]);m.push(["pln",/^\s+/,q," \r\n\t\xa0"]);e.push(["lit",/^@[$_a-z][\w$@]*/i,q],["typ",/^(?:[@_]?[A-Z]+[a-z][\w$@]*|\w+_t\b)/,q],["pln",/^[$_a-z][\w$@]*/i,q],["lit",/^(?:0x[\da-f]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+-]?\d+)?)[a-z]*/i,q,"0123456789"],["pln",/^\\[\S\s]?/,q],["pun",/^.[^\s\w"-$'./@\\`]*/,q]);return x(m,e)}function D(a,m){function e(a){switch(a.nodeType){case 1:if(k.test(a.className))break;if("BR"===a.nodeName)h(a), +a.parentNode&&a.parentNode.removeChild(a);else for(a=a.firstChild;a;a=a.nextSibling)e(a);break;case 3:case 4:if(p){var b=a.nodeValue,d=b.match(t);if(d){var c=b.substring(0,d.index);a.nodeValue=c;(b=b.substring(d.index+d[0].length))&&a.parentNode.insertBefore(s.createTextNode(b),a.nextSibling);h(a);c||a.parentNode.removeChild(a)}}}}function h(a){function b(a,d){var e=d?a.cloneNode(!1):a,f=a.parentNode;if(f){var f=b(f,1),g=a.nextSibling;f.appendChild(e);for(var h=g;h;h=g)g=h.nextSibling,f.appendChild(h)}return e} +for(;!a.nextSibling;)if(a=a.parentNode,!a)return;for(var a=b(a.nextSibling,0),e;(e=a.parentNode)&&e.nodeType===1;)a=e;d.push(a)}var k=/(?:^|\s)nocode(?:\s|$)/,t=/\r\n?|\n/,s=a.ownerDocument,l;a.currentStyle?l=a.currentStyle.whiteSpace:window.getComputedStyle&&(l=s.defaultView.getComputedStyle(a,q).getPropertyValue("white-space"));var p=l&&"pre"===l.substring(0,3);for(l=s.createElement("LI");a.firstChild;)l.appendChild(a.firstChild);for(var d=[l],g=0;g=0;){var h=m[e];A.hasOwnProperty(h)?window.console&&console.warn("cannot override language handler %s",h):A[h]=a}}function C(a,m){if(!a||!A.hasOwnProperty(a))a=/^\s*=o&&(h+=2);e>=c&&(a+=2)}}catch(w){"console"in window&&console.log(w&&w.stack?w.stack:w)}}var v=["break,continue,do,else,for,if,return,while"],w=[[v,"auto,case,char,const,default,double,enum,extern,float,goto,int,long,register,short,signed,sizeof,static,struct,switch,typedef,union,unsigned,void,volatile"], +"catch,class,delete,false,import,new,operator,private,protected,public,this,throw,true,try,typeof"],F=[w,"alignof,align_union,asm,axiom,bool,concept,concept_map,const_cast,constexpr,decltype,dynamic_cast,explicit,export,friend,inline,late_check,mutable,namespace,nullptr,reinterpret_cast,static_assert,static_cast,template,typeid,typename,using,virtual,where"],G=[w,"abstract,boolean,byte,extends,final,finally,implements,import,instanceof,null,native,package,strictfp,super,synchronized,throws,transient"], +H=[G,"as,base,by,checked,decimal,delegate,descending,dynamic,event,fixed,foreach,from,group,implicit,in,interface,internal,into,is,lock,object,out,override,orderby,params,partial,readonly,ref,sbyte,sealed,stackalloc,string,select,uint,ulong,unchecked,unsafe,ushort,var"],w=[w,"debugger,eval,export,function,get,null,set,undefined,var,with,Infinity,NaN"],I=[v,"and,as,assert,class,def,del,elif,except,exec,finally,from,global,import,in,is,lambda,nonlocal,not,or,pass,print,raise,try,with,yield,False,True,None"], +J=[v,"alias,and,begin,case,class,def,defined,elsif,end,ensure,false,in,module,next,nil,not,or,redo,rescue,retry,self,super,then,true,undef,unless,until,when,yield,BEGIN,END"],v=[v,"case,done,elif,esac,eval,fi,function,in,local,set,then,until"],K=/^(DIR|FILE|vector|(de|priority_)?queue|list|stack|(const_)?iterator|(multi)?(set|map)|bitset|u?(int|float)\d*)/,N=/\S/,O=u({keywords:[F,H,w,"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END"+ +I,J,v],hashComments:!0,cStyleComments:!0,multiLineStrings:!0,regexLiterals:!0}),A={};k(O,["default-code"]);k(x([],[["pln",/^[^]*(?:>|$)/],["com",/^<\!--[\S\s]*?(?:--\>|$)/],["lang-",/^<\?([\S\s]+?)(?:\?>|$)/],["lang-",/^<%([\S\s]+?)(?:%>|$)/],["pun",/^(?:<[%?]|[%?]>)/],["lang-",/^]*>([\S\s]+?)<\/xmp\b[^>]*>/i],["lang-js",/^]*>([\S\s]*?)(<\/script\b[^>]*>)/i],["lang-css",/^]*>([\S\s]*?)(<\/style\b[^>]*>)/i],["lang-in.tag",/^(<\/?[a-z][^<>]*>)/i]]), +["default-markup","htm","html","mxml","xhtml","xml","xsl"]);k(x([["pln",/^\s+/,q," \t\r\n"],["atv",/^(?:"[^"]*"?|'[^']*'?)/,q,"\"'"]],[["tag",/^^<\/?[a-z](?:[\w-.:]*\w)?|\/?>$/i],["atn",/^(?!style[\s=]|on)[a-z](?:[\w:-]*\w)?/i],["lang-uq.val",/^=\s*([^\s"'>]*(?:[^\s"'/>]|\/(?=\s)))/],["pun",/^[/<->]+/],["lang-js",/^on\w+\s*=\s*"([^"]+)"/i],["lang-js",/^on\w+\s*=\s*'([^']+)'/i],["lang-js",/^on\w+\s*=\s*([^\s"'>]+)/i],["lang-css",/^style\s*=\s*"([^"]+)"/i],["lang-css",/^style\s*=\s*'([^']+)'/i],["lang-css", +/^style\s*=\s*([^\s"'>]+)/i]]),["in.tag"]);k(x([],[["atv",/^[\S\s]+/]]),["uq.val"]);k(u({keywords:F,hashComments:!0,cStyleComments:!0,types:K}),["c","cc","cpp","cxx","cyc","m"]);k(u({keywords:"null,true,false"}),["json"]);k(u({keywords:H,hashComments:!0,cStyleComments:!0,verbatimStrings:!0,types:K}),["cs"]);k(u({keywords:G,cStyleComments:!0}),["java"]);k(u({keywords:v,hashComments:!0,multiLineStrings:!0}),["bsh","csh","sh"]);k(u({keywords:I,hashComments:!0,multiLineStrings:!0,tripleQuotedStrings:!0}), +["cv","py"]);k(u({keywords:"caller,delete,die,do,dump,elsif,eval,exit,foreach,for,goto,if,import,last,local,my,next,no,our,print,package,redo,require,sub,undef,unless,until,use,wantarray,while,BEGIN,END",hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["perl","pl","pm"]);k(u({keywords:J,hashComments:!0,multiLineStrings:!0,regexLiterals:!0}),["rb"]);k(u({keywords:w,cStyleComments:!0,regexLiterals:!0}),["js"]);k(u({keywords:"all,and,by,catch,class,else,extends,false,finally,for,if,in,is,isnt,loop,new,no,not,null,of,off,on,or,return,super,then,true,try,unless,until,when,while,yes", +hashComments:3,cStyleComments:!0,multilineStrings:!0,tripleQuotedStrings:!0,regexLiterals:!0}),["coffee"]);k(x([],[["str",/^[\S\s]+/]]),["regex"]);window.prettyPrintOne=function(a,m,e){var h=document.createElement("PRE");h.innerHTML=a;e&&D(h,e);E({g:m,i:e,h:h});return h.innerHTML};window.prettyPrint=function(a){function m(){for(var e=window.PR_SHOULD_USE_CONTINUATION?l.now()+250:Infinity;p=0){var k=k.match(g),f,b;if(b= +!k){b=n;for(var o=void 0,c=b.firstChild;c;c=c.nextSibling)var i=c.nodeType,o=i===1?o?b:c:i===3?N.test(c.nodeValue)?b:o:o;b=(f=o===b?void 0:o)&&"CODE"===f.tagName}b&&(k=f.className.match(g));k&&(k=k[1]);b=!1;for(o=n.parentNode;o;o=o.parentNode)if((o.tagName==="pre"||o.tagName==="code"||o.tagName==="xmp")&&o.className&&o.className.indexOf("prettyprint")>=0){b=!0;break}b||((b=(b=n.className.match(/\blinenums\b(?::(\d+))?/))?b[1]&&b[1].length?+b[1]:!0:!1)&&D(n,b),d={g:k,h:n,i:b},E(d))}}pp:first-child, .props td.description>p:first-child { + margin-top: 0; + padding-top: 0; +} + +.params td.description>p:last-child, .props td.description>p:last-child { + margin-bottom: 0; + padding-bottom: 0; +} + +.disabled { + color: #454545; +} + +.contributor { + display: flex; + width: 100%; + padding: 1em; +} + +.contributor .rounded-circle { + width: 5rem; + height: 5rem; + margin-right: 1em; +} + +.contributor .name { + font-size: 1.3em; +} + +.card .table { + border-right: 0; + border-left: 0; + margin-bottom: 0; +} + +.card .table:last-child { + border-bottom: 0; +} + +.card .table td:last-child, +.card .table th:last-child { + border-right: 0; +} + +.card .table td:first-child, +.card .table th:first-child { + border-left: 0; +} + +.card .table tr:first-child td, +.card .table tr:first-child th { + border-top: 0; +} + +.card .table tr:last-child td { + border-bottom: 0; +} \ No newline at end of file diff --git a/public/styles/prettify-jsdoc.css b/public/styles/prettify-jsdoc.css new file mode 100644 index 00000000..5a2526e3 --- /dev/null +++ b/public/styles/prettify-jsdoc.css @@ -0,0 +1,111 @@ +/* JSDoc prettify.js theme */ + +/* plain text */ +.pln { + color: #000000; + font-weight: normal; + font-style: normal; +} + +/* string content */ +.str { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* a keyword */ +.kwd { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* a comment */ +.com { + font-weight: normal; + font-style: italic; +} + +/* a type name */ +.typ { + color: #000000; + font-weight: normal; + font-style: normal; +} + +/* a literal value */ +.lit { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* punctuation */ +.pun { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* lisp open bracket */ +.opn { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* lisp close bracket */ +.clo { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* a markup tag name */ +.tag { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* a markup attribute name */ +.atn { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* a markup attribute value */ +.atv { + color: #006400; + font-weight: normal; + font-style: normal; +} + +/* a declaration */ +.dec { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* a variable name */ +.var { + color: #000000; + font-weight: normal; + font-style: normal; +} + +/* a function name */ +.fun { + color: #000000; + font-weight: bold; + font-style: normal; +} + +/* Specify class=linenums on a pre to get line numbering */ +ol.linenums { + margin-top: 0; + margin-bottom: 0; +} diff --git a/public/styles/prettify-tomorrow.css b/public/styles/prettify-tomorrow.css new file mode 100644 index 00000000..b6f92a78 --- /dev/null +++ b/public/styles/prettify-tomorrow.css @@ -0,0 +1,132 @@ +/* Tomorrow Theme */ +/* Original theme - https://github.com/chriskempson/tomorrow-theme */ +/* Pretty printing styles. Used with prettify.js. */ +/* SPAN elements with the classes below are added by prettyprint. */ +/* plain text */ +.pln { + color: #4d4d4c; } + +@media screen { + /* string content */ + .str { + color: #718c00; } + + /* a keyword */ + .kwd { + color: #8959a8; } + + /* a comment */ + .com { + color: #8e908c; } + + /* a type name */ + .typ { + color: #4271ae; } + + /* a literal value */ + .lit { + color: #f5871f; } + + /* punctuation */ + .pun { + color: #4d4d4c; } + + /* lisp open bracket */ + .opn { + color: #4d4d4c; } + + /* lisp close bracket */ + .clo { + color: #4d4d4c; } + + /* a markup tag name */ + .tag { + color: #c82829; } + + /* a markup attribute name */ + .atn { + color: #f5871f; } + + /* a markup attribute value */ + .atv { + color: #3e999f; } + + /* a declaration */ + .dec { + color: #f5871f; } + + /* a variable name */ + .var { + color: #c82829; } + + /* a function name */ + .fun { + color: #4271ae; } } +/* Use higher contrast and text-weight for printable form. */ +@media print, projection { + .str { + color: #060; } + + .kwd { + color: #006; + font-weight: bold; } + + .com { + color: #600; + font-style: italic; } + + .typ { + color: #404; + font-weight: bold; } + + .lit { + color: #044; } + + .pun, .opn, .clo { + color: #440; } + + .tag { + color: #006; + font-weight: bold; } + + .atn { + color: #404; } + + .atv { + color: #060; } } +/* Style */ +/* +pre.prettyprint { + background: white; + font-family: Consolas, Monaco, 'Andale Mono', monospace; + font-size: 12px; + line-height: 1.5; + border: 1px solid #ccc; + padding: 10px; } +*/ + +/* Specify class=linenums on a pre to get line numbering */ +ol.linenums { + margin-top: 0; + margin-bottom: 0; } + +/* IE indents via margin-left */ +li.L0, +li.L1, +li.L2, +li.L3, +li.L4, +li.L5, +li.L6, +li.L7, +li.L8, +li.L9 { + /* */ } + +/* Alternate shading for lines */ +li.L1, +li.L3, +li.L5, +li.L7, +li.L9 { + /* */ } diff --git a/public/tutorial-contributors.html b/public/tutorial-contributors.html new file mode 100644 index 00000000..66755a95 --- /dev/null +++ b/public/tutorial-contributors.html @@ -0,0 +1,317 @@ + + + + + FlipClock.js :: Tutorial: Contributors + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + + +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/tutorial-creating-examples.html b/public/tutorial-creating-examples.html new file mode 100644 index 00000000..85f678fb --- /dev/null +++ b/public/tutorial-creating-examples.html @@ -0,0 +1,102 @@ + + + + + FlipClock.js :: Tutorial: Creating Examples + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    +
    + + +

    Creating Examples

    We try to provide a lot of examples. A lot of issues get created due to a lack +of examples and demonstration. If you run into a scenario that you think should +be an example, read the following steps:

    +
      +
    1. Fork the repo on Github
    2. +
    3. Create a new directory in the ./docs/examples. Follow the existing kebab +case format. Example my-example-name.
    4. +
    5. Within the newly created directory, be sure to include two files: +my-example-name.json and my-example-name.md. The name of the files must +match parent directory exactly.
    6. +
    7. my-example-name.md should have a description, and the code to run the +example. The following is some code of how an example could look.

      +
      This examples shows a Faces.TwelveHourClock without seconds.
      +
      +<div class="mt-5 clock"></div>
      +
      +<script type="text/javascript">
      +    const el = document.querySelector('.clock');
      +
      +    const clock = new FlipClock(el, {
      +        face: 'TwelveHourClock'
      +    });
      +</script>
    8. +
    9. Commit your changes with some quality comments and description of what you +just added. And then put in a pull request.
    10. +
    +
    + + +
    + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/tutorial-daily-counter.html b/public/tutorial-daily-counter.html new file mode 100644 index 00000000..640fd20b --- /dev/null +++ b/public/tutorial-daily-counter.html @@ -0,0 +1,88 @@ + + + + + FlipClock.js :: Tutorial: Daily Counter + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    +
    + +

    Daily Counter

    + + +

    This is the most basic example of a DayCounter.

    +
    + + +
    + + +
    + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/tutorial-event-binding.html b/public/tutorial-event-binding.html new file mode 100644 index 00000000..a44961b2 --- /dev/null +++ b/public/tutorial-event-binding.html @@ -0,0 +1,100 @@ + + + + + FlipClock.js :: Tutorial: Event Binding + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    +
    + +

    Event Binding

    + + +

    This example show how to bind and unbind events.

    +
    + + +
    + + +
    + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/tutorial-examples.html b/public/tutorial-examples.html new file mode 100644 index 00000000..ea623c37 --- /dev/null +++ b/public/tutorial-examples.html @@ -0,0 +1,123 @@ + + + + + FlipClock.js :: Tutorial: Examples + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/public/tutorial-getting-started.html b/public/tutorial-getting-started.html new file mode 100644 index 00000000..11ec6171 --- /dev/null +++ b/public/tutorial-getting-started.html @@ -0,0 +1,96 @@ + + + + + FlipClock.js :: Tutorial: Getting Started + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    +
    + + +

    Getting Started

    FlipClock is easy to get up and going fast. Simply instantiate a new +FlipClock instance and pass a DOM node, the starting value, and some +options.

    +
    <div class="clock mt-3"></div>
    +
    +<script>
    +const el = document.querySelector('.clock');
    +
    +const clock = new FlipClock(el, {
    +    face: 'TwentyFourHourClock'
    +});
    +</script>
    + + +
    + + +
    + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/tutorial-hourly-counter.html b/public/tutorial-hourly-counter.html new file mode 100644 index 00000000..18a35a23 --- /dev/null +++ b/public/tutorial-hourly-counter.html @@ -0,0 +1,88 @@ + + + + + FlipClock.js :: Tutorial: Hourly Counter + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    +
    + +

    Hourly Counter

    + + +

    This is the most basic example of a Faces.HourCounter.

    +
    + + +
    + + +
    + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/tutorial-installation.html b/public/tutorial-installation.html new file mode 100644 index 00000000..558a8fac --- /dev/null +++ b/public/tutorial-installation.html @@ -0,0 +1,96 @@ + + + + + FlipClock.js :: Tutorial: Installation + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    +
    + + +

    Installation

    FlipClock is designed to be used a UMD or ES6 module that can be required and +imported. NPM is the primary package manager. The CDN exposes FlipClock as a +global variable.

    +

    NPM

    +
    + npm install flipclock --save +
    +
    + +

    CDN

    +
    + Specific version
    + +

    https://cdn.jsdelivr.net/npm/flipclock@0.10.8/dist/flipclock.min.js

    + + Always use latest version
    + +

    https://cdn.jsdelivr.net/npm/flipclock/dist/flipclock.min.js

    +
    +
    +
    + + +
    + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/tutorial-load-new-clock-face.html b/public/tutorial-load-new-clock-face.html new file mode 100644 index 00000000..af0d79c9 --- /dev/null +++ b/public/tutorial-load-new-clock-face.html @@ -0,0 +1,97 @@ + + + + + FlipClock.js :: Tutorial: Load New Clock Face + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    +
    + +

    Load New Clock Face

    + + +

    This examples show how to change a clock the Faces.HourCounter to the Faces.MinuteCounter during runtime.

    +
    + + +
    + + +
    + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/tutorial-localization-custom-dictionary.html b/public/tutorial-localization-custom-dictionary.html new file mode 100644 index 00000000..3dc5c95d --- /dev/null +++ b/public/tutorial-localization-custom-dictionary.html @@ -0,0 +1,96 @@ + + + + + FlipClock.js :: Tutorial: Localization Custom Dictionary + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    +
    + +

    Localization Custom Dictionary

    + + +

    This examples show how localize the clock using a custom dictionary.

    +
    + + +
    + + +
    + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/tutorial-localization.html b/public/tutorial-localization.html new file mode 100644 index 00000000..8f4d08cf --- /dev/null +++ b/public/tutorial-localization.html @@ -0,0 +1,89 @@ + + + + + FlipClock.js :: Tutorial: Localization + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    +
    + +

    Localization

    + + +

    This examples show how localize the clock using spanish.

    +
    + + +
    + + +
    + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/tutorial-minute-counter-overflow.html b/public/tutorial-minute-counter-overflow.html new file mode 100644 index 00000000..7c97b628 --- /dev/null +++ b/public/tutorial-minute-counter-overflow.html @@ -0,0 +1,96 @@ + + + + + FlipClock.js :: Tutorial: Minute Counter with Overflow + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    +
    + +

    Minute Counter with Overflow

    + + +

    This examples shows how the Faces.MinuteCounter handles adding new digits, aka: overflowing.

    +
    + + +
    + + +
    + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/tutorial-minute-counter-with-buttons.html b/public/tutorial-minute-counter-with-buttons.html new file mode 100644 index 00000000..e1eaef22 --- /dev/null +++ b/public/tutorial-minute-counter-with-buttons.html @@ -0,0 +1,115 @@ + + + + + FlipClock.js :: Tutorial: Minute Counter with Buttons + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    +
    + +

    Minute Counter with Buttons

    + + +

    This is an example of the Faces.MinuteCounter that counts up 5 seconds and stops.

    +
    + +

    + + + + + +
    + + +
    + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/tutorial-minute-counter.html b/public/tutorial-minute-counter.html new file mode 100644 index 00000000..234a578d --- /dev/null +++ b/public/tutorial-minute-counter.html @@ -0,0 +1,88 @@ + + + + + FlipClock.js :: Tutorial: Minute Counter + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    +
    + +

    Minute Counter

    + + +

    This is an example of the Faces.MinuteCounter.

    +
    + + +
    + + +
    + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/tutorial-multiple-instances.html b/public/tutorial-multiple-instances.html new file mode 100644 index 00000000..e87ed7d1 --- /dev/null +++ b/public/tutorial-multiple-instances.html @@ -0,0 +1,107 @@ + + + + + FlipClock.js :: Tutorial: Multiple Instances + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    +
    + +

    Multiple Instances

    + + +

    This examples show how you can use multiple clock instances on the same page.

    +
    +
    +
    + +
    +
    +
    + + +
    + + +
    + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/tutorial-new-years-countdown-without-seconds.html b/public/tutorial-new-years-countdown-without-seconds.html new file mode 100644 index 00000000..9dadfc3f --- /dev/null +++ b/public/tutorial-new-years-countdown-without-seconds.html @@ -0,0 +1,96 @@ + + + + + FlipClock.js :: Tutorial: New Years Countdown (without seconds) + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    +
    + +

    New Years Countdown (without seconds)

    + + +

    This is an example of the Faces.DayCounter that counts down to the next New Year without showing the seconds.

    +
    + + +
    + + +
    + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/tutorial-new-years-countdown.html b/public/tutorial-new-years-countdown.html new file mode 100644 index 00000000..8585712d --- /dev/null +++ b/public/tutorial-new-years-countdown.html @@ -0,0 +1,95 @@ + + + + + FlipClock.js :: Tutorial: New Years Countdown + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    +
    + +

    New Years Countdown

    + + +

    This is an example of the Faces.DayCounter that counts down to the next New Year with the seconds showing.

    +
    + + +
    + + +
    + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/tutorial-new-years-counter-without-seconds.html b/public/tutorial-new-years-counter-without-seconds.html new file mode 100644 index 00000000..cdc0decc --- /dev/null +++ b/public/tutorial-new-years-counter-without-seconds.html @@ -0,0 +1,95 @@ + + + + + FlipClock.js :: Tutorial: New Years Counter (without seconds) + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    +
    + +

    New Years Counter (without seconds)

    + + +

    This is an example of the Faces.DayCounter that counts up from the last New Year without showing the seconds.

    +
    + + +
    + + +
    + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/tutorial-new-years-counter.html b/public/tutorial-new-years-counter.html new file mode 100644 index 00000000..30ef842d --- /dev/null +++ b/public/tutorial-new-years-counter.html @@ -0,0 +1,94 @@ + + + + + FlipClock.js :: Tutorial: New Years Counter + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    +
    + +

    New Years Counter

    + + +

    This is an example of the Faces.DayCounter that counts up from the last New Year with the seconds showing.

    +
    + + +
    + + +
    + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/tutorial-options.html b/public/tutorial-options.html new file mode 100644 index 00000000..1b66dbfe --- /dev/null +++ b/public/tutorial-options.html @@ -0,0 +1,92 @@ + + + + + FlipClock.js :: Tutorial: Options + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    +
    + + +

    Options

    {"comment":"/*\n Create a new FlipClock instance.\n \n @class FlipClock\n @extends DomComponent\n @param {HTMLElement} el - The HTML element used to bind clock DOM node.\n @param {} value - The value that is passed to the clock face.\n @param {object|undefined} attributes - FlipClock.Options passed an object with key/value.\n /","meta":{"filename":"FlipClock.js","lineno":17,"columnno":4,"path":"/Users/justinkimbrell/Github/FlipClock/src/js/Components","code":{},"shortpath":"Components/FlipClock.js"},"description":"

    Create a new FlipClock instance.

    ","kind":"class","name":"FlipClock","augments":["DomComponent"],"params":[{"type":{"names":["HTMLElement"]},"description":"

    The HTML element used to bind clock DOM node.

    ","name":"el"},{"type":{"names":["*"]},"description":"

    The value that is passed to the clock face.

    ","name":"value"},{"type":{"names":["object","undefined"]},"description":"

    FlipClock.Options passed an object with key/value.

    ","name":"attributes"}],"longname":"FlipClock","scope":"global","id":"T000003R000015","s":true,"attribs":"","id":"FlipClock","signature":"(el, value, attributes)","ancestors":[]}

    +
    + + +
    el :string
    +{"type":{"names":["HTMLElement"]},"description":"

    The HTML element used to bind clock DOM node.

    ","name":"el"} + + +
    value :string
    +{"type":{"names":["*"]},"description":"

    The value that is passed to the clock face.

    ","name":"value"} + + +
    attributes :string
    +{"type":{"names":["object","undefined"]},"description":"

    FlipClock.Options passed an object with key/value.

    ","name":"attributes"} + +
    +
    + + +
    + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/tutorial-simple-counter-minimum-digits.html b/public/tutorial-simple-counter-minimum-digits.html new file mode 100644 index 00000000..43da9427 --- /dev/null +++ b/public/tutorial-simple-counter-minimum-digits.html @@ -0,0 +1,88 @@ + + + + + FlipClock.js :: Tutorial: Simple Counter with Minimums Digits + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    +
    + +

    Simple Counter with Minimums Digits

    + + +

    This examples shows a Faces.Counter with a minimum of 6 digits.

    +
    + + +
    + + +
    + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/tutorial-simple-counter.html b/public/tutorial-simple-counter.html new file mode 100644 index 00000000..6a1b873e --- /dev/null +++ b/public/tutorial-simple-counter.html @@ -0,0 +1,121 @@ + + + + + FlipClock.js :: Tutorial: Simple Counter + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    +
    + +

    Simple Counter

    + + +

    This examples shows a Faces.Counter with buttons to increment the clock.

    +
    + + + + + + + + + + + + + + + + +
    + + +
    + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/tutorial-twelve-hour-clock-custom-time.html b/public/tutorial-twelve-hour-clock-custom-time.html new file mode 100644 index 00000000..a1e1f33d --- /dev/null +++ b/public/tutorial-twelve-hour-clock-custom-time.html @@ -0,0 +1,88 @@ + + + + + FlipClock.js :: Tutorial: 12hr Clock with Custom Time + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    +
    + +

    12hr Clock with Custom Time

    + + +

    This examples shows a Faces.TwelveHourClock with a custom time.

    +
    + + +
    + + +
    + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/tutorial-twelve-hour-clock-without-seconds.html b/public/tutorial-twelve-hour-clock-without-seconds.html new file mode 100644 index 00000000..e38923aa --- /dev/null +++ b/public/tutorial-twelve-hour-clock-without-seconds.html @@ -0,0 +1,89 @@ + + + + + FlipClock.js :: Tutorial: 12hr Clock Without Seconds + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    +
    + +

    12hr Clock Without Seconds

    + + +

    This examples shows a Faces.TwelveHourClock without seconds.

    +
    + + +
    + + +
    + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/tutorial-twelve-hour-clock.html b/public/tutorial-twelve-hour-clock.html new file mode 100644 index 00000000..6e30a9b5 --- /dev/null +++ b/public/tutorial-twelve-hour-clock.html @@ -0,0 +1,88 @@ + + + + + FlipClock.js :: Tutorial: 12hr Clock + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    +
    + +

    12hr Clock

    + + +

    This examples shows a Faces.TwelveHourClock without seconds.

    +
    + + +
    + + +
    + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/tutorial-twenty-four-hour-clock-custom-time.html b/public/tutorial-twenty-four-hour-clock-custom-time.html new file mode 100644 index 00000000..044459f6 --- /dev/null +++ b/public/tutorial-twenty-four-hour-clock-custom-time.html @@ -0,0 +1,88 @@ + + + + + FlipClock.js :: Tutorial: 24hr Clock with Custom Time + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    +
    + +

    24hr Clock with Custom Time

    + + +

    This examples shows a Faces.TwentyFourHourClock with a custom time.

    +
    + + +
    + + +
    + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/tutorial-twenty-four-hour-clock-without-seconds.html b/public/tutorial-twenty-four-hour-clock-without-seconds.html new file mode 100644 index 00000000..e8978b74 --- /dev/null +++ b/public/tutorial-twenty-four-hour-clock-without-seconds.html @@ -0,0 +1,89 @@ + + + + + FlipClock.js :: Tutorial: 24hr Clock Without Seconds + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    +
    + +

    24hr Clock Without Seconds

    + + +

    This examples shows a Faces.TwentyFourHourClock without seconds.

    +
    + + +
    + + +
    + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/public/tutorial-twenty-four-hour-clock.html b/public/tutorial-twenty-four-hour-clock.html new file mode 100644 index 00000000..aefc9a53 --- /dev/null +++ b/public/tutorial-twenty-four-hour-clock.html @@ -0,0 +1,88 @@ + + + + + FlipClock.js :: Tutorial: 24hr Clock + + + + + + + + + + + + + + + + + + + + + + + +
    +
    + +
    +
    +
    + +

    24hr Clock

    + + +

    This examples shows a Faces.TwentyFourHourClock.

    +
    + + +
    + + +
    + +
    +
    + +
    + © 2019 Justin Kimbrell - Version 0.10.8 +
    +
    + + + + + \ No newline at end of file diff --git a/rollup.config.js b/rollup.config.js new file mode 100644 index 00000000..d5169d95 --- /dev/null +++ b/rollup.config.js @@ -0,0 +1,160 @@ +import rollup from 'rollup'; +import { exec } from 'child_process'; +import pkg from './package.json'; +import { kebabCase } from 'lodash'; +import scss from 'rollup-plugin-scss'; +import json from 'rollup-plugin-json'; +import babel from 'rollup-plugin-babel'; +import serve from 'rollup-plugin-serve'; +import replace from 'rollup-plugin-replace'; +import progress from 'rollup-plugin-progress'; +import commonjs from 'rollup-plugin-commonjs'; +import { eslint } from 'rollup-plugin-eslint'; +import globals from 'rollup-plugin-node-globals'; +import resolve from 'rollup-plugin-node-resolve'; +import livereload from 'rollup-plugin-livereload'; +import builtins from 'rollup-plugin-node-builtins'; +import rootImport from 'rollup-plugin-root-import'; + +// import postcss from 'rollup-plugin-postcss'; + +// The type of package Rollup should create +const PACKAGE_FORMAT = 'umd'; + +// This is global variable used in UMD packages +const NAMESPACE = 'FlipClock'; + +// The directory of the package source code files +const SRC = `${__dirname}/src/`; + +// The directory to ouput the compiled files +const DIST = `${__dirname}/dist/`; + +// The main.js or entry point of your package +const MAINJS = `${SRC}main.js`; + +// The base filename of the compiled files (no ex) +const FILENAME = kebabCase(pkg.name); + +// The node_modules directory path +const NODE_MODULES = `${__dirname}/node_modules/**`; + +// The options for the serve() plugin +const SERVE_OPTIONS = { + open: true, + verbose: true, + port: 10001, + contentBase: './', + host: 'localhost', + historyApiFallback: 'examples/test.html', +}; + +// The options for the watch plugin +const WATCH_OPTIONS = { + include: `${SRC}**`, + port: 35730 +}; + +// The options for the livereload plugin (undefined or object). +const LIVERELOAD_OPTIONS = { + watch: DIST, + port: 35730 +}; + +// Define the list of output globals +const OUTPUT_GLOBALS = { + // 'lodash': 'lodash' +}; + +// Define an array of external packages to not include in the bundle +const EXTERNAL = [ + // 'lodash' +]; + +// Define the plugins used for the rollup process +const plugins = [ + progress(), + replace({ + 'process.env.SERVE_OPTIONS': JSON.stringify(SERVE_OPTIONS), + 'process.env.LIVERELOAD_OPTIONS': JSON.stringify(LIVERELOAD_OPTIONS), + 'process.env.NODE_ENV': JSON.stringify(process.env.ROLLUP_WATCH == 'true' ? 'development' : 'production') + }), + json(), + rootImport({ + // Will first look in `client/src/*` and then `common/src/*`. + root: SRC, + useEntry: 'prepend', + // If we don't find the file verbatim, try adding these extensions + extensions: ['.js'] + }), + resolve({ + main: true, + jsnext: true, + browser: true, + extensions: [ '.js'] + }), + commonjs({ + include: NODE_MODULES, + namedExports: { + + } + }), + scss({ + output: `${DIST}flipclock.css` + }), + babel({ + exclude: NODE_MODULES + }), + globals(), + builtins(), + eslint() +]; + +// Add the serve/livereload plugins if watch argument has been passed +if(process.env.ROLLUP_WATCH === 'true') { + plugins.push(serve(SERVE_OPTIONS)); + plugins.push(livereload(LIVERELOAD_OPTIONS)); +} + +// Export the config object +const config = [{ + input: MAINJS, + output: { + name: NAMESPACE, + format: PACKAGE_FORMAT, + file: `${DIST}${FILENAME}.js`, + sourcemap: (process.env.ROLLUP_WATCH ? 'inline' : true), + globals: OUTPUT_GLOBALS, + }, + watch: WATCH_OPTIONS, + external: EXTERNAL, + plugins: plugins +}, (process.env.NODE_ENV === 'production' ? { + input: MAINJS, + output: { + name: NAMESPACE, + format: 'es', + file: `${DIST}${FILENAME}.es.js`, + sourcemap: (process.env.ROLLUP_WATCH ? 'inline' : true), + globals: OUTPUT_GLOBALS, + }, + watch: WATCH_OPTIONS, + external: EXTERNAL, + plugins: plugins +} : null)].filter(value => value !== null); + +/* +const watcher = rollup.watch(config); + +watcher.on('event', event => { + if(event.code === 'END') { + exec('npm run docs;', function(error, stdout, stderr) { + if (error) { + console.log(error.code); + } + }); + } +}); +*/ + +export default config; diff --git a/rollup.uglify.js b/rollup.uglify.js new file mode 100644 index 00000000..973ff1ea --- /dev/null +++ b/rollup.uglify.js @@ -0,0 +1,14 @@ +import { each } from 'lodash'; +import config from './rollup.config'; +import uglify from 'rollup-plugin-uglify-es'; + +const plugin = uglify({ + keep_fnames: true +}); + +each(config, (config, i) => { + config.output.file = config.output.file.replace(/\.js$/, '.min.js'); + config.plugins.push(plugin); +}); + +export default config; diff --git a/src/flipclock/css/flipclock.css b/src/flipclock/css/flipclock.css deleted file mode 100644 index 2914ce08..00000000 --- a/src/flipclock/css/flipclock.css +++ /dev/null @@ -1,431 +0,0 @@ -/* Get the bourbon mixin from http://bourbon.io */ -/* Reset */ -.flip-clock-wrapper * { - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - -ms-box-sizing: border-box; - -o-box-sizing: border-box; - box-sizing: border-box; - -webkit-backface-visibility: hidden; - -moz-backface-visibility: hidden; - -ms-backface-visibility: hidden; - -o-backface-visibility: hidden; - backface-visibility: hidden; -} - -.flip-clock-wrapper a { - cursor: pointer; - text-decoration: none; - color: #ccc; } - -.flip-clock-wrapper a:hover { - color: #fff; } - -.flip-clock-wrapper ul { - list-style: none; } - -.flip-clock-wrapper.clearfix:before, -.flip-clock-wrapper.clearfix:after { - content: " "; - display: table; } - -.flip-clock-wrapper.clearfix:after { - clear: both; } - -.flip-clock-wrapper.clearfix { - *zoom: 1; } - -/* Main */ -.flip-clock-wrapper { - font: normal 11px "Helvetica Neue", Helvetica, sans-serif; - -webkit-user-select: none; } - -.flip-clock-meridium { - background: none !important; - box-shadow: 0 0 0 !important; - font-size: 36px !important; } - -.flip-clock-meridium a { color: #313333; } - -.flip-clock-wrapper { - text-align: center; - position: relative; - width: 100%; - margin: 1em; -} - -.flip-clock-wrapper:before, -.flip-clock-wrapper:after { - content: " "; /* 1 */ - display: table; /* 2 */ -} -.flip-clock-wrapper:after { - clear: both; -} - -/* Skeleton */ -.flip-clock-wrapper ul { - position: relative; - float: left; - margin: 5px; - width: 60px; - height: 90px; - font-size: 80px; - font-weight: bold; - line-height: 87px; - border-radius: 6px; - background: #000; -} - -.flip-clock-wrapper ul li { - z-index: 1; - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - line-height: 87px; - text-decoration: none !important; -} - -.flip-clock-wrapper ul li:first-child { - z-index: 2; } - -.flip-clock-wrapper ul li a { - display: block; - height: 100%; - -webkit-perspective: 200px; - -moz-perspective: 200px; - perspective: 200px; - margin: 0 !important; - overflow: visible !important; - cursor: default !important; } - -.flip-clock-wrapper ul li a div { - z-index: 1; - position: absolute; - left: 0; - width: 100%; - height: 50%; - font-size: 80px; - overflow: hidden; - outline: 1px solid transparent; } - -.flip-clock-wrapper ul li a div .shadow { - position: absolute; - width: 100%; - height: 100%; - z-index: 2; } - -.flip-clock-wrapper ul li a div.up { - -webkit-transform-origin: 50% 100%; - -moz-transform-origin: 50% 100%; - -ms-transform-origin: 50% 100%; - -o-transform-origin: 50% 100%; - transform-origin: 50% 100%; - top: 0; } - -.flip-clock-wrapper ul li a div.up:after { - content: ""; - position: absolute; - top: 44px; - left: 0; - z-index: 5; - width: 100%; - height: 3px; - background-color: #000; - background-color: rgba(0, 0, 0, 0.4); } - -.flip-clock-wrapper ul li a div.down { - -webkit-transform-origin: 50% 0; - -moz-transform-origin: 50% 0; - -ms-transform-origin: 50% 0; - -o-transform-origin: 50% 0; - transform-origin: 50% 0; - bottom: 0; - border-bottom-left-radius: 6px; - border-bottom-right-radius: 6px; -} - -.flip-clock-wrapper ul li a div div.inn { - position: absolute; - left: 0; - z-index: 1; - width: 100%; - height: 200%; - color: #ccc; - text-shadow: 0 1px 2px #000; - text-align: center; - background-color: #333; - border-radius: 6px; - font-size: 70px; } - -.flip-clock-wrapper ul li a div.up div.inn { - top: 0; } - -.flip-clock-wrapper ul li a div.down div.inn { - bottom: 0; } - -/* PLAY */ -.flip-clock-wrapper ul.play li.flip-clock-before { - z-index: 3; } - -.flip-clock-wrapper .flip { box-shadow: 0 2px 5px rgba(0, 0, 0, 0.7); } - -.flip-clock-wrapper ul.play li.flip-clock-active { - -webkit-animation: asd 0.5s 0.5s linear both; - -moz-animation: asd 0.5s 0.5s linear both; - animation: asd 0.5s 0.5s linear both; - z-index: 5; } - -.flip-clock-divider { - float: left; - display: inline-block; - position: relative; - width: 20px; - height: 100px; } - -.flip-clock-divider:first-child { - width: 0; } - -.flip-clock-dot { - display: block; - background: #323434; - width: 10px; - height: 10px; - position: absolute; - border-radius: 50%; - box-shadow: 0 0 5px rgba(0, 0, 0, 0.5); - left: 5px; } - -.flip-clock-divider .flip-clock-label { - position: absolute; - top: -1.5em; - right: -86px; - color: black; - text-shadow: none; } - -.flip-clock-divider.minutes .flip-clock-label { - right: -88px; } - -.flip-clock-divider.seconds .flip-clock-label { - right: -91px; } - -.flip-clock-dot.top { - top: 30px; } - -.flip-clock-dot.bottom { - bottom: 30px; } - -@-webkit-keyframes asd { - 0% { - z-index: 2; } - - 20% { - z-index: 4; } - - 100% { - z-index: 4; } } - -@-moz-keyframes asd { - 0% { - z-index: 2; } - - 20% { - z-index: 4; } - - 100% { - z-index: 4; } } - -@-o-keyframes asd { - 0% { - z-index: 2; } - - 20% { - z-index: 4; } - - 100% { - z-index: 4; } } - -@keyframes asd { - 0% { - z-index: 2; } - - 20% { - z-index: 4; } - - 100% { - z-index: 4; } } - -.flip-clock-wrapper ul.play li.flip-clock-active .down { - z-index: 2; - -webkit-animation: turn 0.5s 0.5s linear both; - -moz-animation: turn 0.5s 0.5s linear both; - animation: turn 0.5s 0.5s linear both; } - -@-webkit-keyframes turn { - 0% { - -webkit-transform: rotateX(90deg); } - - 100% { - -webkit-transform: rotateX(0deg); } } - -@-moz-keyframes turn { - 0% { - -moz-transform: rotateX(90deg); } - - 100% { - -moz-transform: rotateX(0deg); } } - -@-o-keyframes turn { - 0% { - -o-transform: rotateX(90deg); } - - 100% { - -o-transform: rotateX(0deg); } } - -@keyframes turn { - 0% { - transform: rotateX(90deg); } - - 100% { - transform: rotateX(0deg); } } - -.flip-clock-wrapper ul.play li.flip-clock-before .up { - z-index: 2; - -webkit-animation: turn2 0.5s linear both; - -moz-animation: turn2 0.5s linear both; - animation: turn2 0.5s linear both; } - -@-webkit-keyframes turn2 { - 0% { - -webkit-transform: rotateX(0deg); } - - 100% { - -webkit-transform: rotateX(-90deg); } } - -@-moz-keyframes turn2 { - 0% { - -moz-transform: rotateX(0deg); } - - 100% { - -moz-transform: rotateX(-90deg); } } - -@-o-keyframes turn2 { - 0% { - -o-transform: rotateX(0deg); } - - 100% { - -o-transform: rotateX(-90deg); } } - -@keyframes turn2 { - 0% { - transform: rotateX(0deg); } - - 100% { - transform: rotateX(-90deg); } } - -.flip-clock-wrapper ul li.flip-clock-active { - z-index: 3; } - -/* SHADOW */ -.flip-clock-wrapper ul.play li.flip-clock-before .up .shadow { - background: -moz-linear-gradient(top, rgba(0, 0, 0, 0.1) 0%, black 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(0, 0, 0, 0.1)), color-stop(100%, black)); - background: linear, top, rgba(0, 0, 0, 0.1) 0%, black 100%; - background: -o-linear-gradient(top, rgba(0, 0, 0, 0.1) 0%, black 100%); - background: -ms-linear-gradient(top, rgba(0, 0, 0, 0.1) 0%, black 100%); - background: linear, to bottom, rgba(0, 0, 0, 0.1) 0%, black 100%; - -webkit-animation: show 0.5s linear both; - -moz-animation: show 0.5s linear both; - animation: show 0.5s linear both; } - -.flip-clock-wrapper ul.play li.flip-clock-active .up .shadow { - background: -moz-linear-gradient(top, rgba(0, 0, 0, 0.1) 0%, black 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(0, 0, 0, 0.1)), color-stop(100%, black)); - background: linear, top, rgba(0, 0, 0, 0.1) 0%, black 100%; - background: -o-linear-gradient(top, rgba(0, 0, 0, 0.1) 0%, black 100%); - background: -ms-linear-gradient(top, rgba(0, 0, 0, 0.1) 0%, black 100%); - background: linear, to bottom, rgba(0, 0, 0, 0.1) 0%, black 100%; - -webkit-animation: hide 0.5s 0.3s linear both; - -moz-animation: hide 0.5s 0.3s linear both; - animation: hide 0.5s 0.3s linear both; } - -/*DOWN*/ -.flip-clock-wrapper ul.play li.flip-clock-before .down .shadow { - background: -moz-linear-gradient(top, black 0%, rgba(0, 0, 0, 0.1) 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, black), color-stop(100%, rgba(0, 0, 0, 0.1))); - background: linear, top, black 0%, rgba(0, 0, 0, 0.1) 100%; - background: -o-linear-gradient(top, black 0%, rgba(0, 0, 0, 0.1) 100%); - background: -ms-linear-gradient(top, black 0%, rgba(0, 0, 0, 0.1) 100%); - background: linear, to bottom, black 0%, rgba(0, 0, 0, 0.1) 100%; - -webkit-animation: show 0.5s linear both; - -moz-animation: show 0.5s linear both; - animation: show 0.5s linear both; } - -.flip-clock-wrapper ul.play li.flip-clock-active .down .shadow { - background: -moz-linear-gradient(top, black 0%, rgba(0, 0, 0, 0.1) 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, black), color-stop(100%, rgba(0, 0, 0, 0.1))); - background: linear, top, black 0%, rgba(0, 0, 0, 0.1) 100%; - background: -o-linear-gradient(top, black 0%, rgba(0, 0, 0, 0.1) 100%); - background: -ms-linear-gradient(top, black 0%, rgba(0, 0, 0, 0.1) 100%); - background: linear, to bottom, black 0%, rgba(0, 0, 0, 0.1) 100%; - -webkit-animation: hide 0.5s 0.3s linear both; - -moz-animation: hide 0.5s 0.3s linear both; - animation: hide 0.5s 0.2s linear both; } - -@-webkit-keyframes show { - 0% { - opacity: 0; } - - 100% { - opacity: 1; } } - -@-moz-keyframes show { - 0% { - opacity: 0; } - - 100% { - opacity: 1; } } - -@-o-keyframes show { - 0% { - opacity: 0; } - - 100% { - opacity: 1; } } - -@keyframes show { - 0% { - opacity: 0; } - - 100% { - opacity: 1; } } - -@-webkit-keyframes hide { - 0% { - opacity: 1; } - - 100% { - opacity: 0; } } - -@-moz-keyframes hide { - 0% { - opacity: 1; } - - 100% { - opacity: 0; } } - -@-o-keyframes hide { - 0% { - opacity: 1; } - - 100% { - opacity: 0; } } - -@keyframes hide { - 0% { - opacity: 1; } - - 100% { - opacity: 0; } } diff --git a/src/flipclock/css/flipclock.scss b/src/flipclock/css/flipclock.scss deleted file mode 100644 index ddb89a55..00000000 --- a/src/flipclock/css/flipclock.scss +++ /dev/null @@ -1,315 +0,0 @@ -@import 'bourbon/bourbon'; -/* Get the bourbon mixin from http://bourbon.io */ - -/* Reset */ -.flip-clock-wrapper * { - margin: 0; - padding: 0; - line-height: normal; - @include box-sizing(border-box); -} - -.flip-clock-wrapper a { - cursor: pointer; - text-decoration: none; - color: #ccc; -} - -.flip-clock-wrapper a:hover { - color: #fff; -} - -.flip-clock-wrapper ul { - list-style: none -} - -.flip-clock-wrapper.clearfix:before, -.flip-clock-wrapper.clearfix:after { - content: " "; - display: table; -} - -.flip-clock-wrapper.clearfix:after { - clear: both; -} - -.flip-clock-wrapper.clearfix { - *zoom: 1; -} - -/* Main */ - -.flip-clock-wrapper { - min-height: 100%; - font: normal 11px "Helvetica Neue", Helvetica, sans-serif; - -webkit-user-select: none; -} - -.flip-clock-meridium { - background: none; - box-shadow: 0 0 0 !important; - font-size: 36px !important; - color: rgb(49, 51, 51); - bottom: 10px; -} - - -.flip-clock-wrapper { - text-align: center; - position: relative; - width: 100%; - margin: 1em; -} - -/* Skeleton */ - -.flip-clock-wrapper ul { - position: relative; - float: left; - margin: 5px; - width: 60px; - height: 90px; - font-size: 80px; - font-weight: bold; - line-height: 87px; - border-radius: 6px_prefixed - ; - box-shadow: 0 2px 5px rgba(0, 0, 0, .7); -} - -.flip-clock-wrapper ul li { - z-index: 1; - position: absolute; - left: 0; - top: 0; - width: 100%; - height: 100%; - line-height: 87px; -} - -.flip-clock-wrapper ul li:first-child { - z-index: 2; -} - -.flip-clock-wrapper ul li a { - display: block; - height: 100%; - @include perspective(200px); - margin: 0 !important; - overflow: visible !important; -} - -.flip-clock-wrapper ul li a div { - z-index: 1; - position: absolute; - left: 0; - width: 100%; - height: 50%; - overflow: hidden; -} - -.flip-clock-wrapper ul li a div .shadow { - position: absolute; - width: 100%; - height: 100%; - z-index: 2; -} - -.flip-clock-wrapper ul li a div.up { - @include transform-origin(50% 100%); - top: 0; -} - -.flip-clock-wrapper ul li a div.up:after { - content: ""; - position:absolute; - top:44px; - left:0; - z-index: 5; - width: 100%; - height: 3px; - background-color: #000; - background-color: rgba(0,0,0,.4); -} - -.flip-clock-wrapper ul li a div.down { - @include transform-origin(50% 0); - bottom: 0; -} - -.flip-clock-wrapper ul li a div div.inn { - position: absolute; - left: 0; - z-index: 1; - width: 100%; - height: 200%; - color: #ccc; - text-shadow: 0 1px 2px #000; - text-align: center; - background-color: #333; - border-radius: 6px; - font-size: 70px; -} - -.flip-clock-wrapper ul li a div.up div.inn { - top: 0; - -} - -.flip-clock-wrapper ul li a div.down div.inn { - bottom: 0; -} - -/* PLAY */ - -.flip-clock-wrapper ul.play li.flip-clock-before { - z-index: 3; -} - -.flip-clock-wrapper ul.play li.flip-clock-active { - @include animation(asd .5s .5s linear both); - z-index: 2; -} - -.flip-clock-divider { - float: left; - display: inline-block; - position: relative; - width: 20px; - height: 100px; -} - -.flip-clock-divider:first-child { width: 0; } - -.flip-clock-dot { - display: block; - background: rgb(50, 52, 52); - width: 10px; - height: 10px; - position: absolute; - border-radius: 50%; - box-shadow: 0 0 5px rgba(0, 0, 0, .5); -} - -.flip-clock-divider .flip-clock-label { - position: absolute; - top: -1.5em; - right: -86px; - color: black; - text-shadow: none; -} - -.flip-clock-divider.minutes .flip-clock-label { right: -88px; } -.flip-clock-divider.seconds .flip-clock-label { right: -91px; } - -.flip-clock-dot.top { - top: 30px; -} - -.flip-clock-dot.bottom { - bottom: 30px; -} - -@include keyframes(asd) { - 0% { - z-index:2; - } - 20% { - z-index:4; - } - 100% { - z-index:4; - } -} - -.flip-clock-wrapper ul.play li.flip-clock-active .down { - z-index: 2; - @include animation(turn .5s .5s linear both); -} - -@include keyframes(turn) { - 0% { - @include transform(rotateX(90deg)); - } - 100% { - @include transform(rotateX(0deg)); - } -} - -.flip-clock-wrapper ul.play li.flip-clock-before .up { - z-index: 2; - @include animation(turn2 .5s linear both); -} - -@include keyframes(turn2) { - 0% { - @include transform(rotateX(0deg)); - } - 100% { - @include transform(rotateX(-90deg)); - } -} - -.flip-clock-wrapper ul li.flip-clock-active { z-index: 3; } - -/* SHADOW */ - -.flip-clock-wrapper ul.play li.flip-clock-before .up .shadow { - background: -moz-linear-gradient(top, rgba(0, 0, 0, .1) 0%, rgba(0, 0, 0, 1) 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(0, 0, 0, .1)), color-stop(100%, rgba(0, 0, 0, 1))); - background: linear-gradient(top, rgba(0, 0, 0, .1) 0%, rgba(0, 0, 0, 1) 100%); - background: -o-linear-gradient(top, rgba(0, 0, 0, .1) 0%, rgba(0, 0, 0, 1) 100%); - background: -ms-linear-gradient(top, rgba(0, 0, 0, .1) 0%, rgba(0, 0, 0, 1) 100%); - background: linear-gradient(to bottom, rgba(0, 0, 0, .1) 0%, rgba(0, 0, 0, 1) 100%); - @include animation(show .5s linear both); -} - -.flip-clock-wrapper ul.play li.flip-clock-active .up .shadow { - background: -moz-linear-gradient(top, rgba(0, 0, 0, .1) 0%, rgba(0, 0, 0, 1) 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(0, 0, 0, .1)), color-stop(100%, rgba(0, 0, 0, 1))); - background: linear-gradient(top, rgba(0, 0, 0, .1) 0%, rgba(0, 0, 0, 1) 100%); - background: -o-linear-gradient(top, rgba(0, 0, 0, .1) 0%, rgba(0, 0, 0, 1) 100%); - background: -ms-linear-gradient(top, rgba(0, 0, 0, .1) 0%, rgba(0, 0, 0, 1) 100%); - background: linear-gradient(to bottom, rgba(0, 0, 0, .1) 0%, rgba(0, 0, 0, 1) 100%); - @include animation(hide .5s .3s linear both); -} - -/*DOWN*/ - -.flip-clock-wrapper ul.play li.flip-clock-before .down .shadow { - background: -moz-linear-gradient(top, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, .1) 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(0, 0, 0, 1)), color-stop(100%, rgba(0, 0, 0, .1))); - background: linear-gradient(top, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, .1) 100%); - background: -o-linear-gradient(top, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, .1) 100%); - background: -ms-linear-gradient(top, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, .1) 100%); - background: linear-gradient(to bottom, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, .1) 100%); - @include animation(show .5s linear both); -} - -.flip-clock-wrapper ul.play li.flip-clock-active .down .shadow { - background: -moz-linear-gradient(top, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, .1) 100%); - background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(0, 0, 0, 1)), color-stop(100%, rgba(0, 0, 0, .1))); - background: linear-gradient(top, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, .1) 100%); - background: -o-linear-gradient(top, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, .1) 100%); - background: -ms-linear-gradient(top, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, .1) 100%); - background: linear-gradient(to bottom, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, .1) 100%); - @include animation(hide .5s .3s linear both); -} - -@include keyframes(show) { - 0% { - opacity: 0; - } - 100% { - opacity: 1; - } -} - -@include keyframes(hide) { - 0% { - opacity: 1; - } - 100% { - opacity: 0; - } -} \ No newline at end of file diff --git a/src/flipclock/js/faces/counter.js b/src/flipclock/js/faces/counter.js deleted file mode 100644 index aea72886..00000000 --- a/src/flipclock/js/faces/counter.js +++ /dev/null @@ -1,119 +0,0 @@ -(function($) { - - /** - * Counter Clock Face - * - * This class will generate a generice flip counter. The timer has been - * disabled. clock.increment() and clock.decrement() have been added. - * - * @param object The parent FlipClock.Factory object - * @param object An object of properties to override the default - */ - - FlipClock.CounterFace = FlipClock.Face.extend({ - - /** - * Tells the counter clock face if it should auto-increment - */ - - shouldAutoIncrement: false, - - /** - * Constructor - * - * @param object The parent FlipClock.Factory object - * @param object An object of properties to override the default - */ - - constructor: function(factory, options) { - - if(typeof options != "object") { - options = {}; - } - - factory.autoStart = options.autoStart ? true : false; - - if(options.autoStart) { - this.shouldAutoIncrement = true; - } - - factory.increment = function() { - factory.countdown = false; - factory.setTime(factory.getTime().getTimeSeconds() + 1); - }; - - factory.decrement = function() { - factory.countdown = true; - var time = factory.getTime().getTimeSeconds(); - if(time > 0) { - factory.setTime(time - 1); - } - }; - - factory.setValue = function(digits) { - factory.setTime(digits); - }; - - factory.setCounter = function(digits) { - factory.setTime(digits); - }; - - this.base(factory, options); - }, - - /** - * Build the clock face - */ - - build: function() { - var t = this; - var children = this.factory.$el.find('ul'); - var time = this.factory.getTime().digitize([this.factory.getTime().time]); - - if(time.length > children.length) { - $.each(time, function(i, digit) { - var list = t.createList(digit); - - list.select(digit); - }); - - } - - $.each(this.lists, function(i, list) { - list.play(); - }); - - this.base(); - }, - - /** - * Flip the clock face - */ - - flip: function(time, doNotAddPlayClass) { - if(this.shouldAutoIncrement) { - this.autoIncrement(); - } - - if(!time) { - time = this.factory.getTime().digitize([this.factory.getTime().time]); - } - - this.base(time, doNotAddPlayClass); - }, - - /** - * Reset the clock face - */ - - reset: function() { - this.factory.time = new FlipClock.Time( - this.factory, - this.factory.original ? Math.round(this.factory.original) : 0 - ); - - this.flip(); - } - }); - -}(jQuery)); \ No newline at end of file diff --git a/src/flipclock/js/faces/dailycounter.js b/src/flipclock/js/faces/dailycounter.js deleted file mode 100644 index 11395670..00000000 --- a/src/flipclock/js/faces/dailycounter.js +++ /dev/null @@ -1,78 +0,0 @@ -(function($) { - - /** - * Daily Counter Clock Face - * - * This class will generate a daily counter for FlipClock.js. A - * daily counter will track days, hours, minutes, and seconds. If - * the number of available digits is exceeded in the count, a new - * digit will be created. - * - * @param object The parent FlipClock.Factory object - * @param object An object of properties to override the default - */ - - FlipClock.DailyCounterFace = FlipClock.Face.extend({ - - showSeconds: true, - - /** - * Constructor - * - * @param object The parent FlipClock.Factory object - * @param object An object of properties to override the default - */ - - constructor: function(factory, options) { - this.base(factory, options); - }, - - /** - * Build the clock face - */ - - build: function(time) { - var t = this; - var children = this.factory.$el.find('ul'); - var offset = 0; - - time = time ? time : this.factory.time.getDayCounter(this.showSeconds); - - if(time.length > children.length) { - $.each(time, function(i, digit) { - t.createList(digit); - }); - } - - if(this.showSeconds) { - $(this.createDivider('Seconds')).insertBefore(this.lists[this.lists.length - 2].$el); - } - else - { - offset = 2; - } - - $(this.createDivider('Minutes')).insertBefore(this.lists[this.lists.length - 4 + offset].$el); - $(this.createDivider('Hours')).insertBefore(this.lists[this.lists.length - 6 + offset].$el); - $(this.createDivider('Days', true)).insertBefore(this.lists[0].$el); - - this.base(); - }, - - /** - * Flip the clock face - */ - - flip: function(time, doNotAddPlayClass) { - if(!time) { - time = this.factory.time.getDayCounter(this.showSeconds); - } - - this.autoIncrement(); - - this.base(time, doNotAddPlayClass); - } - - }); - -}(jQuery)); \ No newline at end of file diff --git a/src/flipclock/js/faces/hourlycounter.js b/src/flipclock/js/faces/hourlycounter.js deleted file mode 100644 index b348b8f1..00000000 --- a/src/flipclock/js/faces/hourlycounter.js +++ /dev/null @@ -1,82 +0,0 @@ -(function($) { - - /** - * Hourly Counter Clock Face - * - * This class will generate an hourly counter for FlipClock.js. An - * hour counter will track hours, minutes, and seconds. If number of - * available digits is exceeded in the count, a new digit will be - * created. - * - * @param object The parent FlipClock.Factory object - * @param object An object of properties to override the default - */ - - FlipClock.HourlyCounterFace = FlipClock.Face.extend({ - - // clearExcessDigits: true, - - /** - * Constructor - * - * @param object The parent FlipClock.Factory object - * @param object An object of properties to override the default - */ - - constructor: function(factory, options) { - this.base(factory, options); - }, - - /** - * Build the clock face - */ - - build: function(excludeHours, time) { - var t = this; - var children = this.factory.$el.find('ul'); - - time = time ? time : this.factory.time.getHourCounter(); - - if(time.length > children.length) { - $.each(time, function(i, digit) { - t.createList(digit); - }); - } - - $(this.createDivider('Seconds')).insertBefore(this.lists[this.lists.length - 2].$el); - $(this.createDivider('Minutes')).insertBefore(this.lists[this.lists.length - 4].$el); - - if(!excludeHours) { - $(this.createDivider('Hours', true)).insertBefore(this.lists[0].$el); - } - - this.base(); - }, - - /** - * Flip the clock face - */ - - flip: function(time, doNotAddPlayClass) { - if(!time) { - time = this.factory.time.getHourCounter(); - } - - this.autoIncrement(); - - this.base(time, doNotAddPlayClass); - }, - - /** - * Append a newly created list to the clock - */ - - appendDigitToClock: function(obj) { - this.base(obj); - - this.dividers[0].insertAfter(this.dividers[0].next()); - } - - }); - -}(jQuery)); \ No newline at end of file diff --git a/src/flipclock/js/faces/minutecounter.js b/src/flipclock/js/faces/minutecounter.js deleted file mode 100644 index ba14684f..00000000 --- a/src/flipclock/js/faces/minutecounter.js +++ /dev/null @@ -1,51 +0,0 @@ -(function($) { - - /** - * Minute Counter Clock Face - * - * This class will generate a minute counter for FlipClock.js. A - * minute counter will track minutes and seconds. If an hour is - * reached, the counter will reset back to 0. (4 digits max) - * - * @param object The parent FlipClock.Factory object - * @param object An object of properties to override the default - */ - - FlipClock.MinuteCounterFace = FlipClock.HourlyCounterFace.extend({ - - clearExcessDigits: false, - - /** - * Constructor - * - * @param object The parent FlipClock.Factory object - * @param object An object of properties to override the default - */ - - constructor: function(factory, options) { - this.base(factory, options); - }, - - /** - * Build the clock face - */ - - build: function() { - this.base(true, this.factory.time.getMinuteCounter()); - }, - - /** - * Flip the clock face - */ - - flip: function(time, doNotAddPlayClass) { - if(!time) { - time = this.factory.time.getMinuteCounter(); - } - - this.base(time, doNotAddPlayClass); - } - - }); - -}(jQuery)); \ No newline at end of file diff --git a/src/flipclock/js/faces/twelvehourclock.js b/src/flipclock/js/faces/twelvehourclock.js deleted file mode 100644 index 9a5c260d..00000000 --- a/src/flipclock/js/faces/twelvehourclock.js +++ /dev/null @@ -1,94 +0,0 @@ -(function($) { - - /** - * Twelve Hour Clock Face - * - * This class will generate a twelve hour clock for FlipClock.js - * - * @param object The parent FlipClock.Factory object - * @param object An object of properties to override the default - */ - - FlipClock.TwelveHourClockFace = FlipClock.TwentyFourHourClockFace.extend({ - - /** - * The meridium jQuery DOM object - */ - - meridium: false, - - /** - * The meridium text as string for easy access - */ - - meridiumText: 'AM', - - /** - * Build the clock face - * - * @param object Pass the time that should be used to display on the clock. - */ - - build: function() { - var t = this; - - var time = this.factory.time.getTime(false, this.showSeconds); - - this.base(time); - this.meridiumText = this.getMeridium(); - this.meridium = $([ - '' - ].join('')); - - this.meridium.insertAfter(this.lists[this.lists.length-1].$el); - }, - - /** - * Flip the clock face - */ - - flip: function(time, doNotAddPlayClass) { - if(this.meridiumText != this.getMeridium()) { - this.meridiumText = this.getMeridium(); - this.meridium.find('a').html(this.meridiumText); - } - this.base(this.factory.time.getTime(false, this.showSeconds), doNotAddPlayClass); - }, - - /** - * Get the current meridium - * - * @return string Returns the meridium (AM|PM) - */ - - getMeridium: function() { - return new Date().getHours() >= 12 ? 'PM' : 'AM'; - }, - - /** - * Is it currently in the post-medirium? - * - * @return bool Returns true or false - */ - - isPM: function() { - return this.getMeridium() == 'PM' ? true : false; - }, - - /** - * Is it currently before the post-medirium? - * - * @return bool Returns true or false - */ - - isAM: function() { - return this.getMeridium() == 'AM' ? true : false; - } - - }); - -}(jQuery)); \ No newline at end of file diff --git a/src/flipclock/js/faces/twentyfourhourclock.js b/src/flipclock/js/faces/twentyfourhourclock.js deleted file mode 100644 index 29090cad..00000000 --- a/src/flipclock/js/faces/twentyfourhourclock.js +++ /dev/null @@ -1,72 +0,0 @@ -(function($) { - - /** - * Twenty-Four Hour Clock Face - * - * This class will generate a twenty-four our clock for FlipClock.js - * - * @param object The parent FlipClock.Factory object - * @param object An object of properties to override the default - */ - - FlipClock.TwentyFourHourClockFace = FlipClock.Face.extend({ - - /** - * Constructor - * - * @param object The parent FlipClock.Factory object - * @param object An object of properties to override the default - */ - - constructor: function(factory, options) { - this.base(factory, options); - }, - - /** - * Build the clock face - * - * @param object Pass the time that should be used to display on the clock. - */ - - build: function(time) { - var t = this; - var children = this.factory.$el.find('ul'); - - if(!this.factory.time.time) { - this.factory.original = new Date(); - - this.factory.time = new FlipClock.Time(this.factory, this.factory.original); - } - - var time = time ? time : this.factory.time.getMilitaryTime(false, this.showSeconds); - - if(time.length > children.length) { - $.each(time, function(i, digit) { - t.createList(digit); - }); - } - - this.createDivider(); - this.createDivider(); - - $(this.dividers[0]).insertBefore(this.lists[this.lists.length - 2].$el); - $(this.dividers[1]).insertBefore(this.lists[this.lists.length - 4].$el); - - this.base(); - }, - - /** - * Flip the clock face - */ - - flip: function(time, doNotAddPlayClass) { - this.autoIncrement(); - - time = time ? time : this.factory.time.getMilitaryTime(false, this.showSeconds); - - this.base(time, doNotAddPlayClass); - } - - }); - -}(jQuery)); \ No newline at end of file diff --git a/src/flipclock/js/lang/ar-ar.js b/src/flipclock/js/lang/ar-ar.js deleted file mode 100644 index 978816d8..00000000 --- a/src/flipclock/js/lang/ar-ar.js +++ /dev/null @@ -1,27 +0,0 @@ -(function($) { - - /** - * FlipClock Arabic Language Pack - * - * This class will be used to translate tokens into the Arabic language. - * - */ - - FlipClock.Lang.Arabic = { - - 'years' : 'سنوات', - 'months' : 'شهور', - 'days' : 'أيام', - 'hours' : 'ساعات', - 'minutes' : 'دقائق', - 'seconds' : 'ثواني' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['ar'] = FlipClock.Lang.Arabic; - FlipClock.Lang['ar-ar'] = FlipClock.Lang.Arabic; - FlipClock.Lang['arabic'] = FlipClock.Lang.Arabic; - -}(jQuery)); \ No newline at end of file diff --git a/src/flipclock/js/lang/cs-cz.js b/src/flipclock/js/lang/cs-cz.js deleted file mode 100644 index e9248608..00000000 --- a/src/flipclock/js/lang/cs-cz.js +++ /dev/null @@ -1,27 +0,0 @@ -(function($) { - - /** - * FlipClock Czech Language Pack - * - * This class will used to translate tokens into the Czech language. - * - */ - - FlipClock.Lang.Czech = { - - 'years' : 'Roky', - 'months' : 'Měsíce', - 'days' : 'Dny', - 'hours' : 'Hodiny', - 'minutes' : 'Minuty', - 'seconds' : 'Sekundy' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['cs'] = FlipClock.Lang.Czech; - FlipClock.Lang['cs-cz'] = FlipClock.Lang.Czech; - FlipClock.Lang['czech'] = FlipClock.Lang.Czech; - -}(jQuery)); \ No newline at end of file diff --git a/src/flipclock/js/lang/cz-cs.js b/src/flipclock/js/lang/cz-cs.js deleted file mode 100644 index 70ccb05f..00000000 --- a/src/flipclock/js/lang/cz-cs.js +++ /dev/null @@ -1,27 +0,0 @@ -(function($) { - - /** - * FlipClock Czech Language Pack - * - * This class will used to translate tokens into the Czech language. - * - */ - - FlipClock.Lang.Czech = { - - 'years' : 'Roky', - 'months' : 'Měsíce', - 'days' : 'Dny', - 'hours' : 'Hodiny', - 'minutes' : 'Minuty', - 'seconds' : 'Sekundy' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['cz'] = FlipClock.Lang.Czech; - FlipClock.Lang['cz-cs'] = FlipClock.Lang.Czech; - FlipClock.Lang['czech'] = FlipClock.Lang.Czech; - -}(jQuery)); diff --git a/src/flipclock/js/lang/da-dk.js b/src/flipclock/js/lang/da-dk.js deleted file mode 100644 index 80ae074f..00000000 --- a/src/flipclock/js/lang/da-dk.js +++ /dev/null @@ -1,27 +0,0 @@ -(function($) { - - /** - * FlipClock Danish Language Pack - * - * This class will used to translate tokens into the Danish language. - * - */ - - FlipClock.Lang.Danish = { - - 'years' : 'År', - 'months' : 'Måneder', - 'days' : 'Dage', - 'hours' : 'Timer', - 'minutes' : 'Minutter', - 'seconds' : 'Sekunder' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['da'] = FlipClock.Lang.Danish; - FlipClock.Lang['da-dk'] = FlipClock.Lang.Danish; - FlipClock.Lang['danish'] = FlipClock.Lang.Danish; - -}(jQuery)); \ No newline at end of file diff --git a/src/flipclock/js/lang/de-de.js b/src/flipclock/js/lang/de-de.js deleted file mode 100644 index daf35ccf..00000000 --- a/src/flipclock/js/lang/de-de.js +++ /dev/null @@ -1,27 +0,0 @@ -(function($) { - - /** - * FlipClock German Language Pack - * - * This class will used to translate tokens into the German language. - * - */ - - FlipClock.Lang.German = { - - 'years' : 'Jahre', - 'months' : 'Monate', - 'days' : 'Tage', - 'hours' : 'Stunden', - 'minutes' : 'Minuten', - 'seconds' : 'Sekunden' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['de'] = FlipClock.Lang.German; - FlipClock.Lang['de-de'] = FlipClock.Lang.German; - FlipClock.Lang['german'] = FlipClock.Lang.German; - -}(jQuery)); \ No newline at end of file diff --git a/src/flipclock/js/lang/en-us.js b/src/flipclock/js/lang/en-us.js deleted file mode 100644 index 5e2b3ace..00000000 --- a/src/flipclock/js/lang/en-us.js +++ /dev/null @@ -1,27 +0,0 @@ -(function($) { - - /** - * FlipClock English Language Pack - * - * This class will used to translate tokens into the English language. - * - */ - - FlipClock.Lang.English = { - - 'years' : 'Years', - 'months' : 'Months', - 'days' : 'Days', - 'hours' : 'Hours', - 'minutes' : 'Minutes', - 'seconds' : 'Seconds' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['en'] = FlipClock.Lang.English; - FlipClock.Lang['en-us'] = FlipClock.Lang.English; - FlipClock.Lang['english'] = FlipClock.Lang.English; - -}(jQuery)); \ No newline at end of file diff --git a/src/flipclock/js/lang/es-es.js b/src/flipclock/js/lang/es-es.js deleted file mode 100644 index 6b01b1b4..00000000 --- a/src/flipclock/js/lang/es-es.js +++ /dev/null @@ -1,27 +0,0 @@ -(function($) { - - /** - * FlipClock Spanish Language Pack - * - * This class will used to translate tokens into the Spanish language. - * - */ - - FlipClock.Lang.Spanish = { - - 'years' : 'Años', - 'months' : 'Meses', - 'days' : 'Días', - 'hours' : 'Horas', - 'minutes' : 'Minutos', - 'seconds' : 'Segundos' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['es'] = FlipClock.Lang.Spanish; - FlipClock.Lang['es-es'] = FlipClock.Lang.Spanish; - FlipClock.Lang['spanish'] = FlipClock.Lang.Spanish; - -}(jQuery)); \ No newline at end of file diff --git a/src/flipclock/js/lang/fa-ir.js b/src/flipclock/js/lang/fa-ir.js deleted file mode 100644 index 51f20d81..00000000 --- a/src/flipclock/js/lang/fa-ir.js +++ /dev/null @@ -1,27 +0,0 @@ -(function($) { - - /** - * FlipClock English Language Pack - * - * This class will used to translate tokens into the English language. - * - */ - - FlipClock.Lang.Persian = { - - 'years' : 'سال', - 'months' : 'ماه', - 'days' : 'روز', - 'hours' : 'ساعت', - 'minutes' : 'دقیقه', - 'seconds' : 'ثانیه' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['fa'] = FlipClock.Lang.Persian; - FlipClock.Lang['fa-ir'] = FlipClock.Lang.Persian; - FlipClock.Lang['persian'] = FlipClock.Lang.Persian; - -}(jQuery)); diff --git a/src/flipclock/js/lang/fi-fi.js b/src/flipclock/js/lang/fi-fi.js deleted file mode 100644 index e251175f..00000000 --- a/src/flipclock/js/lang/fi-fi.js +++ /dev/null @@ -1,27 +0,0 @@ -(function($) { - - /** - * FlipClock Finnish Language Pack - * - * This class will used to translate tokens into the Finnish language. - * - */ - - FlipClock.Lang.Finnish = { - - 'years' : 'Vuotta', - 'months' : 'Kuukautta', - 'days' : 'Päivää', - 'hours' : 'Tuntia', - 'minutes' : 'Minuuttia', - 'seconds' : 'Sekuntia' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['fi'] = FlipClock.Lang.Finnish; - FlipClock.Lang['fi-fi'] = FlipClock.Lang.Finnish; - FlipClock.Lang['finnish'] = FlipClock.Lang.Finnish; - -}(jQuery)); diff --git a/src/flipclock/js/lang/fr-ca.js b/src/flipclock/js/lang/fr-ca.js deleted file mode 100644 index bc94c269..00000000 --- a/src/flipclock/js/lang/fr-ca.js +++ /dev/null @@ -1,27 +0,0 @@ -(function($) { - - /** - * FlipClock Canadian French Language Pack - * - * This class will used to translate tokens into the Canadian French language. - * - */ - - FlipClock.Lang.French = { - - 'years' : 'Ans', - 'months' : 'Mois', - 'days' : 'Jours', - 'hours' : 'Heures', - 'minutes' : 'Minutes', - 'seconds' : 'Secondes' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['fr'] = FlipClock.Lang.French; - FlipClock.Lang['fr-ca'] = FlipClock.Lang.French; - FlipClock.Lang['french'] = FlipClock.Lang.French; - -}(jQuery)); diff --git a/src/flipclock/js/lang/hu-hu.js b/src/flipclock/js/lang/hu-hu.js deleted file mode 100644 index d8b7ebc5..00000000 --- a/src/flipclock/js/lang/hu-hu.js +++ /dev/null @@ -1,27 +0,0 @@ -(function($) { - - /** - * FlipClock Hungarian Language Pack - * - * This class will used to translate tokens into the Hungarian language. - * - */ - - FlipClock.Lang.German = { - - 'years' : 'év', - 'months' : 'hónap', - 'days' : 'nap', - 'hours' : 'óra', - 'minutes' : 'perc', - 'seconds' : 'másodperc' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['hu'] = FlipClock.Lang.German; - FlipClock.Lang['hu-hu] = FlipClock.Lang.German; - FlipClock.Lang['hungarian'] = FlipClock.Lang.German; - -}(jQuery)); diff --git a/src/flipclock/js/lang/it-it.js b/src/flipclock/js/lang/it-it.js deleted file mode 100644 index 9e7d9f5f..00000000 --- a/src/flipclock/js/lang/it-it.js +++ /dev/null @@ -1,27 +0,0 @@ -(function($) { - - /** - * FlipClock Italian Language Pack - * - * This class will used to translate tokens into the Italian language. - * - */ - - FlipClock.Lang.Italian = { - - 'years' : 'Anni', - 'months' : 'Mesi', - 'days' : 'Giorni', - 'hours' : 'Ore', - 'minutes' : 'Minuti', - 'seconds' : 'Secondi' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['it'] = FlipClock.Lang.Italian; - FlipClock.Lang['it-it'] = FlipClock.Lang.Italian; - FlipClock.Lang['italian'] = FlipClock.Lang.Italian; - -}(jQuery)); diff --git a/src/flipclock/js/lang/ja-jp b/src/flipclock/js/lang/ja-jp deleted file mode 100644 index 07df2aba..00000000 --- a/src/flipclock/js/lang/ja-jp +++ /dev/null @@ -1,27 +0,0 @@ -(function($) { - - /** - * FlipClock Japanese Language Pack - * - * This class will used to translate tokens into the Japanese language. - * - */ - - FlipClock.Lang.Japanese = { - - 'years' : '年', - 'months' : '月', - 'days' : '日', - 'hours' : '時', - 'minutes' : '分', - 'seconds' : '秒' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['jp'] = FlipClock.Lang.Japanese; - FlipClock.Lang['ja-jp'] = FlipClock.Lang.Japanese; - FlipClock.Lang['japanese'] = FlipClock.Lang.Japanese; - -}(jQuery)); diff --git a/src/flipclock/js/lang/ko-kr.js b/src/flipclock/js/lang/ko-kr.js deleted file mode 100644 index 2d1b0b4d..00000000 --- a/src/flipclock/js/lang/ko-kr.js +++ /dev/null @@ -1,27 +0,0 @@ -(function($) { - - /** - * FlipClock Korean Language Pack - * - * This class will used to translate tokens into the Korean language. - * - */ - - FlipClock.Lang.Korean = { - - 'years' : '년', - 'months' : '월', - 'days' : '일', - 'hours' : '시', - 'minutes' : '분', - 'seconds' : '초' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['ko'] = FlipClock.Lang.Korean; - FlipClock.Lang['ko-kr'] = FlipClock.Lang.Korean; - FlipClock.Lang['korean'] = FlipClock.Lang.Korean; - -}(jQuery)); diff --git a/src/flipclock/js/lang/lv-lv.js b/src/flipclock/js/lang/lv-lv.js deleted file mode 100644 index 41e07528..00000000 --- a/src/flipclock/js/lang/lv-lv.js +++ /dev/null @@ -1,27 +0,0 @@ -(function($) { - - /** - * FlipClock Latvian Language Pack - * - * This class will used to translate tokens into the Latvian language. - * - */ - - FlipClock.Lang.Latvian = { - - 'years' : 'Gadi', - 'months' : 'Mēneši', - 'days' : 'Dienas', - 'hours' : 'Stundas', - 'minutes' : 'Minūtes', - 'seconds' : 'Sekundes' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['lv'] = FlipClock.Lang.Latvian; - FlipClock.Lang['lv-lv'] = FlipClock.Lang.Latvian; - FlipClock.Lang['latvian'] = FlipClock.Lang.Latvian; - -}(jQuery)); \ No newline at end of file diff --git a/src/flipclock/js/lang/nl-be.js b/src/flipclock/js/lang/nl-be.js deleted file mode 100644 index e4354ba4..00000000 --- a/src/flipclock/js/lang/nl-be.js +++ /dev/null @@ -1,26 +0,0 @@ -(function($) { - - /** - * FlipClock Dutch Language Pack - * - * This class will used to translate tokens into the Dutch language. - */ - - FlipClock.Lang.Dutch = { - - 'years' : 'Jaren', - 'months' : 'Maanden', - 'days' : 'Dagen', - 'hours' : 'Uren', - 'minutes' : 'Minuten', - 'seconds' : 'Seconden' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['nl'] = FlipClock.Lang.Dutch; - FlipClock.Lang['nl-be'] = FlipClock.Lang.Dutch; - FlipClock.Lang['dutch'] = FlipClock.Lang.Dutch; - -}(jQuery)); diff --git a/src/flipclock/js/lang/no-nb.js b/src/flipclock/js/lang/no-nb.js deleted file mode 100644 index 9e1fc035..00000000 --- a/src/flipclock/js/lang/no-nb.js +++ /dev/null @@ -1,28 +0,0 @@ -(function($) { - - /** - * FlipClock Norwegian-Bokmål Language Pack - * - * This class will used to translate tokens into the Norwegian language. - * - */ - - FlipClock.Lang.Norwegian = { - - 'years' : 'År', - 'months' : 'Måneder', - 'days' : 'Dager', - 'hours' : 'Timer', - 'minutes' : 'Minutter', - 'seconds' : 'Sekunder' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['no'] = FlipClock.Lang.Norwegian; - FlipClock.Lang['nb'] = FlipClock.Lang.Norwegian; - FlipClock.Lang['no-nb'] = FlipClock.Lang.Norwegian; - FlipClock.Lang['norwegian'] = FlipClock.Lang.Norwegian; - -}(jQuery)); diff --git a/src/flipclock/js/lang/pt-br.js b/src/flipclock/js/lang/pt-br.js deleted file mode 100644 index a110798e..00000000 --- a/src/flipclock/js/lang/pt-br.js +++ /dev/null @@ -1,27 +0,0 @@ -(function($) { - - /** - * FlipClock Portuguese Language Pack - * - * This class will used to translate tokens into the Portuguese language. - * - */ - - FlipClock.Lang.Portuguese = { - - 'years' : 'Anos', - 'months' : 'Meses', - 'days' : 'Dias', - 'hours' : 'Horas', - 'minutes' : 'Minutos', - 'seconds' : 'Segundos' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['pt'] = FlipClock.Lang.Portuguese; - FlipClock.Lang['pt-br'] = FlipClock.Lang.Portuguese; - FlipClock.Lang['portuguese'] = FlipClock.Lang.Portuguese; - -}(jQuery)); \ No newline at end of file diff --git a/src/flipclock/js/lang/ru-ru.js b/src/flipclock/js/lang/ru-ru.js deleted file mode 100644 index acf21ab5..00000000 --- a/src/flipclock/js/lang/ru-ru.js +++ /dev/null @@ -1,27 +0,0 @@ -(function($) { - - /** - * FlipClock Russian Language Pack - * - * This class will used to translate tokens into the Russian language. - * - */ - - FlipClock.Lang.Russian = { - - 'years' : 'лет', - 'months' : 'месяцев', - 'days' : 'дней', - 'hours' : 'часов', - 'minutes' : 'минут', - 'seconds' : 'секунд' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['ru'] = FlipClock.Lang.Russian; - FlipClock.Lang['ru-ru'] = FlipClock.Lang.Russian; - FlipClock.Lang['russian'] = FlipClock.Lang.Russian; - -}(jQuery)); \ No newline at end of file diff --git a/src/flipclock/js/lang/sk-sk.js b/src/flipclock/js/lang/sk-sk.js deleted file mode 100644 index a6696f6c..00000000 --- a/src/flipclock/js/lang/sk-sk.js +++ /dev/null @@ -1,27 +0,0 @@ -(function($) { - - /** - * FlipClock Slovak Language Pack - * - * This class will used to translate tokens into the Slovak language. - * - */ - - FlipClock.Lang.Slovak = { - - 'years' : 'Roky', - 'months' : 'Mesiace', - 'days' : 'Dni', - 'hours' : 'Hodiny', - 'minutes' : 'Minúty', - 'seconds' : 'Sekundy' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['sk'] = FlipClock.Lang.Slovak; - FlipClock.Lang['sk-sk'] = FlipClock.Lang.Slovak; - FlipClock.Lang['slovak'] = FlipClock.Lang.Slovak; - -}(jQuery)); diff --git a/src/flipclock/js/lang/sv-se.js b/src/flipclock/js/lang/sv-se.js deleted file mode 100644 index c4ce279f..00000000 --- a/src/flipclock/js/lang/sv-se.js +++ /dev/null @@ -1,27 +0,0 @@ -(function($) { - - /** - * FlipClock Swedish Language Pack - * - * This class will used to translate tokens into the Swedish language. - * - */ - - FlipClock.Lang.Swedish = { - - 'years' : 'År', - 'months' : 'Månader', - 'days' : 'Dagar', - 'hours' : 'Timmar', - 'minutes' : 'Minuter', - 'seconds' : 'Sekunder' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['sv'] = FlipClock.Lang.Swedish; - FlipClock.Lang['sv-se'] = FlipClock.Lang.Swedish; - FlipClock.Lang['swedish'] = FlipClock.Lang.Swedish; - -}(jQuery)); diff --git a/src/flipclock/js/lang/th-th.js b/src/flipclock/js/lang/th-th.js deleted file mode 100644 index 49369144..00000000 --- a/src/flipclock/js/lang/th-th.js +++ /dev/null @@ -1,27 +0,0 @@ -(function($) { - - /** - * FlipClock Thai Language Pack - * - * This class will used to translate tokens into the Thai language. - * - */ - - FlipClock.Lang.Thai = { - - 'years' : 'ปี', - 'months' : 'เดือน', - 'days' : 'วัน', - 'hours' : 'ชั่วโมง', - 'minutes' : 'นาที', - 'seconds' : 'วินาที' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['th'] = FlipClock.Lang.Thai; - FlipClock.Lang['th-th'] = FlipClock.Lang.Thai; - FlipClock.Lang['thai'] = FlipClock.Lang.Thai; - -}(jQuery)); \ No newline at end of file diff --git a/src/flipclock/js/lang/tr-tr b/src/flipclock/js/lang/tr-tr deleted file mode 100644 index 46ac1932..00000000 --- a/src/flipclock/js/lang/tr-tr +++ /dev/null @@ -1,27 +0,0 @@ -(function($) { - - /** - * FlipClock Turkish Language Pack - * - * This class will used to translate tokens into the Turkish language. - * - */ - - FlipClock.Lang.Turkish = { - - 'years' : 'Yıl', - 'months' : 'Ay', - 'days' : 'Gün', - 'hours' : 'Saat', - 'minutes' : 'Dakika', - 'seconds' : 'Saniye' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['tr'] = FlipClock.Lang.Turkish; - FlipClock.Lang['tr-tr'] = FlipClock.Lang.Turkish; - FlipClock.Lang['turkish'] = FlipClock.Lang.Turkish; - -}(jQuery)); diff --git a/src/flipclock/js/lang/zh-cn.js b/src/flipclock/js/lang/zh-cn.js deleted file mode 100644 index 6b94fe47..00000000 --- a/src/flipclock/js/lang/zh-cn.js +++ /dev/null @@ -1,27 +0,0 @@ -(function($) { - - /** - * FlipClock Chinese Language Pack - * - * This class will used to translate tokens into the Chinese language. - * - */ - - FlipClock.Lang.Chinese = { - - 'years' : '年', - 'months' : '月', - 'days' : '日', - 'hours' : '时', - 'minutes' : '分', - 'seconds' : '秒' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['zh'] = FlipClock.Lang.Chinese; - FlipClock.Lang['zh-cn'] = FlipClock.Lang.Chinese; - FlipClock.Lang['chinese'] = FlipClock.Lang.Chinese; - -}(jQuery)); \ No newline at end of file diff --git a/src/flipclock/js/lang/zh-tw.js b/src/flipclock/js/lang/zh-tw.js deleted file mode 100644 index ee8ad627..00000000 --- a/src/flipclock/js/lang/zh-tw.js +++ /dev/null @@ -1,25 +0,0 @@ -(function($) { - - /** - * FlipClock Traditional Chinese Language Pack - * - * This class will used to translate tokens into the Traditional Chinese. - * - */ - - FlipClock.Lang.TraditionalChinese = { - - 'years' : '年', - 'months' : '月', - 'days' : '日', - 'hours' : '時', - 'minutes' : '分', - 'seconds' : '秒' - - }; - - /* Create various aliases for convenience */ - - FlipClock.Lang['zh-tw'] = FlipClock.Lang.TraditionalChinese; - -}(jQuery)); diff --git a/src/flipclock/js/libs/core.js b/src/flipclock/js/libs/core.js deleted file mode 100644 index d8a2cc3f..00000000 --- a/src/flipclock/js/libs/core.js +++ /dev/null @@ -1,165 +0,0 @@ -/*jshint smarttabs:true */ - -var FlipClock; - -/** - * FlipClock.js - * - * @author Justin Kimbrell - * @copyright 2013 - Objective HTML, LLC - * @license http://www.opensource.org/licenses/mit-license.php - */ - -(function($) { - - "use strict"; - - /** - * FlipFlock Helper - * - * @param object A jQuery object or CSS select - * @param int An integer used to start the clock (no. seconds) - * @param object An object of properties to override the default - */ - - FlipClock = function(obj, digit, options) { - if(digit instanceof Object && digit instanceof Date === false) { - options = digit; - digit = 0; - } - - return new FlipClock.Factory(obj, digit, options); - }; - - /** - * The global FlipClock.Lang object - */ - - FlipClock.Lang = {}; - - /** - * The Base FlipClock class is used to extend all other FlipFlock - * classes. It handles the callbacks and the basic setters/getters - * - * @param object An object of the default properties - * @param object An object of properties to override the default - */ - - FlipClock.Base = Base.extend({ - - /** - * Build Date - */ - - buildDate: '2014-12-12', - - /** - * Version - */ - - version: '0.7.7', - - /** - * Sets the default options - * - * @param object The default options - * @param object The override options - */ - - constructor: function(_default, options) { - if(typeof _default !== "object") { - _default = {}; - } - if(typeof options !== "object") { - options = {}; - } - this.setOptions($.extend(true, {}, _default, options)); - }, - - /** - * Delegates the callback to the defined method - * - * @param object The default options - * @param object The override options - */ - - callback: function(method) { - if(typeof method === "function") { - var args = []; - - for(var x = 1; x <= arguments.length; x++) { - if(arguments[x]) { - args.push(arguments[x]); - } - } - - method.apply(this, args); - } - }, - - /** - * Log a string into the console if it exists - * - * @param string The name of the option - * @return mixed - */ - - log: function(str) { - if(window.console && console.log) { - console.log(str); - } - }, - - /** - * Get an single option value. Returns false if option does not exist - * - * @param string The name of the option - * @return mixed - */ - - getOption: function(index) { - if(this[index]) { - return this[index]; - } - return false; - }, - - /** - * Get all options - * - * @return bool - */ - - getOptions: function() { - return this; - }, - - /** - * Set a single option value - * - * @param string The name of the option - * @param mixed The value of the option - */ - - setOption: function(index, value) { - this[index] = value; - }, - - /** - * Set a multiple options by passing a JSON object - * - * @param object The object with the options - * @param mixed The value of the option - */ - - setOptions: function(options) { - for(var key in options) { - if(typeof options[key] !== "undefined") { - this.setOption(key, options[key]); - } - } - } - - }); - -}(jQuery)); diff --git a/src/flipclock/js/libs/face.js b/src/flipclock/js/libs/face.js deleted file mode 100644 index ab05dac1..00000000 --- a/src/flipclock/js/libs/face.js +++ /dev/null @@ -1,243 +0,0 @@ -/*jshint smarttabs:true */ - -/** - * FlipClock.js - * - * @author Justin Kimbrell - * @copyright 2013 - Objective HTML, LLC - * @licesnse http://www.opensource.org/licenses/mit-license.php - */ - -(function($) { - - "use strict"; - - /** - * The FlipClock Face class is the base class in which to extend - * all other FlockClock.Face classes. - * - * @param object The parent FlipClock.Factory object - * @param object An object of properties to override the default - */ - - FlipClock.Face = FlipClock.Base.extend({ - - /** - * Sets whether or not the clock should start upon instantiation - */ - - autoStart: true, - - /** - * An array of jQuery objects used for the dividers (the colons) - */ - - dividers: [], - - /** - * An array of FlipClock.List objects - */ - - factory: false, - - /** - * An array of FlipClock.List objects - */ - - lists: [], - - /** - * Constructor - * - * @param object The parent FlipClock.Factory object - * @param object An object of properties to override the default - */ - - constructor: function(factory, options) { - this.dividers = []; - this.lists = []; - this.base(options); - this.factory = factory; - }, - - /** - * Build the clock face - */ - - build: function() { - if(this.autoStart) { - this.start(); - } - }, - - /** - * Creates a jQuery object used for the digit divider - * - * @param mixed The divider label text - * @param mixed Set true to exclude the dots in the divider. - * If not set, is false. - */ - - createDivider: function(label, css, excludeDots) { - if(typeof css == "boolean" || !css) { - excludeDots = css; - css = label; - } - - var dots = [ - '', - '' - ].join(''); - - if(excludeDots) { - dots = ''; - } - - label = this.factory.localize(label); - - var html = [ - '', - ''+(label ? label : '')+'', - dots, - '' - ]; - - var $html = $(html.join('')); - - this.dividers.push($html); - - return $html; - }, - - /** - * Creates a FlipClock.List object and appends it to the DOM - * - * @param mixed The digit to select in the list - * @param object An object to override the default properties - */ - - createList: function(digit, options) { - if(typeof digit === "object") { - options = digit; - digit = 0; - } - - var obj = new FlipClock.List(this.factory, digit, options); - - this.lists.push(obj); - - return obj; - }, - - /** - * Triggers when the clock is reset - */ - - reset: function() { - this.factory.time = new FlipClock.Time( - this.factory, - this.factory.original ? Math.round(this.factory.original) : 0, - { - minimumDigits: this.factory.minimumDigits - } - ); - - this.flip(this.factory.original, false); - }, - - /** - * Append a newly created list to the clock - */ - - appendDigitToClock: function(obj) { - obj.$el.append(false); - }, - - /** - * Add a digit to the clock face - */ - - addDigit: function(digit) { - var obj = this.createList(digit, { - classes: { - active: this.factory.classes.active, - before: this.factory.classes.before, - flip: this.factory.classes.flip - } - }); - - this.appendDigitToClock(obj); - }, - - /** - * Triggers when the clock is started - */ - - start: function() {}, - - /** - * Triggers when the time on the clock stops - */ - - stop: function() {}, - - /** - * Auto increments/decrements the value of the clock face - */ - - autoIncrement: function() { - if(!this.factory.countdown) { - this.increment(); - } - else { - this.decrement(); - } - }, - - /** - * Increments the value of the clock face - */ - - increment: function() { - this.factory.time.addSecond(); - }, - - /** - * Decrements the value of the clock face - */ - - decrement: function() { - if(this.factory.time.getTimeSeconds() == 0) { - this.factory.stop() - } - else { - this.factory.time.subSecond(); - } - }, - - /** - * Triggers when the numbers on the clock flip - */ - - flip: function(time, doNotAddPlayClass) { - var t = this; - - $.each(time, function(i, digit) { - var list = t.lists[i]; - - if(list) { - if(!doNotAddPlayClass && digit != list.digit) { - list.play(); - } - - list.select(digit); - } - else { - t.addDigit(digit); - } - }); - } - - }); - -}(jQuery)); diff --git a/src/flipclock/js/libs/factory.js b/src/flipclock/js/libs/factory.js deleted file mode 100644 index 7cbb2f00..00000000 --- a/src/flipclock/js/libs/factory.js +++ /dev/null @@ -1,380 +0,0 @@ -/*jshint smarttabs:true */ - -/** - * FlipClock.js - * - * @author Justin Kimbrell - * @copyright 2013 - Objective HTML, LLC - * @licesnse http://www.opensource.org/licenses/mit-license.php - */ - -(function($) { - - "use strict"; - - /** - * The FlipClock Factory class is used to build the clock and manage - * all the public methods. - * - * @param object A jQuery object or CSS selector used to fetch - the wrapping DOM nodes - * @param mixed This is the digit used to set the clock. If an - object is passed, 0 will be used. - * @param object An object of properties to override the default - */ - - FlipClock.Factory = FlipClock.Base.extend({ - - /** - * The clock's animation rate. - * - * Note, currently this property doesn't do anything. - * This property is here to be used in the future to - * programmaticaly set the clock's animation speed - */ - - animationRate: 1000, - - /** - * Auto start the clock on page load (True|False) - */ - - autoStart: true, - - /** - * The callback methods - */ - - callbacks: { - destroy: false, - create: false, - init: false, - interval: false, - start: false, - stop: false, - reset: false - }, - - /** - * The CSS classes - */ - - classes: { - active: 'flip-clock-active', - before: 'flip-clock-before', - divider: 'flip-clock-divider', - dot: 'flip-clock-dot', - label: 'flip-clock-label', - flip: 'flip', - play: 'play', - wrapper: 'flip-clock-wrapper' - }, - - /** - * The name of the clock face class in use - */ - - clockFace: 'HourlyCounter', - - /** - * The name of the clock face class in use - */ - - countdown: false, - - /** - * The name of the default clock face class to use if the defined - * clockFace variable is not a valid FlipClock.Face object - */ - - defaultClockFace: 'HourlyCounter', - - /** - * The default language - */ - - defaultLanguage: 'english', - - /** - * The jQuery object - */ - - $el: false, - - /** - * The FlipClock.Face object - */ - - face: true, - - /** - * The language object after it has been loaded - */ - - lang: false, - - /** - * The language being used to display labels (string) - */ - - language: 'english', - - /** - * The minimum digits the clock must have - */ - - minimumDigits: 0, - - /** - * The original starting value of the clock. Used for the reset method. - */ - - original: false, - - /** - * Is the clock running? (True|False) - */ - - running: false, - - /** - * The FlipClock.Time object - */ - - time: false, - - /** - * The FlipClock.Timer object - */ - - timer: false, - - /** - * The jQuery object (depcrecated) - */ - - $wrapper: false, - - /** - * Constructor - * - * @param object The wrapping jQuery object - * @param object Number of seconds used to start the clock - * @param object An object override options - */ - - constructor: function(obj, digit, options) { - - if(!options) { - options = {}; - } - - this.lists = []; - this.running = false; - this.base(options); - - this.$el = $(obj).addClass(this.classes.wrapper); - - // Depcrated support of the $wrapper property. - this.$wrapper = this.$el; - - this.original = (digit instanceof Date) ? digit : (digit ? Math.round(digit) : 0); - - this.time = new FlipClock.Time(this, this.original, { - minimumDigits: this.minimumDigits, - animationRate: this.animationRate - }); - - this.timer = new FlipClock.Timer(this, options); - - this.loadLanguage(this.language); - - this.loadClockFace(this.clockFace, options); - - if(this.autoStart) { - this.start(); - } - - }, - - /** - * Load the FlipClock.Face object - * - * @param object The name of the FlickClock.Face class - * @param object An object override options - */ - - loadClockFace: function(name, options) { - var face, suffix = 'Face', hasStopped = false; - - name = name.ucfirst()+suffix; - - if(this.face.stop) { - this.stop(); - hasStopped = true; - } - - this.$el.html(''); - - this.time.minimumDigits = this.minimumDigits; - - if(FlipClock[name]) { - face = new FlipClock[name](this, options); - } - else { - face = new FlipClock[this.defaultClockFace+suffix](this, options); - } - - face.build(); - - this.face = face - - if(hasStopped) { - this.start(); - } - - return this.face; - }, - - /** - * Load the FlipClock.Lang object - * - * @param object The name of the language to load - */ - - loadLanguage: function(name) { - var lang; - - if(FlipClock.Lang[name.ucfirst()]) { - lang = FlipClock.Lang[name.ucfirst()]; - } - else if(FlipClock.Lang[name]) { - lang = FlipClock.Lang[name]; - } - else { - lang = FlipClock.Lang[this.defaultLanguage]; - } - - return this.lang = lang; - }, - - /** - * Localize strings into various languages - * - * @param string The index of the localized string - * @param object Optionally pass a lang object - */ - - localize: function(index, obj) { - var lang = this.lang; - - if(!index) { - return null; - } - - var lindex = index.toLowerCase(); - - if(typeof obj == "object") { - lang = obj; - } - - if(lang && lang[lindex]) { - return lang[lindex]; - } - - return index; - }, - - - /** - * Starts the clock - */ - - start: function(callback) { - var t = this; - - if(!t.running && (!t.countdown || t.countdown && t.time.time > 0)) { - t.face.start(t.time); - t.timer.start(function() { - t.flip(); - - if(typeof callback === "function") { - callback(); - } - }); - } - else { - t.log('Trying to start timer when countdown already at 0'); - } - }, - - /** - * Stops the clock - */ - - stop: function(callback) { - this.face.stop(); - this.timer.stop(callback); - - for(var x in this.lists) { - if (this.lists.hasOwnProperty(x)) { - this.lists[x].stop(); - } - } - }, - - /** - * Reset the clock - */ - - reset: function(callback) { - this.timer.reset(callback); - this.face.reset(); - }, - - /** - * Sets the clock time - */ - - setTime: function(time) { - this.time.time = time; - this.flip(true); - }, - - /** - * Get the clock time - * - * @return object Returns a FlipClock.Time object - */ - - getTime: function(time) { - return this.time; - }, - - /** - * Changes the increment of time to up or down (add/sub) - */ - - setCountdown: function(value) { - var running = this.running; - - this.countdown = value ? true : false; - - if(running) { - this.stop(); - this.start(); - } - }, - - /** - * Flip the digits on the clock - * - * @param array An array of digits - */ - flip: function(doNotAddPlayClass) { - this.face.flip(false, doNotAddPlayClass); - } - - }); - -}(jQuery)); diff --git a/src/flipclock/js/libs/list.js b/src/flipclock/js/libs/list.js deleted file mode 100644 index fd40a9a8..00000000 --- a/src/flipclock/js/libs/list.js +++ /dev/null @@ -1,206 +0,0 @@ -/*jshint smarttabs:true */ - -/** - * FlipClock.js - * - * @author Justin Kimbrell - * @copyright 2013 - Objective HTML, LLC - * @licesnse http://www.opensource.org/licenses/mit-license.php - */ - -(function($) { - - "use strict"; - - /** - * The FlipClock List class is used to build the list used to create - * the card flip effect. This object fascilates selecting the correct - * node by passing a specific digit. - * - * @param object A FlipClock.Factory object - * @param mixed This is the digit used to set the clock. If an - * object is passed, 0 will be used. - * @param object An object of properties to override the default - */ - - FlipClock.List = FlipClock.Base.extend({ - - /** - * The digit (0-9) - */ - - digit: 0, - - /** - * The CSS classes - */ - - classes: { - active: 'flip-clock-active', - before: 'flip-clock-before', - flip: 'flip' - }, - - /** - * The parent FlipClock.Factory object - */ - - factory: false, - - /** - * The jQuery object - */ - - $el: false, - - /** - * The jQuery object (deprecated) - */ - - $obj: false, - - /** - * The items in the list - */ - - items: [], - - /** - * The last digit - */ - - lastDigit: 0, - - /** - * Constructor - * - * @param object A FlipClock.Factory object - * @param int An integer use to select the correct digit - * @param object An object to override the default properties - */ - - constructor: function(factory, digit, options) { - this.factory = factory; - this.digit = digit; - this.lastDigit = digit; - this.$el = this.createList(); - - // Depcrated support of the $obj property. - this.$obj = this.$el; - - if(digit > 0) { - this.select(digit); - } - - this.factory.$el.append(this.$el); - }, - - /** - * Select the digit in the list - * - * @param int A digit 0-9 - */ - - select: function(digit) { - if(typeof digit === "undefined") { - digit = this.digit; - } - else { - this.digit = digit; - } - - if(this.digit != this.lastDigit) { - var $delete = this.$el.find('.'+this.classes.before).removeClass(this.classes.before); - - this.$el.find('.'+this.classes.active).removeClass(this.classes.active) - .addClass(this.classes.before); - - this.appendListItem(this.classes.active, this.digit); - - $delete.remove(); - - this.lastDigit = this.digit; - } - }, - - /** - * Adds the play class to the DOM object - */ - - play: function() { - this.$el.addClass(this.factory.classes.play); - }, - - /** - * Removes the play class to the DOM object - */ - - stop: function() { - var t = this; - - setTimeout(function() { - t.$el.removeClass(t.factory.classes.play); - }, this.factory.timer.interval); - }, - - /** - * Creates the list item HTML and returns as a string - */ - - createListItem: function(css, value) { - return [ - '
  • ', - '', - '
    ', - '
    ', - '
    '+(value ? value : '')+'
    ', - '
    ', - '
    ', - '
    ', - '
    '+(value ? value : '')+'
    ', - '
    ', - '
    ', - '
  • ' - ].join(''); - }, - - /** - * Append the list item to the parent DOM node - */ - - appendListItem: function(css, value) { - var html = this.createListItem(css, value); - - this.$el.append(html); - }, - - /** - * Create the list of digits and appends it to the DOM object - */ - - createList: function() { - - var lastDigit = this.getPrevDigit() ? this.getPrevDigit() : this.digit; - - var html = $([ - '
      ', - this.createListItem(this.classes.before, lastDigit), - this.createListItem(this.classes.active, this.digit), - '
    ' - ].join('')); - - return html; - }, - - getNextDigit: function() { - return this.digit == 9 ? 0 : this.digit + 1; - }, - - getPrevDigit: function() { - return this.digit == 0 ? 9 : this.digit - 1; - } - - }); - - -}(jQuery)); diff --git a/src/flipclock/js/libs/plugins.js b/src/flipclock/js/libs/plugins.js deleted file mode 100644 index 5b0d5e42..00000000 --- a/src/flipclock/js/libs/plugins.js +++ /dev/null @@ -1,47 +0,0 @@ -/*jshint smarttabs:true */ - -/** - * FlipClock.js - * - * @author Justin Kimbrell - * @copyright 2013 - Objective HTML, LLC - * @licesnse http://www.opensource.org/licenses/mit-license.php - */ - -(function($) { - - "use strict"; - - /** - * Capitalize the first letter in a string - * - * @return string - */ - - String.prototype.ucfirst = function() { - return this.substr(0, 1).toUpperCase() + this.substr(1); - }; - - /** - * jQuery helper method - * - * @param int An integer used to start the clock (no. seconds) - * @param object An object of properties to override the default - */ - - $.fn.FlipClock = function(digit, options) { - return new FlipClock($(this), digit, options); - }; - - /** - * jQuery helper method - * - * @param int An integer used to start the clock (no. seconds) - * @param object An object of properties to override the default - */ - - $.fn.flipClock = function(digit, options) { - return $.fn.FlipClock(digit, options); - }; - -}(jQuery)); diff --git a/src/flipclock/js/libs/time.js b/src/flipclock/js/libs/time.js deleted file mode 100644 index a87cb88c..00000000 --- a/src/flipclock/js/libs/time.js +++ /dev/null @@ -1,478 +0,0 @@ -/*jshint smarttabs:true */ - -/** - * FlipClock.js - * - * @author Justin Kimbrell - * @copyright 2013 - Objective HTML, LLC - * @licesnse http://www.opensource.org/licenses/mit-license.php - */ - -(function($) { - - "use strict"; - - /** - * The FlipClock Time class is used to manage all the time - * calculations. - * - * @param object A FlipClock.Factory object - * @param mixed This is the digit used to set the clock. If an - * object is passed, 0 will be used. - * @param object An object of properties to override the default - */ - - FlipClock.Time = FlipClock.Base.extend({ - - /** - * The time (in seconds) or a date object - */ - - time: 0, - - /** - * The parent FlipClock.Factory object - */ - - factory: false, - - /** - * The minimum number of digits the clock face must have - */ - - minimumDigits: 0, - - /** - * Constructor - * - * @param object A FlipClock.Factory object - * @param int An integer use to select the correct digit - * @param object An object to override the default properties - */ - - constructor: function(factory, time, options) { - if(typeof options != "object") { - options = {}; - } - - if(!options.minimumDigits) { - options.minimumDigits = factory.minimumDigits; - } - - this.base(options); - this.factory = factory; - - if(time) { - this.time = time; - } - }, - - /** - * Convert a string or integer to an array of digits - * - * @param mixed String or Integer of digits - * @return array An array of digits - */ - - convertDigitsToArray: function(str) { - var data = []; - - str = str.toString(); - - for(var x = 0;x < str.length; x++) { - if(str[x].match(/^\d*$/g)) { - data.push(str[x]); - } - } - - return data; - }, - - /** - * Get a specific digit from the time integer - * - * @param int The specific digit to select from the time - * @return mixed Returns FALSE if no digit is found, otherwise - * the method returns the defined digit - */ - - digit: function(i) { - var timeStr = this.toString(); - var length = timeStr.length; - - if(timeStr[length - i]) { - return timeStr[length - i]; - } - - return false; - }, - - /** - * Formats any array of digits into a valid array of digits - * - * @param mixed An array of digits - * @return array An array of digits - */ - - digitize: function(obj) { - var data = []; - - $.each(obj, function(i, value) { - value = value.toString(); - - if(value.length == 1) { - value = '0'+value; - } - - for(var x = 0; x < value.length; x++) { - data.push(value.charAt(x)); - } - }); - - if(data.length > this.minimumDigits) { - this.minimumDigits = data.length; - } - - if(this.minimumDigits > data.length) { - for(var x = data.length; x < this.minimumDigits; x++) { - data.unshift('0'); - } - } - - return data; - }, - - /** - * Gets a new Date object for the current time - * - * @return array Returns a Date object - */ - - getDateObject: function() { - if(this.time instanceof Date) { - return this.time; - } - - return new Date((new Date()).getTime() + this.getTimeSeconds() * 1000); - }, - - /** - * Gets a digitized daily counter - * - * @return object Returns a digitized object - */ - - getDayCounter: function(includeSeconds) { - var digits = [ - this.getDays(), - this.getHours(true), - this.getMinutes(true) - ]; - - if(includeSeconds) { - digits.push(this.getSeconds(true)); - } - - return this.digitize(digits); - }, - - /** - * Gets number of days - * - * @param bool Should perform a modulus? If not sent, then no. - * @return int Retuns a floored integer - */ - - getDays: function(mod) { - var days = this.getTimeSeconds() / 60 / 60 / 24; - - if(mod) { - days = days % 7; - } - - return Math.floor(days); - }, - - /** - * Gets an hourly breakdown - * - * @return object Returns a digitized object - */ - - getHourCounter: function() { - var obj = this.digitize([ - this.getHours(), - this.getMinutes(true), - this.getSeconds(true) - ]); - - return obj; - }, - - /** - * Gets an hourly breakdown - * - * @return object Returns a digitized object - */ - - getHourly: function() { - return this.getHourCounter(); - }, - - /** - * Gets number of hours - * - * @param bool Should perform a modulus? If not sent, then no. - * @return int Retuns a floored integer - */ - - getHours: function(mod) { - var hours = this.getTimeSeconds() / 60 / 60; - - if(mod) { - hours = hours % 24; - } - - return Math.floor(hours); - }, - - /** - * Gets the twenty-four hour time - * - * @return object returns a digitized object - */ - - getMilitaryTime: function(date, showSeconds) { - if(typeof showSeconds === "undefined") { - showSeconds = true; - } - - if(!date) { - date = this.getDateObject(); - } - - var data = [ - date.getHours(), - date.getMinutes() - ]; - - if(showSeconds === true) { - data.push(date.getSeconds()); - } - - return this.digitize(data); - }, - - /** - * Gets number of minutes - * - * @param bool Should perform a modulus? If not sent, then no. - * @return int Retuns a floored integer - */ - - getMinutes: function(mod) { - var minutes = this.getTimeSeconds() / 60; - - if(mod) { - minutes = minutes % 60; - } - - return Math.floor(minutes); - }, - - /** - * Gets a minute breakdown - */ - - getMinuteCounter: function() { - var obj = this.digitize([ - this.getMinutes(), - this.getSeconds(true) - ]); - - return obj; - }, - - /** - * Gets time count in seconds regardless of if targetting date or not. - * - * @return int Returns a floored integer - */ - - getTimeSeconds: function(date) { - if(!date) { - date = new Date(); - } - - if (this.time instanceof Date) { - if (this.factory.countdown) { - return Math.max(this.time.getTime()/1000 - date.getTime()/1000,0); - } else { - return date.getTime()/1000 - this.time.getTime()/1000 ; - } - } else { - return this.time; - } - }, - - /** - * Gets the current twelve hour time - * - * @return object Returns a digitized object - */ - - getTime: function(date, showSeconds) { - if(typeof showSeconds === "undefined") { - showSeconds = true; - } - - if(!date) { - date = this.getDateObject(); - } - - console.log(date); - - - var hours = date.getHours(); - var merid = hours > 12 ? 'PM' : 'AM'; - var data = [ - hours > 12 ? hours - 12 : (hours === 0 ? 12 : hours), - date.getMinutes() - ]; - - if(showSeconds === true) { - data.push(date.getSeconds()); - } - - return this.digitize(data); - }, - - /** - * Gets number of seconds - * - * @param bool Should perform a modulus? If not sent, then no. - * @return int Retuns a ceiled integer - */ - - getSeconds: function(mod) { - var seconds = this.getTimeSeconds(); - - if(mod) { - if(seconds == 60) { - seconds = 0; - } - else { - seconds = seconds % 60; - } - } - - return Math.ceil(seconds); - }, - - /** - * Gets number of weeks - * - * @param bool Should perform a modulus? If not sent, then no. - * @return int Retuns a floored integer - */ - - getWeeks: function(mod) { - var weeks = this.getTimeSeconds() / 60 / 60 / 24 / 7; - - if(mod) { - weeks = weeks % 52; - } - - return Math.floor(weeks); - }, - - /** - * Removes a specific number of leading zeros from the array. - * This method prevents you from removing too many digits, even - * if you try. - * - * @param int Total number of digits to remove - * @return array An array of digits - */ - - removeLeadingZeros: function(totalDigits, digits) { - var total = 0; - var newArray = []; - - $.each(digits, function(i, digit) { - if(i < totalDigits) { - total += parseInt(digits[i], 10); - } - else { - newArray.push(digits[i]); - } - }); - - if(total === 0) { - return newArray; - } - - return digits; - }, - - /** - * Adds X second to the current time - */ - - addSeconds: function(x) { - if(this.time instanceof Date) { - this.time.setSeconds(this.time.getSeconds() + x); - } - else { - this.time += x; - } - }, - - /** - * Adds 1 second to the current time - */ - - addSecond: function() { - this.addSeconds(1); - }, - - /** - * Substracts X seconds from the current time - */ - - subSeconds: function(x) { - if(this.time instanceof Date) { - this.time.setSeconds(this.time.getSeconds() - x); - } - else { - this.time -= x; - } - }, - - /** - * Substracts 1 second from the current time - */ - - subSecond: function() { - this.subSeconds(1); - }, - - /** - * Converts the object to a human readable string - */ - - toString: function() { - return this.getTimeSeconds().toString(); - } - - /* - getYears: function() { - return Math.floor(this.time / 60 / 60 / 24 / 7 / 52); - }, - - getDecades: function() { - return Math.floor(this.getWeeks() / 10); - }*/ - }); - -}(jQuery)); diff --git a/src/flipclock/js/libs/timer.js b/src/flipclock/js/libs/timer.js deleted file mode 100644 index f729257e..00000000 --- a/src/flipclock/js/libs/timer.js +++ /dev/null @@ -1,203 +0,0 @@ -/*jshint smarttabs:true */ - -/** - * FlipClock.js - * - * @author Justin Kimbrell - * @copyright 2013 - Objective HTML, LLC - * @licesnse http://www.opensource.org/licenses/mit-license.php - */ - -(function($) { - - "use strict"; - - /** - * The FlipClock.Timer object managers the JS timers - * - * @param object The parent FlipClock.Factory object - * @param object Override the default options - */ - - FlipClock.Timer = FlipClock.Base.extend({ - - /** - * Callbacks - */ - - callbacks: { - destroy: false, - create: false, - init: false, - interval: false, - start: false, - stop: false, - reset: false - }, - - /** - * FlipClock timer count (how many intervals have passed) - */ - - count: 0, - - /** - * The parent FlipClock.Factory object - */ - - factory: false, - - /** - * Timer interval (1 second by default) - */ - - interval: 1000, - - /** - * The rate of the animation in milliseconds (not currently in use) - */ - - animationRate: 1000, - - /** - * Constructor - * - * @return void - */ - - constructor: function(factory, options) { - this.base(options); - this.factory = factory; - this.callback(this.callbacks.init); - this.callback(this.callbacks.create); - }, - - /** - * This method gets the elapsed the time as an interger - * - * @return void - */ - - getElapsed: function() { - return this.count * this.interval; - }, - - /** - * This method gets the elapsed the time as a Date object - * - * @return void - */ - - getElapsedTime: function() { - return new Date(this.time + this.getElapsed()); - }, - - /** - * This method is resets the timer - * - * @param callback This method resets the timer back to 0 - * @return void - */ - - reset: function(callback) { - clearInterval(this.timer); - this.count = 0; - this._setInterval(callback); - this.callback(this.callbacks.reset); - }, - - /** - * This method is starts the timer - * - * @param callback A function that is called once the timer is destroyed - * @return void - */ - - start: function(callback) { - this.factory.running = true; - this._createTimer(callback); - this.callback(this.callbacks.start); - }, - - /** - * This method is stops the timer - * - * @param callback A function that is called once the timer is destroyed - * @return void - */ - - stop: function(callback) { - this.factory.running = false; - this._clearInterval(callback); - this.callback(this.callbacks.stop); - this.callback(callback); - }, - - /** - * Clear the timer interval - * - * @return void - */ - - _clearInterval: function() { - clearInterval(this.timer); - }, - - /** - * Create the timer object - * - * @param callback A function that is called once the timer is created - * @return void - */ - - _createTimer: function(callback) { - this._setInterval(callback); - }, - - /** - * Destroy the timer object - * - * @param callback A function that is called once the timer is destroyed - * @return void - */ - - _destroyTimer: function(callback) { - this._clearInterval(); - this.timer = false; - this.callback(callback); - this.callback(this.callbacks.destroy); - }, - - /** - * This method is called each time the timer interval is ran - * - * @param callback A function that is called once the timer is destroyed - * @return void - */ - - _interval: function(callback) { - this.callback(this.callbacks.interval); - this.callback(callback); - this.count++; - }, - - /** - * This sets the timer interval - * - * @param callback A function that is called once the timer is destroyed - * @return void - */ - - _setInterval: function(callback) { - var t = this; - - t._interval(callback); - - t.timer = setInterval(function() { - t._interval(callback); - }, this.interval); - } - - }); - -}(jQuery)); diff --git a/src/flipclock/js/vendor/base.js b/src/flipclock/js/vendor/base.js deleted file mode 100644 index e48bcd04..00000000 --- a/src/flipclock/js/vendor/base.js +++ /dev/null @@ -1,146 +0,0 @@ -/* - Base.js, version 1.1a - Copyright 2006-2010, Dean Edwards - License: http://www.opensource.org/licenses/mit-license.php -*/ - -var Base = function() { - // dummy -}; - -Base.extend = function(_instance, _static) { // subclass - - "use strict"; - - var extend = Base.prototype.extend; - - // build the prototype - Base._prototyping = true; - - var proto = new this(); - - extend.call(proto, _instance); - - proto.base = function() { - // call this method from any other method to invoke that method's ancestor - }; - - delete Base._prototyping; - - // create the wrapper for the constructor function - //var constructor = proto.constructor.valueOf(); //-dean - var constructor = proto.constructor; - var klass = proto.constructor = function() { - if (!Base._prototyping) { - if (this._constructing || this.constructor == klass) { // instantiation - this._constructing = true; - constructor.apply(this, arguments); - delete this._constructing; - } else if (arguments[0] !== null) { // casting - return (arguments[0].extend || extend).call(arguments[0], proto); - } - } - }; - - // build the class interface - klass.ancestor = this; - klass.extend = this.extend; - klass.forEach = this.forEach; - klass.implement = this.implement; - klass.prototype = proto; - klass.toString = this.toString; - klass.valueOf = function(type) { - //return (type == "object") ? klass : constructor; //-dean - return (type == "object") ? klass : constructor.valueOf(); - }; - extend.call(klass, _static); - // class initialisation - if (typeof klass.init == "function") klass.init(); - return klass; -}; - -Base.prototype = { - extend: function(source, value) { - if (arguments.length > 1) { // extending with a name/value pair - var ancestor = this[source]; - if (ancestor && (typeof value == "function") && // overriding a method? - // the valueOf() comparison is to avoid circular references - (!ancestor.valueOf || ancestor.valueOf() != value.valueOf()) && - /\bbase\b/.test(value)) { - // get the underlying method - var method = value.valueOf(); - // override - value = function() { - var previous = this.base || Base.prototype.base; - this.base = ancestor; - var returnValue = method.apply(this, arguments); - this.base = previous; - return returnValue; - }; - // point to the underlying method - value.valueOf = function(type) { - return (type == "object") ? value : method; - }; - value.toString = Base.toString; - } - this[source] = value; - } else if (source) { // extending with an object literal - var extend = Base.prototype.extend; - // if this object has a customised extend method then use it - if (!Base._prototyping && typeof this != "function") { - extend = this.extend || extend; - } - var proto = {toSource: null}; - // do the "toString" and other methods manually - var hidden = ["constructor", "toString", "valueOf"]; - // if we are prototyping then include the constructor - var i = Base._prototyping ? 0 : 1; - while (key = hidden[i++]) { - if (source[key] != proto[key]) { - extend.call(this, key, source[key]); - - } - } - // copy each of the source object's properties to this object - for (var key in source) { - if (!proto[key]) extend.call(this, key, source[key]); - } - } - return this; - } -}; - -// initialise -Base = Base.extend({ - constructor: function() { - this.extend(arguments[0]); - } -}, { - ancestor: Object, - version: "1.1", - - forEach: function(object, block, context) { - for (var key in object) { - if (this.prototype[key] === undefined) { - block.call(context, object[key], key, object); - } - } - }, - - implement: function() { - for (var i = 0; i < arguments.length; i++) { - if (typeof arguments[i] == "function") { - // if it's a function, call it - arguments[i](this.prototype); - } else { - // add the interface using the extend method - this.prototype.extend(arguments[i]); - } - } - return this; - }, - - toString: function() { - return String(this.valueOf()); - } -}); \ No newline at end of file diff --git a/src/js/Components/Component.js b/src/js/Components/Component.js new file mode 100644 index 00000000..0c21e4ab --- /dev/null +++ b/src/js/Components/Component.js @@ -0,0 +1,205 @@ +import { chain, error, callback, isObject, kebabCase } from '../Helpers/Functions'; + +export default class Component { + + /** + * Abstract base class. + * + * @class Component + * @param {(object|undefined)} [attributes] - The instance attributes. + */ + constructor(attributes) { + this.setAttribute(Object.assign({ + events: {} + }, attributes)); + } + + /** + * Get the `name` attribute. + * + * @type {string} + */ + get name() { + if(!(this.constructor.defineName instanceof Function)) { + error('Every class must define its name.'); + } + + return this.constructor.defineName(); + } + + /** + * The `events` attribute. + * + * @type {object} + */ + get events() { + return this.$events || {}; + } + + set events(value) { + this.$events = value; + } + + /** + * Emit an event. + * + * @param {string} key - The event id/key. + * @return {Component} - Returns `this` instance. + */ + emit(key, ...args) { + if(this.events[key]) { + this.events[key].forEach(event => { + event.apply(this, args); + }); + } + + return this; + } + + /** + * Start listening to an event. + * + * @param {string} key - The event id/key. + * @param {Function} fn - The listener callback function. + * @param {boolean} [once=false] - Should the event handler be fired a + * single time. + * @return {Component} - Returns `this` instance. + */ + on(key, fn, once = false) { + if(!this.events[key]) { + this.events[key] = []; + } + + this.events[key].push(fn); + + return this; + } + + /** + * Stop listening to an event. + * + * @param {string} key - The event id/key. + * @param {(Function|undefined)} fn - The listener callback function. If no + * function is defined, all events with the specified id/key will be + * removed. Otherwise, only the event listeners matching the id/key AND + * callback will be removed. + * @return {Component} - Returns `this` instance. + */ + off(key, fn) { + if(this.events[key] && fn) { + this.events[key] = this.events[key].filter(event => { + return event !== fn; + }); + } + else { + this.events[key] = []; + } + + return this; + } + + /** + * Listen to an event only one time. + * + * @param {string} key - The event id/key. + * @param {Function} fn - The listener callback function. + * @return {Component} - Returns `this` instance. + */ + once(key, fn) { + fn = chain(fn, () => this.off(key, fn)); + + return this.on(key, fn, true); + } + + /** + * Get an attribute. Returns null if no attribute is defined. + * + * @param {string} key - The attribute name. + * @return {*} - The attribute value. + */ + getAttribute(key) { + return this.hasOwnProperty(key) ? this[key] : null; + } + + /** + * Get all the atttributes for this instance. + * + * @return {object} - The attribute dictionary. + */ + getAttributes() { + const attributes = {}; + + Object.getOwnPropertyNames(this).forEach(key => { + attributes[key] = this.getAttribute(key); + }); + + return attributes; + } + + /** + * Get only public the atttributes for this instance. Omits any attribute + * that starts with `$`, which is used internally. + * + * @return {object} - The attribute dictionary. + */ + getPublicAttributes() { + return Object.keys(this.getAttributes()) + .filter(key => { + return !key.match(/^\$/); + }) + .reduce((obj, key) => { + obj[key] = this.getAttribute(key); + return obj; + }, {}); + } + + /** + * Set an attribute key and value. + * + * @param {string} key - The attribute name. + * @param {*} value - The attribute value. + * @return {void} + */ + setAttribute(key, value) { + if(isObject(key)) { + this.setAttributes(key); + } + else { + this[key] = value; + } + } + + /** + * Set an attributes by object of key/value pairs. + * + * @param {object} values - The object dictionary. + * @return {void} + */ + setAttributes(values) { + for(const i in values) { + this.setAttribute(i, values[i]); + } + } + + /** + * Helper method to execute the `callback()` function. + * + * @param {Function} fn - The callback function. + * @return {*} - Returns the executed callback function. + */ + callback(fn) { + return callback.call(this, fn); + } + + /** + * Factor method to static instantiate new instances. Useful for writing + * clean expressive syntax with chained methods. + * + * @param {...*} args - The callback arguments. + * @return {*} - The new component instance. + */ + static make(...args) { + return new this(...args); + } + +} diff --git a/src/js/Components/Divider.js b/src/js/Components/Divider.js new file mode 100644 index 00000000..565b0a4d --- /dev/null +++ b/src/js/Components/Divider.js @@ -0,0 +1,25 @@ +import DomComponent from './DomComponent'; + +/** + * Create a new `Divider` instance. + * + * The purpose of this class is to return a unique class name so the theme can + * render it appropriately, since each `DomComponent` can receive its own template + * from the theme. + * + * @class Divider + * @extends DomComponent + * @param {(object|undefined)} [attributes] - The instance attributes. + */ +export default class Divider extends DomComponent { + + /** + * Define the name of the class. + * + * @return {string} + */ + static defineName() { + return 'Divider'; + } + +} diff --git a/src/js/Components/DomComponent.js b/src/js/Components/DomComponent.js new file mode 100644 index 00000000..a718ed69 --- /dev/null +++ b/src/js/Components/DomComponent.js @@ -0,0 +1,182 @@ +import Component from './Component'; +import language from '../Helpers/Language'; +import validate from '../Helpers/Validate'; +import translate from '../Helpers/Translate'; +import { isString } from '../Helpers/Functions'; +import ConsoleMessages from '../Config/ConsoleMessages'; +import { error, kebabCase } from '../Helpers/Functions'; +import { swap, createElement } from '../Helpers/Template'; + +export default class DomComponent extends Component { + + /** + * An abstract class that all other DOM components can extend. + * + * @class DomComponent + * @extends Component + * @param {(object|undefined)} [attributes] - The instance attributes. + */ + constructor(attributes) { + super(Object.assign({ + parent: null + }, attributes)); + + if(!this.theme) { + error(`${this.name} does not have a theme defined.`); + } + + if(!this.language) { + error(`${this.name} does not have a language defined.`); + } + + if(!this.theme[this.name]) { + throw new Error( + `${this.name} cannot be rendered because it has no template.` + ); + } + } + + /** + * The `className` attribute. Used for CSS. + * + * @type {string} + */ + get className() { + return kebabCase(this.constructor.defineName()); + } + + /** + * The `el` attribute. + * + * @type {HTMLElement} + */ + get el() { + return this.$el; + } + + set el(value) { + if(!validate(value, null, HTMLElement)) { + error(ConsoleMessages.element); + } + + this.$el = value; + } + + /** + * The `parent` attribute. Parent is set when `DomComponent` instances are + * mounted. + * + * @type {DomComponent} + */ + get parent() { + return this.$parent; + } + + set parent(parent) { + this.$parent = parent; + } + + /** + * The `theme` attribute. + * + * @type {object} + */ + get theme() { + return this.$theme; + } + + set theme(value) { + if(!validate(value, 'object')) { + error(ConsoleMessages.value); + } + + this.$theme = value; + } + + /** + * Get the language attribute. + * + * @type {object} + */ + get language() { + return this.$language; + } + + set language(value) { + if(isString(value)) { + value = language(value); + } + + if(!validate(value, 'object')) { + error(ConsoleMessages.language); + } + + this.$language = value; + } + + /** + * Translate a string. + * + * @param {string} string - The string to translate. + * @return {string} - The translated string. If no tranlation found, the + * untranslated string is returned. + */ + translate(string) { + return translate(string, this.language); + } + + /** + * Alias to translate(string); + * + * @alias DomComponent.translate + */ + t(string) { + return this.translate(string); + } + + /** + * Render the DOM component. + * + * @return {HTMLElement} - The `el` attribute. + */ + render() { + const el = createElement('div', { + class: this.className === 'flip-clock' ? this.className : 'flip-clock-' + this.className + }); + + this.theme[this.name](el, this); + + if(!this.el) { + this.el = el; + } + else if(this.el.innerHTML !== el.innerHTML) { + this.el = swap(el, this.el); + } + + return this.el; + } + + /** + * Mount a DOM component to a parent node. + * + * @param {HTMLElement} parent - The parent DOM node. + * @param {(false|HTMLElement)} [before=false] - If `false`, element is + * appended to the parent node. If an instance of an `HTMLElement`, + * the component will be inserted before the specified element. + * @return {HTMLElement} - The `el` attribute. + */ + mount(parent, before = false) { + this.render(); + this.parent = parent; + + if(!before) { + this.parent.appendChild(this.el); + } + else { + this.parent.insertBefore(this.el, before); + } + + return this.el; + } + +} diff --git a/src/js/Components/Face.js b/src/js/Components/Face.js new file mode 100644 index 00000000..5734cd82 --- /dev/null +++ b/src/js/Components/Face.js @@ -0,0 +1,271 @@ +import Component from './Component'; +import FaceValue from './FaceValue'; +import validate from '../Helpers/Validate'; +import ConsoleMessages from '../Config/ConsoleMessages'; +import { error, isNull, isUndefined, isObject, isArray, isFunction, callback } from '../Helpers/Functions'; + +export default class Face extends Component { + + /** + * This class is meant to be provide an interface for all other faces to + * extend. + * + * @class Face + * @extends Component + * @param {(FaceValue|object)} value - The `Face` value. If not an instance + * of FaceValue, this argument is assumed to be the instance attributes. + * @param {(object|undefined)} [attributes] - The instance attributes. + */ + constructor(value, attributes) { + if(!(value instanceof FaceValue) && isObject(value)) { + attributes = value; + value = undefined; + } + + super(); + + this.setAttributes(Object.assign({ + autoStart: true, + countdown: false, + animationRate: 500 + }, this.defaultAttributes(), attributes || {})); + + if(isNull(value) || isUndefined(value)) { + value = this.defaultValue(); + } + + if(value) { + this.value = value; + } + } + + /** + * The `dataType` attribute. + * + * @type {*} + */ + get dataType() { + return this.defaultDataType(); + } + + /** + * The `value` attribute. + * + * @type {*} + */ + get value() { + return this.$value; + } + + set value(value) { + if(!(value instanceof FaceValue)) { + value = this.createFaceValue(value); + } + + this.$value = value; + } + + /** + * The `stopAt` attribute. + * + * @type {*} + */ + get stopAt() { + return this.$stopAt; + } + + set stopAt(value) { + this.$stopAt = value; + } + + /** + * The `originalValue` attribute. + * + * @type {*} + */ + get originalValue() { + return this.$originalValue; + } + + set originalValue(value) { + this.$originalValue = value; + } + + /** + * This method is called with every interval, or every time the clock + * should change, and handles the actual incrementing and decrementing the + * clock's `FaceValue`. + * + * @param {FlipClock} instance - The `FlipClock` instance. + * @param {Function} fn - The interval callback. + * @return {Face} - This `Face` instance. + */ + interval(instance, fn) { + if(this.countdown) { + this.decrement(instance); + } + else { + this.increment(instance); + } + + callback.call(this, fn); + + if(this.shouldStop(instance)) { + instance.stop(); + } + + return this.emit('interval'); + } + + /** + * Determines if the clock should stop or not. + * + * @param {FlipClock} instance - The `FlipClock` instance. + * @return {boolean} - Returns `true` if the clock should stop. + */ + shouldStop(instance) { + return !isUndefined(this.stopAt) ? this.stopAt === instance.value.value : false; + } + + /** + * By default this just returns the value unformatted. + * + * @param {FlipClock} instance - The `FlipClock` instance. + * @param {*} value - The value to format. + * @return {*} - The formatted value. + */ + format(instance, value) { + return value; + } + + /** + * The default value for the `Face`. + * + * @return {*} - The default value. + */ + defaultValue() { + // + } + + /** + * The default attributes for the `Face`. + * + * @return {(Object|undefined)} - The default attributes. + */ + defaultAttributes() { + // + } + + /** + * The default data type for the `Face` value. + * + * @return {(Object|undefined)} - The default data type. + */ + defaultDataType() { + // + } + + /** + * Increment the clock. + * + * @param {FlipClock} instance - The `FlipClock` instance. + * @param {Number} [amount] - The amount to increment. If the amount is not + * defined, it is left up to the `Face` to determine the default value. + * @return {void} + */ + increment(instance, amount) { + // + } + + /** + * Decrement the clock. + * + * @param {FlipClock} instance - The `FlipClock` instance. + * @param {Number} [amount] - The amount to decrement. If the amount is not + * defined, it is left up to the `Face` to determine the default value. + * @return {void} + */ + decrement(instance, amount) { + // + } + + /** + * This method is called right after clock has started. + * + * @param {FlipClock} instance - The `FlipClock` instance. + * @return {void} + */ + started(instance) { + // + } + + /** + * This method is called right after clock has stopped. + * + * @param {FlipClock} instance - The `FlipClock` instance. + * @return {void} + */ + stopped(instance) { + // + } + + /** + * This method is called right after clock has reset. + * + * @param {FlipClock} instance - The `FlipClock` instance. + * @return {void} + */ + reset(instance) { + // + } + + /** + * This method is called right after `Face` has initialized. + * + * @param {FlipClock} instance - The `FlipClock` instance. + * @return {void} + */ + initialized(instance) { + // + } + + /** + * This method is called right after `Face` has rendered. + * + * @param {FlipClock} instance - The `FlipClock` instance. + * @return {void} + */ + rendered(instance) { + // + } + + /** + * This method is called right after `Face` has mounted. + * + * @param {FlipClock} instance - The `FlipClock` instance. + * @return {void} + */ + mounted(instance) { + if(this.autoStart && instance.timer.isStopped) { + window.requestAnimationFrame(() => instance.start(instance)); + } + } + + /** + * Helper method to instantiate a new `FaceValue`. + * + * @param {FlipClock} instance - The `FlipClock` instance. + * @param {object|undefined} [attributes] - The attributes passed to the + * `FaceValue` instance. + * @return {Divider} - The instantiated `FaceValue`. + */ + createFaceValue(instance, value) { + return FaceValue.make( + isFunction(value) && !value.name ? value() : value, { + minimumDigits: this.minimumDigits, + format: value => this.format(instance, value) + } + ); + } + +} diff --git a/src/js/Components/FaceValue.js b/src/js/Components/FaceValue.js new file mode 100644 index 00000000..61ca2a45 --- /dev/null +++ b/src/js/Components/FaceValue.js @@ -0,0 +1,103 @@ +import Component from './Component'; +import digitize from '../Helpers/Digitize'; +import { next, prev } from '../Helpers/Value'; +import { length, isObject, isNumber } from '../Helpers/Functions'; + +export default class FaceValue extends Component { + + /** + * The `FaceValue` class handles all the digitizing for the `Face`. + * + * @class FaceValue + * @extends Component + * @param {*} value - The `FaceValue`'s actual value. Most likely should + * string, number, or Date. But since the Face handles the value, it + * could be anything. + * @param {(object|undefined)} [attributes] - The instance attributes. + */ + constructor(value, attributes) { + super(Object.assign({ + format: value => value, + prependLeadingZero: true, + minimumDigits: 0 + }, attributes)); + + if(!this.value) { + this.value = value; + } + } + + /** + * The `digits` attribute. + * + * @type {(Array|undefined)} + */ + get digits() { + return this.$digits; + } + + set digits(value) { + this.$digits = value; + this.minimumDigits = Math.max(this.minimumDigits, length(value)); + } + + /** + * The `value` attribute. + * + * @type {*} + */ + get value() { + return this.$value; + } + + set value(value) { + this.$value = value; + this.digits = digitize(this.format(value), { + minimumDigits: this.minimumDigits, + prependLeadingZero: this.prependLeadingZero + }); + } + + /** + * Returns `true` if the `value` attribute is not a number. + * + * @return {boolean} - `true` is the value is not a number. + */ + isNaN() { + return isNaN(this.value); + } + + /** + * Returns `true` if the `value` attribute is a number. + * + * @return {boolean} - `true` is the value is a number. + */ + isNumber() { + return isNumber(); + } + + /** + * Clones the current `FaceValue` instance, but sets a new value to the + * cloned instance. Used for copying the current instance options and + * methods, but setting a new value. + * + * @param {*} value - The n + * @param {(object|undefined)} [attributes] - The instance attributes. + * @return {FaceValue} - The cloned `FaceValue`. + */ + clone(value, attributes) { + return new this.constructor(value, Object.assign( + this.getPublicAttributes(), attributes + )); + } + + /** + * Define the name of the class. + * + * @return {string} + */ + static defineName() { + return 'FaceValue'; + } + +} diff --git a/src/js/Components/FlipClock.js b/src/js/Components/FlipClock.js new file mode 100644 index 00000000..5d038a9f --- /dev/null +++ b/src/js/Components/FlipClock.js @@ -0,0 +1,419 @@ +import Face from './Face'; +import List from './List'; +import Group from './Group'; +import Label from './Label'; +import Timer from './Timer'; +import Divider from './Divider'; +import * as Faces from '../Faces'; +import FaceValue from './FaceValue'; +import DomComponent from './DomComponent'; +import validate from '../Helpers/Validate'; +import DefaultValues from '../Config/DefaultValues'; +import ConsoleMessages from '../Config/ConsoleMessages'; +import { flatten, isNull, isString, isObject, isUndefined, isFunction, error } from '../Helpers/Functions'; + +export default class FlipClock extends DomComponent { + + /** + * Create a new `FlipClock` instance. + * + * @class FlipClock + * @extends DomComponent + * @param {HTMLElement} el - The HTML element used to bind clock DOM node. + * @param {*} value - The value that is passed to the clock face. + * @param {object|undefined} attributes - {@link FlipClock.Options} passed an object with key/value. + */ + + /** + * @namespace FlipClock.Options + * @classdesc An object of key/value pairs that will be used to set the attributes. + * + * ##### Example: + * + * { + * face: 'DayCounter', + * language: 'es', + * timer: Timer.make(500) + * } + * + * @property {string|Face} [face={@link Faces.DayCounter}] - The clock's {@link Face} instance. + * @property {number} [interval=1000] - The clock's interval rate (in milliseconds). + * @property {object} [theme={@link Themes.Original}] - The clock's theme. + * @property {string|object} [language={@link Languages.English}] - The clock's language. + * @property {Timer} [timer={@link Timer}] - The clock's timer. + */ + + constructor(el, value, attributes) { + if(!validate(el, HTMLElement)) { + error(ConsoleMessages.element); + } + + if(isObject(value) && !attributes) { + attributes = value; + value = undefined; + } + + const face = attributes.face || DefaultValues.face; + + delete attributes.face; + + super(Object.assign({ + originalValue: value, + theme: DefaultValues.theme, + language: DefaultValues.language, + timer: Timer.make(attributes.interval || 1000), + }, attributes)); + + if(!this.face) { + this.face = face; + } + + this.mount(el); + } + + /** + * The clock `Face`. + * + * @type {Face} + */ + get face() { + return this.$face; + } + + set face(value) { + if(!validate(value, [Face, 'string', 'function'])) { + error(ConsoleMessages.face); + } + + this.$face = (Faces[value] || value).make(Object.assign(this.getPublicAttributes(), { + originalValue: this.face ? this.face.originalValue : undefined + })); + + this.$face.initialized(this); + + if(this.value) { + this.$face.value = this.face.createFaceValue(this, this.value.value); + } + else if(!this.value) { + this.value = this.originalValue; + } + + this.el && this.render(); + } + + /** + * The `stopAt` attribute. + * + * @type {*} + */ + get stopAt() { + return isFunction(this.$stopAt) ? this.$stopAt(this) : this.$stopAt; + } + + set stopAt(value) { + this.$stopAt = value; + } + + /** + * The `timer` instance. + * + * @type {Timer} + */ + get timer() { + return this.$timer; + } + + set timer(timer) { + if(!validate(timer, Timer)) { + error(ConsoleMessages.timer); + } + + this.$timer = timer; + } + + /** + * Helper method to The clock's `FaceValue` instance. + * + * @type {FaceValue|null} + */ + get value() { + return this.face ? this.face.value : null; + } + + set value(value) { + if(!this.face) { + throw new Error('A face must be set before setting a value.'); + } + + if(value instanceof FaceValue) { + this.face.value = value; + } + else if(this.value) { + this.face.value = this.face.value.clone(value); + } + else { + this.face.value = this.face.createFaceValue(this, value); + } + + this.el && this.render(); + } + + /** + * The `originalValue` attribute. + * + * @type {*} + */ + get originalValue() { + if(isFunction(this.$originalValue) && !this.$originalValue.name) { + return this.$originalValue(); + } + + if(!isUndefined(this.$originalValue) && !isNull(this.$originalValue)) { + return this.$originalValue; + } + + return this.face ? this.face.defaultValue() : undefined; + } + + set originalValue(value) { + this.$originalValue = value; + } + + /** + * Mount the clock to the parent DOM element. + * + * @param {HTMLElement} el - The parent `HTMLElement`. + * @return {FlipClock} - The `FlipClock` instance. + */ + mount(el) { + super.mount(el); + + this.face.mounted(this); + + return this; + } + + /** + * Render the clock's DOM nodes. + * + * @return {HTMLElement} - The parent `HTMLElement`. + */ + render() { + // Call the parent render function + super.render(); + + // Check to see if the face has a render function defined in the theme. + // This allows a face to completely re-render or add to the theme. + // This allows face specific interfaces for a theme. + if(this.theme.faces[this.face.name]) { + this.theme.faces[this.face.name](this.el, this); + } + + // Pass the clock instance to the rendered() function on the face. + // This allows global modifications to the rendered templates not + // theme specific. + this.face.rendered(this); + + // Return the rendered `HTMLElement`. + return this.el; + } + + /** + * Start the clock. + * + * @param {Function} fn - The interval callback. + * @return {FlipClock} - The `FlipClock` instance. + */ + start(fn) { + if(!this.timer.started) { + this.value = this.originalValue; + } + + isUndefined(this.face.stopAt) && (this.face.stopAt = this.stopAt); + isUndefined(this.face.originalValue) && (this.face.originalValue = this.originalValue); + + this.timer.start(() => { + this.face.interval(this, fn); + }); + + this.face.started(this); + + return this.emit('start'); + } + + /** + * Stop the clock. + * + * @param {Function} fn - The stop callback. + * @return {FlipClock} - The `FlipClock` instance. + */ + stop(fn) { + this.timer.stop(fn); + this.face.stopped(this); + + return this.emit('stop'); + } + + /** + * Reset the clock to the original value. + * + * @param {Function} fn - The interval callback. + * @return {FlipClock} - The `FlipClock` instance. + */ + reset(fn) { + this.value = this.originalValue; + this.timer.reset(() => this.interval(this, fn)); + this.face.reset(this); + + return this.emit('reset'); + } + + /** + * Helper method to increment the clock's value. + * + * @param {*|undefined} value - Increment the clock by the specified value. + * If no value is passed, then the default increment is determined by + * the Face, which is usually `1`. + * @return {FlipClock} - The `FlipClock` instance. + */ + increment(value) { + this.face.increment(this, value); + + return this; + } + + /** + * Helper method to decrement the clock's value. + * + * @param {*|undefined} value - Decrement the clock by the specified value. + * If no value is passed, then the default decrement is determined by + * the `Face`, which is usually `1`. + * @return {FlipClock} - The `FlipClock` instance. + */ + decrement(value) { + this.face.decrement(this, value); + + return this; + } + + /** + * Helper method to instantiate a new `Divider`. + * + * @param {object|undefined} [attributes] - The attributes passed to the + * `Divider` instance. + * @return {Divider} - The instantiated Divider. + */ + createDivider(attributes) { + return Divider.make(Object.assign({ + theme: this.theme, + language: this.language + }, attributes)); + } + + /** + * Helper method to instantiate a new `List`. + * + * @param {*} value - The `List` value. + * @param {object|undefined} [attributes] - The attributes passed to the + * `List` instance. + * @return {List} - The instantiated `List`. + */ + createList(value, attributes) { + return List.make(value, Object.assign({ + theme: this.theme, + language: this.language + }, attributes)); + } + + /** + * Helper method to instantiate a new `Label`. + * + * @param {*} value - The `Label` value. + * @param {object|undefined} [attributes] - The attributes passed to the + * `Label` instance. + * @return {Label} - The instantiated `Label`. + */ + createLabel(value, attributes) { + return Label.make(value, Object.assign({ + theme: this.theme, + language: this.language + }, attributes)); + } + + /** + * Helper method to instantiate a new `Group`. + * + * @param {array} items - An array of `List` items to group. + * @param {Group|undefined} [attributes] - The attributes passed to the + * `Group` instance. + * @return {Group} - The instantiated `Group`. + */ + createGroup(items, attributes) { + return Group.make(items, Object.assign({ + theme: this.theme, + language: this.language + }, attributes)); + } + + /** + * The `defaults` attribute. + * + * @type {object} + */ + static get defaults() { + return DefaultValues; + } + + /** + * Define the name of the class. + * + * @return {string} + */ + static defineName() { + return 'FlipClock'; + } + + /** + * Helper method to set the default `Face` value. + * + * @param {Face} value - The default `Face` class.This should be a + * constructor. + * @return {void} + */ + static setDefaultFace(value) { + if(!validate(value, Face)) { + error(ConsoleMessages.face); + } + + DefaultValues.face = value; + } + + /** + * Helper method to set the default theme. + * + * @param {object} value - The default theme. + * @return {void} + */ + static setDefaultTheme(value) { + if(!validate(value, 'object')) { + error(ConsoleMessages.theme); + } + + DefaultValues.theme = value; + } + + /** + * Helper method to set the default language. + * + * @param {object} value - The default language. + * @return {void} + */ + static setDefaultLanguage(value) { + if(!validate(value, 'object')) { + error(ConsoleMessages.language); + } + + DefaultValues.language = value; + } + +} diff --git a/src/js/Components/Group.js b/src/js/Components/Group.js new file mode 100644 index 00000000..670d0954 --- /dev/null +++ b/src/js/Components/Group.js @@ -0,0 +1,31 @@ +import DomComponent from './DomComponent'; +import { isObject, isArray } from '../Helpers/Functions'; + +export default class Group extends DomComponent { + + /** + * This class is used to group values within a clock face. How the groups + * are displayed is determined by the theme. + * + * @class Group + * @extends DomComponent + * @param {Array|Object} items - An array `List` instances or an object of + * attributes. If not an array, assumed to be the attributes. + * @param {object|undefined} [attributes] - The instance attributes. + */ + constructor(items, attributes) { + super(Object.assign({ + items: isArray(items) ? items : [] + }, (isObject(items) ? items : null), attributes)); + } + + /** + * Define the name of the class. + * + * @return {string} + */ + static defineName() { + return 'Group'; + } + +} diff --git a/src/js/Components/Label.js b/src/js/Components/Label.js new file mode 100644 index 00000000..82da32c5 --- /dev/null +++ b/src/js/Components/Label.js @@ -0,0 +1,30 @@ +import DomComponent from './DomComponent'; +import { isObject } from '../Helpers/Functions'; + +export default class Label extends DomComponent { + + /** + * This class is used to add a label to the clock face. + * + * @class Label + * @extends DomComponent + * @param {Number|String|Object} label - The label attribute. If an object, + * it is assumed that it is the instance attributes. + * @param {object|undefined} [attributes] - The instance attributes. + */ + constructor(label, attributes) { + super(Object.assign({ + label: label + }, (isObject(label) ? label : null), attributes)); + } + + /** + * Define the name of the class. + * + * @return {string} + */ + static defineName() { + return 'Label'; + } + +} diff --git a/src/js/Components/List.js b/src/js/Components/List.js new file mode 100644 index 00000000..85bed77c --- /dev/null +++ b/src/js/Components/List.js @@ -0,0 +1,80 @@ +import Divider from './Divider'; +import ListItem from './ListItem'; +import DomComponent from './DomComponent'; +import { next, prev, } from '../Helpers/Value'; +import { isObject, } from '../Helpers/Functions'; + +export default class List extends DomComponent { + + /** + * This class is used to add a digit to the clock face. This class is called + * `List` because it contains a list of `ListItem`'s which are used to + * create flip effects. In the context of FlipClock.js a `List` represents + * one single digit. + * + * @class List + * @extends DomComponent + * @param {Number|String|Object} label - The active value. If an object, it + * is assumed that it is the instance attributes. + * @param {object|undefined} [attributes] - The instance attributes. + */ + constructor(value, attributes) { + super(Object.assign({ + value: value, + items: [], + }, isObject(value) ? value : null, attributes)); + } + + /** + * Get the `value` attribute. + * + * @type {(Number|String)} + */ + get value() { + return this.$value; + } + set value(value) { + this.$value = value; + } + + /** + * Get the `items` attribute. + * + * @type {(Number|String)} + */ + get items() { + return this.$items; + } + + set items(value) { + this.$items = value; + } + + /** + * Helper method to instantiate a new `ListItem`. + * + * @param {(Number|String)} value - The `ListItem` value. + * @param {(Object|undefined)} [attributes] - The instance attributes. + * @return {ListItem} - The instantiated `ListItem`. + */ + createListItem(value, attributes) { + const item = new ListItem(value, Object.assign({ + theme: this.theme, + language: this.language + }, attributes)); + + this.$items.push(item); + + return item; + } + + /** + * Define the name of the class. + * + * @return {string} + */ + static defineName() { + return 'List'; + } + +} diff --git a/src/js/Components/ListItem.js b/src/js/Components/ListItem.js new file mode 100644 index 00000000..5d6275c2 --- /dev/null +++ b/src/js/Components/ListItem.js @@ -0,0 +1,29 @@ +import DomComponent from './DomComponent'; +import { isObject } from '../Helpers/Functions'; + +export default class ListItem extends DomComponent { + + /** + * This class is used to represent a single digits in a `List`. + * + * @class ListItem + * @extends DomComponent + * @param {(Number|String)} value - The value of the `ListItem`. + * @param {object|undefined} [attributes] - The instance attributes. + */ + constructor(value, attributes) { + super(Object.assign({ + value: value + }, isObject(value) ? value : null, attributes)); + } + + /** + * Define the name of the class. + * + * @return {string} + */ + static defineName() { + return 'ListItem'; + } + +} diff --git a/src/js/Components/Timer.js b/src/js/Components/Timer.js new file mode 100644 index 00000000..8b725e23 --- /dev/null +++ b/src/js/Components/Timer.js @@ -0,0 +1,127 @@ +import Component from './Component'; +import { isObject, isNumber, callback } from '../Helpers/Functions'; + +export default class Timer extends Component { + + /** + * Create a new `Timer` instance. + * + * @class Timer + * @extends Component + * @param {(Object|Number)} interval - The interval passed as a `Number`, + * or can set the attribute of the class with an object. + */ + constructor(interval) { + super(Object.assign({ + count: 0, + handle: null, + started: null, + running: false, + interval: isNumber(interval) ? interval : null, + }, isObject(interval) ? interval : null)); + } + + /** + * The `elapsed` attribute. + * + * @type {Number} + */ + get elapsed() { + return !this.lastLoop ? 0 : this.lastLoop - ( + this.started ? this.started.getTime() : new Date().getTime() + ); + } + + /** + * The `isRunning` attribute. + * + * @type {boolean} + */ + get isRunning() { + return this.running === true; + } + + /** + * The `isStopped` attribute. + * + * @type {boolean} + */ + get isStopped() { + return this.running === false; + } + + /** + * Resets the timer. + * + * @param {(Function|undefined)} fn - The interval callback. + * @return {Timer} - The `Timer` instance. + */ + reset(fn) { + this.stop(() => { + this.count = 0; + this.start(() => callback.call(this, fn)); + this.emit('reset'); + }); + + return this; + } + + /** + * Starts the timer. + * + * @param {Function} fn - The interval callback. + * @return {Timer} - The `Timer` instance. + */ + start(fn) { + this.started = new Date; + this.lastLoop = Date.now(); + this.running = true; + this.emit('start'); + + const loop = () => { + if(Date.now() - this.lastLoop >= this.interval) { + callback.call(this, fn); + this.lastLoop = Date.now(); + this.emit('interval'); + this.count++; + } + + this.handle = window.requestAnimationFrame(loop); + + return this; + }; + + return loop(); + } + + /** + * Stops the timer. + * + * @param {Function} fn - The stop callback. + * @return {Timer} - The `Timer` instance. + */ + stop(fn) { + if(this.isRunning) { + setTimeout(() => { + window.cancelAnimationFrame(this.handle); + + this.running = false; + + callback.call(this, fn); + + this.emit('stop'); + }); + } + + return this; + } + + /** + * Define the name of the class. + * + * @return {string} + */ + static defineName() { + return 'Timer'; + } +} diff --git a/src/js/Components/index.js b/src/js/Components/index.js new file mode 100644 index 00000000..7ca10b6a --- /dev/null +++ b/src/js/Components/index.js @@ -0,0 +1,31 @@ +/** + * The core classes that makeup the FlipClock library. All components that + * interact with the DOM should extend `Faces.DomComponent`. + * + * @private + */ +import Component from './Component'; +import Divider from './Divider'; +import DomComponent from './DomComponent'; +import Face from './Face'; +import FaceValue from './FaceValue'; +import FlipClock from './FlipClock'; +import Group from './Group'; +import Label from './Label'; +import List from './List'; +import ListItem from './ListItem'; +import Timer from './Timer'; + +export { + Component, + Divider, + DomComponent, + Face, + FaceValue, + FlipClock, + Group, + Label, + List, + ListItem, + Timer +}; diff --git a/src/js/Config/ConsoleMessages.js b/src/js/Config/ConsoleMessages.js new file mode 100644 index 00000000..6ce6f008 --- /dev/null +++ b/src/js/Config/ConsoleMessages.js @@ -0,0 +1,16 @@ +/** + * @alias ConsoleMessages + * @type {object} + * @memberof module:Config/ConsoleMessages + */ +export default { + className: 'The className() is not defined.', + items: 'The items property must be an array.', + theme: 'The theme property must be an object.', + language: 'The language must be an object.', + date: 'The value must be an instance of a Date.', + face: 'The face must be an instance of a Face class.', + element: 'The element must be an instance of an HTMLElement', + faceValue: 'The face must be an instance of a FaceValue class.', + timer: 'The timer property must be an instance of a Timer class.' +}; diff --git a/src/js/Config/DefaultValues.js b/src/js/Config/DefaultValues.js new file mode 100644 index 00000000..67f01d12 --- /dev/null +++ b/src/js/Config/DefaultValues.js @@ -0,0 +1,14 @@ +import { Counter } from '../Faces'; +import { Original } from '../Themes'; +import { English } from '../Languages'; + +/** + * @alias DefaultValues + * @type {object} + * @memberof module:Config/DefaultValues + */ +export default { + face: Counter, + theme: Original, + language: English +}; diff --git a/src/js/Config/index.js b/src/js/Config/index.js new file mode 100644 index 00000000..9ffc60cc --- /dev/null +++ b/src/js/Config/index.js @@ -0,0 +1,7 @@ +import ConsoleMessages from './ConsoleMessages'; +import DefaultValues from './DefaultValues'; + +export { + ConsoleMessages, + DefaultValues +} diff --git a/src/js/Faces/Counter.js b/src/js/Faces/Counter.js new file mode 100644 index 00000000..2946136d --- /dev/null +++ b/src/js/Faces/Counter.js @@ -0,0 +1,30 @@ +import Face from '../Components/Face'; + +/** + * @classdesc This face is designed to increment and decrement numberic values, + * not `Date` objects. + * @extends Face + * @param {(FaceValue|object)} value - The `Face` value. If not an instance + * of FaceValue, this argument is assumed to be the instance attributes. + * @param {(object|undefined)} [attributes] - The instance attributes. + * @memberof Faces + */ +export default class Counter extends Face { + + increment(instance, value = 1) { + instance.value = this.value.value + value; + } + + decrement(instance, value = 1) { + instance.value = this.value.value - value; + } + + /** + * Define the name of the class. + * + * @return {string} + */ + static defineName() { + return 'Counter'; + } +} diff --git a/src/js/Faces/DayCounter.js b/src/js/Faces/DayCounter.js new file mode 100644 index 00000000..30ced01a --- /dev/null +++ b/src/js/Faces/DayCounter.js @@ -0,0 +1,49 @@ +import HourCounter from './HourCounter'; + +/** + * @classdesc This face is meant to display a clock that shows days, hours, + * minutes, and seconds. + * @extends HourCounter + * @param {(FaceValue|object)} value - The `Face` value. If not an instance + * of FaceValue, this argument is assumed to be the instance attributes. + * @param {(object|undefined)} [attributes] - The instance attributes. + * @memberof Faces + */ +export default class DayCounter extends HourCounter { + + format(instance, value) { + const now = !instance.started ? new Date : value; + const originalValue = instance.originalValue || value; + const a = !this.countdown ? now : originalValue; + const b = !this.countdown ? originalValue : now; + + const data = [ + [this.getDays(a, b)], + [this.getHours(a, b)], + [this.getMinutes(a, b)] + ]; + + if(this.showSeconds) { + data.push([this.getSeconds(a, b)]); + } + + return data; + } + + getDays(a, b) { + return Math.floor(this.getTotalSeconds(a, b) / 60 / 60 / 24); + } + + getHours(a, b) { + return Math.abs(super.getHours(a, b) % 24); + } + + /** + * Define the name of the class. + * + * @return {string} + */ + static defineName() { + return 'DayCounter'; + } +} diff --git a/src/js/Faces/HourCounter.js b/src/js/Faces/HourCounter.js new file mode 100644 index 00000000..c8a1e33b --- /dev/null +++ b/src/js/Faces/HourCounter.js @@ -0,0 +1,48 @@ +import MinuteCounter from './MinuteCounter'; + +/** + * @classdesc This face is meant to display a clock that shows + * hours, minutes, and seconds. + * @extends Face + * @param {(FaceValue|object)} value - The `Face` value. If not an instance + * of FaceValue, this argument is assumed to be the instance attributes. + * @param {(object|undefined)} [attributes] - The instance attributes. + * @memberof Faces + */ +export default class HourCounter extends MinuteCounter { + + format(instance, value) { + const now = !instance.timer.started ? new Date : value; + const originalValue = instance.originalValue || value; + const a = !this.countdown ? now : originalValue; + const b = !this.countdown ? originalValue : now; + + const data = [ + [this.getHours(a, b)], + [this.getMinutes(a, b)] + ]; + + if(this.showSeconds) { + data.push([this.getSeconds(a, b)]); + } + + return data; + } + + getMinutes(a, b) { + return Math.abs(super.getMinutes(a, b) % 60); + } + + getHours(a, b) { + return Math.floor(this.getTotalSeconds(a, b) / 60 / 60); + } + + /** + * Define the name of the class. + * + * @return {string} + */ + static defineName() { + return 'HourCounter'; + } +} diff --git a/src/js/Faces/MinuteCounter.js b/src/js/Faces/MinuteCounter.js new file mode 100644 index 00000000..97b9af39 --- /dev/null +++ b/src/js/Faces/MinuteCounter.js @@ -0,0 +1,86 @@ +import Face from '../Components/Face'; +import { noop, round, isNull, isUndefined, isNumber, callback } from '../Helpers/Functions'; + +/** + * @classdesc This face is meant to display a clock that shows minutes, and + * seconds. + * @extends Face + * @param {(FaceValue|object)} value - The `Face` value. If not an instance + * of FaceValue, this argument is assumed to be the instance attributes. + * @param {(object|undefined)} [attributes] - The instance attributes. + * @memberof Faces + */ +export default class MinuteCounter extends Face { + + defaultDataType() { + return Date; + } + + defaultAttributes() { + return { + showSeconds: true, + showLabels: true + }; + } + + shouldStop(instance) { + if(isNull(instance.stopAt) || isUndefined(instance.stopAt)) { + return false; + } + + if(this.stopAt instanceof Date) { + return this.countdown ? + this.stopAt.getTime() >= this.value.value.getTime(): + this.stopAt.getTime() <= this.value.value.getTime(); + } + else if(isNumber(this.stopAt)) { + const diff = Math.floor((this.value.value.getTime() - this.originalValue.getTime()) / 1000); + + return this.countdown ? + this.stopAt >= diff: + this.stopAt <= diff; + } + + throw new Error(`the stopAt property must be an instance of Date or Number.`); + } + + increment(instance, value = 0) { + instance.value = new Date(this.value.value.getTime() + value + (new Date().getTime() - instance.timer.lastLoop)); + } + + decrement(instance, value = 0) { + instance.value = new Date(this.value.value.getTime() - value - (new Date().getTime() - instance.timer.lastLoop)); + } + + format(instance, value) { + const started = instance.timer.isRunning ? instance.timer.started : new Date(Date.now() - 50); + + return [ + [this.getMinutes(value, started)], + this.showSeconds ? [this.getSeconds(value, started)] : null + ].filter(noop); + } + + getMinutes(a, b) { + return round(this.getTotalSeconds(a, b) / 60); + } + + getSeconds(a, b) { + const totalSeconds = this.getTotalSeconds(a, b); + + return Math.abs(Math.ceil(totalSeconds === 60 ? 0 : totalSeconds % 60)); + } + + getTotalSeconds(a, b) { + return a.getTime() === b.getTime() ? 0 : Math.round((a.getTime() - b.getTime()) / 1000); + } + + /** + * Define the name of the class. + * + * @return {string} + */ + static defineName() { + return 'MinuteCounter'; + } +} diff --git a/src/js/Faces/TwelveHourClock.js b/src/js/Faces/TwelveHourClock.js new file mode 100644 index 00000000..7b0f12df --- /dev/null +++ b/src/js/Faces/TwelveHourClock.js @@ -0,0 +1,50 @@ +import TwentyFourHourClock from './TwentyFourHourClock'; + +/** + * @classdesc This face shows the current time in twelve hour format, with AM + * and PM. + * @extends Face + * @param {(FaceValue|object)} value - The `Face` value. If not an instance + * of FaceValue, this argument is assumed to be the instance attributes. + * @param {(object|undefined)} [attributes] - The instance attributes. + * @memberof Faces + */ +export default class TwelveHourClock extends TwentyFourHourClock { + + defaultAttributes() { + return { + showLabels: false, + showSeconds: true, + showMeridium: true + }; + } + + format(instance, value) { + if(!value) { + value = new Date; + } + + const hours = value.getHours(); + const groups = [ + hours > 12 ? hours - 12 : (hours === 0 ? 12 : hours), + value.getMinutes() + ]; + + this.meridium = hours > 12 ? 'pm' : 'am'; + + if(this.showSeconds) { + groups.push(value.getSeconds()); + } + + return groups; + } + + /** + * Define the name of the class. + * + * @return {string} + */ + static defineName() { + return 'TwelveHourClock'; + } +} diff --git a/src/js/Faces/TwentyFourHourClock.js b/src/js/Faces/TwentyFourHourClock.js new file mode 100644 index 00000000..814b1bd3 --- /dev/null +++ b/src/js/Faces/TwentyFourHourClock.js @@ -0,0 +1,62 @@ +import Face from '../Components/Face'; +import { callback } from '../Helpers/Functions'; + +/** + * @classdesc This face shows the current time in twenty-four hour format. + * @extends Face + * @param {(FaceValue|object)} value - The `Face` value. If not an instance + * of FaceValue, this argument is assumed to be the instance attributes. + * @param {(object|undefined)} [attributes] - The instance attributes. + * @memberof Faces + */ +export default class TwentyFourHourClock extends Face { + + defaultDataType() { + return Date; + } + + defaultValue() { + return new Date; + } + + defaultAttributes() { + return { + showSeconds: true, + showLabels: false + }; + } + + format(instance, value) { + if(!value) { + value = new Date; + } + + const groups = [ + [value.getHours()], + [value.getMinutes()] + ]; + + if(this.showSeconds) { + groups.push([value.getSeconds()]); + } + + return groups; + } + + increment(instance, offset = 0) { + instance.value = new Date(this.value.value.getTime() + offset + (new Date().getTime() - instance.timer.lastLoop)); + } + + decrement(instance, offset = 0) { + instance.value = new Date(this.value.value.getTime() - offset - (new Date().getTime() - instance.timer.lastLoop)); + } + + /** + * Define the name of the class. + * + * @return {string} + */ + static defineName() { + return 'TwentyFourHourClock'; + } +} diff --git a/src/js/Faces/WeekCounter.js b/src/js/Faces/WeekCounter.js new file mode 100644 index 00000000..6ae89803 --- /dev/null +++ b/src/js/Faces/WeekCounter.js @@ -0,0 +1,50 @@ +import DayCounter from './DayCounter'; + +/** + * @classdesc This face is meant to display a clock that shows weeks, days, + * hours, minutes, and seconds. + * @extends Face + * @param {(FaceValue|object)} value - The `Face` value. If not an instance + * of FaceValue, this argument is assumed to be the instance attributes. + * @param {(object|undefined)} [attributes] - The instance attributes. + * @memberof Faces + */ +export default class WeekCounter extends DayCounter { + + format(instance, value) { + const now = !instance.timer.started ? new Date : value; + const originalValue = instance.originalValue || value; + const a = !this.countdown ? now : originalValue; + const b = !this.countdown ? originalValue : now; + + const data = [ + [this.getWeeks(a, b)], + [this.getDays(a, b)], + [this.getHours(a, b)], + [this.getMinutes(a, b)] + ]; + + if(this.showSeconds) { + data.push([this.getSeconds(a, b)]); + } + + return data; + } + + getWeeks(a, b) { + return Math.floor(this.getTotalSeconds(a, b) / 60 / 60 / 24 / 7); + } + + getDays(a, b) { + return Math.abs(super.getDays(a, b) % 7); + } + + /** + * Define the name of the class. + * + * @return {string} + */ + static defineName() { + return 'WeekCounter'; + } +} diff --git a/src/js/Faces/YearCounter.js b/src/js/Faces/YearCounter.js new file mode 100644 index 00000000..0fa32ad5 --- /dev/null +++ b/src/js/Faces/YearCounter.js @@ -0,0 +1,51 @@ +import WeekCounter from './WeekCounter'; + +/** + * @classdesc This face is meant to display a clock that shows years, weeks, + * days, hours, minutes, and seconds. + * @extends Face + * @param {(FaceValue|object)} value - The `Face` value. If not an instance + * of FaceValue, this argument is assumed to be the instance attributes. + * @param {(object|undefined)} [attributes] - The instance attributes. + * @memberof Faces + */ +export default class YearCounter extends WeekCounter { + + format(instance, value) { + const now = !instance.timer.started ? new Date : value; + const originalValue = instance.originalValue || value; + const a = !this.countdown ? now : originalValue; + const b = !this.countdown ? originalValue : now; + + const data = [ + [this.getYears(a, b)], + [this.getWeeks(a, b)], + [this.getDays(a, b)], + [this.getHours(a, b)], + [this.getMinutes(a, b)] + ]; + + if(this.showSeconds) { + data.push([this.getSeconds(a, b)]); + } + + return data; + } + + getYears(a, b) { + return Math.floor(Math.max(0, this.getTotalSeconds(a, b) / 60 / 60 / 24 / 7 / 52)); + } + + getWeeks(a, b) { + return Math.abs(super.getWeeks(a, b) % 52); + } + + /** + * Define the name of the class. + * + * @return {string} + */ + static defineName() { + return 'YearCounter'; + } +} diff --git a/src/js/Faces/index.js b/src/js/Faces/index.js new file mode 100644 index 00000000..0e4a1967 --- /dev/null +++ b/src/js/Faces/index.js @@ -0,0 +1,27 @@ +/** + * Faces are classes that hook into the core of Flipclock to provide unique + * functionality. The core doesn't do a lot, except facilitate the interaction + * between all the components. The Face is what makes the clock "tick". + * + * @namespace Faces + */ + +import Counter from './Counter'; +import DayCounter from './DayCounter'; +import HourCounter from './HourCounter'; +import MinuteCounter from './MinuteCounter'; +import TwelveHourClock from './TwelveHourClock'; +import TwentyFourHourClock from './TwentyFourHourClock'; +import WeekCounter from './WeekCounter'; +import YearCounter from './YearCounter'; + +export { + Counter, + DayCounter, + MinuteCounter, + HourCounter, + TwelveHourClock, + TwentyFourHourClock, + WeekCounter, + YearCounter +}; diff --git a/src/js/Helpers/Digitize.js b/src/js/Helpers/Digitize.js new file mode 100644 index 00000000..65f884dd --- /dev/null +++ b/src/js/Helpers/Digitize.js @@ -0,0 +1,48 @@ +/** + * @namespace Helpers.Digitize + */ +import { flatten } from './Functions'; +import { deepFlatten } from './Functions'; + +/** + * Digitize a number, string, or an array into a digitized array. This function + * use by the `Face`, which convert the digitized array into an array of `List` + * instances. + * + * @function digitize + * @param {*} value - The value to digitize. + * @param {(Object|undefined)} [options] - The digitizer options. + * @return {array} - The digitized array. + * @memberof Helpers.Digitize + */ +export default function digitize(value, options) { + options = Object.assign({ + minimumDigits: 0, + prependLeadingZero: true + }, options); + + function prepend(number) { + const shouldPrependZero = options.prependLeadingZero && + number.toString().split('').length === 1; + + return (shouldPrependZero ? '0' : '').concat(number); + } + + function digits(arr, min) { + const length = deepFlatten(arr).length; + + if(length < min) { + for(let i = 0; i < min - length; i++) { + arr[0].unshift('0'); + } + } + + return arr; + } + + return digits(flatten([value]).map(number => { + return flatten(deepFlatten([number]).map(number => { + return prepend(number).split(''); + })); + }), options.minimumDigits || 0); +} diff --git a/src/js/Helpers/Functions.js b/src/js/Helpers/Functions.js new file mode 100644 index 00000000..3ca9564d --- /dev/null +++ b/src/js/Helpers/Functions.js @@ -0,0 +1,273 @@ +/** + * These are a collection of helper functions, some borrowed from Lodash, + * Underscore, etc, to provide common functionality without the need for using + * a dependency. All of this is an attempt to reduce the file size of the + * library. + * + * @namespace Helpers.Functions + */ + +/** + * Throw a string as an Error exception. + * + * @function error + * @param {string} string - The error message. + * @return {void} + * @memberof Helpers.Functions + */ +export function error(string) { + throw Error(string); +} + +/** + * Check if `fn` is a function, and call it with `this` context and pass the + * arguments. + * + * @function callback + * @param {string} string - The callback fn. + * @param {...*} args - The arguments to pass. + * @return {void} + * @memberof Helpers.Functions + */ +export function callback(fn, ...args) { + if(isFunction(fn)) { + return fn.call(this, ...args); + } +} + +/** + * Round the value to the correct value. Takes into account negative numbers. + * + * @function round + * @param {value} string - The value to round. + * @return {string} - The rounded value. + * @memberof Helpers.Functions + */ +export function round(value) { + return isNegativeZero( + value = isNegative(value) ? Math.ceil(value) : Math.floor(value) + ) ? ('-' + value).toString() : value; +} + +/** + * Returns `true` if `undefined or `null`. + * + * @function noop + * @param {value} string - The value to check. + * @return {boolean} - `true` if `undefined or `null`. + * @memberof Helpers.Functions + */ +export function noop(value) { + return !isUndefined(value) && !isNull(value); +} + +/** + * Returns a function that executes the `before` attribute and passes that value + * to `after` and the subsequent value is returned. + * + * @function chain + * @param {function} before - The first function to execute. + * @param {function} after - The subsequent function to execute. + * @return {function} - A function that executes the chain. + * @memberof Helpers.Functions + */ +export function chain(before, after) { + return () => after(before()); +} + +/** + * Returns a function that returns maps the values before concatenating them. + * + * @function concatMap + * @param {function} fn - The map callback function. + * @return {function} - A function that executes the map and concatenation. + * @memberof Helpers.Functions + */ +export function concatMap(fn) { + return x => { + return x.map(fn).reduce((x, y) => x.concat(y), []); + } +} + +/** + * Flatten an array. + * + * @function flatten + * @param {array} value - The array to flatten. + * @return {array} - The flattened array. + * @memberof Helpers.Functions + */ +export function flatten(value) { + return concatMap(value => value)(value) +} + +/** + * Deep flatten an array. + * + * @function deepFlatten + * @param {array} value - The array to flatten. + * @return {array} - The flattened array. + * @memberof Helpers.Functions + */ +export function deepFlatten(x) { + return concatMap(x => Array.isArray(x) ? deepFlatten (x) : x)(x); +} + +/** + * Capitalize the first letter in a string. + * + * @function ucfirst + * @param {string} string - The string to capitalize. + * @return {string} - The capitalized string. + * @memberof Helpers.Functions + */ +export function ucfirst(string) { + return string.charAt(0).toUpperCase() + string.slice(1); +} + +/** + * Returns the length of a deep flatten array. + * + * @function length + * @param {array} value - The array to count. + * @return {number} - The length of the deep flattened array. + * @memberof Helpers.Functions + */ +export function length(value) { + return deepFlatten(value).length; +} + +/** + * Determines if a value is a negative zero. + * + * @function isNegativeZero + * @param {number} value - The value to check. + * @return {boolean} - Returns `true` if the value is a negative zero (`-0`). + * @memberof Helpers.Functions + */ +export function isNegativeZero(value) { + return 1 / Math.round(value) === -Infinity; +} + +/** + * Determines if a value is a negative. + * + * @function isNegative + * @param {number} value - The value to check. + * @return {boolean} - Returns `true` if the value is a negative. + * @memberof Helpers.Functions + */ +export function isNegative(value) { + return isNegativeZero(value) || value < 0; +} + +/** + * Determines if a value is `null`. + * + * @function isNull + * @param {*} value - The value to check. + * @return {boolean} - Returns `true` if the value is a `null`. + * @memberof Helpers.Functions + */ +export function isNull(value) { + return value === null;// || typeof value === 'null'; +} + +/** + * Determines if a value is `undefined`. + * + * @function isNull + * @param {*} value - The value to check. + * @return {boolean} - Returns `true` if the value is a `undefined`. + * @memberof Helpers.Functions + */ +export function isUndefined(value) { + return typeof value === 'undefined'; +} + +/** + * Determines if a value is a constructor. + * + * @function isConstructor + * @param {*} value - The value to check. + * @return {boolean} - Returns `true` if the value is a constructor. + * @memberof Helpers.Functions + */ +export function isConstructor(value) { + return (value instanceof Function) && !!value.name; +} + +/** + * Determines if a value is a string. + * + * @function isString + * @param {*} value - The value to check. + * @return {boolean} - Returns `true` if the value is a string. + * @memberof Helpers.Functions + */ +export function isString(value) { + return typeof value === 'string'; +} + +/** + * Determines if a value is a array. + * + * @function isString + * @param {*} value - The value to check. + * @return {boolean} - Returns `true` if the value is a string. + * @memberof Helpers.Functions + */ +export function isArray(value) { + return value instanceof Array; +} + +/** + * Determines if a value is an object. + * + * @function isObject + * @param {*} value - The value to check. + * @return {boolean} - Returns `true` if the value is an object. + * @memberof Helpers.Functions + */ +export function isObject(value) { + const type = typeof value; + return value != null && !isArray(value) && ( + type == 'object' || type == 'function' + ); +} + +/** + * Determines if a value is a function. + * + * @function isObject + * @param {*} value - The value to check. + * @return {boolean} - Returns `true` if the value is a function. + * @memberof Helpers.Functions + */ +export function isFunction(value) { + return value instanceof Function; +} + +/** + * Determines if a value is a number. + * + * @function isObject + * @param {*} value - The value to check. + * @return {boolean} - Returns `true` if the value is a number. + * @memberof Helpers.Functions + */ +export function isNumber(value) { + return !isNaN(value); +} + +/** + * Converts a string into kebab case. + * + * @function kebabCase + * @param {string} string - The string to convert. + * @return {string} - The converted string. + * @memberof Helpers.Functions + */ +export function kebabCase(string) { + return string.replace(/([a-z])([A-Z])/g, '$1-$2').replace(/\s+/g, '-').toLowerCase(); +} diff --git a/src/js/Helpers/Language.js b/src/js/Helpers/Language.js new file mode 100644 index 00000000..3fedf798 --- /dev/null +++ b/src/js/Helpers/Language.js @@ -0,0 +1,19 @@ +/** + * @namespace Helpers.Language + */ +import * as LANGUAGES from '../Languages'; + +/** + * Return the language associated with the key. Returns `null` if no language is + * found. + * + * @function language + * @param {string} name - The name or id of the language. + * @return {object|null} - The language dictionary, or null if not found. + * @memberof Helpers.Language + */ +export default function language(name) { + return name ? LANGUAGES[name.toLowerCase()] || Object.values(LANGUAGES).find(value => { + return value.aliases.indexOf(name) !== -1; + }) : null; +} diff --git a/src/js/Helpers/Template.js b/src/js/Helpers/Template.js new file mode 100644 index 00000000..f88f35e2 --- /dev/null +++ b/src/js/Helpers/Template.js @@ -0,0 +1,100 @@ +/** + * A collection of functions to manage DOM nodes and theme templates. + * + * @namespace Helpers.Template + */ +import { noop } from './Functions'; +import { isArray } from './Functions'; +import { isObject } from './Functions'; +import { isString } from './Functions'; +import { deepFlatten } from './Functions'; + +/** + * Swap a new DOM node with an existing one. + * + * @function swap + * @param {HTMLElement} subject - The new DOM node. + * @param {HTMLElement} existing - The existing DOM node. + * @return {HTMLElement} - Returns the new element if it was mounted, otherwise + * the existing node is returned. + * @memberof Helpers.Template + */ +export function swap(subject, existing) { + if(existing.parentNode) { + existing.parentNode.replaceChild(subject, existing); + + return subject; + } + + return existing; +} + +/** + * Set the attribute of an element. + * + * @function setAttributes + * @param {HTMLElement} el - The DOM node that will receive the attributes. + * @param {Object|undefined} [attributes] - The attribute object, or if no object + * is passed, then the action is ignored. + * @return {HTMLElement} el - The DOM node that received the attributes. + * @memberof Helpers.Template + */ +export function setAttributes(el, attributes) { + if(isObject(attributes)) { + for(const i in attributes) { + el.setAttribute(i, attributes[i]); + } + } + + return el; +} + +/** + * Append an array of DOM nodes to a parent. + * + * @function appendChildren + * @param {HTMLElement} el - The parent DOM node. + * @param {Array|undefined} [children] - The array of children. If no array + * is passed, then the method silently fails to run. + * @return {HTMLElement} el - The DOM node that received the attributes. + * @memberof Helpers.Template + */ +export function appendChildren(el, children) { + if(isArray(children)) { + children.filter(noop).forEach(child => { + if(child instanceof HTMLElement) { + el.appendChild(child); + } + }); + } + + return el; +} + +/** + * Create a new HTMLElement instance. + * + * @function createElement + * @param {HTMLElement} el - The parent DOM node. + * @param {Array|undefined} [children] - The array of children. If no array + * is passed, then the method silently fails to run. + * @param {Object|undefined} [attributes] - The attributes object. + * @return {HTMLElement} el - The DOM node that received the attributes. + * @memberof Helpers.Template + */ +export function createElement(el, children, attributes) { + if(!(el instanceof HTMLElement)) { + el = document.createElement(el); + } + + setAttributes(el, isObject(children) ? children : attributes); + + if(!isObject(children) && !isArray(children)) { + el.innerHTML = children; + } + else { + appendChildren(el, children) + } + + return el; +} diff --git a/src/js/Helpers/Translate.js b/src/js/Helpers/Translate.js new file mode 100644 index 00000000..d0da8cd4 --- /dev/null +++ b/src/js/Helpers/Translate.js @@ -0,0 +1,22 @@ +/** + * @namespace Helpers.Translate + */ +import language from './Language'; +import { isString } from './Functions'; + +/** + * Translate an English string into another language. + * + * @function translate + * @param {string} string - The string to translate. + * @param {(string|object)} from - The language used to translate. If a string, + * the language is loaded into an object. + * @return {string} - If no diction key is found, the untranslated string is + * returned. + * @memberof Helpers.Translate + */ +export default function translate(string, from) { + const lang = isString(from) ? language(from) : from; + const dictionary = lang.dictionary || lang; + return dictionary[string] || string; +}; diff --git a/src/js/Helpers/Validate.js b/src/js/Helpers/Validate.js new file mode 100644 index 00000000..37e4a90e --- /dev/null +++ b/src/js/Helpers/Validate.js @@ -0,0 +1,33 @@ +/** + * @namespace Helpers.Validate + */ +import { isNull } from './Functions'; +import { flatten } from './Functions'; +import { isString } from './Functions'; +import { isObject } from './Functions'; +import { isFunction } from './Functions'; +import { isConstructor } from './Functions'; + +/** + * Validate the data type of a variable. + * + * @function validate + * @param {*} value - The value to validate. + * @param {...*} args - The data types to use for validate. + * @return {boolean} - Returns `true`is the value has a valid data type. + * @memberof Helpers.Validate + */ +export default function validate(value, ...args) { + let success = false; + + flatten(args).forEach(arg => { + if( (isNull(value) && isNull(arg)) || + (isObject(arg) && (value instanceof arg)) || + (isFunction(arg) && !isConstructor(arg) && arg(value) === true) || + (isString(arg) && (typeof value === arg))) { + success = true; + } + }); + + return success; +} diff --git a/src/js/Helpers/Value.js b/src/js/Helpers/Value.js new file mode 100644 index 00000000..10b2963b --- /dev/null +++ b/src/js/Helpers/Value.js @@ -0,0 +1,128 @@ +/** + * @namespace Helpers.Value + */ + +/** + * An array of objects with min/max ranges. + * + * @private + * @type {array} + */ +const RANGES = [{ + // 0-9 + min: 48, + max: 57 +},{ + // a-z + min: 65, + max: 90 +},{ + // A-Z + min: 97, + max: 122 +}]; + +/** + * Format a string into a new data type. Currently only supports string to + * number conversion. + * + * @private + * @function format + * @param {string} string - The string to format. + * @param {string} type - The data type (represented as a string) used to + * convert the string. + * @return {boolean} - Returns the formatted string. + */ +function format(string, type) { + switch(type) { + case 'number': + return parseFloat(string); + } + + return string; +} + +/** + * Find the range object from the `RANGES` constant from the character given. + * This is mainly an interval method, but can be used by faces to help + * determine what the next value of a string should be. + * + * @private + * @function format + * @param {string} char - The char used to determine the range. + * @param {string} type - The data type (represented as a string) used to + * convert the string. + * @return {boolean} - Returns the formatted string. + */ +function findRange(char) { + for(const i in RANGES) { + const code = char.toString().charCodeAt(0); + + if(RANGES[i].min <= code && RANGES[i].max >= code) { + return RANGES[i]; + } + } + + return null; +} + +/** + * Create a string from a character code, which is returned by the callback. + * + * @private + * @callback stringFromCharCodeBy + * @param {string} char - The char used to determine the range. + * @param {function} fn - The callback function receives `range` and `code` + * arguments. This function should return a character code. + * @return {string} - Creates a string from the character code returned by the + * callback function. + */ +function stringFromCharCodeBy(char, fn) { + return String.fromCharCode( + fn(findRange(char), char.charCodeAt(0)) + ); +} + +/** + * Calculate the next value for a string. 'a' becomes 'b'. 'A' becomes 'B'. 1 + * becomes 2, etc. If multiple character strings are passed, 'aa' would become + * 'bb'. + * + * @function next + * @param {(string|number)} value - The string or number to convert. + * @return {string} - The formatted string + * @memberof Helpers.Value + */ +export function next(value) { + const converted = (value) + .toString() + .split('') + .map(char => stringFromCharCodeBy(char, (range, code) => { + return !range || code < range.max ? code + 1 : range.min + })) + .join(''); + + return format(converted, typeof value); +} + +/** + * Calculate the prev value for a string. 'b' becomes 'a'. 'B' becomes 'A'. 2 + * becomes 1, 0 becomes 9, etc. If multiple character strings are passed, 'bb' + * would become 'aa'. + * + * @function prev + * @param {(string|number)} value - The string or number to convert. + * @return {string} - The formatted string + * @memberof Helpers.Value + */ +export function prev(value) { + const converted = (value) + .toString() + .split('') + .map(char => stringFromCharCodeBy(char, (range, code) => { + return !range || code > range.min ? code - 1 : range.max + })) + .join(''); + + return format(converted, typeof value); +} diff --git a/src/js/Helpers/index.js b/src/js/Helpers/index.js new file mode 100644 index 00000000..702ec2f8 --- /dev/null +++ b/src/js/Helpers/index.js @@ -0,0 +1,20 @@ +/** + * Helpers are static functions to handle the recurring logic in the library. + * Helpers can export one default function, or multiple functions into their + * namespace. + * + * @namespace Helpers + */ +import Digitize from './Digitize'; +import Language from './Language'; +import Translate from './Translate'; +import Validate from './Validate'; + +export * from './Functions'; +export * from './Template'; +export { + Digitize, + Language, + Translate, + Validate +} diff --git a/src/js/Languages/ar-ar.js b/src/js/Languages/ar-ar.js new file mode 100644 index 00000000..0ba71808 --- /dev/null +++ b/src/js/Languages/ar-ar.js @@ -0,0 +1,26 @@ +/** + * @classdesc Arabic Language Pack + * @desc This class will be used to translate tokens into the Arabic language. + * @namespace Languages.Arabic + */ + +/** + * @constant dictionary + * @type {object} + * @memberof Languages.Arabic + */ +export const dictionary = { + 'years' : 'سنوات', + 'months' : 'شهور', + 'days' : 'أيام', + 'hours' : 'ساعات', + 'minutes' : 'دقائق', + 'seconds' : 'ثواني' +}; + +/** + * @constant aliases + * @type {array} + * @memberof Languages.Arabic + */ +export const aliases = ['ar', 'ar-ar', 'arabic']; diff --git a/src/js/Languages/ca-es.js b/src/js/Languages/ca-es.js new file mode 100644 index 00000000..42a62c4f --- /dev/null +++ b/src/js/Languages/ca-es.js @@ -0,0 +1,26 @@ +/** + * @classdesc Catalan Language Pack + * @desc This class will used to translate tokens into the Catalan language. + * @namespace Languages.Catalan + */ + +/** + * @constant dictionary + * @type {object} + * @memberof Languages.Catalan + */ +export const dictionary = { + 'years' : 'Anys', + 'months' : 'Mesos', + 'days' : 'Dies', + 'hours' : 'Hores', + 'minutes' : 'Minuts', + 'seconds' : 'Segons' +}; + +/** + * @constant aliases + * @type {array} + * @memberof Languages.Catalan + */ +export const aliases = ['ca', 'ca-es', 'catalan']; diff --git a/src/js/Languages/cs-cz.js b/src/js/Languages/cs-cz.js new file mode 100644 index 00000000..6853f452 --- /dev/null +++ b/src/js/Languages/cs-cz.js @@ -0,0 +1,26 @@ +/** + * @classdesc Czech Language Pack + * @desc This class will used to translate tokens into the Czech language. + * @namespace Languages.Czech + */ + +/** + * @constant dictionary + * @type {object} + * @memberof Languages.Czech + */ +export const dictionary = { + 'years' : 'Roky', + 'months' : 'Měsíce', + 'days' : 'Dny', + 'hours' : 'Hodiny', + 'minutes' : 'Minuty', + 'seconds' : 'Sekundy' +}; + +/** + * @constant aliases + * @type {array} + * @memberof Languages.Czech + */ +export const aliases = ['cs', 'cs-cz', 'cz', 'cz-cs', 'czech']; diff --git a/src/js/Languages/da-dk.js b/src/js/Languages/da-dk.js new file mode 100644 index 00000000..36e217f7 --- /dev/null +++ b/src/js/Languages/da-dk.js @@ -0,0 +1,26 @@ +/** + * @classdesc Danish Language Pack + * @desc This class will used to translate tokens into the Danish language. + * @namespace Languages.Danish + */ + +/** + * @constant dictionary + * @type {object} + * @memberof Languages.Danish + */ +export const dictionary = { + 'years' : 'År', + 'months' : 'Måneder', + 'days' : 'Dage', + 'hours' : 'Timer', + 'minutes' : 'Minutter', + 'seconds' : 'Sekunder' +}; + +/** + * @constant aliases + * @type {array} + * @memberof Languages.Danish + */ +export const aliases = ['da', 'da-dk', 'danish']; diff --git a/src/js/Languages/de-de.js b/src/js/Languages/de-de.js new file mode 100644 index 00000000..b1ed7400 --- /dev/null +++ b/src/js/Languages/de-de.js @@ -0,0 +1,26 @@ +/** + * @classdesc German Language Pack + * @desc This class will used to translate tokens into the German language. + * @namespace Languages.German + */ + +/** + * @constant dictionary + * @type {object} + * @memberof Languages.German + */ +export const dictionary = { + 'years' : 'Jahre', + 'months' : 'Monate', + 'days' : 'Tage', + 'hours' : 'Stunden', + 'minutes' : 'Minuten', + 'seconds' : 'Sekunden' +}; + +/** + * @constant aliases + * @type {array} + * @memberof Languages.German + */ +export const aliases = ['de', 'de-de', 'german']; diff --git a/src/js/Languages/en-us.js b/src/js/Languages/en-us.js new file mode 100644 index 00000000..b98c99e0 --- /dev/null +++ b/src/js/Languages/en-us.js @@ -0,0 +1,26 @@ +/** + * @classdesc English Language Pack + * @desc This class will used to translate tokens into the English language. + * @namespace Languages.English + */ + +/** + * @constant dictionary + * @type {object} + * @memberof Languages.English + */ +export const dictionary = { + 'years' : 'Years', + 'months' : 'Months', + 'days' : 'Days', + 'hours' : 'Hours', + 'minutes' : 'Minutes', + 'seconds' : 'Seconds' +}; + +/** + * @constant aliases + * @type {array} + * @memberof Languages.English + */ +export const aliases = ['en', 'en-us', 'english']; diff --git a/src/js/Languages/es-es.js b/src/js/Languages/es-es.js new file mode 100644 index 00000000..4f193e56 --- /dev/null +++ b/src/js/Languages/es-es.js @@ -0,0 +1,26 @@ +/** + * @classdesc Spanish Language Pack + * @desc This class will used to translate tokens into the Spanish language. + * @namespace Languages.Spanish + */ + +/** + * @constant dictionary + * @type {object} + * @memberof Languages.Spanish + */ +export const dictionary = { + 'years' : 'Años', + 'months' : 'Meses', + 'days' : 'Días', + 'hours' : 'Horas', + 'minutes' : 'Minutos', + 'seconds' : 'Segundos' +}; + +/** + * @constant aliases + * @type {array} + * @memberof Languages.Spanish + */ +export const aliases = ['es', 'es-es', 'spanish']; diff --git a/src/js/Languages/fa-ir.js b/src/js/Languages/fa-ir.js new file mode 100644 index 00000000..6dd2c696 --- /dev/null +++ b/src/js/Languages/fa-ir.js @@ -0,0 +1,26 @@ +/** + * @classdesc Persian Language Pack + * @desc This class will used to translate tokens into the Persian language. + * @namespace Languages.Persian + */ + +/** + * @constant dictionary + * @type {object} + * @memberof Languages.Persian + */ +export const dictionary = { + 'years' : 'سال', + 'months' : 'ماه', + 'days' : 'روز', + 'hours' : 'ساعت', + 'minutes' : 'دقیقه', + 'seconds' : 'ثانیه' +}; + +/** + * @constant aliases + * @type {array} + * @memberof Languages.Persian + */ +export const aliases = ['fa', 'fa-ir', 'persian']; diff --git a/src/js/Languages/fi-fi.js b/src/js/Languages/fi-fi.js new file mode 100644 index 00000000..1c391685 --- /dev/null +++ b/src/js/Languages/fi-fi.js @@ -0,0 +1,26 @@ +/** + * @classdesc Finnish Language Pack + * @desc This class will used to translate tokens into the Finnish language. + * @namespace Languages.Finnish + */ + +/** + * @constant dictionary + * @type {object} + * @memberof Languages.Finnish + */ +export const dictionary = { + 'years' : 'Vuotta', + 'months' : 'Kuukautta', + 'days' : 'Päivää', + 'hours' : 'Tuntia', + 'minutes' : 'Minuuttia', + 'seconds' : 'Sekuntia' +}; + +/** + * @constant aliases + * @type {array} + * @memberof Languages.Finnish + */ +export const aliases = ['fi', 'fi-fi', 'finnish']; diff --git a/src/js/Languages/fr-ca.js b/src/js/Languages/fr-ca.js new file mode 100644 index 00000000..8098ce3a --- /dev/null +++ b/src/js/Languages/fr-ca.js @@ -0,0 +1,26 @@ +/** + * @classdesc Canadian French Language Pack + * @desc This class will used to translate tokens into the Canadian French language. + * @namespace Languages.CanadianFrench + */ + +/** + * @constant dictionary + * @type {object} + * @memberof Languages.CanadianFrench + */ +export const dictionary = { + 'years' : 'Ans', + 'months' : 'Mois', + 'days' : 'Jours', + 'hours' : 'Heures', + 'minutes' : 'Minutes', + 'seconds' : 'Secondes' +}; + +/** + * @constant aliases + * @type {array} + * @memberof Languages.CanadianFrench + */ +export const aliases = ['fr', 'fr-ca', 'french']; diff --git a/src/js/Languages/he-il.js b/src/js/Languages/he-il.js new file mode 100644 index 00000000..666c5b90 --- /dev/null +++ b/src/js/Languages/he-il.js @@ -0,0 +1,26 @@ +/** + * @classdesc Hebrew Language Pack + * @desc This class will used to translate tokens into the Hebrew language. + * @namespace Languages.Hebrew + */ + +/** + * @constant dictionary + * @type {object} + * @memberof Languages.Hebrew + */ +export const dictionary = { + 'years' : 'שנים', + 'months' : 'חודש', + 'days' : 'ימים', + 'hours' : 'שעות', + 'minutes' : 'דקות', + 'seconds' : 'שניות' +}; + +/** + * @constant aliases + * @type {array} + * @memberof Languages.Hebrew + */ +export const aliases = ['il', 'he-il', 'hebrew']; diff --git a/src/js/Languages/hu-hu.js b/src/js/Languages/hu-hu.js new file mode 100644 index 00000000..0846b6ae --- /dev/null +++ b/src/js/Languages/hu-hu.js @@ -0,0 +1,26 @@ +/** + * @classdesc Hungarian Language Pack + * @desc This class will used to translate tokens into the Hungarian language. + * @namespace Languages.Hungarian + */ + +/** + * @constant dictionary + * @type {object} + * @memberof Languages.Hungarian + */ +export const dictionary = { + 'years' : 'Év', + 'months' : 'Hónap', + 'days' : 'Nap', + 'hours' : 'Óra', + 'minutes' : 'Perc', + 'seconds' : 'Másodperc' +}; + +/** + * @constant aliases + * @type {array} + * @memberof Languages.Hungarian + */ +export const aliases = ['hu', 'hu-hu', 'hungarian']; diff --git a/src/js/Languages/index.js b/src/js/Languages/index.js new file mode 100644 index 00000000..569ae081 --- /dev/null +++ b/src/js/Languages/index.js @@ -0,0 +1,66 @@ +/** + * @namespace Languages + */ +import * as Arabic from './ar-ar'; +import * as Catalan from './ca-es'; +import * as Czech from './cs-cz'; +import * as Danish from './da-dk'; +import * as German from './de-de'; +import * as English from './en-us'; +import * as Spanish from './es-es'; +import * as Persian from './fa-ir'; +import * as Finnish from './fi-fi'; +import * as French from './fr-ca'; +import * as Hebrew from './he-il'; +import * as Hungarian from './hu-hu'; +import * as Italian from './it-it'; +import * as Japanese from './ja-jp'; +import * as Korean from './ko-kr'; +import * as Latvian from './lv-lv'; +import * as Dutch from './nl-be'; +import * as Norwegian from './no-nb'; +import * as Polish from './pl-pl'; +import * as Portuguese from './pt-br'; +import * as Romanian from './ro-ro'; +import * as Russian from './ru-ru'; +import * as Slovak from './sk-sk'; +import * as Swedish from './sv-se'; +import * as Thai from './th-th'; +import * as Turkish from './tr-tr'; +import * as Ukrainian from './ua-ua'; +import * as Vietnamese from './vn-vn'; +import * as Chinese from './zh-cn'; +import * as TraditionalChinese from './zh-tw'; + +export { + Arabic, + Catalan, + Czech, + Danish, + German, + English, + Spanish, + Persian, + Finnish, + French, + Hebrew, + Hungarian, + Italian, + Japanese, + Korean, + Latvian, + Dutch, + Norwegian, + Polish, + Portuguese, + Romanian, + Russian, + Slovak, + Swedish, + Thai, + Turkish, + Ukrainian, + Vietnamese, + Chinese, + TraditionalChinese +} diff --git a/src/js/Languages/it-it.js b/src/js/Languages/it-it.js new file mode 100644 index 00000000..f5a9f05a --- /dev/null +++ b/src/js/Languages/it-it.js @@ -0,0 +1,26 @@ +/** + * @classdesc Italian Language Pack + * @desc This class will used to translate tokens into the Italian language. + * @namespace Languages.Italian + */ + +/** + * @constant dictionary + * @type {object} + * @memberof Languages.Italian + */ +export const dictionary = { + 'years' : 'Anni', + 'months' : 'Mesi', + 'days' : 'Giorni', + 'hours' : 'Ore', + 'minutes' : 'Minuti', + 'seconds' : 'Secondi' +}; + +/** + * @constant aliases + * @type {array} + * @memberof Languages.Italian + */ +export const aliases = ['da', 'da-dk', 'danish']; diff --git a/src/js/Languages/ja-jp.js b/src/js/Languages/ja-jp.js new file mode 100644 index 00000000..dbfceb0f --- /dev/null +++ b/src/js/Languages/ja-jp.js @@ -0,0 +1,26 @@ +/** + * @classdesc Japanese Language Pack + * @desc This class will used to translate tokens into the Japanese language. + * @namespace Languages.Japanese + */ + +/** + * @constant dictionary + * @type {object} + * @memberof Languages.Japanese + */ +export const dictionary = { + 'years' : '年', + 'months' : '月', + 'days' : '日', + 'hours' : '時', + 'minutes' : '分', + 'seconds' : '秒' +}; + +/** + * @constant aliases + * @type {array} + * @memberof Languages.Japanese + */ +export const aliases = ['jp', 'ja-jp', 'japanese']; diff --git a/src/js/Languages/ko-kr.js b/src/js/Languages/ko-kr.js new file mode 100644 index 00000000..33431a7e --- /dev/null +++ b/src/js/Languages/ko-kr.js @@ -0,0 +1,26 @@ +/** + * @classdesc Korean Language Pack + * @desc This class will used to translate tokens into the Korean language. + * @namespace Languages.Korean + */ + +/** + * @constant dictionary + * @type {object} + * @memberof Languages.Korean + */ +export const dictionary = { + 'years' : '년', + 'months' : '월', + 'days' : '일', + 'hours' : '시', + 'minutes' : '분', + 'seconds' : '초' +}; + +/** + * @constant aliases + * @type {array} + * @memberof Languages.Korean + */ +export const aliases = ['ko', 'ko-kr', 'korean']; diff --git a/src/js/Languages/lv-lv.js b/src/js/Languages/lv-lv.js new file mode 100644 index 00000000..b7110cfd --- /dev/null +++ b/src/js/Languages/lv-lv.js @@ -0,0 +1,26 @@ +/** + * @classdesc Latvian Language Pack + * @desc This class will used to translate tokens into the Latvian language. + * @namespace Languages.Latvian + */ + +/** + * @constant dictionary + * @type {object} + * @memberof Languages.Latvian + */ +export const dictionary = { + 'years' : 'Gadi', + 'months' : 'Mēneši', + 'days' : 'Dienas', + 'hours' : 'Stundas', + 'minutes' : 'Minūtes', + 'seconds' : 'Sekundes' +}; + +/** + * @constant aliases + * @type {array} + * @memberof Languages.Latvian + */ +export const aliases = ['lv', 'lv-lv', 'latvian']; diff --git a/src/js/Languages/nl-be.js b/src/js/Languages/nl-be.js new file mode 100644 index 00000000..f46ffc41 --- /dev/null +++ b/src/js/Languages/nl-be.js @@ -0,0 +1,26 @@ +/** + * @classdesc Dutch Language Pack + * @desc This class will used to translate tokens into the Dutch language. + * @namespace Languages.Dutch + */ + +/** + * @constant dictionary + * @type {object} + * @memberof Languages.Dutch + */ +export const dictionary = { + 'years' : 'Jaren', + 'months' : 'Maanden', + 'days' : 'Dagen', + 'hours' : 'Uren', + 'minutes' : 'Minuten', + 'seconds' : 'Seconden' +}; + +/** + * @constant aliases + * @type {array} + * @memberof Languages.Dutch + */ +export const aliases = ['nl', 'nl-be', 'dutch']; diff --git a/src/js/Languages/no-nb.js b/src/js/Languages/no-nb.js new file mode 100644 index 00000000..abfadcd9 --- /dev/null +++ b/src/js/Languages/no-nb.js @@ -0,0 +1,26 @@ +/** + * @classdesc Norwegian-Bokmål Language Pack + * @desc This class will used to translate tokens into the Norwegian-Bokmål language. + * @namespace Languages.Norwegian + */ + +/** + * @constant dictionary + * @type {object} + * @memberof Languages.Norwegian + */ +export const dictionary = { + 'years' : 'År', + 'months' : 'Måneder', + 'days' : 'Dager', + 'hours' : 'Timer', + 'minutes' : 'Minutter', + 'seconds' : 'Sekunder' +}; + +/** + * @constant aliases + * @type {array} + * @memberof Languages.Norwegian + */ +export const aliases = ['no', 'nb', 'no-nb', 'norwegian']; diff --git a/src/js/Languages/pl-pl.js b/src/js/Languages/pl-pl.js new file mode 100644 index 00000000..b8e0488f --- /dev/null +++ b/src/js/Languages/pl-pl.js @@ -0,0 +1,26 @@ +/** + * @classdesc Polish Language Pack + * @desc This class will used to translate tokens into the Polish language. + * @namespace Languages.Polish + */ + +/** + * @constant dictionary + * @type {object} + * @memberof Languages.Polish + */ +export const dictionary = { + 'years' : 'Lat', + 'months' : 'Miesięcy', + 'days' : 'Dni', + 'hours' : 'Godziny', + 'minutes' : 'Minuty', + 'seconds' : 'Sekundy' +}; + +/** + * @constant aliases + * @type {array} + * @memberof Languages.Polish + */ +export const aliases = ['pl', 'pl-pl', 'polish']; diff --git a/src/js/Languages/pt-br.js b/src/js/Languages/pt-br.js new file mode 100644 index 00000000..1c37d1d8 --- /dev/null +++ b/src/js/Languages/pt-br.js @@ -0,0 +1,26 @@ +/** + * @classdesc Portuguese Language Pack + * @desc This class will used to translate tokens into the Portuguese language. + * @namespace Languages.Portuguese + */ + +/** + * @constant dictionary + * @type {object} + * @memberof Languages.Portuguese + */ +export const dictionary = { + 'years' : 'Anos', + 'months' : 'Meses', + 'days' : 'Dias', + 'hours' : 'Horas', + 'minutes' : 'Minutos', + 'seconds' : 'Segundos' +}; + +/** + * @constant aliases + * @type {array} + * @memberof Languages.Portuguese + */ +export const aliases = ['pt', 'pt-br', 'portuguese']; diff --git a/src/js/Languages/ro-ro.js b/src/js/Languages/ro-ro.js new file mode 100644 index 00000000..ae5c90f8 --- /dev/null +++ b/src/js/Languages/ro-ro.js @@ -0,0 +1,26 @@ +/** + * @classdesc Romanian Language Pack + * @desc This class will used to translate tokens into the Romanian language. + * @namespace Languages.Romanian + */ + +/** + * @constant dictionary + * @type {object} + * @memberof Languages.Romanian + */ +export const dictionary = { + 'years': 'Ani', + 'months': 'Luni', + 'days': 'Zile', + 'hours': 'Ore', + 'minutes': 'Minute', + 'seconds': 'sSecunde' +}; + +/** + * @constant aliases + * @type {array} + * @memberof Languages.Romanian + */ +export const aliases = ['ro', 'ro-ro', 'romana']; diff --git a/src/js/Languages/ru-ru.js b/src/js/Languages/ru-ru.js new file mode 100644 index 00000000..3222ec96 --- /dev/null +++ b/src/js/Languages/ru-ru.js @@ -0,0 +1,26 @@ +/** + * @classdesc Russian Language Pack + * @desc This class will used to translate tokens into the Russian language. + * @namespace Languages.Russian + */ + +/** + * @constant dictionary + * @type {object} + * @memberof Languages.Russian + */ +export const dictionary = { + 'years' : 'лет', + 'months' : 'месяцев', + 'days' : 'дней', + 'hours' : 'часов', + 'minutes' : 'минут', + 'seconds' : 'секунд' +}; + +/** + * @constant aliases + * @type {array} + * @memberof Languages.Russian + */ +export const aliases = ['ru', 'ru-ru', 'russian']; diff --git a/src/js/Languages/sk-sk.js b/src/js/Languages/sk-sk.js new file mode 100644 index 00000000..0198f2d4 --- /dev/null +++ b/src/js/Languages/sk-sk.js @@ -0,0 +1,26 @@ +/** + * @classdesc Slovak Language Pack + * @desc This class will used to translate tokens into the Slovak language. + * @namespace Languages.Slovak + */ + +/** + * @constant dictionary + * @type {object} + * @memberof Languages.Slovak + */ +export const dictionary = { + 'years' : 'Roky', + 'months' : 'Mesiace', + 'days' : 'Dni', + 'hours' : 'Hodiny', + 'minutes' : 'Minúty', + 'seconds' : 'Sekundy' +}; + +/** + * @constant aliases + * @type {array} + * @memberof Languages.Slovak + */ +export const aliases = ['sk', 'sk-sk', 'slovak']; diff --git a/src/js/Languages/sv-se.js b/src/js/Languages/sv-se.js new file mode 100644 index 00000000..69709728 --- /dev/null +++ b/src/js/Languages/sv-se.js @@ -0,0 +1,26 @@ +/** + * @classdesc Swedish Language Pack + * @desc This class will used to translate tokens into the Swedish language. + * @namespace Languages.Swedish + */ + +/** + * @constant dictionary + * @type {object} + * @memberof Languages.Swedish + */ +export const dictionary = { + 'years' : 'År', + 'months' : 'Månader', + 'days' : 'Dagar', + 'hours' : 'Timmar', + 'minutes' : 'Minuter', + 'seconds' : 'Sekunder' +}; + +/** + * @constant aliases + * @type {array} + * @memberof Languages.Swedish + */ +export const aliases = ['sv', 'sv-se', 'swedish']; diff --git a/src/js/Languages/th-th.js b/src/js/Languages/th-th.js new file mode 100644 index 00000000..15cc48e9 --- /dev/null +++ b/src/js/Languages/th-th.js @@ -0,0 +1,26 @@ +/** + * @classdesc Thai Language Pack + * @desc This class will used to translate tokens into the Thai language. + * @namespace Languages.Thai + */ + +/** + * @constant dictionary + * @type {object} + * @memberof Languages.Thai + */ +export const dictionary = { + 'years' : 'ปี', + 'months' : 'เดือน', + 'days' : 'วัน', + 'hours' : 'ชั่วโมง', + 'minutes' : 'นาที', + 'seconds' : 'วินาที' +}; + +/** + * @constant aliases + * @type {array} + * @memberof Languages.Thai + */ +export const aliases = ['th', 'th-th', 'thai']; diff --git a/src/js/Languages/tr-tr.js b/src/js/Languages/tr-tr.js new file mode 100644 index 00000000..39bb040a --- /dev/null +++ b/src/js/Languages/tr-tr.js @@ -0,0 +1,26 @@ +/** + * @classdesc Turkish Language Pack + * @desc This class will used to translate tokens into the Turkish language. + * @namespace Languages.Turkish + */ + +/** + * @constant dictionary + * @type {object} + * @memberof Languages.Turkish + */ +export const dictionary = { + 'years' : 'Yıl', + 'months' : 'Ay', + 'days' : 'Gün', + 'hours' : 'Saat', + 'minutes' : 'Dakika', + 'seconds' : 'Saniye' +}; + +/** + * @constant aliases + * @type {array} + * @memberof Languages.Turkish + */ +export const aliases = ['tr', 'tr-tr', 'turkish']; diff --git a/src/js/Languages/ua-ua.js b/src/js/Languages/ua-ua.js new file mode 100644 index 00000000..497ecb6c --- /dev/null +++ b/src/js/Languages/ua-ua.js @@ -0,0 +1,26 @@ +/** + * @classdesc Ukrainian Language Pack + * @desc This class will used to translate tokens into the Ukrainian language. + * @namespace Languages.Ukrainian + */ + +/** + * @constant dictionary + * @type {object} + * @memberof Languages.Ukrainian + */ +export const dictionary = { + 'years' : 'роки', + 'months' : 'місяці', + 'days' : 'дні', + 'hours' : 'години', + 'minutes' : 'хвилини', + 'seconds' : 'секунди' +}; + +/** + * @constant aliases + * @type {array} + * @memberof Languages.Ukrainian + */ +export const aliases = ['ua', 'ua-ua', 'ukraine']; diff --git a/src/js/Languages/vn-vn.js b/src/js/Languages/vn-vn.js new file mode 100644 index 00000000..52330b46 --- /dev/null +++ b/src/js/Languages/vn-vn.js @@ -0,0 +1,26 @@ +/** + * @classdesc Vietnamese Language Pack + * @desc This class will used to translate tokens into the Vietnamese language. + * @namespace Languages.Vietnamese + */ + +/** + * @constant dictionary + * @type {object} + * @memberof Languages.Vietnamese + */ +export const dictionary = { + 'years' : 'Năm', + 'months' : 'Tháng', + 'days' : 'Ngày', + 'hours' : 'Giờ', + 'minutes' : 'Phút', + 'seconds' : 'Giây' +}; + +/** + * @constant aliases + * @type {array} + * @memberof Languages.Vietnamese + */ +export const aliases = ['vn', 'vn-vn', 'vietnamese']; diff --git a/src/js/Languages/zh-cn.js b/src/js/Languages/zh-cn.js new file mode 100644 index 00000000..49887b12 --- /dev/null +++ b/src/js/Languages/zh-cn.js @@ -0,0 +1,26 @@ +/** + * @classdesc Chinese Language Pack + * @desc This class will used to translate tokens into the Chinese language. + * @namespace Languages.Chinese + */ + +/** + * @constant dictionary + * @type {object} + * @memberof Languages.Chinese + */ +export const dictionary = { + 'years' : '年', + 'months' : '月', + 'days' : '日', + 'hours' : '时', + 'minutes' : '分', + 'seconds' : '秒' +}; + +/** + * @constant aliases + * @type {array} + * @memberof Languages.Chinese + */ +export const aliases = ['zh', 'zh-cn', 'chinese']; diff --git a/src/js/Languages/zh-tw.js b/src/js/Languages/zh-tw.js new file mode 100644 index 00000000..18372a52 --- /dev/null +++ b/src/js/Languages/zh-tw.js @@ -0,0 +1,26 @@ +/** + * @classdesc Traditional Chinese Language Pack + * @desc This class will used to translate tokens into the Traditional Chinese language. + * @namespace Languages.TraditionalChinese + */ + +/** + * @constant dictionary + * @type {object} + * @memberof Languages.TraditionalChinese + */ +export const dictionary = { + 'years' : '年', + 'months' : '月', + 'days' : '日', + 'hours' : '時', + 'minutes' : '分', + 'seconds' : '秒' +}; + +/** + * @constant aliases + * @type {array} + * @memberof Languages.TraditionalChinese + */ +export const aliases = ['zh-tw']; diff --git a/src/js/Themes/Original/Divider.js b/src/js/Themes/Original/Divider.js new file mode 100644 index 00000000..03a0fd20 --- /dev/null +++ b/src/js/Themes/Original/Divider.js @@ -0,0 +1,8 @@ +import { appendChildren, createElement } from '../../Helpers/Template'; + +export default function(el, instance) { + appendChildren(el, [ + createElement('div', {class: 'flip-clock-dot top'}), + createElement('div', {class: 'flip-clock-dot bottom'}) + ]); +} diff --git a/src/js/Themes/Original/Faces/DayCounter.js b/src/js/Themes/Original/Faces/DayCounter.js new file mode 100644 index 00000000..b0ea7eea --- /dev/null +++ b/src/js/Themes/Original/Faces/DayCounter.js @@ -0,0 +1,18 @@ +export default function(el, instance) { + instance.createDivider().mount(el, el.childNodes[1]); + instance.createDivider().mount(el, el.childNodes[3]); + + if(instance.face.showSeconds) { + instance.createDivider().mount(el, el.childNodes[5]); + } + + if(instance.face.showLabels) { + instance.createLabel('days').mount(el.childNodes[0]); + instance.createLabel('hours').mount(el.childNodes[2]); + instance.createLabel('minutes').mount(el.childNodes[4]); + + if(instance.face.showSeconds) { + instance.createLabel('seconds').mount(el.childNodes[6]); + } + } +} diff --git a/src/js/Themes/Original/Faces/HourCounter.js b/src/js/Themes/Original/Faces/HourCounter.js new file mode 100644 index 00000000..7a9fbf25 --- /dev/null +++ b/src/js/Themes/Original/Faces/HourCounter.js @@ -0,0 +1,16 @@ +export default function(el, instance) { + instance.createDivider().mount(el, el.childNodes[1]); + + if(instance.face.showSeconds) { + instance.createDivider().mount(el, el.childNodes[3]); + } + + if(instance.face.showLabels) { + instance.createLabel('hours').mount(el.childNodes[0]); + instance.createLabel('minutes').mount(el.childNodes[2]); + + if(instance.face.showSeconds) { + instance.createLabel('seconds').mount(el.childNodes[4]); + } + } +} diff --git a/src/js/Themes/Original/Faces/MinuteCounter.js b/src/js/Themes/Original/Faces/MinuteCounter.js new file mode 100644 index 00000000..b59d3d66 --- /dev/null +++ b/src/js/Themes/Original/Faces/MinuteCounter.js @@ -0,0 +1,13 @@ +export default function(el, instance) { + if(instance.face.showSeconds) { + instance.createDivider().mount(el, el.childNodes[1]); + } + + if(instance.face.showLabels) { + instance.createLabel('minutes').mount(el.childNodes[0]); + + if(instance.face.showSeconds) { + instance.createLabel('seconds').mount(el.childNodes[2]); + } + } +} diff --git a/src/js/Themes/Original/Faces/TwelveHourClock.js b/src/js/Themes/Original/Faces/TwelveHourClock.js new file mode 100644 index 00000000..11788669 --- /dev/null +++ b/src/js/Themes/Original/Faces/TwelveHourClock.js @@ -0,0 +1,12 @@ +import TwentyFourHourClock from './TwentyFourHourClock'; + +export default function(el, instance) { + TwentyFourHourClock(el, instance); + + if(instance.face.showMeridium && instance.face.meridium) { + const label = instance.createLabel(instance.face.meridium); + const parent = el.childNodes[el.childNodes.length - 1]; + + label.mount(parent).classList.add('flip-clock-meridium'); + } +} diff --git a/src/js/Themes/Original/Faces/TwentyFourHourClock.js b/src/js/Themes/Original/Faces/TwentyFourHourClock.js new file mode 100644 index 00000000..c07e86c3 --- /dev/null +++ b/src/js/Themes/Original/Faces/TwentyFourHourClock.js @@ -0,0 +1,17 @@ +export default function(el, instance) { + instance.createDivider().mount(el, el.childNodes[1]); + + if(instance.face.showSeconds) { + instance.createDivider().mount(el, el.childNodes[3]); + } + + if(instance.face.showLabels) { + instance.createLabel('hours').mount(el.childNodes[0]); + instance.createLabel('minutes').mount(el.childNodes[2]); + + if(instance.face.showSeconds) { + instance.createLabel('seconds').mount(el.childNodes[4]); + } + } + +} diff --git a/src/js/Themes/Original/Faces/WeekCounter.js b/src/js/Themes/Original/Faces/WeekCounter.js new file mode 100644 index 00000000..784c1c20 --- /dev/null +++ b/src/js/Themes/Original/Faces/WeekCounter.js @@ -0,0 +1,20 @@ +export default function(el, instance) { + instance.createDivider().mount(el, el.childNodes[1]); + instance.createDivider().mount(el, el.childNodes[3]); + instance.createDivider().mount(el, el.childNodes[5]); + + if(instance.face.showSeconds) { + instance.createDivider().mount(el, el.childNodes[7]); + } + + if(instance.face.showLabels) { + instance.createLabel('weeks').mount(el.childNodes[0]); + instance.createLabel('days').mount(el.childNodes[2]); + instance.createLabel('hours').mount(el.childNodes[4]); + instance.createLabel('minutes').mount(el.childNodes[6]); + + if(instance.face.showSeconds) { + instance.createLabel('seconds').mount(el.childNodes[8]); + } + } +} diff --git a/src/js/Themes/Original/Faces/YearCounter.js b/src/js/Themes/Original/Faces/YearCounter.js new file mode 100644 index 00000000..f9c07c03 --- /dev/null +++ b/src/js/Themes/Original/Faces/YearCounter.js @@ -0,0 +1,22 @@ +export default function(el, instance) { + instance.createDivider().mount(el, el.childNodes[1]); + instance.createDivider().mount(el, el.childNodes[3]); + instance.createDivider().mount(el, el.childNodes[5]); + instance.createDivider().mount(el, el.childNodes[7]); + + if(instance.face.showSeconds) { + instance.createDivider().mount(el, el.childNodes[9]); + } + + if(instance.face.showLabels) { + instance.createLabel('years').mount(el.childNodes[0]); + instance.createLabel('weeks').mount(el.childNodes[2]); + instance.createLabel('days').mount(el.childNodes[4]); + instance.createLabel('hours').mount(el.childNodes[6]); + instance.createLabel('minutes').mount(el.childNodes[8]); + + if(instance.face.showSeconds) { + instance.createLabel('seconds').mount(el.childNodes[10]); + } + } +} diff --git a/src/js/Themes/Original/Faces/index.js b/src/js/Themes/Original/Faces/index.js new file mode 100644 index 00000000..447f0f60 --- /dev/null +++ b/src/js/Themes/Original/Faces/index.js @@ -0,0 +1,17 @@ +import DayCounter from './DayCounter'; +import HourCounter from './HourCounter'; +import MinuteCounter from './MinuteCounter'; +import TwelveHourClock from './TwelveHourClock'; +import TwentyFourHourClock from './TwentyFourHourClock'; +import WeekCounter from './WeekCounter'; +import YearCounter from './YearCounter'; + +export { + DayCounter, + HourCounter, + MinuteCounter, + TwelveHourClock, + TwentyFourHourClock, + WeekCounter, + YearCounter +}; diff --git a/src/js/Themes/Original/FlipClock.js b/src/js/Themes/Original/FlipClock.js new file mode 100644 index 00000000..bfde79cd --- /dev/null +++ b/src/js/Themes/Original/FlipClock.js @@ -0,0 +1,35 @@ +import { next } from '../../Helpers/Value'; +import { appendChildren } from '../../Helpers/Template'; + +function child(el, index) { + return el ? (el.childNodes ? el.childNodes[index] : el[index]) : null; +} + +function char(el) { + return el ? el.querySelector('.flip-clock-list-item:first-child .top').innerHTML : null; +} + +export default function(el, instance) { + const parts = instance.value.digits.map((group, x) => { + const groupEl = child(instance.el ? instance.el.querySelectorAll('.flip-clock-group') : null, x); + + const lists = group.map((value, y) => { + const listEl = child(groupEl ? groupEl.querySelectorAll('.flip-clock-list') : null, y); + const listValue = char(listEl); + + return instance.createList(value, { + domValue: listValue, + countdown: instance.countdown, + animationRate: instance.face.animationRate || instance.face.delay + }); + }); + + return instance.createGroup(lists); + }); + + const nodes = parts.map(group => { + return group.render(); + }); + + appendChildren(el, nodes); +} diff --git a/src/js/Themes/Original/Group.js b/src/js/Themes/Original/Group.js new file mode 100644 index 00000000..b5be1ac6 --- /dev/null +++ b/src/js/Themes/Original/Group.js @@ -0,0 +1,9 @@ +import { createElement, appendChildren } from '../../Helpers/Template'; + +export default function(el, instance) { + const items = instance.items.map(item => { + return item.render(); + }); + + appendChildren(el, items); +} diff --git a/src/js/Themes/Original/Label.js b/src/js/Themes/Original/Label.js new file mode 100644 index 00000000..735de7ee --- /dev/null +++ b/src/js/Themes/Original/Label.js @@ -0,0 +1,5 @@ +import { createElement } from '../../Helpers/Template'; + +export default function(el, instance) { + el.innerHTML = instance.t(instance.label); +} diff --git a/src/js/Themes/Original/List.js b/src/js/Themes/Original/List.js new file mode 100644 index 00000000..cd397099 --- /dev/null +++ b/src/js/Themes/Original/List.js @@ -0,0 +1,27 @@ +import { next, prev } from '../../Helpers/Value'; +import ListItem from '../../Components/ListItem'; +import { createElement, appendChildren } from '../../Helpers/Template'; + +export default function(el, instance) { + const beforeValue = instance.domValue || ( + !instance.countdown ? prev(instance.value) : next(instance.value) + ); + + if( instance.domValue && instance.domValue !== instance.value) { + el.classList.add('flip'); + } + + el.style.animationDelay = `${instance.animationRate / 2}ms`; + el.style.animationDuration = `${instance.animationRate / 2}ms`; + + instance.items = [ + instance.createListItem(instance.value, { + active: true + }), + instance.createListItem(beforeValue, { + active: false + }) + ]; + + appendChildren(el, instance.items.map(item => item.render())); +} diff --git a/src/js/Themes/Original/ListItem.js b/src/js/Themes/Original/ListItem.js new file mode 100644 index 00000000..871d56d2 --- /dev/null +++ b/src/js/Themes/Original/ListItem.js @@ -0,0 +1,16 @@ +import { createElement, appendChildren } from '../../Helpers/Template'; + +export default function(el, instance) { + const className = instance.active === true ? 'active' : ( + instance.active === false ? 'before' : null + ); + + el.classList.add(className); + + appendChildren(el, [ + createElement('div', [ + createElement('div', instance.value, {class: 'top'}), + createElement('div', instance.value, {class: 'bottom'}) + ], {class: 'flip-clock-list-item-inner'}) + ]); +} diff --git a/src/js/Themes/Original/index.js b/src/js/Themes/Original/index.js new file mode 100644 index 00000000..d5eeba11 --- /dev/null +++ b/src/js/Themes/Original/index.js @@ -0,0 +1,17 @@ +import Divider from './Divider'; +import FlipClock from './FlipClock'; +import Group from './Group'; +import Label from './Label'; +import List from './List'; +import ListItem from './ListItem'; +import * as faces from './Faces'; + +export default { + Divider, + FlipClock, + Group, + Label, + List, + ListItem, + faces +}; diff --git a/src/js/Themes/index.js b/src/js/Themes/index.js new file mode 100644 index 00000000..663809b8 --- /dev/null +++ b/src/js/Themes/index.js @@ -0,0 +1,5 @@ +import Original from './Original'; + +export { + Original +} diff --git a/src/main.js b/src/main.js new file mode 100644 index 00000000..dc16b6c2 --- /dev/null +++ b/src/main.js @@ -0,0 +1,4 @@ +import './scss/flipclock.scss'; +import FlipClock from './js/Components/FlipClock'; + +export default FlipClock; diff --git a/src/scss/_fc-base.scss b/src/scss/_fc-base.scss new file mode 100644 index 00000000..de44b7f7 --- /dev/null +++ b/src/scss/_fc-base.scss @@ -0,0 +1,301 @@ +// +// Flipclock Base Styles +// + +$fc-font-family: "Helvetica Neue", Helvetica, sans-serif !default; + +$fc-face-color: #ccc !default; +$fc-face-background: #333 !default; + +.flip-clock-wrapper { + background: red; + font-family: $fc-font-family; + font-size: 16px; + -webkit-user-select: none; + + text-align: center; + position: relative; + width: 100%; + margin: 1em; + + * { + box-sizing: border-box; + backface-visibility: hidden; + } + + ul { + position: relative; + float: left; + margin: 5px; + width: 60px; + height: 90px; + font-size: 80px; + font-weight: bold; + line-height: 87px; + border-radius: 6px; + background: #000; + } + + .flip-clock-label { + font-size: .75em; + } + + // clearfix IE8 and up + &.clearfix, + .clearfix { + &:after { + content: " "; + display: table; + clear: both; + } + } + +} + + + + +.flip-clock-wrapper ul { + list-style: none; +} +/* Main */ + +.flip-clock-meridium { + background: none !important; + box-shadow: 0 0 0 !important; + font-size: 36px !important; +} +.flip-clock-meridium a { + color: #313333; +} + +/* Skeleton */ + +.flip-clock-wrapper ul { + +} +.flip-clock-wrapper ul li { + z-index: 1; + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 100%; + line-height: 87px; + text-decoration: none !important; +} +.flip-clock-wrapper ul li:first-child { + z-index: 2; +} +.flip-clock-wrapper ul li a { + display: block; + height: 100%; + -webkit-perspective: 200px; + -moz-perspective: 200px; + perspective: 200px; + margin: 0 !important; + overflow: visible !important; + cursor: default !important; +} +.flip-clock-wrapper ul li a div { + z-index: 1; + position: absolute; + left: 0; + width: 100%; + height: 50%; + font-size: 80px; + overflow: hidden; + outline: 1px solid transparent; +} +.flip-clock-wrapper ul li a div .shadow { + position: absolute; + width: 100%; + height: 100%; + z-index: 2; +} +.flip-clock-wrapper ul li a div.up { + transform-origin: 50% 100%; + top: 0; +} +.flip-clock-wrapper ul li a div.up:after { + content: ""; + position: absolute; + top: 44px; + left: 0; + z-index: 5; + width: 100%; + height: 3px; + background-color: #000; + background-color: rgba(0, 0, 0, 0.4); +} +.flip-clock-wrapper ul li a div.down { + transform-origin: 50% 0; + bottom: 0; + border-bottom-left-radius: 6px; + border-bottom-right-radius: 6px; +} +.flip-clock-wrapper ul li a div div.inn { + position: absolute; + left: 0; + z-index: 1; + width: 100%; + height: 200%; + color: #ccc; + text-shadow: 0 1px 2px #000; + text-align: center; + background-color: #333; + border-radius: 6px; + font-size: 70px; +} +.flip-clock-wrapper ul li a div.up div.inn { + top: 0; +} +.flip-clock-wrapper ul li a div.down div.inn { + bottom: 0; +} + + +/* PLAY */ + +.flip-clock-wrapper ul.play li.flip-clock-before { + z-index: 3; +} +.flip-clock-wrapper .flip { + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.7); +} +.flip-clock-wrapper ul.play li.flip-clock-active { + animation: asd 0.5s 0.5s linear both; + z-index: 5; +} +.flip-clock-divider { + float: left; + display: inline-block; + position: relative; + width: 20px; + height: 100px; +} +.flip-clock-divider:first-child { + width: 0; +} +.flip-clock-dot { + display: block; + background: #323434; + width: 10px; + height: 10px; + position: absolute; + border-radius: 50%; + box-shadow: 0 0 5px rgba(0, 0, 0, 0.5); + left: 5px; +} +.flip-clock-divider .flip-clock-label { + position: absolute; + top: -1.5em; + right: -86px; + color: black; + text-shadow: none; +} +.flip-clock-divider.minutes .flip-clock-label { + right: -88px; +} +.flip-clock-divider.seconds .flip-clock-label { + right: -91px; +} +.flip-clock-dot.top { + top: 30px; +} +.flip-clock-dot.bottom { + bottom: 30px; +} +@keyframes asd { + 0% { + z-index: 2; + } + 20% { + z-index: 4; + } + 100% { + z-index: 4; + } +} +.flip-clock-wrapper ul.play li.flip-clock-active .down { + animation: turn 0.5s 0.5s linear both; +} +@keyframes turn { + 0% { + transform: rotateX(90deg); + } + 100% { + transform: rotateX(0deg); + } +} +.flip-clock-wrapper ul.play li.flip-clock-before .up { + z-index: 2; + animation: turn2 0.5s linear both; +} +@keyframes turn2 { + 0% { + transform: rotateX(0deg); + } + 100% { + transform: rotateX(-90deg); + } +} +.flip-clock-wrapper ul li.flip-clock-active { + z-index: 3; +} +/* SHADOW */ + +.flip-clock-wrapper ul.play li.flip-clock-before .up .shadow { + background: -moz-linear-gradient(top, rgba(0, 0, 0, 0.1) 0%, black 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(0, 0, 0, 0.1)), color-stop(100%, black)); + background: linear, top, rgba(0, 0, 0, 0.1) 0%, black 100%; + background: -o-linear-gradient(top, rgba(0, 0, 0, 0.1) 0%, black 100%); + background: -ms-linear-gradient(top, rgba(0, 0, 0, 0.1) 0%, black 100%); + background: linear, to bottom, rgba(0, 0, 0, 0.1) 0%, black 100%; + animation: show 0.5s linear both; +} +.flip-clock-wrapper ul.play li.flip-clock-active .up .shadow { + background: -moz-linear-gradient(top, rgba(0, 0, 0, 0.1) 0%, black 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, rgba(0, 0, 0, 0.1)), color-stop(100%, black)); + background: linear, top, rgba(0, 0, 0, 0.1) 0%, black 100%; + background: -o-linear-gradient(top, rgba(0, 0, 0, 0.1) 0%, black 100%); + background: -ms-linear-gradient(top, rgba(0, 0, 0, 0.1) 0%, black 100%); + background: linear, to bottom, rgba(0, 0, 0, 0.1) 0%, black 100%; + animation: hide 0.5s 0.3s linear both; +} +/*DOWN*/ + +.flip-clock-wrapper ul.play li.flip-clock-before .down .shadow { + background: -moz-linear-gradient(top, black 0%, rgba(0, 0, 0, 0.1) 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, black), color-stop(100%, rgba(0, 0, 0, 0.1))); + background: linear, top, black 0%, rgba(0, 0, 0, 0.1) 100%; + background: -o-linear-gradient(top, black 0%, rgba(0, 0, 0, 0.1) 100%); + background: -ms-linear-gradient(top, black 0%, rgba(0, 0, 0, 0.1) 100%); + background: linear, to bottom, black 0%, rgba(0, 0, 0, 0.1) 100%; + animation: show 0.5s linear both; +} +.flip-clock-wrapper ul.play li.flip-clock-active .down .shadow { + background: -moz-linear-gradient(top, black 0%, rgba(0, 0, 0, 0.1) 100%); + background: -webkit-gradient(linear, left top, left bottom, color-stop(0%, black), color-stop(100%, rgba(0, 0, 0, 0.1))); + background: linear, top, black 0%, rgba(0, 0, 0, 0.1) 100%; + background: -o-linear-gradient(top, black 0%, rgba(0, 0, 0, 0.1) 100%); + background: -ms-linear-gradient(top, black 0%, rgba(0, 0, 0, 0.1) 100%); + background: linear, to bottom, black 0%, rgba(0, 0, 0, 0.1) 100%; + animation: hide 0.5s 0.2s linear both; +} +@keyframes show { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} +@keyframes hide { + 0% { + opacity: 1; + } + 100% { + opacity: 0; + } +} \ No newline at end of file diff --git a/src/scss/_fc-variables.scss b/src/scss/_fc-variables.scss new file mode 100644 index 00000000..9db12b8b --- /dev/null +++ b/src/scss/_fc-variables.scss @@ -0,0 +1,8 @@ +// FlipClock Variables +$fc-font-family: "Helvetica Neue", Helvetica, sans-serif !default; +$fc-face-color: #ccc !default; +$fc-face-background: #333 !default; +$fc-face-font-size: 4.5em !default; +$fc-face-width: 4em !default; +$fc-face-height: 6em !default; +$fc-flip-shadow-color: #000 !default; diff --git a/src/scss/_mixins.scss b/src/scss/_mixins.scss new file mode 100644 index 00000000..829a7698 --- /dev/null +++ b/src/scss/_mixins.scss @@ -0,0 +1,31 @@ +// +// Material Shadow Mixin +// Brian Espinosa +// +// Based on http://www.google.com/design/spec/what-is-material/elevation-shadows.html +// + +$material-shadow-color: #000 !default; + +@mixin material-shadow($z-height) { + @if $z-height == 1 { + box-shadow: 0 1.5px 3px rgba($material-shadow-color, 0.24), + 0 3px 8px rgba($material-shadow-color, 0.05); + } + @if $z-height == 2 { + box-shadow: 0 4px 7px rgba($material-shadow-color, 0.23), + 0 8px 25px rgba($material-shadow-color, 0.05); + } + @if $z-height == 3 { + box-shadow: 0 7px 10px rgba($material-shadow-color, 0.30), + 0 10px 50px rgba($material-shadow-color, 0.12); + } + @if $z-height == 4 { + box-shadow: 0 10px 15px rgba($material-shadow-color, 0.28), + 0 15px 60px rgba($material-shadow-color, 0.18); + } + @if $z-height == 5 { + box-shadow: 0 16px 20px rgba($material-shadow-color, 0.29), + 0 20px 65px rgba($material-shadow-color, 0.18); + } +} \ No newline at end of file diff --git a/src/scss/flipclock.scss b/src/scss/flipclock.scss new file mode 100644 index 00000000..368af704 --- /dev/null +++ b/src/scss/flipclock.scss @@ -0,0 +1,335 @@ +// +// Imports +// + +// Project Variables +@import "fc-variables"; + +// Project Mixins +@import "mixins"; + +.flip-clock { + font-family: $fc-font-family; + font-size: 16px; + -webkit-user-select: none; + text-align: center; + position: relative; + width: 100%; + display: inline-flex; + font-size: 1vw; + font-family: "Helvetica Neue", Helvetica, sans-serif; + box-sizing: border-box; + align-items: flex-end; + + .flip-clock-group { + display: flex; + position: relative; + + .flip-clock-label { + position: absolute; + top: 0; + left: 0; + width: 100%; + font-size: 1em; + height: 2em; + line-height: 2em; + font-weight: 400; + text-transform: capitalize; + transform: translateY(-100%); + + &.flip-clock-meridium { + font-size: 1.75em; + line-height: 1.75em; + top: 50%; + left: 100%; + flex: 0; + width: auto; + text-transform: uppercase; + font-weight: 200; + transform: translate(.5em, -50%); + } + } + + .flip-clock-list { + width: $fc-face-width; + height: $fc-face-height; + position: relative; + border-radius: .75rem; + @include material-shadow(1); + font-weight: bold; + color: $fc-face-color; + + &:not(:last-child) { + margin-right: .333em; + } + + &:not(.flip) { + .active .flip-clock-list-item-inner { + z-index: 4; + } + + .flip-clock-list-item-inner { + .top, + .bottom { + &:after { + display: none; + } + } + } + } + + .flip-clock-list-item-inner { + position: absolute; + width: 100%; + height: 100%; + } + + &.flip { + animation-delay: 500ms; + animation-duration: 500ms; + + .flip-clock-list-item-inner { + perspective: 15em; + } + + .top, + .bottom, + .active, + .active > div, + .before, + .before > div { + animation-delay: inherit; + animation-fill-mode: forwards; + animation-duration: inherit; + animation-timing-function: ease-in; + + &:after { + animation-duration: inherit; + animation-fill-mode: inherit; + animation-timing-function: inherit; + } + } + + .before { + animation-delay: 0s; + + .top { + animation-name: flip-top; + } + + .top:after, + .bottom:after { + animation-name: show-shadow; + } + } + + .active { + & > div { + animation-name: indexing; + } + + .top:after, + .bottom:after { + animation-delay: calc(500ms * .15); + animation-name: hide-shadow; + } + + .bottom { + animation-name: flip-bottom; + } + } + } + + + .active { + z-index: 2; + + .top { + &:after { + // background: linear-gradient(to bottom, rgba($fc-flip-shadow-color,.1) 0%, rgba($fc-flip-shadow-color,1) 100%); + } + } + + .bottom { + z-index: 2; + transform-origin: top center; + + &:after { + // background: linear-gradient(to bottom, rgba($fc-flip-shadow-color,1) 0%, rgba($fc-flip-shadow-color,.1) 100%); + } + } + } + + .before { + z-index: 3; + + .top { + z-index: 2; + transform-origin: bottom center; + + &:after { + background: linear-gradient(to bottom, rgba($fc-flip-shadow-color,.1) 0%, rgba($fc-flip-shadow-color,1) 100%); + } + } + + .bottom { + &:after { + background: linear-gradient(to bottom, rgba($fc-flip-shadow-color,1) 0%, rgba($fc-flip-shadow-color,.1) 100%); + } + } + } + + .flip-clock-list-item-inner { + position: absolute; + width: 100%; + height: 100%; + // This is a hack to fix a webkit rendering issue that causes + // a shift of a .5px or 1px. Leaving this until until further + // notice. + // https://stackoverflow.com/questions/24854640/strange-pixel-shifting-jumping-in-firefox-with-css-transitions + transform: rotateX(0.0001deg); + + &:first-child { + z-index: 2; + } + + > .top, + > .bottom { + width: 100%; + height: 50%; + overflow: hidden; + position: relative; + // backface-visibility: hidden; + font-size: $fc-face-font-size; + background: $fc-face-background; + box-shadow: inset 0 0 .2em rgba(#000,.5); + + &:after { + content: " "; + display: block; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + overflow: hidden; + } + + &:before { + content: " "; + display: block; + width: 100%; + height: 1px; + position: absolute; + } + } + + .top { + border-radius: .75rem .75rem 0 0; + line-height: $fc-face-height/$fc-face-font-size; + + &:after { + border-radius: .75rem .75rem 0 0; + } + + &:before { + background: $fc-face-background; + opacity: .4; + bottom: 0; + } + } + + .bottom { + border-radius: 0 0 .75rem .75rem; + line-height: 0; + + &:after { + border-radius: 0 0 .75rem .75rem; + } + + &:before { + background: $fc-face-color; + opacity: .1; + } + } + } + } + } + + .flip-clock-divider { + position: relative; + width: 1.5em; + height: $fc-face-height; + + &:before, + &:after { + content: " "; + display: block; + width: .75em; + height: .75em; + background: $fc-face-background; + border-radius: 50%; + position: absolute; + top: 50%; + left: 50%; + } + + &:before { + transform: translate(-50%, 75%); + } + + &:after { + transform: translate(-50%, -175%); + } + + } + +} + +@keyframes indexing { + 0% { + z-index: 2; + } + 1% { + z-index: 3; + } + 100% { + z-index: 4; + } +} + +@keyframes flip-bottom { + 0% { + transform: rotateX(90deg); + } + 100% { + transform: rotateX(0); + } +} + +@keyframes flip-top { + 0% { + transform: rotateX(0); + } + 100% { + transform: rotateX(-90deg); + } +} + +@keyframes show-shadow { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} + +@keyframes hide-shadow { + 0% { + opacity: 1; + } + 100% { + opacity: 0; + } +} diff --git a/src/scss/og-css.scss b/src/scss/og-css.scss new file mode 100644 index 00000000..e42f841f --- /dev/null +++ b/src/scss/og-css.scss @@ -0,0 +1,367 @@ +// +// Imports +// + +// Project Variables +@import "fc-variables"; + +// Project Mixins +@import "mixins"; + +// Flipclock Base Styles +// @import "fc-base"; + +// Theme Styles +@import "theme-default"; + +.flip-clock { + font-family: $fc-font-family; + font-size: 16px; + -webkit-user-select: none; + text-align: center; + position: relative; + width: 100%; + display: inline-flex; + font-size: 1vw; + font-family: "Helvetica Neue", Helvetica, sans-serif; + box-sizing: border-box; + align-items: flex-end; + animation-duration: 500ms; + + .flip-clock-group { + display: flex; + + .flip-clock-label { + font-size: .875em; + height: 2em; + line-height: 2em; + } + + .flip-clock-list { + width: $fc-face-width; + height: $fc-face-height; + background: $fc-face-background; + position: relative; + border-radius: .75rem; + margin: 0 .125em; + @include material-shadow(1); + font-weight: bold; + color: $fc-face-color; + + &:not(.flip) { + .flip-clock-list-item-inner { + &.active { + z-index: 4; + } + + .top, + .bottom { + &:after { + display: none; + } + } + } + } + + &.flip { + animation-delay: 500ms; + animation-duration: 500ms; + + .before { + animation-delay: 0s; + } + + + .before { + .top { + animation: flip-top .5s linear both; + + &:after { + animation: show-shadow .5s linear both; + } + } + + .bottom { + &:after { + animation: show-shadow .5s linear both; + } + } + } + + .top, + .bottom, + .active, + & > div { + animation-delay: inherit; + animation-duration: inherit; + animation-fill-mode: both; + animation-timing-function: linear; + + &:after { + animation-duration: inherit; + animation-fill-mode: inherit; + animation-timing-function: inherit; + } + } + + /* + .top, + .top:after, + .bottom, + .bottom:after, + .active { + animation-duration: 500ms; + animation-fill-mode: both; + animation-timing-function: linear; + } + */ + + .before { + .top { + animation-name: flip-top; + } + + .top:after, + .bottom:after { + animation-name: show-shadow; + } + } + + .active { + animation-name: indexing; + + .top:after, + .bottom:after { + animation-delay: calc(inherit * .15); + animation-name: hide-shadow; + } + + .bottom { + animation-name: flip-bottom; + } + } + + /* + .before { + .top { + animation: flip-top .5s linear both; + + &:after { + animation: show-shadow .5s linear both; + } + } + + .bottom { + &:after { + animation: show-shadow .5s linear both; + } + } + } + .active { + //animation: indexing .5s .5s linear both; + + .top { + &:after { + //animation: hide-shadow .5s (.5s * .15) linear both; + } + } + + .bottom { + //animation: flip-bottom .5s .5s linear both; + + &:after { + //animation: hide-shadow .5s (.5s * .15) linear both; + } + } + } + */ + } + + .flip-clock-list-item-inner { + position: absolute; + width: 100%; + height: 100%; + perspective: 15em; + + &:first-child { + z-index: 2; + } + + &.before { + z-index: 3; + + .top { + z-index: 2; + transform-origin: bottom center; + + &:after { + background: linear-gradient(to bottom, rgba($fc-flip-shadow-color,.1) 0%, rgba($fc-flip-shadow-color,1) 100%); + } + } + + .bottom { + &:after { + background: linear-gradient(to bottom, rgba($fc-flip-shadow-color,1) 0%, rgba($fc-flip-shadow-color,.1) 100%); + } + } + } + + &.active { + z-index: 2; + + .top { + &:after { + background: linear-gradient(to bottom, rgba($fc-flip-shadow-color,.1) 0%, rgba($fc-flip-shadow-color,1) 100%); + } + } + + .bottom { + z-index: 2; + transform-origin: top center; + + &:after { + background: linear-gradient(to bottom, rgba($fc-flip-shadow-color,1) 0%, rgba($fc-flip-shadow-color,.1) 100%); + } + } + } + + > .top, + > .bottom { + width: 100%; + height: 50%; + overflow: hidden; + position: relative; + backface-visibility: hidden; + font-size: $fc-face-font-size; + background: $fc-face-background; + box-shadow: inset 0 0 .2em rgba(#000,.5); + + &:after { + content: " "; + display: block; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + overflow: hidden; + } + + &:before { + content: " "; + display: block; + width: 100%; + height: 1px; + position: absolute; + } + } + + .top { + border-radius: .75rem .75rem 0 0; + line-height: $fc-face-height/$fc-face-font-size; + + &:after { + border-radius: .75rem .75rem 0 0; + } + + &:before { + background: $fc-face-background; + opacity: .4; + bottom: 0; + } + } + + .bottom { + border-radius: 0 0 .75rem .75rem; + line-height: 0; + + &:after { + border-radius: 0 0 .75rem .75rem; + } + + &:before { + background: $fc-face-color; + opacity: .1; + } + } + } + } + } + + .flip-clock-divider { + position: relative; + width: 1.5em; + height: $fc-face-height; + + &:before, + &:after { + content: " "; + display: block; + width: .75em; + height: .75em; + background: $fc-face-background; + border-radius: 50%; + position: absolute; + top: 50%; + left: 50%; + } + + &:before { + transform: translate(-50%, 75%); + } + + &:after { + transform: translate(-50%, -175%); + } + + } + +} + +@keyframes indexing { + 0% { + z-index: 2; + } + 1% { + z-index: 4; + } + 100% { + z-index: 4; + } +} + +@keyframes flip-bottom { + 0% { + transform: rotateX(90deg); + } + 100% { + transform: rotateX(0deg); + } +} + +@keyframes flip-top { + 0% { + transform: rotateX(0deg); + } + 100% { + transform: rotateX(-90deg); + } +} + +@keyframes show-shadow { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} + +@keyframes hide-shadow { + 0% { + opacity: 1; + } + 100% { + opacity: 0; + } +} diff --git a/tests/Components/Divider.spec.js b/tests/Components/Divider.spec.js new file mode 100644 index 00000000..a5e1a519 --- /dev/null +++ b/tests/Components/Divider.spec.js @@ -0,0 +1,15 @@ +import Divider from '../../src/js/Components/Divider'; +import FlipClock from '../../src/js/Components/FlipClock'; + +const defaults = { + theme: FlipClock.defaults.theme, + language: FlipClock.defaults.language +}; + +test('rendering a divider', () => { + const divider = Divider.make(defaults); + + expect(divider.el).toBeInstanceOf(HTMLElement); + expect(divider.el.classList.contains('flip-clock-divider')).toBe(true); + expect(divider.el).toBe(divider.render()); +}); diff --git a/tests/Components/FaceValue.spec.js b/tests/Components/FaceValue.spec.js new file mode 100644 index 00000000..beb5a64a --- /dev/null +++ b/tests/Components/FaceValue.spec.js @@ -0,0 +1,36 @@ +import { next, prev } from '../../src/js/Helpers/Value'; +import FaceValue from '../../src/js/Components/FaceValue'; + + +test('face values with 2 groups and prepend leading zeros and 3 minimum digits', () => { + const faceValue = FaceValue.make([1, 2], { + minimumDigits: 3, + prependLeadingZero: true + }); + + expect(faceValue.digits).toHaveLength(2); + expect(faceValue.digits[0]).toHaveLength(2); + expect(faceValue.digits[0][0]).toBe('0'); + expect(faceValue.digits[0][1]).toBe('1'); + expect(faceValue.digits[1]).toHaveLength(2); + expect(faceValue.digits[1][0]).toBe('0'); + expect(faceValue.digits[1][1]).toBe('2'); + +}); + +test('face values with strings', () => { + const faceValue = FaceValue.make('a', { + prependLeadingZero: false + }); + + expect(faceValue.digits[0]).toHaveLength(1); + expect(faceValue.digits[0][0]).toBe('a'); +}); + +test('face values without leading zeros', () => { + const faceValue = FaceValue.make(1, { + prependLeadingZero: false + }); + + expect(faceValue.digits[0]).toHaveLength(1); +}); diff --git a/tests/Components/FlipClock.spec.js b/tests/Components/FlipClock.spec.js new file mode 100644 index 00000000..58684ec3 --- /dev/null +++ b/tests/Components/FlipClock.spec.js @@ -0,0 +1,10 @@ +import FlipClock from '../../src/js/Components/FlipClock'; + +test('clock with the default values', () => { + const parent = document.createElement('div'); + + const clock = FlipClock.make(parent, [1, 1]); + + + console.log(clock, parent.innerHTML); +}); diff --git a/tests/Components/Label.spec.js b/tests/Components/Label.spec.js new file mode 100644 index 00000000..cfbd902e --- /dev/null +++ b/tests/Components/Label.spec.js @@ -0,0 +1,15 @@ +import Label from '../../src/js/Components/Label'; +import FlipClock from '../../src/js/Components/FlipClock'; + +const defaults = { + theme: FlipClock.defaults.theme, + language: FlipClock.defaults.language +}; + +test('rendering a divider', () => { + const el = Label.make('test', defaults); + + expect(el.render()).toBeInstanceOf(HTMLElement); + expect(el.render().classList.contains('flip-clock-label')).toBe(true); + expect(el.render().innerHTML).toBe('test'); +}); diff --git a/tests/Components/List.spec.js b/tests/Components/List.spec.js new file mode 100644 index 00000000..0c74f7b3 --- /dev/null +++ b/tests/Components/List.spec.js @@ -0,0 +1,35 @@ +import List from '../../src/js/Components/List'; +import FlipClock from '../../src/js/Components/FlipClock'; + +const defaults = { + theme: FlipClock.defaults.theme, + language: FlipClock.defaults.language +}; + +test('if list is rendered with string', () => { + const list = List.make('a', defaults); + + const el = list.render(); + + expect(list.items).toHaveLength(2); + + expect(el).toBeInstanceOf(HTMLElement); + expect(el.children).toHaveLength(2); + expect(el.querySelector('.flip-clock-list-item:first-child .top').innerHTML).toBe('a'); + expect(el.querySelector('.flip-clock-list-item:last-child .bottom').innerHTML).toBe('z'); +}); + +test('if list is rendered with object', () => { + const list = List.make(Object.assign({ + value: 'a', + }, defaults)); + + const el = list.render(); + + expect(list.items).toHaveLength(2); + + expect(el).toBeInstanceOf(HTMLElement); + expect(el.children).toHaveLength(2); + expect(el.querySelector('.flip-clock-list-item:first-child .top').innerHTML).toBe('a'); + expect(el.querySelector('.flip-clock-list-item:last-child .bottom').innerHTML).toBe('z'); +}); diff --git a/tests/Components/ListItem.spec.js b/tests/Components/ListItem.spec.js new file mode 100644 index 00000000..e3fa8ed8 --- /dev/null +++ b/tests/Components/ListItem.spec.js @@ -0,0 +1,27 @@ +import ListItem from '../../src/js/Components/ListItem'; +import FlipClock from '../../src/js/Components/FlipClock'; + +const defaults = { + theme: FlipClock.defaults.theme, + language: FlipClock.defaults.language +}; + +test('rendering a ListItem from string', () => { + const value = 1; + const item = ListItem.make(value, defaults); + + expect(item.value).toBe(value); + expect(item.render()).toBeInstanceOf(HTMLElement); + expect(item.render().querySelector('.top').innerHTML).toBe(value.toString()); +}); + +test('rendering a ListItem from object', () => { + const value = 1; + const item = ListItem.make(Object.assign({ + value: value + }, defaults)); + + expect(item.value).toBe(value); + expect(item.render()).toBeInstanceOf(HTMLElement); + expect(item.render().querySelector('.top').innerHTML).toBe(value.toString()); +}); diff --git a/tests/Components/Timer.spec.js b/tests/Components/Timer.spec.js new file mode 100644 index 00000000..186067c3 --- /dev/null +++ b/tests/Components/Timer.spec.js @@ -0,0 +1,18 @@ +import Timer from '../../src/js/Components/Timer'; + +test('if can the timer be started and stopped.', () => { + const instance = Timer.make(500); + + expect(instance.interval === 500).toBe(true); + expect(instance.isStopped()).toBe(true); + + instance.start(); + + expect(instance.isRunning()).toBe(true); + + instance.stop(() => { + expect(instance.isStopped()).toBe(true); + }); + + expect(instance.isStopped()).toBe(false); +}); diff --git a/tests/Example.spec.js b/tests/Example.spec.js new file mode 100644 index 00000000..2d530fc8 --- /dev/null +++ b/tests/Example.spec.js @@ -0,0 +1,3 @@ +test('two plus two is four', () => { + expect(2 + 2).toBe(4); +}); diff --git a/tests/Helpers/Digitize.spec.js b/tests/Helpers/Digitize.spec.js new file mode 100644 index 00000000..12202c2c --- /dev/null +++ b/tests/Helpers/Digitize.spec.js @@ -0,0 +1,14 @@ +import digitize from '../../src/js/Helpers/Digitize'; +import { deepFlatten } from '../../src/js/Helpers/Functions'; + +test('digitize()', () => { + expect(digitize(1)).toHaveLength(1); + expect(digitize([1, 2], {prependLeadingZero: true})).toHaveLength(2); + expect(digitize([1, [1, 2020]])).toHaveLength(2); + expect(deepFlatten(digitize([1, 1, 2020], {prependLeadingZero: true}))).toHaveLength(8); + expect(digitize(1, {minimumDigits: 20, prependLeadingZero: false})[0]).toHaveLength(20); + expect(digitize([1, [1, 2020]], {minimumDigits: 20, prependLeadingZero: false})[0]).toHaveLength(15); + expect(digitize([1, [1, 2020]], {minimumDigits: 20, prependLeadingZero: false})[1]).toHaveLength(5); + expect(digitize([1, [1, 2020]], {minimumDigits: 20, prependLeadingZero: true})[0]).toHaveLength(14); + expect(digitize([1, [1, 2020]], {minimumDigits: 20, prependLeadingZero: true})[1]).toHaveLength(6); +}); diff --git a/tests/Helpers/Element.spec.js b/tests/Helpers/Element.spec.js new file mode 100644 index 00000000..6d0a231f --- /dev/null +++ b/tests/Helpers/Element.spec.js @@ -0,0 +1,25 @@ +import { createElement } from '../../src/js/Helpers/Template'; + +test('creating elements with string', () => { + expect(createElement('div', 'test').innerHTML).toBe('test'); +}); + +test('creating elements with attributes', () => { + const el = createElement('div', 'test', {class: 'test'}); + + expect(el.innerHTML).toBe('test'); + expect(el.classList.contains('test')).toBeTruthy(); +}) + +test('can creating elements with children', () => { + const el = createElement('div', [ + createElement('span', 1), + createElement('span', 2, {class: 'test'}), + ]); + + expect(el.children).toHaveLength(2); + expect(el.firstChild).toBeInstanceOf(HTMLSpanElement); + expect(el.firstChild.innerHTML).toBe('1'); + expect(el.lastChild).toBeInstanceOf(HTMLSpanElement); + expect(el.lastChild.innerHTML).toBe('2'); +}); diff --git a/tests/Helpers/Value.spec.js b/tests/Helpers/Value.spec.js new file mode 100644 index 00000000..92e3c479 --- /dev/null +++ b/tests/Helpers/Value.spec.js @@ -0,0 +1,29 @@ +import { next } from '../../src/js/Helpers/Value'; +import { prev } from '../../src/js/Helpers/Value'; +import { deepFlatten } from '../../src/js/Helpers/Functions'; + +test('next()', () => { + expect(next(1)).toBe(2); + expect(next('1')).toBe('2'); + expect(next('9')).toBe('0'); + expect(next(9)).toBe(0); + expect(next('a')).toBe('b'); + expect(next('aa')).toBe('bb'); + expect(next('z')).toBe('a'); + expect(next('A')).toBe('B'); + expect(next('AA')).toBe('BB'); + expect(next('Z')).toBe('A'); +}); + +test('prev()', () => { + expect(prev(2)).toBe(1); + expect(prev('2')).toBe('1'); + expect(prev('0')).toBe('9'); + expect(prev(0)).toBe(9); + expect(prev('z')).toBe('y'); + expect(prev('zz')).toBe('yy'); + expect(prev('a')).toBe('z'); + expect(prev('Z')).toBe('Y'); + expect(prev('ZZ')).toBe('YY'); + expect(prev('A')).toBe('Z'); +});