{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./components/webrequest.js","webpack:///./components/comms.js","webpack:///../src/util.js","webpack:///../src/index.js","webpack:///./components/sidebar.js","webpack:///./routes/home/index.js?ae36","webpack:///../node_modules/@preact/async-loader/async-legacy.js","webpack:///./components/popup.js","webpack:///./components/audioplayer.js","webpack:///./components/app.js","webpack:///./index.js","webpack:///../src/create-element.js","webpack:///../src/component.js","webpack:///../src/diff/children.js","webpack:///../src/diff/props.js","webpack:///../src/diff/index.js","webpack:///../src/render.js","webpack:///../src/clone-element.js","webpack:///../src/constants.js","webpack:///../src/options.js","webpack:///../src/diff/catch-error.js","webpack:///../node_modules/preact-cli/lib/lib/entry.js"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","__webpack_require__","installedModules","exports","module","l","0","e","promises","installedChunkData","promise","Promise","resolve","reject","onScriptComplete","script","document","createElement","charset","timeout","nc","setAttribute","src","p","jsonpScriptSrc","error","Error","event","onerror","onload","clearTimeout","chunk","errorType","type","realSrc","target","message","name","request","undefined","setTimeout","head","appendChild","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","err","console","jsonpArray","window","oldJsonpFunction","slice","s","send","url","method","callbackSuccess","callbackFailure","json","JSON","stringify","xhr","XMLHttpRequest","open","setRequestHeader","statusCode","readyState","status","responseJSON","responseText","parse","errorObject","dataStore","clear","broadcast","setInitial","set","update","keys","forEach","subscribe","func","subscribers","unsubscribe","newSubscribers","subscriberFunc","this","withData","WrappedComponent","updateOnBroadcast","props","state","componentDidMount","forceUpdate","render","Component","setInitialData","setData","let","EMPTY","getCurrentUrl","location","getCurrentLocation","pathname","search","route","replace","ROUTERS","canRoute","history","setUrl","routeTo","didRoute","routeFromLink","node","getAttribute","href","match","handleLinkClick","ctrlKey","metaKey","altKey","shiftKey","button","currentTarget","prevent","stopImmediatePropagation","stopPropagation","preventDefault","delegateLinkHandler","String","nodeName","toUpperCase","hasAttribute","parentNode","eventListenersInitialized","super","addEventListener","shouldComponentUpdate","static","onChange","const","children","getMatchingChildren","setState","updating","componentWillMount","unlisten","listen","componentWillUnmount","splice","indexOf","componentWillUpdate","componentDidUpdate","invoke","filter","prepareVNodeForRanking","sort","pathRankSort","map","vnode","matches","exec","path","newProps","ref","Boolean","active","current","previous","previousUrl","router","Router","Route","component","Link","onClick","Sidebar","className","style","width","maxWidth","borderRadius","req","Async","b","old","base","nextBase","__b","child","default","_","nxt","nodeType","h","dangerouslySetInnerHTML","__html","innerHTML","constructor","cb","Popup","position","top","left","right","bottom","backgroundColor","opacity","audioPlayerContext","audioBuffers","audioTag","initiated","play","source","createBufferSource","buffer","connect","destination","start","init","AudioPlayerContext","AudioContext","webkitAudioContext","Audio","load","playOnLoad","responseType","decodeAudioData","response","blob","Blob","audioUrl","URL","createObjectURL","webrequest","require","config","defaultStore","stats","online","projects","activity","availability","weekly","today","x","y","timezoneoffset","internetconnection","color","feed","App","refreshData","resourcesurl","websocketConnected","connectWebsocket","disconnectWebsocket","websocketConnection","WebSocket","websocketendpoint","session","onopen","log","websocketHeartbeatInterval","setInterval","heartbeatWebsocket","onclose","clearInterval","onmessage","payload","jsonError","eventName","popup","popupmessage","audioplayer","OPEN","close","handleRoute","currentUrl","createSession","localStorage","getItem","crypto","msCrypto","xCrypto","getRandomValues","Uint8Array","toString","Math","random","uuid","setItem","closePopup","refreshInterval","id","minHeight","assign","obj","removeNode","removeChild","normalizedProps","arguments","defaultProps","createVNode","_children","_parent","_depth","_dom","_nextDom","_component","options","Fragment","context","getDomSibling","childIndex","sibling","updateParentDomPointers","enqueueRender","_dirty","rerenderQueue","prevDebounce","debounceRendering","defer","process","commitQueue","newDom","oldDom","parentDom","a","_vnode","pop","_parentDom","diff","_globalContext","ownerSVGElement","commitRoot","diffChildren","newParentVNode","oldParentVNode","globalContext","isSvg","excessDomChildren","isHydrating","j","oldVNode","sibDom","firstChildDom","refs","oldChildren","EMPTY_ARR","oldChildrenLength","EMPTY_OBJ","toChildArray","childVNode","nextDom","outer","nextSibling","insertBefore","unmount","applyRef","callback","flattened","Array","isArray","setStyle","setProperty","IS_NON_DIMENSIONAL","test","dom","oldValue","useCapture","nameLower","cssText","toLowerCase","eventProxy","_listeners","removeEventListener","removeAttributeNS","setAttributeNS","removeAttribute","newVNode","tmp","isNew","oldProps","oldState","snapshot","clearProcessingException","provider","componentContext","newType","_diff","contextType","_id","_defaultValue","_processingException","_pendingError","doRender","sub","_renderCallbacks","_nextState","getDerivedStateFromProps","componentWillReceiveProps","_force","_render","getChildContext","getSnapshotBeforeUpdate","diffElementNodes","diffed","_catchError","root","_commit","some","oldHtml","newHtml","localName","createTextNode","createElementNS","is","childNodes","attributes","hydrate","diffProps","checked","parentVNode","skipRemove","replaceNode","_root","IS_HYDRATE","cloneElement","hasCaught","getDerivedStateFromError","componentDidCatch","then","Preact","interopDefault","navigator","serviceWorker","register","__webpack_public_path__","getElementById","body","firstElementChild","app","preRenderData","inlineDataElement","querySelector","tagName","CLI_DATA"],"mappings":"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","file":"bundle.e32a7.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t};\n\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t0: 0\n \t};\n\n\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"\" + ({\"2\":\"route-home\"}[chunkId]||chunkId) + \".chunk.\" + {\"2\":\"cee21\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = \"mdyV\");\n","\r\n\r\n\r\nconst send = (url, method, data, callbackSuccess, callbackFailure) => {\r\n\r\n try {\r\n var json = data !== undefined && data !== null ? JSON.stringify(data) : undefined;\r\n var xhr = new XMLHttpRequest();\r\n \r\n xhr.open(method, url, true);\r\n //xhr.withCredentials = true;\r\n if(method == \"POST\" || method == \"PUT\") {\r\n xhr.setRequestHeader('Content-type','application/json; charset=utf-8');\r\n }\r\n xhr.onload = () => {\r\n var statusCode = 400;\r\n if(xhr.readyState == 4) {\r\n statusCode = xhr.status;\r\n var responseJSON = xhr.responseText !== undefined && xhr.responseText !== null && xhr.responseText != '' ? JSON.parse(xhr.responseText) : null;\r\n if (statusCode >= 200 && statusCode < 300) {\r\n callbackSuccess(responseJSON);\r\n } else {\r\n if(responseJSON !== null) {\r\n callbackFailure({statusCode, errorObject: responseJSON});\r\n }\r\n else {\r\n var errorObject = {\"\":[{message:\"Unknown Error\"}]};\r\n if(statusCode == 400) {\r\n errorObject = {\"\":[{message:\"Bad request / Communications error\"}]};\r\n }\r\n if(statusCode == 401) {\r\n errorObject = {\"\":[{message:\"Unauthenticated / restricted content\"}]};\r\n }\r\n if(statusCode == 403) {\r\n errorObject = {\"\":[{message:\"Unauthorized / forbidden\"}]};\r\n }\r\n if(statusCode == 404) {\r\n errorObject = {\"\":[{message:\"Resource not found\"}]};\r\n }\r\n if(statusCode == 500) {\r\n errorObject = {\"\":[{message:\"Server error\"}]};\r\n }\r\n callbackFailure({statusCode, errorObject});\r\n }\r\n }\r\n }\r\n\r\n }\r\n xhr.onerror = () => {\r\n callbackFailure({statusCode: 400, errorObject: {\"\":[{message:\"Communications error\"}]}});\r\n }\r\n xhr.send(json);\r\n }\r\n catch(e) {\r\n callbackFailure({statusCode: 400, errorObject: {\"\":[{message:\"Communications error\"}]}});\r\n }\r\n\r\n}\r\n\r\n\r\nmodule.exports.send = send;","import { h, Component } from 'preact';\r\n\r\n\r\nclass DataStore {\r\n constructor(data) {\r\n this.data = data || {};\r\n this.subscribers = [];\r\n }\r\n\r\n clear = () => {\r\n this.data = {};\r\n this.broadcast();\r\n }\r\n\r\n setInitial = (data) => {\r\n this.data = data;\r\n }\r\n\r\n set = (data) => {\r\n this.data = data;\r\n this.broadcast();\r\n }\r\n\r\n update = (data) => {\r\n Object.keys(data).forEach((key) => {\r\n this.data[key] = data[key];\r\n });\r\n this.broadcast();\r\n }\r\n\r\n subscribe = (func) => {\r\n this.subscribers.push(func);\r\n }\r\n\r\n unsubscribe = (func) => {\r\n\r\n var newSubscribers = [];\r\n\r\n this.subscribers.forEach((subscriberFunc) => {\r\n if(subscriberFunc != func) {\r\n newSubscribers.push(subscriberFunc);\r\n }\r\n });\r\n this.subscribers = newSubscribers;\r\n }\r\n\r\n broadcast = () => {\r\n this.subscribers.forEach((subscriberFunc) => {\r\n subscriberFunc(this.data);\r\n });\r\n }\r\n}\r\n\r\n\r\nvar dataStore = new DataStore();\r\n\r\n\r\n\r\nexport const withData = (WrappedComponent, updateOnBroadcast = true) => {\r\n // ...and returns another component...\r\n return class extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n data: {\r\n this: \"that\"\r\n }\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n if(updateOnBroadcast) {\r\n dataStore.subscribe(() => {this.forceUpdate();});\r\n }\r\n }\r\n\r\n render() {\r\n // ... and renders the wrapped component with the fresh data!\r\n // Notice that we pass through any additional props\r\n return ;\r\n }\r\n };\r\n}\r\n\r\nexport const setInitialData = dataStore.setInitial;\r\nexport const setData = dataStore.set;\r\nexport const clearData = dataStore.clear;\r\nexport const updateData = dataStore.update;\r\n","/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {Node} node The node to remove\n */\nexport function removeNode(node) {\n\tlet parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n","import { cloneElement, createElement, Component, toChildArray } from 'preact';\nimport { exec, prepareVNodeForRanking, assign, pathRankSort } from './util';\n\nlet customHistory = null;\n\nconst ROUTERS = [];\n\nconst subscribers = [];\n\nconst EMPTY = {};\n\nfunction setUrl(url, type='push') {\n\tif (customHistory && customHistory[type]) {\n\t\tcustomHistory[type](url);\n\t}\n\telse if (typeof history!=='undefined' && history[type+'State']) {\n\t\thistory[type+'State'](null, null, url);\n\t}\n}\n\n\nfunction getCurrentUrl() {\n\tlet url;\n\tif (customHistory && customHistory.location) {\n\t\turl = customHistory.location;\n\t}\n\telse if (customHistory && customHistory.getCurrentLocation) {\n\t\turl = customHistory.getCurrentLocation();\n\t}\n\telse {\n\t\turl = typeof location!=='undefined' ? location : EMPTY;\n\t}\n\treturn `${url.pathname || ''}${url.search || ''}`;\n}\n\n\n\nfunction route(url, replace=false) {\n\tif (typeof url!=='string' && url.url) {\n\t\treplace = url.replace;\n\t\turl = url.url;\n\t}\n\n\t// only push URL into history if we can handle it\n\tif (canRoute(url)) {\n\t\tsetUrl(url, replace ? 'replace' : 'push');\n\t}\n\n\treturn routeTo(url);\n}\n\n\n/** Check if the given URL can be handled by any router instances. */\nfunction canRoute(url) {\n\tfor (let i=ROUTERS.length; i--; ) {\n\t\tif (ROUTERS[i].canRoute(url)) return true;\n\t}\n\treturn false;\n}\n\n\n/** Tell all router instances to handle the given URL. */\nfunction routeTo(url) {\n\tlet didRoute = false;\n\tfor (let i=0; i {\n\t\t\t\trouteTo(getCurrentUrl());\n\t\t\t});\n\t\t}\n\t\taddEventListener('click', delegateLinkHandler);\n\t}\n\teventListenersInitialized = true;\n}\n\n\nclass Router extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tif (props.history) {\n\t\t\tcustomHistory = props.history;\n\t\t}\n\n\t\tthis.state = {\n\t\t\turl: props.url || getCurrentUrl()\n\t\t};\n\n\t\tinitEventListeners();\n\t}\n\n\tshouldComponentUpdate(props) {\n\t\tif (props.static!==true) return true;\n\t\treturn props.url!==this.props.url || props.onChange!==this.props.onChange;\n\t}\n\n\t/** Check if the given URL can be matched against any children */\n\tcanRoute(url) {\n\t\tconst children = toChildArray(this.props.children);\n\t\treturn this.getMatchingChildren(children, url, false).length > 0;\n\t}\n\n\t/** Re-render children with a new URL to match against. */\n\trouteTo(url) {\n\t\tthis.setState({ url });\n\n\t\tconst didRoute = this.canRoute(url);\n\n\t\t// trigger a manual re-route if we're not in the middle of an update:\n\t\tif (!this.updating) this.forceUpdate();\n\n\t\treturn didRoute;\n\t}\n\n\tcomponentWillMount() {\n\t\tROUTERS.push(this);\n\t\tthis.updating = true;\n\t}\n\n\tcomponentDidMount() {\n\t\tif (customHistory) {\n\t\t\tthis.unlisten = customHistory.listen((location) => {\n\t\t\t\tthis.routeTo(`${location.pathname || ''}${location.search || ''}`);\n\t\t\t});\n\t\t}\n\t\tthis.updating = false;\n\t}\n\n\tcomponentWillUnmount() {\n\t\tif (typeof this.unlisten==='function') this.unlisten();\n\t\tROUTERS.splice(ROUTERS.indexOf(this), 1);\n\t}\n\n\tcomponentWillUpdate() {\n\t\tthis.updating = true;\n\t}\n\n\tcomponentDidUpdate() {\n\t\tthis.updating = false;\n\t}\n\n\tgetMatchingChildren(children, url, invoke) {\n\t\treturn children\n\t\t\t.filter(prepareVNodeForRanking)\n\t\t\t.sort(pathRankSort)\n\t\t\t.map( vnode => {\n\t\t\t\tlet matches = exec(url, vnode.props.path, vnode.props);\n\t\t\t\tif (matches) {\n\t\t\t\t\tif (invoke !== false) {\n\t\t\t\t\t\tlet newProps = { url, matches };\n\t\t\t\t\t\tassign(newProps, matches);\n\t\t\t\t\t\tdelete newProps.ref;\n\t\t\t\t\t\tdelete newProps.key;\n\t\t\t\t\t\treturn cloneElement(vnode, newProps);\n\t\t\t\t\t}\n\t\t\t\t\treturn vnode;\n\t\t\t\t}\n\t\t\t}).filter(Boolean);\n\t}\n\n\trender({ children, onChange }, { url }) {\n\t\tlet active = this.getMatchingChildren(toChildArray(children), url, true);\n\n\t\tlet current = active[0] || null;\n\n\t\tlet previous = this.previousUrl;\n\t\tif (url!==previous) {\n\t\t\tthis.previousUrl = url;\n\t\t\tif (typeof onChange==='function') {\n\t\t\t\tonChange({\n\t\t\t\t\trouter: this,\n\t\t\t\t\turl,\n\t\t\t\t\tprevious,\n\t\t\t\t\tactive,\n\t\t\t\t\tcurrent\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn current;\n\t}\n}\n\nconst Link = (props) => (\n\tcreateElement('a', assign({ onClick: handleLinkClick }, props))\n);\n\nconst Route = props => createElement(props.component, props);\n\nRouter.subscribers = subscribers;\nRouter.getCurrentUrl = getCurrentUrl;\nRouter.route = route;\nRouter.Router = Router;\nRouter.Route = Route;\nRouter.Link = Link;\nRouter.exec = exec;\n\nexport { subscribers, getCurrentUrl, route, Router, Route, Link, exec };\nexport default Router;\n","import { h, Component } from 'preact';\r\n\r\nconst Sidebar = (props) => {\r\n return (\r\n
\r\n
\r\n
\r\n
Scott Barron
\r\n
\r\n
\r\n
\r\n
About
\r\n
\r\n
\r\n
\r\n
Current Activity
\r\n
\r\n
\r\n
\r\n
Availability
\r\n
\r\n
\r\n
\r\n
Location
\r\n
\r\n\r\n
\r\n
\r\n
Skills
\r\n
\r\n
\r\n
\r\n
Clients
\r\n
\r\n
\r\n
\r\n
Experience
\r\n
\r\n
\r\n
\r\n
Contact
\r\n
\r\n
\r\n
\r\n
Code
\r\n
\r\n {null/*\r\n
\r\n
\r\n
Projects
\r\n
\r\n */}\r\n
\r\n
\r\n
Technologies
\r\n
\r\n {/*\r\n
\r\n
\r\n
Pay Me
\r\n
\r\n */}\r\n {null/*\r\n
\r\n
\r\n
Feed
\r\n
\r\n */}\r\n\r\n\r\n
\r\n );\r\n}\r\n\r\nexport default Sidebar;","\n\t\timport Async from \"../../../node_modules/@preact/async-loader/async-legacy.js\";\n\n\t\tfunction load(cb) {\n\t\t\trequire.ensure([], function (require) {\n\t\t\t\tcb( require(\"!!../../../node_modules/babel-loader/lib/index.js??ref--4!./index.js\") );\n\t\t\t}, \"route-home\");\n\t\t}\n\n\t\texport default Async(load);\n\t","import { h, Component } from 'preact';\n\nexport default function(req) {\n\tfunction Async() {\n\t\tComponent.call(this);\n\n\t\tlet b, old;\n\t\tthis.componentWillMount = () => {\n\t\t\tb = this.base = this.nextBase || this.__b; // short circuits 1st render\n\t\t\treq(m => {\n\t\t\t\tthis.setState({ child: m.default || m });\n\t\t\t});\n\t\t};\n\n\t\tthis.shouldComponentUpdate = (_, nxt) => {\n\t\t\tnxt = nxt.child === void 0;\n\t\t\tif (nxt && old === void 0 && b) {\n\t\t\t\t// Node.TEXT_NODE\n\t\t\t\tif (b.nodeType === 3) {\n\t\t\t\t\told = b.data;\n\t\t\t\t} else {\n\t\t\t\t\told = h(b.nodeName, {\n\t\t\t\t\t\tdangerouslySetInnerHTML: { __html: b.innerHTML },\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\told = ''; // dump it\n\t\t\t}\n\t\t\treturn !nxt;\n\t\t};\n\n\t\tthis.render = (p, s) => (s.child ? h(s.child, p) : old);\n\t}\n\t(Async.prototype = new Component()).constructor = Async;\n\treturn Async;\n}\n","import { h, Component } from 'preact';\r\n\r\n\r\nclass Popup extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n }\r\n\r\n componentDidMount() {\r\n }\r\n\r\n componentWillUnmount() {\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n

