{"mappings":"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","sources":["../../../usr/lib/node_modules/parcel/node_modules/@parcel/runtime-browser-hmr/lib/runtime-e5f11f36ed475c23.js","index.ts","Compositor/Node.ts","Compositor/CanvasBuffer.ts","../../../usr/lib/node_modules/parcel/node_modules/@parcel/transformer-js/src/esmodule-helpers.js","Compositor/NodeEvent.ts","Compositor/Canvas.ts"],"sourcesContent":["var HMR_HOST = null;var HMR_PORT = 1234;var HMR_SECURE = false;var HMR_ENV_HASH = \"d6ea1d42532a7575\";module.bundle.HMR_BUNDLE_ID = \"34812aa376ac5ddd\";\"use strict\";\n\n/* global HMR_HOST, HMR_PORT, HMR_ENV_HASH, HMR_SECURE, chrome, browser, __parcel__import__, __parcel__importScripts__, ServiceWorkerGlobalScope */\n/*::\nimport type {\n HMRAsset,\n HMRMessage,\n} from '@parcel/reporter-dev-server/src/HMRServer.js';\ninterface ParcelRequire {\n (string): mixed;\n cache: {|[string]: ParcelModule|};\n hotData: {|[string]: mixed|};\n Module: any;\n parent: ?ParcelRequire;\n isParcelRequire: true;\n modules: {|[string]: [Function, {|[string]: string|}]|};\n HMR_BUNDLE_ID: string;\n root: ParcelRequire;\n}\ninterface ParcelModule {\n hot: {|\n data: mixed,\n accept(cb: (Function) => void): void,\n dispose(cb: (mixed) => void): void,\n // accept(deps: Array | string, cb: (Function) => void): void,\n // decline(): void,\n _acceptCallbacks: Array<(Function) => void>,\n _disposeCallbacks: Array<(mixed) => void>,\n |};\n}\ninterface ExtensionContext {\n runtime: {|\n reload(): void,\n getURL(url: string): string;\n getManifest(): {manifest_version: number, ...};\n |};\n}\ndeclare var module: {bundle: ParcelRequire, ...};\ndeclare var HMR_HOST: string;\ndeclare var HMR_PORT: string;\ndeclare var HMR_ENV_HASH: string;\ndeclare var HMR_SECURE: boolean;\ndeclare var chrome: ExtensionContext;\ndeclare var browser: ExtensionContext;\ndeclare var __parcel__import__: (string) => Promise;\ndeclare var __parcel__importScripts__: (string) => Promise;\ndeclare var globalThis: typeof self;\ndeclare var ServiceWorkerGlobalScope: Object;\n*/\nvar OVERLAY_ID = '__parcel__error__overlay__';\nvar OldModule = module.bundle.Module;\nfunction Module(moduleName) {\n OldModule.call(this, moduleName);\n this.hot = {\n data: module.bundle.hotData[moduleName],\n _acceptCallbacks: [],\n _disposeCallbacks: [],\n accept: function (fn) {\n this._acceptCallbacks.push(fn || function () {});\n },\n dispose: function (fn) {\n this._disposeCallbacks.push(fn);\n }\n };\n module.bundle.hotData[moduleName] = undefined;\n}\nmodule.bundle.Module = Module;\nmodule.bundle.hotData = {};\nvar checkedAssets /*: {|[string]: boolean|} */, assetsToDispose /*: Array<[ParcelRequire, string]> */, assetsToAccept /*: Array<[ParcelRequire, string]> */;\n\nfunction getHostname() {\n return HMR_HOST || (location.protocol.indexOf('http') === 0 ? location.hostname : 'localhost');\n}\nfunction getPort() {\n return HMR_PORT || location.port;\n}\n\n// eslint-disable-next-line no-redeclare\nvar parent = module.bundle.parent;\nif ((!parent || !parent.isParcelRequire) && typeof WebSocket !== 'undefined') {\n var hostname = getHostname();\n var port = getPort();\n var protocol = HMR_SECURE || location.protocol == 'https:' && !/localhost|127.0.0.1|0.0.0.0/.test(hostname) ? 'wss' : 'ws';\n var ws = new WebSocket(protocol + '://' + hostname + (port ? ':' + port : '') + '/');\n\n // Web extension context\n var extCtx = typeof chrome === 'undefined' ? typeof browser === 'undefined' ? null : browser : chrome;\n\n // Safari doesn't support sourceURL in error stacks.\n // eval may also be disabled via CSP, so do a quick check.\n var supportsSourceURL = false;\n try {\n (0, eval)('throw new Error(\"test\"); //# sourceURL=test.js');\n } catch (err) {\n supportsSourceURL = err.stack.includes('test.js');\n }\n\n // $FlowFixMe\n ws.onmessage = async function (event /*: {data: string, ...} */) {\n checkedAssets = {} /*: {|[string]: boolean|} */;\n assetsToAccept = [];\n assetsToDispose = [];\n var data /*: HMRMessage */ = JSON.parse(event.data);\n if (data.type === 'update') {\n // Remove error overlay if there is one\n if (typeof document !== 'undefined') {\n removeErrorOverlay();\n }\n let assets = data.assets.filter(asset => asset.envHash === HMR_ENV_HASH);\n\n // Handle HMR Update\n let handled = assets.every(asset => {\n return asset.type === 'css' || asset.type === 'js' && hmrAcceptCheck(module.bundle.root, asset.id, asset.depsByBundle);\n });\n if (handled) {\n console.clear();\n\n // Dispatch custom event so other runtimes (e.g React Refresh) are aware.\n if (typeof window !== 'undefined' && typeof CustomEvent !== 'undefined') {\n window.dispatchEvent(new CustomEvent('parcelhmraccept'));\n }\n await hmrApplyUpdates(assets);\n\n // Dispose all old assets.\n let processedAssets = {} /*: {|[string]: boolean|} */;\n for (let i = 0; i < assetsToDispose.length; i++) {\n let id = assetsToDispose[i][1];\n if (!processedAssets[id]) {\n hmrDispose(assetsToDispose[i][0], id);\n processedAssets[id] = true;\n }\n }\n\n // Run accept callbacks. This will also re-execute other disposed assets in topological order.\n processedAssets = {};\n for (let i = 0; i < assetsToAccept.length; i++) {\n let id = assetsToAccept[i][1];\n if (!processedAssets[id]) {\n hmrAccept(assetsToAccept[i][0], id);\n processedAssets[id] = true;\n }\n }\n } else fullReload();\n }\n if (data.type === 'error') {\n // Log parcel errors to console\n for (let ansiDiagnostic of data.diagnostics.ansi) {\n let stack = ansiDiagnostic.codeframe ? ansiDiagnostic.codeframe : ansiDiagnostic.stack;\n console.error('🚨 [parcel]: ' + ansiDiagnostic.message + '\\n' + stack + '\\n\\n' + ansiDiagnostic.hints.join('\\n'));\n }\n if (typeof document !== 'undefined') {\n // Render the fancy html overlay\n removeErrorOverlay();\n var overlay = createErrorOverlay(data.diagnostics.html);\n // $FlowFixMe\n document.body.appendChild(overlay);\n }\n }\n };\n ws.onerror = function (e) {\n console.error(e.message);\n };\n ws.onclose = function () {\n console.warn('[parcel] 🚨 Connection to the HMR server was lost');\n };\n}\nfunction removeErrorOverlay() {\n var overlay = document.getElementById(OVERLAY_ID);\n if (overlay) {\n overlay.remove();\n console.log('[parcel] ✨ Error resolved');\n }\n}\nfunction createErrorOverlay(diagnostics) {\n var overlay = document.createElement('div');\n overlay.id = OVERLAY_ID;\n let errorHTML = '
';\n for (let diagnostic of diagnostics) {\n let stack = diagnostic.frames.length ? diagnostic.frames.reduce((p, frame) => {\n return `${p}\n${frame.location}\n${frame.code}`;\n }, '') : diagnostic.stack;\n errorHTML += `\n
\n
\n 🚨 ${diagnostic.message}\n
\n
${stack}
\n
\n ${diagnostic.hints.map(hint => '
💡 ' + hint + '
').join('')}\n
\n ${diagnostic.documentation ? `` : ''}\n
\n `;\n }\n errorHTML += '
';\n overlay.innerHTML = errorHTML;\n return overlay;\n}\nfunction fullReload() {\n if ('reload' in location) {\n location.reload();\n } else if (extCtx && extCtx.runtime && extCtx.runtime.reload) {\n extCtx.runtime.reload();\n }\n}\nfunction getParents(bundle, id) /*: Array<[ParcelRequire, string]> */{\n var modules = bundle.modules;\n if (!modules) {\n return [];\n }\n var parents = [];\n var k, d, dep;\n for (k in modules) {\n for (d in modules[k][1]) {\n dep = modules[k][1][d];\n if (dep === id || Array.isArray(dep) && dep[dep.length - 1] === id) {\n parents.push([bundle, k]);\n }\n }\n }\n if (bundle.parent) {\n parents = parents.concat(getParents(bundle.parent, id));\n }\n return parents;\n}\nfunction updateLink(link) {\n var href = link.getAttribute('href');\n if (!href) {\n return;\n }\n var newLink = link.cloneNode();\n newLink.onload = function () {\n if (link.parentNode !== null) {\n // $FlowFixMe\n link.parentNode.removeChild(link);\n }\n };\n newLink.setAttribute('href',\n // $FlowFixMe\n href.split('?')[0] + '?' + Date.now());\n // $FlowFixMe\n link.parentNode.insertBefore(newLink, link.nextSibling);\n}\nvar cssTimeout = null;\nfunction reloadCSS() {\n if (cssTimeout) {\n return;\n }\n cssTimeout = setTimeout(function () {\n var links = document.querySelectorAll('link[rel=\"stylesheet\"]');\n for (var i = 0; i < links.length; i++) {\n // $FlowFixMe[incompatible-type]\n var href /*: string */ = links[i].getAttribute('href');\n var hostname = getHostname();\n var servedFromHMRServer = hostname === 'localhost' ? new RegExp('^(https?:\\\\/\\\\/(0.0.0.0|127.0.0.1)|localhost):' + getPort()).test(href) : href.indexOf(hostname + ':' + getPort());\n var absolute = /^https?:\\/\\//i.test(href) && href.indexOf(location.origin) !== 0 && !servedFromHMRServer;\n if (!absolute) {\n updateLink(links[i]);\n }\n }\n cssTimeout = null;\n }, 50);\n}\nfunction hmrDownload(asset) {\n if (asset.type === 'js') {\n if (typeof document !== 'undefined') {\n let script = document.createElement('script');\n script.src = asset.url + '?t=' + Date.now();\n if (asset.outputFormat === 'esmodule') {\n script.type = 'module';\n }\n return new Promise((resolve, reject) => {\n var _document$head;\n script.onload = () => resolve(script);\n script.onerror = reject;\n (_document$head = document.head) === null || _document$head === void 0 ? void 0 : _document$head.appendChild(script);\n });\n } else if (typeof importScripts === 'function') {\n // Worker scripts\n if (asset.outputFormat === 'esmodule') {\n return __parcel__import__(asset.url + '?t=' + Date.now());\n } else {\n return new Promise((resolve, reject) => {\n try {\n __parcel__importScripts__(asset.url + '?t=' + Date.now());\n resolve();\n } catch (err) {\n reject(err);\n }\n });\n }\n }\n }\n}\nasync function hmrApplyUpdates(assets) {\n global.parcelHotUpdate = Object.create(null);\n let scriptsToRemove;\n try {\n // If sourceURL comments aren't supported in eval, we need to load\n // the update from the dev server over HTTP so that stack traces\n // are correct in errors/logs. This is much slower than eval, so\n // we only do it if needed (currently just Safari).\n // https://bugs.webkit.org/show_bug.cgi?id=137297\n // This path is also taken if a CSP disallows eval.\n if (!supportsSourceURL) {\n let promises = assets.map(asset => {\n var _hmrDownload;\n return (_hmrDownload = hmrDownload(asset)) === null || _hmrDownload === void 0 ? void 0 : _hmrDownload.catch(err => {\n // Web extension bugfix for Chromium\n // https://bugs.chromium.org/p/chromium/issues/detail?id=1255412#c12\n if (extCtx && extCtx.runtime && extCtx.runtime.getManifest().manifest_version == 3) {\n if (typeof ServiceWorkerGlobalScope != 'undefined' && global instanceof ServiceWorkerGlobalScope) {\n extCtx.runtime.reload();\n return;\n }\n asset.url = extCtx.runtime.getURL('/__parcel_hmr_proxy__?url=' + encodeURIComponent(asset.url + '?t=' + Date.now()));\n return hmrDownload(asset);\n }\n throw err;\n });\n });\n scriptsToRemove = await Promise.all(promises);\n }\n assets.forEach(function (asset) {\n hmrApply(module.bundle.root, asset);\n });\n } finally {\n delete global.parcelHotUpdate;\n if (scriptsToRemove) {\n scriptsToRemove.forEach(script => {\n if (script) {\n var _document$head2;\n (_document$head2 = document.head) === null || _document$head2 === void 0 ? void 0 : _document$head2.removeChild(script);\n }\n });\n }\n }\n}\nfunction hmrApply(bundle /*: ParcelRequire */, asset /*: HMRAsset */) {\n var modules = bundle.modules;\n if (!modules) {\n return;\n }\n if (asset.type === 'css') {\n reloadCSS();\n } else if (asset.type === 'js') {\n let deps = asset.depsByBundle[bundle.HMR_BUNDLE_ID];\n if (deps) {\n if (modules[asset.id]) {\n // Remove dependencies that are removed and will become orphaned.\n // This is necessary so that if the asset is added back again, the cache is gone, and we prevent a full page reload.\n let oldDeps = modules[asset.id][1];\n for (let dep in oldDeps) {\n if (!deps[dep] || deps[dep] !== oldDeps[dep]) {\n let id = oldDeps[dep];\n let parents = getParents(module.bundle.root, id);\n if (parents.length === 1) {\n hmrDelete(module.bundle.root, id);\n }\n }\n }\n }\n if (supportsSourceURL) {\n // Global eval. We would use `new Function` here but browser\n // support for source maps is better with eval.\n (0, eval)(asset.output);\n }\n\n // $FlowFixMe\n let fn = global.parcelHotUpdate[asset.id];\n modules[asset.id] = [fn, deps];\n } else if (bundle.parent) {\n hmrApply(bundle.parent, asset);\n }\n }\n}\nfunction hmrDelete(bundle, id) {\n let modules = bundle.modules;\n if (!modules) {\n return;\n }\n if (modules[id]) {\n // Collect dependencies that will become orphaned when this module is deleted.\n let deps = modules[id][1];\n let orphans = [];\n for (let dep in deps) {\n let parents = getParents(module.bundle.root, deps[dep]);\n if (parents.length === 1) {\n orphans.push(deps[dep]);\n }\n }\n\n // Delete the module. This must be done before deleting dependencies in case of circular dependencies.\n delete modules[id];\n delete bundle.cache[id];\n\n // Now delete the orphans.\n orphans.forEach(id => {\n hmrDelete(module.bundle.root, id);\n });\n } else if (bundle.parent) {\n hmrDelete(bundle.parent, id);\n }\n}\nfunction hmrAcceptCheck(bundle /*: ParcelRequire */, id /*: string */, depsByBundle /*: ?{ [string]: { [string]: string } }*/) {\n if (hmrAcceptCheckOne(bundle, id, depsByBundle)) {\n return true;\n }\n\n // Traverse parents breadth first. All possible ancestries must accept the HMR update, or we'll reload.\n let parents = getParents(module.bundle.root, id);\n let accepted = false;\n while (parents.length > 0) {\n let v = parents.shift();\n let a = hmrAcceptCheckOne(v[0], v[1], null);\n if (a) {\n // If this parent accepts, stop traversing upward, but still consider siblings.\n accepted = true;\n } else {\n // Otherwise, queue the parents in the next level upward.\n let p = getParents(module.bundle.root, v[1]);\n if (p.length === 0) {\n // If there are no parents, then we've reached an entry without accepting. Reload.\n accepted = false;\n break;\n }\n parents.push(...p);\n }\n }\n return accepted;\n}\nfunction hmrAcceptCheckOne(bundle /*: ParcelRequire */, id /*: string */, depsByBundle /*: ?{ [string]: { [string]: string } }*/) {\n var modules = bundle.modules;\n if (!modules) {\n return;\n }\n if (depsByBundle && !depsByBundle[bundle.HMR_BUNDLE_ID]) {\n // If we reached the root bundle without finding where the asset should go,\n // there's nothing to do. Mark as \"accepted\" so we don't reload the page.\n if (!bundle.parent) {\n return true;\n }\n return hmrAcceptCheck(bundle.parent, id, depsByBundle);\n }\n if (checkedAssets[id]) {\n return true;\n }\n checkedAssets[id] = true;\n var cached = bundle.cache[id];\n assetsToDispose.push([bundle, id]);\n if (!cached || cached.hot && cached.hot._acceptCallbacks.length) {\n assetsToAccept.push([bundle, id]);\n return true;\n }\n}\nfunction hmrDispose(bundle /*: ParcelRequire */, id /*: string */) {\n var cached = bundle.cache[id];\n bundle.hotData[id] = {};\n if (cached && cached.hot) {\n cached.hot.data = bundle.hotData[id];\n }\n if (cached && cached.hot && cached.hot._disposeCallbacks.length) {\n cached.hot._disposeCallbacks.forEach(function (cb) {\n cb(bundle.hotData[id]);\n });\n }\n delete bundle.cache[id];\n}\nfunction hmrAccept(bundle /*: ParcelRequire */, id /*: string */) {\n // Execute the module.\n bundle(id);\n\n // Run the accept callbacks in the new version of the module.\n var cached = bundle.cache[id];\n if (cached && cached.hot && cached.hot._acceptCallbacks.length) {\n cached.hot._acceptCallbacks.forEach(function (cb) {\n var assetsToAlsoAccept = cb(function () {\n return getParents(module.bundle.root, id);\n });\n if (assetsToAlsoAccept && assetsToAccept.length) {\n assetsToAlsoAccept.forEach(function (a) {\n hmrDispose(a[0], a[1]);\n });\n\n // $FlowFixMe[method-unbinding]\n assetsToAccept.push.apply(assetsToAccept, assetsToAlsoAccept);\n }\n });\n }\n}","import Node from \"./Compositor/Node\";\nimport Canvas from \"./Compositor/Canvas\"\nimport CanvasBuffer from \"./Compositor/CanvasBuffer\";\n\nlet container = new Node(\"Box\");\ncontainer.handleDrawBefore(function(){\n this.width = 400;\n this.height = 400;\n this.padding = {\n left: 10,\n right: 10,\n top: 10,\n bottom: 10\n };\n});\n\nlet scroll = 2;\ncontainer.handleDraw(function(canvasBuffer,area){\n let ctx = canvasBuffer.context;\n ctx.beginPath();\n ctx.lineWidth = 1;\n ctx.strokeStyle = \"red\";\n ctx.rect(2,2,area.width - 2,area.height - 2);\n ctx.stroke();\n ctx.closePath();\n /*\n let offscreen = new CanvasBuffer(area.width - 8, area.height - 8);\n for (const child of this.ChildNodes)\n {\n this.DrawChild(offscreen, child, offscreen.width - 8, offscreen.height - 8);\n };\n offscreen.writeTo(\n ctx,\n 0,0, area.width, area.height,\n 4,4, area.width, area.height\n )*/\n return true;\n});\n\nclass Button extends Node\n{\n public color : string = \"#00ff00\";\n constructor(x: number, y:number, name: string){\n super();\n this.x = x;\n this.y = y;\n this.name = name;\n this.handleDrawBefore(function(area){\n this.width = 50;\n this.height = 50;\n });\n this.handleDraw(function(canvasBuffer,area){\n let ctx = canvasBuffer.context;\n ctx.beginPath();\n ctx.lineWidth = 1;\n ctx.fillStyle = this.color;\n ctx.fillRect(0,0,area.width - 4,area.height - 4);\n ctx.closePath();\n return true;\n });\n this.on(\"mouse\",(event) => {\n switch(event.type)\n {\n case \"mouse:down\":{\n event.stoppedBubbling = true;\n this.color = \"#007700\";\n this.update();\n break;\n }\n case \"mouse:up\":{\n event.stoppedBubbling = true;\n this.color = \"#00dd00\";\n this.update();\n break;\n }\n case \"mouse:enter\":{\n event.stoppedBubbling = true;\n this.color = \"#00dd00\";\n this.update();\n break;\n }\n case \"mouse:leave\":{\n event.stoppedBubbling = true;\n this.color = \"#00ff00\";\n this.update();\n break;\n }\n }\n });\n }\n};\nclass TextNode extends Node\n{\n public color : string = \"#00ff00\";\n public textSize: TextMetrics;\n public text: string;\n public fontSize : number = 24;\n constructor(text: string){\n super();\n this.text = text;\n this.context.context.font = \"system-ui \"+this.fontSize+\"px\";\n this.textSize = this.context.context.measureText(text);\n\n this.handleDrawBefore(function(){\n this.width = this.textSize.width;\n this.height = 50;\n });\n this.handleDraw(function(canvasBuffer,area){\n let ctx = canvasBuffer.context;\n ctx.beginPath();\n ctx.lineWidth = 1;\n ctx.fillStyle = this.color;\n ctx.fillRect(2,2,area.width - 2,area.height - 2);\n ctx.closePath();\n });\n }\n};\n\nfor(let a = 0; a < 500; a += 50)\n{\n for(let b = 0; b < 500; b += 50)\n {\n container.addNode(new Button(a,b,\"Box A\"));\n }\n}\n\n\nlet t = new Canvas();\nt.init();\nt.addNode(container);\n\nt.canvas.addEventListener(\"wheel\",function(event){\n event.preventDefault();\n event.stopPropagation();\n \n let delta = event.deltaY < 0 ? -5 : +5;\n \n scroll = Math.max(scroll + delta, 0);\n\n container.update();\n \n});","\ntype DrawArea = {width:number,height:number};\ntype DrawFunction = (this: T, ctx: CanvasBuffer,area:DrawArea) => any;\nimport CanvasBuffer from \"./CanvasBuffer\";\nimport NodeEvent from \"./NodeEvent\";\n\nexport default class Node\n{\n public name = \"\";\n\n public context : CanvasBuffer = new CanvasBuffer();\n\n protected buffered : boolean = false;\n protected requiredRedraw : boolean = true;\n\n public ChildNodes : Node[] = [];\n public parentNode? : Node;\n\n public width : number = 0;\n public height : number = 0;\n public x : number = 0;\n public y : number = 0;\n public scale : number = 1;\n public rotate = 0;\n\n public mouseHover : boolean = false;\n \n public padding = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n }; \n constructor(name?:string)\n {\n this.name = name || \"\";\n }\n public update()\n {\n this.requiredRedraw = true;\n if(this.parentNode)\n {\n this.parentNode.update();\n }\n else\n {\n this.emit(\"draw\", new NodeEvent(), false);\n }\n }\n public draw(maxWidth?: number, maxHeight?: number) : CanvasBuffer\n {\n let drawableAreaWidth = this.width;\n let drawableAreaHeight = this.height;\n\n if(maxWidth)\n {\n drawableAreaWidth = Math.min(drawableAreaWidth, maxWidth);\n }\n if(maxHeight)\n {\n drawableAreaHeight = Math.min(drawableAreaHeight, maxHeight);\n }\n\n if(this.hasEvent(\"draw\"))\n {\n let cancelDraw = false;\n this.handleEvent(\"draw:before\",(callback) => {\n\n return callback.call(this,{\n drawableAreaWidth,\n drawableAreaHeight\n })\n\n });\n\n let frame = this.handleEvent(\"draw\",(event) => {\n let offscreen = new CanvasBuffer(drawableAreaWidth, drawableAreaHeight);\n\n cancelDraw = event.apply(this, [\n offscreen, {\n width: drawableAreaWidth,\n height: drawableAreaHeight\n }\n ]);\n return offscreen;\n }) as CanvasBuffer;\n\n this.context = frame;\n this.buffered = true;\n\n this.handleEvent(\"draw:after\",(callback) => {\n\n return callback.call(this,{\n drawableAreaWidth,\n drawableAreaHeight\n })\n\n });\n if(!cancelDraw)\n {\n return frame;\n }\n };\n \n let width = drawableAreaWidth - (this.padding.right + this.padding.left);\n let height = drawableAreaHeight - (this.padding.bottom + this.padding.top);\n\n this.buffered = true;\n \n let offscreen = new CanvasBuffer(width, height);\n for (const node of this.ChildNodes)\n {\n this.DrawChild(\n offscreen,\n node,\n width, height\n );\n };\n offscreen.writeTo(\n this.context,\n 0, 0,\n offscreen.width, offscreen.height,\n this.padding.left, this.padding.top,\n offscreen.width, offscreen.height\n );\n return this.context;\n }\n\n public getContextArea()\n {\n return {\n\n width: Math.min(\n this.width,\n this.parentNode?.width || Infinity\n ) - (\n this.padding.right + this.padding.left\n ),\n\n height: Math.min(\n this.height,\n this.parentNode?.height || Infinity\n ) - (\n this.padding.bottom + this.padding.top\n )\n };\n }\n\n public DrawChild(canvas:CanvasBuffer, node:Node, maxWidth: number, maxHeight: number)\n {\n let canvasWidth = Math.min(node.width, maxWidth);\n let canvasHeight = Math.min(node.height, maxHeight);\n let x = 0;\n let y = 0;\n\n\n node.handleEvent(\"draw:before\",(callback) => {\n return callback.call(node,{\n canvasWidth,\n canvasHeight\n })\n });\n \n if(node.width == 0 || node.height == 0)\n {\n return;\n }\n\n canvasWidth = Math.min(node.width, maxWidth);\n canvasHeight = Math.min(node.height, maxHeight);\n\n x += node.x;\n y += node.y;\n\n\n let frame : CanvasBuffer;\n if(!node.buffered)\n {\n frame = node.draw(canvasWidth, canvasHeight);\n }\n else\n {\n if(node.requiredRedraw)\n {\n frame = node.draw(canvasWidth, canvasHeight);\n }\n else\n {\n frame = node.context as CanvasBuffer;\n }\n };\n let context = canvas.context;\n context.save();\n\n if(node.rotate != 0)\n {\n let translateX = canvasWidth / 2;\n let translateY = canvasHeight / 2;\n \n translateX += x;\n translateY += y;\n \n \n context.translate(translateX, translateY);\n context.rotate(node.rotate);\n context.translate(-translateX, -translateY);\n }\n canvas.writeFrom(\n frame.offscreen,\n 0,\n 0,\n frame.offscreen.width,\n frame.offscreen.height,\n x,\n y,\n canvasWidth * node.scale,\n canvasHeight * node.scale\n )\n node.requiredRedraw = false;\n context.restore();\n\n\n node.handleEvent(\"draw:after\",(callback) => {\n \n return callback.call(this,{\n canvasWidth,\n canvasHeight\n })\n\n });\n\n }\n public isMatchPoint(x:number, y: number)\n {\n let {\n x:realX,\n y:realY,\n width:realWidth,\n height:realheight\n } = this.realOffset();\n\n let top = realY;\n let left = realX;\n let right = realX + realWidth;\n let bottom = realY + realheight;\n if(\n top < y &&\n bottom > y &&\n left < x &&\n right > x\n )\n {\n return true;\n }\n return false;\n }\n\n protected _events : Map<\n string,\n (\n (\n this:Node,\n e:NodeEvent\n ) => any\n )[]\n > = new Map();\n\n public on(eventName:string, callback: ((this:Node,e:NodeEvent) => any))\n {\n if(this._events.has(eventName))\n {\n this._events.get(eventName)?.push(callback);\n }else{\n this._events.set(eventName,[callback]);\n }\n }\n public realOffset() : {x:number,y:number,width: number, height: number}\n {\n let {\n width,\n height\n } = this.getContextArea();\n\n if(this.parentNode)\n {\n let current : Node = this;\n let x = 0;\n let y = 0;\n while(1)\n {\n x += current.x;\n y += current.y;\n if(current.parentNode)\n {\n current = current.parentNode;\n }\n else\n {\n break;\n }\n };\n return {\n x,\n y,\n width,\n height\n }\n }else{\n let x = this.x;\n let y = this.y;\n return {\n x,\n y,\n width,\n height\n }\n }\n }\n public emit(eventName:string, args: NodeEvent, notifyChild:boolean = true)\n {\n let eventList = this._events.get(eventName);\n\n if(notifyChild)\n {\n this.ChildNodes.filter(node => {\n if(node.isMatchPoint(args.x, args.y))\n {\n if(!node.mouseHover)\n {\n node.mouseHover = true;\n let event = args.clone();\n event.type = \"mouse:enter\";\n node.emit(\"mouse\", event, false);\n };\n return true\n }else{\n if(node.mouseHover)\n {\n node.mouseHover = false;\n let event = args.clone();\n event.type = \"mouse:leave\";\n node.emit(\"mouse\", event);\n };\n return false\n }\n \n }).some(node => {\n \n node.emit(eventName, args);\n return args.prevented != false;\n \n });\n }\n\n if(args.stoppedBubbling == false)\n {\n if(eventList)\n {\n for (const event of eventList)\n {\n event.apply(this, [args]);\n if(args.prevented)\n {\n break;\n }\n }\n };\n }\n\n };\n\n public drawScope : Map = new Map();\n public hasEvent(eventName: string) : boolean\n {\n return this.drawScope.has(eventName);\n }\n public handleEvent(eventName: string, onCallback?:(callback:Function) => any) : any\n {\n let func = this.drawScope.get(eventName);\n if(func)\n {\n if(onCallback)\n {\n return onCallback(func);\n }else{\n return func.call(this); \n }\n }\n }\n public handleDraw(e:DrawFunction)\n {\n this.drawScope.set(\"draw\", e);\n }\n public handleDrawBefore(e:DrawFunction)\n {\n this.drawScope.set(\"draw:before\", e);\n }\n public handleDrawAfter(e:DrawFunction)\n {\n this.drawScope.set(\"draw:after\", e);\n }\n public addNode(node:Node)\n {\n let {\n width,\n height\n } = this.getContextArea();\n node.width = node.width || width;\n node.height = node.height || height;\n node.parentNode = this;\n this.ChildNodes.push(node);\n }\n}","export default class CanvasBuffer\n{\n public offscreen! : OffscreenCanvas;\n public context! : OffscreenCanvasRenderingContext2D;\n public width: number = 0;\n public height: number = 0;\n constructor(width?:number, height?:number){\n this.offscreen = new OffscreenCanvas(width || 0, height || 0);\n this.context = this.offscreen.getContext(\"2d\") as OffscreenCanvasRenderingContext2D;\n this.width = width || 0;\n this.height = height || 0;\n }\n public resize(width: number, height: number)\n {\n if(this.width != width)\n {\n this.offscreen.width = width;\n this.width = width || 0;\n }\n if(this.height != height)\n {\n this.offscreen.height = height;\n this.height = height || 0;\n }\n }\n public clear()\n {\n this.context.clearRect(0, 0, this.offscreen.width, this.offscreen.height);\n }\n public writeFrom(\n canvas: OffscreenCanvas | OffscreenCanvasRenderingContext2D | HTMLCanvasElement | CanvasRenderingContext2D | CanvasBuffer,\n x?:number,\n y?:number,\n width?:number,\n height?:number,\n dx?:number,\n dy?:number,\n dwidth?:number,\n dheight?:number\n )\n {\n let args = [\n x,\n y,\n width,\n height,\n dx,\n dy,\n dwidth,\n dheight\n ];\n if(\n canvas instanceof OffscreenCanvas ||\n canvas instanceof HTMLCanvasElement\n )\n {\n _draw_content_to_canvas(\n this.context,\n canvas,\n ...args\n );\n }\n if(\n canvas instanceof OffscreenCanvasRenderingContext2D ||\n canvas instanceof CanvasRenderingContext2D\n )\n {\n _draw_content_to_canvas(\n this.context,\n canvas.canvas,\n ...args\n );\n }\n if(\n canvas instanceof CanvasBuffer\n )\n {\n _draw_content_to_canvas(\n this.context,\n canvas.offscreen,\n ...args\n );\n }\n }\n public writeTo(\n canvas: OffscreenCanvas | OffscreenCanvasRenderingContext2D | HTMLCanvasElement | CanvasRenderingContext2D | CanvasBuffer,\n x?:number,\n y?:number,\n width?:number,\n height?:number,\n dx?:number,\n dy?:number,\n dwidth?:number,\n dheight?:number\n )\n {\n let args = [\n x,\n y,\n width,\n height,\n dx,\n dy,\n dwidth,\n dheight\n ];\n if(\n canvas instanceof OffscreenCanvas ||\n canvas instanceof HTMLCanvasElement\n )\n {\n let content = canvas.getContext(\"2d\") as OffscreenCanvasRenderingContext2D | CanvasRenderingContext2D;\n \n _draw_content_to_canvas(\n content,\n this.offscreen,\n ...args\n );\n }\n if(\n canvas instanceof OffscreenCanvasRenderingContext2D ||\n canvas instanceof CanvasRenderingContext2D\n )\n {\n _draw_content_to_canvas(\n canvas,\n this.offscreen,\n ...args\n );\n }\n if(\n canvas instanceof CanvasBuffer\n )\n {\n _draw_content_to_canvas(\n canvas.context,\n this.offscreen,\n ...args\n );\n }\n }\n}\n\nfunction _draw_content_to_canvas(\n context : OffscreenCanvasRenderingContext2D | CanvasRenderingContext2D,\n canvas : OffscreenCanvas | HTMLCanvasElement,\n x?:number,\n y?:number,\n width?:number,\n height?:number,\n dx?:number,\n dy?:number,\n dwidth?:number,\n dheight?:number\n)\n{\n context.drawImage(\n canvas,\n x || 0,\n y || 0,\n width || canvas.width,\n height || canvas.height,\n dx || 0,\n dy || 0,\n dwidth || canvas.width,\n dheight || canvas.height\n )\n}","exports.interopDefault = function (a) {\n return a && a.__esModule ? a : {default: a};\n};\n\nexports.defineInteropFlag = function (a) {\n Object.defineProperty(a, '__esModule', {value: true});\n};\n\nexports.exportAll = function (source, dest) {\n Object.keys(source).forEach(function (key) {\n if (key === 'default' || key === '__esModule' || dest.hasOwnProperty(key)) {\n return;\n }\n\n Object.defineProperty(dest, key, {\n enumerable: true,\n get: function () {\n return source[key];\n },\n });\n });\n\n return dest;\n};\n\nexports.export = function (dest, destName, get) {\n Object.defineProperty(dest, destName, {\n enumerable: true,\n get: get,\n });\n};\n","export default class NodeEvent\n{\n public type = \"\";\n public prevented = false;\n public stoppedBubbling = false;\n public data : any = {};\n public keyCode : number;\n public key : string;\n public x : number;\n public y : number;\n public clone()\n {\n let u = new NodeEvent();\n u.type = this.type;\n u.prevented = this.prevented;\n u.stoppedBubbling = this.stoppedBubbling;\n u.data = this.data;\n u.keyCode = this.keyCode;\n u.key = this.key;\n u.x = this.x;\n u.y = this.y;\n return u;\n }\n}","import Node from \"./Node\";\nimport NodeEvent from \"./NodeEvent\";\nexport default class Canvas\n{\n public context : CanvasRenderingContext2D;\n public canvas : HTMLCanvasElement;\n public width : number;\n public height : number;\n\n public rootNode = new Node(\"Root\");\n public nodes: [Node,number][] = [];\n\n public pool : DrawPool = new DrawPool();\n\n public constructor()\n {\n this.canvas = document.createElement(\"canvas\");\n this.context = this.canvas.getContext(\"2d\") as CanvasRenderingContext2D;\n this.installMouseManager();\n this.installKeyboardManager();\n }\n public init()\n {\n this.canvas.style.imageRendering = \"pixelated\";\n window.document.body.appendChild(this.canvas);\n this.recalculateSize();\n window.addEventListener(\"resize\",() => this.recalculateSize());\n this.pool.trigger = () => this.drawContext();\n }\n public installMouseManager()\n {\n this.canvas.addEventListener(\"mousedown\",(event) => {\n let mouseEvent = new NodeEvent();\n mouseEvent.x = event.offsetX;\n mouseEvent.y = event.offsetY;\n mouseEvent.type = \"mouse:down\";\n this.rootNode.emit(\"mouse\", mouseEvent);\n });\n this.canvas.addEventListener(\"mousemove\",(event) => {\n let mouseEvent = new NodeEvent();\n mouseEvent.x = event.offsetX;\n mouseEvent.y = event.offsetY;\n mouseEvent.data = {\n deltaX: event.movementX,\n deltaY: event.movementY\n };\n mouseEvent.type = \"mouse:move\";\n this.rootNode.emit(\"mouse\", mouseEvent);\n });\n this.canvas.addEventListener(\"mouseup\",(event) => {\n let mouseEvent = new NodeEvent();\n mouseEvent.x = event.offsetX;\n mouseEvent.y = event.offsetY;\n mouseEvent.type = \"mouse:up\";\n this.rootNode.emit(\"mouse\", mouseEvent);\n });\n this.canvas.addEventListener(\"click\",(event) => {\n let mouseEvent = new NodeEvent();\n mouseEvent.x = event.offsetX;\n mouseEvent.y = event.offsetY;\n mouseEvent.type = \"mouse:click\";\n this.rootNode.emit(\"mouse\", mouseEvent);\n });\n this.canvas.addEventListener(\"wheel\",(event) => {\n let mouseEvent = new NodeEvent();\n mouseEvent.x = event.offsetX;\n mouseEvent.y = event.offsetY;\n mouseEvent.data = {\n xModulus: event.deltaX == 0 ? 0 : event.deltaX < 0 ? -1 : +1,\n yModulus: event.deltaY == 0 ? 0 : event.deltaY < 0 ? -1 : +1,\n xScroll: event.deltaX,\n yScroll: event.deltaY\n };\n mouseEvent.type = \"mouse:wheel\";\n this.rootNode.emit(\"mouse\", mouseEvent);\n });\n }\n public installKeyboardManager()\n {\n \n }\n public recalculateSize()\n {\n let {\n width,\n height\n } = document.body.getClientRects()[0];\n this.canvas.setAttribute(\"width\", width + \"px\");\n this.canvas.setAttribute(\"height\", height + \"px\");\n this.canvas.style.width = width + \"px\";\n this.canvas.style.height = height + \"px\";\n this.width = width;\n this.height = height\n this.pool.notify();\n }\n public addNode(node:Node, priority : number= 0)\n {\n this.nodes.push([node,priority]);\n node.on('draw',() => {\n this.pool.notify();\n });\n this.pool.notify();\n }\n public drawContext()\n {\n this.rootNode.width = this.width;\n this.rootNode.height = this.height;\n this.rootNode.ChildNodes = this.nodes.sort(([,n], [,k]) => n - k).map(e => e[0]);\n this.context.clearRect(0, 0, this.width, this.height);\n this.rootNode.context.resize(this.rootNode.width, this.rootNode.height);\n this.rootNode.draw().writeTo(\n this.context,\n 0,\n 0,\n this.rootNode.width,\n this.rootNode.height,\n 0,\n 0,\n this.rootNode.width,\n this.rootNode.height\n );\n }\n};\n\nclass DrawPool\n{\n public busy : boolean = true;\n public trigger : Function;\n public inf : number = -1;\n public addPool(e:Function)\n {\n if(!this.busy)\n {\n this.notify()\n }else this.trigger = e;\n }\n public notify()\n {\n this.busy = true;\n this.inf = requestAnimationFrame(() => {\n if(this.trigger)\n {\n this.trigger();\n }\n this.busy = false;\n });\n }\n}"],"names":[],"version":3,"file":"index.js.map","sourceRoot":"/"}