{"id":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","dependencies":[{"name":"/Users/phil/code/@platform/code/react.ssr/sample/ui/.uiharness/package.json","includedInParent":true,"mtime":1566550465515},{"name":"/Users/phil/code/@platform/code/react.ssr/sample/ui/node_modules/@platform/react/package.json","includedInParent":true,"mtime":1566301992556},{"name":"rxjs","loc":{"line":3,"column":21},"parent":"/Users/phil/code/@platform/code/react.ssr/sample/ui/node_modules/@platform/react/lib/keyboard/keyboard.js","resolved":"/Users/phil/code/@platform/code/react.ssr/sample/ui/node_modules/rxjs/_esm5/index.js"},{"name":"rxjs/operators","loc":{"line":4,"column":26},"parent":"/Users/phil/code/@platform/code/react.ssr/sample/ui/node_modules/@platform/react/lib/keyboard/keyboard.js","resolved":"/Users/phil/code/@platform/code/react.ssr/sample/ui/node_modules/rxjs/_esm5/operators/index.js"},{"name":"../common","loc":{"line":5,"column":23},"parent":"/Users/phil/code/@platform/code/react.ssr/sample/ui/node_modules/@platform/react/lib/keyboard/keyboard.js","resolved":"/Users/phil/code/@platform/code/react.ssr/sample/ui/node_modules/@platform/react/lib/common/index.js"},{"name":"../events","loc":{"line":6,"column":23},"parent":"/Users/phil/code/@platform/code/react.ssr/sample/ui/node_modules/@platform/react/lib/keyboard/keyboard.js","resolved":"/Users/phil/code/@platform/code/react.ssr/sample/ui/node_modules/@platform/react/lib/events/index.js"}],"generated":{"js":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar rxjs_1 = require(\"rxjs\");\nvar operators_1 = require(\"rxjs/operators\");\nvar common_1 = require(\"../common\");\nvar events_1 = require(\"../events\");\nvar MODIFIERS = {\n    META: 'metaKey',\n    CTRL: 'ctrlKey',\n    ALT: 'altKey',\n    SHIFT: 'shiftKey',\n};\nvar isModifierPressed = function (e) {\n    return Object.keys(MODIFIERS)\n        .map(function (key) { return MODIFIERS[key]; })\n        .some(function (prop) { return e[prop] === true; });\n};\nvar Keyboard = (function () {\n    function Keyboard(options) {\n        var _this = this;\n        this._dispose$ = new rxjs_1.Subject();\n        this.dispose$ = this._dispose$.pipe(operators_1.share());\n        this.bindings = [];\n        var bindingPress$ = new rxjs_1.Subject();\n        this.bindingPress$ = bindingPress$.pipe(operators_1.takeUntil(this._dispose$), operators_1.share());\n        var keyPress$ = options.keyPress$ || events_1.events.keyPress$;\n        this.keyPress$ = keyPress$ = keyPress$.pipe(operators_1.takeUntil(this._dispose$));\n        this.bindings = options.bindings || [];\n        keyPress$.subscribe(function (e) { return (_this.latest = e); });\n        this.monitorBindings(function (e) { return bindingPress$.next(e); });\n        if (options.dispose$) {\n            options.dispose$.pipe(operators_1.take(1)).subscribe(function () { return _this.dispose(); });\n        }\n    }\n    Keyboard.create = function (options) {\n        return new Keyboard(options);\n    };\n    Keyboard.isModifier = function (key) {\n        return Object.keys(MODIFIERS).some(function (item) { return item === key; });\n    };\n    Keyboard.parse = function (pattern, defaultValue) {\n        var EMPTY = { keys: [], modifiers: [] };\n        if (pattern === false) {\n            return EMPTY;\n        }\n        pattern = typeof pattern === 'string' ? pattern.trim() : pattern;\n        if ((pattern === true || !pattern) && typeof defaultValue === 'string') {\n            pattern = defaultValue;\n        }\n        if (!pattern || typeof pattern !== 'string') {\n            return EMPTY;\n        }\n        var parts = (pattern || '')\n            .split('+')\n            .map(function (key) { return key.trim(); })\n            .filter(function (key) { return Boolean(key); })\n            .map(function (key) { return Keyboard.formatKey(key); });\n        var modifiers = Array.from(new Set(parts.filter(Keyboard.isModifier)));\n        var keys = parts.filter(function (key) { return !modifiers.some(function (item) { return item === key; }); });\n        keys = Array.from(new Set(keys));\n        return { keys: keys, modifiers: modifiers };\n    };\n    Keyboard.matchEvent = function (pattern, event) {\n        var key = Keyboard.formatKey(event.key);\n        pattern = typeof pattern === 'string' ? Keyboard.parse(pattern) : pattern;\n        if (!pattern.keys.includes(key)) {\n            return false;\n        }\n        var eventModifiers = [];\n        eventModifiers = event.metaKey ? eventModifiers.concat(['META']) : eventModifiers;\n        eventModifiers = event.ctrlKey ? eventModifiers.concat(['CTRL']) : eventModifiers;\n        eventModifiers = event.altKey ? eventModifiers.concat(['ALT']) : eventModifiers;\n        eventModifiers = event.shiftKey ? eventModifiers.concat(['SHIFT']) : eventModifiers;\n        if (eventModifiers.length !== pattern.modifiers.length) {\n            return false;\n        }\n        for (var _i = 0, eventModifiers_1 = eventModifiers; _i < eventModifiers_1.length; _i++) {\n            var modifier = eventModifiers_1[_i];\n            if (!pattern.modifiers.includes(modifier)) {\n                return false;\n            }\n        }\n        return true;\n    };\n    Keyboard.formatKey = function (key) {\n        key = key || '';\n        var MODIFIERS = ['CMD', 'COMMAND', 'META', 'CONTROL', 'CTRL', 'ALT', 'SHIFT'];\n        key = MODIFIERS.includes(key.toUpperCase()) ? key.toUpperCase() : key;\n        key = key === 'CMD' ? 'META' : key;\n        key = key === 'COMMAND' ? 'META' : key;\n        key = key === 'CONTROL' ? 'CTRL' : key;\n        key = key.length === 1 ? key.toUpperCase() : key;\n        return key;\n    };\n    Keyboard.prototype.dispose = function () {\n        this._dispose$.next();\n        this._dispose$.complete();\n    };\n    Keyboard.prototype.clone = function (options) {\n        var dispose$ = options.dispose$;\n        var keyPress$ = options.keyPress$ || this.keyPress$;\n        var bindings = options.bindings || this.bindings;\n        return Keyboard.create({ keyPress$: keyPress$, dispose$: dispose$, bindings: bindings });\n    };\n    Keyboard.prototype.filter = function (fn) {\n        var keyPress$ = this.keyPress$.pipe(operators_1.filter(fn));\n        return this.clone({ keyPress$: keyPress$ });\n    };\n    Keyboard.prototype.takeUntil = function (dispose$) {\n        return this.clone({ dispose$: dispose$ });\n    };\n    Keyboard.prototype.monitorBindings = function (fire) {\n        var _this = this;\n        var keyPress$ = this.keyPress$;\n        var pressedKeys = [];\n        keyPress$\n            .subscribe(function (e) {\n            var hasModifier = isModifierPressed(e);\n            if (e.isModifier && !e.isPressed && !hasModifier) {\n                pressedKeys = [];\n            }\n            if (!e.isModifier) {\n                var key = e.code;\n                key = key.startsWith('Key') ? e.code.replace(/^Key/, '') : key;\n                key = key.startsWith('Numpad') ? e.code.replace(/^Numpad/, '') : key;\n                key = key.startsWith('Digit') ? e.code.replace(/^Digit/, '') : key;\n                key = key.length === 1 ? key.toUpperCase() : key;\n                pressedKeys = e.isPressed ? common_1.R.uniq(pressedKeys.concat([key])) : [];\n            }\n        });\n        keyPress$\n            .pipe(operators_1.filter(function (e) { return e.isPressed; }), operators_1.map(function (e) { return ({ event: e, binding: _this.matchBinding(e, pressedKeys) }); }))\n            .subscribe(function (_a) {\n            var event = _a.event, binding = _a.binding;\n            if (binding) {\n                var key = binding.key, command = binding.command;\n                fire({\n                    key: key,\n                    command: command,\n                    preventDefault: function () { return event.preventDefault(); },\n                    stopPropagation: function () { return event.stopPropagation(); },\n                    stopImmediatePropagation: function () { return event.stopImmediatePropagation(); },\n                });\n            }\n        });\n    };\n    Keyboard.prototype.matchBinding = function (e, pressedKeys) {\n        var hasAllModifiers = function (modifiers) {\n            var _loop_1 = function (key) {\n                var exists = modifiers.some(function (item) { return item === key; });\n                if (e[MODIFIERS[key]] !== exists) {\n                    return { value: false };\n                }\n            };\n            for (var _i = 0, _a = Object.keys(MODIFIERS); _i < _a.length; _i++) {\n                var key = _a[_i];\n                var state_1 = _loop_1(key);\n                if (typeof state_1 === \"object\")\n                    return state_1.value;\n            }\n            return true;\n        };\n        var hasAllValues = function (a, b) { return common_1.R.equals(a, b); };\n        var isMatch = function (parts) {\n            return hasAllModifiers(parts.modifiers) && hasAllValues(parts.keys, pressedKeys);\n        };\n        for (var _i = 0, _a = this.bindings; _i < _a.length; _i++) {\n            var binding = _a[_i];\n            var parts = Keyboard.parse(binding.key);\n            if (isMatch(parts)) {\n                return binding;\n            }\n        }\n        return undefined;\n    };\n    return Keyboard;\n}());\nexports.Keyboard = Keyboard;\n"},"sourceMaps":{"js":{"mappings":[{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":1,"column":0},"generated":{"line":1,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":2,"column":0},"generated":{"line":2,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":3,"column":0},"generated":{"line":3,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":4,"column":0},"generated":{"line":4,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":5,"column":0},"generated":{"line":5,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":6,"column":0},"generated":{"line":6,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":7,"column":0},"generated":{"line":7,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":8,"column":0},"generated":{"line":8,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":9,"column":0},"generated":{"line":9,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":10,"column":0},"generated":{"line":10,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":11,"column":0},"generated":{"line":11,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":12,"column":0},"generated":{"line":12,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":13,"column":0},"generated":{"line":13,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":14,"column":0},"generated":{"line":14,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":15,"column":0},"generated":{"line":15,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":16,"column":0},"generated":{"line":16,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":17,"column":0},"generated":{"line":17,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":18,"column":0},"generated":{"line":18,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":19,"column":0},"generated":{"line":19,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":20,"column":0},"generated":{"line":20,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":21,"column":0},"generated":{"line":21,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":22,"column":0},"generated":{"line":22,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":23,"column":0},"generated":{"line":23,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":24,"column":0},"generated":{"line":24,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":25,"column":0},"generated":{"line":25,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":26,"column":0},"generated":{"line":26,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":27,"column":0},"generated":{"line":27,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":28,"column":0},"generated":{"line":28,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":29,"column":0},"generated":{"line":29,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":30,"column":0},"generated":{"line":30,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":31,"column":0},"generated":{"line":31,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":32,"column":0},"generated":{"line":32,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":33,"column":0},"generated":{"line":33,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":34,"column":0},"generated":{"line":34,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":35,"column":0},"generated":{"line":35,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":36,"column":0},"generated":{"line":36,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":37,"column":0},"generated":{"line":37,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":38,"column":0},"generated":{"line":38,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":39,"column":0},"generated":{"line":39,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":40,"column":0},"generated":{"line":40,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":41,"column":0},"generated":{"line":41,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":42,"column":0},"generated":{"line":42,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":43,"column":0},"generated":{"line":43,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":44,"column":0},"generated":{"line":44,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":45,"column":0},"generated":{"line":45,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":46,"column":0},"generated":{"line":46,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":47,"column":0},"generated":{"line":47,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":48,"column":0},"generated":{"line":48,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":49,"column":0},"generated":{"line":49,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":50,"column":0},"generated":{"line":50,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":51,"column":0},"generated":{"line":51,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":52,"column":0},"generated":{"line":52,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":53,"column":0},"generated":{"line":53,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":54,"column":0},"generated":{"line":54,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":55,"column":0},"generated":{"line":55,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":56,"column":0},"generated":{"line":56,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":57,"column":0},"generated":{"line":57,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":58,"column":0},"generated":{"line":58,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":59,"column":0},"generated":{"line":59,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":60,"column":0},"generated":{"line":60,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":61,"column":0},"generated":{"line":61,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":62,"column":0},"generated":{"line":62,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":63,"column":0},"generated":{"line":63,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":64,"column":0},"generated":{"line":64,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":65,"column":0},"generated":{"line":65,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":66,"column":0},"generated":{"line":66,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":67,"column":0},"generated":{"line":67,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":68,"column":0},"generated":{"line":68,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":69,"column":0},"generated":{"line":69,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":70,"column":0},"generated":{"line":70,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":71,"column":0},"generated":{"line":71,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":72,"column":0},"generated":{"line":72,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":73,"column":0},"generated":{"line":73,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":74,"column":0},"generated":{"line":74,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":75,"column":0},"generated":{"line":75,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":76,"column":0},"generated":{"line":76,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":77,"column":0},"generated":{"line":77,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":78,"column":0},"generated":{"line":78,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":79,"column":0},"generated":{"line":79,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":80,"column":0},"generated":{"line":80,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":81,"column":0},"generated":{"line":81,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":82,"column":0},"generated":{"line":82,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":83,"column":0},"generated":{"line":83,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":84,"column":0},"generated":{"line":84,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":85,"column":0},"generated":{"line":85,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":86,"column":0},"generated":{"line":86,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":87,"column":0},"generated":{"line":87,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":88,"column":0},"generated":{"line":88,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":89,"column":0},"generated":{"line":89,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":90,"column":0},"generated":{"line":90,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":91,"column":0},"generated":{"line":91,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":92,"column":0},"generated":{"line":92,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":93,"column":0},"generated":{"line":93,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":94,"column":0},"generated":{"line":94,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":95,"column":0},"generated":{"line":95,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":96,"column":0},"generated":{"line":96,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":97,"column":0},"generated":{"line":97,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":98,"column":0},"generated":{"line":98,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":99,"column":0},"generated":{"line":99,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":100,"column":0},"generated":{"line":100,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":101,"column":0},"generated":{"line":101,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":102,"column":0},"generated":{"line":102,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":103,"column":0},"generated":{"line":103,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":104,"column":0},"generated":{"line":104,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":105,"column":0},"generated":{"line":105,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":106,"column":0},"generated":{"line":106,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":107,"column":0},"generated":{"line":107,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":108,"column":0},"generated":{"line":108,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":109,"column":0},"generated":{"line":109,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":110,"column":0},"generated":{"line":110,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":111,"column":0},"generated":{"line":111,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":112,"column":0},"generated":{"line":112,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":113,"column":0},"generated":{"line":113,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":114,"column":0},"generated":{"line":114,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":115,"column":0},"generated":{"line":115,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":116,"column":0},"generated":{"line":116,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":117,"column":0},"generated":{"line":117,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":118,"column":0},"generated":{"line":118,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":119,"column":0},"generated":{"line":119,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":120,"column":0},"generated":{"line":120,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":121,"column":0},"generated":{"line":121,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":122,"column":0},"generated":{"line":122,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":123,"column":0},"generated":{"line":123,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":124,"column":0},"generated":{"line":124,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":125,"column":0},"generated":{"line":125,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":126,"column":0},"generated":{"line":126,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":127,"column":0},"generated":{"line":127,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":128,"column":0},"generated":{"line":128,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":129,"column":0},"generated":{"line":129,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":130,"column":0},"generated":{"line":130,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":131,"column":0},"generated":{"line":131,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":132,"column":0},"generated":{"line":132,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":133,"column":0},"generated":{"line":133,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":134,"column":0},"generated":{"line":134,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":135,"column":0},"generated":{"line":135,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":136,"column":0},"generated":{"line":136,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":137,"column":0},"generated":{"line":137,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":138,"column":0},"generated":{"line":138,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":139,"column":0},"generated":{"line":139,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":140,"column":0},"generated":{"line":140,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":141,"column":0},"generated":{"line":141,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":142,"column":0},"generated":{"line":142,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":143,"column":0},"generated":{"line":143,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":144,"column":0},"generated":{"line":144,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":145,"column":0},"generated":{"line":145,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":146,"column":0},"generated":{"line":146,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":147,"column":0},"generated":{"line":147,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":148,"column":0},"generated":{"line":148,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":149,"column":0},"generated":{"line":149,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":150,"column":0},"generated":{"line":150,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":151,"column":0},"generated":{"line":151,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":152,"column":0},"generated":{"line":152,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":153,"column":0},"generated":{"line":153,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":154,"column":0},"generated":{"line":154,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":155,"column":0},"generated":{"line":155,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":156,"column":0},"generated":{"line":156,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":157,"column":0},"generated":{"line":157,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":158,"column":0},"generated":{"line":158,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":159,"column":0},"generated":{"line":159,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":160,"column":0},"generated":{"line":160,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":161,"column":0},"generated":{"line":161,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":162,"column":0},"generated":{"line":162,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":163,"column":0},"generated":{"line":163,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":164,"column":0},"generated":{"line":164,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":165,"column":0},"generated":{"line":165,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":166,"column":0},"generated":{"line":166,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":167,"column":0},"generated":{"line":167,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":168,"column":0},"generated":{"line":168,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":169,"column":0},"generated":{"line":169,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":170,"column":0},"generated":{"line":170,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":171,"column":0},"generated":{"line":171,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":172,"column":0},"generated":{"line":172,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":173,"column":0},"generated":{"line":173,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":174,"column":0},"generated":{"line":174,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":175,"column":0},"generated":{"line":175,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":176,"column":0},"generated":{"line":176,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":177,"column":0},"generated":{"line":177,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":178,"column":0},"generated":{"line":178,"column":0}},{"source":"../../node_modules/@platform/react/lib/keyboard/keyboard.js","original":{"line":179,"column":0},"generated":{"line":179,"column":0}}],"sources":{"../../node_modules/@platform/react/lib/keyboard/keyboard.js":"\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar rxjs_1 = require(\"rxjs\");\nvar operators_1 = require(\"rxjs/operators\");\nvar common_1 = require(\"../common\");\nvar events_1 = require(\"../events\");\nvar MODIFIERS = {\n    META: 'metaKey',\n    CTRL: 'ctrlKey',\n    ALT: 'altKey',\n    SHIFT: 'shiftKey',\n};\nvar isModifierPressed = function (e) {\n    return Object.keys(MODIFIERS)\n        .map(function (key) { return MODIFIERS[key]; })\n        .some(function (prop) { return e[prop] === true; });\n};\nvar Keyboard = (function () {\n    function Keyboard(options) {\n        var _this = this;\n        this._dispose$ = new rxjs_1.Subject();\n        this.dispose$ = this._dispose$.pipe(operators_1.share());\n        this.bindings = [];\n        var bindingPress$ = new rxjs_1.Subject();\n        this.bindingPress$ = bindingPress$.pipe(operators_1.takeUntil(this._dispose$), operators_1.share());\n        var keyPress$ = options.keyPress$ || events_1.events.keyPress$;\n        this.keyPress$ = keyPress$ = keyPress$.pipe(operators_1.takeUntil(this._dispose$));\n        this.bindings = options.bindings || [];\n        keyPress$.subscribe(function (e) { return (_this.latest = e); });\n        this.monitorBindings(function (e) { return bindingPress$.next(e); });\n        if (options.dispose$) {\n            options.dispose$.pipe(operators_1.take(1)).subscribe(function () { return _this.dispose(); });\n        }\n    }\n    Keyboard.create = function (options) {\n        return new Keyboard(options);\n    };\n    Keyboard.isModifier = function (key) {\n        return Object.keys(MODIFIERS).some(function (item) { return item === key; });\n    };\n    Keyboard.parse = function (pattern, defaultValue) {\n        var EMPTY = { keys: [], modifiers: [] };\n        if (pattern === false) {\n            return EMPTY;\n        }\n        pattern = typeof pattern === 'string' ? pattern.trim() : pattern;\n        if ((pattern === true || !pattern) && typeof defaultValue === 'string') {\n            pattern = defaultValue;\n        }\n        if (!pattern || typeof pattern !== 'string') {\n            return EMPTY;\n        }\n        var parts = (pattern || '')\n            .split('+')\n            .map(function (key) { return key.trim(); })\n            .filter(function (key) { return Boolean(key); })\n            .map(function (key) { return Keyboard.formatKey(key); });\n        var modifiers = Array.from(new Set(parts.filter(Keyboard.isModifier)));\n        var keys = parts.filter(function (key) { return !modifiers.some(function (item) { return item === key; }); });\n        keys = Array.from(new Set(keys));\n        return { keys: keys, modifiers: modifiers };\n    };\n    Keyboard.matchEvent = function (pattern, event) {\n        var key = Keyboard.formatKey(event.key);\n        pattern = typeof pattern === 'string' ? Keyboard.parse(pattern) : pattern;\n        if (!pattern.keys.includes(key)) {\n            return false;\n        }\n        var eventModifiers = [];\n        eventModifiers = event.metaKey ? eventModifiers.concat(['META']) : eventModifiers;\n        eventModifiers = event.ctrlKey ? eventModifiers.concat(['CTRL']) : eventModifiers;\n        eventModifiers = event.altKey ? eventModifiers.concat(['ALT']) : eventModifiers;\n        eventModifiers = event.shiftKey ? eventModifiers.concat(['SHIFT']) : eventModifiers;\n        if (eventModifiers.length !== pattern.modifiers.length) {\n            return false;\n        }\n        for (var _i = 0, eventModifiers_1 = eventModifiers; _i < eventModifiers_1.length; _i++) {\n            var modifier = eventModifiers_1[_i];\n            if (!pattern.modifiers.includes(modifier)) {\n                return false;\n            }\n        }\n        return true;\n    };\n    Keyboard.formatKey = function (key) {\n        key = key || '';\n        var MODIFIERS = ['CMD', 'COMMAND', 'META', 'CONTROL', 'CTRL', 'ALT', 'SHIFT'];\n        key = MODIFIERS.includes(key.toUpperCase()) ? key.toUpperCase() : key;\n        key = key === 'CMD' ? 'META' : key;\n        key = key === 'COMMAND' ? 'META' : key;\n        key = key === 'CONTROL' ? 'CTRL' : key;\n        key = key.length === 1 ? key.toUpperCase() : key;\n        return key;\n    };\n    Keyboard.prototype.dispose = function () {\n        this._dispose$.next();\n        this._dispose$.complete();\n    };\n    Keyboard.prototype.clone = function (options) {\n        var dispose$ = options.dispose$;\n        var keyPress$ = options.keyPress$ || this.keyPress$;\n        var bindings = options.bindings || this.bindings;\n        return Keyboard.create({ keyPress$: keyPress$, dispose$: dispose$, bindings: bindings });\n    };\n    Keyboard.prototype.filter = function (fn) {\n        var keyPress$ = this.keyPress$.pipe(operators_1.filter(fn));\n        return this.clone({ keyPress$: keyPress$ });\n    };\n    Keyboard.prototype.takeUntil = function (dispose$) {\n        return this.clone({ dispose$: dispose$ });\n    };\n    Keyboard.prototype.monitorBindings = function (fire) {\n        var _this = this;\n        var keyPress$ = this.keyPress$;\n        var pressedKeys = [];\n        keyPress$\n            .subscribe(function (e) {\n            var hasModifier = isModifierPressed(e);\n            if (e.isModifier && !e.isPressed && !hasModifier) {\n                pressedKeys = [];\n            }\n            if (!e.isModifier) {\n                var key = e.code;\n                key = key.startsWith('Key') ? e.code.replace(/^Key/, '') : key;\n                key = key.startsWith('Numpad') ? e.code.replace(/^Numpad/, '') : key;\n                key = key.startsWith('Digit') ? e.code.replace(/^Digit/, '') : key;\n                key = key.length === 1 ? key.toUpperCase() : key;\n                pressedKeys = e.isPressed ? common_1.R.uniq(pressedKeys.concat([key])) : [];\n            }\n        });\n        keyPress$\n            .pipe(operators_1.filter(function (e) { return e.isPressed; }), operators_1.map(function (e) { return ({ event: e, binding: _this.matchBinding(e, pressedKeys) }); }))\n            .subscribe(function (_a) {\n            var event = _a.event, binding = _a.binding;\n            if (binding) {\n                var key = binding.key, command = binding.command;\n                fire({\n                    key: key,\n                    command: command,\n                    preventDefault: function () { return event.preventDefault(); },\n                    stopPropagation: function () { return event.stopPropagation(); },\n                    stopImmediatePropagation: function () { return event.stopImmediatePropagation(); },\n                });\n            }\n        });\n    };\n    Keyboard.prototype.matchBinding = function (e, pressedKeys) {\n        var hasAllModifiers = function (modifiers) {\n            var _loop_1 = function (key) {\n                var exists = modifiers.some(function (item) { return item === key; });\n                if (e[MODIFIERS[key]] !== exists) {\n                    return { value: false };\n                }\n            };\n            for (var _i = 0, _a = Object.keys(MODIFIERS); _i < _a.length; _i++) {\n                var key = _a[_i];\n                var state_1 = _loop_1(key);\n                if (typeof state_1 === \"object\")\n                    return state_1.value;\n            }\n            return true;\n        };\n        var hasAllValues = function (a, b) { return common_1.R.equals(a, b); };\n        var isMatch = function (parts) {\n            return hasAllModifiers(parts.modifiers) && hasAllValues(parts.keys, pressedKeys);\n        };\n        for (var _i = 0, _a = this.bindings; _i < _a.length; _i++) {\n            var binding = _a[_i];\n            var parts = Keyboard.parse(binding.key);\n            if (isMatch(parts)) {\n                return binding;\n            }\n        }\n        return undefined;\n    };\n    return Keyboard;\n}());\nexports.Keyboard = Keyboard;\n"},"lineCount":179}},"error":null,"hash":"a529b029e2ba2eb45a4e5f83bea99f83","cacheData":{"env":{}}}