Message

\r\n

\r\n {this.props.message}\r\n

\r\n \r\n
\r\n
\r\n
\r\n \r\n\r\n )\r\n }\r\n}\r\n\r\nexport default Popup;","\r\n\r\nvar audioPlayerContext = null;\r\nvar audioBuffers = {};\r\nvar audioTag = null;\r\n\r\nvar initiated = false;\r\n\r\nconst init = () => {\r\n if(typeof window !== 'undefined' && initiated == false) {\r\n var AudioPlayerContext = window.AudioContext = window.AudioContext || window.webkitAudioContext;\r\n audioPlayerContext = AudioPlayerContext ? new AudioPlayerContext() : null;\r\n audioTag = (!audioPlayerContext) ? new Audio() : null;\r\n initiated = true;\r\n }\r\n}\r\n\r\n\r\nconst load = (key, url, playOnLoad = false) => {\r\n // Decode asynchronously\r\n if(audioBuffers[key]) {\r\n if(playOnLoad == true) {\r\n play(key);\r\n }\r\n } \r\n else {\r\n var request = new XMLHttpRequest();\r\n request.open('GET', url, true);\r\n request.responseType = 'arraybuffer';\r\n request.onload = () => {\r\n if(audioPlayerContext) {\r\n audioPlayerContext.decodeAudioData(request.response, \r\n (buffer) => {\r\n audioBuffers[key] = buffer;\r\n if(playOnLoad == true) {\r\n play(key);\r\n }\r\n }, \r\n (error) => {\r\n \r\n });\r\n }\r\n else {\r\n const blob = new Blob([request.response], { type: \"audio/mp3\" });\r\n const audioUrl = window.URL.createObjectURL(blob);\r\n audioBuffers[key] = audioUrl;\r\n if(playOnLoad == true) {\r\n play(key);\r\n }\r\n }\r\n\r\n }\r\n request.send();\r\n } \r\n\r\n}\r\n\r\nconst play = (key) => {\r\n if(audioBuffers[key]) {\r\n if(audioPlayerContext) {\r\n var source = audioPlayerContext.createBufferSource(); // creates a sound source\r\n source.buffer = audioBuffers[key]; // tell the source which sound to play\r\n source.connect(audioPlayerContext.destination); // connect the source to the context's destination (the speakers)\r\n source.start(0);\r\n }\r\n else {\r\n audioTag.src = audioBuffers[key];\r\n audioTag.play();\r\n }\r\n }\r\n}\r\n\r\nexport default {init, load, play};","import { h, Component } from 'preact';\r\n//import Helmet from \"preact-helmet\";\r\n//import Helmet from \"./helmet\";\r\nimport { Router } from 'preact-router';\r\nimport { withData, setInitialData, setData, clearData, updateData} from './comms';\r\nimport Sidebar from './sidebar';\r\nimport Home from '../routes/home';\r\nimport Popup from './popup';\r\nimport audioplayer from './audioplayer';\r\nconst webrequest = require('./webrequest');\r\nconst config = require('../../deployedConfig.json');\r\n//import Home from './home';\r\n\r\n\r\nfunction uuid() { //uuidv4\r\n if(window.crypto || window.msCrypto) {\r\n var xCrypto = window.crypto || window.msCrypto;\r\n return ([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, c =>\r\n (c ^ xCrypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)\r\n );\r\n }\r\n else {\r\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {\r\n var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\r\n return v.toString(16);\r\n });\r\n }\r\n}\r\n\r\nvar defaultStore = {\r\n stats: {\r\n online: true,\r\n projects: 2\r\n },\r\n activity: \"coding\",\r\n availability: {\r\n weekly: [\r\n\r\n ],\r\n today: [\r\n\r\n ]\r\n },\r\n location: {\r\n x: \"1824\",\r\n y: \"720\",\r\n name: \"Nelson, New Zealand\",\r\n timezoneoffset: 13,\r\n internetconnection: {\r\n status: \"Excellent\",\r\n color: \"#0f0\"\r\n }\r\n },\r\n feed: [\r\n ]\r\n\r\n};\r\n/*\r\nvar newStore = {\r\n stats: {\r\n online: true,\r\n projects: 2\r\n },\r\n activity: \"sleep\",\r\n availability: {\r\n weekly: [\r\n {date:'09 Feb',hours:5},\r\n {date:'16 Feb',hours:40},\r\n {date:'23 Feb',hours:40},\r\n {date:'01 Mar',hours:40},\r\n {date:'08 Mar',hours:30}, //Rina Away\r\n {date:'15 Mar',hours:5},\r\n {date:'22 Mar',hours:30}, //Rina Away\r\n {date:'29 Mar',hours:30}, //Rina Away\r\n {date:'05 Apr',hours:30}, //Easter\r\n {date:'12 Apr',hours:20}, //School Holidays\r\n {date:'19 Apr',hours:20}, //School Holidays\r\n ],\r\n today: [\r\n ]\r\n },\r\n location: {\r\n x: \"1024\",\r\n y: \"120\",\r\n name: \"Nelson, New Zealand\",\r\n timezoneoffset: 13,\r\n internetconnection: {\r\n status: \"Excellent\",\r\n color: \"#0f0\"\r\n }\r\n },\r\n feed: [\r\n ]\r\n\r\n};\r\n*/\r\n/*\r\nvar newStore2 = {\r\n stats: {\r\n online: true,\r\n projects: 2\r\n },\r\n activity: \"coding\",\r\n availability: {\r\n weekly: [\r\n {date:'09 Feb',hours:5},\r\n {date:'16 Feb',hours:40},\r\n {date:'23 Feb',hours:40},\r\n {date:'01 Mar',hours:40},\r\n {date:'08 Mar',hours:30}, //Rina Away\r\n {date:'15 Mar',hours:40},\r\n {date:'22 Mar',hours:30}, //Rina Away\r\n {date:'29 Mar',hours:30}, //Rina Away\r\n {date:'05 Apr',hours:10}, //Easter\r\n {date:'12 Apr',hours:20}, //School Holidays\r\n {date:'19 Apr',hours:20}, //School Holidays\r\n ],\r\n today: []\r\n },\r\n location: {\r\n x: \"1824\",\r\n y: \"720\",\r\n name: \"Nelson, New Zealand\",\r\n timezoneoffset: 13,\r\n internetconnection: {\r\n status: \"Excellent\",\r\n color: \"#0f0\"\r\n }\r\n },\r\n feed: [\r\n ]\r\n\r\n};\r\n*/\r\n\r\n\r\n\r\nclass App extends Component {\r\n constructor(props){\r\n super(props);\r\n\r\n this.websocketConnected = false;\r\n\r\n this.websocketConnection = null;\r\n\r\n this.websocketHeartbeatInterval = null;\r\n\r\n this.audioBuffers = {};\r\n\r\n this.session = null;\r\n\r\n this.state = {\r\n popup: false,\r\n popupmessage: \"\"\r\n };\r\n\r\n\r\n setInitialData(this.props.defaultStore || defaultStore);\r\n }\r\n\r\n\r\n componentDidMount() {\r\n\r\n\r\n\r\n if (typeof window !== \"undefined\") {\r\n \r\n this.createSession();\r\n audioplayer.init();\r\n audioplayer.load(\"button\", \"/assets/audio/button.mp3\");\r\n this.refreshData();\r\n this.refreshInterval = setInterval(() => {\r\n this.refreshData();\r\n }, 60000);\r\n\r\n\r\n }\r\n\r\n }\r\n\r\n refreshData = () => {\r\n webrequest.send(config.resourcesurl + '/status.json', 'GET', {}, \r\n (data) => {\r\n setData(data);\r\n if(data.connect == true && this.websocketConnected == false) {\r\n this.connectWebsocket();\r\n }\r\n else if(data.connect == false && this.websocketConnected == true) {\r\n this.disconnectWebsocket();\r\n }\r\n else {\r\n // do nothing - we must be in the right state.\r\n }\r\n },\r\n () => {});\r\n }\r\n\r\n connectWebsocket = () => {\r\n\r\n this.websocketConnection = new WebSocket(config.websocketendpoint + \"?session=\" + this.session);\r\n\r\n this.websocketConnection.onopen = (event) => {\r\n this.websocketConnected = true;\r\n console.log(\"Websocket connection opened.\");\r\n if(this.websocketHeartbeatInterval === null) {\r\n this.websocketHeartbeatInterval = setInterval(() => {\r\n this.heartbeatWebsocket();\r\n }, 90000);\r\n }\r\n };\r\n\r\n this.websocketConnection.onclose = (event) => {\r\n console.log(\"Websocket connection closed.\");\r\n if(this.websocketConnected == true) //i.e. we haven't intentionally closed the connection\r\n {\r\n this.connectWebsocket();\r\n }\r\n else {\r\n this.websocketConnection = null;\r\n if(this.websocketHeartbeatInterval !== null) {\r\n clearInterval(this.websocketHeartbeatInterval);\r\n this.websocketHeartbeatInterval = null;\r\n }\r\n }\r\n };\r\n\r\n this.websocketConnection.onmessage = (event) => {\r\n\r\n console.log(\"Message Received: \" + event.data);\r\n\r\n var payload = {};\r\n\r\n try {\r\n payload = JSON.parse(event.data);\r\n }\r\n catch(jsonError) {\r\n\r\n }\r\n var eventName = payload.event;\r\n var data = payload.data;\r\n\r\n if(eventName == \"refreshStatus\") {\r\n this.refreshData()\r\n }\r\n if(eventName == \"popup\") {\r\n this.setState({popup: true, popupmessage: data.message});\r\n }\r\n else if(eventName == \"play\") {\r\n audioplayer.load(data.url, data.url, true);\r\n }\r\n \r\n }\r\n\r\n }\r\n\r\n heartbeatWebsocket = () => {\r\n\r\n if(this.websocketConnection && this.websocketConnection.readyState === WebSocket.OPEN) {\r\n console.log(\"Sending heartbeat to websocket\");\r\n this.websocketConnection.send(JSON.stringify({event: \"heartbeat\"}));\r\n }\r\n else {\r\n console.log(\"Websocket not ready. Not sending heartbeat.\");\r\n }\r\n }\r\n\r\n disconnectWebsocket = () => {\r\n this.websocketConnected = false;\r\n if(this.websocketConnection) {\r\n this.websocketConnection.close();\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n if (typeof window !== \"undefined\") {\r\n clearInterval(this.refreshInterval);\r\n this.disconnectWebsocket();\r\n }\r\n }\r\n\r\n handleRoute = e => {\r\n this.currentUrl = e.url;\r\n };\r\n\r\n createSession = () => {\r\n this.session = localStorage.getItem('session');\r\n\r\n if(!this.session) {\r\n this.session = uuid();\r\n localStorage.setItem(\"session\", this.session);\r\n }\r\n }\r\n\r\n closePopup = () => {\r\n audioplayer.play(\"button\");\r\n this.setState({popup: false});\r\n }\r\n\r\n \r\n render() {\r\n\r\n const customHistory = this.props.href ? {\r\n location: { pathname: this.props.href },\r\n //listen: () => {}\r\n } : undefined;\r\n\r\n\r\n return (\r\n
\r\n
\r\n \r\n {}} : undefined}>\r\n \r\n \r\n {this.state.popup == true ? : null}\r\n
\r\n
\r\n );\r\n }\r\n \r\n \r\n}\r\n\r\nexport default App;","import { h, Component, Fragment } from 'preact';\r\nimport App from './components/app';\r\nexport default App;","import options from './options';\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * constructor for this virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array} [children] The children of the virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\ti;\n\tfor (i in props) {\n\t\tif (i !== 'key' && i !== 'ref') normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 3) {\n\t\tchildren = [children];\n\t\t// https://github.com/preactjs/preact/issues/1916\n\t\tfor (i = 3; i < arguments.length; i++) {\n\t\t\tchildren.push(arguments[i]);\n\t\t}\n\t}\n\tif (children != null) {\n\t\tnormalizedProps.children = children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type === 'function' && type.defaultProps != null) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(\n\t\ttype,\n\t\tnormalizedProps,\n\t\tprops && props.key,\n\t\tprops && props.ref\n\t);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t// _nextDom must be initialized to undefined b/c it will eventually\n\t\t// be set to dom.nextSibling which can return `null` and it is important\n\t\t// to be able to distinguish between an uninitialized _nextDom and\n\t\t// a _nextDom that has been set to `null`\n\t\t_nextDom: undefined,\n\t\t_component: null,\n\t\tconstructor: undefined\n\t};\n\n\tif (options.vnode) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn {};\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is import('./internal').VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != null && vnode.constructor === undefined;\n","import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function Component(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nComponent.prototype.setState = function(update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\tupdate = update(s, this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == null) return;\n\n\tif (this._vnode) {\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nComponent.prototype.forceUpdate = function(callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {import('./index').ComponentChildren | void}\n */\nComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == null) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._parent._children.indexOf(vnode) + 1)\n\t\t\t: null;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != null && sibling._dom != null) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type === 'function' ? getDomSibling(vnode) : null;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet vnode = component._vnode,\n\t\toldDom = vnode._dom,\n\t\tparentDom = component._parentDom;\n\n\tif (parentDom) {\n\t\tlet commitQueue = [];\n\t\tlet newDom = diff(\n\t\t\tparentDom,\n\t\t\tvnode,\n\t\t\tassign({}, vnode),\n\t\t\tcomponent._globalContext,\n\t\t\tparentDom.ownerSVGElement !== undefined,\n\t\t\tnull,\n\t\t\tcommitQueue,\n\t\t\toldDom == null ? getDomSibling(vnode) : oldDom\n\t\t);\n\t\tcommitRoot(commitQueue, vnode);\n\n\t\tif (newDom != oldDom) {\n\t\t\tupdateParentDomPointers(vnode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\n\t\tvnode._dom = vnode._component.base = null;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != null && child._dom != null) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array}\n */\nlet rerenderQueue = [];\n\n/**\n * Asynchronously schedule a callback\n * @type {(cb: () => void) => void}\n */\n/* istanbul ignore next */\n// Note the following line isn't tree-shaken by rollup cuz of rollup/rollup#2566\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty && (c._dirty = true) && rerenderQueue.push(c) === 1) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet c;\n\trerenderQueue.sort((a, b) => b._vnode._depth - a._vnode._depth);\n\twhile ((c = rerenderQueue.pop())) {\n\t\t// forceUpdate's callback argument is reused here to indicate a non-forced update.\n\t\tif (c._dirty) renderComponent(c);\n\t}\n}\n","import { diff, unmount, applyRef } from './index';\nimport { createVNode } from '../create-element';\nimport { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { removeNode } from '../util';\nimport { getDomSibling } from '../component';\n\n/**\n * Diff the children of a virtual node\n * @param {import('../internal').PreactElement} parentDom The DOM element whose\n * children are being diffed\n * @param {import('../internal').VNode} newParentVNode The new virtual\n * node whose children should be diff'ed against oldParentVNode\n * @param {import('../internal').VNode} oldParentVNode The old virtual\n * node whose children should be diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by getChildContext\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {Node | Text} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n */\nexport function diffChildren(\n\tparentDom,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet i, j, oldVNode, newDom, sibDom, firstChildDom, refs;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet oldChildrenLength = oldChildren.length;\n\n\t// Only in very specific places should this logic be invoked (top level `render` and `diffElementNodes`).\n\t// I'm using `EMPTY_OBJ` to signal when `diffChildren` is invoked in these situations. I can't use `null`\n\t// for this purpose, because `null` is a valid value for `oldDom` which can mean to skip to this logic\n\t// (e.g. if mounting a new tree in which the old DOM should be ignored (usually for Fragments).\n\tif (oldDom == EMPTY_OBJ) {\n\t\tif (excessDomChildren != null) {\n\t\t\toldDom = excessDomChildren[0];\n\t\t} else if (oldChildrenLength) {\n\t\t\toldDom = getDomSibling(oldParentVNode, 0);\n\t\t} else {\n\t\t\toldDom = null;\n\t\t}\n\t}\n\n\ti = 0;\n\tnewParentVNode._children = toChildArray(\n\t\tnewParentVNode._children,\n\t\tchildVNode => {\n\t\t\tif (childVNode != null) {\n\t\t\t\tchildVNode._parent = newParentVNode;\n\t\t\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\t\t\t// Check if we find a corresponding element in oldChildren.\n\t\t\t\t// If found, delete the array item by setting to `undefined`.\n\t\t\t\t// We use `undefined`, as `null` is reserved for empty placeholders\n\t\t\t\t// (holes).\n\t\t\t\toldVNode = oldChildren[i];\n\n\t\t\t\tif (\n\t\t\t\t\toldVNode === null ||\n\t\t\t\t\t(oldVNode &&\n\t\t\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\t\t\tchildVNode.type === oldVNode.type)\n\t\t\t\t) {\n\t\t\t\t\toldChildren[i] = undefined;\n\t\t\t\t} else {\n\t\t\t\t\t// Either oldVNode === undefined or oldChildrenLength > 0,\n\t\t\t\t\t// so after this loop oldVNode == null or oldVNode is a valid value.\n\t\t\t\t\tfor (j = 0; j < oldChildrenLength; j++) {\n\t\t\t\t\t\toldVNode = oldChildren[j];\n\t\t\t\t\t\t// If childVNode is unkeyed, we only match similarly unkeyed nodes, otherwise we match by key.\n\t\t\t\t\t\t// We always match by type (in either case).\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\toldVNode &&\n\t\t\t\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\t\t\t\tchildVNode.type === oldVNode.type\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\toldChildren[j] = undefined;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\toldVNode = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\toldVNode = oldVNode || EMPTY_OBJ;\n\n\t\t\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\t\t\tnewDom = diff(\n\t\t\t\t\tparentDom,\n\t\t\t\t\tchildVNode,\n\t\t\t\t\toldVNode,\n\t\t\t\t\tglobalContext,\n\t\t\t\t\tisSvg,\n\t\t\t\t\texcessDomChildren,\n\t\t\t\t\tcommitQueue,\n\t\t\t\t\toldDom,\n\t\t\t\t\tisHydrating\n\t\t\t\t);\n\n\t\t\t\tif ((j = childVNode.ref) && oldVNode.ref != j) {\n\t\t\t\t\tif (!refs) refs = [];\n\t\t\t\t\tif (oldVNode.ref) refs.push(oldVNode.ref, null, childVNode);\n\t\t\t\t\trefs.push(j, childVNode._component || newDom, childVNode);\n\t\t\t\t}\n\n\t\t\t\t// Only proceed if the vnode has not been unmounted by `diff()` above.\n\t\t\t\tif (newDom != null) {\n\t\t\t\t\tif (firstChildDom == null) {\n\t\t\t\t\t\tfirstChildDom = newDom;\n\t\t\t\t\t}\n\n\t\t\t\t\tlet nextDom;\n\t\t\t\t\tif (childVNode._nextDom !== undefined) {\n\t\t\t\t\t\t// Only Fragments or components that return Fragment like VNodes will\n\t\t\t\t\t\t// have a non-undefined _nextDom. Continue the diff from the sibling\n\t\t\t\t\t\t// of last DOM child of this child VNode\n\t\t\t\t\t\tnextDom = childVNode._nextDom;\n\n\t\t\t\t\t\t// Eagerly cleanup _nextDom. We don't need to persist the value because\n\t\t\t\t\t\t// it is only used by `diffChildren` to determine where to resume the diff after\n\t\t\t\t\t\t// diffing Components and Fragments. Once we store it the nextDOM local var, we\n\t\t\t\t\t\t// can clean up the property\n\t\t\t\t\t\tchildVNode._nextDom = undefined;\n\t\t\t\t\t} else if (\n\t\t\t\t\t\texcessDomChildren == oldVNode ||\n\t\t\t\t\t\tnewDom != oldDom ||\n\t\t\t\t\t\tnewDom.parentNode == null\n\t\t\t\t\t) {\n\t\t\t\t\t\t// NOTE: excessDomChildren==oldVNode above:\n\t\t\t\t\t\t// This is a compression of excessDomChildren==null && oldVNode==null!\n\t\t\t\t\t\t// The values only have the same type when `null`.\n\n\t\t\t\t\t\touter: if (oldDom == null || oldDom.parentNode !== parentDom) {\n\t\t\t\t\t\t\tparentDom.appendChild(newDom);\n\t\t\t\t\t\t\tnextDom = null;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// `j import('../internal').VNode} [callback]\n * A function to invoke for each child before it is added to the flattened list.\n * @param {Array} [flattened] An flat array of children to modify\n * @returns {import('../internal').VNode[]}\n */\nexport function toChildArray(children, callback, flattened) {\n\tif (flattened == null) flattened = [];\n\n\tif (children == null || typeof children === 'boolean') {\n\t\tif (callback) flattened.push(callback(null));\n\t} else if (Array.isArray(children)) {\n\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\ttoChildArray(children[i], callback, flattened);\n\t\t}\n\t} else if (!callback) {\n\t\tflattened.push(children);\n\t} else if (typeof children === 'string' || typeof children === 'number') {\n\t\tflattened.push(callback(createVNode(null, children, null, null)));\n\t} else if (children._dom != null || children._component != null) {\n\t\tflattened.push(\n\t\t\tcallback(createVNode(children.type, children.props, children.key, null))\n\t\t);\n\t} else {\n\t\tflattened.push(callback(children));\n\t}\n\n\treturn flattened;\n}\n","import { IS_NON_DIMENSIONAL } from '../constants';\nimport options from '../options';\n\n/**\n * Diff the old and new properties of a VNode and apply changes to the DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to apply\n * changes to\n * @param {object} newProps The new props\n * @param {object} oldProps The old props\n * @param {boolean} isSvg Whether or not this node is an SVG node\n * @param {boolean} hydrate Whether or not we are in hydration mode\n */\nexport function diffProps(dom, newProps, oldProps, isSvg, hydrate) {\n\tlet i;\n\n\tfor (i in oldProps) {\n\t\tif (!(i in newProps)) {\n\t\t\tsetProperty(dom, i, null, oldProps[i], isSvg);\n\t\t}\n\t}\n\n\tfor (i in newProps) {\n\t\tif (\n\t\t\t(!hydrate || typeof newProps[i] == 'function') &&\n\t\t\ti !== 'value' &&\n\t\t\ti !== 'checked' &&\n\t\t\toldProps[i] !== newProps[i]\n\t\t) {\n\t\t\tsetProperty(dom, i, newProps[i], oldProps[i], isSvg);\n\t\t}\n\t}\n}\n\nfunction setStyle(style, key, value) {\n\tif (key[0] === '-') {\n\t\tstyle.setProperty(key, value);\n\t} else if (\n\t\ttypeof value === 'number' &&\n\t\tIS_NON_DIMENSIONAL.test(key) === false\n\t) {\n\t\tstyle[key] = value + 'px';\n\t} else if (value == null) {\n\t\tstyle[key] = '';\n\t} else {\n\t\tstyle[key] = value;\n\t}\n}\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node or not\n */\nfunction setProperty(dom, name, value, oldValue, isSvg) {\n\tif (isSvg) {\n\t\tif (name === 'className') {\n\t\t\tname = 'class';\n\t\t}\n\t} else if (name === 'class') {\n\t\tname = 'className';\n\t}\n\n\tif (name === 'key' || name === 'children') {\n\t} else if (name === 'style') {\n\t\tconst s = dom.style;\n\n\t\tif (typeof value === 'string') {\n\t\t\ts.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue === 'string') {\n\t\t\t\ts.cssText = '';\n\t\t\t\toldValue = null;\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (let i in oldValue) {\n\t\t\t\t\tif (!(value && i in value)) {\n\t\t\t\t\t\tsetStyle(s, i, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (let i in value) {\n\t\t\t\t\tif (!oldValue || value[i] !== oldValue[i]) {\n\t\t\t\t\t\tsetStyle(s, i, value[i]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] === 'o' && name[1] === 'n') {\n\t\tlet useCapture = name !== (name = name.replace(/Capture$/, ''));\n\t\tlet nameLower = name.toLowerCase();\n\t\tname = (nameLower in dom ? nameLower : name).slice(2);\n\n\t\tif (value) {\n\t\t\tif (!oldValue) dom.addEventListener(name, eventProxy, useCapture);\n\t\t\t(dom._listeners || (dom._listeners = {}))[name] = value;\n\t\t} else {\n\t\t\tdom.removeEventListener(name, eventProxy, useCapture);\n\t\t}\n\t} else if (\n\t\tname !== 'list' &&\n\t\tname !== 'tagName' &&\n\t\t// HTMLButtonElement.form and HTMLInputElement.form are read-only but can be set using\n\t\t// setAttribute\n\t\tname !== 'form' &&\n\t\tname !== 'type' &&\n\t\tname !== 'size' &&\n\t\t!isSvg &&\n\t\tname in dom\n\t) {\n\t\tdom[name] = value == null ? '' : value;\n\t} else if (\n\t\ttypeof value !== 'function' &&\n\t\tname !== 'dangerouslySetInnerHTML'\n\t) {\n\t\tif (name !== (name = name.replace(/^xlink:?/, ''))) {\n\t\t\tif (value == null || value === false) {\n\t\t\t\tdom.removeAttributeNS(\n\t\t\t\t\t'http://www.w3.org/1999/xlink',\n\t\t\t\t\tname.toLowerCase()\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tdom.setAttributeNS(\n\t\t\t\t\t'http://www.w3.org/1999/xlink',\n\t\t\t\t\tname.toLowerCase(),\n\t\t\t\t\tvalue\n\t\t\t\t);\n\t\t\t}\n\t\t} else if (\n\t\t\tvalue == null ||\n\t\t\t(value === false &&\n\t\t\t\t// ARIA-attributes have a different notion of boolean values.\n\t\t\t\t// The value `false` is different from the attribute not\n\t\t\t\t// existing on the DOM, so we can't remove it. For non-boolean\n\t\t\t\t// ARIA-attributes we could treat false as a removal, but the\n\t\t\t\t// amount of exceptions would cost us too many bytes. On top of\n\t\t\t\t// that other VDOM frameworks also always stringify `false`.\n\t\t\t\t!/^ar/.test(name))\n\t\t) {\n\t\t\tdom.removeAttribute(name);\n\t\t} else {\n\t\t\tdom.setAttribute(name, value);\n\t\t}\n\t}\n}\n\n/**\n * Proxy an event to hooked event handlers\n * @param {Event} e The event object from the browser\n * @private\n */\nfunction eventProxy(e) {\n\tthis._listeners[e.type](options.event ? options.event(e) : e);\n}\n","import { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { Component } from '../component';\nimport { Fragment } from '../create-element';\nimport { diffChildren } from './children';\nimport { diffProps } from './props';\nimport { assign, removeNode } from '../util';\nimport options from '../options';\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {import('../internal').PreactElement} parentDom The parent of the DOM element\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by getChildContext\n * @param {boolean} isSvg Whether or not this element is an SVG node\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {Element | Text} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} [isHydrating] Whether or not we are in hydration\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== undefined) return null;\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\ttry {\n\t\touter: if (typeof newType === 'function') {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\tnewVNode._component = c = new Component(newProps, componentContext);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (c._nextState == null) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\t\t\tif (newType.getDerivedStateFromProps != null) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tc.componentWillMount != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidMount != null) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t!c._force &&\n\t\t\t\t\tc.shouldComponentUpdate != null &&\n\t\t\t\t\tc.shouldComponentUpdate(newProps, c._nextState, componentContext) ===\n\t\t\t\t\t\tfalse\n\t\t\t\t) {\n\t\t\t\t\tc.props = newProps;\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\tc._dirty = false;\n\t\t\t\t\tc._vnode = newVNode;\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\t\t\t\t\tfor (tmp = 0; tmp < newVNode._children.length; tmp++) {\n\t\t\t\t\t\tif (newVNode._children[tmp]) {\n\t\t\t\t\t\t\tnewVNode._children[tmp]._parent = newVNode;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != null) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidUpdate != null) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc.state = c._nextState;\n\n\t\t\tif ((tmp = options._render)) tmp(newVNode);\n\n\t\t\tc._dirty = false;\n\t\t\tc._vnode = newVNode;\n\t\t\tc._parentDom = parentDom;\n\n\t\t\ttmp = c.render(c.props, c.state, c.context);\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != null && tmp.type == Fragment && tmp.key == null;\n\t\t\tnewVNode._children = isTopLevelFragment\n\t\t\t\t? tmp.props.children\n\t\t\t\t: Array.isArray(tmp)\n\t\t\t\t? tmp\n\t\t\t\t: [tmp];\n\n\t\t\tif (c.getChildContext != null) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (!isNew && c.getSnapshotBeforeUpdate != null) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tdiffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = null;\n\t\t\t}\n\n\t\t\tc._force = false;\n\t\t} else {\n\t\t\tnewVNode._dom = diffElementNodes(\n\t\t\t\toldVNode._dom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\tif ((tmp = options.diffed)) tmp(newVNode);\n\t} catch (e) {\n\t\toptions._catchError(e, newVNode, oldVNode);\n\t}\n\n\treturn newVNode._dom;\n}\n\n/**\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').VNode} root\n */\nexport function commitRoot(commitQueue, root) {\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {import('../internal').PreactElement} dom The DOM element representing\n * the virtual nodes being diffed\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {*} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @returns {import('../internal').PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating\n) {\n\tlet i;\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\tisSvg = newVNode.type === 'svg' || isSvg;\n\n\tif (excessDomChildren != null) {\n\t\tfor (i = 0; i < excessDomChildren.length; i++) {\n\t\t\tconst child = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tchild != null &&\n\t\t\t\t((newVNode.type === null\n\t\t\t\t\t? child.nodeType === 3\n\t\t\t\t\t: child.localName === newVNode.type) ||\n\t\t\t\t\tdom == child)\n\t\t\t) {\n\t\t\t\tdom = child;\n\t\t\t\texcessDomChildren[i] = null;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == null) {\n\t\tif (newVNode.type === null) {\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tdom = isSvg\n\t\t\t? document.createElementNS('http://www.w3.org/2000/svg', newVNode.type)\n\t\t\t: document.createElement(\n\t\t\t\t\tnewVNode.type,\n\t\t\t\t\tnewProps.is && { is: newProps.is }\n\t\t\t );\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = null;\n\t}\n\n\tif (newVNode.type === null) {\n\t\tif (oldProps !== newProps && dom.data != newProps) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else if (newVNode !== oldVNode) {\n\t\tif (excessDomChildren != null) {\n\t\t\texcessDomChildren = EMPTY_ARR.slice.call(dom.childNodes);\n\t\t}\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\tlet oldHtml = oldProps.dangerouslySetInnerHTML;\n\t\tlet newHtml = newProps.dangerouslySetInnerHTML;\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tif (!isHydrating) {\n\t\t\tif (oldProps === EMPTY_OBJ) {\n\t\t\t\toldProps = {};\n\t\t\t\tfor (let i = 0; i < dom.attributes.length; i++) {\n\t\t\t\t\toldProps[dom.attributes[i].name] = dom.attributes[i].value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newHtml || oldHtml) {\n\t\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\t\tif (!newHtml || !oldHtml || newHtml.__html != oldHtml.__html) {\n\t\t\t\t\tdom.innerHTML = (newHtml && newHtml.__html) || '';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdiffProps(dom, newProps, oldProps, isSvg, isHydrating);\n\n\t\tnewVNode._children = newVNode.props.children;\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (!newHtml) {\n\t\t\tdiffChildren(\n\t\t\t\tdom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tnewVNode.type === 'foreignObject' ? false : isSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tEMPTY_OBJ,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\t// (as above, don't diff props during hydration)\n\t\tif (!isHydrating) {\n\t\t\tif (\n\t\t\t\t'value' in newProps &&\n\t\t\t\tnewProps.value !== undefined &&\n\t\t\t\tnewProps.value !== dom.value\n\t\t\t) {\n\t\t\t\tdom.value = newProps.value == null ? '' : newProps.value;\n\t\t\t}\n\t\t\tif (\n\t\t\t\t'checked' in newProps &&\n\t\t\t\tnewProps.checked !== undefined &&\n\t\t\t\tnewProps.checked !== dom.checked\n\t\t\t) {\n\t\t\t\tdom.checked = newProps.checked;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {object|function} ref\n * @param {any} value\n * @param {import('../internal').VNode} vnode\n */\nexport function applyRef(ref, value, vnode) {\n\ttry {\n\t\tif (typeof ref == 'function') ref(value);\n\t\telse ref.current = value;\n\t} catch (e) {\n\t\toptions._catchError(e, vnode);\n\t}\n}\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {import('../internal').VNode} vnode The virtual node to unmount\n * @param {import('../internal').VNode} parentVNode The parent of the VNode that\n * initiated the unmount\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(vnode, parentVNode, skipRemove) {\n\tlet r;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif ((r = vnode.ref)) {\n\t\tif (!r.current || r.current === vnode._dom) applyRef(r, null, parentVNode);\n\t}\n\n\tlet dom;\n\tif (!skipRemove && typeof vnode.type !== 'function') {\n\t\tskipRemove = (dom = vnode._dom) != null;\n\t}\n\n\t// Must be set to `undefined` to properly clean up `_nextDom`\n\t// for which `null` is a valid value. See comment in `create-element.js`\n\tvnode._dom = vnode._nextDom = undefined;\n\n\tif ((r = vnode._component) != null) {\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t} catch (e) {\n\t\t\t\toptions._catchError(e, parentVNode);\n\t\t\t}\n\t\t}\n\n\t\tr.base = r._parentDom = null;\n\t}\n\n\tif ((r = vnode._children)) {\n\t\tfor (let i = 0; i < r.length; i++) {\n\t\t\tif (r[i]) unmount(r[i], parentVNode, skipRemove);\n\t\t}\n\t}\n\n\tif (dom != null) removeNode(dom);\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n","import { EMPTY_OBJ, EMPTY_ARR } from './constants';\nimport { commitRoot, diff } from './diff/index';\nimport { createElement, Fragment } from './create-element';\nimport options from './options';\n\nconst IS_HYDRATE = EMPTY_OBJ;\n\n/**\n * Render a Preact virtual node into a DOM element\n * @param {import('./index').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * render into\n * @param {Element | Text} [replaceNode] Optional: Attempt to re-use an\n * existing DOM tree rooted at `replaceNode`\n */\nexport function render(vnode, parentDom, replaceNode) {\n\tif (options._root) options._root(vnode, parentDom);\n\n\t// We abuse the `replaceNode` parameter in `hydrate()` to signal if we\n\t// are in hydration mode or not by passing `IS_HYDRATE` instead of a\n\t// DOM element.\n\tlet isHydrating = replaceNode === IS_HYDRATE;\n\n\t// To be able to support calling `render()` multiple times on the same\n\t// DOM node, we need to obtain a reference to the previous tree. We do\n\t// this by assigning a new `_children` property to DOM nodes which points\n\t// to the last rendered tree. By default this property is not present, which\n\t// means that we are mounting a new tree for the first time.\n\tlet oldVNode = isHydrating\n\t\t? null\n\t\t: (replaceNode && replaceNode._children) || parentDom._children;\n\tvnode = createElement(Fragment, null, [vnode]);\n\n\t// List of effects that need to be called after diffing.\n\tlet commitQueue = [];\n\tdiff(\n\t\tparentDom,\n\t\t// Determine the new vnode tree and store it on the DOM element on\n\t\t// our custom `_children` property.\n\t\t((isHydrating ? parentDom : replaceNode || parentDom)._children = vnode),\n\t\toldVNode || EMPTY_OBJ,\n\t\tEMPTY_OBJ,\n\t\tparentDom.ownerSVGElement !== undefined,\n\t\treplaceNode && !isHydrating\n\t\t\t? [replaceNode]\n\t\t\t: oldVNode\n\t\t\t? null\n\t\t\t: EMPTY_ARR.slice.call(parentDom.childNodes),\n\t\tcommitQueue,\n\t\treplaceNode || EMPTY_OBJ,\n\t\tisHydrating\n\t);\n\n\t// Flush all queued effects\n\tcommitRoot(commitQueue, vnode);\n}\n\n/**\n * Update an existing DOM element with data from a Preact virtual node\n * @param {import('./index').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * update\n */\nexport function hydrate(vnode, parentDom) {\n\trender(vnode, parentDom, IS_HYDRATE);\n}\n","import { assign } from './util';\nimport { EMPTY_ARR } from './constants';\nimport { createVNode } from './create-element';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its children.\n * @param {import('./internal').VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array} rest Any additional arguments will be used as replacement children.\n */\nexport function cloneElement(vnode, props) {\n\tprops = assign(assign({}, vnode.props), props);\n\tif (arguments.length > 2) props.children = EMPTY_ARR.slice.call(arguments, 2);\n\treturn createVNode(\n\t\tvnode.type,\n\t\tprops,\n\t\tprops.key || vnode.key,\n\t\tprops.ref || vnode.ref\n\t);\n}\n","export const EMPTY_OBJ = {};\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord/i;\n","import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n","import { enqueueRender } from '../component';\n\n/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw\n * the error that was caught (except for unmounting when this parameter\n * is the highest parent that was being unmounted)\n */\nexport function _catchError(error, vnode) {\n\t/** @type {import('../internal').Component} */\n\tlet component, hasCaught;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tif (\n\t\t\t\t\tcomponent.constructor &&\n\t\t\t\t\tcomponent.constructor.getDerivedStateFromError != null\n\t\t\t\t) {\n\t\t\t\t\thasCaught = true;\n\t\t\t\t\tcomponent.setState(\n\t\t\t\t\t\tcomponent.constructor.getDerivedStateFromError(error)\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != null) {\n\t\t\t\t\thasCaught = true;\n\t\t\t\t\tcomponent.componentDidCatch(error);\n\t\t\t\t}\n\n\t\t\t\tif (hasCaught)\n\t\t\t\t\treturn enqueueRender((component._pendingError = component));\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n","/* global __webpack_public_path__ */\n\nimport * as Preact from 'preact';\nconst { h, render, hydrate } = Preact;\n\nconst interopDefault = m => (m && m.default ? m.default : m);\n\nif (process.env.NODE_ENV === 'development') {\n\t// enable preact devtools\n\trequire('preact/debug');\n\tif (process.env.RHL) {\n\t\t// enable hot loader\n\t\tconst hotLoader = interopDefault(require('react-hot-loader'));\n\t\thotLoader.preact(interopDefault(require('preact')));\n\t}\n\t// only add a debug sw if webpack service worker is not requested.\n\tif (process.env.ADD_SW === undefined && 'serviceWorker' in navigator) {\n\t\t// eslint-disable-next-line no-undef\n\t\tnavigator.serviceWorker.register(__webpack_public_path__ + 'sw-debug.js');\n\t} else if (process.env.ADD_SW && 'serviceWorker' in navigator) {\n\t\t// eslint-disable-next-line no-undef\n\t\tnavigator.serviceWorker.register(\n\t\t\t__webpack_public_path__ + (process.env.ES_BUILD ? 'sw-esm.js' : 'sw.js')\n\t\t);\n\t}\n} else if (process.env.ADD_SW && 'serviceWorker' in navigator) {\n\t// eslint-disable-next-line no-undef\n\tnavigator.serviceWorker.register(\n\t\t__webpack_public_path__ + (process.env.ES_BUILD ? 'sw-esm.js' : 'sw.js')\n\t);\n}\n\nlet app = interopDefault(require('preact-cli-entrypoint'));\n\nif (typeof app === 'function') {\n\tlet root =\n\t\tdocument.getElementById('preact_root') || document.body.firstElementChild;\n\n\tlet init = () => {\n\t\tlet app = interopDefault(require('preact-cli-entrypoint'));\n\t\tlet preRenderData = {};\n\t\tconst inlineDataElement = document.querySelector(\n\t\t\t'[type=\"__PREACT_CLI_DATA__\"]'\n\t\t);\n\t\tif (inlineDataElement) {\n\t\t\tpreRenderData = JSON.parse(inlineDataElement.innerHTML).preRenderData;\n\t\t}\n\t\t/* An object named CLI_DATA is passed as a prop,\n\t\t * this keeps us future proof if in case we decide,\n\t\t * to send other data like at some point in time.\n\t\t */\n\t\tconst CLI_DATA = { preRenderData };\n\t\tconst doRender =\n\t\t\tprocess.env.NODE_ENV !== 'production' ||\n\t\t\troot.tagName === 'script' ||\n\t\t\t!hydrate\n\t\t\t\t? render\n\t\t\t\t: hydrate;\n\t\troot = doRender(h(app, { CLI_DATA }), document.body, root);\n\t};\n\n\tif (module.hot) module.hot.accept('preact-cli-entrypoint', init);\n\n\tinit();\n}\n"],"sourceRoot":""}