-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.0190f77dd1132bad077f.bundle.js.map
1 lines (1 loc) · 524 KB
/
main.0190f77dd1132bad077f.bundle.js.map
1
{"version":3,"sources":["webpack://lib_diff_test/./node_modules/@babel/runtime/helpers/arrayWithHoles.js","webpack://lib_diff_test/./node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://lib_diff_test/./node_modules/@babel/runtime/helpers/defineProperty.js","webpack://lib_diff_test/./node_modules/@babel/runtime/helpers/get.js","webpack://lib_diff_test/./node_modules/@babel/runtime/helpers/getPrototypeOf.js","webpack://lib_diff_test/./node_modules/@babel/runtime/helpers/inherits.js","webpack://lib_diff_test/./node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","webpack://lib_diff_test/./node_modules/@babel/runtime/helpers/nonIterableRest.js","webpack://lib_diff_test/./node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","webpack://lib_diff_test/./node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack://lib_diff_test/./node_modules/@babel/runtime/helpers/slicedToArray.js","webpack://lib_diff_test/./node_modules/@babel/runtime/helpers/superPropBase.js","webpack://lib_diff_test/Destroyable.ts","webpack://lib_diff_test/Evented.ts","webpack://lib_diff_test/Injector.ts","webpack://lib_diff_test/Registry.ts","webpack://lib_diff_test/RegistryHandler.ts","webpack://lib_diff_test/ThemeInjector.ts","webpack://lib_diff_test/diff.ts","webpack://lib_diff_test/icache.ts","webpack://lib_diff_test/injector.ts","webpack://lib_diff_test/theme.ts","webpack://lib_diff_test/vdom.ts","webpack://lib_diff_test/ActiveLink.ts","webpack://lib_diff_test/Link.ts","webpack://lib_diff_test/Outlet.tsx","webpack://lib_diff_test/Router.ts","webpack://lib_diff_test/RouterInjector.ts","webpack://lib_diff_test/HashHistory.ts","webpack://lib_diff_test/Map.ts","webpack://lib_diff_test/Set.ts","webpack://lib_diff_test/WeakMap.ts","webpack://lib_diff_test/array.ts","webpack://lib_diff_test/cssVariables.ts","webpack://lib_diff_test/iterator.ts","webpack://lib_diff_test/object.ts","webpack://lib_diff_test/string.ts","webpack://lib_diff_test/index.tsx","webpack://lib_diff_test/theme.tsx","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/default/header.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/default/header.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/accordion.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/accordion.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/avatar.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/avatar.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/breadcrumb-group.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/breadcrumb-group.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/button.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/button.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/calendar.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/calendar.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/card.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/card.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/checkbox-group.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/checkbox-group.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/checkbox.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/checkbox.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/chip-typeahead.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/chip-typeahead.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/chip.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/chip.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/date-input.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/date-input.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/dialog.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/dialog.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/floating-action-button.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/floating-action-button.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/grid-body.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/grid-body.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/grid-cell.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/grid-cell.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/grid-footer.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/grid-footer.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/grid-header.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/grid-header.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/grid-paginated-footer.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/grid-paginated-footer.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/grid-placeholder-row.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/grid-placeholder-row.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/grid-row.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/grid-row.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/grid.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/grid.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/header-card.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/header-card.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/header.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/header.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/helper-text.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/helper-text.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/icon.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/icon.m.css.js","webpack://lib_diff_test/index.ts","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/label.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/label.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/list-item.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/list-item.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/list.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/list.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/loading-indicator.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/loading-indicator.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/menu-item.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/menu-item.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/native-select.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/native-select.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/outlined-button.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/outlined-button.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/pagination.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/pagination.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/password-input.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/password-input.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/progress.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/progress.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/radio-group.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/radio-group.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/radio.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/radio.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/raised-button.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/raised-button.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/range-slider.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/range-slider.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/result.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/result.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/select.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/select.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/slide-pane.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/slide-pane.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/slider.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/slider.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/snackbar.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/snackbar.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/switch.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/switch.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/tab-container.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/tab-container.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/text-area.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/text-area.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/text-input.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/text-input.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/three-column-layout.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/three-column-layout.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/time-picker.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/time-picker.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/title-pane.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/title-pane.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/tooltip.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/tooltip.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/two-column-layout.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/two-column-layout.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/typeahead.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/typeahead.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/variants/dark.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/variants/dark.m.css.js","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/variants/default.m.css","webpack://lib_diff_test/./node_modules/@dojo/widgets/theme/dojo/variants/default.m.css.js","webpack://lib_diff_test/../node_modules/get-css-data/dist/get-css-data.esm.js","webpack://lib_diff_test/../node_modules/balanced-match/index.js","webpack://lib_diff_test/../src/parse-css.js","webpack://lib_diff_test/../src/parse-vars.js","webpack://lib_diff_test/../src/stringify-css.js","webpack://lib_diff_test/../src/walk-css.js","webpack://lib_diff_test/../src/transform-css.js","webpack://lib_diff_test/../src/index.js","webpack://lib_diff_test/./src/App.m.css","webpack://lib_diff_test/./src/App.tsx","webpack://lib_diff_test/./src/main.tsx","webpack://lib_diff_test/./src/routes.ts","webpack://lib_diff_test/./src/widgets/Menu.tsx","webpack://lib_diff_test/./src/widgets/styles/Menu.m.css"],"names":["_arrayWithHoles","arr","Array","isArray","module","exports","_assertThisInitialized","self","ReferenceError","_defineProperty","obj","key","value","Object","defineProperty","enumerable","configurable","writable","superPropBase","require","_get","target","property","receiver","Reflect","get","base","desc","getOwnPropertyDescriptor","call","_getPrototypeOf","o","setPrototypeOf","getPrototypeOf","__proto__","_inherits","subClass","superClass","TypeError","prototype","create","constructor","_iterableToArrayLimit","i","Symbol","iterator","_arr","_n","_d","_e","undefined","_i","_s","next","done","push","length","err","_nonIterableRest","_typeof","assertThisInitialized","_possibleConstructorReturn","_setPrototypeOf","p","arrayWithHoles","iterableToArrayLimit","unsupportedIterableToArray","nonIterableRest","_slicedToArray","_superPropBase","object","hasOwnProperty","getUrls","urls","options","arguments","settings","mimeType","onBeforeSend","Function","onSuccess","onError","onComplete","urlArray","urlQueue","apply","map","x","isValidCss","cssText","isHTML","trim","charAt","xhr","urlIndex","responseText","returnVal","indexOf","parser","document","createElement","forEach","url","setAttribute","href","String","isIElte9","Boolean","all","window","atob","isIElte9CORS","host","split","location","isSameProtocol","protocol","xdr","XDomainRequest","open","timeout","onprogress","ontimeout","onload","onerror","setTimeout","send","console","warn","concat","XMLHttpRequest","overrideMimeType","onreadystatechange","readyState","status","getCssData","regex","cssComments","cssImports","rootElement","include","exclude","filter","skipDisabled","useCSSOM","sourceNodes","querySelectorAll","node","matchesSelector","cssArray","handleComplete","isComplete","join","handleSuccess","cssIndex","sourceUrl","resolveImports","resolvedCssText","errorData","data","test","parseImportData","baseUrl","ignoreRules","importData","rules","replace","match","rule","absoluteUrls","getFullUrl","absoluteRules","oldUrl","newUrl","callbackFn","__errorData","__errorRules","responseImportData","responseArray","importText","linkHref","getAttribute","linkRel","isLink","nodeName","toLowerCase","isSkip","disabled","isStyle","textContent","sheet","cssRules","d","implementation","createHTMLDocument","b","a","head","appendChild","body","baseURI","querySelector","elm","selector","matches","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","oMatchesSelector","balanced","str","RegExp","maybeMatch","r","range","start","end","pre","slice","post","reg","m","begs","beg","left","right","result","ai","bi","pop","parseCss","css","defaults","preserveStatic","removeComments","_extends","errors","error","msg","Error","re","exec","close","whitespace","comment","type","comments","cmnts","c","s","declaration","at_rule","comment_regexp","prop","val","ret","declarations","decls","keyframe","vals","values","at_keyframes","vendor","name","frame","frames","keyframes","at_page","sel","selectors","at_page_margin_box","at_fontface","at_supports","supports","at_host","at_media","media","at_custom_m","at_document","at_x","hasVarFunc","some","decl","balancedMatch","hasVarDecl","core","stylesheet","parseVars","cssData","parseHost","store","onWarning","reVarDeclSelectors","stringifyCss","tree","delim","cb","renderMethods","charset","visit","import","namespace","page","nodes","buf","n","txt","walkCss","fn","VAR_PROP_IDENTIFIER","VAR_FUNC_IDENTIFIER","transformCss","preserveVars","variables","splice","resolvedValue","resolveValue","fixNestedCalc","reCalcVal","newVal","__recursiveFallback","valueData","resolveFunc","fallback","replacement","unresolvedFallback","isEmptyVarFunc","isBrowser","isNativeSupport","CSS","counters","group","job","shadowDOM","onlyLegacy","silent","updateDOM","updateURLs","watch","onFinally","cssKeyframes","cssMediaQueries","cssUrls","cssVarDeclRules","cssVarDecls","cssVarFunc","cssVars","variableStore","dom","user","cssVarsIsRunning","cssVarsObserver","cssVarsSrcNodeCount","debounceTimer","isShadowDOMReady","msgPrefix","handleError","message","sourceNode","handleWarning","handleFinally","hasChanged","getTimeStamp","__benchmark","addMutationObserver","disconnect","cssVarsDebounced","fixVarNames","outNodes","dataGroup","outNode","srcNode","parentNode","removeChild","srcNodes","hasVarChange","targetElm","documentElement","keys","varValue","getComputedStyle","getPropertyValue","style","setProperty","shadowRoot","nodeArray","responseUrl","responseURL","statusText","errorMsg","fixRelativeCssUrls","currentVars","nodeCSS","cssTree","__cssVars","resetCssNodes","outCssArray","outNodeArray","hasKeyframesWithVars","outCss","hasCSSVarFunc","outCssNoSpaces","hasAttribute","removeAttribute","insertBefore","nextSibling","elms","shadowSettings","fixKeyframes","JSON","parse","stringify","addEventListener","init","evt","removeEventListener","reset","isStylesheet","tagName","isValidAddMutation","mutationNodes","isElm","nodeType","hasAttr","isStyleWithVars","isValid","isValidRemoveMutation","isOutNode","isSrcNode","orphanNode","MutationObserver","mutations","hasValidMutation","mutation","addedNodes","removedNodes","observe","attributes","attributeFilter","childList","subtree","delay","clearTimeout","animationNameProp","allNodes","getElementsByTagName","keyframeNodes","nameMarker","len","animationName","offsetHeight","nodeStyle","cssUrl","varObj","reLeadingHyphens","reduce","performance","now","Date","getTime","resetNodes"],"mappings":"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","file":"main.0190f77dd1132bad077f.bundle.js","sourcesContent":["function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty;","var superPropBase = require(\"./superPropBase\");\n\nfunction _get(target, property, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n module.exports = _get = Reflect.get;\n } else {\n module.exports = _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get(target, property, receiver || target);\n}\n\nmodule.exports = _get;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf;","var setPrototypeOf = require(\"./setPrototypeOf\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits;","function _iterableToArrayLimit(arr, i) {\n if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest;","var _typeof = require(\"../helpers/typeof\");\n\nvar assertThisInitialized = require(\"./assertThisInitialized\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf;","var arrayWithHoles = require(\"./arrayWithHoles\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray\");\n\nvar nonIterableRest = require(\"./nonIterableRest\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray;","var getPrototypeOf = require(\"./getPrototypeOf\");\n\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}\n\nmodule.exports = _superPropBase;","import Promise from '../shim/Promise';\n\n/**\n * Used through the toolkit as a consistent API to manage how callers can \"cleanup\"\n * when doing a function.\n */\nexport interface Handle {\n\t/**\n\t * Perform the destruction/cleanup logic associated with this Handle\n\t */\n\tdestroy(): void;\n}\n\n/**\n * No op function used to replace a Destroyable instance's `destroy` method, once the instance has been destroyed\n */\nfunction noop(): Promise<boolean> {\n\treturn Promise.resolve(false);\n}\n\n/**\n * No op function used to replace a Destroyable instance's `own` method, once the instance has been destroyed\n */\nfunction destroyed(): never {\n\tthrow new Error('Call made to destroyed method');\n}\n\nexport class Destroyable {\n\t/**\n\t * The instance's handles\n\t */\n\tprivate handles: Handle[];\n\n\t/**\n\t * @constructor\n\t */\n\tconstructor() {\n\t\tthis.handles = [];\n\t}\n\n\t/**\n\t * Register handles for the instance that will be destroyed when `this.destroy` is called\n\t *\n\t * @param {Handle} handle The handle to add for the instance\n\t * @returns {Handle} A wrapper Handle. When the wrapper Handle's `destroy` method is invoked, the original handle is\n\t * removed from the instance, and its `destroy` method is invoked.\n\t */\n\town(handle: Handle): Handle {\n\t\tconst { handles: _handles } = this;\n\t\t_handles.push(handle);\n\t\treturn {\n\t\t\tdestroy() {\n\t\t\t\t_handles.splice(_handles.indexOf(handle));\n\t\t\t\thandle.destroy();\n\t\t\t}\n\t\t};\n\t}\n\n\t/**\n\t * Destroys all handlers registered for the instance\n\t *\n\t * @returns {Promise<any} A Promise that resolves once all handles have been destroyed\n\t */\n\tdestroy(): Promise<any> {\n\t\treturn new Promise((resolve) => {\n\t\t\tthis.handles.forEach((handle) => {\n\t\t\t\thandle && handle.destroy && handle.destroy();\n\t\t\t});\n\t\t\tthis.destroy = noop;\n\t\t\tthis.own = destroyed;\n\t\t\tresolve(true);\n\t\t});\n\t}\n}\n\nexport default Destroyable;\n","import Map from '../shim/Map';\nimport { Destroyable, Handle } from './Destroyable';\n\n/**\n * Map of computed regular expressions, keyed by string\n */\nconst regexMap = new Map<string, RegExp>();\n\nexport type EventType = string | symbol;\n\n/**\n * The base event object, which provides a `type` property\n */\nexport interface EventObject<T = EventType> {\n\t/**\n\t * The type of the event\n\t */\n\treadonly type: T;\n}\n\n/**\n * Determines if the event type glob has been matched\n *\n * @returns boolean that indicates if the glob is matched\n */\nexport function isGlobMatch(globString: string | symbol, targetString: string | symbol): boolean {\n\tif (typeof targetString === 'string' && typeof globString === 'string' && globString.indexOf('*') !== -1) {\n\t\tlet regex: RegExp;\n\t\tif (regexMap.has(globString)) {\n\t\t\tregex = regexMap.get(globString)!;\n\t\t} else {\n\t\t\tregex = new RegExp(`^${globString.replace(/\\*/g, '.*')}$`);\n\t\t\tregexMap.set(globString, regex);\n\t\t}\n\t\treturn regex.test(targetString);\n\t} else {\n\t\treturn globString === targetString;\n\t}\n}\n\nexport type EventedCallback<T = EventType, E extends EventObject<T> = EventObject<T>> = {\n\t/**\n\t * A callback that takes an `event` argument\n\t *\n\t * @param event The event object\n\t */\n\n\t(event: E): boolean | void;\n};\n\nexport interface CustomEventTypes<T extends EventObject<any> = EventObject<any>> {\n\t[index: string]: T;\n}\n\n/**\n * A type which is either a targeted event listener or an array of listeners\n * @template T The type of target for the events\n * @template E The event type for the events\n */\nexport type EventedCallbackOrArray<T = EventType, E extends EventObject<T> = EventObject<T>> =\n\t| EventedCallback<T, E>\n\t| EventedCallback<T, E>[];\n\n/**\n * Event Class\n */\nexport class Evented<\n\tM extends CustomEventTypes = {},\n\tT = EventType,\n\tO extends EventObject<T> = EventObject<T>\n> extends Destroyable {\n\t// The following member is purely so TypeScript remembers the type of `M` when extending so\n\t// that the utilities in `on.ts` will work https://github.com/Microsoft/TypeScript/issues/20348\n\t// tslint:disable-next-line\n\tprotected __typeMap__?: M;\n\t/**\n\t * map of listeners keyed by event type\n\t */\n\tprotected listenersMap: Map<T | keyof M, EventedCallback<T, O>[]> = new Map();\n\n\t/**\n\t * Emits the event object for the specified type\n\t *\n\t * @param event the event to emit\n\t */\n\temit<K extends keyof M>(event: M[K]): void;\n\temit(event: O): void;\n\temit(event: any): void {\n\t\tthis.listenersMap.forEach((methods, type) => {\n\t\t\tif (isGlobMatch(type as any, event.type)) {\n\t\t\t\t[...methods].forEach((method) => {\n\t\t\t\t\tmethod.call(this, event);\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\n\t/**\n\t * Catch all handler for various call signatures. The signatures are defined in\n\t * `BaseEventedEvents`. You can add your own event type -> handler types by extending\n\t * `BaseEventedEvents`. See example for details.\n\t *\n\t * @param args\n\t *\n\t * @example\n\t *\n\t * interface WidgetBaseEvents extends BaseEventedEvents {\n\t * (type: 'properties:changed', handler: PropertiesChangedHandler): Handle;\n\t * }\n\t * class WidgetBase extends Evented {\n\t * on: WidgetBaseEvents;\n\t * }\n\t *\n\t * @return {any}\n\t */\n\ton<K extends keyof M>(type: K, listener: EventedCallbackOrArray<K, M[K]>): Handle;\n\ton(type: T, listener: EventedCallbackOrArray<T, O>): Handle;\n\ton(type: any, listener: EventedCallbackOrArray<any, any>): Handle {\n\t\tif (Array.isArray(listener)) {\n\t\t\tconst handles = listener.map((listener) => this._addListener(type, listener));\n\t\t\treturn {\n\t\t\t\tdestroy() {\n\t\t\t\t\thandles.forEach((handle) => handle.destroy());\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\treturn this._addListener(type, listener);\n\t}\n\n\tprivate _addListener(type: T | keyof M, listener: EventedCallback<T, O>) {\n\t\tconst listeners = this.listenersMap.get(type) || [];\n\t\tlisteners.push(listener);\n\t\tthis.listenersMap.set(type, listeners);\n\t\treturn {\n\t\t\tdestroy: () => {\n\t\t\t\tconst listeners = this.listenersMap.get(type) || [];\n\t\t\t\tlisteners.splice(listeners.indexOf(listener), 1);\n\t\t\t}\n\t\t};\n\t}\n}\n\nexport default Evented;\n","import { Evented, EventObject } from '../core/Evented';\n\nexport type InjectorEventMap = {\n\tinvalidate: EventObject<'invalidate'>;\n};\n\nexport class Injector<T = any> extends Evented<InjectorEventMap> {\n\tprivate _payload: T;\n\tprivate _invalidator: undefined | (() => void);\n\n\tconstructor(payload: T) {\n\t\tsuper();\n\t\tthis._payload = payload;\n\t}\n\n\tpublic setInvalidator(invalidator: () => void) {\n\t\tthis._invalidator = invalidator;\n\t}\n\n\tpublic get(): T {\n\t\treturn this._payload;\n\t}\n\n\tpublic set(payload: T): void {\n\t\tthis._payload = payload;\n\t\tif (this._invalidator) {\n\t\t\tthis._invalidator();\n\t\t}\n\t}\n}\n\nexport default Injector;\n","import Promise from '../shim/Promise';\nimport Map from '../shim/Map';\nimport { Evented, EventObject } from '../core/Evented';\nimport {\n\tConstructor,\n\tInjectorFactory,\n\tInjectorItem,\n\tRegistryLabel,\n\tWidgetBaseConstructor,\n\tWidgetBaseInterface,\n\tESMDefaultWidgetBase,\n\tWidgetBaseConstructorFunction,\n\tESMDefaultWidgetBaseFunction,\n\tCallback,\n\tWNodeFactory,\n\tRenderResult,\n\tWidgetBaseTypes,\n\tDefaultChildrenWNodeFactory,\n\tOptionalWNodeFactory\n} from './interfaces';\n\nexport type RegistryItem =\n\t| WidgetBaseConstructor\n\t| WNodeFactory<any>\n\t| DefaultChildrenWNodeFactory<any>\n\t| OptionalWNodeFactory<any>\n\t| Promise<WidgetBaseConstructor | WNodeFactory<any>>\n\t| WidgetBaseConstructorFunction\n\t| ESMDefaultWidgetBaseFunction;\n\n/**\n * Widget base type\n */\nexport const WIDGET_BASE_TYPE = '__widget_base_type';\n\nexport interface RegistryEventObject extends EventObject<RegistryLabel> {\n\taction: string;\n\titem:\n\t\t| WNodeFactory<any>\n\t\t| DefaultChildrenWNodeFactory<any>\n\t\t| OptionalWNodeFactory<any>\n\t\t| WidgetBaseConstructor\n\t\t| InjectorItem;\n}\n/**\n * Widget Registry Interface\n */\nexport interface RegistryInterface {\n\t/**\n\t * Define a WidgetRegistryItem against a label\n\t *\n\t * @param label The label of the widget to register\n\t * @param registryItem The registry item to define\n\t */\n\tdefine(label: RegistryLabel, registryItem: RegistryItem): void;\n\n\t/**\n\t * Return a RegistryItem for the given label, null if an entry doesn't exist\n\t *\n\t * @param widgetLabel The label of the widget to return\n\t * @returns The RegistryItem for the widgetLabel, `null` if no entry exists\n\t */\n\tget(label: RegistryLabel): WNodeFactory<any> | Callback<any, any, any, RenderResult> | Constructor<any> | null;\n\tget<T extends WNodeFactory<any>>(label: RegistryLabel): T | null;\n\tget<T extends Callback<any, any, any, RenderResult>>(label: RegistryLabel): T | null;\n\tget<T extends WidgetBaseInterface = WidgetBaseInterface>(label: RegistryLabel): Constructor<T> | null;\n\n\t/**\n\t * Returns a boolean if an entry for the label exists\n\t *\n\t * @param widgetLabel The label to search for\n\t * @returns boolean indicating if a widget registry item exists\n\t */\n\thas(label: RegistryLabel): boolean;\n\n\t/**\n\t * Define an Injector against a label\n\t *\n\t * @param label The label of the injector to register\n\t * @param registryItem The injector factory\n\t */\n\tdefineInjector(label: RegistryLabel, injectorFactory: InjectorFactory): void;\n\n\t/**\n\t * Return an Injector registry item for the given label, null if an entry doesn't exist\n\t *\n\t * @param label The label of the injector to return\n\t * @returns The RegistryItem for the widgetLabel, `null` if no entry exists\n\t */\n\tgetInjector<T>(label: RegistryLabel): InjectorItem<T> | null;\n\n\t/**\n\t * Returns a boolean if an injector for the label exists\n\t *\n\t * @param widgetLabel The label to search for\n\t * @returns boolean indicating if a injector registry item exists\n\t */\n\thasInjector(label: RegistryLabel): boolean;\n}\n\n/**\n * Checks is the item is a subclass of WidgetBase (or a WidgetBase)\n *\n * @param item the item to check\n * @returns true/false indicating if the item is a WidgetBaseConstructor\n */\nexport function isWidgetBaseConstructor<T extends WidgetBaseInterface = any>(item: any): item is Constructor<T> {\n\treturn Boolean(item && item._type === WIDGET_BASE_TYPE);\n}\n\nexport function isWidgetFunction(item: any): item is Callback<any, any, any, RenderResult> {\n\treturn Boolean(item && item.isWidget);\n}\n\nexport function isWNodeFactory<W extends WidgetBaseTypes>(node: any): node is WNodeFactory<W> {\n\tif (typeof node === 'function' && node.isFactory) {\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nexport function isWidget<T extends WidgetBaseInterface = any>(\n\titem: any\n): item is Constructor<T> | Callback<any, any, any, RenderResult> {\n\treturn isWidgetBaseConstructor(item) || isWidgetFunction(item);\n}\n\nexport function isWidgetConstructorDefaultExport<T extends WidgetBaseTypes>(\n\titem: any\n): item is ESMDefaultWidgetBase<T> {\n\treturn Boolean(\n\t\titem &&\n\t\t\titem.hasOwnProperty('__esModule') &&\n\t\t\titem.hasOwnProperty('default') &&\n\t\t\t(isWidget(item.default) || isWNodeFactory(item.default))\n\t);\n}\n\n/**\n * The Registry implementation\n */\nexport class Registry extends Evented<{}, RegistryLabel, RegistryEventObject> implements RegistryInterface {\n\t/**\n\t * internal map of labels and RegistryItem\n\t */\n\tprivate _widgetRegistry: Map<RegistryLabel, RegistryItem> | undefined;\n\n\tprivate _injectorRegistry: Map<RegistryLabel, InjectorItem> | undefined;\n\n\t/**\n\t * Emit loaded event for registry label\n\t */\n\tprivate emitLoadedEvent(\n\t\twidgetLabel: RegistryLabel,\n\t\titem:\n\t\t\t| DefaultChildrenWNodeFactory<any>\n\t\t\t| OptionalWNodeFactory<any>\n\t\t\t| WNodeFactory<any>\n\t\t\t| WidgetBaseConstructor\n\t\t\t| InjectorItem\n\t): void {\n\t\tthis.emit({\n\t\t\ttype: widgetLabel,\n\t\t\taction: 'loaded',\n\t\t\titem\n\t\t});\n\t}\n\n\tpublic define(label: RegistryLabel, item: RegistryItem): void {\n\t\tif (this._widgetRegistry === undefined) {\n\t\t\tthis._widgetRegistry = new Map();\n\t\t}\n\n\t\tif (this._widgetRegistry.has(label)) {\n\t\t\tthrow new Error(`widget has already been registered for '${label.toString()}'`);\n\t\t}\n\n\t\tthis._widgetRegistry.set(label, item);\n\n\t\tif (item instanceof Promise) {\n\t\t\titem.then(\n\t\t\t\t(widgetCtor) => {\n\t\t\t\t\tthis._widgetRegistry!.set(label, widgetCtor);\n\t\t\t\t\tthis.emitLoadedEvent(label, widgetCtor);\n\t\t\t\t\treturn widgetCtor;\n\t\t\t\t},\n\t\t\t\t(error) => {\n\t\t\t\t\tthrow error;\n\t\t\t\t}\n\t\t\t);\n\t\t} else if (isWidgetBaseConstructor(item)) {\n\t\t\tthis.emitLoadedEvent(label, item);\n\t\t}\n\t}\n\n\tpublic defineInjector(label: RegistryLabel, injectorFactory: InjectorFactory): void {\n\t\tif (this._injectorRegistry === undefined) {\n\t\t\tthis._injectorRegistry = new Map();\n\t\t}\n\n\t\tif (this._injectorRegistry.has(label)) {\n\t\t\tthrow new Error(`injector has already been registered for '${label.toString()}'`);\n\t\t}\n\n\t\tconst invalidator = new Evented();\n\n\t\tconst injectorItem: InjectorItem = {\n\t\t\tinjector: injectorFactory(() => invalidator.emit({ type: 'invalidate' })),\n\t\t\tinvalidator\n\t\t};\n\n\t\tthis._injectorRegistry.set(label, injectorItem);\n\t\tthis.emitLoadedEvent(label, injectorItem);\n\t}\n\n\tpublic get(\n\t\tlabel: RegistryLabel\n\t): WNodeFactory<any> | Callback<any, any, any, RenderResult> | Constructor<any> | null;\n\tpublic get<T extends WNodeFactory<any>>(label: RegistryLabel): T | null;\n\tpublic get<T extends Callback<any, any, any, RenderResult>>(label: RegistryLabel): T | null;\n\tpublic get<T extends WidgetBaseInterface = WidgetBaseInterface>(label: RegistryLabel): Constructor<T> | null;\n\tpublic get<T extends WidgetBaseInterface = WidgetBaseInterface>(\n\t\tlabel: RegistryLabel\n\t): WNodeFactory<T> | Callback<any, any, any, RenderResult> | Constructor<T> | null {\n\t\tif (!this._widgetRegistry || !this.has(label)) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst item = this._widgetRegistry.get(label);\n\n\t\tif (isWidget<T>(item) || isWNodeFactory(item)) {\n\t\t\treturn item as any;\n\t\t}\n\n\t\tif (item instanceof Promise) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst promise = (<WidgetBaseConstructorFunction>item)();\n\t\tthis._widgetRegistry.set(label, promise);\n\n\t\tpromise.then(\n\t\t\t(widgetCtor: any) => {\n\t\t\t\tif (isWidgetConstructorDefaultExport<T>(widgetCtor)) {\n\t\t\t\t\twidgetCtor = widgetCtor.default;\n\t\t\t\t}\n\n\t\t\t\tthis._widgetRegistry!.set(label, widgetCtor);\n\t\t\t\tthis.emitLoadedEvent(label, widgetCtor);\n\t\t\t\treturn widgetCtor;\n\t\t\t},\n\t\t\t(error) => {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t);\n\n\t\treturn null;\n\t}\n\n\tpublic getInjector<T>(label: RegistryLabel): InjectorItem<T> | null {\n\t\tif (!this._injectorRegistry || !this.hasInjector(label)) {\n\t\t\treturn null;\n\t\t}\n\n\t\treturn this._injectorRegistry.get(label)!;\n\t}\n\n\tpublic has(label: RegistryLabel): boolean {\n\t\treturn Boolean(this._widgetRegistry && this._widgetRegistry.has(label));\n\t}\n\n\tpublic hasInjector(label: RegistryLabel): boolean {\n\t\treturn Boolean(this._injectorRegistry && this._injectorRegistry.has(label));\n\t}\n}\n\nexport default Registry;\n","import { Map } from '../shim/Map';\nimport { Evented, EventObject } from '../core/Evented';\nimport { Constructor, InjectorFactory, InjectorItem, RegistryLabel, WidgetBaseInterface } from './interfaces';\nimport { Registry, RegistryEventObject, RegistryItem } from './Registry';\n\nexport type RegistryHandlerEventMap = {\n\tinvalidate: EventObject<'invalidate'>;\n};\n\nexport class RegistryHandler extends Evented<RegistryHandlerEventMap> {\n\tprivate _registry = new Registry();\n\tprivate _registryWidgetLabelMap: Map<Registry, RegistryLabel[]> = new Map();\n\tprivate _registryInjectorLabelMap: Map<Registry, RegistryLabel[]> = new Map();\n\tprotected baseRegistry!: Registry;\n\n\tconstructor() {\n\t\tsuper();\n\t\tthis.own(this._registry);\n\t\tconst destroy = () => {\n\t\t\tif (this.baseRegistry) {\n\t\t\t\tthis._registryWidgetLabelMap.delete(this.baseRegistry);\n\t\t\t\tthis._registryInjectorLabelMap.delete(this.baseRegistry);\n\t\t\t\tthis.baseRegistry = undefined as any;\n\t\t\t}\n\t\t};\n\t\tthis.own({ destroy });\n\t}\n\n\tpublic set base(baseRegistry: Registry) {\n\t\tif (this.baseRegistry) {\n\t\t\tthis._registryWidgetLabelMap.delete(this.baseRegistry);\n\t\t\tthis._registryInjectorLabelMap.delete(this.baseRegistry);\n\t\t}\n\t\tthis.baseRegistry = baseRegistry;\n\t}\n\n\tpublic get base(): Registry {\n\t\treturn this.baseRegistry;\n\t}\n\n\tpublic define(label: RegistryLabel, widget: RegistryItem): void {\n\t\tthis._registry.define(label, widget);\n\t}\n\n\tpublic defineInjector(label: RegistryLabel, injector: InjectorFactory): void {\n\t\tthis._registry.defineInjector(label, injector);\n\t}\n\n\tpublic has(label: RegistryLabel): boolean {\n\t\treturn this._registry.has(label) || Boolean(this.baseRegistry && this.baseRegistry.has(label));\n\t}\n\n\tpublic hasInjector(label: RegistryLabel): boolean {\n\t\treturn this._registry.hasInjector(label) || Boolean(this.baseRegistry && this.baseRegistry.hasInjector(label));\n\t}\n\n\tpublic get<T extends WidgetBaseInterface = WidgetBaseInterface>(\n\t\tlabel: RegistryLabel,\n\t\tglobalPrecedence: boolean = false\n\t): Constructor<T> | null {\n\t\treturn this._get(label, globalPrecedence, 'get', this._registryWidgetLabelMap);\n\t}\n\n\tpublic getInjector<T>(label: RegistryLabel, globalPrecedence: boolean = false): InjectorItem<T> | null {\n\t\treturn this._get(label, globalPrecedence, 'getInjector', this._registryInjectorLabelMap);\n\t}\n\n\tprivate _get(\n\t\tlabel: RegistryLabel,\n\t\tglobalPrecedence: boolean,\n\t\tgetFunctionName: 'getInjector' | 'get',\n\t\tlabelMap: Map<Registry, RegistryLabel[]>\n\t): any {\n\t\tconst registries = globalPrecedence ? [this.baseRegistry, this._registry] : [this._registry, this.baseRegistry];\n\t\tfor (let i = 0; i < registries.length; i++) {\n\t\t\tconst registry: any = registries[i];\n\t\t\tif (!registry) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst item = registry[getFunctionName](label);\n\t\t\tconst registeredLabels = labelMap.get(registry) || [];\n\t\t\tif (item) {\n\t\t\t\treturn item;\n\t\t\t} else if (registeredLabels.indexOf(label) === -1) {\n\t\t\t\tconst handle = registry.on(label, (event: RegistryEventObject) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\tevent.action === 'loaded' &&\n\t\t\t\t\t\t(this as any)[getFunctionName](label, globalPrecedence) === event.item\n\t\t\t\t\t) {\n\t\t\t\t\t\tthis.emit({ type: 'invalidate' });\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tthis.own(handle);\n\t\t\t\tlabelMap.set(registry, [...registeredLabels, label]);\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n}\n\nexport default RegistryHandler;\n","import global from '../shim/global';\nimport { Theme, ThemeWithVariants, ThemeWithVariant, NamedVariant } from './interfaces';\nimport Injector from './Injector';\nimport cssVars from '../shim/cssVariables';\nimport Map from '../shim/Map';\nimport has from './has';\n\nexport interface ThemeWithVariantsInjectorPayload {\n\ttheme: ThemeWithVariants;\n\tvariant: NamedVariant;\n}\n\nexport interface ThemeInjectorPayload {\n\ttheme: Theme;\n}\n\nexport function isVariantModule(variant: string | NamedVariant): variant is NamedVariant {\n\treturn typeof variant !== 'string';\n}\n\nexport function isThemeWithVariant(theme: Theme | ThemeWithVariants | ThemeWithVariant): theme is ThemeWithVariant {\n\treturn theme && theme.hasOwnProperty('variant');\n}\n\nexport function isThemeWithVariants(theme: Theme | ThemeWithVariants | ThemeWithVariant): theme is ThemeWithVariants {\n\treturn theme && theme.hasOwnProperty('variants');\n}\n\nexport function isThemeInjectorPayloadWithVariant(\n\ttheme: ThemeInjectorPayload | ThemeWithVariantsInjectorPayload | undefined\n): theme is ThemeWithVariantsInjectorPayload {\n\treturn !!theme && theme.hasOwnProperty('variant');\n}\n\nlet processCssVariant = function(_: string) {};\n\nif (!has('dom-css-variables')) {\n\tconst setUpCssVariantSupport = () => {\n\t\tconst styleId = '__dojo_processed_styles';\n\t\tconst processedCssMap = new Map<string, string>();\n\t\tlet variantStyleElement: HTMLStyleElement | undefined;\n\n\t\tfunction applyStyles(css: string) {\n\t\t\tconst style = document.createElement('style');\n\t\t\tstyle.textContent = css;\n\t\t\tstyle.setAttribute('id', styleId);\n\t\t\tif (variantStyleElement && variantStyleElement.parentNode) {\n\t\t\t\tvariantStyleElement.parentNode.replaceChild(style, variantStyleElement);\n\t\t\t} else {\n\t\t\t\tglobal.document.head.appendChild(style);\n\t\t\t}\n\t\t\tvariantStyleElement = style;\n\t\t}\n\n\t\treturn function processCssVariant(variantName: string) {\n\t\t\tconst processedCss = processedCssMap.get(variantName);\n\t\t\tif (processedCss) {\n\t\t\t\tapplyStyles(processedCss);\n\t\t\t} else {\n\t\t\t\tcssVars({\n\t\t\t\t\texclude: `style[id=${styleId}]`,\n\t\t\t\t\tonSuccess: (css) => {\n\t\t\t\t\t\tlet temp = css;\n\t\t\t\t\t\tlet index = temp.indexOf(variantName);\n\t\t\t\t\t\tlet variantCss = '';\n\t\t\t\t\t\twhile (index !== -1) {\n\t\t\t\t\t\t\ttemp = temp.substring(index + variantName.length);\n\t\t\t\t\t\t\tconst match = temp.match(/\\{([^}]+)\\}/);\n\t\t\t\t\t\t\tif (match) {\n\t\t\t\t\t\t\t\tif (variantCss) {\n\t\t\t\t\t\t\t\t\tvariantCss = `${variantCss.substring(0, variantCss.length - 1)}${match[0].substring(\n\t\t\t\t\t\t\t\t\t\t1\n\t\t\t\t\t\t\t\t\t)}`;\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tvariantCss = match[0];\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tindex = temp.indexOf(variantName);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif (variantCss) {\n\t\t\t\t\t\t\tcss = `:root ${variantCss}${css}`;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn css;\n\t\t\t\t\t},\n\t\t\t\t\tonComplete: (css) => {\n\t\t\t\t\t\tprocessedCssMap.set(variantName, css);\n\t\t\t\t\t\tapplyStyles(css);\n\t\t\t\t\t},\n\t\t\t\t\tupdateDOM: false,\n\t\t\t\t\tsilent: true\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\t};\n\tprocessCssVariant = setUpCssVariantSupport();\n}\n\nfunction createThemeInjectorPayload(\n\ttheme: Theme | ThemeWithVariants | ThemeWithVariant,\n\tvariant?: string | NamedVariant\n): ThemeWithVariantsInjectorPayload | ThemeInjectorPayload {\n\tif (isThemeWithVariant(theme)) {\n\t\tif (typeof theme.variant === 'string') {\n\t\t\treturn {\n\t\t\t\ttheme: theme.theme,\n\t\t\t\tvariant: { name: theme.variant, value: theme.theme.variants[theme.variant] }\n\t\t\t};\n\t\t}\n\t\treturn { theme: theme.theme, variant: theme.variant };\n\t} else if (isThemeWithVariants(theme)) {\n\t\tvariant = variant || 'default';\n\t\tif (isVariantModule(variant)) {\n\t\t\tif (!has('dom-css-variables')) {\n\t\t\t\tprocessCssVariant(variant.value.root);\n\t\t\t}\n\t\t\treturn { theme, variant };\n\t\t}\n\t\tif (!has('dom-css-variables')) {\n\t\t\tprocessCssVariant(theme.variants[variant].root);\n\t\t}\n\n\t\treturn { theme: theme, variant: { name: variant, value: theme.variants[variant] } };\n\t}\n\treturn { theme };\n}\n\nexport class ThemeInjector extends Injector {\n\tconstructor(theme?: Theme | ThemeWithVariants | ThemeWithVariant) {\n\t\tsuper(theme ? createThemeInjectorPayload(theme) : theme);\n\t}\n\n\tset<T extends ThemeWithVariants>(theme: T, variant?: keyof T['variants'] | NamedVariant): void;\n\tset(theme: ThemeWithVariant): void;\n\tset(theme: Theme): void;\n\tset(theme: Theme | ThemeWithVariants | ThemeWithVariant, variant?: string | NamedVariant) {\n\t\tsuper.set(createThemeInjectorPayload(theme, variant));\n\t}\n\n\tget(): ThemeWithVariantsInjectorPayload | ThemeInjectorPayload | undefined {\n\t\treturn super.get();\n\t}\n}\n\nexport default ThemeInjector;\n","import { PropertyChangeRecord } from './interfaces';\nimport { WIDGET_BASE_TYPE } from './Registry';\n\nfunction isObjectOrArray(value: any): boolean {\n\treturn Object.prototype.toString.call(value) === '[object Object]' || Array.isArray(value);\n}\n\nexport function always(previousProperty: any, newProperty: any): PropertyChangeRecord {\n\treturn {\n\t\tchanged: true,\n\t\tvalue: newProperty\n\t};\n}\n\nexport function ignore(previousProperty: any, newProperty: any): PropertyChangeRecord {\n\treturn {\n\t\tchanged: false,\n\t\tvalue: newProperty\n\t};\n}\n\nexport function reference(previousProperty: any, newProperty: any): PropertyChangeRecord {\n\treturn {\n\t\tchanged: previousProperty !== newProperty,\n\t\tvalue: newProperty\n\t};\n}\n\nexport function shallow(previousProperty: any, newProperty: any, depth = 0): PropertyChangeRecord {\n\tlet changed = false;\n\n\tconst validOldProperty = previousProperty && isObjectOrArray(previousProperty);\n\tconst validNewProperty = newProperty && isObjectOrArray(newProperty);\n\n\tif (!validOldProperty || !validNewProperty) {\n\t\treturn {\n\t\t\tchanged: true,\n\t\t\tvalue: newProperty\n\t\t};\n\t}\n\n\tconst previousKeys = Object.keys(previousProperty);\n\tconst newKeys = Object.keys(newProperty);\n\n\tif (previousKeys.length !== newKeys.length) {\n\t\tchanged = true;\n\t} else {\n\t\tchanged = newKeys.some((key) => {\n\t\t\tif (depth > 0) {\n\t\t\t\treturn shallow(newProperty[key], previousProperty[key], depth - 1).changed;\n\t\t\t}\n\t\t\treturn newProperty[key] !== previousProperty[key];\n\t\t});\n\t}\n\treturn {\n\t\tchanged,\n\t\tvalue: newProperty\n\t};\n}\n\nexport function auto(previousProperty: any, newProperty: any, depth = 0): PropertyChangeRecord {\n\tlet result;\n\tif (typeof newProperty === 'function') {\n\t\tif (newProperty._type === WIDGET_BASE_TYPE) {\n\t\t\tresult = reference(previousProperty, newProperty);\n\t\t} else {\n\t\t\tresult = ignore(previousProperty, newProperty);\n\t\t}\n\t} else if (isObjectOrArray(newProperty)) {\n\t\tresult = shallow(previousProperty, newProperty, depth);\n\t} else {\n\t\tresult = reference(previousProperty, newProperty);\n\t}\n\treturn result;\n}\n","/* tslint:disable:interface-name */\nimport Map from '../../shim/Map';\nimport { create, invalidator, destroy } from '../vdom';\n\nconst factory = create({ invalidator, destroy });\n\ninterface CacheWrapper {\n\tstatus: 'pending' | 'resolved';\n\tvalue: any;\n}\n\nexport interface ICacheResult<S = void> {\n\tgetOrSet: {\n\t\t<T extends void extends S ? any : keyof S>(\n\t\t\tkey: void extends S ? any : T,\n\t\t\tvalue: void extends S ? () => Promise<T> : () => Promise<S[T]>,\n\t\t\tinvalidate?: boolean\n\t\t): void extends S ? undefined | T : undefined | S[T];\n\t\t<T extends void extends S ? any : keyof S>(\n\t\t\tkey: void extends S ? any : T,\n\t\t\tvalue: void extends S ? () => T : () => S[T],\n\t\t\tinvalidate?: boolean\n\t\t): void extends S ? T : S[T];\n\t\t<T extends void extends S ? any : keyof S>(\n\t\t\tkey: void extends S ? any : T,\n\t\t\tvalue: void extends S ? T : S[T],\n\t\t\tinvalidate?: boolean\n\t\t): void extends S ? T : S[T];\n\t};\n\tget<T extends void extends S ? any : keyof S>(\n\t\tkey: void extends S ? any : T\n\t): void extends S ? T | undefined : S[T] | undefined;\n\tset: {\n\t\t<T extends void extends S ? any : keyof S>(\n\t\t\tkey: void extends S ? any : T,\n\t\t\tvalue: void extends S ? (value: T | undefined) => Promise<T> : (value: S[T] | undefined) => Promise<S[T]>,\n\t\t\tinvalidate?: boolean\n\t\t): void extends S ? T | undefined : S[T] | undefined;\n\t\t<T extends void extends S ? any : keyof S>(\n\t\t\tkey: void extends S ? any : T,\n\t\t\tvalue: void extends S ? (value: T | undefined) => T : (value: S[T] | undefined) => S[T],\n\t\t\tinvalidate?: boolean\n\t\t): void extends S ? T : S[T];\n\t\t<T extends void extends S ? any : keyof S>(\n\t\t\tkey: void extends S ? any : T,\n\t\t\tvalue: void extends S ? T : S[T],\n\t\t\tinvalidate?: boolean\n\t\t): void extends S ? T : S[T];\n\t};\n\thas<T extends void extends S ? any : keyof S>(key: void extends S ? any : T): boolean;\n\tdelete<T extends void extends S ? any : keyof S>(key: void extends S ? any : T, invalidate?: boolean): void;\n\tclear(invalidate?: boolean): void;\n}\n\nexport function createICacheMiddleware<S = void>() {\n\tconst icache = factory(\n\t\t({ middleware: { invalidator, destroy } }): ICacheResult<S> => {\n\t\t\tconst cacheMap = new Map<string, CacheWrapper>();\n\t\t\tdestroy(() => {\n\t\t\t\tcacheMap.clear();\n\t\t\t});\n\n\t\t\tconst api: any = {\n\t\t\t\tget: (key: any): any => {\n\t\t\t\t\tconst cachedValue = cacheMap.get(key);\n\t\t\t\t\tif (!cachedValue || cachedValue.status === 'pending') {\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t\treturn cachedValue.value;\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tapi.set = (key: any, value: any, invalidate: boolean = true): any => {\n\t\t\t\tconst current = api.get(key);\n\t\t\t\tif (typeof value === 'function') {\n\t\t\t\t\tvalue = value(current);\n\t\t\t\t\tif (value && typeof value.then === 'function') {\n\t\t\t\t\t\tcacheMap.set(key, {\n\t\t\t\t\t\t\tstatus: 'pending',\n\t\t\t\t\t\t\tvalue\n\t\t\t\t\t\t});\n\t\t\t\t\t\tvalue.then((result: any) => {\n\t\t\t\t\t\t\tconst cachedValue = cacheMap.get(key);\n\t\t\t\t\t\t\tif (cachedValue && cachedValue.value === value) {\n\t\t\t\t\t\t\t\tcacheMap.set(key, {\n\t\t\t\t\t\t\t\t\tstatus: 'resolved',\n\t\t\t\t\t\t\t\t\tvalue: result\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t\tinvalidate && invalidator();\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tcacheMap.set(key, {\n\t\t\t\t\tstatus: 'resolved',\n\t\t\t\t\tvalue\n\t\t\t\t});\n\t\t\t\tinvalidate && invalidator();\n\t\t\t\treturn value;\n\t\t\t};\n\t\t\tapi.has = (key: any) => {\n\t\t\t\treturn cacheMap.has(key);\n\t\t\t};\n\t\t\tapi.delete = (key: any, invalidate: boolean = true) => {\n\t\t\t\tcacheMap.delete(key);\n\t\t\t\tinvalidate && invalidator();\n\t\t\t};\n\t\t\tapi.clear = (invalidate: boolean = true): void => {\n\t\t\t\tcacheMap.clear();\n\t\t\t\tinvalidate && invalidator();\n\t\t\t};\n\t\t\tapi.getOrSet = (key: any, value: any, invalidate: boolean = true): any | undefined => {\n\t\t\t\tlet cachedValue = cacheMap.get(key);\n\t\t\t\tif (!cachedValue) {\n\t\t\t\t\tapi.set(key, value, invalidate);\n\t\t\t\t}\n\t\t\t\tcachedValue = cacheMap.get(key);\n\t\t\t\tif (!cachedValue || cachedValue.status === 'pending') {\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\treturn cachedValue.value;\n\t\t\t};\n\t\t\treturn api;\n\t\t}\n\t);\n\treturn icache;\n}\n\nexport const icache = createICacheMiddleware();\n\nexport default icache;\n","import { create, getRegistry, invalidator, destroy } from '../vdom';\nimport { RegistryLabel } from '../interfaces';\nimport { Handle } from '../Destroyable';\n\nconst injectorFactory = create({ getRegistry, invalidator, destroy });\n\nexport const injector = injectorFactory(({ middleware: { getRegistry, invalidator, destroy } }) => {\n\tconst handles: Handle[] = [];\n\tdestroy(() => {\n\t\tlet handle: Handle | undefined;\n\t\twhile ((handle = handles.pop())) {\n\t\t\thandle.destroy();\n\t\t}\n\t});\n\tconst registry = getRegistry();\n\treturn {\n\t\tsubscribe(label: RegistryLabel, callback: Function = invalidator) {\n\t\t\tif (registry) {\n\t\t\t\tconst item = registry.getInjector(label);\n\t\t\t\tif (item) {\n\t\t\t\t\tconst handle = item.invalidator.on('invalidate', () => {\n\t\t\t\t\t\tcallback();\n\t\t\t\t\t});\n\t\t\t\t\thandles.push(handle);\n\t\t\t\t\treturn () => {\n\t\t\t\t\t\tconst index = handles.indexOf(handle);\n\t\t\t\t\t\tif (index !== -1) {\n\t\t\t\t\t\t\thandles.splice(index, 1);\n\t\t\t\t\t\t\thandle.destroy();\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tget<T>(label: RegistryLabel): T | null {\n\t\t\tif (registry) {\n\t\t\t\tconst item = registry.getInjector<T>(label);\n\t\t\t\tif (item) {\n\t\t\t\t\treturn item.injector();\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t};\n});\n\nexport default injector;\n","import { Theme, Classes, ClassNames, ThemeWithVariant, ThemeWithVariants, NamedVariant } from './../interfaces';\nimport { create, invalidator, diffProperty, getRegistry } from '../vdom';\nimport icache from './icache';\nimport injector from './injector';\nimport Set from '../../shim/Set';\nimport { shallow, auto } from '../diff';\nimport Registry from '../Registry';\nimport {\n\tThemeInjector,\n\tisThemeInjectorPayloadWithVariant,\n\tisThemeWithVariants,\n\tisThemeWithVariant,\n\tThemeInjectorPayload,\n\tThemeWithVariantsInjectorPayload\n} from '../ThemeInjector';\n\nexport { Theme, Classes, ClassNames } from './../interfaces';\n\nexport interface ThemeProperties {\n\ttheme?: Theme | ThemeWithVariant;\n\tclasses?: Classes;\n}\n\nexport const THEME_KEY = ' _key';\n\nexport const INJECTED_THEME_KEY = '__theme_injector';\n\nfunction registerThemeInjector(theme: Theme | ThemeWithVariant | undefined, themeRegistry: Registry): ThemeInjector {\n\tconst themeInjector = new ThemeInjector(theme);\n\tthemeRegistry.defineInjector(INJECTED_THEME_KEY, (invalidator) => {\n\t\tthemeInjector.setInvalidator(invalidator);\n\t\treturn () => themeInjector;\n\t});\n\treturn themeInjector;\n}\n\nconst factory = create({ invalidator, icache, diffProperty, injector, getRegistry }).properties<ThemeProperties>();\n\nexport const theme = factory(\n\t({ middleware: { invalidator, icache, diffProperty, injector, getRegistry }, properties }) => {\n\t\tlet themeKeys = new Set();\n\n\t\tdiffProperty('theme', properties, (current, next) => {\n\t\t\tconst diffResult = auto(current.theme, next.theme);\n\t\t\tif (diffResult.changed) {\n\t\t\t\ticache.clear();\n\t\t\t\tinvalidator();\n\t\t\t}\n\t\t});\n\t\tdiffProperty('classes', (current: ThemeProperties, next: ThemeProperties) => {\n\t\t\tlet result = false;\n\t\t\tif ((current.classes && !next.classes) || (!current.classes && next.classes)) {\n\t\t\t\tresult = true;\n\t\t\t} else if (current.classes && next.classes) {\n\t\t\t\tconst keys = [...themeKeys.values()];\n\t\t\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\t\t\tlet key = keys[i];\n\t\t\t\t\tresult = shallow(current.classes[key], next.classes[key], 1).changed;\n\t\t\t\t\tif (result) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (result) {\n\t\t\t\ticache.clear();\n\t\t\t\tinvalidator();\n\t\t\t}\n\t\t});\n\n\t\tfunction getTheme() {\n\t\t\tconst { theme } = properties();\n\t\t\tif (theme) {\n\t\t\t\treturn theme;\n\t\t\t}\n\t\t\tconst themeInjector = injector.get<ThemeInjector>(INJECTED_THEME_KEY);\n\t\t\tif (themeInjector) {\n\t\t\t\tconst themePayload = themeInjector.get();\n\t\t\t\tif (isThemeInjectorPayloadWithVariant(themePayload)) {\n\t\t\t\t\treturn { theme: themePayload.theme, variant: themePayload.variant };\n\t\t\t\t} else if (themePayload) {\n\t\t\t\t\treturn themePayload.theme;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tconst themeInjector = injector.get(INJECTED_THEME_KEY);\n\t\tif (!themeInjector) {\n\t\t\tconst registry = getRegistry();\n\t\t\tif (registry) {\n\t\t\t\tregisterThemeInjector(undefined, registry.base);\n\t\t\t}\n\t\t}\n\t\tinjector.subscribe(INJECTED_THEME_KEY, () => {\n\t\t\ticache.clear();\n\t\t\tinvalidator();\n\t\t});\n\n\t\tfunction set(theme: Theme): void;\n\t\tfunction set<T extends ThemeWithVariants>(theme: T, variant?: keyof T['variants'] | NamedVariant): void;\n\t\tfunction set<T extends ThemeWithVariants>(\n\t\t\ttheme: Theme | T,\n\t\t\tvariant?: keyof T['variants'] | NamedVariant\n\t\t): void {\n\t\t\tconst currentTheme = injector.get<ThemeInjector>(INJECTED_THEME_KEY);\n\t\t\tif (currentTheme) {\n\t\t\t\tif (isThemeWithVariants(theme)) {\n\t\t\t\t\tcurrentTheme.set(theme, variant);\n\t\t\t\t} else {\n\t\t\t\t\tcurrentTheme.set(theme);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tclasses<T extends ClassNames>(css: T): T {\n\t\t\t\tconst cachedTheme = icache.get<T>(css);\n\t\t\t\tif (cachedTheme) {\n\t\t\t\t\treturn cachedTheme;\n\t\t\t\t}\n\t\t\t\tconst { [THEME_KEY]: key, ...classes } = css;\n\t\t\t\tthemeKeys.add(key);\n\t\t\t\tlet theme = classes as ClassNames;\n\t\t\t\tlet { classes: currentClasses } = properties();\n\t\t\t\tlet currentTheme = getTheme();\n\n\t\t\t\tif (currentTheme && isThemeWithVariant(currentTheme)) {\n\t\t\t\t\tcurrentTheme = isThemeWithVariants(currentTheme.theme)\n\t\t\t\t\t\t? currentTheme.theme.theme\n\t\t\t\t\t\t: currentTheme.theme;\n\t\t\t\t}\n\n\t\t\t\tif (currentTheme && currentTheme[key]) {\n\t\t\t\t\ttheme = { ...theme, ...currentTheme[key] };\n\t\t\t\t}\n\t\t\t\tif (currentClasses && currentClasses[key]) {\n\t\t\t\t\tconst classKeys = Object.keys(currentClasses[key]);\n\t\t\t\t\tfor (let i = 0; i < classKeys.length; i++) {\n\t\t\t\t\t\tconst classKey = classKeys[i];\n\t\t\t\t\t\tif (theme[classKey]) {\n\t\t\t\t\t\t\ttheme[classKey] = `${theme[classKey]} ${currentClasses[key][classKey].join(' ')}`;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\ticache.set(css, theme, false);\n\t\t\t\treturn theme as T;\n\t\t\t},\n\t\t\tvariant() {\n\t\t\t\tconst theme = getTheme();\n\t\t\t\tif (theme && isThemeWithVariant(theme)) {\n\t\t\t\t\treturn theme.variant.value.root;\n\t\t\t\t}\n\t\t\t},\n\t\t\tset,\n\t\t\tget(): ThemeWithVariantsInjectorPayload | ThemeInjectorPayload | undefined {\n\t\t\t\tconst currentTheme = injector.get<ThemeInjector>(INJECTED_THEME_KEY);\n\t\t\t\tif (currentTheme) {\n\t\t\t\t\treturn currentTheme.get();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n);\n\nexport default theme;\n","import global from '../shim/global';\nimport has from '../core/has';\nimport WeakMap from '../shim/WeakMap';\nimport Set from '../shim/Set';\nimport Map from '../shim/Map';\nimport { flat } from '../shim/array';\nimport {\n\tWNode,\n\tVNode,\n\tDNode,\n\tVNodeProperties,\n\tTransitionStrategy,\n\tSupportedClassName,\n\tDomVNode,\n\tLazyDefine,\n\tConstructor,\n\tRenderResult,\n\tWidgetBaseInterface,\n\tCallback,\n\tMiddlewareMap,\n\tWNodeFactory,\n\tOptionalWNodeFactory,\n\tUnionToIntersection,\n\tWidgetProperties,\n\tMiddlewareResultFactory,\n\tWidgetBaseTypes,\n\tRegistryLabel,\n\tDeferredVirtualProperties,\n\tDomOptions,\n\tDefaultChildrenWNodeFactory\n} from './interfaces';\nimport { Registry, isWidget, isWidgetBaseConstructor, isWidgetFunction, isWNodeFactory } from './Registry';\nimport { auto } from './diff';\nimport RegistryHandler from './RegistryHandler';\nimport { NodeHandler } from './NodeHandler';\n\ndeclare global {\n\tnamespace JSX {\n\t\ttype Element = WNode;\n\t\tinterface ElementAttributesProperty {\n\t\t\t__properties__: {};\n\t\t}\n\t\tinterface IntrinsicElements {\n\t\t\t[key: string]: VNodeProperties;\n\t\t}\n\t\tinterface ElementChildrenAttribute {\n\t\t\t__children__: {};\n\t\t}\n\t}\n}\n\nexport interface BaseNodeWrapper {\n\tid: string;\n\towningId: string;\n\tnode: WNode<any> | VNode;\n\tdomNode?: Node;\n\tdepth: number;\n\torder: number;\n\trequiresInsertBefore?: boolean;\n\thasPreviousSiblings?: boolean;\n\thasParentWNode?: boolean;\n\tnamespace?: string;\n\thasAnimations?: boolean;\n\tparentId: string;\n\tchildDomWrapperId?: string;\n}\n\nexport interface WNodeWrapper extends BaseNodeWrapper {\n\tnode: WNode<any>;\n\tkeys?: string[];\n\tinstance?: any;\n\tmergeNodes?: Node[];\n\tnodeHandlerCalled?: boolean;\n\tregistryItem?: Callback<any, any, any, RenderResult> | Constructor<any> | null;\n\tproperties: any;\n}\n\nexport interface WidgetMeta {\n\twidgetName: string;\n\tmountNode: HTMLElement;\n\tdirty: boolean;\n\tinvalidator: () => void;\n\tmiddleware?: any;\n\tmiddlewareIds: string[];\n\tregistryHandler?: RegistryHandler;\n\tregistry: Registry;\n\tproperties: any;\n\toriginalProperties: any;\n\tchildren?: DNode[];\n\trendering: boolean;\n\tnodeMap?: Map<string | number, HTMLElement>;\n\tdestroyMap?: Map<string, () => void>;\n\tdeferRefs: number;\n\tcustomDiffProperties?: Set<string>;\n\tcustomDiffMap?: Map<string, Map<string, (current: any, next: any) => any>>;\n\tpropertiesCalled: boolean;\n}\n\nexport interface WidgetData {\n\tonDetach: () => void;\n\tonAttach: () => void;\n\tdirty: boolean;\n\tnodeHandler: NodeHandler;\n\tinvalidate?: Function;\n\trendering: boolean;\n\tinputProperties: any;\n\tregistry: RegistryHandler;\n}\n\nexport interface VNodeWrapper extends BaseNodeWrapper {\n\tnode: VNode | DomVNode;\n\tmerged?: boolean;\n\tinserted?: boolean;\n\tdeferredProperties?: VNodeProperties;\n}\n\nexport type DNodeWrapper = VNodeWrapper | WNodeWrapper;\n\nexport interface MountOptions {\n\tsync: boolean;\n\tmerge: boolean;\n\ttransition?: TransitionStrategy;\n\tdomNode: HTMLElement | null;\n\tregistry: Registry;\n}\n\nexport interface Renderer {\n\tinvalidate(): void;\n\tmount(mountOptions?: Partial<MountOptions>): void;\n\tunmount(): void;\n}\n\ninterface ProcessItem {\n\tcurrent?: (WNodeWrapper | VNodeWrapper)[];\n\tnext?: (WNodeWrapper | VNodeWrapper)[];\n\tmeta: ProcessMeta;\n}\n\ninterface ProcessResult {\n\titem?: ProcessItem;\n\twidget?: AttachApplication | DetachApplication;\n\tdom?: ApplicationInstruction;\n}\n\ninterface ProcessMeta {\n\tmergeNodes?: Node[];\n\toldIndex?: number;\n\tnewIndex?: number;\n}\n\ninterface InvalidationQueueItem {\n\tid: string;\n\tdepth: number;\n\torder: number;\n}\n\ninterface Instruction {\n\tcurrent: undefined | DNodeWrapper;\n\tnext: undefined | DNodeWrapper;\n}\n\ninterface CreateWidgetInstruction {\n\tnext: WNodeWrapper;\n}\n\ninterface UpdateWidgetInstruction {\n\tcurrent: WNodeWrapper;\n\tnext: WNodeWrapper;\n}\n\ninterface RemoveWidgetInstruction {\n\tcurrent: WNodeWrapper;\n}\n\ninterface CreateDomInstruction {\n\tnext: VNodeWrapper;\n}\n\ninterface UpdateDomInstruction {\n\tcurrent: VNodeWrapper;\n\tnext: VNodeWrapper;\n}\n\ninterface RemoveDomInstruction {\n\tcurrent: VNodeWrapper;\n}\n\ninterface AttachApplication {\n\ttype: 'attach';\n\tid: string;\n\tinstance?: WidgetBaseInterface;\n\tattached?: boolean;\n}\n\ninterface DetachApplication {\n\ttype: 'detach';\n\tcurrent: WNodeWrapper;\n\tinstance?: WidgetBaseInterface;\n}\n\ninterface CreateDomApplication {\n\ttype: 'create';\n\tcurrent?: VNodeWrapper;\n\tnext: VNodeWrapper;\n\tparentDomNode: Node;\n}\n\ninterface DeleteDomApplication {\n\ttype: 'delete';\n\tcurrent: VNodeWrapper;\n}\n\ninterface UpdateDomApplication {\n\ttype: 'update';\n\tcurrent: VNodeWrapper;\n\tnext: VNodeWrapper;\n}\n\ninterface PreviousProperties {\n\tproperties: any;\n\tattributes?: any;\n\tevents?: any;\n}\n\ntype ApplicationInstruction =\n\t| CreateDomApplication\n\t| UpdateDomApplication\n\t| DeleteDomApplication\n\t| Required<AttachApplication>\n\t| DetachApplication;\n\nconst EMPTY_ARRAY: DNodeWrapper[] = [];\nconst nodeOperations = ['focus', 'blur', 'scrollIntoView', 'click'];\nconst NAMESPACE_W3 = 'http://www.w3.org/';\nconst NAMESPACE_SVG = NAMESPACE_W3 + '2000/svg';\nconst NAMESPACE_XLINK = NAMESPACE_W3 + '1999/xlink';\nconst WNODE = '__WNODE_TYPE';\nconst VNODE = '__VNODE_TYPE';\nconst DOMVNODE = '__DOMVNODE_TYPE';\n\n// @ts-ignore\nconst scope = typeof __DOJO_SCOPE === 'string' ? __DOJO_SCOPE : 'dojo_scope';\n\nif (!global[scope]) {\n\tglobal[scope] = {};\n}\n\nexport function setRendering(value: boolean) {\n\tglobal[scope].rendering = value;\n}\n\nexport function incrementBlockCount() {\n\tconst blocksPending = global[scope].blocksPending || 0;\n\tglobal[scope].blocksPending = blocksPending + 1;\n}\n\nexport function decrementBlockCount() {\n\tconst blocksPending = global[scope].blocksPending || 0;\n\tglobal[scope].blocksPending = blocksPending - 1;\n}\n\nexport function isTextNode(item: any): item is Text {\n\treturn item && item.nodeType === 3;\n}\n\nfunction isLazyDefine(item: any): item is LazyDefine<any> {\n\treturn Boolean(item && item.label);\n}\n\nfunction isWNodeWrapper(child: DNodeWrapper): child is WNodeWrapper {\n\treturn child && isWNode(child.node);\n}\n\nfunction isVNodeWrapper(child?: DNodeWrapper | null): child is VNodeWrapper {\n\treturn !!child && isVNode(child.node);\n}\n\nfunction isVirtualWrapper(child?: DNodeWrapper | null): boolean {\n\treturn isVNodeWrapper(child) && child.node.tag === 'virtual';\n}\n\nfunction isBodyWrapper(wrapper?: DNodeWrapper): boolean {\n\treturn isVNodeWrapper(wrapper) && wrapper.node.tag === 'body';\n}\n\nfunction isAttachApplication(value: any): value is AttachApplication | DetachApplication {\n\treturn !!value.type;\n}\n\nexport function isWNode<W extends WidgetBaseTypes = any>(child: any): child is WNode<W> {\n\treturn Boolean(child && child !== true && typeof child !== 'string' && child.type === WNODE);\n}\n\nexport function isVNode(child: DNode): child is VNode {\n\treturn Boolean(\n\t\tchild && child !== true && typeof child !== 'string' && (child.type === VNODE || child.type === DOMVNODE)\n\t);\n}\n\nexport function isDomVNode(child: DNode): child is DomVNode {\n\treturn Boolean(child && child !== true && typeof child !== 'string' && child.type === DOMVNODE);\n}\n\nexport function isElementNode(value: any): value is Element {\n\treturn !!value.tagName;\n}\n\nfunction toTextVNode(data: any): VNode {\n\treturn {\n\t\ttag: '',\n\t\tproperties: {},\n\t\tchildren: undefined,\n\t\ttext: `${data}`,\n\t\ttype: VNODE\n\t};\n}\n\nfunction updateAttributes(\n\tdomNode: Element,\n\tpreviousAttributes: { [index: string]: string | undefined },\n\tattributes: { [index: string]: string | undefined },\n\tnamespace?: string\n) {\n\tconst attrNames = Object.keys(attributes);\n\tconst attrCount = attrNames.length;\n\tfor (let i = 0; i < attrCount; i++) {\n\t\tconst attrName = attrNames[i];\n\t\tconst attrValue = attributes[attrName];\n\t\tconst previousAttrValue = previousAttributes[attrName];\n\t\tif (attrValue !== previousAttrValue) {\n\t\t\tupdateAttribute(domNode, attrName, attrValue, namespace);\n\t\t}\n\t}\n}\n\n/**\n * Wrapper function for calls to create a widget.\n */\nexport function w<W extends WidgetBaseTypes>(\n\tnode: WNode<W>,\n\tproperties: Partial<W['properties']>,\n\tchildren?: W['properties'] extends { __children__: any } ? W['properties']['__children__'] : W['children']\n): WNode<W>;\nexport function w<W extends WidgetBaseTypes>(\n\twidgetConstructor: Constructor<W> | RegistryLabel | LazyDefine<W>,\n\tproperties: W['properties'],\n\tchildren?: W['children']\n): WNode<W>;\nexport function w<W extends WNodeFactory<any>>(\n\twidgetConstructor: W,\n\tproperties: W['properties'],\n\tchildren: W['children'] extends any[] ? W['children'] : [W['children']]\n): WNode<W>;\nexport function w<W extends DefaultChildrenWNodeFactory<any>>(\n\twidgetConstructor: W,\n\tproperties: W['properties'],\n\tchildren?: W['children']\n): WNode<W>;\nexport function w<W extends OptionalWNodeFactory<any>>(\n\twidgetConstructor: W,\n\tproperties: W['properties'],\n\tchildren?: W['children'] extends any[] ? W['children'] : [W['children']]\n): WNode<W>;\nexport function w<W extends WidgetBaseTypes>(\n\twidgetConstructorOrNode:\n\t\t| Constructor<W>\n\t\t| RegistryLabel\n\t\t| WNodeFactory<W>\n\t\t| WNode<W>\n\t\t| LazyDefine<W>\n\t\t| Callback<any, any, any, RenderResult>,\n\tproperties: W['properties'],\n\tchildren?: any\n): WNode<W> {\n\tif ((properties as any).__children__) {\n\t\tdelete (properties as any).__children__;\n\t}\n\n\tif (isWNodeFactory<W>(widgetConstructorOrNode)) {\n\t\treturn widgetConstructorOrNode(properties, children);\n\t}\n\n\tif (isWNode<W>(widgetConstructorOrNode)) {\n\t\tproperties = { ...(widgetConstructorOrNode.properties as any), ...(properties as any) };\n\t\tchildren = children ? children : widgetConstructorOrNode.children;\n\t\twidgetConstructorOrNode = widgetConstructorOrNode.widgetConstructor;\n\t}\n\n\treturn {\n\t\tchildren: children || [],\n\t\twidgetConstructor: widgetConstructorOrNode,\n\t\tproperties,\n\t\ttype: WNODE\n\t};\n}\n\n/**\n * Wrapper function for calls to create VNodes.\n */\nexport function v(node: VNode, properties: VNodeProperties, children: undefined | DNode[]): VNode;\nexport function v(node: VNode, properties: VNodeProperties): VNode;\nexport function v(tag: string, children: undefined | DNode[]): VNode;\nexport function v<K extends keyof HTMLElementTagNameMap>(\n\ttag: K,\n\tproperties: DeferredVirtualProperties | VNodeProperties<HTMLElementTagNameMap[K]>,\n\tchildren?: DNode[]\n): VNode;\nexport function v(tag: string, properties: DeferredVirtualProperties | VNodeProperties, children?: DNode[]): VNode;\nexport function v(tag: string): VNode;\nexport function v(\n\ttag: string | VNode,\n\tpropertiesOrChildren: VNodeProperties | DeferredVirtualProperties | DNode[] = {},\n\tchildren: undefined | DNode[] = undefined\n): VNode {\n\tlet properties: VNodeProperties | DeferredVirtualProperties = propertiesOrChildren;\n\tlet deferredPropertiesCallback;\n\n\tif (typeof (tag as any).tag === 'function') {\n\t\treturn (tag as any).tag(properties, children);\n\t}\n\n\tif (Array.isArray(propertiesOrChildren)) {\n\t\tchildren = propertiesOrChildren;\n\t\tproperties = {};\n\t}\n\n\tif (typeof properties === 'function') {\n\t\tdeferredPropertiesCallback = properties;\n\t\tproperties = {};\n\t}\n\n\tif (isVNode(tag)) {\n\t\tlet { classes = [], styles = {}, ...newProperties } = properties;\n\t\tlet { classes: nodeClasses = [], styles: nodeStyles = {}, ...nodeProperties } = tag.properties;\n\t\tnodeClasses = Array.isArray(nodeClasses) ? nodeClasses : [nodeClasses];\n\t\tclasses = Array.isArray(classes) ? classes : [classes];\n\t\tstyles = { ...nodeStyles, ...styles };\n\t\tproperties = { ...nodeProperties, ...newProperties, classes: [...nodeClasses, ...classes], styles };\n\t\tchildren = children ? children : tag.children;\n\t\ttag = tag.tag;\n\t}\n\n\treturn {\n\t\ttag,\n\t\tdeferredPropertiesCallback,\n\t\tchildren,\n\t\tproperties,\n\t\ttype: VNODE\n\t};\n}\n\n/**\n * Create a VNode for an existing DOM Node.\n */\nexport function dom(\n\t{ node, attrs = {}, props = {}, on = {}, diffType = 'none', onAttach }: DomOptions,\n\tchildren?: DNode[]\n): DomVNode {\n\treturn {\n\t\ttag: isElementNode(node) ? node.tagName.toLowerCase() : '',\n\t\tproperties: props,\n\t\tattributes: attrs,\n\t\tevents: on,\n\t\tchildren,\n\t\ttype: DOMVNODE,\n\t\tdomNode: node,\n\t\ttext: isElementNode(node) ? undefined : node.data,\n\t\tdiffType,\n\t\tonAttach\n\t};\n}\n\nexport const REGISTRY_ITEM = '__registry_item';\n\nexport class FromRegistry<P> {\n\tstatic type = REGISTRY_ITEM;\n\t/* tslint:disable-next-line:variable-name */\n\t__properties__: P = {} as P;\n\tname: string | undefined;\n}\n\nexport function fromRegistry<P>(tag: string): Constructor<FromRegistry<P>> {\n\treturn class extends FromRegistry<P> {\n\t\tproperties: P = {} as P;\n\t\tstatic type = REGISTRY_ITEM;\n\t\tname = tag;\n\t};\n}\n\nexport function tsx(tag: any, properties = {}, ...children: any[]): DNode {\n\tchildren = flat(children, Infinity);\n\tproperties = properties === null ? {} : properties;\n\tif (typeof tag === 'string') {\n\t\treturn v(tag, properties, children);\n\t} else if (tag.type === 'registry' && (properties as any).__autoRegistryItem) {\n\t\tconst name = (properties as any).__autoRegistryItem;\n\t\tdelete (properties as any).__autoRegistryItem;\n\t\treturn w(name, properties, children);\n\t} else if (tag.type === REGISTRY_ITEM) {\n\t\tconst registryItem = new tag();\n\t\treturn w(registryItem.name, properties, children);\n\t} else {\n\t\treturn w(tag, properties, children);\n\t}\n}\n\nexport function propertiesDiff(current: any, next: any, invalidator: () => void, ignoreProperties: string[]) {\n\tconst propertyNames = [...Object.keys(current), ...Object.keys(next)];\n\tfor (let i = 0; i < propertyNames.length; i++) {\n\t\tif (ignoreProperties.indexOf(propertyNames[i]) > -1) {\n\t\t\tcontinue;\n\t\t}\n\t\tconst result = auto(current[propertyNames[i]], next[propertyNames[i]]);\n\t\tif (result.changed) {\n\t\t\tinvalidator();\n\t\t\tbreak;\n\t\t}\n\t\tignoreProperties.push(propertyNames[i]);\n\t}\n}\n\nfunction buildPreviousProperties(domNode: any, current: VNodeWrapper) {\n\tconst {\n\t\tnode: { diffType, properties, attributes }\n\t} = current;\n\tif (!diffType || diffType === 'vdom') {\n\t\treturn {\n\t\t\tproperties: current.deferredProperties\n\t\t\t\t? { ...current.deferredProperties, ...current.node.properties }\n\t\t\t\t: current.node.properties,\n\t\t\tattributes: current.node.attributes,\n\t\t\tevents: current.node.events\n\t\t};\n\t} else if (diffType === 'none') {\n\t\treturn {\n\t\t\tproperties: {},\n\t\t\tattributes: current.node.attributes ? {} : undefined,\n\t\t\tevents: current.node.events\n\t\t};\n\t}\n\tlet newProperties: any = {\n\t\tproperties: {}\n\t};\n\tif (attributes) {\n\t\tnewProperties.attributes = {};\n\t\tnewProperties.events = current.node.events;\n\t\tObject.keys(properties).forEach((propName) => {\n\t\t\tnewProperties.properties[propName] = domNode[propName];\n\t\t});\n\t\tObject.keys(attributes).forEach((attrName) => {\n\t\t\tnewProperties.attributes[attrName] = domNode.getAttribute(attrName);\n\t\t});\n\t\treturn newProperties;\n\t}\n\tnewProperties.properties = Object.keys(properties).reduce(\n\t\t(props, property) => {\n\t\t\tprops[property] = domNode.getAttribute(property) || domNode[property];\n\t\t\treturn props;\n\t\t},\n\t\t{} as any\n\t);\n\treturn newProperties;\n}\n\nfunction checkDistinguishable(wrappers: DNodeWrapper[], index: number, parentWNodeWrapper?: WNodeWrapper) {\n\tconst wrapperToCheck = wrappers[index];\n\tif (isVNodeWrapper(wrapperToCheck) && !wrapperToCheck.node.tag) {\n\t\treturn;\n\t}\n\tconst { key } = wrapperToCheck.node.properties;\n\tlet parentName = 'unknown';\n\tif (parentWNodeWrapper) {\n\t\tconst {\n\t\t\tnode: { widgetConstructor }\n\t\t} = parentWNodeWrapper;\n\t\tparentName = (widgetConstructor as any).name || 'unknown';\n\t}\n\n\tif (key === undefined || key === null) {\n\t\tfor (let i = 0; i < wrappers.length; i++) {\n\t\t\tif (i !== index) {\n\t\t\t\tconst wrapper = wrappers[i];\n\t\t\t\tif (same(wrapper, wrapperToCheck)) {\n\t\t\t\t\tlet nodeIdentifier: string;\n\t\t\t\t\tif (isWNodeWrapper(wrapper)) {\n\t\t\t\t\t\tnodeIdentifier = (wrapper.node.widgetConstructor as any).name || 'unknown';\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnodeIdentifier = wrapper.node.tag;\n\t\t\t\t\t}\n\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t`A widget (${parentName}) has had a child added or removed, but they were not able to uniquely identified. It is recommended to provide a unique 'key' property when using the same widget or element (${nodeIdentifier}) multiple times as siblings`\n\t\t\t\t\t);\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction same(dnode1: DNodeWrapper, dnode2: DNodeWrapper): boolean {\n\tif (isVNodeWrapper(dnode1) && isVNodeWrapper(dnode2)) {\n\t\tif (isDomVNode(dnode1.node) && isDomVNode(dnode2.node)) {\n\t\t\tif (dnode1.node.domNode !== dnode2.node.domNode) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\tif (dnode1.node.tag !== dnode2.node.tag) {\n\t\t\treturn false;\n\t\t}\n\t\tif (dnode1.node.properties.key !== dnode2.node.properties.key) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t} else if (isWNodeWrapper(dnode1) && isWNodeWrapper(dnode2)) {\n\t\tconst widgetConstructor1 = dnode1.registryItem || dnode1.node.widgetConstructor;\n\t\tconst widgetConstructor2 = dnode2.registryItem || dnode2.node.widgetConstructor;\n\t\tconst {\n\t\t\tnode: { properties: props1 }\n\t\t} = dnode1;\n\t\tconst {\n\t\t\tnode: { properties: props2 }\n\t\t} = dnode2;\n\t\tif (dnode1.instance === undefined && typeof widgetConstructor2 === 'string') {\n\t\t\treturn false;\n\t\t}\n\t\tif (widgetConstructor1 !== widgetConstructor2) {\n\t\t\treturn false;\n\t\t}\n\t\tif (props1.key !== props2.key) {\n\t\t\treturn false;\n\t\t}\n\t\tif (!((widgetConstructor1 as any).keys || []).every((key: string) => props1[key] === props2[key])) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t}\n\treturn false;\n}\n\nfunction findIndexOfChild(children: DNodeWrapper[], sameAs: DNodeWrapper, start: number) {\n\tfor (let i = start; i < children.length; i++) {\n\t\tif (same(children[i], sameAs)) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n}\n\nfunction createClassPropValue(classes: SupportedClassName | SupportedClassName[] = []) {\n\tlet classNames = '';\n\tif (Array.isArray(classes)) {\n\t\tfor (let i = 0; i < classes.length; i++) {\n\t\t\tlet className = classes[i];\n\t\t\tif (className && className !== true) {\n\t\t\t\tclassNames = classNames ? `${classNames} ${className}` : className;\n\t\t\t}\n\t\t}\n\t\treturn classNames;\n\t}\n\tif (classes && classes !== true) {\n\t\tclassNames = classes;\n\t}\n\treturn classNames;\n}\n\nfunction updateAttribute(domNode: Element, attrName: string, attrValue: string | undefined, namespace?: string) {\n\tif (namespace === NAMESPACE_SVG && attrName === 'href' && attrValue) {\n\t\tdomNode.setAttributeNS(NAMESPACE_XLINK, attrName, attrValue);\n\t} else if ((attrName === 'role' && attrValue === '') || attrValue === undefined) {\n\t\tdomNode.removeAttribute(attrName);\n\t} else {\n\t\tdomNode.setAttribute(attrName, attrValue);\n\t}\n}\n\nfunction arrayFrom(arr: any) {\n\treturn Array.prototype.slice.call(arr);\n}\n\nfunction createFactory(callback: any, middlewares: any, key?: any): any {\n\tconst factory = (properties: any, children?: any) => {\n\t\tif (properties) {\n\t\t\tconst result = w(callback, properties, children);\n\t\t\tcallback.isWidget = true;\n\t\t\tcallback.middlewares = middlewares;\n\t\t\treturn result;\n\t\t}\n\t\treturn {\n\t\t\tmiddlewares,\n\t\t\tcallback\n\t\t};\n\t};\n\tconst keys = Object.keys(middlewares).reduce((keys: string[], middlewareName: any) => {\n\t\tconst middleware = middlewares[middlewareName];\n\t\tif (middleware.keys) {\n\t\t\tkeys = [...keys, ...middleware.keys];\n\t\t}\n\t\treturn keys;\n\t}, key ? [key] : []);\n\n\tcallback.keys = keys;\n\tfactory.keys = keys;\n\tfactory.isFactory = true;\n\treturn factory;\n}\n\ntype KeysMatching<T, V> = { [K in keyof T]: T[K] extends V ? K : never }[keyof T];\n\nexport function create<T extends MiddlewareMap, MiddlewareProps = ReturnType<T[keyof T]>['properties']>(\n\tmiddlewares: T = {} as T\n) {\n\tfunction properties<Props>() {\n\t\tfunction returns<ReturnValue>(\n\t\t\tcallback: Callback<WidgetProperties & Props & UnionToIntersection<MiddlewareProps>, DNode[], T, ReturnValue>\n\t\t): ReturnValue extends RenderResult\n\t\t\t? DefaultChildrenWNodeFactory<{\n\t\t\t\t\tproperties: Props & WidgetProperties & UnionToIntersection<MiddlewareProps>;\n\t\t\t\t\tchildren: DNode[];\n\t\t\t }>\n\t\t\t: MiddlewareResultFactory<\n\t\t\t\t\tWidgetProperties & Props & UnionToIntersection<MiddlewareProps>,\n\t\t\t\t\tDNode[],\n\t\t\t\t\tT,\n\t\t\t\t\tReturnValue\n\t\t\t > {\n\t\t\treturn createFactory(callback, middlewares);\n\t\t}\n\n\t\tfunction key(key: KeysMatching<Props, string | number>) {\n\t\t\tfunction returns<ReturnValue>(\n\t\t\t\tcallback: Callback<\n\t\t\t\t\tWidgetProperties & Props & UnionToIntersection<MiddlewareProps>,\n\t\t\t\t\tDNode[],\n\t\t\t\t\tT,\n\t\t\t\t\tReturnValue\n\t\t\t\t>\n\t\t\t): ReturnValue extends RenderResult\n\t\t\t\t? DefaultChildrenWNodeFactory<{\n\t\t\t\t\t\tproperties: Props & WidgetProperties & UnionToIntersection<MiddlewareProps>;\n\t\t\t\t\t\tchildren: DNode[];\n\t\t\t\t }>\n\t\t\t\t: MiddlewareResultFactory<\n\t\t\t\t\t\tWidgetProperties & Props & UnionToIntersection<MiddlewareProps>,\n\t\t\t\t\t\tDNode[],\n\t\t\t\t\t\tT,\n\t\t\t\t\t\tReturnValue\n\t\t\t\t > {\n\t\t\t\treturn createFactory(callback, middlewares, key);\n\t\t\t}\n\t\t\treturn returns;\n\t\t}\n\n\t\tfunction children<Children>() {\n\t\t\tfunction returns<ReturnValue>(\n\t\t\t\tcallback: Callback<\n\t\t\t\t\tWidgetProperties & Props & UnionToIntersection<MiddlewareProps>,\n\t\t\t\t\tChildren,\n\t\t\t\t\tT,\n\t\t\t\t\tReturnValue\n\t\t\t\t>\n\t\t\t): ReturnValue extends RenderResult\n\t\t\t\t? UnionToIntersection<Children> extends undefined\n\t\t\t\t\t? OptionalWNodeFactory<{\n\t\t\t\t\t\t\tproperties: Props & WidgetProperties & UnionToIntersection<MiddlewareProps>;\n\t\t\t\t\t\t\tchildren: NonNullable<Children>;\n\t\t\t\t\t }>\n\t\t\t\t\t: WNodeFactory<{\n\t\t\t\t\t\t\tproperties: Props & WidgetProperties & UnionToIntersection<MiddlewareProps>;\n\t\t\t\t\t\t\tchildren: Children;\n\t\t\t\t\t }>\n\t\t\t\t: MiddlewareResultFactory<\n\t\t\t\t\t\tWidgetProperties & Props & UnionToIntersection<MiddlewareProps>,\n\t\t\t\t\t\tChildren,\n\t\t\t\t\t\tT,\n\t\t\t\t\t\tReturnValue\n\t\t\t\t > {\n\t\t\t\treturn createFactory(callback, middlewares);\n\t\t\t}\n\n\t\t\tfunction key(key: KeysMatching<Props, string | number>) {\n\t\t\t\tfunction returns<ReturnValue>(\n\t\t\t\t\tcallback: Callback<\n\t\t\t\t\t\tWidgetProperties & Props & UnionToIntersection<MiddlewareProps>,\n\t\t\t\t\t\tChildren,\n\t\t\t\t\t\tT,\n\t\t\t\t\t\tReturnValue\n\t\t\t\t\t>\n\t\t\t\t): ReturnValue extends RenderResult\n\t\t\t\t\t? UnionToIntersection<Children> extends undefined\n\t\t\t\t\t\t? OptionalWNodeFactory<{\n\t\t\t\t\t\t\t\tproperties: Props & WidgetProperties & UnionToIntersection<MiddlewareProps>;\n\t\t\t\t\t\t\t\tchildren: NonNullable<Children>;\n\t\t\t\t\t\t }>\n\t\t\t\t\t\t: WNodeFactory<{\n\t\t\t\t\t\t\t\tproperties: Props & WidgetProperties & UnionToIntersection<MiddlewareProps>;\n\t\t\t\t\t\t\t\tchildren: Children;\n\t\t\t\t\t\t }>\n\t\t\t\t\t: MiddlewareResultFactory<\n\t\t\t\t\t\t\tWidgetProperties & Props & UnionToIntersection<MiddlewareProps>,\n\t\t\t\t\t\t\tChildren,\n\t\t\t\t\t\t\tT,\n\t\t\t\t\t\t\tReturnValue\n\t\t\t\t\t > {\n\t\t\t\t\treturn createFactory(callback, middlewares, key);\n\t\t\t\t}\n\t\t\t\treturn returns;\n\t\t\t}\n\t\t\treturns.key = key;\n\t\t\treturn returns;\n\t\t}\n\t\treturns.children = children;\n\t\treturns.key = key;\n\t\treturn returns;\n\t}\n\n\tfunction children<Children>() {\n\t\tfunction properties<Props>() {\n\t\t\tfunction returns<ReturnValue>(\n\t\t\t\tcallback: Callback<\n\t\t\t\t\tWidgetProperties & Props & UnionToIntersection<MiddlewareProps>,\n\t\t\t\t\tChildren,\n\t\t\t\t\tT,\n\t\t\t\t\tReturnValue\n\t\t\t\t>\n\t\t\t): ReturnValue extends RenderResult\n\t\t\t\t? UnionToIntersection<Children> extends undefined\n\t\t\t\t\t? OptionalWNodeFactory<{\n\t\t\t\t\t\t\tproperties: Props & WidgetProperties & UnionToIntersection<MiddlewareProps>;\n\t\t\t\t\t\t\tchildren: NonNullable<Children>;\n\t\t\t\t\t }>\n\t\t\t\t\t: WNodeFactory<{\n\t\t\t\t\t\t\tproperties: Props & WidgetProperties & UnionToIntersection<MiddlewareProps>;\n\t\t\t\t\t\t\tchildren: Children;\n\t\t\t\t\t }>\n\t\t\t\t: MiddlewareResultFactory<\n\t\t\t\t\t\tWidgetProperties & Props & UnionToIntersection<MiddlewareProps>,\n\t\t\t\t\t\tChildren,\n\t\t\t\t\t\tT,\n\t\t\t\t\t\tReturnValue\n\t\t\t\t > {\n\t\t\t\treturn createFactory(callback, middlewares);\n\t\t\t}\n\t\t\tfunction key(key: KeysMatching<Props, string | number>) {\n\t\t\t\tfunction returns<ReturnValue>(\n\t\t\t\t\tcallback: Callback<\n\t\t\t\t\t\tWidgetProperties & Props & UnionToIntersection<MiddlewareProps>,\n\t\t\t\t\t\tChildren,\n\t\t\t\t\t\tT,\n\t\t\t\t\t\tReturnValue\n\t\t\t\t\t>\n\t\t\t\t): ReturnValue extends RenderResult\n\t\t\t\t\t? UnionToIntersection<Children> extends undefined\n\t\t\t\t\t\t? OptionalWNodeFactory<{\n\t\t\t\t\t\t\t\tproperties: Props & WidgetProperties & UnionToIntersection<MiddlewareProps>;\n\t\t\t\t\t\t\t\tchildren: NonNullable<Children>;\n\t\t\t\t\t\t }>\n\t\t\t\t\t\t: WNodeFactory<{\n\t\t\t\t\t\t\t\tproperties: Props & WidgetProperties & UnionToIntersection<MiddlewareProps>;\n\t\t\t\t\t\t\t\tchildren: Children;\n\t\t\t\t\t\t }>\n\t\t\t\t\t: MiddlewareResultFactory<\n\t\t\t\t\t\t\tWidgetProperties & Props & UnionToIntersection<MiddlewareProps>,\n\t\t\t\t\t\t\tChildren,\n\t\t\t\t\t\t\tT,\n\t\t\t\t\t\t\tReturnValue\n\t\t\t\t\t > {\n\t\t\t\t\treturn createFactory(callback, middlewares, key);\n\t\t\t\t}\n\t\t\t\treturn returns;\n\t\t\t}\n\t\t\treturns.key = key;\n\t\t\treturn returns;\n\t\t}\n\n\t\tfunction returns<ReturnValue>(\n\t\t\tcallback: Callback<WidgetProperties & UnionToIntersection<MiddlewareProps>, Children, T, ReturnValue>\n\t\t): ReturnValue extends RenderResult\n\t\t\t? UnionToIntersection<Children> extends undefined\n\t\t\t\t? OptionalWNodeFactory<{\n\t\t\t\t\t\tproperties: WidgetProperties & UnionToIntersection<MiddlewareProps>;\n\t\t\t\t\t\tchildren: NonNullable<Children>;\n\t\t\t\t }>\n\t\t\t\t: WNodeFactory<{\n\t\t\t\t\t\tproperties: WidgetProperties & UnionToIntersection<MiddlewareProps>;\n\t\t\t\t\t\tchildren: Children;\n\t\t\t\t }>\n\t\t\t: MiddlewareResultFactory<\n\t\t\t\t\tWidgetProperties & UnionToIntersection<MiddlewareProps>,\n\t\t\t\t\tNonNullable<Children>,\n\t\t\t\t\tT,\n\t\t\t\t\tReturnValue\n\t\t\t > {\n\t\t\treturn createFactory(callback, middlewares);\n\t\t}\n\t\treturns.properties = properties;\n\t\treturn returns;\n\t}\n\n\tfunction returns<ReturnValue>(\n\t\tcallback: Callback<WidgetProperties & UnionToIntersection<MiddlewareProps>, DNode[], T, ReturnValue>\n\t): ReturnValue extends RenderResult\n\t\t? DefaultChildrenWNodeFactory<{\n\t\t\t\tproperties: WidgetProperties & UnionToIntersection<MiddlewareProps>;\n\t\t\t\tchildren: DNode[];\n\t\t }>\n\t\t: MiddlewareResultFactory<WidgetProperties & UnionToIntersection<MiddlewareProps>, DNode[], T, ReturnValue> {\n\t\treturn createFactory(callback, middlewares);\n\t}\n\treturns.children = children;\n\treturns.properties = properties;\n\treturn returns;\n}\n\nconst factory = create();\n\nfunction wrapNodes(renderer: () => RenderResult) {\n\tconst result = renderer();\n\tconst isWNodeWrapper = isWNode(result);\n\tconst callback = () => {\n\t\treturn result;\n\t};\n\tcallback.isWNodeWrapper = isWNodeWrapper;\n\treturn factory(callback);\n}\n\nexport const widgetInstanceMap = new WeakMap<WidgetBaseInterface, WidgetData>();\nconst widgetMetaMap = new Map<string, WidgetMeta>();\nconst requestedDomNodes = new Set();\nlet wrapperId = 0;\nlet metaId = 0;\n\nfunction addNodeToMap(id: string, key: string | number, node: HTMLElement) {\n\tconst widgetMeta = widgetMetaMap.get(id);\n\tif (widgetMeta) {\n\t\twidgetMeta.nodeMap = widgetMeta.nodeMap || new Map();\n\t\twidgetMeta.nodeMap.set(key, node);\n\t\tif (requestedDomNodes.has(`${id}-${key}`)) {\n\t\t\twidgetMeta.invalidator();\n\t\t\trequestedDomNodes.delete(`${id}-${key}`);\n\t\t}\n\t}\n}\n\nfunction destroyHandles(meta: WidgetMeta) {\n\tconst { destroyMap, middlewareIds } = meta;\n\tif (!destroyMap) {\n\t\treturn;\n\t}\n\tfor (let i = 0; i < middlewareIds.length; i++) {\n\t\tconst id = middlewareIds[i];\n\t\tconst destroy = destroyMap.get(id);\n\t\tdestroy && destroy();\n\t\tdestroyMap.delete(id);\n\t\tif (destroyMap.size === 0) {\n\t\t\tbreak;\n\t\t}\n\t}\n\tdestroyMap.clear();\n}\n\nfunction runDiffs(meta: WidgetMeta, current: any, next: any) {\n\tlet customProperties: any = {};\n\tmeta.customDiffMap = meta.customDiffMap || new Map();\n\tif (meta.customDiffMap.size) {\n\t\tmeta.customDiffMap.forEach((diffMap) => {\n\t\t\tdiffMap.forEach((diff, propertyName) => {\n\t\t\t\tconst result = diff({ ...current }, { ...next });\n\t\t\t\tif (result) {\n\t\t\t\t\tcustomProperties[propertyName] = result;\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n\treturn customProperties;\n}\n\nexport const invalidator = factory(({ id }) => {\n\tconst [widgetId] = id.split('-');\n\treturn () => {\n\t\tconst widgetMeta = widgetMetaMap.get(widgetId);\n\t\tif (widgetMeta) {\n\t\t\treturn widgetMeta.invalidator();\n\t\t}\n\t};\n});\n\nexport const node = factory(({ id }) => {\n\treturn {\n\t\tget(key: string | number): HTMLElement | null {\n\t\t\tconst [widgetId] = id.split('-');\n\t\t\tconst widgetMeta = widgetMetaMap.get(widgetId);\n\t\t\tif (widgetMeta) {\n\t\t\t\twidgetMeta.nodeMap = widgetMeta.nodeMap || new Map();\n\t\t\t\tconst mountNode = widgetMeta.mountNode;\n\t\t\t\tconst node = widgetMeta.nodeMap.get(key);\n\t\t\t\tif (\n\t\t\t\t\tnode &&\n\t\t\t\t\t(mountNode.contains(node) ||\n\t\t\t\t\t\t(global.document.body !== mountNode && global.document.body.contains(node)))\n\t\t\t\t) {\n\t\t\t\t\treturn node;\n\t\t\t\t}\n\t\t\t\trequestedDomNodes.add(`${widgetId}-${key}`);\n\t\t\t}\n\t\t\treturn null;\n\t\t}\n\t};\n});\n\nexport const diffProperty = factory(({ id }) => {\n\tfunction callback<T extends (...args: any) => any, K extends keyof ReturnType<T>>(\n\t\tproperty: K,\n\t\tproperties: T,\n\t\tdiff: (current: ReturnType<T>, next: ReturnType<T>) => void | ReturnType<T>[K]\n\t): void;\n\tfunction callback(propertyName: string, diff: (current: any, next: any) => void): void;\n\tfunction callback(propertyName: string, propertiesOrDiff: any, diff?: any) {\n\t\tconst [widgetId] = id.split('-');\n\t\tconst widgetMeta = widgetMetaMap.get(widgetId);\n\t\tif (!diff) {\n\t\t\tdiff = propertiesOrDiff;\n\t\t}\n\t\tif (widgetMeta) {\n\t\t\twidgetMeta.customDiffMap = widgetMeta.customDiffMap || new Map();\n\t\t\twidgetMeta.customDiffProperties = widgetMeta.customDiffProperties || new Set();\n\t\t\tconst propertyDiffMap = widgetMeta.customDiffMap.get(id) || new Map();\n\t\t\tif (!propertyDiffMap.has(propertyName)) {\n\t\t\t\tconst result = diff({}, widgetMeta.originalProperties);\n\t\t\t\tif (result !== undefined) {\n\t\t\t\t\tif (has('dojo-debug')) {\n\t\t\t\t\t\tif (widgetMeta.propertiesCalled) {\n\t\t\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t\t\t`Calling \"propertyDiff\" middleware after accessing properties in \"${\n\t\t\t\t\t\t\t\t\twidgetMeta.widgetName\n\t\t\t\t\t\t\t\t}\", can result in referencing stale properties.`\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\twidgetMeta.properties = { ...widgetMeta.properties, [propertyName]: result };\n\t\t\t\t}\n\t\t\t\tpropertyDiffMap.set(propertyName, diff);\n\t\t\t\twidgetMeta.customDiffProperties.add(propertyName);\n\t\t\t}\n\t\t\twidgetMeta.customDiffMap.set(id, propertyDiffMap);\n\t\t}\n\t}\n\n\treturn callback;\n});\n\nexport const destroy = factory(({ id }) => {\n\treturn (destroyFunction: () => void): void => {\n\t\tconst [widgetId] = id.split('-');\n\t\tconst widgetMeta = widgetMetaMap.get(widgetId);\n\t\tif (widgetMeta) {\n\t\t\twidgetMeta.destroyMap = widgetMeta.destroyMap || new Map();\n\t\t\tif (!widgetMeta.destroyMap.has(id)) {\n\t\t\t\twidgetMeta.destroyMap.set(id, destroyFunction);\n\t\t\t}\n\t\t}\n\t};\n});\n\nexport const getRegistry = factory(({ id }) => {\n\tconst [widgetId] = id.split('-');\n\treturn (): RegistryHandler | null => {\n\t\tconst widgetMeta = widgetMetaMap.get(widgetId);\n\t\tif (widgetMeta) {\n\t\t\tif (!widgetMeta.registryHandler) {\n\t\t\t\twidgetMeta.registryHandler = new RegistryHandler();\n\t\t\t\twidgetMeta.registryHandler.base = widgetMeta.registry;\n\t\t\t\twidgetMeta.registryHandler.on('invalidate', widgetMeta.invalidator);\n\t\t\t}\n\t\t\twidgetMeta.registryHandler = widgetMeta.registryHandler || new RegistryHandler();\n\t\t\treturn widgetMeta.registryHandler;\n\t\t}\n\t\treturn null;\n\t};\n});\n\nexport const defer = factory(({ id }) => {\n\tconst [widgetId] = id.split('-');\n\tlet isDeferred = false;\n\treturn {\n\t\tpause() {\n\t\t\tconst widgetMeta = widgetMetaMap.get(widgetId);\n\t\t\tif (!isDeferred && widgetMeta) {\n\t\t\t\twidgetMeta.deferRefs = widgetMeta.deferRefs + 1;\n\t\t\t\tisDeferred = true;\n\t\t\t}\n\t\t},\n\t\tresume() {\n\t\t\tconst widgetMeta = widgetMetaMap.get(widgetId);\n\t\t\tif (isDeferred && widgetMeta) {\n\t\t\t\twidgetMeta.deferRefs = widgetMeta.deferRefs - 1;\n\t\t\t\tisDeferred = false;\n\t\t\t}\n\t\t}\n\t};\n});\n\nfunction wrapFunctionProperties(id: string, properties: any) {\n\tconst props: any = {};\n\tconst propertyNames = Object.keys(properties);\n\tfor (let i = 0; i < propertyNames.length; i++) {\n\t\tconst propertyName = propertyNames[i];\n\t\tif (typeof properties[propertyName] === 'function') {\n\t\t\tprops[propertyName] = function WrappedProperty(...args: any[]) {\n\t\t\t\tconst widgetMeta = widgetMetaMap.get(id);\n\t\t\t\tif (widgetMeta) {\n\t\t\t\t\treturn widgetMeta.originalProperties[propertyName](...args);\n\t\t\t\t}\n\t\t\t\treturn properties[propertyName](...args);\n\t\t\t};\n\t\t\tprops[propertyName].unwrap = () => {\n\t\t\t\tconst widgetMeta = widgetMetaMap.get(id);\n\t\t\t\tif (widgetMeta) {\n\t\t\t\t\treturn widgetMeta.originalProperties[propertyName];\n\t\t\t\t}\n\t\t\t\treturn properties[propertyName];\n\t\t\t};\n\t\t} else {\n\t\t\tprops[propertyName] = properties[propertyName];\n\t\t}\n\t}\n\treturn props;\n}\n\nexport function renderer(renderer: () => RenderResult): Renderer {\n\tlet _mountOptions: MountOptions & { domNode: HTMLElement } = {\n\t\tsync: false,\n\t\tmerge: true,\n\t\ttransition: undefined,\n\t\tdomNode: global.document.body,\n\t\tregistry: new Registry()\n\t};\n\tlet _invalidationQueue: InvalidationQueueItem[] = [];\n\tlet _processQueue: (ProcessItem | DetachApplication | AttachApplication)[] = [];\n\tlet _deferredProcessQueue: (ProcessItem | DetachApplication | AttachApplication)[] = [];\n\tlet _applicationQueue: ApplicationInstruction[] = [];\n\tlet _eventMap = new WeakMap<Function, EventListener>();\n\tlet _idToWrapperMap = new Map<string, DNodeWrapper>();\n\tlet _wrapperSiblingMap = new WeakMap<DNodeWrapper, DNodeWrapper>();\n\tlet _idToChildrenWrappers = new Map<string, DNodeWrapper[]>();\n\tlet _insertBeforeMap: undefined | WeakMap<DNodeWrapper, Node> = new WeakMap<DNodeWrapper, Node>();\n\tlet _nodeToWrapperMap = new WeakMap<VNode | WNode<any>, WNodeWrapper>();\n\tlet _renderScheduled: number | undefined;\n\tlet _deferredRenderCallbacks: Function[] = [];\n\tlet parentInvalidate: () => void;\n\tlet _allMergedNodes: Node[] = [];\n\tlet _appWrapperId: string | undefined;\n\tlet _deferredProcessIds = new Map<number, Function>();\n\n\tfunction nodeOperation(\n\t\tpropName: string,\n\t\tpropValue: (() => boolean) | boolean,\n\t\tpreviousValue: boolean,\n\t\tdomNode: HTMLElement & { [index: string]: any }\n\t): void {\n\t\tlet result = propValue && !previousValue;\n\t\tif (typeof propValue === 'function') {\n\t\t\tresult = propValue();\n\t\t}\n\t\tif (result === true) {\n\t\t\t_deferredRenderCallbacks.push(() => {\n\t\t\t\tdomNode[propName]();\n\t\t\t});\n\t\t}\n\t}\n\n\tfunction updateEvent(\n\t\tdomNode: Node,\n\t\teventName: string,\n\t\tcurrentValue: (event: Event) => void,\n\t\tpreviousValue?: Function\n\t) {\n\t\tif (previousValue) {\n\t\t\tconst previousEvent = _eventMap.get(previousValue);\n\t\t\tpreviousEvent && domNode.removeEventListener(eventName, previousEvent);\n\t\t}\n\n\t\tlet callback = currentValue;\n\n\t\tif (eventName === 'input') {\n\t\t\tcallback = function(this: any, evt: Event) {\n\t\t\t\tcurrentValue.call(this, evt);\n\t\t\t\t(evt.target as any)['oninput-value'] = (evt.target as HTMLInputElement).value;\n\t\t\t};\n\t\t}\n\n\t\tdomNode.addEventListener(eventName, callback);\n\t\t_eventMap.set(currentValue, callback);\n\t}\n\n\tfunction removeOrphanedEvents(\n\t\tdomNode: Element,\n\t\tpreviousProperties: VNodeProperties,\n\t\tproperties: VNodeProperties,\n\t\tonlyEvents: boolean = false\n\t) {\n\t\tObject.keys(previousProperties).forEach((propName) => {\n\t\t\tconst isEvent = propName.substr(0, 2) === 'on' || onlyEvents;\n\t\t\tconst eventName = onlyEvents ? propName : propName.substr(2);\n\t\t\tif (isEvent && !properties[propName]) {\n\t\t\t\tconst eventCallback = _eventMap.get(previousProperties[propName]);\n\t\t\t\tif (eventCallback) {\n\t\t\t\t\tdomNode.removeEventListener(eventName, eventCallback);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\n\tfunction resolveRegistryItem(wrapper: WNodeWrapper, instance?: any, id?: string) {\n\t\tif (!isWidget(wrapper.node.widgetConstructor)) {\n\t\t\tconst owningNode = _nodeToWrapperMap.get(wrapper.node);\n\t\t\tif (owningNode) {\n\t\t\t\tif (owningNode.instance) {\n\t\t\t\t\tinstance = owningNode.instance;\n\t\t\t\t} else {\n\t\t\t\t\tid = owningNode.id;\n\t\t\t\t}\n\t\t\t}\n\t\t\tlet registry: RegistryHandler | undefined;\n\t\t\tif (instance) {\n\t\t\t\tconst instanceData = widgetInstanceMap.get(instance);\n\t\t\t\tif (instanceData) {\n\t\t\t\t\tregistry = instanceData.registry;\n\t\t\t\t}\n\t\t\t} else if (id !== undefined) {\n\t\t\t\tconst widgetMeta = widgetMetaMap.get(id);\n\t\t\t\tif (widgetMeta) {\n\t\t\t\t\tif (!widgetMeta.registryHandler) {\n\t\t\t\t\t\twidgetMeta.registryHandler = new RegistryHandler();\n\t\t\t\t\t\twidgetMeta.registryHandler.base = widgetMeta.registry;\n\t\t\t\t\t\twidgetMeta.registryHandler.on('invalidate', widgetMeta.invalidator);\n\t\t\t\t\t}\n\t\t\t\t\tregistry = widgetMeta.registryHandler;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (registry) {\n\t\t\t\tlet registryLabel: symbol | string;\n\t\t\t\tif (isLazyDefine(wrapper.node.widgetConstructor)) {\n\t\t\t\t\tconst { label, registryItem } = wrapper.node.widgetConstructor;\n\t\t\t\t\tif (!registry.has(label)) {\n\t\t\t\t\t\tregistry.define(label, registryItem);\n\t\t\t\t\t}\n\t\t\t\t\tregistryLabel = label;\n\t\t\t\t} else {\n\t\t\t\t\tregistryLabel = wrapper.node.widgetConstructor as any;\n\t\t\t\t}\n\t\t\t\tlet item = registry.get(registryLabel) as any;\n\t\t\t\tif (isWNodeFactory(item)) {\n\t\t\t\t\tconst node = item(wrapper.node.properties, wrapper.node.children);\n\t\t\t\t\tif (isWidgetFunction(node.widgetConstructor)) {\n\t\t\t\t\t\twrapper.registryItem = node.widgetConstructor;\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\twrapper.registryItem = item;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction mapNodeToInstance(nodes: DNode[], wrapper: WNodeWrapper) {\n\t\twhile (nodes.length) {\n\t\t\tlet node = nodes.pop();\n\t\t\tif (isWNode(node) || isVNode(node)) {\n\t\t\t\tif (!_nodeToWrapperMap.has(node)) {\n\t\t\t\t\t_nodeToWrapperMap.set(node, wrapper);\n\t\t\t\t\tif (node.children && node.children.length) {\n\t\t\t\t\t\tnodes = [...nodes, ...node.children];\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction renderedToWrapper(\n\t\trendered: DNode[],\n\t\tparent: DNodeWrapper,\n\t\tcurrentParent: DNodeWrapper | null\n\t): DNodeWrapper[] {\n\t\tconst { requiresInsertBefore, hasPreviousSiblings, namespace, depth } = parent;\n\t\tconst wrappedRendered: DNodeWrapper[] = [];\n\t\tconst hasParentWNode = isWNodeWrapper(parent);\n\t\tconst hasVirtualParentNode = isVirtualWrapper(parent);\n\t\tconst currentParentChildren =\n\t\t\t(isVNodeWrapper(currentParent) && _idToChildrenWrappers.get(currentParent.id)) || [];\n\t\tconst hasCurrentParentChildren = currentParentChildren.length > 0;\n\t\tconst insertBefore =\n\t\t\t((requiresInsertBefore || hasPreviousSiblings !== false) && (hasParentWNode || hasVirtualParentNode)) ||\n\t\t\t(hasCurrentParentChildren && rendered.length > 1);\n\t\tlet previousItem: DNodeWrapper | undefined;\n\t\tif (isWNodeWrapper(parent) && rendered.length) {\n\t\t\tmapNodeToInstance([...rendered], parent);\n\t\t}\n\t\tfor (let i = 0; i < rendered.length; i++) {\n\t\t\tlet renderedItem = rendered[i];\n\t\t\tif (!renderedItem || renderedItem === true) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (typeof renderedItem === 'string') {\n\t\t\t\trenderedItem = toTextVNode(renderedItem);\n\t\t\t}\n\t\t\tconst owningNode = _nodeToWrapperMap.get(renderedItem);\n\t\t\tconst wrapper: DNodeWrapper = {\n\t\t\t\tnode: renderedItem,\n\t\t\t\tdepth: depth + 1,\n\t\t\t\torder: i,\n\t\t\t\tparentId: parent.id,\n\t\t\t\trequiresInsertBefore: insertBefore,\n\t\t\t\thasParentWNode,\n\t\t\t\tnamespace: namespace\n\t\t\t} as DNodeWrapper;\n\t\t\tif (isVNode(renderedItem)) {\n\t\t\t\tif (renderedItem.deferredPropertiesCallback) {\n\t\t\t\t\t(wrapper as VNodeWrapper).deferredProperties = renderedItem.deferredPropertiesCallback(false);\n\t\t\t\t}\n\t\t\t\tif (renderedItem.properties.exitAnimation) {\n\t\t\t\t\tparent.hasAnimations = true;\n\t\t\t\t\tlet nextParent = _idToWrapperMap.get(parent.parentId);\n\t\t\t\t\twhile (nextParent) {\n\t\t\t\t\t\tif (nextParent.hasAnimations) {\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tnextParent.hasAnimations = true;\n\t\t\t\t\t\tnextParent = _idToWrapperMap.get(nextParent.parentId);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (owningNode) {\n\t\t\t\twrapper.owningId = owningNode.id;\n\t\t\t}\n\t\t\tif (isWNode(renderedItem)) {\n\t\t\t\tresolveRegistryItem(wrapper as WNodeWrapper, (parent as any).instance, (parent as any).id);\n\t\t\t}\n\t\t\tif (previousItem) {\n\t\t\t\t_wrapperSiblingMap.set(previousItem, wrapper);\n\t\t\t}\n\t\t\twrappedRendered.push(wrapper);\n\t\t\tpreviousItem = wrapper;\n\t\t}\n\t\treturn wrappedRendered;\n\t}\n\n\tfunction findParentDomNode(currentNode: DNodeWrapper): Node | undefined {\n\t\tlet parentDomNode: Node | undefined;\n\t\tlet parentWrapper = _idToWrapperMap.get(currentNode.parentId);\n\n\t\twhile (!parentDomNode && parentWrapper) {\n\t\t\tif (\n\t\t\t\t!parentDomNode &&\n\t\t\t\tisVNodeWrapper(parentWrapper) &&\n\t\t\t\t!isVirtualWrapper(parentWrapper) &&\n\t\t\t\tparentWrapper.domNode\n\t\t\t) {\n\t\t\t\tparentDomNode = parentWrapper.domNode;\n\t\t\t}\n\t\t\tparentWrapper = _idToWrapperMap.get(parentWrapper.parentId);\n\t\t}\n\t\treturn parentDomNode;\n\t}\n\n\tfunction runDeferredProperties(next: VNodeWrapper) {\n\t\tconst { deferredPropertiesCallback } = next.node;\n\t\tif (deferredPropertiesCallback) {\n\t\t\tconst properties = next.node.properties;\n\t\t\t_deferredRenderCallbacks.push(() => {\n\t\t\t\tif (_idToWrapperMap.has(next.owningId)) {\n\t\t\t\t\tconst deferredProperties = next.deferredProperties;\n\t\t\t\t\tnext.deferredProperties = deferredPropertiesCallback(true);\n\t\t\t\t\tprocessProperties(next, {\n\t\t\t\t\t\tproperties: { ...deferredProperties, ...properties }\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\n\tfunction findInsertBefore(next: DNodeWrapper) {\n\t\tlet insertBefore: Node | null = null;\n\t\tlet searchNode: DNodeWrapper | undefined = next;\n\t\twhile (!insertBefore) {\n\t\t\tconst nextSibling = _wrapperSiblingMap.get(searchNode);\n\t\t\tif (nextSibling) {\n\t\t\t\tlet domNode = nextSibling.domNode;\n\t\t\t\tif (isWNodeWrapper(nextSibling) || isVirtualWrapper(nextSibling)) {\n\t\t\t\t\tif (!nextSibling.childDomWrapperId) {\n\t\t\t\t\t\tnextSibling.childDomWrapperId = findDomNodeOnParentWrapper(nextSibling.id);\n\t\t\t\t\t}\n\t\t\t\t\tif (nextSibling.childDomWrapperId) {\n\t\t\t\t\t\tconst childWrapper = _idToWrapperMap.get(nextSibling.childDomWrapperId);\n\t\t\t\t\t\tif (childWrapper && !isBodyWrapper(childWrapper)) {\n\t\t\t\t\t\t\tdomNode = childWrapper.domNode;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (domNode && domNode.parentNode) {\n\t\t\t\t\tinsertBefore = domNode;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tsearchNode = nextSibling;\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tsearchNode = searchNode && _idToWrapperMap.get(searchNode.parentId);\n\t\t\tif (!searchNode || (isVNodeWrapper(searchNode) && !isVirtualWrapper(searchNode))) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\treturn insertBefore;\n\t}\n\n\tfunction setValue(domNode: any, propValue?: any, previousValue?: any) {\n\t\tconst domValue = domNode.value;\n\t\tconst onInputValue = domNode['oninput-value'];\n\t\tconst onSelectValue = domNode['select-value'];\n\n\t\tif (onSelectValue && domValue !== onSelectValue) {\n\t\t\tdomNode.value = onSelectValue;\n\t\t\tif (domNode.value === onSelectValue) {\n\t\t\t\tdomNode['select-value'] = undefined;\n\t\t\t}\n\t\t} else if ((onInputValue && domValue === onInputValue) || propValue !== previousValue) {\n\t\t\tdomNode.value = propValue;\n\t\t\tdomNode['oninput-value'] = undefined;\n\t\t}\n\t}\n\n\tfunction setProperties(\n\t\tdomNode: HTMLElement,\n\t\tcurrentProperties: VNodeProperties = {},\n\t\tnextWrapper: VNodeWrapper,\n\t\tincludesEventsAndAttributes = true\n\t): void {\n\t\tconst properties = nextWrapper.deferredProperties\n\t\t\t? { ...nextWrapper.deferredProperties, ...nextWrapper.node.properties }\n\t\t\t: nextWrapper.node.properties;\n\t\tconst propNames = Object.keys(properties);\n\t\tconst propCount = propNames.length;\n\t\tif (propNames.indexOf('classes') === -1 && currentProperties.classes) {\n\t\t\tdomNode.removeAttribute('class');\n\t\t}\n\n\t\tincludesEventsAndAttributes && removeOrphanedEvents(domNode, currentProperties, properties);\n\n\t\tfor (let i = 0; i < propCount; i++) {\n\t\t\tconst propName = propNames[i];\n\t\t\tlet propValue = properties[propName];\n\t\t\tconst previousValue = currentProperties[propName];\n\t\t\tif (propName === 'classes') {\n\t\t\t\tconst previousClassString = createClassPropValue(previousValue);\n\t\t\t\tlet currentClassString = createClassPropValue(propValue);\n\t\t\t\tif (previousClassString !== currentClassString) {\n\t\t\t\t\tif (currentClassString) {\n\t\t\t\t\t\tif (nextWrapper.merged) {\n\t\t\t\t\t\t\tconst domClasses = (domNode.getAttribute('class') || '').split(' ');\n\t\t\t\t\t\t\tfor (let i = 0; i < domClasses.length; i++) {\n\t\t\t\t\t\t\t\tif (currentClassString.indexOf(domClasses[i]) === -1) {\n\t\t\t\t\t\t\t\t\tcurrentClassString = `${domClasses[i]} ${currentClassString}`;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tdomNode.setAttribute('class', currentClassString);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tdomNode.removeAttribute('class');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else if (nodeOperations.indexOf(propName) !== -1) {\n\t\t\t\tnodeOperation(propName, propValue, previousValue, domNode);\n\t\t\t} else if (propName === 'styles') {\n\t\t\t\tconst styleNames = Object.keys(propValue);\n\t\t\t\tconst styleCount = styleNames.length;\n\t\t\t\tfor (let j = 0; j < styleCount; j++) {\n\t\t\t\t\tconst styleName = styleNames[j];\n\t\t\t\t\tconst newStyleValue = propValue[styleName];\n\t\t\t\t\tconst oldStyleValue = previousValue && previousValue[styleName];\n\t\t\t\t\tif (newStyleValue === oldStyleValue) {\n\t\t\t\t\t\tcontinue;\n\t\t\t\t\t}\n\t\t\t\t\t(domNode.style as any)[styleName] = newStyleValue || '';\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (!propValue && typeof previousValue === 'string') {\n\t\t\t\t\tpropValue = '';\n\t\t\t\t}\n\t\t\t\tif (propName === 'value') {\n\t\t\t\t\tif ((domNode as HTMLElement).tagName === 'SELECT') {\n\t\t\t\t\t\t(domNode as any)['select-value'] = propValue;\n\t\t\t\t\t}\n\t\t\t\t\tsetValue(domNode, propValue, previousValue);\n\t\t\t\t} else if (propName !== 'key' && propValue !== previousValue) {\n\t\t\t\t\tconst type = typeof propValue;\n\t\t\t\t\tif (type === 'function' && propName.lastIndexOf('on', 0) === 0 && includesEventsAndAttributes) {\n\t\t\t\t\t\tupdateEvent(domNode, propName.substr(2), propValue, previousValue);\n\t\t\t\t\t} else if (type === 'string' && propName !== 'innerHTML' && includesEventsAndAttributes) {\n\t\t\t\t\t\tupdateAttribute(domNode, propName, propValue, nextWrapper.namespace);\n\t\t\t\t\t} else if (propName === 'scrollLeft' || propName === 'scrollTop') {\n\t\t\t\t\t\tif ((domNode as any)[propName] !== propValue) {\n\t\t\t\t\t\t\t(domNode as any)[propName] = propValue;\n\t\t\t\t\t\t}\n\t\t\t\t\t} else {\n\t\t\t\t\t\t(domNode as any)[propName] = propValue;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction _createDeferredRenderCallback(): (() => void) | undefined {\n\t\tconst callbacks = _deferredRenderCallbacks;\n\t\t_deferredRenderCallbacks = [];\n\t\tif (callbacks.length) {\n\t\t\treturn () => {\n\t\t\t\tlet callback: Function | undefined;\n\t\t\t\twhile ((callback = callbacks.shift())) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t}\n\n\tfunction _scheduleDeferredRenderCallbacks() {\n\t\tconst { sync } = _mountOptions;\n\t\tconst run = _createDeferredRenderCallback();\n\t\tif (run) {\n\t\t\tif (sync) {\n\t\t\t\trun();\n\t\t\t} else {\n\t\t\t\tlet id: number;\n\t\t\t\tid = global.requestAnimationFrame(() => {\n\t\t\t\t\t_deferredProcessIds.delete(id);\n\t\t\t\t\trun();\n\t\t\t\t});\n\t\t\t\t_deferredProcessIds.set(id, run);\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction processProperties(next: VNodeWrapper, previousProperties: PreviousProperties) {\n\t\tif (next.node.attributes && next.node.events) {\n\t\t\tupdateAttributes(\n\t\t\t\tnext.domNode as HTMLElement,\n\t\t\t\tpreviousProperties.attributes || {},\n\t\t\t\tnext.node.attributes,\n\t\t\t\tnext.namespace\n\t\t\t);\n\t\t\tsetProperties(next.domNode as HTMLElement, previousProperties.properties, next, false);\n\t\t\tconst events = next.node.events || {};\n\t\t\tif (previousProperties.events) {\n\t\t\t\tremoveOrphanedEvents(\n\t\t\t\t\tnext.domNode as HTMLElement,\n\t\t\t\t\tpreviousProperties.events || {},\n\t\t\t\t\tnext.node.events,\n\t\t\t\t\ttrue\n\t\t\t\t);\n\t\t\t}\n\t\t\tpreviousProperties.events = previousProperties.events || {};\n\t\t\tObject.keys(events).forEach((event) => {\n\t\t\t\tupdateEvent(next.domNode as HTMLElement, event, events[event], previousProperties.events[event]);\n\t\t\t});\n\t\t} else {\n\t\t\tsetProperties(next.domNode as HTMLElement, previousProperties.properties, next);\n\t\t}\n\t}\n\n\tfunction unmount() {\n\t\t_processQueue.push({\n\t\t\tcurrent: [_idToWrapperMap.get(_appWrapperId!)!],\n\t\t\tnext: [],\n\t\t\tmeta: {}\n\t\t});\n\t\tif (_renderScheduled) {\n\t\t\tglobal.cancelAnimationFrame(_renderScheduled);\n\t\t}\n\t\t_runProcessQueue();\n\t\t_runDomInstructionQueue();\n\t\t_deferredProcessIds.forEach((callback, id) => {\n\t\t\tglobal.cancelAnimationFrame(id);\n\t\t\tcallback();\n\t\t});\n\t\tconst run = _createDeferredRenderCallback();\n\t\trun && run();\n\t\t_invalidationQueue = [];\n\t\t_processQueue = [];\n\t\t_deferredProcessQueue = [];\n\t\t_applicationQueue = [];\n\t\t_deferredRenderCallbacks = [];\n\t\t_allMergedNodes = [];\n\t\t_eventMap = new WeakMap();\n\t\t_idToWrapperMap.clear();\n\t\t_idToChildrenWrappers.clear();\n\t\t_wrapperSiblingMap = new WeakMap();\n\t\t_nodeToWrapperMap = new WeakMap();\n\t\t_insertBeforeMap = undefined;\n\t}\n\n\tfunction mount(mountOptions: Partial<MountOptions> = {}) {\n\t\tlet domNode = mountOptions.domNode;\n\t\tif (!domNode) {\n\t\t\tif (has('dojo-debug') && domNode === null) {\n\t\t\t\tconsole.warn('Unable to find node to mount the application, defaulting to the document body.');\n\t\t\t}\n\t\t\tdomNode = global.document.body as HTMLElement;\n\t\t}\n\t\t_mountOptions = { ..._mountOptions, ...mountOptions, domNode };\n\t\tconst renderResult = wrapNodes(renderer)({}, []);\n\t\t_appWrapperId = `${wrapperId++}`;\n\t\tconst nextWrapper = {\n\t\t\tid: _appWrapperId,\n\t\t\tnode: renderResult,\n\t\t\torder: 0,\n\t\t\tdepth: 1,\n\t\t\towningId: '-1',\n\t\t\tparentId: '-1',\n\t\t\tsiblingId: '-1',\n\t\t\tproperties: {}\n\t\t};\n\t\t_idToWrapperMap.set('-1', {\n\t\t\tid: `-1`,\n\t\t\tdepth: 0,\n\t\t\torder: 0,\n\t\t\towningId: '',\n\t\t\tdomNode,\n\t\t\tnode: v('fake'),\n\t\t\tparentId: '-1'\n\t\t});\n\t\t_processQueue.push({\n\t\t\tcurrent: [],\n\t\t\tnext: [nextWrapper],\n\t\t\tmeta: { mergeNodes: arrayFrom(domNode.childNodes) }\n\t\t});\n\t\t_runProcessQueue();\n\t\t_runDomInstructionQueue();\n\t\t_cleanUpMergedNodes();\n\t\t_insertBeforeMap = undefined;\n\t\t_scheduleDeferredRenderCallbacks();\n\t\tif (!_renderScheduled) {\n\t\t\tsetRendering(false);\n\t\t}\n\t}\n\n\tfunction invalidate() {\n\t\tparentInvalidate && parentInvalidate();\n\t}\n\n\tfunction _schedule(): void {\n\t\tconst { sync } = _mountOptions;\n\t\tif (sync) {\n\t\t\t_runInvalidationQueue();\n\t\t} else if (!_renderScheduled) {\n\t\t\tsetRendering(true);\n\t\t\t_renderScheduled = global.requestAnimationFrame(() => {\n\t\t\t\t_runInvalidationQueue();\n\t\t\t});\n\t\t}\n\t}\n\n\tfunction getWNodeWrapper(id: string) {\n\t\tconst wrapper = _idToWrapperMap.get(id);\n\t\tif (wrapper && isWNodeWrapper(wrapper)) {\n\t\t\treturn wrapper;\n\t\t}\n\t}\n\n\tfunction _runInvalidationQueue() {\n\t\t_renderScheduled = undefined;\n\t\tlet invalidationQueue = [..._invalidationQueue];\n\t\tconst previouslyRendered = [];\n\t\t_invalidationQueue = [];\n\t\tinvalidationQueue.sort((a, b) => {\n\t\t\tlet result = b.depth - a.depth;\n\t\t\tif (result === 0) {\n\t\t\t\tresult = b.order - a.order;\n\t\t\t}\n\t\t\treturn result;\n\t\t});\n\t\tif (_deferredProcessQueue.length) {\n\t\t\t_processQueue = [..._deferredProcessQueue];\n\t\t\t_deferredProcessQueue = [];\n\t\t\t_runProcessQueue();\n\t\t\tif (_deferredProcessQueue.length) {\n\t\t\t\t_invalidationQueue = [...invalidationQueue];\n\t\t\t\tinvalidationQueue = [];\n\t\t\t}\n\t\t}\n\t\tlet item: InvalidationQueueItem | undefined;\n\t\twhile ((item = invalidationQueue.pop())) {\n\t\t\tlet { id } = item;\n\t\t\tconst current = getWNodeWrapper(id);\n\t\t\tif (!current || previouslyRendered.indexOf(id) !== -1 || !_idToWrapperMap.has(current.parentId)) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tpreviouslyRendered.push(id);\n\t\t\tconst sibling = _wrapperSiblingMap.get(current);\n\t\t\tconst next = {\n\t\t\t\tnode: {\n\t\t\t\t\ttype: WNODE,\n\t\t\t\t\twidgetConstructor: current.node.widgetConstructor,\n\t\t\t\t\tproperties: current.properties || {},\n\t\t\t\t\tchildren: current.node.children || []\n\t\t\t\t},\n\t\t\t\tinstance: current.instance,\n\t\t\t\tid: current.id,\n\t\t\t\tproperties: current.properties,\n\t\t\t\tdepth: current.depth,\n\t\t\t\torder: current.order,\n\t\t\t\towningId: current.owningId,\n\t\t\t\tparentId: current.parentId,\n\t\t\t\tregistryItem: current.registryItem\n\t\t\t};\n\n\t\t\tsibling && _wrapperSiblingMap.set(next, sibling);\n\t\t\tconst result = _updateWidget({ current, next });\n\t\t\tif (result && result.item) {\n\t\t\t\t_processQueue.push(result.item);\n\t\t\t\t_idToWrapperMap.set(id, next);\n\t\t\t\t_runProcessQueue();\n\t\t\t}\n\t\t}\n\t\t_runDomInstructionQueue();\n\t\t_cleanUpMergedNodes();\n\t\t_scheduleDeferredRenderCallbacks();\n\t\tif (!_renderScheduled) {\n\t\t\tsetRendering(false);\n\t\t}\n\t}\n\n\tfunction _cleanUpMergedNodes() {\n\t\tif (_deferredProcessQueue.length === 0) {\n\t\t\tlet mergedNode: Node | undefined;\n\t\t\twhile ((mergedNode = _allMergedNodes.pop())) {\n\t\t\t\tmergedNode.parentNode && mergedNode.parentNode.removeChild(mergedNode);\n\t\t\t}\n\t\t\t_mountOptions.merge = false;\n\t\t}\n\t}\n\n\tfunction _runProcessQueue() {\n\t\tlet item: DetachApplication | AttachApplication | ProcessItem | undefined;\n\t\twhile ((item = _processQueue.pop())) {\n\t\t\tif (isAttachApplication(item)) {\n\t\t\t\titem.instance && _applicationQueue.push(item as any);\n\t\t\t} else {\n\t\t\t\tconst { current, next, meta } = item;\n\t\t\t\t_process(current || EMPTY_ARRAY, next || EMPTY_ARRAY, meta);\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction _runDomInstructionQueue(): void {\n\t\t_applicationQueue.reverse();\n\t\tlet item: ApplicationInstruction | undefined;\n\t\twhile ((item = _applicationQueue.pop())) {\n\t\t\tif (item.type === 'create') {\n\t\t\t\tconst {\n\t\t\t\t\tparentDomNode,\n\t\t\t\t\tnext,\n\t\t\t\t\tnext: { domNode, merged, requiresInsertBefore, node }\n\t\t\t\t} = item;\n\n\t\t\t\tprocessProperties(next, { properties: {} });\n\t\t\t\trunDeferredProperties(next);\n\t\t\t\tif (!merged) {\n\t\t\t\t\tlet insertBefore: any;\n\t\t\t\t\tif (requiresInsertBefore) {\n\t\t\t\t\t\tinsertBefore = findInsertBefore(next);\n\t\t\t\t\t} else if (_insertBeforeMap) {\n\t\t\t\t\t\tinsertBefore = _insertBeforeMap.get(next);\n\t\t\t\t\t}\n\t\t\t\t\tparentDomNode.insertBefore(domNode!, insertBefore);\n\t\t\t\t\tif (isDomVNode(next.node) && next.node.onAttach) {\n\t\t\t\t\t\tnext.node.onAttach();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif ((domNode as HTMLElement).tagName === 'OPTION' && domNode!.parentElement) {\n\t\t\t\t\tsetValue(domNode!.parentElement);\n\t\t\t\t}\n\t\t\t\tconst { enterAnimation, enterAnimationActive } = node.properties;\n\t\t\t\tif (_mountOptions.transition && enterAnimation && enterAnimation !== true) {\n\t\t\t\t\t_mountOptions.transition.enter(domNode as HTMLElement, enterAnimation, enterAnimationActive);\n\t\t\t\t}\n\t\t\t\tconst owningWrapper = _nodeToWrapperMap.get(next.node);\n\t\t\t\tif (owningWrapper && node.properties.key != null) {\n\t\t\t\t\tif (owningWrapper.instance) {\n\t\t\t\t\t\tconst instanceData = widgetInstanceMap.get(owningWrapper.instance);\n\t\t\t\t\t\tinstanceData && instanceData.nodeHandler.add(domNode as HTMLElement, `${node.properties.key}`);\n\t\t\t\t\t} else {\n\t\t\t\t\t\taddNodeToMap(owningWrapper.id, node.properties.key, domNode as HTMLElement);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\titem.next.inserted = true;\n\t\t\t} else if (item.type === 'update') {\n\t\t\t\tconst {\n\t\t\t\t\tnext,\n\t\t\t\t\tnext: { domNode },\n\t\t\t\t\tcurrent,\n\t\t\t\t\tcurrent: { domNode: currentDomNode }\n\t\t\t\t} = item;\n\t\t\t\tif (isTextNode(domNode) && isTextNode(currentDomNode) && domNode !== currentDomNode) {\n\t\t\t\t\tcurrentDomNode.parentNode && currentDomNode.parentNode.replaceChild(domNode, currentDomNode);\n\t\t\t\t} else {\n\t\t\t\t\tconst previousProperties = buildPreviousProperties(domNode, current);\n\t\t\t\t\tprocessProperties(next, previousProperties);\n\t\t\t\t\trunDeferredProperties(next);\n\t\t\t\t}\n\t\t\t} else if (item.type === 'delete') {\n\t\t\t\tconst { current } = item;\n\t\t\t\tconst { exitAnimation, exitAnimationActive } = current.node.properties;\n\t\t\t\tif (_mountOptions.transition && exitAnimation && exitAnimation !== true) {\n\t\t\t\t\t_mountOptions.transition.exit(current.domNode as HTMLElement, exitAnimation, exitAnimationActive);\n\t\t\t\t} else {\n\t\t\t\t\tcurrent.domNode!.parentNode!.removeChild(current.domNode!);\n\t\t\t\t}\n\t\t\t} else if (item.type === 'attach') {\n\t\t\t\tconst { instance, attached } = item;\n\t\t\t\tconst instanceData = widgetInstanceMap.get(instance);\n\t\t\t\tif (instanceData) {\n\t\t\t\t\tinstanceData.nodeHandler.addRoot();\n\t\t\t\t\tattached && instanceData.onAttach();\n\t\t\t\t}\n\t\t\t} else if (item.type === 'detach') {\n\t\t\t\tif (item.current.instance) {\n\t\t\t\t\tconst instanceData = widgetInstanceMap.get(item.current.instance);\n\t\t\t\t\tinstanceData && instanceData.onDetach();\n\t\t\t\t}\n\t\t\t\titem.current.instance = undefined;\n\t\t\t}\n\t\t}\n\t\tif (_deferredProcessQueue.length === 0) {\n\t\t\t_nodeToWrapperMap = new WeakMap();\n\t\t}\n\t}\n\n\tfunction _processMergeNodes(next: DNodeWrapper, mergeNodes: Node[]) {\n\t\tconst { merge } = _mountOptions;\n\t\tif (merge && mergeNodes.length) {\n\t\t\tif (isVNodeWrapper(next)) {\n\t\t\t\tlet {\n\t\t\t\t\tnode: { tag }\n\t\t\t\t} = next;\n\t\t\t\tfor (let i = 0; i < mergeNodes.length; i++) {\n\t\t\t\t\tconst domElement = mergeNodes[i] as Element;\n\t\t\t\t\tconst tagName = domElement.tagName || '';\n\t\t\t\t\tif (tag.toUpperCase() === tagName.toUpperCase()) {\n\t\t\t\t\t\tconst mergeNodeIndex = _allMergedNodes.indexOf(domElement);\n\t\t\t\t\t\tif (mergeNodeIndex !== -1) {\n\t\t\t\t\t\t\t_allMergedNodes.splice(mergeNodeIndex, 1);\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmergeNodes.splice(i, 1);\n\t\t\t\t\t\tnext.domNode = domElement;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tnext.mergeNodes = mergeNodes;\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction distinguishableCheck(childNodes: DNodeWrapper[], index: number) {\n\t\tconst parentWNodeWrapper = getWNodeWrapper(childNodes[index].owningId);\n\t\tcheckDistinguishable(childNodes, index, parentWNodeWrapper);\n\t}\n\n\tfunction createKeyMap(wrappers: DNodeWrapper[]): (string | number)[] | false {\n\t\tconst keys: (string | number)[] = [];\n\t\tfor (let i = 0; i < wrappers.length; i++) {\n\t\t\tconst wrapper = wrappers[i];\n\t\t\tif (wrapper.node.properties.key != null) {\n\t\t\t\tkeys.push(wrapper.node.properties.key);\n\t\t\t} else {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\treturn keys;\n\t}\n\n\tfunction _process(current: DNodeWrapper[], next: DNodeWrapper[], meta: ProcessMeta = {}): void {\n\t\tlet { mergeNodes = [], oldIndex = 0, newIndex = 0 } = meta;\n\t\tconst currentLength = current.length;\n\t\tconst nextLength = next.length;\n\t\tconst hasPreviousSiblings = currentLength > 1 || (currentLength > 0 && currentLength < nextLength);\n\t\tlet instructions: Instruction[] = [];\n\t\tlet replace = false;\n\t\tif (oldIndex === 0 && newIndex === 0 && currentLength) {\n\t\t\tconst currentKeys = createKeyMap(current);\n\t\t\tif (currentKeys) {\n\t\t\t\tconst nextKeys = createKeyMap(next);\n\t\t\t\tif (nextKeys) {\n\t\t\t\t\tfor (let i = 0; i < currentKeys.length; i++) {\n\t\t\t\t\t\tif (nextKeys.indexOf(currentKeys[i]) !== -1) {\n\t\t\t\t\t\t\tinstructions = [];\n\t\t\t\t\t\t\treplace = false;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\treplace = true;\n\t\t\t\t\t\tinstructions.push({ current: current[i], next: undefined });\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (replace || (currentLength === 0 && !_mountOptions.merge)) {\n\t\t\tfor (let i = 0; i < next.length; i++) {\n\t\t\t\tinstructions.push({ current: undefined, next: next[i] });\n\t\t\t}\n\t\t} else {\n\t\t\tif (newIndex < nextLength) {\n\t\t\t\tlet currentWrapper = oldIndex < currentLength ? current[oldIndex] : undefined;\n\t\t\t\tconst nextWrapper = next[newIndex];\n\t\t\t\tnextWrapper.hasPreviousSiblings = hasPreviousSiblings;\n\n\t\t\t\t_processMergeNodes(nextWrapper, mergeNodes);\n\n\t\t\t\tif (currentWrapper && same(currentWrapper, nextWrapper)) {\n\t\t\t\t\toldIndex++;\n\t\t\t\t\tnewIndex++;\n\t\t\t\t\tif (isVNodeWrapper(currentWrapper) && isVNodeWrapper(nextWrapper)) {\n\t\t\t\t\t\tnextWrapper.inserted = currentWrapper.inserted;\n\t\t\t\t\t}\n\t\t\t\t\tinstructions.push({ current: currentWrapper, next: nextWrapper });\n\t\t\t\t} else if (!currentWrapper || findIndexOfChild(current, nextWrapper, oldIndex + 1) === -1) {\n\t\t\t\t\thas('dojo-debug') && current.length && distinguishableCheck(next, newIndex);\n\t\t\t\t\tinstructions.push({ current: undefined, next: nextWrapper });\n\t\t\t\t\tnewIndex++;\n\t\t\t\t} else if (findIndexOfChild(next, currentWrapper, newIndex + 1) === -1) {\n\t\t\t\t\thas('dojo-debug') && distinguishableCheck(current, oldIndex);\n\t\t\t\t\tinstructions.push({ current: currentWrapper, next: undefined });\n\t\t\t\t\toldIndex++;\n\t\t\t\t} else {\n\t\t\t\t\thas('dojo-debug') && distinguishableCheck(next, newIndex);\n\t\t\t\t\thas('dojo-debug') && distinguishableCheck(current, oldIndex);\n\t\t\t\t\tinstructions.push({ current: currentWrapper, next: undefined });\n\t\t\t\t\tinstructions.push({ current: undefined, next: nextWrapper });\n\t\t\t\t\toldIndex++;\n\t\t\t\t\tnewIndex++;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (newIndex < nextLength) {\n\t\t\t\t_processQueue.push({ current, next, meta: { mergeNodes, oldIndex, newIndex } });\n\t\t\t}\n\t\t\tif (currentLength > oldIndex && newIndex >= nextLength) {\n\t\t\t\tfor (let i = oldIndex; i < currentLength; i++) {\n\t\t\t\t\thas('dojo-debug') && distinguishableCheck(current, i);\n\t\t\t\t\tinstructions.push({ current: current[i], next: undefined });\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (let i = 0; i < instructions.length; i++) {\n\t\t\tconst result = _processOne(instructions[i]);\n\t\t\tif (result === false) {\n\t\t\t\tif (_mountOptions.merge && mergeNodes.length) {\n\t\t\t\t\tif (newIndex < nextLength) {\n\t\t\t\t\t\t_processQueue.pop();\n\t\t\t\t\t}\n\t\t\t\t\t_processQueue.push({ next, current, meta });\n\t\t\t\t\t_deferredProcessQueue = _processQueue;\n\t\t\t\t\t_processQueue = [];\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tconst { widget, item, dom } = result;\n\t\t\twidget && _processQueue.push(widget);\n\t\t\titem && _processQueue.push(item);\n\t\t\tdom && _applicationQueue.push(dom);\n\t\t}\n\t}\n\n\tfunction _processOne({ current, next }: Instruction): ProcessResult | false {\n\t\tif (current !== next) {\n\t\t\tif (!current && next) {\n\t\t\t\tif (isVNodeWrapper(next)) {\n\t\t\t\t\treturn _createDom({ next });\n\t\t\t\t} else {\n\t\t\t\t\treturn _createWidget({ next });\n\t\t\t\t}\n\t\t\t} else if (current && next) {\n\t\t\t\tif (isVNodeWrapper(current) && isVNodeWrapper(next)) {\n\t\t\t\t\treturn _updateDom({ current, next });\n\t\t\t\t} else if (isWNodeWrapper(current) && isWNodeWrapper(next)) {\n\t\t\t\t\treturn _updateWidget({ current, next });\n\t\t\t\t}\n\t\t\t} else if (current && !next) {\n\t\t\t\tif (isVNodeWrapper(current)) {\n\t\t\t\t\treturn _removeDom({ current });\n\t\t\t\t} else if (isWNodeWrapper(current)) {\n\t\t\t\t\treturn _removeWidget({ current });\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn {};\n\t}\n\n\tfunction createWidgetOptions(id: string, widgetId: string, middleware?: any) {\n\t\treturn {\n\t\t\tid,\n\t\t\tproperties: () => {\n\t\t\t\tconst widgetMeta = widgetMetaMap.get(widgetId);\n\t\t\t\tif (widgetMeta) {\n\t\t\t\t\twidgetMeta.propertiesCalled = true;\n\t\t\t\t\treturn { ...widgetMeta.properties };\n\t\t\t\t}\n\t\t\t\treturn {};\n\t\t\t},\n\t\t\tchildren: () => {\n\t\t\t\tconst widgetMeta = widgetMetaMap.get(widgetId);\n\t\t\t\tif (widgetMeta) {\n\t\t\t\t\treturn widgetMeta.children;\n\t\t\t\t}\n\t\t\t\treturn [];\n\t\t\t},\n\t\t\tmiddleware\n\t\t};\n\t}\n\n\tfunction resolveMiddleware(\n\t\tmiddlewares: any,\n\t\tid: string,\n\t\tmiddlewareIds: string[] = []\n\t): { middlewares: any; ids: string[] } {\n\t\tconst keys = Object.keys(middlewares);\n\t\tconst results: any = {};\n\t\tconst uniqueId = `${id}-${metaId++}`;\n\t\tfor (let i = 0; i < keys.length; i++) {\n\t\t\tconst middleware = middlewares[keys[i]]();\n\t\t\tconst payload = createWidgetOptions(uniqueId, id);\n\t\t\tif (middleware.middlewares) {\n\t\t\t\tconst { middlewares: resolvedMiddleware } = resolveMiddleware(\n\t\t\t\t\tmiddleware.middlewares,\n\t\t\t\t\tid,\n\t\t\t\t\tmiddlewareIds\n\t\t\t\t);\n\t\t\t\tpayload.middleware = resolvedMiddleware;\n\t\t\t\tresults[keys[i]] = middleware.callback(payload);\n\t\t\t} else {\n\t\t\t\tresults[keys[i]] = middleware.callback(payload);\n\t\t\t}\n\t\t}\n\t\tmiddlewareIds.push(uniqueId);\n\t\treturn { middlewares: results, ids: middlewareIds };\n\t}\n\n\tfunction _createWidget({ next }: CreateWidgetInstruction): ProcessResult | false {\n\t\tlet {\n\t\t\tnode: { widgetConstructor }\n\t\t} = next;\n\t\tlet { registry } = _mountOptions;\n\t\tlet Constructor = next.registryItem || widgetConstructor;\n\t\tif (!isWidget(Constructor)) {\n\t\t\tresolveRegistryItem(next);\n\t\t\tif (!next.registryItem) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tConstructor = next.registryItem;\n\t\t}\n\n\t\tlet rendered: RenderResult;\n\t\tlet invalidate: () => void;\n\t\tnext.properties = { ...next.node.properties };\n\t\tnext.id = next.id || `${wrapperId++}`;\n\t\t_idToWrapperMap.set(next.id, next);\n\t\tconst { id, depth, order } = next;\n\t\tif (!isWidgetBaseConstructor(Constructor)) {\n\t\t\tlet widgetMeta = widgetMetaMap.get(id);\n\t\t\tif (!widgetMeta) {\n\t\t\t\tinvalidate = () => {\n\t\t\t\t\tconst widgetMeta = widgetMetaMap.get(id);\n\t\t\t\t\tif (widgetMeta) {\n\t\t\t\t\t\twidgetMeta.dirty = true;\n\t\t\t\t\t\tif (!widgetMeta.rendering && _idToWrapperMap.has(id)) {\n\t\t\t\t\t\t\t_invalidationQueue.push({ id, depth, order });\n\t\t\t\t\t\t\t_schedule();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\twidgetMeta = {\n\t\t\t\t\twidgetName: Constructor.name || 'unknown',\n\t\t\t\t\tmountNode: _mountOptions.domNode,\n\t\t\t\t\tdirty: false,\n\t\t\t\t\tinvalidator: invalidate,\n\t\t\t\t\tproperties: wrapFunctionProperties(id, next.node.properties),\n\t\t\t\t\toriginalProperties: { ...next.node.properties },\n\t\t\t\t\tchildren: next.node.children,\n\t\t\t\t\tdeferRefs: 0,\n\t\t\t\t\trendering: true,\n\t\t\t\t\tmiddleware: {},\n\t\t\t\t\tmiddlewareIds: [],\n\t\t\t\t\tregistry: _mountOptions.registry,\n\t\t\t\t\tpropertiesCalled: false\n\t\t\t\t};\n\n\t\t\t\twidgetMetaMap.set(next.id, widgetMeta);\n\t\t\t\tif ((Constructor as any).middlewares && Object.keys((Constructor as any).middlewares).length) {\n\t\t\t\t\tconst { middlewares, ids } = resolveMiddleware((Constructor as any).middlewares, id);\n\t\t\t\t\twidgetMeta.middleware = middlewares;\n\t\t\t\t\twidgetMeta.middlewareIds = ids;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tinvalidate = widgetMeta.invalidator;\n\t\t\t}\n\n\t\t\trendered = Constructor(createWidgetOptions(id, id, widgetMeta.middleware));\n\t\t\twidgetMeta.rendering = false;\n\t\t\twidgetMeta.propertiesCalled = false;\n\t\t\tif (widgetMeta.deferRefs > 0) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t} else {\n\t\t\tlet instance = new Constructor() as WidgetBaseInterface & {\n\t\t\t\tinvalidate: any;\n\t\t\t\tregistry: any;\n\t\t\t};\n\t\t\tinstance.registry.base = registry;\n\t\t\tconst instanceData = widgetInstanceMap.get(instance)!;\n\t\t\tinvalidate = () => {\n\t\t\t\tinstanceData.dirty = true;\n\t\t\t\tif (!instanceData.rendering && _idToWrapperMap.has(id)) {\n\t\t\t\t\t_invalidationQueue.push({ id, depth, order });\n\t\t\t\t\t_schedule();\n\t\t\t\t}\n\t\t\t};\n\t\t\tinstanceData.invalidate = invalidate;\n\t\t\tinstanceData.rendering = true;\n\t\t\tinstance.__setProperties__(next.node.properties);\n\t\t\tinstance.__setChildren__(next.node.children);\n\t\t\tnext.instance = instance;\n\t\t\trendered = instance.__render__();\n\t\t\tinstanceData.rendering = false;\n\t\t}\n\n\t\tlet children: DNodeWrapper[] | undefined;\n\t\tif (rendered) {\n\t\t\trendered = Array.isArray(rendered) ? rendered : [rendered];\n\t\t\tchildren = renderedToWrapper(rendered, next, null);\n\t\t\t_idToChildrenWrappers.set(id, children);\n\t\t}\n\n\t\tif (!parentInvalidate && !(Constructor as any).isWNodeWrapper) {\n\t\t\tparentInvalidate = invalidate;\n\t\t}\n\n\t\treturn {\n\t\t\titem: {\n\t\t\t\tnext: children,\n\t\t\t\tmeta: { mergeNodes: next.mergeNodes }\n\t\t\t},\n\t\t\twidget: { type: 'attach', instance: next.instance, id, attached: true }\n\t\t};\n\t}\n\n\tfunction _updateWidget({ current, next }: UpdateWidgetInstruction): ProcessResult {\n\t\tcurrent = getWNodeWrapper(current.id) || current;\n\t\tconst { instance, domNode, hasAnimations, id } = current;\n\t\tlet {\n\t\t\tnode: { widgetConstructor }\n\t\t} = next;\n\t\tconst Constructor = next.registryItem || widgetConstructor;\n\n\t\tif (!isWidget(Constructor)) {\n\t\t\treturn {};\n\t\t}\n\t\tlet rendered: RenderResult;\n\t\tlet processResult: ProcessResult = {};\n\t\tlet didRender = false;\n\t\tlet currentChildren = _idToChildrenWrappers.get(current.id);\n\t\tnext.hasAnimations = hasAnimations;\n\t\tnext.id = id;\n\t\tnext.properties = { ...next.node.properties };\n\t\t_wrapperSiblingMap.delete(current);\n\t\tif (domNode && domNode.parentNode) {\n\t\t\tnext.domNode = domNode;\n\t\t}\n\n\t\tif (!isWidgetBaseConstructor(Constructor)) {\n\t\t\tconst widgetMeta = widgetMetaMap.get(id);\n\t\t\tif (widgetMeta) {\n\t\t\t\twidgetMeta.originalProperties = { ...next.properties };\n\t\t\t\twidgetMeta.properties = wrapFunctionProperties(id, widgetMeta.originalProperties);\n\t\t\t\twidgetMeta.children = next.node.children;\n\t\t\t\twidgetMeta.rendering = true;\n\t\t\t\tconst customProperties = runDiffs(widgetMeta, current.properties, widgetMeta.originalProperties);\n\t\t\t\twidgetMeta.properties = { ...widgetMeta.properties, ...customProperties };\n\t\t\t\tif (current.node.children.length > 0 || next.node.children.length > 0) {\n\t\t\t\t\twidgetMeta.dirty = true;\n\t\t\t\t}\n\t\t\t\tif (!widgetMeta.dirty) {\n\t\t\t\t\tpropertiesDiff(\n\t\t\t\t\t\tcurrent.properties,\n\t\t\t\t\t\tnext.properties,\n\t\t\t\t\t\t() => {\n\t\t\t\t\t\t\twidgetMeta.dirty = true;\n\t\t\t\t\t\t},\n\t\t\t\t\t\twidgetMeta.customDiffProperties ? [...widgetMeta.customDiffProperties.values()] : []\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tif (widgetMeta.dirty) {\n\t\t\t\t\t_idToChildrenWrappers.delete(id);\n\t\t\t\t\tdidRender = true;\n\t\t\t\t\trendered = Constructor(createWidgetOptions(id, id, widgetMeta.middleware));\n\t\t\t\t\twidgetMeta.dirty = false;\n\t\t\t\t\tif (widgetMeta.deferRefs > 0) {\n\t\t\t\t\t\trendered = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\twidgetMeta.rendering = false;\n\t\t\t\twidgetMeta.propertiesCalled = false;\n\t\t\t}\n\t\t} else {\n\t\t\tconst instanceData = widgetInstanceMap.get(instance!)!;\n\t\t\tnext.instance = instance;\n\t\t\tinstanceData.rendering = true;\n\t\t\tinstance!.__setProperties__(next.node.properties);\n\t\t\tinstance!.__setChildren__(next.node.children);\n\t\t\tif (instanceData.dirty) {\n\t\t\t\tdidRender = true;\n\t\t\t\t_idToChildrenWrappers.delete(id);\n\t\t\t\trendered = instance!.__render__();\n\t\t\t}\n\t\t\tinstanceData.rendering = false;\n\t\t}\n\t\t_idToWrapperMap.set(next.id, next);\n\t\tprocessResult.widget = { type: 'attach', instance, id, attached: false };\n\n\t\tlet children: DNodeWrapper[] | undefined;\n\t\tif (rendered) {\n\t\t\trendered = Array.isArray(rendered) ? rendered : [rendered];\n\t\t\tchildren = renderedToWrapper(rendered, next, current);\n\t\t\t_idToChildrenWrappers.set(id, children);\n\t\t}\n\n\t\tif (didRender) {\n\t\t\tprocessResult.item = {\n\t\t\t\tcurrent: currentChildren,\n\t\t\t\tnext: children,\n\t\t\t\tmeta: {}\n\t\t\t};\n\t\t}\n\t\treturn processResult;\n\t}\n\n\tfunction _removeWidget({ current }: RemoveWidgetInstruction): ProcessResult {\n\t\tcurrent = getWNodeWrapper(current.id) || current;\n\t\t_idToWrapperMap.delete(current.id);\n\t\tconst meta = widgetMetaMap.get(current.id);\n\t\tlet currentChildren = _idToChildrenWrappers.get(current.id);\n\t\t_idToChildrenWrappers.delete(current.id);\n\t\t_wrapperSiblingMap.delete(current);\n\t\tlet processResult: ProcessResult = {\n\t\t\titem: {\n\t\t\t\tcurrent: currentChildren,\n\t\t\t\tmeta: {}\n\t\t\t}\n\t\t};\n\t\tif (meta) {\n\t\t\tmeta.registryHandler && meta.registryHandler.destroy();\n\t\t\tdestroyHandles(meta);\n\t\t\twidgetMetaMap.delete(current.id);\n\t\t} else {\n\t\t\tprocessResult.widget = { type: 'detach', current, instance: current.instance };\n\t\t}\n\n\t\treturn processResult;\n\t}\n\n\tfunction findDomNodeOnParentWrapper(id: string): string | undefined {\n\t\tconst children = _idToChildrenWrappers.get(id) || [];\n\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\tconst child = children[i];\n\t\t\tif (child.domNode) {\n\t\t\t\treturn child.id;\n\t\t\t}\n\t\t\tconst childId = findDomNodeOnParentWrapper(child.id);\n\t\t\tif (childId) {\n\t\t\t\treturn childId;\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction _createDom({ next }: CreateDomInstruction): ProcessResult {\n\t\tconst parentDomNode = findParentDomNode(next)!;\n\t\tconst isVirtual = isVirtualWrapper(next);\n\t\tconst isBody = isBodyWrapper(next);\n\t\tlet mergeNodes: Node[] = [];\n\t\tnext.id = `${wrapperId++}`;\n\t\t_idToWrapperMap.set(next.id, next);\n\t\tif (!next.domNode) {\n\t\t\tif ((next.node as any).domNode) {\n\t\t\t\tnext.domNode = (next.node as any).domNode;\n\t\t\t} else {\n\t\t\t\tif (next.node.tag === 'svg') {\n\t\t\t\t\tnext.namespace = NAMESPACE_SVG;\n\t\t\t\t}\n\t\t\t\tif (isBody) {\n\t\t\t\t\tnext.domNode = global.document.body;\n\t\t\t\t} else if (next.node.tag && !isVirtual) {\n\t\t\t\t\tif (next.namespace) {\n\t\t\t\t\t\tnext.domNode = global.document.createElementNS(next.namespace, next.node.tag);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tnext.domNode = global.document.createElement(next.node.tag);\n\t\t\t\t\t}\n\t\t\t\t} else if (next.node.text != null) {\n\t\t\t\t\tnext.domNode = global.document.createTextNode(next.node.text);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (_insertBeforeMap && _allMergedNodes.length) {\n\t\t\t\tif (parentDomNode === _allMergedNodes[0].parentNode) {\n\t\t\t\t\t_insertBeforeMap.set(next, _allMergedNodes[0]);\n\t\t\t\t}\n\t\t\t}\n\t\t} else if (_mountOptions.merge) {\n\t\t\tnext.merged = true;\n\t\t\tif (isTextNode(next.domNode)) {\n\t\t\t\tif (next.domNode.data !== next.node.text) {\n\t\t\t\t\t_allMergedNodes = [next.domNode, ..._allMergedNodes];\n\t\t\t\t\tnext.domNode = global.document.createTextNode(next.node.text);\n\t\t\t\t\tnext.merged = false;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tmergeNodes = arrayFrom(next.domNode.childNodes);\n\t\t\t\t_allMergedNodes = [..._allMergedNodes, ...mergeNodes];\n\t\t\t}\n\t\t}\n\t\tlet children: DNodeWrapper[] | undefined;\n\t\tif (next.domNode || isVirtual) {\n\t\t\tif (next.node.children && next.node.children.length) {\n\t\t\t\tchildren = renderedToWrapper(next.node.children, next, null);\n\t\t\t\t_idToChildrenWrappers.set(next.id, children);\n\t\t\t}\n\t\t}\n\t\tconst dom: ApplicationInstruction | undefined =\n\t\t\tisVirtual || isBody\n\t\t\t\t? undefined\n\t\t\t\t: {\n\t\t\t\t\t\tnext: next!,\n\t\t\t\t\t\tparentDomNode: parentDomNode,\n\t\t\t\t\t\ttype: 'create'\n\t\t\t\t };\n\t\tif (children) {\n\t\t\treturn {\n\t\t\t\titem: {\n\t\t\t\t\tcurrent: [],\n\t\t\t\t\tnext: children,\n\t\t\t\t\tmeta: { mergeNodes }\n\t\t\t\t},\n\t\t\t\tdom,\n\t\t\t\twidget: isVirtual ? { type: 'attach', id: (next as any).id, attached: false } : undefined\n\t\t\t};\n\t\t}\n\t\treturn { dom };\n\t}\n\n\tfunction _updateDom({ current, next }: UpdateDomInstruction): ProcessResult {\n\t\tnext.domNode = current.domNode;\n\t\tnext.namespace = current.namespace;\n\t\tnext.id = current.id;\n\t\tnext.childDomWrapperId = current.childDomWrapperId;\n\t\tlet children: DNodeWrapper[] | undefined;\n\t\tlet currentChildren = _idToChildrenWrappers.get(next.id);\n\t\tif (next.node.text != null && next.node.text !== current.node.text) {\n\t\t\tnext.domNode = global.document.createTextNode(next.node.text);\n\t\t} else if (next.node.children) {\n\t\t\tchildren = renderedToWrapper(next.node.children, next, current);\n\t\t\t_idToChildrenWrappers.set(next.id, children);\n\t\t}\n\t\t_wrapperSiblingMap.delete(current);\n\t\t_idToWrapperMap.set(next.id, next);\n\t\treturn {\n\t\t\titem: {\n\t\t\t\tcurrent: currentChildren,\n\t\t\t\tnext: children,\n\t\t\t\tmeta: {}\n\t\t\t},\n\t\t\tdom: { type: 'update', next, current }\n\t\t};\n\t}\n\n\tfunction _removeDom({ current }: RemoveDomInstruction): ProcessResult {\n\t\tconst isVirtual = isVirtualWrapper(current);\n\t\tconst isBody = isBodyWrapper(current);\n\t\tconst children = _idToChildrenWrappers.get(current.id);\n\t\t_idToChildrenWrappers.delete(current.id);\n\t\t_idToWrapperMap.delete(current.id);\n\t\t_wrapperSiblingMap.delete(current);\n\t\tif (current.node.properties.key) {\n\t\t\tconst widgetMeta = widgetMetaMap.get(current.owningId);\n\t\t\tconst parentWrapper = getWNodeWrapper(current.owningId);\n\t\t\tif (widgetMeta) {\n\t\t\t\twidgetMeta.nodeMap && widgetMeta.nodeMap.delete(current.node.properties.key);\n\t\t\t} else if (parentWrapper && parentWrapper.instance) {\n\t\t\t\tconst instanceData = widgetInstanceMap.get(parentWrapper.instance);\n\t\t\t\tinstanceData && instanceData.nodeHandler.remove(current.node.properties.key);\n\t\t\t}\n\t\t}\n\t\tif (current.hasAnimations || isVirtual || isBody) {\n\t\t\treturn {\n\t\t\t\titem: { current: children, meta: {} },\n\t\t\t\tdom: isVirtual || isBody ? undefined : { type: 'delete', current }\n\t\t\t};\n\t\t}\n\n\t\tif (children) {\n\t\t\t_deferredRenderCallbacks.push(() => {\n\t\t\t\tlet wrappers = children || [];\n\t\t\t\tlet wrapper: DNodeWrapper | undefined;\n\t\t\t\tlet bodyIds = [];\n\t\t\t\twhile ((wrapper = wrappers.pop())) {\n\t\t\t\t\tif (isWNodeWrapper(wrapper)) {\n\t\t\t\t\t\twrapper = getWNodeWrapper(wrapper.id) || wrapper;\n\t\t\t\t\t\tif (wrapper.instance) {\n\t\t\t\t\t\t\tconst instanceData = widgetInstanceMap.get(wrapper.instance);\n\t\t\t\t\t\t\tinstanceData && instanceData.onDetach();\n\t\t\t\t\t\t\twrapper.instance = undefined;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst meta = widgetMetaMap.get(wrapper.id);\n\t\t\t\t\t\t\tif (meta) {\n\t\t\t\t\t\t\t\tmeta.registryHandler && meta.registryHandler.destroy();\n\t\t\t\t\t\t\t\tdestroyHandles(meta);\n\t\t\t\t\t\t\t\twidgetMetaMap.delete(wrapper.id);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tlet wrapperChildren = _idToChildrenWrappers.get(wrapper.id);\n\t\t\t\t\tif (wrapperChildren) {\n\t\t\t\t\t\twrappers.push(...wrapperChildren);\n\t\t\t\t\t}\n\t\t\t\t\tif (isBodyWrapper(wrapper)) {\n\t\t\t\t\t\tbodyIds.push(wrapper.id);\n\t\t\t\t\t} else if (bodyIds.indexOf(wrapper.parentId) !== -1) {\n\t\t\t\t\t\tif (isWNodeWrapper(wrapper) || isVirtualWrapper(wrapper)) {\n\t\t\t\t\t\t\tbodyIds.push(wrapper.id);\n\t\t\t\t\t\t} else if (wrapper.domNode && wrapper.domNode.parentNode) {\n\t\t\t\t\t\t\twrapper.domNode.parentNode.removeChild(wrapper.domNode);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\t_idToChildrenWrappers.delete(wrapper.id);\n\t\t\t\t\t_idToWrapperMap.delete(wrapper.id);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\treturn {\n\t\t\tdom: { type: 'delete', current }\n\t\t};\n\t}\n\n\treturn {\n\t\tmount,\n\t\tunmount,\n\t\tinvalidate\n\t};\n}\n\nexport default renderer;\n","import { create, diffProperty, invalidator, w } from '../core/vdom';\nimport { Handle } from '../core/Destroyable';\nimport injector from '../core/middleware/injector';\nimport icache from '../core/middleware/icache';\nimport { SupportedClassName } from '../core/interfaces';\nimport Link, { LinkProperties } from './Link';\nimport Router from './Router';\n\nexport interface ActiveLinkProperties extends LinkProperties {\n\tactiveClasses: SupportedClassName[];\n\tisExact?: boolean;\n}\n\nfunction paramsEqual(linkParams: any = {}, contextParams: any = {}) {\n\treturn Object.keys(linkParams).every((key) => linkParams[key] === contextParams[key]);\n}\n\nconst factory = create({ injector, diffProperty, icache, invalidator }).properties<ActiveLinkProperties>();\n\nexport const ActiveLink = factory(function ActiveLink({\n\tmiddleware: { diffProperty, injector, icache, invalidator },\n\tproperties,\n\tchildren\n}) {\n\tconst { to, routerKey = 'router', params } = properties();\n\tlet { activeClasses, isExact, classes = [], ...props } = properties();\n\n\tdiffProperty('to', (current: ActiveLinkProperties, next: ActiveLinkProperties) => {\n\t\tif (current.to !== next.to) {\n\t\t\tconst router = injector.get<Router>(routerKey);\n\t\t\tconst currentHandle = icache.get<Handle>('handle');\n\t\t\tif (currentHandle) {\n\t\t\t\tcurrentHandle.destroy();\n\t\t\t}\n\t\t\tif (router) {\n\t\t\t\tconst handle = router.on('route', ({ route }) => {\n\t\t\t\t\tif (route.id === to) {\n\t\t\t\t\t\tinvalidator();\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\ticache.set('handle', () => handle);\n\t\t\t}\n\t\t\tinvalidator();\n\t\t}\n\t});\n\n\tconst router = injector.get<Router>(routerKey);\n\tif (router) {\n\t\tif (!icache.get('handle')) {\n\t\t\tconst handle = router.on('route', ({ route }) => {\n\t\t\t\tif (route.id === to) {\n\t\t\t\t\tinvalidator();\n\t\t\t\t}\n\t\t\t});\n\t\t\ticache.set('handle', () => handle);\n\t\t}\n\t\tconst context = router.getRoute(to);\n\t\tconst isActive = context && paramsEqual(params, { ...context.params, ...context.queryParams });\n\t\tconst contextIsExact = context && context.isExact();\n\n\t\tclasses = Array.isArray(classes) ? classes : [classes];\n\t\tif (isActive && (!isExact || contextIsExact)) {\n\t\t\tclasses = [...classes, ...activeClasses];\n\t\t}\n\t\tprops = { ...props, classes };\n\t}\n\treturn w(Link, props, children());\n});\n\nexport default ActiveLink;\n","import { create, v } from '../core/vdom';\nimport has from '../core/has';\nimport injector from '../core/middleware/injector';\nimport { VNodeProperties } from '../core/interfaces';\nimport { Params } from './interfaces';\nimport Router from './Router';\n\nexport interface LinkProperties extends VNodeProperties {\n\tkey?: string;\n\trouterKey?: string;\n\tisOutlet?: boolean;\n\tparams?: Params;\n\tonClick?: (event: MouseEvent) => void;\n\tto: string;\n}\n\nconst factory = create({ injector }).properties<LinkProperties>();\n\nexport const Link = factory(function Link({ middleware: { injector }, properties, children }) {\n\tlet { routerKey = 'router', to, isOutlet = true, target, params = {}, onClick, ...props } = properties();\n\tconst router = injector.get<Router>(routerKey);\n\tlet href: string | undefined = to;\n\n\tlet linkProps: VNodeProperties;\n\tif (router) {\n\t\tif (isOutlet) {\n\t\t\thref = router.link(href, params);\n\t\t}\n\t\tconst onclick = (event: MouseEvent) => {\n\t\t\tonClick && onClick(event);\n\n\t\t\tif (!event.defaultPrevented && event.button === 0 && !event.metaKey && !event.ctrlKey && !target) {\n\t\t\t\tif (!has('build-serve') || !has('build-time-rendered')) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\thref !== undefined && router.setPath(href);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\tlinkProps = { ...props, onclick, href };\n\t} else {\n\t\tlinkProps = { ...props, href };\n\t}\n\treturn v('a', linkProps, children());\n});\n\nexport default Link;\n","import { create, tsx, diffProperty, invalidator } from '../core/vdom';\nimport injector from '../core/middleware/injector';\nimport icache from '../core/middleware/icache';\nimport { RenderResult } from '../core/interfaces';\nimport { MatchDetails, RouteContext } from './interfaces';\nimport Router from './Router';\nimport { RouteProperties } from './Route';\n\nconst ROUTER_KEY = 'router';\n\nexport interface RouteMatch {\n\t[index: string]: boolean;\n}\n\nexport interface Matches {\n\t[index: string]: boolean;\n}\n\nexport interface Matcher {\n\t(defaultMatches: Matches, matchDetails: Map<string, RouteContext>): Matches;\n}\n\nexport interface OutletProperties {\n\tid: string;\n\tmatcher?: Matcher;\n\trouterKey?: string;\n}\n\nexport interface OutletChildren {\n\t[index: string]: RenderResult | ((matchDetails: MatchDetails) => RenderResult);\n}\n\nexport interface OutletFunctionChild {\n\t(matchDetails: MatchDetails): RenderResult;\n}\n\nconst factory = create({ icache, injector, diffProperty, invalidator })\n\t.properties<OutletProperties>()\n\t.children<OutletChildren | OutletFunctionChild>();\n\nexport const Outlet = factory(function Outlet({\n\tmiddleware: { icache, injector, diffProperty, invalidator },\n\tproperties,\n\tchildren\n}) {\n\tdiffProperty('routerKey', (current: RouteProperties, next: RouteProperties) => {\n\t\tconst { routerKey: currentRouterKey = ROUTER_KEY } = current;\n\t\tconst { routerKey = ROUTER_KEY } = next;\n\t\tif (routerKey !== currentRouterKey) {\n\t\t\tconst currentHandle = icache.get<Function>('handle');\n\t\t\tif (currentHandle) {\n\t\t\t\tcurrentHandle();\n\t\t\t}\n\t\t\tconst handle = injector.subscribe(routerKey);\n\t\t\tif (handle) {\n\t\t\t\ticache.set('handle', () => handle);\n\t\t\t}\n\t\t}\n\t\tinvalidator();\n\t});\n\tconst { id, matcher, routerKey = ROUTER_KEY } = properties();\n\tconst [outletChildren] = children();\n\n\tconst currentHandle = icache.get<Function>('handle');\n\tif (!currentHandle) {\n\t\tconst handle = injector.subscribe(routerKey);\n\t\tif (handle) {\n\t\t\ticache.set('handle', () => handle);\n\t\t}\n\t}\n\n\tconst router = injector.get<Router>(routerKey);\n\n\tif (router) {\n\t\tconst currentRouteContext = router.getMatchedRoute();\n\t\tconst routeContextMap = router.getOutlet(id);\n\t\tif (routeContextMap && currentRouteContext) {\n\t\t\tif (typeof outletChildren === 'function') {\n\t\t\t\treturn outletChildren({ ...currentRouteContext, router });\n\t\t\t}\n\t\t\tlet matches = Object.keys(outletChildren).reduce(\n\t\t\t\t(matches, key) => {\n\t\t\t\t\tmatches[key] = !!routeContextMap.get(key);\n\t\t\t\t\treturn matches;\n\t\t\t\t},\n\t\t\t\t{} as Matches\n\t\t\t);\n\t\t\tif (matcher) {\n\t\t\t\tmatches = matcher(matches, routeContextMap);\n\t\t\t}\n\t\t\treturn (\n\t\t\t\t<virtual>\n\t\t\t\t\t{Object.keys(matches)\n\t\t\t\t\t\t.filter((key) => matches[key])\n\t\t\t\t\t\t.map((key) => {\n\t\t\t\t\t\t\tconst renderer = outletChildren[key];\n\t\t\t\t\t\t\tif (typeof renderer === 'function') {\n\t\t\t\t\t\t\t\tconst context = routeContextMap.get(key) || currentRouteContext;\n\t\t\t\t\t\t\t\treturn renderer({ ...context, router });\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn renderer;\n\t\t\t\t\t\t})}\n\t\t\t\t</virtual>\n\t\t\t);\n\t\t}\n\t}\n\treturn null;\n});\n\nexport default Outlet;\n","import global from '../shim/global';\nimport Evented from '../core/Evented';\nimport {\n\tRouteConfig,\n\tHistory,\n\tRouteContext,\n\tParams,\n\tRouterInterface,\n\tRoute,\n\tRouterOptions,\n\tMatchType\n} from './interfaces';\nimport { HashHistory } from './history/HashHistory';\nimport { EventObject } from '../core/Evented';\n\nconst PARAM = '__PARAM__';\n\nconst paramRegExp = new RegExp(/^{.+}$/);\n\ninterface RouteWrapper {\n\troute: Route;\n\tsegments: string[];\n\tparent: RouteWrapper | undefined;\n\ttype: MatchType;\n\tparams: Params;\n}\n\nexport interface NavEvent extends EventObject<string> {\n\toutlet?: string;\n\tcontext?: RouteContext;\n}\n\nexport interface RouteEvent extends EventObject<string> {\n\troute: RouteContext;\n\taction: 'enter' | 'exit';\n}\n\nexport interface OutletEvent extends EventObject<string> {\n\toutlet: RouteContext;\n\taction: 'enter' | 'exit';\n}\n\nconst ROUTE_SEGMENT_SCORE = 7;\nconst DYNAMIC_SEGMENT_PENALTY = 2;\n\nfunction matchingParams({ params: previousParams }: RouteContext, { params }: RouteContext) {\n\tconst matching = Object.keys(previousParams).every((key) => previousParams[key] === params[key]);\n\tif (!matching) {\n\t\treturn false;\n\t}\n\treturn Object.keys(params).every((key) => previousParams[key] === params[key]);\n}\n\nexport class Router extends Evented<{ nav: NavEvent; route: RouteEvent; outlet: OutletEvent }>\n\timplements RouterInterface {\n\tprivate _routes: Route[] = [];\n\tprivate _routeMap: { [index: string]: Route } = Object.create(null);\n\tprivate _matchedRoutes: { [index: string]: RouteContext } = Object.create(null);\n\tprivate _matchedOutletMap = new Map<string, Map<string, RouteContext>>();\n\tprivate _currentParams: Params = {};\n\tprivate _currentQueryParams: Params = {};\n\tprivate _defaultRoute: string | undefined;\n\tprivate _history!: History;\n\tprivate _options: RouterOptions;\n\tprivate _currentMatchedRoute: RouteContext | undefined;\n\n\tconstructor(config: RouteConfig[], options: RouterOptions = {}) {\n\t\tsuper();\n\t\tthis._options = options;\n\t\tthis._register(config);\n\t\tconst autostart = options.autostart === undefined ? true : options.autostart;\n\t\tif (autostart) {\n\t\t\tthis.start();\n\t\t}\n\t}\n\n\t/**\n\t * Sets the path against the registered history manager\n\t *\n\t * @param path The path to set on the history manager\n\t */\n\tpublic setPath(path: string): void {\n\t\tthis._history.set(path);\n\t}\n\n\tpublic start() {\n\t\tconst { HistoryManager = HashHistory, base, window } = this._options;\n\t\tthis._history = new HistoryManager({ onChange: this._onChange, base, window });\n\t\tif (this._matchedRoutes.errorRoute && this._defaultRoute) {\n\t\t\tconst path = this.link(this._defaultRoute);\n\t\t\tif (path) {\n\t\t\t\tthis.setPath(path);\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Generate a link for a given outlet identifier and optional params.\n\t *\n\t * @param outlet The outlet to generate a link for\n\t * @param params Optional Params for the generated link\n\t */\n\tpublic link(outlet: string, params: Params = {}): string | undefined {\n\t\tlet route = this._routeMap[outlet];\n\t\tif (route === undefined) {\n\t\t\treturn;\n\t\t}\n\n\t\tlet linkPath: string | undefined = route.fullPath;\n\t\tif (route.fullQueryParams.length > 0) {\n\t\t\tlet queryString = route.fullQueryParams.reduce((queryParamString, param, index) => {\n\t\t\t\tif (index > 0) {\n\t\t\t\t\treturn `${queryParamString}&${param}={${param}}`;\n\t\t\t\t}\n\t\t\t\treturn `?${param}={${param}}`;\n\t\t\t}, '');\n\t\t\tlinkPath = `${linkPath}${queryString}`;\n\t\t}\n\t\tparams = { ...route.defaultParams, ...this._currentQueryParams, ...this._currentParams, ...params };\n\n\t\tif (Object.keys(params).length === 0 && route.fullParams.length > 0) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\tconst fullParams = [...route.fullParams, ...route.fullQueryParams];\n\t\tfor (let i = 0; i < fullParams.length; i++) {\n\t\t\tconst param = fullParams[i];\n\t\t\tif (params[param]) {\n\t\t\t\tlinkPath = linkPath.replace(`{${param}}`, params[param]);\n\t\t\t} else {\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t}\n\t\treturn this._history.prefix(linkPath);\n\t}\n\n\t/**\n\t * Returns the route context for the route identifier if one has been matched\n\t *\n\t * @param routeId The route identifer\n\t */\n\tpublic getRoute(routeId: string): RouteContext | undefined {\n\t\treturn this._matchedRoutes[routeId];\n\t}\n\n\tpublic getOutlet(outletId: string): undefined | Map<string, RouteContext> {\n\t\treturn this._matchedOutletMap.get(outletId);\n\t}\n\n\tpublic getMatchedRoute(): RouteContext | undefined {\n\t\treturn this._currentMatchedRoute;\n\t}\n\n\t/**\n\t * Returns all the params for the current matched outlets\n\t */\n\tpublic get currentParams() {\n\t\treturn this._currentParams;\n\t}\n\n\t/**\n\t * Strips the leading slash on a path if one exists\n\t *\n\t * @param path The path to strip a leading slash\n\t */\n\tprivate _stripLeadingSlash(path: string): string {\n\t\tif (path[0] === '/') {\n\t\t\treturn path.slice(1);\n\t\t}\n\t\treturn path;\n\t}\n\n\t/**\n\t * Registers the routing configuration\n\t *\n\t * @param config The configuration\n\t * @param routes The routes\n\t * @param parentRoute The parent route\n\t */\n\tprivate _register(config: RouteConfig[], routes?: Route[], parentRoute?: Route): void {\n\t\troutes = routes ? routes : this._routes;\n\t\tfor (let i = 0; i < config.length; i++) {\n\t\t\tlet { path, outlet, children, defaultRoute = false, defaultParams = {}, id, title } = config[i];\n\t\t\tlet [parsedPath, queryParamString] = path.split('?');\n\t\t\tlet queryParams: string[] = [];\n\t\t\tparsedPath = this._stripLeadingSlash(parsedPath);\n\n\t\t\tconst segments: string[] = parsedPath.split('/');\n\t\t\tconst route: Route = {\n\t\t\t\tparams: [],\n\t\t\t\tid,\n\t\t\t\toutlet,\n\t\t\t\ttitle,\n\t\t\t\tpath: parsedPath,\n\t\t\t\tsegments,\n\t\t\t\tdefaultParams: parentRoute ? { ...parentRoute.defaultParams, ...defaultParams } : defaultParams,\n\t\t\t\tchildren: [],\n\t\t\t\tfullPath: parentRoute ? `${parentRoute.fullPath}/${parsedPath}` : parsedPath,\n\t\t\t\tfullParams: [],\n\t\t\t\tfullQueryParams: [],\n\t\t\t\tscore: parentRoute ? parentRoute.score : 0\n\t\t\t};\n\t\t\tif (defaultRoute) {\n\t\t\t\tthis._defaultRoute = id;\n\t\t\t}\n\t\t\tfor (let i = 0; i < segments.length; i++) {\n\t\t\t\tconst segment = segments[i];\n\t\t\t\troute.score += ROUTE_SEGMENT_SCORE;\n\t\t\t\tif (paramRegExp.test(segment)) {\n\t\t\t\t\troute.score -= DYNAMIC_SEGMENT_PENALTY;\n\t\t\t\t\troute.params.push(segment.replace('{', '').replace('}', ''));\n\t\t\t\t\tsegments[i] = PARAM;\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (queryParamString) {\n\t\t\t\tqueryParams = queryParamString.split('&').map((queryParam) => {\n\t\t\t\t\treturn queryParam.replace('{', '').replace('}', '');\n\t\t\t\t});\n\t\t\t}\n\t\t\troute.fullQueryParams = parentRoute ? [...parentRoute.fullQueryParams, ...queryParams] : queryParams;\n\n\t\t\troute.fullParams = parentRoute ? [...parentRoute.fullParams, ...route.params] : route.params;\n\n\t\t\tif (children && children.length > 0) {\n\t\t\t\tthis._register(children, route.children, route);\n\t\t\t}\n\t\t\tthis._routeMap[id] = route;\n\t\t\troutes.push(route);\n\t\t}\n\t}\n\n\t/**\n\t * Returns an object of query params\n\t *\n\t * @param queryParamString The string of query params, e.g `paramOne=one¶mTwo=two`\n\t */\n\tprivate _getQueryParams(queryParamString?: string): { [index: string]: string } {\n\t\tconst queryParams: { [index: string]: string } = {};\n\t\tif (queryParamString) {\n\t\t\tconst queryParameters = queryParamString.split('&');\n\t\t\tfor (let i = 0; i < queryParameters.length; i++) {\n\t\t\t\tconst [key, value] = queryParameters[i].split('=');\n\t\t\t\tqueryParams[key] = value;\n\t\t\t}\n\t\t}\n\t\treturn queryParams;\n\t}\n\n\t/**\n\t * Called on change of the route by the the registered history manager. Matches the path against\n\t * the registered outlets.\n\t *\n\t * @param requestedPath The path of the requested route\n\t */\n\tprivate _onChange = (requestedPath: string): void => {\n\t\trequestedPath = this._stripLeadingSlash(requestedPath);\n\t\tconst previousMatchedRoutes = this._matchedRoutes;\n\t\tthis._matchedRoutes = Object.create(null);\n\t\tthis._matchedOutletMap.clear();\n\t\tconst [path, queryParamString] = requestedPath.split('?');\n\t\tthis._currentQueryParams = this._getQueryParams(queryParamString);\n\t\tconst segments = path.split('/');\n\t\tlet routeConfigs: RouteWrapper[] = this._routes.map((route) => ({\n\t\t\troute,\n\t\t\tsegments: [...segments],\n\t\t\tparent: undefined,\n\t\t\tparams: {},\n\t\t\ttype: 'index'\n\t\t}));\n\t\tlet routeConfig: RouteWrapper | undefined;\n\t\tlet matchedRoutes: RouteWrapper[] = [];\n\t\twhile ((routeConfig = routeConfigs.pop())) {\n\t\t\tconst { route, parent, segments, params } = routeConfig;\n\t\t\tlet segmentIndex = 0;\n\t\t\tlet type: MatchType = 'index';\n\t\t\tlet paramIndex = 0;\n\t\t\tlet routeMatch = true;\n\t\t\tif (segments.length < route.segments.length) {\n\t\t\t\trouteMatch = false;\n\t\t\t} else {\n\t\t\t\twhile (segments.length > 0) {\n\t\t\t\t\tif (route.segments[segmentIndex] === undefined) {\n\t\t\t\t\t\ttype = 'partial';\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst segment = segments.shift()!;\n\t\t\t\t\tif (route.segments[segmentIndex] === PARAM) {\n\t\t\t\t\t\tparams[route.params[paramIndex++]] = segment;\n\t\t\t\t\t\tthis._currentParams = { ...this._currentParams, ...params };\n\t\t\t\t\t} else if (route.segments[segmentIndex] !== segment) {\n\t\t\t\t\t\trouteMatch = false;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tsegmentIndex++;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (routeMatch) {\n\t\t\t\trouteConfig.type = type;\n\t\t\t\tmatchedRoutes.push({ route, parent, type, params, segments: [] });\n\t\t\t\tif (segments.length) {\n\t\t\t\t\trouteConfigs = [\n\t\t\t\t\t\t...routeConfigs,\n\t\t\t\t\t\t...route.children.map((childRoute) => ({\n\t\t\t\t\t\t\troute: childRoute,\n\t\t\t\t\t\t\tsegments: [...segments],\n\t\t\t\t\t\t\tparent: routeConfig,\n\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\tparams: { ...params }\n\t\t\t\t\t\t}))\n\t\t\t\t\t];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tlet matchedRouteId: string | undefined = undefined;\n\n\t\tlet matchedRoute = matchedRoutes.shift();\n\t\twhile (matchedRoute && matchedRoutes.length) {\n\t\t\tlet currentMatch = matchedRoutes.shift();\n\t\t\tif (currentMatch && currentMatch.route.score > matchedRoute.route.score) {\n\t\t\t\tmatchedRoute = currentMatch;\n\t\t\t}\n\t\t}\n\n\t\tif (matchedRoute) {\n\t\t\tif (matchedRoute.type === 'partial') {\n\t\t\t\tmatchedRoute.type = 'error';\n\t\t\t}\n\t\t\tmatchedRouteId = matchedRoute.route.id;\n\t\t\tconst title = this._options.setDocumentTitle\n\t\t\t\t? this._options.setDocumentTitle({\n\t\t\t\t\t\tid: matchedRouteId,\n\t\t\t\t\t\ttitle: matchedRoute.route.title,\n\t\t\t\t\t\tparams: matchedRoute.params,\n\t\t\t\t\t\tqueryParams: this._currentQueryParams\n\t\t\t\t })\n\t\t\t\t: matchedRoute.route.title;\n\t\t\tif (title) {\n\t\t\t\tglobal.document.title = title;\n\t\t\t}\n\t\t\twhile (matchedRoute) {\n\t\t\t\tlet { type, params, route } = matchedRoute;\n\t\t\t\tlet parent: RouteWrapper | undefined = matchedRoute.parent;\n\t\t\t\tconst matchedRouteContext: RouteContext = {\n\t\t\t\t\tid: route.id,\n\t\t\t\t\toutlet: route.outlet,\n\t\t\t\t\tqueryParams: this._currentQueryParams,\n\t\t\t\t\tparams,\n\t\t\t\t\ttype,\n\t\t\t\t\tisError: () => type === 'error',\n\t\t\t\t\tisExact: () => type === 'index'\n\t\t\t\t};\n\t\t\t\tconst previousMatchedOutlet = previousMatchedRoutes[route.id];\n\t\t\t\tconst routeMap = this._matchedOutletMap.get(route.outlet) || new Map();\n\t\t\t\trouteMap.set(route.id, matchedRouteContext);\n\t\t\t\tthis._matchedOutletMap.set(route.outlet, routeMap);\n\t\t\t\tthis._matchedRoutes[route.id] = matchedRouteContext;\n\t\t\t\tif (!previousMatchedOutlet || !matchingParams(previousMatchedOutlet, matchedRouteContext)) {\n\t\t\t\t\tthis.emit({ type: 'route', route: matchedRouteContext, action: 'enter' });\n\t\t\t\t\tthis.emit({ type: 'outlet', outlet: matchedRouteContext, action: 'enter' });\n\t\t\t\t}\n\t\t\t\tmatchedRoute = parent;\n\t\t\t}\n\t\t} else {\n\t\t\tthis._matchedRoutes.errorRoute = {\n\t\t\t\tid: 'errorRoute',\n\t\t\t\toutlet: 'errorRoute',\n\t\t\t\tqueryParams: {},\n\t\t\t\tparams: {},\n\t\t\t\tisError: () => true,\n\t\t\t\tisExact: () => false,\n\t\t\t\ttype: 'error'\n\t\t\t};\n\t\t}\n\n\t\tconst previousMatchedOutletKeys = Object.keys(previousMatchedRoutes);\n\t\tfor (let i = 0; i < previousMatchedOutletKeys.length; i++) {\n\t\t\tconst key = previousMatchedOutletKeys[i];\n\t\t\tconst matchedRoute = this._matchedRoutes[key];\n\t\t\tif (!matchedRoute || !matchingParams(previousMatchedRoutes[key], matchedRoute)) {\n\t\t\t\tthis.emit({ type: 'route', route: previousMatchedRoutes[key], action: 'exit' });\n\t\t\t\tthis.emit({ type: 'outlet', outlet: previousMatchedRoutes[key], action: 'exit' });\n\t\t\t}\n\t\t}\n\t\tthis._currentMatchedRoute = matchedRouteId ? this._matchedRoutes[matchedRouteId] : undefined;\n\t\tthis.emit({\n\t\t\ttype: 'nav',\n\t\t\toutlet: matchedRouteId,\n\t\t\tcontext: this._currentMatchedRoute\n\t\t});\n\t\tif (this._options.resetScroll) {\n\t\t\tconst { window = global.window } = this._options;\n\t\t\ttry {\n\t\t\t\twindow.scroll(0, 0);\n\t\t\t} catch (e) {\n\t\t\t\t// Catch errors if we're in an environment without window.scroll\n\t\t\t}\n\t\t}\n\t};\n}\n\nexport default Router;\n","import { Registry } from '../core/Registry';\nimport { RegistryLabel } from '../core/interfaces';\n\nimport { Router } from './Router';\nimport { RouteConfig, RouterOptions } from './interfaces';\n\n/**\n * Router Injector Options\n *\n */\nexport interface RouterInjectorOptions extends RouterOptions {\n\tkey?: RegistryLabel;\n}\n\n/**\n * Creates a router instance for a specific History manager (default is `HashHistory`) and registers\n * the route configuration.\n *\n * @param config The route config to register for the router\n * @param registry An optional registry that defaults to the global registry\n * @param options The router injector options\n */\nexport function registerRouterInjector(\n\tconfig: RouteConfig[],\n\tregistry: Registry,\n\toptions: RouterInjectorOptions = {}\n): Router {\n\tconst { key = 'router', ...routerOptions } = options;\n\n\tif (registry.hasInjector(key)) {\n\t\tthrow new Error('Router has already been defined');\n\t}\n\tconst router = new Router(config, routerOptions);\n\tregistry.defineInjector(key, (invalidator: () => void) => {\n\t\trouter.on('nav', () => invalidator());\n\t\treturn () => router;\n\t});\n\treturn router;\n}\n","import global from '../../shim/global';\nimport { History, HistoryOptions, OnChangeFunction } from './../interfaces';\n\nexport class HashHistory implements History {\n\tprivate _onChangeFunction: OnChangeFunction;\n\tprivate _current: string;\n\tprivate _window: Window;\n\n\tconstructor({ window = global.window, onChange }: HistoryOptions) {\n\t\tthis._onChangeFunction = onChange;\n\t\tthis._window = window;\n\t\tthis._window.addEventListener('hashchange', this._onChange, false);\n\t\tthis._current = this.normalizePath(this._window.location.hash);\n\t\tthis._onChangeFunction(this._current);\n\t}\n\n\tpublic normalizePath(path: string): string {\n\t\treturn path.replace('#', '');\n\t}\n\n\tpublic prefix(path: string) {\n\t\tif (path[0] !== '#') {\n\t\t\treturn `#${path}`;\n\t\t}\n\t\treturn path;\n\t}\n\n\tpublic set(path: string) {\n\t\tthis._window.location.hash = this.prefix(path);\n\t\tthis._onChange();\n\t}\n\n\tpublic get current(): string {\n\t\treturn this._current;\n\t}\n\n\tpublic destroy() {\n\t\tthis._window.removeEventListener('hashchange', this._onChange);\n\t}\n\n\tprivate _onChange = () => {\n\t\tconst path = this.normalizePath(this._window.location.hash);\n\t\tif (path !== this._current) {\n\t\t\tthis._current = path;\n\t\t\tthis._onChangeFunction(this._current);\n\t\t}\n\t};\n}\n\nexport default HashHistory;\n","`!has('es6-iterator')`;\nimport { isArrayLike, Iterable, IterableIterator, ShimIterator } from './iterator';\nimport global from './global';\nimport { is as objectIs } from './object';\nimport has from '../core/has';\n`!has('es6-symbol')`;\nimport './Symbol';\n\nexport interface Map<K, V> {\n\t/**\n\t * Deletes all keys and their associated values.\n\t */\n\tclear(): void;\n\n\t/**\n\t * Deletes a given key and its associated value.\n\t *\n\t * @param key The key to delete\n\t * @return true if the key exists, false if it does not\n\t */\n\tdelete(key: K): boolean;\n\n\t/**\n\t * Returns an iterator that yields each key/value pair as an array.\n\t *\n\t * @return An iterator for each key/value pair in the instance.\n\t */\n\tentries(): IterableIterator<[K, V]>;\n\n\t/**\n\t * Executes a given function for each map entry. The function\n\t * is invoked with three arguments: the element value, the\n\t * element key, and the associated Map instance.\n\t *\n\t * @param callbackfn The function to execute for each map entry,\n\t * @param thisArg The value to use for `this` for each execution of the calback\n\t */\n\tforEach(callbackfn: (value: V, key: K, map: Map<K, V>) => void, thisArg?: any): void;\n\n\t/**\n\t * Returns the value associated with a given key.\n\t *\n\t * @param key The key to look up\n\t * @return The value if one exists or undefined\n\t */\n\tget(key: K): V | undefined;\n\n\t/**\n\t * Returns an iterator that yields each key in the map.\n\t *\n\t * @return An iterator containing the instance's keys.\n\t */\n\tkeys(): IterableIterator<K>;\n\n\t/**\n\t * Checks for the presence of a given key.\n\t *\n\t * @param key The key to check for\n\t * @return true if the key exists, false if it does not\n\t */\n\thas(key: K): boolean;\n\n\t/**\n\t * Sets the value associated with a given key.\n\t *\n\t * @param key The key to define a value to\n\t * @param value The value to assign\n\t * @return The Map instance\n\t */\n\tset(key: K, value: V): this;\n\n\t/**\n\t * Returns the number of key / value pairs in the Map.\n\t */\n\treadonly size: number;\n\n\t/**\n\t * Returns an iterator that yields each value in the map.\n\t *\n\t * @return An iterator containing the instance's values.\n\t */\n\tvalues(): IterableIterator<V>;\n\n\t/** Returns an iterable of entries in the map. */\n\t[Symbol.iterator](): IterableIterator<[K, V]>;\n\n\treadonly [Symbol.toStringTag]: string;\n}\n\nexport interface MapConstructor {\n\t/**\n\t * Creates a new Map\n\t *\n\t * @constructor\n\t */\n\tnew (): Map<any, any>;\n\n\t/**\n\t * Creates a new Map\n\t *\n\t * @constructor\n\t *\n\t * @param iterator\n\t * Array or iterator containing two-item tuples used to initially populate the map.\n\t * The first item in each tuple corresponds to the key of the map entry.\n\t * The second item corresponds to the value of the map entry.\n\t */\n\tnew <K, V>(iterator?: [K, V][]): Map<K, V>;\n\n\t/**\n\t * Creates a new Map\n\t *\n\t * @constructor\n\t *\n\t * @param iterator\n\t * Array or iterator containing two-item tuples used to initially populate the map.\n\t * The first item in each tuple corresponds to the key of the map entry.\n\t * The second item corresponds to the value of the map entry.\n\t */\n\tnew <K, V>(iterator: Iterable<[K, V]>): Map<K, V>;\n\n\treadonly prototype: Map<any, any>;\n\n\treadonly [Symbol.species]: MapConstructor;\n}\n\nexport let Map: MapConstructor = global.Map;\n\nif (!has('es6-map')) {\n\tMap = global.Map = class Map<K, V> {\n\t\tprotected readonly _keys: K[] = [];\n\t\tprotected readonly _values: V[] = [];\n\n\t\t/**\n\t\t * An alternative to Array.prototype.indexOf using Object.is\n\t\t * to check for equality. See http://mzl.la/1zuKO2V\n\t\t */\n\t\tprotected _indexOfKey(keys: K[], key: K): number {\n\t\t\tfor (let i = 0, length = keys.length; i < length; i++) {\n\t\t\t\tif (objectIs(keys[i], key)) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn -1;\n\t\t}\n\n\t\tstatic [Symbol.species] = Map;\n\n\t\tconstructor(iterable?: ArrayLike<[K, V]> | Iterable<[K, V]>) {\n\t\t\tif (iterable) {\n\t\t\t\tif (isArrayLike(iterable)) {\n\t\t\t\t\tfor (let i = 0; i < iterable.length; i++) {\n\t\t\t\t\t\tconst value = iterable[i];\n\t\t\t\t\t\tthis.set(value[0], value[1]);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tfor (const value of iterable) {\n\t\t\t\t\t\tthis.set(value[0], value[1]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tget size(): number {\n\t\t\treturn this._keys.length;\n\t\t}\n\n\t\tclear(): void {\n\t\t\tthis._keys.length = this._values.length = 0;\n\t\t}\n\n\t\tdelete(key: K): boolean {\n\t\t\tconst index = this._indexOfKey(this._keys, key);\n\t\t\tif (index < 0) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis._keys.splice(index, 1);\n\t\t\tthis._values.splice(index, 1);\n\t\t\treturn true;\n\t\t}\n\n\t\tentries(): IterableIterator<[K, V]> {\n\t\t\tconst values = this._keys.map(\n\t\t\t\t(key: K, i: number): [K, V] => {\n\t\t\t\t\treturn [key, this._values[i]];\n\t\t\t\t}\n\t\t\t);\n\n\t\t\treturn new ShimIterator(values);\n\t\t}\n\n\t\tforEach(callback: (value: V, key: K, mapInstance: Map<K, V>) => any, context?: {}) {\n\t\t\tconst keys = this._keys;\n\t\t\tconst values = this._values;\n\t\t\tfor (let i = 0, length = keys.length; i < length; i++) {\n\t\t\t\tcallback.call(context, values[i], keys[i], this);\n\t\t\t}\n\t\t}\n\n\t\tget(key: K): V | undefined {\n\t\t\tconst index = this._indexOfKey(this._keys, key);\n\t\t\treturn index < 0 ? undefined : this._values[index];\n\t\t}\n\n\t\thas(key: K): boolean {\n\t\t\treturn this._indexOfKey(this._keys, key) > -1;\n\t\t}\n\n\t\tkeys(): IterableIterator<K> {\n\t\t\treturn new ShimIterator(this._keys);\n\t\t}\n\n\t\tset(key: K, value: V): Map<K, V> {\n\t\t\tlet index = this._indexOfKey(this._keys, key);\n\t\t\tindex = index < 0 ? this._keys.length : index;\n\t\t\tthis._keys[index] = key;\n\t\t\tthis._values[index] = value;\n\t\t\treturn this;\n\t\t}\n\n\t\tvalues(): IterableIterator<V> {\n\t\t\treturn new ShimIterator(this._values);\n\t\t}\n\n\t\t[Symbol.iterator](): IterableIterator<[K, V]> {\n\t\t\treturn this.entries();\n\t\t}\n\n\t\t[Symbol.toStringTag]: 'Map' = 'Map';\n\t};\n}\n\nexport default Map;\n","import global from './global';\n`!has('es6-iterator')`;\nimport { isArrayLike, Iterable, IterableIterator, ShimIterator } from './iterator';\nimport has from '../core/has';\n`!has('es6-symbol')`;\nimport './Symbol';\n\nexport interface Set<T> {\n\t/**\n\t * Adds a `value` to the `Set`\n\t *\n\t * @param value The value to add to the set\n\t * @returns The instance of the `Set`\n\t */\n\tadd(value: T): this;\n\n\t/**\n\t * Removes all the values from the `Set`.\n\t */\n\tclear(): void;\n\n\t/**\n\t * Removes a `value` from the set\n\t *\n\t * @param value The value to be removed\n\t * @returns `true` if the value was removed\n\t */\n\tdelete(value: T): boolean;\n\n\t/**\n\t * Returns an iterator that yields each entry.\n\t *\n\t * @return An iterator for each key/value pair in the instance.\n\t */\n\tentries(): IterableIterator<[T, T]>;\n\n\t/**\n\t * Executes a given function for each set entry. The function\n\t * is invoked with three arguments: the element value, the\n\t * element key, and the associated `Set` instance.\n\t *\n\t * @param callbackfn The function to execute for each map entry,\n\t * @param thisArg The value to use for `this` for each execution of the calback\n\t */\n\tforEach(callbackfn: (value: T, value2: T, set: Set<T>) => void, thisArg?: any): void;\n\n\t/**\n\t * Identifies if a value is part of the set.\n\t *\n\t * @param value The value to check\n\t * @returns `true` if the value is part of the set otherwise `false`\n\t */\n\thas(value: T): boolean;\n\n\t/**\n\t * Despite its name, returns an iterable of the values in the set,\n\t */\n\tkeys(): IterableIterator<T>;\n\n\t/**\n\t * Returns the number of values in the `Set`.\n\t */\n\treadonly size: number;\n\n\t/**\n\t * Returns an iterable of values in the set.\n\t */\n\tvalues(): IterableIterator<T>;\n\n\t/** Iterates over values in the set. */\n\t[Symbol.iterator](): IterableIterator<T>;\n\n\treadonly [Symbol.toStringTag]: 'Set';\n}\n\nexport interface SetConstructor {\n\t/**\n\t * Creates a new Set\n\t *\n\t * @constructor\n\t */\n\tnew (): Set<any>;\n\n\t/**\n\t * Creates a new Set\n\t *\n\t * @constructor\n\t *\n\t * @param iterator The iterable structure to initialize the set with\n\t */\n\tnew <T>(iterator?: T[]): Set<T>;\n\n\t/**\n\t * Creates a new Set\n\t *\n\t * @constructor\n\t *\n\t * @param iterator The iterable structure to initialize the set with\n\t */\n\tnew <T>(iterator: Iterable<T>): Set<T>;\n\n\treadonly prototype: Set<any>;\n}\n\nexport let Set: SetConstructor = global.Set;\n\nif (!has('es6-set')) {\n\tSet = global.Set = class Set<T> {\n\t\tprivate readonly _setData: T[] = [];\n\n\t\tstatic [Symbol.species] = Set;\n\n\t\tconstructor(iterable?: ArrayLike<T> | Iterable<T>) {\n\t\t\tif (iterable) {\n\t\t\t\tif (isArrayLike(iterable)) {\n\t\t\t\t\tfor (let i = 0; i < iterable.length; i++) {\n\t\t\t\t\t\tthis.add(iterable[i]);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tfor (const value of iterable) {\n\t\t\t\t\t\tthis.add(value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tadd(value: T): this {\n\t\t\tif (this.has(value)) {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t\tthis._setData.push(value);\n\t\t\treturn this;\n\t\t}\n\n\t\tclear(): void {\n\t\t\tthis._setData.length = 0;\n\t\t}\n\n\t\tdelete(value: T): boolean {\n\t\t\tconst idx = this._setData.indexOf(value);\n\t\t\tif (idx === -1) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tthis._setData.splice(idx, 1);\n\t\t\treturn true;\n\t\t}\n\n\t\tentries(): IterableIterator<[T, T]> {\n\t\t\treturn new ShimIterator<[any, any]>(this._setData.map<[any, any]>((value) => [value, value]));\n\t\t}\n\n\t\tforEach(callbackfn: (value: T, index: T, set: Set<T>) => void, thisArg?: any): void {\n\t\t\tconst iterator = this.values();\n\t\t\tlet result = iterator.next();\n\t\t\twhile (!result.done) {\n\t\t\t\tcallbackfn.call(thisArg, result.value, result.value, this);\n\t\t\t\tresult = iterator.next();\n\t\t\t}\n\t\t}\n\n\t\thas(value: T): boolean {\n\t\t\treturn this._setData.indexOf(value) > -1;\n\t\t}\n\n\t\tkeys(): IterableIterator<T> {\n\t\t\treturn new ShimIterator(this._setData);\n\t\t}\n\n\t\tget size(): number {\n\t\t\treturn this._setData.length;\n\t\t}\n\n\t\tvalues(): IterableIterator<T> {\n\t\t\treturn new ShimIterator(this._setData);\n\t\t}\n\n\t\t[Symbol.iterator](): IterableIterator<T> {\n\t\t\treturn new ShimIterator(this._setData);\n\t\t}\n\n\t\t[Symbol.toStringTag]: 'Set' = 'Set';\n\t};\n}\n\nexport default Set;\n","import global from './global';\n`!has('es6-iterator')`;\nimport { isArrayLike, Iterable } from './iterator';\nimport has from '../core/has';\n`!has('es6-symbol')`;\nimport './Symbol';\n\nexport interface WeakMap<K extends object, V> {\n\t/**\n\t * Remove a `key` from the map\n\t *\n\t * @param key The key to remove\n\t * @return `true` if the value was removed, otherwise `false`\n\t */\n\tdelete(key: K): boolean;\n\n\t/**\n\t * Retrieve the value, based on the supplied `key`\n\t *\n\t * @param key The key to retrieve the `value` for\n\t * @return the `value` based on the `key` if found, otherwise `false`\n\t */\n\tget(key: K): V | undefined;\n\n\t/**\n\t * Determines if a `key` is present in the map\n\t *\n\t * @param key The `key` to check\n\t * @return `true` if the key is part of the map, otherwise `false`.\n\t */\n\thas(key: K): boolean;\n\n\t/**\n\t * Set a `value` for a particular `key`.\n\t *\n\t * @param key The `key` to set the `value` for\n\t * @param value The `value` to set\n\t * @return the instances\n\t */\n\tset(key: K, value: V): this;\n\n\treadonly [Symbol.toStringTag]: 'WeakMap';\n}\n\nexport interface WeakMapConstructor {\n\t/**\n\t * Create a new instance of a `WeakMap`\n\t *\n\t * @constructor\n\t */\n\tnew (): WeakMap<object, any>;\n\n\t/**\n\t * Create a new instance of a `WeakMap`\n\t *\n\t * @constructor\n\t *\n\t * @param iterable An iterable that contains yields up key/value pair entries\n\t */\n\tnew <K extends object, V>(iterable?: [K, V][]): WeakMap<K, V>;\n\n\t/**\n\t * Create a new instance of a `WeakMap`\n\t *\n\t * @constructor\n\t *\n\t * @param iterable An iterable that contains yields up key/value pair entries\n\t */\n\tnew <K extends object, V>(iterable: Iterable<[K, V]>): WeakMap<K, V>;\n\n\treadonly prototype: WeakMap<object, any>;\n}\n\nexport let WeakMap: WeakMapConstructor = global.WeakMap;\n\ninterface Entry<K, V> {\n\tkey: K;\n\tvalue: V;\n}\n\nif (!has('es6-weakmap')) {\n\tconst DELETED: any = {};\n\n\tconst getUID = function getUID(): number {\n\t\treturn Math.floor(Math.random() * 100000000);\n\t};\n\n\tconst generateName = (function() {\n\t\tlet startId = Math.floor(Date.now() % 100000000);\n\n\t\treturn function generateName(): string {\n\t\t\treturn '__wm' + getUID() + (startId++ + '__');\n\t\t};\n\t})();\n\n\tWeakMap = global.WeakMap = class WeakMap<K, V> {\n\t\tprivate readonly _name: string;\n\t\tprivate readonly _frozenEntries: Entry<K, V>[];\n\n\t\tconstructor(iterable?: ArrayLike<[K, V]> | Iterable<[K, V]>) {\n\t\t\tthis._name = generateName();\n\n\t\t\tthis._frozenEntries = [];\n\n\t\t\tif (iterable) {\n\t\t\t\tif (isArrayLike(iterable)) {\n\t\t\t\t\tfor (let i = 0; i < iterable.length; i++) {\n\t\t\t\t\t\tconst item = iterable[i];\n\t\t\t\t\t\tthis.set(item[0], item[1]);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tfor (const [key, value] of iterable) {\n\t\t\t\t\t\tthis.set(key, value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tprivate _getFrozenEntryIndex(key: any): number {\n\t\t\tfor (let i = 0; i < this._frozenEntries.length; i++) {\n\t\t\t\tif (this._frozenEntries[i].key === key) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn -1;\n\t\t}\n\n\t\tdelete(key: any): boolean {\n\t\t\tif (key === undefined || key === null) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst entry: Entry<K, V> = key[this._name];\n\t\t\tif (entry && entry.key === key && entry.value !== DELETED) {\n\t\t\t\tentry.value = DELETED;\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tconst frozenIndex = this._getFrozenEntryIndex(key);\n\t\t\tif (frozenIndex >= 0) {\n\t\t\t\tthis._frozenEntries.splice(frozenIndex, 1);\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\tget(key: any): V | undefined {\n\t\t\tif (key === undefined || key === null) {\n\t\t\t\treturn undefined;\n\t\t\t}\n\n\t\t\tconst entry: Entry<K, V> = key[this._name];\n\t\t\tif (entry && entry.key === key && entry.value !== DELETED) {\n\t\t\t\treturn entry.value;\n\t\t\t}\n\n\t\t\tconst frozenIndex = this._getFrozenEntryIndex(key);\n\t\t\tif (frozenIndex >= 0) {\n\t\t\t\treturn this._frozenEntries[frozenIndex].value;\n\t\t\t}\n\t\t}\n\n\t\thas(key: any): boolean {\n\t\t\tif (key === undefined || key === null) {\n\t\t\t\treturn false;\n\t\t\t}\n\n\t\t\tconst entry: Entry<K, V> = key[this._name];\n\t\t\tif (Boolean(entry && entry.key === key && entry.value !== DELETED)) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\tconst frozenIndex = this._getFrozenEntryIndex(key);\n\t\t\tif (frozenIndex >= 0) {\n\t\t\t\treturn true;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t}\n\n\t\tset(key: any, value?: any): this {\n\t\t\tif (!key || (typeof key !== 'object' && typeof key !== 'function')) {\n\t\t\t\tthrow new TypeError('Invalid value used as weak map key');\n\t\t\t}\n\t\t\tlet entry: Entry<K, V> = key[this._name];\n\t\t\tif (!entry || entry.key !== key) {\n\t\t\t\tentry = Object.create(null, {\n\t\t\t\t\tkey: { value: key }\n\t\t\t\t});\n\n\t\t\t\tif (Object.isFrozen(key)) {\n\t\t\t\t\tthis._frozenEntries.push(entry);\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty(key, this._name, {\n\t\t\t\t\t\tvalue: entry\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tentry.value = value;\n\t\t\treturn this;\n\t\t}\n\n\t\t[Symbol.toStringTag]: 'WeakMap' = 'WeakMap';\n\t};\n}\n\nexport default WeakMap;\n","`!has('es6-iterator')`;\nimport { isArrayLike, isIterable, Iterable } from './iterator';\nimport has from '../core/has';\nimport { wrapNative } from './support/util';\n\nexport interface MapCallback<T, U> {\n\t/**\n\t * A callback function when mapping\n\t *\n\t * @param element The element that is currently being mapped\n\t * @param index The current index of the element\n\t */\n\t(element: T, index: number): U;\n}\n\nexport interface FindCallback<T> {\n\t/**\n\t * A callback function when using find\n\t *\n\t * @param element The element that is currenty being analysed\n\t * @param index The current index of the element that is being analysed\n\t * @param array The source array\n\t */\n\t(element: T, index: number, array: ArrayLike<T>): boolean;\n}\n\n/* ES6 Array static methods */\n\nexport interface From {\n\t/**\n\t * The Array.from() method creates a new Array instance from an array-like or iterable object.\n\t *\n\t * @param source An array-like or iterable object to convert to an array\n\t * @param mapFunction A map function to call on each element in the array\n\t * @param thisArg The execution context for the map function\n\t * @return The new Array\n\t */\n\t<T, U>(source: ArrayLike<T> | Iterable<T>, mapFunction: MapCallback<T, U>, thisArg?: any): Array<U>;\n\n\t/**\n\t * The Array.from() method creates a new Array instance from an array-like or iterable object.\n\t *\n\t * @param source An array-like or iterable object to convert to an array\n\t * @return The new Array\n\t */\n\t<T>(source: ArrayLike<T> | Iterable<T>): Array<T>;\n}\n\nexport interface Flat {\n\t/**\n\t * Returns a new array with all sub-array elements concatenated into it recursively up to the\n\t * specified depth.\n\t *\n\t * @param depth The maximum recursion depth\n\t */\n\t<U>(\n\t\tarr:\n\t\t\t| ReadonlyArray<U[][][][]>\n\t\t\t| ReadonlyArray<ReadonlyArray<U[][][]>>\n\t\t\t| ReadonlyArray<ReadonlyArray<U[][]>[]>\n\t\t\t| ReadonlyArray<ReadonlyArray<U[]>[][]>\n\t\t\t| ReadonlyArray<ReadonlyArray<U>[][][]>\n\t\t\t| ReadonlyArray<ReadonlyArray<ReadonlyArray<U[][]>>>\n\t\t\t| ReadonlyArray<ReadonlyArray<ReadonlyArray<U>[][]>>\n\t\t\t| ReadonlyArray<ReadonlyArray<ReadonlyArray<U>>[][]>\n\t\t\t| ReadonlyArray<ReadonlyArray<ReadonlyArray<U>[]>[]>\n\t\t\t| ReadonlyArray<ReadonlyArray<ReadonlyArray<U[]>>[]>\n\t\t\t| ReadonlyArray<ReadonlyArray<ReadonlyArray<U[]>[]>>\n\t\t\t| ReadonlyArray<ReadonlyArray<ReadonlyArray<ReadonlyArray<U[]>>>>\n\t\t\t| ReadonlyArray<ReadonlyArray<ReadonlyArray<ReadonlyArray<U>[]>>>\n\t\t\t| ReadonlyArray<ReadonlyArray<ReadonlyArray<ReadonlyArray<U>>[]>>\n\t\t\t| ReadonlyArray<ReadonlyArray<ReadonlyArray<ReadonlyArray<U>>>[]>\n\t\t\t| ReadonlyArray<ReadonlyArray<ReadonlyArray<ReadonlyArray<ReadonlyArray<U>>>>>,\n\t\tdepth: 4\n\t): U[];\n\n\t/**\n\t * Returns a new array with all sub-array elements concatenated into it recursively up to the\n\t * specified depth.\n\t *\n\t * @param depth The maximum recursion depth\n\t */\n\t<U>(\n\t\tarr:\n\t\t\t| ReadonlyArray<U[][][]>\n\t\t\t| ReadonlyArray<ReadonlyArray<U>[][]>\n\t\t\t| ReadonlyArray<ReadonlyArray<U[]>[]>\n\t\t\t| ReadonlyArray<ReadonlyArray<U[][]>>\n\t\t\t| ReadonlyArray<ReadonlyArray<ReadonlyArray<U[]>>>\n\t\t\t| ReadonlyArray<ReadonlyArray<ReadonlyArray<U>[]>>\n\t\t\t| ReadonlyArray<ReadonlyArray<ReadonlyArray<U>>[]>\n\t\t\t| ReadonlyArray<ReadonlyArray<ReadonlyArray<ReadonlyArray<U>>>>,\n\t\tdepth: 3\n\t): U[];\n\n\t/**\n\t * Returns a new array with all sub-array elements concatenated into it recursively up to the\n\t * specified depth.\n\t *\n\t * @param depth The maximum recursion depth\n\t */\n\t<U>(\n\t\tarr:\n\t\t\t| ReadonlyArray<U[][]>\n\t\t\t| ReadonlyArray<ReadonlyArray<U[]>>\n\t\t\t| ReadonlyArray<ReadonlyArray<U>[]>\n\t\t\t| ReadonlyArray<ReadonlyArray<ReadonlyArray<U>>>,\n\t\tdepth: 2\n\t): U[];\n\n\t/**\n\t * Returns a new array with all sub-array elements concatenated into it recursively up to the\n\t * specified depth.\n\t *\n\t * @param depth The maximum recursion depth\n\t */\n\t<U>(arr: ReadonlyArray<U[]> | ReadonlyArray<ReadonlyArray<U>>, depth?: 1): U[];\n\n\t/**\n\t * Returns a new array with all sub-array elements concatenated into it recursively up to the\n\t * specified depth.\n\t *\n\t * @param depth The maximum recursion depth\n\t */\n\t<U>(arr: ReadonlyArray<U>, depth: 0): U[];\n\n\t/**\n\t * Returns a new array with all sub-array elements concatenated into it recursively up to the\n\t * specified depth. If no depth is provided, flat method defaults to the depth of 1.\n\t *\n\t * @param depth The maximum recursion depth\n\t */\n\t<U>(arr: any[], depth?: number): any[];\n}\n\nexport interface FlatMap {\n\t/**\n\t * Calls a defined callback function on each element of an array. Then, flattens the result into\n\t * a new array.\n\t * This is identical to a map followed by flat with depth 1.\n\t *\n\t * @param callback A function that accepts up to three arguments. The flatMap method calls the\n\t * callback function one time for each element in the array.\n\t * @param thisArg An object to which the this keyword can refer in the callback function. If\n\t * thisArg is omitted, undefined is used as the this value.\n\t */\n\t<U, T extends any, This = undefined>(\n\t\tarr: T[],\n\t\tcallback: (this: This, value: T, index: number, array: T[]) => U | ReadonlyArray<U>,\n\t\tthisArg?: This\n\t): U[];\n}\n\nexport let from: From;\n\n/**\n * Creates a new array from the function parameters.\n *\n * @param arguments Any number of arguments for the array\n * @return An array from the given arguments\n */\nexport let of: <T>(...items: T[]) => Array<T>;\n\n/* ES6 Array instance methods */\n\n/**\n * Copies data internally within an array or array-like object.\n *\n * @param target The target array-like object\n * @param offset The index to start copying values to; if negative, it counts backwards from length\n * @param start The first (inclusive) index to copy; if negative, it counts backwards from length\n * @param end The last (exclusive) index to copy; if negative, it counts backwards from length\n * @return The target\n */\nexport let copyWithin: <T>(target: ArrayLike<T>, offset: number, start: number, end?: number) => ArrayLike<T>;\n\n/**\n * Fills elements of an array-like object with the specified value.\n *\n * @param target The target to fill\n * @param value The value to fill each element of the target with\n * @param start The first index to fill\n * @param end The (exclusive) index at which to stop filling\n * @return The filled target\n */\nexport let fill: <T>(target: ArrayLike<T>, value: T, start?: number, end?: number) => ArrayLike<T>;\n\n/**\n * Finds and returns the first instance matching the callback or undefined if one is not found.\n *\n * @param target An array-like object\n * @param callback A function returning if the current value matches a criteria\n * @param thisArg The execution context for the find function\n * @return The first element matching the callback, or undefined if one does not exist\n */\nexport let find: <T>(target: ArrayLike<T>, callback: FindCallback<T>, thisArg?: {}) => T | undefined;\n\n/**\n * Performs a linear search and returns the first index whose value satisfies the passed callback,\n * or -1 if no values satisfy it.\n *\n * @param target An array-like object\n * @param callback A function returning true if the current value satisfies its criteria\n * @param thisArg The execution context for the find function\n * @return The first index whose value satisfies the passed callback, or -1 if no values satisfy it\n */\nexport let findIndex: <T>(target: ArrayLike<T>, callback: FindCallback<T>, thisArg?: {}) => number;\n\n/* ES7 Array instance methods */\n\n/**\n * Determines whether an array includes a given value\n *\n * @param target the target array-like object\n * @param searchElement the item to search for\n * @param fromIndex the starting index to search from\n * @return `true` if the array includes the element, otherwise `false`\n */\nexport let includes: <T>(target: ArrayLike<T>, searchElement: T, fromIndex?: number) => boolean;\n\n/**\n * Flattens arrays to the depth specified\n *\n * @param target An array-like object\n * @param depth The depth to flatten too, defaults to 1.\n */\nexport let flat: Flat;\n\nexport let flatMap: FlatMap;\n\n// Util functions for filled implementations\n\nlet toLength: any;\nlet toInteger: any;\nlet normalizeOffset: any;\n\nif (!has('es6-array') || !has('es6-array-fill') || !has('es7-array')) {\n\tconst MAX_SAFE_INTEGER = Math.pow(2, 53) - 1;\n\n\t/**\n\t * Ensures a non-negative, non-infinite, safe integer.\n\t *\n\t * @param length The number to validate\n\t * @return A proper length\n\t */\n\ttoLength = function toLength(length: number): number {\n\t\tif (isNaN(length)) {\n\t\t\treturn 0;\n\t\t}\n\n\t\tlength = Number(length);\n\t\tif (isFinite(length)) {\n\t\t\tlength = Math.floor(length);\n\t\t}\n\t\t// Ensure a non-negative, real, safe integer\n\t\treturn Math.min(Math.max(length, 0), MAX_SAFE_INTEGER);\n\t};\n\n\t/**\n\t * From ES6 7.1.4 ToInteger()\n\t *\n\t * @param value A value to convert\n\t * @return An integer\n\t */\n\ttoInteger = function toInteger(value: any): number {\n\t\tvalue = Number(value);\n\t\tif (isNaN(value)) {\n\t\t\treturn 0;\n\t\t}\n\t\tif (value === 0 || !isFinite(value)) {\n\t\t\treturn value;\n\t\t}\n\n\t\treturn (value > 0 ? 1 : -1) * Math.floor(Math.abs(value));\n\t};\n\n\t/**\n\t * Normalizes an offset against a given length, wrapping it if negative.\n\t *\n\t * @param value The original offset\n\t * @param length The total length to normalize against\n\t * @return If negative, provide a distance from the end (length); otherwise provide a distance from 0\n\t */\n\tnormalizeOffset = function normalizeOffset(value: number, length: number): number {\n\t\treturn value < 0 ? Math.max(length + value, 0) : Math.min(value, length);\n\t};\n}\n\nif (!has('es6-array')) {\n\tArray.from = function from(\n\t\tthis: ArrayConstructor,\n\t\tarrayLike: Iterable<any> | ArrayLike<any>,\n\t\tmapFunction?: MapCallback<any, any>,\n\t\tthisArg?: any\n\t): Array<any> {\n\t\tif (arrayLike == null) {\n\t\t\tthrow new TypeError('from: requires an array-like object');\n\t\t}\n\n\t\tif (mapFunction && thisArg) {\n\t\t\tmapFunction = mapFunction.bind(thisArg);\n\t\t}\n\n\t\t/* tslint:disable-next-line:variable-name */\n\t\tconst Constructor = this;\n\t\tconst length: number = toLength((arrayLike as any).length);\n\n\t\t// Support extension\n\t\tconst array: any[] =\n\t\t\ttypeof Constructor === 'function' ? <any[]>Object(new Constructor(length)) : new Array(length);\n\n\t\tif (!isArrayLike(arrayLike) && !isIterable(arrayLike)) {\n\t\t\treturn array;\n\t\t}\n\n\t\t// if this is an array and the normalized length is 0, just return an empty array. this prevents a problem\n\t\t// with the iteration on IE when using a NaN array length.\n\t\tif (isArrayLike(arrayLike)) {\n\t\t\tif (length === 0) {\n\t\t\t\treturn [];\n\t\t\t}\n\n\t\t\tfor (let i = 0; i < arrayLike.length; i++) {\n\t\t\t\tarray[i] = mapFunction ? mapFunction(arrayLike[i], i) : arrayLike[i];\n\t\t\t}\n\t\t} else {\n\t\t\tlet i = 0;\n\t\t\tfor (const value of arrayLike) {\n\t\t\t\tarray[i] = mapFunction ? mapFunction(value, i) : value;\n\t\t\t\ti++;\n\t\t\t}\n\t\t}\n\n\t\tif ((arrayLike as any).length !== undefined) {\n\t\t\tarray.length = length;\n\t\t}\n\n\t\treturn array;\n\t};\n\n\tArray.of = function of<T>(...items: T[]): Array<T> {\n\t\treturn Array.prototype.slice.call(items);\n\t};\n\n\tArray.prototype.copyWithin = function copyWithin(offset: number, start: number, end?: number) {\n\t\tif (this == null) {\n\t\t\tthrow new TypeError('copyWithin: target must be an array-like object');\n\t\t}\n\n\t\tconst length = toLength(this.length);\n\t\toffset = normalizeOffset(toInteger(offset), length);\n\t\tstart = normalizeOffset(toInteger(start), length);\n\t\tend = normalizeOffset(end === undefined ? length : toInteger(end), length);\n\t\tlet count = Math.min(end! - start, length - offset);\n\n\t\tlet direction = 1;\n\t\tif (offset > start && offset < start + count) {\n\t\t\tdirection = -1;\n\t\t\tstart += count - 1;\n\t\t\toffset += count - 1;\n\t\t}\n\n\t\twhile (count > 0) {\n\t\t\tif (start in this) {\n\t\t\t\tthis[offset] = this[start];\n\t\t\t} else {\n\t\t\t\tdelete this[offset];\n\t\t\t}\n\n\t\t\toffset += direction;\n\t\t\tstart += direction;\n\t\t\tcount--;\n\t\t}\n\n\t\treturn this;\n\t};\n\n\ttype Predicate = (this: {} | void, value: any, index: number, obj: any[]) => boolean;\n\n\tArray.prototype.find = function find(callback: Predicate, thisArg?: {}) {\n\t\tconst index = this.findIndex(callback, thisArg);\n\t\treturn index !== -1 ? this[index] : undefined;\n\t};\n\n\tArray.prototype.findIndex = function findIndex(callback: Predicate, thisArg?: {}): number {\n\t\tconst length = toLength(this.length);\n\n\t\tif (!callback) {\n\t\t\tthrow new TypeError('find: second argument must be a function');\n\t\t}\n\n\t\tif (thisArg) {\n\t\t\tcallback = callback.bind(thisArg);\n\t\t}\n\n\t\tfor (let i = 0; i < length; i++) {\n\t\t\tif (callback(this[i], i, this)) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\n\t\treturn -1;\n\t};\n}\n\nif (!has('es6-array-fill')) {\n\tArray.prototype.fill = function fill(value: any, start?: number, end?: number) {\n\t\tconst length = toLength(this.length);\n\t\tlet i = normalizeOffset(toInteger(start), length);\n\t\tend = normalizeOffset(end === undefined ? length : toInteger(end), length);\n\n\t\twhile (i < (end || 0)) {\n\t\t\tthis[i++] = value;\n\t\t}\n\n\t\treturn this;\n\t};\n}\n\nif (!has('es7-array')) {\n\tArray.prototype.includes = function includes(searchElement, fromIndex = 0) {\n\t\tlet len = toLength(this.length);\n\n\t\tfor (let i = fromIndex; i < len; ++i) {\n\t\t\tconst currentElement = this[i];\n\t\t\tif (\n\t\t\t\tsearchElement === currentElement ||\n\t\t\t\t(searchElement !== searchElement && currentElement !== currentElement)\n\t\t\t) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t};\n}\n\nif (!has('es2019-array')) {\n\tArray.prototype.flat = function flat(depth: number = 1) {\n\t\treturn depth > 0\n\t\t\t? this.reduce((acc, val) => acc.concat(Array.isArray(val) ? val.flat(depth - 1) : val), [])\n\t\t\t: this.slice();\n\t};\n\n\tArray.prototype.flatMap = function flatMap(callback: any) {\n\t\treturn this.map(callback).flat();\n\t};\n}\n\nfrom = Array.from;\nof = Array.of;\ncopyWithin = wrapNative(Array.prototype.copyWithin);\nfill = wrapNative(Array.prototype.fill);\nfind = wrapNative(Array.prototype.find);\nflat = wrapNative(Array.prototype.flat) as any;\nflatMap = wrapNative(Array.prototype.flatMap) as any;\nfindIndex = wrapNative(Array.prototype.findIndex);\nincludes = wrapNative(Array.prototype.includes);\n\nexport default Array;\n","`!has('dom-css-variables')`;\nimport * as cssVars from 'css-vars-ponyfill';\n\nexport default (typeof cssVars !== 'undefined' && typeof cssVars.default === 'function'\n\t? cssVars.default\n\t: ((() => {}) as typeof cssVars.default));\n","`!has('es6-symbol')`;\nimport './Symbol';\nimport { HIGH_SURROGATE_MAX, HIGH_SURROGATE_MIN } from './string';\n\nexport interface IteratorResult<T> {\n\treadonly done: boolean;\n\treadonly value: T;\n}\n\nexport interface Iterator<T> {\n\tnext(value?: any): IteratorResult<T>;\n\n\treturn?(value?: any): IteratorResult<T>;\n\n\tthrow?(e?: any): IteratorResult<T>;\n}\n\nexport interface Iterable<T> {\n\t[Symbol.iterator](): Iterator<T>;\n}\n\nexport interface IterableIterator<T> extends Iterator<T> {\n\t[Symbol.iterator](): IterableIterator<T>;\n}\n\nconst staticDone: IteratorResult<any> = { done: true, value: undefined };\n\n/**\n * A class that _shims_ an iterator interface on array like objects.\n */\nexport class ShimIterator<T> {\n\tprivate _list: ArrayLike<T> | undefined;\n\tprivate _nextIndex = -1;\n\tprivate _nativeIterator: Iterator<T> | undefined;\n\n\tconstructor(list: ArrayLike<T> | Iterable<T>) {\n\t\tif (isIterable(list)) {\n\t\t\tthis._nativeIterator = list[Symbol.iterator]();\n\t\t} else {\n\t\t\tthis._list = list;\n\t\t}\n\t}\n\n\t/**\n\t * Return the next iteration result for the Iterator\n\t */\n\tnext(): IteratorResult<T> {\n\t\tif (this._nativeIterator) {\n\t\t\treturn this._nativeIterator.next();\n\t\t}\n\t\tif (!this._list) {\n\t\t\treturn staticDone;\n\t\t}\n\t\tif (++this._nextIndex < this._list.length) {\n\t\t\treturn {\n\t\t\t\tdone: false,\n\t\t\t\tvalue: this._list[this._nextIndex]\n\t\t\t};\n\t\t}\n\t\treturn staticDone;\n\t}\n\n\t[Symbol.iterator](): IterableIterator<T> {\n\t\treturn this;\n\t}\n}\n\n/**\n * A type guard for checking if something has an Iterable interface\n *\n * @param value The value to type guard against\n */\nexport function isIterable(value: any): value is Iterable<any> {\n\treturn value && typeof value[Symbol.iterator] === 'function';\n}\n\n/**\n * A type guard for checking if something is ArrayLike\n *\n * @param value The value to type guard against\n */\nexport function isArrayLike(value: any): value is ArrayLike<any> {\n\treturn value && typeof value.length === 'number';\n}\n\n/**\n * Returns the iterator for an object\n *\n * @param iterable The iterable object to return the iterator for\n */\nexport function get<T>(iterable: Iterable<T> | ArrayLike<T>): Iterator<T> | undefined {\n\tif (isIterable(iterable)) {\n\t\treturn iterable[Symbol.iterator]();\n\t} else if (isArrayLike(iterable)) {\n\t\treturn new ShimIterator(iterable);\n\t}\n}\n\nexport interface ForOfCallback<T> {\n\t/**\n\t * A callback function for a forOf() iteration\n\t *\n\t * @param value The current value\n\t * @param object The object being iterated over\n\t * @param doBreak A function, if called, will stop the iteration\n\t */\n\t(value: T, object: Iterable<T> | ArrayLike<T> | string, doBreak: () => void): void;\n}\n\n/**\n * Shims the functionality of `for ... of` blocks\n *\n * @param iterable The object the provides an iterator interface\n * @param callback The callback which will be called for each item of the iterable\n * @param thisArg Optional scope to pass the callback\n */\nexport function forOf<T>(\n\titerable: Iterable<T> | ArrayLike<T> | string,\n\tcallback: ForOfCallback<T | string>,\n\tthisArg?: any\n): void {\n\tlet broken = false;\n\n\tfunction doBreak() {\n\t\tbroken = true;\n\t}\n\n\t/* We need to handle iteration of double byte strings properly */\n\tif (isArrayLike(iterable) && typeof iterable === 'string') {\n\t\tconst l = iterable.length;\n\t\tfor (let i = 0; i < l; ++i) {\n\t\t\tlet char = iterable[i];\n\t\t\tif (i + 1 < l) {\n\t\t\t\tconst code = char.charCodeAt(0);\n\t\t\t\tif (code >= HIGH_SURROGATE_MIN && code <= HIGH_SURROGATE_MAX) {\n\t\t\t\t\tchar += iterable[++i];\n\t\t\t\t}\n\t\t\t}\n\t\t\tcallback.call(thisArg, char, iterable, doBreak);\n\t\t\tif (broken) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tconst iterator = get(iterable);\n\t\tif (iterator) {\n\t\t\tlet result = iterator.next();\n\n\t\t\twhile (!result.done) {\n\t\t\t\tcallback.call(thisArg, result.value, iterable, doBreak);\n\t\t\t\tif (broken) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\tresult = iterator.next();\n\t\t\t}\n\t\t}\n\t}\n}\n","import has from '../core/has';\n\nexport interface ObjectAssign {\n\t/**\n\t * Copy the values of all of the enumerable own properties from one or more source objects to a\n\t * target object. Returns the target object.\n\t * @param target The target object to copy to.\n\t * @param source The source object from which to copy properties.\n\t */\n\t<T, U>(target: T, source: U): T & U;\n\n\t/**\n\t * Copy the values of all of the enumerable own properties from one or more source objects to a\n\t * target object. Returns the target object.\n\t * @param target The target object to copy to.\n\t * @param source1 The first source object from which to copy properties.\n\t * @param source2 The second source object from which to copy properties.\n\t */\n\t<T, U, V>(target: T, source1: U, source2: V): T & U & V;\n\n\t/**\n\t * Copy the values of all of the enumerable own properties from one or more source objects to a\n\t * target object. Returns the target object.\n\t * @param target The target object to copy to.\n\t * @param source1 The first source object from which to copy properties.\n\t * @param source2 The second source object from which to copy properties.\n\t * @param source3 The third source object from which to copy properties.\n\t */\n\t<T, U, V, W>(target: T, source1: U, source2: V, source3: W): T & U & V & W;\n\n\t/**\n\t * Copy the values of all of the enumerable own properties from one or more source objects to a\n\t * target object. Returns the target object.\n\t * @param target The target object to copy to.\n\t * @param sources One or more source objects from which to copy properties\n\t */\n\t(target: object, ...sources: any[]): any;\n}\n\nexport interface ObjectEnteries {\n\t/**\n\t * Returns an array of key/values of the enumerable properties of an object\n\t * @param o Object that contains the properties and methods. This can be an object that you created or an existing Document Object Model (DOM) object.\n\t */\n\t<T extends { [key: string]: any }, K extends keyof T>(o: T): [keyof T, T[K]][];\n\n\t/**\n\t * Returns an array of key/values of the enumerable properties of an object\n\t * @param o Object that contains the properties and methods. This can be an object that you created or an existing Document Object Model (DOM) object.\n\t */\n\t(o: object): [string, any][];\n}\n\nexport interface ObjectGetOwnPropertyDescriptors {\n\t<T>(o: T): { [K in keyof T]: PropertyDescriptor };\n\t(o: any): { [key: string]: PropertyDescriptor };\n}\n\nexport interface ObjectValues {\n\t/**\n\t * Returns an array of values of the enumerable properties of an object\n\t * @param o Object that contains the properties and methods. This can be an object that you created or an existing Document Object Model (DOM) object.\n\t */\n\t<T>(o: { [s: string]: T }): T[];\n\n\t/**\n\t * Returns an array of values of the enumerable properties of an object\n\t * @param o Object that contains the properties and methods. This can be an object that you created or an existing Document Object Model (DOM) object.\n\t */\n\t(o: object): any[];\n}\n\nexport let assign: ObjectAssign;\n\n/**\n * Gets the own property descriptor of the specified object.\n * An own property descriptor is one that is defined directly on the object and is not\n * inherited from the object's prototype.\n * @param o Object that contains the property.\n * @param p Name of the property.\n */\nexport let getOwnPropertyDescriptor: <T, K extends keyof T>(o: T, propertyKey: K) => PropertyDescriptor | undefined;\n\n/**\n * Returns the names of the own properties of an object. The own properties of an object are those that are defined directly\n * on that object, and are not inherited from the object's prototype. The properties of an object include both fields (objects) and functions.\n * @param o Object that contains the own properties.\n */\nexport let getOwnPropertyNames: (o: any) => string[];\n\n/**\n * Returns an array of all symbol properties found directly on object o.\n * @param o Object to retrieve the symbols from.\n */\nexport let getOwnPropertySymbols: (o: any) => symbol[];\n\n/**\n * Returns true if the values are the same value, false otherwise.\n * @param value1 The first value.\n * @param value2 The second value.\n */\nexport let is: (value1: any, value2: any) => boolean;\n\n/**\n * Returns the names of the enumerable properties and methods of an object.\n * @param o Object that contains the properties and methods. This can be an object that you created or an existing Document Object Model (DOM) object.\n */\nexport let keys: (o: object) => string[];\n\n/* ES7 Object static methods */\n\nexport let getOwnPropertyDescriptors: ObjectGetOwnPropertyDescriptors;\n\nexport let entries: ObjectEnteries;\n\nexport let values: ObjectValues;\n\nif (!has('es6-object')) {\n\tconst keys = Object.keys.bind(Object);\n\tObject.keys = function symbolAwareKeys(o: object): string[] {\n\t\treturn keys(o).filter((key) => !Boolean(key.match(/^@@.+/)));\n\t};\n\n\tObject.assign = function assign(target: any, ...sources: any[]) {\n\t\tif (target == null) {\n\t\t\t// TypeError if undefined or null\n\t\t\tthrow new TypeError('Cannot convert undefined or null to object');\n\t\t}\n\n\t\tconst to = Object(target);\n\t\tsources.forEach((nextSource) => {\n\t\t\tif (nextSource) {\n\t\t\t\t// Skip over if undefined or null\n\t\t\t\tkeys(nextSource).forEach((nextKey) => {\n\t\t\t\t\tto[nextKey] = nextSource[nextKey];\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\n\t\treturn to;\n\t};\n\n\tconst getOwnPropertyNames = Object.getOwnPropertyNames.bind(Object);\n\tObject.getOwnPropertyNames = function symbolAwareGetOwnPropertyNames(o: any): string[] {\n\t\treturn getOwnPropertyNames(o).filter((key) => !Boolean(key.match(/^@@.+/)));\n\t};\n\n\tObject.getOwnPropertySymbols = function getOwnPropertySymbols(o: any): symbol[] {\n\t\treturn getOwnPropertyNames(o)\n\t\t\t.filter((key) => Boolean(key.match(/^@@.+/)))\n\t\t\t.map((key) => Symbol.for(key.substring(2)));\n\t};\n\n\tObject.is = function is(value1: any, value2: any): boolean {\n\t\tif (value1 === value2) {\n\t\t\treturn value1 !== 0 || 1 / value1 === 1 / value2; // -0\n\t\t}\n\t\treturn value1 !== value1 && value2 !== value2; // NaN\n\t};\n}\n\nif (!has('es2017-object')) {\n\tObject.getOwnPropertyDescriptors = function getOwnPropertyDescriptors<T>(\n\t\to: T\n\t): { [P in keyof T]: TypedPropertyDescriptor<T[P]> } & { [x: string]: PropertyDescriptor } {\n\t\treturn Object.getOwnPropertyNames(o).reduce(\n\t\t\t(previous, key) => {\n\t\t\t\tprevious[key] = Object.getOwnPropertyDescriptor(o, key)!;\n\t\t\t\treturn previous;\n\t\t\t},\n\t\t\t{} as { [x: string]: PropertyDescriptor }\n\t\t) as { [P in keyof T]: TypedPropertyDescriptor<T[P]> } & { [x: string]: PropertyDescriptor };\n\t};\n\n\tObject.entries = function entries(o: any): [string, any][] {\n\t\treturn keys(o).map((key) => [key, o[key]] as [string, any]);\n\t};\n\n\tObject.values = function values(o: any): any[] {\n\t\treturn keys(o).map((key) => o[key]);\n\t};\n}\n\nassign = Object.assign;\ngetOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\ngetOwnPropertyNames = Object.getOwnPropertyNames;\ngetOwnPropertySymbols = Object.getOwnPropertySymbols;\nis = Object.is;\nkeys = Object.keys;\ngetOwnPropertyDescriptors = Object.getOwnPropertyDescriptors;\nentries = Object.entries;\nvalues = Object.values;\n\nexport default Object;\n","import has from '../core/has';\nimport { wrapNative } from './support/util';\n\nexport interface StringNormalize {\n\t/**\n\t * Returns the String value result of normalizing the string into the normalization form\n\t * named by form as specified in Unicode Standard Annex #15, Unicode Normalization Forms.\n\t * @param target The target string\n\t * @param form Applicable values: \"NFC\", \"NFD\", \"NFKC\", or \"NFKD\", If not specified default\n\t * is \"NFC\"\n\t */\n\t(target: string, form: 'NFC' | 'NFD' | 'NFKC' | 'NFKD'): string;\n\n\t/**\n\t * Returns the String value result of normalizing the string into the normalization form\n\t * named by form as specified in Unicode Standard Annex #15, Unicode Normalization Forms.\n\t * @param target The target string\n\t * @param form Applicable values: \"NFC\", \"NFD\", \"NFKC\", or \"NFKD\", If not specified default\n\t * is \"NFC\"\n\t */\n\t(target: string, form?: string): string;\n}\n\n/**\n * The minimum location of high surrogates\n */\nexport const HIGH_SURROGATE_MIN = 0xd800;\n\n/**\n * The maximum location of high surrogates\n */\nexport const HIGH_SURROGATE_MAX = 0xdbff;\n\n/**\n * The minimum location of low surrogates\n */\nexport const LOW_SURROGATE_MIN = 0xdc00;\n\n/**\n * The maximum location of low surrogates\n */\nexport const LOW_SURROGATE_MAX = 0xdfff;\n\n/* ES6 static methods */\n\n/**\n * Return the String value whose elements are, in order, the elements in the List elements.\n * If length is 0, the empty string is returned.\n * @param codePoints The code points to generate the string\n */\nexport let fromCodePoint: (...codePoints: number[]) => string;\n\n/**\n * `raw` is intended for use as a tag function of a Tagged Template String. When called\n * as such the first argument will be a well formed template call site object and the rest\n * parameter will contain the substitution values.\n * @param template A well-formed template string call site representation.\n * @param substitutions A set of substitution values.\n */\nexport let raw: (template: TemplateStringsArray, ...substitutions: any[]) => string;\n\n/* ES6 instance methods */\n\n/**\n * Returns a nonnegative integer Number less than 1114112 (0x110000) that is the code point\n * value of the UTF-16 encoded code point starting at the string element at position pos in\n * the String resulting from converting this object to a String.\n * If there is no element at that position, the result is undefined.\n * If a valid UTF-16 surrogate pair does not begin at pos, the result is the code unit at pos.\n */\nexport let codePointAt: (target: string, pos: number) => number | undefined;\n\n/**\n * Returns true if the sequence of elements of searchString converted to a String is the\n * same as the corresponding elements of this object (converted to a String) starting at\n * endPosition – length(this). Otherwise returns false.\n */\nexport let endsWith: (target: string, searchString: string, endPosition?: number) => boolean;\n\n/**\n * Returns true if searchString appears as a substring of the result of converting this\n * object to a String, at one or more positions that are\n * greater than or equal to position; otherwise, returns false.\n * @param target The target string\n * @param searchString search string\n * @param position If position is undefined, 0 is assumed, so as to search all of the String.\n */\nexport let includes: (target: string, searchString: string, position?: number) => boolean;\n\n/**\n * Returns the String value result of normalizing the string into the normalization form\n * named by form as specified in Unicode Standard Annex #15, Unicode Normalization Forms.\n * @param target The target string\n * @param form Applicable values: \"NFC\", \"NFD\", \"NFKC\", or \"NFKD\", If not specified default\n * is \"NFC\"\n */\nexport let normalize: StringNormalize;\n\n/**\n * Returns a String value that is made from count copies appended together. If count is 0,\n * T is the empty String is returned.\n * @param count number of copies to append\n */\nexport let repeat: (target: string, count: number) => string;\n\n/**\n * Returns true if the sequence of elements of searchString converted to a String is the\n * same as the corresponding elements of this object (converted to a String) starting at\n * position. Otherwise returns false.\n */\nexport let startsWith: (target: string, searchString: string, position?: number) => boolean;\n\n/* ES7 instance methods */\n\n/**\n * Pads the current string with a given string (possibly repeated) so that the resulting string reaches a given length.\n * The padding is applied from the end (right) of the current string.\n *\n * @param target The target string\n * @param maxLength The length of the resulting string once the current string has been padded.\n * If this parameter is smaller than the current string's length, the current string will be returned as it is.\n *\n * @param fillString The string to pad the current string with.\n * If this string is too long, it will be truncated and the left-most part will be applied.\n * The default value for this parameter is \" \" (U+0020).\n */\nexport let padEnd: (target: string, maxLength: number, fillString?: string) => string;\n\n/**\n * Pads the current string with a given string (possibly repeated) so that the resulting string reaches a given length.\n * The padding is applied from the start (left) of the current string.\n *\n * @param target The target string\n * @param maxLength The length of the resulting string once the current string has been padded.\n * If this parameter is smaller than the current string's length, the current string will be returned as it is.\n *\n * @param fillString The string to pad the current string with.\n * If this string is too long, it will be truncated and the left-most part will be applied.\n * The default value for this parameter is \" \" (U+0020).\n */\nexport let padStart: (target: string, maxLength: number, fillString?: string) => string;\n\nif (!has('es6-string')) {\n\t/**\n\t * Validates that text is defined, and normalizes position (based on the given default if the input is NaN).\n\t * Used by startsWith, includes, and endsWith.\n\t *\n\t * @return Normalized position.\n\t */\n\tconst normalizeSubstringArgs = function(\n\t\tname: string,\n\t\ttext: string,\n\t\tsearch: string,\n\t\tposition: number,\n\t\tisEnd: boolean = false\n\t): [string, string, number] {\n\t\tif (text == null) {\n\t\t\tthrow new TypeError('string.' + name + ' requires a valid string to search against.');\n\t\t}\n\n\t\tconst length = text.length;\n\t\tposition = position !== position ? (isEnd ? length : 0) : position;\n\t\treturn [text, String(search), Math.min(Math.max(position, 0), length)];\n\t};\n\n\tString.fromCodePoint = function fromCodePoint(...codePoints: number[]): string {\n\t\t// Adapted from https://github.com/mathiasbynens/String.fromCodePoint\n\t\tconst length = arguments.length;\n\t\tif (!length) {\n\t\t\treturn '';\n\t\t}\n\n\t\tconst fromCharCode = String.fromCharCode;\n\t\tconst MAX_SIZE = 0x4000;\n\t\tlet codeUnits: number[] = [];\n\t\tlet index = -1;\n\t\tlet result = '';\n\n\t\twhile (++index < length) {\n\t\t\tlet codePoint = Number(arguments[index]);\n\n\t\t\t// Code points must be finite integers within the valid range\n\t\t\tlet isValid =\n\t\t\t\tisFinite(codePoint) && Math.floor(codePoint) === codePoint && codePoint >= 0 && codePoint <= 0x10ffff;\n\t\t\tif (!isValid) {\n\t\t\t\tthrow RangeError('string.fromCodePoint: Invalid code point ' + codePoint);\n\t\t\t}\n\n\t\t\tif (codePoint <= 0xffff) {\n\t\t\t\t// BMP code point\n\t\t\t\tcodeUnits.push(codePoint);\n\t\t\t} else {\n\t\t\t\t// Astral code point; split in surrogate halves\n\t\t\t\t// https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n\t\t\t\tcodePoint -= 0x10000;\n\t\t\t\tlet highSurrogate = (codePoint >> 10) + HIGH_SURROGATE_MIN;\n\t\t\t\tlet lowSurrogate = (codePoint % 0x400) + LOW_SURROGATE_MIN;\n\t\t\t\tcodeUnits.push(highSurrogate, lowSurrogate);\n\t\t\t}\n\n\t\t\tif (index + 1 === length || codeUnits.length > MAX_SIZE) {\n\t\t\t\tresult += fromCharCode.apply(null, codeUnits);\n\t\t\t\tcodeUnits.length = 0;\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t};\n\n\tString.prototype.codePointAt = function codePointAt(position: number = 0): number | undefined {\n\t\t// Adapted from https://github.com/mathiasbynens/String.prototype.codePointAt\n\t\tif (this == null) {\n\t\t\tthrow new TypeError('string.codePointAt requries a valid string.');\n\t\t}\n\t\tconst length = this.length;\n\n\t\tif (position !== position) {\n\t\t\tposition = 0;\n\t\t}\n\t\tif (position < 0 || position >= length) {\n\t\t\treturn undefined;\n\t\t}\n\n\t\t// Get the first code unit\n\t\tconst first = this.charCodeAt(position);\n\t\tif (first >= HIGH_SURROGATE_MIN && first <= HIGH_SURROGATE_MAX && length > position + 1) {\n\t\t\t// Start of a surrogate pair (high surrogate and there is a next code unit); check for low surrogate\n\t\t\t// https://mathiasbynens.be/notes/javascript-encoding#surrogate-formulae\n\t\t\tconst second = this.charCodeAt(position + 1);\n\t\t\tif (second >= LOW_SURROGATE_MIN && second <= LOW_SURROGATE_MAX) {\n\t\t\t\treturn (first - HIGH_SURROGATE_MIN) * 0x400 + second - LOW_SURROGATE_MIN + 0x10000;\n\t\t\t}\n\t\t}\n\t\treturn first;\n\t};\n\n\tString.prototype.endsWith = function endsWith(search: string, endPosition?: number): boolean {\n\t\tlet text = this.toString();\n\t\tif (search === '') {\n\t\t\treturn true;\n\t\t}\n\n\t\tif (typeof endPosition === 'undefined') {\n\t\t\tendPosition = text.length;\n\t\t} else if (endPosition === null || isNaN(endPosition)) {\n\t\t\treturn false;\n\t\t}\n\n\t\t[text, search, endPosition] = normalizeSubstringArgs('endsWith', text, search, endPosition, true);\n\n\t\tconst start = endPosition - search.length;\n\t\tif (start < 0) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn text.slice(start, endPosition) === search;\n\t};\n\n\tString.prototype.includes = function includes(search: string, position: number = 0): boolean {\n\t\tlet text = this.toString();\n\t\t[text, search, position] = normalizeSubstringArgs('includes', text, search, position);\n\t\treturn text.indexOf(search, position) !== -1;\n\t};\n\n\tString.prototype.repeat = function repeat(count: number = 0): string {\n\t\t// Adapted from https://github.com/mathiasbynens/String.prototype.repeat\n\t\tlet text = this.toString();\n\t\tif (text == null) {\n\t\t\tthrow new TypeError('string.repeat requires a valid string.');\n\t\t}\n\t\tif (count !== count) {\n\t\t\tcount = 0;\n\t\t}\n\t\tif (count < 0 || count === Infinity) {\n\t\t\tthrow new RangeError('string.repeat requires a non-negative finite count.');\n\t\t}\n\n\t\tlet result = '';\n\t\twhile (count) {\n\t\t\tif (count % 2) {\n\t\t\t\tresult += text;\n\t\t\t}\n\t\t\tif (count > 1) {\n\t\t\t\ttext += text;\n\t\t\t}\n\t\t\tcount >>= 1;\n\t\t}\n\t\treturn result;\n\t};\n\n\tString.prototype.startsWith = function startsWith(search: string, position: number = 0): boolean {\n\t\tlet text = this.toString();\n\t\tsearch = String(search);\n\t\t[text, search, position] = normalizeSubstringArgs('startsWith', text, search, position);\n\n\t\tconst end = position + search.length;\n\t\tif (end > text.length) {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn text.slice(position, end) === search;\n\t};\n}\n\nif (!has('es6-string-raw')) {\n\tString.raw = function raw(callSite: TemplateStringsArray, ...substitutions: any[]): string {\n\t\tlet rawStrings = callSite.raw;\n\t\tlet result = '';\n\t\tlet numSubstitutions = substitutions.length;\n\n\t\tif (callSite == null || callSite.raw == null) {\n\t\t\tthrow new TypeError('string.raw requires a valid callSite object with a raw value');\n\t\t}\n\n\t\tfor (let i = 0, length = rawStrings.length; i < length; i++) {\n\t\t\tresult += rawStrings[i] + (i < numSubstitutions && i < length - 1 ? substitutions[i] : '');\n\t\t}\n\n\t\treturn result;\n\t};\n}\n\nif (!has('es2017-string')) {\n\tString.prototype.padEnd = function padEnd(maxLength: number, fillString: string = ' '): string {\n\t\tif (this === null || this === undefined) {\n\t\t\tthrow new TypeError('string.repeat requires a valid string.');\n\t\t}\n\n\t\tif (maxLength === Infinity) {\n\t\t\tthrow new RangeError('string.padEnd requires a non-negative finite count.');\n\t\t}\n\n\t\tif (maxLength === null || maxLength === undefined || maxLength < 0) {\n\t\t\tmaxLength = 0;\n\t\t}\n\n\t\tlet strText = String(this);\n\t\tconst padding = maxLength - strText.length;\n\n\t\tif (padding > 0) {\n\t\t\tstrText +=\n\t\t\t\trepeat(fillString, Math.floor(padding / fillString.length)) +\n\t\t\t\tfillString.slice(0, padding % fillString.length);\n\t\t}\n\n\t\treturn strText;\n\t};\n\n\tString.prototype.padStart = function padStart(maxLength: number, fillString: string = ' '): string {\n\t\tif (this === null || this === undefined) {\n\t\t\tthrow new TypeError('string.repeat requires a valid string.');\n\t\t}\n\n\t\tif (maxLength === Infinity) {\n\t\t\tthrow new RangeError('string.padStart requires a non-negative finite count.');\n\t\t}\n\n\t\tif (maxLength === null || maxLength === undefined || maxLength < 0) {\n\t\t\tmaxLength = 0;\n\t\t}\n\n\t\tlet strText = String(this);\n\t\tconst padding = maxLength - strText.length;\n\n\t\tif (padding > 0) {\n\t\t\tstrText =\n\t\t\t\trepeat(fillString, Math.floor(padding / fillString.length)) +\n\t\t\t\tfillString.slice(0, padding % fillString.length) +\n\t\t\t\tstrText;\n\t\t}\n\n\t\treturn strText;\n\t};\n}\n\nfromCodePoint = String.fromCodePoint;\nraw = String.raw;\n\ncodePointAt = wrapNative(String.prototype.codePointAt);\nendsWith = wrapNative(String.prototype.endsWith);\nincludes = wrapNative(String.prototype.includes);\nnormalize = wrapNative(String.prototype.normalize);\nrepeat = wrapNative(String.prototype.repeat);\nstartsWith = wrapNative(String.prototype.startsWith);\npadEnd = wrapNative(String.prototype.padEnd);\npadStart = wrapNative(String.prototype.padStart);\n\nexport default String;\n","import * as css from '../theme/default/header.m.css';\nimport theme from '../middleware/theme';\nimport { RenderResult } from '@dojo/framework/core/interfaces';\nimport { create, tsx } from '@dojo/framework/core/vdom';\n\nexport interface HeaderProperties {\n\t/** Determines if this header is fixed */\n\tsticky?: boolean;\n}\n\nexport type HeaderChildren = {\n\t/** Renderer for leading elements like icons */\n\tleading?: RenderResult;\n\t/** Renderer for the header title */\n\ttitle: RenderResult;\n\t/** Renderer for header actions like links */\n\tactions?: RenderResult;\n\t/** Renderer for trailing elements like search inputs */\n\ttrailing?: RenderResult;\n};\n\nconst factory = create({ theme })\n\t.properties<HeaderProperties>()\n\t.children<HeaderChildren>();\n\nexport const Header = factory(function Header({ children, properties, middleware: { theme } }) {\n\tconst classes = theme.classes(css);\n\tconst { sticky } = properties();\n\tconst { actions, leading, title, trailing } = children()[0];\n\n\treturn (\n\t\t<header key=\"header\" classes={[theme.variant(), sticky ? classes.spacer : undefined]}>\n\t\t\t<div classes={[classes.root, sticky && classes.sticky]} key=\"root\">\n\t\t\t\t<div classes={classes.row}>\n\t\t\t\t\t<div classes={classes.primary} key=\"primary\">\n\t\t\t\t\t\t{leading && <div classes={classes.leading}>{leading}</div>}\n\t\t\t\t\t\t<div classes={classes.title} key=\"title\">\n\t\t\t\t\t\t\t{title && title}\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</div>\n\t\t\t\t\t<div classes={classes.secondary} key=\"secondary\">\n\t\t\t\t\t\t<nav classes={classes.actions} key=\"actions\">\n\t\t\t\t\t\t\t{actions &&\n\t\t\t\t\t\t\t\t(Array.isArray(actions) ? actions : [actions]).map((action) => (\n\t\t\t\t\t\t\t\t\t<div classes={classes.action}>{action}</div>\n\t\t\t\t\t\t\t\t))}\n\t\t\t\t\t\t</nav>\n\t\t\t\t\t\t{trailing && <div classes={classes.trailing}>{trailing}</div>}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</header>\n\t);\n});\n\nexport default Header;\n","import { create } from '@dojo/framework/core/vdom';\nimport coreTheme, {\n\tThemeProperties as CoreThemeProperties\n} from '@dojo/framework/core/middleware/theme';\nimport { ClassNames, Theme } from '@dojo/framework/core/mixins/Themed';\nimport { ThemeWithVariant } from '@dojo/framework/core/interfaces';\n\nconst factory = create({ coreTheme });\nexport const THEME_KEY = ' _key';\n\nfunction uppercaseFirstChar(value: string) {\n\treturn `${value.charAt(0).toUpperCase()}${value.slice(1)}`;\n}\n\nfunction lowercaseFirstChar(value: string) {\n\treturn `${value.charAt(0).toLowerCase()}${value.slice(1)}`;\n}\n\nfunction isThemeWithVariant(theme: any): theme is ThemeWithVariant {\n\treturn theme && theme.hasOwnProperty('variant');\n}\n\nexport interface ThemeProperties extends CoreThemeProperties {}\n\nexport const theme = factory(function({ middleware: { coreTheme }, properties }) {\n\treturn {\n\t\tcompose: <T extends ClassNames, B extends ClassNames>(\n\t\t\tbaseCss: B,\n\t\t\tcss: T,\n\t\t\tprefix?: string\n\t\t): Theme | ThemeWithVariant => {\n\t\t\tconst theme = properties().theme;\n\t\t\tconst baseKey = baseCss[THEME_KEY];\n\t\t\tconst variantKey = css[THEME_KEY];\n\t\t\tconst virtualCss = Object.keys(baseCss).reduce(\n\t\t\t\t(virtualCss, key) => {\n\t\t\t\t\tif (key === THEME_KEY) {\n\t\t\t\t\t\treturn virtualCss;\n\t\t\t\t\t}\n\t\t\t\t\tif (prefix && !virtualCss[`${prefix}${uppercaseFirstChar(key)}`]) {\n\t\t\t\t\t\tvirtualCss[`${prefix}${uppercaseFirstChar(key)}`] = ' ';\n\t\t\t\t\t}\n\t\t\t\t\tif (!css[key]) {\n\t\t\t\t\t\tvirtualCss[key] = ' ';\n\t\t\t\t\t}\n\t\t\t\t\treturn virtualCss;\n\t\t\t\t},\n\t\t\t\t{ [THEME_KEY]: variantKey } as ClassNames\n\t\t\t);\n\t\t\tconst virtualTheme = coreTheme.classes(virtualCss);\n\t\t\tconst variantTheme = coreTheme.classes(css);\n\t\t\tlet baseTheme = coreTheme.classes(baseCss);\n\t\t\tif (prefix) {\n\t\t\t\tconst prefixedCss = Object.keys({ ...virtualTheme, ...variantTheme }).reduce(\n\t\t\t\t\t(prefixCss, key) => {\n\t\t\t\t\t\tif (key.indexOf(prefix) === 0 && key !== prefix) {\n\t\t\t\t\t\t\tconst classKey = lowercaseFirstChar(key.replace(prefix, ''));\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t!variantTheme[key] &&\n\t\t\t\t\t\t\t\tvirtualTheme[key] &&\n\t\t\t\t\t\t\t\tvirtualTheme[key].trim()\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tprefixCss[classKey] = `${baseTheme[classKey]} ${virtualTheme[\n\t\t\t\t\t\t\t\t\tkey\n\t\t\t\t\t\t\t\t].trim()}`;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tif (variantTheme[key]) {\n\t\t\t\t\t\t\t\tprefixCss[classKey] = variantTheme[key];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\treturn prefixCss;\n\t\t\t\t\t},\n\t\t\t\t\t{} as ClassNames\n\t\t\t\t);\n\t\t\t\tbaseTheme = { ...baseTheme, ...prefixedCss };\n\n\t\t\t\tif (isThemeWithVariant(theme)) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\ttheme: {\n\t\t\t\t\t\t\t...theme.theme,\n\t\t\t\t\t\t\t[baseKey]: baseTheme\n\t\t\t\t\t\t},\n\t\t\t\t\t\tvariant: theme.variant\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\treturn {\n\t\t\t\t\t...theme,\n\t\t\t\t\t[baseKey]: baseTheme\n\t\t\t\t};\n\t\t\t}\n\n\t\t\tconst constructedTheme = Object.keys(baseTheme).reduce(\n\t\t\t\t(theme, key) => {\n\t\t\t\t\tif (key === THEME_KEY) {\n\t\t\t\t\t\treturn theme;\n\t\t\t\t\t}\n\t\t\t\t\tconst variantComposesClass = variantTheme[key] && variantTheme[key].trim();\n\t\t\t\t\tif (variantTheme[key]) {\n\t\t\t\t\t\ttheme[key] = variantComposesClass;\n\t\t\t\t\t} else if (virtualTheme[key] && virtualTheme[key].trim()) {\n\t\t\t\t\t\ttheme[key] = `${theme[key]} ${virtualTheme[key].trim()}`;\n\t\t\t\t\t}\n\t\t\t\t\treturn theme;\n\t\t\t\t},\n\t\t\t\t{ ...baseTheme } as ClassNames\n\t\t\t);\n\n\t\t\tif (isThemeWithVariant(theme)) {\n\t\t\t\treturn {\n\t\t\t\t\ttheme: {\n\t\t\t\t\t\t...theme.theme,\n\t\t\t\t\t\t[baseKey]: constructedTheme\n\t\t\t\t\t},\n\t\t\t\t\tvariant: theme.variant\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\t...theme,\n\t\t\t\t[baseKey]: constructedTheme\n\t\t\t};\n\t\t},\n\t\t...coreTheme\n\t};\n});\n\nexport default theme;\n","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/default/header.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/header\",\"root\":\"header-m__root__1Wu1d\",\"row\":\"header-m__row__3e0zv\",\"primary\":\"header-m__primary__2eL4c\",\"secondary\":\"header-m__secondary__keWQu\",\"sticky\":\"header-m__sticky__3Rxub\",\"leading\":\"header-m__leading__EGBZf\",\"title\":\"header-m__title__3AvG7\",\"actions\":\"header-m__actions__3MCfn\",\"action\":\"header-m__action__1tpKL\",\"trailing\":\"header-m__trailing__1qern\",\"spacer\":\"header-m__spacer__3HogK\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/accordion.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/accordion\",\"root\":\"accordion-m__root__Rxs8b\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/avatar.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/avatar\",\"root\":\"avatar-m__root__1VkSv\",\"avatarColor\":\"avatar-m__avatarColor__3OmuK\",\"avatarColorSecondary\":\"avatar-m__avatarColorSecondary__vkqqN\",\"small\":\"avatar-m__small__2Tqpi\",\"medium\":\"avatar-m__medium__2_v9Q\",\"large\":\"avatar-m__large__1bumt\",\"circle\":\"avatar-m__circle__2IbnP\",\"square\":\"avatar-m__square__32U8B\",\"rounded\":\"avatar-m__rounded__dtC5b\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/breadcrumb-group.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/breadcrumb-group\",\"root\":\"breadcrumb-group-m__root__2c_G5\",\"listItem\":\"breadcrumb-group-m__listItem__3N7sj\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/button.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/button\",\"root\":\"button-m__root__28pvq\",\"pressed\":\"button-m__pressed__3sV_C\",\"disabled\":\"button-m__disabled__f4Azn\",\"label\":\"button-m__label__mkUVZ\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/calendar.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/calendar\",\"root\":\"calendar-m__root__1tLGM\",\"dateGrid\":\"calendar-m__dateGrid__3Deul\",\"weekday\":\"calendar-m__weekday__IVdDz\",\"date\":\"calendar-m__date__2HZ0l\",\"abbr\":\"calendar-m__abbr__NAXva\",\"todayDate\":\"calendar-m__todayDate__1X8CM\",\"inactiveDate\":\"calendar-m__inactiveDate__2Gk9b\",\"selectedDate\":\"calendar-m__selectedDate__2X9KT\",\"topMatter\":\"calendar-m__topMatter__3N546\",\"monthTrigger\":\"calendar-m__monthTrigger__3PjRC\",\"yearTrigger\":\"calendar-m__yearTrigger__iE25Z\",\"previous\":\"calendar-m__previous__ScgW3\",\"next\":\"calendar-m__next__3VwlS\",\"monthTriggerActive\":\"calendar-m__monthTriggerActive__17804\",\"yearTriggerActive\":\"calendar-m__yearTriggerActive__2SWmn\",\"calendarPagingIcon\":\"calendar-m__calendarPagingIcon__EmDza icon-m__icon__2JzPg\",\"monthGrid\":\"calendar-m__monthGrid__D5Viu\",\"yearGrid\":\"calendar-m__yearGrid__2btl0\",\"monthFields\":\"calendar-m__monthFields__25gUW\",\"yearFields\":\"calendar-m__yearFields__316-R\",\"monthRadio\":\"calendar-m__monthRadio__q9SIE\",\"yearRadio\":\"calendar-m__yearRadio__1KTig\",\"monthRadioLabel\":\"calendar-m__monthRadioLabel__1FkZH\",\"yearRadioLabel\":\"calendar-m__yearRadioLabel__16Ui_\",\"monthRadioChecked\":\"calendar-m__monthRadioChecked__3uX63\",\"yearRadioChecked\":\"calendar-m__yearRadioChecked__SkQUn\",\"monthRadioInput\":\"calendar-m__monthRadioInput__3p-Ha\",\"yearRadioInput\":\"calendar-m__yearRadioInput__1jypV\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/card.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/card\",\"root\":\"card-m__root__2O8hE\",\"actions\":\"card-m__actions__16a2H\",\"actionButtons\":\"card-m__actionButtons__I3DkN\",\"actionIcons\":\"card-m__actionIcons__1txrb\",\"primary\":\"card-m__primary__X0sgt\",\"content\":\"card-m__content__1yyco\",\"media\":\"card-m__media__2VVB0\",\"mediaSquare\":\"card-m__mediaSquare__1V7A9\",\"media16by9\":\"card-m__media16by9__2iLHJ\",\"header\":\"card-m__header__294wg\",\"titleWrapper\":\"card-m__titleWrapper__1vlU9\",\"contentWrapper\":\"card-m__contentWrapper__2XDys\",\"title\":\"card-m__title__1st_D\",\"subtitle\":\"card-m__subtitle__2a3KJ\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/checkbox-group.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/checkbox-group\",\"root\":\"checkbox-group-m__root__1BVCZ\",\"legend\":\"checkbox-group-m__legend__2lYxD label-m__root__2OY2Q\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/checkbox.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/checkbox\",\"root\":\"checkbox-m__root__25_UT\",\"input\":\"checkbox-m__input__k7une\",\"inputWrapper\":\"checkbox-m__inputWrapper__J_orM icon-m__checkIcon___SgNE icon-m__icon__2JzPg\",\"checked\":\"checkbox-m__checked__2GgYs\",\"focused\":\"checkbox-m__focused__1ox0Y\",\"onLabel\":\"checkbox-m__onLabel__2S2Uj\",\"offLabel\":\"checkbox-m__offLabel__3YMm8\",\"disabled\":\"checkbox-m__disabled__1rzbj\",\"readonly\":\"checkbox-m__readonly__1z_i8\",\"invalid\":\"checkbox-m__invalid__3uIrz\",\"valid\":\"checkbox-m__valid__3n96h\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/chip-typeahead.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/chip-typeahead\",\"root\":\"chip-typeahead-m__root__sjZeg\",\"value\":\"chip-typeahead-m__value__2uqjJ\",\"selectedIcon\":\"chip-typeahead-m__selectedIcon__3Y90y\",\"input\":\"chip-typeahead-m__input__2EPdN\",\"inputWrapper\":\"chip-typeahead-m__inputWrapper__2u6zp\",\"values\":\"chip-typeahead-m__values__ebPIz\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/chip.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/chip\",\"root\":\"chip-m__root__38BHL\",\"label\":\"chip-m__label__qUnxa\",\"closeIcon\":\"chip-m__closeIcon__1SV6f\",\"clickable\":\"chip-m__clickable__1N1eC\",\"disabled\":\"chip-m__disabled__2k7b5\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/date-input.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/date-input\",\"root\":\"date-input-m__root__2Yzvp\",\"input\":\"date-input-m__input__3TdOm\",\"toggleCalendarButton\":\"date-input-m__toggleCalendarButton__3qDqH\",\"popup\":\"date-input-m__popup__1ZIaA\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/dialog.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/dialog\",\"root\":\"dialog-m__root__NAZCT\",\"main\":\"dialog-m__main__3spJM\",\"underlayVisible\":\"dialog-m__underlayVisible__3Eqbz\",\"title\":\"dialog-m__title__1P-PZ\",\"content\":\"dialog-m__content__6tbsZ\",\"close\":\"dialog-m__close__2sN1M\",\"closeIcon\":\"dialog-m__closeIcon__3LrDH\",\"actions\":\"dialog-m__actions__sY9bD\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/floating-action-button.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/floating-action-button\",\"root\":\"floating-action-button-m__root__2piV7\",\"icon\":\"floating-action-button-m__icon__2DAWn\",\"extended\":\"floating-action-button-m__extended__2XVgZ\",\"pressed\":\"floating-action-button-m__pressed__2TjQj button-m__pressed__3sV_C\",\"label\":\"floating-action-button-m__label__2Cyv7 button-m__label__mkUVZ\",\"disabled\":\"floating-action-button-m__disabled__1eqKe\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/grid-body.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/grid-body\",\"root\":\"grid-body-m__root__2zbEx\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/grid-cell.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/grid-cell\",\"root\":\"grid-cell-m__root__34wXf\",\"input\":\"grid-cell-m__input__2g0he\",\"edit\":\"grid-cell-m__edit__3hH3_\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/grid-footer.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/grid-footer\",\"root\":\"grid-footer-m__root__3p2-L\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/grid-header.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/grid-header\",\"root\":\"grid-header-m__root__HYjsh\",\"cell\":\"grid-header-m__cell__2HBju\",\"sortable\":\"grid-header-m__sortable__Cdm4W\",\"sorted\":\"grid-header-m__sorted__280sg\",\"sort\":\"grid-header-m__sort__31J7s\",\"-webkit-filter\":\"grid-header-m__filter__2Yr-S\",\"filter\":\"grid-header-m__filter__2Yr-S\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/grid-paginated-footer.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/grid-paginated-footer\",\"root\":\"grid-paginated-footer-m__root__23Cev\",\"details\":\"grid-paginated-footer-m__details__3Fazr\",\"more\":\"grid-paginated-footer-m__more__1mDXK\",\"pageNav\":\"grid-paginated-footer-m__pageNav__2afTM\",\"pageNumber\":\"grid-paginated-footer-m__pageNumber__2lhSZ\",\"active\":\"grid-paginated-footer-m__active__iaKed\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/grid-placeholder-row.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/grid-placeholder-row\",\"root\":\"grid-placeholder-row-m__root__UivAF grid-row-m__root__NKTOq\",\"loading\":\"grid-placeholder-row-m__loading__2UpDv\",\"spin\":\"grid-placeholder-row-m__spin__11VRU\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/grid-row.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/grid-row\",\"root\":\"grid-row-m__root__NKTOq\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/grid.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/grid\",\"root\":\"grid-m__root__3e-Fb\",\"header\":\"grid-m__header__Xgbwh\",\"filterGroup\":\"grid-m__filterGroup__lccgY\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/header-card.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/header-card\",\"root\":\"header-card-m__root__l4KKu\",\"header\":\"header-card-m__header__3iFIG\",\"headerContent\":\"header-card-m__headerContent__2Kz4-\",\"avatar\":\"header-card-m__avatar__kU5oC\",\"title\":\"header-card-m__title__3M9XE\",\"subtitle\":\"header-card-m__subtitle__2o1Ge\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/header.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/header\",\"root\":\"header-m__root__1WDVi\",\"row\":\"header-m__row__3ZCgD\",\"primary\":\"header-m__primary__1cNeA\",\"secondary\":\"header-m__secondary__3uElU\",\"sticky\":\"header-m__sticky__1tiQe\",\"leading\":\"header-m__leading__1C73V\",\"title\":\"header-m__title__2xNxF\",\"actions\":\"header-m__actions__3hd87\",\"action\":\"header-m__action__3QPqq\",\"trailing\":\"header-m__trailing__r7k1p\",\"spacer\":\"header-m__spacer__1njcI\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/helper-text.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/helper-text\",\"root\":\"helper-text-m__root__2HclM\",\"text\":\"helper-text-m__text__2vI1Z\",\"valid\":\"helper-text-m__valid__Qigz0\",\"invalid\":\"helper-text-m__invalid__zjI0U\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/icon.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/icon\",\"icon\":\"icon-m__icon__2JzPg\",\"clockIcon\":\"icon-m__clockIcon__2S5I7\",\"eyeIcon\":\"icon-m__eyeIcon__2UFzR\",\"eyeSlashIcon\":\"icon-m__eyeSlashIcon__1-jQ3\",\"plusIcon\":\"icon-m__plusIcon__C2hAP\",\"minusIcon\":\"icon-m__minusIcon__3yz6D\",\"checkIcon\":\"icon-m__checkIcon___SgNE\",\"closeIcon\":\"icon-m__closeIcon__60eFq\",\"leftIcon\":\"icon-m__leftIcon__86k5d\",\"rightIcon\":\"icon-m__rightIcon__2jTr-\",\"upIcon\":\"icon-m__upIcon__C6vkW\",\"downIcon\":\"icon-m__downIcon__3YfxA\",\"upAltIcon\":\"icon-m__upAltIcon__2h5Ff\",\"downAltIcon\":\"icon-m__downAltIcon__1A_IX\",\"searchIcon\":\"icon-m__searchIcon__1GW-J\",\"barsIcon\":\"icon-m__barsIcon__33nJG\",\"settingsIcon\":\"icon-m__settingsIcon__mUrFB\",\"alertIcon\":\"icon-m__alertIcon__tXYqM\",\"helpIcon\":\"icon-m__helpIcon__AWIZ1\",\"infoIcon\":\"icon-m__infoIcon__2nM8O\",\"cancelIcon\":\"icon-m__cancelIcon__1gsBL\",\"checkedBoxIcon\":\"icon-m__checkedBoxIcon__31wsd\",\"phoneIcon\":\"icon-m__phoneIcon__2SYAN\",\"editIcon\":\"icon-m__editIcon__3z6EX\",\"dateIcon\":\"icon-m__dateIcon__2Olo4\",\"linkIcon\":\"icon-m__linkIcon__1NOjY\",\"locationIcon\":\"icon-m__locationIcon__2MwHF\",\"secureIcon\":\"icon-m__secureIcon__2AVyP\",\"mailIcon\":\"icon-m__mailIcon__10-91\",\"starIcon\":\"icon-m__starIcon__1FwGO\"};;","import * as accordionPane from './accordion.m.css';\nimport * as avatar from './avatar.m.css';\nimport * as breadcrumbGroup from './breadcrumb-group.m.css';\nimport * as button from './button.m.css';\nimport * as calendar from './calendar.m.css';\nimport * as card from './card.m.css';\nimport * as checkboxGroup from './checkbox-group.m.css';\nimport * as checkbox from './checkbox.m.css';\nimport * as chip from './chip.m.css';\nimport * as dateInput from './date-input.m.css';\nimport * as dialog from './dialog.m.css';\nimport * as floatingActionButton from './floating-action-button.m.css';\nimport * as grid from './grid.m.css';\nimport * as gridBody from './grid-body.m.css';\nimport * as gridCell from './grid-cell.m.css';\nimport * as gridFooter from './grid-footer.m.css';\nimport * as gridHeader from './grid-header.m.css';\nimport * as gridPlaceholderRow from './grid-placeholder-row.m.css';\nimport * as gridPaginatedFooter from './grid-paginated-footer.m.css';\nimport * as gridRow from './grid-row.m.css';\nimport * as headerCard from './header-card.m.css';\nimport * as header from './header.m.css';\nimport * as helperText from './helper-text.m.css';\nimport * as icon from './icon.m.css';\nimport * as label from './label.m.css';\nimport * as listItem from './list-item.m.css';\nimport * as loadingIndicator from './loading-indicator.m.css';\nimport * as list from './list.m.css';\nimport * as menuItem from './menu-item.m.css';\nimport * as chipTypeahead from './chip-typeahead.m.css';\nimport * as outlinedButton from './outlined-button.m.css';\nimport * as nativeSelect from './native-select.m.css';\nimport * as pagination from './pagination.m.css';\nimport * as passwordInput from './password-input.m.css';\nimport * as progress from './progress.m.css';\nimport * as radioGroup from './radio-group.m.css';\nimport * as radio from './radio.m.css';\nimport * as raisedButton from './raised-button.m.css';\nimport * as rangeSlider from './range-slider.m.css';\nimport * as result from './result.m.css';\nimport * as select from './select.m.css';\nimport * as slidePane from './slide-pane.m.css';\nimport * as slider from './slider.m.css';\nimport * as snackbar from './snackbar.m.css';\nimport * as switchControl from './switch.m.css';\nimport * as tabContainer from './tab-container.m.css';\nimport * as textArea from './text-area.m.css';\nimport * as textInput from './text-input.m.css';\nimport * as threeColumnLayout from './three-column-layout.m.css';\nimport * as timePicker from './time-picker.m.css';\nimport * as titlePane from './title-pane.m.css';\nimport * as tooltip from './tooltip.m.css';\nimport * as twoColumnLayout from './two-column-layout.m.css';\nimport * as typeahead from './typeahead.m.css';\nimport * as defaultVariant from './variants/default.m.css';\nimport * as darkVariant from './variants/dark.m.css';\n\nexport default {\n\ttheme: {\n\t\t'@dojo/widgets/accordion': accordionPane,\n\t\t'@dojo/widgets/avatar': avatar,\n\t\t'@dojo/widgets/breadcrumb-group': breadcrumbGroup,\n\t\t'@dojo/widgets/button': button,\n\t\t'@dojo/widgets/calendar': calendar,\n\t\t'@dojo/widgets/card': card,\n\t\t'@dojo/widgets/checkbox-group': checkboxGroup,\n\t\t'@dojo/widgets/checkbox': checkbox,\n\t\t'@dojo/widgets/chip': chip,\n\t\t'@dojo/widgets/date-input': dateInput,\n\t\t'@dojo/widgets/dialog': dialog,\n\t\t'@dojo/widgets/floating-action-button': floatingActionButton,\n\t\t'@dojo/widgets/grid-body': gridBody,\n\t\t'@dojo/widgets/grid-cell': gridCell,\n\t\t'@dojo/widgets/grid-footer': gridFooter,\n\t\t'@dojo/widgets/grid-header': gridHeader,\n\t\t'@dojo/widgets/grid-placeholder-row': gridPlaceholderRow,\n\t\t'@dojo/widgets/grid-paginated-footer': gridPaginatedFooter,\n\t\t'@dojo/widgets/grid-row': gridRow,\n\t\t'@dojo/widgets/grid': grid,\n\t\t'@dojo/widgets/header-card': headerCard,\n\t\t'@dojo/widgets/header': header,\n\t\t'@dojo/widgets/helper-text': helperText,\n\t\t'@dojo/widgets/icon': icon,\n\t\t'@dojo/widgets/label': label,\n\t\t'@dojo/widgets/list-item': listItem,\n\t\t'@dojo/widgets/loading-indicator': loadingIndicator,\n\t\t'@dojo/widgets/menu-item': menuItem,\n\t\t'@dojo/widgets/chip-typeahead': chipTypeahead,\n\t\t'@dojo/widgets/list': list,\n\t\t'@dojo/widgets/outlined-button': outlinedButton,\n\t\t'@dojo/widgets/native-select': nativeSelect,\n\t\t'@dojo/widgets/pagination': pagination,\n\t\t'@dojo/widgets/password-input': passwordInput,\n\t\t'@dojo/widgets/progress': progress,\n\t\t'@dojo/widgets/radio-group': radioGroup,\n\t\t'@dojo/widgets/radio': radio,\n\t\t'@dojo/widgets/raised-button': raisedButton,\n\t\t'@dojo/widgets/range-slider': rangeSlider,\n\t\t'@dojo/widgets/result': result,\n\t\t'@dojo/widgets/select': select,\n\t\t'@dojo/widgets/slide-pane': slidePane,\n\t\t'@dojo/widgets/slider': slider,\n\t\t'@dojo/widgets/snackbar': snackbar,\n\t\t'@dojo/widgets/switch': switchControl,\n\t\t'@dojo/widgets/tab-container': tabContainer,\n\t\t'@dojo/widgets/text-area': textArea,\n\t\t'@dojo/widgets/text-input': textInput,\n\t\t'@dojo/widgets/three-column-layout': threeColumnLayout,\n\t\t'@dojo/widgets/time-picker': timePicker,\n\t\t'@dojo/widgets/title-pane': titlePane,\n\t\t'@dojo/widgets/tooltip': tooltip,\n\t\t'@dojo/widgets/two-column-layout': twoColumnLayout,\n\t\t'@dojo/widgets/typeahead': typeahead\n\t},\n\tvariants: {\n\t\tdefault: defaultVariant,\n\t\tdark: darkVariant\n\t}\n};\n","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/label.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/label\",\"root\":\"label-m__root__2OY2Q\",\"secondary\":\"label-m__secondary__2JgjM\",\"required\":\"label-m__required__2p83z\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/list-item.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/list-item\",\"root\":\"list-item-m__root__dUG_o\",\"active\":\"list-item-m__active__3tRcp\",\"selected\":\"list-item-m__selected__1sHW5\",\"disabled\":\"list-item-m__disabled__3VhQD\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/list.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/list\",\"root\":\"list-m__root__3ee5s\",\"menu\":\"list-m__menu___jE2c\",\"divider\":\"list-m__divider__2pf5q\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/loading-indicator.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/loading-indicator\",\"root\":\"loading-indicator-m__root__1S_Do\",\"buffer\":\"loading-indicator-m__buffer__2N8zx\",\"bar\":\"loading-indicator-m__bar__2QYHV\",\"primary\":\"loading-indicator-m__primary__1OxUO\",\"progress\":\"loading-indicator-m__progress__EoLqt\",\"inner\":\"loading-indicator-m__inner__3GTa2\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/menu-item.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/menu-item\",\"root\":\"menu-item-m__root__1HFs_\",\"active\":\"menu-item-m__active__2iRtR\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/native-select.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/native-select\",\"root\":\"native-select-m__root__2A2KN\",\"inputWrapper\":\"native-select-m__inputWrapper__3v5as\",\"select\":\"native-select-m__select__7f8t5\",\"arrow\":\"native-select-m__arrow__3m49y\",\"disabled\":\"native-select-m__disabled__1TaDk\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/outlined-button.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/outlined-button\",\"root\":\"outlined-button-m__root__1j7qa\",\"pressed\":\"outlined-button-m__pressed__2iuy5\",\"label\":\"outlined-button-m__label__SD9Eo\",\"disabled\":\"outlined-button-m__disabled__3POiK\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/pagination.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/pagination\",\"root\":\"pagination-m__root__L7VlA\",\"linksWrapper\":\"pagination-m__linksWrapper__2jtOw\",\"prev\":\"pagination-m__prev__vFB9g\",\"next\":\"pagination-m__next__xfQUm\",\"icon\":\"pagination-m__icon__31lQc\",\"label\":\"pagination-m__label__HE0yp\",\"link\":\"pagination-m__link__3db0U\",\"currentPage\":\"pagination-m__currentPage__InwXB\",\"selectWrapper\":\"pagination-m__selectWrapper__3vqQT\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/password-input.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/password-input\",\"root\":\"password-input-m__root__gH-Hk text-input-m__root__2yKLO\",\"toggleButton\":\"password-input-m__toggleButton__3vybc\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/progress.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/progress\",\"root\":\"progress-m__root__2XHXH\",\"output\":\"progress-m__output__vKJw-\",\"bar\":\"progress-m__bar__sB2fc\",\"progress\":\"progress-m__progress__2V0hS\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/radio-group.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/radio-group\",\"root\":\"radio-group-m__root__3VCTl\",\"legend\":\"radio-group-m__legend__ZiCRP\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/radio.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/radio\",\"root\":\"radio-m__root__VefZS\",\"input\":\"radio-m__input__3HytW\",\"inputWrapper\":\"radio-m__inputWrapper__1Zous\",\"radioBackground\":\"radio-m__radioBackground__8HvZ0\",\"radioOuter\":\"radio-m__radioOuter__2v-Zg\",\"radioInner\":\"radio-m__radioInner__3f5tV\",\"focused\":\"radio-m__focused__3nJo1\",\"checked\":\"radio-m__checked__2yRzd\",\"disabled\":\"radio-m__disabled__B3g_v\",\"readonly\":\"radio-m__readonly__5rLlH\",\"invalid\":\"radio-m__invalid__EfJNI\",\"valid\":\"radio-m__valid__1-Pzb\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/raised-button.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/raised-button\",\"root\":\"raised-button-m__root__8rmm4\",\"pressed\":\"raised-button-m__pressed__3Yr5d\",\"label\":\"raised-button-m__label__3lT-j\",\"disabled\":\"raised-button-m__disabled__1M-Lp\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/range-slider.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/range-slider\",\"root\":\"range-slider-m__root__104A-\",\"inputWrapper\":\"range-slider-m__inputWrapper__lTUjE\",\"filled\":\"range-slider-m__filled__XRsjH\",\"thumb\":\"range-slider-m__thumb__qHz5U\",\"input\":\"range-slider-m__input__3dB_q\",\"focused\":\"range-slider-m__focused__355WG\",\"hasOutput\":\"range-slider-m__hasOutput__3mwgj\",\"outputTooltip\":\"range-slider-m__outputTooltip__2RQbx\",\"output\":\"range-slider-m__output__2IwRP\",\"disabled\":\"range-slider-m__disabled__3wxJ-\",\"readonly\":\"range-slider-m__readonly__2W81l\",\"invalid\":\"range-slider-m__invalid__3jnT9\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/result.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/result\",\"root\":\"result-m__root__1s4Al\",\"iconWrapper\":\"result-m__iconWrapper__1nmlS\",\"statusIcon\":\"result-m__statusIcon__3PF2C\",\"iconIcon\":\"result-m__iconIcon__Nu6vI icon-m__icon__2JzPg\",\"actions\":\"result-m__actions__22GMb\",\"actionButtons\":\"result-m__actionButtons__1epeV\",\"contentWrapper\":\"result-m__contentWrapper__2esbQ\",\"content\":\"result-m__content__3eBjD\",\"titleWrapper\":\"result-m__titleWrapper__EmGbs\",\"title\":\"result-m__title__1yfPE\",\"subtitle\":\"result-m__subtitle__3e_ij\",\"alert\":\"result-m__alert__3NSTh\",\"error\":\"result-m__error__1KZCT\",\"info\":\"result-m__info__2T1qW\",\"success\":\"result-m__success__3deJM\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/select.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/select\",\"root\":\"select-m__root__vSQDW\",\"trigger\":\"select-m__trigger__cQJRQ\",\"value\":\"select-m__value__9wfTg\",\"placeholder\":\"select-m__placeholder__2UlZ1\",\"arrow\":\"select-m__arrow__3p83i\",\"menuWrapper\":\"select-m__menuWrapper__OePaS\",\"disabled\":\"select-m__disabled__3zDEP\",\"readonly\":\"select-m__readonly__3yUii\",\"invalid\":\"select-m__invalid__2G3mI\",\"valid\":\"select-m__valid__3Kr6J\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/slide-pane.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/slide-pane\",\"root\":\"slide-pane-m__root__2TQzV\",\"underlayVisible\":\"slide-pane-m__underlayVisible__2dXLD\",\"pane\":\"slide-pane-m__pane__2_qpl\",\"content\":\"slide-pane-m__content__3B7wz\",\"title\":\"slide-pane-m__title__2Dwsi\",\"close\":\"slide-pane-m__close__2Tp8H\",\"closeIcon\":\"slide-pane-m__closeIcon__2mfZI\",\"left\":\"slide-pane-m__left__3pSsl\",\"right\":\"slide-pane-m__right__1qBIY\",\"top\":\"slide-pane-m__top__2Ouqt\",\"bottom\":\"slide-pane-m__bottom__2Wm48\",\"slideIn\":\"slide-pane-m__slideIn__QKvGX\",\"slideOut\":\"slide-pane-m__slideOut__3C58O\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/slider.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/slider\",\"root\":\"slider-m__root__1fQ-Q\",\"inputWrapper\":\"slider-m__inputWrapper__1HBJS\",\"track\":\"slider-m__track__2DGhE\",\"fill\":\"slider-m__fill__4FdQ9\",\"thumb\":\"slider-m__thumb__26xCj\",\"input\":\"slider-m__input__2DrOc\",\"outputTooltip\":\"slider-m__outputTooltip__yLzFO\",\"output\":\"slider-m__output__KwPnR\",\"vertical\":\"slider-m__vertical__1lBx-\",\"disabled\":\"slider-m__disabled__LideH\",\"readonly\":\"slider-m__readonly__14OUb\",\"invalid\":\"slider-m__invalid__2uaAc\",\"valid\":\"slider-m__valid__1F6U5\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/snackbar.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/snackbar\",\"root\":\"snackbar-m__root__3DYwa\",\"content\":\"snackbar-m__content__2dPUv\",\"label\":\"snackbar-m__label__D1Lkn\",\"actions\":\"snackbar-m__actions__fQHb6\",\"open\":\"snackbar-m__open__1trii\",\"success\":\"snackbar-m__success__FTGZN\",\"error\":\"snackbar-m__error__1sGDA\",\"leading\":\"snackbar-m__leading__342U0\",\"stacked\":\"snackbar-m__stacked__1Wgqe\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/switch.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/switch\",\"root\":\"switch-m__root__1GFoq\",\"inputWrapper\":\"switch-m__inputWrapper__37KNw\",\"label\":\"switch-m__label__2IMGM\",\"thumb\":\"switch-m__thumb__3xB-N\",\"track\":\"switch-m__track__1U4WH\",\"underlay\":\"switch-m__underlay__1_0bA\",\"nativeControl\":\"switch-m__nativeControl__3isSL\",\"checked\":\"switch-m__checked__o1Lvq\",\"disabled\":\"switch-m__disabled__1Mmee\",\"readonly\":\"switch-m__readonly__o78hN\",\"focused\":\"switch-m__focused__w-VpX\",\"offLabel\":\"switch-m__offLabel__2b7ED\",\"onLabel\":\"switch-m__onLabel__2nH4q\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/tab-container.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/tab-container\",\"root\":\"tab-container-m__root__3r_9I\",\"tabButtons\":\"tab-container-m__tabButtons__3D03V\",\"tabButton\":\"tab-container-m__tabButton__1Rtmj\",\"disabledTabButton\":\"tab-container-m__disabledTabButton__-3pyN\",\"activeTabButton\":\"tab-container-m__activeTabButton__3O1dt\",\"close\":\"tab-container-m__close__2R550\",\"closeable\":\"tab-container-m__closeable__2ZpGe\",\"tab\":\"tab-container-m__tab__14Gr-\",\"alignLeft\":\"tab-container-m__alignLeft__3uIbQ\",\"tabs\":\"tab-container-m__tabs__2dU3y\",\"alignRight\":\"tab-container-m__alignRight__NCc1f\",\"alignBottom\":\"tab-container-m__alignBottom__3hOao\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/text-area.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/text-area\",\"root\":\"text-area-m__root__2NVkd\",\"input\":\"text-area-m__input__Vx3AV\",\"disabled\":\"text-area-m__disabled__ZjqlP\",\"readonly\":\"text-area-m__readonly__3NoH6\",\"invalid\":\"text-area-m__invalid__3Z9ZA\",\"valid\":\"text-area-m__valid__2mAxH\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/text-input.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/text-input\",\"root\":\"text-input-m__root__2yKLO\",\"wrapper\":\"text-input-m__wrapper__2yH16\",\"input\":\"text-input-m__input__2OqON\",\"inputWrapper\":\"text-input-m__inputWrapper__Bf3IL\",\"focused\":\"text-input-m__focused__Bz5Ku\",\"disabled\":\"text-input-m__disabled__1KyyV\",\"readonly\":\"text-input-m__readonly__2dMQl\",\"invalid\":\"text-input-m__invalid__wejhD\",\"valid\":\"text-input-m__valid__2CP3A\",\"addonRoot\":\"text-input-m__addonRoot__DQCsb\",\"addonFilled\":\"text-input-m__addonFilled__18Yy8\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/three-column-layout.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/three-column-layout\",\"leading\":\"three-column-layout-m__leading__10E32\",\"trailing\":\"three-column-layout-m__trailing__1__Yd\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/time-picker.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/time-picker\",\"root\":\"time-picker-m__root__2uRZv\",\"input\":\"time-picker-m__input__3e4IV\",\"toggleMenuButton\":\"time-picker-m__toggleMenuButton__1eb2P\",\"popup\":\"time-picker-m__popup__3ANpm\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/title-pane.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/title-pane\",\"root\":\"title-pane-m__root__1cmLi\",\"titleButton\":\"title-pane-m__titleButton__hMwuO\",\"content\":\"title-pane-m__content__33Ft6\",\"contentTransition\":\"title-pane-m__contentTransition__1GWDf\",\"open\":\"title-pane-m__open__2GqTv\",\"arrow\":\"title-pane-m__arrow__1RFCq\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/tooltip.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/tooltip\",\"root\":\"tooltip-m__root__1j6Iv\",\"content\":\"tooltip-m__content__1N9s1\",\"bottom\":\"tooltip-m__bottom__2dGm7\",\"top\":\"tooltip-m__top__2QOyL\",\"left\":\"tooltip-m__left__2vQ3o\",\"right\":\"tooltip-m__right__j1o47\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/two-column-layout.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/two-column-layout\",\"small\":\"two-column-layout-m__small__2sTw2\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/typeahead.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/typeahead\",\"root\":\"typeahead-m__root__2Em3D\",\"triggerWrapper\":\"typeahead-m__triggerWrapper__3ijZT\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/variants/dark.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/dark\",\"root\":\"dark-m__root__36GXf\"};;","// extracted by mini-css-extract-plugin","require('/Users/rory/Desktop/Projects/diff-test/node_modules/@dojo/widgets/theme/dojo/variants/default.m.css');\nmodule.exports = {\" _key\":\"@dojo/widgets/default\",\"root\":\"default-m__root__1h1rO\"};;","/*!\n * get-css-data\n * v1.8.0\n * https://github.com/jhildenbiddle/get-css-data\n * (c) 2018-2020 John Hildenbiddle <http://hildenbiddle.com>\n * MIT license\n */\nfunction getUrls(urls) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var settings = {\n mimeType: options.mimeType || null,\n onBeforeSend: options.onBeforeSend || Function.prototype,\n onSuccess: options.onSuccess || Function.prototype,\n onError: options.onError || Function.prototype,\n onComplete: options.onComplete || Function.prototype\n };\n var urlArray = Array.isArray(urls) ? urls : [ urls ];\n var urlQueue = Array.apply(null, Array(urlArray.length)).map((function(x) {\n return null;\n }));\n function isValidCss() {\n var cssText = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"\";\n var isHTML = cssText.trim().charAt(0) === \"<\";\n return !isHTML;\n }\n function onError(xhr, urlIndex) {\n settings.onError(xhr, urlArray[urlIndex], urlIndex);\n }\n function onSuccess(responseText, urlIndex) {\n var returnVal = settings.onSuccess(responseText, urlArray[urlIndex], urlIndex);\n responseText = returnVal === false ? \"\" : returnVal || responseText;\n urlQueue[urlIndex] = responseText;\n if (urlQueue.indexOf(null) === -1) {\n settings.onComplete(urlQueue);\n }\n }\n var parser = document.createElement(\"a\");\n urlArray.forEach((function(url, i) {\n parser.setAttribute(\"href\", url);\n parser.href = String(parser.href);\n var isIElte9 = Boolean(document.all && !window.atob);\n var isIElte9CORS = isIElte9 && parser.host.split(\":\")[0] !== location.host.split(\":\")[0];\n if (isIElte9CORS) {\n var isSameProtocol = parser.protocol === location.protocol;\n if (isSameProtocol) {\n var xdr = new XDomainRequest;\n xdr.open(\"GET\", url);\n xdr.timeout = 0;\n xdr.onprogress = Function.prototype;\n xdr.ontimeout = Function.prototype;\n xdr.onload = function() {\n if (isValidCss(xdr.responseText)) {\n onSuccess(xdr.responseText, i);\n } else {\n onError(xdr, i);\n }\n };\n xdr.onerror = function(err) {\n onError(xdr, i);\n };\n setTimeout((function() {\n xdr.send();\n }), 0);\n } else {\n console.warn(\"Internet Explorer 9 Cross-Origin (CORS) requests must use the same protocol (\".concat(url, \")\"));\n onError(null, i);\n }\n } else {\n var xhr = new XMLHttpRequest;\n xhr.open(\"GET\", url);\n if (settings.mimeType && xhr.overrideMimeType) {\n xhr.overrideMimeType(settings.mimeType);\n }\n settings.onBeforeSend(xhr, url, i);\n xhr.onreadystatechange = function() {\n if (xhr.readyState === 4) {\n if (xhr.status === 200 && isValidCss(xhr.responseText)) {\n onSuccess(xhr.responseText, i);\n } else {\n onError(xhr, i);\n }\n }\n };\n xhr.send();\n }\n }));\n}\n\n/**\n * Gets CSS data from <style> and <link> nodes (including @imports), then\n * returns data in order processed by DOM. Allows specifying nodes to\n * include/exclude and filtering CSS data using RegEx.\n *\n * @preserve\n * @param {object} [options] The options object\n * @param {object} [options.rootElement=document] Root element to traverse for\n * <link> and <style> nodes.\n * @param {string} [options.include] CSS selector matching <link> and <style>\n * nodes to include\n * @param {string} [options.exclude] CSS selector matching <link> and <style>\n * nodes to exclude\n * @param {object} [options.filter] Regular expression used to filter node CSS\n * data. Each block of CSS data is tested against the filter,\n * and only matching data is included.\n * @param {boolean} [options.skipDisabled=true] Determines if disabled\n * stylesheets will be skipped while collecting CSS data.\n * @param {boolean} [options.useCSSOM=false] Determines if CSS data will be\n * collected from a stylesheet's runtime values instead of its\n * text content. This is required to get accurate CSS data\n * when a stylesheet has been modified using the deleteRule()\n * or insertRule() methods because these modifications will\n * not be reflected in the stylesheet's text content.\n * @param {function} [options.onBeforeSend] Callback before XHR is sent. Passes\n * 1) the XHR object, 2) source node reference, and 3) the\n * source URL as arguments.\n * @param {function} [options.onSuccess] Callback on each CSS node read. Passes\n * 1) CSS text, 2) source node reference, and 3) the source\n * URL as arguments.\n * @param {function} [options.onError] Callback on each error. Passes 1) the XHR\n * object for inspection, 2) soure node reference, and 3) the\n * source URL that failed (either a <link> href or an @import)\n * as arguments\n * @param {function} [options.onComplete] Callback after all nodes have been\n * processed. Passes 1) concatenated CSS text, 2) an array of\n * CSS text in DOM order, and 3) an array of nodes in DOM\n * order as arguments.\n *\n * @example\n *\n * getCssData({\n * rootElement : document,\n * include : 'style,link[rel=\"stylesheet\"]',\n * exclude : '[href=\"skip.css\"]',\n * filter : /red/,\n * skipDisabled: true,\n * useCSSOM : false,\n * onBeforeSend(xhr, node, url) {\n * // ...\n * }\n * onSuccess(cssText, node, url) {\n * // ...\n * }\n * onError(xhr, node, url) {\n * // ...\n * },\n * onComplete(cssText, cssArray, nodeArray) {\n * // ...\n * }\n * });\n */ function getCssData(options) {\n var regex = {\n cssComments: /\\/\\*[\\s\\S]+?\\*\\//g,\n cssImports: /(?:@import\\s*)(?:url\\(\\s*)?(?:['\"])([^'\"]*)(?:['\"])(?:\\s*\\))?(?:[^;]*;)/g\n };\n var settings = {\n rootElement: options.rootElement || document,\n include: options.include || 'style,link[rel=\"stylesheet\"]',\n exclude: options.exclude || null,\n filter: options.filter || null,\n skipDisabled: options.skipDisabled !== false,\n useCSSOM: options.useCSSOM || false,\n onBeforeSend: options.onBeforeSend || Function.prototype,\n onSuccess: options.onSuccess || Function.prototype,\n onError: options.onError || Function.prototype,\n onComplete: options.onComplete || Function.prototype\n };\n var sourceNodes = Array.apply(null, settings.rootElement.querySelectorAll(settings.include)).filter((function(node) {\n return !matchesSelector(node, settings.exclude);\n }));\n var cssArray = Array.apply(null, Array(sourceNodes.length)).map((function(x) {\n return null;\n }));\n function handleComplete() {\n var isComplete = cssArray.indexOf(null) === -1;\n if (isComplete) {\n var cssText = cssArray.join(\"\");\n settings.onComplete(cssText, cssArray, sourceNodes);\n }\n }\n function handleSuccess(cssText, cssIndex, node, sourceUrl) {\n var returnVal = settings.onSuccess(cssText, node, sourceUrl);\n cssText = returnVal !== undefined && Boolean(returnVal) === false ? \"\" : returnVal || cssText;\n resolveImports(cssText, node, sourceUrl, (function(resolvedCssText, errorData) {\n if (cssArray[cssIndex] === null) {\n errorData.forEach((function(data) {\n return settings.onError(data.xhr, node, data.url);\n }));\n if (!settings.filter || settings.filter.test(resolvedCssText)) {\n cssArray[cssIndex] = resolvedCssText;\n } else {\n cssArray[cssIndex] = \"\";\n }\n handleComplete();\n }\n }));\n }\n function parseImportData(cssText, baseUrl) {\n var ignoreRules = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n var importData = {};\n importData.rules = (cssText.replace(regex.cssComments, \"\").match(regex.cssImports) || []).filter((function(rule) {\n return ignoreRules.indexOf(rule) === -1;\n }));\n importData.urls = importData.rules.map((function(rule) {\n return rule.replace(regex.cssImports, \"$1\");\n }));\n importData.absoluteUrls = importData.urls.map((function(url) {\n return getFullUrl(url, baseUrl);\n }));\n importData.absoluteRules = importData.rules.map((function(rule, i) {\n var oldUrl = importData.urls[i];\n var newUrl = getFullUrl(importData.absoluteUrls[i], baseUrl);\n return rule.replace(oldUrl, newUrl);\n }));\n return importData;\n }\n function resolveImports(cssText, node, baseUrl, callbackFn) {\n var __errorData = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : [];\n var __errorRules = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : [];\n var importData = parseImportData(cssText, baseUrl, __errorRules);\n if (importData.rules.length) {\n getUrls(importData.absoluteUrls, {\n onBeforeSend: function onBeforeSend(xhr, url, urlIndex) {\n settings.onBeforeSend(xhr, node, url);\n },\n onSuccess: function onSuccess(cssText, url, urlIndex) {\n var returnVal = settings.onSuccess(cssText, node, url);\n cssText = returnVal === false ? \"\" : returnVal || cssText;\n var responseImportData = parseImportData(cssText, url, __errorRules);\n responseImportData.rules.forEach((function(rule, i) {\n cssText = cssText.replace(rule, responseImportData.absoluteRules[i]);\n }));\n return cssText;\n },\n onError: function onError(xhr, url, urlIndex) {\n __errorData.push({\n xhr: xhr,\n url: url\n });\n __errorRules.push(importData.rules[urlIndex]);\n resolveImports(cssText, node, baseUrl, callbackFn, __errorData, __errorRules);\n },\n onComplete: function onComplete(responseArray) {\n responseArray.forEach((function(importText, i) {\n cssText = cssText.replace(importData.rules[i], importText);\n }));\n resolveImports(cssText, node, baseUrl, callbackFn, __errorData, __errorRules);\n }\n });\n } else {\n callbackFn(cssText, __errorData);\n }\n }\n if (sourceNodes.length) {\n sourceNodes.forEach((function(node, i) {\n var linkHref = node.getAttribute(\"href\");\n var linkRel = node.getAttribute(\"rel\");\n var isLink = node.nodeName === \"LINK\" && linkHref && linkRel && linkRel.toLowerCase().indexOf(\"stylesheet\") !== -1;\n var isSkip = settings.skipDisabled === false ? false : node.disabled;\n var isStyle = node.nodeName === \"STYLE\";\n if (isLink && !isSkip) {\n getUrls(linkHref, {\n mimeType: \"text/css\",\n onBeforeSend: function onBeforeSend(xhr, url, urlIndex) {\n settings.onBeforeSend(xhr, node, url);\n },\n onSuccess: function onSuccess(cssText, url, urlIndex) {\n var sourceUrl = getFullUrl(linkHref);\n handleSuccess(cssText, i, node, sourceUrl);\n },\n onError: function onError(xhr, url, urlIndex) {\n cssArray[i] = \"\";\n settings.onError(xhr, node, url);\n handleComplete();\n }\n });\n } else if (isStyle && !isSkip) {\n var cssText = node.textContent;\n if (settings.useCSSOM) {\n cssText = Array.apply(null, node.sheet.cssRules).map((function(rule) {\n return rule.cssText;\n })).join(\"\");\n }\n handleSuccess(cssText, i, node, location.href);\n } else {\n cssArray[i] = \"\";\n handleComplete();\n }\n }));\n } else {\n settings.onComplete(\"\", []);\n }\n}\n\nfunction getFullUrl(url, base) {\n var d = document.implementation.createHTMLDocument(\"\");\n var b = d.createElement(\"base\");\n var a = d.createElement(\"a\");\n d.head.appendChild(b);\n d.body.appendChild(a);\n b.href = base || document.baseURI || (document.querySelector(\"base\") || {}).href || location.href;\n a.href = url;\n return a.href;\n}\n\nfunction matchesSelector(elm, selector) {\n var matches = elm.matches || elm.matchesSelector || elm.webkitMatchesSelector || elm.mozMatchesSelector || elm.msMatchesSelector || elm.oMatchesSelector;\n return matches.call(elm, selector);\n}\n\nexport default getCssData;\n//# sourceMappingURL=get-css-data.esm.js.map\n","'use strict';\nmodule.exports = balanced;\nfunction balanced(a, b, str) {\n if (a instanceof RegExp) a = maybeMatch(a, str);\n if (b instanceof RegExp) b = maybeMatch(b, str);\n\n var r = range(a, b, str);\n\n return r && {\n start: r[0],\n end: r[1],\n pre: str.slice(0, r[0]),\n body: str.slice(r[0] + a.length, r[1]),\n post: str.slice(r[1] + b.length)\n };\n}\n\nfunction maybeMatch(reg, str) {\n var m = str.match(reg);\n return m ? m[0] : null;\n}\n\nbalanced.range = range;\nfunction range(a, b, str) {\n var begs, beg, left, right, result;\n var ai = str.indexOf(a);\n var bi = str.indexOf(b, ai + 1);\n var i = ai;\n\n if (ai >= 0 && bi > 0) {\n begs = [];\n left = str.length;\n\n while (i >= 0 && !result) {\n if (i == ai) {\n begs.push(i);\n ai = str.indexOf(a, i + 1);\n } else if (begs.length == 1) {\n result = [ begs.pop(), bi ];\n } else {\n beg = begs.pop();\n if (beg < left) {\n left = beg;\n right = bi;\n }\n\n bi = str.indexOf(b, i + 1);\n }\n\n i = ai < bi && ai >= 0 ? ai : bi;\n }\n\n if (begs.length) {\n result = [ left, right ];\n }\n }\n\n return result;\n}\n","/**\n * Based on css parser/compiler by NxChg\n * https://github.com/NxtChg/pieces/tree/master/js/css_parser\n */\n\n\n// Dependencies\n// =============================================================================\nimport balanced from 'balanced-match';\n\n\n// Functions\n// =============================================================================\n/**\n * Parses CSS string and generates AST object\n *\n * @param {string} css The CSS stringt to be converted to an AST\n * @param {object} [options] Options object\n * @param {boolean} [options.preserveStatic=true] Determines if CSS\n * declarations that do not reference a custom property will\n * be preserved in the transformed CSS\n * @param {boolean} [options.removeComments=false] Remove comments from returned\n * object\n * @returns {object}\n */\nfunction parseCss(css, options = {}) {\n const defaults = {\n preserveStatic: true,\n removeComments: false\n };\n const settings = Object.assign({}, defaults, options);\n const errors = [];\n\n // Errors\n // -------------------------------------------------------------------------\n function error(msg) {\n throw new Error(`CSS parse error: ${msg}`);\n }\n\n // RegEx\n // -------------------------------------------------------------------------\n // Match regexp and return captures\n function match(re) {\n const m = re.exec(css);\n\n if (m) {\n css = css.slice(m[0].length);\n\n return m;\n }\n }\n\n function open() {\n return match(/^{\\s*/);\n }\n\n function close() {\n return match(/^}/);\n }\n\n function whitespace() {\n match(/^\\s*/);\n }\n\n // Comments\n // -------------------------------------------------------------------------\n function comment() {\n whitespace();\n\n if (css[0] !== '/' || css[1] !== '*') {\n return;\n }\n\n let i = 2;\n\n while (css[i] && (css[i] !== '*' || css[i + 1] !== '/')) {\n i++;\n }\n\n if (!css[i]) {\n return error('end of comment is missing');\n }\n\n const str = css.slice(2, i);\n\n css = css.slice(i + 2);\n\n return {\n type : 'comment',\n comment: str\n };\n }\n\n function comments() {\n const cmnts = [];\n let c;\n\n while ((c = comment())) {\n cmnts.push(c);\n }\n\n return settings.removeComments ? [] : cmnts;\n }\n\n // Selector\n // -------------------------------------------------------------------------\n function selector() {\n whitespace();\n\n while (css[0] === '}') {\n error('extra closing bracket');\n }\n\n const m = match(/^((\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'|[^{])+)/);\n\n if (m) {\n return m[0]\n .trim() // remove all comments from selectors\n .replace(/\\/\\*([^*]|[\\r\\n]|(\\*+([^*/]|[\\r\\n])))*\\*\\/+/g, '')\n .replace(/\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'/g, function(m) {\n return m.replace(/,/g, '\\u200C');\n })\n .split(/\\s*(?![^(]*\\)),\\s*/)\n .map(function(s) {\n return s.replace(/\\u200C/g, ',');\n });\n }\n }\n\n // Declarations\n // -------------------------------------------------------------------------\n function declaration() {\n // Nested @ rule(s)\n if (css[0] === '@') {\n return at_rule();\n }\n\n match(/^([;\\s]*)+/); // ignore empty declarations + whitespace\n\n const comment_regexp = /\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\//g;\n let prop = match(/^(\\*?[-#/*\\\\\\w]+(\\[[0-9a-z_-]+\\])?)\\s*/);\n\n if (!prop) {\n return;\n }\n\n prop = prop[0].trim();\n\n if (!match(/^:\\s*/)) {\n return error('property missing \\':\\'');\n }\n\n // Quotes regex repeats verbatim inside and outside parentheses\n const val = match(/^((?:\\/\\*.*?\\*\\/|'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|\\((\\s*'(?:\\\\'|.)*?'|\"(?:\\\\\"|.)*?\"|[^)]*?)\\s*\\)|[^};])+)/);\n const ret = {\n type : 'declaration',\n property: prop.replace(comment_regexp, ''),\n value : val ? val[0].replace(comment_regexp, '').trim() : ''\n };\n\n match(/^[;\\s]*/);\n\n return ret;\n }\n\n function declarations() {\n if (!open()) {\n return error('missing \\'{\\'');\n }\n\n let d;\n let decls = comments();\n\n while ((d = declaration())) {\n decls.push(d);\n decls = decls.concat(comments());\n }\n\n if (!close()) {\n return error('missing \\'}\\'');\n }\n\n return decls;\n }\n\n // Keyframes\n // -------------------------------------------------------------------------\n function keyframe() {\n whitespace();\n\n const vals = [];\n let m;\n\n while ((m = match(/^((\\d+\\.\\d+|\\.\\d+|\\d+)%?|[a-z]+)\\s*/))) {\n vals.push(m[1]);\n match(/^,\\s*/);\n }\n\n if (vals.length) {\n return {\n type : 'keyframe',\n values : vals,\n declarations: declarations()\n };\n }\n }\n\n function at_keyframes() {\n let m = match(/^@([-\\w]+)?keyframes\\s*/);\n\n if (!m) {\n return;\n }\n\n const vendor = m[1];\n\n m = match(/^([-\\w]+)\\s*/);\n\n if (!m) {\n return error('@keyframes missing name');\n }\n\n const name = m[1];\n\n if (!open()) {\n return error('@keyframes missing \\'{\\'');\n }\n\n let frame;\n let frames = comments();\n\n while ((frame = keyframe())) {\n frames.push(frame);\n frames = frames.concat(comments());\n }\n\n if (!close()) {\n return error('@keyframes missing \\'}\\'');\n }\n\n return {\n type : 'keyframes',\n name : name,\n vendor : vendor,\n keyframes: frames\n };\n }\n\n // @ Rules\n // -------------------------------------------------------------------------\n function at_page() {\n const m = match(/^@page */);\n if (m) {\n const sel = selector() || [];\n return { type: 'page', selectors: sel, declarations: declarations() };\n }\n }\n function at_page_margin_box() {\n const m = match(/@(top|bottom|left|right)-(left|center|right|top|middle|bottom)-?(corner)?\\s*/);\n if (m) {\n const name = `${m[1]}-${m[2]}` + (m[3] ? `-${m[3]}` : '');\n return { type: 'page-margin-box', name, declarations: declarations() };\n }\n }\n function at_fontface() {\n const m = match(/^@font-face\\s*/);\n if (m) { return { type: 'font-face', declarations: declarations() }; }\n }\n function at_supports() {\n const m = match(/^@supports *([^{]+)/);\n if (m) { return { type: 'supports', supports: m[1].trim(), rules: rules() }; }\n }\n function at_host() {\n const m = match(/^@host\\s*/);\n if (m) { return { type: 'host', rules: rules() }; }\n }\n function at_media() {\n const m = match(/^@media([^{]+)*/);\n if (m) { return { type: 'media', media: (m[1] || '').trim(), rules: rules() }; }\n }\n function at_custom_m() {\n const m = match(/^@custom-media\\s+(--[^\\s]+)\\s*([^{;]+);/);\n if (m) { return { type: 'custom-media', name: m[1].trim(), media: m[2].trim() }; }\n }\n function at_document() {\n const m = match(/^@([-\\w]+)?document *([^{]+)/);\n if (m) { return { type: 'document', document: m[2].trim(), vendor: m[1] ? m[1].trim() : null, rules: rules() }; }\n }\n function at_x() {\n const m = match(/^@(import|charset|namespace)\\s*([^;]+);/);\n if (m) { return { type: m[1], name: m[2].trim() }; }\n }\n function at_rule() {\n whitespace();\n\n if (css[0] === '@') {\n const ret =\n at_x() ||\n at_fontface() ||\n at_media() ||\n at_keyframes() ||\n at_supports() ||\n at_document() ||\n at_custom_m() ||\n at_host() ||\n at_page() ||\n at_page_margin_box(); // Must be last\n\n if (ret && !settings.preserveStatic) {\n let hasVarFunc = false;\n\n // @page, @font-face\n if (ret.declarations) {\n hasVarFunc = ret.declarations.some(decl => /var\\(/.test(decl.value));\n }\n // @keyframes, @media, @supports, etc.\n else {\n const arr = ret.keyframes || ret.rules || [];\n\n hasVarFunc = arr.some(obj => (obj.declarations || []).some(decl => /var\\(/.test(decl.value)));\n }\n\n return hasVarFunc ? ret : {};\n }\n\n return ret;\n }\n }\n\n // Rules\n // -------------------------------------------------------------------------\n function rule() {\n if (!settings.preserveStatic) {\n const balancedMatch = balanced('{', '}', css);\n\n // Skip rulset if it does not contain a root/host variable\n // declaration or a variable function value\n if (balancedMatch) {\n const hasVarDecl = /:(?:root|host)(?![.:#(])/.test(balancedMatch.pre) && /--\\S*\\s*:/.test(balancedMatch.body);\n const hasVarFunc = /var\\(/.test(balancedMatch.body);\n\n if (!hasVarDecl && !hasVarFunc) {\n css = css.slice(balancedMatch.end + 1);\n\n return {};\n }\n }\n }\n\n const sel = selector() || [];\n const decls = settings.preserveStatic ? declarations() : declarations().filter(decl => {\n const hasVarDecl = sel.some(s => /:(?:root|host)(?![.:#(])/.test(s)) && /^--\\S/.test(decl.property);\n const hasVarFunc = /var\\(/.test(decl.value);\n\n return hasVarDecl || hasVarFunc;\n });\n\n if (!sel.length) {\n error('selector missing');\n }\n\n return {\n type : 'rule',\n selectors : sel,\n declarations: decls\n };\n }\n\n function rules(core) {\n if (!core && !open()) {\n return error('missing \\'{\\'');\n }\n\n let node;\n let rules = comments();\n\n while (css.length && (core || css[0] !== '}') && (node = at_rule() || rule())) {\n if (node.type) {\n rules.push(node);\n }\n\n rules = rules.concat(comments());\n }\n\n if (!core && !close()) {\n return error('missing \\'}\\'');\n }\n\n return rules;\n }\n\n return {\n type: 'stylesheet',\n stylesheet: {\n rules: rules(true),\n errors: errors\n }\n };\n}\n\n\n// Exports\n// =============================================================================\nexport default parseCss;\n","// Dependencies\n// =============================================================================\nimport parseCss from './parse-css';\n\n\n// Functions\n// =============================================================================\n/**\n * Description\n *\n * @param {object|string} cssData CSS data to parse\n * @param {object} [options] Options object\n * @param {object} [options.store={}] CSS variable definitions to include during\n * transformation. Can be used to add new override exisitng definitions.\n * @param {function} [options.onWarning] Callback on each transformation\n * warning. Passes 1) warningMessage as an argument.\n * @returns {object}\n */\nfunction parseVars(cssData, options = {}) {\n const defaults = {\n parseHost: false,\n store : {},\n onWarning() {}\n };\n const settings = Object.assign({}, defaults, options);\n const reVarDeclSelectors = new RegExp(`:${ settings.parseHost ? 'host' : 'root' }$`);\n\n // Convert CSS string to AST\n if (typeof cssData === 'string') {\n cssData = parseCss(cssData, settings);\n }\n\n // Define variables\n cssData.stylesheet.rules.forEach(function(rule) {\n const varNameIndices = [];\n\n if (rule.type !== 'rule' || !rule.selectors.some(s => reVarDeclSelectors.test(s))) {\n return;\n }\n\n rule.declarations.forEach(function(decl, i) {\n const prop = decl.property;\n const value = decl.value;\n\n if (prop && prop.indexOf('--') === 0) {\n settings.store[prop] = value;\n varNameIndices.push(i);\n }\n });\n });\n\n // Return variable store\n return settings.store;\n}\n\n\n// Exports\n// =============================================================================\nexport default parseVars;\n","/**\n * Based on css parser/compiler by NxChg\n * https://github.com/NxtChg/pieces/tree/master/js/css_parser\n */\n\n\n// Functions\n// =============================================================================\n/**\n * Compiles CSS AST to string\n *\n * @param {object} tree CSS AST object\n * @param {string} [delim=''] CSS rule delimiter\n * @param {function} cb Function to be called before each node is processed\n * @returns {string}\n */\nfunction stringifyCss(tree, delim = '', cb) {\n const renderMethods = {\n charset(node) {\n return '@charset ' + node.name + ';';\n },\n comment(node) {\n // Preserve ponyfill marker comments\n return node.comment.indexOf('__CSSVARSPONYFILL') === 0 ? '/*' + node.comment + '*/' : '';\n },\n 'custom-media'(node) {\n return '@custom-media ' + node.name + ' ' + node.media + ';';\n },\n declaration(node) {\n return node.property + ':' + node.value + ';';\n },\n document(node) {\n return '@' + (node.vendor || '') + 'document ' + node.document + '{' + visit(node.rules) + '}';\n },\n 'font-face'(node) {\n return '@font-face' + '{' + visit(node.declarations) + '}';\n },\n host(node) {\n return '@host' + '{' + visit(node.rules) + '}';\n },\n import(node) {\n // FIXED\n return '@import ' + node.name + ';';\n },\n keyframe(node) {\n return node.values.join(',') + '{' + visit(node.declarations) + '}';\n },\n keyframes(node) {\n return '@' + (node.vendor || '') + 'keyframes ' + node.name + '{' + visit(node.keyframes) + '}';\n },\n media(node) {\n return '@media ' + node.media + '{' + visit(node.rules) + '}';\n },\n namespace(node) {\n return '@namespace ' + node.name + ';';\n },\n page(node) {\n return '@page ' + (node.selectors.length ? node.selectors.join(', ') : '') + '{' + visit(node.declarations) + '}';\n },\n 'page-margin-box'(node) {\n return '@' + node.name + '{' + visit(node.declarations) + '}';\n },\n rule(node) {\n const decls = node.declarations;\n\n if (decls.length) {\n return node.selectors.join(',') + '{' + visit(decls) + '}';\n }\n },\n supports(node) {\n // FIXED\n return '@supports ' + node.supports + '{' + visit(node.rules) + '}';\n }\n };\n\n function visit(nodes) {\n let buf = '';\n\n for (let i = 0; i < nodes.length; i++) {\n const n = nodes[i];\n\n if (cb) {\n cb(n);\n }\n\n const txt = renderMethods[n.type](n);\n\n if (txt) {\n buf += txt;\n\n if (txt.length && n.selectors) {\n buf += delim;\n }\n }\n }\n\n return buf;\n }\n\n return visit(tree.stylesheet.rules);\n}\n\n\n// Exports\n// =============================================================================\nexport default stringifyCss;\n","/**\n * Based on rework-visit by reworkcss\n * https://github.com/reworkcss/rework-visit\n */\n\n\n// Functions\n// =============================================================================\n/**\n * Visit `node` declarations recursively and invoke `fn(declarations, node)`.\n *\n * @param {object} node\n * @param {function} fn\n */\nfunction walkCss(node, fn){\n node.rules.forEach(function(rule){\n // @media etc\n if (rule.rules) {\n walkCss(rule, fn);\n\n return;\n }\n\n // keyframes\n if (rule.keyframes) {\n rule.keyframes.forEach(function(keyframe){\n if (keyframe.type === 'keyframe') {\n fn(keyframe.declarations, rule);\n }\n });\n\n return;\n }\n\n // @charset, @import etc\n if (!rule.declarations) {\n return;\n }\n\n fn(rule.declarations, node);\n });\n}\n\n\n// Exports\n// =============================================================================\nexport default walkCss;\n","/**\n * Based on rework-vars by reworkcss\n * https://github.com/reworkcss/rework-vars\n */\n\n\n// Dependencies\n// =============================================================================\nimport balanced from 'balanced-match';\nimport parseCss from './parse-css';\nimport stringifyCss from './stringify-css';\nimport walkCss from './walk-css';\n\n\n// Constants & Variables\n// =============================================================================\nconst VAR_PROP_IDENTIFIER = '--';\nconst VAR_FUNC_IDENTIFIER = 'var';\n\n\n// Functions\n// =============================================================================\n/**\n * Transforms W3C-style CSS variables to static values and returns an updated\n * CSS string.\n *\n * @param {object} cssData CSS text or AST\n * @param {object} [options] Options object\n * @param {boolean} [options.preserveStatic=true] Determines if CSS\n * declarations that do not reference a custom property will\n * be preserved in the transformed CSS\n * @param {boolean} [options.preserveVars=false] Determines if CSS custom\n * property declarations will be preserved in the transformed\n * CSS\n * @param {object} [options.variables={}] CSS variable definitions to include\n * during transformation. Can be used to add new override\n * exisitng definitions.\n * @param {function} [options.onWarning] Callback on each transformation\n * warning. Passes 1) warningMessage as an argument.\n * @returns {string}\n */\nfunction transformCss(cssData, options = {}) {\n const defaults = {\n preserveStatic: true,\n preserveVars : false,\n variables : {},\n onWarning() {}\n };\n const settings = Object.assign({}, defaults, options);\n\n // Convert CSS string to AST\n if (typeof cssData === 'string') {\n cssData = parseCss(cssData, settings);\n }\n\n // Resolve variables\n walkCss(cssData.stylesheet, function(declarations, node) {\n for (let i = 0; i < declarations.length; i++) {\n const decl = declarations[i];\n const type = decl.type;\n const prop = decl.property;\n const value = decl.value;\n\n // Skip comments\n if (type !== 'declaration') {\n continue;\n }\n\n // Remove custom property declarations\n if (!settings.preserveVars && prop && prop.indexOf(VAR_PROP_IDENTIFIER) === 0) {\n declarations.splice(i, 1);\n i--;\n continue;\n }\n\n // Transform custom property functions\n if (value.indexOf(VAR_FUNC_IDENTIFIER + '(') !== -1) {\n let resolvedValue = resolveValue(value, settings);\n\n if (resolvedValue !== decl.value) {\n // Fix nested calc\n resolvedValue = fixNestedCalc(resolvedValue);\n\n // Overwrite value\n if (!settings.preserveVars) {\n decl.value = resolvedValue;\n }\n // Insert new rule with resolved value\n else {\n declarations.splice(i, 0, {\n type : type,\n property: prop,\n value : resolvedValue\n });\n\n // Skip ahead of preserved declaration\n i++;\n }\n }\n }\n }\n });\n\n // Return CSS string\n return stringifyCss(cssData);\n}\n\n\n// Functions (Private)\n// =============================================================================\n/**\n * Removes nested calc keywords for legacy browser compatibility.\n * Example: calc(1 + calc(2 + calc(3 + 3))) => calc(1 + (2 + (3 + 3)))\n *\n * @param {value} string\n */\nfunction fixNestedCalc(value) {\n const reCalcVal = /calc\\(([^)]+)\\)/g;\n\n (value.match(reCalcVal) || []).forEach(match => {\n const newVal = `calc${match.split('calc').join('')}`;\n value = value.replace(match, newVal);\n });\n\n return value;\n}\n\n/**\n * Resolves CSS var() function(s) with `settings.variables` or fallback\n * value(s). Returns original `value` if unable to resolve.\n *\n * @param {string} value String containing CSS var() functions to resolve\n * @param {object} settings Settings object passed from transformCss()\n * @param {string} [__recursiveFallback] Fallback when unable to resolve CSS\n * var() function to a `settings.variables` or fallback value.\n * Allows restoring original var() function from recursive\n * resolveValue() calls.\n * @return {string} CSS value with var() function(s) resolved to\n * `settings.variables` or fallback value.\n *\n * @example\n *\n * resolveValue('10px var(--x) 30px', {'--x':'20px'}, {...settings});\n * // => '10px 20px 30px'\n *\n * resolveValue('10px', {}, {...settings});\n * // => '10px'\n */\nfunction resolveValue(value, settings = {}, __recursiveFallback) {\n if (value.indexOf('var(') === -1) {\n return value;\n }\n\n const valueData = balanced('(', ')', value);\n\n /**\n * Resolves contents of CSS custom property function\n *\n * @param {string} value String containing contents of CSS var() function\n * @returns {string}\n *\n * @example\n *\n * resolveFunc('--x, var(--y, green)')\n * // => obj['--x'] or obj['--y'] or 'green'\n *\n * resolveFunc('--fail')\n * // => 'var(--fail)' when obj['--fail'] does not exist\n */\n function resolveFunc(value) {\n const name = value.split(',')[0].replace(/[\\s\\n\\t]/g, '');\n const fallback = (value.match(/(?:\\s*,\\s*){1}(.*)?/) || [])[1];\n const match = Object.prototype.hasOwnProperty.call(settings.variables, name) ? String(settings.variables[name]) : undefined;\n const replacement = match || (fallback ? String(fallback) : undefined);\n const unresolvedFallback = __recursiveFallback || value;\n\n if (!match) {\n settings.onWarning(`variable \"${name}\" is undefined`);\n }\n\n if (replacement && replacement !== 'undefined' && replacement.length > 0) {\n return resolveValue(replacement, settings, unresolvedFallback);\n }\n else {\n return `var(${unresolvedFallback})`;\n }\n }\n\n // No balanced brace data\n if (!valueData) {\n if (value.indexOf('var(') !== -1) {\n settings.onWarning(`missing closing \")\" in the value \"${value}\"`);\n }\n\n return value;\n }\n // Balanced brace data is var() function\n else if (valueData.pre.slice(-3) === 'var') {\n const isEmptyVarFunc = valueData.body.trim().length === 0;\n\n if (isEmptyVarFunc) {\n settings.onWarning('var() must contain a non-whitespace string');\n\n return value;\n }\n else {\n return (\n valueData.pre.slice(0,-3)\n + resolveFunc(valueData.body)\n + resolveValue(valueData.post, settings)\n );\n }\n }\n // Balanced brace data is NOT var() function\n else {\n return (\n valueData.pre\n + `(${resolveValue(valueData.body, settings)})`\n + resolveValue(valueData.post, settings)\n );\n }\n}\n\n\n// Exports\n// =============================================================================\nexport default transformCss;\n","// Dependencies\n// =============================================================================\nimport getCssData from 'get-css-data';\nimport parseCss from './parse-css';\nimport parseVars from './parse-vars';\nimport stringifyCss from './stringify-css';\nimport transformCss from './transform-css';\n\n\n// Constants & Variables\n// =============================================================================\nconst isBrowser = typeof window !== 'undefined';\nconst isNativeSupport = isBrowser && window.CSS && window.CSS.supports && window.CSS.supports('(--a: 0)');\n\nconst counters = {\n group: 0,\n job : 0\n};\nconst defaults = {\n // Targets\n rootElement : isBrowser ? document : null,\n shadowDOM : false,\n // Sources\n include : 'style,link[rel=stylesheet]',\n exclude : '',\n variables : {}, // cssVars, transformCss\n // Options\n onlyLegacy : true, // cssVars\n preserveStatic: true, // parseCSS\n preserveVars : false, // transformCss\n silent : false, // cssVars\n updateDOM : true, // cssVars\n updateURLs : true, // cssVars\n watch : null, // cssVars\n // Callbacks\n onBeforeSend() {}, // cssVars\n onError() {}, // cssVars\n onWarning() {}, // transformCss\n onSuccess() {}, // cssVars\n onComplete() {}, // cssVars\n onFinally() {} // cssVars\n};\nconst regex = {\n // CSS comments\n cssComments: /\\/\\*[\\s\\S]+?\\*\\//g,\n // CSS keyframes\n // Ex: @keyframes & @-VENDOR-keyframes\n cssKeyframes: /@(?:-\\w*-)?keyframes/,\n // CSS media queries\n // Ex: @media (min-width: 640px) { ... }\n cssMediaQueries: /@media[^{]+\\{([\\s\\S]+?})\\s*}/g,\n // CSS Urls\n // Ex: url('path/to/file')\n cssUrls: /url\\((?!['\"]?(?:data|http|\\/\\/):)['\"]?([^'\")]*)['\"]?\\)/g,\n // CSS root/host rules\n // Ex: :root { ... } or :host { ... }\n cssVarDeclRules: /(?::(?:root|host)(?![.:#(])[\\s,]*[^{]*{\\s*[^}]*})/g,\n // CSS variable declarations (e.g. --color: red;)\n cssVarDecls: /(?:[\\s;]*)(-{2}\\w[\\w-]*)(?:\\s*:\\s*)([^;]*);/g,\n // CSS variable function (e.g. var(--color))\n cssVarFunc: /var\\(\\s*--[\\w-]/,\n // CSS variable root/host declarations and var() function values\n cssVars: /(?:(?::(?:root|host)(?![.:#(])[\\s,]*[^{]*{\\s*[^;]*;*\\s*)|(?:var\\(\\s*))(--[^:)]+)(?:\\s*[:)])/\n};\nconst variableStore = {\n // Parsed DOM values (from <link> and <style> nodes)\n dom : {},\n // Temporary storage for each job\n job : {},\n // Persisted options.variables values\n user: {}\n};\n\n// Flag used to prevent successive ponyfill calls from stacking\nlet cssVarsIsRunning = false;\n\n// Mutation observer reference created via options.watch\nlet cssVarsObserver = null;\n\n// Count used to detect manual removal of [data-cssvars=\"src\"] nodes\nlet cssVarsSrcNodeCount = 0;\n\n// Debounce timer used with options.watch\nlet debounceTimer = null;\n\n// Flag used to indicate if document-level custom property values have been\n// parsed, stored, and ready for use with options.shadowDOM\nlet isShadowDOMReady = false;\n\n\n// Functions\n// =============================================================================\n/**\n * Fetches, parses, and transforms CSS custom properties from specified\n * <style> and <link> elements into static values, then appends a new <style>\n * element with static values to the DOM to provide CSS custom property\n * compatibility for legacy browsers. Also provides a single interface for\n * live updates of runtime values in both modern and legacy browsers.\n *\n * @preserve\n * @param {object} [options] Options object\n * @param {object} [options.rootElement=document] Root element to traverse for\n * <link> and <style> nodes\n * @param {boolean} [options.shadowDOM=false] Determines if shadow DOM <link>\n * and <style> nodes will be processed.\n * @param {string} [options.include=\"style,link[rel=stylesheet]\"] CSS selector\n * matching <link re=\"stylesheet\"> and <style> nodes to\n * process\n * @param {string} [options.exclude] CSS selector matching <link\n * rel=\"stylehseet\"> and <style> nodes to exclude from those\n * matches by options.include\n * @param {object} [options.variables] A map of custom property name/value\n * pairs. Property names can omit or include the leading\n * double-hyphen (—), and values specified will override\n * previous values\n * @param {boolean} [options.onlyLegacy=true] Determines if the ponyfill will\n * only generate legacy-compatible CSS in browsers that lack\n * native support (i.e., legacy browsers)\n * @param {boolean} [options.preserveStatic=true] Determines if CSS\n * declarations that do not reference a custom property will\n * be preserved in the transformed CSS\n * @param {boolean} [options.preserveVars=false] Determines if CSS custom\n * property declarations will be preserved in the transformed\n * CSS\n * @param {boolean} [options.silent=false] Determines if warning and error\n * messages will be displayed on the console\n * @param {boolean} [options.updateDOM=true] Determines if the ponyfill will\n * update the DOM after processing CSS custom properties\n * @param {boolean} [options.updateURLs=true] Determines if the ponyfill will\n * convert relative url() paths to absolute urls\n * @param {boolean} [options.watch=false] Determines if a MutationObserver will\n * be created that will execute the ponyfill when a <link> or\n * <style> DOM mutation is observed\n * @param {function} [options.onBeforeSend] Callback before XHR is sent. Passes\n * 1) the XHR object, 2) source node reference, and 3) the\n * source URL as arguments\n * @param {function} [options.onError] Callback after a CSS parsing error has\n * occurred or an XHR request has failed. Passes 1) an error\n * message, and 2) source node reference, 3) xhr, and 4 url as\n * arguments.\n * @param {function} [options.onWarning] Callback after each CSS parsing warning\n * has occurred. Passes 1) a warning message as an argument.\n * @param {function} [options.onSuccess] Callback after CSS data has been\n * collected from each node and before CSS custom properties\n * have been transformed. Allows modifying the CSS data before\n * it is transformed by returning any string value (or false\n * to skip). Passes 1) CSS text, 2) source node reference, and\n * 3) the source URL as arguments.\n * @param {function} [options.onComplete] Callback after all CSS has been\n * processed, legacy-compatible CSS has been generated, and\n * (optionally) the DOM has been updated. Passes 1) a CSS\n * string with CSS variable values resolved, 2) an array of\n * output <style> node references that have been appended to\n * the DOM, 3) an object containing all custom properies names\n * and values, and 4) the ponyfill execution time in\n * milliseconds.\n * @param {function} [options.onFinally] Callback in modern and legacy browsers\n * after the ponyfill has finished all tasks. Passes 1) a\n * boolean indicating if the last ponyfill call resulted in a\n * style change, 2) a boolean indicating if the current\n * browser provides native support for CSS custom properties,\n * and 3) the ponyfill execution time in milliseconds.\n * @example\n *\n * cssVars({\n * rootElement : document,\n * shadowDOM : false,\n * include : 'style,link[rel=\"stylesheet\"]',\n * exclude : '',\n * variables : {},\n * onlyLegacy : true,\n * preserveStatic: true,\n * preserveVars : false,\n * silent : false,\n * updateDOM : true,\n * updateURLs : true,\n * watch : false,\n * onBeforeSend(xhr, node, url) {},\n * onError(message, node, xhr, url) {},\n * onWarning(message) {},\n * onSuccess(cssText, node, url) {},\n * onComplete(cssText, styleNode, cssVariables, benchmark) {},\n * onFinally(hasChanged, hasNativeSupport, benchmark)\n * });\n */\nfunction cssVars(options = {}) {\n const msgPrefix = 'cssVars(): ';\n const settings = Object.assign({}, defaults, options);\n\n function handleError(message, sourceNode, xhr, url) {\n /* istanbul ignore next */\n if (!settings.silent && window.console) {\n // eslint-disable-next-line\n console.error(`${msgPrefix}${message}\\n`, sourceNode);\n }\n\n settings.onError(message, sourceNode, xhr, url);\n }\n\n function handleWarning(message) {\n /* istanbul ignore next */\n if (!settings.silent && window.console) {\n // eslint-disable-next-line\n console.warn(`${msgPrefix}${message}`);\n }\n\n settings.onWarning(message);\n }\n\n function handleFinally(hasChanged) {\n settings.onFinally(\n Boolean(hasChanged),\n isNativeSupport,\n getTimeStamp() - settings.__benchmark\n );\n }\n\n // Exit if non-browser environment (e.g. Node)\n if (!isBrowser) {\n return;\n }\n\n // Add / recreate MutationObserver\n if (settings.watch) {\n settings.watch = defaults.watch;\n addMutationObserver(settings);\n cssVars(settings);\n return;\n }\n // Disconnect existing MutationObserver\n else if (settings.watch === false && cssVarsObserver) {\n cssVarsObserver.disconnect();\n cssVarsObserver = null;\n }\n\n // If benchmark key is not availalbe, this is a non-recursive call\n if (!settings.__benchmark) {\n // Check flag and debounce to prevent successive call from stacking\n if (cssVarsIsRunning === settings.rootElement) {\n cssVarsDebounced(options);\n return;\n }\n\n // Store benchmark start time\n settings.__benchmark = getTimeStamp();\n\n // Exclude previously processed elements\n settings.exclude = [\n // 1. When the ponyfill is called by the MutationObserver, all\n // previously processed nodes are exluded except those that have\n // had their out/skip/src values cleared by the MutationObserver.\n // 2. When the ponyfill is called directly, only output nodes are\n // excluded. This allows the ponyfill to update skip/src nodes\n // after a previously processed link/style node has been removed.\n cssVarsObserver ? '[data-cssvars]:not([data-cssvars=\"\"])' : '[data-cssvars=\"out\"]',\n settings.exclude\n ].filter(selector => selector).join(',');\n\n // Fix malformed custom property names (e.g. \"color\" or \"-color\")\n settings.variables = fixVarNames(settings.variables);\n\n // Direct call preparation (i.e. non-MutationObserver call)\n if (!cssVarsObserver) {\n const outNodes = Array.apply(null, settings.rootElement.querySelectorAll('[data-cssvars=\"out\"]'));\n\n // Remove orphaned output nodes\n outNodes.forEach(outNode => {\n const dataGroup = outNode.getAttribute('data-cssvars-group');\n const srcNode = dataGroup ? settings.rootElement.querySelector(`[data-cssvars=\"src\"][data-cssvars-group=\"${dataGroup}\"]`) : null;\n\n if (!srcNode) {\n outNode.parentNode.removeChild(outNode);\n }\n });\n\n // Handle removed source nodes\n if (cssVarsSrcNodeCount) {\n const srcNodes = settings.rootElement.querySelectorAll('[data-cssvars]:not([data-cssvars=\"out\"])');\n\n if (srcNodes.length < cssVarsSrcNodeCount) {\n // Update source node count\n cssVarsSrcNodeCount = srcNodes.length;\n\n // Reset variableStore\n variableStore.dom = {};\n }\n }\n }\n }\n\n // Verify readyState to ensure all <link> and <style> nodes are available\n if (document.readyState !== 'loading') {\n // Native support\n if (isNativeSupport && settings.onlyLegacy) {\n let hasVarChange = false;\n\n // Apply settings.variables\n if (settings.updateDOM) {\n const targetElm = settings.rootElement.host || (settings.rootElement === document ? document.documentElement : settings.rootElement);\n\n // Set variables using native methods\n Object.keys(settings.variables).forEach(key => {\n const varValue = settings.variables[key];\n\n hasVarChange = hasVarChange || varValue !== getComputedStyle(targetElm).getPropertyValue(key);\n targetElm.style.setProperty(key, varValue);\n });\n }\n\n handleFinally(hasVarChange);\n }\n // Ponyfill: Handle rootElement set to a shadow host or root\n else if (!isShadowDOMReady && (settings.shadowDOM || settings.rootElement.shadowRoot || settings.rootElement.host)) {\n // Get all document-level CSS\n getCssData({\n rootElement : defaults.rootElement,\n include : defaults.include,\n exclude : settings.exclude,\n skipDisabled: false,\n onSuccess(cssText, node, url) {\n cssText = cssText\n .replace(regex.cssComments, '')\n .replace(regex.cssMediaQueries, '');\n\n cssText = (cssText.match(regex.cssVarDeclRules) || []).join('');\n\n // Return only matching :root {...} blocks\n return cssText || false;\n },\n onComplete(cssText, cssArray, nodeArray) {\n // Parse variables and store in variableStore. This step\n // ensures that variableStore contains all document-level\n // custom property values for subsequent ponyfill calls.\n parseVars(cssText, {\n store : variableStore.dom,\n onWarning: handleWarning\n });\n\n isShadowDOMReady = true;\n\n // Call the ponyfill again to process the rootElement\n // initially specified. Values stored in variableStore will\n // be used to transform values in shadow host/root elements.\n cssVars(settings);\n }\n });\n }\n // Ponyfill: Process CSS\n else {\n // Set flag to prevent successive call from stacking. Using the\n // rootElement insead of `true` allows simultaneous ponyfill calls\n // using different rootElement values (e.g. documetn and one-or-more\n // shadowDOM nodes).\n cssVarsIsRunning = settings.rootElement;\n\n getCssData({\n rootElement : settings.rootElement,\n include : settings.include,\n exclude : settings.exclude,\n skipDisabled: false,\n onBeforeSend: settings.onBeforeSend,\n onError(xhr, node, url) {\n const responseUrl = xhr.responseURL || getFullUrl(url, location.href);\n const statusText = xhr.statusText ? `(${xhr.statusText})` : 'Unspecified Error' + (xhr.status === 0 ? ' (possibly CORS related)' : '');\n const errorMsg = `CSS XHR Error: ${responseUrl} ${xhr.status} ${statusText}`;\n\n handleError(errorMsg, node, xhr, responseUrl);\n },\n onSuccess(cssText, node, url) {\n const returnVal = settings.onSuccess(cssText, node, url);\n\n // Use callback return value if provided (skip CSS if false)\n cssText = returnVal !== undefined && Boolean(returnVal) === false ? '' : returnVal || cssText;\n\n // Convert relative url(...) values to absolute\n if (settings.updateURLs) {\n cssText = fixRelativeCssUrls(cssText, url);\n }\n\n return cssText;\n },\n onComplete(cssText, cssArray, nodeArray = []) {\n const currentVars = Object.assign({}, variableStore.dom, variableStore.user);\n\n let hasVarChange = false;\n\n // Reset temporary variable store\n variableStore.job = {};\n\n // Parse CSS and variables\n nodeArray.forEach((node, i) => {\n const nodeCSS = cssArray[i];\n\n // Only process CSS contains a custom property\n // declarations or function\n if (regex.cssVars.test(nodeCSS)) {\n try {\n const cssTree = parseCss(nodeCSS, {\n preserveStatic: settings.preserveStatic,\n removeComments: true\n });\n\n // Parse variables\n parseVars(cssTree, {\n parseHost: Boolean(settings.rootElement.host),\n store : variableStore.dom,\n onWarning: handleWarning\n });\n\n // Cache data\n node.__cssVars = { tree: cssTree };\n }\n catch(err) {\n handleError(err.message, node);\n }\n }\n });\n\n // Merge DOM values with job values\n Object.assign(variableStore.job, variableStore.dom);\n\n if (settings.updateDOM) {\n // Persist user values\n Object.assign(variableStore.user, settings.variables);\n\n // Merge persisted user values with job values\n Object.assign(variableStore.job, variableStore.user);\n }\n else {\n // Merge persisted and non-persisted user values with job values\n Object.assign(variableStore.job, variableStore.user, settings.variables);\n\n // Update currentVars with non-persisted user values\n Object.assign(currentVars, settings.variables);\n }\n\n // Detect new variable declaration or changed value\n hasVarChange =\n // Ponyfill has been called before with updateDOM\n counters.job > 0 &&\n // New/Change\n Boolean(\n // New declaration\n (Object.keys(variableStore.job).length > Object.keys(currentVars).length) ||\n // Changed declaration value\n Boolean(\n // Previous declarations exist\n Object.keys(currentVars).length &&\n // At least one job value does has changed\n Object.keys(variableStore.job).some(key => variableStore.job[key] !== currentVars[key])\n )\n );\n\n // New variable declaration or modified value detected\n if (hasVarChange) {\n resetCssNodes(settings.rootElement);\n cssVars(settings);\n }\n // No variable changes detected\n else {\n const outCssArray = [];\n const outNodeArray = [];\n\n let hasKeyframesWithVars = false;\n\n // Increment job\n if (settings.updateDOM) {\n counters.job++;\n }\n\n nodeArray.forEach((node, i) => {\n let isSkip = !node.__cssVars;\n\n if (node.__cssVars) {\n try {\n transformCss(node.__cssVars.tree, Object.assign({}, settings, {\n variables: variableStore.job,\n onWarning: handleWarning\n }));\n\n const outCss = stringifyCss(node.__cssVars.tree);\n\n if (settings.updateDOM) {\n const nodeCSS = cssArray[i];\n const hasCSSVarFunc = regex.cssVarFunc.test(nodeCSS);\n\n if (!node.getAttribute('data-cssvars')) {\n node.setAttribute('data-cssvars', 'src');\n }\n\n if (outCss.length && hasCSSVarFunc) {\n const dataGroup = node.getAttribute('data-cssvars-group') || ++counters.group;\n const outCssNoSpaces = outCss.replace(/\\s/g,'');\n const outNode = settings.rootElement.querySelector(`[data-cssvars=\"out\"][data-cssvars-group=\"${dataGroup}\"]`) || document.createElement('style');\n\n hasKeyframesWithVars = hasKeyframesWithVars || regex.cssKeyframes.test(outCss);\n\n // Disable source stylesheet\n if (settings.preserveStatic) {\n node.sheet.disabled = true;\n }\n\n if (!outNode.hasAttribute('data-cssvars')) {\n outNode.setAttribute('data-cssvars', 'out');\n }\n\n // Non-transformed CSS\n if (outCssNoSpaces === node.textContent.replace(/\\s/g,'')) {\n isSkip = true;\n\n if (outNode && outNode.parentNode) {\n node.removeAttribute('data-cssvars-group');\n outNode.parentNode.removeChild(outNode);\n }\n }\n // Transformed CSS\n else if (outCssNoSpaces !== outNode.textContent.replace(/\\s/g,'')) {\n [node, outNode].forEach(n => {\n n.setAttribute('data-cssvars-job', counters.job);\n n.setAttribute('data-cssvars-group', dataGroup);\n });\n outNode.textContent = outCss;\n outCssArray.push(outCss);\n outNodeArray.push(outNode);\n\n if (!outNode.parentNode) {\n node.parentNode.insertBefore(outNode, node.nextSibling);\n }\n }\n }\n }\n else {\n if (node.textContent.replace(/\\s/g,'') !== outCss) {\n outCssArray.push(outCss);\n }\n }\n }\n catch(err) {\n handleError(err.message, node);\n }\n }\n\n if (isSkip) {\n node.setAttribute('data-cssvars', 'skip');\n }\n\n if (!node.hasAttribute('data-cssvars-job')) {\n node.setAttribute('data-cssvars-job', counters.job);\n }\n });\n\n // Update source node count\n cssVarsSrcNodeCount = settings.rootElement.querySelectorAll('[data-cssvars]:not([data-cssvars=\"out\"])').length;\n\n // Process shadow DOM\n if (settings.shadowDOM) {\n const elms = [\n settings.rootElement,\n ...settings.rootElement.querySelectorAll('*')\n ];\n\n // Iterates over all elements in rootElement and calls\n // cssVars on each shadowRoot, passing document-level\n // custom properties as options.variables.\n for (let i = 0, elm; (elm = elms[i]); ++i) {\n if (elm.shadowRoot && elm.shadowRoot.querySelector('style')) {\n const shadowSettings = Object.assign({}, settings, {\n rootElement: elm.shadowRoot\n });\n\n cssVars(shadowSettings);\n }\n }\n }\n\n // Fix keyframes\n if (settings.updateDOM && hasKeyframesWithVars) {\n fixKeyframes(settings.rootElement);\n }\n\n // Reset running flag. Must be done before onComplete\n // callback to avoid a callback error preventing the\n // flag from being reset after the callback.\n cssVarsIsRunning = false;\n\n // Callbacks\n settings.onComplete(\n outCssArray.join(''),\n outNodeArray,\n JSON.parse(JSON.stringify(variableStore.job)),\n getTimeStamp() - settings.__benchmark\n );\n\n handleFinally(outNodeArray.length);\n }\n }\n });\n }\n }\n // Delay function until DOMContentLoaded event is fired\n /* istanbul ignore next */\n else {\n document.addEventListener('DOMContentLoaded', function init(evt) {\n cssVars(options);\n\n document.removeEventListener('DOMContentLoaded', init);\n });\n }\n}\n\n// Ponyfill reset\ncssVars.reset = function() {\n // Reset counters\n counters.job = 0;\n counters.group = 0;\n\n // Reset running flag\n cssVarsIsRunning = false;\n\n // Disconnect MutationObserver\n if (cssVarsObserver) {\n cssVarsObserver.disconnect();\n cssVarsObserver = null;\n }\n\n // Reset source node count\n cssVarsSrcNodeCount = 0;\n\n // Reset debounce timer\n debounceTimer = null;\n\n // Reset shadowDOM ready flag\n isShadowDOMReady = false;\n\n // Reset variable storage\n for (const prop in variableStore) {\n variableStore[prop] = {};\n }\n};\n\n\n// Functions (Private)\n// =============================================================================\n/**\n * Creates mutation observer that executes the ponyfill when a <link> or <style>\n * DOM mutation is observed.\n *\n * @param {object} settings\n */\nfunction addMutationObserver(settings) {\n function isLink(node) {\n const isStylesheet = node.tagName === 'LINK' && (node.getAttribute('rel') || '').indexOf('stylesheet') !== -1;\n\n return isStylesheet && !node.sheet.disabled;\n }\n function isStyle(node) {\n return node.tagName === 'STYLE' && !node.sheet.disabled;\n }\n function isValidAddMutation(mutationNodes) {\n return Array.apply(null, mutationNodes).some(node => {\n const isElm = node.nodeType === 1;\n const hasAttr = isElm && node.hasAttribute('data-cssvars');\n const isStyleWithVars = isStyle(node) && regex.cssVars.test(node.textContent);\n const isValid = !hasAttr && (isLink(node) || isStyleWithVars);\n\n return isValid;\n });\n }\n function isValidRemoveMutation(mutationNodes) {\n return Array.apply(null, mutationNodes).some(node => {\n const isElm = node.nodeType === 1;\n const isOutNode = isElm && node.getAttribute('data-cssvars') === 'out';\n const isSrcNode = isElm && node.getAttribute('data-cssvars') === 'src';\n const isValid = isSrcNode;\n\n if (isSrcNode || isOutNode) {\n const dataGroup = node.getAttribute('data-cssvars-group');\n const orphanNode = settings.rootElement.querySelector(`[data-cssvars-group=\"${dataGroup}\"]`);\n\n if (isSrcNode) {\n resetCssNodes(settings.rootElement);\n variableStore.dom = {};\n }\n\n if (orphanNode) {\n orphanNode.parentNode.removeChild(orphanNode);\n }\n }\n\n return isValid;\n });\n }\n\n if (!window.MutationObserver) {\n return;\n }\n\n if (cssVarsObserver) {\n cssVarsObserver.disconnect();\n cssVarsObserver = null;\n }\n\n cssVarsObserver = new MutationObserver(function(mutations) {\n const hasValidMutation = mutations.some((mutation) => {\n let isValid = false;\n\n if (mutation.type === 'attributes') {\n isValid = isLink(mutation.target);\n }\n else if (mutation.type === 'childList') {\n isValid = isValidAddMutation(mutation.addedNodes) || isValidRemoveMutation(mutation.removedNodes);\n }\n\n return isValid;\n });\n\n if (hasValidMutation) {\n cssVars(settings);\n }\n });\n\n cssVarsObserver.observe(document.documentElement, {\n attributes : true,\n attributeFilter: ['disabled', 'href'],\n childList : true,\n subtree : true\n });\n}\n\n/**\n * Debounces cssVars() calls\n *\n * @param {object} settings\n */\nfunction cssVarsDebounced(settings, delay = 100) {\n clearTimeout(debounceTimer);\n debounceTimer = setTimeout(function() {\n settings.__benchmark = null;\n cssVars(settings);\n }, delay);\n}\n\n/**\n * Fixes issue with keyframe properties set using CSS custom property not being\n * applied properly in some legacy (IE) and modern (Safari) browsers.\n *\n * @param {object} rootElement\n */\nfunction fixKeyframes(rootElement) {\n const animationNameProp = [\n 'animation-name',\n '-moz-animation-name',\n '-webkit-animation-name'\n ].filter(prop => getComputedStyle(document.body)[prop])[0];\n\n if (animationNameProp) {\n const allNodes = rootElement.getElementsByTagName('*');\n const keyframeNodes = [];\n const nameMarker = '__CSSVARSPONYFILL-KEYFRAMES__';\n\n // Modify animation name\n for (let i = 0, len = allNodes.length; i < len; i++) {\n const node = allNodes[i];\n const animationName = getComputedStyle(node)[animationNameProp];\n\n if (animationName !== 'none') {\n node.style[animationNameProp] += nameMarker;\n keyframeNodes.push(node);\n }\n }\n\n // Force reflow\n void document.body.offsetHeight;\n\n // Restore animation name\n for (let i = 0, len = keyframeNodes.length; i < len; i++) {\n const nodeStyle = keyframeNodes[i].style;\n\n nodeStyle[animationNameProp] = nodeStyle[animationNameProp].replace(nameMarker, '');\n }\n }\n}\n\n/**\n * Convert relative CSS url(...) values to absolute based on baseUrl\n *\n * @param {string} cssText\n * @param {string} baseUrl\n * @returns {string}\n */\nfunction fixRelativeCssUrls(cssText, baseUrl) {\n const cssUrls = cssText\n // Remove comments\n .replace(regex.cssComments, '')\n // Match url(...) values\n .match(regex.cssUrls) || [];\n\n cssUrls.forEach(cssUrl => {\n const oldUrl = cssUrl.replace(regex.cssUrls, '$1');\n const newUrl = getFullUrl(oldUrl, baseUrl);\n\n cssText = cssText.replace(cssUrl, cssUrl.replace(oldUrl, newUrl));\n });\n\n return cssText;\n}\n\n/**\n * Converts all object property names to leading '--' style\n *\n * @param {object} varObj Object containing CSS custom property name:value pairs\n * @returns {object}\n */\nfunction fixVarNames(varObj = {}) {\n const reLeadingHyphens = /^-{2}/;\n\n return Object.keys(varObj).reduce((obj, value) => {\n const key = reLeadingHyphens.test(value) ? value : `--${value.replace(/^-+/, '')}`;\n\n obj[key] = varObj[value];\n\n return obj;\n }, {});\n}\n\n/**\n * Returns fully qualified URL from relative URL and (optional) base URL\n *\n * @param {string} url\n * @param {string} [base=location.href]\n * @returns {string}\n */\nfunction getFullUrl(url, base = location.href) {\n const d = document.implementation.createHTMLDocument('');\n const b = d.createElement('base');\n const a = d.createElement('a');\n\n d.head.appendChild(b);\n d.body.appendChild(a);\n b.href = base;\n a.href = url;\n\n return a.href;\n}\n\n/**\n * Returns a time stamp in milliseconds\n *\n * @returns {number}\n */\nfunction getTimeStamp() {\n return isBrowser && (window.performance || {}).now ? window.performance.now() : new Date().getTime();\n}\n\nfunction resetCssNodes(rootElement) {\n const resetNodes = Array.apply(null, rootElement.querySelectorAll('[data-cssvars=\"skip\"],[data-cssvars=\"src\"]'));\n\n resetNodes.forEach(node => node.setAttribute('data-cssvars', ''));\n}\n\n\n// Export\n// =============================================================================\nexport default cssVars;\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\" _key\":\"diff-test/App\",\"root\":\"App-m__root__df891dLaFAR\"};","import { tsx, create } from '@dojo/framework/core/vdom';\nimport theme from '@dojo/framework/core/middleware/theme';\nimport Outlet from '@dojo/framework/routing/Outlet';\nimport dojo from '@dojo/widgets/theme/dojo';\n\nimport Menu from './widgets/Menu';\nimport Home from './widgets/Home';\nimport About from './widgets/About';\nimport Profile from './widgets/Profile';\n\nimport * as css from './App.m.css';\n\nconst factory = create({ theme });\n\nexport default factory(function App({ middleware: { theme } }) {\n\tif (!theme.get()) {\n\t\ttheme.set(dojo);\n\t}\n\treturn (\n\t\t<div classes={[css.root]}>\n\t\t\t<Menu />\n\t\t\t<Outlet id=\"main\">\n\t\t\t\t{{\n\t\t\t\t\thome: <Home />,\n\t\t\t\t\tabout: <About />,\n\t\t\t\t\tprofile: <Profile username=\"Dojo User\" />\n\t\t\t\t}}\n\t\t\t</Outlet>\n\t\t</div>\n\t);\n});\n","import renderer, { tsx } from '@dojo/framework/core/vdom';\nimport Registry from '@dojo/framework/core/Registry';\nimport { registerRouterInjector } from '@dojo/framework/routing/RouterInjector';\n\nimport routes from './routes';\nimport App from './App';\n\nconst registry = new Registry();\nregisterRouterInjector(routes, registry);\n\nconst r = renderer(() => <App />);\nr.mount({ registry, domNode: document.getElementById('app') });\n","export default [\n\t{\n\t\tid: 'home',\n\t\tpath: 'home',\n\t\toutlet: 'main',\n\t\tdefaultRoute: true\n\t},\n\t{\n\t\tid: 'about',\n\t\tpath: 'about',\n\t\toutlet: 'main'\n\t},\n\t{\n\t\tid: 'profile',\n\t\tpath: 'profile',\n\t\toutlet: 'main'\n\t}\n];\n","import { tsx, create } from '@dojo/framework/core/vdom';\nimport Link from '@dojo/framework/routing/ActiveLink';\nimport Header from '@dojo/widgets/header';\n\nimport * as css from './styles/Menu.m.css';\n\nconst factory = create();\n\nexport default factory(function Menu() {\n\treturn (\n\t\t<div classes={css.root}>\n\t\t\t<Header>\n\t\t\t\t{{\n\t\t\t\t\ttitle: 'My Dojo App!',\n\t\t\t\t\tactions: (\n\t\t\t\t\t\t<virtual>\n\t\t\t\t\t\t\t<Link to=\"home\" classes={[css.link]} activeClasses={[css.selected]}>\n\t\t\t\t\t\t\t\tHome\n\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t\t<Link to=\"about\" classes={[css.link]} activeClasses={[css.selected]}>\n\t\t\t\t\t\t\t\tAbout\n\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t\t<Link to=\"profile\" classes={[css.link]} activeClasses={[css.selected]}>\n\t\t\t\t\t\t\t\tProfile\n\t\t\t\t\t\t\t</Link>\n\t\t\t\t\t\t</virtual>\n\t\t\t\t\t)\n\t\t\t\t}}\n\t\t\t</Header>\n\t\t</div>\n\t);\n});\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\" _key\":\"diff-test/Menu\",\"root\":\"Menu-m__root__df891d3jZMJ\",\"link\":\"Menu-m__link__df891d1c9_f\",\"selected\":\"Menu-m__selected__df891d3pg72\"};"],"sourceRoot":""}