simple-window-manager 2.1.2 → 2.1.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.jsdoc.json +1 -1
- package/package.json +14 -14
- package/public/simple-window-manager.es.js +352 -338
- package/public/simple-window-manager.es.js.map +1 -1
- package/public/simple-window-manager.min.js +1 -1
- package/public/simple-window-manager.min.js.map +1 -1
- package/rollup.config.js +1 -1
- package/src/Window.js +2 -0
- package/images/src/images.js/export const close = '<?xml version=/"1.0/" encoding=/"UTF-8/" standalone=/"no/"?><!DOCTYPE svg PUBLIC /"-/W3C/DTD SVG 1.1/EN/" /"http:/www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd/"><svg width=/"100%/" height=/"100%/" viewBox=/"0 0 20 20/" version=/"1.1/" xmlns=/"http:/www.w3.org/2000/svg/" xmlns:xlink=/"http:/www.w3.org/1999/xlink/" xml:space=/"preserve/" xmlns:serif=/"http:/www.serif.com//" style=/"fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;/"><rect id=/"close/" x=/"0/" y=/"0/" width=/"20/" height=/"20/" style=/"fill:none;/"/><g><path d=/"M3.5,3.5l13,13/" style=/"fill:none;stroke:#fff;stroke-width:3px;/"/><path d=/"M16.5,3.5l-13,13/" style=/"fill:none;stroke:#fff;stroke-width:3px;/"/></g></svg>';export const minimize = '<?xml version=/"1.0/" encoding=/"UTF-8/" standalone=/"no/"?><!DOCTYPE svg PUBLIC /"-/W3C/DTD SVG 1.1/EN/" /"http:/www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd/"><svg width=/"100%/" height=/"100%/" viewBox=/"0 0 20 20/" version=/"1.1/" xmlns=/"http:/www.w3.org/2000/svg/" xmlns:xlink=/"http:/www.w3.org/1999/xlink/" xml:space=/"preserve/" xmlns:serif=/"http:/www.serif.com//" style=/"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;/"><rect id=/"minimize/" x=/"0/" y=/"0/" width=/"20/" height=/"20/" style=/"fill:none;/"/><rect x=/"2/" y=/"15.6/" width=/"16/" height=/"3.2/" style=/"fill:#fff;/"/></svg>';export const resize = '<?xml version=/"1.0/" encoding=/"UTF-8/" standalone=/"no/"?><!DOCTYPE svg PUBLIC /"-/W3C/DTD SVG 1.1/EN/" /"http:/www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd/"><svg width=/"100%/" height=/"100%/" viewBox=/"0 0 20 20/" version=/"1.1/" xmlns=/"http:/www.w3.org/2000/svg/" xmlns:xlink=/"http:/www.w3.org/1999/xlink/" xml:space=/"preserve/" xmlns:serif=/"http:/www.serif.com//" style=/"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;/"><rect id=/"resize/" x=/"0/" y=/"0/" width=/"20/" height=/"20/" style=/"fill:none;/"/><clipPath id=/"_clip1/"><rect x=/"0/" y=/"0/" width=/"20/" height=/"20/"/></clipPath><g clip-path=/"url(#_clip1)/"><rect x=/"0/" y=/"16.8/" width=/"20/" height=/"3.2/" style=/"fill:#fff;/"/><path d=/"M17.737,3.595l-14.142,14.142l2.263,2.263l14.142,-14.142l-2.263,-2.263Z/" style=/"fill:#fff;/"/><path d=/"M16.8,0l0,20l3.2,0l0,-20l-3.2,0Z/" style=/"fill:#fff;/"/><path d=/"M7.099,18.4l11.301,-11.123l0,11.123l-11.301,0Z/" style=/"fill:#fff;/"/></g></svg>';export const restore = '<?xml version=/"1.0/" encoding=/"UTF-8/" standalone=/"no/"?><!DOCTYPE svg PUBLIC /"-/W3C/DTD SVG 1.1/EN/" /"http:/www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd/"><svg width=/"100%/" height=/"100%/" viewBox=/"0 0 20 20/" version=/"1.1/" xmlns=/"http:/www.w3.org/2000/svg/" xmlns:xlink=/"http:/www.w3.org/1999/xlink/" xml:space=/"preserve/" xmlns:serif=/"http:/www.serif.com//" style=/"fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;/"><rect id=/"restore/" x=/"0/" y=/"0/" width=/"20/" height=/"20/" style=/"fill:none;/"/><g><rect x=/"7/" y=/"2.5/" width=/"10/" height=/"10/" style=/"fill:none;stroke:#fff;stroke-width:1.5px;/"/><rect x=/"7/" y=/"2.5/" width=/"10/" height=/"2/" style=/"fill:#fff;/"/></g><g><rect x=/"3/" y=/"7.5/" width=/"10/" height=/"10/" style=/"fill:none;stroke:#fff;stroke-width:1.5px;/"/><g><rect x=/"3/" y=/"7.5/" width=/"10/" height=/"2/" style=/"fill:#fff;/"/></g></g></svg>';" +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simple-window-manager.es.js","sources":["../src/html.js","../node_modules/eventemitter3/index.js","../node_modules/clicked/clicked.js","../src/Menu/config.js","../src/accelerator.js","../src/Menu/Menu.js","../src/Window.js","../src/images.js","../src/defaults.js","../src/Snap.js","../src/WindowManager.js"],"sourcesContent":["/**\r\n * shortcut to create an html element\r\n * @param {object} options\r\n * @param {type} [options.type=div]\r\n * @param {string} [options.className]\r\n * @param {object} [options.styles]\r\n * @param {HTMLElement} [options.parent]\r\n * @param {string} [options.html]\r\n * @returns {HTMLElement}\r\n * @ignore\r\n */\r\nexport function html(options = {})\r\n{\r\n const element = document.createElement(options.type || 'div')\r\n if (options.styles)\r\n {\r\n Object.assign(element.style, options.styles)\r\n }\r\n if (options.className)\r\n {\r\n element.className = options.className\r\n }\r\n if (options.html)\r\n {\r\n element.innerHTML = options.html\r\n }\r\n if (options.parent)\r\n {\r\n options.parent.appendChild(element)\r\n }\r\n return element\r\n}","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","/**\n * Watcher for click, double-click, or long-click event for both mouse and touch\n * @example\n * import { clicked } from 'clicked'\n *\n * function handleClick()\n * {\n * console.log('I was clicked.')\n * }\n *\n * const div = document.getElementById('clickme')\n * const c = clicked(div, handleClick, { threshold: 15 })\n *\n * // change callback\n * c.callback = () => console.log('different clicker')\n *\n * // destroy\n * c.destroy()\n *\n * // using built-in querySelector\n * clicked('#clickme', handleClick2)\n *\n * // watching for all types of clicks\n * function handleAllClicks(e) {\n * switch (e.type)\n * {\n * case 'clicked': ...\n * case 'double-clicked': ...\n * case 'long-clicked': ...\n * }\n *\n * // view UIEvent that caused callback\n * console.log(e.event)\n * }\n * clicked('#clickme', handleAllClicks, { doubleClicked: true, longClicked: true })\n */\n\n/** @type {object} */\nconst defaultOptions = {\n threshold: 10,\n clicked: true,\n doubleClicked: false,\n doubleClickedTime: 300,\n longClicked: false,\n longClickedTime: 500,\n capture: false,\n clickDown: false\n}\n\n/**\n * @param {HTMLElement|string} element or querySelector entry (e.g., #id-name or .class-name)\n * @param {ClickedCallback} callback called after a click, double click, or long click is registered\n * @param {object} [options]\n * @param {number} [options.threshold=10] if touch moves threshhold-pixels then the touch-click is cancelled\n * @param {boolean} [options.clicked=true] disable watcher for default clicked event\n * @param {boolean} [options.doubleClicked] enable watcher for double click\n * @param {number} [options.doubleClickedTime=500] wait time in millseconds for double click\n * @param {boolean} [options.longClicked] enable watcher for long click\n * @param {number} [options.longClickedTime=500] wait time for long click\n * @param {boolean} [options.clickDown] enable watcher for click start\n * @param {boolean} [options.capture] events will be dispatched to this registered listener before being dispatched to any EventTarget beneath it in the DOM tree\n * @returns {Clicked}\n */\nexport function clicked(element, callback, options)\n{\n return new Clicked(element, callback, options)\n}\n\nclass Clicked\n{\n constructor(element, callback, options)\n {\n if (typeof element === 'string')\n {\n element = document.querySelector(element)\n if (!element)\n {\n console.warn(`Unknown element: document.querySelector(${element}) in clicked()`)\n return\n }\n }\n this.options = Object.assign({}, defaultOptions, options)\n this.events = {\n mousedown: (e) => this.mousedown(e),\n mouseup: (e) => this.mouseup(e),\n mousemove: (e) => this.mousemove(e),\n touchstart: (e) => this.touchstart(e),\n touchmove: (e) => this.touchmove(e),\n touchcancel: (e) => this.cancel(e),\n touchend: (e) => this.touchend(e)\n }\n element.addEventListener('mousedown', this.events.mousedown, { capture: this.options.capture })\n element.addEventListener('mouseup', this.events.mouseup, { capture: this.options.capture })\n element.addEventListener('mousemove', this.events.mousemove, { capture: this.options.capture })\n element.addEventListener('touchstart', this.events.touchstart, { passive: true, capture: this.options.capture })\n element.addEventListener('touchmove', this.events.touchmove, { passive: true, capture: this.options.capture })\n element.addEventListener('touchcancel', this.events.touchcancel, { capture: this.options.capture})\n element.addEventListener('touchend', this.events.touchend, { capture: this.options.capture })\n this.element = element\n this.callback = callback\n }\n\n /**\n * removes event listeners added by Clicked\n */\n destroy()\n {\n this.element.removeEventListener('mousedown', this.events.mousedown)\n this.element.removeEventListener('mouseup', this.events.mouseup)\n this.element.removeEventListener('mousemove', this.events.mousemove)\n this.element.removeEventListener('touchstart', this.events.touchstart, { passive: true })\n this.element.removeEventListener('touchmove', this.events.touchmove, { passive: true })\n this.element.removeEventListener('touchcancel', this.events.touchcancel)\n this.element.removeEventListener('touchend', this.events.touchend)\n }\n\n touchstart(e)\n {\n if (this.down === true)\n {\n this.cancel()\n }\n else\n {\n if (e.touches.length === 1)\n {\n this.handleDown(e.changedTouches[0].screenX, e.changedTouches[0].screenY)\n }\n }\n }\n\n pastThreshold(x, y)\n {\n return Math.abs(this.lastX - x) > this.options.threshold || Math.abs(this.lastY - y) > this.options.threshold\n }\n\n touchmove(e)\n {\n if (this.down)\n {\n if (e.touches.length !== 1)\n {\n this.cancel()\n }\n else\n {\n const x = e.changedTouches[0].screenX\n const y = e.changedTouches[0].screenY\n if (this.pastThreshold(x, y))\n {\n this.cancel()\n }\n }\n }\n }\n\n /** cancel current event */\n cancel()\n {\n this.down = false\n if (this.doubleClickedTimeout)\n {\n clearTimeout(this.doubleClickedTimeout)\n this.doubleClickedTimeout = null\n }\n if (this.longClickedTimeout)\n {\n clearTimeout(this.longClickedTimeout)\n this.longClickedTimeout = null\n }\n }\n\n touchend(e)\n {\n if (this.down)\n {\n e.preventDefault()\n this.handleClicks(e, e.pointerId)\n }\n }\n\n handleClicks(e)\n {\n if (this.options.doubleClicked)\n {\n this.doubleClickedTimeout = setTimeout(() => this.doubleClickedCancel(e), this.options.doubleClickedTime)\n }\n else if (this.options.clicked)\n {\n this.callback({ event: e, type: 'clicked' })\n }\n if (this.longClickedTimeout)\n {\n clearTimeout(this.longClickedTimeout)\n this.longClickedTimeout = null\n }\n this.down = false\n }\n\n handleDown(e, x, y)\n {\n if (this.doubleClickedTimeout)\n {\n if (this.pastThreshold(x, y))\n {\n if (this.options.clicked)\n {\n this.callback({ event: e, type: 'clicked' })\n }\n this.cancel()\n }\n else\n {\n this.callback({ event: e, type: 'double-clicked' })\n this.cancel()\n }\n }\n else\n {\n this.lastX = x\n this.lastY = y\n this.down = true\n if (this.options.longClicked)\n {\n this.longClickedTimeout = setTimeout(() => this.longClicked(e), this.options.longClickedTime)\n }\n if (this.options.clickDown) {\n this.callback({ event: e, type: 'click-down' })\n }\n }\n }\n\n longClicked(e)\n {\n this.longClikedTimeout = null\n this.down = false\n this.callback({ event: e, type: 'long-clicked' })\n }\n\n doubleClickedCancel(e)\n {\n this.doubleClickedTimeout = null\n if (this.options.clicked)\n {\n this.callback({ event: e, type: 'double-clicked' })\n }\n }\n\n mousedown(e)\n {\n if (this.down === true)\n {\n this.down = false\n }\n else\n {\n this.handleDown(e, e.screenX, e.screenY)\n }\n }\n\n mousemove(e)\n {\n if (this.down)\n {\n const x = e.screenX\n const y = e.screenY\n if (this.pastThreshold(x, y))\n {\n this.cancel()\n }\n }\n }\n\n mouseup(e)\n {\n if (this.down)\n {\n e.preventDefault()\n this.handleClicks(e)\n }\n }\n}\n\n/**\n * Callback for\n * @callback Clicked~ClickedCallback\n * @param {UIEvent} event\n * @param {('clicked'|'double-clicked'|'long-clicked'|'click-down')} type\n */","export const config = {\n\n /**\n * application menu container styles\n * @type {object}\n */\n ApplicationContainerStyle: {\n 'z-index': 999999,\n 'position': 'absolute',\n 'top': 0,\n 'left': 0,\n 'user-select': 'none',\n 'font-size': '0.85em'\n },\n\n /**\n * application menu-bar styles\n * @type {object}\n */\n ApplicationMenuStyle: {\n 'display': 'flex',\n 'position': 'relative',\n 'flex-direction': 'row',\n 'color': 'black',\n 'backgroundColor': 'rgb(230,230,230)',\n 'width': '100vw',\n 'border': 'none',\n 'box-shadow': 'unset',\n 'outline': 'none'\n },\n\n /**\n * application menu entry styles\n * @type {object}\n */\n ApplicationMenuRowStyle: {\n 'padding': '0.25em 0.5em',\n 'margin': 0,\n 'line-height': '1em'\n },\n\n /**\n * lower-level menu window styles\n * @type {object}\n */\n MenuStyle: {\n 'flex-direction': 'column',\n 'position': 'absolute',\n 'user-select': 'none',\n 'color': 'black',\n 'z-index': 999999,\n 'backgroundColor': 'white',\n 'border': '1px solid rgba(0,0,0,0.5)',\n 'boxShadow': '1px 3px 3px rgba(0,0,0,0.25)'\n },\n\n /**\n * lower-level menu row styles\n * @type {object}\n */\n RowStyle: {\n 'display': 'flex',\n 'padding': '0.25em 1.5em 0.25em',\n 'line-height': '1.5em'\n },\n\n /**\n * lower-level menu accelerator styles\n * @type {object}\n */\n AcceleratorStyle: {\n 'opacity': 0.5\n },\n\n /**\n * lower-level menu separator styles\n * @type {object}\n */\n SeparatorStyle: {\n 'border-bottom': '1px solid rgba(0,0,0,0.1)',\n 'margin': '0.5em 0'\n },\n\n /**\n * accelerator key styles\n * NOTE: accelerator keys must use text-decoration as its used as a toggle in the code\n * @type {object}\n */\n AcceleratorKeyStyle: {\n 'text-decoration': 'underline',\n 'text-decoration-color': 'rgba(0,0,0,0.5)'\n },\n\n /**\n * minimum column width in pixels for checked and arrow in the lower-level menus\n * @type {number}\n */\n MinimumColumnWidth: 20,\n\n /**\n * CSS background style for selected MenuItems\n * NOTE: unselected have 'transparent' style\n * @type {string}\n */\n SelectedBackgroundStyle: 'rgba(0,0,0,0.1)',\n\n /**\n * number of pixels to overlap child menus\n * @type {number}\n */\n Overlap: 5,\n\n /**\n * time in milliseconds to wait for submenu to open when mouse hovers\n * @param {number}\n */\n SubmenuOpenDelay: 500\n}","/**\n * Keyboard Accelerator support used by menu (if available) and user-registered keys. Also works for user-defined keys independent of the menu system. Automatically instantiated when used with WindowManager.\n */\nclass Accelerator {\n\n init()\n {\n // may be initialized by Menu or WindowManager in any order\n if (!this.initialized)\n {\n this.menuKeys = {}\n this.keys = {}\n document.body.addEventListener('keydown', e => this._keydown(e))\n document.body.addEventListener('keyup', e => this._keyup(e))\n this.initialized = true\n }\n }\n\n /** clears all menu keys */\n clearMenuKeys()\n {\n this.menuKeys = {}\n }\n\n /** clear all user-registered keys */\n clearKeys()\n {\n this.keys = {}\n }\n\n /**\n * Register a shortcut key for use by an open menu\n * @param {Accelerator~KeyCodes} letter\n * @param {MenuItem} menuItem\n * @param {boolean} applicationMenu\n */\n registerMenuShortcut(letter, menuItem)\n {\n if (letter)\n {\n const keyCode = (menuItem.menu.applicationMenu ? 'alt+' : '') + letter\n this.menuKeys[this._prepareKey(keyCode)] = e =>\n {\n menuItem.handleClick(e)\n e.stopPropagation()\n e.preventDefault()\n }\n }\n }\n\n /**\n * Register special shortcut keys for menu\n * @param {MenuItem} menuItem\n */\n registerMenuSpecial(menu)\n {\n this.menuKeys['escape'] = () => menu.closeAll()\n this.menuKeys['enter'] = e => menu.enter(e)\n this.menuKeys['space'] = e => menu.enter(e)\n this.menuKeys['arrowright'] = e => menu.move(e, 'right')\n this.menuKeys['arrowleft'] = e => menu.move(e, 'left')\n this.menuKeys['arrowup'] = e => menu.move(e, 'up')\n this.menuKeys['arrowdown'] = e => menu.move(e, 'down')\n }\n\n /**\n * special key registration for alt\n * @param {function} pressed\n * @param {function} released\n */\n registerAlt(pressed, released)\n {\n this.alt = { pressed, released }\n }\n\n /**\n * Removes menu shortcuts\n */\n unregisterMenuShortcuts()\n {\n this.menuKeys = {}\n }\n\n /**\n * Keycodes definition. In the form of modifier[+modifier...]+key\n * <p>For example: ctrl+shift+e</p>\n * <p>KeyCodes are case insensitive (i.e., shift+a is the same as Shift+A). And spaces are removed</p>\n * <p>You can assign more than one key to the same shortcut by using a | between the keys (e.g., 'shift+a | ctrl+a')</p>\n * <pre>\n * Modifiers:\n * ctrl, alt, shift, meta, (ctrl aliases: command, control, commandorcontrol)\n * </pre>\n * <pre>\n * Keys:\n * escape, 0-9, minus, equal, backspace, tab, a-z, backetleft, bracketright, semicolon, quote,\n * backquote, backslash, comma, period, slash, numpadmultiply, space, capslock, f1-f24, pause,\n * scrolllock, printscreen, home, arrowup, arrowleft, arrowright, arrowdown, pageup, pagedown,\n * end, insert, delete, enter, shiftleft, shiftright, ctrlleft, ctrlright, altleft, altright, shiftleft,\n * shiftright, numlock, numpad...\n * </pre>\n * For OS-specific codes and a more detailed explanation see {@link https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/code}. Also note that 'Digit' and 'Key' are removed from the code to make it easier to type.\n *\n * @typedef {string} Accelerator~KeyCodes\n */\n\n /**\n * translate a user-provided keycode\n * @param {Accelerator~KeyCodes} keyCode\n * @return {Accelerator~KeyCodes} formatted and sorted keyCode\n * @private\n */\n _prepareKey(keyCode)\n {\n const keys = []\n let split\n keyCode += ''\n if (keyCode.length > 1 && keyCode.indexOf('|') !== -1)\n {\n split = keyCode.split('|')\n }\n else\n {\n split = [keyCode]\n }\n for (let code of split)\n {\n let key = ''\n let modifiers = []\n code = code.toLowerCase().replace(' ', '')\n if (code.indexOf('+') !== -1)\n {\n const split = code.split('+')\n for (let i = 0; i < split.length - 1; i++)\n {\n let modifier = split[i]\n modifier = modifier.replace('commandorcontrol', 'ctrl')\n modifier = modifier.replace('command', 'ctrl')\n modifier = modifier.replace('control', 'ctrl')\n modifiers.push(modifier)\n }\n modifiers = modifiers.sort((a, b) => { return a[0] > b[0] ? 1 : a[0] < b[0] ? -1 : 0 })\n for (let part of modifiers)\n {\n key += part + '+'\n }\n key += split[split.length - 1]\n }\n else\n {\n key = code\n }\n keys.push(key)\n }\n return keys\n }\n\n /**\n * Make the KeyCode pretty for printing on the menu\n * @param {KeyCode} keyCode\n * @return {string}\n */\n prettifyKey(keyCode)\n {\n let key = ''\n const codes = this._prepareKey(keyCode)\n for (let i = 0; i < codes.length; i++)\n {\n const keyCode = codes[i]\n if (keyCode.indexOf('+') !== -1)\n {\n const split = keyCode.toLowerCase().split('+')\n for (let i = 0; i < split.length - 1; i++)\n {\n let modifier = split[i]\n key += modifier[0].toUpperCase() + modifier.substr(1) + '+'\n }\n key += split[split.length - 1].toUpperCase()\n }\n else\n {\n key = keyCode.toUpperCase()\n }\n if (i !== codes.length - 1)\n {\n key += ' or '\n }\n }\n return key\n }\n\n /**\n * register a key as a global accelerator\n * @param {Accelerator~KeyCodes} keyCode (e.g., Ctrl+shift+E)\n * @param {function} callback\n */\n register(keyCode, callback)\n {\n const keys = this._prepareKey(keyCode)\n for (let key of keys)\n {\n this.keys[key] = e =>\n {\n callback(e)\n e.preventDefault()\n e.stopPropagation()\n }\n }\n }\n\n _keyup(e)\n {\n if (this.alt && (e.code === 'AltLeft' || e.code === 'AltRight'))\n {\n this.alt.released()\n this.alt.isPressed = false\n }\n }\n\n _keydown(e)\n {\n if (this.alt && !this.alt.isPressed && (e.code === 'AltLeft' || e.code === 'AltRight'))\n {\n this.alt.pressed()\n this.alt.isPressed = true\n e.preventDefault()\n }\n const modifiers = []\n if (e.altKey)\n {\n modifiers.push('alt')\n }\n if (e.ctrlKey)\n {\n modifiers.push('ctrl')\n }\n if (e.metaKey)\n {\n modifiers.push('meta')\n }\n if (e.shiftKey)\n {\n modifiers.push('shift')\n }\n let keyCode = ''\n for (let modifier of modifiers)\n {\n keyCode += modifier + '+'\n }\n let translate = e.code.toLowerCase()\n translate = translate.replace('digit', '')\n translate = translate.replace('key', '')\n keyCode += translate\n if (this.menuKeys[keyCode])\n {\n this.menuKeys[keyCode](e)\n }\n else if (this.keys[keyCode])\n {\n this.keys[keyCode](e)\n }\n }\n}\n\nexport const accelerator = new Accelerator()","import { config } from './config'\r\nimport { MenuItem } from './MenuItem'\r\nimport { accelerator } from '../accelerator'\r\nimport { html } from '../html'\r\n\r\n/**\r\n * creates a menu bar or a submenu within a menu\r\n * @param {object} [options]\r\n * @param {object} [options.styles] additional CSS styles for menu\r\n */\r\nexport class Menu\r\n{\r\n constructor(options)\r\n {\r\n accelerator.init()\r\n options = options || {}\r\n this.div = document.createElement('div')\r\n this.styles = options.styles\r\n this.children = []\r\n this.applyConfig(config.MenuStyle)\r\n this.div.tabIndex = -1\r\n }\r\n\r\n /**\r\n * append a MenuItem to the Menu\r\n * @param {MenuItem} menuItem\r\n */\r\n append(menuItem)\r\n {\r\n if (menuItem.submenu)\r\n {\r\n menuItem.submenu.menu = this\r\n }\r\n menuItem.menu = this\r\n this.div.appendChild(menuItem.div)\r\n if (menuItem.type !== 'separator')\r\n {\r\n this.children.push(menuItem)\r\n }\r\n }\r\n\r\n /**\r\n * inserts a MenuItem into the Menu\r\n * @param {number} pos\r\n * @param {MenuItem} menuItem\r\n */\r\n insert(pos, menuItem)\r\n {\r\n if (pos >= this.div.childNodes.length)\r\n {\r\n this.append(menuItem)\r\n }\r\n else\r\n {\r\n if (menuItem.submenu)\r\n {\r\n menuItem.submenu.menu = this\r\n }\r\n menuItem.menu = this\r\n this.div.insertBefore(menuItem.div, this.div.childNodes[pos])\r\n if (menuItem.type !== 'separator')\r\n {\r\n this.children.splice(pos, 0, menuItem)\r\n }\r\n }\r\n }\r\n\r\n hide()\r\n {\r\n let current = this.menu.showing\r\n while (current && current.submenu)\r\n {\r\n current.div.style.backgroundColor = 'transparent'\r\n current.submenu.div.remove()\r\n let next = current.submenu.showing\r\n if (next)\r\n {\r\n current.submenu.showing.div.style.backgroundColor = 'transparent'\r\n current.submenu.showing = null\r\n }\r\n current = next\r\n }\r\n }\r\n\r\n show(menuItem)\r\n {\r\n accelerator.unregisterMenuShortcuts()\r\n if (this.menu && this.menu.showing === menuItem)\r\n {\r\n this.hide()\r\n this.menu.showing = null\r\n this.div.remove()\r\n this.menu.showAccelerators()\r\n }\r\n else\r\n {\r\n if (this.menu)\r\n {\r\n if (this.menu.showing && this.menu.children.indexOf(menuItem) !== -1)\r\n {\r\n this.hide()\r\n }\r\n this.menu.showing = menuItem\r\n this.menu.hideAccelerators()\r\n }\r\n const div = menuItem.div\r\n const parent = this.menu.div\r\n if (this.menu.applicationMenu)\r\n {\r\n this.div.style.left = div.offsetLeft + 'px'\r\n this.div.style.top = div.offsetTop + div.offsetHeight + 'px'\r\n }\r\n else\r\n {\r\n this.div.style.left = parent.offsetLeft + parent.offsetWidth - config.Overlap + 'px'\r\n this.div.style.top = parent.offsetTop + div.offsetTop - config.Overlap + 'px'\r\n }\r\n this.attached = menuItem\r\n this.showAccelerators()\r\n Menu.application.appendChild(this.div)\r\n let label = 0, accelerator = 0, arrow = 0, checked = 0\r\n for (let child of this.children)\r\n {\r\n child.check.style.width = 'auto'\r\n child.label.style.width = 'auto'\r\n child.accelerator.style.width = 'auto'\r\n child.arrow.style.width = 'auto'\r\n if (child.type === 'checkbox')\r\n {\r\n checked = config.MinimumColumnWidth\r\n }\r\n if (child.submenu)\r\n {\r\n arrow = config.MinimumColumnWidth\r\n }\r\n }\r\n for (let child of this.children)\r\n {\r\n const childLabel = child.label.offsetWidth * 2\r\n label = childLabel > label ? childLabel : label\r\n const childAccelerator = child.accelerator.offsetWidth\r\n accelerator = childAccelerator > accelerator ? childAccelerator : accelerator\r\n if (child.submenu)\r\n {\r\n arrow = child.arrow.offsetWidth\r\n }\r\n }\r\n for (let child of this.children)\r\n {\r\n child.check.style.width = checked + 'px'\r\n child.label.style.width = label + 'px'\r\n child.accelerator.style.width = accelerator + 'px'\r\n child.arrow.style.width = arrow + 'px'\r\n }\r\n if (this.div.offsetLeft + this.div.offsetWidth > window.innerWidth)\r\n {\r\n this.div.style.left = window.innerWidth - this.div.offsetWidth + 'px'\r\n }\r\n if (this.div.offsetTop + this.div.offsetHeight > window.innerHeight)\r\n {\r\n this.div.style.top = window.innerHeight - this.div.offsetHeight + 'px'\r\n }\r\n Menu.application.menu.div.focus()\r\n }\r\n }\r\n\r\n applyConfig(base)\r\n {\r\n const styles = {}\r\n for (let style in base)\r\n {\r\n styles[style] = base[style]\r\n }\r\n if (this.styles)\r\n {\r\n for (let style in this.styles)\r\n {\r\n styles[style] = this.styles[style]\r\n }\r\n }\r\n for (let style in styles)\r\n {\r\n this.div.style[style] = styles[style]\r\n }\r\n }\r\n\r\n showAccelerators()\r\n {\r\n for (let child of this.children)\r\n {\r\n child.showShortcut()\r\n if (child.type !== 'separator')\r\n {\r\n const index = child.text.indexOf('&')\r\n if (index !== -1)\r\n {\r\n accelerator.registerMenuShortcut(child.text[index + 1], child)\r\n }\r\n }\r\n }\r\n if (!this.applicationMenu)\r\n {\r\n accelerator.registerMenuSpecial(this)\r\n }\r\n }\r\n\r\n hideAccelerators()\r\n {\r\n for (let child of this.children)\r\n {\r\n child.hideShortcut()\r\n }\r\n }\r\n\r\n closeAll()\r\n {\r\n accelerator.unregisterMenuShortcuts()\r\n let application = Menu.application.menu\r\n if (application.showing)\r\n {\r\n let menu = application\r\n while (menu.showing)\r\n {\r\n menu = menu.showing.submenu\r\n }\r\n while (menu && !menu.applicationMenu)\r\n {\r\n if (menu.showing)\r\n {\r\n menu.showing.div.style.backgroundColor = 'transparent'\r\n menu.showing = null\r\n }\r\n menu.div.remove()\r\n menu = menu.menu\r\n }\r\n if (menu)\r\n {\r\n menu.showing.div.style.background = 'transparent'\r\n menu.showing = null\r\n menu.hideAccelerators()\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * move selector to the next child pane\r\n * @param {string} direction (left or right)\r\n * @private\r\n */\r\n moveChild(direction)\r\n {\r\n let index\r\n if (direction === 'left')\r\n {\r\n const parent = this.selector.menu.menu\r\n index = parent.children.indexOf(parent.showing)\r\n index--\r\n index = (index < 0) ? parent.children.length - 1 : index\r\n parent.children[index].handleClick()\r\n }\r\n else\r\n {\r\n let parent = this.selector.menu.menu\r\n let selector = parent.showing\r\n while (!parent.applicationMenu)\r\n {\r\n selector.handleClick()\r\n selector.div.style.backgroundColor = 'transparent'\r\n parent = parent.menu\r\n selector = parent.showing\r\n }\r\n index = parent.children.indexOf(selector)\r\n index++\r\n index = (index === parent.children.length) ? 0 : index\r\n parent.children[index].handleClick()\r\n }\r\n this.selector = null\r\n }\r\n\r\n /**\r\n * move selector right and left\r\n * @param {MouseEvent} e\r\n * @param {string} direction\r\n * @private\r\n */\r\n horizontalSelector(e, direction)\r\n {\r\n if (direction === 'right')\r\n {\r\n if (this.selector.submenu)\r\n {\r\n this.selector.handleClick(e)\r\n this.selector.submenu.selector = this.selector.submenu.children[0]\r\n this.selector.submenu.selector.div.style.backgroundColor = config.SelectedBackgroundStyle\r\n this.selector = null\r\n }\r\n else\r\n {\r\n this.moveChild(direction)\r\n }\r\n }\r\n else if (direction === 'left')\r\n {\r\n if (!this.selector.menu.menu.applicationMenu)\r\n {\r\n this.selector.menu.attached.handleClick(e)\r\n this.selector.menu.menu.selector = this.selector.menu.attached\r\n this.selector = null\r\n }\r\n else\r\n {\r\n this.moveChild(direction)\r\n }\r\n }\r\n e.stopPropagation()\r\n e.preventDefault()\r\n }\r\n\r\n /**\r\n * move the selector in the menu\r\n * @param {KeyboardEvent} e\r\n * @param {string} direction (left, right, up, down)\r\n */\r\n move(e, direction)\r\n {\r\n if (this.selector)\r\n {\r\n this.selector.div.style.backgroundColor = 'transparent'\r\n let index = this.children.indexOf(this.selector)\r\n if (direction === 'down')\r\n {\r\n index++\r\n index = (index === this.children.length) ? 0 : index\r\n }\r\n else if (direction === 'up')\r\n {\r\n index--\r\n index = (index < 0) ? this.children.length - 1 : index\r\n }\r\n else\r\n {\r\n return this.horizontalSelector(e, direction)\r\n }\r\n this.selector = this.children[index]\r\n }\r\n else\r\n {\r\n if (direction === 'up')\r\n {\r\n this.selector = this.children[this.children.length - 1]\r\n }\r\n else\r\n {\r\n this.selector = this.children[0]\r\n }\r\n }\r\n if (this.selector)\r\n {\r\n this.selector.div.style.backgroundColor = config.SelectedBackgroundStyle\r\n }\r\n e.preventDefault()\r\n e.stopPropagation()\r\n }\r\n\r\n /**\r\n * click the selector with keyboard\r\n * @private\r\n */\r\n enter(e)\r\n {\r\n if (this.selector)\r\n {\r\n this.selector.handleClick(e)\r\n e.preventDefault()\r\n e.stopPropagation()\r\n }\r\n }\r\n\r\n /**\r\n * array containing the menu's items\r\n * @property {MenuItems[]} items\r\n * @readonly\r\n */\r\n get items()\r\n {\r\n return this.children\r\n }\r\n\r\n /**\r\n * show application menu accelerators when alt is pressed\r\n * @private\r\n */\r\n showApplicationAccelerators()\r\n {\r\n this.hideAccelerators()\r\n accelerator.registerAlt(() =>\r\n {\r\n if (!this.showing)\r\n {\r\n this.showAccelerators()\r\n }\r\n }, () =>\r\n {\r\n this.hideAccelerators()\r\n })\r\n }\r\n\r\n /**\r\n * use this to change the default config settings across all menus\r\n * @type {config}\r\n */\r\n static get config()\r\n {\r\n return config\r\n }\r\n\r\n /**\r\n * gets application menu height\r\n * @returns {number}\r\n */\r\n static getApplicationHeight()\r\n {\r\n return Menu.application ? Menu.application.offsetHeight : 0\r\n }\r\n\r\n /**\r\n * sets active application Menu (and removes any existing application menus)\r\n * @param {Menu} menu\r\n * @param {HTMLElement} [parent=document.body]\r\n */\r\n static setApplicationMenu(menu, parent=document.body)\r\n {\r\n accelerator.clearMenuKeys()\r\n if (Menu.application)\r\n {\r\n Menu.application.remove()\r\n }\r\n Menu.application = html({ parent, styles: config.ApplicationContainerStyle })\r\n Menu.application.menu = menu\r\n menu.applyConfig(config.ApplicationMenuStyle)\r\n for (let child of menu.children)\r\n {\r\n child.applyConfig(config.ApplicationMenuRowStyle)\r\n if (child.arrow)\r\n {\r\n child.arrow.style.display = 'none'\r\n }\r\n menu.div.appendChild(child.div)\r\n }\r\n\r\n Menu.application.appendChild(menu.div)\r\n menu.applicationMenu = true\r\n menu.div.tabIndex = -1\r\n\r\n // don't let menu bar focus unless windows are open (this fixes a focus bug)\r\n menu.div.addEventListener('focus', () =>\r\n {\r\n if (!menu.showing)\r\n {\r\n menu.div.blur()\r\n }\r\n })\r\n\r\n // close all windows if menu is no longer the focus\r\n menu.div.addEventListener('blur', () =>\r\n {\r\n if (menu.showing)\r\n {\r\n menu.closeAll()\r\n }\r\n })\r\n menu.showApplicationAccelerators()\r\n }\r\n}","import Events from 'eventemitter3'\r\nimport { clicked } from 'clicked'\r\n\r\nimport './events'\r\nimport { html } from './html'\r\nimport { Menu } from './Menu/Menu'\r\n\r\n/**\r\n * Window class returned by WindowManager.createWindow()\r\n * @param {WindowManager} [wm]\r\n * @param {Window~WindowOptions} [options]\r\n * @fires open\r\n * @fires focus\r\n * @fires blur\r\n * @fires close\r\n * @fires maximize\r\n * @fires maximize-restore\r\n * @fires move\r\n * @fires move-start\r\n * @fires move-end\r\n * @fires resize\r\n * @fires resize-start\r\n * @fires resize-end\r\n * @fires move-x\r\n * @fires move-y\r\n * @fires resize-width\r\n * @fires resize-height\r\n * @fires loaded\r\n */\r\nexport class Window extends Events\r\n{\r\n constructor(wm, options = {})\r\n {\r\n super()\r\n this.wm = wm\r\n this.options = options\r\n this.id = typeof this.options.id === 'undefined' ? Window.id++ : this.options.id\r\n\r\n this._createWin()\r\n this._createWinBox()\r\n this._createTitlebar()\r\n this._createContent()\r\n if (this.options.resizable)\r\n {\r\n this._createResize()\r\n }\r\n this._createOverlay()\r\n this._buildTransform()\r\n this._listeners()\r\n\r\n this.active = false\r\n this.maximized = false\r\n\r\n this._closed = true\r\n this._restore = null\r\n this._moving = null\r\n this._resizing = null\r\n this._attachedToScreen = { vertical: '', horziontal: '' }\r\n }\r\n\r\n /**\r\n * open the window\r\n * @param {boolean} [noFocus] do not focus window when opened\r\n */\r\n open(noFocus)\r\n {\r\n if (this._closed)\r\n {\r\n this.win.style.display = 'block'\r\n this._closed = false\r\n this.emit('open', this)\r\n if (!noFocus)\r\n {\r\n this.focus()\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * focus the window\r\n */\r\n focus()\r\n {\r\n this.active = true\r\n if (this.options.titlebar)\r\n {\r\n this.winTitlebar.style.backgroundColor = this.options.backgroundTitlebarActive\r\n }\r\n this.emit('focus', this)\r\n }\r\n\r\n /**\r\n * blur the window\r\n */\r\n blur()\r\n {\r\n this.active = false\r\n if (this.options.titlebar)\r\n {\r\n this.winTitlebar.style.backgroundColor = this.options.backgroundTitlebarInactive\r\n }\r\n this.emit('blur', this)\r\n }\r\n\r\n /**\r\n * closes the window (can be reopened with open)\r\n */\r\n close()\r\n {\r\n if (!this._closed)\r\n {\r\n this._closed = true\r\n this.win.style.display = 'none'\r\n this.emit('close', this)\r\n }\r\n }\r\n\r\n /**\r\n * is window closed?\r\n * @type {boolean}\r\n * @readonly\r\n */\r\n get closed()\r\n {\r\n return this._closed\r\n }\r\n\r\n /**\r\n * left coordinate\r\n * @type {number}\r\n */\r\n get x() { return this.options.x }\r\n set x(value)\r\n {\r\n if (value !== this.options.x)\r\n {\r\n this.options.x = value\r\n this.emit('move-x', this)\r\n this._buildTransform()\r\n }\r\n }\r\n\r\n _buildTransform()\r\n {\r\n this.win.style.transform = `translate(${this.options.x}px,${this.options.y}px)`\r\n }\r\n\r\n /**\r\n * top coordinate\r\n * @type {number}\r\n */\r\n get y() { return this.options.y }\r\n set y(value)\r\n {\r\n if (value !== this.options.y)\r\n {\r\n this.options.y = value\r\n this._buildTransform()\r\n this.emit('move-y', this)\r\n }\r\n }\r\n\r\n /**\r\n * width of window\r\n * @type {number}\r\n */\r\n get width() { return this.options.width || this.win.offsetWidth }\r\n set width(value)\r\n {\r\n if (value !== this.options.width)\r\n {\r\n if (value)\r\n {\r\n this.win.style.width = `${value}px`\r\n this.options.width = this.win.offsetWidth\r\n }\r\n else\r\n {\r\n this.win.style.width = 'auto'\r\n this.options.width = ''\r\n }\r\n this.emit('resize-width', this)\r\n }\r\n }\r\n\r\n /**\r\n * height of window\r\n * @type {number}\r\n */\r\n get height() { return this.options.height || this.win.offsetHeight }\r\n set height(value)\r\n {\r\n if (value !== this.options.height)\r\n {\r\n if (value)\r\n {\r\n this.win.style.height = `${value}px`\r\n this.options.height = this.win.offsetHeight\r\n }\r\n else\r\n {\r\n this.win.style.height = 'auto'\r\n this.options.height = ''\r\n }\r\n this.emit('resize-height', this)\r\n }\r\n }\r\n\r\n /**\r\n * resize the window\r\n * @param {number} width\r\n * @param {number} height\r\n */\r\n resize(width, height)\r\n {\r\n this.width = width\r\n this.height = height\r\n }\r\n\r\n /**\r\n * move window\r\n * @param {number} x\r\n * @param {number} y\r\n */\r\n move(x, y)\r\n {\r\n const keepInside = this.keepInside\r\n if (keepInside)\r\n {\r\n if (keepInside === true || keepInside === 'horizontal')\r\n {\r\n const width = this.wm.win.offsetWidth\r\n x = x + this.width > width ? width - this.width : x\r\n x = x < 0 ? 0 : x\r\n }\r\n if (keepInside === true || keepInside === 'vertical')\r\n {\r\n const height = this.wm.win.offsetHeight\r\n y = y + this.height > height ? height - this.height : y\r\n const top = Menu.getApplicationHeight()\r\n y = y < top ? top : y\r\n }\r\n }\r\n if (x !== this.options.x)\r\n {\r\n this.options.x = x\r\n this.emit('move-x', this)\r\n }\r\n if (y !== this.options.y)\r\n {\r\n this.options.y = y\r\n this.emit('move-y', this)\r\n }\r\n this._buildTransform()\r\n }\r\n\r\n /**\r\n * maximize the window\r\n */\r\n maximize()\r\n {\r\n if (this.options.maximizable)\r\n {\r\n if (this.maximized)\r\n {\r\n this.x = this.maximized.x\r\n this.y = this.maximized.y\r\n this.width = this.maximized.width\r\n this.height = this.maximized.height\r\n this.maximized = null\r\n this.emit('restore', this)\r\n this.buttons.maximize.innerHTML = this.options.maximizeButton\r\n }\r\n else\r\n {\r\n const x = this.x, y = this.y, width = this.win.offsetWidth, height = this.win.offsetHeight\r\n this.maximized = { x, y, width, height }\r\n this.x = 0\r\n this.y = 0\r\n this.width = this.wm.wallpaper.offsetWidth\r\n this.height = this.wm.wallpaper.offsetHeight\r\n this.emit('maximize', this)\r\n this.buttons.maximize.innerHTML = this.options.restoreButton\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * sends window to back of window-manager\r\n */\r\n sendToBack()\r\n {\r\n this.wm.sendToBack(this)\r\n }\r\n\r\n /**\r\n * send window to front of window-manager\r\n */\r\n sendToFront()\r\n {\r\n this.wm.sendToFront(this)\r\n }\r\n\r\n /**\r\n * save the state of the window\r\n * @return {Object} data\r\n */\r\n save()\r\n {\r\n const data = {}\r\n const maximized = this.maximized\r\n if (maximized)\r\n {\r\n data.maximized = { left: maximized.left, top: maximized.top, width: maximized.width, height: maximized.height }\r\n }\r\n data.x = this.x\r\n data.y = this.y\r\n if (typeof this.options.width !== 'undefined')\r\n {\r\n data.width = this.options.width\r\n }\r\n if (typeof this.options.height !== 'undefined')\r\n {\r\n data.height = this.options.height\r\n }\r\n data.closed = this._closed\r\n return data\r\n }\r\n\r\n /**\r\n * return the state of the window\r\n * @param {Object} data from save()\r\n */\r\n load(data)\r\n {\r\n if (data.maximized)\r\n {\r\n if (!this.maximized)\r\n {\r\n this.maximize(true)\r\n }\r\n }\r\n else if (this.maximized)\r\n {\r\n this.maximize(true)\r\n }\r\n if (typeof data.width !== 'undefined')\r\n {\r\n this.width = data.width\r\n }\r\n else\r\n {\r\n this.win.style.width = 'auto'\r\n }\r\n if (typeof data.height !== 'undefined')\r\n {\r\n this.height = data.height\r\n }\r\n else\r\n {\r\n this.win.style.height = 'auto'\r\n }\r\n this.move(data.x, data.y)\r\n if (data.closed)\r\n {\r\n this.close(true)\r\n }\r\n else if (this.closed)\r\n {\r\n this.open(true, true)\r\n }\r\n this.emit('loaded')\r\n }\r\n\r\n /**\r\n * change title\r\n * @type {string}\r\n */\r\n get title() { return this._title }\r\n set title(value)\r\n {\r\n this.winTitle.innerText = value\r\n this.emit('title-change', this)\r\n }\r\n\r\n\r\n /**\r\n * right coordinate of window\r\n * @type {number}\r\n */\r\n get right() { return this.x + this.width }\r\n set right(value)\r\n {\r\n this.x = value - this.width\r\n }\r\n\r\n /**\r\n * bottom coordinate of window\r\n * @type {number}\r\n */\r\n get bottom() { return this.y + this.height }\r\n set bottom(value)\r\n {\r\n this.y = value - this.height\r\n }\r\n\r\n /**\r\n * centers window in middle of other window or document.body\r\n * @param {Window} [win]\r\n */\r\n center(win)\r\n {\r\n if (win)\r\n {\r\n this.move(\r\n win.x + win.width / 2 - this.width / 2,\r\n win.y + win.height / 2 - this.height / 2\r\n )\r\n }\r\n else\r\n {\r\n this.move(\r\n window.innerWidth / 2 - this.width / 2,\r\n window.innerHeight / 2 - this.height / 2\r\n )\r\n }\r\n }\r\n\r\n _createWin()\r\n {\r\n /**\r\n * This is the top-level DOM element\r\n * @type {HTMLElement}\r\n * @readonly\r\n */\r\n this.win = html({\r\n parent: this.wm.win,\r\n styles: {\r\n 'display': 'none',\r\n 'border-radius': this.options.borderRadius,\r\n 'user-select': 'none',\r\n 'overflow': 'hidden',\r\n 'position': 'absolute',\r\n 'min-width': this.options.minWidth,\r\n 'min-height': this.options.minHeight,\r\n 'background-color': this.options.backgroundWindow,\r\n 'width': isNaN(this.options.width) ? this.options.width : this.options.width + 'px',\r\n 'height': isNaN(this.options.height) ? this.options.height : this.options.height + 'px',\r\n ...this.options.styles\r\n }\r\n })\r\n }\r\n\r\n _createWinBox()\r\n {\r\n /**\r\n * This is the container for the titlebar+content\r\n * @type {HTMLElement}\r\n * @readonly\r\n */\r\n this.winBox = html({\r\n parent: this.win,\r\n styles: {\r\n 'display': 'flex',\r\n 'flex-direction': 'column',\r\n 'width': '100%',\r\n 'height': '100%',\r\n 'min-height': this.options.minHeight\r\n }\r\n })\r\n }\r\n\r\n _createContent()\r\n {\r\n /**\r\n * This is the content DOM element. Use this to add content to the Window.\r\n * @type {HTMLElement}\r\n * @readonly\r\n */\r\n this.content = html({\r\n parent: this.winBox,\r\n type: 'section',\r\n styles: {\r\n 'display': 'block',\r\n 'flex': 1,\r\n 'min-height': this.options.minHeight,\r\n 'overflow-x': 'hidden',\r\n 'overflow-y': 'auto'\r\n }\r\n })\r\n }\r\n\r\n _createOverlay()\r\n {\r\n this.overlay = html({\r\n parent: this.win,\r\n styles: {\r\n 'display': 'none',\r\n 'position': 'absolute',\r\n 'left': 0,\r\n 'top': 0,\r\n 'width': '100%',\r\n 'height': '100%'\r\n }\r\n })\r\n this.overlay.addEventListener('mousedown', (e) => { this._downTitlebar(e); e.stopPropagation() })\r\n this.overlay.addEventListener('touchstart', (e) => { this._downTitlebar(e); e.stopPropagation() })\r\n }\r\n\r\n _downTitlebar(e)\r\n { const event = this._convertMoveEvent(e)\r\n this._moving = {\r\n x: event.pageX - this.x,\r\n y: event.pageY - this.y\r\n }\r\n this.emit('move-start', this)\r\n this._moved = false\r\n }\r\n\r\n _createTitlebar()\r\n {\r\n if (this.options.titlebar)\r\n {\r\n this.winTitlebar = html({\r\n parent: this.winBox, type: 'header', styles: {\r\n 'user-select': 'none',\r\n 'display': 'flex',\r\n 'flex-direction': 'row',\r\n 'align-items': 'center',\r\n 'justify-content': 'center',\r\n 'height': this.options.titlebarHeight,\r\n 'min-height': this.options.titlebarHeight,\r\n 'border': 0,\r\n 'padding': '0 8px',\r\n 'overflow': 'hidden',\r\n }\r\n })\r\n const winTitleStyles = {\r\n 'user-select': 'none',\r\n 'flex': 1,\r\n 'display': 'flex',\r\n 'flex-direction': 'row',\r\n 'align-items': 'center',\r\n 'user-select': 'none',\r\n 'cursor': 'default',\r\n 'padding': 0,\r\n 'margin': 0,\r\n 'font-size': '16px',\r\n 'font-weight': 400,\r\n 'color': this.options.foregroundTitle\r\n }\r\n if (this.options.titleCenter)\r\n {\r\n winTitleStyles['justify-content'] = 'center'\r\n }\r\n else\r\n {\r\n winTitleStyles['padding-left'] = '8px'\r\n\r\n }\r\n this.winTitle = html({ parent: this.winTitlebar, type: 'span', html: this.options.title, styles: winTitleStyles })\r\n this._createButtons()\r\n\r\n if (this.options.movable)\r\n {\r\n this.winTitlebar.addEventListener('mousedown', (e) => this._downTitlebar(e))\r\n this.winTitlebar.addEventListener('touchstart', (e) => this._downTitlebar(e))\r\n }\r\n if (this.options.maximizable)\r\n {\r\n clicked(this.winTitlebar, () => this.maximize(), { doubleClicked: true, clicked: false})\r\n }\r\n }\r\n }\r\n\r\n _createButtons()\r\n {\r\n this.winButtonGroup = html({\r\n parent: this.winTitlebar, styles: {\r\n 'display': 'flex',\r\n 'flex-direction': 'row',\r\n 'align-items': 'center',\r\n 'padding-left': '10px'\r\n }\r\n })\r\n const button = {\r\n 'display': 'inline-block',\r\n 'border': 0,\r\n 'margin': 0,\r\n 'margin-left': '15px',\r\n 'padding': 0,\r\n 'width': '12px',\r\n 'height': '12px',\r\n 'background-color': 'transparent',\r\n 'background-size': 'cover',\r\n 'background-repeat': 'no-repeat',\r\n 'opacity': .7,\r\n 'color': this.options.foregroundButton,\r\n 'outline': 0\r\n }\r\n this.buttons = {}\r\n if (this.options.maximizable)\r\n {\r\n this.buttons.maximize = html({ parent: this.winButtonGroup, html: this.options.maximizeButton, type: 'button', styles: button })\r\n clicked(this.buttons.maximize, () => this.maximize())\r\n }\r\n if (this.options.closable)\r\n {\r\n this.buttons.close = html({ parent: this.winButtonGroup, html: this.options.closeButton, type: 'button', styles: button })\r\n clicked(this.buttons.close, () => this.close())\r\n }\r\n for (let key in this.buttons)\r\n {\r\n const button = this.buttons[key]\r\n button.addEventListener('mousemove', () =>\r\n {\r\n button.style.opacity = 1\r\n })\r\n button.addEventListener('mouseout', () =>\r\n {\r\n button.style.opacity = 0.7\r\n })\r\n }\r\n }\r\n\r\n _createResize()\r\n {\r\n this.resizeEdge = html({\r\n parent: this.winBox, type: 'button', html: this.options.backgroundResize, styles: {\r\n 'position': 'absolute',\r\n 'bottom': 0,\r\n 'right': '4px',\r\n 'border': 0,\r\n 'margin': 0,\r\n 'padding': 0,\r\n 'cursor': 'se-resize',\r\n 'user-select': 'none',\r\n 'height': '15px',\r\n 'width': '10px',\r\n 'background': 'none'\r\n }\r\n })\r\n const down = (e) =>\r\n {\r\n const event = this._convertMoveEvent(e)\r\n const width = this.width || this.win.offsetWidth\r\n const height = this.height || this.win.offsetHeight\r\n this._resizing = {\r\n width: width - event.pageX,\r\n height: height - event.pageY\r\n }\r\n this.emit('resize-start')\r\n e.preventDefault()\r\n }\r\n this.resizeEdge.addEventListener('mousedown', down)\r\n this.resizeEdge.addEventListener('touchstart', down)\r\n }\r\n\r\n _move(e)\r\n {\r\n const event = this._convertMoveEvent(e)\r\n\r\n if (!this._isTouchEvent(e) && e.which !== 1)\r\n {\r\n this._moving && this._stopMove()\r\n this._resizing && this._stopResize()\r\n }\r\n if (this._moving)\r\n {\r\n this.move(event.pageX - this._moving.x, event.pageY - this._moving.y)\r\n this.emit('move', this)\r\n e.preventDefault()\r\n }\r\n if (this._resizing)\r\n {\r\n this.resize(\r\n event.pageX + this._resizing.width,\r\n event.pageY + this._resizing.height\r\n )\r\n this.maximized = null\r\n this.emit('resize', this)\r\n e.preventDefault()\r\n }\r\n }\r\n\r\n _up()\r\n {\r\n if (this._moving)\r\n {\r\n this._stopMove()\r\n }\r\n this._resizing && this._stopResize()\r\n }\r\n\r\n _listeners()\r\n {\r\n this.win.addEventListener('mousedown', () => this.focus())\r\n this.win.addEventListener('touchstart', () => this.focus())\r\n }\r\n\r\n _stopMove()\r\n {\r\n this._moving = null\r\n this.emit('move-end', this)\r\n }\r\n\r\n _stopResize()\r\n {\r\n this._restore = this._resizing = null\r\n this.emit('resize-end', this)\r\n }\r\n\r\n _isTouchEvent(e)\r\n {\r\n return !!window.TouchEvent && (e instanceof window.TouchEvent)\r\n }\r\n\r\n _convertMoveEvent(e)\r\n {\r\n return this._isTouchEvent(e) ? e.changedTouches[0] : e\r\n }\r\n\r\n /**\r\n * attaches window to a side of the screen\r\n * @param {('horizontal'|'vertical')} direction\r\n * @param {('left'|'right'|'top'|'bottom')} location\r\n */\r\n attachToScreen(direction, location)\r\n {\r\n this._attachedToScreen[direction] = location\r\n }\r\n\r\n /**\r\n * @param {WindowManager~Bounds} bounds\r\n * @param {(boolean|'horizontal'|'vertical')} keepInside\r\n */\r\n reposition(bounds, keepInside)\r\n {\r\n this.bounds = bounds\r\n this.keepInside = keepInside\r\n let x = this.x\r\n let y = this.y\r\n x = this._attachedToScreen.horziontal === 'right' ? bounds.right - this.width : x\r\n x = this._attachedToScreen.horizontal === 'left' ? bounds.left : x\r\n y = this._attachedToScreen.vertical === 'bottom' ? bounds.bottom - this.height : y\r\n y = this._attachedToScreen.vertical === 'top' ? bounds.top : y\r\n this.move(x, y)\r\n }\r\n\r\n /**\r\n * @param {boolean} [ignoreClosed]\r\n * @returns {boolean}\r\n */\r\n isModal(ignoreClosed)\r\n {\r\n return (ignoreClosed || !this._closed) && this.options.modal\r\n }\r\n\r\n /** @returns {boolean} */\r\n isClosed()\r\n {\r\n return this._closed\r\n }\r\n\r\n get z()\r\n {\r\n return parseInt(this.win.style.zIndex)\r\n }\r\n set z(value)\r\n {\r\n this.win.style.zIndex = value\r\n }\r\n}\r\n\r\nWindow.id = 0\r\n\r\n/**\r\n * @typedef {Object} Window~WindowOptions\r\n * @property {number} [x=0]\r\n * @property {number} [y=0]\r\n * @property {number} [width]\r\n * @property {number} [height]\r\n * @property {boolean} [modal]\r\n * @property {boolean} [openOnCreate=true]\r\n * @property {*} [id]\r\n * @property {boolean} [movable=true]\r\n * @property {boolean} [resizable=true]\r\n * @property {boolean} [maximizable=true]\r\n * @property {boolean} [closable=true]\r\n * @property {boolean} [noSnap] don't snap this window or use this window as a snap target\r\n * @property {boolean} [titlebar=true]\r\n * @property {string} [titlebarHeight=36px]\r\n * @property {boolean} [titleCenter]\r\n * @property {string} [minWidth=200px]\r\n * @property {string} [minHeight=60px]\r\n * @property {string} [borderRadius=4px]\r\n * @property {string} [backgroundModal=rgba(0,0,0,0.6)]\r\n * @property {string} [backgroundWindow=#fefefe]\r\n * @property {string} [backgroundTitlebarActive=#365d98]\r\n * @property {string} [backgroundTitlebarInactive=#888888]\r\n * @property {string} [foregroundButton=#ffffff]\r\n * @property {string} [foregroundTitle=#ffffff]\r\n * @property {Object} [styles]\r\n * @property {string} [maximizeButton=...] used to replace the graphics for the button\r\n * @property {string} [closeButton=...] used to replace the graphics for the button\r\n * @property {string} [resize=...] used to replace the graphics for the button\r\n */","export const close='<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg width=\"100%\" height=\"100%\" viewBox=\"0 0 20 20\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;\"><rect id=\"close\" x=\"0\" y=\"0\" width=\"20\" height=\"20\" style=\"fill:none;\"/><g><path d=\"M3.5,3.5l13,13\" style=\"fill:none;stroke:#fff;stroke-width:3px;\"/><path d=\"M16.5,3.5l-13,13\" style=\"fill:none;stroke:#fff;stroke-width:3px;\"/></g></svg>';export const maximize='<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg width=\"100%\" height=\"100%\" viewBox=\"0 0 20 20\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;\"><rect id=\"maximize\" x=\"0\" y=\"0\" width=\"20\" height=\"20\" style=\"fill:none;\"/><rect x=\"2\" y=\"2\" width=\"16\" height=\"16\" style=\"fill:none;stroke:#fff;stroke-width:2px;\"/><rect x=\"2\" y=\"2\" width=\"16\" height=\"3.2\" style=\"fill:#fff;\"/></svg>';export const minimize='<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg width=\"100%\" height=\"100%\" viewBox=\"0 0 20 20\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"><rect id=\"minimize\" x=\"0\" y=\"0\" width=\"20\" height=\"20\" style=\"fill:none;\"/><rect x=\"2\" y=\"15.6\" width=\"16\" height=\"3.2\" style=\"fill:#fff;\"/></svg>';export const resize='<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg width=\"100%\" height=\"100%\" viewBox=\"0 0 20 20\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"><rect id=\"resize\" x=\"0\" y=\"0\" width=\"20\" height=\"20\" style=\"fill:none;\"/><clipPath id=\"_clip1\"><rect x=\"0\" y=\"0\" width=\"20\" height=\"20\"/></clipPath><g clip-path=\"url(#_clip1)\"><rect x=\"0\" y=\"16.8\" width=\"20\" height=\"3.2\" style=\"fill:#fff;\"/><path d=\"M17.737,3.595l-14.142,14.142l2.263,2.263l14.142,-14.142l-2.263,-2.263Z\" style=\"fill:#fff;\"/><path d=\"M16.8,0l0,20l3.2,0l0,-20l-3.2,0Z\" style=\"fill:#fff;\"/><path d=\"M7.099,18.4l11.301,-11.123l0,11.123l-11.301,0Z\" style=\"fill:#fff;\"/></g></svg>';export const restore='<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg width=\"100%\" height=\"100%\" viewBox=\"0 0 20 20\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;\"><rect id=\"restore\" x=\"0\" y=\"0\" width=\"20\" height=\"20\" style=\"fill:none;\"/><g><rect x=\"7\" y=\"2.5\" width=\"10\" height=\"10\" style=\"fill:none;stroke:#fff;stroke-width:1.5px;\"/><rect x=\"7\" y=\"2.5\" width=\"10\" height=\"2\" style=\"fill:#fff;\"/></g><g><rect x=\"3\" y=\"7.5\" width=\"10\" height=\"10\" style=\"fill:none;stroke:#fff;stroke-width:1.5px;\"/><g><rect x=\"3\" y=\"7.5\" width=\"10\" height=\"2\" style=\"fill:#fff;\"/></g></g></svg>';","import { close, maximize, restore, resize } from './images'\n\nexport const defaultWindowOptions = {\n x: 0,\n y: 0,\n width: undefined,\n height: undefined,\n modal: false,\n openOnCreate: true,\n id: null,\n\n minWidth: '200px',\n minHeight: '60px',\n borderRadius: 0,\n styles: {},\n\n movable: true,\n resizable: true,\n maximizable: true,\n closable: true,\n\n noSnap: false,\n noMenu: false,\n\n titlebar: true,\n titlebarHeight: '2rem',\n\n backgroundWindow: '#fefefe',\n backgroundTitlebarActive: '#365d98',\n backgroundTitlebarInactive: '#888888',\n foregroundButton: '#ffffff',\n foregroundTitle: '#ffffff',\n\n closeButton: close,\n maximizeButton: maximize,\n restoreButton: restore,\n\n backgroundResize: resize\n}\n\nexport const defaultWindowManagerOptions = {\n quiet: false,\n keepInside: true,\n snap: true,\n noAccelerator: false,\n menu: false,\n styles: {},\n backgroundModal: 'rgba(0, 0, 0, 0.6)',\n}","import { html } from './html'\nimport { Menu } from './Menu/Menu'\n\nconst DEFAULT_COLOR = '#a8f0f4'\nconst DEFAULT_SIZE = 10\n\nconst SnapOptionsDefault = {\n screen: true,\n windows: true,\n snap: 20,\n color: DEFAULT_COLOR,\n spacing: 0,\n indicator: DEFAULT_SIZE\n}\n\n/**\n * edge snapping plugin\n * @param {WindowManager} wm\n * @param {object} [options]\n * @param {boolean} [options.screen=true] snap to screen edges\n * @param {boolean} [options.windows=true] snap to window edges\n * @param {number} [options.snap=20] distance to edge in pixels before snapping and width/height of snap bars\n * @param {string} [options.color=#a8f0f4] color for snap bars\n * @param {number} [options.spacing=0] spacing distance between window and edges\n * @param {number} [options.indicator=10] size in pixels of snapping indicator (the indicator is actually twice the size of what is shown)\n * @ignore\n */\nexport class Snap\n{\n constructor(wm, options={})\n {\n this.wm = wm\n this.options = { ...SnapOptionsDefault, ...options }\n this.highlights = html({ parent: this.wm.wallpaper, styles: { position: 'absolute' } })\n this.horizontal = html({\n parent: this.highlights, styles: {\n display: 'none',\n position: 'absolute',\n height: `${this.options.indicator}px`,\n borderRadius: `${this.options.indicator}px`,\n backgroundColor: this.options.color\n }\n })\n this.vertical = html({\n parent: this.highlights, styles: {\n display: 'none',\n position: 'absolute',\n width: `${this.options.indicator}px`,\n borderRadius: `${this.options.indicator}px`,\n backgroundColor: this.options.color\n }\n })\n this.horizontal\n this.showing = []\n }\n\n stop()\n {\n this.highlights.remove()\n this.stopped = true\n }\n\n addWindow(win)\n {\n win.on('move', () => this.move(win))\n win.on('move-end', () => this.moveEnd(win))\n }\n\n screenMove(rect, horizontal, vertical)\n {\n const top = Menu.getApplicationHeight()\n const width = this.wm.win.clientWidth\n const height = this.wm.win.clientHeight\n if (rect.left - this.options.snap <= width && rect.right + this.options.snap >= 0)\n {\n if (Math.abs(rect.top - top) <= this.options.snap)\n {\n horizontal.push({ distance: Math.abs(rect.top - top), left: 0, width, top: top, side: 'top', screen: true })\n }\n else if (Math.abs(rect.bottom - height) <= this.options.snap)\n {\n horizontal.push({ distance: Math.abs(rect.bottom - height), left: 0, width, top: height, side: 'bottom', screen: true })\n }\n }\n if (rect.top - this.options.snap <= height && rect.bottom + this.options.snap >= 0)\n {\n if (Math.abs(rect.left - 0) <= this.options.snap)\n {\n vertical.push({ distance: Math.abs(rect.left - 0), top: 0, height, left: 0, side: 'left', screen: true })\n }\n else if (Math.abs(rect.right - width) <= this.options.snap)\n {\n vertical.push({ distance: Math.abs(rect.right - width), top: 0, height, left: width, side: 'right', screen: true })\n }\n }\n }\n\n windowsMove(original, rect, horizontal, vertical)\n {\n for (let win of this.wm.windows)\n {\n if (!win.options.noSnap && win !== original)\n {\n const rect2 = win.win.getBoundingClientRect()\n if (rect.left - this.options.snap <= rect2.right && rect.right + this.options.snap >= rect2.left)\n {\n if (Math.abs(rect.top - rect2.bottom) <= this.options.snap)\n {\n horizontal.push({ distance: Math.abs(rect.top - rect2.bottom), left: rect2.left, width: rect2.width, top: rect2.bottom, side: 'top' })\n if (Math.abs(rect.left - rect2.left) <= this.options.snap)\n {\n vertical.push({ distance: Math.abs(rect.left - rect2.left), top: rect2.top, height: rect2.height, left: rect2.left, side: 'left', noSpacing: true })\n }\n else if (Math.abs(rect.right - rect2.right) <= this.options.snap)\n {\n vertical.push({ distance: Math.abs(rect.right - rect2.right), top: rect2.top, height: rect2.height, left: rect2.right, side: 'right', noSpacing: true })\n }\n }\n else if (Math.abs(rect.bottom - rect2.top) <= this.options.snap)\n {\n horizontal.push({ distance: Math.abs(rect.bottom - rect2.top), left: rect2.left, width: rect2.width, top: rect2.top, side: 'bottom' })\n if (Math.abs(rect.left - rect2.left) <= this.options.snap)\n {\n vertical.push({ distance: Math.abs(rect.left - rect2.left), top: rect2.top, height: rect2.height, left: rect2.left, side: 'left', noSpacing: true })\n }\n else if (Math.abs(rect.right - rect2.right) <= this.options.snap)\n {\n vertical.push({ distance: Math.abs(rect.right - rect2.right), top: rect2.top, height: rect2.height, left: rect2.right, side: 'right', noSpacing: true })\n }\n }\n }\n if (rect.top - this.options.snap <= rect2.bottom && rect.bottom + this.options.snap >= rect2.top)\n {\n if (Math.abs(rect.left - rect2.right) <= this.options.snap)\n {\n vertical.push({ distance: Math.abs(rect.left - rect2.right), top: rect2.top, height: rect2.height, left: rect2.right, side: 'left' })\n if (Math.abs(rect.top - rect2.top) <= this.options.snap)\n {\n horizontal.push({ distance: Math.abs(rect.top - rect2.top), left: rect2.left, width: rect2.width, top: rect2.top, side: 'top', noSpacing: true })\n }\n else if (Math.abs(rect.bottom - rect2.bottom) <= this.options.snap)\n {\n horizontal.push({ distance: Math.abs(rect.bottom - rect2.bottom), left: rect2.left, width: rect2.width, top: rect2.bottom, side: 'bottom', noSpacing: true })\n }\n }\n else if (Math.abs(rect.right - rect2.left) <= this.options.snap)\n {\n vertical.push({ distance: Math.abs(rect.right - rect2.left), top: rect2.top, height: rect2.height, left: rect2.left, side: 'right' })\n if (Math.abs(rect.top - rect2.top) <= this.options.snap)\n {\n horizontal.push({ distance: Math.abs(rect.top - rect2.top), left: rect2.left, width: rect2.width, top: rect2.top, side: 'top', noSpacing: true })\n }\n else if (Math.abs(rect.bottom - rect2.bottom) <= this.options.snap)\n {\n horizontal.push({ distance: Math.abs(rect.bottom - rect2.bottom), left: rect2.left, width: rect2.width, top: rect2.bottom, side: 'bottom', noSpacing: true })\n }\n }\n }\n }\n }\n }\n\n move(win)\n {\n if (this.stopped || win.options.noSnap || win.isModal())\n {\n return\n }\n this.horizontal.style.display = 'none'\n this.vertical.style.display = 'none'\n const horizontal = []\n const vertical = []\n const rect = win.win.getBoundingClientRect()\n if (this.options.screen)\n {\n this.screenMove(rect, horizontal, vertical)\n }\n if (this.options.windows)\n {\n this.windowsMove(win, rect, horizontal, vertical)\n }\n if (horizontal.length)\n {\n horizontal.sort((a, b) => { return a.distance - b.distance })\n const find = horizontal[0]\n this.horizontal.style.display = 'block'\n this.horizontal.style.width = find.width + 'px'\n this.horizontal.y = find.top - this.options.indicator / 2\n this.horizontal.yPosition = find.top\n this.horizontal.style.transform = `translate(${find.left}px,${this.horizontal.y}px)`\n this.horizontal.side = find.side\n this.horizontal.noSpacing = find.noSpacing\n this.horizontal.screen = find.screen\n }\n if (vertical.length)\n {\n vertical.sort((a, b) => { return a.distance - b.distance })\n const find = vertical[0]\n this.vertical.style.display = 'block'\n this.vertical.style.height = find.height + 'px'\n this.vertical.x = find.left - this.options.indicator / 2\n this.vertical.xPosition = find.left\n this.vertical.style.transform = `translate(${this.vertical.x}px,${find.top}px)`\n this.vertical.side = find.side\n this.vertical.noSpacing = find.noSpacing\n this.vertical.screen = find.screen\n }\n }\n\n moveEnd(win)\n {\n if (this.stopped)\n {\n return\n }\n const bounds = this.wm.bounds\n const top = Menu.getApplicationHeight()\n if (this.horizontal.style.display === 'block')\n {\n const spacing = this.horizontal.noSpacing ? 0 : this.options.spacing\n switch (this.horizontal.side)\n {\n case 'top':\n win.y = this.horizontal.yPosition + spacing - bounds.top + top\n break\n\n case 'bottom':\n win.bottom = Math.floor(this.horizontal.yPosition - spacing - bounds.top + top)\n break\n }\n win.attachToScreen('vertical', this.horizontal.screen ? this.horizontal.side : '')\n }\n if (this.vertical.style.display === 'block')\n {\n const spacing = this.vertical.noSpacing ? 0 : this.options.spacing\n switch (this.vertical.side)\n {\n case 'left':\n win.x = this.vertical.xPosition + spacing - bounds.left\n break\n\n case 'right':\n win.right = Math.floor(this.vertical.xPosition - spacing - bounds.left)\n break\n }\n win.attachToScreen('horziontal', this.vertical.screen ? this.vertical.side : '')\n }\n this.horizontal.style.display = this.vertical.style.display = 'none'\n }\n}\n\n\n/**\n * @typedef {Object} Snap~SnapOptions\n * @property {boolean} [screen=true] snap to screen edges\n * @property {boolean} [windows=true] snap to window edges\n * @property {number} [snap=20] distance to edge before snapping\n * @property {string} [color=#a8f0f4] color for snap bars\n * @property {number} [spacing=0] spacing distance between window and edges\n * @property {number} [options.indicator=10] size in pixels of snapping indicator (the indicator is actually twice the size of what is shown)\n */","import { html } from './html'\r\nimport { Window } from './Window'\r\nimport { defaultWindowManagerOptions, defaultWindowOptions } from './defaults'\r\nimport { Snap } from './Snap'\r\nimport { accelerator } from './accelerator'\r\nimport { Menu } from './Menu/Menu'\r\n\r\n/**\r\n * Create the WindowManager\r\n * @param {Object} [options]\r\n * @param {HTMLElement} [options.parent=document.body] parent to append WindowManager\r\n * @param {string} [options.backgroundModal=rgba(0, 0, 0, 0.6)] background color for window\r\n * @param {boolean} [options.quiet] suppress the simple-window-manager console message\r\n * @param {(boolean|WindowManager~SnapOptions)} [options.snap] initialize snap plugin\r\n * @param {boolean} [options.noAccelerator] do not initialize keyboard accelerators (needed for Menu)\r\n * @param {(boolean|'horizontal'|'vertical')} [options.keepInside=true] keep windows inside the parent in a certain direction\r\n * @param {Object} [options.styles] additional hard-coded styles for main container window (eg, { color: 'green' })\r\n * @param {Window~WindowOptions} [windowOptions] default options used when createWindow is called\r\n */\r\nexport class WindowManager\r\n{\r\n constructor(options = {}, windowOptions = {})\r\n {\r\n this.options = { ...defaultWindowManagerOptions, ...options }\r\n this.options.parent = this.options.parent || document.body\r\n if (!this.options.quiet)\r\n {\r\n console.log('%c ☕ simple-window-manager initialized ☕', 'color: #ff00ff')\r\n }\r\n this.windows = []\r\n this.active = null\r\n this._setupWin()\r\n this._setupWallpaper()\r\n this._setupModal()\r\n if (this.options.snap)\r\n {\r\n this.snap(this.options.snap === true ? {} : this.options.snap)\r\n }\r\n this.windowOptions = { ...defaultWindowOptions, ...windowOptions }\r\n window.addEventListener('resize', () => this.resize())\r\n if (!this.options.noAccelerator)\r\n {\r\n accelerator.init()\r\n }\r\n }\r\n\r\n /**\r\n * Create a window\r\n * @param {WindowOptions} [options]\r\n * @param {string} [options.title]\r\n * @param {number} [options.x] position\r\n * @param {number} [options.y] position\r\n * @param {boolean} [options.modal]\r\n * @param {(number|*)} [options.id] if not provide, id will be assigned in order of creation (0, 1, 2...)\r\n * @returns {Window} the created window\r\n */\r\n createWindow(options = {})\r\n {\r\n const win = new Window(this, { ...this.windowOptions, ...options })\r\n win.on('open', () => this._open(win))\r\n win.on('focus', () => this._focus(win))\r\n win.on('blur', () => this._blur(win))\r\n win.on('close', () => this._close(win))\r\n win.win.addEventListener('mousemove', (e) => this._move(e))\r\n win.win.addEventListener('touchmove', (e) => this._move(e))\r\n win.win.addEventListener('mouseup', (e) => this._up(e))\r\n win.win.addEventListener('touchend', (e) => this._up(e))\r\n if (this._snap && !options.noSnap)\r\n {\r\n this._snap.addWindow(win)\r\n }\r\n win.reposition(this.bounds, this.options.keepInside)\r\n if (win.options.openOnCreate)\r\n {\r\n win.open()\r\n }\r\n return win\r\n }\r\n\r\n /**\r\n * enable edge and/or screen snapping\r\n * @param {WindowManager~SnapOptions} [options]\r\n */\r\n snap(options)\r\n {\r\n this._snap = new Snap(this, options)\r\n for (const win of this.windows)\r\n {\r\n if (!win.options.noSnap)\r\n {\r\n this._snap.addWindow(win)\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * send window to front\r\n * @param {Window} win\r\n */\r\n sendToFront(win)\r\n {\r\n const index = this.windows.indexOf(win)\r\n console.assert(index !== -1, 'sendToFront should find window in this.windows')\r\n if (index !== this.windows.length - 1)\r\n {\r\n this.windows.splice(index, 1)\r\n this.windows.push(win)\r\n this._reorder()\r\n }\r\n }\r\n\r\n /**\r\n * send window to back\r\n * @param {Window} win\r\n */\r\n sendToBack(win)\r\n {\r\n const index = this.windows.indexOf(win)\r\n console.assert(index !== -1, 'sendToFront should find window in this.windows')\r\n if (index !== 0)\r\n {\r\n this.windows.splice(index, 1)\r\n this.windows.unshift(win)\r\n this._reorder()\r\n }\r\n }\r\n\r\n /**\r\n * save the state of all the windows\r\n * @returns {Object} use this object in load() to restore the state of all windows\r\n */\r\n save()\r\n {\r\n const data = {}\r\n for (let i = 0; i < this.windows.length; i++)\r\n {\r\n const win = this.windows[i]\r\n data[win.id] = win.save()\r\n data[win.id].order = i\r\n }\r\n return data\r\n }\r\n\r\n /**\r\n * restores the state of all the windows\r\n * NOTE: this requires that the windows have the same id as when save() was called\r\n * @param {Object} data created by save()\r\n */\r\n load(data)\r\n {\r\n for (const id in data)\r\n {\r\n const win = this.getWindowById(id)\r\n if (win)\r\n {\r\n win.load(data[id])\r\n }\r\n }\r\n // reorder windows\r\n }\r\n\r\n /**\r\n * close all windows\r\n */\r\n closeAll()\r\n {\r\n for (let win of this.windows)\r\n {\r\n win.close()\r\n }\r\n this.windows = []\r\n this.active = null\r\n }\r\n\r\n /**\r\n * reorder windows\r\n * @private\r\n * @returns {number} available z-index for top window\r\n */\r\n _reorder()\r\n {\r\n let i = 0\r\n for (const win of this.windows)\r\n {\r\n if (!win.isClosed())\r\n {\r\n win.z = i++\r\n }\r\n }\r\n }\r\n\r\n _setupWin()\r\n {\r\n /**\r\n * This is the top-level DOM element\r\n * @type {HTMLElement}\r\n * @readonly\r\n */\r\n this.win = html({\r\n parent: this.options.parent,\r\n styles: {\r\n ...{\r\n 'user-select': 'none',\r\n 'width': '100%',\r\n 'height': '100%',\r\n 'overflow': 'hidden',\r\n 'z-index': -1,\r\n 'cursor': 'default',\r\n },\r\n ...this.options.styles\r\n }\r\n })\r\n }\r\n\r\n _setupWallpaper()\r\n {\r\n /**\r\n * This is the bottom DOM element. Use this to set a wallpaper or attach elements underneath the windows\r\n * @type {HTMLElement}\r\n * @readonly\r\n */\r\n this.wallpaper = html({\r\n parent: this.win,\r\n styles: {\r\n ...{\r\n 'user-select': 'none',\r\n 'position': 'absolute',\r\n 'top': 0,\r\n 'left': 0,\r\n 'width': '100%',\r\n 'height': '100%',\r\n 'overflow': 'hidden'\r\n }\r\n }\r\n })\r\n this.wallpaper.addEventListener('mousemove', (e) => this._move(e))\r\n this.wallpaper.addEventListener('touchmove', (e) => this._move(e))\r\n this.wallpaper.addEventListener('mouseup', (e) => this._up(e))\r\n this.wallpaper.addEventListener('touchend', (e) => this._up(e))\r\n }\r\n\r\n _setupModal()\r\n {\r\n this.modalOverlay = html({\r\n parent: this.win,\r\n styles: {\r\n 'display': 'none',\r\n 'user-select': 'none',\r\n 'position': 'absolute',\r\n 'top': 0,\r\n 'left': 0,\r\n 'width': '100%',\r\n 'height': '100%',\r\n 'overflow': 'hidden',\r\n 'background': this.options.backgroundModal\r\n }\r\n })\r\n this.modalOverlay.addEventListener('mousemove', (e) => { this._move(e); e.preventDefault(); e.stopPropagation() })\r\n this.modalOverlay.addEventListener('touchmove', (e) => { this._move(e); e.preventDefault(); e.stopPropagation() })\r\n this.modalOverlay.addEventListener('mouseup', (e) => { this._up(e); e.preventDefault(); e.stopPropagation() })\r\n this.modalOverlay.addEventListener('touchend', (e) => { this._up(e); e.preventDefault(); e.stopPropagation() })\r\n this.modalOverlay.addEventListener('mousedown', (e) => { e.preventDefault(); e.stopPropagation() })\r\n this.modalOverlay.addEventListener('touchstart', (e) => { e.preventDefault(); e.stopPropagation() })\r\n }\r\n\r\n _open(win)\r\n {\r\n this.windows.push(win)\r\n this._reorder()\r\n if (win.options.modal)\r\n {\r\n this.modalOverlay.style.display = 'block'\r\n this.modalOverlay.style.zIndex = win.z\r\n }\r\n else\r\n {\r\n this.modalOverlay.style.display = 'none'\r\n }\r\n }\r\n\r\n _focus(win)\r\n {\r\n if (this.active === win)\r\n {\r\n return\r\n }\r\n if (this.active)\r\n {\r\n this.active.blur()\r\n }\r\n const index = this.windows.indexOf(win)\r\n console.assert(index !== -1, 'WindowManager._focus should find window in this.windows')\r\n if (index !== this.windows.length - 1)\r\n {\r\n this.windows.splice(index, 1)\r\n this.windows.push(win)\r\n }\r\n this._reorder()\r\n this.active = this.windows[this.windows.length - 1]\r\n }\r\n\r\n _blur(win)\r\n {\r\n if (this.active === win)\r\n {\r\n this.active = null\r\n }\r\n }\r\n\r\n _close(win)\r\n {\r\n if (win.isModal(true))\r\n {\r\n const next = this.windows[this.windows.length - 1]\r\n if (next && next.isModal())\r\n {\r\n this.modalOverlay.style.zIndex = next.z\r\n }\r\n else\r\n {\r\n this.modalOverlay.style.display = 'none'\r\n }\r\n }\r\n }\r\n\r\n _move(e)\r\n {\r\n for (const key in this.windows)\r\n {\r\n this.windows[key]._move(e)\r\n }\r\n }\r\n\r\n _up(e)\r\n {\r\n for (const key in this.windows)\r\n {\r\n this.windows[key]._up(e)\r\n }\r\n }\r\n\r\n checkModal(win)\r\n {\r\n return !this.modal || this.modal === win\r\n }\r\n\r\n /** @type {WindowManager~Bounds} */\r\n get bounds()\r\n {\r\n const top = Menu.getApplicationHeight()\r\n return {\r\n top: this.win.offsetTop + top,\r\n bottom: this.win.offsetTop + this.win.offsetHeight,\r\n left: this.win.offsetLeft,\r\n right: this.win.offsetLeft + this.win.offsetWidth\r\n }\r\n }\r\n\r\n resize()\r\n {\r\n const bounds = this.bounds\r\n for (const key in this.windows)\r\n {\r\n this.windows[key].reposition(bounds, this.options.keepInside)\r\n }\r\n }\r\n\r\n /**\r\n * Find a window by id\r\n * @param {*} id\r\n * @returns {Window}\r\n */\r\n getWindowById(id)\r\n {\r\n return this.windows.find(win => win.id === id)\r\n }\r\n}\r\n\r\n/**\r\n * @typedef {Object} WindowManager~Bounds\r\n * @property {number} left\r\n * @property {number} right\r\n * @property {number} top\r\n * @property {number} bottom\r\n */\r\n\r\n /**\r\n * @typedef {Object} WindowManager~SnapOptions\r\n * @property {boolean} [screen=true] snap to screen edges\r\n * @property {boolean} [windows=true] snap to window edges\r\n * @property {number} [snap=20] distance to edge in pixels before snapping and width/height of snap bars\r\n * @property {string} [color=#a8f0f4] color for snap bars\r\n * @property {number} [spacing=0] spacing distance between window and edges\r\n * @property {number} [indicator=10] size in pixels of snapping indicator (the indicator is actually twice the size of what is shown)\r\n */"],"names":["Events"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"simple-window-manager.es.js","sources":["../src/html.js","../node_modules/eventemitter3/index.js","../node_modules/clicked/clicked.js","../src/Menu/config.js","../src/accelerator.js","../src/Menu/Menu.js","../src/Window.js","../src/images.js","../src/defaults.js","../src/Snap.js","../src/WindowManager.js"],"sourcesContent":["/**\r\n * shortcut to create an html element\r\n * @param {object} options\r\n * @param {type} [options.type=div]\r\n * @param {string} [options.className]\r\n * @param {object} [options.styles]\r\n * @param {HTMLElement} [options.parent]\r\n * @param {string} [options.html]\r\n * @returns {HTMLElement}\r\n * @ignore\r\n */\r\nexport function html(options = {})\r\n{\r\n const element = document.createElement(options.type || 'div')\r\n if (options.styles)\r\n {\r\n Object.assign(element.style, options.styles)\r\n }\r\n if (options.className)\r\n {\r\n element.className = options.className\r\n }\r\n if (options.html)\r\n {\r\n element.innerHTML = options.html\r\n }\r\n if (options.parent)\r\n {\r\n options.parent.appendChild(element)\r\n }\r\n return element\r\n}","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","/**\n * Watcher for click, double-click, or long-click event for both mouse and touch\n * @example\n * import { clicked } from 'clicked'\n *\n * function handleClick()\n * {\n * console.log('I was clicked.')\n * }\n *\n * const div = document.getElementById('clickme')\n * const c = clicked(div, handleClick, { threshold: 15 })\n *\n * // change callback\n * c.callback = () => console.log('different clicker')\n *\n * // destroy\n * c.destroy()\n *\n * // using built-in querySelector\n * clicked('#clickme', handleClick2)\n *\n * // watching for all types of clicks\n * function handleAllClicks(e) {\n * switch (e.type)\n * {\n * case 'clicked': ...\n * case 'double-clicked': ...\n * case 'long-clicked': ...\n * }\n *\n * // view UIEvent that caused callback\n * console.log(e.event)\n * }\n * clicked('#clickme', handleAllClicks, { doubleClicked: true, longClicked: true })\n */\n\n/** @type {object} */\nconst defaultOptions = {\n threshold: 10,\n clicked: true,\n doubleClicked: false,\n doubleClickedTime: 300,\n longClicked: false,\n longClickedTime: 500,\n capture: false,\n clickDown: false\n}\n\n/**\n * @param {HTMLElement|string} element or querySelector entry (e.g., #id-name or .class-name)\n * @param {ClickedCallback} callback called after a click, double click, or long click is registered\n * @param {object} [options]\n * @param {number} [options.threshold=10] if touch moves threshhold-pixels then the touch-click is cancelled\n * @param {boolean} [options.clicked=true] disable watcher for default clicked event\n * @param {boolean} [options.doubleClicked] enable watcher for double click\n * @param {number} [options.doubleClickedTime=500] wait time in millseconds for double click\n * @param {boolean} [options.longClicked] enable watcher for long click\n * @param {number} [options.longClickedTime=500] wait time for long click\n * @param {boolean} [options.clickDown] enable watcher for click start\n * @param {boolean} [options.capture] events will be dispatched to this registered listener before being dispatched to any EventTarget beneath it in the DOM tree\n * @returns {Clicked}\n */\nexport function clicked(element, callback, options)\n{\n return new Clicked(element, callback, options)\n}\n\nclass Clicked\n{\n constructor(element, callback, options)\n {\n if (typeof element === 'string')\n {\n element = document.querySelector(element)\n if (!element)\n {\n console.warn(`Unknown element: document.querySelector(${element}) in clicked()`)\n return\n }\n }\n this.options = Object.assign({}, defaultOptions, options)\n this.events = {\n mousedown: (e) => this.mousedown(e),\n mouseup: (e) => this.mouseup(e),\n mousemove: (e) => this.mousemove(e),\n touchstart: (e) => this.touchstart(e),\n touchmove: (e) => this.touchmove(e),\n touchcancel: (e) => this.cancel(e),\n touchend: (e) => this.touchend(e)\n }\n element.addEventListener('mousedown', this.events.mousedown, { capture: this.options.capture })\n element.addEventListener('mouseup', this.events.mouseup, { capture: this.options.capture })\n element.addEventListener('mousemove', this.events.mousemove, { capture: this.options.capture })\n element.addEventListener('touchstart', this.events.touchstart, { passive: true, capture: this.options.capture })\n element.addEventListener('touchmove', this.events.touchmove, { passive: true, capture: this.options.capture })\n element.addEventListener('touchcancel', this.events.touchcancel, { capture: this.options.capture})\n element.addEventListener('touchend', this.events.touchend, { capture: this.options.capture })\n this.element = element\n this.callback = callback\n }\n\n /**\n * removes event listeners added by Clicked\n */\n destroy()\n {\n this.element.removeEventListener('mousedown', this.events.mousedown)\n this.element.removeEventListener('mouseup', this.events.mouseup)\n this.element.removeEventListener('mousemove', this.events.mousemove)\n this.element.removeEventListener('touchstart', this.events.touchstart, { passive: true })\n this.element.removeEventListener('touchmove', this.events.touchmove, { passive: true })\n this.element.removeEventListener('touchcancel', this.events.touchcancel)\n this.element.removeEventListener('touchend', this.events.touchend)\n }\n\n touchstart(e)\n {\n if (this.down === true)\n {\n this.cancel()\n }\n else\n {\n if (e.touches.length === 1)\n {\n this.handleDown(e.changedTouches[0].screenX, e.changedTouches[0].screenY)\n }\n }\n }\n\n pastThreshold(x, y)\n {\n return Math.abs(this.lastX - x) > this.options.threshold || Math.abs(this.lastY - y) > this.options.threshold\n }\n\n touchmove(e)\n {\n if (this.down)\n {\n if (e.touches.length !== 1)\n {\n this.cancel()\n }\n else\n {\n const x = e.changedTouches[0].screenX\n const y = e.changedTouches[0].screenY\n if (this.pastThreshold(x, y))\n {\n this.cancel()\n }\n }\n }\n }\n\n /** cancel current event */\n cancel()\n {\n this.down = false\n if (this.doubleClickedTimeout)\n {\n clearTimeout(this.doubleClickedTimeout)\n this.doubleClickedTimeout = null\n }\n if (this.longClickedTimeout)\n {\n clearTimeout(this.longClickedTimeout)\n this.longClickedTimeout = null\n }\n }\n\n touchend(e)\n {\n if (this.down)\n {\n e.preventDefault()\n this.handleClicks(e, e.pointerId)\n }\n }\n\n handleClicks(e)\n {\n if (this.options.doubleClicked)\n {\n this.doubleClickedTimeout = setTimeout(() => this.doubleClickedCancel(e), this.options.doubleClickedTime)\n }\n else if (this.options.clicked)\n {\n this.callback({ event: e, type: 'clicked' })\n }\n if (this.longClickedTimeout)\n {\n clearTimeout(this.longClickedTimeout)\n this.longClickedTimeout = null\n }\n this.down = false\n }\n\n handleDown(e, x, y)\n {\n if (this.doubleClickedTimeout)\n {\n if (this.pastThreshold(x, y))\n {\n if (this.options.clicked)\n {\n this.callback({ event: e, type: 'clicked' })\n }\n this.cancel()\n }\n else\n {\n this.callback({ event: e, type: 'double-clicked' })\n this.cancel()\n }\n }\n else\n {\n this.lastX = x\n this.lastY = y\n this.down = true\n if (this.options.longClicked)\n {\n this.longClickedTimeout = setTimeout(() => this.longClicked(e), this.options.longClickedTime)\n }\n if (this.options.clickDown) {\n this.callback({ event: e, type: 'click-down' })\n }\n }\n }\n\n longClicked(e)\n {\n this.longClikedTimeout = null\n this.down = false\n this.callback({ event: e, type: 'long-clicked' })\n }\n\n doubleClickedCancel(e)\n {\n this.doubleClickedTimeout = null\n if (this.options.clicked)\n {\n this.callback({ event: e, type: 'double-clicked' })\n }\n }\n\n mousedown(e)\n {\n if (this.down === true)\n {\n this.down = false\n }\n else\n {\n this.handleDown(e, e.screenX, e.screenY)\n }\n }\n\n mousemove(e)\n {\n if (this.down)\n {\n const x = e.screenX\n const y = e.screenY\n if (this.pastThreshold(x, y))\n {\n this.cancel()\n }\n }\n }\n\n mouseup(e)\n {\n if (this.down)\n {\n e.preventDefault()\n this.handleClicks(e)\n }\n }\n}\n\n/**\n * Callback for\n * @callback Clicked~ClickedCallback\n * @param {UIEvent} event\n * @param {('clicked'|'double-clicked'|'long-clicked'|'click-down')} type\n */","export const config = {\n\n /**\n * application menu container styles\n * @type {object}\n */\n ApplicationContainerStyle: {\n 'z-index': 999999,\n 'position': 'absolute',\n 'top': 0,\n 'left': 0,\n 'user-select': 'none',\n 'font-size': '0.85em'\n },\n\n /**\n * application menu-bar styles\n * @type {object}\n */\n ApplicationMenuStyle: {\n 'display': 'flex',\n 'position': 'relative',\n 'flex-direction': 'row',\n 'color': 'black',\n 'backgroundColor': 'rgb(230,230,230)',\n 'width': '100vw',\n 'border': 'none',\n 'box-shadow': 'unset',\n 'outline': 'none'\n },\n\n /**\n * application menu entry styles\n * @type {object}\n */\n ApplicationMenuRowStyle: {\n 'padding': '0.25em 0.5em',\n 'margin': 0,\n 'line-height': '1em'\n },\n\n /**\n * lower-level menu window styles\n * @type {object}\n */\n MenuStyle: {\n 'flex-direction': 'column',\n 'position': 'absolute',\n 'user-select': 'none',\n 'color': 'black',\n 'z-index': 999999,\n 'backgroundColor': 'white',\n 'border': '1px solid rgba(0,0,0,0.5)',\n 'boxShadow': '1px 3px 3px rgba(0,0,0,0.25)'\n },\n\n /**\n * lower-level menu row styles\n * @type {object}\n */\n RowStyle: {\n 'display': 'flex',\n 'padding': '0.25em 1.5em 0.25em',\n 'line-height': '1.5em'\n },\n\n /**\n * lower-level menu accelerator styles\n * @type {object}\n */\n AcceleratorStyle: {\n 'opacity': 0.5\n },\n\n /**\n * lower-level menu separator styles\n * @type {object}\n */\n SeparatorStyle: {\n 'border-bottom': '1px solid rgba(0,0,0,0.1)',\n 'margin': '0.5em 0'\n },\n\n /**\n * accelerator key styles\n * NOTE: accelerator keys must use text-decoration as its used as a toggle in the code\n * @type {object}\n */\n AcceleratorKeyStyle: {\n 'text-decoration': 'underline',\n 'text-decoration-color': 'rgba(0,0,0,0.5)'\n },\n\n /**\n * minimum column width in pixels for checked and arrow in the lower-level menus\n * @type {number}\n */\n MinimumColumnWidth: 20,\n\n /**\n * CSS background style for selected MenuItems\n * NOTE: unselected have 'transparent' style\n * @type {string}\n */\n SelectedBackgroundStyle: 'rgba(0,0,0,0.1)',\n\n /**\n * number of pixels to overlap child menus\n * @type {number}\n */\n Overlap: 5,\n\n /**\n * time in milliseconds to wait for submenu to open when mouse hovers\n * @param {number}\n */\n SubmenuOpenDelay: 500\n}","/**\n * Keyboard Accelerator support used by menu (if available) and user-registered keys. Also works for user-defined keys independent of the menu system. Automatically instantiated when used with WindowManager.\n */\nclass Accelerator {\n\n init()\n {\n // may be initialized by Menu or WindowManager in any order\n if (!this.initialized)\n {\n this.menuKeys = {}\n this.keys = {}\n document.body.addEventListener('keydown', e => this._keydown(e))\n document.body.addEventListener('keyup', e => this._keyup(e))\n this.initialized = true\n }\n }\n\n /** clears all menu keys */\n clearMenuKeys()\n {\n this.menuKeys = {}\n }\n\n /** clear all user-registered keys */\n clearKeys()\n {\n this.keys = {}\n }\n\n /**\n * Register a shortcut key for use by an open menu\n * @param {Accelerator~KeyCodes} letter\n * @param {MenuItem} menuItem\n * @param {boolean} applicationMenu\n */\n registerMenuShortcut(letter, menuItem)\n {\n if (letter)\n {\n const keyCode = (menuItem.menu.applicationMenu ? 'alt+' : '') + letter\n this.menuKeys[this._prepareKey(keyCode)] = e =>\n {\n menuItem.handleClick(e)\n e.stopPropagation()\n e.preventDefault()\n }\n }\n }\n\n /**\n * Register special shortcut keys for menu\n * @param {MenuItem} menuItem\n */\n registerMenuSpecial(menu)\n {\n this.menuKeys['escape'] = () => menu.closeAll()\n this.menuKeys['enter'] = e => menu.enter(e)\n this.menuKeys['space'] = e => menu.enter(e)\n this.menuKeys['arrowright'] = e => menu.move(e, 'right')\n this.menuKeys['arrowleft'] = e => menu.move(e, 'left')\n this.menuKeys['arrowup'] = e => menu.move(e, 'up')\n this.menuKeys['arrowdown'] = e => menu.move(e, 'down')\n }\n\n /**\n * special key registration for alt\n * @param {function} pressed\n * @param {function} released\n */\n registerAlt(pressed, released)\n {\n this.alt = { pressed, released }\n }\n\n /**\n * Removes menu shortcuts\n */\n unregisterMenuShortcuts()\n {\n this.menuKeys = {}\n }\n\n /**\n * Keycodes definition. In the form of modifier[+modifier...]+key\n * <p>For example: ctrl+shift+e</p>\n * <p>KeyCodes are case insensitive (i.e., shift+a is the same as Shift+A). And spaces are removed</p>\n * <p>You can assign more than one key to the same shortcut by using a | between the keys (e.g., 'shift+a | ctrl+a')</p>\n * <pre>\n * Modifiers:\n * ctrl, alt, shift, meta, (ctrl aliases: command, control, commandorcontrol)\n * </pre>\n * <pre>\n * Keys:\n * escape, 0-9, minus, equal, backspace, tab, a-z, backetleft, bracketright, semicolon, quote,\n * backquote, backslash, comma, period, slash, numpadmultiply, space, capslock, f1-f24, pause,\n * scrolllock, printscreen, home, arrowup, arrowleft, arrowright, arrowdown, pageup, pagedown,\n * end, insert, delete, enter, shiftleft, shiftright, ctrlleft, ctrlright, altleft, altright, shiftleft,\n * shiftright, numlock, numpad...\n * </pre>\n * For OS-specific codes and a more detailed explanation see {@link https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/code}. Also note that 'Digit' and 'Key' are removed from the code to make it easier to type.\n *\n * @typedef {string} Accelerator~KeyCodes\n */\n\n /**\n * translate a user-provided keycode\n * @param {Accelerator~KeyCodes} keyCode\n * @return {Accelerator~KeyCodes} formatted and sorted keyCode\n * @private\n */\n _prepareKey(keyCode)\n {\n const keys = []\n let split\n keyCode += ''\n if (keyCode.length > 1 && keyCode.indexOf('|') !== -1)\n {\n split = keyCode.split('|')\n }\n else\n {\n split = [keyCode]\n }\n for (let code of split)\n {\n let key = ''\n let modifiers = []\n code = code.toLowerCase().replace(' ', '')\n if (code.indexOf('+') !== -1)\n {\n const split = code.split('+')\n for (let i = 0; i < split.length - 1; i++)\n {\n let modifier = split[i]\n modifier = modifier.replace('commandorcontrol', 'ctrl')\n modifier = modifier.replace('command', 'ctrl')\n modifier = modifier.replace('control', 'ctrl')\n modifiers.push(modifier)\n }\n modifiers = modifiers.sort((a, b) => { return a[0] > b[0] ? 1 : a[0] < b[0] ? -1 : 0 })\n for (let part of modifiers)\n {\n key += part + '+'\n }\n key += split[split.length - 1]\n }\n else\n {\n key = code\n }\n keys.push(key)\n }\n return keys\n }\n\n /**\n * Make the KeyCode pretty for printing on the menu\n * @param {KeyCode} keyCode\n * @return {string}\n */\n prettifyKey(keyCode)\n {\n let key = ''\n const codes = this._prepareKey(keyCode)\n for (let i = 0; i < codes.length; i++)\n {\n const keyCode = codes[i]\n if (keyCode.indexOf('+') !== -1)\n {\n const split = keyCode.toLowerCase().split('+')\n for (let i = 0; i < split.length - 1; i++)\n {\n let modifier = split[i]\n key += modifier[0].toUpperCase() + modifier.substr(1) + '+'\n }\n key += split[split.length - 1].toUpperCase()\n }\n else\n {\n key = keyCode.toUpperCase()\n }\n if (i !== codes.length - 1)\n {\n key += ' or '\n }\n }\n return key\n }\n\n /**\n * register a key as a global accelerator\n * @param {Accelerator~KeyCodes} keyCode (e.g., Ctrl+shift+E)\n * @param {function} callback\n */\n register(keyCode, callback)\n {\n const keys = this._prepareKey(keyCode)\n for (let key of keys)\n {\n this.keys[key] = e =>\n {\n callback(e)\n e.preventDefault()\n e.stopPropagation()\n }\n }\n }\n\n _keyup(e)\n {\n if (this.alt && (e.code === 'AltLeft' || e.code === 'AltRight'))\n {\n this.alt.released()\n this.alt.isPressed = false\n }\n }\n\n _keydown(e)\n {\n if (this.alt && !this.alt.isPressed && (e.code === 'AltLeft' || e.code === 'AltRight'))\n {\n this.alt.pressed()\n this.alt.isPressed = true\n e.preventDefault()\n }\n const modifiers = []\n if (e.altKey)\n {\n modifiers.push('alt')\n }\n if (e.ctrlKey)\n {\n modifiers.push('ctrl')\n }\n if (e.metaKey)\n {\n modifiers.push('meta')\n }\n if (e.shiftKey)\n {\n modifiers.push('shift')\n }\n let keyCode = ''\n for (let modifier of modifiers)\n {\n keyCode += modifier + '+'\n }\n let translate = e.code.toLowerCase()\n translate = translate.replace('digit', '')\n translate = translate.replace('key', '')\n keyCode += translate\n if (this.menuKeys[keyCode])\n {\n this.menuKeys[keyCode](e)\n }\n else if (this.keys[keyCode])\n {\n this.keys[keyCode](e)\n }\n }\n}\n\nexport const accelerator = new Accelerator()","import { config } from './config'\r\nimport { MenuItem } from './MenuItem'\r\nimport { accelerator } from '../accelerator'\r\nimport { html } from '../html'\r\n\r\n/**\r\n * creates a menu bar or a submenu within a menu\r\n * @param {object} [options]\r\n * @param {object} [options.styles] additional CSS styles for menu\r\n */\r\nexport class Menu\r\n{\r\n constructor(options)\r\n {\r\n accelerator.init()\r\n options = options || {}\r\n this.div = document.createElement('div')\r\n this.styles = options.styles\r\n this.children = []\r\n this.applyConfig(config.MenuStyle)\r\n this.div.tabIndex = -1\r\n }\r\n\r\n /**\r\n * append a MenuItem to the Menu\r\n * @param {MenuItem} menuItem\r\n */\r\n append(menuItem)\r\n {\r\n if (menuItem.submenu)\r\n {\r\n menuItem.submenu.menu = this\r\n }\r\n menuItem.menu = this\r\n this.div.appendChild(menuItem.div)\r\n if (menuItem.type !== 'separator')\r\n {\r\n this.children.push(menuItem)\r\n }\r\n }\r\n\r\n /**\r\n * inserts a MenuItem into the Menu\r\n * @param {number} pos\r\n * @param {MenuItem} menuItem\r\n */\r\n insert(pos, menuItem)\r\n {\r\n if (pos >= this.div.childNodes.length)\r\n {\r\n this.append(menuItem)\r\n }\r\n else\r\n {\r\n if (menuItem.submenu)\r\n {\r\n menuItem.submenu.menu = this\r\n }\r\n menuItem.menu = this\r\n this.div.insertBefore(menuItem.div, this.div.childNodes[pos])\r\n if (menuItem.type !== 'separator')\r\n {\r\n this.children.splice(pos, 0, menuItem)\r\n }\r\n }\r\n }\r\n\r\n hide()\r\n {\r\n let current = this.menu.showing\r\n while (current && current.submenu)\r\n {\r\n current.div.style.backgroundColor = 'transparent'\r\n current.submenu.div.remove()\r\n let next = current.submenu.showing\r\n if (next)\r\n {\r\n current.submenu.showing.div.style.backgroundColor = 'transparent'\r\n current.submenu.showing = null\r\n }\r\n current = next\r\n }\r\n }\r\n\r\n show(menuItem)\r\n {\r\n accelerator.unregisterMenuShortcuts()\r\n if (this.menu && this.menu.showing === menuItem)\r\n {\r\n this.hide()\r\n this.menu.showing = null\r\n this.div.remove()\r\n this.menu.showAccelerators()\r\n }\r\n else\r\n {\r\n if (this.menu)\r\n {\r\n if (this.menu.showing && this.menu.children.indexOf(menuItem) !== -1)\r\n {\r\n this.hide()\r\n }\r\n this.menu.showing = menuItem\r\n this.menu.hideAccelerators()\r\n }\r\n const div = menuItem.div\r\n const parent = this.menu.div\r\n if (this.menu.applicationMenu)\r\n {\r\n this.div.style.left = div.offsetLeft + 'px'\r\n this.div.style.top = div.offsetTop + div.offsetHeight + 'px'\r\n }\r\n else\r\n {\r\n this.div.style.left = parent.offsetLeft + parent.offsetWidth - config.Overlap + 'px'\r\n this.div.style.top = parent.offsetTop + div.offsetTop - config.Overlap + 'px'\r\n }\r\n this.attached = menuItem\r\n this.showAccelerators()\r\n Menu.application.appendChild(this.div)\r\n let label = 0, accelerator = 0, arrow = 0, checked = 0\r\n for (let child of this.children)\r\n {\r\n child.check.style.width = 'auto'\r\n child.label.style.width = 'auto'\r\n child.accelerator.style.width = 'auto'\r\n child.arrow.style.width = 'auto'\r\n if (child.type === 'checkbox')\r\n {\r\n checked = config.MinimumColumnWidth\r\n }\r\n if (child.submenu)\r\n {\r\n arrow = config.MinimumColumnWidth\r\n }\r\n }\r\n for (let child of this.children)\r\n {\r\n const childLabel = child.label.offsetWidth * 2\r\n label = childLabel > label ? childLabel : label\r\n const childAccelerator = child.accelerator.offsetWidth\r\n accelerator = childAccelerator > accelerator ? childAccelerator : accelerator\r\n if (child.submenu)\r\n {\r\n arrow = child.arrow.offsetWidth\r\n }\r\n }\r\n for (let child of this.children)\r\n {\r\n child.check.style.width = checked + 'px'\r\n child.label.style.width = label + 'px'\r\n child.accelerator.style.width = accelerator + 'px'\r\n child.arrow.style.width = arrow + 'px'\r\n }\r\n if (this.div.offsetLeft + this.div.offsetWidth > window.innerWidth)\r\n {\r\n this.div.style.left = window.innerWidth - this.div.offsetWidth + 'px'\r\n }\r\n if (this.div.offsetTop + this.div.offsetHeight > window.innerHeight)\r\n {\r\n this.div.style.top = window.innerHeight - this.div.offsetHeight + 'px'\r\n }\r\n Menu.application.menu.div.focus()\r\n }\r\n }\r\n\r\n applyConfig(base)\r\n {\r\n const styles = {}\r\n for (let style in base)\r\n {\r\n styles[style] = base[style]\r\n }\r\n if (this.styles)\r\n {\r\n for (let style in this.styles)\r\n {\r\n styles[style] = this.styles[style]\r\n }\r\n }\r\n for (let style in styles)\r\n {\r\n this.div.style[style] = styles[style]\r\n }\r\n }\r\n\r\n showAccelerators()\r\n {\r\n for (let child of this.children)\r\n {\r\n child.showShortcut()\r\n if (child.type !== 'separator')\r\n {\r\n const index = child.text.indexOf('&')\r\n if (index !== -1)\r\n {\r\n accelerator.registerMenuShortcut(child.text[index + 1], child)\r\n }\r\n }\r\n }\r\n if (!this.applicationMenu)\r\n {\r\n accelerator.registerMenuSpecial(this)\r\n }\r\n }\r\n\r\n hideAccelerators()\r\n {\r\n for (let child of this.children)\r\n {\r\n child.hideShortcut()\r\n }\r\n }\r\n\r\n closeAll()\r\n {\r\n accelerator.unregisterMenuShortcuts()\r\n let application = Menu.application.menu\r\n if (application.showing)\r\n {\r\n let menu = application\r\n while (menu.showing)\r\n {\r\n menu = menu.showing.submenu\r\n }\r\n while (menu && !menu.applicationMenu)\r\n {\r\n if (menu.showing)\r\n {\r\n menu.showing.div.style.backgroundColor = 'transparent'\r\n menu.showing = null\r\n }\r\n menu.div.remove()\r\n menu = menu.menu\r\n }\r\n if (menu)\r\n {\r\n menu.showing.div.style.background = 'transparent'\r\n menu.showing = null\r\n menu.hideAccelerators()\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * move selector to the next child pane\r\n * @param {string} direction (left or right)\r\n * @private\r\n */\r\n moveChild(direction)\r\n {\r\n let index\r\n if (direction === 'left')\r\n {\r\n const parent = this.selector.menu.menu\r\n index = parent.children.indexOf(parent.showing)\r\n index--\r\n index = (index < 0) ? parent.children.length - 1 : index\r\n parent.children[index].handleClick()\r\n }\r\n else\r\n {\r\n let parent = this.selector.menu.menu\r\n let selector = parent.showing\r\n while (!parent.applicationMenu)\r\n {\r\n selector.handleClick()\r\n selector.div.style.backgroundColor = 'transparent'\r\n parent = parent.menu\r\n selector = parent.showing\r\n }\r\n index = parent.children.indexOf(selector)\r\n index++\r\n index = (index === parent.children.length) ? 0 : index\r\n parent.children[index].handleClick()\r\n }\r\n this.selector = null\r\n }\r\n\r\n /**\r\n * move selector right and left\r\n * @param {MouseEvent} e\r\n * @param {string} direction\r\n * @private\r\n */\r\n horizontalSelector(e, direction)\r\n {\r\n if (direction === 'right')\r\n {\r\n if (this.selector.submenu)\r\n {\r\n this.selector.handleClick(e)\r\n this.selector.submenu.selector = this.selector.submenu.children[0]\r\n this.selector.submenu.selector.div.style.backgroundColor = config.SelectedBackgroundStyle\r\n this.selector = null\r\n }\r\n else\r\n {\r\n this.moveChild(direction)\r\n }\r\n }\r\n else if (direction === 'left')\r\n {\r\n if (!this.selector.menu.menu.applicationMenu)\r\n {\r\n this.selector.menu.attached.handleClick(e)\r\n this.selector.menu.menu.selector = this.selector.menu.attached\r\n this.selector = null\r\n }\r\n else\r\n {\r\n this.moveChild(direction)\r\n }\r\n }\r\n e.stopPropagation()\r\n e.preventDefault()\r\n }\r\n\r\n /**\r\n * move the selector in the menu\r\n * @param {KeyboardEvent} e\r\n * @param {string} direction (left, right, up, down)\r\n */\r\n move(e, direction)\r\n {\r\n if (this.selector)\r\n {\r\n this.selector.div.style.backgroundColor = 'transparent'\r\n let index = this.children.indexOf(this.selector)\r\n if (direction === 'down')\r\n {\r\n index++\r\n index = (index === this.children.length) ? 0 : index\r\n }\r\n else if (direction === 'up')\r\n {\r\n index--\r\n index = (index < 0) ? this.children.length - 1 : index\r\n }\r\n else\r\n {\r\n return this.horizontalSelector(e, direction)\r\n }\r\n this.selector = this.children[index]\r\n }\r\n else\r\n {\r\n if (direction === 'up')\r\n {\r\n this.selector = this.children[this.children.length - 1]\r\n }\r\n else\r\n {\r\n this.selector = this.children[0]\r\n }\r\n }\r\n if (this.selector)\r\n {\r\n this.selector.div.style.backgroundColor = config.SelectedBackgroundStyle\r\n }\r\n e.preventDefault()\r\n e.stopPropagation()\r\n }\r\n\r\n /**\r\n * click the selector with keyboard\r\n * @private\r\n */\r\n enter(e)\r\n {\r\n if (this.selector)\r\n {\r\n this.selector.handleClick(e)\r\n e.preventDefault()\r\n e.stopPropagation()\r\n }\r\n }\r\n\r\n /**\r\n * array containing the menu's items\r\n * @property {MenuItems[]} items\r\n * @readonly\r\n */\r\n get items()\r\n {\r\n return this.children\r\n }\r\n\r\n /**\r\n * show application menu accelerators when alt is pressed\r\n * @private\r\n */\r\n showApplicationAccelerators()\r\n {\r\n this.hideAccelerators()\r\n accelerator.registerAlt(() =>\r\n {\r\n if (!this.showing)\r\n {\r\n this.showAccelerators()\r\n }\r\n }, () =>\r\n {\r\n this.hideAccelerators()\r\n })\r\n }\r\n\r\n /**\r\n * use this to change the default config settings across all menus\r\n * @type {config}\r\n */\r\n static get config()\r\n {\r\n return config\r\n }\r\n\r\n /**\r\n * gets application menu height\r\n * @returns {number}\r\n */\r\n static getApplicationHeight()\r\n {\r\n return Menu.application ? Menu.application.offsetHeight : 0\r\n }\r\n\r\n /**\r\n * sets active application Menu (and removes any existing application menus)\r\n * @param {Menu} menu\r\n * @param {HTMLElement} [parent=document.body]\r\n */\r\n static setApplicationMenu(menu, parent=document.body)\r\n {\r\n accelerator.clearMenuKeys()\r\n if (Menu.application)\r\n {\r\n Menu.application.remove()\r\n }\r\n Menu.application = html({ parent, styles: config.ApplicationContainerStyle })\r\n Menu.application.menu = menu\r\n menu.applyConfig(config.ApplicationMenuStyle)\r\n for (let child of menu.children)\r\n {\r\n child.applyConfig(config.ApplicationMenuRowStyle)\r\n if (child.arrow)\r\n {\r\n child.arrow.style.display = 'none'\r\n }\r\n menu.div.appendChild(child.div)\r\n }\r\n\r\n Menu.application.appendChild(menu.div)\r\n menu.applicationMenu = true\r\n menu.div.tabIndex = -1\r\n\r\n // don't let menu bar focus unless windows are open (this fixes a focus bug)\r\n menu.div.addEventListener('focus', () =>\r\n {\r\n if (!menu.showing)\r\n {\r\n menu.div.blur()\r\n }\r\n })\r\n\r\n // close all windows if menu is no longer the focus\r\n menu.div.addEventListener('blur', () =>\r\n {\r\n if (menu.showing)\r\n {\r\n menu.closeAll()\r\n }\r\n })\r\n menu.showApplicationAccelerators()\r\n }\r\n}","import Events from 'eventemitter3'\r\nimport { clicked } from 'clicked'\r\n\r\nimport './events'\r\nimport { html } from './html'\r\nimport { Menu } from './Menu/Menu'\r\n\r\n/**\r\n * Window class returned by WindowManager.createWindow()\r\n * @param {WindowManager} [wm]\r\n * @param {Window~WindowOptions} [options]\r\n * @fires open\r\n * @fires focus\r\n * @fires blur\r\n * @fires close\r\n * @fires maximize\r\n * @fires maximize-restore\r\n * @fires move\r\n * @fires move-start\r\n * @fires move-end\r\n * @fires resize\r\n * @fires resize-start\r\n * @fires resize-end\r\n * @fires move-x\r\n * @fires move-y\r\n * @fires resize-width\r\n * @fires resize-height\r\n * @fires loaded\r\n */\r\nexport class Window extends Events\r\n{\r\n constructor(wm, options = {})\r\n {\r\n super()\r\n this.wm = wm\r\n this.options = options\r\n this.id = typeof this.options.id === 'undefined' ? Window.id++ : this.options.id\r\n\r\n this._createWin()\r\n this._createWinBox()\r\n this._createTitlebar()\r\n this._createContent()\r\n if (this.options.resizable)\r\n {\r\n this._createResize()\r\n }\r\n this._createOverlay()\r\n this._buildTransform()\r\n this._listeners()\r\n\r\n this.active = false\r\n this.maximized = false\r\n\r\n this._closed = true\r\n this._restore = null\r\n this._moving = null\r\n this._resizing = null\r\n this._attachedToScreen = { vertical: '', horziontal: '' }\r\n }\r\n\r\n /**\r\n * open the window\r\n * @param {boolean} [noFocus] do not focus window when opened\r\n */\r\n open(noFocus)\r\n {\r\n if (this._closed)\r\n {\r\n this.win.style.display = 'block'\r\n this._closed = false\r\n this.emit('open', this)\r\n if (!noFocus)\r\n {\r\n this.focus()\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * focus the window\r\n */\r\n focus()\r\n {\r\n this.active = true\r\n if (this.options.titlebar)\r\n {\r\n this.winTitlebar.style.backgroundColor = this.options.backgroundTitlebarActive\r\n }\r\n this.emit('focus', this)\r\n }\r\n\r\n /**\r\n * blur the window\r\n */\r\n blur()\r\n {\r\n this.active = false\r\n if (this.options.titlebar)\r\n {\r\n this.winTitlebar.style.backgroundColor = this.options.backgroundTitlebarInactive\r\n }\r\n this.emit('blur', this)\r\n }\r\n\r\n /**\r\n * closes the window (can be reopened with open)\r\n */\r\n close()\r\n {\r\n if (!this._closed)\r\n {\r\n this._closed = true\r\n this.win.style.display = 'none'\r\n this.emit('close', this)\r\n }\r\n }\r\n\r\n /**\r\n * is window closed?\r\n * @type {boolean}\r\n * @readonly\r\n */\r\n get closed()\r\n {\r\n return this._closed\r\n }\r\n\r\n /**\r\n * left coordinate\r\n * @type {number}\r\n */\r\n get x() { return this.options.x }\r\n set x(value)\r\n {\r\n if (value !== this.options.x)\r\n {\r\n this.options.x = value\r\n this.emit('move-x', this)\r\n this._buildTransform()\r\n }\r\n }\r\n\r\n _buildTransform()\r\n {\r\n this.win.style.transform = `translate(${this.options.x}px,${this.options.y}px)`\r\n }\r\n\r\n /**\r\n * top coordinate\r\n * @type {number}\r\n */\r\n get y() { return this.options.y }\r\n set y(value)\r\n {\r\n if (value !== this.options.y)\r\n {\r\n this.options.y = value\r\n this._buildTransform()\r\n this.emit('move-y', this)\r\n }\r\n }\r\n\r\n /**\r\n * width of window\r\n * @type {number}\r\n */\r\n get width() { return this.options.width || this.win.offsetWidth }\r\n set width(value)\r\n {\r\n if (value !== this.options.width)\r\n {\r\n if (value)\r\n {\r\n this.win.style.width = `${value}px`\r\n this.options.width = this.win.offsetWidth\r\n }\r\n else\r\n {\r\n this.win.style.width = 'auto'\r\n this.options.width = ''\r\n }\r\n this.emit('resize-width', this)\r\n }\r\n }\r\n\r\n /**\r\n * height of window\r\n * @type {number}\r\n */\r\n get height() { return this.options.height || this.win.offsetHeight }\r\n set height(value)\r\n {\r\n if (value !== this.options.height)\r\n {\r\n if (value)\r\n {\r\n this.win.style.height = `${value}px`\r\n this.options.height = this.win.offsetHeight\r\n }\r\n else\r\n {\r\n this.win.style.height = 'auto'\r\n this.options.height = ''\r\n }\r\n this.emit('resize-height', this)\r\n }\r\n }\r\n\r\n /**\r\n * resize the window\r\n * @param {number} width\r\n * @param {number} height\r\n */\r\n resize(width, height)\r\n {\r\n this.width = width\r\n this.height = height\r\n }\r\n\r\n /**\r\n * move window\r\n * @param {number} x\r\n * @param {number} y\r\n */\r\n move(x, y)\r\n {\r\n const keepInside = this.keepInside\r\n if (keepInside)\r\n {\r\n if (keepInside === true || keepInside === 'horizontal')\r\n {\r\n const width = this.wm.win.offsetWidth\r\n x = x + this.width > width ? width - this.width : x\r\n x = x < 0 ? 0 : x\r\n }\r\n if (keepInside === true || keepInside === 'vertical')\r\n {\r\n const height = this.wm.win.offsetHeight\r\n y = y + this.height > height ? height - this.height : y\r\n const top = Menu.getApplicationHeight()\r\n y = y < top ? top : y\r\n }\r\n }\r\n if (x !== this.options.x)\r\n {\r\n this.options.x = x\r\n this.emit('move-x', this)\r\n }\r\n if (y !== this.options.y)\r\n {\r\n this.options.y = y\r\n this.emit('move-y', this)\r\n }\r\n this._buildTransform()\r\n }\r\n\r\n /**\r\n * maximize the window\r\n */\r\n maximize()\r\n {\r\n if (this.options.maximizable)\r\n {\r\n if (this.maximized)\r\n {\r\n this.x = this.maximized.x\r\n this.y = this.maximized.y\r\n this.width = this.maximized.width\r\n this.height = this.maximized.height\r\n this.maximized = null\r\n this.emit('restore', this)\r\n this.buttons.maximize.innerHTML = this.options.maximizeButton\r\n }\r\n else\r\n {\r\n const x = this.x, y = this.y, width = this.win.offsetWidth, height = this.win.offsetHeight\r\n this.maximized = { x, y, width, height }\r\n this.x = 0\r\n this.y = 0\r\n this.width = this.wm.wallpaper.offsetWidth\r\n this.height = this.wm.wallpaper.offsetHeight\r\n this.emit('maximize', this)\r\n this.buttons.maximize.innerHTML = this.options.restoreButton\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * sends window to back of window-manager\r\n */\r\n sendToBack()\r\n {\r\n this.wm.sendToBack(this)\r\n }\r\n\r\n /**\r\n * send window to front of window-manager\r\n */\r\n sendToFront()\r\n {\r\n this.wm.sendToFront(this)\r\n }\r\n\r\n /**\r\n * save the state of the window\r\n * @return {Object} data\r\n */\r\n save()\r\n {\r\n const data = {}\r\n const maximized = this.maximized\r\n if (maximized)\r\n {\r\n data.maximized = { left: maximized.left, top: maximized.top, width: maximized.width, height: maximized.height }\r\n }\r\n data.x = this.x\r\n data.y = this.y\r\n if (typeof this.options.width !== 'undefined')\r\n {\r\n data.width = this.options.width\r\n }\r\n if (typeof this.options.height !== 'undefined')\r\n {\r\n data.height = this.options.height\r\n }\r\n data.closed = this._closed\r\n return data\r\n }\r\n\r\n /**\r\n * return the state of the window\r\n * @param {Object} data from save()\r\n */\r\n load(data)\r\n {\r\n if (data.maximized)\r\n {\r\n if (!this.maximized)\r\n {\r\n this.maximize(true)\r\n }\r\n }\r\n else if (this.maximized)\r\n {\r\n this.maximize(true)\r\n }\r\n if (typeof data.width !== 'undefined')\r\n {\r\n this.width = data.width\r\n }\r\n else\r\n {\r\n this.win.style.width = 'auto'\r\n }\r\n if (typeof data.height !== 'undefined')\r\n {\r\n this.height = data.height\r\n }\r\n else\r\n {\r\n this.win.style.height = 'auto'\r\n }\r\n this.move(data.x, data.y)\r\n if (data.closed)\r\n {\r\n this.close(true)\r\n }\r\n else if (this.closed)\r\n {\r\n this.open(true, true)\r\n }\r\n this.emit('loaded')\r\n }\r\n\r\n /**\r\n * change title\r\n * @type {string}\r\n */\r\n get title() { return this._title }\r\n set title(value)\r\n {\r\n this.winTitle.innerText = value\r\n this.emit('title-change', this)\r\n }\r\n\r\n\r\n /**\r\n * right coordinate of window\r\n * @type {number}\r\n */\r\n get right() { return this.x + this.width }\r\n set right(value)\r\n {\r\n this.x = value - this.width\r\n }\r\n\r\n /**\r\n * bottom coordinate of window\r\n * @type {number}\r\n */\r\n get bottom() { return this.y + this.height }\r\n set bottom(value)\r\n {\r\n this.y = value - this.height\r\n }\r\n\r\n /**\r\n * centers window in middle of other window or document.body\r\n * @param {Window} [win]\r\n */\r\n center(win)\r\n {\r\n if (win)\r\n {\r\n this.move(\r\n win.x + win.width / 2 - this.width / 2,\r\n win.y + win.height / 2 - this.height / 2\r\n )\r\n }\r\n else\r\n {\r\n this.move(\r\n window.innerWidth / 2 - this.width / 2,\r\n window.innerHeight / 2 - this.height / 2\r\n )\r\n }\r\n }\r\n\r\n _createWin()\r\n {\r\n /**\r\n * This is the top-level DOM element\r\n * @type {HTMLElement}\r\n * @readonly\r\n */\r\n this.win = html({\r\n parent: this.wm.win,\r\n styles: {\r\n 'display': 'none',\r\n 'border-radius': this.options.borderRadius,\r\n 'user-select': 'none',\r\n 'overflow': 'hidden',\r\n 'position': 'absolute',\r\n 'min-width': this.options.minWidth,\r\n 'min-height': this.options.minHeight,\r\n 'background-color': this.options.backgroundWindow,\r\n 'width': isNaN(this.options.width) ? this.options.width : this.options.width + 'px',\r\n 'height': isNaN(this.options.height) ? this.options.height : this.options.height + 'px',\r\n ...this.options.styles\r\n }\r\n })\r\n }\r\n\r\n _createWinBox()\r\n {\r\n /**\r\n * This is the container for the titlebar+content\r\n * @type {HTMLElement}\r\n * @readonly\r\n */\r\n this.winBox = html({\r\n parent: this.win,\r\n styles: {\r\n 'display': 'flex',\r\n 'flex-direction': 'column',\r\n 'width': '100%',\r\n 'height': '100%',\r\n 'min-height': this.options.minHeight\r\n }\r\n })\r\n }\r\n\r\n _createContent()\r\n {\r\n /**\r\n * This is the content DOM element. Use this to add content to the Window.\r\n * @type {HTMLElement}\r\n * @readonly\r\n */\r\n this.content = html({\r\n parent: this.winBox,\r\n type: 'section',\r\n styles: {\r\n 'display': 'block',\r\n 'flex': 1,\r\n 'min-height': this.options.minHeight,\r\n // leave room under the content for the resize handle, so it can't cover the scrollbar\r\n 'margin-bottom': this.options.resizable ? '15px' : 0,\r\n 'overflow-x': 'hidden',\r\n 'overflow-y': 'auto'\r\n }\r\n })\r\n }\r\n\r\n _createOverlay()\r\n {\r\n this.overlay = html({\r\n parent: this.win,\r\n styles: {\r\n 'display': 'none',\r\n 'position': 'absolute',\r\n 'left': 0,\r\n 'top': 0,\r\n 'width': '100%',\r\n 'height': '100%'\r\n }\r\n })\r\n this.overlay.addEventListener('mousedown', (e) => { this._downTitlebar(e); e.stopPropagation() })\r\n this.overlay.addEventListener('touchstart', (e) => { this._downTitlebar(e); e.stopPropagation() })\r\n }\r\n\r\n _downTitlebar(e)\r\n { const event = this._convertMoveEvent(e)\r\n this._moving = {\r\n x: event.pageX - this.x,\r\n y: event.pageY - this.y\r\n }\r\n this.emit('move-start', this)\r\n this._moved = false\r\n }\r\n\r\n _createTitlebar()\r\n {\r\n if (this.options.titlebar)\r\n {\r\n this.winTitlebar = html({\r\n parent: this.winBox, type: 'header', styles: {\r\n 'user-select': 'none',\r\n 'display': 'flex',\r\n 'flex-direction': 'row',\r\n 'align-items': 'center',\r\n 'justify-content': 'center',\r\n 'height': this.options.titlebarHeight,\r\n 'min-height': this.options.titlebarHeight,\r\n 'border': 0,\r\n 'padding': '0 8px',\r\n 'overflow': 'hidden',\r\n }\r\n })\r\n const winTitleStyles = {\r\n 'user-select': 'none',\r\n 'flex': 1,\r\n 'display': 'flex',\r\n 'flex-direction': 'row',\r\n 'align-items': 'center',\r\n 'user-select': 'none',\r\n 'cursor': 'default',\r\n 'padding': 0,\r\n 'margin': 0,\r\n 'font-size': '16px',\r\n 'font-weight': 400,\r\n 'color': this.options.foregroundTitle\r\n }\r\n if (this.options.titleCenter)\r\n {\r\n winTitleStyles['justify-content'] = 'center'\r\n }\r\n else\r\n {\r\n winTitleStyles['padding-left'] = '8px'\r\n\r\n }\r\n this.winTitle = html({ parent: this.winTitlebar, type: 'span', html: this.options.title, styles: winTitleStyles })\r\n this._createButtons()\r\n\r\n if (this.options.movable)\r\n {\r\n this.winTitlebar.addEventListener('mousedown', (e) => this._downTitlebar(e))\r\n this.winTitlebar.addEventListener('touchstart', (e) => this._downTitlebar(e))\r\n }\r\n if (this.options.maximizable)\r\n {\r\n clicked(this.winTitlebar, () => this.maximize(), { doubleClicked: true, clicked: false})\r\n }\r\n }\r\n }\r\n\r\n _createButtons()\r\n {\r\n this.winButtonGroup = html({\r\n parent: this.winTitlebar, styles: {\r\n 'display': 'flex',\r\n 'flex-direction': 'row',\r\n 'align-items': 'center',\r\n 'padding-left': '10px'\r\n }\r\n })\r\n const button = {\r\n 'display': 'inline-block',\r\n 'border': 0,\r\n 'margin': 0,\r\n 'margin-left': '15px',\r\n 'padding': 0,\r\n 'width': '12px',\r\n 'height': '12px',\r\n 'background-color': 'transparent',\r\n 'background-size': 'cover',\r\n 'background-repeat': 'no-repeat',\r\n 'opacity': .7,\r\n 'color': this.options.foregroundButton,\r\n 'outline': 0\r\n }\r\n this.buttons = {}\r\n if (this.options.maximizable)\r\n {\r\n this.buttons.maximize = html({ parent: this.winButtonGroup, html: this.options.maximizeButton, type: 'button', styles: button })\r\n clicked(this.buttons.maximize, () => this.maximize())\r\n }\r\n if (this.options.closable)\r\n {\r\n this.buttons.close = html({ parent: this.winButtonGroup, html: this.options.closeButton, type: 'button', styles: button })\r\n clicked(this.buttons.close, () => this.close())\r\n }\r\n for (let key in this.buttons)\r\n {\r\n const button = this.buttons[key]\r\n button.addEventListener('mousemove', () =>\r\n {\r\n button.style.opacity = 1\r\n })\r\n button.addEventListener('mouseout', () =>\r\n {\r\n button.style.opacity = 0.7\r\n })\r\n }\r\n }\r\n\r\n _createResize()\r\n {\r\n this.resizeEdge = html({\r\n parent: this.winBox, type: 'button', html: this.options.backgroundResize, styles: {\r\n 'position': 'absolute',\r\n 'bottom': 0,\r\n 'right': '4px',\r\n 'border': 0,\r\n 'margin': 0,\r\n 'padding': 0,\r\n 'cursor': 'se-resize',\r\n 'user-select': 'none',\r\n 'height': '15px',\r\n 'width': '10px',\r\n 'background': 'none'\r\n }\r\n })\r\n const down = (e) =>\r\n {\r\n const event = this._convertMoveEvent(e)\r\n const width = this.width || this.win.offsetWidth\r\n const height = this.height || this.win.offsetHeight\r\n this._resizing = {\r\n width: width - event.pageX,\r\n height: height - event.pageY\r\n }\r\n this.emit('resize-start')\r\n e.preventDefault()\r\n }\r\n this.resizeEdge.addEventListener('mousedown', down)\r\n this.resizeEdge.addEventListener('touchstart', down)\r\n }\r\n\r\n _move(e)\r\n {\r\n const event = this._convertMoveEvent(e)\r\n\r\n if (!this._isTouchEvent(e) && e.which !== 1)\r\n {\r\n this._moving && this._stopMove()\r\n this._resizing && this._stopResize()\r\n }\r\n if (this._moving)\r\n {\r\n this.move(event.pageX - this._moving.x, event.pageY - this._moving.y)\r\n this.emit('move', this)\r\n e.preventDefault()\r\n }\r\n if (this._resizing)\r\n {\r\n this.resize(\r\n event.pageX + this._resizing.width,\r\n event.pageY + this._resizing.height\r\n )\r\n this.maximized = null\r\n this.emit('resize', this)\r\n e.preventDefault()\r\n }\r\n }\r\n\r\n _up()\r\n {\r\n if (this._moving)\r\n {\r\n this._stopMove()\r\n }\r\n this._resizing && this._stopResize()\r\n }\r\n\r\n _listeners()\r\n {\r\n this.win.addEventListener('mousedown', () => this.focus())\r\n this.win.addEventListener('touchstart', () => this.focus())\r\n }\r\n\r\n _stopMove()\r\n {\r\n this._moving = null\r\n this.emit('move-end', this)\r\n }\r\n\r\n _stopResize()\r\n {\r\n this._restore = this._resizing = null\r\n this.emit('resize-end', this)\r\n }\r\n\r\n _isTouchEvent(e)\r\n {\r\n return !!window.TouchEvent && (e instanceof window.TouchEvent)\r\n }\r\n\r\n _convertMoveEvent(e)\r\n {\r\n return this._isTouchEvent(e) ? e.changedTouches[0] : e\r\n }\r\n\r\n /**\r\n * attaches window to a side of the screen\r\n * @param {('horizontal'|'vertical')} direction\r\n * @param {('left'|'right'|'top'|'bottom')} location\r\n */\r\n attachToScreen(direction, location)\r\n {\r\n this._attachedToScreen[direction] = location\r\n }\r\n\r\n /**\r\n * @param {WindowManager~Bounds} bounds\r\n * @param {(boolean|'horizontal'|'vertical')} keepInside\r\n */\r\n reposition(bounds, keepInside)\r\n {\r\n this.bounds = bounds\r\n this.keepInside = keepInside\r\n let x = this.x\r\n let y = this.y\r\n x = this._attachedToScreen.horziontal === 'right' ? bounds.right - this.width : x\r\n x = this._attachedToScreen.horizontal === 'left' ? bounds.left : x\r\n y = this._attachedToScreen.vertical === 'bottom' ? bounds.bottom - this.height : y\r\n y = this._attachedToScreen.vertical === 'top' ? bounds.top : y\r\n this.move(x, y)\r\n }\r\n\r\n /**\r\n * @param {boolean} [ignoreClosed]\r\n * @returns {boolean}\r\n */\r\n isModal(ignoreClosed)\r\n {\r\n return (ignoreClosed || !this._closed) && this.options.modal\r\n }\r\n\r\n /** @returns {boolean} */\r\n isClosed()\r\n {\r\n return this._closed\r\n }\r\n\r\n get z()\r\n {\r\n return parseInt(this.win.style.zIndex)\r\n }\r\n set z(value)\r\n {\r\n this.win.style.zIndex = value\r\n }\r\n}\r\n\r\nWindow.id = 0\r\n\r\n/**\r\n * @typedef {Object} Window~WindowOptions\r\n * @property {number} [x=0]\r\n * @property {number} [y=0]\r\n * @property {number} [width]\r\n * @property {number} [height]\r\n * @property {boolean} [modal]\r\n * @property {boolean} [openOnCreate=true]\r\n * @property {*} [id]\r\n * @property {boolean} [movable=true]\r\n * @property {boolean} [resizable=true]\r\n * @property {boolean} [maximizable=true]\r\n * @property {boolean} [closable=true]\r\n * @property {boolean} [noSnap] don't snap this window or use this window as a snap target\r\n * @property {boolean} [titlebar=true]\r\n * @property {string} [titlebarHeight=36px]\r\n * @property {boolean} [titleCenter]\r\n * @property {string} [minWidth=200px]\r\n * @property {string} [minHeight=60px]\r\n * @property {string} [borderRadius=4px]\r\n * @property {string} [backgroundModal=rgba(0,0,0,0.6)]\r\n * @property {string} [backgroundWindow=#fefefe]\r\n * @property {string} [backgroundTitlebarActive=#365d98]\r\n * @property {string} [backgroundTitlebarInactive=#888888]\r\n * @property {string} [foregroundButton=#ffffff]\r\n * @property {string} [foregroundTitle=#ffffff]\r\n * @property {Object} [styles]\r\n * @property {string} [maximizeButton=...] used to replace the graphics for the button\r\n * @property {string} [closeButton=...] used to replace the graphics for the button\r\n * @property {string} [resize=...] used to replace the graphics for the button\r\n */","export const close='<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg width=\"100%\" height=\"100%\" viewBox=\"0 0 20 20\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;\"><rect id=\"close\" x=\"0\" y=\"0\" width=\"20\" height=\"20\" style=\"fill:none;\"/><g><path d=\"M3.5,3.5l13,13\" style=\"fill:none;stroke:#fff;stroke-width:3px;\"/><path d=\"M16.5,3.5l-13,13\" style=\"fill:none;stroke:#fff;stroke-width:3px;\"/></g></svg>';export const maximize='<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg width=\"100%\" height=\"100%\" viewBox=\"0 0 20 20\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;\"><rect id=\"maximize\" x=\"0\" y=\"0\" width=\"20\" height=\"20\" style=\"fill:none;\"/><rect x=\"2\" y=\"2\" width=\"16\" height=\"16\" style=\"fill:none;stroke:#fff;stroke-width:2px;\"/><rect x=\"2\" y=\"2\" width=\"16\" height=\"3.2\" style=\"fill:#fff;\"/></svg>';export const minimize='<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg width=\"100%\" height=\"100%\" viewBox=\"0 0 20 20\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"><rect id=\"minimize\" x=\"0\" y=\"0\" width=\"20\" height=\"20\" style=\"fill:none;\"/><rect x=\"2\" y=\"15.6\" width=\"16\" height=\"3.2\" style=\"fill:#fff;\"/></svg>';export const resize='<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg width=\"100%\" height=\"100%\" viewBox=\"0 0 20 20\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;\"><rect id=\"resize\" x=\"0\" y=\"0\" width=\"20\" height=\"20\" style=\"fill:none;\"/><clipPath id=\"_clip1\"><rect x=\"0\" y=\"0\" width=\"20\" height=\"20\"/></clipPath><g clip-path=\"url(#_clip1)\"><rect x=\"0\" y=\"16.8\" width=\"20\" height=\"3.2\" style=\"fill:#fff;\"/><path d=\"M17.737,3.595l-14.142,14.142l2.263,2.263l14.142,-14.142l-2.263,-2.263Z\" style=\"fill:#fff;\"/><path d=\"M16.8,0l0,20l3.2,0l0,-20l-3.2,0Z\" style=\"fill:#fff;\"/><path d=\"M7.099,18.4l11.301,-11.123l0,11.123l-11.301,0Z\" style=\"fill:#fff;\"/></g></svg>';export const restore='<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?><!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\"><svg width=\"100%\" height=\"100%\" viewBox=\"0 0 20 20\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" xml:space=\"preserve\" xmlns:serif=\"http://www.serif.com/\" style=\"fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5;\"><rect id=\"restore\" x=\"0\" y=\"0\" width=\"20\" height=\"20\" style=\"fill:none;\"/><g><rect x=\"7\" y=\"2.5\" width=\"10\" height=\"10\" style=\"fill:none;stroke:#fff;stroke-width:1.5px;\"/><rect x=\"7\" y=\"2.5\" width=\"10\" height=\"2\" style=\"fill:#fff;\"/></g><g><rect x=\"3\" y=\"7.5\" width=\"10\" height=\"10\" style=\"fill:none;stroke:#fff;stroke-width:1.5px;\"/><g><rect x=\"3\" y=\"7.5\" width=\"10\" height=\"2\" style=\"fill:#fff;\"/></g></g></svg>';","import { close, maximize, restore, resize } from './images'\n\nexport const defaultWindowOptions = {\n x: 0,\n y: 0,\n width: undefined,\n height: undefined,\n modal: false,\n openOnCreate: true,\n id: null,\n\n minWidth: '200px',\n minHeight: '60px',\n borderRadius: 0,\n styles: {},\n\n movable: true,\n resizable: true,\n maximizable: true,\n closable: true,\n\n noSnap: false,\n noMenu: false,\n\n titlebar: true,\n titlebarHeight: '2rem',\n\n backgroundWindow: '#fefefe',\n backgroundTitlebarActive: '#365d98',\n backgroundTitlebarInactive: '#888888',\n foregroundButton: '#ffffff',\n foregroundTitle: '#ffffff',\n\n closeButton: close,\n maximizeButton: maximize,\n restoreButton: restore,\n\n backgroundResize: resize\n}\n\nexport const defaultWindowManagerOptions = {\n quiet: false,\n keepInside: true,\n snap: true,\n noAccelerator: false,\n menu: false,\n styles: {},\n backgroundModal: 'rgba(0, 0, 0, 0.6)',\n}","import { html } from './html'\nimport { Menu } from './Menu/Menu'\n\nconst DEFAULT_COLOR = '#a8f0f4'\nconst DEFAULT_SIZE = 10\n\nconst SnapOptionsDefault = {\n screen: true,\n windows: true,\n snap: 20,\n color: DEFAULT_COLOR,\n spacing: 0,\n indicator: DEFAULT_SIZE\n}\n\n/**\n * edge snapping plugin\n * @param {WindowManager} wm\n * @param {object} [options]\n * @param {boolean} [options.screen=true] snap to screen edges\n * @param {boolean} [options.windows=true] snap to window edges\n * @param {number} [options.snap=20] distance to edge in pixels before snapping and width/height of snap bars\n * @param {string} [options.color=#a8f0f4] color for snap bars\n * @param {number} [options.spacing=0] spacing distance between window and edges\n * @param {number} [options.indicator=10] size in pixels of snapping indicator (the indicator is actually twice the size of what is shown)\n * @ignore\n */\nexport class Snap\n{\n constructor(wm, options={})\n {\n this.wm = wm\n this.options = { ...SnapOptionsDefault, ...options }\n this.highlights = html({ parent: this.wm.wallpaper, styles: { position: 'absolute' } })\n this.horizontal = html({\n parent: this.highlights, styles: {\n display: 'none',\n position: 'absolute',\n height: `${this.options.indicator}px`,\n borderRadius: `${this.options.indicator}px`,\n backgroundColor: this.options.color\n }\n })\n this.vertical = html({\n parent: this.highlights, styles: {\n display: 'none',\n position: 'absolute',\n width: `${this.options.indicator}px`,\n borderRadius: `${this.options.indicator}px`,\n backgroundColor: this.options.color\n }\n })\n this.horizontal\n this.showing = []\n }\n\n stop()\n {\n this.highlights.remove()\n this.stopped = true\n }\n\n addWindow(win)\n {\n win.on('move', () => this.move(win))\n win.on('move-end', () => this.moveEnd(win))\n }\n\n screenMove(rect, horizontal, vertical)\n {\n const top = Menu.getApplicationHeight()\n const width = this.wm.win.clientWidth\n const height = this.wm.win.clientHeight\n if (rect.left - this.options.snap <= width && rect.right + this.options.snap >= 0)\n {\n if (Math.abs(rect.top - top) <= this.options.snap)\n {\n horizontal.push({ distance: Math.abs(rect.top - top), left: 0, width, top: top, side: 'top', screen: true })\n }\n else if (Math.abs(rect.bottom - height) <= this.options.snap)\n {\n horizontal.push({ distance: Math.abs(rect.bottom - height), left: 0, width, top: height, side: 'bottom', screen: true })\n }\n }\n if (rect.top - this.options.snap <= height && rect.bottom + this.options.snap >= 0)\n {\n if (Math.abs(rect.left - 0) <= this.options.snap)\n {\n vertical.push({ distance: Math.abs(rect.left - 0), top: 0, height, left: 0, side: 'left', screen: true })\n }\n else if (Math.abs(rect.right - width) <= this.options.snap)\n {\n vertical.push({ distance: Math.abs(rect.right - width), top: 0, height, left: width, side: 'right', screen: true })\n }\n }\n }\n\n windowsMove(original, rect, horizontal, vertical)\n {\n for (let win of this.wm.windows)\n {\n if (!win.options.noSnap && win !== original)\n {\n const rect2 = win.win.getBoundingClientRect()\n if (rect.left - this.options.snap <= rect2.right && rect.right + this.options.snap >= rect2.left)\n {\n if (Math.abs(rect.top - rect2.bottom) <= this.options.snap)\n {\n horizontal.push({ distance: Math.abs(rect.top - rect2.bottom), left: rect2.left, width: rect2.width, top: rect2.bottom, side: 'top' })\n if (Math.abs(rect.left - rect2.left) <= this.options.snap)\n {\n vertical.push({ distance: Math.abs(rect.left - rect2.left), top: rect2.top, height: rect2.height, left: rect2.left, side: 'left', noSpacing: true })\n }\n else if (Math.abs(rect.right - rect2.right) <= this.options.snap)\n {\n vertical.push({ distance: Math.abs(rect.right - rect2.right), top: rect2.top, height: rect2.height, left: rect2.right, side: 'right', noSpacing: true })\n }\n }\n else if (Math.abs(rect.bottom - rect2.top) <= this.options.snap)\n {\n horizontal.push({ distance: Math.abs(rect.bottom - rect2.top), left: rect2.left, width: rect2.width, top: rect2.top, side: 'bottom' })\n if (Math.abs(rect.left - rect2.left) <= this.options.snap)\n {\n vertical.push({ distance: Math.abs(rect.left - rect2.left), top: rect2.top, height: rect2.height, left: rect2.left, side: 'left', noSpacing: true })\n }\n else if (Math.abs(rect.right - rect2.right) <= this.options.snap)\n {\n vertical.push({ distance: Math.abs(rect.right - rect2.right), top: rect2.top, height: rect2.height, left: rect2.right, side: 'right', noSpacing: true })\n }\n }\n }\n if (rect.top - this.options.snap <= rect2.bottom && rect.bottom + this.options.snap >= rect2.top)\n {\n if (Math.abs(rect.left - rect2.right) <= this.options.snap)\n {\n vertical.push({ distance: Math.abs(rect.left - rect2.right), top: rect2.top, height: rect2.height, left: rect2.right, side: 'left' })\n if (Math.abs(rect.top - rect2.top) <= this.options.snap)\n {\n horizontal.push({ distance: Math.abs(rect.top - rect2.top), left: rect2.left, width: rect2.width, top: rect2.top, side: 'top', noSpacing: true })\n }\n else if (Math.abs(rect.bottom - rect2.bottom) <= this.options.snap)\n {\n horizontal.push({ distance: Math.abs(rect.bottom - rect2.bottom), left: rect2.left, width: rect2.width, top: rect2.bottom, side: 'bottom', noSpacing: true })\n }\n }\n else if (Math.abs(rect.right - rect2.left) <= this.options.snap)\n {\n vertical.push({ distance: Math.abs(rect.right - rect2.left), top: rect2.top, height: rect2.height, left: rect2.left, side: 'right' })\n if (Math.abs(rect.top - rect2.top) <= this.options.snap)\n {\n horizontal.push({ distance: Math.abs(rect.top - rect2.top), left: rect2.left, width: rect2.width, top: rect2.top, side: 'top', noSpacing: true })\n }\n else if (Math.abs(rect.bottom - rect2.bottom) <= this.options.snap)\n {\n horizontal.push({ distance: Math.abs(rect.bottom - rect2.bottom), left: rect2.left, width: rect2.width, top: rect2.bottom, side: 'bottom', noSpacing: true })\n }\n }\n }\n }\n }\n }\n\n move(win)\n {\n if (this.stopped || win.options.noSnap || win.isModal())\n {\n return\n }\n this.horizontal.style.display = 'none'\n this.vertical.style.display = 'none'\n const horizontal = []\n const vertical = []\n const rect = win.win.getBoundingClientRect()\n if (this.options.screen)\n {\n this.screenMove(rect, horizontal, vertical)\n }\n if (this.options.windows)\n {\n this.windowsMove(win, rect, horizontal, vertical)\n }\n if (horizontal.length)\n {\n horizontal.sort((a, b) => { return a.distance - b.distance })\n const find = horizontal[0]\n this.horizontal.style.display = 'block'\n this.horizontal.style.width = find.width + 'px'\n this.horizontal.y = find.top - this.options.indicator / 2\n this.horizontal.yPosition = find.top\n this.horizontal.style.transform = `translate(${find.left}px,${this.horizontal.y}px)`\n this.horizontal.side = find.side\n this.horizontal.noSpacing = find.noSpacing\n this.horizontal.screen = find.screen\n }\n if (vertical.length)\n {\n vertical.sort((a, b) => { return a.distance - b.distance })\n const find = vertical[0]\n this.vertical.style.display = 'block'\n this.vertical.style.height = find.height + 'px'\n this.vertical.x = find.left - this.options.indicator / 2\n this.vertical.xPosition = find.left\n this.vertical.style.transform = `translate(${this.vertical.x}px,${find.top}px)`\n this.vertical.side = find.side\n this.vertical.noSpacing = find.noSpacing\n this.vertical.screen = find.screen\n }\n }\n\n moveEnd(win)\n {\n if (this.stopped)\n {\n return\n }\n const bounds = this.wm.bounds\n const top = Menu.getApplicationHeight()\n if (this.horizontal.style.display === 'block')\n {\n const spacing = this.horizontal.noSpacing ? 0 : this.options.spacing\n switch (this.horizontal.side)\n {\n case 'top':\n win.y = this.horizontal.yPosition + spacing - bounds.top + top\n break\n\n case 'bottom':\n win.bottom = Math.floor(this.horizontal.yPosition - spacing - bounds.top + top)\n break\n }\n win.attachToScreen('vertical', this.horizontal.screen ? this.horizontal.side : '')\n }\n if (this.vertical.style.display === 'block')\n {\n const spacing = this.vertical.noSpacing ? 0 : this.options.spacing\n switch (this.vertical.side)\n {\n case 'left':\n win.x = this.vertical.xPosition + spacing - bounds.left\n break\n\n case 'right':\n win.right = Math.floor(this.vertical.xPosition - spacing - bounds.left)\n break\n }\n win.attachToScreen('horziontal', this.vertical.screen ? this.vertical.side : '')\n }\n this.horizontal.style.display = this.vertical.style.display = 'none'\n }\n}\n\n\n/**\n * @typedef {Object} Snap~SnapOptions\n * @property {boolean} [screen=true] snap to screen edges\n * @property {boolean} [windows=true] snap to window edges\n * @property {number} [snap=20] distance to edge before snapping\n * @property {string} [color=#a8f0f4] color for snap bars\n * @property {number} [spacing=0] spacing distance between window and edges\n * @property {number} [options.indicator=10] size in pixels of snapping indicator (the indicator is actually twice the size of what is shown)\n */","import { html } from './html'\r\nimport { Window } from './Window'\r\nimport { defaultWindowManagerOptions, defaultWindowOptions } from './defaults'\r\nimport { Snap } from './Snap'\r\nimport { accelerator } from './accelerator'\r\nimport { Menu } from './Menu/Menu'\r\n\r\n/**\r\n * Create the WindowManager\r\n * @param {Object} [options]\r\n * @param {HTMLElement} [options.parent=document.body] parent to append WindowManager\r\n * @param {string} [options.backgroundModal=rgba(0, 0, 0, 0.6)] background color for window\r\n * @param {boolean} [options.quiet] suppress the simple-window-manager console message\r\n * @param {(boolean|WindowManager~SnapOptions)} [options.snap] initialize snap plugin\r\n * @param {boolean} [options.noAccelerator] do not initialize keyboard accelerators (needed for Menu)\r\n * @param {(boolean|'horizontal'|'vertical')} [options.keepInside=true] keep windows inside the parent in a certain direction\r\n * @param {Object} [options.styles] additional hard-coded styles for main container window (eg, { color: 'green' })\r\n * @param {Window~WindowOptions} [windowOptions] default options used when createWindow is called\r\n */\r\nexport class WindowManager\r\n{\r\n constructor(options = {}, windowOptions = {})\r\n {\r\n this.options = { ...defaultWindowManagerOptions, ...options }\r\n this.options.parent = this.options.parent || document.body\r\n if (!this.options.quiet)\r\n {\r\n console.log('%c ☕ simple-window-manager initialized ☕', 'color: #ff00ff')\r\n }\r\n this.windows = []\r\n this.active = null\r\n this._setupWin()\r\n this._setupWallpaper()\r\n this._setupModal()\r\n if (this.options.snap)\r\n {\r\n this.snap(this.options.snap === true ? {} : this.options.snap)\r\n }\r\n this.windowOptions = { ...defaultWindowOptions, ...windowOptions }\r\n window.addEventListener('resize', () => this.resize())\r\n if (!this.options.noAccelerator)\r\n {\r\n accelerator.init()\r\n }\r\n }\r\n\r\n /**\r\n * Create a window\r\n * @param {WindowOptions} [options]\r\n * @param {string} [options.title]\r\n * @param {number} [options.x] position\r\n * @param {number} [options.y] position\r\n * @param {boolean} [options.modal]\r\n * @param {(number|*)} [options.id] if not provide, id will be assigned in order of creation (0, 1, 2...)\r\n * @returns {Window} the created window\r\n */\r\n createWindow(options = {})\r\n {\r\n const win = new Window(this, { ...this.windowOptions, ...options })\r\n win.on('open', () => this._open(win))\r\n win.on('focus', () => this._focus(win))\r\n win.on('blur', () => this._blur(win))\r\n win.on('close', () => this._close(win))\r\n win.win.addEventListener('mousemove', (e) => this._move(e))\r\n win.win.addEventListener('touchmove', (e) => this._move(e))\r\n win.win.addEventListener('mouseup', (e) => this._up(e))\r\n win.win.addEventListener('touchend', (e) => this._up(e))\r\n if (this._snap && !options.noSnap)\r\n {\r\n this._snap.addWindow(win)\r\n }\r\n win.reposition(this.bounds, this.options.keepInside)\r\n if (win.options.openOnCreate)\r\n {\r\n win.open()\r\n }\r\n return win\r\n }\r\n\r\n /**\r\n * enable edge and/or screen snapping\r\n * @param {WindowManager~SnapOptions} [options]\r\n */\r\n snap(options)\r\n {\r\n this._snap = new Snap(this, options)\r\n for (const win of this.windows)\r\n {\r\n if (!win.options.noSnap)\r\n {\r\n this._snap.addWindow(win)\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * send window to front\r\n * @param {Window} win\r\n */\r\n sendToFront(win)\r\n {\r\n const index = this.windows.indexOf(win)\r\n console.assert(index !== -1, 'sendToFront should find window in this.windows')\r\n if (index !== this.windows.length - 1)\r\n {\r\n this.windows.splice(index, 1)\r\n this.windows.push(win)\r\n this._reorder()\r\n }\r\n }\r\n\r\n /**\r\n * send window to back\r\n * @param {Window} win\r\n */\r\n sendToBack(win)\r\n {\r\n const index = this.windows.indexOf(win)\r\n console.assert(index !== -1, 'sendToFront should find window in this.windows')\r\n if (index !== 0)\r\n {\r\n this.windows.splice(index, 1)\r\n this.windows.unshift(win)\r\n this._reorder()\r\n }\r\n }\r\n\r\n /**\r\n * save the state of all the windows\r\n * @returns {Object} use this object in load() to restore the state of all windows\r\n */\r\n save()\r\n {\r\n const data = {}\r\n for (let i = 0; i < this.windows.length; i++)\r\n {\r\n const win = this.windows[i]\r\n data[win.id] = win.save()\r\n data[win.id].order = i\r\n }\r\n return data\r\n }\r\n\r\n /**\r\n * restores the state of all the windows\r\n * NOTE: this requires that the windows have the same id as when save() was called\r\n * @param {Object} data created by save()\r\n */\r\n load(data)\r\n {\r\n for (const id in data)\r\n {\r\n const win = this.getWindowById(id)\r\n if (win)\r\n {\r\n win.load(data[id])\r\n }\r\n }\r\n // reorder windows\r\n }\r\n\r\n /**\r\n * close all windows\r\n */\r\n closeAll()\r\n {\r\n for (let win of this.windows)\r\n {\r\n win.close()\r\n }\r\n this.windows = []\r\n this.active = null\r\n }\r\n\r\n /**\r\n * reorder windows\r\n * @private\r\n * @returns {number} available z-index for top window\r\n */\r\n _reorder()\r\n {\r\n let i = 0\r\n for (const win of this.windows)\r\n {\r\n if (!win.isClosed())\r\n {\r\n win.z = i++\r\n }\r\n }\r\n }\r\n\r\n _setupWin()\r\n {\r\n /**\r\n * This is the top-level DOM element\r\n * @type {HTMLElement}\r\n * @readonly\r\n */\r\n this.win = html({\r\n parent: this.options.parent,\r\n styles: {\r\n ...{\r\n 'user-select': 'none',\r\n 'width': '100%',\r\n 'height': '100%',\r\n 'overflow': 'hidden',\r\n 'z-index': -1,\r\n 'cursor': 'default',\r\n },\r\n ...this.options.styles\r\n }\r\n })\r\n }\r\n\r\n _setupWallpaper()\r\n {\r\n /**\r\n * This is the bottom DOM element. Use this to set a wallpaper or attach elements underneath the windows\r\n * @type {HTMLElement}\r\n * @readonly\r\n */\r\n this.wallpaper = html({\r\n parent: this.win,\r\n styles: {\r\n ...{\r\n 'user-select': 'none',\r\n 'position': 'absolute',\r\n 'top': 0,\r\n 'left': 0,\r\n 'width': '100%',\r\n 'height': '100%',\r\n 'overflow': 'hidden'\r\n }\r\n }\r\n })\r\n this.wallpaper.addEventListener('mousemove', (e) => this._move(e))\r\n this.wallpaper.addEventListener('touchmove', (e) => this._move(e))\r\n this.wallpaper.addEventListener('mouseup', (e) => this._up(e))\r\n this.wallpaper.addEventListener('touchend', (e) => this._up(e))\r\n }\r\n\r\n _setupModal()\r\n {\r\n this.modalOverlay = html({\r\n parent: this.win,\r\n styles: {\r\n 'display': 'none',\r\n 'user-select': 'none',\r\n 'position': 'absolute',\r\n 'top': 0,\r\n 'left': 0,\r\n 'width': '100%',\r\n 'height': '100%',\r\n 'overflow': 'hidden',\r\n 'background': this.options.backgroundModal\r\n }\r\n })\r\n this.modalOverlay.addEventListener('mousemove', (e) => { this._move(e); e.preventDefault(); e.stopPropagation() })\r\n this.modalOverlay.addEventListener('touchmove', (e) => { this._move(e); e.preventDefault(); e.stopPropagation() })\r\n this.modalOverlay.addEventListener('mouseup', (e) => { this._up(e); e.preventDefault(); e.stopPropagation() })\r\n this.modalOverlay.addEventListener('touchend', (e) => { this._up(e); e.preventDefault(); e.stopPropagation() })\r\n this.modalOverlay.addEventListener('mousedown', (e) => { e.preventDefault(); e.stopPropagation() })\r\n this.modalOverlay.addEventListener('touchstart', (e) => { e.preventDefault(); e.stopPropagation() })\r\n }\r\n\r\n _open(win)\r\n {\r\n this.windows.push(win)\r\n this._reorder()\r\n if (win.options.modal)\r\n {\r\n this.modalOverlay.style.display = 'block'\r\n this.modalOverlay.style.zIndex = win.z\r\n }\r\n else\r\n {\r\n this.modalOverlay.style.display = 'none'\r\n }\r\n }\r\n\r\n _focus(win)\r\n {\r\n if (this.active === win)\r\n {\r\n return\r\n }\r\n if (this.active)\r\n {\r\n this.active.blur()\r\n }\r\n const index = this.windows.indexOf(win)\r\n console.assert(index !== -1, 'WindowManager._focus should find window in this.windows')\r\n if (index !== this.windows.length - 1)\r\n {\r\n this.windows.splice(index, 1)\r\n this.windows.push(win)\r\n }\r\n this._reorder()\r\n this.active = this.windows[this.windows.length - 1]\r\n }\r\n\r\n _blur(win)\r\n {\r\n if (this.active === win)\r\n {\r\n this.active = null\r\n }\r\n }\r\n\r\n _close(win)\r\n {\r\n if (win.isModal(true))\r\n {\r\n const next = this.windows[this.windows.length - 1]\r\n if (next && next.isModal())\r\n {\r\n this.modalOverlay.style.zIndex = next.z\r\n }\r\n else\r\n {\r\n this.modalOverlay.style.display = 'none'\r\n }\r\n }\r\n }\r\n\r\n _move(e)\r\n {\r\n for (const key in this.windows)\r\n {\r\n this.windows[key]._move(e)\r\n }\r\n }\r\n\r\n _up(e)\r\n {\r\n for (const key in this.windows)\r\n {\r\n this.windows[key]._up(e)\r\n }\r\n }\r\n\r\n checkModal(win)\r\n {\r\n return !this.modal || this.modal === win\r\n }\r\n\r\n /** @type {WindowManager~Bounds} */\r\n get bounds()\r\n {\r\n const top = Menu.getApplicationHeight()\r\n return {\r\n top: this.win.offsetTop + top,\r\n bottom: this.win.offsetTop + this.win.offsetHeight,\r\n left: this.win.offsetLeft,\r\n right: this.win.offsetLeft + this.win.offsetWidth\r\n }\r\n }\r\n\r\n resize()\r\n {\r\n const bounds = this.bounds\r\n for (const key in this.windows)\r\n {\r\n this.windows[key].reposition(bounds, this.options.keepInside)\r\n }\r\n }\r\n\r\n /**\r\n * Find a window by id\r\n * @param {*} id\r\n * @returns {Window}\r\n */\r\n getWindowById(id)\r\n {\r\n return this.windows.find(win => win.id === id)\r\n }\r\n}\r\n\r\n/**\r\n * @typedef {Object} WindowManager~Bounds\r\n * @property {number} left\r\n * @property {number} right\r\n * @property {number} top\r\n * @property {number} bottom\r\n */\r\n\r\n /**\r\n * @typedef {Object} WindowManager~SnapOptions\r\n * @property {boolean} [screen=true] snap to screen edges\r\n * @property {boolean} [windows=true] snap to window edges\r\n * @property {number} [snap=20] distance to edge in pixels before snapping and width/height of snap bars\r\n * @property {string} [color=#a8f0f4] color for snap bars\r\n * @property {number} [spacing=0] spacing distance between window and edges\r\n * @property {number} [indicator=10] size in pixels of snapping indicator (the indicator is actually twice the size of what is shown)\r\n */"],"names":[],"mappings":"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","x_google_ignoreList":[1,2]}
|