1 line
606 KiB
XML
1 line
606 KiB
XML
{"version":3,"sources":["node_modules/browser-pack/_prelude.js","node_modules/batch-processor/src/batch-processor.js","emulators-ui.js","node_modules/batch-processor/src/utils.js","node_modules/element-resize-detector/src/browser-detector.js","node_modules/element-resize-detector/src/collection-utils.js","node_modules/element-resize-detector/src/detection-strategy/object.js","node_modules/element-resize-detector/src/detection-strategy/scroll.js","node_modules/element-resize-detector/src/element-resize-detector.js","node_modules/element-resize-detector/src/element-utils.js","node_modules/element-resize-detector/src/id-generator.js","node_modules/element-resize-detector/src/id-handler.js","node_modules/element-resize-detector/src/listener-handler.js","node_modules/element-resize-detector/src/reporter.js","node_modules/element-resize-detector/src/state-handler.js","node_modules/nipplejs/dist/nipplejs.js","node_modules/notyf/notyf.js","node_modules/simple-keyboard/build/index.js","src/build.ts","src/controls/button.ts","src/controls/grid.ts","src/controls/keyboard.ts","src/controls/layers-config.ts","src/controls/layers-control.ts","src/controls/legacy-layers-control.ts","src/controls/mouse/mouse-common.ts","src/controls/mouse/mouse-locked.ts","src/controls/mouse/mouse-not-locked.ts","src/controls/mouse/mouse-swipe.ts","src/controls/nipple.ts","src/controls/null-layers-control.ts","src/controls/options.ts","src/dom/helpers.ts","src/dom/keys.ts","src/dom/layers.ts","src/dom/lifecycle.ts","src/dom/mem-storage.ts","src/dom/pointer.ts","src/dom/storage.ts","src/emulators-ui.ts","src/graphics/_2d.ts","src/graphics/video.ts","src/graphics/webgl.ts","src/js-dos.ts","src/network/xhr.ts","src/notification/notyf.ts","src/persist/cache.ts","src/persist/save-load.ts","src/sound/audio-node.ts"],"names":["r","e","n","t","o","i","f","c","require","u","a","Error","code","p","exports","call","length","module","utils","Batch","batch","size","topLevel","bottomLevel","add","level","fn","push","process","fns","options","reporter","asyncProcess","getOption","autoProcess","warn","asyncFrameHandler","isProcessing","processBatch","processingBatch","processBatchAsync","setTimeout","force","localAsyncProcess","undefined","clearTimeout","name","defaultValue","value","detector","isIE","version","agent","navigator","userAgent","toLowerCase","indexOf","v","div","document","createElement","all","getElementsByTagName","innerHTML","undef","isLegacyOpera","window","opera","forEach","collection","callback","result","browserDetector","batchProcessor","getState","stateHandler","buildCssTextString","rules","seperator","important","join","trim","getObject","element","object","makeDetectable","debug","OBJECT_STYLE","positionCheckPerformed","style","getComputedStyle","width","offsetWidth","height","offsetHeight","mutateDom","alterPositionStyles","position","setProperty","removeRelativeStyles","property","replace","getNumericalValue","cssText","tabIndex","type","setAttribute","onload","getDocument","contentDocument","state","checkForObjectDocumentTimeoutId","this","objectDocument","data","appendChild","startSize","injectObject","addListener","listener","listenerProxy","proxy","attachEvent","defaultView","addEventListener","uninstall","detachEvent","removeChild","idHandler","hasState","scrollbarSizes","child","container","body","insertBefore","firstChild","widthSize","clientWidth","heightSize","clientHeight","getScrollbarSizes","detectionContainerClass","initDocument","targetDocument","styleId","containerClass","injectStyle","method","head","styleElement","id","getElementById","containerAnimationClass","containerAnimationActiveClass","injectScrollStyle","addEvent","el","cb","error","removeEvent","removeEventListener","getExpandElement","childNodes","getShrinkElement","args","Array","prototype","slice","arguments","unshift","get","log","apply","isUnrendered","getStyle","elementStyle","top","right","bottom","left","widthCSS","heightCSS","storeStyle","storeCurrentSize","lastWidth","lastHeight","getWidthOffset","getHeightOffset","getExpandWidth","getExpandHeight","positionScrollbars","expand","shrink","expandWidth","expandHeight","shrinkWidth","getShrinkWidth","shrinkHeight","getShrinkHeight","scrollLeft","scrollTop","injectContainerElement","className","addAnimationClass","onAnimationStart","onRendered","injectScrollElements","rootContainer","scrollbarWidth","scrollbarHeight","containerContainerStyle","containerStyle","concat","expandStyle","shrinkStyle","expandChildStyle","shrinkChildStyle","containerContainer","expandChild","shrinkChild","dir","onExpandScroll","onShrinkScroll","onExpand","onShrink","registerListenersAndPositionElements","updateChildSizes","getExpandChildElement","updateDetectorElements","done","sizeChanged","areElementsInjected","w","h","notifyListenersIfNeeded","lastNotifiedWidth","lastNotifiedHeight","listeners","handleScroll","finalizeDomMutation","ready","install","isInShadowRoot","getRootNode","contains","ownerDocument","isInDocument","isDetached","elementUtilsMaker","listenerHandlerMaker","idGeneratorMaker","idHandlerMaker","reporterMaker","batchProcessorMaker","objectStrategyMaker","scrollStrategyMaker","isCollection","obj","isArray","toArray","array","isElement","nodeType","set","idGenerator","defaultIdHandler","globalOptions","callOnAdd","detectionStrategy","eventListenerHandler","elementUtils","desiredStrategy","importantCssRules","strategyOptions","onReadyCallbacks","listenTo","elements","onResizeCallback","elementsReady","onReadyCallback","initState","isDetectable","isBusy","markBusy","markAsDetectable","removeListener","removeAllListeners","cleanState","busy","idCount","generate","eventListeners","getListeners","len","splice","quiet","noop","console","attachFunction","l","m","d","Object","defineProperty","enumerable","Symbol","toStringTag","__esModule","create","bind","default","hasOwnProperty","s","x","y","Math","sqrt","PI","Map","has","split","preventDefault","match","changedTouches","pageXOffset","documentElement","parentNode","pageYOffset","charAt","toUpperCase","g","b","PointerEvent","MSPointerEvent","O","start","move","end","_","on","_handlers_","off","trigger","target","config","defaults","bindEvt","_domHandlers_","unbindEvt","T","k","identifier","frontPosition","threshold","color","fadeTime","dataOnly","restJoystick","restOpacity","mode","zone","lockX","lockY","shape","buildEl","stylize","instance","ui","show","hide","addToDom","remove","removeFromDom","destroy","setPosition","resetDirection","computeDirection","constructor","back","front","opacity","display","zIndex","marginLeft","marginTop","background","applyStyles","removeTimeout","showTimeout","restTimeout","restCallback","direction","angle","radian","P","E","nipples","idles","actives","ids","pressureIntervals","manager","multitouch","maxNumberOfNipples","catchDistance","dynamicPage","follow","parentElement","parentIsFlex","updateBox","prepareNipples","bindings","begin","processOnMove","processOnEnd","touchAction","msTouchAction","createNipple","getIdentifier","scroll","box","getBoundingClientRect","bindNipple","onDestroyed","pressureFn","clearInterval","setInterval","pressure","webkitForce","onstart","processOnStart","keys","values","touches","findIndex","bindDocument","pageX","pageY","getOrCreate","removeIdentifier","test","isNaN","buttons","atan2","distance","min","cos","sin","max","I","z","D","M","degree","vector","raw","unbindDocument","index","collections","prepareCollections","every","createCollection","bindCollection","binded","pointerId","latest","onmove","onAny","onend","oncancel","_found_","factory","define","amd","nipplejs","NotyfArrayEvent","__assign","assign","NotyfNotification","eventType","callbacks","triggerEvent","event","_this","NotyfEvent","NotyfArray","notifications","elem","updateFn","Add","num","Remove","onUpdate","DEFAULT_OPTIONS","types","backgroundColor","icon","tagName","duration","ripple","dismissible","NotyfView","events","X_POSITION_FLEX_MAP","center","Y_POSITION_FLEX_MAP","docFrag","createDocumentFragment","notyfContainer","_createHTMLElement","animationEndEventName","_getAnimationEndEventName","_createA11yContainer","_a","update","notification","addNotification","removeNotification","node","handleEvent","renderedNotification","_popRenderedNotification","classList","_renderNotification","_announce","message","card","_buildNotificationCard","idx","getXPosition","getYPosition","adjustContainerAlignment","align","justify","iconOpts","notificationElem","wrapper","mainColor","iconContainer","String","valueOf","className_1","text","_b","iconElement","dismissWrapper","dismissButton","Dismiss","stopPropagation","Click","textContent","a11yContainer","border","clip","margin","overflow","padding","outline","transitions","MozTransition","OTransition","WebkitTransition","transition","Notyf","opts","dismiss","_removeNotification","view","registerTypes","payload","normalizeOptions","open","success","defaultOpts","find","assignProps","_pushNotification","dismissAll","props","prop","incomingTypes","map","defaultType","userTypeIdx","userType","TypeError","configurable","S","next","includes","filter","some","filterReject","foo","Boolean","floor","return","from","toString","callee","getPrototypeOf","IteratorPrototype","writable","global","unsafe","nonConfigurable","nonWritable","PROPER","CONFIGURABLE","BUGGY_SAFARI_ITERATORS","C","A","R","N","j","L","entries","proto","forced","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","Deno","versions","v8","stat","dontCallGetSet","sham","RegExp","flags","exec","Function","Reflect","getOwnPropertyDescriptor","EXISTS","globalThis","self","hasOwn","propertyIsEnumerable","inspectSource","WeakMap","facade","enforce","getterFor","normalize","NATIVE","POLYFILL","Number","isInteger","isFinite","getter","setter","arity","source","ceil","trunc","for","keyFor","getOwnPropertySymbols","write","close","parentWindow","ActiveXObject","domain","src","contentWindow","F","defineProperties","getOwnPropertyNames","isPrototypeOf","random","__defineSetter__","setPrototypeOf","__proto__","lastIndex","BROKEN_CARET","groups","sticky","multiline","input","hasIndices","ignoreCase","dotAll","unicode","unicodeSets","MISSED_STICKY","UNSUPPORTED_Y","copyright","license","charCodeAt","codeAt","iterator","withoutSetter","kind","Arguments","reduce","sort","fromCharCode","stringify","NaN","parseInt","__defineGetter__","getOwnPropertyDescriptors","SyntaxError","B","K","U","H","string","matchAll","regexp","$","G","V","Y","QObject","W","X","J","q","Q","Z","tt","et","nt","findChild","ot","rt","tag","description","it","at","lt","st","ut","ct","wrap","useSetter","useSimple","key","Element","createElementNS","DOMException","getAttribute","_updateClassName","item","toggle","number","getOptions","getCaretPosition","getCaretPositionEnd","dispatch","bindMethods","getButtonType","getDefaultDiplay","removeAt","removeForwardsAt","addStringAt","tabCharOnTab","newLineOnEnter","updateCaretPosAction","setCaretPosition","isMaxLengthReached","updateCaretPos","substring","substr","maxLength","inputName","maxLengthReached","maxTouchPoints","getSimpleKeyboardLayoutKey","getButtonElement","physicalKeyboardHighlightBgColor","physicalKeyboardHighlightTextColor","physicalKeyboardHighlightPress","physicalKeyboardHighlightPressUsePointerEvents","onpointerdown","physicalKeyboardHighlightPressUseClick","click","handleButtonClicked","removeAttribute","onpointerup","keyCodeToKey","keyCode","utilities","pageSize","layoutCandidatesPageSize","candidateBoxElement","pageIndex","candidateValue","targetElement","onSelect","chunkArray","renderPage","candidateListPages","nbPages","onItemSelected","MouseEvent","onclick","prepend","querySelector","HTMLDivElement","keyboardDOMClass","keyboardDOM","caretPosition","caretPositionEnd","modules","handleParams","layoutName","theme","preventMouseDownDefault","enableLayoutCandidates","excludeFromLayout","keyboardPluginClasses","defaultName","buttonElements","SimpleKeyboardInstances","currentInstanceName","camelCase","allKeyboardInstances","keyboardInstanceNames","isFirstKeyboardInstance","physicalKeyboard","candidateBox","render","loadModules","layoutCandidates","layoutCandidatesCaseSensitiveMatch","candidateKey","getInput","setInput","onChange","onChangeAll","getAllInputs","getUpdatedInput","isStandardButton","activeInputElement","setSelectionRange","onKeyPress","inputPattern","inputPatternIsValid","handleMaxLength","syncInstanceInputs","getInputCandidates","showCandidatesBox","isMouseHold","stopMouseDownPropagation","activeButtonClass","holdInteractionTimeout","holdTimeout","setMouseHold","disableButtonHold","getMouseHold","handleButtonHold","preventMouseUpDefault","stopMouseUpPropagation","recurseButtons","onKeyReleased","replaceInput","rtl","changedOptions","onSetOptions","JSON","keyboardRowsDOM","buttonTheme","class","handleKeyUp","handleKeyDown","handleMouseUp","handleTouchEnd","handleSelect","handleSelectionChange","caretEventHandler","physicalKeyboardHighlight","handleHighlightKeyUp","handleHighlightKeyDown","path","hasAttribute","disableCaretPositioning","selectionStart","selectionEnd","ontouchend","ontouchcancel","onmouseup","onpointercancel","ontouchstart","onmousedown","resetRows","initialized","buttonAttributes","attribute","processAutoTouchEvents","disableContextualWindow","oncontextmenu","autoUseTouchEvents","useTouchEvents","setEventListeners","onInit","isTouchDevice","onTouchDeviceDetected","beforeFirstRender","pointerEventsSupported","useMouseEvents","beforeRender","onRender","onModulesLoaded","init","children","layout","shift","disableRowButtonContainers","getKeyboardClassString","getButtonClass","getButtonDisplayName","mergeDisplay","useButtonTag","getButtonThemeClasses","setDOMButtonAttributes","handleButtonMouseDown","handleButtonMouseUp","parseRowDOMContainers","handleKeyboardContainerMouseDown","SimpleKeyboard","Build","short","buildSeed","deprecatedButton","createButton","keys_1","pointer_1","keyCodeToName","namedKeyCodes","initKeyCodeToName","symbol","handler","innerSize","round","innerTextSize","borderWidth","backgroundImage","symbolToUrl","button","createDiv","innerButton","innerText","fontSize","widthPx","heightPx","onStart","onDown","onClick","onEnd","onUp","onPrevent","capture","pointer","starters","enders","changers","leavers","prevents","innerHtml","mapToSymbol","mapTo","deprecatedCreateHandler","layers","action","fireKeyPress","fireKeyDown","fireKeyUp","ci","ident","toRemove","KBD_NONE","cssStyle","mouseOverlay","down","enter","fullscreen","save","keyboard","up","do","dw","dwn","le","lft","ri","rght","rgh","en","enr","ent","entr","_defineProperty","getGrid","gridType","SquareGrid","getConfiguration","scale","cols","getCols","rows","getRows","middleCol","middleRow","columnsPadding","rowsPadding","columnWidth","rowHeight","cells","row","cellRow","col","centerX","centerY","aspect","getSquareGrid","cellCols","getHoneyCombGrid","mapperOpt","mapper","setOnKeyDown","sendKeyEvent","setOnKeyUp","setOnKeyPress","simulateKeyPress","setOnKeysPress","keyCodes","extractLayersConfig","layersConfig","layer","control","controls","keyControl","migrateV1ToV2","initLayersControl","grid_1","button_1","keyboard_1","mouse_common_1","options_1","dosInstance","mirrored","layerName","selectedLayer","title","layerConfig","unbindKeyboard","unbindMouse","mouse","autolock","sensitivity","unbindControls","rebuild","_layers$options$optio","gridConfig","grid","sensors","ControlSensors","column","setHiddenAround","doOffsetColumnInRow","optionControls","mirroredInfo","columnsCount","middleColumn","leftStart","leftEnd","rightStart","rightEnd","factoryMapping","copy","leftSide","unbind","addOnResize","removeOnResize","initLayerConfig","activate","sensor","deactivate","register","Key","isHidden","Options","optionControl","_layers$options$optio2","createKeyboardControl","Keyboard","Switch","switchControl","setLayersConfig","getLayersConfig","ScreenMove","screenMoveControl","mX","mY","sendMouseMotion","PointerButton","pointerButtonControl","sendMouseButton","pointerButton","PointerMove","pointerMoveControl","PointerReset","pointerResetControl","sendMouseSync","PointerToggle","pointerToggleControl","pointerDisabled","NippleActivator","nippleActivatorControl","nippleContainer","cellSize","activeColumn","activeRow","evt","targetColumn","targetRow","half","step","started","keyboardControl","toggleKeyboard","onKeyboardVisibility","visible","setOnKeyboardVisibility","removeOnKeyboardVisibility","hidden","centralRow","centralColumn","setHiddenIfValid","rowCells","initLegacyLayersControl","nipple_1","layersNames","gestures","changeControlLayer","nipple","unbindOptions","mount","mapXY","mouse_swipe_1","mouse_not_locked_1","mouse_locked_1","insensitivePadding","eX","eY","frameWidth","frameHeight","containerWidth","containerHeight","onMouseDown","onMouseMove","onMouseUp","onMouseLeave","pressedButton","getPointerState","onLeave","canLock","mouseSwipe","mouseLocked","mouseNotLocked","isNotLocked","pointerLockElement","requestPointerLock","mozRequestPointerLock","webkitRequestPointerLock","sendMouseRelativeMotion","exitPointerLock","xy","startedAt","acc","prevX","prevY","Date","now","abs","mapping","pressed","release","releaseOnEnd","tapJoysticks","usedTimes","joystickId","startTimes","delay","initNullLayersControl","helpers_1","createSelectForLayers","select","option","onchange","onLayerChange","controlsVisbile","keyboardVisible","updateVisibility","toggleOptions","toggleFullscreen","setOnFullscreen","fullscreenEnabled","intialDisplay","marginRight","marginBottom","onStop","KBD_kp0","KBD_f12","KBD_f11","KBD_f10","KBD_f9","KBD_f8","KBD_f7","KBD_f6","KBD_f5","KBD_f4","KBD_f3","KBD_f2","KBD_f1","KBD_z","KBD_y","KBD_x","KBD_w","KBD_v","KBD_u","KBD_t","KBD_s","KBD_r","KBD_q","KBD_p","KBD_o","KBD_n","KBD_m","KBD_l","KBD_k","KBD_j","KBD_i","KBD_h","KBD_g","KBD_f","KBD_e","KBD_d","KBD_c","KBD_b","KBD_a","KBD_9","KBD_8","KBD_7","KBD_6","KBD_5","KBD_4","KBD_3","KBD_2","KBD_1","KBD_0","KBD_up","KBD_left","KBD_pagedown","KBD_end","KBD_delete","KBD_pageup","KBD_home","KBD_insert","KBD_pause","KBD_printscreen","KBD_slash","KBD_comma","KBD_period","KBD_quote","KBD_semicolon","KBD_rightbracket","KBD_leftbracket","KBD_backslash","KBD_equals","KBD_minus","KBD_grave","KBD_numlock","KBD_scrolllock","KBD_capslock","KBD_rightshift","KBD_leftshift","KBD_rightctrl","KBD_leftctrl","KBD_rightalt","KBD_leftalt","KBD_space","KBD_enter","KBD_backspace","KBD_tab","KBD_esc","KBD_kpenter","KBD_kpplus","KBD_kpminus","KBD_kpmultiply","KBD_kpdivide","KBD_kpperiod","KBD_kp9","KBD_kp8","KBD_kp7","KBD_kp6","KBD_kp5","KBD_kp4","KBD_kp3","KBD_kp2","KBD_kp1","domToKeyCode","keyCodesToDom","domToKeyCodes","KBD_extra_lt_gt","KBD_right","KBD_down","domCode","__importDefault","mod","Layers","notyf_1","simple_keyboard_1","resizeDetector","elementResizeDetector","root","fullscreenElement","canvas","video","loading","loaderText","clickToStart","play","onResize","onKeyDown","onKeyUp","onKeysPress","onSave","Promise","reject","onSaveStarted","onSaveEnded","initKeyEvents","initKeyboard","preventContextMenu","onfullscreenchange","onFullscreenChanged","keyboardInput","keyboardInputDiv","fireKeysPress","exitFullscreen","webkitExitFullscreen","mozCancelFullScreen","msExitFullscreen","requestFullscreen","webkitRequestFullscreen","mozRequestFullScreen","msRequestFullscreen","webkitEnterFullscreen","removeOnFullscreen","onKeyboardChanged","then","notyf","catch","setOnSave","getOnSave","setOnSaveStarted","setOnSaveEnded","hideLoadingLayer","visibility","showLoadingLayer","setLoadingMessage","switchToVideo","showClickToStart","displayOrder","displayIndex","keyboardDiv","buttonToCode","setOptions","lifecycle","visibilityChange","visibilitHandler","pause","resume","mozHidden","msHidden","webkitHidden","onExit","MemStorage","setItem","storage","getItem","removeItem","clear","rect","targetTouches","clientX","clientY","offsetX","offsetY","movementX","movementY","pointers","isMobile","isTouch","isPointer","isMSPointer","mobile","initBind","LStorage","mem_storage_1","backend","prefix","localStorage","testBackend","sync","testKey","readedValue","setLocalStoragePrefix","startsWith","writeStringToKey","offset","readStringFromKey","EmulatorsUi","build_1","layers_1","lifecycle_1","xhr_1","_2d_1","webgl_1","video_1","audio_node_1","save_load_1","storage_1","js_dos_1","resolveBundle","webGl","_2d","audioNode","load","DosInstance","impl","emulatorsUi","Dos","dos","forceAspect","context","getContext","onResizeLayer","rgba","Uint8ClampedArray","onResizeFrame","onFrameSize","onFrame","frameRgb","frameRgba","frame","frameOffset","rgbaOffset","putImageData","ImageData","onMessage","msgType","stream","Janus","attachMediaStream","loadShader","gl","shaderType","shader","createShader","shaderSource","compileShader","getShaderParameter","COMPILE_STATUS","info","getShaderInfoLog","deleteShader","shaderProgram","vsSource","fsSource","vertexShader","VERTEX_SHADER","fragmentShader","FRAGMENT_SHADER","createProgram","attachShader","linkProgram","getProgramParameter","LINK_STATUS","getProgramInfoLog","initShaderProgram","vertexPosition","getAttribLocation","textureCoord","uSampler","getUniformLocation","positionBuffer","createBuffer","bindBuffer","ARRAY_BUFFER","positions","bufferData","Float32Array","STATIC_DRAW","vertexAttribPointer","FLOAT","enableVertexAttribArray","textureCoordBuffer","textureCoordinates","initBuffers","texture","createTexture","bindTexture","TEXTURE_2D","texParameteri","TEXTURE_WRAP_S","CLAMP_TO_EDGE","TEXTURE_WRAP_T","TEXTURE_MIN_FILTER","LINEAR","TEXTURE_MAG_FILTER","pixel","Uint8Array","texImage2D","RGB","UNSIGNED_BYTE","useProgram","activeTexture","TEXTURE0","uniform1i","viewport","requestAnimationFrameId","frameFormat","rgb","RGBA","requestAnimationFrame","updateTexture","drawArrays","TRIANGLES","layers_config_1","legacy_layers_control_1","null_layers_control_1","layers_control_1","onSensitivityChanged","onScaleChanged","onVolumeChanged","dom","emulatorFunction","layersOptions","createTransportLayer","mobileControls","mirroredControls","scaleControlsValue","scaleControls","parseFloat","sensitivityValue","volumeValue","volume","onMobileControlsChanged","async","bundleUrl","optionalChangesUrl","optionalPersistKey","_config$output","_config$output$option","_config$output$option2","stop","persistKey","runBundle","graphics","persist","emulators","noWebGL","setVolumeImplFn","sound","output","disableMobileControls","ciPromise","exit","storedLayersConfig","enableMobileControls","setOnMobileControlsChanged","janus","bundlePromise","network","onprogress","percent","onExtractProgress","file","extracted","total","lastIndexOf","changesBundle","httpCache","bundle","url","resolve","request","XMLHttpRequest","overrideMimeType","responseType","onreadystatechange","readyState","status","response","porgress","loaded","setRequestHeader","send","_len","_key","makeCache","CacheNoop","put","each","logger","CacheDbImpl","msg","onErr","onready","onerror","indexedDB","mozIndexedDB","webkitIndexedDB","msIndexedDB","openRequest","_openRequest$error","onsuccess","db","onupgradeneeded","createObjectStore","storeName","transaction","oncomplete","objectStore","rejectOrResolve","openCursor","cursor","continue","cachePromise","cache","updated","buffer","SamplesQueue","samples","samplesQueue","writeTo","dst","bufferSize","writeIt","toRead","fill","sampleRate","soundFrequency","audioContext","AudioContext","latencyHint","webkitAudioContext","onSoundPush","createScriptProcessor","active","directSound","onaudioprocess","numFrames","outputBuffer","numChannels","numberOfChannels","numSamples","subarray","channel","getChannelData","ringSize","samplesCount","channelData","gainNode","createGain","connect","destination","gain","resumeWebAudio","once","disconnect"],"mappings":"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","file":"emulators-ui.js","sourcesContent":["(function(){function r(e,n,t){function o(i,f){if(!n[i]){if(!e[i]){var c=\"function\"==typeof require&&require;if(!f&&c)return c(i,!0);if(u)return u(i,!0);var a=new Error(\"Cannot find module '\"+i+\"'\");throw a.code=\"MODULE_NOT_FOUND\",a}var p=n[i]={exports:{}};e[i][0].call(p.exports,function(r){var n=e[i][1][r];return o(n||r)},p,p.exports,r,e,n,t)}return n[i].exports}for(var u=\"function\"==typeof require&&require,i=0;i<t.length;i++)o(t[i]);return o}return r})()","\"use strict\";\n\nvar utils = require(\"./utils\");\n\nmodule.exports = function batchProcessorMaker(options) {\n options = options || {};\n var reporter = options.reporter;\n var asyncProcess = utils.getOption(options, \"async\", true);\n var autoProcess = utils.getOption(options, \"auto\", true);\n\n if(autoProcess && !asyncProcess) {\n reporter && reporter.warn(\"Invalid options combination. auto=true and async=false is invalid. Setting async=true.\");\n asyncProcess = true;\n }\n\n var batch = Batch();\n var asyncFrameHandler;\n var isProcessing = false;\n\n function addFunction(level, fn) {\n if(!isProcessing && autoProcess && asyncProcess && batch.size() === 0) {\n // Since this is async, it is guaranteed to be executed after that the fn is added to the batch.\n // This needs to be done before, since we're checking the size of the batch to be 0.\n processBatchAsync();\n }\n\n batch.add(level, fn);\n }\n\n function processBatch() {\n // Save the current batch, and create a new batch so that incoming functions are not added into the currently processing batch.\n // Continue processing until the top-level batch is empty (functions may be added to the new batch while processing, and so on).\n isProcessing = true;\n while (batch.size()) {\n var processingBatch = batch;\n batch = Batch();\n processingBatch.process();\n }\n isProcessing = false;\n }\n\n function forceProcessBatch(localAsyncProcess) {\n if (isProcessing) {\n return;\n }\n\n if(localAsyncProcess === undefined) {\n localAsyncProcess = asyncProcess;\n }\n\n if(asyncFrameHandler) {\n cancelFrame(asyncFrameHandler);\n asyncFrameHandler = null;\n }\n\n if(localAsyncProcess) {\n processBatchAsync();\n } else {\n processBatch();\n }\n }\n\n function processBatchAsync() {\n asyncFrameHandler = requestFrame(processBatch);\n }\n\n function clearBatch() {\n batch = {};\n batchSize = 0;\n topLevel = 0;\n bottomLevel = 0;\n }\n\n function cancelFrame(listener) {\n // var cancel = window.cancelAnimationFrame || window.mozCancelAnimationFrame || window.webkitCancelAnimationFrame || window.clearTimeout;\n var cancel = clearTimeout;\n return cancel(listener);\n }\n\n function requestFrame(callback) {\n // var raf = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || function(fn) { return window.setTimeout(fn, 20); };\n var raf = function(fn) { return setTimeout(fn, 0); };\n return raf(callback);\n }\n\n return {\n add: addFunction,\n force: forceProcessBatch\n };\n};\n\nfunction Batch() {\n var batch = {};\n var size = 0;\n var topLevel = 0;\n var bottomLevel = 0;\n\n function add(level, fn) {\n if(!fn) {\n fn = level;\n level = 0;\n }\n\n if(level > topLevel) {\n topLevel = level;\n } else if(level < bottomLevel) {\n bottomLevel = level;\n }\n\n if(!batch[level]) {\n batch[level] = [];\n }\n\n batch[level].push(fn);\n size++;\n }\n\n function process() {\n for(var level = bottomLevel; level <= topLevel; level++) {\n var fns = batch[level];\n\n for(var i = 0; i < fns.length; i++) {\n var fn = fns[i];\n fn();\n }\n }\n }\n\n function getSize() {\n return size;\n }\n\n return {\n add: add,\n process: process,\n size: getSize\n };\n}\n",null,"\"use strict\";\n\nvar utils = module.exports = {};\n\nutils.getOption = getOption;\n\nfunction getOption(options, name, defaultValue) {\n var value = options[name];\n\n if((value === undefined || value === null) && defaultValue !== undefined) {\n return defaultValue;\n }\n\n return value;\n}\n","\"use strict\";\n\nvar detector = module.exports = {};\n\ndetector.isIE = function(version) {\n function isAnyIeVersion() {\n var agent = navigator.userAgent.toLowerCase();\n return agent.indexOf(\"msie\") !== -1 || agent.indexOf(\"trident\") !== -1 || agent.indexOf(\" edge/\") !== -1;\n }\n\n if(!isAnyIeVersion()) {\n return false;\n }\n\n if(!version) {\n return true;\n }\n\n //Shamelessly stolen from https://gist.github.com/padolsey/527683\n var ieVersion = (function(){\n var undef,\n v = 3,\n div = document.createElement(\"div\"),\n all = div.getElementsByTagName(\"i\");\n\n do {\n div.innerHTML = \"<!--[if gt IE \" + (++v) + \"]><i></i><![endif]-->\";\n }\n while (all[0]);\n\n return v > 4 ? v : undef;\n }());\n\n return version === ieVersion;\n};\n\ndetector.isLegacyOpera = function() {\n return !!window.opera;\n};\n","\"use strict\";\n\nvar utils = module.exports = {};\n\n/**\n * Loops through the collection and calls the callback for each element. if the callback returns truthy, the loop is broken and returns the same value.\n * @public\n * @param {*} collection The collection to loop through. Needs to have a length property set and have indices set from 0 to length - 1.\n * @param {function} callback The callback to be called for each element. The element will be given as a parameter to the callback. If this callback returns truthy, the loop is broken and the same value is returned.\n * @returns {*} The value that a callback has returned (if truthy). Otherwise nothing.\n */\nutils.forEach = function(collection, callback) {\n for(var i = 0; i < collection.length; i++) {\n var result = callback(collection[i]);\n if(result) {\n return result;\n }\n }\n};\n","/**\n * Resize detection strategy that injects objects to elements in order to detect resize events.\n * Heavily inspired by: http://www.backalleycoder.com/2013/03/18/cross-browser-event-based-element-resize-detection/\n */\n\n\"use strict\";\n\nvar browserDetector = require(\"../browser-detector\");\n\nmodule.exports = function(options) {\n options = options || {};\n var reporter = options.reporter;\n var batchProcessor = options.batchProcessor;\n var getState = options.stateHandler.getState;\n\n if(!reporter) {\n throw new Error(\"Missing required dependency: reporter.\");\n }\n\n /**\n * Adds a resize event listener to the element.\n * @public\n * @param {element} element The element that should have the listener added.\n * @param {function} listener The listener callback to be called for each resize event of the element. The element will be given as a parameter to the listener callback.\n */\n function addListener(element, listener) {\n function listenerProxy() {\n listener(element);\n }\n\n if(browserDetector.isIE(8)) {\n //IE 8 does not support object, but supports the resize event directly on elements.\n getState(element).object = {\n proxy: listenerProxy\n };\n element.attachEvent(\"onresize\", listenerProxy);\n } else {\n var object = getObject(element);\n\n if(!object) {\n throw new Error(\"Element is not detectable by this strategy.\");\n }\n\n object.contentDocument.defaultView.addEventListener(\"resize\", listenerProxy);\n }\n }\n\n function buildCssTextString(rules) {\n var seperator = options.important ? \" !important; \" : \"; \";\n\n return (rules.join(seperator) + seperator).trim();\n }\n\n /**\n * Makes an element detectable and ready to be listened for resize events. Will call the callback when the element is ready to be listened for resize changes.\n * @private\n * @param {object} options Optional options object.\n * @param {element} element The element to make detectable\n * @param {function} callback The callback to be called when the element is ready to be listened for resize changes. Will be called with the element as first parameter.\n */\n function makeDetectable(options, element, callback) {\n if (!callback) {\n callback = element;\n element = options;\n options = null;\n }\n\n options = options || {};\n var debug = options.debug;\n\n function injectObject(element, callback) {\n var OBJECT_STYLE = buildCssTextString([\"display: block\", \"position: absolute\", \"top: 0\", \"left: 0\", \"width: 100%\", \"height: 100%\", \"border: none\", \"padding: 0\", \"margin: 0\", \"opacity: 0\", \"z-index: -1000\", \"pointer-events: none\"]);\n\n //The target element needs to be positioned (everything except static) so the absolute positioned object will be positioned relative to the target element.\n\n // Position altering may be performed directly or on object load, depending on if style resolution is possible directly or not.\n var positionCheckPerformed = false;\n\n // The element may not yet be attached to the DOM, and therefore the style object may be empty in some browsers.\n // Since the style object is a reference, it will be updated as soon as the element is attached to the DOM.\n var style = window.getComputedStyle(element);\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n getState(element).startSize = {\n width: width,\n height: height\n };\n\n function mutateDom() {\n function alterPositionStyles() {\n if(style.position === \"static\") {\n element.style.setProperty(\"position\", \"relative\", options.important ? \"important\" : \"\");\n\n var removeRelativeStyles = function(reporter, element, style, property) {\n function getNumericalValue(value) {\n return value.replace(/[^-\\d\\.]/g, \"\");\n }\n\n var value = style[property];\n\n if(value !== \"auto\" && getNumericalValue(value) !== \"0\") {\n reporter.warn(\"An element that is positioned static has style.\" + property + \"=\" + value + \" which is ignored due to the static positioning. The element will need to be positioned relative, so the style.\" + property + \" will be set to 0. Element: \", element);\n element.style.setProperty(property, \"0\", options.important ? \"important\" : \"\");\n }\n };\n\n //Check so that there are no accidental styles that will make the element styled differently now that is is relative.\n //If there are any, set them to 0 (this should be okay with the user since the style properties did nothing before [since the element was positioned static] anyway).\n removeRelativeStyles(reporter, element, style, \"top\");\n removeRelativeStyles(reporter, element, style, \"right\");\n removeRelativeStyles(reporter, element, style, \"bottom\");\n removeRelativeStyles(reporter, element, style, \"left\");\n }\n }\n\n function onObjectLoad() {\n // The object has been loaded, which means that the element now is guaranteed to be attached to the DOM.\n if (!positionCheckPerformed) {\n alterPositionStyles();\n }\n\n /*jshint validthis: true */\n\n function getDocument(element, callback) {\n //Opera 12 seem to call the object.onload before the actual document has been created.\n //So if it is not present, poll it with an timeout until it is present.\n //TODO: Could maybe be handled better with object.onreadystatechange or similar.\n if(!element.contentDocument) {\n var state = getState(element);\n if (state.checkForObjectDocumentTimeoutId) {\n window.clearTimeout(state.checkForObjectDocumentTimeoutId);\n }\n state.checkForObjectDocumentTimeoutId = setTimeout(function checkForObjectDocument() {\n state.checkForObjectDocumentTimeoutId = 0;\n getDocument(element, callback);\n }, 100);\n\n return;\n }\n\n callback(element.contentDocument);\n }\n\n //Mutating the object element here seems to fire another load event.\n //Mutating the inner document of the object element is fine though.\n var objectElement = this;\n\n //Create the style element to be added to the object.\n getDocument(objectElement, function onObjectDocumentReady(objectDocument) {\n //Notify that the element is ready to be listened to.\n callback(element);\n });\n }\n\n // The element may be detached from the DOM, and some browsers does not support style resolving of detached elements.\n // The alterPositionStyles needs to be delayed until we know the element has been attached to the DOM (which we are sure of when the onObjectLoad has been fired), if style resolution is not possible.\n if (style.position !== \"\") {\n alterPositionStyles(style);\n positionCheckPerformed = true;\n }\n\n //Add an object element as a child to the target element that will be listened to for resize events.\n var object = document.createElement(\"object\");\n object.style.cssText = OBJECT_STYLE;\n object.tabIndex = -1;\n object.type = \"text/html\";\n object.setAttribute(\"aria-hidden\", \"true\");\n object.onload = onObjectLoad;\n\n //Safari: This must occur before adding the object to the DOM.\n //IE: Does not like that this happens before, even if it is also added after.\n if(!browserDetector.isIE()) {\n object.data = \"about:blank\";\n }\n\n if (!getState(element)) {\n // The element has been uninstalled before the actual loading happened.\n return;\n }\n\n element.appendChild(object);\n getState(element).object = object;\n\n //IE: This must occur after adding the object to the DOM.\n if(browserDetector.isIE()) {\n object.data = \"about:blank\";\n }\n }\n\n if(batchProcessor) {\n batchProcessor.add(mutateDom);\n } else {\n mutateDom();\n }\n }\n\n if(browserDetector.isIE(8)) {\n //IE 8 does not support objects properly. Luckily they do support the resize event.\n //So do not inject the object and notify that the element is already ready to be listened to.\n //The event handler for the resize event is attached in the utils.addListener instead.\n callback(element);\n } else {\n injectObject(element, callback);\n }\n }\n\n /**\n * Returns the child object of the target element.\n * @private\n * @param {element} element The target element.\n * @returns The object element of the target.\n */\n function getObject(element) {\n return getState(element).object;\n }\n\n function uninstall(element) {\n if (!getState(element)) {\n return;\n }\n\n var object = getObject(element);\n\n if (!object) {\n return;\n }\n\n if (browserDetector.isIE(8)) {\n element.detachEvent(\"onresize\", object.proxy);\n } else {\n element.removeChild(object);\n }\n\n if (getState(element).checkForObjectDocumentTimeoutId) {\n window.clearTimeout(getState(element).checkForObjectDocumentTimeoutId);\n }\n\n delete getState(element).object;\n }\n\n return {\n makeDetectable: makeDetectable,\n addListener: addListener,\n uninstall: uninstall\n };\n};\n","/**\n * Resize detection strategy that injects divs to elements in order to detect resize events on scroll events.\n * Heavily inspired by: https://github.com/marcj/css-element-queries/blob/master/src/ResizeSensor.js\n */\n\n\"use strict\";\n\nvar forEach = require(\"../collection-utils\").forEach;\n\nmodule.exports = function(options) {\n options = options || {};\n var reporter = options.reporter;\n var batchProcessor = options.batchProcessor;\n var getState = options.stateHandler.getState;\n var hasState = options.stateHandler.hasState;\n var idHandler = options.idHandler;\n\n if (!batchProcessor) {\n throw new Error(\"Missing required dependency: batchProcessor\");\n }\n\n if (!reporter) {\n throw new Error(\"Missing required dependency: reporter.\");\n }\n\n //TODO: Could this perhaps be done at installation time?\n var scrollbarSizes = getScrollbarSizes();\n\n var styleId = \"erd_scroll_detection_scrollbar_style\";\n var detectionContainerClass = \"erd_scroll_detection_container\";\n\n function initDocument(targetDocument) {\n // Inject the scrollbar styling that prevents them from appearing sometimes in Chrome.\n // The injected container needs to have a class, so that it may be styled with CSS (pseudo elements).\n injectScrollStyle(targetDocument, styleId, detectionContainerClass);\n }\n\n initDocument(window.document);\n\n function buildCssTextString(rules) {\n var seperator = options.important ? \" !important; \" : \"; \";\n\n return (rules.join(seperator) + seperator).trim();\n }\n\n function getScrollbarSizes() {\n var width = 500;\n var height = 500;\n\n var child = document.createElement(\"div\");\n child.style.cssText = buildCssTextString([\"position: absolute\", \"width: \" + width*2 + \"px\", \"height: \" + height*2 + \"px\", \"visibility: hidden\", \"margin: 0\", \"padding: 0\"]);\n\n var container = document.createElement(\"div\");\n container.style.cssText = buildCssTextString([\"position: absolute\", \"width: \" + width + \"px\", \"height: \" + height + \"px\", \"overflow: scroll\", \"visibility: none\", \"top: \" + -width*3 + \"px\", \"left: \" + -height*3 + \"px\", \"visibility: hidden\", \"margin: 0\", \"padding: 0\"]);\n\n container.appendChild(child);\n\n document.body.insertBefore(container, document.body.firstChild);\n\n var widthSize = width - container.clientWidth;\n var heightSize = height - container.clientHeight;\n\n document.body.removeChild(container);\n\n return {\n width: widthSize,\n height: heightSize\n };\n }\n\n function injectScrollStyle(targetDocument, styleId, containerClass) {\n function injectStyle(style, method) {\n method = method || function (element) {\n targetDocument.head.appendChild(element);\n };\n\n var styleElement = targetDocument.createElement(\"style\");\n styleElement.innerHTML = style;\n styleElement.id = styleId;\n method(styleElement);\n return styleElement;\n }\n\n if (!targetDocument.getElementById(styleId)) {\n var containerAnimationClass = containerClass + \"_animation\";\n var containerAnimationActiveClass = containerClass + \"_animation_active\";\n var style = \"/* Created by the element-resize-detector library. */\\n\";\n style += \".\" + containerClass + \" > div::-webkit-scrollbar { \" + buildCssTextString([\"display: none\"]) + \" }\\n\\n\";\n style += \".\" + containerAnimationActiveClass + \" { \" + buildCssTextString([\"-webkit-animation-duration: 0.1s\", \"animation-duration: 0.1s\", \"-webkit-animation-name: \" + containerAnimationClass, \"animation-name: \" + containerAnimationClass]) + \" }\\n\";\n style += \"@-webkit-keyframes \" + containerAnimationClass + \" { 0% { opacity: 1; } 50% { opacity: 0; } 100% { opacity: 1; } }\\n\";\n style += \"@keyframes \" + containerAnimationClass + \" { 0% { opacity: 1; } 50% { opacity: 0; } 100% { opacity: 1; } }\";\n injectStyle(style);\n }\n }\n\n function addAnimationClass(element) {\n element.className += \" \" + detectionContainerClass + \"_animation_active\";\n }\n\n function addEvent(el, name, cb) {\n if (el.addEventListener) {\n el.addEventListener(name, cb);\n } else if(el.attachEvent) {\n el.attachEvent(\"on\" + name, cb);\n } else {\n return reporter.error(\"[scroll] Don't know how to add event listeners.\");\n }\n }\n\n function removeEvent(el, name, cb) {\n if (el.removeEventListener) {\n el.removeEventListener(name, cb);\n } else if(el.detachEvent) {\n el.detachEvent(\"on\" + name, cb);\n } else {\n return reporter.error(\"[scroll] Don't know how to remove event listeners.\");\n }\n }\n\n function getExpandElement(element) {\n return getState(element).container.childNodes[0].childNodes[0].childNodes[0];\n }\n\n function getShrinkElement(element) {\n return getState(element).container.childNodes[0].childNodes[0].childNodes[1];\n }\n\n /**\n * Adds a resize event listener to the element.\n * @public\n * @param {element} element The element that should have the listener added.\n * @param {function} listener The listener callback to be called for each resize event of the element. The element will be given as a parameter to the listener callback.\n */\n function addListener(element, listener) {\n var listeners = getState(element).listeners;\n\n if (!listeners.push) {\n throw new Error(\"Cannot add listener to an element that is not detectable.\");\n }\n\n getState(element).listeners.push(listener);\n }\n\n /**\n * Makes an element detectable and ready to be listened for resize events. Will call the callback when the element is ready to be listened for resize changes.\n * @private\n * @param {object} options Optional options object.\n * @param {element} element The element to make detectable\n * @param {function} callback The callback to be called when the element is ready to be listened for resize changes. Will be called with the element as first parameter.\n */\n function makeDetectable(options, element, callback) {\n if (!callback) {\n callback = element;\n element = options;\n options = null;\n }\n\n options = options || {};\n\n function debug() {\n if (options.debug) {\n var args = Array.prototype.slice.call(arguments);\n args.unshift(idHandler.get(element), \"Scroll: \");\n if (reporter.log.apply) {\n reporter.log.apply(null, args);\n } else {\n for (var i = 0; i < args.length; i++) {\n reporter.log(args[i]);\n }\n }\n }\n }\n\n function isDetached(element) {\n function isInDocument(element) {\n var isInShadowRoot = element.getRootNode && element.getRootNode().contains(element);\n return element === element.ownerDocument.body || element.ownerDocument.body.contains(element) || isInShadowRoot;\n }\n\n if (!isInDocument(element)) {\n return true;\n }\n\n // FireFox returns null style in hidden iframes. See https://github.com/wnr/element-resize-detector/issues/68 and https://bugzilla.mozilla.org/show_bug.cgi?id=795520\n if (window.getComputedStyle(element) === null) {\n return true;\n }\n\n return false;\n }\n\n function isUnrendered(element) {\n // Check the absolute positioned container since the top level container is display: inline.\n var container = getState(element).container.childNodes[0];\n var style = window.getComputedStyle(container);\n return !style.width || style.width.indexOf(\"px\") === -1; //Can only compute pixel value when rendered.\n }\n\n function getStyle() {\n // Some browsers only force layouts when actually reading the style properties of the style object, so make sure that they are all read here,\n // so that the user of the function can be sure that it will perform the layout here, instead of later (important for batching).\n var elementStyle = window.getComputedStyle(element);\n var style = {};\n style.position = elementStyle.position;\n style.width = element.offsetWidth;\n style.height = element.offsetHeight;\n style.top = elementStyle.top;\n style.right = elementStyle.right;\n style.bottom = elementStyle.bottom;\n style.left = elementStyle.left;\n style.widthCSS = elementStyle.width;\n style.heightCSS = elementStyle.height;\n return style;\n }\n\n function storeStartSize() {\n var style = getStyle();\n getState(element).startSize = {\n width: style.width,\n height: style.height\n };\n debug(\"Element start size\", getState(element).startSize);\n }\n\n function initListeners() {\n getState(element).listeners = [];\n }\n\n function storeStyle() {\n debug(\"storeStyle invoked.\");\n if (!getState(element)) {\n debug(\"Aborting because element has been uninstalled\");\n return;\n }\n\n var style = getStyle();\n getState(element).style = style;\n }\n\n function storeCurrentSize(element, width, height) {\n getState(element).lastWidth = width;\n getState(element).lastHeight = height;\n }\n\n function getExpandChildElement(element) {\n return getExpandElement(element).childNodes[0];\n }\n\n function getWidthOffset() {\n return 2 * scrollbarSizes.width + 1;\n }\n\n function getHeightOffset() {\n return 2 * scrollbarSizes.height + 1;\n }\n\n function getExpandWidth(width) {\n return width + 10 + getWidthOffset();\n }\n\n function getExpandHeight(height) {\n return height + 10 + getHeightOffset();\n }\n\n function getShrinkWidth(width) {\n return width * 2 + getWidthOffset();\n }\n\n function getShrinkHeight(height) {\n return height * 2 + getHeightOffset();\n }\n\n function positionScrollbars(element, width, height) {\n var expand = getExpandElement(element);\n var shrink = getShrinkElement(element);\n var expandWidth = getExpandWidth(width);\n var expandHeight = getExpandHeight(height);\n var shrinkWidth = getShrinkWidth(width);\n var shrinkHeight = getShrinkHeight(height);\n expand.scrollLeft = expandWidth;\n expand.scrollTop = expandHeight;\n shrink.scrollLeft = shrinkWidth;\n shrink.scrollTop = shrinkHeight;\n }\n\n function injectContainerElement() {\n var container = getState(element).container;\n\n if (!container) {\n container = document.createElement(\"div\");\n container.className = detectionContainerClass;\n container.style.cssText = buildCssTextString([\"visibility: hidden\", \"display: inline\", \"width: 0px\", \"height: 0px\", \"z-index: -1\", \"overflow: hidden\", \"margin: 0\", \"padding: 0\"]);\n getState(element).container = container;\n addAnimationClass(container);\n element.appendChild(container);\n\n var onAnimationStart = function () {\n getState(element).onRendered && getState(element).onRendered();\n };\n\n addEvent(container, \"animationstart\", onAnimationStart);\n\n // Store the event handler here so that they may be removed when uninstall is called.\n // See uninstall function for an explanation why it is needed.\n getState(element).onAnimationStart = onAnimationStart;\n }\n\n return container;\n }\n\n function injectScrollElements() {\n function alterPositionStyles() {\n var style = getState(element).style;\n\n if(style.position === \"static\") {\n element.style.setProperty(\"position\", \"relative\",options.important ? \"important\" : \"\");\n\n var removeRelativeStyles = function(reporter, element, style, property) {\n function getNumericalValue(value) {\n return value.replace(/[^-\\d\\.]/g, \"\");\n }\n\n var value = style[property];\n\n if(value !== \"auto\" && getNumericalValue(value) !== \"0\") {\n reporter.warn(\"An element that is positioned static has style.\" + property + \"=\" + value + \" which is ignored due to the static positioning. The element will need to be positioned relative, so the style.\" + property + \" will be set to 0. Element: \", element);\n element.style[property] = 0;\n }\n };\n\n //Check so that there are no accidental styles that will make the element styled differently now that is is relative.\n //If there are any, set them to 0 (this should be okay with the user since the style properties did nothing before [since the element was positioned static] anyway).\n removeRelativeStyles(reporter, element, style, \"top\");\n removeRelativeStyles(reporter, element, style, \"right\");\n removeRelativeStyles(reporter, element, style, \"bottom\");\n removeRelativeStyles(reporter, element, style, \"left\");\n }\n }\n\n function getLeftTopBottomRightCssText(left, top, bottom, right) {\n left = (!left ? \"0\" : (left + \"px\"));\n top = (!top ? \"0\" : (top + \"px\"));\n bottom = (!bottom ? \"0\" : (bottom + \"px\"));\n right = (!right ? \"0\" : (right + \"px\"));\n\n return [\"left: \" + left, \"top: \" + top, \"right: \" + right, \"bottom: \" + bottom];\n }\n\n debug(\"Injecting elements\");\n\n if (!getState(element)) {\n debug(\"Aborting because element has been uninstalled\");\n return;\n }\n\n alterPositionStyles();\n\n var rootContainer = getState(element).container;\n\n if (!rootContainer) {\n rootContainer = injectContainerElement();\n }\n\n // Due to this WebKit bug https://bugs.webkit.org/show_bug.cgi?id=80808 (currently fixed in Blink, but still present in WebKit browsers such as Safari),\n // we need to inject two containers, one that is width/height 100% and another that is left/top -1px so that the final container always is 1x1 pixels bigger than\n // the targeted element.\n // When the bug is resolved, \"containerContainer\" may be removed.\n\n // The outer container can occasionally be less wide than the targeted when inside inline elements element in WebKit (see https://bugs.webkit.org/show_bug.cgi?id=152980).\n // This should be no problem since the inner container either way makes sure the injected scroll elements are at least 1x1 px.\n\n var scrollbarWidth = scrollbarSizes.width;\n var scrollbarHeight = scrollbarSizes.height;\n var containerContainerStyle = buildCssTextString([\"position: absolute\", \"flex: none\", \"overflow: hidden\", \"z-index: -1\", \"visibility: hidden\", \"width: 100%\", \"height: 100%\", \"left: 0px\", \"top: 0px\"]);\n var containerStyle = buildCssTextString([\"position: absolute\", \"flex: none\", \"overflow: hidden\", \"z-index: -1\", \"visibility: hidden\"].concat(getLeftTopBottomRightCssText(-(1 + scrollbarWidth), -(1 + scrollbarHeight), -scrollbarHeight, -scrollbarWidth)));\n var expandStyle = buildCssTextString([\"position: absolute\", \"flex: none\", \"overflow: scroll\", \"z-index: -1\", \"visibility: hidden\", \"width: 100%\", \"height: 100%\"]);\n var shrinkStyle = buildCssTextString([\"position: absolute\", \"flex: none\", \"overflow: scroll\", \"z-index: -1\", \"visibility: hidden\", \"width: 100%\", \"height: 100%\"]);\n var expandChildStyle = buildCssTextString([\"position: absolute\", \"left: 0\", \"top: 0\"]);\n var shrinkChildStyle = buildCssTextString([\"position: absolute\", \"width: 200%\", \"height: 200%\"]);\n\n var containerContainer = document.createElement(\"div\");\n var container = document.createElement(\"div\");\n var expand = document.createElement(\"div\");\n var expandChild = document.createElement(\"div\");\n var shrink = document.createElement(\"div\");\n var shrinkChild = document.createElement(\"div\");\n\n // Some browsers choke on the resize system being rtl, so force it to ltr. https://github.com/wnr/element-resize-detector/issues/56\n // However, dir should not be set on the top level container as it alters the dimensions of the target element in some browsers.\n containerContainer.dir = \"ltr\";\n\n containerContainer.style.cssText = containerContainerStyle;\n containerContainer.className = detectionContainerClass;\n container.className = detectionContainerClass;\n container.style.cssText = containerStyle;\n expand.style.cssText = expandStyle;\n expandChild.style.cssText = expandChildStyle;\n shrink.style.cssText = shrinkStyle;\n shrinkChild.style.cssText = shrinkChildStyle;\n\n expand.appendChild(expandChild);\n shrink.appendChild(shrinkChild);\n container.appendChild(expand);\n container.appendChild(shrink);\n containerContainer.appendChild(container);\n rootContainer.appendChild(containerContainer);\n\n function onExpandScroll() {\n var state = getState(element);\n if (state && state.onExpand) {\n state.onExpand();\n } else {\n debug(\"Aborting expand scroll handler: element has been uninstalled\");\n }\n }\n\n function onShrinkScroll() {\n var state = getState(element);\n if (state && state.onShrink) {\n state.onShrink();\n } else {\n debug(\"Aborting shrink scroll handler: element has been uninstalled\");\n }\n }\n\n addEvent(expand, \"scroll\", onExpandScroll);\n addEvent(shrink, \"scroll\", onShrinkScroll);\n\n // Store the event handlers here so that they may be removed when uninstall is called.\n // See uninstall function for an explanation why it is needed.\n getState(element).onExpandScroll = onExpandScroll;\n getState(element).onShrinkScroll = onShrinkScroll;\n }\n\n function registerListenersAndPositionElements() {\n function updateChildSizes(element, width, height) {\n var expandChild = getExpandChildElement(element);\n var expandWidth = getExpandWidth(width);\n var expandHeight = getExpandHeight(height);\n expandChild.style.setProperty(\"width\", expandWidth + \"px\", options.important ? \"important\" : \"\");\n expandChild.style.setProperty(\"height\", expandHeight + \"px\", options.important ? \"important\" : \"\");\n }\n\n function updateDetectorElements(done) {\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n // Check whether the size has actually changed since last time the algorithm ran. If not, some steps may be skipped.\n var sizeChanged = width !== getState(element).lastWidth || height !== getState(element).lastHeight;\n\n debug(\"Storing current size\", width, height);\n\n // Store the size of the element sync here, so that multiple scroll events may be ignored in the event listeners.\n // Otherwise the if-check in handleScroll is useless.\n storeCurrentSize(element, width, height);\n\n // Since we delay the processing of the batch, there is a risk that uninstall has been called before the batch gets to execute.\n // Since there is no way to cancel the fn executions, we need to add an uninstall guard to all fns of the batch.\n\n batchProcessor.add(0, function performUpdateChildSizes() {\n if (!sizeChanged) {\n return;\n }\n\n if (!getState(element)) {\n debug(\"Aborting because element has been uninstalled\");\n return;\n }\n\n if (!areElementsInjected()) {\n debug(\"Aborting because element container has not been initialized\");\n return;\n }\n\n if (options.debug) {\n var w = element.offsetWidth;\n var h = element.offsetHeight;\n\n if (w !== width || h !== height) {\n reporter.warn(idHandler.get(element), \"Scroll: Size changed before updating detector elements.\");\n }\n }\n\n updateChildSizes(element, width, height);\n });\n\n batchProcessor.add(1, function updateScrollbars() {\n // This function needs to be invoked event though the size is unchanged. The element could have been resized very quickly and then\n // been restored to the original size, which will have changed the scrollbar positions.\n\n if (!getState(element)) {\n debug(\"Aborting because element has been uninstalled\");\n return;\n }\n\n if (!areElementsInjected()) {\n debug(\"Aborting because element container has not been initialized\");\n return;\n }\n\n positionScrollbars(element, width, height);\n });\n\n if (sizeChanged && done) {\n batchProcessor.add(2, function () {\n if (!getState(element)) {\n debug(\"Aborting because element has been uninstalled\");\n return;\n }\n\n if (!areElementsInjected()) {\n debug(\"Aborting because element container has not been initialized\");\n return;\n }\n\n done();\n });\n }\n }\n\n function areElementsInjected() {\n return !!getState(element).container;\n }\n\n function notifyListenersIfNeeded() {\n function isFirstNotify() {\n return getState(element).lastNotifiedWidth === undefined;\n }\n\n debug(\"notifyListenersIfNeeded invoked\");\n\n var state = getState(element);\n\n // Don't notify if the current size is the start size, and this is the first notification.\n if (isFirstNotify() && state.lastWidth === state.startSize.width && state.lastHeight === state.startSize.height) {\n return debug(\"Not notifying: Size is the same as the start size, and there has been no notification yet.\");\n }\n\n // Don't notify if the size already has been notified.\n if (state.lastWidth === state.lastNotifiedWidth && state.lastHeight === state.lastNotifiedHeight) {\n return debug(\"Not notifying: Size already notified\");\n }\n\n\n debug(\"Current size not notified, notifying...\");\n state.lastNotifiedWidth = state.lastWidth;\n state.lastNotifiedHeight = state.lastHeight;\n forEach(getState(element).listeners, function (listener) {\n listener(element);\n });\n }\n\n function handleRender() {\n debug(\"startanimation triggered.\");\n\n if (isUnrendered(element)) {\n debug(\"Ignoring since element is still unrendered...\");\n return;\n }\n\n debug(\"Element rendered.\");\n var expand = getExpandElement(element);\n var shrink = getShrinkElement(element);\n if (expand.scrollLeft === 0 || expand.scrollTop === 0 || shrink.scrollLeft === 0 || shrink.scrollTop === 0) {\n debug(\"Scrollbars out of sync. Updating detector elements...\");\n updateDetectorElements(notifyListenersIfNeeded);\n }\n }\n\n function handleScroll() {\n debug(\"Scroll detected.\");\n\n if (isUnrendered(element)) {\n // Element is still unrendered. Skip this scroll event.\n debug(\"Scroll event fired while unrendered. Ignoring...\");\n return;\n }\n\n updateDetectorElements(notifyListenersIfNeeded);\n }\n\n debug(\"registerListenersAndPositionElements invoked.\");\n\n if (!getState(element)) {\n debug(\"Aborting because element has been uninstalled\");\n return;\n }\n\n getState(element).onRendered = handleRender;\n getState(element).onExpand = handleScroll;\n getState(element).onShrink = handleScroll;\n\n var style = getState(element).style;\n updateChildSizes(element, style.width, style.height);\n }\n\n function finalizeDomMutation() {\n debug(\"finalizeDomMutation invoked.\");\n\n if (!getState(element)) {\n debug(\"Aborting because element has been uninstalled\");\n return;\n }\n\n var style = getState(element).style;\n storeCurrentSize(element, style.width, style.height);\n positionScrollbars(element, style.width, style.height);\n }\n\n function ready() {\n callback(element);\n }\n\n function install() {\n debug(\"Installing...\");\n initListeners();\n storeStartSize();\n\n batchProcessor.add(0, storeStyle);\n batchProcessor.add(1, injectScrollElements);\n batchProcessor.add(2, registerListenersAndPositionElements);\n batchProcessor.add(3, finalizeDomMutation);\n batchProcessor.add(4, ready);\n }\n\n debug(\"Making detectable...\");\n\n if (isDetached(element)) {\n debug(\"Element is detached\");\n\n injectContainerElement();\n\n debug(\"Waiting until element is attached...\");\n\n getState(element).onRendered = function () {\n debug(\"Element is now attached\");\n install();\n };\n } else {\n install();\n }\n }\n\n function uninstall(element) {\n var state = getState(element);\n\n if (!state) {\n // Uninstall has been called on a non-erd element.\n return;\n }\n\n // Uninstall may have been called in the following scenarios:\n // (1) Right between the sync code and async batch (here state.busy = true, but nothing have been registered or injected).\n // (2) In the ready callback of the last level of the batch by another element (here, state.busy = true, but all the stuff has been injected).\n // (3) After the installation process (here, state.busy = false and all the stuff has been injected).\n // So to be on the safe side, let's check for each thing before removing.\n\n // We need to remove the event listeners, because otherwise the event might fire on an uninstall element which results in an error when trying to get the state of the element.\n state.onExpandScroll && removeEvent(getExpandElement(element), \"scroll\", state.onExpandScroll);\n state.onShrinkScroll && removeEvent(getShrinkElement(element), \"scroll\", state.onShrinkScroll);\n state.onAnimationStart && removeEvent(state.container, \"animationstart\", state.onAnimationStart);\n\n state.container && element.removeChild(state.container);\n }\n\n return {\n makeDetectable: makeDetectable,\n addListener: addListener,\n uninstall: uninstall,\n initDocument: initDocument\n };\n};\n","\"use strict\";\n\nvar forEach = require(\"./collection-utils\").forEach;\nvar elementUtilsMaker = require(\"./element-utils\");\nvar listenerHandlerMaker = require(\"./listener-handler\");\nvar idGeneratorMaker = require(\"./id-generator\");\nvar idHandlerMaker = require(\"./id-handler\");\nvar reporterMaker = require(\"./reporter\");\nvar browserDetector = require(\"./browser-detector\");\nvar batchProcessorMaker = require(\"batch-processor\");\nvar stateHandler = require(\"./state-handler\");\n\n//Detection strategies.\nvar objectStrategyMaker = require(\"./detection-strategy/object.js\");\nvar scrollStrategyMaker = require(\"./detection-strategy/scroll.js\");\n\nfunction isCollection(obj) {\n return Array.isArray(obj) || obj.length !== undefined;\n}\n\nfunction toArray(collection) {\n if (!Array.isArray(collection)) {\n var array = [];\n forEach(collection, function (obj) {\n array.push(obj);\n });\n return array;\n } else {\n return collection;\n }\n}\n\nfunction isElement(obj) {\n return obj && obj.nodeType === 1;\n}\n\n/**\n * @typedef idHandler\n * @type {object}\n * @property {function} get Gets the resize detector id of the element.\n * @property {function} set Generate and sets the resize detector id of the element.\n */\n\n/**\n * @typedef Options\n * @type {object}\n * @property {boolean} callOnAdd Determines if listeners should be called when they are getting added.\n Default is true. If true, the listener is guaranteed to be called when it has been added.\n If false, the listener will not be guarenteed to be called when it has been added (does not prevent it from being called).\n * @property {idHandler} idHandler A custom id handler that is responsible for generating, setting and retrieving id's for elements.\n If not provided, a default id handler will be used.\n * @property {reporter} reporter A custom reporter that handles reporting logs, warnings and errors.\n If not provided, a default id handler will be used.\n If set to false, then nothing will be reported.\n * @property {boolean} debug If set to true, the the system will report debug messages as default for the listenTo method.\n */\n\n/**\n * Creates an element resize detector instance.\n * @public\n * @param {Options?} options Optional global options object that will decide how this instance will work.\n */\nmodule.exports = function(options) {\n options = options || {};\n\n //idHandler is currently not an option to the listenTo function, so it should not be added to globalOptions.\n var idHandler;\n\n if (options.idHandler) {\n // To maintain compatability with idHandler.get(element, readonly), make sure to wrap the given idHandler\n // so that readonly flag always is true when it's used here. This may be removed next major version bump.\n idHandler = {\n get: function (element) { return options.idHandler.get(element, true); },\n set: options.idHandler.set\n };\n } else {\n var idGenerator = idGeneratorMaker();\n var defaultIdHandler = idHandlerMaker({\n idGenerator: idGenerator,\n stateHandler: stateHandler\n });\n idHandler = defaultIdHandler;\n }\n\n //reporter is currently not an option to the listenTo function, so it should not be added to globalOptions.\n var reporter = options.reporter;\n\n if(!reporter) {\n //If options.reporter is false, then the reporter should be quiet.\n var quiet = reporter === false;\n reporter = reporterMaker(quiet);\n }\n\n //batchProcessor is currently not an option to the listenTo function, so it should not be added to globalOptions.\n var batchProcessor = getOption(options, \"batchProcessor\", batchProcessorMaker({ reporter: reporter }));\n\n //Options to be used as default for the listenTo function.\n var globalOptions = {};\n globalOptions.callOnAdd = !!getOption(options, \"callOnAdd\", true);\n globalOptions.debug = !!getOption(options, \"debug\", false);\n\n var eventListenerHandler = listenerHandlerMaker(idHandler);\n var elementUtils = elementUtilsMaker({\n stateHandler: stateHandler\n });\n\n //The detection strategy to be used.\n var detectionStrategy;\n var desiredStrategy = getOption(options, \"strategy\", \"object\");\n var importantCssRules = getOption(options, \"important\", false);\n var strategyOptions = {\n reporter: reporter,\n batchProcessor: batchProcessor,\n stateHandler: stateHandler,\n idHandler: idHandler,\n important: importantCssRules\n };\n\n if(desiredStrategy === \"scroll\") {\n if (browserDetector.isLegacyOpera()) {\n reporter.warn(\"Scroll strategy is not supported on legacy Opera. Changing to object strategy.\");\n desiredStrategy = \"object\";\n } else if (browserDetector.isIE(9)) {\n reporter.warn(\"Scroll strategy is not supported on IE9. Changing to object strategy.\");\n desiredStrategy = \"object\";\n }\n }\n\n if(desiredStrategy === \"scroll\") {\n detectionStrategy = scrollStrategyMaker(strategyOptions);\n } else if(desiredStrategy === \"object\") {\n detectionStrategy = objectStrategyMaker(strategyOptions);\n } else {\n throw new Error(\"Invalid strategy name: \" + desiredStrategy);\n }\n\n //Calls can be made to listenTo with elements that are still being installed.\n //Also, same elements can occur in the elements list in the listenTo function.\n //With this map, the ready callbacks can be synchronized between the calls\n //so that the ready callback can always be called when an element is ready - even if\n //it wasn't installed from the function itself.\n var onReadyCallbacks = {};\n\n /**\n * Makes the given elements resize-detectable and starts listening to resize events on the elements. Calls the event callback for each event for each element.\n * @public\n * @param {Options?} options Optional options object. These options will override the global options. Some options may not be overriden, such as idHandler.\n * @param {element[]|element} elements The given array of elements to detect resize events of. Single element is also valid.\n * @param {function} listener The callback to be executed for each resize event for each element.\n */\n function listenTo(options, elements, listener) {\n function onResizeCallback(element) {\n var listeners = eventListenerHandler.get(element);\n forEach(listeners, function callListenerProxy(listener) {\n listener(element);\n });\n }\n\n function addListener(callOnAdd, element, listener) {\n eventListenerHandler.add(element, listener);\n\n if(callOnAdd) {\n listener(element);\n }\n }\n\n //Options object may be omitted.\n if(!listener) {\n listener = elements;\n elements = options;\n options = {};\n }\n\n if(!elements) {\n throw new Error(\"At least one element required.\");\n }\n\n if(!listener) {\n throw new Error(\"Listener required.\");\n }\n\n if (isElement(elements)) {\n // A single element has been passed in.\n elements = [elements];\n } else if (isCollection(elements)) {\n // Convert collection to array for plugins.\n // TODO: May want to check so that all the elements in the collection are valid elements.\n elements = toArray(elements);\n } else {\n return reporter.error(\"Invalid arguments. Must be a DOM element or a collection of DOM elements.\");\n }\n\n var elementsReady = 0;\n\n var callOnAdd = getOption(options, \"callOnAdd\", globalOptions.callOnAdd);\n var onReadyCallback = getOption(options, \"onReady\", function noop() {});\n var debug = getOption(options, \"debug\", globalOptions.debug);\n\n forEach(elements, function attachListenerToElement(element) {\n if (!stateHandler.getState(element)) {\n stateHandler.initState(element);\n idHandler.set(element);\n }\n\n var id = idHandler.get(element);\n\n debug && reporter.log(\"Attaching listener to element\", id, element);\n\n if(!elementUtils.isDetectable(element)) {\n debug && reporter.log(id, \"Not detectable.\");\n if(elementUtils.isBusy(element)) {\n debug && reporter.log(id, \"System busy making it detectable\");\n\n //The element is being prepared to be detectable. Do not make it detectable.\n //Just add the listener, because the element will soon be detectable.\n addListener(callOnAdd, element, listener);\n onReadyCallbacks[id] = onReadyCallbacks[id] || [];\n onReadyCallbacks[id].push(function onReady() {\n elementsReady++;\n\n if(elementsReady === elements.length) {\n onReadyCallback();\n }\n });\n return;\n }\n\n debug && reporter.log(id, \"Making detectable...\");\n //The element is not prepared to be detectable, so do prepare it and add a listener to it.\n elementUtils.markBusy(element, true);\n return detectionStrategy.makeDetectable({ debug: debug, important: importantCssRules }, element, function onElementDetectable(element) {\n debug && reporter.log(id, \"onElementDetectable\");\n\n if (stateHandler.getState(element)) {\n elementUtils.markAsDetectable(element);\n elementUtils.markBusy(element, false);\n detectionStrategy.addListener(element, onResizeCallback);\n addListener(callOnAdd, element, listener);\n\n // Since the element size might have changed since the call to \"listenTo\", we need to check for this change,\n // so that a resize event may be emitted.\n // Having the startSize object is optional (since it does not make sense in some cases such as unrendered elements), so check for its existance before.\n // Also, check the state existance before since the element may have been uninstalled in the installation process.\n var state = stateHandler.getState(element);\n if (state && state.startSize) {\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n if (state.startSize.width !== width || state.startSize.height !== height) {\n onResizeCallback(element);\n }\n }\n\n if(onReadyCallbacks[id]) {\n forEach(onReadyCallbacks[id], function(callback) {\n callback();\n });\n }\n } else {\n // The element has been unisntalled before being detectable.\n debug && reporter.log(id, \"Element uninstalled before being detectable.\");\n }\n\n delete onReadyCallbacks[id];\n\n elementsReady++;\n if(elementsReady === elements.length) {\n onReadyCallback();\n }\n });\n }\n\n debug && reporter.log(id, \"Already detecable, adding listener.\");\n\n //The element has been prepared to be detectable and is ready to be listened to.\n addListener(callOnAdd, element, listener);\n elementsReady++;\n });\n\n if(elementsReady === elements.length) {\n onReadyCallback();\n }\n }\n\n function uninstall(elements) {\n if(!elements) {\n return reporter.error(\"At least one element is required.\");\n }\n\n if (isElement(elements)) {\n // A single element has been passed in.\n elements = [elements];\n } else if (isCollection(elements)) {\n // Convert collection to array for plugins.\n // TODO: May want to check so that all the elements in the collection are valid elements.\n elements = toArray(elements);\n } else {\n return reporter.error(\"Invalid arguments. Must be a DOM element or a collection of DOM elements.\");\n }\n\n forEach(elements, function (element) {\n eventListenerHandler.removeAllListeners(element);\n detectionStrategy.uninstall(element);\n stateHandler.cleanState(element);\n });\n }\n\n function initDocument(targetDocument) {\n detectionStrategy.initDocument && detectionStrategy.initDocument(targetDocument);\n }\n\n return {\n listenTo: listenTo,\n removeListener: eventListenerHandler.removeListener,\n removeAllListeners: eventListenerHandler.removeAllListeners,\n uninstall: uninstall,\n initDocument: initDocument\n };\n};\n\nfunction getOption(options, name, defaultValue) {\n var value = options[name];\n\n if((value === undefined || value === null) && defaultValue !== undefined) {\n return defaultValue;\n }\n\n return value;\n}\n","\"use strict\";\n\nmodule.exports = function(options) {\n var getState = options.stateHandler.getState;\n\n /**\n * Tells if the element has been made detectable and ready to be listened for resize events.\n * @public\n * @param {element} The element to check.\n * @returns {boolean} True or false depending on if the element is detectable or not.\n */\n function isDetectable(element) {\n var state = getState(element);\n return state && !!state.isDetectable;\n }\n\n /**\n * Marks the element that it has been made detectable and ready to be listened for resize events.\n * @public\n * @param {element} The element to mark.\n */\n function markAsDetectable(element) {\n getState(element).isDetectable = true;\n }\n\n /**\n * Tells if the element is busy or not.\n * @public\n * @param {element} The element to check.\n * @returns {boolean} True or false depending on if the element is busy or not.\n */\n function isBusy(element) {\n return !!getState(element).busy;\n }\n\n /**\n * Marks the object is busy and should not be made detectable.\n * @public\n * @param {element} element The element to mark.\n * @param {boolean} busy If the element is busy or not.\n */\n function markBusy(element, busy) {\n getState(element).busy = !!busy;\n }\n\n return {\n isDetectable: isDetectable,\n markAsDetectable: markAsDetectable,\n isBusy: isBusy,\n markBusy: markBusy\n };\n};\n","\"use strict\";\n\nmodule.exports = function() {\n var idCount = 1;\n\n /**\n * Generates a new unique id in the context.\n * @public\n * @returns {number} A unique id in the context.\n */\n function generate() {\n return idCount++;\n }\n\n return {\n generate: generate\n };\n};\n","\"use strict\";\n\nmodule.exports = function(options) {\n var idGenerator = options.idGenerator;\n var getState = options.stateHandler.getState;\n\n /**\n * Gets the resize detector id of the element.\n * @public\n * @param {element} element The target element to get the id of.\n * @returns {string|number|null} The id of the element. Null if it has no id.\n */\n function getId(element) {\n var state = getState(element);\n\n if (state && state.id !== undefined) {\n return state.id;\n }\n\n return null;\n }\n\n /**\n * Sets the resize detector id of the element. Requires the element to have a resize detector state initialized.\n * @public\n * @param {element} element The target element to set the id of.\n * @returns {string|number|null} The id of the element.\n */\n function setId(element) {\n var state = getState(element);\n\n if (!state) {\n throw new Error(\"setId required the element to have a resize detection state.\");\n }\n\n var id = idGenerator.generate();\n\n state.id = id;\n\n return id;\n }\n\n return {\n get: getId,\n set: setId\n };\n};\n","\"use strict\";\n\nmodule.exports = function(idHandler) {\n var eventListeners = {};\n\n /**\n * Gets all listeners for the given element.\n * @public\n * @param {element} element The element to get all listeners for.\n * @returns All listeners for the given element.\n */\n function getListeners(element) {\n var id = idHandler.get(element);\n\n if (id === undefined) {\n return [];\n }\n\n return eventListeners[id] || [];\n }\n\n /**\n * Stores the given listener for the given element. Will not actually add the listener to the element.\n * @public\n * @param {element} element The element that should have the listener added.\n * @param {function} listener The callback that the element has added.\n */\n function addListener(element, listener) {\n var id = idHandler.get(element);\n\n if(!eventListeners[id]) {\n eventListeners[id] = [];\n }\n\n eventListeners[id].push(listener);\n }\n\n function removeListener(element, listener) {\n var listeners = getListeners(element);\n for (var i = 0, len = listeners.length; i < len; ++i) {\n if (listeners[i] === listener) {\n listeners.splice(i, 1);\n break;\n }\n }\n }\n\n function removeAllListeners(element) {\n var listeners = getListeners(element);\n if (!listeners) { return; }\n listeners.length = 0;\n }\n\n return {\n get: getListeners,\n add: addListener,\n removeListener: removeListener,\n removeAllListeners: removeAllListeners\n };\n};\n","\"use strict\";\n\n/* global console: false */\n\n/**\n * Reporter that handles the reporting of logs, warnings and errors.\n * @public\n * @param {boolean} quiet Tells if the reporter should be quiet or not.\n */\nmodule.exports = function(quiet) {\n function noop() {\n //Does nothing.\n }\n\n var reporter = {\n log: noop,\n warn: noop,\n error: noop\n };\n\n if(!quiet && window.console) {\n var attachFunction = function(reporter, name) {\n //The proxy is needed to be able to call the method with the console context,\n //since we cannot use bind.\n reporter[name] = function reporterProxy() {\n var f = console[name];\n if (f.apply) { //IE9 does not support console.log.apply :)\n f.apply(console, arguments);\n } else {\n for (var i = 0; i < arguments.length; i++) {\n f(arguments[i]);\n }\n }\n };\n };\n\n attachFunction(reporter, \"log\");\n attachFunction(reporter, \"warn\");\n attachFunction(reporter, \"error\");\n }\n\n return reporter;\n};","\"use strict\";\n\nvar prop = \"_erd\";\n\nfunction initState(element) {\n element[prop] = {};\n return getState(element);\n}\n\nfunction getState(element) {\n return element[prop];\n}\n\nfunction cleanState(element) {\n delete element[prop];\n}\n\nmodule.exports = {\n initState: initState,\n getState: getState,\n cleanState: cleanState\n};\n","!function(t,i){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=i():\"function\"==typeof define&&define.amd?define(\"nipplejs\",[],i):\"object\"==typeof exports?exports.nipplejs=i():t.nipplejs=i()}(window,function(){return function(t){var i={};function e(o){if(i[o])return i[o].exports;var n=i[o]={i:o,l:!1,exports:{}};return t[o].call(n.exports,n,n.exports,e),n.l=!0,n.exports}return e.m=t,e.c=i,e.d=function(t,i,o){e.o(t,i)||Object.defineProperty(t,i,{enumerable:!0,get:o})},e.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},e.t=function(t,i){if(1&i&&(t=e(t)),8&i)return t;if(4&i&&\"object\"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(e.r(o),Object.defineProperty(o,\"default\",{enumerable:!0,value:t}),2&i&&\"string\"!=typeof t)for(var n in t)e.d(o,n,function(i){return t[i]}.bind(null,n));return o},e.n=function(t){var i=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(i,\"a\",i),i},e.o=function(t,i){return Object.prototype.hasOwnProperty.call(t,i)},e.p=\"\",e(e.s=0)}([function(t,i,e){\"use strict\";e.r(i);var o,n=function(t,i){var e=i.x-t.x,o=i.y-t.y;return Math.sqrt(e*e+o*o)},s=function(t){return t*(Math.PI/180)},r=function(t){return t*(180/Math.PI)},d=new Map,a=function(t){d.has(t)&&clearTimeout(d.get(t)),d.set(t,setTimeout(t,100))},p=function(t,i,e){for(var o,n=i.split(/[ ,]+/g),s=0;s<n.length;s+=1)o=n[s],t.addEventListener?t.addEventListener(o,e,!1):t.attachEvent&&t.attachEvent(o,e)},c=function(t,i,e){for(var o,n=i.split(/[ ,]+/g),s=0;s<n.length;s+=1)o=n[s],t.removeEventListener?t.removeEventListener(o,e):t.detachEvent&&t.detachEvent(o,e)},l=function(t){return t.preventDefault(),t.type.match(/^touch/)?t.changedTouches:t},h=function(){return{x:void 0!==window.pageXOffset?window.pageXOffset:(document.documentElement||document.body.parentNode||document.body).scrollLeft,y:void 0!==window.pageYOffset?window.pageYOffset:(document.documentElement||document.body.parentNode||document.body).scrollTop}},u=function(t,i){i.top||i.right||i.bottom||i.left?(t.style.top=i.top,t.style.right=i.right,t.style.bottom=i.bottom,t.style.left=i.left):(t.style.left=i.x+\"px\",t.style.top=i.y+\"px\")},f=function(t,i,e){var o=y(t);for(var n in o)if(o.hasOwnProperty(n))if(\"string\"==typeof i)o[n]=i+\" \"+e;else{for(var s=\"\",r=0,d=i.length;r<d;r+=1)s+=i[r]+\" \"+e+\", \";o[n]=s.slice(0,-2)}return o},y=function(t){var i={};i[t]=\"\";return[\"webkit\",\"Moz\",\"o\"].forEach(function(e){i[e+t.charAt(0).toUpperCase()+t.slice(1)]=\"\"}),i},m=function(t,i){for(var e in i)i.hasOwnProperty(e)&&(t[e]=i[e]);return t},v=function(t,i){if(t.length)for(var e=0,o=t.length;e<o;e+=1)i(t[e]);else i(t)},g=!!(\"ontouchstart\"in window),b=!!window.PointerEvent,x=!!window.MSPointerEvent,O={start:\"mousedown\",move:\"mousemove\",end:\"mouseup\"},w={};function _(){}b?o={start:\"pointerdown\",move:\"pointermove\",end:\"pointerup, pointercancel\"}:x?o={start:\"MSPointerDown\",move:\"MSPointerMove\",end:\"MSPointerUp\"}:g?(o={start:\"touchstart\",move:\"touchmove\",end:\"touchend, touchcancel\"},w=O):o=O,_.prototype.on=function(t,i){var e,o=t.split(/[ ,]+/g);this._handlers_=this._handlers_||{};for(var n=0;n<o.length;n+=1)e=o[n],this._handlers_[e]=this._handlers_[e]||[],this._handlers_[e].push(i);return this},_.prototype.off=function(t,i){return this._handlers_=this._handlers_||{},void 0===t?this._handlers_={}:void 0===i?this._handlers_[t]=null:this._handlers_[t]&&this._handlers_[t].indexOf(i)>=0&&this._handlers_[t].splice(this._handlers_[t].indexOf(i),1),this},_.prototype.trigger=function(t,i){var e,o=this,n=t.split(/[ ,]+/g);o._handlers_=o._handlers_||{};for(var s=0;s<n.length;s+=1)e=n[s],o._handlers_[e]&&o._handlers_[e].length&&o._handlers_[e].forEach(function(t){t.call(o,{type:e,target:o},i)})},_.prototype.config=function(t){this.options=this.defaults||{},t&&(this.options=function(t,i){var e={};for(var o in t)t.hasOwnProperty(o)&&i.hasOwnProperty(o)?e[o]=i[o]:t.hasOwnProperty(o)&&(e[o]=t[o]);return e}(this.options,t))},_.prototype.bindEvt=function(t,i){var e=this;return e._domHandlers_=e._domHandlers_||{},e._domHandlers_[i]=function(){\"function\"==typeof e[\"on\"+i]?e[\"on\"+i].apply(e,arguments):console.warn('[WARNING] : Missing \"on'+i+'\" handler.')},p(t,o[i],e._domHandlers_[i]),w[i]&&p(t,w[i],e._domHandlers_[i]),e},_.prototype.unbindEvt=function(t,i){return this._domHandlers_=this._domHandlers_||{},c(t,o[i],this._domHandlers_[i]),w[i]&&c(t,w[i],this._domHandlers_[i]),delete this._domHandlers_[i],this};var T=_;function k(t,i){return this.identifier=i.identifier,this.position=i.position,this.frontPosition=i.frontPosition,this.collection=t,this.defaults={size:100,threshold:.1,color:\"white\",fadeTime:250,dataOnly:!1,restJoystick:!0,restOpacity:.5,mode:\"dynamic\",zone:document.body,lockX:!1,lockY:!1,shape:\"circle\"},this.config(i),\"dynamic\"===this.options.mode&&(this.options.restOpacity=0),this.id=k.id,k.id+=1,this.buildEl().stylize(),this.instance={el:this.ui.el,on:this.on.bind(this),off:this.off.bind(this),show:this.show.bind(this),hide:this.hide.bind(this),add:this.addToDom.bind(this),remove:this.removeFromDom.bind(this),destroy:this.destroy.bind(this),setPosition:this.setPosition.bind(this),resetDirection:this.resetDirection.bind(this),computeDirection:this.computeDirection.bind(this),trigger:this.trigger.bind(this),position:this.position,frontPosition:this.frontPosition,ui:this.ui,identifier:this.identifier,id:this.id,options:this.options},this.instance}k.prototype=new T,k.constructor=k,k.id=0,k.prototype.buildEl=function(t){return this.ui={},this.options.dataOnly?this:(this.ui.el=document.createElement(\"div\"),this.ui.back=document.createElement(\"div\"),this.ui.front=document.createElement(\"div\"),this.ui.el.className=\"nipple collection_\"+this.collection.id,this.ui.back.className=\"back\",this.ui.front.className=\"front\",this.ui.el.setAttribute(\"id\",\"nipple_\"+this.collection.id+\"_\"+this.id),this.ui.el.appendChild(this.ui.back),this.ui.el.appendChild(this.ui.front),this)},k.prototype.stylize=function(){if(this.options.dataOnly)return this;var t=this.options.fadeTime+\"ms\",i=function(t,i){var e=y(t);for(var o in e)e.hasOwnProperty(o)&&(e[o]=i);return e}(\"borderRadius\",\"50%\"),e=f(\"transition\",\"opacity\",t),o={};return o.el={position:\"absolute\",opacity:this.options.restOpacity,display:\"block\",zIndex:999},o.back={position:\"absolute\",display:\"block\",width:this.options.size+\"px\",height:this.options.size+\"px\",marginLeft:-this.options.size/2+\"px\",marginTop:-this.options.size/2+\"px\",background:this.options.color,opacity:\".5\"},o.front={width:this.options.size/2+\"px\",height:this.options.size/2+\"px\",position:\"absolute\",display:\"block\",marginLeft:-this.options.size/4+\"px\",marginTop:-this.options.size/4+\"px\",background:this.options.color,opacity:\".5\"},m(o.el,e),\"circle\"===this.options.shape&&m(o.back,i),m(o.front,i),this.applyStyles(o),this},k.prototype.applyStyles=function(t){for(var i in this.ui)if(this.ui.hasOwnProperty(i))for(var e in t[i])this.ui[i].style[e]=t[i][e];return this},k.prototype.addToDom=function(){return this.options.dataOnly||document.body.contains(this.ui.el)?this:(this.options.zone.appendChild(this.ui.el),this)},k.prototype.removeFromDom=function(){return this.options.dataOnly||!document.body.contains(this.ui.el)?this:(this.options.zone.removeChild(this.ui.el),this)},k.prototype.destroy=function(){clearTimeout(this.removeTimeout),clearTimeout(this.showTimeout),clearTimeout(this.restTimeout),this.trigger(\"destroyed\",this.instance),this.removeFromDom(),this.off()},k.prototype.show=function(t){var i=this;return i.options.dataOnly?i:(clearTimeout(i.removeTimeout),clearTimeout(i.showTimeout),clearTimeout(i.restTimeout),i.addToDom(),i.restCallback(),setTimeout(function(){i.ui.el.style.opacity=1},0),i.showTimeout=setTimeout(function(){i.trigger(\"shown\",i.instance),\"function\"==typeof t&&t.call(this)},i.options.fadeTime),i)},k.prototype.hide=function(t){var i=this;if(i.options.dataOnly)return i;if(i.ui.el.style.opacity=i.options.restOpacity,clearTimeout(i.removeTimeout),clearTimeout(i.showTimeout),clearTimeout(i.restTimeout),i.removeTimeout=setTimeout(function(){var e=\"dynamic\"===i.options.mode?\"none\":\"block\";i.ui.el.style.display=e,\"function\"==typeof t&&t.call(i),i.trigger(\"hidden\",i.instance)},i.options.fadeTime),i.options.restJoystick){var e=i.options.restJoystick,o={};o.x=!0===e||!1!==e.x?0:i.instance.frontPosition.x,o.y=!0===e||!1!==e.y?0:i.instance.frontPosition.y,i.setPosition(t,o)}return i},k.prototype.setPosition=function(t,i){var e=this;e.frontPosition={x:i.x,y:i.y};var o=e.options.fadeTime+\"ms\",n={};n.front=f(\"transition\",[\"top\",\"left\"],o);var s={front:{}};s.front={left:e.frontPosition.x+\"px\",top:e.frontPosition.y+\"px\"},e.applyStyles(n),e.applyStyles(s),e.restTimeout=setTimeout(function(){\"function\"==typeof t&&t.call(e),e.restCallback()},e.options.fadeTime)},k.prototype.restCallback=function(){var t={};t.front=f(\"transition\",\"none\",\"\"),this.applyStyles(t),this.trigger(\"rested\",this.instance)},k.prototype.resetDirection=function(){this.direction={x:!1,y:!1,angle:!1}},k.prototype.computeDirection=function(t){var i,e,o,n=t.angle.radian,s=Math.PI/4,r=Math.PI/2;if(n>s&&n<3*s&&!t.lockX?i=\"up\":n>-s&&n<=s&&!t.lockY?i=\"left\":n>3*-s&&n<=-s&&!t.lockX?i=\"down\":t.lockY||(i=\"right\"),t.lockY||(e=n>-r&&n<r?\"left\":\"right\"),t.lockX||(o=n>0?\"up\":\"down\"),t.force>this.options.threshold){var d,a={};for(d in this.direction)this.direction.hasOwnProperty(d)&&(a[d]=this.direction[d]);var p={};for(d in this.direction={x:e,y:o,angle:i},t.direction=this.direction,a)a[d]===this.direction[d]&&(p[d]=!0);if(p.x&&p.y&&p.angle)return t;p.x&&p.y||this.trigger(\"plain\",t),p.x||this.trigger(\"plain:\"+e,t),p.y||this.trigger(\"plain:\"+o,t),p.angle||this.trigger(\"dir dir:\"+i,t)}else this.resetDirection();return t};var P=k;function E(t,i){this.nipples=[],this.idles=[],this.actives=[],this.ids=[],this.pressureIntervals={},this.manager=t,this.id=E.id,E.id+=1,this.defaults={zone:document.body,multitouch:!1,maxNumberOfNipples:10,mode:\"dynamic\",position:{top:0,left:0},catchDistance:200,size:100,threshold:.1,color:\"white\",fadeTime:250,dataOnly:!1,restJoystick:!0,restOpacity:.5,lockX:!1,lockY:!1,shape:\"circle\",dynamicPage:!1,follow:!1},this.config(i),\"static\"!==this.options.mode&&\"semi\"!==this.options.mode||(this.options.multitouch=!1),this.options.multitouch||(this.options.maxNumberOfNipples=1);var e=getComputedStyle(this.options.zone.parentElement);return e&&\"flex\"===e.display&&(this.parentIsFlex=!0),this.updateBox(),this.prepareNipples(),this.bindings(),this.begin(),this.nipples}E.prototype=new T,E.constructor=E,E.id=0,E.prototype.prepareNipples=function(){var t=this.nipples;t.on=this.on.bind(this),t.off=this.off.bind(this),t.options=this.options,t.destroy=this.destroy.bind(this),t.ids=this.ids,t.id=this.id,t.processOnMove=this.processOnMove.bind(this),t.processOnEnd=this.processOnEnd.bind(this),t.get=function(i){if(void 0===i)return t[0];for(var e=0,o=t.length;e<o;e+=1)if(t[e].identifier===i)return t[e];return!1}},E.prototype.bindings=function(){this.bindEvt(this.options.zone,\"start\"),this.options.zone.style.touchAction=\"none\",this.options.zone.style.msTouchAction=\"none\"},E.prototype.begin=function(){var t=this.options;if(\"static\"===t.mode){var i=this.createNipple(t.position,this.manager.getIdentifier());i.add(),this.idles.push(i)}},E.prototype.createNipple=function(t,i){var e=this.manager.scroll,o={},n=this.options,s=this.parentIsFlex?e.x:e.x+this.box.left,r=this.parentIsFlex?e.y:e.y+this.box.top;if(t.x&&t.y)o={x:t.x-s,y:t.y-r};else if(t.top||t.right||t.bottom||t.left){var d=document.createElement(\"DIV\");d.style.display=\"hidden\",d.style.top=t.top,d.style.right=t.right,d.style.bottom=t.bottom,d.style.left=t.left,d.style.position=\"absolute\",n.zone.appendChild(d);var a=d.getBoundingClientRect();n.zone.removeChild(d),o=t,t={x:a.left+e.x,y:a.top+e.y}}var p=new P(this,{color:n.color,size:n.size,threshold:n.threshold,fadeTime:n.fadeTime,dataOnly:n.dataOnly,restJoystick:n.restJoystick,restOpacity:n.restOpacity,mode:n.mode,identifier:i,position:t,zone:n.zone,frontPosition:{x:0,y:0},shape:n.shape});return n.dataOnly||(u(p.ui.el,o),u(p.ui.front,p.frontPosition)),this.nipples.push(p),this.trigger(\"added \"+p.identifier+\":added\",p),this.manager.trigger(\"added \"+p.identifier+\":added\",p),this.bindNipple(p),p},E.prototype.updateBox=function(){this.box=this.options.zone.getBoundingClientRect()},E.prototype.bindNipple=function(t){var i,e=this,o=function(t,o){i=t.type+\" \"+o.id+\":\"+t.type,e.trigger(i,o)};t.on(\"destroyed\",e.onDestroyed.bind(e)),t.on(\"shown hidden rested dir plain\",o),t.on(\"dir:up dir:right dir:down dir:left\",o),t.on(\"plain:up plain:right plain:down plain:left\",o)},E.prototype.pressureFn=function(t,i,e){var o=this,n=0;clearInterval(o.pressureIntervals[e]),o.pressureIntervals[e]=setInterval(function(){var e=t.force||t.pressure||t.webkitForce||0;e!==n&&(i.trigger(\"pressure\",e),o.trigger(\"pressure \"+i.identifier+\":pressure\",e),n=e)}.bind(o),100)},E.prototype.onstart=function(t){var i=this,e=i.options,o=t;t=l(t),i.updateBox();return v(t,function(n){i.actives.length<e.maxNumberOfNipples?i.processOnStart(n):o.type.match(/^touch/)&&(Object.keys(i.manager.ids).forEach(function(e){if(Object.values(o.touches).findIndex(function(t){return t.identifier===e})<0){var n=[t[0]];n.identifier=e,i.processOnEnd(n)}}),i.actives.length<e.maxNumberOfNipples&&i.processOnStart(n))}),i.manager.bindDocument(),!1},E.prototype.processOnStart=function(t){var i,e=this,o=e.options,s=e.manager.getIdentifier(t),r=t.force||t.pressure||t.webkitForce||0,d={x:t.pageX,y:t.pageY},a=e.getOrCreate(s,d);a.identifier!==s&&e.manager.removeIdentifier(a.identifier),a.identifier=s;var p=function(i){i.trigger(\"start\",i),e.trigger(\"start \"+i.id+\":start\",i),i.show(),r>0&&e.pressureFn(t,i,i.identifier),e.processOnMove(t)};if((i=e.idles.indexOf(a))>=0&&e.idles.splice(i,1),e.actives.push(a),e.ids.push(a.identifier),\"semi\"!==o.mode)p(a);else{if(!(n(d,a.position)<=o.catchDistance))return a.destroy(),void e.processOnStart(t);p(a)}return a},E.prototype.getOrCreate=function(t,i){var e,o=this.options;return/(semi|static)/.test(o.mode)?(e=this.idles[0])?(this.idles.splice(0,1),e):\"semi\"===o.mode?this.createNipple(i,t):(console.warn(\"Coudln't find the needed nipple.\"),!1):e=this.createNipple(i,t)},E.prototype.processOnMove=function(t){var i=this.options,e=this.manager.getIdentifier(t),o=this.nipples.get(e),d=this.manager.scroll;if(function(t){return isNaN(t.buttons)?0!==t.pressure:0!==t.buttons}(t)){if(!o)return console.error(\"Found zombie joystick with ID \"+e),void this.manager.removeIdentifier(e);if(i.dynamicPage){var a=o.el.getBoundingClientRect();o.position={x:d.x+a.left,y:d.y+a.top}}o.identifier=e;var p=o.options.size/2,c={x:t.pageX,y:t.pageY};i.lockX&&(c.y=o.position.y),i.lockY&&(c.x=o.position.x);var l,h,f,y,m,v,g,b,x,O,w=n(c,o.position),_=(l=c,h=o.position,f=h.x-l.x,y=h.y-l.y,r(Math.atan2(y,f))),T=s(_),k=w/p,P={distance:w,position:c};if(\"circle\"===o.options.shape?(m=Math.min(w,p),g=o.position,b=m,O={x:0,y:0},x=s(x=_),O.x=g.x-b*Math.cos(x),O.y=g.y-b*Math.sin(x),v=O):(v=function(t,i,e){return{x:Math.min(Math.max(t.x,i.x-e),i.x+e),y:Math.min(Math.max(t.y,i.y-e),i.y+e)}}(c,o.position,p),m=n(v,o.position)),i.follow){if(w>p){var E=c.x-v.x,I=c.y-v.y;o.position.x+=E,o.position.y+=I,o.el.style.top=o.position.y-(this.box.top+d.y)+\"px\",o.el.style.left=o.position.x-(this.box.left+d.x)+\"px\",w=n(c,o.position)}}else c=v,w=m;var z=c.x-o.position.x,D=c.y-o.position.y;o.frontPosition={x:z,y:D},i.dataOnly||u(o.ui.front,o.frontPosition);var M={identifier:o.identifier,position:c,force:k,pressure:t.force||t.pressure||t.webkitForce||0,distance:w,angle:{radian:T,degree:_},vector:{x:z/p,y:-D/p},raw:P,instance:o,lockX:i.lockX,lockY:i.lockY};(M=o.computeDirection(M)).angle={radian:s(180-_),degree:180-_},o.trigger(\"move\",M),this.trigger(\"move \"+o.id+\":move\",M)}else this.processOnEnd(t)},E.prototype.processOnEnd=function(t){var i=this,e=i.options,o=i.manager.getIdentifier(t),n=i.nipples.get(o),s=i.manager.removeIdentifier(n.identifier);n&&(e.dataOnly||n.hide(function(){\"dynamic\"===e.mode&&(n.trigger(\"removed\",n),i.trigger(\"removed \"+n.id+\":removed\",n),i.manager.trigger(\"removed \"+n.id+\":removed\",n),n.destroy())}),clearInterval(i.pressureIntervals[n.identifier]),n.resetDirection(),n.trigger(\"end\",n),i.trigger(\"end \"+n.id+\":end\",n),i.ids.indexOf(n.identifier)>=0&&i.ids.splice(i.ids.indexOf(n.identifier),1),i.actives.indexOf(n)>=0&&i.actives.splice(i.actives.indexOf(n),1),/(semi|static)/.test(e.mode)?i.idles.push(n):i.nipples.indexOf(n)>=0&&i.nipples.splice(i.nipples.indexOf(n),1),i.manager.unbindDocument(),/(semi|static)/.test(e.mode)&&(i.manager.ids[s.id]=s.identifier))},E.prototype.onDestroyed=function(t,i){this.nipples.indexOf(i)>=0&&this.nipples.splice(this.nipples.indexOf(i),1),this.actives.indexOf(i)>=0&&this.actives.splice(this.actives.indexOf(i),1),this.idles.indexOf(i)>=0&&this.idles.splice(this.idles.indexOf(i),1),this.ids.indexOf(i.identifier)>=0&&this.ids.splice(this.ids.indexOf(i.identifier),1),this.manager.removeIdentifier(i.identifier),this.manager.unbindDocument()},E.prototype.destroy=function(){for(var t in this.unbindEvt(this.options.zone,\"start\"),this.nipples.forEach(function(t){t.destroy()}),this.pressureIntervals)this.pressureIntervals.hasOwnProperty(t)&&clearInterval(this.pressureIntervals[t]);this.trigger(\"destroyed\",this.nipples),this.manager.unbindDocument(),this.off()};var I=E;function z(t){var i=this;i.ids={},i.index=0,i.collections=[],i.scroll=h(),i.config(t),i.prepareCollections();var e=function(){var t;i.collections.forEach(function(e){e.forEach(function(e){t=e.el.getBoundingClientRect(),e.position={x:i.scroll.x+t.left,y:i.scroll.y+t.top}})})};p(window,\"resize\",function(){a(e)});var o=function(){i.scroll=h()};return p(window,\"scroll\",function(){a(o)}),i.collections}z.prototype=new T,z.constructor=z,z.prototype.prepareCollections=function(){var t=this;t.collections.create=t.create.bind(t),t.collections.on=t.on.bind(t),t.collections.off=t.off.bind(t),t.collections.destroy=t.destroy.bind(t),t.collections.get=function(i){var e;return t.collections.every(function(t){return!(e=t.get(i))}),e}},z.prototype.create=function(t){return this.createCollection(t)},z.prototype.createCollection=function(t){var i=new I(this,t);return this.bindCollection(i),this.collections.push(i),i},z.prototype.bindCollection=function(t){var i,e=this,o=function(t,o){i=t.type+\" \"+o.id+\":\"+t.type,e.trigger(i,o)};t.on(\"destroyed\",e.onDestroyed.bind(e)),t.on(\"shown hidden rested dir plain\",o),t.on(\"dir:up dir:right dir:down dir:left\",o),t.on(\"plain:up plain:right plain:down plain:left\",o)},z.prototype.bindDocument=function(){this.binded||(this.bindEvt(document,\"move\").bindEvt(document,\"end\"),this.binded=!0)},z.prototype.unbindDocument=function(t){Object.keys(this.ids).length&&!0!==t||(this.unbindEvt(document,\"move\").unbindEvt(document,\"end\"),this.binded=!1)},z.prototype.getIdentifier=function(t){var i;return t?void 0===(i=void 0===t.identifier?t.pointerId:t.identifier)&&(i=this.latest||0):i=this.index,void 0===this.ids[i]&&(this.ids[i]=this.index,this.index+=1),this.latest=i,this.ids[i]},z.prototype.removeIdentifier=function(t){var i={};for(var e in this.ids)if(this.ids[e]===t){i.id=e,i.identifier=this.ids[e],delete this.ids[e];break}return i},z.prototype.onmove=function(t){return this.onAny(\"move\",t),!1},z.prototype.onend=function(t){return this.onAny(\"end\",t),!1},z.prototype.oncancel=function(t){return this.onAny(\"end\",t),!1},z.prototype.onAny=function(t,i){var e,o=this,n=\"processOn\"+t.charAt(0).toUpperCase()+t.slice(1);i=l(i);return v(i,function(t){e=o.getIdentifier(t),v(o.collections,function(t,i,e){e.ids.indexOf(i)>=0&&(e[n](t),t._found_=!0)}.bind(null,t,e)),t._found_||o.removeIdentifier(e)}),!1},z.prototype.destroy=function(){this.unbindDocument(!0),this.ids={},this.index=0,this.collections.forEach(function(t){t.destroy()}),this.off()},z.prototype.onDestroyed=function(t,i){if(this.collections.indexOf(i)<0)return!1;this.collections.splice(this.collections.indexOf(i),1)};var D=new z;i.default={create:function(t){return D.create(t)},factory:D}}]).default});","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\n\nvar NotyfNotification = /** @class */ (function () {\r\n function NotyfNotification(options) {\r\n this.options = options;\r\n this.listeners = {};\r\n }\r\n NotyfNotification.prototype.on = function (eventType, cb) {\r\n var callbacks = this.listeners[eventType] || [];\r\n this.listeners[eventType] = callbacks.concat([cb]);\r\n };\r\n NotyfNotification.prototype.triggerEvent = function (eventType, event) {\r\n var _this = this;\r\n var callbacks = this.listeners[eventType] || [];\r\n callbacks.forEach(function (cb) { return cb({ target: _this, event: event }); });\r\n };\r\n return NotyfNotification;\r\n}());\r\n(function (NotyfArrayEvent) {\r\n NotyfArrayEvent[NotyfArrayEvent[\"Add\"] = 0] = \"Add\";\r\n NotyfArrayEvent[NotyfArrayEvent[\"Remove\"] = 1] = \"Remove\";\r\n})(exports.NotyfArrayEvent || (exports.NotyfArrayEvent = {}));\r\nvar NotyfArray = /** @class */ (function () {\r\n function NotyfArray() {\r\n this.notifications = [];\r\n }\r\n NotyfArray.prototype.push = function (elem) {\r\n this.notifications.push(elem);\r\n this.updateFn(elem, exports.NotyfArrayEvent.Add, this.notifications);\r\n };\r\n NotyfArray.prototype.splice = function (index, num) {\r\n var elem = this.notifications.splice(index, num)[0];\r\n this.updateFn(elem, exports.NotyfArrayEvent.Remove, this.notifications);\r\n return elem;\r\n };\r\n NotyfArray.prototype.indexOf = function (elem) {\r\n return this.notifications.indexOf(elem);\r\n };\r\n NotyfArray.prototype.onUpdate = function (fn) {\r\n this.updateFn = fn;\r\n };\r\n return NotyfArray;\r\n}());\n\n(function (NotyfEvent) {\r\n NotyfEvent[\"Dismiss\"] = \"dismiss\";\r\n NotyfEvent[\"Click\"] = \"click\";\r\n})(exports.NotyfEvent || (exports.NotyfEvent = {}));\r\nvar DEFAULT_OPTIONS = {\r\n types: [\r\n {\r\n type: 'success',\r\n className: 'notyf__toast--success',\r\n backgroundColor: '#3dc763',\r\n icon: {\r\n className: 'notyf__icon--success',\r\n tagName: 'i',\r\n },\r\n },\r\n {\r\n type: 'error',\r\n className: 'notyf__toast--error',\r\n backgroundColor: '#ed3d3d',\r\n icon: {\r\n className: 'notyf__icon--error',\r\n tagName: 'i',\r\n },\r\n },\r\n ],\r\n duration: 2000,\r\n ripple: true,\r\n position: {\r\n x: 'right',\r\n y: 'bottom',\r\n },\r\n dismissible: false,\r\n};\n\nvar NotyfView = /** @class */ (function () {\r\n function NotyfView() {\r\n this.notifications = [];\r\n this.events = {};\r\n this.X_POSITION_FLEX_MAP = {\r\n left: 'flex-start',\r\n center: 'center',\r\n right: 'flex-end',\r\n };\r\n this.Y_POSITION_FLEX_MAP = {\r\n top: 'flex-start',\r\n center: 'center',\r\n bottom: 'flex-end',\r\n };\r\n // Creates the main notifications container\r\n var docFrag = document.createDocumentFragment();\r\n var notyfContainer = this._createHTMLElement({ tagName: 'div', className: 'notyf' });\r\n docFrag.appendChild(notyfContainer);\r\n document.body.appendChild(docFrag);\r\n this.container = notyfContainer;\r\n // Identifies the main animation end event\r\n this.animationEndEventName = this._getAnimationEndEventName();\r\n this._createA11yContainer();\r\n }\r\n NotyfView.prototype.on = function (event, cb) {\r\n var _a;\r\n this.events = __assign(__assign({}, this.events), (_a = {}, _a[event] = cb, _a));\r\n };\r\n NotyfView.prototype.update = function (notification, type) {\r\n if (type === exports.NotyfArrayEvent.Add) {\r\n this.addNotification(notification);\r\n }\r\n else if (type === exports.NotyfArrayEvent.Remove) {\r\n this.removeNotification(notification);\r\n }\r\n };\r\n NotyfView.prototype.removeNotification = function (notification) {\r\n var _this = this;\r\n var renderedNotification = this._popRenderedNotification(notification);\r\n var node;\r\n if (!renderedNotification) {\r\n return;\r\n }\r\n node = renderedNotification.node;\r\n node.classList.add('notyf__toast--disappear');\r\n var handleEvent;\r\n node.addEventListener(this.animationEndEventName, (handleEvent = function (event) {\r\n if (event.target === node) {\r\n node.removeEventListener(_this.animationEndEventName, handleEvent);\r\n _this.container.removeChild(node);\r\n }\r\n }));\r\n };\r\n NotyfView.prototype.addNotification = function (notification) {\r\n var node = this._renderNotification(notification);\r\n this.notifications.push({ notification: notification, node: node });\r\n // For a11y purposes, we still want to announce that there's a notification in the screen\r\n // even if it comes with no message.\r\n this._announce(notification.options.message || 'Notification');\r\n };\r\n NotyfView.prototype._renderNotification = function (notification) {\r\n var _a;\r\n var card = this._buildNotificationCard(notification);\r\n var className = notification.options.className;\r\n if (className) {\r\n (_a = card.classList).add.apply(_a, className.split(' '));\r\n }\r\n this.container.appendChild(card);\r\n return card;\r\n };\r\n NotyfView.prototype._popRenderedNotification = function (notification) {\r\n var idx = -1;\r\n for (var i = 0; i < this.notifications.length && idx < 0; i++) {\r\n if (this.notifications[i].notification === notification) {\r\n idx = i;\r\n }\r\n }\r\n if (idx !== -1) {\r\n return this.notifications.splice(idx, 1)[0];\r\n }\r\n return;\r\n };\r\n NotyfView.prototype.getXPosition = function (options) {\r\n var _a;\r\n return ((_a = options === null || options === void 0 ? void 0 : options.position) === null || _a === void 0 ? void 0 : _a.x) || 'right';\r\n };\r\n NotyfView.prototype.getYPosition = function (options) {\r\n var _a;\r\n return ((_a = options === null || options === void 0 ? void 0 : options.position) === null || _a === void 0 ? void 0 : _a.y) || 'bottom';\r\n };\r\n NotyfView.prototype.adjustContainerAlignment = function (options) {\r\n var align = this.X_POSITION_FLEX_MAP[this.getXPosition(options)];\r\n var justify = this.Y_POSITION_FLEX_MAP[this.getYPosition(options)];\r\n var style = this.container.style;\r\n style.setProperty('justify-content', justify);\r\n style.setProperty('align-items', align);\r\n };\r\n NotyfView.prototype._buildNotificationCard = function (notification) {\r\n var _this = this;\r\n var options = notification.options;\r\n var iconOpts = options.icon;\r\n // Adjust container according to position (e.g. top-left, bottom-center, etc)\r\n this.adjustContainerAlignment(options);\r\n // Create elements\r\n var notificationElem = this._createHTMLElement({ tagName: 'div', className: 'notyf__toast' });\r\n var ripple = this._createHTMLElement({ tagName: 'div', className: 'notyf__ripple' });\r\n var wrapper = this._createHTMLElement({ tagName: 'div', className: 'notyf__wrapper' });\r\n var message = this._createHTMLElement({ tagName: 'div', className: 'notyf__message' });\r\n message.innerHTML = options.message || '';\r\n var mainColor = options.background || options.backgroundColor;\r\n // Build the icon and append it to the card\r\n if (iconOpts) {\r\n var iconContainer = this._createHTMLElement({ tagName: 'div', className: 'notyf__icon' });\r\n if (typeof iconOpts === 'string' || iconOpts instanceof String)\r\n iconContainer.innerHTML = new String(iconOpts).valueOf();\r\n if (typeof iconOpts === 'object') {\r\n var _a = iconOpts.tagName, tagName = _a === void 0 ? 'i' : _a, className_1 = iconOpts.className, text = iconOpts.text, _b = iconOpts.color, color = _b === void 0 ? mainColor : _b;\r\n var iconElement = this._createHTMLElement({ tagName: tagName, className: className_1, text: text });\r\n if (color)\r\n iconElement.style.color = color;\r\n iconContainer.appendChild(iconElement);\r\n }\r\n wrapper.appendChild(iconContainer);\r\n }\r\n wrapper.appendChild(message);\r\n notificationElem.appendChild(wrapper);\r\n // Add ripple if applicable, else just paint the full toast\r\n if (mainColor) {\r\n if (options.ripple) {\r\n ripple.style.background = mainColor;\r\n notificationElem.appendChild(ripple);\r\n }\r\n else {\r\n notificationElem.style.background = mainColor;\r\n }\r\n }\r\n // Add dismiss button\r\n if (options.dismissible) {\r\n var dismissWrapper = this._createHTMLElement({ tagName: 'div', className: 'notyf__dismiss' });\r\n var dismissButton = this._createHTMLElement({\r\n tagName: 'button',\r\n className: 'notyf__dismiss-btn',\r\n });\r\n dismissWrapper.appendChild(dismissButton);\r\n wrapper.appendChild(dismissWrapper);\r\n notificationElem.classList.add(\"notyf__toast--dismissible\");\r\n dismissButton.addEventListener('click', function (event) {\r\n var _a, _b;\r\n (_b = (_a = _this.events)[exports.NotyfEvent.Dismiss]) === null || _b === void 0 ? void 0 : _b.call(_a, { target: notification, event: event });\r\n event.stopPropagation();\r\n });\r\n }\r\n notificationElem.addEventListener('click', function (event) { var _a, _b; return (_b = (_a = _this.events)[exports.NotyfEvent.Click]) === null || _b === void 0 ? void 0 : _b.call(_a, { target: notification, event: event }); });\r\n // Adjust margins depending on whether its an upper or lower notification\r\n var className = this.getYPosition(options) === 'top' ? 'upper' : 'lower';\r\n notificationElem.classList.add(\"notyf__toast--\" + className);\r\n return notificationElem;\r\n };\r\n NotyfView.prototype._createHTMLElement = function (_a) {\r\n var tagName = _a.tagName, className = _a.className, text = _a.text;\r\n var elem = document.createElement(tagName);\r\n if (className) {\r\n elem.className = className;\r\n }\r\n elem.textContent = text || null;\r\n return elem;\r\n };\r\n /**\r\n * Creates an invisible container which will announce the notyfs to\r\n * screen readers\r\n */\r\n NotyfView.prototype._createA11yContainer = function () {\r\n var a11yContainer = this._createHTMLElement({ tagName: 'div', className: 'notyf-announcer' });\r\n a11yContainer.setAttribute('aria-atomic', 'true');\r\n a11yContainer.setAttribute('aria-live', 'polite');\r\n // Set the a11y container to be visible hidden. Can't use display: none as\r\n // screen readers won't read it.\r\n a11yContainer.style.border = '0';\r\n a11yContainer.style.clip = 'rect(0 0 0 0)';\r\n a11yContainer.style.height = '1px';\r\n a11yContainer.style.margin = '-1px';\r\n a11yContainer.style.overflow = 'hidden';\r\n a11yContainer.style.padding = '0';\r\n a11yContainer.style.position = 'absolute';\r\n a11yContainer.style.width = '1px';\r\n a11yContainer.style.outline = '0';\r\n document.body.appendChild(a11yContainer);\r\n this.a11yContainer = a11yContainer;\r\n };\r\n /**\r\n * Announces a message to screenreaders.\r\n */\r\n NotyfView.prototype._announce = function (message) {\r\n var _this = this;\r\n this.a11yContainer.textContent = '';\r\n // This 100ms timeout is necessary for some browser + screen-reader combinations:\r\n // - Both JAWS and NVDA over IE11 will not announce anything without a non-zero timeout.\r\n // - With Chrome and IE11 with NVDA or JAWS, a repeated (identical) message won't be read a\r\n // second time without clearing and then using a non-zero delay.\r\n // (using JAWS 17 at time of this writing).\r\n // https://github.com/angular/material2/blob/master/src/cdk/a11y/live-announcer/live-announcer.ts\r\n setTimeout(function () {\r\n _this.a11yContainer.textContent = message;\r\n }, 100);\r\n };\r\n /**\r\n * Determine which animationend event is supported\r\n */\r\n NotyfView.prototype._getAnimationEndEventName = function () {\r\n var el = document.createElement('_fake');\r\n var transitions = {\r\n MozTransition: 'animationend',\r\n OTransition: 'oAnimationEnd',\r\n WebkitTransition: 'webkitAnimationEnd',\r\n transition: 'animationend',\r\n };\r\n var t;\r\n for (t in transitions) {\r\n if (el.style[t] !== undefined) {\r\n return transitions[t];\r\n }\r\n }\r\n // No supported animation end event. Using \"animationend\" as a fallback\r\n return 'animationend';\r\n };\r\n return NotyfView;\r\n}());\n\n/**\r\n * Main controller class. Defines the main Notyf API.\r\n */\r\nvar Notyf = /** @class */ (function () {\r\n function Notyf(opts) {\r\n var _this = this;\r\n this.dismiss = this._removeNotification;\r\n this.notifications = new NotyfArray();\r\n this.view = new NotyfView();\r\n var types = this.registerTypes(opts);\r\n this.options = __assign(__assign({}, DEFAULT_OPTIONS), opts);\r\n this.options.types = types;\r\n this.notifications.onUpdate(function (elem, type) { return _this.view.update(elem, type); });\r\n this.view.on(exports.NotyfEvent.Dismiss, function (_a) {\r\n var target = _a.target, event = _a.event;\r\n _this._removeNotification(target);\r\n // tslint:disable-next-line: no-string-literal\r\n target['triggerEvent'](exports.NotyfEvent.Dismiss, event);\r\n });\r\n // tslint:disable-next-line: no-string-literal\r\n this.view.on(exports.NotyfEvent.Click, function (_a) {\r\n var target = _a.target, event = _a.event;\r\n return target['triggerEvent'](exports.NotyfEvent.Click, event);\r\n });\r\n }\r\n Notyf.prototype.error = function (payload) {\r\n var options = this.normalizeOptions('error', payload);\r\n return this.open(options);\r\n };\r\n Notyf.prototype.success = function (payload) {\r\n var options = this.normalizeOptions('success', payload);\r\n return this.open(options);\r\n };\r\n Notyf.prototype.open = function (options) {\r\n var defaultOpts = this.options.types.find(function (_a) {\r\n var type = _a.type;\r\n return type === options.type;\r\n }) || {};\r\n var config = __assign(__assign({}, defaultOpts), options);\r\n this.assignProps(['ripple', 'position', 'dismissible'], config);\r\n var notification = new NotyfNotification(config);\r\n this._pushNotification(notification);\r\n return notification;\r\n };\r\n Notyf.prototype.dismissAll = function () {\r\n while (this.notifications.splice(0, 1))\r\n ;\r\n };\r\n /**\r\n * Assigns properties to a config object based on two rules:\r\n * 1. If the config object already sets that prop, leave it as so\r\n * 2. Otherwise, use the default prop from the global options\r\n *\r\n * It's intended to build the final config object to open a notification. e.g. if\r\n * 'dismissible' is not set, then use the value from the global config.\r\n *\r\n * @param props - properties to be assigned to the config object\r\n * @param config - object whose properties need to be set\r\n */\r\n Notyf.prototype.assignProps = function (props, config) {\r\n var _this = this;\r\n props.forEach(function (prop) {\r\n // intentional double equality to check for both null and undefined\r\n config[prop] = config[prop] == null ? _this.options[prop] : config[prop];\r\n });\r\n };\r\n Notyf.prototype._pushNotification = function (notification) {\r\n var _this = this;\r\n this.notifications.push(notification);\r\n var duration = notification.options.duration !== undefined ? notification.options.duration : this.options.duration;\r\n if (duration) {\r\n setTimeout(function () { return _this._removeNotification(notification); }, duration);\r\n }\r\n };\r\n Notyf.prototype._removeNotification = function (notification) {\r\n var index = this.notifications.indexOf(notification);\r\n if (index !== -1) {\r\n this.notifications.splice(index, 1);\r\n }\r\n };\r\n Notyf.prototype.normalizeOptions = function (type, payload) {\r\n var options = { type: type };\r\n if (typeof payload === 'string') {\r\n options.message = payload;\r\n }\r\n else if (typeof payload === 'object') {\r\n options = __assign(__assign({}, options), payload);\r\n }\r\n return options;\r\n };\r\n Notyf.prototype.registerTypes = function (opts) {\r\n var incomingTypes = ((opts && opts.types) || []).slice();\r\n var finalDefaultTypes = DEFAULT_OPTIONS.types.map(function (defaultType) {\r\n // find if there's a default type within the user input's types, if so, it means the user\r\n // wants to change some of the default settings\r\n var userTypeIdx = -1;\r\n incomingTypes.forEach(function (t, idx) {\r\n if (t.type === defaultType.type)\r\n userTypeIdx = idx;\r\n });\r\n var userType = userTypeIdx !== -1 ? incomingTypes.splice(userTypeIdx, 1)[0] : {};\r\n return __assign(__assign({}, defaultType), userType);\r\n });\r\n return finalDefaultTypes.concat(incomingTypes);\r\n };\r\n return Notyf;\r\n}());\n\nexports.DEFAULT_OPTIONS = DEFAULT_OPTIONS;\nexports.Notyf = Notyf;\nexports.NotyfArray = NotyfArray;\nexports.NotyfNotification = NotyfNotification;\nexports.NotyfView = NotyfView;\n","/*!\n * \n * simple-keyboard v3.4.126\n * https://github.com/hodgef/simple-keyboard\n *\n * Copyright (c) Francisco Hodge (https://github.com/hodgef) and project contributors.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n */\n!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.SimpleKeyboard=e():t.SimpleKeyboard=e()}(this,(function(){return function(){var t={9662:function(t,e,n){var o=n(614),r=n(6330),i=TypeError;t.exports=function(t){if(o(t))return t;throw i(r(t)+\" is not a function\")}},9483:function(t,e,n){var o=n(4411),r=n(6330),i=TypeError;t.exports=function(t){if(o(t))return t;throw i(r(t)+\" is not a constructor\")}},6077:function(t,e,n){var o=n(614),r=String,i=TypeError;t.exports=function(t){if(\"object\"==typeof t||o(t))return t;throw i(\"Can't set \"+r(t)+\" as a prototype\")}},1223:function(t,e,n){var o=n(5112),r=n(30),i=n(3070).f,a=o(\"unscopables\"),s=Array.prototype;null==s[a]&&i(s,a,{configurable:!0,value:r(null)}),t.exports=function(t){s[a][t]=!0}},1530:function(t,e,n){\"use strict\";var o=n(8710).charAt;t.exports=function(t,e,n){return e+(n?o(t,e).length:1)}},9670:function(t,e,n){var o=n(111),r=String,i=TypeError;t.exports=function(t){if(o(t))return t;throw i(r(t)+\" is not an object\")}},8533:function(t,e,n){\"use strict\";var o=n(2092).forEach,r=n(9341)(\"forEach\");t.exports=r?[].forEach:function(t){return o(this,t,arguments.length>1?arguments[1]:void 0)}},8457:function(t,e,n){\"use strict\";var o=n(9974),r=n(6916),i=n(7908),a=n(3411),s=n(7659),u=n(4411),c=n(6244),l=n(6135),f=n(8554),p=n(1246),d=Array;t.exports=function(t){var e=i(t),n=u(this),h=arguments.length,v=h>1?arguments[1]:void 0,g=void 0!==v;g&&(v=o(v,h>2?arguments[2]:void 0));var y,m,b,x,w,E,O=p(e),S=0;if(!O||this===d&&s(O))for(y=c(e),m=n?new this(y):d(y);y>S;S++)E=g?v(e[S],S):e[S],l(m,S,E);else for(w=(x=f(e,O)).next,m=n?new this:[];!(b=r(w,x)).done;S++)E=g?a(x,v,[b.value,S],!0):b.value,l(m,S,E);return m.length=S,m}},1318:function(t,e,n){var o=n(5656),r=n(1400),i=n(6244),a=function(t){return function(e,n,a){var s,u=o(e),c=i(u),l=r(a,c);if(t&&n!=n){for(;c>l;)if((s=u[l++])!=s)return!0}else for(;c>l;l++)if((t||l in u)&&u[l]===n)return t||l||0;return!t&&-1}};t.exports={includes:a(!0),indexOf:a(!1)}},2092:function(t,e,n){var o=n(9974),r=n(1702),i=n(8361),a=n(7908),s=n(6244),u=n(5417),c=r([].push),l=function(t){var e=1==t,n=2==t,r=3==t,l=4==t,f=6==t,p=7==t,d=5==t||f;return function(h,v,g,y){for(var m,b,x=a(h),w=i(x),E=o(v,g),O=s(w),S=0,k=y||u,I=e?k(h,O):n||p?k(h,0):void 0;O>S;S++)if((d||S in w)&&(b=E(m=w[S],S,x),t))if(e)I[S]=b;else if(b)switch(t){case 3:return!0;case 5:return m;case 6:return S;case 2:c(I,m)}else switch(t){case 4:return!1;case 7:c(I,m)}return f?-1:r||l?l:I}};t.exports={forEach:l(0),map:l(1),filter:l(2),some:l(3),every:l(4),find:l(5),findIndex:l(6),filterReject:l(7)}},1194:function(t,e,n){var o=n(7293),r=n(5112),i=n(7392),a=r(\"species\");t.exports=function(t){return i>=51||!o((function(){var e=[];return(e.constructor={})[a]=function(){return{foo:1}},1!==e[t](Boolean).foo}))}},9341:function(t,e,n){\"use strict\";var o=n(7293);t.exports=function(t,e){var n=[][t];return!!n&&o((function(){n.call(null,e||function(){return 1},1)}))}},3671:function(t,e,n){var o=n(9662),r=n(7908),i=n(8361),a=n(6244),s=TypeError,u=function(t){return function(e,n,u,c){o(n);var l=r(e),f=i(l),p=a(l),d=t?p-1:0,h=t?-1:1;if(u<2)for(;;){if(d in f){c=f[d],d+=h;break}if(d+=h,t?d<0:p<=d)throw s(\"Reduce of empty array with no initial value\")}for(;t?d>=0:p>d;d+=h)d in f&&(c=n(c,f[d],d,l));return c}};t.exports={left:u(!1),right:u(!0)}},1589:function(t,e,n){var o=n(1400),r=n(6244),i=n(6135),a=Array,s=Math.max;t.exports=function(t,e,n){for(var u=r(t),c=o(e,u),l=o(void 0===n?u:n,u),f=a(s(l-c,0)),p=0;c<l;c++,p++)i(f,p,t[c]);return f.length=p,f}},206:function(t,e,n){var o=n(1702);t.exports=o([].slice)},4362:function(t,e,n){var o=n(1589),r=Math.floor,i=function(t,e){var n=t.length,u=r(n/2);return n<8?a(t,e):s(t,i(o(t,0,u),e),i(o(t,u),e),e)},a=function(t,e){for(var n,o,r=t.length,i=1;i<r;){for(o=i,n=t[i];o&&e(t[o-1],n)>0;)t[o]=t[--o];o!==i++&&(t[o]=n)}return t},s=function(t,e,n,o){for(var r=e.length,i=n.length,a=0,s=0;a<r||s<i;)t[a+s]=a<r&&s<i?o(e[a],n[s])<=0?e[a++]:n[s++]:a<r?e[a++]:n[s++];return t};t.exports=i},7475:function(t,e,n){var o=n(3157),r=n(4411),i=n(111),a=n(5112)(\"species\"),s=Array;t.exports=function(t){var e;return o(t)&&(e=t.constructor,(r(e)&&(e===s||o(e.prototype))||i(e)&&null===(e=e[a]))&&(e=void 0)),void 0===e?s:e}},5417:function(t,e,n){var o=n(7475);t.exports=function(t,e){return new(o(t))(0===e?0:e)}},3411:function(t,e,n){var o=n(9670),r=n(9212);t.exports=function(t,e,n,i){try{return i?e(o(n)[0],n[1]):e(n)}catch(e){r(t,\"throw\",e)}}},7072:function(t,e,n){var o=n(5112)(\"iterator\"),r=!1;try{var i=0,a={next:function(){return{done:!!i++}},return:function(){r=!0}};a[o]=function(){return this},Array.from(a,(function(){throw 2}))}catch(t){}t.exports=function(t,e){if(!e&&!r)return!1;var n=!1;try{var i={};i[o]=function(){return{next:function(){return{done:n=!0}}}},t(i)}catch(t){}return n}},4326:function(t,e,n){var o=n(1702),r=o({}.toString),i=o(\"\".slice);t.exports=function(t){return i(r(t),8,-1)}},648:function(t,e,n){var o=n(1694),r=n(614),i=n(4326),a=n(5112)(\"toStringTag\"),s=Object,u=\"Arguments\"==i(function(){return arguments}());t.exports=o?i:function(t){var e,n,o;return void 0===t?\"Undefined\":null===t?\"Null\":\"string\"==typeof(n=function(t,e){try{return t[e]}catch(t){}}(e=s(t),a))?n:u?i(e):\"Object\"==(o=i(e))&&r(e.callee)?\"Arguments\":o}},9920:function(t,e,n){var o=n(2597),r=n(3887),i=n(1236),a=n(3070);t.exports=function(t,e,n){for(var s=r(e),u=a.f,c=i.f,l=0;l<s.length;l++){var f=s[l];o(t,f)||n&&o(n,f)||u(t,f,c(e,f))}}},4964:function(t,e,n){var o=n(5112)(\"match\");t.exports=function(t){var e=/./;try{\"/./\"[t](e)}catch(n){try{return e[o]=!1,\"/./\"[t](e)}catch(t){}}return!1}},8544:function(t,e,n){var o=n(7293);t.exports=!o((function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype}))},4994:function(t,e,n){\"use strict\";var o=n(3383).IteratorPrototype,r=n(30),i=n(9114),a=n(8003),s=n(7497),u=function(){return this};t.exports=function(t,e,n,c){var l=e+\" Iterator\";return t.prototype=r(o,{next:i(+!c,n)}),a(t,l,!1,!0),s[l]=u,t}},8880:function(t,e,n){var o=n(9781),r=n(3070),i=n(9114);t.exports=o?function(t,e,n){return r.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},9114:function(t){t.exports=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}}},6135:function(t,e,n){\"use strict\";var o=n(4948),r=n(3070),i=n(9114);t.exports=function(t,e,n){var a=o(e);a in t?r.f(t,a,i(0,n)):t[a]=n}},8052:function(t,e,n){var o=n(614),r=n(3070),i=n(6339),a=n(3072);t.exports=function(t,e,n,s){s||(s={});var u=s.enumerable,c=void 0!==s.name?s.name:e;if(o(n)&&i(n,c,s),s.global)u?t[e]=n:a(e,n);else{try{s.unsafe?t[e]&&(u=!0):delete t[e]}catch(t){}u?t[e]=n:r.f(t,e,{value:n,enumerable:!1,configurable:!s.nonConfigurable,writable:!s.nonWritable})}return t}},3072:function(t,e,n){var o=n(7854),r=Object.defineProperty;t.exports=function(t,e){try{r(o,t,{value:e,configurable:!0,writable:!0})}catch(n){o[t]=e}return e}},654:function(t,e,n){\"use strict\";var o=n(2109),r=n(6916),i=n(1913),a=n(6530),s=n(614),u=n(4994),c=n(9518),l=n(7674),f=n(8003),p=n(8880),d=n(8052),h=n(5112),v=n(7497),g=n(3383),y=a.PROPER,m=a.CONFIGURABLE,b=g.IteratorPrototype,x=g.BUGGY_SAFARI_ITERATORS,w=h(\"iterator\"),E=\"keys\",O=\"values\",S=\"entries\",k=function(){return this};t.exports=function(t,e,n,a,h,g,I){u(n,e,a);var C,P,A,M=function(t){if(t===h&&R)return R;if(!x&&t in N)return N[t];switch(t){case E:case O:case S:return function(){return new n(this,t)}}return function(){return new n(this)}},T=e+\" Iterator\",D=!1,N=t.prototype,j=N[w]||N[\"@@iterator\"]||h&&N[h],R=!x&&j||M(h),L=\"Array\"==e&&N.entries||j;if(L&&(C=c(L.call(new t)))!==Object.prototype&&C.next&&(i||c(C)===b||(l?l(C,b):s(C[w])||d(C,w,k)),f(C,T,!0,!0),i&&(v[T]=k)),y&&h==O&&j&&j.name!==O&&(!i&&m?p(N,\"name\",O):(D=!0,R=function(){return r(j,this)})),h)if(P={values:M(O),keys:g?R:M(E),entries:M(S)},I)for(A in P)(x||D||!(A in N))&&d(N,A,P[A]);else o({target:e,proto:!0,forced:x||D},P);return i&&!I||N[w]===R||d(N,w,R,{name:h}),v[e]=R,P}},7235:function(t,e,n){var o=n(857),r=n(2597),i=n(6061),a=n(3070).f;t.exports=function(t){var e=o.Symbol||(o.Symbol={});r(e,t)||a(e,t,{value:i.f(t)})}},5117:function(t,e,n){\"use strict\";var o=n(6330),r=TypeError;t.exports=function(t,e){if(!delete t[e])throw r(\"Cannot delete property \"+o(e)+\" of \"+o(t))}},9781:function(t,e,n){var o=n(7293);t.exports=!o((function(){return 7!=Object.defineProperty({},1,{get:function(){return 7}})[1]}))},317:function(t,e,n){var o=n(7854),r=n(111),i=o.document,a=r(i)&&r(i.createElement);t.exports=function(t){return a?i.createElement(t):{}}},7207:function(t){var e=TypeError;t.exports=function(t){if(t>9007199254740991)throw e(\"Maximum allowed index exceeded\");return t}},8324:function(t){t.exports={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0}},8509:function(t,e,n){var o=n(317)(\"span\").classList,r=o&&o.constructor&&o.constructor.prototype;t.exports=r===Object.prototype?void 0:r},8886:function(t,e,n){var o=n(8113).match(/firefox\\/(\\d+)/i);t.exports=!!o&&+o[1]},256:function(t,e,n){var o=n(8113);t.exports=/MSIE|Trident/.test(o)},5268:function(t,e,n){var o=n(4326),r=n(7854);t.exports=\"process\"==o(r.process)},8113:function(t,e,n){var o=n(5005);t.exports=o(\"navigator\",\"userAgent\")||\"\"},7392:function(t,e,n){var o,r,i=n(7854),a=n(8113),s=i.process,u=i.Deno,c=s&&s.versions||u&&u.version,l=c&&c.v8;l&&(r=(o=l.split(\".\"))[0]>0&&o[0]<4?1:+(o[0]+o[1])),!r&&a&&(!(o=a.match(/Edge\\/(\\d+)/))||o[1]>=74)&&(o=a.match(/Chrome\\/(\\d+)/))&&(r=+o[1]),t.exports=r},8008:function(t,e,n){var o=n(8113).match(/AppleWebKit\\/(\\d+)\\./);t.exports=!!o&&+o[1]},748:function(t){t.exports=[\"constructor\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"toLocaleString\",\"toString\",\"valueOf\"]},2109:function(t,e,n){var o=n(7854),r=n(1236).f,i=n(8880),a=n(8052),s=n(3072),u=n(9920),c=n(4705);t.exports=function(t,e){var n,l,f,p,d,h=t.target,v=t.global,g=t.stat;if(n=v?o:g?o[h]||s(h,{}):(o[h]||{}).prototype)for(l in e){if(p=e[l],f=t.dontCallGetSet?(d=r(n,l))&&d.value:n[l],!c(v?l:h+(g?\".\":\"#\")+l,t.forced)&&void 0!==f){if(typeof p==typeof f)continue;u(p,f)}(t.sham||f&&f.sham)&&i(p,\"sham\",!0),a(n,l,p,t)}}},7293:function(t){t.exports=function(t){try{return!!t()}catch(t){return!0}}},7007:function(t,e,n){\"use strict\";n(4916);var o=n(1702),r=n(8052),i=n(2261),a=n(7293),s=n(5112),u=n(8880),c=s(\"species\"),l=RegExp.prototype;t.exports=function(t,e,n,f){var p=s(t),d=!a((function(){var e={};return e[p]=function(){return 7},7!=\"\"[t](e)})),h=d&&!a((function(){var e=!1,n=/a/;return\"split\"===t&&((n={}).constructor={},n.constructor[c]=function(){return n},n.flags=\"\",n[p]=/./[p]),n.exec=function(){return e=!0,null},n[p](\"\"),!e}));if(!d||!h||n){var v=o(/./[p]),g=e(p,\"\"[t],(function(t,e,n,r,a){var s=o(t),u=e.exec;return u===i||u===l.exec?d&&!a?{done:!0,value:v(e,n,r)}:{done:!0,value:s(n,e,r)}:{done:!1}}));r(String.prototype,t,g[0]),r(l,p,g[1])}f&&u(l[p],\"sham\",!0)}},2104:function(t,e,n){var o=n(4374),r=Function.prototype,i=r.apply,a=r.call;t.exports=\"object\"==typeof Reflect&&Reflect.apply||(o?a.bind(i):function(){return a.apply(i,arguments)})},9974:function(t,e,n){var o=n(1702),r=n(9662),i=n(4374),a=o(o.bind);t.exports=function(t,e){return r(t),void 0===e?t:i?a(t,e):function(){return t.apply(e,arguments)}}},4374:function(t,e,n){var o=n(7293);t.exports=!o((function(){var t=function(){}.bind();return\"function\"!=typeof t||t.hasOwnProperty(\"prototype\")}))},6916:function(t,e,n){var o=n(4374),r=Function.prototype.call;t.exports=o?r.bind(r):function(){return r.apply(r,arguments)}},6530:function(t,e,n){var o=n(9781),r=n(2597),i=Function.prototype,a=o&&Object.getOwnPropertyDescriptor,s=r(i,\"name\"),u=s&&\"something\"===function(){}.name,c=s&&(!o||o&&a(i,\"name\").configurable);t.exports={EXISTS:s,PROPER:u,CONFIGURABLE:c}},1702:function(t,e,n){var o=n(4374),r=Function.prototype,i=r.bind,a=r.call,s=o&&i.bind(a,a);t.exports=o?function(t){return t&&s(t)}:function(t){return t&&function(){return a.apply(t,arguments)}}},5005:function(t,e,n){var o=n(7854),r=n(614),i=function(t){return r(t)?t:void 0};t.exports=function(t,e){return arguments.length<2?i(o[t]):o[t]&&o[t][e]}},1246:function(t,e,n){var o=n(648),r=n(8173),i=n(7497),a=n(5112)(\"iterator\");t.exports=function(t){if(null!=t)return r(t,a)||r(t,\"@@iterator\")||i[o(t)]}},8554:function(t,e,n){var o=n(6916),r=n(9662),i=n(9670),a=n(6330),s=n(1246),u=TypeError;t.exports=function(t,e){var n=arguments.length<2?s(t):e;if(r(n))return i(o(n,t));throw u(a(t)+\" is not iterable\")}},8173:function(t,e,n){var o=n(9662);t.exports=function(t,e){var n=t[e];return null==n?void 0:o(n)}},647:function(t,e,n){var o=n(1702),r=n(7908),i=Math.floor,a=o(\"\".charAt),s=o(\"\".replace),u=o(\"\".slice),c=/\\$([$&'`]|\\d{1,2}|<[^>]*>)/g,l=/\\$([$&'`]|\\d{1,2})/g;t.exports=function(t,e,n,o,f,p){var d=n+t.length,h=o.length,v=l;return void 0!==f&&(f=r(f),v=c),s(p,v,(function(r,s){var c;switch(a(s,0)){case\"$\":return\"$\";case\"&\":return t;case\"`\":return u(e,0,n);case\"'\":return u(e,d);case\"<\":c=f[u(s,1,-1)];break;default:var l=+s;if(0===l)return r;if(l>h){var p=i(l/10);return 0===p?r:p<=h?void 0===o[p-1]?a(s,1):o[p-1]+a(s,1):r}c=o[l-1]}return void 0===c?\"\":c}))}},7854:function(t,e,n){var o=function(t){return t&&t.Math==Math&&t};t.exports=o(\"object\"==typeof globalThis&&globalThis)||o(\"object\"==typeof window&&window)||o(\"object\"==typeof self&&self)||o(\"object\"==typeof n.g&&n.g)||function(){return this}()||Function(\"return this\")()},2597:function(t,e,n){var o=n(1702),r=n(7908),i=o({}.hasOwnProperty);t.exports=Object.hasOwn||function(t,e){return i(r(t),e)}},3501:function(t){t.exports={}},490:function(t,e,n){var o=n(5005);t.exports=o(\"document\",\"documentElement\")},4664:function(t,e,n){var o=n(9781),r=n(7293),i=n(317);t.exports=!o&&!r((function(){return 7!=Object.defineProperty(i(\"div\"),\"a\",{get:function(){return 7}}).a}))},8361:function(t,e,n){var o=n(1702),r=n(7293),i=n(4326),a=Object,s=o(\"\".split);t.exports=r((function(){return!a(\"z\").propertyIsEnumerable(0)}))?function(t){return\"String\"==i(t)?s(t,\"\"):a(t)}:a},9587:function(t,e,n){var o=n(614),r=n(111),i=n(7674);t.exports=function(t,e,n){var a,s;return i&&o(a=e.constructor)&&a!==n&&r(s=a.prototype)&&s!==n.prototype&&i(t,s),t}},2788:function(t,e,n){var o=n(1702),r=n(614),i=n(5465),a=o(Function.toString);r(i.inspectSource)||(i.inspectSource=function(t){return a(t)}),t.exports=i.inspectSource},9909:function(t,e,n){var o,r,i,a=n(8536),s=n(7854),u=n(1702),c=n(111),l=n(8880),f=n(2597),p=n(5465),d=n(6200),h=n(3501),v=\"Object already initialized\",g=s.TypeError,y=s.WeakMap;if(a||p.state){var m=p.state||(p.state=new y),b=u(m.get),x=u(m.has),w=u(m.set);o=function(t,e){if(x(m,t))throw new g(v);return e.facade=t,w(m,t,e),e},r=function(t){return b(m,t)||{}},i=function(t){return x(m,t)}}else{var E=d(\"state\");h[E]=!0,o=function(t,e){if(f(t,E))throw new g(v);return e.facade=t,l(t,E,e),e},r=function(t){return f(t,E)?t[E]:{}},i=function(t){return f(t,E)}}t.exports={set:o,get:r,has:i,enforce:function(t){return i(t)?r(t):o(t,{})},getterFor:function(t){return function(e){var n;if(!c(e)||(n=r(e)).type!==t)throw g(\"Incompatible receiver, \"+t+\" required\");return n}}}},7659:function(t,e,n){var o=n(5112),r=n(7497),i=o(\"iterator\"),a=Array.prototype;t.exports=function(t){return void 0!==t&&(r.Array===t||a[i]===t)}},3157:function(t,e,n){var o=n(4326);t.exports=Array.isArray||function(t){return\"Array\"==o(t)}},614:function(t){t.exports=function(t){return\"function\"==typeof t}},4411:function(t,e,n){var o=n(1702),r=n(7293),i=n(614),a=n(648),s=n(5005),u=n(2788),c=function(){},l=[],f=s(\"Reflect\",\"construct\"),p=/^\\s*(?:class|function)\\b/,d=o(p.exec),h=!p.exec(c),v=function(t){if(!i(t))return!1;try{return f(c,l,t),!0}catch(t){return!1}},g=function(t){if(!i(t))return!1;switch(a(t)){case\"AsyncFunction\":case\"GeneratorFunction\":case\"AsyncGeneratorFunction\":return!1}try{return h||!!d(p,u(t))}catch(t){return!0}};g.sham=!0,t.exports=!f||r((function(){var t;return v(v.call)||!v(Object)||!v((function(){t=!0}))||t}))?g:v},4705:function(t,e,n){var o=n(7293),r=n(614),i=/#|\\.prototype\\./,a=function(t,e){var n=u[s(t)];return n==l||n!=c&&(r(e)?o(e):!!e)},s=a.normalize=function(t){return String(t).replace(i,\".\").toLowerCase()},u=a.data={},c=a.NATIVE=\"N\",l=a.POLYFILL=\"P\";t.exports=a},5988:function(t,e,n){var o=n(111),r=Math.floor;t.exports=Number.isInteger||function(t){return!o(t)&&isFinite(t)&&r(t)===t}},111:function(t,e,n){var o=n(614);t.exports=function(t){return\"object\"==typeof t?null!==t:o(t)}},1913:function(t){t.exports=!1},7850:function(t,e,n){var o=n(111),r=n(4326),i=n(5112)(\"match\");t.exports=function(t){var e;return o(t)&&(void 0!==(e=t[i])?!!e:\"RegExp\"==r(t))}},2190:function(t,e,n){var o=n(5005),r=n(614),i=n(7976),a=n(3307),s=Object;t.exports=a?function(t){return\"symbol\"==typeof t}:function(t){var e=o(\"Symbol\");return r(e)&&i(e.prototype,s(t))}},9212:function(t,e,n){var o=n(6916),r=n(9670),i=n(8173);t.exports=function(t,e,n){var a,s;r(t);try{if(!(a=i(t,\"return\"))){if(\"throw\"===e)throw n;return n}a=o(a,t)}catch(t){s=!0,a=t}if(\"throw\"===e)throw n;if(s)throw a;return r(a),n}},3383:function(t,e,n){\"use strict\";var o,r,i,a=n(7293),s=n(614),u=n(30),c=n(9518),l=n(8052),f=n(5112),p=n(1913),d=f(\"iterator\"),h=!1;[].keys&&(\"next\"in(i=[].keys())?(r=c(c(i)))!==Object.prototype&&(o=r):h=!0),null==o||a((function(){var t={};return o[d].call(t)!==t}))?o={}:p&&(o=u(o)),s(o[d])||l(o,d,(function(){return this})),t.exports={IteratorPrototype:o,BUGGY_SAFARI_ITERATORS:h}},7497:function(t){t.exports={}},6244:function(t,e,n){var o=n(7466);t.exports=function(t){return o(t.length)}},6339:function(t,e,n){var o=n(7293),r=n(614),i=n(2597),a=n(9781),s=n(6530).CONFIGURABLE,u=n(2788),c=n(9909),l=c.enforce,f=c.get,p=Object.defineProperty,d=a&&!o((function(){return 8!==p((function(){}),\"length\",{value:8}).length})),h=String(String).split(\"String\"),v=t.exports=function(t,e,n){\"Symbol(\"===String(e).slice(0,7)&&(e=\"[\"+String(e).replace(/^Symbol\\(([^)]*)\\)/,\"$1\")+\"]\"),n&&n.getter&&(e=\"get \"+e),n&&n.setter&&(e=\"set \"+e),(!i(t,\"name\")||s&&t.name!==e)&&(a?p(t,\"name\",{value:e,configurable:!0}):t.name=e),d&&n&&i(n,\"arity\")&&t.length!==n.arity&&p(t,\"length\",{value:n.arity});try{n&&i(n,\"constructor\")&&n.constructor?a&&p(t,\"prototype\",{writable:!1}):t.prototype&&(t.prototype=void 0)}catch(t){}var o=l(t);return i(o,\"source\")||(o.source=h.join(\"string\"==typeof e?e:\"\")),t};Function.prototype.toString=v((function(){return r(this)&&f(this).source||u(this)}),\"toString\")},4758:function(t){var e=Math.ceil,n=Math.floor;t.exports=Math.trunc||function(t){var o=+t;return(o>0?n:e)(o)}},735:function(t,e,n){var o=n(133);t.exports=o&&!!Symbol.for&&!!Symbol.keyFor},133:function(t,e,n){var o=n(7392),r=n(7293);t.exports=!!Object.getOwnPropertySymbols&&!r((function(){var t=Symbol();return!String(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&o&&o<41}))},8536:function(t,e,n){var o=n(7854),r=n(614),i=n(2788),a=o.WeakMap;t.exports=r(a)&&/native code/.test(i(a))},3929:function(t,e,n){var o=n(7850),r=TypeError;t.exports=function(t){if(o(t))throw r(\"The method doesn't accept regular expressions\");return t}},1574:function(t,e,n){\"use strict\";var o=n(9781),r=n(1702),i=n(6916),a=n(7293),s=n(1956),u=n(5181),c=n(5296),l=n(7908),f=n(8361),p=Object.assign,d=Object.defineProperty,h=r([].concat);t.exports=!p||a((function(){if(o&&1!==p({b:1},p(d({},\"a\",{enumerable:!0,get:function(){d(this,\"b\",{value:3,enumerable:!1})}}),{b:2})).b)return!0;var t={},e={},n=Symbol(),r=\"abcdefghijklmnopqrst\";return t[n]=7,r.split(\"\").forEach((function(t){e[t]=t})),7!=p({},t)[n]||s(p({},e)).join(\"\")!=r}))?function(t,e){for(var n=l(t),r=arguments.length,a=1,p=u.f,d=c.f;r>a;)for(var v,g=f(arguments[a++]),y=p?h(s(g),p(g)):s(g),m=y.length,b=0;m>b;)v=y[b++],o&&!i(d,g,v)||(n[v]=g[v]);return n}:p},30:function(t,e,n){var o,r=n(9670),i=n(6048),a=n(748),s=n(3501),u=n(490),c=n(317),l=n(6200),f=l(\"IE_PROTO\"),p=function(){},d=function(t){return\"<script>\"+t+\"</\"+\"script>\"},h=function(t){t.write(d(\"\")),t.close();var e=t.parentWindow.Object;return t=null,e},v=function(){try{o=new ActiveXObject(\"htmlfile\")}catch(t){}var t,e;v=\"undefined\"!=typeof document?document.domain&&o?h(o):((e=c(\"iframe\")).style.display=\"none\",u.appendChild(e),e.src=String(\"javascript:\"),(t=e.contentWindow.document).open(),t.write(d(\"document.F=Object\")),t.close(),t.F):h(o);for(var n=a.length;n--;)delete v.prototype[a[n]];return v()};s[f]=!0,t.exports=Object.create||function(t,e){var n;return null!==t?(p.prototype=r(t),n=new p,p.prototype=null,n[f]=t):n=v(),void 0===e?n:i.f(n,e)}},6048:function(t,e,n){var o=n(9781),r=n(3353),i=n(3070),a=n(9670),s=n(5656),u=n(1956);e.f=o&&!r?Object.defineProperties:function(t,e){a(t);for(var n,o=s(e),r=u(e),c=r.length,l=0;c>l;)i.f(t,n=r[l++],o[n]);return t}},3070:function(t,e,n){var o=n(9781),r=n(4664),i=n(3353),a=n(9670),s=n(4948),u=TypeError,c=Object.defineProperty,l=Object.getOwnPropertyDescriptor,f=\"enumerable\",p=\"configurable\",d=\"writable\";e.f=o?i?function(t,e,n){if(a(t),e=s(e),a(n),\"function\"==typeof t&&\"prototype\"===e&&\"value\"in n&&d in n&&!n.writable){var o=l(t,e);o&&o.writable&&(t[e]=n.value,n={configurable:p in n?n.configurable:o.configurable,enumerable:f in n?n.enumerable:o.enumerable,writable:!1})}return c(t,e,n)}:c:function(t,e,n){if(a(t),e=s(e),a(n),r)try{return c(t,e,n)}catch(t){}if(\"get\"in n||\"set\"in n)throw u(\"Accessors not supported\");return\"value\"in n&&(t[e]=n.value),t}},1236:function(t,e,n){var o=n(9781),r=n(6916),i=n(5296),a=n(9114),s=n(5656),u=n(4948),c=n(2597),l=n(4664),f=Object.getOwnPropertyDescriptor;e.f=o?f:function(t,e){if(t=s(t),e=u(e),l)try{return f(t,e)}catch(t){}if(c(t,e))return a(!r(i.f,t,e),t[e])}},1156:function(t,e,n){var o=n(4326),r=n(5656),i=n(8006).f,a=n(1589),s=\"object\"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[];t.exports.f=function(t){return s&&\"Window\"==o(t)?function(t){try{return i(t)}catch(t){return a(s)}}(t):i(r(t))}},8006:function(t,e,n){var o=n(6324),r=n(748).concat(\"length\",\"prototype\");e.f=Object.getOwnPropertyNames||function(t){return o(t,r)}},5181:function(t,e){e.f=Object.getOwnPropertySymbols},9518:function(t,e,n){var o=n(2597),r=n(614),i=n(7908),a=n(6200),s=n(8544),u=a(\"IE_PROTO\"),c=Object,l=c.prototype;t.exports=s?c.getPrototypeOf:function(t){var e=i(t);if(o(e,u))return e[u];var n=e.constructor;return r(n)&&e instanceof n?n.prototype:e instanceof c?l:null}},7976:function(t,e,n){var o=n(1702);t.exports=o({}.isPrototypeOf)},6324:function(t,e,n){var o=n(1702),r=n(2597),i=n(5656),a=n(1318).indexOf,s=n(3501),u=o([].push);t.exports=function(t,e){var n,o=i(t),c=0,l=[];for(n in o)!r(s,n)&&r(o,n)&&u(l,n);for(;e.length>c;)r(o,n=e[c++])&&(~a(l,n)||u(l,n));return l}},1956:function(t,e,n){var o=n(6324),r=n(748);t.exports=Object.keys||function(t){return o(t,r)}},5296:function(t,e){\"use strict\";var n={}.propertyIsEnumerable,o=Object.getOwnPropertyDescriptor,r=o&&!n.call({1:2},1);e.f=r?function(t){var e=o(this,t);return!!e&&e.enumerable}:n},9026:function(t,e,n){\"use strict\";var o=n(1913),r=n(7854),i=n(7293),a=n(8008);t.exports=o||!i((function(){if(!(a&&a<535)){var t=Math.random();__defineSetter__.call(null,t,(function(){})),delete r[t]}}))},7674:function(t,e,n){var o=n(1702),r=n(9670),i=n(6077);t.exports=Object.setPrototypeOf||(\"__proto__\"in{}?function(){var t,e=!1,n={};try{(t=o(Object.getOwnPropertyDescriptor(Object.prototype,\"__proto__\").set))(n,[]),e=n instanceof Array}catch(t){}return function(n,o){return r(n),i(o),e?t(n,o):n.__proto__=o,n}}():void 0)},288:function(t,e,n){\"use strict\";var o=n(1694),r=n(648);t.exports=o?{}.toString:function(){return\"[object \"+r(this)+\"]\"}},2140:function(t,e,n){var o=n(6916),r=n(614),i=n(111),a=TypeError;t.exports=function(t,e){var n,s;if(\"string\"===e&&r(n=t.toString)&&!i(s=o(n,t)))return s;if(r(n=t.valueOf)&&!i(s=o(n,t)))return s;if(\"string\"!==e&&r(n=t.toString)&&!i(s=o(n,t)))return s;throw a(\"Can't convert object to primitive value\")}},3887:function(t,e,n){var o=n(5005),r=n(1702),i=n(8006),a=n(5181),s=n(9670),u=r([].concat);t.exports=o(\"Reflect\",\"ownKeys\")||function(t){var e=i.f(s(t)),n=a.f;return n?u(e,n(t)):e}},857:function(t,e,n){var o=n(7854);t.exports=o},2626:function(t,e,n){var o=n(3070).f;t.exports=function(t,e,n){n in t||o(t,n,{configurable:!0,get:function(){return e[n]},set:function(t){e[n]=t}})}},7651:function(t,e,n){var o=n(6916),r=n(9670),i=n(614),a=n(4326),s=n(2261),u=TypeError;t.exports=function(t,e){var n=t.exec;if(i(n)){var c=o(n,t,e);return null!==c&&r(c),c}if(\"RegExp\"===a(t))return o(s,t,e);throw u(\"RegExp#exec called on incompatible receiver\")}},2261:function(t,e,n){\"use strict\";var o,r,i=n(6916),a=n(1702),s=n(1340),u=n(7066),c=n(2999),l=n(2309),f=n(30),p=n(9909).get,d=n(9441),h=n(7168),v=l(\"native-string-replace\",String.prototype.replace),g=RegExp.prototype.exec,y=g,m=a(\"\".charAt),b=a(\"\".indexOf),x=a(\"\".replace),w=a(\"\".slice),E=(r=/b*/g,i(g,o=/a/,\"a\"),i(g,r,\"a\"),0!==o.lastIndex||0!==r.lastIndex),O=c.BROKEN_CARET,S=void 0!==/()??/.exec(\"\")[1];(E||S||O||d||h)&&(y=function(t){var e,n,o,r,a,c,l,d=this,h=p(d),k=s(t),I=h.raw;if(I)return I.lastIndex=d.lastIndex,e=i(y,I,k),d.lastIndex=I.lastIndex,e;var C=h.groups,P=O&&d.sticky,A=i(u,d),M=d.source,T=0,D=k;if(P&&(A=x(A,\"y\",\"\"),-1===b(A,\"g\")&&(A+=\"g\"),D=w(k,d.lastIndex),d.lastIndex>0&&(!d.multiline||d.multiline&&\"\\n\"!==m(k,d.lastIndex-1))&&(M=\"(?: \"+M+\")\",D=\" \"+D,T++),n=new RegExp(\"^(?:\"+M+\")\",A)),S&&(n=new RegExp(\"^\"+M+\"$(?!\\\\s)\",A)),E&&(o=d.lastIndex),r=i(g,P?n:d,D),P?r?(r.input=w(r.input,T),r[0]=w(r[0],T),r.index=d.lastIndex,d.lastIndex+=r[0].length):d.lastIndex=0:E&&r&&(d.lastIndex=d.global?r.index+r[0].length:o),S&&r&&r.length>1&&i(v,r[0],n,(function(){for(a=1;a<arguments.length-2;a++)void 0===arguments[a]&&(r[a]=void 0)})),r&&C)for(r.groups=c=f(null),a=0;a<C.length;a++)c[(l=C[a])[0]]=r[l[1]];return r}),t.exports=y},7066:function(t,e,n){\"use strict\";var o=n(9670);t.exports=function(){var t=o(this),e=\"\";return t.hasIndices&&(e+=\"d\"),t.global&&(e+=\"g\"),t.ignoreCase&&(e+=\"i\"),t.multiline&&(e+=\"m\"),t.dotAll&&(e+=\"s\"),t.unicode&&(e+=\"u\"),t.unicodeSets&&(e+=\"v\"),t.sticky&&(e+=\"y\"),e}},4706:function(t,e,n){var o=n(6916),r=n(2597),i=n(7976),a=n(7066),s=RegExp.prototype;t.exports=function(t){var e=t.flags;return void 0!==e||\"flags\"in s||r(t,\"flags\")||!i(s,t)?e:o(a,t)}},2999:function(t,e,n){var o=n(7293),r=n(7854).RegExp,i=o((function(){var t=r(\"a\",\"y\");return t.lastIndex=2,null!=t.exec(\"abcd\")})),a=i||o((function(){return!r(\"a\",\"y\").sticky})),s=i||o((function(){var t=r(\"^r\",\"gy\");return t.lastIndex=2,null!=t.exec(\"str\")}));t.exports={BROKEN_CARET:s,MISSED_STICKY:a,UNSUPPORTED_Y:i}},9441:function(t,e,n){var o=n(7293),r=n(7854).RegExp;t.exports=o((function(){var t=r(\".\",\"s\");return!(t.dotAll&&t.exec(\"\\n\")&&\"s\"===t.flags)}))},7168:function(t,e,n){var o=n(7293),r=n(7854).RegExp;t.exports=o((function(){var t=r(\"(?<a>b)\",\"g\");return\"b\"!==t.exec(\"b\").groups.a||\"bc\"!==\"b\".replace(t,\"$<a>c\")}))},4488:function(t){var e=TypeError;t.exports=function(t){if(null==t)throw e(\"Can't call method on \"+t);return t}},6340:function(t,e,n){\"use strict\";var o=n(5005),r=n(3070),i=n(5112),a=n(9781),s=i(\"species\");t.exports=function(t){var e=o(t),n=r.f;a&&e&&!e[s]&&n(e,s,{configurable:!0,get:function(){return this}})}},8003:function(t,e,n){var o=n(3070).f,r=n(2597),i=n(5112)(\"toStringTag\");t.exports=function(t,e,n){t&&!n&&(t=t.prototype),t&&!r(t,i)&&o(t,i,{configurable:!0,value:e})}},6200:function(t,e,n){var o=n(2309),r=n(9711),i=o(\"keys\");t.exports=function(t){return i[t]||(i[t]=r(t))}},5465:function(t,e,n){var o=n(7854),r=n(3072),i=\"__core-js_shared__\",a=o[i]||r(i,{});t.exports=a},2309:function(t,e,n){var o=n(1913),r=n(5465);(t.exports=function(t,e){return r[t]||(r[t]=void 0!==e?e:{})})(\"versions\",[]).push({version:\"3.23.5\",mode:o?\"pure\":\"global\",copyright:\"© 2014-2022 Denis Pushkarev (zloirock.ru)\",license:\"https://github.com/zloirock/core-js/blob/v3.23.5/LICENSE\",source:\"https://github.com/zloirock/core-js\"})},6707:function(t,e,n){var o=n(9670),r=n(9483),i=n(5112)(\"species\");t.exports=function(t,e){var n,a=o(t).constructor;return void 0===a||null==(n=o(a)[i])?e:r(n)}},8710:function(t,e,n){var o=n(1702),r=n(9303),i=n(1340),a=n(4488),s=o(\"\".charAt),u=o(\"\".charCodeAt),c=o(\"\".slice),l=function(t){return function(e,n){var o,l,f=i(a(e)),p=r(n),d=f.length;return p<0||p>=d?t?\"\":void 0:(o=u(f,p))<55296||o>56319||p+1===d||(l=u(f,p+1))<56320||l>57343?t?s(f,p):o:t?c(f,p,p+2):l-56320+(o-55296<<10)+65536}};t.exports={codeAt:l(!1),charAt:l(!0)}},6091:function(t,e,n){var o=n(6530).PROPER,r=n(7293),i=n(1361);t.exports=function(t){return r((function(){return!!i[t]()||\"
\"!==\"
\"[t]()||o&&i[t].name!==t}))}},3111:function(t,e,n){var o=n(1702),r=n(4488),i=n(1340),a=n(1361),s=o(\"\".replace),u=\"[\"+a+\"]\",c=RegExp(\"^\"+u+u+\"*\"),l=RegExp(u+u+\"*$\"),f=function(t){return function(e){var n=i(r(e));return 1&t&&(n=s(n,c,\"\")),2&t&&(n=s(n,l,\"\")),n}};t.exports={start:f(1),end:f(2),trim:f(3)}},6532:function(t,e,n){var o=n(6916),r=n(5005),i=n(5112),a=n(8052);t.exports=function(){var t=r(\"Symbol\"),e=t&&t.prototype,n=e&&e.valueOf,s=i(\"toPrimitive\");e&&!e[s]&&a(e,s,(function(t){return o(n,this)}),{arity:1})}},863:function(t,e,n){var o=n(1702);t.exports=o(1..valueOf)},1400:function(t,e,n){var o=n(9303),r=Math.max,i=Math.min;t.exports=function(t,e){var n=o(t);return n<0?r(n+e,0):i(n,e)}},5656:function(t,e,n){var o=n(8361),r=n(4488);t.exports=function(t){return o(r(t))}},9303:function(t,e,n){var o=n(4758);t.exports=function(t){var e=+t;return e!=e||0===e?0:o(e)}},7466:function(t,e,n){var o=n(9303),r=Math.min;t.exports=function(t){return t>0?r(o(t),9007199254740991):0}},7908:function(t,e,n){var o=n(4488),r=Object;t.exports=function(t){return r(o(t))}},7593:function(t,e,n){var o=n(6916),r=n(111),i=n(2190),a=n(8173),s=n(2140),u=n(5112),c=TypeError,l=u(\"toPrimitive\");t.exports=function(t,e){if(!r(t)||i(t))return t;var n,u=a(t,l);if(u){if(void 0===e&&(e=\"default\"),n=o(u,t,e),!r(n)||i(n))return n;throw c(\"Can't convert object to primitive value\")}return void 0===e&&(e=\"number\"),s(t,e)}},4948:function(t,e,n){var o=n(7593),r=n(2190);t.exports=function(t){var e=o(t,\"string\");return r(e)?e:e+\"\"}},1694:function(t,e,n){var o={};o[n(5112)(\"toStringTag\")]=\"z\",t.exports=\"[object z]\"===String(o)},1340:function(t,e,n){var o=n(648),r=String;t.exports=function(t){if(\"Symbol\"===o(t))throw TypeError(\"Cannot convert a Symbol value to a string\");return r(t)}},6330:function(t){var e=String;t.exports=function(t){try{return e(t)}catch(t){return\"Object\"}}},9711:function(t,e,n){var o=n(1702),r=0,i=Math.random(),a=o(1..toString);t.exports=function(t){return\"Symbol(\"+(void 0===t?\"\":t)+\")_\"+a(++r+i,36)}},3307:function(t,e,n){var o=n(133);t.exports=o&&!Symbol.sham&&\"symbol\"==typeof Symbol.iterator},3353:function(t,e,n){var o=n(9781),r=n(7293);t.exports=o&&r((function(){return 42!=Object.defineProperty((function(){}),\"prototype\",{value:42,writable:!1}).prototype}))},6061:function(t,e,n){var o=n(5112);e.f=o},5112:function(t,e,n){var o=n(7854),r=n(2309),i=n(2597),a=n(9711),s=n(133),u=n(3307),c=r(\"wks\"),l=o.Symbol,f=l&&l.for,p=u?l:l&&l.withoutSetter||a;t.exports=function(t){if(!i(c,t)||!s&&\"string\"!=typeof c[t]){var e=\"Symbol.\"+t;s&&i(l,t)?c[t]=l[t]:c[t]=u&&f?f(e):p(e)}return c[t]}},1361:function(t){t.exports=\"\\t\\n\\v\\f\\r \\u2028\\u2029\\ufeff\"},2222:function(t,e,n){\"use strict\";var o=n(2109),r=n(7293),i=n(3157),a=n(111),s=n(7908),u=n(6244),c=n(7207),l=n(6135),f=n(5417),p=n(1194),d=n(5112),h=n(7392),v=d(\"isConcatSpreadable\"),g=h>=51||!r((function(){var t=[];return t[v]=!1,t.concat()[0]!==t})),y=p(\"concat\"),m=function(t){if(!a(t))return!1;var e=t[v];return void 0!==e?!!e:i(t)};o({target:\"Array\",proto:!0,arity:1,forced:!g||!y},{concat:function(t){var e,n,o,r,i,a=s(this),p=f(a,0),d=0;for(e=-1,o=arguments.length;e<o;e++)if(m(i=-1===e?a:arguments[e]))for(r=u(i),c(d+r),n=0;n<r;n++,d++)n in i&&l(p,d,i[n]);else c(d+1),l(p,d++,i);return p.length=d,p}})},7327:function(t,e,n){\"use strict\";var o=n(2109),r=n(2092).filter;o({target:\"Array\",proto:!0,forced:!n(1194)(\"filter\")},{filter:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}})},1038:function(t,e,n){var o=n(2109),r=n(8457);o({target:\"Array\",stat:!0,forced:!n(7072)((function(t){Array.from(t)}))},{from:r})},6699:function(t,e,n){\"use strict\";var o=n(2109),r=n(1318).includes,i=n(7293),a=n(1223);o({target:\"Array\",proto:!0,forced:i((function(){return!Array(1).includes()}))},{includes:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}}),a(\"includes\")},2772:function(t,e,n){\"use strict\";var o=n(2109),r=n(1702),i=n(1318).indexOf,a=n(9341),s=r([].indexOf),u=!!s&&1/s([1],1,-0)<0,c=a(\"indexOf\");o({target:\"Array\",proto:!0,forced:u||!c},{indexOf:function(t){var e=arguments.length>1?arguments[1]:void 0;return u?s(this,t,e)||0:i(this,t,e)}})},6992:function(t,e,n){\"use strict\";var o=n(5656),r=n(1223),i=n(7497),a=n(9909),s=n(3070).f,u=n(654),c=n(1913),l=n(9781),f=\"Array Iterator\",p=a.set,d=a.getterFor(f);t.exports=u(Array,\"Array\",(function(t,e){p(this,{type:f,target:o(t),index:0,kind:e})}),(function(){var t=d(this),e=t.target,n=t.kind,o=t.index++;return!e||o>=e.length?(t.target=void 0,{value:void 0,done:!0}):\"keys\"==n?{value:o,done:!1}:\"values\"==n?{value:e[o],done:!1}:{value:[o,e[o]],done:!1}}),\"values\");var h=i.Arguments=i.Array;if(r(\"keys\"),r(\"values\"),r(\"entries\"),!c&&l&&\"values\"!==h.name)try{s(h,\"name\",{value:\"values\"})}catch(t){}},9600:function(t,e,n){\"use strict\";var o=n(2109),r=n(1702),i=n(8361),a=n(5656),s=n(9341),u=r([].join),c=i!=Object,l=s(\"join\",\",\");o({target:\"Array\",proto:!0,forced:c||!l},{join:function(t){return u(a(this),void 0===t?\",\":t)}})},1249:function(t,e,n){\"use strict\";var o=n(2109),r=n(2092).map;o({target:\"Array\",proto:!0,forced:!n(1194)(\"map\")},{map:function(t){return r(this,t,arguments.length>1?arguments[1]:void 0)}})},5827:function(t,e,n){\"use strict\";var o=n(2109),r=n(3671).left,i=n(9341),a=n(7392),s=n(5268);o({target:\"Array\",proto:!0,forced:!i(\"reduce\")||!s&&a>79&&a<83},{reduce:function(t){var e=arguments.length;return r(this,t,e,e>1?arguments[1]:void 0)}})},7042:function(t,e,n){\"use strict\";var o=n(2109),r=n(3157),i=n(4411),a=n(111),s=n(1400),u=n(6244),c=n(5656),l=n(6135),f=n(5112),p=n(1194),d=n(206),h=p(\"slice\"),v=f(\"species\"),g=Array,y=Math.max;o({target:\"Array\",proto:!0,forced:!h},{slice:function(t,e){var n,o,f,p=c(this),h=u(p),m=s(t,h),b=s(void 0===e?h:e,h);if(r(p)&&(n=p.constructor,(i(n)&&(n===g||r(n.prototype))||a(n)&&null===(n=n[v]))&&(n=void 0),n===g||void 0===n))return d(p,m,b);for(o=new(void 0===n?g:n)(y(b-m,0)),f=0;m<b;m++,f++)m in p&&l(o,f,p[m]);return o.length=f,o}})},2707:function(t,e,n){\"use strict\";var o=n(2109),r=n(1702),i=n(9662),a=n(7908),s=n(6244),u=n(5117),c=n(1340),l=n(7293),f=n(4362),p=n(9341),d=n(8886),h=n(256),v=n(7392),g=n(8008),y=[],m=r(y.sort),b=r(y.push),x=l((function(){y.sort(void 0)})),w=l((function(){y.sort(null)})),E=p(\"sort\"),O=!l((function(){if(v)return v<70;if(!(d&&d>3)){if(h)return!0;if(g)return g<603;var t,e,n,o,r=\"\";for(t=65;t<76;t++){switch(e=String.fromCharCode(t),t){case 66:case 69:case 70:case 72:n=3;break;case 68:case 71:n=4;break;default:n=2}for(o=0;o<47;o++)y.push({k:e+o,v:n})}for(y.sort((function(t,e){return e.v-t.v})),o=0;o<y.length;o++)e=y[o].k.charAt(0),r.charAt(r.length-1)!==e&&(r+=e);return\"DGBEFHACIJK\"!==r}}));o({target:\"Array\",proto:!0,forced:x||!w||!E||!O},{sort:function(t){void 0!==t&&i(t);var e=a(this);if(O)return void 0===t?m(e):m(e,t);var n,o,r=[],l=s(e);for(o=0;o<l;o++)o in e&&b(r,e[o]);for(f(r,function(t){return function(e,n){return void 0===n?-1:void 0===e?1:void 0!==t?+t(e,n)||0:c(e)>c(n)?1:-1}}(t)),n=r.length,o=0;o<n;)e[o]=r[o++];for(;o<l;)u(e,o++);return e}})},561:function(t,e,n){\"use strict\";var o=n(2109),r=n(7908),i=n(1400),a=n(9303),s=n(6244),u=n(7207),c=n(5417),l=n(6135),f=n(5117),p=n(1194)(\"splice\"),d=Math.max,h=Math.min;o({target:\"Array\",proto:!0,forced:!p},{splice:function(t,e){var n,o,p,v,g,y,m=r(this),b=s(m),x=i(t,b),w=arguments.length;for(0===w?n=o=0:1===w?(n=0,o=b-x):(n=w-2,o=h(d(a(e),0),b-x)),u(b+n-o),p=c(m,o),v=0;v<o;v++)(g=x+v)in m&&l(p,v,m[g]);if(p.length=o,n<o){for(v=x;v<b-o;v++)y=v+n,(g=v+o)in m?m[y]=m[g]:f(m,y);for(v=b;v>b-o+n;v--)f(m,v-1)}else if(n>o)for(v=b-o;v>x;v--)y=v+n-1,(g=v+o-1)in m?m[y]=m[g]:f(m,y);for(v=0;v<n;v++)m[v+x]=arguments[v+2];return m.length=b-o+n,p}})},8309:function(t,e,n){var o=n(9781),r=n(6530).EXISTS,i=n(1702),a=n(3070).f,s=Function.prototype,u=i(s.toString),c=/function\\b(?:\\s|\\/\\*[\\S\\s]*?\\*\\/|\\/\\/[^\\n\\r]*[\\n\\r]+)*([^\\s(/]*)/,l=i(c.exec);o&&!r&&a(s,\"name\",{configurable:!0,get:function(){try{return l(c,u(this))[1]}catch(t){return\"\"}}})},8862:function(t,e,n){var o=n(2109),r=n(5005),i=n(2104),a=n(6916),s=n(1702),u=n(7293),c=n(3157),l=n(614),f=n(111),p=n(2190),d=n(206),h=n(133),v=r(\"JSON\",\"stringify\"),g=s(/./.exec),y=s(\"\".charAt),m=s(\"\".charCodeAt),b=s(\"\".replace),x=s(1..toString),w=/[\\uD800-\\uDFFF]/g,E=/^[\\uD800-\\uDBFF]$/,O=/^[\\uDC00-\\uDFFF]$/,S=!h||u((function(){var t=r(\"Symbol\")();return\"[null]\"!=v([t])||\"{}\"!=v({a:t})||\"{}\"!=v(Object(t))})),k=u((function(){return'\"\\\\udf06\\\\ud834\"'!==v(\"\\udf06\\ud834\")||'\"\\\\udead\"'!==v(\"\\udead\")})),I=function(t,e){var n=d(arguments),o=e;if((f(e)||void 0!==t)&&!p(t))return c(e)||(e=function(t,e){if(l(o)&&(e=a(o,this,t,e)),!p(e))return e}),n[1]=e,i(v,null,n)},C=function(t,e,n){var o=y(n,e-1),r=y(n,e+1);return g(E,t)&&!g(O,r)||g(O,t)&&!g(E,o)?\"\\\\u\"+x(m(t,0),16):t};v&&o({target:\"JSON\",stat:!0,arity:3,forced:S||k},{stringify:function(t,e,n){var o=d(arguments),r=i(S?I:v,null,o);return k&&\"string\"==typeof r?b(r,w,C):r}})},9653:function(t,e,n){\"use strict\";var o=n(9781),r=n(7854),i=n(1702),a=n(4705),s=n(8052),u=n(2597),c=n(9587),l=n(7976),f=n(2190),p=n(7593),d=n(7293),h=n(8006).f,v=n(1236).f,g=n(3070).f,y=n(863),m=n(3111).trim,b=\"Number\",x=r.Number,w=x.prototype,E=r.TypeError,O=i(\"\".slice),S=i(\"\".charCodeAt),k=function(t){var e=p(t,\"number\");return\"bigint\"==typeof e?e:I(e)},I=function(t){var e,n,o,r,i,a,s,u,c=p(t,\"number\");if(f(c))throw E(\"Cannot convert a Symbol value to a number\");if(\"string\"==typeof c&&c.length>2)if(c=m(c),43===(e=S(c,0))||45===e){if(88===(n=S(c,2))||120===n)return NaN}else if(48===e){switch(S(c,1)){case 66:case 98:o=2,r=49;break;case 79:case 111:o=8,r=55;break;default:return+c}for(a=(i=O(c,2)).length,s=0;s<a;s++)if((u=S(i,s))<48||u>r)return NaN;return parseInt(i,o)}return+c};if(a(b,!x(\" 0o1\")||!x(\"0b1\")||x(\"+0x1\"))){for(var C,P=function(t){var e=arguments.length<1?0:x(k(t)),n=this;return l(w,n)&&d((function(){y(n)}))?c(Object(e),n,P):e},A=o?h(x):\"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,fromString,range\".split(\",\"),M=0;A.length>M;M++)u(x,C=A[M])&&!u(P,C)&&g(P,C,v(x,C));P.prototype=w,w.constructor=P,s(r,b,P,{constructor:!0})}},3161:function(t,e,n){n(2109)({target:\"Number\",stat:!0},{isInteger:n(5988)})},9601:function(t,e,n){var o=n(2109),r=n(1574);o({target:\"Object\",stat:!0,arity:2,forced:Object.assign!==r},{assign:r})},9595:function(t,e,n){\"use strict\";var o=n(2109),r=n(9781),i=n(9026),a=n(9662),s=n(7908),u=n(3070);r&&o({target:\"Object\",proto:!0,forced:i},{__defineGetter__:function(t,e){u.f(s(this),t,{get:a(e),enumerable:!0,configurable:!0})}})},5003:function(t,e,n){var o=n(2109),r=n(7293),i=n(5656),a=n(1236).f,s=n(9781),u=r((function(){a(1)}));o({target:\"Object\",stat:!0,forced:!s||u,sham:!s},{getOwnPropertyDescriptor:function(t,e){return a(i(t),e)}})},9337:function(t,e,n){var o=n(2109),r=n(9781),i=n(3887),a=n(5656),s=n(1236),u=n(6135);o({target:\"Object\",stat:!0,sham:!r},{getOwnPropertyDescriptors:function(t){for(var e,n,o=a(t),r=s.f,c=i(o),l={},f=0;c.length>f;)void 0!==(n=r(o,e=c[f++]))&&u(l,e,n);return l}})},6210:function(t,e,n){var o=n(2109),r=n(7293),i=n(1156).f;o({target:\"Object\",stat:!0,forced:r((function(){return!Object.getOwnPropertyNames(1)}))},{getOwnPropertyNames:i})},9660:function(t,e,n){var o=n(2109),r=n(133),i=n(7293),a=n(5181),s=n(7908);o({target:\"Object\",stat:!0,forced:!r||i((function(){a.f(1)}))},{getOwnPropertySymbols:function(t){var e=a.f;return e?e(s(t)):[]}})},7941:function(t,e,n){var o=n(2109),r=n(7908),i=n(1956);o({target:\"Object\",stat:!0,forced:n(7293)((function(){i(1)}))},{keys:function(t){return i(r(t))}})},1539:function(t,e,n){var o=n(1694),r=n(8052),i=n(288);o||r(Object.prototype,\"toString\",i,{unsafe:!0})},4603:function(t,e,n){var o=n(9781),r=n(7854),i=n(1702),a=n(4705),s=n(9587),u=n(8880),c=n(8006).f,l=n(7976),f=n(7850),p=n(1340),d=n(4706),h=n(2999),v=n(2626),g=n(8052),y=n(7293),m=n(2597),b=n(9909).enforce,x=n(6340),w=n(5112),E=n(9441),O=n(7168),S=w(\"match\"),k=r.RegExp,I=k.prototype,C=r.SyntaxError,P=i(I.exec),A=i(\"\".charAt),M=i(\"\".replace),T=i(\"\".indexOf),D=i(\"\".slice),N=/^\\?<[^\\s\\d!#%&*+<=>@^][^\\s!#%&*+<=>@^]*>/,j=/a/g,R=/a/g,L=new k(j)!==j,B=h.MISSED_STICKY,F=h.UNSUPPORTED_Y,_=o&&(!L||B||E||O||y((function(){return R[S]=!1,k(j)!=j||k(R)==R||\"/a/i\"!=k(j,\"i\")})));if(a(\"RegExp\",_)){for(var K=function(t,e){var n,o,r,i,a,c,h=l(I,this),v=f(t),g=void 0===e,y=[],x=t;if(!h&&v&&g&&t.constructor===K)return t;if((v||l(I,t))&&(t=t.source,g&&(e=d(x))),t=void 0===t?\"\":p(t),e=void 0===e?\"\":p(e),x=t,E&&\"dotAll\"in j&&(o=!!e&&T(e,\"s\")>-1)&&(e=M(e,/s/g,\"\")),n=e,B&&\"sticky\"in j&&(r=!!e&&T(e,\"y\")>-1)&&F&&(e=M(e,/y/g,\"\")),O&&(t=(i=function(t){for(var e,n=t.length,o=0,r=\"\",i=[],a={},s=!1,u=!1,c=0,l=\"\";o<=n;o++){if(\"\\\\\"===(e=A(t,o)))e+=A(t,++o);else if(\"]\"===e)s=!1;else if(!s)switch(!0){case\"[\"===e:s=!0;break;case\"(\"===e:P(N,D(t,o+1))&&(o+=2,u=!0),r+=e,c++;continue;case\">\"===e&&u:if(\"\"===l||m(a,l))throw new C(\"Invalid capture group name\");a[l]=!0,i[i.length]=[l,c],u=!1,l=\"\";continue}u?l+=e:r+=e}return[r,i]}(t))[0],y=i[1]),a=s(k(t,e),h?this:I,K),(o||r||y.length)&&(c=b(a),o&&(c.dotAll=!0,c.raw=K(function(t){for(var e,n=t.length,o=0,r=\"\",i=!1;o<=n;o++)\"\\\\\"!==(e=A(t,o))?i||\".\"!==e?(\"[\"===e?i=!0:\"]\"===e&&(i=!1),r+=e):r+=\"[\\\\s\\\\S]\":r+=e+A(t,++o);return r}(t),n)),r&&(c.sticky=!0),y.length&&(c.groups=y)),t!==x)try{u(a,\"source\",\"\"===x?\"(?:)\":x)}catch(t){}return a},U=c(k),H=0;U.length>H;)v(K,k,U[H++]);I.constructor=K,K.prototype=I,g(r,\"RegExp\",K,{constructor:!0})}x(\"RegExp\")},4916:function(t,e,n){\"use strict\";var o=n(2109),r=n(2261);o({target:\"RegExp\",proto:!0,forced:/./.exec!==r},{exec:r})},9714:function(t,e,n){\"use strict\";var o=n(6530).PROPER,r=n(8052),i=n(9670),a=n(1340),s=n(7293),u=n(4706),c=\"toString\",l=RegExp.prototype.toString,f=s((function(){return\"/a/b\"!=l.call({source:\"a\",flags:\"b\"})})),p=o&&l.name!=c;(f||p)&&r(RegExp.prototype,c,(function(){var t=i(this);return\"/\"+a(t.source)+\"/\"+a(u(t))}),{unsafe:!0})},2023:function(t,e,n){\"use strict\";var o=n(2109),r=n(1702),i=n(3929),a=n(4488),s=n(1340),u=n(4964),c=r(\"\".indexOf);o({target:\"String\",proto:!0,forced:!u(\"includes\")},{includes:function(t){return!!~c(s(a(this)),s(i(t)),arguments.length>1?arguments[1]:void 0)}})},8783:function(t,e,n){\"use strict\";var o=n(8710).charAt,r=n(1340),i=n(9909),a=n(654),s=\"String Iterator\",u=i.set,c=i.getterFor(s);a(String,\"String\",(function(t){u(this,{type:s,string:r(t),index:0})}),(function(){var t,e=c(this),n=e.string,r=e.index;return r>=n.length?{value:void 0,done:!0}:(t=o(n,r),e.index+=t.length,{value:t,done:!1})}))},6373:function(t,e,n){\"use strict\";var o=n(2109),r=n(6916),i=n(1702),a=n(4994),s=n(4488),u=n(7466),c=n(1340),l=n(9670),f=n(4326),p=n(7850),d=n(4706),h=n(8173),v=n(8052),g=n(7293),y=n(5112),m=n(6707),b=n(1530),x=n(7651),w=n(9909),E=n(1913),O=y(\"matchAll\"),S=\"RegExp String\",k=\"RegExp String Iterator\",I=w.set,C=w.getterFor(k),P=RegExp.prototype,A=TypeError,M=i(\"\".indexOf),T=i(\"\".matchAll),D=!!T&&!g((function(){T(\"a\",/./)})),N=a((function(t,e,n,o){I(this,{type:k,regexp:t,string:e,global:n,unicode:o,done:!1})}),S,(function(){var t=C(this);if(t.done)return{value:void 0,done:!0};var e=t.regexp,n=t.string,o=x(e,n);return null===o?{value:void 0,done:t.done=!0}:t.global?(\"\"===c(o[0])&&(e.lastIndex=b(n,u(e.lastIndex),t.unicode)),{value:o,done:!1}):(t.done=!0,{value:o,done:!1})})),j=function(t){var e,n,o,r=l(this),i=c(t),a=m(r,RegExp),s=c(d(r));return e=new a(a===RegExp?r.source:r,s),n=!!~M(s,\"g\"),o=!!~M(s,\"u\"),e.lastIndex=u(r.lastIndex),new N(e,i,n,o)};o({target:\"String\",proto:!0,forced:D},{matchAll:function(t){var e,n,o,i,a=s(this);if(null!=t){if(p(t)&&(e=c(s(d(t))),!~M(e,\"g\")))throw A(\"`.matchAll` does not allow non-global regexes\");if(D)return T(a,t);if(void 0===(o=h(t,O))&&E&&\"RegExp\"==f(t)&&(o=j),o)return r(o,t,a)}else if(D)return T(a,t);return n=c(a),i=new RegExp(t,\"g\"),E?r(j,i,n):i[O](n)}}),E||O in P||v(P,O,j)},4723:function(t,e,n){\"use strict\";var o=n(6916),r=n(7007),i=n(9670),a=n(7466),s=n(1340),u=n(4488),c=n(8173),l=n(1530),f=n(7651);r(\"match\",(function(t,e,n){return[function(e){var n=u(this),r=null==e?void 0:c(e,t);return r?o(r,e,n):new RegExp(e)[t](s(n))},function(t){var o=i(this),r=s(t),u=n(e,o,r);if(u.done)return u.value;if(!o.global)return f(o,r);var c=o.unicode;o.lastIndex=0;for(var p,d=[],h=0;null!==(p=f(o,r));){var v=s(p[0]);d[h]=v,\"\"===v&&(o.lastIndex=l(r,a(o.lastIndex),c)),h++}return 0===h?null:d}]}))},5306:function(t,e,n){\"use strict\";var o=n(2104),r=n(6916),i=n(1702),a=n(7007),s=n(7293),u=n(9670),c=n(614),l=n(9303),f=n(7466),p=n(1340),d=n(4488),h=n(1530),v=n(8173),g=n(647),y=n(7651),m=n(5112)(\"replace\"),b=Math.max,x=Math.min,w=i([].concat),E=i([].push),O=i(\"\".indexOf),S=i(\"\".slice),k=\"$0\"===\"a\".replace(/./,\"$0\"),I=!!/./[m]&&\"\"===/./[m](\"a\",\"$0\");a(\"replace\",(function(t,e,n){var i=I?\"$\":\"$0\";return[function(t,n){var o=d(this),i=null==t?void 0:v(t,m);return i?r(i,t,o,n):r(e,p(o),t,n)},function(t,r){var a=u(this),s=p(t);if(\"string\"==typeof r&&-1===O(r,i)&&-1===O(r,\"$<\")){var d=n(e,a,s,r);if(d.done)return d.value}var v=c(r);v||(r=p(r));var m=a.global;if(m){var k=a.unicode;a.lastIndex=0}for(var I=[];;){var C=y(a,s);if(null===C)break;if(E(I,C),!m)break;\"\"===p(C[0])&&(a.lastIndex=h(s,f(a.lastIndex),k))}for(var P,A=\"\",M=0,T=0;T<I.length;T++){for(var D=p((C=I[T])[0]),N=b(x(l(C.index),s.length),0),j=[],R=1;R<C.length;R++)E(j,void 0===(P=C[R])?P:String(P));var L=C.groups;if(v){var B=w([D],j,N,s);void 0!==L&&E(B,L);var F=p(o(r,void 0,B))}else F=g(D,s,N,j,L,r);N>=M&&(A+=S(s,M,N)+F,M=N+D.length)}return A+S(s,M)}]}),!!s((function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:\"7\"},t},\"7\"!==\"\".replace(t,\"$<a>\")}))||!k||I)},3123:function(t,e,n){\"use strict\";var o=n(2104),r=n(6916),i=n(1702),a=n(7007),s=n(7850),u=n(9670),c=n(4488),l=n(6707),f=n(1530),p=n(7466),d=n(1340),h=n(8173),v=n(1589),g=n(7651),y=n(2261),m=n(2999),b=n(7293),x=m.UNSUPPORTED_Y,w=4294967295,E=Math.min,O=[].push,S=i(/./.exec),k=i(O),I=i(\"\".slice);a(\"split\",(function(t,e,n){var i;return i=\"c\"==\"abbc\".split(/(b)*/)[1]||4!=\"test\".split(/(?:)/,-1).length||2!=\"ab\".split(/(?:ab)*/).length||4!=\".\".split(/(.?)(.?)/).length||\".\".split(/()()/).length>1||\"\".split(/.?/).length?function(t,n){var i=d(c(this)),a=void 0===n?w:n>>>0;if(0===a)return[];if(void 0===t)return[i];if(!s(t))return r(e,i,t,a);for(var u,l,f,p=[],h=(t.ignoreCase?\"i\":\"\")+(t.multiline?\"m\":\"\")+(t.unicode?\"u\":\"\")+(t.sticky?\"y\":\"\"),g=0,m=new RegExp(t.source,h+\"g\");(u=r(y,m,i))&&!((l=m.lastIndex)>g&&(k(p,I(i,g,u.index)),u.length>1&&u.index<i.length&&o(O,p,v(u,1)),f=u[0].length,g=l,p.length>=a));)m.lastIndex===u.index&&m.lastIndex++;return g===i.length?!f&&S(m,\"\")||k(p,\"\"):k(p,I(i,g)),p.length>a?v(p,0,a):p}:\"0\".split(void 0,0).length?function(t,n){return void 0===t&&0===n?[]:r(e,this,t,n)}:e,[function(e,n){var o=c(this),a=null==e?void 0:h(e,t);return a?r(a,e,o,n):r(i,d(o),e,n)},function(t,o){var r=u(this),a=d(t),s=n(i,r,a,o,i!==e);if(s.done)return s.value;var c=l(r,RegExp),h=r.unicode,v=(r.ignoreCase?\"i\":\"\")+(r.multiline?\"m\":\"\")+(r.unicode?\"u\":\"\")+(x?\"g\":\"y\"),y=new c(x?\"^(?:\"+r.source+\")\":r,v),m=void 0===o?w:o>>>0;if(0===m)return[];if(0===a.length)return null===g(y,a)?[a]:[];for(var b=0,O=0,S=[];O<a.length;){y.lastIndex=x?0:O;var C,P=g(y,x?I(a,O):a);if(null===P||(C=E(p(y.lastIndex+(x?O:0)),a.length))===b)O=f(a,O,h);else{if(k(S,I(a,b,O)),S.length===m)return S;for(var A=1;A<=P.length-1;A++)if(k(S,P[A]),S.length===m)return S;O=b=C}}return k(S,I(a,b)),S}]}),!!b((function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var n=\"ab\".split(t);return 2!==n.length||\"a\"!==n[0]||\"b\"!==n[1]})),x)},3210:function(t,e,n){\"use strict\";var o=n(2109),r=n(3111).trim;o({target:\"String\",proto:!0,forced:n(6091)(\"trim\")},{trim:function(){return r(this)}})},4032:function(t,e,n){\"use strict\";var o=n(2109),r=n(7854),i=n(6916),a=n(1702),s=n(1913),u=n(9781),c=n(133),l=n(7293),f=n(2597),p=n(7976),d=n(9670),h=n(5656),v=n(4948),g=n(1340),y=n(9114),m=n(30),b=n(1956),x=n(8006),w=n(1156),E=n(5181),O=n(1236),S=n(3070),k=n(6048),I=n(5296),C=n(8052),P=n(2309),A=n(6200),M=n(3501),T=n(9711),D=n(5112),N=n(6061),j=n(7235),R=n(6532),L=n(8003),B=n(9909),F=n(2092).forEach,_=A(\"hidden\"),K=\"Symbol\",U=B.set,H=B.getterFor(K),$=Object.prototype,G=r.Symbol,V=G&&G.prototype,z=r.TypeError,Y=r.QObject,W=O.f,X=S.f,J=w.f,q=I.f,Q=a([].push),Z=P(\"symbols\"),tt=P(\"op-symbols\"),et=P(\"wks\"),nt=!Y||!Y.prototype||!Y.prototype.findChild,ot=u&&l((function(){return 7!=m(X({},\"a\",{get:function(){return X(this,\"a\",{value:7}).a}})).a}))?function(t,e,n){var o=W($,e);o&&delete $[e],X(t,e,n),o&&t!==$&&X($,e,o)}:X,rt=function(t,e){var n=Z[t]=m(V);return U(n,{type:K,tag:t,description:e}),u||(n.description=e),n},it=function(t,e,n){t===$&&it(tt,e,n),d(t);var o=v(e);return d(n),f(Z,o)?(n.enumerable?(f(t,_)&&t[_][o]&&(t[_][o]=!1),n=m(n,{enumerable:y(0,!1)})):(f(t,_)||X(t,_,y(1,{})),t[_][o]=!0),ot(t,o,n)):X(t,o,n)},at=function(t,e){d(t);var n=h(e),o=b(n).concat(lt(n));return F(o,(function(e){u&&!i(st,n,e)||it(t,e,n[e])})),t},st=function(t){var e=v(t),n=i(q,this,e);return!(this===$&&f(Z,e)&&!f(tt,e))&&(!(n||!f(this,e)||!f(Z,e)||f(this,_)&&this[_][e])||n)},ut=function(t,e){var n=h(t),o=v(e);if(n!==$||!f(Z,o)||f(tt,o)){var r=W(n,o);return!r||!f(Z,o)||f(n,_)&&n[_][o]||(r.enumerable=!0),r}},ct=function(t){var e=J(h(t)),n=[];return F(e,(function(t){f(Z,t)||f(M,t)||Q(n,t)})),n},lt=function(t){var e=t===$,n=J(e?tt:h(t)),o=[];return F(n,(function(t){!f(Z,t)||e&&!f($,t)||Q(o,Z[t])})),o};c||(C(V=(G=function(){if(p(V,this))throw z(\"Symbol is not a constructor\");var t=arguments.length&&void 0!==arguments[0]?g(arguments[0]):void 0,e=T(t),n=function(t){this===$&&i(n,tt,t),f(this,_)&&f(this[_],e)&&(this[_][e]=!1),ot(this,e,y(1,t))};return u&&nt&&ot($,e,{configurable:!0,set:n}),rt(e,t)}).prototype,\"toString\",(function(){return H(this).tag})),C(G,\"withoutSetter\",(function(t){return rt(T(t),t)})),I.f=st,S.f=it,k.f=at,O.f=ut,x.f=w.f=ct,E.f=lt,N.f=function(t){return rt(D(t),t)},u&&(X(V,\"description\",{configurable:!0,get:function(){return H(this).description}}),s||C($,\"propertyIsEnumerable\",st,{unsafe:!0}))),o({global:!0,constructor:!0,wrap:!0,forced:!c,sham:!c},{Symbol:G}),F(b(et),(function(t){j(t)})),o({target:K,stat:!0,forced:!c},{useSetter:function(){nt=!0},useSimple:function(){nt=!1}}),o({target:\"Object\",stat:!0,forced:!c,sham:!u},{create:function(t,e){return void 0===e?m(t):at(m(t),e)},defineProperty:it,defineProperties:at,getOwnPropertyDescriptor:ut}),o({target:\"Object\",stat:!0,forced:!c},{getOwnPropertyNames:ct}),R(),L(G,K),M[_]=!0},1817:function(t,e,n){\"use strict\";var o=n(2109),r=n(9781),i=n(7854),a=n(1702),s=n(2597),u=n(614),c=n(7976),l=n(1340),f=n(3070).f,p=n(9920),d=i.Symbol,h=d&&d.prototype;if(r&&u(d)&&(!(\"description\"in h)||void 0!==d().description)){var v={},g=function(){var t=arguments.length<1||void 0===arguments[0]?void 0:l(arguments[0]),e=c(h,this)?new d(t):void 0===t?d():d(t);return\"\"===t&&(v[e]=!0),e};p(g,d),g.prototype=h,h.constructor=g;var y=\"Symbol(test)\"==String(d(\"test\")),m=a(h.toString),b=a(h.valueOf),x=/^Symbol\\((.*)\\)[^)]+$/,w=a(\"\".replace),E=a(\"\".slice);f(h,\"description\",{configurable:!0,get:function(){var t=b(this),e=m(t);if(s(v,t))return\"\";var n=y?E(e,7,-1):w(e,x,\"$1\");return\"\"===n?void 0:n}}),o({global:!0,constructor:!0,forced:!0},{Symbol:g})}},763:function(t,e,n){var o=n(2109),r=n(5005),i=n(2597),a=n(1340),s=n(2309),u=n(735),c=s(\"string-to-symbol-registry\"),l=s(\"symbol-to-string-registry\");o({target:\"Symbol\",stat:!0,forced:!u},{for:function(t){var e=a(t);if(i(c,e))return c[e];var n=r(\"Symbol\")(e);return c[e]=n,l[n]=e,n}})},2165:function(t,e,n){n(7235)(\"iterator\")},2526:function(t,e,n){n(4032),n(763),n(6620),n(8862),n(9660)},6620:function(t,e,n){var o=n(2109),r=n(2597),i=n(2190),a=n(6330),s=n(2309),u=n(735),c=s(\"symbol-to-string-registry\");o({target:\"Symbol\",stat:!0,forced:!u},{keyFor:function(t){if(!i(t))throw TypeError(a(t)+\" is not a symbol\");if(r(c,t))return c[t]}})},3728:function(t,e,n){n(6373)},4747:function(t,e,n){var o=n(7854),r=n(8324),i=n(8509),a=n(8533),s=n(8880),u=function(t){if(t&&t.forEach!==a)try{s(t,\"forEach\",a)}catch(e){t.forEach=a}};for(var c in r)r[c]&&u(o[c]&&o[c].prototype);u(i)},3948:function(t,e,n){var o=n(7854),r=n(8324),i=n(8509),a=n(6992),s=n(8880),u=n(5112),c=u(\"iterator\"),l=u(\"toStringTag\"),f=a.values,p=function(t,e){if(t){if(t[c]!==f)try{s(t,c,f)}catch(e){t[c]=f}if(t[l]||s(t,l,e),r[e])for(var n in a)if(t[n]!==a[n])try{s(t,n,a[n])}catch(e){t[n]=a[n]}}};for(var d in r)p(o[d]&&o[d].prototype,d);p(i,\"DOMTokenList\")}},e={};function n(o){var r=e[o];if(void 0!==r)return r.exports;var i=e[o]={exports:{}};return t[o](i,i.exports,n),i.exports}n.d=function(t,e){for(var o in e)n.o(e,o)&&!n.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:e[o]})},n.g=function(){if(\"object\"==typeof globalThis)return globalThis;try{return this||new Function(\"return this\")()}catch(t){if(\"object\"==typeof window)return window}}(),n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})};var o={};return function(){\"use strict\";n.r(o),n.d(o,{default:function(){return x}});n(3210),n(4916),n(5306),n(2772),n(8309),n(3123),n(1539),n(9714),n(561),n(9600),n(9595),n(7042);\"undefined\"==typeof Element||\"remove\"in Element.prototype||(Element.prototype.remove=function(){this.parentNode&&this.parentNode.removeChild(this)}),\"undefined\"!=typeof self&&\"document\"in self&&((!(\"classList\"in document.createElement(\"_\"))||document.createElementNS&&!(\"classList\"in document.createElementNS(\"http://www.w3.org/2000/svg\",\"g\")))&&function(t){if(\"Element\"in t){var e=\"classList\",n=t.Element.prototype,o=Object,r=String.prototype.trim||function(){return this.replace(/^\\s+|\\s+$/g,\"\")},i=Array.prototype.indexOf||function(t){for(var e=0,n=this.length;e<n;e++)if(e in this&&this[e]===t)return e;return-1},a=function(t,e){this.name=t,this.code=DOMException[t],this.message=e},s=function(t,e){if(\"\"===e)throw new a(\"SYNTAX_ERR\",\"The token must not be empty.\");if(/\\s/.test(e))throw new a(\"INVALID_CHARACTER_ERR\",\"The token must not contain space characters.\");return i.call(t,e)},u=function(t){for(var e=r.call(t.getAttribute(\"class\")||\"\"),n=e?e.split(/\\s+/):[],o=0,i=n.length;o<i;o++)this.push(n[o]);this._updateClassName=function(){t.setAttribute(\"class\",this.toString())}},c=u.prototype=[],l=function(){return new u(this)};if(a.prototype=Error.prototype,c.item=function(t){return this[t]||null},c.contains=function(t){return~s(this,t+\"\")},c.add=function(){var t,e=arguments,n=0,o=e.length,r=!1;do{t=e[n]+\"\",~s(this,t)||(this.push(t),r=!0)}while(++n<o);r&&this._updateClassName()},c.remove=function(){var t,e,n=arguments,o=0,r=n.length,i=!1;do{for(t=n[o]+\"\",e=s(this,t);~e;)this.splice(e,1),i=!0,e=s(this,t)}while(++o<r);i&&this._updateClassName()},c.toggle=function(t,e){var n=this.contains(t),o=n?!0!==e&&\"remove\":!1!==e&&\"add\";return o&&this[o](t),!0===e||!1===e?e:!n},c.replace=function(t,e){var n=s(t+\"\");~n&&(this.splice(n,1,e),this._updateClassName())},c.toString=function(){return this.join(\" \")},o.defineProperty){var f={get:l,enumerable:!0,configurable:!0};try{o.defineProperty(n,e,f)}catch(t){void 0!==t.number&&-2146823252!==t.number||(f.enumerable=!1,o.defineProperty(n,e,f))}}else o.prototype.__defineGetter__&&n.__defineGetter__(e,l)}}(self),function(){var t=document.createElement(\"_\");if(t.classList.add(\"c1\",\"c2\"),!t.classList.contains(\"c2\")){var e=function(t){var e=DOMTokenList.prototype[t];DOMTokenList.prototype[t]=function(t){var n,o=arguments.length;for(n=0;n<o;n++)t=arguments[n],e.call(this,t)}};e(\"add\"),e(\"remove\")}if(t.classList.toggle(\"c3\",!1),t.classList.contains(\"c3\")){var n=DOMTokenList.prototype.toggle;DOMTokenList.prototype.toggle=function(t,e){return 1 in arguments&&!this.contains(t)==!e?e:n.call(this,t)}}\"replace\"in document.createElement(\"_\").classList||(DOMTokenList.prototype.replace=function(t,e){var n=this.toString().split(\" \"),o=n.indexOf(t+\"\");~o&&(n=n.slice(o),this.remove.apply(this,n),this.add(e),this.add.apply(this,n.slice(1)))}),t=null}());n(7327),n(2222),n(7941),n(4603),n(3728),n(2707),n(6699),n(2023),n(4747),n(9601),n(1249),n(1038),n(8783),n(2526),n(5003),n(9337),n(1817),n(2165),n(6992),n(3948),n(3161),n(9653),n(4723),n(5827),n(6210);function t(t){return function(t){if(Array.isArray(t))return r(t)}(t)||function(t){if(\"undefined\"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t[\"@@iterator\"])return Array.from(t)}(t)||e(t)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function e(t,e){if(t){if(\"string\"==typeof t)return r(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);return\"Object\"===n&&t.constructor&&(n=t.constructor.name),\"Map\"===n||\"Set\"===n?Array.from(t):\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?r(t,e):void 0}}function r(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,o=new Array(e);n<e;n++)o[n]=t[n];return o}function i(t){return(i=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function a(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function s(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var u=function(){function n(t){var e=t.getOptions,o=t.getCaretPosition,r=t.getCaretPositionEnd,i=t.dispatch;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,n),s(this,\"isStandardButton\",(function(t){return t&&!(\"{\"===t[0]&&\"}\"===t[t.length-1])})),this.getOptions=e,this.getCaretPosition=o,this.getCaretPositionEnd=r,this.dispatch=i,n.bindMethods(n,this)}var o,r,u;return o=n,u=[{key:\"bindMethods\",value:function(t,n){var o,r=function(t,n){var o=\"undefined\"!=typeof Symbol&&t[Symbol.iterator]||t[\"@@iterator\"];if(!o){if(Array.isArray(t)||(o=e(t))||n&&t&&\"number\"==typeof t.length){o&&(t=o);var r=0,i=function(){};return{s:i,n:function(){return r>=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:i}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var a,s=!0,u=!1;return{s:function(){o=o.call(t)},n:function(){var t=o.next();return s=t.done,t},e:function(t){u=!0,a=t},f:function(){try{s||null==o.return||o.return()}finally{if(u)throw a}}}}(Object.getOwnPropertyNames(t.prototype));try{for(r.s();!(o=r.n()).done;){var i=o.value;\"constructor\"===i||\"bindMethods\"===i||(n[i]=n[i].bind(n))}}catch(t){r.e(t)}finally{r.f()}}}],(r=[{key:\"getButtonType\",value:function(t){return t.includes(\"{\")&&t.includes(\"}\")&&\"{//}\"!==t?\"functionBtn\":\"standardBtn\"}},{key:\"getButtonClass\",value:function(t){var e=this.getButtonType(t),n=t.replace(\"{\",\"\").replace(\"}\",\"\"),o=\"\";return\"standardBtn\"!==e&&(o=\" hg-button-\".concat(n)),\"hg-\".concat(e).concat(o)}},{key:\"getDefaultDiplay\",value:function(){return{\"{bksp}\":\"backspace\",\"{backspace}\":\"backspace\",\"{enter}\":\"< enter\",\"{shift}\":\"shift\",\"{shiftleft}\":\"shift\",\"{shiftright}\":\"shift\",\"{alt}\":\"alt\",\"{s}\":\"shift\",\"{tab}\":\"tab\",\"{lock}\":\"caps\",\"{capslock}\":\"caps\",\"{accept}\":\"Submit\",\"{space}\":\" \",\"{//}\":\" \",\"{esc}\":\"esc\",\"{escape}\":\"esc\",\"{f1}\":\"f1\",\"{f2}\":\"f2\",\"{f3}\":\"f3\",\"{f4}\":\"f4\",\"{f5}\":\"f5\",\"{f6}\":\"f6\",\"{f7}\":\"f7\",\"{f8}\":\"f8\",\"{f9}\":\"f9\",\"{f10}\":\"f10\",\"{f11}\":\"f11\",\"{f12}\":\"f12\",\"{numpaddivide}\":\"/\",\"{numlock}\":\"lock\",\"{arrowup}\":\"↑\",\"{arrowleft}\":\"←\",\"{arrowdown}\":\"↓\",\"{arrowright}\":\"→\",\"{prtscr}\":\"print\",\"{scrolllock}\":\"scroll\",\"{pause}\":\"pause\",\"{insert}\":\"ins\",\"{home}\":\"home\",\"{pageup}\":\"up\",\"{delete}\":\"del\",\"{forwarddelete}\":\"del\",\"{end}\":\"end\",\"{pagedown}\":\"down\",\"{numpadmultiply}\":\"*\",\"{numpadsubtract}\":\"-\",\"{numpadadd}\":\"+\",\"{numpadenter}\":\"enter\",\"{period}\":\".\",\"{numpaddecimal}\":\".\",\"{numpad0}\":\"0\",\"{numpad1}\":\"1\",\"{numpad2}\":\"2\",\"{numpad3}\":\"3\",\"{numpad4}\":\"4\",\"{numpad5}\":\"5\",\"{numpad6}\":\"6\",\"{numpad7}\":\"7\",\"{numpad8}\":\"8\",\"{numpad9}\":\"9\"}}},{key:\"getButtonDisplayName\",value:function(t,e,n){return(e=n?Object.assign({},this.getDefaultDiplay(),e):e||this.getDefaultDiplay())[t]||t}},{key:\"getUpdatedInput\",value:function(t,e,n){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:n,r=arguments.length>4&&void 0!==arguments[4]&&arguments[4],i=this.getOptions(),a=[n,o,r],s=e;return(\"{bksp}\"===t||\"{backspace}\"===t)&&s.length>0?s=this.removeAt.apply(this,[s].concat(a)):(\"{delete}\"===t||\"{forwarddelete}\"===t)&&s.length>0?s=this.removeForwardsAt.apply(this,[s].concat(a)):\"{space}\"===t?s=this.addStringAt.apply(this,[s,\" \"].concat(a)):\"{tab}\"!==t||\"boolean\"==typeof i.tabCharOnTab&&!1===i.tabCharOnTab?\"{enter}\"!==t&&\"{numpadenter}\"!==t||!i.newLineOnEnter?t.includes(\"numpad\")&&Number.isInteger(Number(t[t.length-2]))?s=this.addStringAt.apply(this,[s,t[t.length-2]].concat(a)):\"{numpaddivide}\"===t?s=this.addStringAt.apply(this,[s,\"/\"].concat(a)):\"{numpadmultiply}\"===t?s=this.addStringAt.apply(this,[s,\"*\"].concat(a)):\"{numpadsubtract}\"===t?s=this.addStringAt.apply(this,[s,\"-\"].concat(a)):\"{numpadadd}\"===t?s=this.addStringAt.apply(this,[s,\"+\"].concat(a)):\"{numpaddecimal}\"===t?s=this.addStringAt.apply(this,[s,\".\"].concat(a)):\"{\"===t||\"}\"===t?s=this.addStringAt.apply(this,[s,t].concat(a)):t.includes(\"{\")||t.includes(\"}\")||(s=this.addStringAt.apply(this,[s,t].concat(a))):s=this.addStringAt.apply(this,[s,\"\\n\"].concat(a)):s=this.addStringAt.apply(this,[s,\"\\t\"].concat(a)),s}},{key:\"updateCaretPos\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this.updateCaretPosAction(t,e);this.dispatch((function(t){t.setCaretPosition(n)}))}},{key:\"updateCaretPosAction\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n=this.getOptions(),o=this.getCaretPosition();return null!=o&&(e?o>0&&(o-=t):o+=t),n.debug&&console.log(\"Caret at:\",o),o}},{key:\"addStringAt\",value:function(t,e){var n,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t.length,r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:t.length,i=arguments.length>4&&void 0!==arguments[4]&&arguments[4];return o||0===o?(n=[t.slice(0,o),e,t.slice(r)].join(\"\"),this.isMaxLengthReached()||i&&this.updateCaretPos(e.length)):n=t+e,n}},{key:\"removeAt\",value:function(t){var e,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t.length,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t.length,r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(0===n&&0===o)return t;if(n===o){var i=/([\\uD800-\\uDBFF][\\uDC00-\\uDFFF])/g;n&&n>=0?t.substring(n-2,n).match(i)?(e=t.substr(0,n-2)+t.substr(n),r&&this.updateCaretPos(2,!0)):(e=t.substr(0,n-1)+t.substr(n),r&&this.updateCaretPos(1,!0)):t.slice(-2).match(i)?(e=t.slice(0,-2),r&&this.updateCaretPos(2,!0)):(e=t.slice(0,-1),r&&this.updateCaretPos(1,!0))}else e=t.slice(0,n)+t.slice(o),r&&this.dispatch((function(t){t.setCaretPosition(n)}));return e}},{key:\"removeForwardsAt\",value:function(t){var e,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t.length,o=arguments.length>2&&void 0!==arguments[2]?arguments[2]:t.length,r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(null==t||!t.length||null===n)return t;if(n===o){var i=/([\\uD800-\\uDBFF][\\uDC00-\\uDFFF])/g,a=t.substring(n,n+2),s=a.match(i);e=s?t.substr(0,n)+t.substr(n+2):t.substr(0,n)+t.substr(n+1)}else e=t.slice(0,n)+t.slice(o),r&&this.dispatch((function(t){t.setCaretPosition(n)}));return e}},{key:\"handleMaxLength\",value:function(t,e){var n=this.getOptions(),o=n.maxLength,r=t[n.inputName||\"default\"],a=e.length-1>=o;if(e.length<=r.length)return!1;if(Number.isInteger(o))return n.debug&&console.log(\"maxLength (num) reached:\",a),a?(this.maxLengthReached=!0,!0):(this.maxLengthReached=!1,!1);if(\"object\"===i(o)){var s=e.length-1>=o[n.inputName||\"default\"];return n.debug&&console.log(\"maxLength (obj) reached:\",s),s?(this.maxLengthReached=!0,!0):(this.maxLengthReached=!1,!1)}}},{key:\"isMaxLengthReached\",value:function(){return Boolean(this.maxLengthReached)}},{key:\"isTouchDevice\",value:function(){return\"ontouchstart\"in window||navigator.maxTouchPoints}},{key:\"pointerEventsSupported\",value:function(){return!!window.PointerEvent}},{key:\"camelCase\",value:function(t){return t?t.toLowerCase().trim().split(/[.\\-_\\s]/g).reduce((function(t,e){return e.length?t+e[0].toUpperCase()+e.slice(1):t})):\"\"}},{key:\"chunkArray\",value:function(e,n){return t(Array(Math.ceil(e.length/n))).map((function(t,o){return e.slice(n*o,n+n*o)}))}}])&&a(o.prototype,r),u&&a(o,u),Object.defineProperty(o,\"prototype\",{writable:!1}),n}();s(u,\"noop\",(function(){}));var c=u;function l(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var f=function(){function t(e){var n=e.dispatch,o=e.getOptions;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),this.dispatch=n,this.getOptions=o,c.bindMethods(t,this)}var e,n,o;return e=t,(n=[{key:\"handleHighlightKeyDown\",value:function(t){var e=this.getOptions(),n=this.getSimpleKeyboardLayoutKey(t);this.dispatch((function(o){var r,i,a=o.getButtonElement(n),s=o.getButtonElement(\"{\".concat(n,\"}\"));if(a)r=a,i=n;else{if(!s)return;r=s,i=\"{\".concat(n,\"}\")}r&&(r.style.backgroundColor=e.physicalKeyboardHighlightBgColor||\"#dadce4\",r.style.color=e.physicalKeyboardHighlightTextColor||\"black\",e.physicalKeyboardHighlightPress&&(e.physicalKeyboardHighlightPressUsePointerEvents?r.onpointerdown():e.physicalKeyboardHighlightPressUseClick?r.click():o.handleButtonClicked(i,t)))}))}},{key:\"handleHighlightKeyUp\",value:function(t){var e=this.getOptions(),n=this.getSimpleKeyboardLayoutKey(t);this.dispatch((function(t){var o=t.getButtonElement(n)||t.getButtonElement(\"{\".concat(n,\"}\"));o&&o.removeAttribute&&(o.removeAttribute(\"style\"),e.physicalKeyboardHighlightPressUsePointerEvents&&o.onpointerup())}))}},{key:\"getSimpleKeyboardLayoutKey\",value:function(t){var e,n=\"\",o=t.code||t.key||this.keyCodeToKey(null==t?void 0:t.keyCode);return(n=null!=o&&o.includes(\"Numpad\")||null!=o&&o.includes(\"Shift\")||null!=o&&o.includes(\"Space\")||null!=o&&o.includes(\"Backspace\")||null!=o&&o.includes(\"Control\")||null!=o&&o.includes(\"Alt\")||null!=o&&o.includes(\"Meta\")?t.code||\"\":t.key||this.keyCodeToKey(null==t?void 0:t.keyCode)||\"\").length>1?null===(e=n)||void 0===e?void 0:e.toLowerCase():n}},{key:\"keyCodeToKey\",value:function(t){return{8:\"Backspace\",9:\"Tab\",13:\"Enter\",16:\"Shift\",17:\"Ctrl\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Esc\",32:\"Space\",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",48:\"0\",49:\"1\",50:\"2\",51:\"3\",52:\"4\",53:\"5\",54:\"6\",55:\"7\",56:\"8\",57:\"9\",65:\"A\",66:\"B\",67:\"C\",68:\"D\",69:\"E\",70:\"F\",71:\"G\",72:\"H\",73:\"I\",74:\"J\",75:\"K\",76:\"L\",77:\"M\",78:\"N\",79:\"O\",80:\"P\",81:\"Q\",82:\"R\",83:\"S\",84:\"T\",85:\"U\",86:\"V\",87:\"W\",88:\"X\",89:\"Y\",90:\"Z\",91:\"Meta\",96:\"Numpad0\",97:\"Numpad1\",98:\"Numpad2\",99:\"Numpad3\",100:\"Numpad4\",101:\"Numpad5\",102:\"Numpad6\",103:\"Numpad7\",104:\"Numpad8\",105:\"Numpad9\",106:\"NumpadMultiply\",107:\"NumpadAdd\",109:\"NumpadSubtract\",110:\"NumpadDecimal\",111:\"NumpadDivide\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",186:\";\",187:\"=\",188:\",\",189:\"-\",190:\".\",191:\"/\",192:\"`\",219:\"[\",220:\"\\\\\",221:\"]\",222:\"'\"}[t]}}])&&l(e.prototype,n),o&&l(e,o),Object.defineProperty(e,\"prototype\",{writable:!1}),t}();function p(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}var d=function(){function t(e){var n,o,r,i=e.utilities;!function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),r=0,(o=\"pageIndex\")in(n=this)?Object.defineProperty(n,o,{value:r,enumerable:!0,configurable:!0,writable:!0}):n[o]=r,this.utilities=i,c.bindMethods(t,this),this.pageSize=this.utilities.getOptions().layoutCandidatesPageSize||5}var e,n,o;return e=t,(n=[{key:\"destroy\",value:function(){this.candidateBoxElement&&(this.candidateBoxElement.remove(),this.pageIndex=0)}},{key:\"show\",value:function(t){var e=this,n=t.candidateValue,o=t.targetElement,r=t.onSelect;if(n&&n.length){var i=this.utilities.chunkArray(n.split(\" \"),this.pageSize);this.renderPage({candidateListPages:i,targetElement:o,pageIndex:this.pageIndex,nbPages:i.length,onItemSelected:function(t,n){r(t,n),e.destroy()}})}}},{key:\"renderPage\",value:function(t){var e,n=this,o=t.candidateListPages,r=t.targetElement,i=t.pageIndex,a=t.nbPages,s=t.onItemSelected;null===(e=this.candidateBoxElement)||void 0===e||e.remove(),this.candidateBoxElement=document.createElement(\"div\"),this.candidateBoxElement.className=\"hg-candidate-box\";var u=document.createElement(\"ul\");u.className=\"hg-candidate-box-list\",o[i].forEach((function(t){var e=document.createElement(\"li\"),n=function(){var t=new MouseEvent(\"click\");return Object.defineProperty(t,\"target\",{value:e}),t};e.className=\"hg-candidate-box-list-item\",e.textContent=t,e.onclick=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:n();return s(t,e)},u.appendChild(e)}));var c=i>0,l=document.createElement(\"div\");l.classList.add(\"hg-candidate-box-prev\"),c&&l.classList.add(\"hg-candidate-box-btn-active\"),l.onclick=function(){c&&n.renderPage({candidateListPages:o,targetElement:r,pageIndex:i-1,nbPages:a,onItemSelected:s})},this.candidateBoxElement.appendChild(l),this.candidateBoxElement.appendChild(u);var f=i<a-1,p=document.createElement(\"div\");p.classList.add(\"hg-candidate-box-next\"),f&&p.classList.add(\"hg-candidate-box-btn-active\"),p.onclick=function(){f&&n.renderPage({candidateListPages:o,targetElement:r,pageIndex:i+1,nbPages:a,onItemSelected:s})},this.candidateBoxElement.appendChild(p),r.prepend(this.candidateBoxElement)}}])&&p(e.prototype,n),o&&p(e,o),Object.defineProperty(e,\"prototype\",{writable:!1}),t}();function h(t){return function(t){if(Array.isArray(t))return v(t)}(t)||function(t){if(\"undefined\"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t[\"@@iterator\"])return Array.from(t)}(t)||function(t,e){if(!t)return;if(\"string\"==typeof t)return v(t,e);var n=Object.prototype.toString.call(t).slice(8,-1);\"Object\"===n&&t.constructor&&(n=t.constructor.name);if(\"Map\"===n||\"Set\"===n)return Array.from(t);if(\"Arguments\"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return v(t,e)}(t)||function(){throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}()}function v(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,o=new Array(e);n<e;n++)o[n]=t[n];return o}function g(t){return(g=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}function y(t,e){var n=Object.keys(t);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(t);e&&(o=o.filter((function(e){return Object.getOwnPropertyDescriptor(t,e).enumerable}))),n.push.apply(n,o)}return n}function m(t,e){for(var n=0;n<e.length;n++){var o=e[n];o.enumerable=o.enumerable||!1,o.configurable=!0,\"value\"in o&&(o.writable=!0),Object.defineProperty(t,o.key,o)}}function b(t,e,n){return e in t?Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!0}):t[e]=n,t}var x=function(){function t(e,n){var o=this;if(function(t,e){if(!(t instanceof e))throw new TypeError(\"Cannot call a class as a function\")}(this,t),b(this,\"defaultName\",\"default\"),b(this,\"activeInputElement\",null),b(this,\"handleParams\",(function(t,e){var n,o,r;if(\"string\"==typeof t)n=t.split(\".\").join(\"\"),o=document.querySelector(\".\".concat(n)),r=e;else if(t instanceof HTMLDivElement){if(!t.className)throw console.warn(\"Any DOM element passed as parameter must have a class.\"),new Error(\"KEYBOARD_DOM_CLASS_ERROR\");n=t.className.split(\" \")[0],o=t,r=e}else n=\"simple-keyboard\",o=document.querySelector(\".\".concat(n)),r=t;return{keyboardDOMClass:n,keyboardDOM:o,options:r}})),b(this,\"getOptions\",(function(){return o.options})),b(this,\"getCaretPosition\",(function(){return o.caretPosition})),b(this,\"getCaretPositionEnd\",(function(){return o.caretPositionEnd})),b(this,\"registerModule\",(function(t,e){o.modules[t]||(o.modules[t]={}),e(o.modules[t])})),b(this,\"getKeyboardClassString\",(function(){for(var t=arguments.length,e=new Array(t),n=0;n<t;n++)e[n]=arguments[n];var r=[o.keyboardDOMClass].concat(e).filter((function(t){return!!t}));return r.join(\" \")})),\"undefined\"!=typeof window){var r=this.handleParams(e,n),i=r.keyboardDOMClass,a=r.keyboardDOM,s=r.options,u=void 0===s?{}:s;this.utilities=new c({getOptions:this.getOptions,getCaretPosition:this.getCaretPosition,getCaretPositionEnd:this.getCaretPositionEnd,dispatch:this.dispatch}),this.caretPosition=null,this.caretPositionEnd=null,this.keyboardDOM=a,this.options=function(t){for(var e=1;e<arguments.length;e++){var n=null!=arguments[e]?arguments[e]:{};e%2?y(Object(n),!0).forEach((function(e){b(t,e,n[e])})):Object.getOwnPropertyDescriptors?Object.defineProperties(t,Object.getOwnPropertyDescriptors(n)):y(Object(n)).forEach((function(e){Object.defineProperty(t,e,Object.getOwnPropertyDescriptor(n,e))}))}return t}({layoutName:\"default\",theme:\"hg-theme-default\",inputName:\"default\",preventMouseDownDefault:!1,enableLayoutCandidates:!0,excludeFromLayout:{}},u),this.keyboardPluginClasses=\"\",c.bindMethods(t,this);var l=this.options.inputName,p=void 0===l?this.defaultName:l;if(this.input={},this.input[p]=\"\",this.keyboardDOMClass=i,this.buttonElements={},window.SimpleKeyboardInstances||(window.SimpleKeyboardInstances={}),this.currentInstanceName=this.utilities.camelCase(this.keyboardDOMClass),window.SimpleKeyboardInstances[this.currentInstanceName]=this,this.allKeyboardInstances=window.SimpleKeyboardInstances,this.keyboardInstanceNames=Object.keys(window.SimpleKeyboardInstances),this.isFirstKeyboardInstance=this.keyboardInstanceNames[0]===this.currentInstanceName,this.physicalKeyboard=new f({dispatch:this.dispatch,getOptions:this.getOptions}),this.candidateBox=this.options.enableLayoutCandidates?new d({utilities:this.utilities}):null,!this.keyboardDOM)throw console.warn('\".'.concat(i,'\" was not found in the DOM.')),new Error(\"KEYBOARD_DOM_ERROR\");this.render(),this.modules={},this.loadModules()}}var e,n,o;return e=t,(n=[{key:\"setCaretPosition\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:t;this.caretPosition=t,this.caretPositionEnd=e}},{key:\"getInputCandidates\",value:function(t){var e=this,n=this.options,o=n.layoutCandidates,r=n.layoutCandidatesCaseSensitiveMatch;if(!o||\"object\"!==g(o))return{};var i=Object.keys(o).filter((function(n){var o=t.substring(0,e.getCaretPositionEnd()||0)||t,i=new RegExp(\"\".concat(n,\"$\"),r?\"g\":\"gi\");return!!h(o.matchAll(i)).length}));if(i.length>1){var a=i.sort((function(t,e){return e.length-t.length}))[0];return{candidateKey:a,candidateValue:o[a]}}if(i.length){var s=i[0];return{candidateKey:s,candidateValue:o[s]}}return{}}},{key:\"showCandidatesBox\",value:function(t,e,n){var o=this;this.candidateBox&&this.candidateBox.show({candidateValue:e,targetElement:n,onSelect:function(e,n){var r=o.options.layoutCandidatesCaseSensitiveMatch,i=e.normalize(\"NFD\"),a=o.getInput(o.options.inputName,!0),s=o.getCaretPositionEnd()||0,u=a.substring(0,s||0)||a,c=new RegExp(\"\".concat(t,\"$\"),r?\"g\":\"gi\"),l=u.replace(c,i),f=a.replace(u,l),p=l.length-u.length,d=(s||a.length)+p;d<0&&(d=0),o.setInput(f,o.options.inputName,!0),o.setCaretPosition(d),\"function\"==typeof o.options.onChange&&o.options.onChange(o.getInput(o.options.inputName,!0),n),\"function\"==typeof o.options.onChangeAll&&o.options.onChangeAll(o.getAllInputs(),n)}})}},{key:\"handleButtonClicked\",value:function(t,e){var n=this.options,o=n.inputName,r=void 0===o?this.defaultName:o,i=n.debug;if(\"{//}\"!==t){this.input[r]||(this.input[r]=\"\");var a=this.utilities.getUpdatedInput(t,this.input[r],this.caretPosition,this.caretPositionEnd);if(this.utilities.isStandardButton(t)&&this.activeInputElement&&this.input[r]&&this.input[r]===a&&0===this.caretPosition&&this.caretPositionEnd===a.length)return this.setInput(\"\",this.options.inputName,!0),this.setCaretPosition(0),this.activeInputElement.value=\"\",this.activeInputElement.setSelectionRange(0,0),void this.handleButtonClicked(t,e);if(\"function\"==typeof this.options.onKeyPress&&this.options.onKeyPress(t,e),this.input[r]!==a&&(!this.options.inputPattern||this.options.inputPattern&&this.inputPatternIsValid(a))){if(this.options.maxLength&&this.utilities.handleMaxLength(this.input,a))return;var s=this.utilities.getUpdatedInput(t,this.input[r],this.caretPosition,this.caretPositionEnd,!0);if(this.setInput(s,this.options.inputName,!0),i&&console.log(\"Input changed:\",this.getAllInputs()),this.options.debug&&console.log(\"Caret at: \",this.getCaretPosition(),this.getCaretPositionEnd(),\"(\".concat(this.keyboardDOMClass,\")\")),this.options.syncInstanceInputs&&this.syncInstanceInputs(),\"function\"==typeof this.options.onChange&&this.options.onChange(this.getInput(this.options.inputName,!0),e),\"function\"==typeof this.options.onChangeAll&&this.options.onChangeAll(this.getAllInputs(),e),null!=e&&e.target&&this.options.enableLayoutCandidates){var u,c=this.getInputCandidates(a),l=c.candidateKey,f=c.candidateValue;l&&f?this.showCandidatesBox(l,f,this.keyboardDOM):null===(u=this.candidateBox)||void 0===u||u.destroy()}}i&&console.log(\"Key pressed:\",t)}}},{key:\"getMouseHold\",value:function(){return this.isMouseHold}},{key:\"setMouseHold\",value:function(t){this.options.syncInstanceInputs?this.dispatch((function(e){e.isMouseHold=t})):this.isMouseHold=t}},{key:\"handleButtonMouseDown\",value:function(t,e){var n=this;e&&(this.options.preventMouseDownDefault&&e.preventDefault(),this.options.stopMouseDownPropagation&&e.stopPropagation(),e.target.classList.add(this.activeButtonClass)),this.holdInteractionTimeout&&clearTimeout(this.holdInteractionTimeout),this.holdTimeout&&clearTimeout(this.holdTimeout),this.setMouseHold(!0),this.options.disableButtonHold||(this.holdTimeout=window.setTimeout((function(){(n.getMouseHold()&&(!t.includes(\"{\")&&!t.includes(\"}\")||\"{delete}\"===t||\"{backspace}\"===t||\"{bksp}\"===t||\"{space}\"===t||\"{tab}\"===t)||\"{arrowright}\"===t||\"{arrowleft}\"===t||\"{arrowup}\"===t||\"{arrowdown}\"===t)&&(n.options.debug&&console.log(\"Button held:\",t),n.handleButtonHold(t)),clearTimeout(n.holdTimeout)}),500))}},{key:\"handleButtonMouseUp\",value:function(t,e){var n=this;e&&(this.options.preventMouseUpDefault&&e.preventDefault&&e.preventDefault(),this.options.stopMouseUpPropagation&&e.stopPropagation&&e.stopPropagation(),!(e.target===this.keyboardDOM||e.target&&this.keyboardDOM.contains(e.target)||this.candidateBox&&this.candidateBox.candidateBoxElement&&(e.target===this.candidateBox.candidateBoxElement||e.target&&this.candidateBox.candidateBoxElement.contains(e.target)))&&this.candidateBox&&this.candidateBox.destroy()),this.recurseButtons((function(t){t.classList.remove(n.activeButtonClass)})),this.setMouseHold(!1),this.holdInteractionTimeout&&clearTimeout(this.holdInteractionTimeout),t&&\"function\"==typeof this.options.onKeyReleased&&this.options.onKeyReleased(t)}},{key:\"handleKeyboardContainerMouseDown\",value:function(t){this.options.preventMouseDownDefault&&t.preventDefault()}},{key:\"handleButtonHold\",value:function(t){var e=this;this.holdInteractionTimeout&&clearTimeout(this.holdInteractionTimeout),this.holdInteractionTimeout=window.setTimeout((function(){e.getMouseHold()?(e.handleButtonClicked(t),e.handleButtonHold(t)):clearTimeout(e.holdInteractionTimeout)}),100)}},{key:\"syncInstanceInputs\",value:function(){var t=this;this.dispatch((function(e){e.replaceInput(t.input),e.setCaretPosition(t.caretPosition,t.caretPositionEnd)}))}},{key:\"clearInput\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.options.inputName||this.defaultName;this.input[t]=\"\",this.setCaretPosition(0),this.options.syncInstanceInputs&&this.syncInstanceInputs()}},{key:\"getInput\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.options.inputName||this.defaultName,e=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(this.options.syncInstanceInputs&&!e&&this.syncInstanceInputs(),this.options.rtl){var n=this.input[t].replace(\"\",\"\").replace(\"\",\"\");return\"\"+n+\"\"}return this.input[t]}},{key:\"getAllInputs\",value:function(){var t=this,e={};return Object.keys(this.input).forEach((function(n){e[n]=t.getInput(n,!0)})),e}},{key:\"setInput\",value:function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.options.inputName||this.defaultName,n=arguments.length>2?arguments[2]:void 0;this.input[e]=t,!n&&this.options.syncInstanceInputs&&this.syncInstanceInputs()}},{key:\"replaceInput\",value:function(t){this.input=t}},{key:\"setOptions\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=this.changedOptions(t);this.options=Object.assign(this.options,t),e.length&&(this.options.debug&&console.log(\"changedOptions\",e),this.onSetOptions(e),this.render())}},{key:\"changedOptions\",value:function(t){var e=this;return Object.keys(t).filter((function(n){return JSON.stringify(t[n])!==JSON.stringify(e.options[n])}))}},{key:\"onSetOptions\",value:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];t.includes(\"layoutName\")&&this.candidateBox&&this.candidateBox.destroy(),(t.includes(\"layoutCandidatesPageSize\")||t.includes(\"layoutCandidates\"))&&this.candidateBox&&(this.candidateBox.destroy(),this.candidateBox=new d({utilities:this.utilities}))}},{key:\"resetRows\",value:function(){this.keyboardRowsDOM&&this.keyboardRowsDOM.remove(),this.keyboardDOM.className=this.keyboardDOMClass,this.keyboardDOM.setAttribute(\"data-skInstance\",this.currentInstanceName),this.buttonElements={}}},{key:\"dispatch\",value:function(t){if(!window.SimpleKeyboardInstances)throw console.warn(\"SimpleKeyboardInstances is not defined. Dispatch cannot be called.\"),new Error(\"INSTANCES_VAR_ERROR\");return Object.keys(window.SimpleKeyboardInstances).forEach((function(e){t(window.SimpleKeyboardInstances[e],e)}))}},{key:\"addButtonTheme\",value:function(t,e){var n=this;e&&t&&(t.split(\" \").forEach((function(o){e.split(\" \").forEach((function(e){n.options.buttonTheme||(n.options.buttonTheme=[]);var r=!1;n.options.buttonTheme.map((function(t){if(null!=t&&t.class.split(\" \").includes(e)){r=!0;var n=t.buttons.split(\" \");n.includes(o)||(r=!0,n.push(o),t.buttons=n.join(\" \"))}return t})),r||n.options.buttonTheme.push({class:e,buttons:t})}))})),this.render())}},{key:\"removeButtonTheme\",value:function(t,e){var n=this;if(!t&&!e)return this.options.buttonTheme=[],void this.render();t&&Array.isArray(this.options.buttonTheme)&&this.options.buttonTheme.length&&(t.split(\" \").forEach((function(t){var o,r;null===(o=n.options)||void 0===o||null===(r=o.buttonTheme)||void 0===r||r.map((function(o,r){if(o&&e&&e.includes(o.class)||!e){var i,a,s=null===(i=o)||void 0===i?void 0:i.buttons.split(\" \").filter((function(e){return e!==t}));o&&null!=s&&s.length?o.buttons=s.join(\" \"):(null===(a=n.options.buttonTheme)||void 0===a||a.splice(r,1),o=null)}return o}))})),this.render())}},{key:\"getButtonElement\",value:function(t){var e,n=this.buttonElements[t];return n&&(e=n.length>1?n:n[0]),e}},{key:\"inputPatternIsValid\",value:function(t){var e,n=this.options.inputPattern;if((e=n instanceof RegExp?n:n[this.options.inputName||this.defaultName])&&t){var o=e.test(t);return this.options.debug&&console.log('inputPattern (\"'.concat(e,'\"): ').concat(o?\"passed\":\"did not pass!\")),o}return!0}},{key:\"setEventListeners\",value:function(){!this.isFirstKeyboardInstance&&this.allKeyboardInstances||(this.options.debug&&console.log(\"Caret handling started (\".concat(this.keyboardDOMClass,\")\")),document.addEventListener(\"keyup\",this.handleKeyUp),document.addEventListener(\"keydown\",this.handleKeyDown),document.addEventListener(\"mouseup\",this.handleMouseUp),document.addEventListener(\"touchend\",this.handleTouchEnd),document.addEventListener(\"select\",this.handleSelect),document.addEventListener(\"selectionchange\",this.handleSelectionChange))}},{key:\"handleKeyUp\",value:function(t){this.caretEventHandler(t),this.options.physicalKeyboardHighlight&&this.physicalKeyboard.handleHighlightKeyUp(t)}},{key:\"handleKeyDown\",value:function(t){this.options.physicalKeyboardHighlight&&this.physicalKeyboard.handleHighlightKeyDown(t)}},{key:\"handleMouseUp\",value:function(t){this.caretEventHandler(t)}},{key:\"handleTouchEnd\",value:function(t){this.caretEventHandler(t)}},{key:\"handleSelect\",value:function(t){this.caretEventHandler(t)}},{key:\"handleSelectionChange\",value:function(t){this.caretEventHandler(t)}},{key:\"caretEventHandler\",value:function(t){var e,n=this;t.target.tagName&&(e=t.target.tagName.toLowerCase()),this.dispatch((function(o){var r=t.target===o.keyboardDOM||t.target&&o.keyboardDOM.contains(t.target);n.options.syncInstanceInputs&&Array.isArray(t.path)&&(r=t.path.some((function(t){var e;return null==t||null===(e=t.hasAttribute)||void 0===e?void 0:e.call(t,\"data-skInstance\")}))),(\"textarea\"===e||\"input\"===e&&[\"text\",\"search\",\"url\",\"tel\",\"password\"].includes(t.target.type))&&!o.options.disableCaretPositioning?(o.setCaretPosition(t.target.selectionStart,t.target.selectionEnd),n.activeInputElement=t.target,o.options.debug&&console.log(\"Caret at: \",o.getCaretPosition(),o.getCaretPositionEnd(),t&&t.target.tagName.toLowerCase(),\"(\".concat(o.keyboardDOMClass,\")\"))):!o.options.disableCaretPositioning&&r||\"selectionchange\"===(null==t?void 0:t.type)||(o.setCaretPosition(null),n.activeInputElement=null,o.options.debug&&console.log('Caret position reset due to \"'.concat(null==t?void 0:t.type,'\" event'),t))}))}},{key:\"recurseButtons\",value:function(t){var e=this;t&&Object.keys(this.buttonElements).forEach((function(n){return e.buttonElements[n].forEach(t)}))}},{key:\"destroy\",value:function(){this.options.debug&&console.log(\"Destroying simple-keyboard instance: \".concat(this.currentInstanceName)),document.removeEventListener(\"keyup\",this.handleKeyUp),document.removeEventListener(\"keydown\",this.handleKeyDown),document.removeEventListener(\"mouseup\",this.handleMouseUp),document.removeEventListener(\"touchend\",this.handleTouchEnd),document.removeEventListener(\"select\",this.handleSelect),document.removeEventListener(\"selectionchange\",this.handleSelectionChange),document.onpointerup=null,document.ontouchend=null,document.ontouchcancel=null,document.onmouseup=null,this.recurseButtons((function(t){t&&(t.onpointerdown=null,t.onpointerup=null,t.onpointercancel=null,t.ontouchstart=null,t.ontouchend=null,t.ontouchcancel=null,t.onclick=null,t.onmousedown=null,t.onmouseup=null,t.remove(),t=null)})),this.keyboardDOM.onpointerdown=null,this.keyboardDOM.ontouchstart=null,this.keyboardDOM.onmousedown=null,this.resetRows(),this.candidateBox&&(this.candidateBox.destroy(),this.candidateBox=null),this.activeInputElement=null,this.keyboardDOM.removeAttribute(\"data-skInstance\"),this.keyboardDOM.innerHTML=\"\",window.SimpleKeyboardInstances[this.currentInstanceName]=null,delete window.SimpleKeyboardInstances[this.currentInstanceName],this.initialized=!1}},{key:\"getButtonThemeClasses\",value:function(t){var e=this.options.buttonTheme,n=[];return Array.isArray(e)&&e.forEach((function(e){if(e&&e.class&&\"string\"==typeof e.class&&e.buttons&&\"string\"==typeof e.buttons){var o=e.class.split(\" \");e.buttons.split(\" \").includes(t)&&(n=[].concat(h(n),h(o)))}else console.warn('Incorrect \"buttonTheme\". Please check the documentation.',e)})),n}},{key:\"setDOMButtonAttributes\",value:function(t,e){var n=this.options.buttonAttributes;Array.isArray(n)&&n.forEach((function(n){n.attribute&&\"string\"==typeof n.attribute&&n.value&&\"string\"==typeof n.value&&n.buttons&&\"string\"==typeof n.buttons?n.buttons.split(\" \").includes(t)&&e(n.attribute,n.value):console.warn('Incorrect \"buttonAttributes\". Please check the documentation.',n)}))}},{key:\"onTouchDeviceDetected\",value:function(){this.processAutoTouchEvents(),this.disableContextualWindow()}},{key:\"disableContextualWindow\",value:function(){window.oncontextmenu=function(t){if(t.target.classList.contains(\"hg-button\"))return t.preventDefault(),t.stopPropagation(),!1}}},{key:\"processAutoTouchEvents\",value:function(){this.options.autoUseTouchEvents&&(this.options.useTouchEvents=!0,this.options.debug&&console.log(\"autoUseTouchEvents: Touch device detected, useTouchEvents enabled.\"))}},{key:\"onInit\",value:function(){this.options.debug&&console.log(\"\".concat(this.keyboardDOMClass,\" Initialized\")),this.setEventListeners(),\"function\"==typeof this.options.onInit&&this.options.onInit(this)}},{key:\"beforeFirstRender\",value:function(){this.utilities.isTouchDevice()&&this.onTouchDeviceDetected(),\"function\"==typeof this.options.beforeFirstRender&&this.options.beforeFirstRender(this),this.isFirstKeyboardInstance&&this.utilities.pointerEventsSupported()&&!this.options.useTouchEvents&&!this.options.useMouseEvents&&this.options.debug&&console.log(\"Using PointerEvents as it is supported by this browser\"),this.options.useTouchEvents&&this.options.debug&&console.log(\"useTouchEvents has been enabled. Only touch events will be used.\")}},{key:\"beforeRender\",value:function(){\"function\"==typeof this.options.beforeRender&&this.options.beforeRender(this)}},{key:\"onRender\",value:function(){\"function\"==typeof this.options.onRender&&this.options.onRender(this)}},{key:\"onModulesLoaded\",value:function(){\"function\"==typeof this.options.onModulesLoaded&&this.options.onModulesLoaded(this)}},{key:\"loadModules\",value:function(){var t=this;Array.isArray(this.options.modules)&&(this.options.modules.forEach((function(e){var n=new e(t);n.init&&n.init(t)})),this.keyboardPluginClasses=\"modules-loaded\",this.render(),this.onModulesLoaded())}},{key:\"getModuleProp\",value:function(t,e){return!!this.modules[t]&&this.modules[t][e]}},{key:\"getModulesList\",value:function(){return Object.keys(this.modules)}},{key:\"parseRowDOMContainers\",value:function(t,e,n,o){var r=this,i=Array.from(t.children),a=0;return i.length&&n.forEach((function(n,s){var u=o[s];if(!(u&&u>n))return!1;var c=n-a,l=u-a,f=document.createElement(\"div\");f.className+=\"hg-button-container\";var p=\"\".concat(r.options.layoutName,\"-r\").concat(e,\"c\").concat(s);f.setAttribute(\"data-skUID\",p);var d=i.splice(c,l-c+1);a=l-c,d.forEach((function(t){return f.appendChild(t)})),i.splice(c,0,f),t.innerHTML=\"\",i.forEach((function(e){return t.appendChild(e)})),r.options.debug&&console.log(\"rowDOMContainer\",d,c,l,a+1)})),t}},{key:\"render\",value:function(){var t=this;this.resetRows(),this.initialized||this.beforeFirstRender(),this.beforeRender();var e=\"hg-layout-\".concat(this.options.layoutName),n=this.options.layout||{default:[\"` 1 2 3 4 5 6 7 8 9 0 - = {bksp}\",\"{tab} q w e r t y u i o p [ ] \\\\\",\"{lock} a s d f g h j k l ; ' {enter}\",\"{shift} z x c v b n m , . / {shift}\",\".com @ {space}\"],shift:[\"~ ! @ # $ % ^ & * ( ) _ + {bksp}\",\"{tab} Q W E R T Y U I O P { } |\",'{lock} A S D F G H J K L : \" {enter}',\"{shift} Z X C V B N M < > ? {shift}\",\".com @ {space}\"]},o=this.options.useTouchEvents||!1,r=o?\"hg-touch-events\":\"\",i=this.options.useMouseEvents||!1,a=this.options.disableRowButtonContainers;this.keyboardDOM.className=this.getKeyboardClassString(this.options.theme,e,this.keyboardPluginClasses,r),this.keyboardDOM.setAttribute(\"data-skInstance\",this.currentInstanceName),this.keyboardRowsDOM=document.createElement(\"div\"),this.keyboardRowsDOM.className=\"hg-rows\",n[this.options.layoutName||this.defaultName].forEach((function(e,n){var r=e.split(\" \");t.options.excludeFromLayout&&t.options.excludeFromLayout[t.options.layoutName||t.defaultName]&&(r=r.filter((function(e){return t.options.excludeFromLayout&&!t.options.excludeFromLayout[t.options.layoutName||t.defaultName].includes(e)})));var s=document.createElement(\"div\");s.className+=\"hg-row\";var u=[],c=[];r.forEach((function(e,r){var l,f=!a&&\"string\"==typeof e&&e.length>1&&0===e.indexOf(\"[\"),p=!a&&\"string\"==typeof e&&e.length>1&&e.indexOf(\"]\")===e.length-1;f&&(u.push(r),e=e.replace(/\\[/g,\"\")),p&&(c.push(r),e=e.replace(/\\]/g,\"\"));var d=t.utilities.getButtonClass(e),v=t.utilities.getButtonDisplayName(e,t.options.display,t.options.mergeDisplay),g=t.options.useButtonTag?\"button\":\"div\",y=document.createElement(g);y.className+=\"hg-button \".concat(d),(l=y.classList).add.apply(l,h(t.getButtonThemeClasses(e))),t.setDOMButtonAttributes(e,(function(t,e){y.setAttribute(t,e)})),t.activeButtonClass=\"hg-activeButton\",!t.utilities.pointerEventsSupported()||o||i?o?(y.ontouchstart=function(n){t.handleButtonClicked(e,n),t.handleButtonMouseDown(e,n)},y.ontouchend=function(n){t.handleButtonMouseUp(e,n)},y.ontouchcancel=function(n){t.handleButtonMouseUp(e,n)}):(y.onclick=function(n){t.setMouseHold(!1),\"function\"!=typeof t.options.onKeyReleased&&t.handleButtonClicked(e,n)},y.onmousedown=function(n){\"function\"!=typeof t.options.onKeyReleased||t.isMouseHold||t.handleButtonClicked(e,n),t.handleButtonMouseDown(e,n)},y.onmouseup=function(n){t.handleButtonMouseUp(e,n)}):(y.onpointerdown=function(n){t.handleButtonClicked(e,n),t.handleButtonMouseDown(e,n)},y.onpointerup=function(n){t.handleButtonMouseUp(e,n)},y.onpointercancel=function(n){t.handleButtonMouseUp(e,n)}),y.setAttribute(\"data-skBtn\",e);var m=\"\".concat(t.options.layoutName,\"-r\").concat(n,\"b\").concat(r);y.setAttribute(\"data-skBtnUID\",m);var b=document.createElement(\"span\");b.innerHTML=v,y.appendChild(b),t.buttonElements[e]||(t.buttonElements[e]=[]),t.buttonElements[e].push(y),s.appendChild(y)})),s=t.parseRowDOMContainers(s,n,u,c),t.keyboardRowsDOM.appendChild(s)})),this.keyboardDOM.appendChild(this.keyboardRowsDOM),this.onRender(),this.initialized||(this.initialized=!0,!this.utilities.pointerEventsSupported()||o||i?o?(document.ontouchend=function(e){return t.handleButtonMouseUp(void 0,e)},document.ontouchcancel=function(e){return t.handleButtonMouseUp(void 0,e)},this.keyboardDOM.ontouchstart=function(e){return t.handleKeyboardContainerMouseDown(e)}):o||(document.onmouseup=function(e){return t.handleButtonMouseUp(void 0,e)},this.keyboardDOM.onmousedown=function(e){return t.handleKeyboardContainerMouseDown(e)}):(document.onpointerup=function(e){return t.handleButtonMouseUp(void 0,e)},this.keyboardDOM.onpointerdown=function(e){return t.handleKeyboardContainerMouseDown(e)}),this.onInit())}}])&&m(e.prototype,n),o&&m(e,o),Object.defineProperty(e,\"prototype\",{writable:!1}),t}()}(),o}()}));","\n// Autogenerated\n// -------------\n// gulpfile.ts/wasm.ts --> generateBuildInfo\n\nexport const Build = {\n short: \"0.73.9\",\n version: \"0.73.9 (2b193a42bb8728577711b215f2ee7fa1)\",\n buildSeed: 1673510059952,\n};\n","import { CommandInterface } from \"emulators\";\nimport { Layers } from \"../dom/layers\";\nimport { namedKeyCodes, KBD_NONE } from \"../dom/keys\";\nimport { pointer } from \"../dom/pointer\";\nimport { LayoutPosition } from \"./layout\";\n\nexport type ActionType = \"click\" | \"hold\";\n// hold - means track press/release events separately\n\nexport type Binding = number;\n\nexport interface Button {\n action: ActionType,\n mapTo: Binding,\n symbol?: string,\n position: LayoutPosition,\n}\n\nconst keyCodeToName = initKeyCodeToName();\n\nfunction initKeyCodeToName() {\n const keyCodeToName: {[keyCode: number]: string} = {};\n for (const next of Object.keys(namedKeyCodes)) {\n keyCodeToName[namedKeyCodes[next]] = next.substr(4, 2);\n }\n return keyCodeToName;\n}\n\nexport interface ButtonHandler {\n onDown?: () => void;\n onUp?: () => void;\n onClick?: () => void;\n}\n\nexport interface HTMLJsDosButtonElement extends HTMLDivElement {\n widthPx: number;\n heightPx: number;\n}\n\nexport function createButton(symbol: string,\n handler: ButtonHandler,\n size: number): HTMLJsDosButtonElement {\n const innerSize = Math.round(size * 0.6);\n const innerTextSize = Math.round(size * 0.5);\n const borderWidth = Math.max(1, Math.round(size / 20));\n const backgroundImage = symbolToUrl[symbol.toLowerCase()];\n const text = backgroundImage === undefined ? symbol : \"\";\n const button = createDiv(\"emulator-button-touch-zone\") as HTMLJsDosButtonElement;\n const innerButton = createDiv(\"emulator-button\");\n const innerText = createDiv(\"emulator-button-text\",\n backgroundImage === undefined ? ((text === undefined || text.length === 0) ?\n \"□\" : text.substr(0, 1).toUpperCase()) : \"\");\n\n if (backgroundImage !== undefined) {\n innerButton.style.backgroundImage = \"url(\\\"\" + backgroundImage + \"\\\")\";\n }\n innerButton.style.width = innerSize + \"px\";\n innerButton.style.height = innerSize + \"px\";\n innerText.style.fontSize = innerTextSize + \"px\";\n\n button.widthPx = size - borderWidth * 2;\n button.heightPx = size - borderWidth * 2;\n button.style.width = button.widthPx + \"px\";\n button.style.height = button.heightPx + \"px\";\n button.style.borderWidth = borderWidth + \"px\";\n button.appendChild(innerButton);\n button.appendChild(innerText);\n\n const onStart = (e: Event) => {\n if (handler.onDown !== undefined) {\n handler.onDown();\n }\n if (handler.onClick !== undefined) {\n handler.onClick();\n }\n e.stopPropagation();\n e.preventDefault();\n };\n const onEnd = (e: Event) => {\n if (handler.onUp !== undefined) {\n handler.onUp();\n }\n e.stopPropagation();\n e.preventDefault();\n };\n const onPrevent = (e: Event) => {\n e.stopPropagation();\n e.preventDefault();\n };\n const options = {\n capture: true,\n };\n for (const next of pointer.starters) {\n button.addEventListener(next, onStart, options);\n }\n for (const next of pointer.enders) {\n button.addEventListener(next, onEnd, options);\n }\n for (const next of pointer.changers) {\n button.addEventListener(next, onPrevent, options);\n }\n for (const next of pointer.leavers) {\n button.addEventListener(next, onPrevent, options);\n }\n for (const next of pointer.prevents) {\n button.addEventListener(next, onPrevent, options);\n }\n return button;\n}\n\nexport function deprecatedButton(layers: Layers,\n ci: CommandInterface,\n buttons: Button[],\n size: number) {\n const ident = Math.round(size / 4);\n const toRemove: HTMLElement[] = [];\n\n for (const next of buttons) {\n if (next.mapTo === KBD_NONE) {\n continue;\n }\n\n const symbol = (next.symbol || mapToSymbol(next.mapTo)).toUpperCase();\n const handler = deprecatedCreateHandler(next, layers);\n const button = createButton(symbol, handler, size);\n\n button.style.position = \"absolute\";\n const cssStyle = (next as any).style;\n if (cssStyle) {\n for (const prop of Object.keys(cssStyle)) {\n (button.style as any)[prop] = (cssStyle as any)[prop];\n }\n }\n\n if (next.position !== undefined) {\n const left = next.position.left;\n const top = next.position.top;\n const bottom = next.position.bottom;\n const right = next.position.right;\n\n if (left !== undefined) {\n button.style.left = (ident * left + size * (left - 1)) + \"px\";\n }\n\n if (right !== undefined) {\n button.style.right = (ident * right + size * (right - 1)) + \"px\";\n }\n\n if (top !== undefined) {\n button.style.top = (ident * top + size * (top - 1)) + \"px\";\n }\n\n if (bottom !== undefined) {\n button.style.bottom = (ident * bottom + size * (bottom - 1)) + \"px\";\n }\n }\n layers.mouseOverlay.appendChild(button);\n toRemove.push(button);\n }\n\n return () => {\n for (const next of toRemove) {\n if (next.parentElement === layers.mouseOverlay) {\n layers.mouseOverlay.removeChild(next);\n }\n }\n };\n}\n\nfunction createDiv(className: string, innerHtml?: string) {\n const el = document.createElement(\"div\");\n el.className = className;\n if (innerHtml !== undefined) {\n el.innerHTML = innerHtml;\n }\n return el;\n}\n\nfunction mapToSymbol(mapTo: Binding): string {\n if (typeof mapTo === \"number\") {\n return keyCodeToName[mapTo];\n }\n\n return mapTo;\n}\n\nfunction deprecatedCreateHandler(button: Button,\n layers: Layers): ButtonHandler {\n return button.action === \"click\" ?\n { onClick: () => layers.fireKeyPress(button.mapTo) } :\n {\n onDown: () => layers.fireKeyDown(button.mapTo),\n onUp: () => layers.fireKeyUp(button.mapTo),\n };\n}\n\n/* eslint-disable max-len */\nconst down = \"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='utf-8'%3F%3E%3C!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3C!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3E%3Csvg version='1.1' id='Layer_1' xmlns:sketch='http://www.bohemiancoding.com/sketch/ns' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 20 20' fill='%23FFF' enable-background='new 0 0 20 20' xml:space='preserve'%3E%3Ctitle%3EShape%3C/title%3E%3Cdesc%3ECreated with Sketch.%3C/desc%3E%3Cg id='Page-1' sketch:type='MSPage'%3E%3Cg id='Artboard-1' transform='translate(-3.000000, -1.000000)' sketch:type='MSArtboardGroup'%3E%3Cpath id='Shape' sketch:type='MSShapeGroup' d='M19,12c-0.3,0-0.5,0.1-0.7,0.3L14,16.6V3c0-0.5-0.4-1-1-1s-1,0.5-1,1v13.6 l-4.3-4.3C7.5,12.1,7.3,12,7,12c-0.5,0-1,0.4-1,1c0,0.3,0.1,0.5,0.3,0.7l6,6c0.2,0.2,0.4,0.3,0.7,0.3s0.5-0.1,0.7-0.3l6-6 c0.2-0.2,0.3-0.4,0.3-0.7C20,12.4,19.5,12,19,12L19,12z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E\";\nconst left = \"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='utf-8'%3F%3E%3C!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3C!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3E%3Csvg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 20 20' enable-background='new 0 0 20 20' fill='%23FFF' xml:space='preserve'%3E%3Cg id='left_arrow_1_'%3E%3Cg%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M18,9H4.41l4.29-4.29C8.89,4.53,9,4.28,9,4c0-0.55-0.45-1-1-1 C7.72,3,7.47,3.11,7.29,3.29l-6,6C1.11,9.47,1,9.72,1,10c0,0.28,0.11,0.53,0.29,0.71l6,6C7.47,16.89,7.72,17,8,17 c0.55,0,1-0.45,1-1c0-0.28-0.11-0.53-0.29-0.71L4.41,11H18c0.55,0,1-0.45,1-1C19,9.45,18.55,9,18,9z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E\";\nconst right = \"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='utf-8'%3F%3E%3C!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3C!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3E%3Csvg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' fill='%23fff' viewBox='0 0 20 20' enable-background='new 0 0 20 20' xml:space='preserve'%3E%3Cg id='right_arrow_1_'%3E%3Cg%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M18.71,9.29l-6-6C12.53,3.11,12.28,3,12,3c-0.55,0-1,0.45-1,1 c0,0.28,0.11,0.53,0.29,0.71L15.59,9H2c-0.55,0-1,0.45-1,1c0,0.55,0.45,1,1,1h13.59l-4.29,4.29C11.11,15.47,11,15.72,11,16 c0,0.55,0.45,1,1,1c0.28,0,0.53-0.11,0.71-0.29l6-6C18.89,10.53,19,10.28,19,10C19,9.72,18.89,9.47,18.71,9.29z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E\";\nconst enter = \"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='utf-8'%3F%3E%3C!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' fill='%23fff' viewBox='0 0 20 20' enable-background='new 0 0 20 20' xml:space='preserve'%3E%3Cg id='key_enter_1_'%3E%3Cg%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M18,2c-0.55,0-1,0.45-1,1v5c0,2.21-1.79,4-4,4H4.41l2.29-2.29 C6.89,9.53,7,9.28,7,9c0-0.55-0.45-1-1-1C5.72,8,5.47,8.11,5.29,8.29l-4,4C1.11,12.47,1,12.72,1,13c0,0.28,0.11,0.53,0.29,0.71 l4,4C5.47,17.89,5.72,18,6,18c0.55,0,1-0.45,1-1c0-0.28-0.11-0.53-0.29-0.71L4.41,14H13c3.31,0,6-2.69,6-6V3C19,2.45,18.55,2,18,2 z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E\";\nconst symbolToUrl: {[symbol: string]: string} = {\n fullscreen: \"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='utf-8'%3F%3E%3C!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3C!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3E%3Csvg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 16 16' enable-background='new 0 0 16 16' xml:space='preserve'%3E%3Cg id='maximize_1_' fill='%23FFFFFF'%3E%3Cg%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M5.99,8.99c-0.28,0-0.53,0.11-0.71,0.29l-3.29,3.29v-1.59c0-0.55-0.45-1-1-1 s-1,0.45-1,1v4c0,0.55,0.45,1,1,1h4c0.55,0,1-0.45,1-1s-0.45-1-1-1H3.41L6.7,10.7c0.18-0.18,0.29-0.43,0.29-0.71 C6.99,9.44,6.54,8.99,5.99,8.99z M14.99-0.01h-4c-0.55,0-1,0.45-1,1s0.45,1,1,1h1.59L9.28,5.29C9.1,5.47,8.99,5.72,8.99,5.99 c0,0.55,0.45,1,1,1c0.28,0,0.53-0.11,0.71-0.29l3.29-3.29v1.59c0,0.55,0.45,1,1,1s1-0.45,1-1v-4C15.99,0.44,15.54-0.01,14.99-0.01 z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E\",\n save: \"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='utf-8'%3F%3E%3C!-- Generator: Adobe Illustrator 18.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 16 16' enable-background='new 0 0 16 16' fill='%23FFFFFF' xml:space='preserve'%3E%3Cg id='floppy_disk'%3E%3Cg%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M15.71,2.29l-2-2C13.53,0.11,13.28,0,13,0h-1v6H4V0H1C0.45,0,0,0.45,0,1v14 c0,0.55,0.45,1,1,1h14c0.55,0,1-0.45,1-1V3C16,2.72,15.89,2.47,15.71,2.29z M14,15H2V9c0-0.55,0.45-1,1-1h10c0.55,0,1,0.45,1,1V15 z M11,1H9v4h2V1z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E%0A\",\n options: \"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='utf-8'%3F%3E%3C!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3C!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3E%3Csvg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 20 20' enable-background='new 0 0 20 20' fill='%23FFF' xml:space='preserve'%3E%3Cg id='cog_2_'%3E%3Cg%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M19,8h-2.31c-0.14-0.46-0.33-0.89-0.56-1.3l1.7-1.7c0.39-0.39,0.39-1.02,0-1.41 l-1.41-1.41c-0.39-0.39-1.02-0.39-1.41,0l-1.7,1.7c-0.41-0.22-0.84-0.41-1.3-0.55V1c0-0.55-0.45-1-1-1H9C8.45,0,8,0.45,8,1v2.33 C7.52,3.47,7.06,3.67,6.63,3.91L5,2.28c-0.37-0.37-0.98-0.37-1.36,0L2.28,3.64C1.91,4.02,1.91,4.63,2.28,5l1.62,1.62 C3.66,7.06,3.46,7.51,3.31,8H1C0.45,8,0,8.45,0,9v2c0,0.55,0.45,1,1,1h2.31c0.14,0.46,0.33,0.89,0.56,1.3L2.17,15 c-0.39,0.39-0.39,1.02,0,1.41l1.41,1.41c0.39,0.39,1.02,0.39,1.41,0l1.7-1.7c0.41,0.22,0.84,0.41,1.3,0.55V19c0,0.55,0.45,1,1,1h2 c0.55,0,1-0.45,1-1v-2.33c0.48-0.14,0.94-0.35,1.37-0.59L15,17.72c0.37,0.37,0.98,0.37,1.36,0l1.36-1.36 c0.37-0.37,0.37-0.98,0-1.36l-1.62-1.62c0.24-0.43,0.45-0.89,0.6-1.38H19c0.55,0,1-0.45,1-1V9C20,8.45,19.55,8,19,8z M10,14 c-2.21,0-4-1.79-4-4c0-2.21,1.79-4,4-4s4,1.79,4,4C14,12.21,12.21,14,10,14z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E\",\n keyboard: \"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='utf-8'%3F%3E%3C!-- Generator: Adobe Illustrator 18.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3Csvg version='1.1' id='Layer_1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 16 16' enable-background='new 0 0 16 16' xml:space='preserve'%3E%3Cg id='manually_entered_data_2_'%3E%3Cg%3E%3Cpath fill='%23FFFFFF' fill-rule='evenodd' clip-rule='evenodd' d='M1,8h3.76l2-2H1C0.45,6,0,6.45,0,7C0,7.55,0.45,8,1,8z M15.49,3.99 C15.8,3.67,16,3.23,16,2.75C16,1.78,15.22,1,14.25,1c-0.48,0-0.92,0.2-1.24,0.51l-1.44,1.44l2.47,2.47L15.49,3.99z M1,4h7.76l2-2 H1C0.45,2,0,2.45,0,3C0,3.55,0.45,4,1,4z M1,10c-0.55,0-1,0.45-1,1c0,0.48,0.35,0.86,0.8,0.96L2.76,10H1z M10.95,3.57l-6.69,6.69 l2.47,2.47l6.69-6.69L10.95,3.57z M15.2,6.04L13.24,8H15c0.55,0,1-0.45,1-1C16,6.52,15.65,6.14,15.2,6.04z M2,15l3.86-1.39 l-2.46-2.44L2,15z M15,10h-3.76l-2,2H15c0.55,0,1-0.45,1-1C16,10.45,15.55,10,15,10z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E\",\n up: \"data:image/svg+xml,%3C%3Fxml version='1.0' encoding='utf-8'%3F%3E%3C!-- Generator: Adobe Illustrator 17.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) --%3E%3C!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'%3E%3Csvg version='1.1' id='Layer_1' xmlns:sketch='http://www.bohemiancoding.com/sketch/ns' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' viewBox='0 0 20 20' fill='%23FFF' enable-background='new 0 0 20 20' xml:space='preserve'%3E%3Ctitle%3EShape%3C/title%3E%3Cdesc%3ECreated with Sketch.%3C/desc%3E%3Cg id='Page-1' sketch:type='MSPage'%3E%3Cg id='Artboard-1' transform='translate(-3.000000, -1.000000)' sketch:type='MSArtboardGroup'%3E%3Cpath id='Shape' sketch:type='MSShapeGroup' d='M19.7,8.3l-6-6C13.5,2.1,13.3,2,13,2s-0.5,0.1-0.7,0.3l-6,6C6.1,8.5,6,8.7,6,9 c0,0.6,0.5,1,1,1c0.3,0,0.5-0.1,0.7-0.3L12,5.4V19c0,0.5,0.4,1,1,1s1-0.5,1-1V5.4l4.3,4.3C18.5,9.9,18.7,10,19,10c0.5,0,1-0.4,1-1 C20,8.7,19.9,8.5,19.7,8.3L19.7,8.3z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E\",\n down,\n do: down,\n dw: down,\n dwn: down,\n left,\n le: left,\n lft: left,\n right,\n ri: right,\n rght: right,\n rgh: right,\n enter,\n en: enter,\n enr: enter,\n ent: enter,\n entr: enter,\n};\n\n","export type GridType = \"square\" | \"honeycomb\";\n\nexport interface Cell {\n centerX: number;\n centerY: number;\n}\n\nexport interface GridConfiguration {\n gridType: GridType,\n cells: Cell[][];\n columnWidth: number;\n rowHeight: number;\n columnsPadding: number;\n rowsPadding: number;\n width: number;\n height: number;\n}\n\nexport interface Grid {\n getConfiguration(width: number, height: number, scale?: number): GridConfiguration;\n}\n\nexport function getGrid(gridType: GridType) {\n switch (gridType) {\n case \"square\": return getSquareGrid();\n case \"honeycomb\": return getHoneyCombGrid();\n }\n\n throw new Error(\"Unknown grid type \" + gridType);\n}\n\nfunction getSquareGrid(): Grid {\n class SquareGrid implements Grid {\n aspect = 200 / 320;\n\n getConfiguration(width: number, height: number, scale = 1): GridConfiguration {\n const cols = this.getCols();\n const rows = this.getRows();\n const middleCol = Math.floor(cols / 2);\n const middleRow = Math.floor(rows / 2);\n const columnsPadding = width * 5 / 100 / 2;\n const rowsPadding = columnsPadding;\n const columnWidth = (width - columnsPadding * 2) / cols * scale;\n const rowHeight = (height - rowsPadding * 2) / rows * scale;\n const size = Math.min(columnWidth, rowHeight);\n const cells: Cell[][] = [];\n for (let row = 0; row < rows; ++row) {\n const cellRow: Cell[] = [];\n for (let col = 0; col < cols; ++col) {\n cellRow.push({\n centerX: col < middleCol ?\n columnsPadding + size * (col + 1 / 2) :\n width - columnsPadding - size * ((cols - col - 1) + 1 / 2),\n centerY: row < middleRow ?\n rowsPadding + size * (row + 1 / 2) :\n height - rowsPadding - size * ((rows - row - 1) + 1 / 2),\n });\n }\n cells.push(cellRow);\n }\n return {\n gridType: \"square\",\n cells,\n columnWidth: size,\n rowHeight: size,\n columnsPadding,\n rowsPadding,\n width,\n height,\n };\n }\n\n private getCols() {\n return 10;\n }\n\n private getRows() {\n return Math.floor(this.getCols() * this.aspect) + 1;\n }\n }\n\n return new SquareGrid();\n}\n\nfunction getHoneyCombGrid(): Grid {\n class SquareGrid implements Grid {\n aspect = 200 / 320;\n\n getConfiguration(width: number, height: number, scale = 1): GridConfiguration {\n const cols = this.getCols();\n const rows = this.getRows();\n const middleCol = Math.floor(cols / 2);\n const middleRow = Math.floor(rows / 2);\n const columnsPadding = width * 5 / 100 / 2;\n const rowsPadding = columnsPadding;\n const columnWidth = (width - columnsPadding * 2) / cols * scale;\n const rowHeight = (height - rowsPadding * 2) / rows * scale;\n const size = Math.min(columnWidth, rowHeight);\n const cells: Cell[][] = [];\n for (let row = 0; row < rows; ++row) {\n const cellRow: Cell[] = [];\n const cellCols = row % 2 == 0 ? cols : cols - 1;\n const padding = row % 2 == 0 ? 0 : size / 2;\n for (let col = 0; col < cellCols; ++col) {\n cellRow.push({\n centerX: col < middleCol ?\n padding + columnsPadding + size * (col + 1 / 2):\n padding + width - columnsPadding - size * ((cols - col - 1) + 1/2),\n centerY: row < middleRow ?\n rowsPadding + size * (row + 1 / 2) :\n height - rowsPadding - size * ((rows - row - 1) + 1 / 2),\n });\n }\n cells.push(cellRow);\n }\n return {\n gridType: \"honeycomb\",\n cells,\n columnWidth: size,\n rowHeight: size,\n columnsPadding,\n rowsPadding,\n width,\n height,\n };\n }\n\n getCols() {\n return 10;\n }\n\n getRows() {\n return Math.floor(this.getCols() * this.aspect) + 1;\n }\n }\n\n return new SquareGrid();\n}\n","import { CommandInterface } from \"emulators\";\nimport { Layers } from \"../dom/layers\";\n\nexport type Mapper = {[keyCode: number]: number};\n\nexport function keyboard(layers: Layers,\n ci: CommandInterface,\n mapperOpt?: Mapper) {\n const mapper = mapperOpt || {};\n function map(keyCode: number) {\n if (mapper[keyCode] !== undefined) {\n return mapper[keyCode];\n }\n\n return keyCode;\n }\n\n layers.setOnKeyDown((keyCode: number) => {\n ci.sendKeyEvent(map(keyCode), true);\n });\n layers.setOnKeyUp((keyCode: number) => {\n ci.sendKeyEvent(map(keyCode), false);\n });\n layers.setOnKeyPress((keyCode: number) => {\n ci.simulateKeyPress(map(keyCode));\n });\n layers.setOnKeysPress((keyCodes: number[]) => {\n ci.simulateKeyPress(...keyCodes);\n });\n\n return () => {\n // eslint-disable-next-line\n layers.setOnKeyDown((keyCode: number) => { /**/ });\n // eslint-disable-next-line\n layers.setOnKeyUp((keyCode: number) => { /**/ });\n // eslint-disable-next-line\n layers.setOnKeyPress((keyCode: number) => { /**/ });\n // eslint-disable-next-line\n layers.setOnKeysPress((keyCodes: number[]) => { /**/ });\n };\n}\n","import { Button } from \"./button\";\nimport { EventMapping } from \"./nipple\";\nimport { Mapper } from \"./keyboard\";\n\nimport { GridType } from \"./grid\";\n\nexport type LayerControlType =\n \"Options\" | \"Key\" | \"Keyboard\" |\n \"Switch\" | \"ScreenMove\" |\n \"PointerButton\" | \"NippleActivator\";\n\nexport interface LayerPosition {\n column: number;\n row: number;\n}\n\nexport interface LayerControl extends LayerPosition {\n type: LayerControlType,\n symbol: string;\n}\n\nexport interface LayerKeyControl extends LayerControl {\n mapTo: number[];\n}\n\nexport interface LayerSwitchControl extends LayerControl {\n layerName: string,\n}\n\nexport interface LayerScreenMoveControl extends LayerControl {\n direction: \"up\" | \"down\" | \"left\" | \"right\" |\n \"up-left\" | \"up-right\" | \"down-left\" | \"down-right\";\n}\n\nexport interface LayerPointerButtonControl extends LayerControl {\n button: 0 | 1;\n click: boolean;\n}\n\n// eslint-disable-next-line\nexport interface LayerNippleActivatorControl extends LayerControl {\n}\n\n// eslint-disable-next-line\nexport interface LayerPointerResetControl extends LayerControl {\n}\n\n// eslint-disable-next-line\nexport interface LayerPointerToggleControl extends LayerControl {\n}\n\nexport interface LayerPointerMoveControl extends LayerControl {\n x: number;\n y: number;\n}\n\n\nexport interface LayerConfig {\n grid: GridType,\n title: string,\n controls: LayerControl[],\n}\n\nexport interface LayersConfig {\n version: number,\n layers: LayerConfig[],\n}\n\n\nexport interface LegacyLayerConfig {\n name: string,\n buttons: Button[],\n gestures: EventMapping[],\n mapper: Mapper,\n}\n\nexport type LegacyLayersConfig = {[index: string]: LegacyLayerConfig};\n\nexport function extractLayersConfig(config: any): LayersConfig | LegacyLayersConfig | null {\n if (config.layersConfig !== undefined) {\n if (config.layersConfig.version === 1) {\n migrateV1ToV2(config.layersConfig);\n }\n\n return config.layersConfig;\n }\n\n if (config.layers !== undefined) {\n return config.layers;\n }\n\n return null;\n}\n\nfunction migrateV1ToV2(config: LayersConfig) {\n for (const layer of config.layers) {\n for (const control of layer.controls) {\n if (control.type === \"Key\") {\n const keyControl = control as LayerKeyControl;\n if (typeof keyControl.mapTo === \"number\") {\n keyControl.mapTo = [keyControl.mapTo];\n }\n }\n }\n }\n}\n","import { Layers } from \"../dom/layers\";\nimport { CommandInterface } from \"emulators\";\nimport {\n LayersConfig, LayerConfig, LayerKeyControl,\n LayerControl, LayerSwitchControl, LayerScreenMoveControl,\n LayerPointerButtonControl, LayerPointerMoveControl, LayerPointerResetControl,\n LayerPointerToggleControl, LayerNippleActivatorControl,\n} from \"./layers-config\";\nimport { Cell, getGrid, GridConfiguration } from \"./grid\";\nimport { createButton } from \"./button\";\nimport { DosInstance } from \"../js-dos\";\nimport { keyboard } from \"./keyboard\";\nimport { mouse } from \"./mouse/mouse-common\";\nimport { options } from \"./options\";\nimport { pointer } from \"../dom/pointer\";\n\n// eslint-disable-next-line\nconst nipplejs = require(\"nipplejs\");\n\nexport function initLayersControl(\n layers: Layers,\n layersConfig: LayersConfig,\n ci: CommandInterface,\n dosInstance: DosInstance,\n mirrored: boolean,\n scale: number,\n layerName?: string): () => void {\n let selectedLayer = layersConfig.layers[0];\n if (layerName !== undefined) {\n for (const next of layersConfig.layers) {\n if (next.title === layerName) {\n selectedLayer = next;\n break;\n }\n }\n }\n return initLayerConfig(selectedLayer, layers, ci, dosInstance, mirrored, scale);\n}\n\ninterface CellWithMeta extends Cell {\n hidden?: boolean,\n}\n\ninterface Sensor {\n activate: () => void;\n deactivate: () => void;\n}\n\ninterface MirroredInfo {\n leftStart: number;\n leftEnd: number;\n rightStart: number;\n rightEnd: number;\n}\n\nclass ControlSensors {\n sensors: { [key: string]: Sensor } = {};\n\n activate(row: number, column: number) {\n const sensor = this.sensors[column + \"_\" + row];\n if (sensor !== undefined) {\n sensor.activate();\n }\n }\n\n deactivate(row: number, column: number) {\n const sensor = this.sensors[column + \"_\" + row];\n if (sensor !== undefined) {\n sensor.deactivate();\n }\n }\n\n register(row: number, column: number, sensor: Sensor) {\n this.sensors[column + \"_\" + row] = sensor;\n }\n}\n\ntype ControlFactory = (control: any,\n layers: Layers,\n ci: CommandInterface,\n gridConfig: GridConfiguration,\n sensors: ControlSensors,\n dosInstance: DosInstance) => () => void;\n\nconst factoryMapping: { [type: string]: ControlFactory } = {\n Key: createKeyControl,\n Options: createOptionsControl,\n Keyboard: createKeyboardControl,\n Switch: createSwitchControl,\n ScreenMove: createScreenMoveControl,\n PointerButton: createPointerButtonControl,\n PointerMove: createPointerMoveControl,\n PointerReset: createPointerResetControl,\n PointerToggle: createPointerToggleControl,\n NippleActivator: createNippleActivatorControl,\n};\n\nfunction initLayerConfig(layerConfig: LayerConfig,\n layers: Layers,\n ci: CommandInterface,\n dosInstance: DosInstance,\n mirrored: boolean,\n scale: number): () => void {\n const unbindKeyboard = keyboard(layers, ci);\n const unbindMouse = mouse(dosInstance.autolock, dosInstance.sensitivity, layers, ci);\n\n const unbindControls: (() => void)[] = [];\n function rebuild(width: number, height: number) {\n for (const next of unbindControls) {\n next();\n }\n unbindControls.splice(0, unbindControls.length);\n\n const grid = getGrid(layerConfig.grid);\n const gridConfig = grid.getConfiguration(width, height, scale);\n const sensors = new ControlSensors();\n\n for (const next of layerConfig.controls) {\n const { row, column, type } = next;\n if (type === \"NippleActivator\") {\n setHiddenAround(gridConfig, row, column);\n }\n }\n\n let doOffsetColumnInRow = -1;\n if (layers.options.optionControls?.length === 0) {\n for (const next of layerConfig.controls) {\n const { row, type } = next;\n if (type === \"Options\") {\n doOffsetColumnInRow = row;\n break;\n }\n }\n }\n\n const mirroredInfo: { [row: number]: MirroredInfo } = {};\n if (mirrored) {\n for (const next of layerConfig.controls) {\n const { row } = next;\n let column = next.column;\n const columnsCount = gridConfig.cells[row].length;\n const middleColumn = columnsCount / 2;\n\n if (row === doOffsetColumnInRow && column >= middleColumn) {\n column = Math.min(column + 1, columnsCount - 1);\n }\n\n if (mirroredInfo[row] === undefined) {\n mirroredInfo[row] = {\n leftStart: middleColumn,\n leftEnd: 0,\n rightStart: columnsCount - 1,\n rightEnd: middleColumn,\n };\n }\n\n if (column < middleColumn) {\n mirroredInfo[row].leftStart = Math.min(mirroredInfo[row].leftStart, column);\n mirroredInfo[row].leftEnd = Math.max(mirroredInfo[row].leftEnd, column);\n } else {\n mirroredInfo[row].rightStart = Math.min(mirroredInfo[row].rightStart, column);\n mirroredInfo[row].rightEnd = Math.max(mirroredInfo[row].rightEnd, column);\n }\n }\n }\n\n for (const next of layerConfig.controls) {\n const factory = factoryMapping[next.type];\n if (factory === undefined) {\n console.error(\"Factory for control '\" + next.type + \"' is not defined\");\n continue;\n }\n\n const copy = { ...next };\n const columnsCount = gridConfig.cells[next.row].length;\n const middleColumn = columnsCount / 2;\n if (doOffsetColumnInRow === next.row && next.column >= middleColumn) {\n copy.column = Math.min(copy.column + 1, columnsCount - 1);\n }\n\n if (mirrored) {\n const { leftStart, leftEnd, rightStart, rightEnd } = mirroredInfo[copy.row];\n const leftSide = copy.column < middleColumn;\n if (leftSide) {\n copy.column += middleColumn + (middleColumn - leftEnd) - leftStart - 1;\n } else {\n copy.column -= middleColumn + (rightStart - middleColumn) - (columnsCount - rightEnd) + 1;\n }\n\n if (copy.column >= columnsCount) {\n console.error(\"Column\", copy.column, \"is out of bound\",\n columnsCount, leftSide ? \"[leftSide]\" : \"[rightSide]\", mirroredInfo);\n copy.column = columnsCount - 1;\n } else if (copy.column < 0) {\n console.error(\"Column\", copy.column, \"is out of bound\",\n 0, leftSide ? \"[leftSide]\" : \"[rightSide]\", mirroredInfo);\n copy.column = 0;\n }\n }\n\n const unbind = factory(copy, layers, ci, gridConfig, sensors, dosInstance);\n unbindControls.push(unbind);\n }\n }\n\n layers.addOnResize(rebuild);\n rebuild(layers.width, layers.height);\n\n return () => {\n layers.removeOnResize(rebuild);\n unbindKeyboard();\n unbindMouse();\n for (const next of unbindControls) {\n next();\n }\n };\n}\n\nfunction createKeyControl(keyControl: LayerKeyControl,\n layers: Layers,\n ci: CommandInterface,\n gridConfig: GridConfiguration,\n sensors: ControlSensors,\n dosInstance: DosInstance) {\n const { cells, columnWidth } = gridConfig;\n const { row, column } = keyControl;\n const { centerX, centerY } = cells[row][column];\n\n const handler = {\n onDown: () => {\n for (const next of keyControl.mapTo) {\n ci.sendKeyEvent(next, true);\n }\n },\n onUp: () => {\n for (const next of keyControl.mapTo) {\n ci.sendKeyEvent(next, false);\n }\n },\n };\n\n sensors.register(row, column, {\n activate: handler.onDown,\n deactivate: handler.onUp,\n });\n\n if (isHidden(gridConfig, row, column)) {\n return () => {};\n }\n\n const button = createButton(keyControl.symbol, handler, columnWidth);\n\n button.style.position = \"absolute\";\n button.style.left = (centerX - button.widthPx / 2) + \"px\";\n button.style.top = (centerY - button.heightPx / 2) + \"px\";\n\n layers.mouseOverlay.appendChild(button);\n return () => layers.mouseOverlay.removeChild(button);\n}\n\nfunction createOptionsControl(optionControl: LayerControl,\n layers: Layers,\n ci: CommandInterface,\n gridConfig: GridConfiguration,\n sensors: ControlSensors,\n dosInstance: DosInstance) {\n if (layers.options.optionControls?.length === 0) {\n return () => {/**/};\n }\n\n if (layers.options.optionControls !== undefined &&\n layers.options.optionControls.length === 1 &&\n layers.options.optionControls[0] === \"keyboard\") {\n return createKeyboardControl(optionControl, layers, ci, gridConfig, sensors, dosInstance);\n }\n\n const { cells, columnWidth, rowHeight } = gridConfig;\n const { row, column } = optionControl;\n const { centerX, centerY } = cells[row][column];\n\n const top = centerY - rowHeight / 2;\n const left = centerX - columnWidth / 2;\n const right = gridConfig.width - left - columnWidth;\n\n return options(layers, [\"default\"], () => {/**/},\n columnWidth,\n top,\n right);\n}\n\nfunction createKeyboardControl(keyboardControl: LayerControl,\n layers: Layers,\n ci: CommandInterface,\n gridConfig: GridConfiguration,\n sensors: ControlSensors,\n dosInstance: DosInstance) {\n const { cells, columnWidth } = gridConfig;\n const { row, column } = keyboardControl;\n const { centerX, centerY } = cells[row][column];\n\n const button = createButton(\"keyboard\", {\n onUp: () => layers.toggleKeyboard(),\n }, columnWidth);\n\n const onKeyboardVisibility = (visible: boolean) => {\n if (visible) {\n button.children[0].classList.add(\"emulator-control-close-icon\");\n } else {\n button.children[0].classList.remove(\"emulator-control-close-icon\");\n }\n };\n layers.setOnKeyboardVisibility(onKeyboardVisibility);\n\n button.style.position = \"absolute\";\n button.style.left = (centerX - button.widthPx / 2) + \"px\";\n button.style.top = (centerY - button.heightPx / 2) + \"px\";\n\n layers.mouseOverlay.appendChild(button);\n return () => {\n layers.mouseOverlay.removeChild(button);\n layers.removeOnKeyboardVisibility(onKeyboardVisibility);\n };\n}\n\nfunction createSwitchControl(switchControl: LayerSwitchControl,\n layers: Layers,\n ci: CommandInterface,\n gridConfig: GridConfiguration,\n sensors: ControlSensors,\n dosInstance: DosInstance) {\n const { cells, columnWidth } = gridConfig;\n const { row, column } = switchControl;\n const { centerX, centerY } = cells[row][column];\n\n const button = createButton(switchControl.symbol, {\n onUp: () => dosInstance.setLayersConfig(dosInstance.getLayersConfig(), switchControl.layerName),\n }, columnWidth);\n\n button.style.position = \"absolute\";\n button.style.left = (centerX - button.widthPx / 2) + \"px\";\n button.style.top = (centerY - button.heightPx / 2) + \"px\";\n\n layers.mouseOverlay.appendChild(button);\n return () => {\n layers.mouseOverlay.removeChild(button);\n };\n}\n\nfunction createScreenMoveControl(screenMoveControl: LayerScreenMoveControl,\n layers: Layers,\n ci: CommandInterface,\n gridConfig: GridConfiguration,\n sensors: ControlSensors,\n dosInstance: DosInstance) {\n const { cells, columnWidth } = gridConfig;\n const { row, column } = screenMoveControl;\n const { centerX, centerY } = cells[row][column];\n\n let mX = 0.5;\n let mY = 0.5;\n\n if (screenMoveControl.direction.indexOf(\"up\") >= 0) {\n mY = 0;\n }\n\n if (screenMoveControl.direction.indexOf(\"down\") >= 0) {\n mY = 1;\n }\n\n if (screenMoveControl.direction.indexOf(\"left\") >= 0) {\n mX = 0;\n }\n\n if (screenMoveControl.direction.indexOf(\"right\") >= 0) {\n mX = 1;\n }\n\n const handler = {\n onDown: () => {\n ci.sendMouseMotion(mX, mY);\n },\n onUp: () => {\n ci.sendMouseMotion(0.5, 0.5);\n },\n };\n\n sensors.register(row, column, {\n activate: handler.onDown,\n deactivate: handler.onUp,\n });\n\n if (isHidden(gridConfig, row, column)) {\n return () => {};\n }\n\n const button = createButton(screenMoveControl.symbol, handler, columnWidth);\n\n button.style.position = \"absolute\";\n button.style.left = (centerX - button.widthPx / 2) + \"px\";\n button.style.top = (centerY - button.heightPx / 2) + \"px\";\n\n layers.mouseOverlay.appendChild(button);\n return () => layers.mouseOverlay.removeChild(button);\n}\n\nfunction createPointerButtonControl(pointerButtonControl: LayerPointerButtonControl,\n layers: Layers,\n ci: CommandInterface,\n gridConfig: GridConfiguration,\n sensors: ControlSensors,\n dosInstance: DosInstance) {\n const { cells, columnWidth } = gridConfig;\n const { row, column, click } = pointerButtonControl;\n const { centerX, centerY } = cells[row][column];\n\n const handler = {\n onDown: () => {\n if (!click) {\n layers.pointerButton = pointerButtonControl.button;\n } else {\n ci.sendMouseButton(pointerButtonControl.button, true);\n }\n },\n onUp: () => {\n if (!click) {\n layers.pointerButton = 0;\n } else {\n ci.sendMouseButton(pointerButtonControl.button, false);\n }\n },\n };\n\n sensors.register(row, column, {\n activate: handler.onDown,\n deactivate: handler.onUp,\n });\n\n if (isHidden(gridConfig, row, column)) {\n return () => {};\n }\n\n const button = createButton(pointerButtonControl.symbol, handler, columnWidth);\n\n button.style.position = \"absolute\";\n button.style.left = (centerX - button.widthPx / 2) + \"px\";\n button.style.top = (centerY - button.heightPx / 2) + \"px\";\n\n layers.mouseOverlay.appendChild(button);\n return () => layers.mouseOverlay.removeChild(button);\n}\n\nfunction createPointerMoveControl(pointerMoveControl: LayerPointerMoveControl,\n layers: Layers,\n ci: CommandInterface,\n gridConfig: GridConfiguration,\n sensors: ControlSensors,\n dosInstance: DosInstance) {\n const { cells, columnWidth } = gridConfig;\n const { row, column, x, y } = pointerMoveControl;\n const { centerX, centerY } = cells[row][column];\n\n const handler = {\n onDown: () => {\n ci.sendMouseMotion(x, y);\n },\n onUp: () => {\n ci.sendMouseMotion(x, y);\n },\n };\n\n sensors.register(row, column, {\n activate: handler.onDown,\n deactivate: handler.onUp,\n });\n\n if (isHidden(gridConfig, row, column)) {\n return () => {};\n }\n\n const button = createButton(pointerMoveControl.symbol, handler, columnWidth);\n\n button.style.position = \"absolute\";\n button.style.left = (centerX - button.widthPx / 2) + \"px\";\n button.style.top = (centerY - button.heightPx / 2) + \"px\";\n\n layers.mouseOverlay.appendChild(button);\n return () => layers.mouseOverlay.removeChild(button);\n}\n\nfunction createPointerResetControl(pointerResetControl: LayerPointerResetControl,\n layers: Layers,\n ci: CommandInterface,\n gridConfig: GridConfiguration,\n sensors: ControlSensors,\n dosInstance: DosInstance) {\n const { cells, columnWidth } = gridConfig;\n const { row, column } = pointerResetControl;\n const { centerX, centerY } = cells[row][column];\n\n const handler = {\n onDown: () => {\n ci.sendMouseSync();\n },\n };\n\n sensors.register(row, column, {\n activate: handler.onDown,\n deactivate: () => { },\n });\n\n if (isHidden(gridConfig, row, column)) {\n return () => {};\n }\n\n const button = createButton(pointerResetControl.symbol, handler, columnWidth);\n\n button.style.position = \"absolute\";\n button.style.left = (centerX - button.widthPx / 2) + \"px\";\n button.style.top = (centerY - button.heightPx / 2) + \"px\";\n\n layers.mouseOverlay.appendChild(button);\n return () => layers.mouseOverlay.removeChild(button);\n}\n\nfunction createPointerToggleControl(pointerToggleControl: LayerPointerToggleControl,\n layers: Layers,\n ci: CommandInterface,\n gridConfig: GridConfiguration,\n sensors: ControlSensors,\n dosInstance: DosInstance) {\n const { cells, columnWidth } = gridConfig;\n const { row, column } = pointerToggleControl;\n const { centerX, centerY } = cells[row][column];\n\n const handler = {\n onDown: () => {\n layers.pointerDisabled = !layers.pointerDisabled;\n if (layers.pointerDisabled) {\n if (!button.classList.contains(\"emulator-button-highlight\")) {\n button.classList.add(\"emulator-button-highlight\");\n }\n } else {\n button.classList.remove(\"emulator-button-highlight\");\n }\n },\n };\n\n sensors.register(row, column, {\n activate: handler.onDown,\n deactivate: () => { },\n });\n\n if (isHidden(gridConfig, row, column)) {\n return () => {};\n }\n\n const button = createButton(pointerToggleControl.symbol, handler, columnWidth);\n\n button.style.position = \"absolute\";\n button.style.left = (centerX - button.widthPx / 2) + \"px\";\n button.style.top = (centerY - button.heightPx / 2) + \"px\";\n\n layers.mouseOverlay.appendChild(button);\n return () => layers.mouseOverlay.removeChild(button);\n}\n\nfunction createNippleActivatorControl(nippleActivatorControl: LayerNippleActivatorControl,\n layers: Layers,\n ci: CommandInterface,\n gridConfig: GridConfiguration,\n sensors: ControlSensors,\n dosInstance: DosInstance) {\n const { cells, columnWidth, rowHeight, width, height } = gridConfig;\n const { row, column } = nippleActivatorControl;\n const { centerX, centerY } = cells[row][column];\n\n const nippleContainer = document.createElement(\"div\");\n const cellSize = 1.5;\n const left = Math.max(0, centerX - columnWidth * cellSize);\n const top = Math.max(0, centerY - rowHeight * cellSize);\n const right = Math.max(0, width - centerX - columnWidth * cellSize);\n const bottom = Math.max(0, height - centerY - rowHeight * cellSize);\n\n nippleContainer.style.position = \"absolute\";\n nippleContainer.style.zIndex = \"999\";\n nippleContainer.style.left = left + \"px\";\n nippleContainer.style.top = top + \"px\";\n nippleContainer.style.right = right + \"px\";\n nippleContainer.style.bottom = bottom + \"px\";\n\n layers.mouseOverlay.appendChild(nippleContainer);\n\n const manager = nipplejs.create({\n zone: nippleContainer,\n multitouch: false,\n maxNumberOfNipples: 1,\n mode: \"static\",\n follow: false,\n dynamicPage: true,\n size: Math.max(columnWidth, rowHeight) * 1.5,\n position: {\n left: (width - right - left) / 2 + \"px\",\n top: (height - bottom - top) / 2 + \"px\",\n },\n });\n\n let activeColumn = -1;\n let activeRow = -1;\n manager.on(\"move\", (evt: any, data: any) => {\n if (data.distance < 10) {\n sensors.deactivate(activeRow, activeColumn);\n activeColumn = -1;\n activeRow = -1;\n return;\n }\n let targetColumn = -1;\n let targetRow = -1;\n const step = 360 / 8;\n const half = step / 2;\n const degree = data.angle.degree;\n if (degree > half && degree <= half + step) {\n // console.log(\"up-right\")\n targetColumn = column + 1;\n targetRow = row - 1;\n } else if (degree > half + step && degree <= half + step * 2) {\n // console.log(\"up\");\n targetColumn = column;\n targetRow = row - 1;\n } else if (degree > half + step * 2 && degree <= half + step * 3) {\n // console.log(\"up-left\");\n targetColumn = column - 1;\n targetRow = row - 1;\n } else if (degree > half + step * 3 && degree <= half + step * 4) {\n // console.log(\"left\");\n targetColumn = column - 1;\n targetRow = row;\n } else if (degree > half + step * 4 && degree <= half + step * 5) {\n // console.log(\"down-left\");\n targetColumn = column - 1;\n targetRow = row + 1;\n } else if (degree > half + step * 5 && degree <= half + step * 6) {\n // console.log(\"down\")\n targetColumn = column;\n targetRow = row + 1;\n } else if (degree > half + step * 6 && degree <= half + step * 7) {\n // console.log(\"down-right\");\n targetColumn = column + 1;\n targetRow = row + 1;\n } else {\n // console.log(\"right\");\n targetColumn = column + 1;\n targetRow = row;\n }\n\n if (activeColumn !== targetColumn || activeRow !== targetRow) {\n sensors.deactivate(activeRow, activeColumn);\n sensors.activate(targetRow, targetColumn);\n activeColumn = targetColumn;\n activeRow = targetRow;\n }\n });\n\n let started = false;\n manager.on(\"start\", () => {\n started = true;\n });\n\n manager.on(\"end\", () => {\n started = false;\n sensors.deactivate(activeRow, activeColumn);\n activeRow = -1;\n activeColumn = -1;\n });\n\n const options = {\n capture: true,\n };\n\n function onEnd(e: Event) {\n if (started) {\n manager.processOnEnd(e);\n }\n }\n\n for (const next of pointer.enders) {\n layers.mouseOverlay.addEventListener(next, onEnd, options);\n }\n\n return () => {\n manager.destroy();\n layers.mouseOverlay.removeChild(nippleContainer);\n for (const next of pointer.enders) {\n layers.mouseOverlay.removeEventListener(next, onEnd, options);\n }\n };\n}\n\nfunction isHidden(config: GridConfiguration, row: number, column: number) {\n return (config.cells[row][column] as CellWithMeta).hidden === true;\n}\n\nfunction setHiddenAround(config: GridConfiguration,\n centralRow: number,\n centralColumn: number) {\n function setHiddenIfValid(row: number, column: number) {\n if (row === centralRow && column === centralColumn) {\n return;\n }\n\n if (row >= 0 && row < config.cells.length) {\n const rowCells = config.cells[row];\n if (column >= 0 && column < rowCells.length) {\n (rowCells[column] as CellWithMeta).hidden = true;\n }\n }\n }\n\n for (let ri = centralRow - 1; ri <= centralRow + 1; ++ri) {\n for (let ci = centralColumn - 1; ci <= centralColumn + 1; ++ci) {\n setHiddenIfValid(ri, ci);\n }\n }\n}\n","import { LegacyLayersConfig } from \"./layers-config\";\nimport { Layers } from \"../dom/layers\";\nimport { CommandInterface } from \"emulators\";\nimport { deprecatedButton } from \"./button\";\nimport { mouse } from \"./mouse/mouse-common\";\nimport { nipple } from \"./nipple\";\nimport { options } from \"./options\";\nimport { keyboard } from \"./keyboard\";\nimport { DosInstance } from \"../js-dos\";\n\nexport function initLegacyLayersControl(\n dosInstance: DosInstance,\n layers: Layers,\n layersConfig: LegacyLayersConfig,\n ci: CommandInterface) {\n const layersNames = Object.keys(layersConfig);\n\n const unbind = {\n keyboard: () => {/**/},\n mouse: () => {/**/},\n gestures: () => {/**/},\n buttons: () => {/**/},\n };\n\n const changeControlLayer = (layerName: string) => {\n unbind.keyboard();\n unbind.mouse();\n unbind.gestures();\n unbind.buttons();\n\n unbind.keyboard = () => {/**/};\n unbind.mouse = () => {/**/};\n unbind.gestures = () => {/**/};\n unbind.buttons = () => {/**/};\n\n const layer = layersConfig[layerName];\n if (layer === undefined) {\n return;\n }\n\n unbind.keyboard = keyboard(layers, ci, layer.mapper);\n\n if (layer.gestures !== undefined && layer.gestures.length > 0) {\n unbind.gestures = nipple(layers, ci, layer.gestures);\n } else {\n unbind.mouse = mouse(dosInstance.autolock, dosInstance.sensitivity, layers, ci);\n }\n\n if (layer.buttons !== undefined && layer.buttons.length) {\n unbind.buttons = deprecatedButton(layers, ci, layer.buttons, 54);\n }\n };\n\n\n const unbindOptions =\n (layers.options.optionControls?.length === 0) ?\n () => {/**/} :\n options(layers, layersNames, changeControlLayer, 54, 54 / 4, 0);\n\n changeControlLayer(\"default\");\n\n return () => {\n unbind.gestures();\n unbind.buttons();\n unbind.mouse();\n unbind.keyboard();\n unbindOptions();\n };\n}\n","import { CommandInterface } from \"emulators\";\nimport { Layers } from \"../../dom/layers\";\nimport { pointer, getPointerState } from \"../../dom/pointer\";\nimport { mouseSwipe } from \"./mouse-swipe\";\nimport { mouseNotLocked } from \"./mouse-not-locked\";\nimport { mouseLocked } from \"./mouse-locked\";\n\nconst insensitivePadding = 1 / 100;\n\nexport function mapXY(eX: number, eY: number,\n ci: CommandInterface, layers: Layers) {\n const frameWidth = ci.width();\n const frameHeight = ci.height();\n const containerWidth = layers.width;\n const containerHeight = layers.height;\n\n const aspect = frameWidth / frameHeight;\n\n let width = containerWidth;\n let height = containerWidth / aspect;\n\n if (height > containerHeight) {\n height = containerHeight;\n width = containerHeight * aspect;\n }\n\n const top = (containerHeight - height) / 2;\n const left = (containerWidth - width) / 2;\n\n let x = Math.max(0, Math.min(1, (eX - left) / width));\n let y = Math.max(0, Math.min(1, (eY - top) / height));\n\n if (x <= insensitivePadding) {\n x = 0;\n }\n\n if (x >= (1 - insensitivePadding)) {\n x = 1;\n }\n\n if (y <= insensitivePadding) {\n y = 0;\n }\n\n if (y >= (1 - insensitivePadding)) {\n y = 1;\n }\n\n return {\n x,\n y,\n };\n}\n\nexport function mount(el: HTMLDivElement, layers: Layers,\n onMouseDown: (x: number, y: number, button: number) => void,\n onMouseMove: (x: number, y: number, mX: number, mY: number) => void,\n onMouseUp: (x: number, y: number, button: number) => void,\n onMouseLeave: (x: number, y: number) => void) {\n // eslint-disable-next-line\n function preventDefaultIfNeeded(e: Event) {\n // not needed yet\n }\n\n let pressedButton = 0;\n const onStart = (e: Event) => {\n if (e.target !== el) {\n return;\n }\n\n if (layers.pointerDisabled) {\n e.stopPropagation();\n preventDefaultIfNeeded(e);\n return;\n }\n\n const state = getPointerState(e, el);\n pressedButton = state.button || layers.pointerButton;\n onMouseDown(state.x, state.y, pressedButton);\n\n e.stopPropagation();\n preventDefaultIfNeeded(e);\n };\n\n const onChange = (e: Event) => {\n if (e.target !== el) {\n return;\n }\n\n if (layers.pointerDisabled) {\n e.stopPropagation();\n preventDefaultIfNeeded(e);\n return;\n }\n\n const state = getPointerState(e, el);\n onMouseMove(state.x, state.y, state.mX, state.mY);\n e.stopPropagation();\n preventDefaultIfNeeded(e);\n };\n\n const onEnd = (e: Event) => {\n if (layers.pointerDisabled) {\n e.stopPropagation();\n preventDefaultIfNeeded(e);\n return;\n }\n\n const state = getPointerState(e, el);\n onMouseUp(state.x, state.y, pressedButton);\n e.stopPropagation();\n preventDefaultIfNeeded(e);\n };\n\n const onLeave = (e: Event) => {\n if (e.target !== el) {\n return;\n }\n\n if (layers.pointerDisabled) {\n e.stopPropagation();\n preventDefaultIfNeeded(e);\n return;\n }\n\n const state = getPointerState(e, el);\n onMouseLeave(state.x, state.y);\n e.stopPropagation();\n preventDefaultIfNeeded(e);\n };\n\n const onPrevent = (e: Event) => {\n e.stopPropagation();\n preventDefaultIfNeeded(e);\n };\n\n const options = {\n capture: false,\n };\n\n for (const next of pointer.starters) {\n el.addEventListener(next, onStart, options);\n }\n for (const next of pointer.changers) {\n el.addEventListener(next, onChange, options);\n }\n for (const next of pointer.enders) {\n el.addEventListener(next, onEnd, options);\n }\n for (const next of pointer.prevents) {\n el.addEventListener(next, onPrevent, options);\n }\n for (const next of pointer.leavers) {\n el.addEventListener(next, onLeave, options);\n }\n\n return () => {\n for (const next of pointer.starters) {\n el.removeEventListener(next, onStart, options);\n }\n for (const next of pointer.changers) {\n el.removeEventListener(next, onChange, options);\n }\n for (const next of pointer.enders) {\n el.removeEventListener(next, onEnd, options);\n }\n for (const next of pointer.prevents) {\n el.removeEventListener(next, onPrevent, options);\n }\n for (const next of pointer.leavers) {\n el.removeEventListener(next, onLeave, options);\n }\n };\n}\n\nexport function mouse(autolock: boolean, sensitivity: number, layers: Layers, ci: CommandInterface) {\n if (autolock && !pointer.canLock) {\n return mouseSwipe(sensitivity, layers, ci);\n }\n\n if (autolock) {\n return mouseLocked(sensitivity, layers, ci);\n }\n\n return mouseNotLocked(layers, ci);\n}\n","import { CommandInterface } from \"emulators\";\nimport { Layers } from \"../../dom/layers\";\nimport { mount } from \"./mouse-common\";\n\nexport function mouseLocked(sensitivity: number, layers: Layers, ci: CommandInterface) {\n const el = layers.mouseOverlay;\n\n function isNotLocked() {\n return document.pointerLockElement !== el;\n }\n\n function onMouseDown(x: number, y: number, button: number) {\n if (isNotLocked()) {\n const requestPointerLock = el.requestPointerLock ||\n (el as any).mozRequestPointerLock ||\n (el as any).webkitRequestPointerLock;\n\n requestPointerLock.call(el);\n\n return;\n }\n\n ci.sendMouseButton(button, true);\n }\n\n function onMouseUp(x: number, y: number, button: number) {\n if (isNotLocked()) {\n return;\n }\n\n ci.sendMouseButton(button, false);\n }\n\n function onMouseMove(x: number, y: number, mX: number, mY: number) {\n if (isNotLocked()) {\n return;\n }\n\n if (mX === 0 && mY === 0) {\n return;\n }\n\n (ci as any).sendMouseRelativeMotion(mX * sensitivity, mY * sensitivity);\n }\n\n function onMouseLeave(x: number, y: number) {\n // nothing to do\n }\n\n return mount(el, layers, onMouseDown, onMouseMove, onMouseUp, onMouseLeave);\n}\n","import { CommandInterface } from \"emulators\";\nimport { Layers } from \"../../dom/layers\";\n\nimport { mapXY as doMapXY, mount } from \"./mouse-common\";\n\nexport function mouseNotLocked(layers: Layers, ci: CommandInterface) {\n const el = layers.mouseOverlay;\n const mapXY = (x: number, y: number) => doMapXY(x, y, ci, layers);\n\n if (document.pointerLockElement === el) {\n document.exitPointerLock();\n }\n\n function onMouseDown(x: number, y: number, button: number) {\n const xy = mapXY(x, y);\n ci.sendMouseMotion(xy.x, xy.y);\n ci.sendMouseButton(button, true);\n }\n\n function onMouseUp(x: number, y: number, button: number) {\n const xy = mapXY(x, y);\n ci.sendMouseMotion(xy.x, xy.y);\n ci.sendMouseButton(button, false);\n }\n\n function onMouseMove(x: number, y: number, mX: number, mY: number) {\n const xy = mapXY(x, y);\n ci.sendMouseMotion(xy.x, xy.y);\n }\n\n function onMouseLeave(x: number, y: number) {\n const xy = mapXY(x, y);\n ci.sendMouseMotion(xy.x, xy.y);\n }\n\n return mount(el, layers, onMouseDown, onMouseMove, onMouseUp, onMouseLeave);\n}\n","import { CommandInterface } from \"emulators\";\nimport { Layers } from \"../../dom/layers\";\n\nimport { mount } from \"./mouse-common\";\n\nconst clickDelay = 500;\nconst clickThreshold = 50;\n\nexport function mouseSwipe(sensitivity: number, layers: Layers, ci: CommandInterface) {\n const el = layers.mouseOverlay;\n\n let startedAt = -1;\n let acc = 0;\n let prevX = 0;\n let prevY = 0;\n\n const onMouseDown = (x: number, y: number) => {\n startedAt = Date.now();\n acc = 0;\n prevX = x;\n prevY = y;\n };\n\n function onMouseMove(x: number, y: number, mX: number, mY: number) {\n if (mX === undefined) {\n mX = x - prevX;\n }\n\n if (mY === undefined) {\n mY = y - prevY;\n }\n\n prevX = x;\n prevY = y;\n\n if (mX === 0 && mY === 0) {\n return;\n }\n\n acc += Math.abs(mX) + Math.abs(mY);\n\n (ci as any).sendMouseRelativeMotion(mX * sensitivity * 2, mY * sensitivity * 2);\n }\n\n const onMouseUp = (x: number, y: number) => {\n const delay = Date.now() - startedAt;\n\n if (delay < clickDelay && acc < clickThreshold) {\n const button = layers.pointerButton || 0;\n ci.sendMouseButton(button, true);\n setTimeout(() => ci.sendMouseButton(button, false), 60);\n }\n };\n\n const noop = () => {};\n\n return mount(el, layers, onMouseDown, onMouseMove, onMouseUp, noop);\n}\n","// eslint-disable-next-line\nconst nipplejs = require(\"nipplejs\");\n\nimport { KBD_NONE } from \"../dom/keys\";\n\nimport { CommandInterface } from \"emulators\";\nimport { Layers } from \"../dom/layers\";\n\nexport type Event =\n \"dir:up\" | \"dir:down\" | \"dir:left\" | \"dir:right\" |\n \"plain:up\" | \"plain:down\" | \"plain:left\" | \"plain:right\" |\n \"end:release\" | \"tap\";\n\nexport interface EventMapping {\n joystickId: 0 | 1,\n event: Event,\n mapTo: number,\n}\n\nexport function nipple(layers: Layers,\n ci: CommandInterface,\n mapping: EventMapping[]) {\n const manager = nipplejs.create({\n zone: layers.mouseOverlay,\n multitouch: true,\n maxNumberOfNipples: 2,\n });\n\n let pressed = -1;\n\n const press = (keyCode: number) => {\n layers.fireKeyDown(keyCode);\n pressed = keyCode;\n };\n\n const release = () => {\n if (pressed !== -1) {\n layers.fireKeyUp(pressed);\n pressed = -1;\n }\n };\n\n const releaseOnEnd: {[index: number]: boolean} = {};\n const tapJoysticks: {[index: number]: number} = {};\n const usedTimes: {[index: number]: number} = {\n };\n for (const next of mapping) {\n if (next.event === \"end:release\") {\n releaseOnEnd[next.joystickId] = true;\n } else if (next.mapTo !== KBD_NONE) {\n if (next.event === \"tap\") {\n tapJoysticks[next.joystickId] = next.mapTo;\n } else {\n manager.on(next.event, () => {\n usedTimes[next.joystickId] = Date.now();\n release();\n press(next.mapTo);\n });\n }\n }\n }\n\n const startTimes: {[index: number]: number} = {};\n manager.on(\"start\", () => {\n const id = manager.ids.length - 1;\n startTimes[id] = Date.now();\n });\n\n manager.on(\"end\", () => {\n const id = manager.ids.length - 1;\n const delay = Date.now() - startTimes[id];\n\n if (releaseOnEnd[id] === true) {\n release();\n }\n\n if (tapJoysticks[id] && delay < 500 && usedTimes[id] < startTimes[id]) {\n layers.fireKeyPress(tapJoysticks[id]);\n }\n });\n\n return () => manager.destroy();\n}\n\n","import { Layers } from \"../dom/layers\";\nimport { CommandInterface } from \"emulators\";\nimport { keyboard } from \"./keyboard\";\nimport { mouse } from \"./mouse/mouse-common\";\nimport { options } from \"./options\";\nimport { DosInstance } from \"../js-dos\";\n\nexport function initNullLayersControl(\n dosInstance: DosInstance,\n layers: Layers,\n ci: CommandInterface) {\n const unbindKeyboard = keyboard(layers, ci);\n const unbindMouse = mouse(dosInstance.autolock, dosInstance.sensitivity, layers, ci);\n const unbindOptions =\n (layers.options.optionControls?.length === 0) ?\n () => {/**/} :\n options(layers, [\"default\"], () => {/**/}, 54, 54 / 4, 0);\n\n return () => {\n unbindKeyboard();\n unbindMouse();\n unbindOptions();\n };\n}\n","import { Layers } from \"../dom/layers\";\nimport { createButton } from \"./button\";\nimport { createDiv, stopPropagation } from \"../dom/helpers\";\n\nexport function options(layers: Layers,\n layersNames: string[],\n onLayerChange: (layer: string) => void,\n size: number,\n top: number,\n right: number) {\n const ident = Math.round(size / 4);\n\n let controlsVisbile = false;\n let keyboardVisible = false;\n\n const updateVisibility = () => {\n const display = controlsVisbile ? \"flex\" : \"none\";\n for (const next of children) {\n if (next == options) {\n continue;\n }\n\n next.style.display = display;\n }\n };\n\n const toggleOptions = () => {\n controlsVisbile = !controlsVisbile;\n\n if (!controlsVisbile && keyboardVisible) {\n layers.toggleKeyboard();\n }\n\n updateVisibility();\n };\n\n const children: HTMLElement[] = [\n createSelectForLayers(layersNames, onLayerChange),\n createButton(\"keyboard\", {\n onClick: () => {\n layers.toggleKeyboard();\n\n if (controlsVisbile && !keyboardVisible) {\n controlsVisbile = false;\n updateVisibility();\n }\n },\n }, size),\n createButton(\"save\", {\n onClick: () => {\n layers.save();\n\n if (controlsVisbile) {\n toggleOptions();\n }\n },\n }, size),\n createButton(\"fullscreen\", {\n onClick: () => {\n layers.toggleFullscreen();\n\n if (controlsVisbile) {\n toggleOptions();\n }\n },\n }, size),\n createButton(\"options\", {\n onClick: toggleOptions,\n }, size),\n ];\n const options = children[children.length - 1];\n const fullscreen = children[children.length - 2].children[0];\n const keyboard = children[children.length - 4].children[0];\n\n const onKeyboardVisibility = (visible: boolean) => {\n keyboardVisible = visible;\n\n if (visible) {\n keyboard.classList.add(\"emulator-control-close-icon\");\n } else {\n keyboard.classList.remove(\"emulator-control-close-icon\");\n }\n };\n layers.setOnKeyboardVisibility(onKeyboardVisibility);\n onKeyboardVisibility(layers.keyboardVisible);\n\n layers.setOnFullscreen((fullscreenEnabled) => {\n if (fullscreenEnabled) {\n if (!fullscreen.classList.contains(\"emulator-control-exit-fullscreen-icon\")) {\n fullscreen.classList.add(\"emulator-control-exit-fullscreen-icon\");\n }\n } else {\n fullscreen.classList.remove(\"emulator-control-exit-fullscreen-icon\");\n }\n });\n\n if (layers.fullscreen) {\n fullscreen.classList.add(\"emulator-control-exit-fullscreen-icon\");\n }\n\n const container = createDiv(\"emulator-options\");\n const intialDisplay = keyboardVisible ? \"flex\" : \"none\";\n for (const next of children) {\n if (next !== options) {\n next.classList.add(\"emulator-button-control\");\n }\n next.style.marginRight = ident + \"px\";\n next.style.marginBottom = ident + \"px\";\n if (next !== options) {\n next.style.display = intialDisplay;\n }\n container.appendChild(next);\n }\n\n container.style.position = \"absolute\";\n container.style.right = right + \"px\";\n container.style.top = top + \"px\";\n\n layers.mouseOverlay.appendChild(container);\n\n return () => {\n layers.mouseOverlay.removeChild(container);\n layers.setOnFullscreen(() => {/**/});\n layers.removeOnKeyboardVisibility(onKeyboardVisibility);\n };\n}\n\nfunction createSelectForLayers(layers: string[], onChange: (layer: string) => void) {\n if (layers.length <= 1) {\n return document.createElement(\"div\");\n }\n\n const select = document.createElement(\"select\");\n select.classList.add(\"emulator-control-select\");\n\n\n for (const next of layers) {\n const option = document.createElement(\"option\");\n option.value = next;\n option.innerHTML = next;\n select.appendChild(option);\n }\n\n select.onchange = (e: any) => {\n const layer = e.target.value;\n onChange(layer);\n };\n\n stopPropagation(select, false);\n\n return select;\n}\n\n","import { pointer } from \"./pointer\";\n\nexport function createDiv(className: string, innerHtml?: string) {\n const el = document.createElement(\"div\");\n el.className = className;\n if (innerHtml !== undefined) {\n el.innerHTML = innerHtml;\n }\n return el;\n}\n\nexport function stopPropagation(el: HTMLElement, preventDefault = true) {\n const onStop = (e: Event) => {\n e.stopPropagation();\n };\n const onPrevent = (e: Event) => {\n e.stopPropagation();\n if (preventDefault) {\n e.preventDefault();\n }\n };\n const options = {\n capture: false,\n };\n for (const next of pointer.starters) {\n el.addEventListener(next, onStop, options);\n }\n for (const next of pointer.enders) {\n el.addEventListener(next, onStop, options);\n }\n for (const next of pointer.prevents) {\n el.addEventListener(next, onPrevent, options);\n }\n}\n","/* eslint-disable camelcase */\n\nexport const KBD_NONE = 0;\nexport const KBD_0 = 48;\nexport const KBD_1 = 49;\nexport const KBD_2 = 50;\nexport const KBD_3 = 51;\nexport const KBD_4 = 52;\nexport const KBD_5 = 53;\nexport const KBD_6 = 54;\nexport const KBD_7 = 55;\nexport const KBD_8 = 56;\nexport const KBD_9 = 57;\nexport const KBD_a = 65;\nexport const KBD_b = 66;\nexport const KBD_c = 67;\nexport const KBD_d = 68;\nexport const KBD_e = 69;\nexport const KBD_f = 70;\nexport const KBD_g = 71;\nexport const KBD_h = 72;\nexport const KBD_i = 73;\nexport const KBD_j = 74;\nexport const KBD_k = 75;\nexport const KBD_l = 76;\nexport const KBD_m = 77;\nexport const KBD_n = 78;\nexport const KBD_o = 79;\nexport const KBD_p = 80;\nexport const KBD_q = 81;\nexport const KBD_r = 82;\nexport const KBD_s = 83;\nexport const KBD_t = 84;\nexport const KBD_u = 85;\nexport const KBD_v = 86;\nexport const KBD_w = 87;\nexport const KBD_x = 88;\nexport const KBD_y = 89;\nexport const KBD_z = 90;\nexport const KBD_f1 = 290;\nexport const KBD_f2 = 291;\nexport const KBD_f3 = 292;\nexport const KBD_f4 = 293;\nexport const KBD_f5 = 294;\nexport const KBD_f6 = 295;\nexport const KBD_f7 = 296;\nexport const KBD_f8 = 297;\nexport const KBD_f9 = 298;\nexport const KBD_f10 = 299;\nexport const KBD_f11 = 300;\nexport const KBD_f12 = 301;\n\nexport const KBD_kp0 = 320;\nexport const KBD_kp1 = 321;\nexport const KBD_kp2 = 322;\nexport const KBD_kp3 = 323;\nexport const KBD_kp4 = 324;\nexport const KBD_kp5 = 325;\nexport const KBD_kp6 = 326;\nexport const KBD_kp7 = 327;\nexport const KBD_kp8 = 328;\nexport const KBD_kp9 = 329;\n\nexport const KBD_kpperiod = 330;\nexport const KBD_kpdivide = 331;\nexport const KBD_kpmultiply = 332;\nexport const KBD_kpminus = 333;\nexport const KBD_kpplus = 334;\nexport const KBD_kpenter = 335;\n\nexport const KBD_esc = 256;\nexport const KBD_tab = 258;\nexport const KBD_backspace = 259;\nexport const KBD_enter = 257;\nexport const KBD_space = 32;\nexport const KBD_leftalt = 342;\nexport const KBD_rightalt = 346;\nexport const KBD_leftctrl = 341;\nexport const KBD_rightctrl = 345;\nexport const KBD_leftshift = 340;\nexport const KBD_rightshift = 344;\nexport const KBD_capslock = 280;\nexport const KBD_scrolllock = 281;\nexport const KBD_numlock = 282;\nexport const KBD_grave = 96;\nexport const KBD_minus = 45;\nexport const KBD_equals = 61;\nexport const KBD_backslash = 92;\nexport const KBD_leftbracket = 91;\nexport const KBD_rightbracket = 93;\nexport const KBD_semicolon = 59;\nexport const KBD_quote = 39;\nexport const KBD_period = 46;\nexport const KBD_comma = 44;\nexport const KBD_slash = 47;\nexport const KBD_printscreen = 283;\nexport const KBD_pause = 284;\nexport const KBD_insert = 260;\nexport const KBD_home = 268;\nexport const KBD_pageup = 266;\nexport const KBD_delete = 261;\nexport const KBD_end = 269;\nexport const KBD_pagedown = 267;\nexport const KBD_left = 263;\nexport const KBD_up = 265;\nexport const KBD_down = 264;\nexport const KBD_right = 262;\nexport const KBD_extra_lt_gt = 348; // ???\n\nexport const domToKeyCodes: {[index: number]: number} = {\n 8: KBD_backspace,\n 9: KBD_tab,\n 13: KBD_enter,\n 16: KBD_leftshift,\n 17: KBD_leftctrl,\n 18: KBD_leftalt,\n 19: KBD_pause,\n 27: KBD_esc,\n 32: KBD_space,\n 33: KBD_pageup,\n 34: KBD_pagedown,\n 35: KBD_end,\n 36: KBD_home,\n 37: KBD_left,\n 38: KBD_up,\n 39: KBD_right,\n 40: KBD_down,\n 45: KBD_insert,\n 46: KBD_delete,\n 48: KBD_0,\n 49: KBD_1,\n 50: KBD_2,\n 51: KBD_3,\n 52: KBD_4,\n 53: KBD_5,\n 54: KBD_6,\n 55: KBD_7,\n 56: KBD_8,\n 57: KBD_9,\n 59: KBD_semicolon,\n 64: KBD_equals,\n 65: KBD_a,\n 66: KBD_b,\n 67: KBD_c,\n 68: KBD_d,\n 69: KBD_e,\n 70: KBD_f,\n 71: KBD_g,\n 72: KBD_h,\n 73: KBD_i,\n 74: KBD_j,\n 75: KBD_k,\n 76: KBD_l,\n 77: KBD_m,\n 78: KBD_n,\n 79: KBD_o,\n 80: KBD_p,\n 81: KBD_q,\n 82: KBD_r,\n 83: KBD_s,\n 84: KBD_t,\n 85: KBD_u,\n 86: KBD_v,\n 87: KBD_w,\n 88: KBD_x,\n 89: KBD_y,\n 90: KBD_z,\n 91: KBD_leftbracket,\n 93: KBD_rightbracket,\n 96: KBD_kp0,\n 97: KBD_kp1,\n 98: KBD_kp2,\n 99: KBD_kp3,\n 100: KBD_kp4,\n 101: KBD_kp5,\n 102: KBD_kp6,\n 103: KBD_kp7,\n 104: KBD_kp8,\n 105: KBD_kp9,\n // 106: KBD_kpmultiply,\n // 107: KBD_kpadd,\n // 109: KBD_kpsubtract,\n // 110: KBD_kpdecimal,\n 111: KBD_kpdivide,\n 112: KBD_f1,\n 113: KBD_f2,\n 114: KBD_f3,\n 115: KBD_f4,\n 116: KBD_f5,\n 117: KBD_f6,\n 118: KBD_f7,\n 119: KBD_f8,\n 120: KBD_f9,\n 121: KBD_f10,\n 122: KBD_f11,\n 123: KBD_f12,\n 144: KBD_numlock,\n 145: KBD_scrolllock,\n 173: KBD_minus,\n 186: KBD_semicolon,\n 187: KBD_equals,\n 188: KBD_comma,\n 189: KBD_minus,\n 190: KBD_period,\n 191: KBD_slash,\n // 192: KBD_graveaccent,\n 219: KBD_leftbracket,\n 220: KBD_backslash,\n 221: KBD_rightbracket,\n // 222: KBD_apostrophe,\n // 224: KBD_left_super,\n};\n\nexport const namedKeyCodes: {[name: string]: number} = {\n \"KBD_NONE\": KBD_NONE,\n \"KBD_0\": KBD_0,\n \"KBD_1\": KBD_1,\n \"KBD_2\": KBD_2,\n \"KBD_3\": KBD_3,\n \"KBD_4\": KBD_4,\n \"KBD_5\": KBD_5,\n \"KBD_6\": KBD_6,\n \"KBD_7\": KBD_7,\n \"KBD_8\": KBD_8,\n \"KBD_9\": KBD_9,\n \"KBD_a\": KBD_a,\n \"KBD_b\": KBD_b,\n \"KBD_c\": KBD_c,\n \"KBD_d\": KBD_d,\n \"KBD_e\": KBD_e,\n \"KBD_f\": KBD_f,\n \"KBD_g\": KBD_g,\n \"KBD_h\": KBD_h,\n \"KBD_i\": KBD_i,\n \"KBD_j\": KBD_j,\n \"KBD_k\": KBD_k,\n \"KBD_l\": KBD_l,\n \"KBD_m\": KBD_m,\n \"KBD_n\": KBD_n,\n \"KBD_o\": KBD_o,\n \"KBD_p\": KBD_p,\n \"KBD_q\": KBD_q,\n \"KBD_r\": KBD_r,\n \"KBD_s\": KBD_s,\n \"KBD_t\": KBD_t,\n \"KBD_u\": KBD_u,\n \"KBD_v\": KBD_v,\n \"KBD_w\": KBD_w,\n \"KBD_x\": KBD_x,\n \"KBD_y\": KBD_y,\n \"KBD_z\": KBD_z,\n \"KBD_f1\": KBD_f1,\n \"KBD_f2\": KBD_f2,\n \"KBD_f3\": KBD_f3,\n \"KBD_f4\": KBD_f4,\n \"KBD_f5\": KBD_f5,\n \"KBD_f6\": KBD_f6,\n \"KBD_f7\": KBD_f7,\n \"KBD_f8\": KBD_f8,\n \"KBD_f9\": KBD_f9,\n \"KBD_f10\": KBD_f10,\n \"KBD_f11\": KBD_f11,\n \"KBD_f12\": KBD_f12,\n\n \"KBD_kp0\": KBD_kp0,\n \"KBD_kp1\": KBD_kp1,\n \"KBD_kp2\": KBD_kp2,\n \"KBD_kp3\": KBD_kp3,\n \"KBD_kp4\": KBD_kp4,\n \"KBD_kp5\": KBD_kp5,\n \"KBD_kp6\": KBD_kp6,\n \"KBD_kp7\": KBD_kp7,\n \"KBD_kp8\": KBD_kp8,\n \"KBD_kp9\": KBD_kp9,\n\n \"KBD_kpperiod\": KBD_kpperiod,\n \"KBD_kpdivide\": KBD_kpdivide,\n \"KBD_kpmultiply\": KBD_kpmultiply,\n \"KBD_kpminus\": KBD_kpminus,\n \"KBD_kpplus\": KBD_kpplus,\n \"KBD_kpenter\": KBD_kpenter,\n\n \"KBD_esc\": KBD_esc,\n \"KBD_tab\": KBD_tab,\n \"KBD_backspace\": KBD_backspace,\n \"KBD_enter\": KBD_enter,\n \"KBD_space\": KBD_space,\n \"KBD_leftalt\": KBD_leftalt,\n \"KBD_rightalt\": KBD_rightalt,\n \"KBD_leftctrl\": KBD_leftctrl,\n \"KBD_rightctrl\": KBD_rightctrl,\n \"KBD_leftshift\": KBD_leftshift,\n \"KBD_rightshift\": KBD_rightshift,\n \"KBD_capslock\": KBD_capslock,\n \"KBD_scrolllock\": KBD_scrolllock,\n \"KBD_numlock\": KBD_numlock,\n \"KBD_grave\": KBD_grave,\n \"KBD_minus\": KBD_minus,\n \"KBD_equals\": KBD_equals,\n \"KBD_backslash\": KBD_backslash,\n \"KBD_leftbracket\": KBD_leftbracket,\n \"KBD_rightbracket\": KBD_rightbracket,\n \"KBD_semicolon\": KBD_semicolon,\n \"KBD_quote\": KBD_quote,\n \"KBD_period\": KBD_period,\n \"KBD_comma\": KBD_comma,\n \"KBD_slash\": KBD_slash,\n \"KBD_printscreen\": KBD_printscreen,\n \"KBD_pause\": KBD_pause,\n \"KBD_insert\": KBD_insert,\n \"KBD_home\": KBD_home,\n \"KBD_pageup\": KBD_pageup,\n \"KBD_delete\": KBD_delete,\n \"KBD_end\": KBD_end,\n \"KBD_pagedown\": KBD_pagedown,\n \"KBD_left\": KBD_left,\n \"KBD_up\": KBD_up,\n \"KBD_down\": KBD_down,\n \"KBD_right\": KBD_right,\n \"KBD_extra_lt_gt\": KBD_extra_lt_gt,\n};\n\nexport const keyCodesToDom: {[index: number]: number} = {};\nfor (const next of Object.keys(domToKeyCodes)) {\n const key = Number.parseInt(next, 10);\n keyCodesToDom[domToKeyCodes[key]] = key;\n}\n\nexport function domToKeyCode(domCode: number) {\n return domToKeyCodes[domCode] || 0;\n}\n","import { Notyf } from \"notyf\";\nimport Keyboard from \"simple-keyboard\";\nimport { createDiv, stopPropagation } from \"./helpers\";\n\n/* eslint-disable camelcase */\nimport { domToKeyCode, KBD_enter, KBD_leftshift,\n KBD_backspace, KBD_capslock, KBD_tab, KBD_space, KBD_esc,\n KBD_leftctrl, KBD_leftalt, KBD_comma, KBD_period, KBD_quote,\n KBD_semicolon, KBD_leftbracket, KBD_rightbracket, KBD_up, KBD_down, KBD_left, KBD_right,\n} from \"./keys\";\n/* eslint-enable camelcase */\n\n// eslint-disable-next-line\nconst elementResizeDetector = require(\"element-resize-detector\");\nconst resizeDetector = elementResizeDetector({\n});\n\n// eslint-disable-next-line\nexport interface LayersOptions {\n optionControls?: string[];\n keyboardDiv?: HTMLDivElement;\n keyboardInputDiv?: HTMLDivElement;\n fullscreenElement?: HTMLElement;\n}\n\nexport function layers(root: HTMLDivElement, options?: LayersOptions) {\n return new Layers(root, options || {});\n}\n\nexport class Layers {\n options: LayersOptions;\n root: HTMLDivElement;\n loading: HTMLDivElement;\n canvas: HTMLCanvasElement;\n video: HTMLVideoElement;\n mouseOverlay: HTMLDivElement;\n width: number;\n height: number;\n fullscreen = false;\n keyboardVisible = false;\n pointerLock = false;\n pointerDisabled = false;\n pointerButton: 0 | 1 = 0;\n\n notyf = new Notyf();\n toggleKeyboard: () => boolean = () => false;\n\n private fullscreenElement: HTMLElement;\n private clickToStart: HTMLDivElement;\n private loaderText: HTMLPreElement;\n private onResize: ((width: number, height: number) => void)[];\n\n private onKeyDown: (keyCode: number) => void;\n private onKeyUp: (keyCode: number) => void;\n private onKeyPress: (keyCode: number) => void;\n private onKeysPress: (keyCodes: number[]) => void;\n\n private onSave: () => Promise<void>;\n private onSaveStarted: () => void;\n private onSaveEnded: () => void;\n\n private onFullscreenChanged: ((fullscreen: boolean) => void)[] = [];\n private onKeyboardChanged: ((visible: boolean) => void)[] = [];\n\n // eslint-disable-next-line\n constructor(root: HTMLDivElement, options: LayersOptions) {\n this.options = options;\n this.root = root;\n this.root.classList.add(\"emulator-root\");\n this.fullscreenElement = options.fullscreenElement || this.root;\n\n this.canvas = document.createElement(\"canvas\");\n this.canvas.className = \"emulator-canvas\";\n\n this.video = document.createElement(\"video\");\n this.video.setAttribute(\"autoplay\", \"\");\n this.video.setAttribute(\"playsinline\", \"\");\n this.video.className = \"emulator-video\";\n\n this.loading = createLoadingLayer();\n this.loaderText = this.loading.querySelector(\".emulator-loading-pre-2\") as HTMLPreElement;\n this.mouseOverlay = createMouseOverlayLayer();\n\n this.clickToStart = createClickToStartLayer();\n this.clickToStart.onclick = () => {\n this.clickToStart.style.display = \"none\";\n this.video.play();\n };\n\n this.root.appendChild(this.canvas);\n this.root.appendChild(this.video);\n this.root.appendChild(this.mouseOverlay);\n this.root.appendChild(this.clickToStart);\n this.root.appendChild(this.loading);\n\n this.width = root.offsetWidth;\n this.height = root.offsetHeight;\n\n this.onResize = [];\n this.onKeyDown = () => {/**/};\n this.onKeyUp = () => {/**/};\n this.onKeyPress = () => {/**/};\n this.onKeysPress = () => {/**/};\n this.onSave = () => {\n return Promise.reject(new Error(\"Not implemented\"));\n };\n this.onSaveStarted = () => {/**/};\n this.onSaveEnded = () => {/**/};\n\n resizeDetector.listenTo(this.root, (el: HTMLElement) => {\n if (el !== root) {\n return;\n }\n\n this.width = el.offsetWidth;\n this.height = el.offsetHeight;\n for (const next of this.onResize) {\n next(this.width, this.height);\n }\n });\n\n this.initKeyEvents();\n this.initKeyboard();\n this.preventContextMenu();\n\n\n this.fullscreenElement.onfullscreenchange = () => {\n if (document.fullscreenElement !== this.fullscreenElement) {\n this.fullscreen = false;\n for (const next of this.onFullscreenChanged) {\n next(this.fullscreen);\n }\n }\n };\n }\n\n private initKeyEvents() {\n const keyboardInput = this.options.keyboardInputDiv ?? this.root;\n keyboardInput.style.outline = \"none\";\n if (!keyboardInput.tabIndex || keyboardInput.tabIndex === -1) {\n keyboardInput.tabIndex = 0;\n }\n keyboardInput.addEventListener(\"keydown\", (e) => {\n const keyCode = domToKeyCode(e.keyCode);\n this.onKeyDown(keyCode);\n e.stopPropagation();\n e.preventDefault();\n });\n keyboardInput.addEventListener(\"keyup\", (e) => {\n const keyCode = domToKeyCode(e.keyCode);\n this.onKeyUp(keyCode);\n e.stopPropagation();\n e.preventDefault();\n });\n }\n\n preventContextMenu() {\n this.root.addEventListener(\"contextmenu\", (e) => {\n e.stopPropagation();\n e.preventDefault();\n return false;\n });\n }\n\n addOnResize(handler: (width: number, height: number) => void) {\n this.onResize.push(handler);\n }\n\n removeOnResize(handler: (width: number, height: number) => void) {\n this.onResize = this.onResize.filter((n) => n !== handler);\n }\n\n setOnKeyDown(handler: (keyCode: number) => void) {\n this.onKeyDown = handler;\n }\n\n fireKeyDown(keyCode: number) {\n this.onKeyDown(keyCode);\n }\n\n setOnKeyUp(handler: (keyCode: number) => void) {\n this.onKeyUp = handler;\n }\n\n fireKeyUp(keyCode: number) {\n this.onKeyUp(keyCode);\n }\n\n setOnKeyPress(handler: (keyCode: number) => void) {\n this.onKeyPress = handler;\n }\n\n fireKeyPress(keyCode: number) {\n this.onKeyPress(keyCode);\n }\n\n setOnKeysPress(handler: (keyCodes: number[]) => void) {\n this.onKeysPress = handler;\n }\n\n\n fireKeysPress(keyCodes: number[]) {\n this.onKeysPress(keyCodes);\n }\n\n toggleFullscreen() {\n if (this.fullscreen) {\n this.fullscreen = false;\n if (this.fullscreenElement.classList.contains(\"emulator-fullscreen-workaround\")) {\n this.fullscreenElement.classList.remove(\"emulator-fullscreen-workaround\");\n } else if (document.exitFullscreen) {\n document.exitFullscreen();\n } else if ((document as any).webkitExitFullscreen) {\n (document as any).webkitExitFullscreen();\n } else if ((document as any).mozCancelFullScreen) {\n (document as any).mozCancelFullScreen();\n } else if ((document as any).msExitFullscreen) {\n (document as any).msExitFullscreen();\n }\n for (const next of this.onFullscreenChanged) {\n next(false);\n }\n } else {\n this.fullscreen = true;\n const element = this.fullscreenElement as any;\n if (element.requestFullscreen) {\n element.requestFullscreen();\n } else if (element.webkitRequestFullscreen) {\n element.webkitRequestFullscreen();\n } else if (element.mozRequestFullScreen) {\n element.mozRequestFullScreen();\n } else if (element.msRequestFullscreen) {\n element.msRequestFullscreen();\n } else if (element.webkitEnterFullscreen) {\n element.webkitEnterFullscreen();\n } else {\n this.fullscreenElement.classList.add(\"emulator-fullscreen-workaround\");\n }\n for (const next of this.onFullscreenChanged) {\n next(true);\n }\n }\n }\n\n setOnFullscreen(onFullscreenChanged: (fullscreen: boolean) => void) {\n this.onFullscreenChanged.push(onFullscreenChanged);\n }\n\n removeOnFullscreen(onFullscreenChanged: (visible: boolean) => void) {\n this.onFullscreenChanged = this.onFullscreenChanged.filter((n) => n !== onFullscreenChanged);\n }\n\n setOnKeyboardVisibility(onKeyboardChanged: (visible: boolean) => void) {\n this.onKeyboardChanged.push(onKeyboardChanged);\n }\n\n removeOnKeyboardVisibility(onKeyboardChanged: (visible: boolean) => void) {\n this.onKeyboardChanged = this.onKeyboardChanged.filter((n) => n !== onKeyboardChanged);\n }\n\n save(): Promise<void> {\n this.onSaveStarted();\n return this.onSave()\n .then(() => {\n this.notyf.success(\"Saved\");\n this.onSaveEnded();\n })\n .catch((error) => {\n this.notyf.error(error.message);\n this.onSaveEnded();\n });\n }\n\n setOnSave(handler: () => Promise<void>) {\n this.onSave = handler;\n }\n\n getOnSave() {\n return this.onSave;\n }\n\n setOnSaveStarted(callback: () => void) {\n this.onSaveStarted = callback;\n }\n\n setOnSaveEnded(callback: () => void) {\n this.onSaveEnded = callback;\n }\n\n hideLoadingLayer() {\n this.loading.style.visibility = \"hidden\";\n }\n\n showLoadingLayer() {\n this.loading.style.visibility = \"visible\";\n }\n\n setLoadingMessage(message: string) {\n this.loaderText.innerHTML = message;\n }\n\n switchToVideo() {\n this.video.style.display = \"block\";\n this.canvas.style.display = \"none\";\n }\n\n showClickToStart() {\n this.clickToStart.style.display = \"flex\";\n }\n\n private initKeyboard() {\n let keyboardVisible = false;\n\n const layout = {\n en: [\n \"{esc} ` 1 2 3 4 5 6 7 8 9 0 () - = {bksp} {enter}\",\n \"{tab} q w e r t y u i o p { } \\\\ {up}\",\n \"{shift} {left} {right} a s d f g h j k l ; ' [ {down}\",\n \"⎘ {alt} {ctrl} z x c v b n m , . / ] {space}\",\n ],\n };\n const enLayoutDisplay = {\n \"{esc}\": \"␛\",\n \"{bksp}\": \"⌫\",\n \"{enter}\": \"↵\",\n \"{space}\": \"Space\",\n \"{up}\": \"↑\",\n \"{down}\": \"↓\",\n \"{left}\": \"←\",\n \"{right}\": \"→\",\n \"{shift}\": \"⇑\",\n \"{ctrl}\": \"Ctrl\",\n \"{alt}\": \"Alt\",\n \"{tab}\": \"Tab\",\n };\n const ruLayoutDisplay = {\n \"{esc}\": \"␛\",\n \"{bksp}\": \"⌫\",\n \"{enter}\": \"↵\",\n \"{space}\": \"Space\",\n \"{up}\": \"↑\",\n \"{down}\": \"↓\",\n \"{left}\": \"←\",\n \"{right}\": \"→\",\n \"{shift}\": \"⇑\",\n \"{alt}\": \"Alt\",\n \"{ctrl}\": \"Ctrl\",\n \"{tab}\": \"Tab\",\n \"q\": \"й\", \"w\": \"ц\", \"e\": \"у\", \"r\": \"к\", \"t\": \"е\",\n \"y\": \"н\", \"u\": \"г\", \"i\": \"ш\", \"o\": \"щ\", \"p\": \"з\",\n \"{\": \"х\", \"}\": \"ъ\", \"a\": \"ф\", \"s\": \"ы\", \"d\": \"в\",\n \"f\": \"а\", \"g\": \"п\", \"h\": \"р\", \"j\": \"о\", \"k\": \"л\",\n \"l\": \"д\", \";\": \"ж\", \"'\": \"э\", \"z\": \"я\", \"x\": \"ч\",\n \"c\": \"с\", \"v\": \"м\", \"b\": \"и\", \"n\": \"т\", \"m\": \"ь\",\n \",\": \"б\", \".\": \"ю\",\n };\n const displayOrder = [enLayoutDisplay, ruLayoutDisplay];\n let displayIndex = 0;\n\n const keyboardDiv = this.options.keyboardDiv || createDiv(\"\");\n keyboardDiv.classList.add(\"emulator-keyboard\");\n keyboardDiv.style.display = \"none\";\n stopPropagation(keyboardDiv);\n\n const keyboard = new Keyboard(keyboardDiv, {\n layout,\n layoutName: \"en\",\n display: displayOrder[displayIndex],\n onKeyPress: (button: string) => {\n if (button === \"⎘\") {\n return;\n }\n\n const keyCodes = buttonToCode(button);\n for (const keyCode of keyCodes) {\n this.fireKeyDown(keyCode);\n }\n },\n onKeyReleased: (button: string) => {\n if (button === \"⎘\") {\n displayIndex = (displayIndex + 1) % displayOrder.length;\n keyboard.setOptions({\n display: displayOrder[displayIndex],\n });\n return;\n }\n\n const keyCodes = buttonToCode(button);\n for (const keyCode of keyCodes) {\n this.fireKeyUp(keyCode);\n }\n },\n preventMouseDownDefault: true,\n preventMouseUpDefault: true,\n stopMouseDownPropagation: true,\n stopMouseUpPropagation: true,\n physicalKeyboardHighlight: false,\n physicalKeyboardHighlightPress: false,\n physicalKeyboardHighlightPressUseClick: false,\n physicalKeyboardHighlightPressUsePointerEvents: false,\n });\n\n this.toggleKeyboard = () => {\n keyboardVisible = !keyboardVisible;\n const display = keyboardVisible ? \"block\" : \"none\";\n keyboardDiv.style.display = display;\n\n for (const next of this.onKeyboardChanged) {\n next(keyboardVisible);\n }\n\n this.keyboardVisible = keyboardVisible;\n return keyboardVisible;\n };\n\n if (!this.options.keyboardDiv) {\n this.mouseOverlay.appendChild(keyboardDiv);\n }\n }\n}\n\nfunction createLoadingLayer() {\n return createDiv(\"emulator-loading\", `\n<div class='emulator-loading-inner'>\n<pre class='emulator-loading-pre-1'>\n _ __\n (_)____ ____/ /___ _____ _________ ____ ___\n / / ___/_____/ __ / __ \\\\/ ___// ___/ __ \\\\/ __ \\`__ \\\\\n / (__ )_____/ /_/ / /_/ (__ )/ /__/ /_/ / / / / / /\n __/ /____/ \\\\__,_/\\\\____/____(_)___/\\\\____/_/ /_/ /_/\n /___/\n</pre>\n<pre class='emulator-loading-pre-2'>\n</pre>\n<div class='emulator-loader'>\n</div>\n</div>\n`);\n}\n\nfunction createMouseOverlayLayer() {\n return createDiv(\"emulator-mouse-overlay\", \"\");\n}\n\nfunction createClickToStartLayer() {\n return createDiv(\"emulator-click-to-start-overlay\", `\n<div class=\"emulator-click-to-start-text\">Press to start</div>\n<div class=\"emulator-click-to-start-icon\"></div>\n`);\n}\n\n/* eslint-disable camelcase */\nfunction buttonToCode(button: string): number[] {\n if (button.length > 1) {\n if (button === \"{enter}\") {\n return [KBD_enter];\n } else if (button === \"{shift}\") {\n return [KBD_leftshift];\n } else if (button === \"{bksp}\") {\n return [KBD_backspace];\n } else if (button === \"{lock}\") {\n return [KBD_capslock];\n } else if (button === \"{tab}\") {\n return [KBD_tab];\n } else if (button === \"{space}\") {\n return [KBD_space];\n } else if (button === \"{esc}\") {\n return [KBD_esc];\n } else if (button === \"{ctrl}\") {\n return [KBD_leftctrl];\n } else if (button === \"{alt}\") {\n return [KBD_leftalt];\n } else if (button === \"{up}\") {\n return [KBD_up];\n } else if (button === \"{down}\") {\n return [KBD_down];\n } else if (button === \"{left}\") {\n return [KBD_left];\n } else if (button === \"{right}\") {\n return [KBD_right];\n } else {\n console.warn(\"Unknown button\", button);\n return [];\n }\n } else if (button === \",\") {\n return [KBD_comma];\n } else if (button === \".\") {\n return [KBD_period];\n } else if (button === \"'\") {\n return [KBD_quote];\n } else if (button === \":\") {\n return [KBD_semicolon];\n } else if (button === \"{\") {\n return [KBD_leftshift, KBD_leftbracket];\n } else if (button === \"}\") {\n return [KBD_leftshift, KBD_rightbracket];\n }\n\n const keyCode = domToKeyCode(button.toUpperCase().charCodeAt(0));\n if (keyCode === 0) {\n return [];\n }\n\n return [keyCode];\n}\n\n/* eslint-enable camelcase */\n","import { CommandInterface } from \"emulators\";\n\nexport function lifecycle(ci: CommandInterface) {\n let hidden = \"\";\n let visibilityChange = \"\";\n\n if (typeof document.hidden !== \"undefined\") {\n hidden = \"hidden\";\n visibilityChange = \"visibilitychange\";\n } else if (typeof (document as any).mozHidden !== \"undefined\") {\n hidden = \"mozHidden\";\n visibilityChange = \"mozvisibilitychange\";\n } else if (typeof (document as any).msHidden !== \"undefined\") {\n hidden = \"msHidden\";\n visibilityChange = \"msvisibilitychange\";\n } else if (typeof (document as any).webkitHidden !== \"undefined\") {\n hidden = \"webkitHidden\";\n visibilityChange = \"webkitvisibilitychange\";\n }\n\n function visibilitHandler() {\n (document as any)[hidden] ? ci.pause() : ci.resume();\n }\n\n document.addEventListener(visibilityChange as any, visibilitHandler);\n ci.events().onExit(() => {\n document.removeEventListener(visibilityChange as any, visibilitHandler);\n });\n}\n","export class MemStorage implements Storage {\n length = 0;\n\n private storage: {[key: string]: string} = {};\n\n setItem(key: string, value: string): void {\n this.storage[key] = value;\n this.length = Object.keys(this.storage).length;\n }\n\n getItem(key: string): string | null {\n const value = this.storage[key];\n return value === undefined ? null : value;\n }\n\n removeItem(key: string): void {\n delete this.storage[key];\n this.length = Object.keys(this.storage).length;\n }\n\n key(index: number): string | null {\n const keys = Object.keys(this.storage);\n return keys[index] === undefined ? null : keys[index];\n }\n\n clear() {\n this.length = 0;\n this.storage = {};\n }\n}\n","export const pointer = initBind();\n\nfunction initBind() {\n const isMobile = /iPhone|iPad|iPod|Android/i.test(navigator.userAgent);\n const isTouch = isMobile && !!(\"ontouchstart\" in window);\n const isPointer = isMobile && (window.PointerEvent ? true : false);\n const isMSPointer = isMobile && ((window as any).MSPointerEvent ? true : false);\n let canLock = !isMobile;\n\n const starters: string[] = [];\n const changers: string[] = [];\n const enders: string[] = [];\n const leavers: string[] = [];\n const prevents: string[] = [];\n\n if (isPointer) {\n starters.push(\"pointerdown\");\n enders.push(\"pointerup\", \"pointercancel\");\n changers.push(\"pointermove\");\n prevents.push(\"touchstart\", \"touchmove\", \"touchend\");\n } else if (isMSPointer) {\n starters.push(\"MSPointerDown\");\n changers.push(\"MSPointerMove\");\n enders.push(\"MSPointerUp\");\n } else if (isTouch) {\n canLock = false;\n starters.push(\"touchstart\", \"mousedown\");\n changers.push(\"touchmove\");\n enders.push(\"touchend\", \"touchcancel\", \"mouseup\");\n } else {\n starters.push(\"mousedown\");\n changers.push(\"mousemove\");\n enders.push(\"mouseup\");\n leavers.push(\"mouseleave\");\n }\n\n return {\n mobile: isMobile,\n canLock,\n starters,\n changers,\n enders,\n prevents,\n leavers,\n };\n}\n\nexport interface PointerState {\n x: number,\n y: number,\n mX: number,\n mY: number,\n button?: number,\n}\n\nexport function getPointerState(e: Event, el: HTMLElement): PointerState {\n if (e.type.match(/^touch/)) {\n const evt = e as TouchEvent;\n const rect = el.getBoundingClientRect();\n return {\n x: evt.targetTouches[0].clientX - rect.x,\n y: evt.targetTouches[0].clientY - rect.y,\n mX: 0,\n mY: 0,\n };\n } else if (e.type.match(/^pointer/)) {\n const evt = e as PointerEvent;\n return {\n x: evt.offsetX,\n y: evt.offsetY,\n mX: evt.movementX,\n mY: evt.movementY,\n };\n } else {\n const evt = e as MouseEvent;\n return {\n x: evt.offsetX,\n y: evt.offsetY,\n mX: evt.movementX,\n mY: evt.movementY,\n button: evt.button === 0 ? 0 : 1,\n };\n }\n}\n\nexport const pointers = {\n bind: pointer,\n getPointerState,\n};\n","import { MemStorage } from \"./mem-storage\";\n\nconst MAX_VALUE_SIZE = 1024;\nconst NEXT_PART_SYMBOL = \"@\";\nconst NEXT_PART_SYFFIX = \".\";\n\nexport class LStorage implements Storage {\n private backend: Storage;\n length: number;\n prefix: string;\n\n constructor(backend: Storage | undefined, prefix: string) {\n this.prefix = prefix;\n\n try {\n this.backend = backend || localStorage;\n this.testBackend();\n } catch (e) {\n this.backend = new MemStorage();\n }\n\n this.length = this.backend.length;\n\n if (typeof this.backend.sync === \"function\") {\n (this as any).sync = (callback: any) => {\n this.backend.sync(callback);\n };\n }\n }\n\n testBackend() {\n const testKey = this.prefix + \".test.record\";\n const testValue = \"123\";\n this.backend.setItem(testKey, testValue);\n const readedValue = this.backend.getItem(testKey);\n this.backend.removeItem(testKey);\n const valid = readedValue === testValue && this.backend.getItem(testKey) === null;\n\n if (!valid) {\n throw new Error(\"Storage backend is not working properly\");\n }\n }\n\n setLocalStoragePrefix(prefix: string) {\n this.prefix = prefix;\n }\n\n clear(): void {\n if (!this.backend.length) {\n return;\n }\n\n const toRemove: string[] = [];\n for (let i = 0; i < this.backend.length; ++i) {\n const next = this.backend.key(i);\n if (next && next.startsWith(this.prefix)) {\n toRemove.push(next);\n }\n }\n\n for (const next of toRemove) {\n this.backend.removeItem(next);\n }\n this.length = this.backend.length;\n }\n\n key(index: number): string | null {\n return this.backend.key(index);\n }\n\n setItem(key: string, value: string): void {\n if (!value || value.length === undefined || value.length === 0) {\n this.writeStringToKey(key, \"\");\n return;\n }\n\n let offset = 0;\n while (offset < value.length) {\n let substr = value.substr(offset, MAX_VALUE_SIZE);\n offset += substr.length;\n\n if (offset < value.length) {\n substr += NEXT_PART_SYMBOL;\n }\n\n this.writeStringToKey(key, substr);\n key += NEXT_PART_SYFFIX;\n }\n }\n\n getItem(key: string): string | null {\n let value = this.readStringFromKey(key);\n if (value === null) {\n return null;\n }\n\n if (value.length === 0) {\n return value;\n }\n\n while (value[value.length - 1] === NEXT_PART_SYMBOL) {\n value = value.substr(0, value.length - 1);\n key += NEXT_PART_SYFFIX;\n const next = this.readStringFromKey(key);\n value += next === null ? \"\" : next;\n }\n\n return value;\n }\n\n removeItem(key: string): void {\n this.backend.removeItem(this.prefix + key);\n this.length = this.backend.length;\n }\n\n private writeStringToKey(key: string, value: string) {\n this.backend.setItem(this.prefix + key, value);\n this.length = this.backend.length;\n }\n\n private readStringFromKey(key: string) {\n return this.backend.getItem(this.prefix + key);\n }\n}\n","\nimport { Build } from \"./build\";\nimport { layers } from \"./dom/layers\";\nimport { lifecycle } from \"./dom/lifecycle\";\nimport { resolveBundle } from \"./network/xhr\";\nimport { _2d } from \"./graphics/_2d\";\nimport { webGl } from \"./graphics/webgl\";\nimport { video } from \"./graphics/video\";\nimport { keyboard } from \"./controls/keyboard\";\nimport { mouse } from \"./controls/mouse/mouse-common\";\nimport { nipple } from \"./controls/nipple\";\nimport { options } from \"./controls/options\";\nimport { domToKeyCode, domToKeyCodes, keyCodesToDom, namedKeyCodes } from \"./dom/keys\";\nimport { audioNode } from \"./sound/audio-node\";\nimport { notyf } from \"./notification/notyf\";\nimport { save, load } from \"./persist/save-load\";\nimport { getGrid } from \"./controls/grid\";\nimport { pointers } from \"./dom/pointer\";\nimport { LStorage } from \"./dom/storage\";\n\nimport { DosInstance, DosFactoryType, DosOptions } from \"./js-dos\";\n\nexport class EmulatorsUi {\n build = Build;\n\n dom = {\n layers, // DOM components that used by js-dos player\n lifecycle, // compnent that manges liefcycle events\n pointers, // abstraction over mouse, touch, pointer API\n storage: new LStorage(undefined, \"emulators.ui.\"), // localStorage abstaction\n };\n\n network = {\n resolveBundle, // GET request to download bundles\n };\n\n graphics = {\n webGl, // default webgl renderer\n _2d, // fallback renderer\n video, // default janus renderer\n };\n\n sound = {\n audioNode, // default auidio processor\n };\n\n persist = {\n save, // store updated bundle into 'persist.db'\n load, // get updated bundle form `persist.db`\n };\n\n controls = {\n getGrid, // returns grid processor by grid type\n namedKeyCodes, // mapping from key name to it's key code\n domToKeyCodes, // mapping from DOM key codes to js-dos key codes\n domToKeyCode, // function that converts DOM key code to js-dos key code\n keyCodesToDom, // mapping from js-dos key codes to DOM key codes\n keyboard, // default keyboard processor\n mouse, // default mouse processor\n nipple, // multitouch control for emulating keyboard on mobiles\n options, // default options control (fullscreen, save, etc.)\n };\n\n notifications = {\n notyf, // default notifications system\n };\n\n // default player\n dos: DosFactoryType = (root: HTMLDivElement, options?: DosOptions) => {\n return new DosInstance(root, impl, options || {});\n };\n}\n\nconst impl = new EmulatorsUi();\n(window as any).emulatorsUi = impl;\n(window as any).Dos = impl.dos;\n","import { Layers } from \"../dom/layers\";\nimport { CommandInterface } from \"emulators\";\n\nexport function _2d(layers: Layers, ci: CommandInterface, forceAspect?: number) {\n const canvas = layers.canvas;\n const context = canvas.getContext(\"2d\");\n if (context === null) {\n throw new Error(\"Unable to create 2d context on given canvas\");\n }\n\n let containerWidth = layers.width;\n let containerHeight = layers.height;\n let frameWidth = 0;\n let frameHeight = 0;\n\n const onResize = () => {\n const aspect = forceAspect ?? frameWidth / frameHeight;\n\n let width = containerWidth;\n let height = containerWidth / aspect;\n\n if (height > containerHeight) {\n height = containerHeight;\n width = containerHeight * aspect;\n }\n\n canvas.style.position = \"relative\";\n canvas.style.top = (containerHeight - height) / 2 + \"px\";\n canvas.style.left = (containerWidth - width) / 2 + \"px\";\n canvas.style.width = width + \"px\";\n canvas.style.height = height + \"px\";\n };\n\n const onResizeLayer = (w: number, h: number) => {\n containerWidth = w;\n containerHeight = h;\n onResize();\n };\n layers.addOnResize(onResizeLayer);\n\n let rgba = new Uint8ClampedArray(0);\n const onResizeFrame = (w: number, h: number) => {\n frameWidth = w;\n frameHeight = h;\n canvas.width = frameWidth;\n canvas.height = frameHeight;\n rgba = new Uint8ClampedArray(w * h * 4);\n onResize();\n };\n ci.events().onFrameSize(onResizeFrame);\n ci.events().onFrame((frameRgb, frameRgba) => {\n if (frameRgb === null && frameRgba === null) {\n return;\n }\n\n const frame = (frameRgb !== null ? frameRgb : frameRgba) as Uint8Array;\n\n let frameOffset = 0;\n let rgbaOffset = 0;\n\n while (rgbaOffset < rgba.length) {\n rgba[rgbaOffset++] = frame[frameOffset++];\n rgba[rgbaOffset++] = frame[frameOffset++];\n rgba[rgbaOffset++] = frame[frameOffset++];\n rgba[rgbaOffset++] = 255;\n\n if (frame.length === rgba.length) {\n frameOffset++;\n }\n }\n\n context.putImageData(new ImageData(rgba, frameWidth, frameHeight), 0, 0);\n });\n\n onResizeFrame(ci.width(), ci.height());\n\n ci.events().onExit(() => {\n layers.removeOnResize(onResizeLayer);\n });\n}\n","import { Layers } from \"../dom/layers\";\nimport { CommandInterface } from \"emulators\";\nimport { JanusMessageType } from \"emulators/dist/types/janus/janus-impl\";\n\nexport function video(layers: Layers, ci: CommandInterface) {\n layers.switchToVideo();\n\n ci.events().onMessage((msgType: JanusMessageType | string, stream: MediaStream) => {\n if (msgType === \"onremotestream\") {\n (window as any).Janus.attachMediaStream(layers.video, stream);\n }\n });\n}\n","import { Layers } from \"../dom/layers\";\nimport { CommandInterface } from \"emulators\";\n\nconst vsSource = `\nattribute vec4 aVertexPosition;\nattribute vec2 aTextureCoord;\n\nvarying highp vec2 vTextureCoord;\n\nvoid main(void) {\n gl_Position = aVertexPosition;\n vTextureCoord = aTextureCoord;\n}\n`;\n\nconst fsSource = `\nvarying highp vec2 vTextureCoord;\nuniform sampler2D uSampler;\n\n\nvoid main(void) {\n highp vec4 color = texture2D(uSampler, vTextureCoord);\n gl_FragColor = vec4(color.r, color.g, color.b, 1.0);\n}\n`;\n\nexport function webGl(layers: Layers, ci: CommandInterface, forceAspect?: number) {\n const canvas = layers.canvas;\n const gl = canvas.getContext(\"webgl\");\n if (gl === null) {\n throw new Error(\"Unable to create webgl context on given canvas\");\n }\n\n const shaderProgram = initShaderProgram(gl, vsSource, fsSource);\n const vertexPosition = gl.getAttribLocation(shaderProgram, \"aVertexPosition\");\n const textureCoord = gl.getAttribLocation(shaderProgram, \"aTextureCoord\");\n const uSampler = gl.getUniformLocation(shaderProgram, \"uSampler\");\n\n initBuffers(gl, vertexPosition, textureCoord);\n\n const texture = gl.createTexture();\n gl.bindTexture(gl.TEXTURE_2D, texture);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.LINEAR);\n gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.LINEAR);\n\n const pixel = new Uint8Array([0, 0, 0]);\n gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGB,\n 1, 1, 0, gl.RGB, gl.UNSIGNED_BYTE,\n pixel);\n\n gl.useProgram(shaderProgram);\n gl.activeTexture(gl.TEXTURE0);\n gl.uniform1i(uSampler, 0);\n\n let containerWidth = layers.width;\n let containerHeight = layers.height;\n let frameWidth = 0;\n let frameHeight = 0;\n\n const onResize = () => {\n const aspect = forceAspect ?? (frameWidth / frameHeight);\n\n let width = containerWidth;\n let height = containerWidth / aspect;\n\n if (height > containerHeight) {\n height = containerHeight;\n width = containerHeight * aspect;\n }\n\n canvas.style.position = \"relative\";\n canvas.style.top = (containerHeight - height) / 2 + \"px\";\n canvas.style.left = (containerWidth - width) / 2 + \"px\";\n canvas.style.width = width + \"px\";\n canvas.style.height = height + \"px\";\n };\n\n const onResizeLayer = (w: number, h: number) => {\n containerWidth = w;\n containerHeight = h;\n onResize();\n };\n layers.addOnResize(onResizeLayer);\n\n const onResizeFrame = (w: number, h: number) => {\n frameWidth = w;\n frameHeight = h;\n canvas.width = frameWidth;\n canvas.height = frameHeight;\n gl.viewport(0, 0, frameWidth, frameHeight);\n onResize();\n };\n ci.events().onFrameSize(onResizeFrame);\n onResizeFrame(ci.width(), ci.height());\n\n let requestAnimationFrameId: number | null = null;\n let frame: Uint8Array | null = null;\n let frameFormat: number = 0;\n\n ci.events().onFrame((rgb, rgba) => {\n frame = rgb != null ? rgb : rgba;\n frameFormat = rgb != null ? gl.RGB : gl.RGBA;\n if (requestAnimationFrameId === null) {\n requestAnimationFrameId = requestAnimationFrame(updateTexture);\n }\n });\n\n const updateTexture = () => {\n gl.texImage2D(gl.TEXTURE_2D, 0, frameFormat,\n frameWidth, frameHeight, 0, frameFormat, gl.UNSIGNED_BYTE,\n frame);\n gl.drawArrays(gl.TRIANGLES, 0, 6);\n\n requestAnimationFrameId = null;\n frame = null;\n };\n\n ci.events().onExit(() => {\n layers.removeOnResize(onResizeLayer);\n });\n}\n\nfunction initShaderProgram(gl: WebGLRenderingContext, vsSource: string, fsSource: string) {\n const vertexShader = loadShader(gl, gl.VERTEX_SHADER, vsSource);\n const fragmentShader = loadShader(gl, gl.FRAGMENT_SHADER, fsSource);\n\n const shaderProgram = gl.createProgram() as WebGLShader;\n gl.attachShader(shaderProgram, vertexShader);\n gl.attachShader(shaderProgram, fragmentShader);\n gl.linkProgram(shaderProgram);\n\n if (!gl.getProgramParameter(shaderProgram, gl.LINK_STATUS)) {\n throw new Error(\"Unable to initialize the shader program: \" + gl.getProgramInfoLog(shaderProgram));\n }\n\n return shaderProgram;\n}\n\nfunction loadShader(gl: WebGLRenderingContext, shaderType: GLenum, source: string) {\n const shader = gl.createShader(shaderType) as WebGLShader;\n gl.shaderSource(shader, source);\n gl.compileShader(shader);\n if (!gl.getShaderParameter(shader, gl.COMPILE_STATUS)) {\n const info = gl.getShaderInfoLog(shader);\n gl.deleteShader(shader);\n throw new Error(\"An error occurred compiling the shaders: \" + info);\n }\n\n return shader;\n}\n\nfunction initBuffers(gl: WebGLRenderingContext, vertexPosition: number, textureCoord: number) {\n const positionBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer);\n const positions = [\n -1.0, -1.0, 0.0,\n 1.0, -1.0, 0.0,\n 1.0, 1.0, 0.0,\n -1.0, -1.0, 0.0,\n 1.0, 1.0, 0.0,\n -1.0, 1.0, 0.0,\n ];\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(positions), gl.STATIC_DRAW);\n gl.vertexAttribPointer(vertexPosition, 3, gl.FLOAT, false, 0, 0);\n gl.enableVertexAttribArray(vertexPosition);\n\n const textureCoordBuffer = gl.createBuffer();\n gl.bindBuffer(gl.ARRAY_BUFFER, textureCoordBuffer);\n const textureCoordinates = [\n 0.0, 1.0,\n 1.0, 1.0,\n 1.0, 0.0,\n 0.0, 1.0,\n 1.0, 0.0,\n 0.0, 0.0,\n ];\n gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(textureCoordinates),\n gl.STATIC_DRAW);\n\n gl.vertexAttribPointer(textureCoord, 2, gl.FLOAT, false, 0, 0);\n gl.enableVertexAttribArray(textureCoord);\n}\n","import { Emulators, CommandInterface, BackendOptions } from \"emulators\";\nimport { TransportLayer } from \"emulators/dist/types/protocol/protocol\";\nimport { EmulatorsUi } from \"./emulators-ui\";\nimport { Layers, LayersOptions } from \"./dom/layers\";\n\nimport { extractLayersConfig, LegacyLayersConfig, LayersConfig } from \"./controls/layers-config\";\n\nimport { initLegacyLayersControl } from \"./controls/legacy-layers-control\";\nimport { initNullLayersControl } from \"./controls/null-layers-control\";\nimport { initLayersControl } from \"./controls/layers-control\";\n\nimport { pointers } from \"./dom/pointer\";\n\ndeclare const emulators: Emulators;\n\nexport type EmulatorFunction = \"dosboxWorker\" | \"dosboxDirect\" | \"dosboxNode\" | \"janus\" | \"backend\";\n\nexport interface DosOptions {\n sensitivityValue?: number;\n mirroredControls?: boolean;\n scaleControls?: number;\n aspect?: number;\n noWebGL?: boolean;\n emulatorFunction?: EmulatorFunction;\n clickToStart?: boolean;\n layersOptions?: LayersOptions;\n createTransportLayer?: () => TransportLayer;\n}\n\nexport class DosInstance {\n emulatorsUi: EmulatorsUi;\n emulatorFunction: EmulatorFunction;\n createTransportLayer?: () => TransportLayer;\n layers: Layers;\n layersConfig: LayersConfig | LegacyLayersConfig | null = null;\n ciPromise?: Promise<CommandInterface>;\n\n options: DosOptions;\n mobileControls: boolean;\n mirroredControls: boolean;\n scaleControls: number;\n\n autolock: boolean;\n sensitivity: number;\n\n storage: Storage;\n\n volume: number;\n\n private clickToStart: boolean;\n private unbindControls: () => void = () => {/**/};\n private storedLayersConfig: LayersConfig | LegacyLayersConfig | null = null;\n private onMobileControlsChanged: (visible: boolean) => void;\n private onSensitivityChanged: ((sensitivity: number) => void)[] = [];\n private onScaleChanged: ((scale: number) => void)[] = [];\n private onVolumeChanged: ((scale: number) => void)[] = [];\n\n setVolumeImplFn: (volume: number) => void = () => {};\n\n constructor(root: HTMLDivElement, emulatorsUi: EmulatorsUi, options: DosOptions) {\n this.options = options;\n this.emulatorsUi = emulatorsUi;\n this.storage = emulatorsUi.dom.storage;\n this.emulatorFunction = options.emulatorFunction || \"dosboxWorker\";\n this.clickToStart = options.clickToStart || false;\n this.layers = this.emulatorsUi.dom.layers(root, options.layersOptions);\n this.layers.showLoadingLayer();\n this.createTransportLayer = options.createTransportLayer;\n this.mobileControls = pointers.bind.mobile;\n this.autolock = false;\n\n this.mirroredControls =\n this.options.mirroredControls === true ||\n this.storage.getItem(\"mirroredControls\") === \"true\";\n\n const scaleControlsValue =\n this.options.scaleControls ??\n Number.parseFloat(this.storage.getItem(\"scaleControls\") ?? \"1.0\");\n this.scaleControls = Number.isNaN(scaleControlsValue) ? 1.0 : scaleControlsValue;\n\n const sensitivityValue =\n this.options.sensitivityValue ??\n Number.parseFloat(this.storage.getItem(\"sensitivity\") ?? \"1.0\");\n this.sensitivity = Number.isNaN(sensitivityValue) ? 1.0 : sensitivityValue;\n\n const volumeValue = Number.parseFloat(this.storage.getItem(\"volume\") ?? \"1.0\");\n this.volume = Number.isNaN(volumeValue) ? 1.0 : volumeValue;\n\n this.onMobileControlsChanged = () => {/**/};\n\n if (this.emulatorFunction === \"backend\" && this.createTransportLayer === undefined) {\n throw new Error(\"Emulator function set to 'backend' but 'createTransportLayer' is not a function\");\n }\n }\n\n async run(bundleUrl: string,\n optionalChangesUrl?: string,\n optionalPersistKey?: string): Promise<CommandInterface> {\n await this.stop();\n this.layers.setLoadingMessage(\"Starting...\");\n\n const persistKey = (optionalPersistKey !== undefined &&\n optionalPersistKey !== null && optionalPersistKey.length > 0) ?\n optionalPersistKey : bundleUrl + \".changes\";\n\n let ci: CommandInterface;\n try {\n ci = await this.runBundle(bundleUrl, optionalChangesUrl, persistKey);\n } catch (e) {\n this.layers.setLoadingMessage(\"Unexpected error occured...\");\n this.layers.notyf.error({ message: \"Can't start emulator look browser logs for more info\" });\n // eslint-disable-next-line\n console.error(e);\n throw e;\n }\n\n const emulatorsUi = this.emulatorsUi;\n if (this.emulatorFunction === \"janus\") {\n emulatorsUi.graphics.video(this.layers, ci);\n } else {\n emulatorsUi.persist.save(persistKey, this.layers, ci, emulators);\n try {\n if (this.options.noWebGL === true) {\n throw new Error(\"WebGL is disabled by options\");\n }\n emulatorsUi.graphics.webGl(this.layers, ci, this.options.aspect);\n } catch (e) {\n // eslint-disable-next-line\n console.error(\"Unable to create webgl canvas, fallback to 2d rendering\");\n emulatorsUi.graphics._2d(this.layers, ci, this.options.aspect);\n }\n this.setVolumeImplFn = emulatorsUi.sound.audioNode(ci);\n this.setVolumeImplFn(this.volume);\n }\n\n emulatorsUi.dom.lifecycle(ci);\n\n const config = await ci.config();\n this.autolock = config.output?.options?.autolock?.value === true;\n await this.setLayersConfig(extractLayersConfig(config));\n\n if (!this.mobileControls) {\n this.mobileControls = true; // force disabling\n this.disableMobileControls();\n }\n\n this.layers.setLoadingMessage(\"Ready\");\n this.layers.hideLoadingLayer();\n\n if (this.clickToStart) {\n this.layers.showClickToStart();\n }\n\n return ci;\n }\n\n async stop(): Promise<void> {\n this.layers.showLoadingLayer();\n\n if (this.ciPromise === undefined) {\n return;\n }\n\n const ci = await this.ciPromise;\n delete this.ciPromise;\n await ci.exit();\n\n return;\n }\n\n public async setLayersConfig(config: LayersConfig | LegacyLayersConfig | null, layerName?: string) {\n if (this.ciPromise === undefined) {\n return;\n }\n\n const ci = await this.ciPromise;\n\n this.layersConfig = config;\n this.unbindControls();\n\n if (config === null) {\n this.unbindControls = initNullLayersControl(this, this.layers, ci);\n } else if (config.version === undefined) {\n this.unbindControls = initLegacyLayersControl(this, this.layers, config as LegacyLayersConfig, ci);\n } else {\n this.unbindControls = initLayersControl(this.layers, config as LayersConfig,\n ci, this, this.mirroredControls, this.scaleControls, layerName);\n }\n }\n\n public getLayersConfig(): LayersConfig | LegacyLayersConfig | null {\n return this.layersConfig;\n }\n\n public async enableMobileControls() {\n if (this.mobileControls) {\n return;\n }\n this.mobileControls = true;\n await this.setLayersConfig(this.storedLayersConfig);\n this.storedLayersConfig = null;\n this.onMobileControlsChanged(true);\n }\n\n public async disableMobileControls() {\n if (!this.mobileControls) {\n return;\n }\n this.mobileControls = false;\n this.storedLayersConfig = this.layersConfig;\n await this.setLayersConfig(null);\n this.onMobileControlsChanged(false);\n }\n\n public async setMirroredControls(mirrored: boolean) {\n if (this.mirroredControls === mirrored) {\n return;\n }\n this.mirroredControls = mirrored;\n this.storage.setItem(\"mirroredControls\", mirrored + \"\");\n if (mirrored) {\n if (this.mobileControls) {\n await this.setLayersConfig(this.layersConfig);\n } else {\n await this.enableMobileControls();\n }\n } else {\n if (this.mobileControls) {\n await this.setLayersConfig(this.layersConfig);\n } else {\n // do nothing\n }\n }\n }\n\n public async setScaleControls(scale: number) {\n if (scale === this.scaleControls) {\n return;\n }\n this.scaleControls = scale;\n this.storage.setItem(\"scaleControls\", scale + \"\");\n if (this.mobileControls) {\n await this.setLayersConfig(this.layersConfig);\n }\n for (const next of this.onScaleChanged) {\n next(this.scaleControls);\n }\n }\n\n public async setSensitivity(sensitivity: number) {\n if (sensitivity === this.sensitivity) {\n return;\n }\n this.sensitivity = sensitivity;\n this.storage.setItem(\"sensitivity\", sensitivity + \"\");\n await this.setLayersConfig(this.layersConfig);\n for (const next of this.onSensitivityChanged) {\n next(this.sensitivity);\n }\n }\n\n public async setVolume(volume: number) {\n this.volume = volume;\n this.storage.setItem(\"volume\", volume + \"\");\n this.setVolumeImplFn(volume);\n for (const next of this.onVolumeChanged) {\n next(this.volume);\n }\n }\n\n public async setAutolock(autolock: boolean) {\n if (autolock === this.autolock) {\n return;\n }\n this.autolock = autolock;\n await this.setLayersConfig(this.layersConfig);\n }\n\n public setOnMobileControlsChanged(handler: (visible: boolean) => void) {\n this.onMobileControlsChanged = handler;\n }\n\n public registerOnSensitivityChanged = (handler: (sensitivity: number) => void) => {\n this.onSensitivityChanged.push(handler);\n };\n\n public removeOnSensitivityChanged = (handler: (sensitivity: number) => void) => {\n this.onSensitivityChanged = this.onSensitivityChanged.filter((n) => n !== handler);\n };\n\n public registerOnScaleChanged = (handler: (scale: number) => void) => {\n this.onScaleChanged.push(handler);\n };\n\n public removeOnScaleChanged = (handler: (scale: number) => void) => {\n this.onScaleChanged = this.onScaleChanged.filter((n) => n !== handler);\n };\n\n public registerOnVolumeChanged = (handler: (volume: number) => void) => {\n this.onVolumeChanged.push(handler);\n };\n\n public removeOnVolumeChanged = (handler: (volume: number) => void) => {\n this.onVolumeChanged = this.onVolumeChanged.filter((n) => n !== handler);\n };\n\n private async runBundle(bundleUrl: string, optionalChangesUrl: string | undefined, persistKey: string) {\n const emulatorsUi = this.emulatorsUi;\n if (this.emulatorFunction === \"janus\") {\n this.layers.setLoadingMessage(\"Connecting...\");\n this.ciPromise = emulators.janus(bundleUrl);\n } else {\n this.layers.setLoadingMessage(\"Downloading bundle ...\");\n const bundlePromise = emulatorsUi.network.resolveBundle(bundleUrl, {\n onprogress: (percent) => this.layers.setLoadingMessage(\"Downloading bundle \" + percent + \"%\"),\n });\n const options: BackendOptions = {\n onExtractProgress: (index, file, extracted, total) => {\n if (index !== 0) {\n return;\n }\n\n const percent = Math.round(extracted / total * 100);\n const lastIndex = file.lastIndexOf(\"/\");\n\n const name = file.substring(lastIndex + 1);\n this.layers.setLoadingMessage(\"Extracting \" + percent + \"% (\" + name + \")\");\n },\n };\n try {\n let changesBundle: Uint8Array | undefined;\n if (optionalChangesUrl !== undefined && optionalChangesUrl !== null && optionalChangesUrl.length > 0) {\n changesBundle = await emulatorsUi.network.resolveBundle(optionalChangesUrl, { httpCache: false });\n } else {\n changesBundle = await emulatorsUi.persist.load(persistKey, emulators);\n }\n const bundle = await bundlePromise;\n if (this.emulatorFunction === \"backend\") {\n this.ciPromise = emulators.backend([bundle, changesBundle],\n (this as any).createTransportLayer() as TransportLayer, options);\n } else {\n this.ciPromise = emulators[this.emulatorFunction]([bundle, changesBundle], options);\n }\n } catch {\n const bundle = await bundlePromise;\n if (this.emulatorFunction === \"backend\") {\n this.ciPromise = emulators.backend([bundle],\n (this as any).createTransportLayer() as TransportLayer, options);\n } else {\n this.ciPromise = emulators[this.emulatorFunction]([bundle], options);\n }\n }\n }\n\n return this.ciPromise;\n }\n}\n\nexport type DosFactoryType = (root: HTMLDivElement, options?: DosOptions) => DosInstance;\n","export async function resolveBundle(url: string,\n options?: {\n httpCache?: boolean,\n onprogress?: (progress: number) => void\n }): Promise<Uint8Array> {\n const onprogress = options?.onprogress;\n const httpCache = !(options?.httpCache === false);\n\n return new Promise<Uint8Array>((resolve, reject) => {\n const request = new XMLHttpRequest();\n request.open(\"GET\", url, true);\n request.overrideMimeType(\"text/plain; charset=x-user-defined\");\n request.addEventListener(\"error\", () => {\n reject(new Error(\"Network error, can't download \" + url));\n });\n request.addEventListener(\"abort\", () => {\n reject(new Error(\"Request canceled for url \" + url));\n }, false);\n request.responseType = \"arraybuffer\";\n request.onreadystatechange = () => {\n if (request.readyState === 4) {\n if (request.status === 200) {\n if (onprogress !== undefined) {\n onprogress(100);\n }\n resolve(new Uint8Array(request.response));\n } else {\n reject(new Error(\"Network error, can't download \" + url));\n }\n }\n };\n if (onprogress !== undefined) {\n request.onprogress = (event) => {\n if (event.total && event.total > 0) {\n const porgress = Math.round(event.loaded * 10000 / event.total) / 100;\n onprogress(porgress);\n }\n };\n }\n if (httpCache === false) {\n request.setRequestHeader(\"Cache-Control\", \"no-cache, no-store, max-age=0\");\n request.setRequestHeader(\"Expires\", \"Tue, 01 Jan 1980 1:00:00 GMT\");\n request.setRequestHeader(\"Pragma\", \"no-cache\");\n }\n request.send();\n });\n}\n","import { CommandInterface, MessageType } from \"emulators\";\nimport { Layers } from \"../dom/layers\";\n\nexport function notyf(layers: Layers, ci: CommandInterface) {\n const notyf = layers.notyf;\n ci.events().onMessage((msgType: MessageType, ...args) => {\n if (msgType === \"error\") {\n notyf.error({\n message: JSON.stringify(args),\n });\n }\n });\n}\n","/* eslint @typescript-eslint/no-unused-vars: 0 */\n\nexport interface Cache {\n put: (key: string, data: string | ArrayBuffer) => Promise<void>;\n get: (key: string, defaultValue?: string | ArrayBuffer) => Promise<string | ArrayBuffer>;\n forEach: (each: (key: string, value: any) => void, onend: () => void) => void;\n close: () => void;\n}\n\nclass CacheNoop implements Cache {\n // eslint-disable-next-line\n public close() {\n }\n\n public put(key: string, data: string | ArrayBuffer): Promise<void> {\n return Promise.resolve();\n }\n\n public get(key: string, defaultValue?: string | ArrayBuffer): Promise<string | ArrayBuffer> {\n if (defaultValue !== undefined) {\n return Promise.resolve(defaultValue);\n }\n return Promise.reject(new Error(\"Cache is not supported on this host\"));\n }\n\n public forEach(each: (key: string, value: any) => void, onend: () => void) {\n onend();\n }\n}\n\nexport function makeCache(version: string, logger: { onErr(...args: any[]): any }): Promise<Cache> {\n return new Promise((resolve) => {\n new CacheDbImpl(version, resolve, (msg: string) => {\n logger.onErr(msg);\n resolve(new CacheNoop());\n });\n });\n}\n\nclass CacheDbImpl implements Cache {\n public version: string;\n private storeName = \"files\";\n private indexedDB: IDBFactory;\n private db: IDBDatabase | null = null;\n\n constructor(version: string, onready: (cache: Cache) => void, onerror: (msg: string) => void) {\n this.version = version;\n this.indexedDB = (typeof window === \"undefined\" ? undefined : window.indexedDB ||\n (window as any).mozIndexedDB ||\n (window as any).webkitIndexedDB || (window as any).msIndexedDB) as any;\n\n if (!this.indexedDB) {\n onerror(\"Indexed db is not supported on this host\");\n return;\n }\n\n try {\n const openRequest = this.indexedDB.open(\"js-dos-cache (\" + version + \")\", 1);\n openRequest.onerror = (event) => {\n onerror(\"Can't open cache database: \" + openRequest.error?.message);\n };\n openRequest.onsuccess = (event) => {\n this.db = openRequest.result;\n onready(this);\n };\n openRequest.onupgradeneeded = (event) => {\n try {\n this.db = openRequest.result;\n this.db.onerror = (event) => {\n onerror(\"Can't upgrade cache database\");\n };\n\n this.db.createObjectStore(this.storeName);\n } catch (e) {\n onerror(\"Can't upgrade cache database\");\n }\n };\n } catch (e: any) {\n onerror(\"Can't open cache database: \" + e.message);\n }\n }\n\n public close() {\n if (this.db !== null) {\n this.db.close();\n this.db = null;\n }\n }\n\n public put(key: string, data: string | ArrayBuffer): Promise<void> {\n return new Promise((resolve) => {\n if (this.db === null) {\n resolve();\n return;\n }\n\n const transaction = this.db.transaction(this.storeName, \"readwrite\");\n transaction.oncomplete = () => resolve();\n transaction.objectStore(this.storeName).put(data, key);\n });\n }\n\n public get(key: string, defaultValue?: string | ArrayBuffer): Promise<string | ArrayBuffer> {\n return new Promise((resolve, reject) => {\n function rejectOrResolve(message: string) {\n if (defaultValue === undefined) {\n reject(new Error(message));\n } else {\n resolve(defaultValue);\n }\n }\n\n\n if (this.db === null) {\n rejectOrResolve(\"db is not initalized\");\n return;\n }\n\n const transaction = this.db.transaction(this.storeName, \"readonly\");\n const request = transaction.objectStore(this.storeName).get(key);\n request.onerror = () => reject(new Error(\"Can't read value for key '\" + key + \"'\"));\n request.onsuccess = () => {\n if (request.result) {\n resolve(request.result);\n } else {\n rejectOrResolve(\"Result is empty for key '\" + key + \"', result: \" + request.result);\n }\n };\n });\n }\n\n public forEach(each: (key: string, value: any) => void, onend: () => void) {\n if (this.db === null) {\n onend();\n return;\n }\n\n const transaction = this.db.transaction(this.storeName, \"readonly\");\n const request = transaction.objectStore(this.storeName).openCursor();\n request.onerror = () => onend();\n request.onsuccess = (event) => {\n const cursor = (event.target as any).result as IDBCursorWithValue;\n if (cursor) {\n each(cursor.key.toString(), cursor.value);\n cursor.continue();\n } else {\n onend();\n }\n };\n }\n}\n","import { CommandInterface, Emulators } from \"emulators\";\nimport { Layers } from \"../dom/layers\";\nimport { makeCache } from \"./cache\";\n\nconst cacheName = \"emulators-ui-saves\";\nconst cachePromise = makeCache(cacheName, {\n onErr: console.error,\n});\n\n\nexport function save(key: string,\n layers: Layers,\n ci: CommandInterface,\n emulators: Emulators) {\n layers.setOnSave(async () => {\n const cache = await cachePromise;\n const updated = await ci.persist();\n return cache.put(key, updated.buffer);\n });\n}\n\nexport async function load(key: string,\n emulators: Emulators) {\n const cache = await cachePromise;\n return cache.get(key).then((buffer) => new Uint8Array(buffer as ArrayBuffer));\n}\n","import { CommandInterface, DirectSound } from \"emulators\";\n\nclass SamplesQueue {\n private samplesQueue: Float32Array[] = [];\n\n push(samples: Float32Array) {\n this.samplesQueue.push(samples);\n }\n\n length() {\n let total = 0;\n for (const next of this.samplesQueue) {\n total += next.length;\n }\n return total;\n }\n\n writeTo(dst: Float32Array, bufferSize: number) {\n let writeIt = 0;\n while (this.samplesQueue.length > 0) {\n const src = this.samplesQueue[0];\n const toRead = Math.min(bufferSize - writeIt, src.length);\n if (toRead === src.length) {\n dst.set(src, writeIt);\n this.samplesQueue.shift();\n } else {\n dst.set(src.slice(0, toRead), writeIt);\n this.samplesQueue[0] = src.slice(toRead);\n }\n\n writeIt += toRead;\n\n if (writeIt === bufferSize) {\n break;\n }\n }\n\n if (writeIt < bufferSize) {\n dst.fill(0, writeIt);\n }\n }\n}\n\nexport function audioNode(ci: CommandInterface): (volume: number) => void {\n const sampleRate = ci.soundFrequency();\n const channels = 1;\n\n if (sampleRate === 0) {\n console.warn(\"Can't create audio node with sampleRate === 0, ingnoring\");\n return () => {};\n }\n\n let audioContext: AudioContext | null = null;\n\n if (typeof AudioContext !== \"undefined\") {\n audioContext = new AudioContext({\n sampleRate,\n latencyHint: \"interactive\",\n });\n } else if (typeof (window as any).webkitAudioContext !== \"undefined\") {\n // eslint-disable-next-line new-cap\n audioContext = new (window as any).webkitAudioContext({\n sampleRate,\n latencyHint: \"interactive\",\n });\n }\n\n if (audioContext == null) {\n return () => {};\n }\n\n const samplesQueue = new SamplesQueue();\n const bufferSize = 2048;\n const preBufferSize = 2048;\n\n ci.events().onSoundPush((samples) => {\n if (samplesQueue.length() < bufferSize * 2 + preBufferSize) {\n samplesQueue.push(samples);\n }\n });\n\n const audioNode = audioContext.createScriptProcessor(bufferSize, 0, channels);\n let started = false;\n\n let active = 0;\n const directSound = ci.directSound as DirectSound;\n const onDirectProcess = (event: AudioProcessingEvent) => {\n if (!started) {\n const buffer = directSound.buffer[0];\n started = Math.ceil(buffer[buffer.length - 1]) > 0;\n }\n\n if (!started) {\n return;\n }\n\n let offset = 0;\n let numFrames = event.outputBuffer.length;\n const numChannels = event.outputBuffer.numberOfChannels;\n\n let numSamples;\n let buffer = directSound.buffer[active];\n while (numFrames > 0 && (numSamples = Math.ceil(buffer[buffer.length - 1])) > 0) {\n if (numFrames >= numSamples) {\n const source = buffer.subarray(0, numSamples);\n for (let channel = 0; channel < numChannels; ++channel) {\n const channelData = event.outputBuffer.getChannelData(channel);\n channelData.set(source, offset);\n }\n\n offset += numSamples;\n numFrames -= numSamples;\n\n buffer[buffer.length - 1] = 0;\n active = (active + 1) % directSound.ringSize;\n buffer = directSound.buffer[active];\n } else {\n const source = buffer.subarray(0, numFrames);\n for (let channel = 0; channel < numChannels; ++channel) {\n const channelData = event.outputBuffer.getChannelData(channel);\n channelData.set(source, offset);\n }\n\n buffer[buffer.length - 1] = numSamples - numFrames;\n buffer.set(buffer.subarray(numFrames, numFrames + buffer[buffer.length - 1]));\n numFrames = 0;\n }\n }\n };\n\n const onQueueProcess = (event: AudioProcessingEvent) => {\n const numFrames = event.outputBuffer.length;\n const numChannels = event.outputBuffer.numberOfChannels;\n const samplesCount = samplesQueue.length();\n\n if (!started) {\n started = samplesCount >= preBufferSize;\n }\n\n if (!started) {\n return;\n }\n\n for (let channel = 0; channel < numChannels; channel++) {\n const channelData = event.outputBuffer.getChannelData(channel);\n samplesQueue.writeTo(channelData, numFrames);\n }\n };\n\n audioNode.onaudioprocess = ci.directSound !== undefined ? onDirectProcess : onQueueProcess;\n\n const gainNode = audioContext.createGain();\n gainNode.connect(audioContext.destination);\n audioNode.connect(gainNode);\n\n gainNode.gain.value = 1.0;\n\n const resumeWebAudio = () => {\n if (audioContext !== null && audioContext.state === \"suspended\") {\n audioContext.resume();\n }\n };\n\n document.addEventListener(\"click\", resumeWebAudio, { once: true });\n document.addEventListener(\"touchstart\", resumeWebAudio, { once: true });\n document.addEventListener(\"keydown\", resumeWebAudio, { once: true });\n\n ci.events().onExit(() => {\n if (audioContext !== null) {\n audioNode.disconnect();\n gainNode.disconnect();\n audioContext.close();\n }\n\n document.removeEventListener(\"click\", resumeWebAudio);\n document.removeEventListener(\"touchstart\", resumeWebAudio);\n document.removeEventListener(\"keydown\", resumeWebAudio);\n });\n\n return (volume: number) => {\n gainNode.gain.value = volume;\n };\n}\n"]} |