diff --git a/app.uhk.js b/app.uhk.js
new file mode 100644
index 00000000..904dc193
--- /dev/null
+++ b/app.uhk.js
@@ -0,0 +1,18407 @@
+webpackJsonp([0],[
+/* 0 */
+/***/ function(module, exports, __webpack_require__) {
+
+ /* WEBPACK VAR INJECTION */(function(process) {"use strict";
+ var platform_browser_dynamic_1 = __webpack_require__(2);
+ var app_module_1 = __webpack_require__(24);
+ if (!process.stdout) {
+ process.stdout = __webpack_require__(364)();
+ }
+ platform_browser_dynamic_1.platformBrowserDynamic().bootstrapModule(app_module_1.AppModule);
+
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1)))
+
+/***/ },
+/* 1 */,
+/* 2 */,
+/* 3 */,
+/* 4 */,
+/* 5 */,
+/* 6 */,
+/* 7 */,
+/* 8 */,
+/* 9 */,
+/* 10 */,
+/* 11 */,
+/* 12 */,
+/* 13 */,
+/* 14 */,
+/* 15 */,
+/* 16 */,
+/* 17 */,
+/* 18 */,
+/* 19 */,
+/* 20 */,
+/* 21 */,
+/* 22 */,
+/* 23 */,
+/* 24 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var core_1 = __webpack_require__(4);
+ var forms_1 = __webpack_require__(25);
+ var platform_browser_1 = __webpack_require__(22);
+ var effects_1 = __webpack_require__(29);
+ var store_1 = __webpack_require__(44);
+ var store_devtools_1 = __webpack_require__(62);
+ var store_log_monitor_1 = __webpack_require__(71);
+ var ng2_dragula_1 = __webpack_require__(74);
+ var ng2_select2_1 = __webpack_require__(91);
+ var add_on_1 = __webpack_require__(97);
+ var slider_1 = __webpack_require__(117);
+ var keymap_1 = __webpack_require__(121);
+ var layers_1 = __webpack_require__(179);
+ var macro_1 = __webpack_require__(183);
+ var notification_1 = __webpack_require__(254);
+ var popover_1 = __webpack_require__(258);
+ var tab_1 = __webpack_require__(216);
+ var capture_keystroke_1 = __webpack_require__(262);
+ var icon_1 = __webpack_require__(267);
+ var settings_1 = __webpack_require__(271);
+ var side_menu_1 = __webpack_require__(276);
+ var keyboard_1 = __webpack_require__(282);
+ var keys_1 = __webpack_require__(292);
+ var module_1 = __webpack_require__(284);
+ var wrap_1 = __webpack_require__(334);
+ var main_app_1 = __webpack_require__(340);
+ var directives_1 = __webpack_require__(350);
+ var capture_service_1 = __webpack_require__(264);
+ var mapper_service_1 = __webpack_require__(202);
+ var effects_2 = __webpack_require__(353);
+ var reducers_1 = __webpack_require__(357);
+ var storage_1 = __webpack_require__(359);
+ var edit_1 = __webpack_require__(348);
+ var not_found_1 = __webpack_require__(194);
+ // Create DataStorage dependency injection
+ var storageProvider = core_1.ReflectiveInjector.resolve([storage_1.DataStorage]);
+ var storageInjector = core_1.ReflectiveInjector.fromResolvedProviders(storageProvider);
+ var storageService = storageInjector.get(storage_1.DataStorage);
+ // All reducers that are used in application
+ var storeConfig = {
+ userConfiguration: storageService.saveState(reducers_1.userConfigurationReducer),
+ presetKeymaps: reducers_1.presetReducer
+ };
+ var AppModule = (function () {
+ function AppModule() {
+ }
+ return AppModule;
+ }());
+ AppModule = __decorate([
+ core_1.NgModule({
+ declarations: [
+ main_app_1.MainAppComponent,
+ keymap_1.KeymapEditComponent,
+ keymap_1.KeymapHeaderComponent,
+ notification_1.NotificationComponent,
+ keys_1.SvgIconTextKeyComponent,
+ keys_1.SvgKeyboardKeyComponent,
+ keys_1.SvgKeystrokeKeyComponent,
+ keys_1.SvgMouseKeyComponent,
+ keys_1.SvgMouseClickKeyComponent,
+ keys_1.SvgMouseMoveKeyComponent,
+ keys_1.SvgMouseScrollKeyComponent,
+ keys_1.SvgMouseSpeedKeyComponent,
+ keys_1.SvgOneLineTextKeyComponent,
+ keys_1.SvgSingleIconKeyComponent,
+ keys_1.SvgSwitchKeymapKeyComponent,
+ keys_1.SvgTextIconKeyComponent,
+ keys_1.SvgTwoLineTextKeyComponent,
+ keys_1.SvgKeyboardKeyComponent,
+ wrap_1.SvgKeyboardWrapComponent,
+ keyboard_1.SvgKeyboardComponent,
+ module_1.SvgModuleComponent,
+ layers_1.LayersComponent,
+ popover_1.PopoverComponent,
+ keymap_1.KeymapAddComponent,
+ side_menu_1.SideMenuComponent,
+ tab_1.KeypressTabComponent,
+ tab_1.KeymapTabComponent,
+ tab_1.LayerTabComponent,
+ tab_1.MacroTabComponent,
+ tab_1.MouseTabComponent,
+ tab_1.NoneTabComponent,
+ capture_keystroke_1.CaptureKeystrokeButtonComponent,
+ icon_1.IconComponent,
+ macro_1.MacroEditComponent,
+ macro_1.MacroListComponent,
+ macro_1.MacroHeaderComponent,
+ macro_1.MacroItemComponent,
+ macro_1.MacroActionEditorComponent,
+ macro_1.MacroDelayTabComponent,
+ macro_1.MacroKeyTabComponent,
+ macro_1.MacroMouseTabComponent,
+ macro_1.MacroTextTabComponent,
+ macro_1.MacroNotFoundComponent,
+ add_on_1.AddOnComponent,
+ settings_1.SettingsComponent,
+ slider_1.KeyboardSliderComponent,
+ directives_1.CancelableDirective
+ ],
+ imports: [
+ platform_browser_1.BrowserModule,
+ forms_1.FormsModule,
+ ng2_dragula_1.DragulaModule,
+ main_app_1.routing,
+ store_1.StoreModule.provideStore(storeConfig, storageService.initialState()),
+ store_devtools_1.StoreDevtoolsModule.instrumentStore({
+ monitor: store_log_monitor_1.useLogMonitor({
+ visible: false,
+ position: 'right'
+ })
+ }),
+ store_log_monitor_1.StoreLogMonitorModule,
+ ng2_select2_1.Select2Module,
+ effects_1.EffectsModule.runAfterBootstrap(effects_2.KeymapEffects),
+ effects_1.EffectsModule.runAfterBootstrap(effects_2.MacroEffects)
+ ],
+ providers: [
+ mapper_service_1.MapperService,
+ main_app_1.appRoutingProviders,
+ edit_1.KeymapEditGuard,
+ not_found_1.MacroNotFoundGuard,
+ capture_service_1.CaptureService
+ ],
+ bootstrap: [main_app_1.MainAppComponent]
+ })
+ ], AppModule);
+ exports.AppModule = AppModule;
+
+
+/***/ },
+/* 25 */,
+/* 26 */,
+/* 27 */,
+/* 28 */,
+/* 29 */,
+/* 30 */,
+/* 31 */,
+/* 32 */,
+/* 33 */,
+/* 34 */,
+/* 35 */,
+/* 36 */,
+/* 37 */,
+/* 38 */,
+/* 39 */,
+/* 40 */,
+/* 41 */,
+/* 42 */,
+/* 43 */,
+/* 44 */,
+/* 45 */,
+/* 46 */,
+/* 47 */,
+/* 48 */,
+/* 49 */,
+/* 50 */,
+/* 51 */,
+/* 52 */,
+/* 53 */,
+/* 54 */,
+/* 55 */,
+/* 56 */,
+/* 57 */,
+/* 58 */,
+/* 59 */,
+/* 60 */,
+/* 61 */,
+/* 62 */
+/***/ function(module, exports, __webpack_require__) {
+
+ (function (global, factory) {
+ true ? factory(exports, __webpack_require__(4), __webpack_require__(44), __webpack_require__(63), __webpack_require__(48), __webpack_require__(31), __webpack_require__(52), __webpack_require__(51), __webpack_require__(64), __webpack_require__(50), __webpack_require__(54), __webpack_require__(8), __webpack_require__(65), __webpack_require__(61), __webpack_require__(66), __webpack_require__(69), __webpack_require__(70)) :
+ typeof define === 'function' && define.amd ? define(['exports', '@angular/core', '@ngrx/store', 'rxjs/ReplaySubject', 'rxjs/operator/map', 'rxjs/operator/merge', 'rxjs/operator/observeOn', 'rxjs/operator/scan', 'rxjs/operator/skip', 'rxjs/operator/withLatestFrom', 'rxjs/scheduler/queue', 'rxjs/Observable', 'rxjs/observable/empty', 'rxjs/operator/filter', 'rxjs/operator/share', 'rxjs/operator/switchMap', 'rxjs/operator/takeUntil'], factory) :
+ (factory((global.ngrx = global.ngrx || {}, global.ngrx.storeDevtools = global.ngrx.storeDevtools || {}),global.ng.core,global.ngrx.store,global.Rx,global.Rx.Observable.prototype,global.Rx.Observable.prototype,global.Rx.Observable.prototype,global.Rx.Observable.prototype,global.Rx.Observable.prototype,global.Rx.Observable.prototype,global.Rx.Scheduler,global.Rx,global.Rx.Observable,global.Rx.Observable.prototype,global.Rx.Observable.prototype,global.Rx.Observable.prototype,global.Rx.Observable.prototype));
+ }(this, (function (exports,_angular_core,_ngrx_store,rxjs_ReplaySubject,rxjs_operator_map,rxjs_operator_merge,rxjs_operator_observeOn,rxjs_operator_scan,rxjs_operator_skip,rxjs_operator_withLatestFrom,rxjs_scheduler_queue,rxjs_Observable,rxjs_observable_empty,rxjs_operator_filter,rxjs_operator_share,rxjs_operator_switchMap,rxjs_operator_takeUntil) { 'use strict';
+
+ var ActionTypes = {
+ PERFORM_ACTION: 'PERFORM_ACTION',
+ RESET: 'RESET',
+ ROLLBACK: 'ROLLBACK',
+ COMMIT: 'COMMIT',
+ SWEEP: 'SWEEP',
+ TOGGLE_ACTION: 'TOGGLE_ACTION',
+ SET_ACTIONS_ACTIVE: 'SET_ACTIONS_ACTIVE',
+ JUMP_TO_STATE: 'JUMP_TO_STATE',
+ IMPORT_STATE: 'IMPORT_STATE'
+ };
+ /**
+ * Action creators to change the History state.
+ */
+ var StoreDevtoolActions = {
+ performAction: function (action) {
+ if (typeof action.type === 'undefined') {
+ throw new Error('Actions may not have an undefined "type" property. ' +
+ 'Have you misspelled a constant?');
+ }
+ return { type: ActionTypes.PERFORM_ACTION, action: action, timestamp: Date.now() };
+ },
+ reset: function () {
+ return { type: ActionTypes.RESET, timestamp: Date.now() };
+ },
+ rollback: function () {
+ return { type: ActionTypes.ROLLBACK, timestamp: Date.now() };
+ },
+ commit: function () {
+ return { type: ActionTypes.COMMIT, timestamp: Date.now() };
+ },
+ sweep: function () {
+ return { type: ActionTypes.SWEEP };
+ },
+ toggleAction: function (id) {
+ return { type: ActionTypes.TOGGLE_ACTION, id: id };
+ },
+ setActionsActive: function (start, end, active) {
+ if (active === void 0) { active = true; }
+ return { type: ActionTypes.SET_ACTIONS_ACTIVE, start: start, end: end, active: active };
+ },
+ jumpToState: function (index) {
+ return { type: ActionTypes.JUMP_TO_STATE, index: index };
+ },
+ importState: function (nextLiftedState) {
+ return { type: ActionTypes.IMPORT_STATE, nextLiftedState: nextLiftedState };
+ }
+ };
+
+ function difference(first, second) {
+ return first.filter(function (item) { return second.indexOf(item) < 0; });
+ }
+ /**
+ * Provides an app's view into the state of the lifted store.
+ */
+ function unliftState(liftedState) {
+ var computedStates = liftedState.computedStates, currentStateIndex = liftedState.currentStateIndex;
+ var state = computedStates[currentStateIndex].state;
+ return state;
+ }
+ /**
+ * Lifts an app's action into an action on the lifted store.
+ */
+ function liftAction(action) {
+ return StoreDevtoolActions.performAction(action);
+ }
+ function applyOperators(input$, operators) {
+ return operators.reduce(function (source$, _a) {
+ var operator = _a[0], args = _a.slice(1);
+ return operator.apply(source$, args);
+ }, input$);
+ }
+
+ var ExtensionActionTypes = {
+ START: 'START',
+ DISPATCH: 'DISPATCH',
+ STOP: 'STOP',
+ ACTION: 'ACTION'
+ };
+ var REDUX_DEVTOOLS_EXTENSION = new _angular_core.OpaqueToken('Redux Devtools Extension');
+ var DevtoolsExtension = (function () {
+ function DevtoolsExtension(devtoolsExtension) {
+ this.instanceId = "ngrx-store-" + Date.now();
+ this.devtoolsExtension = devtoolsExtension;
+ this.createActionStreams();
+ }
+ DevtoolsExtension.prototype.notify = function (action, state) {
+ if (!this.devtoolsExtension) {
+ return;
+ }
+ this.devtoolsExtension.send(null, state, false, this.instanceId);
+ };
+ DevtoolsExtension.prototype.createChangesObservable = function () {
+ var _this = this;
+ if (!this.devtoolsExtension) {
+ return rxjs_observable_empty.empty();
+ }
+ return new rxjs_Observable.Observable(function (subscriber) {
+ var connection = _this.devtoolsExtension.connect({ instanceId: _this.instanceId });
+ connection.subscribe(function (change) { return subscriber.next(change); });
+ return connection.unsubscribe;
+ });
+ };
+ DevtoolsExtension.prototype.createActionStreams = function () {
+ var _this = this;
+ // Listens to all changes based on our instanceId
+ var changes$ = rxjs_operator_share.share.call(this.createChangesObservable());
+ // Listen for the start action
+ var start$ = rxjs_operator_filter.filter.call(changes$, function (change) { return change.type === ExtensionActionTypes.START; });
+ // Listen for the stop action
+ var stop$ = rxjs_operator_filter.filter.call(changes$, function (change) { return change.type === ExtensionActionTypes.STOP; });
+ // Listen for lifted actions
+ var liftedActions$ = applyOperators(changes$, [
+ [rxjs_operator_filter.filter, function (change) { return change.type === ExtensionActionTypes.DISPATCH; }],
+ [rxjs_operator_map.map, function (change) { return _this.unwrapAction(change.payload); }]
+ ]);
+ // Listen for unlifted actions
+ var actions$ = applyOperators(changes$, [
+ [rxjs_operator_filter.filter, function (change) { return change.type === ExtensionActionTypes.ACTION; }],
+ [rxjs_operator_map.map, function (change) { return _this.unwrapAction(change.payload); }]
+ ]);
+ var actionsUntilStop$ = rxjs_operator_takeUntil.takeUntil.call(actions$, stop$);
+ var liftedUntilStop$ = rxjs_operator_takeUntil.takeUntil.call(liftedActions$, stop$);
+ // Only take the action sources between the start/stop events
+ this.actions$ = rxjs_operator_switchMap.switchMap.call(start$, function () { return actionsUntilStop$; });
+ this.liftedActions$ = rxjs_operator_switchMap.switchMap.call(start$, function () { return liftedUntilStop$; });
+ };
+ DevtoolsExtension.prototype.unwrapAction = function (action) {
+ return typeof action === 'string' ? eval("(" + action + ")") : action;
+ };
+ DevtoolsExtension.decorators = [
+ { type: _angular_core.Injectable },
+ ];
+ /** @nocollapse */
+ DevtoolsExtension.ctorParameters = [
+ { type: undefined, decorators: [{ type: _angular_core.Inject, args: [REDUX_DEVTOOLS_EXTENSION,] },] },
+ ];
+ return DevtoolsExtension;
+ }());
+
+ var INIT_ACTION = { type: _ngrx_store.Dispatcher.INIT };
+ /**
+ * Computes the next entry in the log by applying an action.
+ */
+ function computeNextEntry(reducer, action, state, error) {
+ if (error) {
+ return {
+ state: state,
+ error: 'Interrupted by an error up the chain'
+ };
+ }
+ var nextState = state;
+ var nextError;
+ try {
+ nextState = reducer(state, action);
+ }
+ catch (err) {
+ nextError = err.toString();
+ console.error(err.stack || err);
+ }
+ return {
+ state: nextState,
+ error: nextError
+ };
+ }
+ /**
+ * Runs the reducer on invalidated actions to get a fresh computation log.
+ */
+ function recomputeStates(computedStates, minInvalidatedStateIndex, reducer, committedState, actionsById, stagedActionIds, skippedActionIds) {
+ // Optimization: exit early and return the same reference
+ // if we know nothing could have changed.
+ if (minInvalidatedStateIndex >= computedStates.length &&
+ computedStates.length === stagedActionIds.length) {
+ return computedStates;
+ }
+ var nextComputedStates = computedStates.slice(0, minInvalidatedStateIndex);
+ for (var i = minInvalidatedStateIndex; i < stagedActionIds.length; i++) {
+ var actionId = stagedActionIds[i];
+ var action = actionsById[actionId].action;
+ var previousEntry = nextComputedStates[i - 1];
+ var previousState = previousEntry ? previousEntry.state : committedState;
+ var previousError = previousEntry ? previousEntry.error : undefined;
+ var shouldSkip = skippedActionIds.indexOf(actionId) > -1;
+ var entry = shouldSkip ?
+ previousEntry :
+ computeNextEntry(reducer, action, previousState, previousError);
+ nextComputedStates.push(entry);
+ }
+ return nextComputedStates;
+ }
+ function liftInitialState(initialCommittedState, monitorReducer) {
+ return {
+ monitorState: monitorReducer(undefined, {}),
+ nextActionId: 1,
+ actionsById: { 0: liftAction(INIT_ACTION) },
+ stagedActionIds: [0],
+ skippedActionIds: [],
+ committedState: initialCommittedState,
+ currentStateIndex: 0,
+ computedStates: []
+ };
+ }
+ /**
+ * Creates a history state reducer from an app's reducer.
+ */
+ function liftReducerWith(initialCommittedState, initialLiftedState, monitorReducer, options) {
+ if (options === void 0) { options = {}; }
+ /**
+ * Manages how the history actions modify the history state.
+ */
+ return function (reducer) { return function (liftedState, liftedAction) {
+ var _a = liftedState || initialLiftedState, monitorState = _a.monitorState, actionsById = _a.actionsById, nextActionId = _a.nextActionId, stagedActionIds = _a.stagedActionIds, skippedActionIds = _a.skippedActionIds, committedState = _a.committedState, currentStateIndex = _a.currentStateIndex, computedStates = _a.computedStates;
+ if (!liftedState) {
+ // Prevent mutating initialLiftedState
+ actionsById = Object.create(actionsById);
+ }
+ function commitExcessActions(n) {
+ // Auto-commits n-number of excess actions.
+ var excess = n;
+ var idsToDelete = stagedActionIds.slice(1, excess + 1);
+ for (var i = 0; i < idsToDelete.length; i++) {
+ if (computedStates[i + 1].error) {
+ // Stop if error is found. Commit actions up to error.
+ excess = i;
+ idsToDelete = stagedActionIds.slice(1, excess + 1);
+ break;
+ }
+ else {
+ delete actionsById[idsToDelete[i]];
+ }
+ }
+ skippedActionIds = skippedActionIds.filter(function (id) { return idsToDelete.indexOf(id) === -1; });
+ stagedActionIds = [0].concat(stagedActionIds.slice(excess + 1));
+ committedState = computedStates[excess].state;
+ computedStates = computedStates.slice(excess);
+ currentStateIndex = currentStateIndex > excess
+ ? currentStateIndex - excess
+ : 0;
+ }
+ // By default, agressively recompute every state whatever happens.
+ // This has O(n) performance, so we'll override this to a sensible
+ // value whenever we feel like we don't have to recompute the states.
+ var minInvalidatedStateIndex = 0;
+ switch (liftedAction.type) {
+ case ActionTypes.RESET: {
+ // Get back to the state the store was created with.
+ actionsById = { 0: liftAction(INIT_ACTION) };
+ nextActionId = 1;
+ stagedActionIds = [0];
+ skippedActionIds = [];
+ committedState = initialCommittedState;
+ currentStateIndex = 0;
+ computedStates = [];
+ break;
+ }
+ case ActionTypes.COMMIT: {
+ // Consider the last committed state the new starting point.
+ // Squash any staged actions into a single committed state.
+ actionsById = { 0: liftAction(INIT_ACTION) };
+ nextActionId = 1;
+ stagedActionIds = [0];
+ skippedActionIds = [];
+ committedState = computedStates[currentStateIndex].state;
+ currentStateIndex = 0;
+ computedStates = [];
+ break;
+ }
+ case ActionTypes.ROLLBACK: {
+ // Forget about any staged actions.
+ // Start again from the last committed state.
+ actionsById = { 0: liftAction(INIT_ACTION) };
+ nextActionId = 1;
+ stagedActionIds = [0];
+ skippedActionIds = [];
+ currentStateIndex = 0;
+ computedStates = [];
+ break;
+ }
+ case ActionTypes.TOGGLE_ACTION: {
+ // Toggle whether an action with given ID is skipped.
+ // Being skipped means it is a no-op during the computation.
+ var actionId_1 = liftedAction.id;
+ var index = skippedActionIds.indexOf(actionId_1);
+ if (index === -1) {
+ skippedActionIds = [actionId_1].concat(skippedActionIds);
+ }
+ else {
+ skippedActionIds = skippedActionIds.filter(function (id) { return id !== actionId_1; });
+ }
+ // Optimization: we know history before this action hasn't changed
+ minInvalidatedStateIndex = stagedActionIds.indexOf(actionId_1);
+ break;
+ }
+ case ActionTypes.SET_ACTIONS_ACTIVE: {
+ // Toggle whether an action with given ID is skipped.
+ // Being skipped means it is a no-op during the computation.
+ var start = liftedAction.start, end = liftedAction.end, active = liftedAction.active;
+ var actionIds = [];
+ for (var i = start; i < end; i++)
+ actionIds.push(i);
+ if (active) {
+ skippedActionIds = difference(skippedActionIds, actionIds);
+ }
+ else {
+ skippedActionIds = skippedActionIds.concat(actionIds);
+ }
+ // Optimization: we know history before this action hasn't changed
+ minInvalidatedStateIndex = stagedActionIds.indexOf(start);
+ break;
+ }
+ case ActionTypes.JUMP_TO_STATE: {
+ // Without recomputing anything, move the pointer that tell us
+ // which state is considered the current one. Useful for sliders.
+ currentStateIndex = liftedAction.index;
+ // Optimization: we know the history has not changed.
+ minInvalidatedStateIndex = Infinity;
+ break;
+ }
+ case ActionTypes.SWEEP: {
+ // Forget any actions that are currently being skipped.
+ stagedActionIds = difference(stagedActionIds, skippedActionIds);
+ skippedActionIds = [];
+ currentStateIndex = Math.min(currentStateIndex, stagedActionIds.length - 1);
+ break;
+ }
+ case ActionTypes.PERFORM_ACTION: {
+ // Auto-commit as new actions come in.
+ if (options.maxAge && stagedActionIds.length === options.maxAge) {
+ commitExcessActions(1);
+ }
+ if (currentStateIndex === stagedActionIds.length - 1) {
+ currentStateIndex++;
+ }
+ var actionId = nextActionId++;
+ // Mutation! This is the hottest path, and we optimize on purpose.
+ // It is safe because we set a new key in a cache dictionary.
+ actionsById[actionId] = liftedAction;
+ stagedActionIds = stagedActionIds.concat([actionId]);
+ // Optimization: we know that only the new action needs computing.
+ minInvalidatedStateIndex = stagedActionIds.length - 1;
+ break;
+ }
+ case ActionTypes.IMPORT_STATE: {
+ // Completely replace everything.
+ (_b = liftedAction.nextLiftedState, monitorState = _b.monitorState, actionsById = _b.actionsById, nextActionId = _b.nextActionId, stagedActionIds = _b.stagedActionIds, skippedActionIds = _b.skippedActionIds, committedState = _b.committedState, currentStateIndex = _b.currentStateIndex, computedStates = _b.computedStates, _b);
+ break;
+ }
+ case _ngrx_store.Reducer.REPLACE:
+ case _ngrx_store.Dispatcher.INIT: {
+ // Always recompute states on hot reload and init.
+ minInvalidatedStateIndex = 0;
+ if (options.maxAge && stagedActionIds.length > options.maxAge) {
+ // States must be recomputed before committing excess.
+ computedStates = recomputeStates(computedStates, minInvalidatedStateIndex, reducer, committedState, actionsById, stagedActionIds, skippedActionIds);
+ commitExcessActions(stagedActionIds.length - options.maxAge);
+ // Avoid double computation.
+ minInvalidatedStateIndex = Infinity;
+ }
+ break;
+ }
+ default: {
+ // If the action is not recognized, it's a monitor action.
+ // Optimization: a monitor action can't change history.
+ minInvalidatedStateIndex = Infinity;
+ break;
+ }
+ }
+ computedStates = recomputeStates(computedStates, minInvalidatedStateIndex, reducer, committedState, actionsById, stagedActionIds, skippedActionIds);
+ monitorState = monitorReducer(monitorState, liftedAction);
+ return {
+ monitorState: monitorState,
+ actionsById: actionsById,
+ nextActionId: nextActionId,
+ stagedActionIds: stagedActionIds,
+ skippedActionIds: skippedActionIds,
+ committedState: committedState,
+ currentStateIndex: currentStateIndex,
+ computedStates: computedStates
+ };
+ var _b;
+ }; };
+ }
+
+ var STORE_DEVTOOLS_CONFIG = new _angular_core.OpaqueToken('@ngrx/devtools Options');
+ var INITIAL_OPTIONS = new _angular_core.OpaqueToken('@ngrx/devtools Initial Config');
+
+ var __extends = (undefined && undefined.__extends) || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ var DevtoolsDispatcher = (function (_super) {
+ __extends(DevtoolsDispatcher, _super);
+ function DevtoolsDispatcher() {
+ _super.apply(this, arguments);
+ }
+ DevtoolsDispatcher.decorators = [
+ { type: _angular_core.Injectable },
+ ];
+ /** @nocollapse */
+ DevtoolsDispatcher.ctorParameters = [];
+ return DevtoolsDispatcher;
+ }(_ngrx_store.Dispatcher));
+ var StoreDevtools = (function () {
+ function StoreDevtools(dispatcher, actions$, reducers$, extension, initialState, config) {
+ var liftedInitialState = liftInitialState(initialState, config.monitor);
+ var liftReducer = liftReducerWith(initialState, liftedInitialState, config.monitor, {
+ maxAge: config.maxAge
+ });
+ var liftedAction$ = applyOperators(actions$, [
+ [rxjs_operator_skip.skip, 1],
+ [rxjs_operator_merge.merge, extension.actions$],
+ [rxjs_operator_map.map, liftAction],
+ [rxjs_operator_merge.merge, dispatcher, extension.liftedActions$],
+ [rxjs_operator_observeOn.observeOn, rxjs_scheduler_queue.queue]
+ ]);
+ var liftedReducer$ = rxjs_operator_map.map.call(reducers$, liftReducer);
+ var liftedStateSubject = new rxjs_ReplaySubject.ReplaySubject(1);
+ var liftedStateSubscription = applyOperators(liftedAction$, [
+ [rxjs_operator_withLatestFrom.withLatestFrom, liftedReducer$],
+ [rxjs_operator_scan.scan, function (liftedState, _a) {
+ var action = _a[0], reducer = _a[1];
+ var nextState = reducer(liftedState, action);
+ extension.notify(action, nextState);
+ return nextState;
+ }, liftedInitialState]
+ ]).subscribe(liftedStateSubject);
+ var liftedState$ = liftedStateSubject.asObservable();
+ var state$ = rxjs_operator_map.map.call(liftedState$, unliftState);
+ this.stateSubscription = liftedStateSubscription;
+ this.dispatcher = dispatcher;
+ this.liftedState = liftedState$;
+ this.state = state$;
+ }
+ StoreDevtools.prototype.dispatch = function (action) {
+ this.dispatcher.dispatch(action);
+ };
+ StoreDevtools.prototype.next = function (action) {
+ this.dispatcher.dispatch(action);
+ };
+ StoreDevtools.prototype.error = function (error) { };
+ StoreDevtools.prototype.complete = function () { };
+ StoreDevtools.prototype.performAction = function (action) {
+ this.dispatch(StoreDevtoolActions.performAction(action));
+ };
+ StoreDevtools.prototype.reset = function () {
+ this.dispatch(StoreDevtoolActions.reset());
+ };
+ StoreDevtools.prototype.rollback = function () {
+ this.dispatch(StoreDevtoolActions.rollback());
+ };
+ StoreDevtools.prototype.commit = function () {
+ this.dispatch(StoreDevtoolActions.commit());
+ };
+ StoreDevtools.prototype.sweep = function () {
+ this.dispatch(StoreDevtoolActions.sweep());
+ };
+ StoreDevtools.prototype.toggleAction = function (id) {
+ this.dispatch(StoreDevtoolActions.toggleAction(id));
+ };
+ StoreDevtools.prototype.jumpToState = function (index) {
+ this.dispatch(StoreDevtoolActions.jumpToState(index));
+ };
+ StoreDevtools.prototype.importState = function (nextLiftedState) {
+ this.dispatch(StoreDevtoolActions.importState(nextLiftedState));
+ };
+ StoreDevtools.decorators = [
+ { type: _angular_core.Injectable },
+ ];
+ /** @nocollapse */
+ StoreDevtools.ctorParameters = [
+ { type: DevtoolsDispatcher, },
+ { type: _ngrx_store.Dispatcher, },
+ { type: _ngrx_store.Reducer, },
+ { type: DevtoolsExtension, },
+ { type: undefined, decorators: [{ type: _angular_core.Inject, args: [_ngrx_store.INITIAL_STATE,] },] },
+ { type: undefined, decorators: [{ type: _angular_core.Inject, args: [STORE_DEVTOOLS_CONFIG,] },] },
+ ];
+ return StoreDevtools;
+ }());
+
+ function _createReduxDevtoolsExtension() {
+ var legacyExtensionKey = 'devToolsExtension';
+ var extensionKey = '__REDUX_DEVTOOLS_EXTENSION__';
+ if (typeof window === 'object' && typeof window[legacyExtensionKey] !== 'undefined') {
+ return window[legacyExtensionKey];
+ }
+ else if (typeof window === 'object' && typeof window[extensionKey] !== 'undefined') {
+ return window[extensionKey];
+ }
+ else {
+ return null;
+ }
+ }
+ function _createState(devtools) {
+ return devtools.state;
+ }
+ function _createReducer(dispatcher, reducer) {
+ return new _ngrx_store.Reducer(dispatcher, reducer);
+ }
+ function _createStateIfExtension(extension, injector) {
+ if (!!extension) {
+ var devtools = injector.get(StoreDevtools);
+ return _createState(devtools);
+ }
+ else {
+ var initialState = injector.get(_ngrx_store.INITIAL_STATE);
+ var dispatcher = injector.get(_ngrx_store.Dispatcher);
+ var reducer = injector.get(_ngrx_store.Reducer);
+ return new _ngrx_store.State(initialState, dispatcher, reducer);
+ }
+ }
+ function _createReducerIfExtension(extension, injector) {
+ if (!!extension) {
+ var devtoolsDispatcher = injector.get(DevtoolsDispatcher);
+ var reducer = injector.get(_ngrx_store.INITIAL_REDUCER);
+ return _createReducer(devtoolsDispatcher, reducer);
+ }
+ else {
+ var dispatcher = injector.get(_ngrx_store.Dispatcher);
+ var reducer = injector.get(_ngrx_store.INITIAL_REDUCER);
+ return new _ngrx_store.Reducer(dispatcher, reducer);
+ }
+ }
+ function noMonitor() {
+ return null;
+ }
+ function _createOptions(_options) {
+ var DEFAULT_OPTIONS = { monitor: noMonitor };
+ var options = typeof _options === 'function' ? _options() : _options;
+ options = Object.assign({}, DEFAULT_OPTIONS, options);
+ if (options.maxAge && options.maxAge < 2) {
+ throw new Error("Devtools 'maxAge' cannot be less than 2, got " + options.maxAge);
+ }
+ return options;
+ }
+ var StoreDevtoolsModule = (function () {
+ function StoreDevtoolsModule() {
+ }
+ StoreDevtoolsModule.instrumentStore = function (_options) {
+ if (_options === void 0) { _options = {}; }
+ return {
+ ngModule: StoreDevtoolsModule,
+ providers: [
+ {
+ provide: _ngrx_store.State,
+ deps: [StoreDevtools],
+ useFactory: _createState
+ },
+ {
+ provide: INITIAL_OPTIONS,
+ useValue: _options
+ },
+ {
+ provide: _ngrx_store.Reducer,
+ deps: [DevtoolsDispatcher, _ngrx_store.INITIAL_REDUCER],
+ useFactory: _createReducer
+ },
+ {
+ provide: STORE_DEVTOOLS_CONFIG,
+ deps: [INITIAL_OPTIONS],
+ useFactory: _createOptions
+ }
+ ]
+ };
+ };
+ StoreDevtoolsModule.instrumentOnlyWithExtension = function (_options) {
+ if (_options === void 0) { _options = {}; }
+ return {
+ ngModule: StoreDevtoolsModule,
+ providers: [
+ {
+ provide: _ngrx_store.State,
+ deps: [REDUX_DEVTOOLS_EXTENSION, _angular_core.Injector],
+ useFactory: _createStateIfExtension
+ },
+ {
+ provide: _ngrx_store.Reducer,
+ deps: [REDUX_DEVTOOLS_EXTENSION, _angular_core.Injector],
+ useFactory: _createReducerIfExtension
+ },
+ {
+ provide: INITIAL_OPTIONS,
+ useValue: _options
+ },
+ {
+ provide: STORE_DEVTOOLS_CONFIG,
+ deps: [INITIAL_OPTIONS],
+ useFactory: _createOptions
+ }
+ ]
+ };
+ };
+ StoreDevtoolsModule.decorators = [
+ { type: _angular_core.NgModule, args: [{
+ imports: [
+ _ngrx_store.StoreModule
+ ],
+ providers: [
+ DevtoolsExtension,
+ DevtoolsDispatcher,
+ StoreDevtools,
+ {
+ provide: REDUX_DEVTOOLS_EXTENSION,
+ useFactory: _createReduxDevtoolsExtension
+ }
+ ]
+ },] },
+ ];
+ /** @nocollapse */
+ StoreDevtoolsModule.ctorParameters = [];
+ return StoreDevtoolsModule;
+ }());
+
+ exports.StoreDevtoolsModule = StoreDevtoolsModule;
+ exports.StoreDevtools = StoreDevtools;
+
+ Object.defineProperty(exports, '__esModule', { value: true });
+
+ })));
+
+/***/ },
+/* 63 */,
+/* 64 */,
+/* 65 */,
+/* 66 */,
+/* 67 */,
+/* 68 */,
+/* 69 */,
+/* 70 */,
+/* 71 */
+/***/ function(module, exports, __webpack_require__) {
+
+ (function (global, factory) {
+ true ? factory(exports, __webpack_require__(4), __webpack_require__(23), __webpack_require__(61), __webpack_require__(48), __webpack_require__(72), __webpack_require__(62), __webpack_require__(30), __webpack_require__(44), __webpack_require__(73)) :
+ typeof define === 'function' && define.amd ? define(['exports', '@angular/core', '@angular/common', 'rxjs/operator/filter', 'rxjs/operator/map', '@ngrx/core/operator/select', '@ngrx/store-devtools', 'rxjs/observable/merge', '@ngrx/store', '@ngrx/core/compose'], factory) :
+ (factory((global.ngrx = global.ngrx || {}, global.ngrx.storeLogMonitor = global.ngrx.storeLogMonitor || {}),global.ng.core,global.ng.common,global.Rx.Observable.prototype,global.Rx.Observable.prototype,global.ngrx.core,global.ngrx.storeDevtools,global.Rx.Observable,global.ngrx.store,global.ngrx.core));
+ }(this, (function (exports,_angular_core,_angular_common,rxjs_operator_filter,rxjs_operator_map,_ngrx_core_operator_select,_ngrx_storeDevtools,rxjs_observable_merge,_ngrx_store,_ngrx_core_compose) { 'use strict';
+
+ // Most of these are according to this table: http://www.ssicom.org/js/x171166.htm
+ // However where nodejs readline diverges, they are adjusted to conform to it
+ var KEYCODES = {
+ nomod: {
+ escape: '\u001b',
+ space: ' ' // actually '\u0020'
+ },
+ ctrl: {
+ ' ': '\u0000',
+ 'a': '\u0001',
+ 'b': '\u0002',
+ 'c': '\u0003',
+ 'd': '\u0004',
+ 'e': '\u0005',
+ 'f': '\u0006',
+ 'g': '\u0007',
+ 'h': '\u0008',
+ 'i': '\u0009',
+ 'j': '\u000a',
+ 'k': '\u000b',
+ 'm': '\u000c',
+ 'n': '\u000d',
+ 'l': '\u000e',
+ 'o': '\u000f',
+ 'p': '\u0010',
+ 'q': '\u0011',
+ 'r': '\u0012',
+ 's': '\u0013',
+ 't': '\u0014',
+ 'u': '\u0015',
+ 'v': '\u0016',
+ 'w': '\u0017',
+ 'x': '\u0018',
+ 'y': '\u0019',
+ 'z': '\u001a',
+ '[': '\u001b',
+ '\\': '\u001c',
+ ']': '\u001d',
+ '^': '\u001e',
+ '_': '\u001f',
+ 'space': '\u0000'
+ }
+ };
+
+ var CommanderComponent = (function () {
+ function CommanderComponent() {
+ var _this = this;
+ this.keydown$ = new _angular_core.EventEmitter();
+ this._ignoreTags = ['INPUT', 'SELECT', 'TEXTAREA'];
+ this.keydown$ = new _angular_core.EventEmitter();
+ var filtered$ = rxjs_operator_filter.filter.call(this.keydown$, function (e) {
+ if (_this._ignoreTags.indexOf(e.target.tagName) !== -1) {
+ return false;
+ }
+ if (e.target.isContentEditable) {
+ return false;
+ }
+ var command = _this.parseCommand(_this.shortcut);
+ if (!command) {
+ return false;
+ }
+ var charCode = e.keyCode || e.which;
+ var char = String.fromCharCode(charCode);
+ return command.name.toUpperCase() === char.toUpperCase() &&
+ command.alt === e.altKey &&
+ command.ctrl === e.ctrlKey &&
+ command.meta === e.metaKey &&
+ command.shift === e.shiftKey;
+ });
+ this.command = rxjs_operator_map.map.call(filtered$, function (e) {
+ e.preventDefault();
+ return { command: _this.shortcut };
+ });
+ }
+ CommanderComponent.prototype.parseCommand = function (s) {
+ var keyString = s.trim().toLowerCase();
+ if (!/^(ctrl-|shift-|alt-|meta-){0,4}\w+$/.test(keyString)) {
+ throw new Error('The string to parse needs to be of the format "c", "ctrl-c", "shift-ctrl-c".');
+ }
+ var parts = keyString.split('-');
+ var key = {
+ ctrl: false,
+ meta: false,
+ shift: false,
+ alt: false
+ };
+ var c;
+ key.name = parts.pop();
+ while ((c = parts.pop())) {
+ key[c] = true;
+ }
+ if (key.ctrl) {
+ key.sequence = KEYCODES.ctrl[key.name] || key.name;
+ }
+ else {
+ key.sequence = KEYCODES.nomod[key.name] || key.name;
+ }
+ if (key.shift && key.sequence && key.sequence.length === 1) {
+ key.sequence = key.sequence.toUpperCase();
+ }
+ return key;
+ };
+ CommanderComponent.decorators = [
+ { type: _angular_core.Component, args: [{
+ selector: 'ngrx-commander',
+ template: '',
+ styles: [':host{ display: none }'],
+ host: {
+ '(document:keydown)': 'keydown$.emit($event)'
+ }
+ },] },
+ ];
+ /** @nocollapse */
+ CommanderComponent.ctorParameters = [];
+ CommanderComponent.propDecorators = {
+ 'shortcut': [{ type: _angular_core.Input },],
+ 'command': [{ type: _angular_core.Output },],
+ };
+ return CommanderComponent;
+ }());
+
+ var DockComponent = (function () {
+ function DockComponent() {
+ this.position = 'right';
+ this.size = 0.3;
+ this.visible = true;
+ }
+ Object.defineProperty(DockComponent.prototype, "absoluteSize", {
+ get: function () {
+ return 100 * this.size + "%";
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(DockComponent.prototype, "restSize", {
+ get: function () {
+ return (100 - (100 * this.size)) + "%";
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(DockComponent.prototype, "leftPosition", {
+ get: function () {
+ return this.calculatePosition('left', 'right');
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(DockComponent.prototype, "rightPosition", {
+ get: function () {
+ return this.calculatePosition('right', 'left');
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(DockComponent.prototype, "topPosition", {
+ get: function () {
+ return this.calculatePosition('top', 'bottom');
+ },
+ enumerable: true,
+ configurable: true
+ });
+ Object.defineProperty(DockComponent.prototype, "bottomPosition", {
+ get: function () {
+ return this.calculatePosition('bottom', 'top');
+ },
+ enumerable: true,
+ configurable: true
+ });
+ DockComponent.prototype.calculatePosition = function (primary, secondary) {
+ if (this.visible) {
+ switch (this.position) {
+ case secondary:
+ return this.restSize;
+ default:
+ return '0%';
+ }
+ }
+ else {
+ switch (this.position) {
+ case primary:
+ return "-" + this.absoluteSize;
+ case secondary:
+ return '100%';
+ default:
+ return '0%';
+ }
+ }
+ };
+ DockComponent.decorators = [
+ { type: _angular_core.Component, args: [{
+ selector: 'ngrx-dock',
+ template: "\n
\n ",
+ styles: ["\n :host {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n transition: all 0.3s;\n z-index: 9999;\n }\n\n .dock {\n position: absolute;\n z-index: 1;\n box-shadow: 0 0 4px rgba(0, 0, 0, 0.3);\n background-color: white;\n left: 0;\n top: 0;\n width: 100%;\n height: 100%;\n }\n\n .dock-content {\n width: 100%;\n height: 100%;\n overflow: auto;\n }\n "]
+ },] },
+ ];
+ /** @nocollapse */
+ DockComponent.ctorParameters = [];
+ DockComponent.propDecorators = {
+ 'position': [{ type: _angular_core.Input },],
+ 'size': [{ type: _angular_core.Input },],
+ 'visible': [{ type: _angular_core.Input },],
+ 'leftPosition': [{ type: _angular_core.HostBinding, args: ['style.left',] },],
+ 'rightPosition': [{ type: _angular_core.HostBinding, args: ['style.right',] },],
+ 'topPosition': [{ type: _angular_core.HostBinding, args: ['style.top',] },],
+ 'bottomPosition': [{ type: _angular_core.HostBinding, args: ['style.bottom',] },],
+ };
+ return DockComponent;
+ }());
+
+ var DockActions = (function () {
+ function DockActions() {
+ }
+ DockActions.prototype.toggleVisibility = function () {
+ return { type: DockActions.TOGGLE_VISIBILITY };
+ };
+ DockActions.prototype.changePosition = function () {
+ return { type: DockActions.CHANGE_POSITION };
+ };
+ DockActions.prototype.changeSize = function (size) {
+ return { type: DockActions.CHANGE_SIZE, payload: size };
+ };
+ DockActions.prototype.changeMonitor = function () {
+ return { type: DockActions.CHANGE_MONITOR };
+ };
+ DockActions.TOGGLE_VISIBILITY = '@@redux-devtools-log-monitor/TOGGLE_VISIBILITY';
+ DockActions.CHANGE_POSITION = '@@redux-devtools-log-monitor/CHANGE_POSITION';
+ DockActions.CHANGE_SIZE = '@@redux-devtools-log-monitor/CHANGE_SIZE';
+ DockActions.CHANGE_MONITOR = '@@redux-devtools-log-monitor/CHANGE_MONITOR';
+ DockActions.decorators = [
+ { type: _angular_core.Injectable },
+ ];
+ /** @nocollapse */
+ DockActions.ctorParameters = [];
+ return DockActions;
+ }());
+
+ var DockMonitorComponent = (function () {
+ function DockMonitorComponent(tools, actions) {
+ this.state$ = _ngrx_core_operator_select.select.call(tools.liftedState, function (s) { return s.monitorState; });
+ this.visible$ = _ngrx_core_operator_select.select.call(this.state$, function (s) { return s.visible; });
+ this.position$ = _ngrx_core_operator_select.select.call(this.state$, function (s) { return s.position; });
+ this.size$ = _ngrx_core_operator_select.select.call(this.state$, function (s) { return s.size; });
+ this.toggle$ = new _angular_core.EventEmitter();
+ this.changePosition$ = new _angular_core.EventEmitter();
+ this.actionsSubscription = rxjs_observable_merge.merge(rxjs_operator_map.map.call(this.toggle$, function () { return actions.toggleVisibility(); }), rxjs_operator_map.map.call(this.changePosition$, function () { return actions.changePosition(); })).subscribe(tools);
+ }
+ DockMonitorComponent.prototype.ngOnDestroy = function () {
+ this.actionsSubscription.unsubscribe();
+ };
+ DockMonitorComponent.decorators = [
+ { type: _angular_core.Component, args: [{
+ selector: 'dock-monitor',
+ changeDetection: _angular_core.ChangeDetectionStrategy.OnPush,
+ template: "\n \n \n\n \n \n \n "
+ },] },
+ ];
+ /** @nocollapse */
+ DockMonitorComponent.ctorParameters = [
+ { type: _ngrx_storeDevtools.StoreDevtools, },
+ { type: DockActions, },
+ ];
+ DockMonitorComponent.propDecorators = {
+ 'toggleCommand': [{ type: _angular_core.Input },],
+ 'positionCommand': [{ type: _angular_core.Input },],
+ };
+ return DockMonitorComponent;
+ }());
+
+ var POSITIONS = ['left', 'top', 'right', 'bottom'];
+ function useDockMonitor(_options) {
+ if (_options === void 0) { _options = {}; }
+ var options = Object.assign({
+ position: 'right',
+ visible: true,
+ size: 0.3
+ }, _options);
+ function position(state, action) {
+ if (state === void 0) { state = options.position; }
+ return (action.type === DockActions.CHANGE_POSITION) ?
+ POSITIONS[(POSITIONS.indexOf(state) + 1) % POSITIONS.length] :
+ state;
+ }
+ function size(state, action) {
+ if (state === void 0) { state = options.size; }
+ return (action.type === DockActions.CHANGE_SIZE) ?
+ action.size :
+ state;
+ }
+ function visible(state, action) {
+ if (state === void 0) { state = options.visible; }
+ return (action.type === DockActions.TOGGLE_VISIBILITY) ?
+ !state :
+ state;
+ }
+ return _ngrx_store.combineReducers({
+ position: position,
+ visible: visible,
+ size: size
+ });
+ }
+
+ var DockMonitorModule = (function () {
+ function DockMonitorModule() {
+ }
+ DockMonitorModule.decorators = [
+ { type: _angular_core.NgModule, args: [{
+ imports: [
+ _angular_common.CommonModule
+ ],
+ declarations: [
+ CommanderComponent,
+ DockComponent,
+ DockMonitorComponent
+ ],
+ providers: [
+ DockActions
+ ],
+ exports: [
+ DockMonitorComponent
+ ]
+ },] },
+ ];
+ /** @nocollapse */
+ DockMonitorModule.ctorParameters = [];
+ return DockMonitorModule;
+ }());
+
+ var KNOWN = {
+ Array: 'array',
+ Object: 'object',
+ Null: 'null',
+ Undefined: 'undefined',
+ Boolean: 'boolean',
+ Number: 'number',
+ String: 'string',
+ Symbol: 'symbol',
+ Function: 'function',
+ Iterable: 'iterable'
+ };
+ function getTypeOf(object) {
+ var literalType = typeof object;
+ if (literalType === 'object') {
+ if (Array.isArray(object)) {
+ return KNOWN.Array;
+ }
+ if (object === null) {
+ return KNOWN.Null;
+ }
+ if (typeof object[Symbol.iterator] === 'function') {
+ return KNOWN.Iterable;
+ }
+ }
+ return literalType;
+ }
+ var arrayLength = function (value) { return value.length; };
+ var lengthLabel = function (single, plural) { return function (length) { return (length + " " + (length === 1 ? single : plural)); }; };
+ var typeIndicator = function (typeIndicator) { return function (input) { return (typeIndicator + " " + input); }; };
+ var typeIdentity = function (type) { return function () { return type; }; };
+ var withQuotes = function (val) { return ("\"" + val + "\""); };
+ var toString = function (val) { return val.toString(); };
+ var iterableToArray = function (value) { return Array.from(value); };
+ var labelFactoriesForTypes = (_a = {},
+ _a[KNOWN.Array] = _ngrx_core_compose.compose(typeIndicator('[]'), lengthLabel('item', 'items'), arrayLength),
+ _a[KNOWN.Object] = _ngrx_core_compose.compose(typeIndicator('{}'), lengthLabel('key', 'keys'), arrayLength, Object.getOwnPropertyNames),
+ _a[KNOWN.Null] = typeIdentity(KNOWN.Null),
+ _a[KNOWN.Undefined] = typeIdentity(KNOWN.Undefined),
+ _a[KNOWN.Boolean] = function (val) { return val ? 'true' : 'false'; },
+ _a[KNOWN.Number] = toString,
+ _a[KNOWN.String] = withQuotes,
+ _a[KNOWN.Symbol] = _ngrx_core_compose.compose(withQuotes, toString),
+ _a[KNOWN.Function] = typeIdentity(KNOWN.Function),
+ _a[KNOWN.Iterable] = _ngrx_core_compose.compose(typeIndicator('()'), lengthLabel('entry', 'entries'), arrayLength, iterableToArray),
+ _a
+ );
+ var getLabelFor = function (object) { return labelFactoriesForTypes[getTypeOf(object)](object); };
+ function getChildrenFor(object) {
+ var literalType = getTypeOf(object);
+ if (literalType === KNOWN.Object) {
+ return Object.getOwnPropertyNames(object).map(function (name) {
+ return { key: name, value: object[name] };
+ });
+ }
+ else if (literalType === KNOWN.Array) {
+ return object.map(function (value, index) {
+ return { key: index, value: value };
+ });
+ }
+ else if (literalType === KNOWN.Iterable) {
+ return Array.from(object).map(function (value, index) {
+ return { key: index, value: value };
+ });
+ }
+ throw new TypeError("Tried to get children for non-enumerable type \"" + literalType + "\"");
+ }
+ var _a;
+
+ var JsonNodeComponent = (function () {
+ function JsonNodeComponent() {
+ this.expanded = false;
+ }
+ Object.defineProperty(JsonNodeComponent.prototype, "value", {
+ set: function (value) {
+ this.label = getLabelFor(value);
+ this.type = getTypeOf(value);
+ if (this.type === KNOWN.Array || this.type === KNOWN.Object || this.type === KNOWN.Iterable) {
+ this.children = getChildrenFor(value);
+ }
+ else {
+ this.children = null;
+ }
+ },
+ enumerable: true,
+ configurable: true
+ });
+ JsonNodeComponent.prototype.toggle = function () {
+ if (this.children) {
+ this.expanded = !this.expanded;
+ }
+ };
+ JsonNodeComponent.decorators = [
+ { type: _angular_core.Component, args: [{
+ selector: 'ngrx-json-node',
+ styles: ["\n :host {\n display: block;\n padding: 2px 2px 2px 20px;\n position: relative;\n color: #70AFCD;\n font-family: 'monaco', 'Consolas', 'Lucida Console', monospace;\n }\n .expanded-indicator {\n position: absolute;\n top: 7px;\n left: 5px;\n font-size: 10px;\n transition: transform 200ms;\n }\n\n .expanded .expanded-indicator {\n transform: rotate(90deg);\n }\n\n .node-key::after {\n content: ': ';\n display: inline;\n }\n\n .expanded .node-label {\n color: #BABBBD !important;\n }\n\n .node-label {\n color: #9AC05C;\n }\n\n .node-label.array, .node-label.null, .node-label.iterable {\n color: #D182C0;\n }\n\n .node-label.number, .node-label.undefined, .node-label.boolean {\n color: #F86936;\n }\n "],
+ template: "\n \n \u25B6 \n {{ key }} \n {{ label }} \n
\n \n \n
\n "
+ },] },
+ ];
+ /** @nocollapse */
+ JsonNodeComponent.ctorParameters = [];
+ JsonNodeComponent.propDecorators = {
+ 'key': [{ type: _angular_core.Input },],
+ 'expanded': [{ type: _angular_core.Input },],
+ 'value': [{ type: _angular_core.Input },],
+ };
+ return JsonNodeComponent;
+ }());
+
+ var JsonTreeComponent = (function () {
+ function JsonTreeComponent() {
+ this.children = [];
+ this.expanded = true;
+ }
+ Object.defineProperty(JsonTreeComponent.prototype, "value", {
+ set: function (value) {
+ this.children = getChildrenFor(value);
+ },
+ enumerable: true,
+ configurable: true
+ });
+ JsonTreeComponent.decorators = [
+ { type: _angular_core.Component, args: [{
+ selector: 'ngrx-json-tree',
+ template: "\n \n "
+ },] },
+ ];
+ /** @nocollapse */
+ JsonTreeComponent.ctorParameters = [];
+ JsonTreeComponent.propDecorators = {
+ 'expanded': [{ type: _angular_core.Input },],
+ 'value': [{ type: _angular_core.Input },],
+ };
+ return JsonTreeComponent;
+ }());
+
+ var JsonTreeModule = (function () {
+ function JsonTreeModule() {
+ }
+ JsonTreeModule.decorators = [
+ { type: _angular_core.NgModule, args: [{
+ imports: [
+ _angular_common.CommonModule
+ ],
+ declarations: [
+ JsonNodeComponent,
+ JsonTreeComponent
+ ],
+ exports: [
+ JsonTreeComponent
+ ]
+ },] },
+ ];
+ /** @nocollapse */
+ JsonTreeModule.ctorParameters = [];
+ return JsonTreeModule;
+ }());
+
+ var LogMonitorComponent = (function () {
+ function LogMonitorComponent(devtools) {
+ this.devtools = devtools;
+ this.expandEntries = true;
+ this.canRevert$ = _ngrx_core_operator_select.select.call(devtools.liftedState, function (s) { return !(s.computedStates.length > 1); });
+ this.canSweep$ = _ngrx_core_operator_select.select.call(devtools.liftedState, function (s) { return !(s.skippedActionIds.length > 0); });
+ this.canCommit$ = _ngrx_core_operator_select.select.call(devtools.liftedState, function (s) { return !(s.computedStates.length > 1); });
+ this.items$ = rxjs_operator_map.map.call(devtools.liftedState, function (_a) {
+ var actionsById = _a.actionsById, skippedActionIds = _a.skippedActionIds, stagedActionIds = _a.stagedActionIds, computedStates = _a.computedStates;
+ var actions = [];
+ for (var i = 0; i < stagedActionIds.length; i++) {
+ var actionId = stagedActionIds[i];
+ var action = actionsById[actionId].action;
+ var _b = computedStates[i], state = _b.state, error = _b.error;
+ var previousState = void 0;
+ if (i > 0) {
+ previousState = computedStates[i - 1].state;
+ }
+ actions.push({
+ key: actionId,
+ collapsed: skippedActionIds.indexOf(actionId) > -1,
+ action: action,
+ actionId: actionId,
+ state: state,
+ previousState: previousState,
+ error: error
+ });
+ }
+ return actions;
+ });
+ }
+ LogMonitorComponent.prototype.handleToggle = function (id) {
+ this.devtools.toggleAction(id);
+ };
+ LogMonitorComponent.prototype.handleReset = function () {
+ this.devtools.reset();
+ };
+ LogMonitorComponent.prototype.handleRollback = function () {
+ this.devtools.rollback();
+ };
+ LogMonitorComponent.prototype.handleSweep = function () {
+ this.devtools.sweep();
+ };
+ LogMonitorComponent.prototype.handleCommit = function () {
+ this.devtools.commit();
+ };
+ LogMonitorComponent.decorators = [
+ { type: _angular_core.Component, args: [{
+ selector: 'log-monitor',
+ styles: ["\n :host {\n display: block;\n background-color: #2A2F3A;\n font-family: 'monaco', 'Consolas', 'Lucida Console', monospace;\n position: relative;\n overflow-y: hidden;\n width: 100%;\n height: 100%;\n min-width: 300px;\n direction: ltr;\n }\n\n .button-bar {\n text-align: center;\n border-bottom-width: 1px;\n border-bottom-style: solid;\n border-color: transparent;\n z-index: 1;\n display: flex;\n flex-direction: row;\n padding: 0 4px;\n }\n\n .elements {\n position: absolute;\n left: 0;\n right: 0;\n top: 38px;\n bottom: 0;\n overflow-x: hidden;\n overflow-y: auto;\n }\n "],
+ template: "\n \n \n Reset\n \n\n \n Revert\n \n\n \n Sweep\n \n\n \n Commit\n \n
\n \n \n \n
\n "
+ },] },
+ ];
+ /** @nocollapse */
+ LogMonitorComponent.ctorParameters = [
+ { type: _ngrx_storeDevtools.StoreDevtools, },
+ ];
+ LogMonitorComponent.propDecorators = {
+ 'expandEntries': [{ type: _angular_core.Input },],
+ };
+ return LogMonitorComponent;
+ }());
+
+ var LogMonitorButtonComponent = (function () {
+ function LogMonitorButtonComponent() {
+ this.action = new _angular_core.EventEmitter();
+ }
+ LogMonitorButtonComponent.prototype.handleAction = function ($event) {
+ if (!this.disabled) {
+ this.action.next({});
+ }
+ $event.stopPropagation();
+ return false;
+ };
+ LogMonitorButtonComponent.decorators = [
+ { type: _angular_core.Component, args: [{
+ selector: 'log-monitor-button',
+ template: "\n \n ",
+ styles: ["\n :host{\n flex-grow: 1;\n display: inline-block;\n font-family: 'monaco', 'Consolas', 'Lucida Console', monospace;\n cursor: pointer;\n font-weight: bold;\n border-radius: 3px;\n padding: 4px 8px;\n margin: 5px 3px 5px 3px;\n font-size: 0.8em;\n color: white;\n text-decoration: none;\n background-color: #4F5A65;\n }\n\n :host.disabled{\n opacity: 0.2;\n cursor: text;\n background-color: transparent;\n }\n "]
+ },] },
+ ];
+ /** @nocollapse */
+ LogMonitorButtonComponent.ctorParameters = [];
+ LogMonitorButtonComponent.propDecorators = {
+ 'disabled': [{ type: _angular_core.HostBinding, args: ['class.disabled',] }, { type: _angular_core.Input },],
+ 'action': [{ type: _angular_core.Output },],
+ 'handleAction': [{ type: _angular_core.HostListener, args: ['click', ['$event'],] },],
+ };
+ return LogMonitorButtonComponent;
+ }());
+
+ var LogMonitorEntryComponent = (function () {
+ function LogMonitorEntryComponent() {
+ this.expandEntries = false;
+ this.disabled = false;
+ this.toggle = new _angular_core.EventEmitter();
+ }
+ Object.defineProperty(LogMonitorEntryComponent.prototype, "item", {
+ get: function () {
+ return this._item;
+ },
+ set: function (value) {
+ this._item = value;
+ this.stateActionPair = {
+ state: value.state,
+ action: value.action
+ };
+ },
+ enumerable: true,
+ configurable: true
+ });
+ LogMonitorEntryComponent.prototype.handleToggle = function () {
+ if (!this.disabled) {
+ this.toggle.next({ id: this.item.actionId });
+ }
+ };
+ LogMonitorEntryComponent.prototype.logPayload = function () {
+ console.log(this.item.action);
+ };
+ LogMonitorEntryComponent.prototype.logState = function () {
+ console.log(this.item.state);
+ };
+ LogMonitorEntryComponent.decorators = [
+ { type: _angular_core.Component, args: [{
+ selector: 'log-monitor-entry',
+ template: "\n \n {{ item.action.type }}\n
\n \n \n
\n ",
+ styles: ["\n :host{\n color: #FFFFFF;\n background-color: #4F5A65;\n cursor: pointer;\n }\n .title-bar{\n padding: 8px 0 7px 16px;\n background-color: rgba(0,0,0,0.1);\n }\n .action-bar{\n padding: 20px;\n }\n .collapsed{\n text-decoration: line-through;\n font-style: italic;\n opacity: 0.5;\n }\n "]
+ },] },
+ ];
+ /** @nocollapse */
+ LogMonitorEntryComponent.ctorParameters = [];
+ LogMonitorEntryComponent.propDecorators = {
+ 'expandEntries': [{ type: _angular_core.Input },],
+ 'disabled': [{ type: _angular_core.Input },],
+ 'item': [{ type: _angular_core.Input },],
+ 'toggle': [{ type: _angular_core.Output },],
+ };
+ return LogMonitorEntryComponent;
+ }());
+
+ var LogMonitorModule = (function () {
+ function LogMonitorModule() {
+ }
+ LogMonitorModule.decorators = [
+ { type: _angular_core.NgModule, args: [{
+ imports: [
+ _angular_common.CommonModule,
+ JsonTreeModule
+ ],
+ declarations: [
+ LogMonitorComponent,
+ LogMonitorButtonComponent,
+ LogMonitorEntryComponent
+ ],
+ exports: [
+ LogMonitorComponent
+ ]
+ },] },
+ ];
+ /** @nocollapse */
+ LogMonitorModule.ctorParameters = [];
+ return LogMonitorModule;
+ }());
+
+ var StoreLogMonitorComponent = (function () {
+ function StoreLogMonitorComponent() {
+ this.toggleCommand = 'ctrl-h';
+ this.positionCommand = 'ctrl-m';
+ this.expandEntries = false;
+ }
+ StoreLogMonitorComponent.decorators = [
+ { type: _angular_core.Component, args: [{
+ selector: 'ngrx-store-log-monitor',
+ template: "\n \n \n \n "
+ },] },
+ ];
+ /** @nocollapse */
+ StoreLogMonitorComponent.ctorParameters = [];
+ StoreLogMonitorComponent.propDecorators = {
+ 'toggleCommand': [{ type: _angular_core.Input },],
+ 'positionCommand': [{ type: _angular_core.Input },],
+ 'expandEntries': [{ type: _angular_core.Input },],
+ };
+ return StoreLogMonitorComponent;
+ }());
+
+ var StoreLogMonitorModule = (function () {
+ function StoreLogMonitorModule() {
+ }
+ StoreLogMonitorModule.decorators = [
+ { type: _angular_core.NgModule, args: [{
+ imports: [
+ _angular_common.CommonModule,
+ DockMonitorModule,
+ LogMonitorModule
+ ],
+ declarations: [
+ StoreLogMonitorComponent
+ ],
+ exports: [
+ StoreLogMonitorComponent
+ ]
+ },] },
+ ];
+ /** @nocollapse */
+ StoreLogMonitorModule.ctorParameters = [];
+ return StoreLogMonitorModule;
+ }());
+
+ exports.StoreLogMonitorModule = StoreLogMonitorModule;
+ exports.useLogMonitor = useDockMonitor;
+
+ Object.defineProperty(exports, '__esModule', { value: true });
+
+ })));
+
+/***/ },
+/* 72 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var pluck_1 = __webpack_require__(47);
+ var map_1 = __webpack_require__(48);
+ var distinctUntilChanged_1 = __webpack_require__(49);
+ function select(pathOrMapFn) {
+ var paths = [];
+ for (var _i = 1; _i < arguments.length; _i++) {
+ paths[_i - 1] = arguments[_i];
+ }
+ var mapped$;
+ if (typeof pathOrMapFn === 'string') {
+ mapped$ = pluck_1.pluck.call.apply(pluck_1.pluck, [this, pathOrMapFn].concat(paths));
+ }
+ else if (typeof pathOrMapFn === 'function') {
+ mapped$ = map_1.map.call(this, pathOrMapFn);
+ }
+ else {
+ throw new TypeError(("Unexpected type " + typeof pathOrMapFn + " in select operator,")
+ + " expected 'string' or 'function'");
+ }
+ return distinctUntilChanged_1.distinctUntilChanged.call(mapped$);
+ }
+ exports.select = select;
+
+
+/***/ },
+/* 73 */
+/***/ function(module, exports) {
+
+ "use strict";
+ exports.compose = function () {
+ var functions = [];
+ for (var _i = 0; _i < arguments.length; _i++) {
+ functions[_i - 0] = arguments[_i];
+ }
+ return function (arg) {
+ if (functions.length === 0) {
+ return arg;
+ }
+ var last = functions[functions.length - 1];
+ var rest = functions.slice(0, -1);
+ return rest.reduceRight(function (composed, fn) { return fn(composed); }, last(arg));
+ };
+ };
+
+
+/***/ },
+/* 74 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ __export(__webpack_require__(75));
+
+
+/***/ },
+/* 75 */,
+/* 76 */,
+/* 77 */,
+/* 78 */,
+/* 79 */,
+/* 80 */,
+/* 81 */,
+/* 82 */,
+/* 83 */,
+/* 84 */,
+/* 85 */,
+/* 86 */,
+/* 87 */,
+/* 88 */,
+/* 89 */,
+/* 90 */,
+/* 91 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var core_1 = __webpack_require__(4);
+ var ng2_select2_component_1 = __webpack_require__(92);
+ var ng2_select2_component_2 = __webpack_require__(92);
+ exports.Select2Component = ng2_select2_component_2.Select2Component;
+ var Select2Module = (function () {
+ function Select2Module() {
+ }
+ return Select2Module;
+ }());
+ Select2Module = __decorate([
+ core_1.NgModule({
+ declarations: [ng2_select2_component_1.Select2Component],
+ exports: [ng2_select2_component_1.Select2Component]
+ })
+ ], Select2Module);
+ exports.Select2Module = Select2Module;
+ //# sourceMappingURL=ng2-select2.js.map
+
+/***/ },
+/* 92 */
+/***/ function(module, exports, __webpack_require__) {
+
+ /* WEBPACK VAR INJECTION */(function(jQuery) {"use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var Select2Component = (function () {
+ function Select2Component(renderer) {
+ this.renderer = renderer;
+ // enable / disable default style for select2
+ this.cssImport = true;
+ // enable / disable select2
+ this.disabled = false;
+ // emitter when value is changed
+ this.valueChanged = new core_1.EventEmitter();
+ this.element = undefined;
+ this.check = false;
+ this.style = ".select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle;min-width:100px}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir=rtl] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:#fff;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0!important;clip:rect(0 0 0 0)!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important}.select2-container--classic .select2-results>.select2-results__options,.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:700}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent;border-style:solid;border-width:5px 4px 0;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888;border-width:0 4px 5px}.select2-container--default .select2-selection--multiple{background-color:#fff;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__placeholder{color:#999;margin-top:5px;float:left}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:700;margin-top:5px;margin-right:10px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:700;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-search--inline,.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__placeholder{float:right}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:1px solid #000;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple,.select2-container--default.select2-container--open.select2-container--above .select2-selection--single{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple,.select2-container--default.select2-container--open.select2-container--below .select2-selection--single{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:0 0;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:#fff}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top,#fff 50%,#eee 100%);background-image:-o-linear-gradient(top,#fff 50%,#eee 100%);background-image:linear-gradient(to bottom,#fff 50%,#eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:700;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top,#eee 50%,#ccc 100%);background-image:-o-linear-gradient(top,#eee 50%,#ccc 100%);background-image:linear-gradient(to bottom,#eee 50%,#ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent;border-style:solid;border-width:5px 4px 0;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir=rtl] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:4px 0 0 4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:0 0;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888;border-width:0 4px 5px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top,#fff 0,#eee 50%);background-image:-o-linear-gradient(top,#fff 0,#eee 50%);background-image:linear-gradient(to bottom,#fff 0,#eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top,#eee 50%,#fff 100%);background-image:-o-linear-gradient(top,#eee 50%,#fff 100%);background-image:linear-gradient(to bottom,#eee 50%,#fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:#fff;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:700;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir=rtl] .select2-selection--multiple .select2-selection__choice{float:right;margin-left:5px;margin-right:auto}.select2-container--classic[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb}";
+ }
+ Select2Component.prototype.ngOnInit = function () {
+ if (this.cssImport) {
+ var head = document.getElementsByTagName('head')[0];
+ var link = head.children[head.children.length - 1];
+ if (!link.version) {
+ var newLink = this.renderer.createElement(head, 'style');
+ this.renderer.setElementProperty(newLink, 'type', 'text/css');
+ this.renderer.setElementProperty(newLink, 'version', 'select2');
+ this.renderer.setElementProperty(newLink, 'innerHTML', this.style);
+ }
+ }
+ };
+ Select2Component.prototype.ngOnChanges = function (changes) {
+ if (!this.element) {
+ return;
+ }
+ if (changes['data'] && JSON.stringify(changes['data'].previousValue) !== JSON.stringify(changes['data'].currentValue)) {
+ this.initPlugin();
+ var newValue = this.element.val();
+ this.valueChanged.emit({
+ value: newValue
+ });
+ }
+ if (changes['value'] && changes['value'].previousValue !== changes['value'].currentValue) {
+ var newValue = changes['value'].currentValue;
+ this.setElementValue(newValue);
+ this.valueChanged.emit({
+ value: newValue
+ });
+ }
+ if (changes['disabled'] && changes['disabled'].previousValue !== changes['disabled'].currentValue) {
+ this.renderer.setElementProperty(this.selector.nativeElement, 'disabled', this.disabled);
+ }
+ };
+ Select2Component.prototype.ngAfterViewInit = function () {
+ var that = this;
+ this.element = jQuery(this.selector.nativeElement);
+ this.initPlugin();
+ if (typeof this.value !== 'undefined') {
+ this.setElementValue(this.value);
+ }
+ this.element.on('select2:select select2:unselect', function () {
+ that.valueChanged.emit({
+ value: that.element.val()
+ });
+ });
+ };
+ Select2Component.prototype.ngOnDestroy = function () {
+ this.element.off("select2:select");
+ };
+ Select2Component.prototype.initPlugin = function () {
+ var _this = this;
+ if (!this.element.select2) {
+ if (!this.check) {
+ this.check = true;
+ console.log("Please add Select2 library (js file) to the project. You can download it from https://github.com/select2/select2/tree/master/dist/js.");
+ }
+ return;
+ }
+ // If select2 already initialized remove him and remove all tags inside
+ if (this.element.hasClass('select2-hidden-accessible') == true) {
+ this.element.select2('destroy');
+ this.renderer.setElementProperty(this.selector.nativeElement, 'innerHTML', '');
+ }
+ var options = {
+ data: this.data,
+ width: (this.width) ? this.width : 'resolve'
+ };
+ Object.assign(options, this.options);
+ if (options.matcher) {
+ jQuery.fn.select2.amd.require(['select2/compat/matcher'], function (oldMatcher) {
+ options.matcher = oldMatcher(options.matcher);
+ _this.element.select2(options);
+ if (typeof _this.value !== 'undefined') {
+ _this.setElementValue(_this.value);
+ }
+ });
+ }
+ else {
+ this.element.select2(options);
+ }
+ if (this.disabled) {
+ this.renderer.setElementProperty(this.selector.nativeElement, 'disabled', this.disabled);
+ }
+ };
+ Select2Component.prototype.setElementValue = function (newValue) {
+ if (Array.isArray(newValue)) {
+ for (var _i = 0, _a = this.selector.nativeElement.options; _i < _a.length; _i++) {
+ var option = _a[_i];
+ if (newValue.indexOf(option.value) > -1) {
+ this.renderer.setElementProperty(option, 'selected', 'true');
+ }
+ }
+ }
+ else {
+ this.renderer.setElementProperty(this.selector.nativeElement, 'value', newValue);
+ }
+ this.element.val(newValue);
+ this.element.trigger('change.select2');
+ };
+ return Select2Component;
+ }());
+ __decorate([
+ core_1.ViewChild('selector'),
+ __metadata("design:type", core_1.ElementRef)
+ ], Select2Component.prototype, "selector", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Array)
+ ], Select2Component.prototype, "data", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Object)
+ ], Select2Component.prototype, "value", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Boolean)
+ ], Select2Component.prototype, "cssImport", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", String)
+ ], Select2Component.prototype, "width", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Boolean)
+ ], Select2Component.prototype, "disabled", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Object)
+ ], Select2Component.prototype, "options", void 0);
+ __decorate([
+ core_1.Output(),
+ __metadata("design:type", Object)
+ ], Select2Component.prototype, "valueChanged", void 0);
+ Select2Component = __decorate([
+ core_1.Component({
+ selector: 'select2',
+ template: ' ',
+ encapsulation: core_1.ViewEncapsulation.None,
+ changeDetection: core_1.ChangeDetectionStrategy.OnPush
+ }),
+ __metadata("design:paramtypes", [core_1.Renderer])
+ ], Select2Component);
+ exports.Select2Component = Select2Component;
+ //# sourceMappingURL=ng2-select2.component.js.map
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(93)))
+
+/***/ },
+/* 93 */,
+/* 94 */,
+/* 95 */,
+/* 96 */,
+/* 97 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ __export(__webpack_require__(98));
+ __export(__webpack_require__(116));
+
+
+/***/ },
+/* 98 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var router_1 = __webpack_require__(99);
+ var AddOnComponent = (function () {
+ function AddOnComponent(route) {
+ this.route = route;
+ this.name$ = route
+ .params
+ .select('name');
+ }
+ return AddOnComponent;
+ }());
+ AddOnComponent = __decorate([
+ core_1.Component({
+ selector: 'add-on',
+ template: __webpack_require__(114),
+ styles: [__webpack_require__(115)],
+ host: {
+ 'class': 'container-fluid'
+ }
+ }),
+ __metadata("design:paramtypes", [router_1.ActivatedRoute])
+ ], AddOnComponent);
+ exports.AddOnComponent = AddOnComponent;
+
+
+/***/ },
+/* 99 */,
+/* 100 */,
+/* 101 */,
+/* 102 */,
+/* 103 */,
+/* 104 */,
+/* 105 */,
+/* 106 */,
+/* 107 */,
+/* 108 */,
+/* 109 */,
+/* 110 */,
+/* 111 */,
+/* 112 */,
+/* 113 */,
+/* 114 */
+/***/ function(module, exports) {
+
+ module.exports = "\r\n
\r\n \r\n {{ name$ | async }} \r\n \r\n\r\nTo be done...";
+
+/***/ },
+/* 115 */
+/***/ function(module, exports) {
+
+ module.exports = ":host {\n width: 100%;\n height: 100%;\n display: block; }\n"
+
+/***/ },
+/* 116 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var add_on_component_1 = __webpack_require__(98);
+ exports.addOnRoutes = [
+ {
+ path: 'add-on/:name',
+ component: add_on_component_1.AddOnComponent
+ }
+ ];
+
+
+/***/ },
+/* 117 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var keyboard_slider_component_1 = __webpack_require__(118);
+ exports.KeyboardSliderComponent = keyboard_slider_component_1.KeyboardSliderComponent;
+
+
+/***/ },
+/* 118 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var KeyboardSliderComponent = (function () {
+ function KeyboardSliderComponent() {
+ this.keyClick = new core_1.EventEmitter();
+ this.keyHover = new core_1.EventEmitter();
+ this.capture = new core_1.EventEmitter();
+ }
+ KeyboardSliderComponent.prototype.ngOnChanges = function (changes) {
+ if (changes['layers']) {
+ this.layerAnimationState = this.layers.map(function () { return 'leftOut'; });
+ this.layerAnimationState[this.currentLayer] = 'leftIn';
+ }
+ var layerChange = changes['currentLayer'];
+ if (layerChange) {
+ var prevValue = layerChange.isFirstChange() ? layerChange.currentValue : layerChange.previousValue;
+ this.onLayerChange(prevValue, layerChange.currentValue);
+ }
+ };
+ KeyboardSliderComponent.prototype.trackKeyboard = function (index) {
+ return index;
+ };
+ KeyboardSliderComponent.prototype.onLayerChange = function (oldIndex, index) {
+ if (index > oldIndex) {
+ this.layerAnimationState[oldIndex] = 'leftOut';
+ this.layerAnimationState[index] = 'leftIn';
+ }
+ else {
+ this.layerAnimationState[oldIndex] = 'rightOut';
+ this.layerAnimationState[index] = 'rightIn';
+ }
+ };
+ return KeyboardSliderComponent;
+ }());
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Array)
+ ], KeyboardSliderComponent.prototype, "layers", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Number)
+ ], KeyboardSliderComponent.prototype, "currentLayer", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Boolean)
+ ], KeyboardSliderComponent.prototype, "keybindAnimationEnabled", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Boolean)
+ ], KeyboardSliderComponent.prototype, "capturingEnabled", void 0);
+ __decorate([
+ core_1.Output(),
+ __metadata("design:type", Object)
+ ], KeyboardSliderComponent.prototype, "keyClick", void 0);
+ __decorate([
+ core_1.Output(),
+ __metadata("design:type", Object)
+ ], KeyboardSliderComponent.prototype, "keyHover", void 0);
+ __decorate([
+ core_1.Output(),
+ __metadata("design:type", Object)
+ ], KeyboardSliderComponent.prototype, "capture", void 0);
+ KeyboardSliderComponent = __decorate([
+ core_1.Component({
+ selector: 'keyboard-slider',
+ template: __webpack_require__(119),
+ styles: [__webpack_require__(120)],
+ changeDetection: core_1.ChangeDetectionStrategy.OnPush,
+ // We use 101%, because there was still a trace of the keyboard in the screen when animation was done
+ animations: [
+ core_1.trigger('layerState', [
+ core_1.state('leftIn, rightIn', core_1.style({
+ transform: 'translateX(-50%)',
+ left: '50%'
+ })),
+ core_1.state('leftOut', core_1.style({
+ transform: 'translateX(-101%)',
+ left: '0'
+ })),
+ core_1.state('rightOut', core_1.style({
+ transform: 'translateX(0)',
+ left: '101%'
+ })),
+ core_1.transition('leftOut => leftIn, rightOut => leftIn', [
+ core_1.animate('400ms ease-out', core_1.keyframes([
+ core_1.style({ transform: 'translateX(0%)', left: '101%', offset: 0 }),
+ core_1.style({ transform: 'translateX(-50%)', left: '50%', offset: 1 })
+ ]))
+ ]),
+ core_1.transition('leftIn => leftOut, rightIn => leftOut', [
+ core_1.animate('400ms ease-out', core_1.keyframes([
+ core_1.style({ transform: 'translateX(-50%)', left: '50%', offset: 0 }),
+ core_1.style({ transform: 'translateX(-101%)', left: '0%', offset: 1 })
+ ]))
+ ]),
+ core_1.transition('* => rightIn', [
+ core_1.animate('400ms ease-out', core_1.keyframes([
+ core_1.style({ transform: 'translateX(-101%)', left: '0%', offset: 0 }),
+ core_1.style({ transform: 'translateX(-50%)', left: '50%', offset: 1 })
+ ]))
+ ]),
+ core_1.transition('* => rightOut', [
+ core_1.animate('400ms ease-out', core_1.keyframes([
+ core_1.style({ transform: 'translateX(-50%)', left: '50%', offset: 0 }),
+ core_1.style({ transform: 'translateX(0%)', left: '101%', offset: 1 })
+ ]))
+ ]),
+ core_1.transition(':leave', [
+ core_1.animate('2000ms ease-out', core_1.keyframes([
+ core_1.style({ opacity: 1, offset: 0 }),
+ core_1.style({ opacity: 0, offset: 1 })
+ ]))
+ ])
+ ])
+ ]
+ })
+ ], KeyboardSliderComponent);
+ exports.KeyboardSliderComponent = KeyboardSliderComponent;
+
+
+/***/ },
+/* 119 */
+/***/ function(module, exports) {
+
+ module.exports = "\r\n ";
+
+/***/ },
+/* 120 */
+/***/ function(module, exports) {
+
+ module.exports = "svg-keyboard {\n width: 95%;\n max-width: 1400px;\n position: absolute;\n left: 0;\n transform: translateX(-101%);\n user-select: none; }\n"
+
+/***/ },
+/* 121 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ __export(__webpack_require__(122));
+ __export(__webpack_require__(132));
+ __export(__webpack_require__(176));
+
+
+/***/ },
+/* 122 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var store_1 = __webpack_require__(44);
+ var BehaviorSubject_1 = __webpack_require__(45);
+ __webpack_require__(123);
+ __webpack_require__(125);
+ var actions_1 = __webpack_require__(127);
+ var KeymapAddComponent = (function () {
+ function KeymapAddComponent(store) {
+ this.store = store;
+ this.presetsAll$ = store.select(function (appState) { return appState.presetKeymaps; });
+ this.filterExpression$ = new BehaviorSubject_1.BehaviorSubject('');
+ this.presets$ = this.presetsAll$
+ .combineLatest(this.filterExpression$, function (keymaps, filterExpression) {
+ return keymaps.filter(function (keymap) { return keymap.name.toLocaleLowerCase().includes(filterExpression); });
+ })
+ .publishReplay(1)
+ .refCount();
+ }
+ KeymapAddComponent.prototype.filterKeyboards = function (filterExpression) {
+ this.filterExpression$.next(filterExpression);
+ };
+ KeymapAddComponent.prototype.addKeymap = function (keymap) {
+ this.store.dispatch(actions_1.KeymapActions.addKeymap(keymap));
+ };
+ return KeymapAddComponent;
+ }());
+ KeymapAddComponent = __decorate([
+ core_1.Component({
+ selector: 'keymap-add',
+ template: __webpack_require__(130),
+ styles: [__webpack_require__(131)],
+ host: {
+ 'class': 'container-fluid'
+ }
+ }),
+ __metadata("design:paramtypes", [store_1.Store])
+ ], KeymapAddComponent);
+ exports.KeymapAddComponent = KeymapAddComponent;
+
+
+/***/ },
+/* 123 */,
+/* 124 */,
+/* 125 */,
+/* 126 */,
+/* 127 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ __export(__webpack_require__(128));
+ __export(__webpack_require__(129));
+
+
+/***/ },
+/* 128 */
+/***/ function(module, exports) {
+
+ "use strict";
+ var KeymapActions;
+ (function (KeymapActions) {
+ KeymapActions.PREFIX = '[Keymap] ';
+ KeymapActions.ADD = KeymapActions.PREFIX + 'Add keymap';
+ KeymapActions.DUPLICATE = KeymapActions.PREFIX + 'Duplicate keymap';
+ KeymapActions.EDIT_ABBR = KeymapActions.PREFIX + 'Edit keymap abbreviation';
+ KeymapActions.EDIT_NAME = KeymapActions.PREFIX + 'Edit keymap title';
+ KeymapActions.SAVE_KEY = KeymapActions.PREFIX + 'Save key action';
+ KeymapActions.SET_DEFAULT = KeymapActions.PREFIX + 'Set default option';
+ KeymapActions.REMOVE = KeymapActions.PREFIX + 'Remove keymap';
+ KeymapActions.CHECK_MACRO = KeymapActions.PREFIX + 'Check deleted macro';
+ function addKeymap(item) {
+ return {
+ type: KeymapActions.ADD,
+ payload: item
+ };
+ }
+ KeymapActions.addKeymap = addKeymap;
+ function setDefault(abbr) {
+ return {
+ type: KeymapActions.SET_DEFAULT,
+ payload: abbr
+ };
+ }
+ KeymapActions.setDefault = setDefault;
+ function removeKeymap(abbr) {
+ return {
+ type: KeymapActions.REMOVE,
+ payload: abbr
+ };
+ }
+ KeymapActions.removeKeymap = removeKeymap;
+ function duplicateKeymap(keymap) {
+ return {
+ type: KeymapActions.DUPLICATE,
+ payload: keymap
+ };
+ }
+ KeymapActions.duplicateKeymap = duplicateKeymap;
+ function editKeymapName(abbr, name) {
+ return {
+ type: KeymapActions.EDIT_NAME,
+ payload: {
+ abbr: abbr,
+ name: name
+ }
+ };
+ }
+ KeymapActions.editKeymapName = editKeymapName;
+ function editKeymapAbbr(abbr, newAbbr) {
+ return {
+ type: KeymapActions.EDIT_ABBR,
+ payload: {
+ abbr: abbr,
+ newAbbr: newAbbr
+ }
+ };
+ }
+ KeymapActions.editKeymapAbbr = editKeymapAbbr;
+ function saveKey(keymap, layer, module, key, keyAction) {
+ return {
+ type: KeymapActions.SAVE_KEY,
+ payload: {
+ keymap: keymap,
+ layer: layer,
+ module: module,
+ key: key,
+ keyAction: keyAction
+ }
+ };
+ }
+ KeymapActions.saveKey = saveKey;
+ function checkMacro(macro) {
+ return {
+ type: KeymapActions.CHECK_MACRO,
+ payload: macro
+ };
+ }
+ KeymapActions.checkMacro = checkMacro;
+ })(KeymapActions = exports.KeymapActions || (exports.KeymapActions = {}));
+
+
+/***/ },
+/* 129 */
+/***/ function(module, exports) {
+
+ "use strict";
+ var MacroActions;
+ (function (MacroActions) {
+ MacroActions.PREFIX = '[Macro] ';
+ MacroActions.DUPLICATE = MacroActions.PREFIX + 'Duplicate macro';
+ MacroActions.EDIT_NAME = MacroActions.PREFIX + 'Edit macro title';
+ MacroActions.REMOVE = MacroActions.PREFIX + 'Remove macro';
+ MacroActions.ADD = MacroActions.PREFIX + 'Add macro';
+ MacroActions.ADD_ACTION = MacroActions.PREFIX + 'Add macro action';
+ MacroActions.SAVE_ACTION = MacroActions.PREFIX + 'Save macro action';
+ MacroActions.DELETE_ACTION = MacroActions.PREFIX + 'Delete macro action';
+ MacroActions.REORDER_ACTION = MacroActions.PREFIX + 'Reorder macro action';
+ function addMacro() {
+ return {
+ type: MacroActions.ADD
+ };
+ }
+ MacroActions.addMacro = addMacro;
+ function removeMacro(macroId) {
+ return {
+ type: MacroActions.REMOVE,
+ payload: macroId
+ };
+ }
+ MacroActions.removeMacro = removeMacro;
+ function duplicateMacro(macro) {
+ return {
+ type: MacroActions.DUPLICATE,
+ payload: macro
+ };
+ }
+ MacroActions.duplicateMacro = duplicateMacro;
+ function editMacroName(id, name) {
+ return {
+ type: MacroActions.EDIT_NAME,
+ payload: {
+ id: id,
+ name: name
+ }
+ };
+ }
+ MacroActions.editMacroName = editMacroName;
+ function addMacroAction(id, action) {
+ return {
+ type: MacroActions.ADD_ACTION,
+ payload: {
+ id: id,
+ action: action
+ }
+ };
+ }
+ MacroActions.addMacroAction = addMacroAction;
+ function saveMacroAction(id, index, action) {
+ return {
+ type: MacroActions.SAVE_ACTION,
+ payload: {
+ id: id,
+ index: index,
+ action: action
+ }
+ };
+ }
+ MacroActions.saveMacroAction = saveMacroAction;
+ function deleteMacroAction(id, index, action) {
+ return {
+ type: MacroActions.DELETE_ACTION,
+ payload: {
+ id: id,
+ index: index,
+ action: action
+ }
+ };
+ }
+ MacroActions.deleteMacroAction = deleteMacroAction;
+ function reorderMacroAction(id, oldIndex, newIndex) {
+ return {
+ type: MacroActions.REORDER_ACTION,
+ payload: {
+ id: id,
+ oldIndex: oldIndex,
+ newIndex: newIndex
+ }
+ };
+ }
+ MacroActions.reorderMacroAction = reorderMacroAction;
+ })(MacroActions = exports.MacroActions || (exports.MacroActions = {}));
+
+
+/***/ },
+/* 130 */
+/***/ function(module, exports) {
+
+ module.exports = "\r\n \r\n Add new keymap \r\n \r\n\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n {{ (presets$ | async).length }} / {{ (presetsAll$ | async).length }} keymaps shown\r\n
\r\n
\r\n\r\n
\r\n
{{ keymap.name }} \r\n
\r\n {{ keymap.description }}\r\n
\r\n
\r\n \r\n
\r\n Add keymap \r\n
\r\n
\r\n
\r\n\r\n Sorry, no keyboard found under this search query.\r\n
";
+
+/***/ },
+/* 131 */
+/***/ function(module, exports) {
+
+ module.exports = ":host {\n overflow-y: auto;\n display: block;\n height: 100%; }\n\n.uhk__layer-switcher--wrapper {\n position: relative; }\n .uhk__layer-switcher--wrapper:before {\n content: attr(data-title);\n display: inline-block;\n position: absolute;\n bottom: -0.3em;\n right: 100%;\n font-size: 2.4rem;\n padding-right: 0.25em;\n margin: 0; }\n\n.keymap__search {\n margin-top: 10px; }\n .keymap__search .input-group {\n width: 100%;\n max-width: 350px;\n float: left; }\n .keymap__search_amount {\n float: left;\n margin: 7px 0 0 20px; }\n\n.keymap__description {\n margin-bottom: 20px; }\n\n.keymap__list {\n margin-top: 40px; }\n .keymap__list_item {\n margin-bottom: 50px; }\n .keymap__list .btn-group-lg {\n margin: 30px 0 0;\n width: 100%;\n text-align: center; }\n .keymap__list .btn-group-lg .btn {\n float: none;\n padding-left: 50px;\n padding-right: 50px; }\n"
+
+/***/ },
+/* 132 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var router_1 = __webpack_require__(99);
+ __webpack_require__(133);
+ var store_1 = __webpack_require__(44);
+ __webpack_require__(134);
+ __webpack_require__(135);
+ __webpack_require__(137);
+ __webpack_require__(125);
+ __webpack_require__(138);
+ var file_saver_1 = __webpack_require__(139);
+ var user_configuration_1 = __webpack_require__(141);
+ var KeymapEditComponent = (function () {
+ function KeymapEditComponent(store, route) {
+ this.store = store;
+ this.route = route;
+ this.keymap$ = route
+ .params
+ .select('abbr')
+ .switchMap(function (abbr) { return store.let(user_configuration_1.getKeymap(abbr)); })
+ .publishReplay(1)
+ .refCount();
+ this.deletable$ = store.let(user_configuration_1.getKeymaps())
+ .map(function (keymaps) { return keymaps.length > 1; });
+ }
+ KeymapEditComponent.prototype.downloadKeymap = function () {
+ var _this = this;
+ var exportableJSON$ = this.keymap$
+ .switchMap(function (keymap) { return _this.toExportableJSON(keymap); })
+ .map(function (exportableJSON) { return JSON.stringify(exportableJSON); });
+ this.keymap$
+ .combineLatest(exportableJSON$)
+ .first()
+ .subscribe(function (latest) {
+ var keymap = latest[0];
+ var exportableJSON = latest[1];
+ var fileName = keymap.name + '_keymap.json';
+ file_saver_1.saveAs(new Blob([exportableJSON], { type: 'application/json' }), fileName);
+ });
+ };
+ KeymapEditComponent.prototype.toExportableJSON = function (keymap) {
+ return this.store
+ .let(user_configuration_1.getUserConfiguration())
+ .first()
+ .map(function (userConfiguration) {
+ return {
+ site: 'https://ultimatehackingkeyboard.com',
+ description: 'Ultimate Hacking Keyboard keymap',
+ keyboardModel: 'UHK60',
+ dataModelVersion: userConfiguration.dataModelVersion,
+ objectType: 'keymap',
+ objectValue: keymap.toJsonObject()
+ };
+ });
+ };
+ return KeymapEditComponent;
+ }());
+ KeymapEditComponent = __decorate([
+ core_1.Component({
+ selector: 'keymap-edit',
+ template: __webpack_require__(174),
+ styles: [__webpack_require__(175)],
+ host: {
+ 'class': 'container-fluid'
+ }
+ }),
+ __metadata("design:paramtypes", [store_1.Store,
+ router_1.ActivatedRoute])
+ ], KeymapEditComponent);
+ exports.KeymapEditComponent = KeymapEditComponent;
+
+
+/***/ },
+/* 133 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var Observable_1 = __webpack_require__(8);
+ var select_1 = __webpack_require__(72);
+ Observable_1.Observable.prototype.select = select_1.select;
+
+
+/***/ },
+/* 134 */,
+/* 135 */,
+/* 136 */,
+/* 137 */,
+/* 138 */,
+/* 139 */
+/***/ function(module, exports, __webpack_require__) {
+
+ var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */
+ var saveAs=saveAs||function(e){"use strict";if("undefined"==typeof navigator||!/MSIE [1-9]\./.test(navigator.userAgent)){var t=e.document,n=function(){return e.URL||e.webkitURL||e},o=t.createElementNS("http://www.w3.org/1999/xhtml","a"),r="download"in o,i=function(e){var t=new MouseEvent("click");e.dispatchEvent(t)},a=e.webkitRequestFileSystem,c=e.requestFileSystem||a||e.mozRequestFileSystem,u=function(t){(e.setImmediate||e.setTimeout)(function(){throw t},0)},f="application/octet-stream",s=0,d=500,l=function(t){var o=function(){"string"==typeof t?n().revokeObjectURL(t):t.remove()};e.chrome?o():setTimeout(o,d)},v=function(e,t,n){t=[].concat(t);for(var o=t.length;o--;){var r=e["on"+t[o]];if("function"==typeof r)try{r.call(e,n||e)}catch(i){u(i)}}},p=function(e){return/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(e.type)?new Blob(["",e],{type:e.type}):e},w=function(t,u,d){d||(t=p(t));var w,y,m,S=this,h=t.type,O=!1,R=function(){v(S,"writestart progress write writeend".split(" "))},b=function(){if((O||!w)&&(w=n().createObjectURL(t)),y)y.location.href=w;else{var o=e.open(w,"_blank");void 0==o&&"undefined"!=typeof safari&&(e.location.href=w)}S.readyState=S.DONE,R(),l(w)},g=function(e){return function(){return S.readyState!==S.DONE?e.apply(this,arguments):void 0}},E={create:!0,exclusive:!1};return S.readyState=S.INIT,u||(u="download"),r?(w=n().createObjectURL(t),o.href=w,o.download=u,void setTimeout(function(){i(o),R(),l(w),S.readyState=S.DONE})):(e.chrome&&h&&h!==f&&(m=t.slice||t.webkitSlice,t=m.call(t,0,t.size,f),O=!0),a&&"download"!==u&&(u+=".download"),(h===f||a)&&(y=e),c?(s+=t.size,void c(e.TEMPORARY,s,g(function(e){e.root.getDirectory("saved",E,g(function(e){var n=function(){e.getFile(u,E,g(function(e){e.createWriter(g(function(n){n.onwriteend=function(t){y.location.href=e.toURL(),S.readyState=S.DONE,v(S,"writeend",t),l(e)},n.onerror=function(){var e=n.error;e.code!==e.ABORT_ERR&&b()},"writestart progress write abort".split(" ").forEach(function(e){n["on"+e]=S["on"+e]}),n.write(t),S.abort=function(){n.abort(),S.readyState=S.DONE},S.readyState=S.WRITING}),b)}),b)};e.getFile(u,{create:!1},g(function(e){e.remove(),n()}),g(function(e){e.code===e.NOT_FOUND_ERR?n():b()}))}),b)}),b)):void b())},y=w.prototype,m=function(e,t,n){return new w(e,t,n)};return"undefined"!=typeof navigator&&navigator.msSaveOrOpenBlob?function(e,t,n){return n||(e=p(e)),navigator.msSaveOrOpenBlob(e,t||"download")}:(y.abort=function(){var e=this;e.readyState=e.DONE,v(e,"abort")},y.readyState=y.INIT=0,y.WRITING=1,y.DONE=2,y.error=y.onwritestart=y.onprogress=y.onwrite=y.onabort=y.onerror=y.onwriteend=null,m)}}("undefined"!=typeof self&&self||"undefined"!=typeof window&&window||this.content);"undefined"!=typeof module&&module.exports?module.exports.saveAs=saveAs:"undefined"!="function"&&null!==__webpack_require__(140)&&null!=__webpack_require__(96)&&!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = function(){return saveAs}.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
+
+/***/ },
+/* 140 */
+/***/ function(module, exports) {
+
+ module.exports = function() { throw new Error("define cannot be used indirect"); };
+
+
+/***/ },
+/* 141 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ __webpack_require__(133);
+ __webpack_require__(137);
+ var Observable_1 = __webpack_require__(8);
+ var key_action_1 = __webpack_require__(142);
+ var Keymap_1 = __webpack_require__(158);
+ var Macro_1 = __webpack_require__(161);
+ var UserConfiguration_1 = __webpack_require__(172);
+ var Layer_1 = __webpack_require__(159);
+ var Module_1 = __webpack_require__(160);
+ var actions_1 = __webpack_require__(127);
+ var initialState = new UserConfiguration_1.UserConfiguration();
+ /* tslint:disable:no-switch-case-fall-through */
+ // tslint bug: https://github.com/palantir/tslint/issues/1538
+ function default_1(state, action) {
+ if (state === void 0) { state = initialState; }
+ var changedUserConfiguration = Object.assign(new UserConfiguration_1.UserConfiguration(), state);
+ switch (action.type) {
+ case actions_1.KeymapActions.ADD:
+ case actions_1.KeymapActions.DUPLICATE:
+ {
+ var newKeymap = new Keymap_1.Keymap(action.payload);
+ newKeymap.abbreviation = generateAbbr(state.keymaps, newKeymap.abbreviation);
+ newKeymap.name = generateName(state.keymaps, newKeymap.name);
+ newKeymap.isDefault = (state.keymaps.length === 0);
+ changedUserConfiguration.keymaps = state.keymaps.concat(newKeymap);
+ break;
+ }
+ case actions_1.KeymapActions.EDIT_NAME:
+ {
+ var name_1 = generateName(state.keymaps, action.payload.name);
+ changedUserConfiguration.keymaps = state.keymaps.map(function (keymap) {
+ if (keymap.abbreviation === action.payload.abbr) {
+ keymap = Object.assign(new Keymap_1.Keymap(), keymap);
+ keymap.name = name_1;
+ }
+ return keymap;
+ });
+ break;
+ }
+ case actions_1.KeymapActions.EDIT_ABBR:
+ var abbr_1 = generateAbbr(state.keymaps, action.payload.newAbbr);
+ changedUserConfiguration.keymaps = state.keymaps.map(function (keymap) {
+ if (keymap.abbreviation === action.payload.abbr) {
+ keymap = Object.assign(new Keymap_1.Keymap(), keymap);
+ keymap.abbreviation = abbr_1;
+ }
+ return keymap;
+ });
+ break;
+ case actions_1.KeymapActions.SET_DEFAULT:
+ changedUserConfiguration.keymaps = state.keymaps.map(function (keymap) {
+ if (keymap.abbreviation === action.payload || keymap.isDefault) {
+ keymap = Object.assign(new Keymap_1.Keymap(), keymap);
+ keymap.isDefault = keymap.abbreviation === action.payload;
+ }
+ return keymap;
+ });
+ break;
+ case actions_1.KeymapActions.REMOVE:
+ var isDefault_1;
+ var filtered = state.keymaps.filter(function (keymap) {
+ if (keymap.abbreviation === action.payload) {
+ isDefault_1 = keymap.isDefault;
+ return false;
+ }
+ return true;
+ });
+ // If deleted one is default set default keymap to the first on the list of keymaps
+ if (isDefault_1 && filtered.length > 0) {
+ filtered[0].isDefault = true;
+ }
+ // Check for the deleted keymap in other keymaps
+ changedUserConfiguration.keymaps = filtered.map(function (keymap) {
+ keymap = Object.assign(new Keymap_1.Keymap(), keymap);
+ keymap.layers = checkExistence(keymap.layers, 'keymapAbbreviation', action.payload);
+ return keymap;
+ });
+ break;
+ case actions_1.KeymapActions.SAVE_KEY:
+ {
+ var newKeymap_1 = Object.assign(new Keymap_1.Keymap(), action.payload.keymap);
+ newKeymap_1.layers = newKeymap_1.layers.slice();
+ var layerIndex = action.payload.layer;
+ var newLayer = Object.assign(new Layer_1.Layer(), newKeymap_1.layers[layerIndex]);
+ newKeymap_1.layers[layerIndex] = newLayer;
+ var moduleIndex = action.payload.module;
+ var newModule = Object.assign(new Module_1.Module(), newLayer.modules[moduleIndex]);
+ newLayer.modules = newLayer.modules.slice();
+ newLayer.modules[moduleIndex] = newModule;
+ var keyIndex = action.payload.key;
+ newModule.keyActions = newModule.keyActions.slice();
+ newModule.keyActions[keyIndex] = key_action_1.Helper.createKeyAction(action.payload.keyAction);
+ changedUserConfiguration.keymaps = state.keymaps.map(function (keymap) {
+ if (keymap.abbreviation === newKeymap_1.abbreviation) {
+ keymap = newKeymap_1;
+ }
+ return keymap;
+ });
+ break;
+ }
+ case actions_1.KeymapActions.CHECK_MACRO:
+ changedUserConfiguration.keymaps = state.keymaps.map(function (keymap) {
+ keymap = Object.assign(new Keymap_1.Keymap(), keymap);
+ keymap.layers = checkExistence(keymap.layers, '_macroId', action.payload);
+ return keymap;
+ });
+ break;
+ case actions_1.MacroActions.ADD:
+ {
+ var newMacro = new Macro_1.Macro();
+ newMacro.id = generateMacroId(state.macros);
+ newMacro.name = generateName(state.macros, 'New macro');
+ newMacro.isLooped = false;
+ newMacro.isPrivate = true;
+ newMacro.macroActions = [];
+ changedUserConfiguration.macros = state.macros.concat(newMacro);
+ break;
+ }
+ case actions_1.MacroActions.DUPLICATE:
+ {
+ var newMacro = new Macro_1.Macro(action.payload);
+ newMacro.name = generateName(state.macros, newMacro.name);
+ newMacro.id = generateMacroId(state.macros);
+ changedUserConfiguration.macros = state.macros.concat(newMacro);
+ break;
+ }
+ case actions_1.MacroActions.EDIT_NAME:
+ {
+ var name_2 = generateName(state.macros, action.payload.name);
+ changedUserConfiguration.macros = state.macros.map(function (macro) {
+ if (macro.id === action.payload.id) {
+ macro.name = name_2;
+ }
+ return macro;
+ });
+ break;
+ }
+ case actions_1.MacroActions.REMOVE:
+ changedUserConfiguration.macros = state.macros.filter(function (macro) { return macro.id !== action.payload; });
+ break;
+ case actions_1.MacroActions.ADD_ACTION:
+ changedUserConfiguration.macros = state.macros.map(function (macro) {
+ if (macro.id === action.payload.id) {
+ macro = new Macro_1.Macro(macro);
+ macro.macroActions.push(action.payload.action);
+ }
+ return macro;
+ });
+ break;
+ case actions_1.MacroActions.SAVE_ACTION:
+ changedUserConfiguration.macros = state.macros.map(function (macro) {
+ if (macro.id === action.payload.id) {
+ macro = new Macro_1.Macro(macro);
+ macro.macroActions[action.payload.index] = action.payload.action;
+ }
+ return macro;
+ });
+ break;
+ case actions_1.MacroActions.DELETE_ACTION:
+ changedUserConfiguration.macros = state.macros.map(function (macro) {
+ if (macro.id === action.payload.id) {
+ macro = new Macro_1.Macro(macro);
+ macro.macroActions.splice(action.payload.index, 1);
+ }
+ return macro;
+ });
+ break;
+ case actions_1.MacroActions.REORDER_ACTION:
+ changedUserConfiguration.macros = state.macros.map(function (macro) {
+ if (macro.id === action.payload.id) {
+ var newIndex = action.payload.newIndex;
+ // We need to reduce the new index for one when we are moving action down
+ if (newIndex > action.payload.oldIndex) {
+ --newIndex;
+ }
+ macro = new Macro_1.Macro(macro);
+ macro.macroActions.splice(newIndex, 0, macro.macroActions.splice(action.payload.oldIndex, 1)[0]);
+ }
+ return macro;
+ });
+ break;
+ default:
+ break;
+ }
+ return changedUserConfiguration;
+ }
+ Object.defineProperty(exports, "__esModule", { value: true });
+ exports.default = default_1;
+ function getUserConfiguration() {
+ return function (state$) { return state$
+ .select(function (state) { return state.userConfiguration; }); };
+ }
+ exports.getUserConfiguration = getUserConfiguration;
+ function getKeymaps() {
+ return function (state$) { return state$
+ .select(function (state) { return state.userConfiguration.keymaps; }); };
+ }
+ exports.getKeymaps = getKeymaps;
+ function getKeymap(abbr) {
+ if (abbr === undefined) {
+ return getDefaultKeymap();
+ }
+ return function (state$) { return getKeymaps()(state$)
+ .map(function (keymaps) {
+ return keymaps.find(function (keymap) { return keymap.abbreviation === abbr; });
+ }); };
+ }
+ exports.getKeymap = getKeymap;
+ function getDefaultKeymap() {
+ return function (state$) { return getKeymaps()(state$)
+ .map(function (keymaps) {
+ return keymaps.find(function (keymap) { return keymap.isDefault; });
+ }); };
+ }
+ exports.getDefaultKeymap = getDefaultKeymap;
+ function getMacros() {
+ return function (state$) { return state$
+ .select(function (state) { return state.userConfiguration.macros; }); };
+ }
+ exports.getMacros = getMacros;
+ function getMacro(id) {
+ if (isNaN(id)) {
+ return function () { return Observable_1.Observable.of(undefined); };
+ }
+ else {
+ return function (state$) { return getMacros()(state$)
+ .map(function (macros) { return macros.find(function (macro) { return macro.id === id; }); }); };
+ }
+ }
+ exports.getMacro = getMacro;
+ function generateAbbr(keymaps, abbr) {
+ var chars = '23456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');
+ var position = 0;
+ while (keymaps.some(function (keymap) { return keymap.abbreviation === abbr; })) {
+ abbr = abbr.substring(0, abbr.length - 1) + chars[position];
+ ++position;
+ }
+ return abbr;
+ }
+ function generateName(items, name) {
+ var suffix = 2;
+ var oldName = name;
+ while (items.some(function (item) { return item.name === name; })) {
+ name = oldName + (" (" + suffix + ")");
+ ++suffix;
+ }
+ return name;
+ }
+ function generateMacroId(macros) {
+ var newId = 0;
+ macros.forEach(function (macro) {
+ if (macro.id > newId) {
+ newId = macro.id;
+ }
+ });
+ return newId + 1;
+ }
+ function checkExistence(layers, property, value) {
+ var newLayers = layers.map(function (layer) {
+ var newLayer = new Layer_1.Layer(layer);
+ newLayer.modules = layer.modules.map(function (module) {
+ module.keyActions.forEach(function (action, index) {
+ if (action && action.hasOwnProperty(property) && action[property] === value) {
+ module.keyActions[index] = undefined;
+ }
+ });
+ return module;
+ });
+ return newLayer;
+ });
+ return newLayers;
+ }
+
+
+/***/ },
+/* 142 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ __export(__webpack_require__(143));
+ __export(__webpack_require__(144));
+ __export(__webpack_require__(147));
+ __export(__webpack_require__(148));
+ __export(__webpack_require__(149));
+ __export(__webpack_require__(150));
+ __export(__webpack_require__(151));
+ __export(__webpack_require__(152));
+
+
+/***/ },
+/* 143 */
+/***/ function(module, exports) {
+
+ ///
+ "use strict";
+ var KeyActionId;
+ (function (KeyActionId) {
+ KeyActionId[KeyActionId["NoneAction"] = 0] = "NoneAction";
+ KeyActionId[KeyActionId["KeystrokeAction"] = 1] = "KeystrokeAction";
+ /*
+ 1 - 7 are reserved for KeystrokeAction
+ 3 bits:
+ 1: Do we have scancode?
+ 2: Do we have modifiers?
+ 3: Do we have longpress?
+ */
+ KeyActionId[KeyActionId["LastKeystrokeAction"] = 7] = "LastKeystrokeAction";
+ KeyActionId[KeyActionId["SwitchLayerAction"] = 8] = "SwitchLayerAction";
+ KeyActionId[KeyActionId["SwitchKeymapAction"] = 9] = "SwitchKeymapAction";
+ KeyActionId[KeyActionId["MouseAction"] = 10] = "MouseAction";
+ KeyActionId[KeyActionId["PlayMacroAction"] = 11] = "PlayMacroAction";
+ })(KeyActionId = exports.KeyActionId || (exports.KeyActionId = {}));
+ exports.keyActionType = {
+ NoneAction: 'none',
+ KeystrokeAction: 'keystroke',
+ SwitchLayerAction: 'switchLayer',
+ SwitchKeymapAction: 'switchKeymap',
+ MouseAction: 'mouse',
+ PlayMacroAction: 'playMacro'
+ };
+ var KeyAction = (function () {
+ function KeyAction() {
+ }
+ KeyAction.prototype.assertKeyActionType = function (jsObject) {
+ var keyActionClassname = this.constructor.name;
+ var keyActionTypeString = exports.keyActionType[keyActionClassname];
+ if (jsObject.keyActionType !== keyActionTypeString) {
+ throw "Invalid " + keyActionClassname + ".keyActionType: " + jsObject.keyActionType;
+ }
+ };
+ KeyAction.prototype.readAndAssertKeyActionId = function (buffer) {
+ var classname = this.constructor.name;
+ var readKeyActionId = buffer.readUInt8();
+ var keyActionId = KeyActionId[classname];
+ if (keyActionId === KeyActionId.KeystrokeAction) {
+ if (readKeyActionId < KeyActionId.KeystrokeAction || readKeyActionId > KeyActionId.LastKeystrokeAction) {
+ throw "Invalid " + classname + " first byte: " + readKeyActionId;
+ }
+ }
+ else if (readKeyActionId !== keyActionId) {
+ throw "Invalid " + classname + " first byte: " + readKeyActionId;
+ }
+ return readKeyActionId;
+ };
+ return KeyAction;
+ }());
+ exports.KeyAction = KeyAction;
+
+
+/***/ },
+/* 144 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __extends = (this && this.__extends) || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var assert_1 = __webpack_require__(145);
+ var LongPressAction_1 = __webpack_require__(146);
+ var KeyAction_1 = __webpack_require__(143);
+ var KeystrokeActionFlag;
+ (function (KeystrokeActionFlag) {
+ KeystrokeActionFlag[KeystrokeActionFlag["scancode"] = 1] = "scancode";
+ KeystrokeActionFlag[KeystrokeActionFlag["modifierMask"] = 2] = "modifierMask";
+ KeystrokeActionFlag[KeystrokeActionFlag["longPressAction"] = 4] = "longPressAction";
+ })(KeystrokeActionFlag = exports.KeystrokeActionFlag || (exports.KeystrokeActionFlag = {}));
+ var MODIFIERS = ['LCtrl', 'LShift', 'LAlt', 'LSuper', 'RCtrl', 'RShift', 'RAlt', 'RSuper'];
+ var KeystrokeAction = (function (_super) {
+ __extends(KeystrokeAction, _super);
+ function KeystrokeAction(other) {
+ var _this = _super.call(this) || this;
+ if (!other) {
+ return _this;
+ }
+ _this.scancode = other.scancode;
+ _this.modifierMask = other.modifierMask;
+ _this.longPressAction = other.longPressAction;
+ return _this;
+ }
+ KeystrokeAction.prototype.fromJsonObject = function (jsonObject) {
+ this.assertKeyActionType(jsonObject);
+ this.scancode = jsonObject.scancode;
+ this.modifierMask = jsonObject.modifierMask;
+ this.longPressAction = LongPressAction_1.LongPressAction[jsonObject.longPressAction];
+ return this;
+ };
+ KeystrokeAction.prototype.fromBinary = function (buffer) {
+ var keyActionId = this.readAndAssertKeyActionId(buffer);
+ var flags = keyActionId - KeyAction_1.KeyActionId.KeystrokeAction;
+ if (flags & KeystrokeActionFlag.scancode) {
+ this.scancode = buffer.readUInt8();
+ }
+ if (flags & KeystrokeActionFlag.modifierMask) {
+ this.modifierMask = buffer.readUInt8();
+ }
+ if (flags & KeystrokeActionFlag.longPressAction) {
+ this.longPressAction = buffer.readUInt8();
+ }
+ return this;
+ };
+ KeystrokeAction.prototype.toJsonObject = function () {
+ var jsonObject = {
+ keyActionType: KeyAction_1.keyActionType.KeystrokeAction
+ };
+ if (this.hasScancode()) {
+ jsonObject.scancode = this.scancode;
+ }
+ if (this.hasActiveModifier()) {
+ jsonObject.modifierMask = this.modifierMask;
+ }
+ if (this.hasLongPressAction()) {
+ jsonObject.longPressAction = LongPressAction_1.LongPressAction[this.longPressAction];
+ }
+ return jsonObject;
+ };
+ KeystrokeAction.prototype.toBinary = function (buffer) {
+ var flags = 0;
+ var bufferData = [];
+ if (this.hasScancode()) {
+ flags |= KeystrokeActionFlag.scancode;
+ bufferData.push(this.scancode);
+ }
+ if (this.hasActiveModifier()) {
+ flags |= KeystrokeActionFlag.modifierMask;
+ bufferData.push(this.modifierMask);
+ }
+ if (this.hasLongPressAction()) {
+ flags |= KeystrokeActionFlag.longPressAction;
+ bufferData.push(this.longPressAction);
+ }
+ buffer.writeUInt8(KeyAction_1.KeyActionId.KeystrokeAction + flags);
+ for (var i = 0; i < bufferData.length; ++i) {
+ buffer.writeUInt8(bufferData[i]);
+ }
+ };
+ KeystrokeAction.prototype.toString = function () {
+ var properties = [];
+ if (this.hasScancode()) {
+ properties.push("scancode=\"" + this.scancode + "\"");
+ }
+ if (this.hasActiveModifier()) {
+ properties.push("modifierMask=\"" + this.modifierMask + "\"");
+ }
+ if (this.hasLongPressAction()) {
+ properties.push("longPressAction=\"" + this.longPressAction + "\"");
+ }
+ return "";
+ };
+ KeystrokeAction.prototype.isActive = function (modifier) {
+ return (this.modifierMask & modifier) > 0;
+ };
+ KeystrokeAction.prototype.hasActiveModifier = function () {
+ return this.modifierMask > 0;
+ };
+ KeystrokeAction.prototype.hasLongPressAction = function () {
+ return this.longPressAction !== undefined;
+ };
+ KeystrokeAction.prototype.hasScancode = function () {
+ return !!this.scancode;
+ };
+ KeystrokeAction.prototype.hasOnlyOneActiveModifier = function () {
+ return this.modifierMask !== 0 && !(this.modifierMask & this.modifierMask - 1);
+ };
+ KeystrokeAction.prototype.getModifierList = function () {
+ var modifierList = [];
+ var modifierMask = this.modifierMask;
+ for (var i = 0; modifierMask !== 0; ++i, modifierMask >>= 1) {
+ if (modifierMask & 1) {
+ modifierList.push(MODIFIERS[i]);
+ }
+ }
+ return modifierList;
+ };
+ return KeystrokeAction;
+ }(KeyAction_1.KeyAction));
+ __decorate([
+ assert_1.assertUInt8,
+ __metadata("design:type", Number)
+ ], KeystrokeAction.prototype, "scancode", void 0);
+ __decorate([
+ assert_1.assertUInt8,
+ __metadata("design:type", Number)
+ ], KeystrokeAction.prototype, "modifierMask", void 0);
+ __decorate([
+ assert_1.assertEnum(LongPressAction_1.LongPressAction),
+ __metadata("design:type", Number)
+ ], KeystrokeAction.prototype, "longPressAction", void 0);
+ exports.KeystrokeAction = KeystrokeAction;
+
+
+/***/ },
+/* 145 */
+/***/ function(module, exports) {
+
+ "use strict";
+ function assertUInt8(target, key) {
+ return assertInteger(target, key, 0, 0xFF);
+ }
+ exports.assertUInt8 = assertUInt8;
+ function assertInt8(target, key) {
+ return assertInteger(target, key, -0x80, 0x7F);
+ }
+ exports.assertInt8 = assertInt8;
+ function assertUInt16(target, key) {
+ return assertInteger(target, key, 0, 0xFFFF);
+ }
+ exports.assertUInt16 = assertUInt16;
+ function assertInt16(target, key) {
+ return assertInteger(target, key, -0x8000, 0x7FFF);
+ }
+ exports.assertInt16 = assertInt16;
+ function assertUInt32(target, key) {
+ return assertInteger(target, key, 0, 0xFFFFFFFF);
+ }
+ exports.assertUInt32 = assertUInt32;
+ function assertInt32(target, key) {
+ return assertInteger(target, key, -0x80000000, 0x7FFFFFFF);
+ }
+ exports.assertInt32 = assertInt32;
+ function assertCompactLength(target, key) {
+ return assertUInt16(target, key);
+ }
+ exports.assertCompactLength = assertCompactLength;
+ function assertInteger(target, key, min, max) {
+ var priv = '_' + key;
+ function getter() {
+ return this[priv];
+ }
+ function setter(newVal) {
+ if (this[priv] !== newVal) {
+ if (newVal < min || newVal > max) {
+ throw target.constructor.name + "." + key + ": " +
+ ("Integer " + newVal + " is outside the valid [" + min + ", " + max + "] interval");
+ }
+ this[priv] = newVal;
+ }
+ }
+ Object.defineProperty(target, key, {
+ get: getter,
+ set: setter,
+ enumerable: true,
+ configurable: true
+ });
+ }
+ function assertEnum(enumerated) {
+ return function (target, key) {
+ var priv = '_' + key;
+ function getter() {
+ return this[priv];
+ }
+ function setter(newVal) {
+ if (this[priv] !== newVal) {
+ if (enumerated[newVal] === undefined) {
+ throw target.constructor.name + "." + key + ": " + newVal + " is not enum";
+ }
+ this[priv] = newVal;
+ }
+ }
+ Object.defineProperty(target, key, {
+ get: getter,
+ set: setter,
+ enumerable: true,
+ configurable: true
+ });
+ };
+ }
+ exports.assertEnum = assertEnum;
+
+
+/***/ },
+/* 146 */
+/***/ function(module, exports) {
+
+ "use strict";
+ var LongPressAction;
+ (function (LongPressAction) {
+ LongPressAction[LongPressAction["leftCtrl"] = 0] = "leftCtrl";
+ LongPressAction[LongPressAction["leftShift"] = 1] = "leftShift";
+ LongPressAction[LongPressAction["leftAlt"] = 2] = "leftAlt";
+ LongPressAction[LongPressAction["leftSuper"] = 3] = "leftSuper";
+ LongPressAction[LongPressAction["rightCtrl"] = 4] = "rightCtrl";
+ LongPressAction[LongPressAction["rightShift"] = 5] = "rightShift";
+ LongPressAction[LongPressAction["rightAlt"] = 6] = "rightAlt";
+ LongPressAction[LongPressAction["rightSuper"] = 7] = "rightSuper";
+ LongPressAction[LongPressAction["mod"] = 8] = "mod";
+ LongPressAction[LongPressAction["fn"] = 9] = "fn";
+ LongPressAction[LongPressAction["mouse"] = 10] = "mouse";
+ })(LongPressAction = exports.LongPressAction || (exports.LongPressAction = {}));
+ ;
+
+
+/***/ },
+/* 147 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __extends = (this && this.__extends) || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var assert_1 = __webpack_require__(145);
+ var KeyAction_1 = __webpack_require__(143);
+ var MouseActionParam;
+ (function (MouseActionParam) {
+ MouseActionParam[MouseActionParam["leftClick"] = 0] = "leftClick";
+ MouseActionParam[MouseActionParam["middleClick"] = 1] = "middleClick";
+ MouseActionParam[MouseActionParam["rightClick"] = 2] = "rightClick";
+ MouseActionParam[MouseActionParam["moveUp"] = 3] = "moveUp";
+ MouseActionParam[MouseActionParam["moveDown"] = 4] = "moveDown";
+ MouseActionParam[MouseActionParam["moveLeft"] = 5] = "moveLeft";
+ MouseActionParam[MouseActionParam["moveRight"] = 6] = "moveRight";
+ MouseActionParam[MouseActionParam["scrollUp"] = 7] = "scrollUp";
+ MouseActionParam[MouseActionParam["scrollDown"] = 8] = "scrollDown";
+ MouseActionParam[MouseActionParam["scrollLeft"] = 9] = "scrollLeft";
+ MouseActionParam[MouseActionParam["scrollRight"] = 10] = "scrollRight";
+ MouseActionParam[MouseActionParam["accelerate"] = 11] = "accelerate";
+ MouseActionParam[MouseActionParam["decelerate"] = 12] = "decelerate";
+ })(MouseActionParam = exports.MouseActionParam || (exports.MouseActionParam = {}));
+ var MouseAction = (function (_super) {
+ __extends(MouseAction, _super);
+ function MouseAction(other) {
+ var _this = _super.call(this) || this;
+ if (!other) {
+ return _this;
+ }
+ _this.mouseAction = other.mouseAction;
+ return _this;
+ }
+ MouseAction.prototype.fromJsonObject = function (jsObject) {
+ this.assertKeyActionType(jsObject);
+ this.mouseAction = MouseActionParam[jsObject.mouseAction];
+ return this;
+ };
+ MouseAction.prototype.fromBinary = function (buffer) {
+ this.readAndAssertKeyActionId(buffer);
+ this.mouseAction = buffer.readUInt8();
+ return this;
+ };
+ MouseAction.prototype.toJsonObject = function () {
+ return {
+ keyActionType: KeyAction_1.keyActionType.MouseAction,
+ mouseAction: MouseActionParam[this.mouseAction]
+ };
+ };
+ MouseAction.prototype.toBinary = function (buffer) {
+ buffer.writeUInt8(KeyAction_1.KeyActionId.MouseAction);
+ buffer.writeUInt8(this.mouseAction);
+ };
+ MouseAction.prototype.toString = function () {
+ return "";
+ };
+ return MouseAction;
+ }(KeyAction_1.KeyAction));
+ __decorate([
+ assert_1.assertEnum(MouseActionParam),
+ __metadata("design:type", Number)
+ ], MouseAction.prototype, "mouseAction", void 0);
+ exports.MouseAction = MouseAction;
+
+
+/***/ },
+/* 148 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __extends = (this && this.__extends) || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ var KeyAction_1 = __webpack_require__(143);
+ /**
+ * NoneAction is only intended for binary serialization of undefined key actions
+ * DO NOT use it as a real KeyAction
+ *
+ */
+ var NoneAction = (function (_super) {
+ __extends(NoneAction, _super);
+ function NoneAction() {
+ return _super !== null && _super.apply(this, arguments) || this;
+ }
+ NoneAction.prototype.fromJsonObject = function (jsonObject) {
+ this.assertKeyActionType(jsonObject);
+ return this;
+ };
+ NoneAction.prototype.fromBinary = function (buffer) {
+ this.readAndAssertKeyActionId(buffer);
+ return this;
+ };
+ NoneAction.prototype.toJsonObject = function () {
+ return {
+ keyActionType: KeyAction_1.keyActionType.NoneAction
+ };
+ };
+ NoneAction.prototype.toBinary = function (buffer) {
+ buffer.writeUInt8(KeyAction_1.KeyActionId.NoneAction);
+ };
+ NoneAction.prototype.toString = function () {
+ return '';
+ };
+ return NoneAction;
+ }(KeyAction_1.KeyAction));
+ exports.NoneAction = NoneAction;
+
+
+/***/ },
+/* 149 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __extends = (this && this.__extends) || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var assert_1 = __webpack_require__(145);
+ var KeyAction_1 = __webpack_require__(143);
+ var PlayMacroAction = (function (_super) {
+ __extends(PlayMacroAction, _super);
+ function PlayMacroAction(parameter) {
+ var _this = _super.call(this) || this;
+ if (!parameter) {
+ return _this;
+ }
+ if (parameter instanceof PlayMacroAction) {
+ _this.macroId = parameter.macroId;
+ }
+ else {
+ _this.macroId = parameter.id;
+ }
+ return _this;
+ }
+ PlayMacroAction.prototype.fromJsonObject = function (jsonObject, macros) {
+ this.assertKeyActionType(jsonObject);
+ this.macroId = macros[jsonObject.macroIndex].id;
+ return this;
+ };
+ PlayMacroAction.prototype.fromBinary = function (buffer, macros) {
+ this.readAndAssertKeyActionId(buffer);
+ var macroIndex = buffer.readUInt8();
+ this.macroId = macros[macroIndex].id;
+ return this;
+ };
+ PlayMacroAction.prototype.toJsonObject = function (macros) {
+ var _this = this;
+ return {
+ keyActionType: KeyAction_1.keyActionType.PlayMacroAction,
+ macroIndex: macros.findIndex(function (macro) { return macro.id === _this.macroId; })
+ };
+ };
+ PlayMacroAction.prototype.toBinary = function (buffer, macros) {
+ var _this = this;
+ buffer.writeUInt8(KeyAction_1.KeyActionId.PlayMacroAction);
+ buffer.writeUInt8(macros.findIndex(function (macro) { return macro.id === _this.macroId; }));
+ };
+ PlayMacroAction.prototype.toString = function () {
+ return "";
+ };
+ return PlayMacroAction;
+ }(KeyAction_1.KeyAction));
+ __decorate([
+ assert_1.assertUInt8,
+ __metadata("design:type", Number)
+ ], PlayMacroAction.prototype, "macroId", void 0);
+ exports.PlayMacroAction = PlayMacroAction;
+
+
+/***/ },
+/* 150 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __extends = (this && this.__extends) || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ var KeyAction_1 = __webpack_require__(143);
+ var SwitchKeymapAction = (function (_super) {
+ __extends(SwitchKeymapAction, _super);
+ function SwitchKeymapAction(parameter) {
+ var _this = _super.call(this) || this;
+ if (!parameter) {
+ return _this;
+ }
+ if (parameter instanceof SwitchKeymapAction) {
+ _this.keymapAbbreviation = parameter.keymapAbbreviation;
+ }
+ else {
+ _this.keymapAbbreviation = parameter.abbreviation;
+ }
+ return _this;
+ }
+ SwitchKeymapAction.prototype.fromJsonObject = function (jsonObject) {
+ this.assertKeyActionType(jsonObject);
+ this.keymapAbbreviation = jsonObject.keymapAbbreviation;
+ return this;
+ };
+ SwitchKeymapAction.prototype.fromBinary = function (buffer) {
+ this.readAndAssertKeyActionId(buffer);
+ this.keymapAbbreviation = buffer.readString();
+ return this;
+ };
+ SwitchKeymapAction.prototype.toJsonObject = function () {
+ return {
+ keyActionType: KeyAction_1.keyActionType.SwitchKeymapAction,
+ keymapAbbreviation: this.keymapAbbreviation
+ };
+ };
+ SwitchKeymapAction.prototype.toBinary = function (buffer) {
+ buffer.writeUInt8(KeyAction_1.KeyActionId.SwitchKeymapAction);
+ buffer.writeString(this.keymapAbbreviation);
+ };
+ SwitchKeymapAction.prototype.toString = function () {
+ return "";
+ };
+ return SwitchKeymapAction;
+ }(KeyAction_1.KeyAction));
+ exports.SwitchKeymapAction = SwitchKeymapAction;
+
+
+/***/ },
+/* 151 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __extends = (this && this.__extends) || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var assert_1 = __webpack_require__(145);
+ var KeyAction_1 = __webpack_require__(143);
+ var LayerName;
+ (function (LayerName) {
+ LayerName[LayerName["mod"] = 0] = "mod";
+ LayerName[LayerName["fn"] = 1] = "fn";
+ LayerName[LayerName["mouse"] = 2] = "mouse";
+ })(LayerName = exports.LayerName || (exports.LayerName = {}));
+ var SwitchLayerAction = (function (_super) {
+ __extends(SwitchLayerAction, _super);
+ function SwitchLayerAction(other) {
+ var _this = _super.call(this) || this;
+ if (!other) {
+ return _this;
+ }
+ _this.isLayerToggleable = other.isLayerToggleable;
+ _this.layer = other.layer;
+ return _this;
+ }
+ SwitchLayerAction.prototype.fromJsonObject = function (jsonObject) {
+ this.assertKeyActionType(jsonObject);
+ this.layer = LayerName[jsonObject.layer];
+ this.isLayerToggleable = jsonObject.toggle;
+ return this;
+ };
+ SwitchLayerAction.prototype.fromBinary = function (buffer) {
+ this.readAndAssertKeyActionId(buffer);
+ this.layer = buffer.readUInt8();
+ this.isLayerToggleable = buffer.readBoolean();
+ return this;
+ };
+ SwitchLayerAction.prototype.toJsonObject = function () {
+ return {
+ keyActionType: KeyAction_1.keyActionType.SwitchLayerAction,
+ layer: LayerName[this.layer],
+ toggle: this.isLayerToggleable
+ };
+ };
+ SwitchLayerAction.prototype.toBinary = function (buffer) {
+ buffer.writeUInt8(KeyAction_1.KeyActionId.SwitchLayerAction);
+ buffer.writeUInt8(this.layer);
+ buffer.writeBoolean(this.isLayerToggleable);
+ };
+ SwitchLayerAction.prototype.toString = function () {
+ return "";
+ };
+ return SwitchLayerAction;
+ }(KeyAction_1.KeyAction));
+ __decorate([
+ assert_1.assertEnum(LayerName),
+ __metadata("design:type", Number)
+ ], SwitchLayerAction.prototype, "layer", void 0);
+ exports.SwitchLayerAction = SwitchLayerAction;
+
+
+/***/ },
+/* 152 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var UhkBuffer_1 = __webpack_require__(153);
+ var index_1 = __webpack_require__(142);
+ var Helper = (function () {
+ function Helper() {
+ }
+ Helper.createKeyAction = function (source, macros) {
+ if (source instanceof index_1.KeyAction) {
+ return Helper.fromKeyAction(source);
+ }
+ else if (source instanceof UhkBuffer_1.UhkBuffer) {
+ return Helper.fromUhkBuffer(source, macros);
+ }
+ else {
+ return Helper.fromJSONObject(source, macros);
+ }
+ };
+ Helper.fromUhkBuffer = function (buffer, macros) {
+ var keyActionFirstByte = buffer.readUInt8();
+ buffer.backtrack();
+ if (keyActionFirstByte >= index_1.KeyActionId.KeystrokeAction && keyActionFirstByte < index_1.KeyActionId.LastKeystrokeAction) {
+ return new index_1.KeystrokeAction().fromBinary(buffer);
+ }
+ switch (keyActionFirstByte) {
+ case index_1.KeyActionId.NoneAction:
+ buffer.readUInt8(); // Read type just to skip it
+ return undefined;
+ case index_1.KeyActionId.SwitchLayerAction:
+ return new index_1.SwitchLayerAction().fromBinary(buffer);
+ case index_1.KeyActionId.SwitchKeymapAction:
+ return new index_1.SwitchKeymapAction().fromBinary(buffer);
+ case index_1.KeyActionId.MouseAction:
+ return new index_1.MouseAction().fromBinary(buffer);
+ case index_1.KeyActionId.PlayMacroAction:
+ return new index_1.PlayMacroAction().fromBinary(buffer, macros);
+ default:
+ throw "Invalid KeyAction first byte: " + keyActionFirstByte;
+ }
+ };
+ Helper.fromKeyAction = function (keyAction) {
+ var newKeyAction;
+ if (keyAction instanceof index_1.KeystrokeAction) {
+ newKeyAction = new index_1.KeystrokeAction(keyAction);
+ }
+ else if (keyAction instanceof index_1.SwitchLayerAction) {
+ newKeyAction = new index_1.SwitchLayerAction(keyAction);
+ }
+ else if (keyAction instanceof index_1.SwitchKeymapAction) {
+ newKeyAction = new index_1.SwitchKeymapAction(keyAction);
+ }
+ else if (keyAction instanceof index_1.MouseAction) {
+ newKeyAction = new index_1.MouseAction(keyAction);
+ }
+ else if (keyAction instanceof index_1.PlayMacroAction) {
+ newKeyAction = new index_1.PlayMacroAction(keyAction);
+ }
+ return newKeyAction;
+ };
+ Helper.fromJSONObject = function (keyAction, macros) {
+ if (!keyAction) {
+ return;
+ }
+ switch (keyAction.keyActionType) {
+ case index_1.keyActionType.KeystrokeAction:
+ return new index_1.KeystrokeAction().fromJsonObject(keyAction);
+ case index_1.keyActionType.SwitchLayerAction:
+ return new index_1.SwitchLayerAction().fromJsonObject(keyAction);
+ case index_1.keyActionType.SwitchKeymapAction:
+ return new index_1.SwitchKeymapAction().fromJsonObject(keyAction);
+ case index_1.keyActionType.MouseAction:
+ return new index_1.MouseAction().fromJsonObject(keyAction);
+ case index_1.keyActionType.PlayMacroAction:
+ return new index_1.PlayMacroAction().fromJsonObject(keyAction, macros);
+ default:
+ throw "Invalid KeyAction.keyActionType: \"" + keyAction.keyActionType + "\"";
+ }
+ };
+ return Helper;
+ }());
+ exports.Helper = Helper;
+
+
+/***/ },
+/* 153 */
+/***/ function(module, exports, __webpack_require__) {
+
+ /* WEBPACK VAR INJECTION */(function(Buffer, process) {"use strict";
+ var UhkBuffer = (function () {
+ function UhkBuffer() {
+ this._enableDump = false;
+ this.offset = 0;
+ this.bytesToBacktrack = 0;
+ this.buffer = new Buffer(UhkBuffer.eepromSize);
+ this.buffer.fill(0);
+ }
+ UhkBuffer.simpleElementWriter = function (buffer, element) {
+ element.toBinary(buffer); // TODO: Remove any
+ };
+ UhkBuffer.prototype.readInt8 = function () {
+ var value = this.buffer.readInt8(this.offset);
+ this.dump("i8(" + value + ")");
+ this.bytesToBacktrack = 1;
+ this.offset += this.bytesToBacktrack;
+ return value;
+ };
+ UhkBuffer.prototype.writeInt8 = function (value) {
+ this.dump("i8(" + value + ")");
+ this.buffer.writeInt8(value, this.offset);
+ this.offset += 1;
+ };
+ UhkBuffer.prototype.readUInt8 = function () {
+ var value = this.buffer.readUInt8(this.offset);
+ this.dump("u8(" + value + ")");
+ this.bytesToBacktrack = 1;
+ this.offset += this.bytesToBacktrack;
+ return value;
+ };
+ UhkBuffer.prototype.writeUInt8 = function (value) {
+ this.dump("u8(" + value + ")");
+ this.buffer.writeUInt8(value, this.offset);
+ this.offset += 1;
+ };
+ UhkBuffer.prototype.readInt16 = function () {
+ var value = this.buffer.readInt16LE(this.offset);
+ this.dump("i16(" + value + ")");
+ this.bytesToBacktrack = 2;
+ this.offset += this.bytesToBacktrack;
+ return value;
+ };
+ UhkBuffer.prototype.writeInt16 = function (value) {
+ this.dump("i16(" + value + ")");
+ this.buffer.writeInt16LE(value, this.offset);
+ this.offset += 2;
+ };
+ UhkBuffer.prototype.readUInt16 = function () {
+ var value = this.buffer.readUInt16LE(this.offset);
+ this.dump("u16(" + value + ")");
+ this.bytesToBacktrack = 2;
+ this.offset += this.bytesToBacktrack;
+ return value;
+ };
+ UhkBuffer.prototype.writeUInt16 = function (value) {
+ this.dump("u16(" + value + ")");
+ this.buffer.writeUInt16LE(value, this.offset);
+ this.offset += 2;
+ };
+ UhkBuffer.prototype.readInt32 = function () {
+ var value = this.buffer.readInt32LE(this.offset);
+ this.dump("i32(" + value + ")");
+ this.bytesToBacktrack = 4;
+ this.offset += this.bytesToBacktrack;
+ return value;
+ };
+ UhkBuffer.prototype.writeInt32 = function (value) {
+ this.dump("i32(" + value + ")");
+ this.buffer.writeInt32LE(value, this.offset);
+ this.offset += 4;
+ };
+ UhkBuffer.prototype.readUInt32 = function () {
+ var value = this.buffer.readUInt32LE(this.offset);
+ this.dump("u32(" + value + ")");
+ this.bytesToBacktrack = 4;
+ this.offset += this.bytesToBacktrack;
+ return value;
+ };
+ UhkBuffer.prototype.writeUInt32 = function (value) {
+ this.dump("u32(" + value + ")");
+ this.buffer.writeUInt32LE(value, this.offset);
+ this.offset += 4;
+ };
+ UhkBuffer.prototype.readCompactLength = function () {
+ var length = this.readUInt8();
+ if (length === UhkBuffer.longCompactLengthPrefix) {
+ length += this.readUInt8() << 8;
+ }
+ return length;
+ };
+ UhkBuffer.prototype.writeCompactLength = function (length) {
+ if (length >= UhkBuffer.longCompactLengthPrefix) {
+ this.writeUInt8(UhkBuffer.longCompactLengthPrefix);
+ this.writeUInt16(length);
+ }
+ else {
+ this.writeUInt8(length);
+ }
+ };
+ UhkBuffer.prototype.readString = function () {
+ var stringByteLength = this.readCompactLength();
+ var str = this.buffer.toString(UhkBuffer.stringEncoding, this.offset, this.offset + stringByteLength);
+ this.dump(UhkBuffer.stringEncoding + "(" + str + ")");
+ this.bytesToBacktrack = stringByteLength;
+ this.offset += stringByteLength;
+ return str;
+ };
+ UhkBuffer.prototype.writeString = function (str) {
+ var stringByteLength = Buffer.byteLength(str, UhkBuffer.stringEncoding);
+ if (stringByteLength > UhkBuffer.maxCompactLength) {
+ throw "Cannot serialize string: " + stringByteLength + " bytes is larger\n than the maximum allowed length of " + UhkBuffer.maxCompactLength + " bytes";
+ }
+ this.writeCompactLength(stringByteLength);
+ this.dump(UhkBuffer.stringEncoding + "(" + str + ")");
+ this.buffer.write(str, this.offset, stringByteLength, UhkBuffer.stringEncoding);
+ this.offset += stringByteLength;
+ };
+ UhkBuffer.prototype.readBoolean = function () {
+ return this.readUInt8() !== 0;
+ };
+ UhkBuffer.prototype.writeBoolean = function (bool) {
+ this.writeUInt8(bool ? 1 : 0);
+ };
+ UhkBuffer.prototype.readArray = function (elementReader) {
+ var array = [];
+ var length = this.readCompactLength();
+ for (var i = 0; i < length; ++i) {
+ array.push(elementReader(this, i));
+ }
+ return array;
+ };
+ UhkBuffer.prototype.writeArray = function (array, elementWriter) {
+ if (elementWriter === void 0) { elementWriter = UhkBuffer.simpleElementWriter; }
+ var length = array.length;
+ this.writeCompactLength(length);
+ for (var i = 0; i < length; ++i) {
+ elementWriter(this, array[i], i);
+ }
+ };
+ UhkBuffer.prototype.backtrack = function () {
+ this.offset -= this.bytesToBacktrack;
+ this.bytesToBacktrack = 0;
+ };
+ UhkBuffer.prototype.getBufferContent = function () {
+ return this.buffer.slice(0, this.offset);
+ };
+ Object.defineProperty(UhkBuffer.prototype, "enableDump", {
+ get: function () {
+ return this._enableDump;
+ },
+ set: function (value) {
+ if (value) {
+ UhkBuffer.isFirstElementToDump = true;
+ }
+ this._enableDump = value;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ UhkBuffer.prototype.dump = function (value) {
+ if (!this.enableDump) {
+ return;
+ }
+ if (!UhkBuffer.isFirstElementToDump) {
+ process.stdout.write(', ');
+ }
+ process.stdout.write(value);
+ if (UhkBuffer.isFirstElementToDump) {
+ UhkBuffer.isFirstElementToDump = false;
+ }
+ };
+ return UhkBuffer;
+ }());
+ UhkBuffer.eepromSize = 32 * 1024;
+ UhkBuffer.maxCompactLength = 0xFFFF;
+ UhkBuffer.longCompactLengthPrefix = 0xFF;
+ UhkBuffer.stringEncoding = 'utf8';
+ UhkBuffer.isFirstElementToDump = false;
+ exports.UhkBuffer = UhkBuffer;
+
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(154).Buffer, __webpack_require__(1)))
+
+/***/ },
+/* 154 */,
+/* 155 */,
+/* 156 */,
+/* 157 */,
+/* 158 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var Layer_1 = __webpack_require__(159);
+ var Keymap = (function () {
+ function Keymap(keymap) {
+ if (!keymap) {
+ return;
+ }
+ this.name = keymap.name;
+ this.description = keymap.description;
+ this.abbreviation = keymap.abbreviation;
+ this.isDefault = keymap.isDefault;
+ this.layers = keymap.layers.map(function (layer) { return new Layer_1.Layer(layer); });
+ }
+ Keymap.prototype.fromJsonObject = function (jsonObject, macros) {
+ this.isDefault = jsonObject.isDefault;
+ this.abbreviation = jsonObject.abbreviation;
+ this.name = jsonObject.name;
+ this.description = jsonObject.description;
+ this.layers = jsonObject.layers.map(function (layer) { return new Layer_1.Layer().fromJsonObject(layer, macros); });
+ return this;
+ };
+ Keymap.prototype.fromBinary = function (buffer, macros) {
+ this.abbreviation = buffer.readString();
+ this.isDefault = buffer.readBoolean();
+ this.name = buffer.readString();
+ this.description = buffer.readString();
+ this.layers = buffer.readArray(function (uhkBuffer) {
+ return new Layer_1.Layer().fromBinary(uhkBuffer, macros);
+ });
+ return this;
+ };
+ Keymap.prototype.toJsonObject = function (macros) {
+ return {
+ isDefault: this.isDefault,
+ abbreviation: this.abbreviation,
+ name: this.name,
+ description: this.description,
+ layers: this.layers.map(function (layer) { return layer.toJsonObject(macros); })
+ };
+ };
+ Keymap.prototype.toBinary = function (buffer, macros) {
+ buffer.writeString(this.abbreviation);
+ buffer.writeBoolean(this.isDefault);
+ buffer.writeString(this.name);
+ buffer.writeString(this.description);
+ buffer.writeArray(this.layers, function (uhkBuffer, layer) {
+ layer.toBinary(uhkBuffer, macros);
+ });
+ };
+ Keymap.prototype.toString = function () {
+ return "";
+ };
+ return Keymap;
+ }());
+ exports.Keymap = Keymap;
+
+
+/***/ },
+/* 159 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var Module_1 = __webpack_require__(160);
+ var Layer = (function () {
+ function Layer(layers) {
+ if (!layers) {
+ return;
+ }
+ this.modules = layers.modules.map(function (module) { return new Module_1.Module(module); });
+ }
+ Layer.prototype.fromJsonObject = function (jsonObject, macros) {
+ this.modules = jsonObject.modules.map(function (module) { return new Module_1.Module().fromJsonObject(module, macros); });
+ return this;
+ };
+ Layer.prototype.fromBinary = function (buffer, macros) {
+ this.modules = buffer.readArray(function (uhkBuffer) {
+ return new Module_1.Module().fromBinary(uhkBuffer, macros);
+ });
+ return this;
+ };
+ Layer.prototype.toJsonObject = function (macros) {
+ return {
+ modules: this.modules.map(function (module) { return module.toJsonObject(macros); })
+ };
+ };
+ Layer.prototype.toBinary = function (buffer, macros) {
+ buffer.writeArray(this.modules, function (uhkBuffer, module) {
+ module.toBinary(uhkBuffer, macros);
+ });
+ };
+ Layer.prototype.toString = function () {
+ return "";
+ };
+ return Layer;
+ }());
+ exports.Layer = Layer;
+
+
+/***/ },
+/* 160 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var assert_1 = __webpack_require__(145);
+ var key_action_1 = __webpack_require__(142);
+ var key_action_2 = __webpack_require__(142);
+ var PointerRole;
+ (function (PointerRole) {
+ PointerRole[PointerRole["none"] = 0] = "none";
+ PointerRole[PointerRole["move"] = 1] = "move";
+ PointerRole[PointerRole["scroll"] = 2] = "scroll";
+ })(PointerRole || (PointerRole = {}));
+ var Module = (function () {
+ function Module(other) {
+ if (!other) {
+ return;
+ }
+ this.id = other.id;
+ this.keyActions = other.keyActions.map(function (keyAction) { return key_action_1.Helper.createKeyAction(keyAction); });
+ this.pointerRole = other.pointerRole;
+ }
+ Module.prototype.fromJsonObject = function (jsonObject, macros) {
+ this.id = jsonObject.id;
+ this.pointerRole = PointerRole[jsonObject.pointerRole];
+ this.keyActions = jsonObject.keyActions.map(function (keyAction) {
+ return key_action_1.Helper.createKeyAction(keyAction, macros);
+ });
+ return this;
+ };
+ Module.prototype.fromBinary = function (buffer, macros) {
+ this.id = buffer.readUInt8();
+ this.pointerRole = buffer.readUInt8();
+ var keyActionsLength = buffer.readCompactLength();
+ this.keyActions = [];
+ for (var i = 0; i < keyActionsLength; ++i) {
+ this.keyActions.push(key_action_1.Helper.createKeyAction(buffer, macros));
+ }
+ return this;
+ };
+ Module.prototype.toJsonObject = function (macros) {
+ return {
+ id: this.id,
+ pointerRole: PointerRole[this.pointerRole],
+ keyActions: this.keyActions.map(function (keyAction) {
+ if (keyAction && (macros || !(keyAction instanceof key_action_2.PlayMacroAction || keyAction instanceof key_action_2.SwitchLayerAction))) {
+ return keyAction.toJsonObject(macros);
+ }
+ })
+ };
+ };
+ Module.prototype.toBinary = function (buffer, macros) {
+ buffer.writeUInt8(this.id);
+ buffer.writeUInt8(this.pointerRole);
+ var noneAction = new key_action_1.NoneAction();
+ var keyActions = this.keyActions.map(function (keyAction) {
+ if (keyAction) {
+ return keyAction;
+ }
+ return noneAction;
+ });
+ buffer.writeArray(keyActions, function (uhkBuffer, keyAction) {
+ keyAction.toBinary(uhkBuffer, macros);
+ });
+ };
+ Module.prototype.toString = function () {
+ return "";
+ };
+ return Module;
+ }());
+ __decorate([
+ assert_1.assertUInt8,
+ __metadata("design:type", Number)
+ ], Module.prototype, "id", void 0);
+ __decorate([
+ assert_1.assertEnum(PointerRole),
+ __metadata("design:type", Number)
+ ], Module.prototype, "pointerRole", void 0);
+ exports.Module = Module;
+
+
+/***/ },
+/* 161 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var assert_1 = __webpack_require__(145);
+ var macro_action_1 = __webpack_require__(162);
+ var Macro = (function () {
+ function Macro(other) {
+ if (!other) {
+ return;
+ }
+ this.id = other.id;
+ this.isLooped = other.isLooped;
+ this.isPrivate = other.isPrivate;
+ this.name = other.name;
+ this.macroActions = other.macroActions.map(function (macroAction) { return macro_action_1.Helper.createMacroAction(macroAction); });
+ }
+ Macro.prototype.fromJsonObject = function (jsonObject) {
+ this.isLooped = jsonObject.isLooped;
+ this.isPrivate = jsonObject.isPrivate;
+ this.name = jsonObject.name;
+ this.macroActions = jsonObject.macroActions.map(function (macroAction) { return macro_action_1.Helper.createMacroAction(macroAction); });
+ return this;
+ };
+ Macro.prototype.fromBinary = function (buffer) {
+ this.isLooped = buffer.readBoolean();
+ this.isPrivate = buffer.readBoolean();
+ this.name = buffer.readString();
+ var macroActionsLength = buffer.readCompactLength();
+ this.macroActions = [];
+ for (var i = 0; i < macroActionsLength; ++i) {
+ this.macroActions.push(macro_action_1.Helper.createMacroAction(buffer));
+ }
+ return this;
+ };
+ Macro.prototype.toJsonObject = function () {
+ return {
+ isLooped: this.isLooped,
+ isPrivate: this.isPrivate,
+ name: this.name,
+ macroActions: this.macroActions.map(function (macroAction) { return macroAction.toJsonObject(); })
+ };
+ };
+ Macro.prototype.toBinary = function (buffer) {
+ buffer.writeBoolean(this.isLooped);
+ buffer.writeBoolean(this.isPrivate);
+ buffer.writeString(this.name);
+ buffer.writeArray(this.macroActions);
+ };
+ Macro.prototype.toString = function () {
+ return "";
+ };
+ return Macro;
+ }());
+ __decorate([
+ assert_1.assertUInt8,
+ __metadata("design:type", Number)
+ ], Macro.prototype, "id", void 0);
+ exports.Macro = Macro;
+
+
+/***/ },
+/* 162 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ __export(__webpack_require__(163));
+ __export(__webpack_require__(165));
+ __export(__webpack_require__(166));
+ __export(__webpack_require__(164));
+ __export(__webpack_require__(168));
+ __export(__webpack_require__(167));
+ __export(__webpack_require__(169));
+ __export(__webpack_require__(170));
+ __export(__webpack_require__(171));
+
+
+/***/ },
+/* 163 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __extends = (this && this.__extends) || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var assert_1 = __webpack_require__(145);
+ var MacroAction_1 = __webpack_require__(164);
+ var DelayMacroAction = (function (_super) {
+ __extends(DelayMacroAction, _super);
+ function DelayMacroAction(other) {
+ var _this = _super.call(this) || this;
+ if (!other) {
+ return _this;
+ }
+ _this.delay = other.delay;
+ return _this;
+ }
+ DelayMacroAction.prototype.fromJsonObject = function (jsObject) {
+ this.assertMacroActionType(jsObject);
+ this.delay = jsObject.delay;
+ return this;
+ };
+ DelayMacroAction.prototype.fromBinary = function (buffer) {
+ this.readAndAssertMacroActionId(buffer);
+ this.delay = buffer.readUInt16();
+ return this;
+ };
+ DelayMacroAction.prototype.toJsonObject = function () {
+ return {
+ macroActionType: MacroAction_1.macroActionType.DelayMacroAction,
+ delay: this.delay
+ };
+ };
+ DelayMacroAction.prototype.toBinary = function (buffer) {
+ buffer.writeUInt8(MacroAction_1.MacroActionId.DelayMacroAction);
+ buffer.writeUInt16(this.delay);
+ };
+ DelayMacroAction.prototype.toString = function () {
+ return "";
+ };
+ return DelayMacroAction;
+ }(MacroAction_1.MacroAction));
+ __decorate([
+ assert_1.assertUInt16,
+ __metadata("design:type", Number)
+ ], DelayMacroAction.prototype, "delay", void 0);
+ exports.DelayMacroAction = DelayMacroAction;
+
+
+/***/ },
+/* 164 */
+/***/ function(module, exports) {
+
+ "use strict";
+ var MacroActionId;
+ (function (MacroActionId) {
+ MacroActionId[MacroActionId["KeyMacroAction"] = 0] = "KeyMacroAction";
+ /*
+ 0 - 8 are reserved for KeyMacroAction
+ PressKeyMacroAction with scancode: 0
+ PressKeyMacroAction with modifiers: 1
+ PressKeyMacroAction with scancode and modifiers 2
+ HoldKeyMacroAction with scancode: 3
+ HoldKeyMacroAction with modifiers: 4
+ HoldKeyMacroAction with scancode and modifiers 5
+ ReleaseKeyMacroAction with scancode: 6
+ ReleaseKeyMacroAction with modifiers: 7
+ ReleaseKeyMacroAction with scancode and modifiers 8
+ */
+ MacroActionId[MacroActionId["LastKeyMacroAction"] = 8] = "LastKeyMacroAction";
+ MacroActionId[MacroActionId["MouseButtonMacroAction"] = 9] = "MouseButtonMacroAction";
+ /*
+ 9 - 11 are reserved for MouseButtonMacroAction
+ PressMouseButtonsMacroAction = 9,
+ HoldMouseButtonsMacroAction = 10,
+ ReleaseMouseButtonsMacroAction = 11,
+ */
+ MacroActionId[MacroActionId["LastMouseButtonMacroAction"] = 11] = "LastMouseButtonMacroAction";
+ MacroActionId[MacroActionId["MoveMouseMacroAction"] = 12] = "MoveMouseMacroAction";
+ MacroActionId[MacroActionId["ScrollMouseMacroAction"] = 13] = "ScrollMouseMacroAction";
+ MacroActionId[MacroActionId["DelayMacroAction"] = 14] = "DelayMacroAction";
+ MacroActionId[MacroActionId["TextMacroAction"] = 15] = "TextMacroAction";
+ })(MacroActionId = exports.MacroActionId || (exports.MacroActionId = {}));
+ var MacroSubAction;
+ (function (MacroSubAction) {
+ MacroSubAction[MacroSubAction["press"] = 0] = "press";
+ MacroSubAction[MacroSubAction["hold"] = 1] = "hold";
+ MacroSubAction[MacroSubAction["release"] = 2] = "release";
+ })(MacroSubAction = exports.MacroSubAction || (exports.MacroSubAction = {}));
+ exports.macroActionType = {
+ KeyMacroAction: 'key',
+ MouseButtonMacroAction: 'mouseButton',
+ MoveMouseMacroAction: 'moveMouse',
+ ScrollMouseMacroAction: 'scrollMouse',
+ DelayMacroAction: 'delay',
+ TextMacroAction: 'text'
+ };
+ var MacroAction = (function () {
+ function MacroAction() {
+ }
+ MacroAction.prototype.assertMacroActionType = function (jsObject) {
+ var macroActionClassname = this.constructor.name;
+ var macroActionTypeString = exports.macroActionType[macroActionClassname];
+ if (jsObject.macroActionType !== macroActionTypeString) {
+ throw "Invalid " + macroActionClassname + ".macroActionType: " + jsObject.macroActionType;
+ }
+ };
+ MacroAction.prototype.readAndAssertMacroActionId = function (buffer) {
+ var classname = this.constructor.name;
+ var readMacroActionId = buffer.readUInt8();
+ var macroActionId = MacroActionId[classname];
+ if (macroActionId === MacroActionId.KeyMacroAction) {
+ if (readMacroActionId < MacroActionId.KeyMacroAction || readMacroActionId > MacroActionId.LastKeyMacroAction) {
+ throw "Invalid " + classname + " first byte: " + readMacroActionId;
+ }
+ }
+ else if (macroActionId === MacroActionId.MouseButtonMacroAction) {
+ if (readMacroActionId < MacroActionId.MouseButtonMacroAction ||
+ readMacroActionId > MacroActionId.LastMouseButtonMacroAction) {
+ throw "Invalid " + classname + " first byte: " + readMacroActionId;
+ }
+ }
+ else if (readMacroActionId !== macroActionId) {
+ throw "Invalid " + classname + " first byte: " + readMacroActionId;
+ }
+ return readMacroActionId;
+ };
+ return MacroAction;
+ }());
+ exports.MacroAction = MacroAction;
+
+
+/***/ },
+/* 165 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var key_action_1 = __webpack_require__(142);
+ var DelayMacroAction_1 = __webpack_require__(163);
+ var KeyMacroAction_1 = __webpack_require__(166);
+ var MacroAction_1 = __webpack_require__(164);
+ var MouseButtonMacroAction_1 = __webpack_require__(167);
+ var MoveMouseMacroAction_1 = __webpack_require__(168);
+ var ScrollMouseMacroAction_1 = __webpack_require__(169);
+ var TextMacroAction_1 = __webpack_require__(170);
+ var EditableMacroAction = (function () {
+ function EditableMacroAction(jsObject) {
+ if (!jsObject) {
+ return;
+ }
+ this.macroActionType = jsObject.macroActionType;
+ switch (this.macroActionType) {
+ case MacroAction_1.macroActionType.KeyMacroAction:
+ this.action = MacroAction_1.MacroSubAction[jsObject.action];
+ this.scancode = jsObject.scancode;
+ this.modifierMask = jsObject.modifierMask;
+ break;
+ case MacroAction_1.macroActionType.MouseButtonMacroAction:
+ this.action = MacroAction_1.MacroSubAction[jsObject.action];
+ this.mouseButtonsMask = jsObject.mouseButtonsMask;
+ break;
+ case MacroAction_1.macroActionType.MoveMouseMacroAction:
+ this.moveX = jsObject.x;
+ this.moveY = jsObject.y;
+ break;
+ case MacroAction_1.macroActionType.ScrollMouseMacroAction:
+ this.scrollX = jsObject.x;
+ this.scrollY = jsObject.y;
+ break;
+ case MacroAction_1.macroActionType.TextMacroAction:
+ this.text = jsObject.text;
+ break;
+ case MacroAction_1.macroActionType.DelayMacroAction:
+ this.delay = jsObject.delay;
+ break;
+ default:
+ break;
+ }
+ }
+ EditableMacroAction.prototype.toJsObject = function () {
+ return {
+ macroActionType: this.macroActionType,
+ action: this.action,
+ delay: this.delay,
+ text: this.text,
+ scancode: this.scancode,
+ modifierMask: this.modifierMask,
+ mouseButtonsMask: this.mouseButtonsMask,
+ mouseMove: {
+ x: this.moveX,
+ y: this.moveY
+ },
+ mouseScroll: {
+ x: this.scrollX,
+ y: this.scrollY
+ }
+ };
+ };
+ EditableMacroAction.prototype.fromKeyAction = function (keyAction) {
+ var data = keyAction.toJsonObject();
+ this.scancode = data.scancode;
+ this.modifierMask = data.modifierMask;
+ };
+ EditableMacroAction.prototype.toKeystrokeAction = function () {
+ var data = this.toJsObject();
+ data.keyActionType = key_action_1.keyActionType.KeystrokeAction;
+ return (new key_action_1.KeystrokeAction().fromJsonObject(data));
+ };
+ EditableMacroAction.prototype.setMouseButtons = function (buttonStates) {
+ var bitmask = 0;
+ for (var i = 0; i < buttonStates.length; i++) {
+ bitmask |= Number(buttonStates[i]) << i;
+ }
+ this.mouseButtonsMask = bitmask;
+ };
+ EditableMacroAction.prototype.getMouseButtons = function () {
+ var enabledMouseButtons = [];
+ for (var bitmask = this.mouseButtonsMask; bitmask; bitmask >>>= 1) {
+ enabledMouseButtons.push(Boolean(bitmask & 1));
+ }
+ return enabledMouseButtons;
+ };
+ EditableMacroAction.prototype.toClass = function () {
+ switch (this.macroActionType) {
+ // Delay action
+ case MacroAction_1.macroActionType.DelayMacroAction:
+ return new DelayMacroAction_1.DelayMacroAction().fromJsonObject({
+ macroActionType: this.macroActionType,
+ delay: this.delay
+ });
+ // Text action
+ case MacroAction_1.macroActionType.TextMacroAction:
+ return new TextMacroAction_1.TextMacroAction().fromJsonObject({
+ macroActionType: this.macroActionType,
+ text: this.text
+ });
+ // Keypress action
+ case MacroAction_1.macroActionType.KeyMacroAction:
+ return new KeyMacroAction_1.KeyMacroAction().fromJsonObject({
+ macroActionType: this.macroActionType,
+ action: MacroAction_1.MacroSubAction[this.action],
+ scancode: this.scancode,
+ modifierMask: this.modifierMask
+ });
+ // Mouse actions
+ case MacroAction_1.macroActionType.MouseButtonMacroAction:
+ return new MouseButtonMacroAction_1.MouseButtonMacroAction().fromJsonObject({
+ macroActionType: this.macroActionType,
+ action: MacroAction_1.MacroSubAction[this.action],
+ mouseButtonsMask: this.mouseButtonsMask
+ });
+ case MacroAction_1.macroActionType.MoveMouseMacroAction:
+ return new MoveMouseMacroAction_1.MoveMouseMacroAction().fromJsonObject({
+ macroActionType: this.macroActionType,
+ x: this.moveX,
+ y: this.moveY
+ });
+ case MacroAction_1.macroActionType.ScrollMouseMacroAction:
+ return new ScrollMouseMacroAction_1.ScrollMouseMacroAction().fromJsonObject({
+ macroActionType: this.macroActionType,
+ x: this.scrollX,
+ y: this.scrollY
+ });
+ default:
+ throw new Error('Macro action type is missing or not implemented.');
+ }
+ };
+ EditableMacroAction.prototype.isKeyAction = function () {
+ return this.macroActionType === MacroAction_1.macroActionType.KeyMacroAction;
+ };
+ EditableMacroAction.prototype.isMouseButtonAction = function () {
+ return this.macroActionType === MacroAction_1.macroActionType.MouseButtonMacroAction;
+ };
+ EditableMacroAction.prototype.isOnlyHoldAction = function () {
+ return this.action === MacroAction_1.MacroSubAction.hold;
+ };
+ EditableMacroAction.prototype.isOnlyPressAction = function () {
+ return this.action === MacroAction_1.MacroSubAction.press;
+ };
+ EditableMacroAction.prototype.isOnlyReleaseAction = function () {
+ return this.action === MacroAction_1.MacroSubAction.release;
+ };
+ return EditableMacroAction;
+ }());
+ exports.EditableMacroAction = EditableMacroAction;
+
+
+/***/ },
+/* 166 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __extends = (this && this.__extends) || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var assert_1 = __webpack_require__(145);
+ var MacroAction_1 = __webpack_require__(164);
+ var NUM_OF_COMBINATIONS = 3; // Cases: scancode, modifer, both
+ var KeyMacroAction = (function (_super) {
+ __extends(KeyMacroAction, _super);
+ function KeyMacroAction(other) {
+ var _this = _super.call(this) || this;
+ if (!other) {
+ return _this;
+ }
+ _this.action = other.action;
+ _this.scancode = other.scancode;
+ _this.modifierMask = other.modifierMask;
+ return _this;
+ }
+ KeyMacroAction.prototype.fromJsonObject = function (jsObject) {
+ this.assertMacroActionType(jsObject);
+ this.action = MacroAction_1.MacroSubAction[jsObject.action];
+ this.scancode = jsObject.scancode;
+ this.modifierMask = jsObject.modifierMask;
+ return this;
+ };
+ KeyMacroAction.prototype.fromBinary = function (buffer) {
+ var macroActionId = this.readAndAssertMacroActionId(buffer);
+ var keyMacroType = macroActionId - MacroAction_1.MacroActionId.KeyMacroAction;
+ this.action = Math.floor(keyMacroType / NUM_OF_COMBINATIONS);
+ keyMacroType %= NUM_OF_COMBINATIONS;
+ if (keyMacroType % 2 === 0) {
+ this.scancode = buffer.readUInt8();
+ }
+ if (keyMacroType !== 0) {
+ this.modifierMask = buffer.readUInt8();
+ }
+ return this;
+ };
+ KeyMacroAction.prototype.toJsonObject = function () {
+ var jsObject = {
+ macroActionType: MacroAction_1.macroActionType.KeyMacroAction,
+ action: MacroAction_1.MacroSubAction[this.action]
+ };
+ if (this.hasScancode()) {
+ jsObject.scancode = this.scancode;
+ }
+ if (this.hasModifiers()) {
+ jsObject.modifierMask = this.modifierMask;
+ }
+ return jsObject;
+ };
+ KeyMacroAction.prototype.toBinary = function (buffer) {
+ var keyMacroType = MacroAction_1.MacroActionId.KeyMacroAction;
+ keyMacroType += NUM_OF_COMBINATIONS * this.action;
+ if (this.hasModifiers()) {
+ ++keyMacroType;
+ if (this.hasScancode()) {
+ ++keyMacroType;
+ }
+ }
+ buffer.writeUInt8(keyMacroType);
+ if (this.hasScancode()) {
+ buffer.writeUInt8(this.scancode);
+ }
+ if (this.hasModifiers()) {
+ buffer.writeUInt8(this.modifierMask);
+ }
+ };
+ KeyMacroAction.prototype.toString = function () {
+ return "";
+ };
+ KeyMacroAction.prototype.isModifierActive = function (modifier) {
+ return (this.modifierMask & modifier) > 0;
+ };
+ KeyMacroAction.prototype.hasScancode = function () {
+ return !!this.scancode;
+ };
+ KeyMacroAction.prototype.hasModifiers = function () {
+ return !!this.modifierMask;
+ };
+ KeyMacroAction.prototype.isHoldAction = function () {
+ return this.action === MacroAction_1.MacroSubAction.hold;
+ };
+ KeyMacroAction.prototype.isPressAction = function () {
+ return this.action === MacroAction_1.MacroSubAction.press;
+ };
+ KeyMacroAction.prototype.isReleaseAction = function () {
+ return this.action === MacroAction_1.MacroSubAction.release;
+ };
+ return KeyMacroAction;
+ }(MacroAction_1.MacroAction));
+ __decorate([
+ assert_1.assertEnum(MacroAction_1.MacroSubAction),
+ __metadata("design:type", Number)
+ ], KeyMacroAction.prototype, "action", void 0);
+ __decorate([
+ assert_1.assertUInt8,
+ __metadata("design:type", Number)
+ ], KeyMacroAction.prototype, "scancode", void 0);
+ __decorate([
+ assert_1.assertUInt8,
+ __metadata("design:type", Number)
+ ], KeyMacroAction.prototype, "modifierMask", void 0);
+ exports.KeyMacroAction = KeyMacroAction;
+
+
+/***/ },
+/* 167 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __extends = (this && this.__extends) || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var assert_1 = __webpack_require__(145);
+ var MacroAction_1 = __webpack_require__(164);
+ var MouseButtons;
+ (function (MouseButtons) {
+ MouseButtons[MouseButtons["Left"] = 1] = "Left";
+ MouseButtons[MouseButtons["Middle"] = 2] = "Middle";
+ MouseButtons[MouseButtons["Right"] = 4] = "Right";
+ })(MouseButtons = exports.MouseButtons || (exports.MouseButtons = {}));
+ ;
+ var MouseButtonMacroAction = (function (_super) {
+ __extends(MouseButtonMacroAction, _super);
+ function MouseButtonMacroAction(other) {
+ var _this = _super.call(this) || this;
+ if (!other) {
+ return _this;
+ }
+ _this.action = other.action;
+ _this.mouseButtonsMask = other.mouseButtonsMask;
+ return _this;
+ }
+ MouseButtonMacroAction.prototype.fromJsonObject = function (jsObject) {
+ this.assertMacroActionType(jsObject);
+ this.action = MacroAction_1.MacroSubAction[jsObject.action];
+ this.mouseButtonsMask = jsObject.mouseButtonsMask;
+ return this;
+ };
+ MouseButtonMacroAction.prototype.fromBinary = function (buffer) {
+ var macroActionId = this.readAndAssertMacroActionId(buffer);
+ this.action = macroActionId - MacroAction_1.MacroActionId.MouseButtonMacroAction;
+ this.mouseButtonsMask = buffer.readUInt8();
+ return this;
+ };
+ MouseButtonMacroAction.prototype.toJsonObject = function () {
+ return {
+ macroActionType: MacroAction_1.macroActionType.MouseButtonMacroAction,
+ action: MacroAction_1.MacroSubAction[this.action],
+ mouseButtonsMask: this.mouseButtonsMask
+ };
+ };
+ MouseButtonMacroAction.prototype.toBinary = function (buffer) {
+ buffer.writeUInt8(MacroAction_1.MacroActionId.MouseButtonMacroAction + this.action);
+ buffer.writeUInt8(this.mouseButtonsMask);
+ };
+ MouseButtonMacroAction.prototype.setMouseButtons = function (buttonStates) {
+ var bitmask = 0;
+ for (var i = 0; i < buttonStates.length; i++) {
+ bitmask |= Number(buttonStates[i]) << i;
+ }
+ this.mouseButtonsMask = bitmask;
+ };
+ MouseButtonMacroAction.prototype.getMouseButtons = function () {
+ var enabledMouseButtons = [];
+ for (var bitmask = this.mouseButtonsMask; bitmask; bitmask >>>= 1) {
+ enabledMouseButtons.push(Boolean(bitmask & 1));
+ }
+ return enabledMouseButtons;
+ };
+ MouseButtonMacroAction.prototype.toString = function () {
+ return "";
+ };
+ MouseButtonMacroAction.prototype.hasButtons = function () {
+ return this.mouseButtonsMask !== 0;
+ };
+ MouseButtonMacroAction.prototype.isOnlyHoldAction = function () {
+ return this.action === MacroAction_1.MacroSubAction.hold;
+ };
+ MouseButtonMacroAction.prototype.isOnlyPressAction = function () {
+ return this.action === MacroAction_1.MacroSubAction.press;
+ };
+ MouseButtonMacroAction.prototype.isOnlyReleaseAction = function () {
+ return this.action === MacroAction_1.MacroSubAction.release;
+ };
+ return MouseButtonMacroAction;
+ }(MacroAction_1.MacroAction));
+ __decorate([
+ assert_1.assertEnum(MacroAction_1.MacroSubAction),
+ __metadata("design:type", Number)
+ ], MouseButtonMacroAction.prototype, "action", void 0);
+ __decorate([
+ assert_1.assertUInt8,
+ __metadata("design:type", Number)
+ ], MouseButtonMacroAction.prototype, "mouseButtonsMask", void 0);
+ exports.MouseButtonMacroAction = MouseButtonMacroAction;
+
+
+/***/ },
+/* 168 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __extends = (this && this.__extends) || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var assert_1 = __webpack_require__(145);
+ var MacroAction_1 = __webpack_require__(164);
+ var MoveMouseMacroAction = (function (_super) {
+ __extends(MoveMouseMacroAction, _super);
+ function MoveMouseMacroAction(other) {
+ var _this = _super.call(this) || this;
+ if (!other) {
+ return _this;
+ }
+ _this.x = other.x;
+ _this.y = other.y;
+ return _this;
+ }
+ MoveMouseMacroAction.prototype.fromJsonObject = function (jsObject) {
+ this.assertMacroActionType(jsObject);
+ this.x = jsObject.x;
+ this.y = jsObject.y;
+ return this;
+ };
+ MoveMouseMacroAction.prototype.fromBinary = function (buffer) {
+ this.readAndAssertMacroActionId(buffer);
+ this.x = buffer.readInt16();
+ this.y = buffer.readInt16();
+ return this;
+ };
+ MoveMouseMacroAction.prototype.toJsonObject = function () {
+ return {
+ macroActionType: MacroAction_1.macroActionType.MoveMouseMacroAction,
+ x: this.x,
+ y: this.y
+ };
+ };
+ MoveMouseMacroAction.prototype.toBinary = function (buffer) {
+ buffer.writeUInt8(MacroAction_1.MacroActionId.MoveMouseMacroAction);
+ buffer.writeInt16(this.x);
+ buffer.writeInt16(this.y);
+ };
+ MoveMouseMacroAction.prototype.toString = function () {
+ return "";
+ };
+ return MoveMouseMacroAction;
+ }(MacroAction_1.MacroAction));
+ __decorate([
+ assert_1.assertInt16,
+ __metadata("design:type", Number)
+ ], MoveMouseMacroAction.prototype, "x", void 0);
+ __decorate([
+ assert_1.assertInt16,
+ __metadata("design:type", Number)
+ ], MoveMouseMacroAction.prototype, "y", void 0);
+ exports.MoveMouseMacroAction = MoveMouseMacroAction;
+
+
+/***/ },
+/* 169 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __extends = (this && this.__extends) || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var assert_1 = __webpack_require__(145);
+ var MacroAction_1 = __webpack_require__(164);
+ var ScrollMouseMacroAction = (function (_super) {
+ __extends(ScrollMouseMacroAction, _super);
+ function ScrollMouseMacroAction(other) {
+ var _this = _super.call(this) || this;
+ if (!other) {
+ return _this;
+ }
+ _this.x = other.x;
+ _this.y = other.y;
+ return _this;
+ }
+ ScrollMouseMacroAction.prototype.fromJsonObject = function (jsObject) {
+ this.assertMacroActionType(jsObject);
+ this.x = jsObject.x;
+ this.y = jsObject.y;
+ return this;
+ };
+ ScrollMouseMacroAction.prototype.fromBinary = function (buffer) {
+ this.readAndAssertMacroActionId(buffer);
+ this.x = buffer.readInt16();
+ this.y = buffer.readInt16();
+ return this;
+ };
+ ScrollMouseMacroAction.prototype.toJsonObject = function () {
+ return {
+ macroActionType: MacroAction_1.macroActionType.ScrollMouseMacroAction,
+ x: this.x,
+ y: this.y
+ };
+ };
+ ScrollMouseMacroAction.prototype.toBinary = function (buffer) {
+ buffer.writeUInt8(MacroAction_1.MacroActionId.ScrollMouseMacroAction);
+ buffer.writeInt16(this.x);
+ buffer.writeInt16(this.y);
+ };
+ ScrollMouseMacroAction.prototype.toString = function () {
+ return "";
+ };
+ return ScrollMouseMacroAction;
+ }(MacroAction_1.MacroAction));
+ __decorate([
+ assert_1.assertInt16,
+ __metadata("design:type", Number)
+ ], ScrollMouseMacroAction.prototype, "x", void 0);
+ __decorate([
+ assert_1.assertInt16,
+ __metadata("design:type", Number)
+ ], ScrollMouseMacroAction.prototype, "y", void 0);
+ exports.ScrollMouseMacroAction = ScrollMouseMacroAction;
+
+
+/***/ },
+/* 170 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __extends = (this && this.__extends) || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ var MacroAction_1 = __webpack_require__(164);
+ var TextMacroAction = (function (_super) {
+ __extends(TextMacroAction, _super);
+ function TextMacroAction(other) {
+ var _this = _super.call(this) || this;
+ if (!other) {
+ return _this;
+ }
+ _this.text = other.text;
+ return _this;
+ }
+ TextMacroAction.prototype.fromJsonObject = function (jsObject) {
+ this.assertMacroActionType(jsObject);
+ this.text = jsObject.text;
+ return this;
+ };
+ TextMacroAction.prototype.fromBinary = function (buffer) {
+ this.readAndAssertMacroActionId(buffer);
+ this.text = buffer.readString();
+ return this;
+ };
+ TextMacroAction.prototype.toJsonObject = function () {
+ return {
+ macroActionType: MacroAction_1.macroActionType.TextMacroAction,
+ text: this.text
+ };
+ };
+ TextMacroAction.prototype.toBinary = function (buffer) {
+ buffer.writeUInt8(MacroAction_1.MacroActionId.TextMacroAction);
+ buffer.writeString(this.text);
+ };
+ TextMacroAction.prototype.toString = function () {
+ return "";
+ };
+ return TextMacroAction;
+ }(MacroAction_1.MacroAction));
+ exports.TextMacroAction = TextMacroAction;
+
+
+/***/ },
+/* 171 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var UhkBuffer_1 = __webpack_require__(153);
+ var index_1 = __webpack_require__(162);
+ var Helper = (function () {
+ function Helper() {
+ }
+ Helper.createMacroAction = function (source) {
+ if (source instanceof index_1.MacroAction) {
+ return Helper.fromMacroAction(source);
+ }
+ else if (source instanceof UhkBuffer_1.UhkBuffer) {
+ return Helper.fromUhkBuffer(source);
+ }
+ else {
+ return Helper.fromJSONObject(source);
+ }
+ };
+ Helper.fromUhkBuffer = function (buffer) {
+ var macroActionFirstByte = buffer.readUInt8();
+ buffer.backtrack();
+ if (macroActionFirstByte >= index_1.MacroActionId.KeyMacroAction && macroActionFirstByte <= index_1.MacroActionId.LastKeyMacroAction) {
+ return new index_1.KeyMacroAction().fromBinary(buffer);
+ }
+ else if (macroActionFirstByte >= index_1.MacroActionId.MouseButtonMacroAction &&
+ macroActionFirstByte <= index_1.MacroActionId.LastMouseButtonMacroAction) {
+ return new index_1.MouseButtonMacroAction().fromBinary(buffer);
+ }
+ switch (macroActionFirstByte) {
+ case index_1.MacroActionId.MoveMouseMacroAction:
+ return new index_1.MoveMouseMacroAction().fromBinary(buffer);
+ case index_1.MacroActionId.ScrollMouseMacroAction:
+ return new index_1.ScrollMouseMacroAction().fromBinary(buffer);
+ case index_1.MacroActionId.DelayMacroAction:
+ return new index_1.DelayMacroAction().fromBinary(buffer);
+ case index_1.MacroActionId.TextMacroAction:
+ return new index_1.TextMacroAction().fromBinary(buffer);
+ default:
+ throw "Invalid MacroAction first byte: " + macroActionFirstByte;
+ }
+ };
+ Helper.fromMacroAction = function (macroAction) {
+ var newMacroAction;
+ if (macroAction instanceof index_1.KeyMacroAction) {
+ newMacroAction = new index_1.KeyMacroAction(macroAction);
+ }
+ else if (macroAction instanceof index_1.MouseButtonMacroAction) {
+ newMacroAction = new index_1.MouseButtonMacroAction(macroAction);
+ }
+ else if (macroAction instanceof index_1.MoveMouseMacroAction) {
+ newMacroAction = new index_1.MoveMouseMacroAction(macroAction);
+ }
+ else if (macroAction instanceof index_1.ScrollMouseMacroAction) {
+ newMacroAction = new index_1.ScrollMouseMacroAction(macroAction);
+ }
+ else if (macroAction instanceof index_1.DelayMacroAction) {
+ newMacroAction = new index_1.DelayMacroAction(macroAction);
+ }
+ else if (macroAction instanceof index_1.TextMacroAction) {
+ newMacroAction = new index_1.TextMacroAction(macroAction);
+ }
+ return newMacroAction;
+ };
+ Helper.fromJSONObject = function (macroAction) {
+ switch (macroAction.macroActionType) {
+ case index_1.macroActionType.KeyMacroAction:
+ return new index_1.KeyMacroAction().fromJsonObject(macroAction);
+ case index_1.macroActionType.MouseButtonMacroAction:
+ return new index_1.MouseButtonMacroAction().fromJsonObject(macroAction);
+ case index_1.macroActionType.MoveMouseMacroAction:
+ return new index_1.MoveMouseMacroAction().fromJsonObject(macroAction);
+ case index_1.macroActionType.ScrollMouseMacroAction:
+ return new index_1.ScrollMouseMacroAction().fromJsonObject(macroAction);
+ case index_1.macroActionType.DelayMacroAction:
+ return new index_1.DelayMacroAction().fromJsonObject(macroAction);
+ case index_1.macroActionType.TextMacroAction:
+ return new index_1.TextMacroAction().fromJsonObject(macroAction);
+ default:
+ throw "Invalid MacroAction.macroActionType: \"" + macroAction.macroActionType + "\"";
+ }
+ };
+ return Helper;
+ }());
+ exports.Helper = Helper;
+
+
+/***/ },
+/* 172 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var assert_1 = __webpack_require__(145);
+ var Keymap_1 = __webpack_require__(158);
+ var Macro_1 = __webpack_require__(161);
+ var ModuleConfiguration_1 = __webpack_require__(173);
+ var UserConfiguration = (function () {
+ function UserConfiguration() {
+ }
+ UserConfiguration.prototype.fromJsonObject = function (jsonObject) {
+ var _this = this;
+ this.dataModelVersion = jsonObject.dataModelVersion;
+ this.moduleConfigurations = jsonObject.moduleConfigurations.map(function (moduleConfiguration) {
+ return new ModuleConfiguration_1.ModuleConfiguration().fromJsonObject(moduleConfiguration);
+ });
+ this.macros = jsonObject.macros.map(function (macroJsonObject, index) {
+ var macro = new Macro_1.Macro().fromJsonObject(macroJsonObject);
+ macro.id = index;
+ return macro;
+ });
+ this.keymaps = jsonObject.keymaps.map(function (keymap) { return new Keymap_1.Keymap().fromJsonObject(keymap, _this.macros); });
+ return this;
+ };
+ UserConfiguration.prototype.fromBinary = function (buffer) {
+ var _this = this;
+ this.dataModelVersion = buffer.readUInt16();
+ this.moduleConfigurations = buffer.readArray(function (uhkBuffer) {
+ return new ModuleConfiguration_1.ModuleConfiguration().fromBinary(uhkBuffer);
+ });
+ this.macros = buffer.readArray(function (uhkBuffer, index) {
+ var macro = new Macro_1.Macro().fromBinary(uhkBuffer);
+ macro.id = index;
+ return macro;
+ });
+ this.keymaps = buffer.readArray(function (uhkBuffer) { return new Keymap_1.Keymap().fromBinary(uhkBuffer, _this.macros); });
+ return this;
+ };
+ UserConfiguration.prototype.toJsonObject = function () {
+ var _this = this;
+ return {
+ dataModelVersion: this.dataModelVersion,
+ moduleConfigurations: this.moduleConfigurations.map(function (moduleConfiguration) { return moduleConfiguration.toJsonObject(); }),
+ keymaps: this.keymaps.map(function (keymap) { return keymap.toJsonObject(_this.macros); }),
+ macros: this.macros.map(function (macro) { return macro.toJsonObject(); })
+ };
+ };
+ UserConfiguration.prototype.toBinary = function (buffer) {
+ var _this = this;
+ buffer.writeUInt16(this.dataModelVersion);
+ buffer.writeArray(this.moduleConfigurations);
+ buffer.writeArray(this.macros);
+ buffer.writeArray(this.keymaps, function (uhkBuffer, keymap) {
+ keymap.toBinary(uhkBuffer, _this.macros);
+ });
+ };
+ UserConfiguration.prototype.toString = function () {
+ return "";
+ };
+ UserConfiguration.prototype.getKeymap = function (keymapAbbreviation) {
+ return this.keymaps.find(function (keymap) { return keymapAbbreviation === keymap.abbreviation; });
+ };
+ UserConfiguration.prototype.getMacro = function (macroId) {
+ return this.macros.find(function (macro) { return macroId === macro.id; });
+ };
+ return UserConfiguration;
+ }());
+ __decorate([
+ assert_1.assertUInt16,
+ __metadata("design:type", Number)
+ ], UserConfiguration.prototype, "dataModelVersion", void 0);
+ exports.UserConfiguration = UserConfiguration;
+
+
+/***/ },
+/* 173 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var assert_1 = __webpack_require__(145);
+ var ModuleConfiguration = (function () {
+ function ModuleConfiguration() {
+ }
+ ModuleConfiguration.prototype.fromJsonObject = function (jsonObject) {
+ this.id = jsonObject.id;
+ this.initialPointerSpeed = jsonObject.initialPointerSpeed;
+ this.pointerAcceleration = jsonObject.pointerAcceleration;
+ this.maxPointerSpeed = jsonObject.maxPointerSpeed;
+ return this;
+ };
+ ModuleConfiguration.prototype.fromBinary = function (buffer) {
+ this.id = buffer.readUInt8();
+ this.initialPointerSpeed = buffer.readUInt8();
+ this.pointerAcceleration = buffer.readUInt8();
+ this.maxPointerSpeed = buffer.readUInt8();
+ return this;
+ };
+ ModuleConfiguration.prototype.toJsonObject = function () {
+ return {
+ id: this.id,
+ initialPointerSpeed: this.initialPointerSpeed,
+ pointerAcceleration: this.pointerAcceleration,
+ maxPointerSpeed: this.maxPointerSpeed
+ };
+ };
+ ModuleConfiguration.prototype.toBinary = function (buffer) {
+ buffer.writeUInt8(this.id);
+ buffer.writeUInt8(this.initialPointerSpeed);
+ buffer.writeUInt8(this.pointerAcceleration);
+ buffer.writeUInt8(this.maxPointerSpeed);
+ };
+ ModuleConfiguration.prototype.toString = function () {
+ return "";
+ };
+ return ModuleConfiguration;
+ }());
+ __decorate([
+ assert_1.assertUInt8,
+ __metadata("design:type", Number)
+ ], ModuleConfiguration.prototype, "id", void 0);
+ __decorate([
+ assert_1.assertUInt8,
+ __metadata("design:type", Number)
+ ], ModuleConfiguration.prototype, "initialPointerSpeed", void 0);
+ __decorate([
+ assert_1.assertUInt8,
+ __metadata("design:type", Number)
+ ], ModuleConfiguration.prototype, "pointerAcceleration", void 0);
+ __decorate([
+ assert_1.assertUInt8,
+ __metadata("design:type", Number)
+ ], ModuleConfiguration.prototype, "maxPointerSpeed", void 0);
+ exports.ModuleConfiguration = ModuleConfiguration;
+
+
+/***/ },
+/* 174 */
+/***/ function(module, exports) {
+
+ module.exports = "\r\n \r\n \r\n \r\n\r\n\r\n Sorry, there is no keymap with this abbreviation.\r\n
";
+
+/***/ },
+/* 175 */
+/***/ function(module, exports) {
+
+ module.exports = ":host {\n width: 100%;\n display: block; }\n\n.not-found {\n margin-top: 30px;\n font-size: 16px;\n text-align: center; }\n"
+
+/***/ },
+/* 176 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var store_1 = __webpack_require__(44);
+ var Keymap_1 = __webpack_require__(158);
+ var actions_1 = __webpack_require__(127);
+ var KeymapHeaderComponent = (function () {
+ function KeymapHeaderComponent(store, renderer) {
+ this.store = store;
+ this.renderer = renderer;
+ this.downloadClick = new core_1.EventEmitter();
+ }
+ KeymapHeaderComponent.prototype.ngOnChanges = function (changes) {
+ if (changes['keymap']) {
+ this.setKeymapTitle();
+ }
+ if (changes['deletable']) {
+ this.setTrashTitle();
+ }
+ };
+ KeymapHeaderComponent.prototype.setDefault = function () {
+ if (!this.keymap.isDefault) {
+ this.store.dispatch(actions_1.KeymapActions.setDefault(this.keymap.abbreviation));
+ }
+ };
+ KeymapHeaderComponent.prototype.removeKeymap = function () {
+ if (this.deletable) {
+ this.store.dispatch(actions_1.KeymapActions.removeKeymap(this.keymap.abbreviation));
+ }
+ };
+ KeymapHeaderComponent.prototype.duplicateKeymap = function () {
+ this.store.dispatch(actions_1.KeymapActions.duplicateKeymap(this.keymap));
+ };
+ KeymapHeaderComponent.prototype.editKeymapName = function (name) {
+ if (name.length === 0) {
+ this.renderer.setElementProperty(this.keymapName.nativeElement, 'value', this.keymap.name);
+ return;
+ }
+ this.store.dispatch(actions_1.KeymapActions.editKeymapName(this.keymap.abbreviation, name));
+ };
+ KeymapHeaderComponent.prototype.editKeymapAbbr = function (newAbbr) {
+ if (newAbbr.length !== 3) {
+ this.renderer.setElementProperty(this.keymapAbbr.nativeElement, 'value', this.keymap.abbreviation);
+ return;
+ }
+ newAbbr = newAbbr.toUpperCase();
+ this.store.dispatch(actions_1.KeymapActions.editKeymapAbbr(this.keymap.abbreviation, newAbbr));
+ };
+ KeymapHeaderComponent.prototype.setKeymapTitle = function () {
+ this.starTitle = this.keymap.isDefault
+ ? 'This is the default keymap which gets activated when powering the keyboard.'
+ : 'Makes this keymap the default keymap which gets activated when powering the keyboard.';
+ };
+ KeymapHeaderComponent.prototype.setTrashTitle = function () {
+ this.trashTitle = this.deletable ? '' : 'The last keymap cannot be deleted.';
+ };
+ KeymapHeaderComponent.prototype.onDownloadIconClick = function () {
+ this.downloadClick.emit();
+ };
+ return KeymapHeaderComponent;
+ }());
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Keymap_1.Keymap)
+ ], KeymapHeaderComponent.prototype, "keymap", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Boolean)
+ ], KeymapHeaderComponent.prototype, "deletable", void 0);
+ __decorate([
+ core_1.Output(),
+ __metadata("design:type", Object)
+ ], KeymapHeaderComponent.prototype, "downloadClick", void 0);
+ __decorate([
+ core_1.ViewChild('name'),
+ __metadata("design:type", core_1.ElementRef)
+ ], KeymapHeaderComponent.prototype, "keymapName", void 0);
+ __decorate([
+ core_1.ViewChild('abbr'),
+ __metadata("design:type", core_1.ElementRef)
+ ], KeymapHeaderComponent.prototype, "keymapAbbr", void 0);
+ KeymapHeaderComponent = __decorate([
+ core_1.Component({
+ selector: 'keymap-header',
+ template: __webpack_require__(177),
+ styles: [__webpack_require__(178)],
+ changeDetection: core_1.ChangeDetectionStrategy.OnPush
+ }),
+ __metadata("design:paramtypes", [store_1.Store, core_1.Renderer])
+ ], KeymapHeaderComponent);
+ exports.KeymapHeaderComponent = KeymapHeaderComponent;
+
+
+/***/ },
+/* 177 */
+/***/ function(module, exports) {
+
+ module.exports = "\r\n
\r\n \r\n keymap\r\n ( )\r\n \r\n \r\n \r\n \r\n \r\n";
+
+/***/ },
+/* 178 */
+/***/ function(module, exports) {
+
+ module.exports = ":host {\n display: block; }\n\n.keymap__is-default.fa-star-o {\n cursor: pointer; }\n .keymap__is-default.fa-star-o:hover {\n color: #337ab7; }\n\n.keymap__remove {\n font-size: 0.75em;\n top: 8px; }\n .keymap__remove:not(.disabled):hover {\n cursor: pointer;\n color: #900; }\n .keymap__remove.disabled {\n opacity: 0.25; }\n\n.keymap__duplicate {\n font-size: 0.75em;\n top: 7px;\n margin-right: 15px;\n position: relative; }\n .keymap__duplicate:hover {\n cursor: pointer;\n color: #337ab7; }\n\n.layer__download {\n top: 10px;\n font-size: 0.8em;\n position: relative;\n margin-right: 10px; }\n .layer__download:hover {\n cursor: pointer;\n color: #337ab7; }\n\n.pane-title {\n margin-bottom: 1em; }\n .pane-title__name, .pane-title__abbrev {\n border: none;\n border-bottom: 2px dotted #999;\n padding: 0;\n margin: 0 0.25rem; }\n .pane-title__name:focus, .pane-title__abbrev:focus {\n box-shadow: 0 0 0 1px #ccc, 0 0 5px 0 #ccc;\n border-color: transparent; }\n .pane-title__name {\n width: 290px;\n text-overflow: ellipsis; }\n .pane-title__abbrev {\n width: 90px;\n text-align: center; }\n"
+
+/***/ },
+/* 179 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ __export(__webpack_require__(180));
+
+
+/***/ },
+/* 180 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var LayersComponent = (function () {
+ function LayersComponent() {
+ this.select = new core_1.EventEmitter();
+ this.buttons = ['Base', 'Mod', 'Fn', 'Mouse'];
+ this.current = 0;
+ }
+ LayersComponent.prototype.selectLayer = function (index) {
+ if (this.current === index) {
+ return;
+ }
+ this.select.emit({
+ oldIndex: this.current,
+ index: index
+ });
+ this.current = index;
+ };
+ return LayersComponent;
+ }());
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Number)
+ ], LayersComponent.prototype, "current", void 0);
+ __decorate([
+ core_1.Output(),
+ __metadata("design:type", Object)
+ ], LayersComponent.prototype, "select", void 0);
+ LayersComponent = __decorate([
+ core_1.Component({
+ selector: 'layers',
+ template: __webpack_require__(181),
+ styles: [__webpack_require__(182)]
+ }),
+ __metadata("design:paramtypes", [])
+ ], LayersComponent);
+ exports.LayersComponent = LayersComponent;
+
+
+/***/ },
+/* 181 */
+/***/ function(module, exports) {
+
+ module.exports = "\r\n \r\n \r\n {{ button }}\r\n \r\n \r\n
";
+
+/***/ },
+/* 182 */
+/***/ function(module, exports) {
+
+ module.exports = ":host {\n display: block; }\n :host.disabled button {\n cursor: no-drop;\n background: rgba(204, 204, 204, 0.43);\n pointer-events: none; }\n :host.disabled button.btn-primary {\n background: #7c7c7c;\n border-color: #7c7c7c; }\n\nbutton {\n margin: 2px; }\n\n.uhk__layer-switcher--wrapper {\n position: relative;\n margin-bottom: 2rem; }\n .uhk__layer-switcher--wrapper:before {\n content: attr(data-title);\n display: inline-block;\n position: absolute;\n bottom: -0.3em;\n right: 100%;\n font-size: 2.4rem;\n padding-right: 0.25em;\n margin: 0; }\n"
+
+/***/ },
+/* 183 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ __export(__webpack_require__(184));
+ __export(__webpack_require__(187));
+ __export(__webpack_require__(190));
+ __export(__webpack_require__(193));
+ __export(__webpack_require__(194));
+ __export(__webpack_require__(199));
+ __export(__webpack_require__(205));
+ __export(__webpack_require__(209));
+
+
+/***/ },
+/* 184 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var router_1 = __webpack_require__(99);
+ var store_1 = __webpack_require__(44);
+ var actions_1 = __webpack_require__(127);
+ var user_configuration_1 = __webpack_require__(141);
+ var MacroEditComponent = (function () {
+ function MacroEditComponent(store, route) {
+ var _this = this;
+ this.store = store;
+ this.route = route;
+ this.subscription = route
+ .params
+ .select('id')
+ .switchMap(function (id) { return store.let(user_configuration_1.getMacro(+id)); })
+ .subscribe(function (macro) {
+ _this.macro = macro;
+ });
+ this.isNew = this.route.snapshot.params['empty'] === 'new';
+ }
+ MacroEditComponent.prototype.ngOnDestroy = function () {
+ this.subscription.unsubscribe();
+ };
+ MacroEditComponent.prototype.addAction = function (macroId, action) {
+ this.store.dispatch(actions_1.MacroActions.addMacroAction(macroId, action));
+ };
+ MacroEditComponent.prototype.editAction = function (macroId, index, action) {
+ this.store.dispatch(actions_1.MacroActions.saveMacroAction(macroId, index, action));
+ };
+ MacroEditComponent.prototype.deleteAction = function (macroId, index, action) {
+ this.store.dispatch(actions_1.MacroActions.deleteMacroAction(macroId, index, action));
+ };
+ MacroEditComponent.prototype.reorderAction = function (macroId, oldIndex, newIndex) {
+ this.store.dispatch(actions_1.MacroActions.reorderMacroAction(macroId, oldIndex, newIndex));
+ };
+ return MacroEditComponent;
+ }());
+ MacroEditComponent = __decorate([
+ core_1.Component({
+ selector: 'macro-edit',
+ template: __webpack_require__(185),
+ styles: [__webpack_require__(186)],
+ host: {
+ 'class': 'container-fluid'
+ }
+ }),
+ __metadata("design:paramtypes", [store_1.Store, router_1.ActivatedRoute])
+ ], MacroEditComponent);
+ exports.MacroEditComponent = MacroEditComponent;
+
+
+/***/ },
+/* 185 */
+/***/ function(module, exports) {
+
+ module.exports = "\r\n \r\n \r\n \r\n\r\n\r\n There is no macro with id {{ route.params.select('id') | async }}.\r\n
";
+
+/***/ },
+/* 186 */
+/***/ function(module, exports) {
+
+ module.exports = ":host {\n width: 100%;\n height: 100%;\n display: block; }\n\n.not-found {\n margin-top: 30px;\n font-size: 16px;\n text-align: center; }\n"
+
+/***/ },
+/* 187 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var ng2_dragula_1 = __webpack_require__(74);
+ var Macro_1 = __webpack_require__(161);
+ var index_1 = __webpack_require__(183);
+ var MacroListComponent = (function () {
+ function MacroListComponent(dragulaService) {
+ var _this = this;
+ this.dragulaService = dragulaService;
+ this.add = new core_1.EventEmitter();
+ this.edit = new core_1.EventEmitter();
+ this.delete = new core_1.EventEmitter();
+ this.reorder = new core_1.EventEmitter();
+ this.newMacro = undefined;
+ this.activeEdit = undefined;
+ this.showNew = false;
+ /* tslint:disable:no-unused-variable: Used by Dragula. */
+ dragulaService.setOptions('macroActions', {
+ moves: function (el, container, handle) {
+ return handle.className.includes('action--movable');
+ }
+ });
+ dragulaService.drag.subscribe(function (value) {
+ _this.dragIndex = +value[1].getAttribute('data-index');
+ });
+ dragulaService.drop.subscribe(function (value) {
+ if (value[4]) {
+ _this.reorder.emit({
+ macroId: _this.macro.id,
+ oldIndex: _this.dragIndex,
+ newIndex: +value[4].getAttribute('data-index')
+ });
+ }
+ });
+ }
+ MacroListComponent.prototype.showNewAction = function () {
+ this.hideActiveEditor();
+ this.newMacro = undefined;
+ this.showNew = true;
+ };
+ MacroListComponent.prototype.hideNewAction = function () {
+ this.showNew = false;
+ };
+ MacroListComponent.prototype.addNewAction = function (macroAction) {
+ this.add.emit({
+ macroId: this.macro.id,
+ action: macroAction
+ });
+ this.newMacro = undefined;
+ this.showNew = false;
+ };
+ MacroListComponent.prototype.editAction = function (index) {
+ // Hide other editors when clicking edit button of a macro action
+ this.hideActiveEditor();
+ this.showNew = false;
+ this.activeEdit = index;
+ };
+ MacroListComponent.prototype.cancelAction = function () {
+ this.activeEdit = undefined;
+ };
+ MacroListComponent.prototype.saveAction = function (macroAction, index) {
+ this.edit.emit({
+ macroId: this.macro.id,
+ index: index,
+ action: macroAction
+ });
+ this.hideActiveEditor();
+ };
+ MacroListComponent.prototype.deleteAction = function (macroAction, index) {
+ this.delete.emit({
+ macroId: this.macro.id,
+ index: index,
+ action: macroAction
+ });
+ this.hideActiveEditor();
+ };
+ MacroListComponent.prototype.hideActiveEditor = function () {
+ if (this.activeEdit !== undefined) {
+ this.macroItems.toArray()[this.activeEdit].cancelEdit();
+ }
+ };
+ return MacroListComponent;
+ }());
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Macro_1.Macro)
+ ], MacroListComponent.prototype, "macro", void 0);
+ __decorate([
+ core_1.ViewChildren(core_1.forwardRef(function () { return index_1.MacroItemComponent; })),
+ __metadata("design:type", core_1.QueryList)
+ ], MacroListComponent.prototype, "macroItems", void 0);
+ __decorate([
+ core_1.Output(),
+ __metadata("design:type", Object)
+ ], MacroListComponent.prototype, "add", void 0);
+ __decorate([
+ core_1.Output(),
+ __metadata("design:type", Object)
+ ], MacroListComponent.prototype, "edit", void 0);
+ __decorate([
+ core_1.Output(),
+ __metadata("design:type", Object)
+ ], MacroListComponent.prototype, "delete", void 0);
+ __decorate([
+ core_1.Output(),
+ __metadata("design:type", Object)
+ ], MacroListComponent.prototype, "reorder", void 0);
+ MacroListComponent = __decorate([
+ core_1.Component({
+ animations: [
+ core_1.trigger('toggler', [
+ core_1.state('inactive', core_1.style({
+ height: '0px'
+ })),
+ core_1.state('active', core_1.style({
+ height: '*'
+ })),
+ core_1.transition('inactive <=> active', core_1.animate('500ms ease-out'))
+ ]),
+ core_1.trigger('togglerNew', [
+ core_1.state('void', core_1.style({
+ height: '0px'
+ })),
+ core_1.state('active', core_1.style({
+ height: '*'
+ })),
+ core_1.transition(':enter', core_1.animate('500ms ease-out')),
+ core_1.transition(':leave', core_1.animate('500ms ease-out'))
+ ])
+ ],
+ selector: 'macro-list',
+ template: __webpack_require__(188),
+ styles: [__webpack_require__(189)],
+ viewProviders: [ng2_dragula_1.DragulaService]
+ }),
+ __metadata("design:paramtypes", [ng2_dragula_1.DragulaService])
+ ], MacroListComponent);
+ exports.MacroListComponent = MacroListComponent;
+
+
+/***/ },
+/* 188 */
+/***/ function(module, exports) {
+
+ module.exports = "\r\n
\r\n
\r\n \r\n\r\n \r\n
\r\n
\r\n
\r\n
";
+
+/***/ },
+/* 189 */
+/***/ function(module, exports) {
+
+ module.exports = ":host {\n display: flex;\n flex-direction: column;\n height: 100%; }\n :host .list-container {\n display: flex;\n flex: 1; }\n\n.main-wrapper {\n width: 500px; }\n\nh1 {\n margin-bottom: 3rem; }\n\n.action--edit__form {\n background-color: #fff;\n margin-left: -0.5rem;\n margin-right: -15px;\n margin-top: 15px;\n padding-top: 15px;\n border-top: 1px solid #ddd; }\n\n.action--item {\n padding-left: 8px; }\n .action--item.active, .action--item.active:hover {\n background-color: white;\n font-weight: bold;\n color: black;\n border-color: black;\n z-index: 10; }\n\n.list-group {\n overflow: auto; }\n\n.macro__name {\n border-bottom: 2px dotted #999;\n padding: 0 0.5rem;\n margin: 0 0.25rem; }\n\n.macro-settings {\n border: 1px solid black;\n border-top-color: #999;\n z-index: 100; }\n .macro-settings .helper {\n position: absolute;\n display: block;\n height: 13px;\n background: #fff;\n width: 100%;\n left: 0;\n top: -14px; }\n\n.action--item.active.callout,\n.macro-settings.callout {\n box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.5); }\n\n.macro-actions-container {\n margin-bottom: 0;\n border-radius: 4px;\n border: 1px solid #ddd;\n border-bottom: 0; }\n\n.list-group-item .move-handle:hover {\n cursor: move; }\n\n.flex-button-wrapper {\n display: flex;\n flex-direction: row-reverse; }\n\n.flex-button {\n align-self: flex-end; }\n\n.add-new__action-container {\n overflow: hidden;\n flex-shrink: 0;\n border-top: 1px solid #ddd; }\n\n.add-new__action-item {\n border-radius: 0 0 4px 4px;\n border-top: 0;\n padding: 0; }\n .add-new__action-item:hover {\n cursor: pointer; }\n .add-new__action-item--link {\n width: 50%;\n float: left;\n padding: 10px 5px;\n text-align: center;\n color: #337ab7; }\n .add-new__action-item--link:first-of-type {\n border-right: 1px solid #ddd; }\n .add-new__action-item--link:hover {\n text-decoration: none;\n background: #e6e6e6; }\n .add-new__action-item .fa-circle {\n color: #c00; }\n\n.gu-mirror {\n position: fixed;\n margin: 0;\n z-index: 9999;\n opacity: 0.8; }\n\n.gu-hide {\n display: none; }\n\n.gu-unselectable {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none; }\n"
+
+/***/ },
+/* 190 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var store_1 = __webpack_require__(44);
+ var Macro_1 = __webpack_require__(161);
+ var actions_1 = __webpack_require__(127);
+ var MacroHeaderComponent = (function () {
+ function MacroHeaderComponent(store, renderer) {
+ this.store = store;
+ this.renderer = renderer;
+ }
+ MacroHeaderComponent.prototype.ngOnChanges = function () {
+ if (this.isNew) {
+ this.renderer.invokeElementMethod(this.macroName.nativeElement, 'select', []);
+ }
+ };
+ MacroHeaderComponent.prototype.ngAfterViewInit = function () {
+ if (this.isNew) {
+ this.renderer.invokeElementMethod(this.macroName.nativeElement, 'select', []);
+ }
+ };
+ MacroHeaderComponent.prototype.removeMacro = function () {
+ this.store.dispatch(actions_1.MacroActions.removeMacro(this.macro.id));
+ };
+ MacroHeaderComponent.prototype.duplicateMacro = function () {
+ this.store.dispatch(actions_1.MacroActions.duplicateMacro(this.macro));
+ };
+ MacroHeaderComponent.prototype.editMacroName = function (name) {
+ if (name.length === 0) {
+ this.renderer.setElementProperty(this.macroName.nativeElement, 'value', this.macro.name);
+ return;
+ }
+ this.store.dispatch(actions_1.MacroActions.editMacroName(this.macro.id, name));
+ };
+ return MacroHeaderComponent;
+ }());
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Macro_1.Macro)
+ ], MacroHeaderComponent.prototype, "macro", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Boolean)
+ ], MacroHeaderComponent.prototype, "isNew", void 0);
+ __decorate([
+ core_1.ViewChild('macroName'),
+ __metadata("design:type", core_1.ElementRef)
+ ], MacroHeaderComponent.prototype, "macroName", void 0);
+ MacroHeaderComponent = __decorate([
+ core_1.Component({
+ selector: 'macro-header',
+ template: __webpack_require__(191),
+ styles: [__webpack_require__(192)],
+ changeDetection: core_1.ChangeDetectionStrategy.OnPush
+ }),
+ __metadata("design:paramtypes", [store_1.Store, core_1.Renderer])
+ ], MacroHeaderComponent);
+ exports.MacroHeaderComponent = MacroHeaderComponent;
+
+
+/***/ },
+/* 191 */
+/***/ function(module, exports) {
+
+ module.exports = "\r\n
\r\n \r\n \r\n \r\n \r\n \r\n";
+
+/***/ },
+/* 192 */
+/***/ function(module, exports) {
+
+ module.exports = ".macro__remove {\n font-size: 0.75em;\n top: 8px; }\n .macro__remove:hover {\n cursor: pointer;\n color: #900; }\n\n.macro__duplicate {\n font-size: 0.75em;\n top: 7px;\n margin-right: 15px;\n position: relative; }\n .macro__duplicate:hover {\n cursor: pointer;\n color: #337ab7; }\n\n.pane-title {\n margin-bottom: 1em; }\n .pane-title__name {\n border: none;\n border-bottom: 2px dotted #999;\n padding: 0;\n margin: 0 0.25rem;\n width: 330px;\n text-overflow: ellipsis; }\n .pane-title__name:focus {\n box-shadow: 0 0 0 1px #ccc, 0 0 5px 0 #ccc;\n border-color: transparent; }\n"
+
+/***/ },
+/* 193 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var macro_edit_component_1 = __webpack_require__(184);
+ var not_found_1 = __webpack_require__(194);
+ exports.macroRoutes = [
+ {
+ path: 'macro',
+ component: not_found_1.MacroNotFoundComponent,
+ canActivate: [not_found_1.MacroNotFoundGuard]
+ },
+ {
+ path: 'macro/:id',
+ component: macro_edit_component_1.MacroEditComponent
+ },
+ {
+ path: 'macro/:id/:empty',
+ component: macro_edit_component_1.MacroEditComponent
+ }
+ ];
+
+
+/***/ },
+/* 194 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var macro_not_found_component_1 = __webpack_require__(195);
+ exports.MacroNotFoundComponent = macro_not_found_component_1.MacroNotFoundComponent;
+ var macro_not_found_guard_service_1 = __webpack_require__(198);
+ exports.MacroNotFoundGuard = macro_not_found_guard_service_1.MacroNotFoundGuard;
+
+
+/***/ },
+/* 195 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var core_1 = __webpack_require__(4);
+ var MacroNotFoundComponent = (function () {
+ function MacroNotFoundComponent() {
+ }
+ return MacroNotFoundComponent;
+ }());
+ MacroNotFoundComponent = __decorate([
+ core_1.Component({
+ selector: 'macro-not-found',
+ template: __webpack_require__(196),
+ styles: [__webpack_require__(197)]
+ })
+ ], MacroNotFoundComponent);
+ exports.MacroNotFoundComponent = MacroNotFoundComponent;
+
+
+/***/ },
+/* 196 */
+/***/ function(module, exports) {
+
+ module.exports = "\r\n You don't have any macros. Try to add one!\r\n
";
+
+/***/ },
+/* 197 */
+/***/ function(module, exports) {
+
+ module.exports = ".not-found {\n margin-top: 30px;\n font-size: 16px;\n text-align: center; }\n"
+
+/***/ },
+/* 198 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var router_1 = __webpack_require__(99);
+ __webpack_require__(135);
+ __webpack_require__(137);
+ var store_1 = __webpack_require__(44);
+ var user_configuration_1 = __webpack_require__(141);
+ var MacroNotFoundGuard = (function () {
+ function MacroNotFoundGuard(store, router) {
+ this.store = store;
+ this.router = router;
+ }
+ MacroNotFoundGuard.prototype.canActivate = function () {
+ var _this = this;
+ return this.store
+ .let(user_configuration_1.getMacros())
+ .map(function (macros) {
+ var hasMacros = macros.length > 0;
+ if (hasMacros) {
+ _this.router.navigate(['/macro', macros[0].id]);
+ }
+ return !hasMacros;
+ });
+ };
+ return MacroNotFoundGuard;
+ }());
+ MacroNotFoundGuard = __decorate([
+ core_1.Injectable(),
+ __metadata("design:paramtypes", [store_1.Store, router_1.Router])
+ ], MacroNotFoundGuard);
+ exports.MacroNotFoundGuard = MacroNotFoundGuard;
+
+
+/***/ },
+/* 199 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var macro_item_component_1 = __webpack_require__(200);
+ exports.MacroItemComponent = macro_item_component_1.MacroItemComponent;
+
+
+/***/ },
+/* 200 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var KeyModifiers_1 = __webpack_require__(201);
+ var macro_action_1 = __webpack_require__(162);
+ var mapper_service_1 = __webpack_require__(202);
+ var MacroItemComponent = (function () {
+ function MacroItemComponent(mapper) {
+ this.mapper = mapper;
+ this.save = new core_1.EventEmitter();
+ this.cancel = new core_1.EventEmitter();
+ this.edit = new core_1.EventEmitter();
+ this.delete = new core_1.EventEmitter();
+ this.newItem = false;
+ }
+ MacroItemComponent.prototype.ngOnInit = function () {
+ this.updateView();
+ if (!this.macroAction) {
+ this.editing = true;
+ this.newItem = true;
+ }
+ };
+ MacroItemComponent.prototype.ngOnChanges = function (changes) {
+ if (changes['macroAction']) {
+ this.updateView();
+ }
+ };
+ MacroItemComponent.prototype.saveEditedAction = function (editedAction) {
+ this.macroAction = editedAction;
+ this.editing = false;
+ this.updateView();
+ this.save.emit(editedAction);
+ };
+ MacroItemComponent.prototype.editAction = function () {
+ if (!this.editable || this.editing) {
+ return;
+ }
+ this.editing = true;
+ this.edit.emit();
+ };
+ MacroItemComponent.prototype.cancelEdit = function () {
+ this.editing = false;
+ this.cancel.emit();
+ };
+ MacroItemComponent.prototype.deleteAction = function () {
+ this.delete.emit();
+ };
+ MacroItemComponent.prototype.updateView = function () {
+ if (!this.macroAction) {
+ this.title = 'New macro action';
+ }
+ else if (this.macroAction instanceof macro_action_1.DelayMacroAction) {
+ // Delay
+ this.iconName = 'clock';
+ var action = this.macroAction;
+ var delay_1 = action.delay > 0 ? action.delay / 1000 : 0;
+ this.title = "Delay of " + delay_1 + "s";
+ }
+ else if (this.macroAction instanceof macro_action_1.TextMacroAction) {
+ // Write text
+ var action = this.macroAction;
+ this.iconName = 'font';
+ this.title = "Write text: " + action.text;
+ }
+ else if (this.macroAction instanceof macro_action_1.KeyMacroAction) {
+ // Key pressed/held/released
+ var action = this.macroAction;
+ this.setKeyActionContent(action);
+ }
+ else if (this.macroAction instanceof macro_action_1.MouseButtonMacroAction) {
+ // Mouse button clicked/held/released
+ var action = this.macroAction;
+ this.setMouseButtonActionContent(action);
+ }
+ else if (this.macroAction instanceof macro_action_1.MoveMouseMacroAction || this.macroAction instanceof macro_action_1.ScrollMouseMacroAction) {
+ // Mouse moved or scrolled
+ this.setMouseMoveScrollActionContent(this.macroAction);
+ }
+ else {
+ this.title = this.macroAction.constructor.name;
+ }
+ };
+ MacroItemComponent.prototype.setKeyActionContent = function (action) {
+ if (!action.hasScancode() && !action.hasModifiers()) {
+ this.title = 'Invalid keypress';
+ return;
+ }
+ if (action.isPressAction()) {
+ // Press key
+ this.iconName = 'hand-pointer';
+ this.title = 'Press key: ';
+ }
+ else if (action.isHoldAction()) {
+ // Hold key
+ this.iconName = 'hand-rock';
+ this.title = 'Hold key: ';
+ }
+ else if (action.isReleaseAction()) {
+ // Release key
+ this.iconName = 'hand-paper';
+ this.title = 'Release key: ';
+ }
+ if (action.hasScancode()) {
+ var scancode = (this.mapper.scanCodeToText(action.scancode) || ['Unknown']).join(' ');
+ if (scancode) {
+ this.title += scancode;
+ }
+ }
+ if (action.hasModifiers()) {
+ // Press/hold/release modifiers
+ for (var i = KeyModifiers_1.KeyModifiers.leftCtrl; i !== KeyModifiers_1.KeyModifiers.rightGui; i <<= 1) {
+ if (action.isModifierActive(i)) {
+ this.title += ' ' + KeyModifiers_1.KeyModifiers[i];
+ }
+ }
+ }
+ };
+ MacroItemComponent.prototype.setMouseMoveScrollActionContent = function (action) {
+ var typedAction;
+ if (action instanceof macro_action_1.MoveMouseMacroAction) {
+ // Move mouse pointer
+ this.iconName = 'mouse-pointer';
+ this.title = 'Move pointer';
+ typedAction = this.macroAction;
+ }
+ else {
+ // Scroll mouse
+ this.iconName = 'mouse-pointer';
+ this.title = 'Scroll';
+ typedAction = this.macroAction;
+ }
+ var needAnd;
+ if (Math.abs(typedAction.x) !== 0) {
+ this.title += " by " + Math.abs(typedAction.x) + "px " + (typedAction.x > 0 ? 'left' : 'right');
+ needAnd = true;
+ }
+ if (Math.abs(typedAction.y) !== 0) {
+ this.title += " " + (needAnd ? 'and' : 'by') + " " + Math.abs(typedAction.y) + "px " + (typedAction.y > 0 ? 'down' : 'up');
+ }
+ };
+ MacroItemComponent.prototype.setMouseButtonActionContent = function (action) {
+ // Press/hold/release mouse buttons
+ if (action.isOnlyPressAction()) {
+ this.iconName = 'mouse-pointer';
+ this.title = 'Click mouse button: ';
+ }
+ else if (action.isOnlyHoldAction()) {
+ this.iconName = 'hand-rock';
+ this.title = 'Hold mouse button: ';
+ }
+ else if (action.isOnlyReleaseAction()) {
+ this.iconName = 'hand-paper';
+ this.title = 'Release mouse button: ';
+ }
+ var buttonLabels = ['Left', 'Middle', 'Right'];
+ var selectedButtons = action.getMouseButtons();
+ var selectedButtonLabels = [];
+ selectedButtons.forEach(function (isSelected, idx) {
+ if (isSelected && buttonLabels[idx]) {
+ selectedButtonLabels.push(buttonLabels[idx]);
+ }
+ });
+ this.title += selectedButtonLabels.join(', ');
+ };
+ return MacroItemComponent;
+ }());
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", macro_action_1.MacroAction)
+ ], MacroItemComponent.prototype, "macroAction", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Boolean)
+ ], MacroItemComponent.prototype, "editable", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Boolean)
+ ], MacroItemComponent.prototype, "deletable", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Boolean)
+ ], MacroItemComponent.prototype, "movable", void 0);
+ __decorate([
+ core_1.Output(),
+ __metadata("design:type", Object)
+ ], MacroItemComponent.prototype, "save", void 0);
+ __decorate([
+ core_1.Output(),
+ __metadata("design:type", Object)
+ ], MacroItemComponent.prototype, "cancel", void 0);
+ __decorate([
+ core_1.Output(),
+ __metadata("design:type", Object)
+ ], MacroItemComponent.prototype, "edit", void 0);
+ __decorate([
+ core_1.Output(),
+ __metadata("design:type", Object)
+ ], MacroItemComponent.prototype, "delete", void 0);
+ MacroItemComponent = __decorate([
+ core_1.Component({
+ animations: [
+ core_1.trigger('toggler', [
+ core_1.state('inactive', core_1.style({
+ height: '0px'
+ })),
+ core_1.state('active', core_1.style({
+ height: '*'
+ })),
+ core_1.transition('inactive <=> active', core_1.animate('500ms ease-out'))
+ ])
+ ],
+ selector: 'macro-item',
+ template: __webpack_require__(203),
+ styles: [__webpack_require__(204)],
+ host: { 'class': 'macro-item' }
+ }),
+ __metadata("design:paramtypes", [mapper_service_1.MapperService])
+ ], MacroItemComponent);
+ exports.MacroItemComponent = MacroItemComponent;
+
+
+/***/ },
+/* 201 */
+/***/ function(module, exports) {
+
+ "use strict";
+ var KeyModifiers;
+ (function (KeyModifiers) {
+ KeyModifiers[KeyModifiers["leftCtrl"] = 1] = "leftCtrl";
+ KeyModifiers[KeyModifiers["leftShift"] = 2] = "leftShift";
+ KeyModifiers[KeyModifiers["leftAlt"] = 4] = "leftAlt";
+ KeyModifiers[KeyModifiers["leftGui"] = 8] = "leftGui";
+ KeyModifiers[KeyModifiers["rightCtrl"] = 16] = "rightCtrl";
+ KeyModifiers[KeyModifiers["rightShift"] = 32] = "rightShift";
+ KeyModifiers[KeyModifiers["rightAlt"] = 64] = "rightAlt";
+ KeyModifiers[KeyModifiers["rightGui"] = 128] = "rightGui";
+ })(KeyModifiers = exports.KeyModifiers || (exports.KeyModifiers = {}));
+
+
+/***/ },
+/* 202 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ /* tslint:disable:variable-name */
+ var __svg__ = { filename: __webpack_require__.p +"assets/compiled_sprite.svg" };
+ /* tslint:enable:variable-name */
+ var core_1 = __webpack_require__(4);
+ var MapperService = (function () {
+ function MapperService() {
+ this.initScanCodeTextMap();
+ this.initScanCodeFileName();
+ this.initNameToFileNames();
+ }
+ MapperService.prototype.scanCodeToText = function (scanCode) {
+ return this.scanCodeTextMap.get(scanCode);
+ };
+ MapperService.prototype.hasScancodeIcon = function (scancode) {
+ return this.scanCodeFileName.has(scancode);
+ };
+ MapperService.prototype.scanCodeToSvgImagePath = function (scanCode) {
+ var fileName = this.scanCodeFileName.get(scanCode);
+ if (fileName) {
+ return 'assets/compiled_sprite.svg#' + fileName;
+ }
+ return undefined;
+ };
+ MapperService.prototype.getIcon = function (iconName) {
+ return 'assets/compiled_sprite.svg#' + this.nameToFileName.get(iconName);
+ };
+ MapperService.prototype.modifierMapper = function (x) {
+ if (x < 8) {
+ return Math.floor(x / 2) * 4 + 1 - x; // 1, 0, 3, 2, 5, 4, 7, 6
+ }
+ else {
+ return x;
+ }
+ };
+ // TODO: read the mapping from JSON
+ MapperService.prototype.initScanCodeTextMap = function () {
+ this.scanCodeTextMap = new Map();
+ this.scanCodeTextMap.set(4, ['A']);
+ this.scanCodeTextMap.set(5, ['B']);
+ this.scanCodeTextMap.set(6, ['C']);
+ this.scanCodeTextMap.set(7, ['D']);
+ this.scanCodeTextMap.set(8, ['E']);
+ this.scanCodeTextMap.set(9, ['F']);
+ this.scanCodeTextMap.set(10, ['G']);
+ this.scanCodeTextMap.set(11, ['H']);
+ this.scanCodeTextMap.set(12, ['I']);
+ this.scanCodeTextMap.set(13, ['J']);
+ this.scanCodeTextMap.set(14, ['K']);
+ this.scanCodeTextMap.set(15, ['L']);
+ this.scanCodeTextMap.set(16, ['M']);
+ this.scanCodeTextMap.set(17, ['N']);
+ this.scanCodeTextMap.set(18, ['O']);
+ this.scanCodeTextMap.set(19, ['P']);
+ this.scanCodeTextMap.set(20, ['Q']);
+ this.scanCodeTextMap.set(21, ['R']);
+ this.scanCodeTextMap.set(22, ['S']);
+ this.scanCodeTextMap.set(23, ['T']);
+ this.scanCodeTextMap.set(24, ['U']);
+ this.scanCodeTextMap.set(25, ['V']);
+ this.scanCodeTextMap.set(26, ['W']);
+ this.scanCodeTextMap.set(27, ['X']);
+ this.scanCodeTextMap.set(28, ['Y']);
+ this.scanCodeTextMap.set(29, ['Z']);
+ this.scanCodeTextMap.set(30, ['1', '!']);
+ this.scanCodeTextMap.set(31, ['2', '@']);
+ this.scanCodeTextMap.set(32, ['3', '#']);
+ this.scanCodeTextMap.set(33, ['4', '$']);
+ this.scanCodeTextMap.set(34, ['5', '%']);
+ this.scanCodeTextMap.set(35, ['6', '^']);
+ this.scanCodeTextMap.set(36, ['7', '&']);
+ this.scanCodeTextMap.set(37, ['8', '*']);
+ this.scanCodeTextMap.set(38, ['9', '(']);
+ this.scanCodeTextMap.set(39, ['0', ')']);
+ this.scanCodeTextMap.set(40, ['Enter']);
+ this.scanCodeTextMap.set(41, ['Esc']);
+ this.scanCodeTextMap.set(42, ['Backspace']);
+ this.scanCodeTextMap.set(43, ['Tab']);
+ this.scanCodeTextMap.set(44, ['Space']);
+ this.scanCodeTextMap.set(45, ['-', '_']);
+ this.scanCodeTextMap.set(46, ['=', '+']);
+ this.scanCodeTextMap.set(47, ['[', '{']);
+ this.scanCodeTextMap.set(48, [']', '}']);
+ this.scanCodeTextMap.set(49, ['\\', '|']);
+ this.scanCodeTextMap.set(50, ['NON_US_HASHMARK_AND_TILDE']);
+ this.scanCodeTextMap.set(51, [';', ':']);
+ this.scanCodeTextMap.set(52, ['\'', '"']);
+ this.scanCodeTextMap.set(53, ['`', '~']);
+ this.scanCodeTextMap.set(54, [',', '<']);
+ this.scanCodeTextMap.set(55, ['.', '>']);
+ this.scanCodeTextMap.set(56, ['/', '?']);
+ this.scanCodeTextMap.set(57, ['Caps Lock']);
+ this.scanCodeTextMap.set(58, ['F1']);
+ this.scanCodeTextMap.set(59, ['F2']);
+ this.scanCodeTextMap.set(60, ['F3']);
+ this.scanCodeTextMap.set(61, ['F4']);
+ this.scanCodeTextMap.set(62, ['F5']);
+ this.scanCodeTextMap.set(63, ['F6']);
+ this.scanCodeTextMap.set(64, ['F7']);
+ this.scanCodeTextMap.set(65, ['F8']);
+ this.scanCodeTextMap.set(66, ['F9']);
+ this.scanCodeTextMap.set(67, ['F10']);
+ this.scanCodeTextMap.set(68, ['F11']);
+ this.scanCodeTextMap.set(69, ['F12']);
+ this.scanCodeTextMap.set(70, ['PrtScn']);
+ this.scanCodeTextMap.set(71, ['Scroll Lock']);
+ this.scanCodeTextMap.set(72, ['Pause']);
+ this.scanCodeTextMap.set(73, ['Insert']);
+ this.scanCodeTextMap.set(74, ['Home']);
+ this.scanCodeTextMap.set(75, ['PgUp']);
+ this.scanCodeTextMap.set(76, ['Del']);
+ this.scanCodeTextMap.set(77, ['End']);
+ this.scanCodeTextMap.set(78, ['PgDn']);
+ this.scanCodeTextMap.set(79, ['Right Arrow']);
+ this.scanCodeTextMap.set(80, ['Left Arrow']);
+ this.scanCodeTextMap.set(81, ['Down Arrow']);
+ this.scanCodeTextMap.set(82, ['Up Arrow']);
+ this.scanCodeTextMap.set(83, ['Num Lock']);
+ this.scanCodeTextMap.set(84, ['/']);
+ this.scanCodeTextMap.set(85, ['*']);
+ this.scanCodeTextMap.set(86, ['-']);
+ this.scanCodeTextMap.set(87, ['+']);
+ this.scanCodeTextMap.set(88, ['Enter']);
+ this.scanCodeTextMap.set(89, ['end', '1']);
+ this.scanCodeTextMap.set(90, ['2']);
+ this.scanCodeTextMap.set(91, ['pgdn', '3']);
+ this.scanCodeTextMap.set(92, ['4']);
+ this.scanCodeTextMap.set(93, ['5']);
+ this.scanCodeTextMap.set(94, ['6']);
+ this.scanCodeTextMap.set(95, ['home', '7']);
+ this.scanCodeTextMap.set(96, ['8']);
+ this.scanCodeTextMap.set(97, ['pgup', '9']);
+ this.scanCodeTextMap.set(98, ['Insert', '0']);
+ this.scanCodeTextMap.set(99, ['Del', '.']);
+ this.scanCodeTextMap.set(104, ['F13']);
+ this.scanCodeTextMap.set(105, ['F14']);
+ this.scanCodeTextMap.set(106, ['F15']);
+ this.scanCodeTextMap.set(107, ['F16']);
+ this.scanCodeTextMap.set(108, ['F17']);
+ this.scanCodeTextMap.set(109, ['F18']);
+ this.scanCodeTextMap.set(110, ['F19']);
+ this.scanCodeTextMap.set(111, ['F20']);
+ this.scanCodeTextMap.set(112, ['F21']);
+ this.scanCodeTextMap.set(113, ['F22']);
+ this.scanCodeTextMap.set(114, ['F23']);
+ this.scanCodeTextMap.set(115, ['F24']);
+ this.scanCodeTextMap.set(118, ['Menu']);
+ this.scanCodeTextMap.set(176, ['00']);
+ this.scanCodeTextMap.set(177, ['000']);
+ this.scanCodeTextMap.set(232, ['Play']);
+ this.scanCodeTextMap.set(233, ['Stop']);
+ this.scanCodeTextMap.set(234, ['Prev']);
+ this.scanCodeTextMap.set(235, ['Next']);
+ this.scanCodeTextMap.set(236, ['Eject']);
+ this.scanCodeTextMap.set(237, ['Vol +']);
+ this.scanCodeTextMap.set(238, ['Vol -']);
+ this.scanCodeTextMap.set(239, ['Mute']);
+ this.scanCodeTextMap.set(240, ['WWW']);
+ this.scanCodeTextMap.set(241, ['Bckwrd']);
+ this.scanCodeTextMap.set(242, ['Frwrd']);
+ this.scanCodeTextMap.set(243, ['Cancel']);
+ };
+ MapperService.prototype.initScanCodeFileName = function () {
+ this.scanCodeFileName = new Map();
+ this.scanCodeFileName.set(79, 'icon-kbd__mod--arrow-right');
+ this.scanCodeFileName.set(80, 'icon-kbd__mod--arrow-left');
+ this.scanCodeFileName.set(81, 'icon-kbd__mod--arrow-down');
+ this.scanCodeFileName.set(82, 'icon-kbd__mod--arrow-up');
+ this.scanCodeFileName.set(118, 'icon-kbd__mod--menu');
+ };
+ MapperService.prototype.initNameToFileNames = function () {
+ this.nameToFileName = new Map();
+ this.nameToFileName.set('toggle', 'icon-kbd__fn--toggle');
+ this.nameToFileName.set('switch-keymap', 'icon-kbd__mod--switch-keymap');
+ this.nameToFileName.set('macro', 'icon-icon__macro');
+ this.nameToFileName.set('shift', 'icon-kbd__default--modifier-shift');
+ this.nameToFileName.set('option', 'icon-kbd__default--modifier-option');
+ this.nameToFileName.set('command', 'icon-kbd__default--modifier-command');
+ this.nameToFileName.set('mouse', 'icon-kbd__mouse');
+ this.nameToFileName.set('left-arrow', 'icon-kbd__mod--arrow-left');
+ this.nameToFileName.set('right-arrow', 'icon-kbd__mod--arrow-right');
+ this.nameToFileName.set('down-arrow', 'icon-kbd__mod--arrow-down');
+ this.nameToFileName.set('up-arrow', 'icon-kbd__mod--arrow-up');
+ this.nameToFileName.set('scroll-left', 'icon-kbd__mouse--scroll-left');
+ this.nameToFileName.set('scroll-right', 'icon-kbd__mouse--scroll-right');
+ this.nameToFileName.set('scroll-down', 'icon-kbd__mouse--scroll-down');
+ this.nameToFileName.set('scroll-up', 'icon-kbd__mouse--scroll-up');
+ };
+ return MapperService;
+ }());
+ MapperService = __decorate([
+ core_1.Injectable(),
+ __metadata("design:paramtypes", [])
+ ], MapperService);
+ exports.MapperService = MapperService;
+
+
+/***/ },
+/* 203 */
+/***/ function(module, exports) {
+
+ module.exports = "\r\n
\r\n
\r\n
\r\n
{{ title }}
\r\n
\r\n
\r\n
\r\n
\r\n\r\n \r\n \r\n
";
+
+/***/ },
+/* 204 */
+/***/ function(module, exports) {
+
+ module.exports = ":host {\n overflow: hidden;\n display: block; }\n :host.macro-item:first-of-type .list-group-item {\n border-radius: 4px 4px 0 0; }\n :host.macro-item:last-of-type .list-group-item {\n border-bottom: 0; }\n :host.gu-transit {\n opacity: 0.2; }\n :host.gu-transit .list-group-item {\n background: #f5f5f5; }\n\n.action--item {\n display: flex;\n flex-shrink: 0;\n border: 0;\n border-bottom: 1px solid #ddd; }\n .action--item icon {\n margin: 0 5px; }\n .action--item > div {\n display: flex;\n flex: 1; }\n .action--item:first-child {\n border-radius: 0; }\n .action--item.is-editing {\n background: #f5f5f5; }\n .action--item--wrap {\n justify-content: space-between; }\n .action--item--wrap.pointer:hover {\n cursor: pointer;\n color: #337ab7; }\n\n.action--title {\n display: flex;\n flex: 1; }\n\n.action--movable:hover {\n cursor: move; }\n\n.list-group-item {\n margin-bottom: 0; }\n\n.macro-action-editor__container {\n padding-top: 0;\n padding-bottom: 0;\n border-radius: 0;\n border: none;\n overflow: hidden; }\n"
+
+/***/ },
+/* 205 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var macro_action_editor_component_1 = __webpack_require__(206);
+ exports.MacroActionEditorComponent = macro_action_editor_component_1.MacroActionEditorComponent;
+
+
+/***/ },
+/* 206 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var macro_action_1 = __webpack_require__(162);
+ var TabName;
+ (function (TabName) {
+ TabName[TabName["Keypress"] = 0] = "Keypress";
+ TabName[TabName["Text"] = 1] = "Text";
+ TabName[TabName["Mouse"] = 2] = "Mouse";
+ TabName[TabName["Delay"] = 3] = "Delay";
+ })(TabName || (TabName = {}));
+ ;
+ var MacroActionEditorComponent = (function () {
+ function MacroActionEditorComponent() {
+ this.save = new core_1.EventEmitter();
+ this.cancel = new core_1.EventEmitter();
+ /* tslint:disable:variable-name: It is an enum type. So it can start with uppercase. */
+ /* tslint:disable:no-unused-variable: It is used in the template. */
+ this.TabName = TabName;
+ }
+ /* tslint:enable:no-unused-variable */
+ /* tslint:enable:variable-name */
+ MacroActionEditorComponent.prototype.ngOnInit = function () {
+ var macroAction = this.macroAction ? this.macroAction : new macro_action_1.TextMacroAction();
+ this.editableMacroAction = new macro_action_1.EditableMacroAction(macroAction.toJsonObject());
+ var tab = this.getTabName(this.editableMacroAction);
+ this.activeTab = tab;
+ };
+ MacroActionEditorComponent.prototype.onCancelClick = function () {
+ this.cancel.emit();
+ };
+ MacroActionEditorComponent.prototype.onSaveClick = function () {
+ try {
+ var action = this.editableMacroAction;
+ if (action.isKeyAction()) {
+ // Could updating the saved keys be done in a better way?
+ var tab = this.selectedTab;
+ action.fromKeyAction(tab.getKeyAction());
+ }
+ this.save.emit(action.toClass());
+ }
+ catch (e) {
+ // TODO: show error dialog
+ console.error(e);
+ }
+ };
+ MacroActionEditorComponent.prototype.selectTab = function (tab) {
+ this.activeTab = tab;
+ this.editableMacroAction.macroActionType = this.getTabMacroActionType(tab);
+ };
+ MacroActionEditorComponent.prototype.getTabName = function (action) {
+ switch (action.macroActionType) {
+ // Delay action
+ case macro_action_1.macroActionType.DelayMacroAction:
+ return TabName.Delay;
+ // Text action
+ case macro_action_1.macroActionType.TextMacroAction:
+ return TabName.Text;
+ // Keypress actions
+ case macro_action_1.macroActionType.KeyMacroAction:
+ return TabName.Keypress;
+ // Mouse actions
+ case macro_action_1.macroActionType.MouseButtonMacroAction:
+ case macro_action_1.macroActionType.MoveMouseMacroAction:
+ case macro_action_1.macroActionType.ScrollMouseMacroAction:
+ return TabName.Mouse;
+ default:
+ return TabName.Keypress;
+ }
+ };
+ MacroActionEditorComponent.prototype.getTabMacroActionType = function (tab) {
+ switch (tab) {
+ case TabName.Delay:
+ return macro_action_1.macroActionType.DelayMacroAction;
+ case TabName.Keypress:
+ return macro_action_1.macroActionType.KeyMacroAction;
+ case TabName.Mouse:
+ return macro_action_1.macroActionType.MouseButtonMacroAction;
+ case TabName.Text:
+ return macro_action_1.macroActionType.TextMacroAction;
+ default:
+ throw new Error('Could not get macro action type');
+ }
+ };
+ return MacroActionEditorComponent;
+ }());
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", macro_action_1.MacroAction)
+ ], MacroActionEditorComponent.prototype, "macroAction", void 0);
+ __decorate([
+ core_1.Output(),
+ __metadata("design:type", Object)
+ ], MacroActionEditorComponent.prototype, "save", void 0);
+ __decorate([
+ core_1.Output(),
+ __metadata("design:type", Object)
+ ], MacroActionEditorComponent.prototype, "cancel", void 0);
+ __decorate([
+ core_1.ViewChild('tab'),
+ __metadata("design:type", Object)
+ ], MacroActionEditorComponent.prototype, "selectedTab", void 0);
+ MacroActionEditorComponent = __decorate([
+ core_1.Component({
+ selector: 'macro-action-editor',
+ template: __webpack_require__(207),
+ styles: [__webpack_require__(208)],
+ host: { 'class': 'macro-action-editor' }
+ })
+ ], MacroActionEditorComponent);
+ exports.MacroActionEditorComponent = MacroActionEditorComponent;
+
+
+/***/ },
+/* 207 */
+/***/ function(module, exports) {
+
+ module.exports = "\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n Cancel \r\n Save \r\n
\r\n
\r\n
\r\n
";
+
+/***/ },
+/* 208 */
+/***/ function(module, exports) {
+
+ module.exports = ":host {\n display: block;\n width: 100%; }\n\n.action--editor {\n padding-top: 0;\n padding-bottom: 0;\n border-radius: 0;\n border: 0; }\n\n.nav {\n padding-bottom: 1rem; }\n .nav li a {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0; }\n .nav li a.selected {\n font-style: italic; }\n .nav li a:hover {\n cursor: pointer; }\n .nav li.active {\n z-index: 2; }\n .nav li.active a.selected {\n font-style: normal; }\n .nav li.active a:after {\n content: '';\n display: block;\n position: absolute;\n width: 0;\n height: 0;\n top: 0;\n right: -4rem;\n border-color: transparent transparent transparent #337ab7;\n border-style: solid;\n border-width: 2rem; }\n\n.editor__tabs, .editor__tab-links {\n padding-top: 1rem; }\n\n.editor__tabs {\n border-left: 1px solid #ddd;\n margin-left: -1.6rem;\n padding-left: 3rem; }\n\n.editor__actions {\n float: right; }\n .editor__actions-container {\n background: #f5f5f5;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd;\n padding: 1rem 1.5rem; }\n\n.flex-button-wrapper {\n display: flex;\n flex-direction: row-reverse; }\n\n.flex-button {\n align-self: flex-end; }\n"
+
+/***/ },
+/* 209 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var delay_1 = __webpack_require__(210);
+ exports.MacroDelayTabComponent = delay_1.MacroDelayTabComponent;
+ var key_1 = __webpack_require__(214);
+ exports.MacroKeyTabComponent = key_1.MacroKeyTabComponent;
+ var mouse_1 = __webpack_require__(246);
+ exports.MacroMouseTabComponent = mouse_1.MacroMouseTabComponent;
+ var text_1 = __webpack_require__(250);
+ exports.MacroTextTabComponent = text_1.MacroTextTabComponent;
+
+
+/***/ },
+/* 210 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var macro_delay_component_1 = __webpack_require__(211);
+ exports.MacroDelayTabComponent = macro_delay_component_1.MacroDelayTabComponent;
+
+
+/***/ },
+/* 211 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var macro_action_1 = __webpack_require__(162);
+ var INITIAL_DELAY = 0.5; // In seconds
+ var MacroDelayTabComponent = (function () {
+ /* tslint:enable:no-unused-variable */
+ function MacroDelayTabComponent() {
+ /* tslint:disable:no-unused-variable: It is used in the template. */
+ this.presets = [0.3, 0.5, 0.8, 1, 2, 3, 4, 5];
+ }
+ MacroDelayTabComponent.prototype.ngOnInit = function () {
+ this.delay = this.macroAction.delay > 0 ? this.macroAction.delay / 1000 : INITIAL_DELAY;
+ };
+ MacroDelayTabComponent.prototype.setDelay = function (value) {
+ this.delay = value;
+ this.macroAction.delay = this.delay * 1000;
+ };
+ return MacroDelayTabComponent;
+ }());
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", macro_action_1.EditableMacroAction)
+ ], MacroDelayTabComponent.prototype, "macroAction", void 0);
+ __decorate([
+ core_1.ViewChild('macroDelayInput'),
+ __metadata("design:type", core_1.ElementRef)
+ ], MacroDelayTabComponent.prototype, "input", void 0);
+ MacroDelayTabComponent = __decorate([
+ core_1.Component({
+ selector: 'macro-delay-tab',
+ template: __webpack_require__(212),
+ styles: [__webpack_require__(213)],
+ host: { 'class': 'macro__delay' },
+ changeDetection: core_1.ChangeDetectionStrategy.OnPush
+ }),
+ __metadata("design:paramtypes", [])
+ ], MacroDelayTabComponent);
+ exports.MacroDelayTabComponent = MacroDelayTabComponent;
+
+
+/***/ },
+/* 212 */
+/***/ function(module, exports) {
+
+ module.exports = "\r\n
\r\n
\r\n
Enter delay in seconds \r\n \r\n
\r\n
\r\n
\r\n
\r\n
Choose a preset \r\n {{delay}}s \r\n \r\n
\r\n
\r\n";
+
+/***/ },
+/* 213 */
+/***/ function(module, exports) {
+
+ module.exports = ":host {\n display: flex;\n flex-direction: column;\n position: relative; }\n\n.macro-delay__presets {\n margin-top: 1rem; }\n .macro-delay__presets button {\n margin-right: 0.25rem;\n margin-bottom: 0.25rem; }\n"
+
+/***/ },
+/* 214 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var macro_key_component_1 = __webpack_require__(215);
+ exports.MacroKeyTabComponent = macro_key_component_1.MacroKeyTabComponent;
+
+
+/***/ },
+/* 215 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var macro_action_1 = __webpack_require__(162);
+ var tab_1 = __webpack_require__(216);
+ var tab_2 = __webpack_require__(216);
+ var TabName;
+ (function (TabName) {
+ TabName[TabName["Keypress"] = 0] = "Keypress";
+ TabName[TabName["Hold"] = 1] = "Hold";
+ TabName[TabName["Release"] = 2] = "Release";
+ })(TabName || (TabName = {}));
+ var MacroKeyTabComponent = (function () {
+ function MacroKeyTabComponent() {
+ /* tslint:disable:variable-name: It is an enum type. So it can start with uppercase. */
+ /* tslint:disable:no-unused-variable: It is used in the template. */
+ this.TabName = TabName;
+ }
+ /* tslint:enable:no-unused-variable */
+ /* tslint:enable:variable-name */
+ MacroKeyTabComponent.prototype.ngOnInit = function () {
+ this.defaultKeyAction = this.macroAction.toKeystrokeAction();
+ this.selectTab(this.getTabName(this.macroAction));
+ };
+ MacroKeyTabComponent.prototype.selectTab = function (tab) {
+ this.activeTab = tab;
+ this.macroAction.action = this.getActionType(tab);
+ };
+ MacroKeyTabComponent.prototype.getTabName = function (action) {
+ if (!action.action || action.isOnlyPressAction()) {
+ return TabName.Keypress;
+ }
+ else if (action.isOnlyHoldAction()) {
+ return TabName.Hold;
+ }
+ else if (action.isOnlyReleaseAction()) {
+ return TabName.Release;
+ }
+ };
+ MacroKeyTabComponent.prototype.getActionType = function (tab) {
+ switch (tab) {
+ case TabName.Keypress:
+ return macro_action_1.MacroSubAction.press;
+ case TabName.Hold:
+ return macro_action_1.MacroSubAction.hold;
+ case TabName.Release:
+ return macro_action_1.MacroSubAction.release;
+ default:
+ throw new Error('Invalid tab type');
+ }
+ };
+ MacroKeyTabComponent.prototype.getKeyAction = function () {
+ return this.keypressTab.toKeyAction();
+ };
+ return MacroKeyTabComponent;
+ }());
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", macro_action_1.EditableMacroAction)
+ ], MacroKeyTabComponent.prototype, "macroAction", void 0);
+ __decorate([
+ core_1.ViewChild('tab'),
+ __metadata("design:type", tab_2.Tab)
+ ], MacroKeyTabComponent.prototype, "selectedTab", void 0);
+ __decorate([
+ core_1.ViewChild('keypressTab'),
+ __metadata("design:type", tab_1.KeypressTabComponent)
+ ], MacroKeyTabComponent.prototype, "keypressTab", void 0);
+ MacroKeyTabComponent = __decorate([
+ core_1.Component({
+ selector: 'macro-key-tab',
+ template: __webpack_require__(244),
+ styles: [
+ __webpack_require__(208),
+ __webpack_require__(245)
+ ],
+ host: { 'class': 'macro__mouse' }
+ })
+ ], MacroKeyTabComponent);
+ exports.MacroKeyTabComponent = MacroKeyTabComponent;
+
+
+/***/ },
+/* 216 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ __export(__webpack_require__(217));
+ var keymap_1 = __webpack_require__(218);
+ exports.KeymapTabComponent = keymap_1.KeymapTabComponent;
+ var keypress_1 = __webpack_require__(222);
+ exports.KeypressTabComponent = keypress_1.KeypressTabComponent;
+ var layer_1 = __webpack_require__(228);
+ exports.LayerTabComponent = layer_1.LayerTabComponent;
+ var macro_1 = __webpack_require__(232);
+ exports.MacroTabComponent = macro_1.MacroTabComponent;
+ var mouse_1 = __webpack_require__(236);
+ exports.MouseTabComponent = mouse_1.MouseTabComponent;
+ var none_1 = __webpack_require__(240);
+ exports.NoneTabComponent = none_1.NoneTabComponent;
+
+
+/***/ },
+/* 217 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var Tab = (function () {
+ function Tab() {
+ this.validAction = new core_1.EventEmitter();
+ }
+ return Tab;
+ }());
+ __decorate([
+ core_1.Output(),
+ __metadata("design:type", Object)
+ ], Tab.prototype, "validAction", void 0);
+ exports.Tab = Tab;
+
+
+/***/ },
+/* 218 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ __export(__webpack_require__(219));
+
+
+/***/ },
+/* 219 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __extends = (this && this.__extends) || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var key_action_1 = __webpack_require__(142);
+ var tab_1 = __webpack_require__(217);
+ var KeymapTabComponent = (function (_super) {
+ __extends(KeymapTabComponent, _super);
+ function KeymapTabComponent() {
+ var _this = _super.call(this) || this;
+ _this.keymapOptions = [];
+ return _this;
+ }
+ KeymapTabComponent.prototype.ngOnInit = function () {
+ this.keymapOptions = this.keymaps
+ .map(function (keymap) {
+ return {
+ id: keymap.abbreviation,
+ text: keymap.name
+ };
+ });
+ if (this.keymaps.length > 0) {
+ this.selectedKeymap = this.keymaps[0];
+ }
+ };
+ KeymapTabComponent.prototype.ngOnChanges = function () {
+ this.fromKeyAction(this.defaultKeyAction);
+ this.validAction.emit(true);
+ };
+ // TODO: change to the correct type when the wrapper has added it.
+ KeymapTabComponent.prototype.onChange = function (event) {
+ if (event.value === '-1') {
+ this.selectedKeymap = undefined;
+ }
+ else {
+ this.selectedKeymap = this.keymaps.find(function (keymap) { return keymap.abbreviation === event.value; });
+ }
+ };
+ KeymapTabComponent.prototype.keyActionValid = function () {
+ return !!this.selectedKeymap;
+ };
+ KeymapTabComponent.prototype.fromKeyAction = function (keyAction) {
+ if (!(keyAction instanceof key_action_1.SwitchKeymapAction)) {
+ return false;
+ }
+ var switchKeymapAction = keyAction;
+ this.selectedKeymap = this.keymaps
+ .find(function (keymap) { return keymap.abbreviation === switchKeymapAction.keymapAbbreviation; });
+ };
+ KeymapTabComponent.prototype.toKeyAction = function () {
+ if (!this.keyActionValid()) {
+ throw new Error('KeyAction is not valid. No selected keymap!');
+ }
+ var keymapAction = new key_action_1.SwitchKeymapAction();
+ keymapAction.keymapAbbreviation = this.selectedKeymap.abbreviation;
+ return keymapAction;
+ };
+ return KeymapTabComponent;
+ }(tab_1.Tab));
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", key_action_1.KeyAction)
+ ], KeymapTabComponent.prototype, "defaultKeyAction", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Array)
+ ], KeymapTabComponent.prototype, "keymaps", void 0);
+ KeymapTabComponent = __decorate([
+ core_1.Component({
+ selector: 'keymap-tab',
+ template: __webpack_require__(220),
+ styles: [__webpack_require__(221)],
+ changeDetection: core_1.ChangeDetectionStrategy.OnPush
+ }),
+ __metadata("design:paramtypes", [])
+ ], KeymapTabComponent);
+ exports.KeymapTabComponent = KeymapTabComponent;
+
+
+/***/ },
+/* 220 */
+/***/ function(module, exports) {
+
+ module.exports = "\r\n No keymaps are available to choose from. Create a keymap first! \r\n \r\n 0\">\r\n \r\n Switch to keymap: \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n ";
+
+/***/ },
+/* 221 */
+/***/ function(module, exports) {
+
+ module.exports = ":host {\n display: flex;\n flex-direction: column; }\n :host > span {\n text-align: center; }\n :host > div {\n display: flex;\n margin-top: 2px; }\n :host > div b {\n display: flex;\n align-items: center;\n margin-right: 7px; }\n :host > div select2 {\n flex: 1; }\n :host > div:last-child {\n margin-top: 10px; }\n :host > div:last-child img {\n max-height: 100%;\n max-width: 100%; }\n\n.empty {\n display: flex; }\n .empty img {\n display: flex;\n width: 100%;\n height: 100%;\n position: relative; }\n"
+
+/***/ },
+/* 222 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ __export(__webpack_require__(223));
+
+
+/***/ },
+/* 223 */
+/***/ function(module, exports, __webpack_require__) {
+
+ /* WEBPACK VAR INJECTION */(function(jQuery) {"use strict";
+ var __extends = (this && this.__extends) || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var key_action_1 = __webpack_require__(142);
+ var tab_1 = __webpack_require__(217);
+ var mapper_service_1 = __webpack_require__(202);
+ var KeypressTabComponent = (function (_super) {
+ __extends(KeypressTabComponent, _super);
+ function KeypressTabComponent(mapper) {
+ var _this = _super.call(this) || this;
+ _this.mapper = mapper;
+ _this.scanCodeTemplateResult = function (state) {
+ if (!state.id) {
+ return state.text;
+ }
+ if (state.additional && state.additional.explanation) {
+ return jQuery(''
+ + '' + state.text + ' '
+ + ' '
+ + state.additional.explanation
+ + ' ' +
+ ' ');
+ }
+ else {
+ return jQuery('' + state.text + ' ');
+ }
+ };
+ _this.leftModifiers = ['LShift', 'LCtrl', 'LSuper', 'LAlt'];
+ _this.rightModifiers = ['RShift', 'RCtrl', 'RSuper', 'RAlt'];
+ _this.scanCodeGroups = [{
+ id: '0',
+ text: 'None'
+ }];
+ _this.scanCodeGroups = _this.scanCodeGroups.concat(__webpack_require__(224));
+ _this.longPressGroups = __webpack_require__(225);
+ _this.leftModifierSelects = Array(_this.leftModifiers.length).fill(false);
+ _this.rightModifierSelects = Array(_this.rightModifiers.length).fill(false);
+ _this.scanCode = 0;
+ _this.selectedLongPressIndex = -1;
+ _this.options = {
+ templateResult: _this.scanCodeTemplateResult,
+ matcher: function (term, text, data) {
+ var found = text.toUpperCase().indexOf(term.toUpperCase()) > -1;
+ if (!found && data.additional && data.additional.explanation) {
+ found = data.additional.explanation.toUpperCase().indexOf(term.toUpperCase()) > -1;
+ }
+ return found;
+ }
+ };
+ return _this;
+ }
+ KeypressTabComponent.prototype.ngOnChanges = function () {
+ this.fromKeyAction(this.defaultKeyAction);
+ this.validAction.emit(this.keyActionValid());
+ };
+ KeypressTabComponent.prototype.keyActionValid = function (keystrokeAction) {
+ if (!keystrokeAction) {
+ keystrokeAction = this.toKeyAction();
+ }
+ return (keystrokeAction) ? (keystrokeAction.scancode > 0 || keystrokeAction.modifierMask > 0) : false;
+ };
+ KeypressTabComponent.prototype.onKeysCapture = function (event) {
+ if (event.code) {
+ this.scanCode = event.code;
+ }
+ else {
+ this.scanCode = 0;
+ }
+ this.leftModifierSelects = event.left;
+ this.rightModifierSelects = event.right;
+ this.validAction.emit(this.keyActionValid());
+ };
+ KeypressTabComponent.prototype.fromKeyAction = function (keyAction) {
+ if (!(keyAction instanceof key_action_1.KeystrokeAction)) {
+ return false;
+ }
+ var keystrokeAction = keyAction;
+ // Restore scancode
+ this.scanCode = keystrokeAction.scancode || 0;
+ var leftModifiersLength = this.leftModifiers.length;
+ // Restore modifiers
+ for (var i = 0; i < leftModifiersLength; ++i) {
+ this.leftModifierSelects[this.mapper.modifierMapper(i)] = ((keystrokeAction.modifierMask >> i) & 1) === 1;
+ }
+ for (var i = leftModifiersLength; i < leftModifiersLength + this.rightModifierSelects.length; ++i) {
+ var index = this.mapper.modifierMapper(i) - leftModifiersLength;
+ this.rightModifierSelects[index] = ((keystrokeAction.modifierMask >> i) & 1) === 1;
+ }
+ // Restore longPressAction
+ if (keystrokeAction.longPressAction !== undefined) {
+ this.selectedLongPressIndex = this.mapper.modifierMapper(keystrokeAction.longPressAction);
+ }
+ return true;
+ };
+ KeypressTabComponent.prototype.toKeyAction = function () {
+ var keystrokeAction = new key_action_1.KeystrokeAction();
+ keystrokeAction.scancode = this.scanCode;
+ keystrokeAction.modifierMask = 0;
+ var modifiers = this.leftModifierSelects.concat(this.rightModifierSelects).map(function (x) { return x ? 1 : 0; });
+ for (var i = 0; i < modifiers.length; ++i) {
+ keystrokeAction.modifierMask |= modifiers[i] << this.mapper.modifierMapper(i);
+ }
+ keystrokeAction.longPressAction = this.selectedLongPressIndex === -1
+ ? undefined
+ : this.mapper.modifierMapper(this.selectedLongPressIndex);
+ if (this.keyActionValid(keystrokeAction)) {
+ return keystrokeAction;
+ }
+ };
+ KeypressTabComponent.prototype.toggleModifier = function (right, index) {
+ var modifierSelects = right ? this.rightModifierSelects : this.leftModifierSelects;
+ modifierSelects[index] = !modifierSelects[index];
+ this.validAction.emit(this.keyActionValid());
+ };
+ KeypressTabComponent.prototype.onLongpressChange = function (event) {
+ this.selectedLongPressIndex = +event.value;
+ };
+ KeypressTabComponent.prototype.onScancodeChange = function (event) {
+ this.scanCode = +event.value;
+ this.validAction.emit(this.keyActionValid());
+ };
+ return KeypressTabComponent;
+ }(tab_1.Tab));
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", key_action_1.KeyAction)
+ ], KeypressTabComponent.prototype, "defaultKeyAction", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Boolean)
+ ], KeypressTabComponent.prototype, "longPressEnabled", void 0);
+ KeypressTabComponent = __decorate([
+ core_1.Component({
+ selector: 'keypress-tab',
+ template: __webpack_require__(226),
+ styles: [__webpack_require__(227)]
+ }),
+ __metadata("design:paramtypes", [mapper_service_1.MapperService])
+ ], KeypressTabComponent);
+ exports.KeypressTabComponent = KeypressTabComponent;
+
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(93)))
+
+/***/ },
+/* 224 */
+/***/ function(module, exports) {
+
+ module.exports = [
+ {
+ "text": "Alphabet",
+ "children": [
+ {
+ "id": "4",
+ "text": "A"
+ },
+ {
+ "id": "5",
+ "text": "B"
+ },
+ {
+ "id": "6",
+ "text": "C"
+ },
+ {
+ "id": "7",
+ "text": "D"
+ },
+ {
+ "id": "8",
+ "text": "E"
+ },
+ {
+ "id": "9",
+ "text": "F"
+ },
+ {
+ "id": "10",
+ "text": "G"
+ },
+ {
+ "id": "11",
+ "text": "H"
+ },
+ {
+ "id": "12",
+ "text": "I"
+ },
+ {
+ "id": "13",
+ "text": "J"
+ },
+ {
+ "id": "14",
+ "text": "K"
+ },
+ {
+ "id": "15",
+ "text": "L"
+ },
+ {
+ "id": "16",
+ "text": "M"
+ },
+ {
+ "id": "17",
+ "text": "N"
+ },
+ {
+ "id": "18",
+ "text": "O"
+ },
+ {
+ "id": "19",
+ "text": "P"
+ },
+ {
+ "id": "20",
+ "text": "Q"
+ },
+ {
+ "id": "21",
+ "text": "R"
+ },
+ {
+ "id": "22",
+ "text": "S"
+ },
+ {
+ "id": "23",
+ "text": "T"
+ },
+ {
+ "id": "24",
+ "text": "U"
+ },
+ {
+ "id": "25",
+ "text": "V"
+ },
+ {
+ "id": "26",
+ "text": "W"
+ },
+ {
+ "id": "27",
+ "text": "X"
+ },
+ {
+ "id": "28",
+ "text": "Y"
+ },
+ {
+ "id": "29",
+ "text": "Z"
+ }
+ ]
+ },
+ {
+ "text": "Number Row",
+ "children": [
+ {
+ "id": "30",
+ "text": "1 !"
+ },
+ {
+ "id": "31",
+ "text": "2 @"
+ },
+ {
+ "id": "32",
+ "text": "3 #"
+ },
+ {
+ "id": "33",
+ "text": "4 $"
+ },
+ {
+ "id": "34",
+ "text": "5 %"
+ },
+ {
+ "id": "35",
+ "text": "6 ^"
+ },
+ {
+ "id": "36",
+ "text": "7 &"
+ },
+ {
+ "id": "37",
+ "text": "8 *"
+ },
+ {
+ "id": "38",
+ "text": "9 ("
+ },
+ {
+ "id": "39",
+ "text": "0 )"
+ }
+ ]
+ },
+ {
+ "text": "Whitespace",
+ "children": [
+ {
+ "id": "40",
+ "additional": {
+ "explanation": "Return"
+ },
+ "text": "Enter"
+ },
+ {
+ "id": "41",
+ "text": "Escape"
+ },
+ {
+ "id": "42",
+ "text": "Backspace"
+ },
+ {
+ "id": "43",
+ "text": "Tab"
+ },
+ {
+ "id": "44",
+ "text": "Space"
+ }
+ ]
+ },
+ {
+ "text": "Punctuation",
+ "children": [
+ {
+ "id": "45",
+ "text": "- _"
+ },
+ {
+ "id": "46",
+ "text": "= +"
+ },
+ {
+ "id": "47",
+ "text": "[ {"
+ },
+ {
+ "id": "48",
+ "text": "] }"
+ },
+ {
+ "id": "49",
+ "text": "\\ |"
+ },
+ {
+ "id": "51",
+ "text": "; :"
+ },
+ {
+ "id": "52",
+ "text": "' \""
+ },
+ {
+ "id": "53",
+ "text": "` ~"
+ },
+ {
+ "id": "54",
+ "text": ", <"
+ },
+ {
+ "id": "55",
+ "text": ". >"
+ },
+ {
+ "id": "56",
+ "text": "/ ?"
+ }
+ ]
+ },
+ {
+ "text": "Function keys",
+ "children": [
+ {
+ "id": "58",
+ "text": "F1"
+ },
+ {
+ "id": "59",
+ "text": "F2"
+ },
+ {
+ "id": "60",
+ "text": "F3"
+ },
+ {
+ "id": "61",
+ "text": "F4"
+ },
+ {
+ "id": "62",
+ "text": "F5"
+ },
+ {
+ "id": "63",
+ "text": "F6"
+ },
+ {
+ "id": "64",
+ "text": "F7"
+ },
+ {
+ "id": "65",
+ "text": "F8"
+ },
+ {
+ "id": "66",
+ "text": "F9"
+ },
+ {
+ "id": "67",
+ "text": "F10"
+ },
+ {
+ "id": "68",
+ "text": "F11"
+ },
+ {
+ "id": "69",
+ "text": "F12"
+ },
+ {
+ "id": "104",
+ "text": "F13"
+ },
+ {
+ "id": "105",
+ "text": "F14"
+ },
+ {
+ "id": "106",
+ "text": "F15"
+ },
+ {
+ "id": "107",
+ "text": "F16"
+ },
+ {
+ "id": "108",
+ "text": "F17"
+ },
+ {
+ "id": "109",
+ "text": "F18"
+ },
+ {
+ "id": "110",
+ "text": "F19"
+ },
+ {
+ "id": "111",
+ "text": "F20"
+ },
+ {
+ "id": "112",
+ "text": "F21"
+ },
+ {
+ "id": "113",
+ "text": "F22"
+ },
+ {
+ "id": "114",
+ "text": "F23"
+ },
+ {
+ "id": "115",
+ "text": "F24"
+ }
+ ]
+ },
+ {
+ "text": "Navigation",
+ "children": [
+ {
+ "id": "74",
+ "text": "Home"
+ },
+ {
+ "id": "75",
+ "additional": {
+ "explanation": "PgUp pageup"
+ },
+ "text": "Page Up"
+ },
+ {
+ "id": "77",
+ "text": "End"
+ },
+ {
+ "id": "78",
+ "additional": {
+ "explanation": "PgDn pagedown"
+ },
+ "text": "Page Down"
+ },
+ {
+ "id": "79",
+ "additional": {
+ "explanation": "ArrowRight"
+ },
+ "text": "Right Arrow"
+ },
+ {
+ "id": "80",
+ "additional": {
+ "explanation": "ArrowLeft"
+ },
+ "text": "Left Arrow"
+ },
+ {
+ "id": "81",
+ "additional": {
+ "explanation": "ArrowDown"
+ },
+ "text": "Down Arrow"
+ },
+ {
+ "id": "82",
+ "additional": {
+ "explanation": "ArrowUp"
+ },
+ "text": "Up Arrow"
+ }
+ ]
+ },
+ {
+ "text": "Numpad",
+ "children": [
+ {
+ "id": "83",
+ "text": "NumLock"
+ },
+ {
+ "id": "84",
+ "additional": {
+ "explanation": "slash"
+ },
+ "text": "/"
+ },
+ {
+ "id": "85",
+ "additional": {
+ "explanation": "asterisk"
+ },
+ "text": "*"
+ },
+ {
+ "id": "86",
+ "additional": {
+ "explanation": "minus"
+ },
+ "text": "-"
+ },
+ {
+ "id": "87",
+ "additional": {
+ "explanation": "plus"
+ },
+ "text": "+"
+ },
+ {
+ "id": "88",
+ "text": "Enter"
+ },
+ {
+ "id": "89",
+ "additional": {
+ "explanation": "one"
+ },
+ "text": "1"
+ },
+ {
+ "id": "90",
+ "additional": {
+ "explanation": "two"
+ },
+ "text": "2"
+ },
+ {
+ "id": "91",
+ "additional": {
+ "explanation": "three"
+ },
+ "text": "3"
+ },
+ {
+ "id": "92",
+ "additional": {
+ "explanation": "four"
+ },
+ "text": "4"
+ },
+ {
+ "id": "93",
+ "additional": {
+ "explanation": "five"
+ },
+ "text": "5"
+ },
+ {
+ "id": "94",
+ "additional": {
+ "explanation": "six"
+ },
+ "text": "6"
+ },
+ {
+ "id": "95",
+ "additional": {
+ "explanation": "seven"
+ },
+ "text": "7"
+ },
+ {
+ "id": "96",
+ "additional": {
+ "explanation": "eight"
+ },
+ "text": "8"
+ },
+ {
+ "id": "97",
+ "additional": {
+ "explanation": "nine"
+ },
+ "text": "9"
+ },
+ {
+ "id": "98",
+ "additional": {
+ "explanation": "zero"
+ },
+ "text": "0"
+ },
+ {
+ "id": "99",
+ "additional": {
+ "explanation": "Period"
+ },
+ "text": "."
+ },
+ {
+ "id": "176",
+ "additional": {
+ "explanation": "Doublezero"
+ },
+ "text": "00"
+ },
+ {
+ "id": "177",
+ "additional": {
+ "explanation": "Triplezero"
+ },
+ "text": "000"
+ }
+ ]
+ },
+ {
+ "text": "Misc",
+ "children": [
+ {
+ "id": "118",
+ "text": "Menu"
+ },
+ {
+ "id": "73",
+ "text": "Insert"
+ },
+ {
+ "id": "76",
+ "additional": {
+ "explanation": "Delete Forward"
+ },
+ "text": "Delete"
+ },
+ {
+ "id": "57",
+ "text": "CapsLock"
+ },
+ {
+ "id": "70",
+ "text": "PrintScreen"
+ },
+ {
+ "id": "71",
+ "text": "ScrollLock"
+ },
+ {
+ "id": "72",
+ "text": "Pause"
+ }
+ ]
+ },
+ {
+ "text": "Media Keys",
+ "children": [
+ {
+ "id": "127",
+ "text": "Mute"
+ },
+ {
+ "id": "128",
+ "text": "Volume Up"
+ },
+ {
+ "id": "129",
+ "text": "Volume Down"
+ },
+ {
+ "id": "",
+ "text": "Next Track"
+ },
+ {
+ "id": "",
+ "text": "Previous Track"
+ },
+ {
+ "id": "",
+ "text": "Stop"
+ },
+ {
+ "id": "",
+ "text": "Play/Pause"
+ },
+ {
+ "id": "",
+ "text": "Eject"
+ }
+ ]
+ }
+ ];
+
+/***/ },
+/* 225 */
+/***/ function(module, exports) {
+
+ module.exports = [
+ {
+ "id": "-1",
+ "text": "None"
+ },
+ {
+ "text": "Modifiers",
+ "children": [
+ {
+ "id": "0",
+ "text": "LShift"
+ },
+ {
+ "id": "1",
+ "text": "LCtrl"
+ },
+ {
+ "id": "2",
+ "text": "LSuper"
+ },
+ {
+ "id": "3",
+ "text": "LAlt"
+ },
+ {
+ "id": "4",
+ "text": "RShift"
+ },
+ {
+ "id": "5",
+ "text": "RCtrl"
+ },
+ {
+ "id": "6",
+ "text": "RSuper"
+ },
+ {
+ "id": "7",
+ "text": "RAlt"
+ }
+ ]
+ },
+ {
+ "text": "Layer switcher",
+ "children": [
+ {
+ "id": "8",
+ "text": "Mod"
+ },
+ {
+ "id": "9",
+ "text": "Mouse"
+ },
+ {
+ "id": "10",
+ "text": "Fn"
+ }
+ ]
+ }
+ ];
+
+/***/ },
+/* 226 */
+/***/ function(module, exports) {
+
+ module.exports = "\r\n Scancode: \r\n \r\n \r\n
\r\n\r\n\r\n Long press action: \r\n \r\n \r\n
\r\n\r\n\r\n \r\n When a key is configured as layer switcher key, you can't assign other functions to it.\r\n To assign a scancode to the key, set the Layer action to None .\r\n
";
+
+/***/ },
+/* 227 */
+/***/ function(module, exports) {
+
+ module.exports = ":host {\n display: flex;\n flex-direction: column;\n position: relative; }\n :host .scancode-options {\n margin-bottom: 10px;\n margin-top: 2px; }\n :host .scancode-options > b {\n position: relative;\n top: 2px; }\n :host .modifier-options > b {\n position: relative;\n top: -9px;\n margin-right: 4px; }\n :host .modifier-options .btn-toolbar {\n display: inline-block; }\n :host .long-press-container {\n display: flex;\n margin-top: 3rem; }\n :host .long-press-container > b {\n margin-right: 0.6em;\n align-items: center;\n display: flex; }\n :host .long-press-container .secondary-role {\n width: 135px; }\n :host .long-press-container icon {\n margin-left: 0.6em; }\n :host .setting-label.disabled {\n color: #999; }\n :host .disabled-state--text {\n display: none;\n position: absolute;\n top: 50%;\n margin-top: -4rem;\n color: #31708f;\n padding-right: 40px; }\n :host .disabled-state--text .fa {\n font-size: 2.6rem;\n float: left;\n padding: 1rem 1.5rem 2rem; }\n :host.disabled .scancode-options,\n :host.disabled .modifier-options,\n :host.disabled .long-press-container {\n visibility: hidden; }\n :host.disabled .disabled-state--text {\n display: block; }\n"
+
+/***/ },
+/* 228 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ __export(__webpack_require__(229));
+
+
+/***/ },
+/* 229 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __extends = (this && this.__extends) || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var key_action_1 = __webpack_require__(142);
+ var tab_1 = __webpack_require__(217);
+ var LayerTabComponent = (function (_super) {
+ __extends(LayerTabComponent, _super);
+ function LayerTabComponent() {
+ var _this = _super.call(this) || this;
+ _this.toggleData = [
+ {
+ id: false,
+ text: 'Activate'
+ },
+ {
+ id: true,
+ text: 'Toggle'
+ }
+ ];
+ _this.layerData = [
+ {
+ id: 0,
+ text: 'Mod'
+ },
+ {
+ id: 1,
+ text: 'Fn'
+ },
+ {
+ id: 2,
+ text: 'Mouse'
+ }
+ ];
+ _this.toggle = false;
+ _this.layer = key_action_1.LayerName.mod;
+ return _this;
+ }
+ LayerTabComponent.prototype.ngOnChanges = function (changes) {
+ if (changes['defaultKeyAction']) {
+ this.fromKeyAction(this.defaultKeyAction);
+ }
+ if (changes['currentLayer']) {
+ this.isNotBase = this.currentLayer > 0;
+ }
+ this.validAction.emit(true);
+ };
+ LayerTabComponent.prototype.keyActionValid = function () {
+ return !this.isNotBase;
+ };
+ LayerTabComponent.prototype.fromKeyAction = function (keyAction) {
+ if (!(keyAction instanceof key_action_1.SwitchLayerAction)) {
+ return false;
+ }
+ var switchLayerAction = keyAction;
+ this.toggle = switchLayerAction.isLayerToggleable;
+ this.layer = switchLayerAction.layer;
+ return true;
+ };
+ LayerTabComponent.prototype.toKeyAction = function () {
+ var keyAction = new key_action_1.SwitchLayerAction();
+ keyAction.isLayerToggleable = this.toggle;
+ keyAction.layer = this.layer;
+ if (!this.keyActionValid()) {
+ throw new Error('KeyAction is invalid!');
+ }
+ return keyAction;
+ };
+ LayerTabComponent.prototype.toggleChanged = function (value) {
+ this.toggle = value === 'true';
+ };
+ LayerTabComponent.prototype.layerChanged = function (value) {
+ this.layer = +value;
+ };
+ return LayerTabComponent;
+ }(tab_1.Tab));
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", key_action_1.KeyAction)
+ ], LayerTabComponent.prototype, "defaultKeyAction", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Number)
+ ], LayerTabComponent.prototype, "currentLayer", void 0);
+ __decorate([
+ core_1.HostBinding('class.no-base'),
+ __metadata("design:type", Boolean)
+ ], LayerTabComponent.prototype, "isNotBase", void 0);
+ LayerTabComponent = __decorate([
+ core_1.Component({
+ selector: 'layer-tab',
+ template: __webpack_require__(230),
+ styles: [__webpack_require__(231)]
+ }),
+ __metadata("design:paramtypes", [])
+ ], LayerTabComponent);
+ exports.LayerTabComponent = LayerTabComponent;
+
+
+/***/ },
+/* 230 */
+/***/ function(module, exports) {
+
+ module.exports = "\r\n \r\n \r\n {{ item.text }}\r\n \r\n \r\n the \r\n \r\n \r\n {{ item.text }}\r\n \r\n \r\n \r\n layer by pressing this key. \r\n layer by holding this key. \r\n \r\n \r\n\r\n Layer switching is only possible from the base layer. \r\n ";
+
+/***/ },
+/* 231 */
+/***/ function(module, exports) {
+
+ module.exports = ":host {\n display: flex;\n margin: 0 -5px; }\n :host.no-base {\n justify-content: center; }\n :host > span,\n :host > select {\n margin: 0 5px;\n display: flex;\n align-items: center; }\n\nselect {\n background-color: #fff;\n border: 1px solid #aaa;\n border-radius: 4px;\n padding: 4px 20px 4px 8px; }\n"
+
+/***/ },
+/* 232 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ __export(__webpack_require__(233));
+
+
+/***/ },
+/* 233 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __extends = (this && this.__extends) || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var store_1 = __webpack_require__(44);
+ var key_action_1 = __webpack_require__(142);
+ var tab_1 = __webpack_require__(217);
+ var user_configuration_1 = __webpack_require__(141);
+ var MacroTabComponent = (function (_super) {
+ __extends(MacroTabComponent, _super);
+ function MacroTabComponent(store) {
+ var _this = _super.call(this) || this;
+ _this.store = store;
+ _this.subscription = store.let(user_configuration_1.getMacros())
+ .subscribe(function (macros) { return _this.macros = macros; });
+ _this.macroOptions = [];
+ _this.selectedMacroIndex = 0;
+ return _this;
+ }
+ MacroTabComponent.prototype.ngOnInit = function () {
+ this.macroOptions = this.macros.map(function (macro, index) {
+ return {
+ id: index.toString(),
+ text: macro.name
+ };
+ });
+ };
+ MacroTabComponent.prototype.ngOnChanges = function () {
+ this.fromKeyAction(this.defaultKeyAction);
+ this.validAction.emit(true);
+ };
+ // TODO: change to the correct type when the wrapper has added it.
+ MacroTabComponent.prototype.onChange = function (event) {
+ this.selectedMacroIndex = +event.value;
+ };
+ MacroTabComponent.prototype.keyActionValid = function () {
+ return this.selectedMacroIndex >= 0;
+ };
+ MacroTabComponent.prototype.fromKeyAction = function (keyAction) {
+ if (!(keyAction instanceof key_action_1.PlayMacroAction)) {
+ return false;
+ }
+ var playMacroAction = keyAction;
+ this.selectedMacroIndex = this.macros.findIndex(function (macro) { return playMacroAction.macroId === macro.id; });
+ return true;
+ };
+ MacroTabComponent.prototype.toKeyAction = function () {
+ if (!this.keyActionValid()) {
+ throw new Error('KeyAction is not valid. No selected macro!');
+ }
+ var keymapAction = new key_action_1.PlayMacroAction();
+ keymapAction.macroId = this.macros[this.selectedMacroIndex].id;
+ return keymapAction;
+ };
+ MacroTabComponent.prototype.ngOnDestroy = function () {
+ this.subscription.unsubscribe();
+ };
+ return MacroTabComponent;
+ }(tab_1.Tab));
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", key_action_1.KeyAction)
+ ], MacroTabComponent.prototype, "defaultKeyAction", void 0);
+ MacroTabComponent = __decorate([
+ core_1.Component({
+ selector: 'macro-tab',
+ template: __webpack_require__(234),
+ styles: [__webpack_require__(235)]
+ }),
+ __metadata("design:paramtypes", [store_1.Store])
+ ], MacroTabComponent);
+ exports.MacroTabComponent = MacroTabComponent;
+
+
+/***/ },
+/* 234 */
+/***/ function(module, exports) {
+
+ module.exports = "\r\n No macros are available to choose from. Create a macro first! \r\n \r\n 0\">\r\n \r\n Play macro: \r\n \r\n
\r\n \r\n ";
+
+/***/ },
+/* 235 */
+/***/ function(module, exports) {
+
+ module.exports = ":host {\n display: flex;\n flex-direction: column; }\n :host > span {\n text-align: center; }\n :host .macro-selector {\n display: flex;\n margin-top: 2px; }\n :host .macro-selector b {\n display: flex;\n align-items: center;\n margin-right: 7px; }\n :host .macro-selector select2 {\n flex: 1; }\n :host .macro-action-container {\n display: flex;\n flex-direction: column;\n min-height: 200px;\n max-height: 300px;\n margin: 20px 0;\n overflow-x: hidden;\n overflow-y: auto;\n border-radius: 4px;\n border: 1px solid #ddd; }\n :host .macro-action-container .list-group {\n margin-bottom: 0;\n border: 0; }\n"
+
+/***/ },
+/* 236 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ __export(__webpack_require__(237));
+
+
+/***/ },
+/* 237 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __extends = (this && this.__extends) || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var key_action_1 = __webpack_require__(142);
+ var tab_1 = __webpack_require__(217);
+ var MouseTabComponent = (function (_super) {
+ __extends(MouseTabComponent, _super);
+ function MouseTabComponent() {
+ var _this = _super.call(this) || this;
+ /* tslint:disable:variable-name: It is an enum type. So it can start with uppercase. */
+ /* tslint:disable:no-unused-variable: It is used in the template. */
+ _this.MouseActionParam = key_action_1.MouseActionParam;
+ _this.selectedPageIndex = 0;
+ _this.pages = ['Move', 'Scroll', 'Click', 'Speed'];
+ return _this;
+ }
+ MouseTabComponent.prototype.ngOnChanges = function () {
+ this.fromKeyAction(this.defaultKeyAction);
+ this.validAction.emit(this.keyActionValid());
+ };
+ MouseTabComponent.prototype.keyActionValid = function () {
+ return this.mouseActionParam !== undefined;
+ };
+ MouseTabComponent.prototype.fromKeyAction = function (keyAction) {
+ if (!(keyAction instanceof key_action_1.MouseAction)) {
+ return false;
+ }
+ var mouseAction = keyAction;
+ this.mouseActionParam = mouseAction.mouseAction;
+ if (mouseAction.mouseAction === key_action_1.MouseActionParam.moveUp) {
+ this.selectedPageIndex = 0;
+ }
+ switch (mouseAction.mouseAction) {
+ case key_action_1.MouseActionParam.moveDown:
+ case key_action_1.MouseActionParam.moveUp:
+ case key_action_1.MouseActionParam.moveLeft:
+ case key_action_1.MouseActionParam.moveRight:
+ this.selectedPageIndex = 0;
+ break;
+ case key_action_1.MouseActionParam.scrollDown:
+ case key_action_1.MouseActionParam.scrollUp:
+ case key_action_1.MouseActionParam.scrollLeft:
+ case key_action_1.MouseActionParam.scrollRight:
+ this.selectedPageIndex = 1;
+ break;
+ case key_action_1.MouseActionParam.leftClick:
+ case key_action_1.MouseActionParam.middleClick:
+ case key_action_1.MouseActionParam.rightClick:
+ this.selectedPageIndex = 2;
+ break;
+ case key_action_1.MouseActionParam.decelerate:
+ case key_action_1.MouseActionParam.accelerate:
+ this.selectedPageIndex = 3;
+ break;
+ default:
+ return false;
+ }
+ return true;
+ };
+ MouseTabComponent.prototype.toKeyAction = function () {
+ var mouseAction = new key_action_1.MouseAction();
+ mouseAction.mouseAction = this.mouseActionParam;
+ return mouseAction;
+ };
+ MouseTabComponent.prototype.changePage = function (index) {
+ if (index < -1 || index > 3) {
+ console.error("Invalid index error: " + index);
+ return;
+ }
+ this.selectedPageIndex = index;
+ this.mouseActionParam = undefined;
+ this.validAction.emit(false);
+ };
+ MouseTabComponent.prototype.setMouseActionParam = function (mouseActionParam) {
+ this.mouseActionParam = mouseActionParam;
+ this.validAction.emit(true);
+ };
+ return MouseTabComponent;
+ }(tab_1.Tab));
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", key_action_1.KeyAction)
+ ], MouseTabComponent.prototype, "defaultKeyAction", void 0);
+ MouseTabComponent = __decorate([
+ core_1.Component({
+ selector: 'mouse-tab',
+ template: __webpack_require__(238),
+ styles: [__webpack_require__(239)]
+ }),
+ __metadata("design:paramtypes", [])
+ ], MouseTabComponent);
+ exports.MouseTabComponent = MouseTabComponent;
+
+
+/***/ },
+/* 238 */
+/***/ function(module, exports) {
+
+ module.exports = "\r\n\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n Left \r\n Middle \r\n Right \r\n
\r\n
\r\n
\r\n
\r\n
Press this key along with mouse movement/scrolling to accelerate/decelerate the speed of the action.
\r\n
\r\n
\r\n \r\n -\r\n Decelerate \r\n \r\n \r\n +\r\n Accelerate \r\n \r\n
\r\n
\r\n
You can set the multiplier in the settings .
\r\n
\r\n
\r\n
\r\n
\r\n
";
+
+/***/ },
+/* 239 */
+/***/ function(module, exports) {
+
+ module.exports = ":host {\n display: flex; }\n :host.popover-content {\n padding: 10px;\n display: flex;\n align-items: center; }\n :host .mouse-action .nav {\n border-right: 1px solid #ccc; }\n :host .mouse-action .nav li a {\n border-top-right-radius: 0;\n border-bottom-right-radius: 0; }\n :host .mouse-action .nav li a.selected {\n font-style: italic; }\n :host .mouse-action .nav li.active a.selected {\n font-style: normal; }\n :host .mouse-action .nav li.active a:after {\n content: '';\n display: block;\n position: absolute;\n width: 0;\n height: 0;\n top: 0;\n right: -4rem;\n border-color: transparent transparent transparent #337ab7;\n border-style: solid;\n border-width: 2rem; }\n :host .help-text--mouse-speed {\n margin-bottom: 2rem;\n font-size: 0.9em;\n color: #666; }\n :host .help-text--mouse-speed p {\n margin: 0; }\n :host .details .btn-placeholder {\n visibility: hidden; }\n\n.mouse__config--speed .btn-default {\n font-size: 25px;\n line-height: 22px;\n padding-top: 4px;\n padding-bottom: 4px; }\n .mouse__config--speed .btn-default span {\n font-size: 13px;\n display: block;\n text-align: center; }\n\n.help-text--mouse-speed.last-help {\n margin-bottom: 0;\n margin-top: 2rem; }\n"
+
+/***/ },
+/* 240 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ __export(__webpack_require__(241));
+
+
+/***/ },
+/* 241 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __extends = (this && this.__extends) || function (d, b) {
+ for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
+ function __() { this.constructor = d; }
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
+ };
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var core_1 = __webpack_require__(4);
+ var tab_1 = __webpack_require__(217);
+ var NoneTabComponent = (function (_super) {
+ __extends(NoneTabComponent, _super);
+ function NoneTabComponent() {
+ return _super !== null && _super.apply(this, arguments) || this;
+ }
+ NoneTabComponent.prototype.ngOnChanges = function (event) {
+ this.validAction.emit(true);
+ };
+ NoneTabComponent.prototype.keyActionValid = function () {
+ return true;
+ };
+ NoneTabComponent.prototype.fromKeyAction = function () {
+ return false;
+ };
+ NoneTabComponent.prototype.toKeyAction = function () {
+ return undefined;
+ };
+ return NoneTabComponent;
+ }(tab_1.Tab));
+ NoneTabComponent = __decorate([
+ core_1.Component({
+ selector: 'none-tab',
+ template: __webpack_require__(242),
+ styles: [__webpack_require__(243)]
+ })
+ ], NoneTabComponent);
+ exports.NoneTabComponent = NoneTabComponent;
+
+
+/***/ },
+/* 242 */
+/***/ function(module, exports) {
+
+ module.exports = "This key is unassigned and has no functionality.";
+
+/***/ },
+/* 243 */
+/***/ function(module, exports) {
+
+ module.exports = ":host {\n display: flex;\n justify-content: center;\n padding: 2rem 0; }\n"
+
+/***/ },
+/* 244 */
+/***/ function(module, exports) {
+
+ module.exports = "\r\n
\r\n
\r\n
\r\n
Press key \r\n Hold key \r\n Release key \r\n \r\n \r\n
\r\n
";
+
+/***/ },
+/* 245 */
+/***/ function(module, exports) {
+
+ module.exports = ".macro-key__container {\n padding: 0; }\n\n.macro-key__types {\n margin-left: 0;\n padding: 0 0 1rem; }\n\n.macro-key__action {\n padding-left: 3rem;\n padding-bottom: 1rem; }\n .macro-key__action-container {\n margin-top: -1rem;\n padding-top: 1rem;\n border-left: 1px solid #ddd; }\n\n.fa {\n min-width: 14px; }\n"
+
+/***/ },
+/* 246 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var macro_mouse_component_1 = __webpack_require__(247);
+ exports.MacroMouseTabComponent = macro_mouse_component_1.MacroMouseTabComponent;
+
+
+/***/ },
+/* 247 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var macro_action_1 = __webpack_require__(162);
+ var tab_1 = __webpack_require__(216);
+ var TabName;
+ (function (TabName) {
+ TabName[TabName["Move"] = 0] = "Move";
+ TabName[TabName["Scroll"] = 1] = "Scroll";
+ TabName[TabName["Click"] = 2] = "Click";
+ TabName[TabName["Hold"] = 3] = "Hold";
+ TabName[TabName["Release"] = 4] = "Release";
+ })(TabName || (TabName = {}));
+ var MacroMouseTabComponent = (function () {
+ /* tslint:enable:no-unused-variable */
+ /* tslint:enable:variable-name */
+ function MacroMouseTabComponent() {
+ /* tslint:disable:variable-name: It is an enum type. So it can start with uppercase. */
+ /* tslint:disable:no-unused-variable: It is used in the template. */
+ this.TabName = TabName;
+ this.buttonLabels = ['Left', 'Middle', 'Right'];
+ this.selectedButtons = Array(this.buttonLabels.length).fill(false);
+ }
+ MacroMouseTabComponent.prototype.ngOnInit = function () {
+ var tabName = this.getTabName(this.macroAction);
+ this.selectTab(tabName);
+ var buttonActions = [TabName.Click, TabName.Hold, TabName.Release];
+ if (buttonActions.includes(this.activeTab)) {
+ this.selectedButtons = this.macroAction.getMouseButtons();
+ }
+ };
+ MacroMouseTabComponent.prototype.selectTab = function (tab) {
+ this.activeTab = tab;
+ this.macroAction.macroActionType = this.getMacroActionType(tab);
+ if (this.macroAction.macroActionType === macro_action_1.macroActionType.MouseButtonMacroAction) {
+ this.macroAction.action = this.getAction(tab);
+ }
+ };
+ MacroMouseTabComponent.prototype.setMouseClick = function (index) {
+ this.selectedButtons[index] = !this.selectedButtons[index];
+ this.macroAction.setMouseButtons(this.selectedButtons);
+ };
+ MacroMouseTabComponent.prototype.hasButton = function (index) {
+ return this.selectedButtons[index];
+ };
+ MacroMouseTabComponent.prototype.getAction = function (tab) {
+ switch (tab) {
+ case TabName.Click:
+ return macro_action_1.MacroSubAction.press;
+ case TabName.Hold:
+ return macro_action_1.MacroSubAction.hold;
+ case TabName.Release:
+ return macro_action_1.MacroSubAction.release;
+ default:
+ throw new Error('Invalid tab name');
+ }
+ };
+ MacroMouseTabComponent.prototype.getTabName = function (action) {
+ if (action.macroActionType === macro_action_1.macroActionType.MouseButtonMacroAction) {
+ if (!action.action || action.isOnlyPressAction()) {
+ return TabName.Click;
+ }
+ else if (action.isOnlyPressAction()) {
+ return TabName.Hold;
+ }
+ else if (action.isOnlyReleaseAction()) {
+ return TabName.Release;
+ }
+ }
+ else if (action.macroActionType === macro_action_1.macroActionType.MoveMouseMacroAction) {
+ return TabName.Move;
+ }
+ else if (action.macroActionType === macro_action_1.macroActionType.ScrollMouseMacroAction) {
+ return TabName.Scroll;
+ }
+ return TabName.Move;
+ };
+ MacroMouseTabComponent.prototype.getMacroActionType = function (tab) {
+ if (tab === TabName.Click || tab === TabName.Hold || tab === TabName.Release) {
+ return macro_action_1.macroActionType.MouseButtonMacroAction;
+ }
+ else if (tab === TabName.Move) {
+ return macro_action_1.macroActionType.MoveMouseMacroAction;
+ }
+ else if (tab === TabName.Scroll) {
+ return macro_action_1.macroActionType.ScrollMouseMacroAction;
+ }
+ };
+ return MacroMouseTabComponent;
+ }());
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", macro_action_1.EditableMacroAction)
+ ], MacroMouseTabComponent.prototype, "macroAction", void 0);
+ __decorate([
+ core_1.ViewChild('tab'),
+ __metadata("design:type", tab_1.Tab)
+ ], MacroMouseTabComponent.prototype, "selectedTab", void 0);
+ MacroMouseTabComponent = __decorate([
+ core_1.Component({
+ selector: 'macro-mouse-tab',
+ template: __webpack_require__(248),
+ styles: [
+ __webpack_require__(208),
+ __webpack_require__(249)
+ ],
+ host: { 'class': 'macro__mouse' }
+ }),
+ __metadata("design:paramtypes", [])
+ ], MacroMouseTabComponent);
+ exports.MacroMouseTabComponent = MacroMouseTabComponent;
+
+
+/***/ },
+/* 248 */
+/***/ function(module, exports) {
+
+ module.exports = "\r\n
\r\n
\r\n
\r\n
Move pointer \r\n
Use negative values to move down or left from current position.
\r\n
\r\n
\r\n
\r\n
Scroll \r\n
Use negative values to move down or left from current position.
\r\n
\r\n
\r\n
\r\n
Click mouse button \r\n
Hold mouse button \r\n
Release mouse button \r\n
\r\n {{buttonLabel}} \r\n
\r\n
\r\n
\r\n
";
+
+/***/ },
+/* 249 */
+/***/ function(module, exports) {
+
+ module.exports = ".macro-mouse__container {\n padding: 0; }\n\n.macro-mouse__types {\n border-right: 1px solid #ddd;\n border-left: 0;\n margin-top: -1rem;\n margin-left: 0;\n padding: 1rem 0; }\n\n.macro-mouse__actions {\n padding-left: 3rem;\n padding-bottom: 1rem; }\n\n.macro-mouse__buttons {\n margin-top: 3rem;\n margin-bottom: 1rem; }\n\n.fa {\n min-width: 14px; }\n\n.form-horizontal .form-group {\n margin: 0 0 0.5rem; }\n\n.form-horizontal label {\n display: inline-block;\n margin-right: 0.5rem; }\n\n.form-horizontal .form-control {\n display: inline-block;\n width: 60%; }\n"
+
+/***/ },
+/* 250 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var macro_text_component_1 = __webpack_require__(251);
+ exports.MacroTextTabComponent = macro_text_component_1.MacroTextTabComponent;
+
+
+/***/ },
+/* 251 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var macro_action_1 = __webpack_require__(162);
+ var MacroTextTabComponent = (function () {
+ function MacroTextTabComponent(renderer) {
+ this.renderer = renderer;
+ }
+ MacroTextTabComponent.prototype.ngAfterViewInit = function () {
+ this.renderer.invokeElementMethod(this.input.nativeElement, 'focus');
+ };
+ MacroTextTabComponent.prototype.onTextChange = function () {
+ this.macroAction.text = this.input.nativeElement.value;
+ };
+ return MacroTextTabComponent;
+ }());
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", macro_action_1.EditableMacroAction)
+ ], MacroTextTabComponent.prototype, "macroAction", void 0);
+ __decorate([
+ core_1.ViewChild('macroTextInput'),
+ __metadata("design:type", core_1.ElementRef)
+ ], MacroTextTabComponent.prototype, "input", void 0);
+ MacroTextTabComponent = __decorate([
+ core_1.Component({
+ selector: 'macro-text-tab',
+ template: __webpack_require__(252),
+ styles: [__webpack_require__(253)],
+ host: { 'class': 'macro__text' }
+ }),
+ __metadata("design:paramtypes", [core_1.Renderer])
+ ], MacroTextTabComponent);
+ exports.MacroTextTabComponent = MacroTextTabComponent;
+
+
+/***/ },
+/* 252 */
+/***/ function(module, exports) {
+
+ module.exports = "\r\n
Type text \r\n
Input the text you want to type with this macro action.
\r\n
\r\n
";
+
+/***/ },
+/* 253 */
+/***/ function(module, exports) {
+
+ module.exports = ":host {\n display: flex;\n flex-direction: column;\n position: relative; }\n\n.macro__text-input {\n width: 100%;\n min-height: 10rem;\n margin-bottom: 1rem; }\n"
+
+/***/ },
+/* 254 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ __export(__webpack_require__(255));
+
+
+/***/ },
+/* 255 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var NotificationComponent = (function () {
+ function NotificationComponent() {
+ }
+ return NotificationComponent;
+ }());
+ NotificationComponent = __decorate([
+ core_1.Component({
+ selector: 'notification',
+ template: __webpack_require__(256),
+ styles: [__webpack_require__(257)]
+ }),
+ __metadata("design:paramtypes", [])
+ ], NotificationComponent);
+ exports.NotificationComponent = NotificationComponent;
+
+
+/***/ },
+/* 256 */
+/***/ function(module, exports) {
+
+ module.exports = "Keymap removed \r\nUndo \r\n× ";
+
+/***/ },
+/* 257 */
+/***/ function(module, exports) {
+
+ module.exports = ":host {\n padding: 1rem 1.5rem;\n box-shadow: 0 0 0 1px #000;\n border-radius: 0.5rem;\n position: absolute;\n top: 2rem;\n right: 2rem;\n z-index: 10000;\n background-color: #333;\n color: #eee;\n display: none; }\n\n.action {\n margin-left: 1rem;\n margin-right: 1rem;\n color: #5bc0de;\n text-transform: uppercase;\n font-weight: bold; }\n .action:focus, .action:active, .action:hover {\n text-decoration: none;\n color: #5bc0de; }\n\n.dismiss {\n position: relative;\n bottom: 1px;\n color: #ccc; }\n .dismiss:hover {\n cursor: pointer;\n color: #fff; }\n"
+
+/***/ },
+/* 258 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ __export(__webpack_require__(259));
+
+
+/***/ },
+/* 259 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var store_1 = __webpack_require__(44);
+ var key_action_1 = __webpack_require__(142);
+ var Keymap_1 = __webpack_require__(158);
+ var tab_1 = __webpack_require__(217);
+ var user_configuration_1 = __webpack_require__(141);
+ var TabName;
+ (function (TabName) {
+ TabName[TabName["Keypress"] = 0] = "Keypress";
+ TabName[TabName["Layer"] = 1] = "Layer";
+ TabName[TabName["Mouse"] = 2] = "Mouse";
+ TabName[TabName["Macro"] = 3] = "Macro";
+ TabName[TabName["Keymap"] = 4] = "Keymap";
+ TabName[TabName["None"] = 5] = "None";
+ })(TabName || (TabName = {}));
+ var PopoverComponent = (function () {
+ function PopoverComponent(store) {
+ var _this = this;
+ this.store = store;
+ this.cancel = new core_1.EventEmitter();
+ this.remap = new core_1.EventEmitter();
+ this.tabName = TabName;
+ this.leftArrow = false;
+ this.rightArrow = false;
+ this.topPosition = 0;
+ this.leftPosition = 0;
+ this.animationState = 'closed';
+ this.keymaps$ = store.let(user_configuration_1.getKeymaps())
+ .map(function (keymaps) {
+ return keymaps.filter(function (keymap) { return _this.currentKeymap.abbreviation !== keymap.abbreviation; });
+ });
+ }
+ PopoverComponent.prototype.ngOnChanges = function (change) {
+ if (this.keyPosition && this.wrapPosition && (change['keyPosition'] || change['wrapPosition'])) {
+ this.calculatePosition();
+ }
+ if (change['defaultKeyAction']) {
+ var tab = void 0;
+ if (this.defaultKeyAction instanceof key_action_1.KeystrokeAction) {
+ tab = TabName.Keypress;
+ }
+ else if (this.defaultKeyAction instanceof key_action_1.SwitchLayerAction) {
+ tab = TabName.Layer;
+ }
+ else if (this.defaultKeyAction instanceof key_action_1.MouseAction) {
+ tab = TabName.Mouse;
+ }
+ else if (this.defaultKeyAction instanceof key_action_1.PlayMacroAction) {
+ tab = TabName.Macro;
+ }
+ else if (this.defaultKeyAction instanceof key_action_1.SwitchKeymapAction) {
+ tab = TabName.Keymap;
+ }
+ else {
+ tab = TabName.None;
+ }
+ this.selectTab(tab);
+ }
+ if (change['visible']) {
+ if (change['visible'].currentValue) {
+ this.animationState = 'opened';
+ }
+ else {
+ this.animationState = 'closed';
+ }
+ }
+ };
+ PopoverComponent.prototype.onCancelClick = function () {
+ this.cancel.emit(undefined);
+ };
+ PopoverComponent.prototype.onRemapKey = function () {
+ if (this.keyActionValid) {
+ try {
+ var keyAction = this.selectedTab.toKeyAction();
+ this.remap.emit(keyAction);
+ }
+ catch (e) {
+ // TODO: show error dialog
+ console.error(e);
+ }
+ }
+ };
+ PopoverComponent.prototype.onEscape = function () {
+ this.cancel.emit();
+ };
+ PopoverComponent.prototype.selectTab = function (tab) {
+ this.activeTab = tab;
+ };
+ PopoverComponent.prototype.onOverlay = function () {
+ this.cancel.emit(undefined);
+ };
+ PopoverComponent.prototype.calculatePosition = function () {
+ var offsetLeft = this.wrapPosition.left + 265; // 265 is a width of the side menu with a margin
+ var popover = this.popoverHost.nativeElement;
+ var newLeft = this.keyPosition.left + (this.keyPosition.width / 2);
+ this.leftArrow = newLeft < offsetLeft;
+ this.rightArrow = (newLeft + popover.offsetWidth) > offsetLeft + this.wrapPosition.width;
+ if (this.leftArrow) {
+ newLeft = this.keyPosition.left;
+ }
+ else if (this.rightArrow) {
+ newLeft = this.keyPosition.left - popover.offsetWidth + this.keyPosition.width;
+ }
+ else {
+ newLeft -= popover.offsetWidth / 2;
+ }
+ // 7 is a space between a bottom key position and a popover
+ this.topPosition = this.keyPosition.top + this.keyPosition.height + 7 + window.scrollY;
+ this.leftPosition = newLeft;
+ };
+ return PopoverComponent;
+ }());
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", key_action_1.KeyAction)
+ ], PopoverComponent.prototype, "defaultKeyAction", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Keymap_1.Keymap)
+ ], PopoverComponent.prototype, "currentKeymap", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Number)
+ ], PopoverComponent.prototype, "currentLayer", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", ClientRect)
+ ], PopoverComponent.prototype, "keyPosition", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", ClientRect)
+ ], PopoverComponent.prototype, "wrapPosition", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Boolean)
+ ], PopoverComponent.prototype, "visible", void 0);
+ __decorate([
+ core_1.Output(),
+ __metadata("design:type", Object)
+ ], PopoverComponent.prototype, "cancel", void 0);
+ __decorate([
+ core_1.Output(),
+ __metadata("design:type", Object)
+ ], PopoverComponent.prototype, "remap", void 0);
+ __decorate([
+ core_1.ViewChild('tab'),
+ __metadata("design:type", tab_1.Tab)
+ ], PopoverComponent.prototype, "selectedTab", void 0);
+ __decorate([
+ core_1.ViewChild('popover'),
+ __metadata("design:type", core_1.ElementRef)
+ ], PopoverComponent.prototype, "popoverHost", void 0);
+ __decorate([
+ core_1.HostListener('keydown.escape'),
+ __metadata("design:type", Function),
+ __metadata("design:paramtypes", []),
+ __metadata("design:returntype", void 0)
+ ], PopoverComponent.prototype, "onEscape", null);
+ PopoverComponent = __decorate([
+ core_1.Component({
+ selector: 'popover',
+ template: __webpack_require__(260),
+ styles: [__webpack_require__(261)],
+ animations: [
+ core_1.trigger('popover', [
+ core_1.state('closed', core_1.style({
+ transform: 'translateY(30px)',
+ visibility: 'hidden',
+ opacity: 0
+ })),
+ core_1.state('opened', core_1.style({
+ transform: 'translateY(0)',
+ visibility: 'visible',
+ opacity: 1
+ })),
+ core_1.transition('opened => closed', [
+ core_1.animate('200ms ease-out', core_1.keyframes([
+ core_1.style({ transform: 'translateY(0)', visibility: 'visible', opacity: 1, offset: 0 }),
+ core_1.style({ transform: 'translateY(30px)', visibility: 'hidden', opacity: 0, offset: 1 })
+ ]))
+ ]),
+ core_1.transition('closed => opened', [
+ core_1.style({
+ visibility: 'visible'
+ }),
+ core_1.animate('200ms ease-out', core_1.keyframes([
+ core_1.style({ transform: 'translateY(30px)', opacity: 0, offset: 0 }),
+ core_1.style({ transform: 'translateY(0)', opacity: 1, offset: 1 })
+ ]))
+ ])
+ ])
+ ]
+ }),
+ __metadata("design:paramtypes", [store_1.Store])
+ ], PopoverComponent);
+ exports.PopoverComponent = PopoverComponent;
+
+
+/***/ },
+/* 260 */
+/***/ function(module, exports) {
+
+ module.exports = "\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n Cancel \r\n Remap Key \r\n
\r\n
\r\n
\r\n";
+
+/***/ },
+/* 261 */
+/***/ function(module, exports) {
+
+ module.exports = ".popover {\n display: flex;\n flex-direction: column;\n padding: 0;\n max-width: 568px;\n width: 100%;\n user-select: none; }\n .popover.leftArrow .arrowCustom {\n transform: none;\n left: 22px; }\n .popover.rightArrow .arrowCustom {\n transform: none;\n right: 22px;\n left: auto; }\n .popover > .container-fluid {\n overflow: hidden; }\n\n.nav-tabs > li {\n overflow: hidden; }\n\n.arrowCustom {\n position: absolute;\n top: -16px;\n left: 50%;\n transform: translateX(-50%);\n width: 41px;\n height: 16px; }\n .arrowCustom:before {\n content: '';\n width: 0;\n height: 0;\n border-left: 21px solid transparent;\n border-right: 21px solid transparent;\n border-bottom: 17px solid rgba(0, 0, 0, 0.2);\n display: block;\n position: absolute;\n top: -1px; }\n .arrowCustom:after {\n content: '';\n width: 0;\n height: 0;\n border-left: 20px solid transparent;\n border-right: 20px solid transparent;\n border-bottom: 16px solid #f7f7f7;\n display: block;\n position: absolute;\n top: 0; }\n\n.popover-action {\n padding: 8px 14px;\n margin: 0;\n font-size: 14px;\n background-color: #f7f7f7;\n border-top: 1px solid #ebebeb;\n border-radius: 0 0 5px 5px;\n text-align: right; }\n\n.popover-title.menu-tabs {\n padding: 0.5rem 0.5rem 0;\n display: block; }\n .popover-title.menu-tabs .nav-tabs {\n position: relative;\n top: 1px;\n display: flex; }\n .popover-title.menu-tabs .nav-tabs .menu-tabs--item {\n display: flex;\n align-items: center;\n cursor: pointer; }\n .popover-title.menu-tabs .nav-tabs .menu-tabs--item i {\n margin-right: 0.25em; }\n\n.popover-content {\n padding: 10px 24px; }\n\n.popover-overlay {\n position: fixed;\n width: 100%;\n height: 0;\n top: 0;\n left: 0;\n z-index: 1050;\n background: transparent;\n transition: background 200ms ease-out, height 0ms 200ms linear; }\n .popover-overlay.display {\n height: 100%;\n background: rgba(0, 0, 0, 0.2);\n transition: background 200ms ease-out; }\n\n.select2-item {\n position: relative;\n font-size: 1.5rem; }\n .select2-item.keymap-name--wrapper {\n padding-left: 50px; }\n .select2-item .layout-segment-code {\n height: 2rem;\n position: absolute;\n left: 0;\n top: 50%;\n margin-top: -1rem; }\n"
+
+/***/ },
+/* 262 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ __export(__webpack_require__(263));
+
+
+/***/ },
+/* 263 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var capture_service_1 = __webpack_require__(264);
+ var CaptureKeystrokeButtonComponent = (function () {
+ function CaptureKeystrokeButtonComponent(captureService) {
+ this.captureService = captureService;
+ this.capture = new core_1.EventEmitter();
+ this.record = false;
+ this.captureService.initModifiers();
+ this.captureService.populateMapping();
+ this.scanCodePressed = false;
+ }
+ CaptureKeystrokeButtonComponent.prototype.onKeyUp = function (e) {
+ if (this.scanCodePressed) {
+ e.preventDefault();
+ this.scanCodePressed = false;
+ }
+ else if (this.record && !this.first) {
+ e.preventDefault();
+ this.saveScanCode();
+ }
+ };
+ CaptureKeystrokeButtonComponent.prototype.onKeyDown = function (e) {
+ var code = e.keyCode;
+ var enter = 13;
+ if (this.record) {
+ e.preventDefault();
+ e.stopPropagation();
+ this.first = false;
+ if (this.captureService.hasMap(code)) {
+ this.saveScanCode(this.captureService.getMap(code));
+ this.scanCodePressed = true;
+ }
+ else {
+ this.captureService.setModifier((e.location === 1), code);
+ }
+ }
+ else if (code === enter) {
+ this.record = true;
+ this.first = true;
+ }
+ };
+ CaptureKeystrokeButtonComponent.prototype.onFocusOut = function () {
+ this.record = false;
+ this.reset();
+ };
+ CaptureKeystrokeButtonComponent.prototype.start = function () {
+ this.record = true;
+ };
+ CaptureKeystrokeButtonComponent.prototype.saveScanCode = function (code) {
+ this.record = false;
+ var left = this.captureService.getModifiers(true);
+ var right = this.captureService.getModifiers(false);
+ this.capture.emit({
+ code: code,
+ left: left,
+ right: right
+ });
+ this.reset();
+ };
+ CaptureKeystrokeButtonComponent.prototype.reset = function () {
+ this.first = false;
+ this.captureService.initModifiers();
+ };
+ return CaptureKeystrokeButtonComponent;
+ }());
+ __decorate([
+ core_1.Output(),
+ __metadata("design:type", Object)
+ ], CaptureKeystrokeButtonComponent.prototype, "capture", void 0);
+ __decorate([
+ core_1.HostListener('keyup', ['$event']),
+ __metadata("design:type", Function),
+ __metadata("design:paramtypes", [KeyboardEvent]),
+ __metadata("design:returntype", void 0)
+ ], CaptureKeystrokeButtonComponent.prototype, "onKeyUp", null);
+ __decorate([
+ core_1.HostListener('keydown', ['$event']),
+ __metadata("design:type", Function),
+ __metadata("design:paramtypes", [KeyboardEvent]),
+ __metadata("design:returntype", void 0)
+ ], CaptureKeystrokeButtonComponent.prototype, "onKeyDown", null);
+ __decorate([
+ core_1.HostListener('focusout'),
+ __metadata("design:type", Function),
+ __metadata("design:paramtypes", []),
+ __metadata("design:returntype", void 0)
+ ], CaptureKeystrokeButtonComponent.prototype, "onFocusOut", null);
+ CaptureKeystrokeButtonComponent = __decorate([
+ core_1.Component({
+ selector: 'capture-keystroke-button',
+ template: __webpack_require__(265),
+ styles: [__webpack_require__(266)]
+ }),
+ __metadata("design:paramtypes", [capture_service_1.CaptureService])
+ ], CaptureKeystrokeButtonComponent);
+ exports.CaptureKeystrokeButtonComponent = CaptureKeystrokeButtonComponent;
+
+
+/***/ },
+/* 264 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var CaptureService = (function () {
+ function CaptureService() {
+ this.leftModifiers = new Map();
+ this.rightModifiers = new Map();
+ this.mapping = new Map();
+ }
+ CaptureService.prototype.getMap = function (code) {
+ return this.mapping.get(code);
+ };
+ CaptureService.prototype.hasMap = function (code) {
+ return this.mapping.has(code);
+ };
+ CaptureService.prototype.setModifier = function (left, code) {
+ return left ? this.leftModifiers.set(code, true) : this.rightModifiers.set(code, true);
+ };
+ CaptureService.prototype.getModifiers = function (left) {
+ return left ? this.reMap(this.leftModifiers) : this.reMap(this.rightModifiers);
+ };
+ CaptureService.prototype.initModifiers = function () {
+ this.leftModifiers.set(16, false); // Shift
+ this.leftModifiers.set(17, false); // Ctrl
+ this.leftModifiers.set(18, false); // Alt
+ this.leftModifiers.set(91, false); // Super
+ this.rightModifiers.set(16, false); // Shift
+ this.rightModifiers.set(17, false); // Ctrl
+ this.rightModifiers.set(18, false); // Alt
+ this.rightModifiers.set(91, false); // Super
+ };
+ CaptureService.prototype.populateMapping = function () {
+ this.mapping.set(8, 42); // Backspace
+ this.mapping.set(9, 43); // Tab
+ this.mapping.set(13, 40); // Enter
+ this.mapping.set(19, 72); // Pause/break
+ this.mapping.set(20, 57); // Caps lock
+ this.mapping.set(27, 41); // Escape
+ this.mapping.set(32, 44); // (space)
+ this.mapping.set(33, 75); // Page up
+ this.mapping.set(34, 78); // Page down
+ this.mapping.set(35, 77); // End
+ this.mapping.set(36, 74); // Home
+ this.mapping.set(37, 80); // Left arrow
+ this.mapping.set(38, 82); // Up arrow
+ this.mapping.set(39, 79); // Right arrow
+ this.mapping.set(40, 81); // Down arrow
+ this.mapping.set(45, 73); // Insert
+ this.mapping.set(46, 76); // Delete
+ this.mapping.set(48, 39); // 0
+ this.mapping.set(49, 30); // 1
+ this.mapping.set(50, 31); // 2
+ this.mapping.set(51, 32); // 3
+ this.mapping.set(52, 33); // 4
+ this.mapping.set(53, 34); // 5
+ this.mapping.set(54, 35); // 6
+ this.mapping.set(55, 36); // 7
+ this.mapping.set(56, 37); // 8
+ this.mapping.set(57, 38); // 9
+ this.mapping.set(65, 4); // A
+ this.mapping.set(66, 5); // B
+ this.mapping.set(67, 6); // C
+ this.mapping.set(68, 7); // D
+ this.mapping.set(69, 8); // E
+ this.mapping.set(70, 9); // F
+ this.mapping.set(71, 10); // G
+ this.mapping.set(72, 11); // H
+ this.mapping.set(73, 12); // I
+ this.mapping.set(74, 13); // J
+ this.mapping.set(75, 14); // K
+ this.mapping.set(76, 15); // L
+ this.mapping.set(77, 16); // M
+ this.mapping.set(78, 17); // N
+ this.mapping.set(79, 18); // O
+ this.mapping.set(80, 19); // P
+ this.mapping.set(81, 20); // Q
+ this.mapping.set(82, 21); // R
+ this.mapping.set(83, 22); // S
+ this.mapping.set(84, 23); // T
+ this.mapping.set(85, 24); // U
+ this.mapping.set(86, 25); // V
+ this.mapping.set(87, 26); // W
+ this.mapping.set(88, 27); // X
+ this.mapping.set(89, 28); // Y
+ this.mapping.set(90, 29); // Z
+ this.mapping.set(93, 118); // Menu
+ this.mapping.set(96, 98); // Num pad 0
+ this.mapping.set(97, 89); // Num pad 1
+ this.mapping.set(98, 90); // Num pad 2
+ this.mapping.set(99, 91); // Num pad 3
+ this.mapping.set(100, 92); // Num pad 4
+ this.mapping.set(101, 93); // Num pad 5
+ this.mapping.set(102, 94); // Num pad 6
+ this.mapping.set(103, 95); // Num pad 7
+ this.mapping.set(104, 96); // Num pad 8
+ this.mapping.set(105, 97); // Num pad 9
+ this.mapping.set(106, 85); // Multiply
+ this.mapping.set(107, 87); // Add
+ this.mapping.set(109, 86); // Subtract
+ this.mapping.set(110, 99); // Decimal point
+ this.mapping.set(111, 84); // Divide
+ this.mapping.set(112, 58); // F1
+ this.mapping.set(113, 59); // F2
+ this.mapping.set(114, 60); // F3
+ this.mapping.set(115, 61); // F4
+ this.mapping.set(116, 62); // F5
+ this.mapping.set(117, 63); // F6
+ this.mapping.set(118, 64); // F7
+ this.mapping.set(119, 65); // F8
+ this.mapping.set(120, 66); // F9
+ this.mapping.set(121, 67); // F10
+ this.mapping.set(122, 68); // F11
+ this.mapping.set(123, 69); // F12
+ this.mapping.set(144, 83); // Num lock
+ this.mapping.set(145, 71); // Scroll lock
+ this.mapping.set(186, 51); // Semi-colon
+ this.mapping.set(187, 46); // Equal sign
+ this.mapping.set(188, 54); // Comma
+ this.mapping.set(189, 45); // Dash
+ this.mapping.set(190, 55); // Period
+ this.mapping.set(191, 56); // Forward slash
+ this.mapping.set(192, 53); // Grave accent
+ this.mapping.set(219, 47); // Open bracket
+ this.mapping.set(220, 49); // Back slash
+ this.mapping.set(221, 48); // Close bracket
+ this.mapping.set(222, 52); // Single quote
+ };
+ CaptureService.prototype.reMap = function (value) {
+ return [value.get(16), value.get(17), value.get(91), value.get(18)];
+ };
+ return CaptureService;
+ }());
+ CaptureService = __decorate([
+ core_1.Injectable(),
+ __metadata("design:paramtypes", [])
+ ], CaptureService);
+ exports.CaptureService = CaptureService;
+
+
+/***/ },
+/* 265 */
+/***/ function(module, exports) {
+
+ module.exports = "\r\n \r\n \r\n Capture keystroke\r\n \r\n \r\n Capturing ...\r\n \r\n ";
+
+/***/ },
+/* 266 */
+/***/ function(module, exports) {
+
+ module.exports = "button {\n display: inline-block;\n margin: 0 0 0 0.25rem; }\n\n.fa-circle {\n color: #c00; }\n"
+
+/***/ },
+/* 267 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ __export(__webpack_require__(268));
+
+
+/***/ },
+/* 268 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var IconComponent = (function () {
+ function IconComponent() {
+ }
+ IconComponent.prototype.ngOnInit = function () { };
+ return IconComponent;
+ }());
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", String)
+ ], IconComponent.prototype, "name", void 0);
+ IconComponent = __decorate([
+ core_1.Component({
+ selector: 'icon',
+ template: __webpack_require__(269),
+ styles: [__webpack_require__(270)]
+ }),
+ __metadata("design:paramtypes", [])
+ ], IconComponent);
+ exports.IconComponent = IconComponent;
+
+
+/***/ },
+/* 269 */
+/***/ function(module, exports) {
+
+ module.exports = "\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
";
+
+/***/ },
+/* 270 */
+/***/ function(module, exports) {
+
+ module.exports = ":host {\n display: flex;\n align-items: center; }\n\n.action--edit:hover {\n color: #337ab7;\n cursor: pointer; }\n\n.action--trash:hover {\n color: #d9534f;\n cursor: pointer; }\n"
+
+/***/ },
+/* 271 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ __export(__webpack_require__(272));
+ __export(__webpack_require__(275));
+
+
+/***/ },
+/* 272 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var SettingsComponent = (function () {
+ function SettingsComponent() {
+ }
+ return SettingsComponent;
+ }());
+ SettingsComponent = __decorate([
+ core_1.Component({
+ selector: 'settings',
+ template: __webpack_require__(273),
+ styles: [__webpack_require__(274)],
+ host: {
+ 'class': 'container-fluid'
+ }
+ }),
+ __metadata("design:paramtypes", [])
+ ], SettingsComponent);
+ exports.SettingsComponent = SettingsComponent;
+
+
+/***/ },
+/* 273 */
+/***/ function(module, exports) {
+
+ module.exports = "\r\n
\r\n \r\n Settings \r\n \r\n\r\nTo be done...";
+
+/***/ },
+/* 274 */
+/***/ function(module, exports) {
+
+ module.exports = ":host {\n width: 100%;\n height: 100%;\n display: block; }\n"
+
+/***/ },
+/* 275 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var settings_component_1 = __webpack_require__(272);
+ exports.settingsRoutes = [
+ {
+ path: 'settings',
+ component: settings_component_1.SettingsComponent
+ }
+ ];
+
+
+/***/ },
+/* 276 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ __export(__webpack_require__(277));
+
+
+/***/ },
+/* 277 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var store_1 = __webpack_require__(44);
+ __webpack_require__(278);
+ __webpack_require__(137);
+ __webpack_require__(135);
+ var actions_1 = __webpack_require__(127);
+ var user_configuration_1 = __webpack_require__(141);
+ var SideMenuComponent = (function () {
+ function SideMenuComponent(store, renderer) {
+ this.store = store;
+ this.renderer = renderer;
+ this.animation = {
+ keymap: 'active',
+ macro: 'active',
+ addon: 'active'
+ };
+ this.keymaps$ = store.let(user_configuration_1.getKeymaps())
+ .map(function (keymaps) { return keymaps.slice(); }) // Creating a new array reference, because the sort is working in place
+ .do(function (keymaps) {
+ keymaps.sort(function (first, second) { return first.name.localeCompare(second.name); });
+ });
+ this.macros$ = store.let(user_configuration_1.getMacros())
+ .map(function (macros) { return macros.slice(); }) // Creating a new array reference, because the sort is working in place
+ .do(function (macros) {
+ macros.sort(function (first, second) { return first.name.localeCompare(second.name); });
+ });
+ }
+ SideMenuComponent.prototype.toggleHide = function (event, type) {
+ var header = event.target.classList;
+ var show = false;
+ if (header.contains('fa-chevron-down')) {
+ show = true;
+ this.animation[type] = 'active';
+ }
+ else {
+ this.animation[type] = 'inactive';
+ }
+ this.renderer.setElementClass(event.target, 'fa-chevron-up', show);
+ this.renderer.setElementClass(event.target, 'fa-chevron-down', !show);
+ };
+ SideMenuComponent.prototype.addMacro = function () {
+ this.store.dispatch(actions_1.MacroActions.addMacro());
+ };
+ return SideMenuComponent;
+ }());
+ SideMenuComponent = __decorate([
+ core_1.Component({
+ animations: [
+ core_1.trigger('toggler', [
+ core_1.state('inactive', core_1.style({
+ height: '0px'
+ })),
+ core_1.state('active', core_1.style({
+ height: '*'
+ })),
+ core_1.transition('inactive <=> active', core_1.animate('500ms ease-out'))
+ ])
+ ],
+ selector: 'side-menu',
+ template: __webpack_require__(280),
+ styles: [__webpack_require__(281)]
+ }),
+ __metadata("design:paramtypes", [store_1.Store, core_1.Renderer])
+ ], SideMenuComponent);
+ exports.SideMenuComponent = SideMenuComponent;
+
+
+/***/ },
+/* 278 */,
+/* 279 */,
+/* 280 */
+/***/ function(module, exports) {
+
+ module.exports = "\r\n";
+
+/***/ },
+/* 281 */
+/***/ function(module, exports) {
+
+ module.exports = ":host {\n background-color: #f5f5f5;\n border-right: 1px solid #ccc;\n position: fixed;\n overflow-y: auto;\n width: 250px;\n height: 100%; }\n\na {\n color: #333; }\n\nul {\n padding: 0;\n margin: 0; }\n ul li {\n list-style: none;\n padding: 0; }\n ul ul {\n overflow: hidden; }\n\n.sidebar__level-1 {\n padding: 0.5rem 1rem;\n font-size: 2rem;\n line-height: 3rem;\n cursor: default; }\n .sidebar__level-1:hover .fa-chevron-up,\n .sidebar__level-1:hover .fa-chevron-down {\n display: inline-block; }\n .sidebar__level-1--item {\n margin-top: 0; }\n .sidebar__level-1--item:nth-child(1) {\n margin: 0; }\n .sidebar__level-1 .sidebar__name {\n width: 100%;\n display: block; }\n .sidebar__level-1 .fa-chevron-up,\n .sidebar__level-1 .fa-chevron-down {\n margin-right: 1rem;\n font-size: 1.5rem;\n position: relative;\n top: 0.5rem;\n display: none;\n cursor: pointer; }\n\n.sidebar__level-2--item {\n padding: 0 20px 0 0;\n position: relative; }\n .sidebar__level-2--item.active {\n background-color: #555;\n color: #fff; }\n .sidebar__level-2--item.active .fa-star {\n color: #fff; }\n .sidebar__level-2--item.active:hover {\n background-color: #555; }\n .sidebar__level-2--item:hover {\n cursor: pointer; }\n .sidebar__level-2--item .fa.pull-right {\n position: relative;\n top: 2px; }\n .sidebar__level-2--item .fa-star {\n color: #666; }\n .sidebar__level-2--item a {\n display: block;\n width: 100%;\n padding: 0 15px 0 30px; }\n .sidebar__level-2--item a:hover, .sidebar__level-2--item a:focus {\n text-decoration: none; }\n\n.sidebar__level-1:hover, .sidebar__level-2:hover {\n background-color: rgba(0, 0, 0, 0.05); }\n\n.sidebar__level-1.active, .sidebar__level-2.active {\n background-color: rgba(0, 0, 0, 0.18); }\n\n.sidebar__fav {\n position: absolute;\n right: 19px;\n top: 3px; }\n\n.menu--bottom {\n position: absolute;\n bottom: 0;\n left: 0;\n width: 100%; }\n .menu--bottom .sidebar__level-1 {\n display: block;\n padding: 1rem;\n cursor: pointer; }\n .menu--bottom .sidebar__level-1:hover {\n text-decoration: none; }\n"
+
+/***/ },
+/* 282 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ __export(__webpack_require__(283));
+
+
+/***/ },
+/* 283 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var module_1 = __webpack_require__(284);
+ var SvgKeyboardComponent = (function () {
+ function SvgKeyboardComponent() {
+ this.keyClick = new core_1.EventEmitter();
+ this.keyHover = new core_1.EventEmitter();
+ this.capture = new core_1.EventEmitter();
+ this.modules = [];
+ this.svgAttributes = this.getKeyboardSvgAttributes();
+ }
+ SvgKeyboardComponent.prototype.ngOnInit = function () {
+ this.modules = this.getSvgModules();
+ };
+ SvgKeyboardComponent.prototype.onKeyClick = function (moduleId, keyId, keyTarget) {
+ this.keyClick.emit({
+ moduleId: moduleId,
+ keyId: keyId,
+ keyTarget: keyTarget
+ });
+ };
+ SvgKeyboardComponent.prototype.onCapture = function (moduleId, keyId, captured) {
+ this.capture.emit({
+ moduleId: moduleId,
+ keyId: keyId,
+ captured: captured
+ });
+ };
+ SvgKeyboardComponent.prototype.onKeyHover = function (keyId, event, over, moduleId) {
+ this.keyHover.emit({
+ moduleId: moduleId,
+ event: event,
+ over: over,
+ keyId: keyId
+ });
+ };
+ SvgKeyboardComponent.prototype.getKeyboardSvgAttributes = function () {
+ var svg = this.getBaseLayer();
+ return {
+ viewBox: svg.$.viewBox,
+ transform: svg.g[0].$.transform,
+ fill: svg.g[0].$.fill
+ };
+ };
+ SvgKeyboardComponent.prototype.getSvgModules = function () {
+ var modules = this.getBaseLayer().g[0].g.map(function (obj) { return new module_1.SvgModule(obj); });
+ return [modules[1], modules[0]]; // TODO: remove if the svg will be correct
+ };
+ SvgKeyboardComponent.prototype.getBaseLayer = function () {
+ return __webpack_require__(289).svg;
+ };
+ return SvgKeyboardComponent;
+ }());
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Array)
+ ], SvgKeyboardComponent.prototype, "moduleConfig", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Boolean)
+ ], SvgKeyboardComponent.prototype, "keybindAnimationEnabled", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Boolean)
+ ], SvgKeyboardComponent.prototype, "capturingEnabled", void 0);
+ __decorate([
+ core_1.Output(),
+ __metadata("design:type", Object)
+ ], SvgKeyboardComponent.prototype, "keyClick", void 0);
+ __decorate([
+ core_1.Output(),
+ __metadata("design:type", Object)
+ ], SvgKeyboardComponent.prototype, "keyHover", void 0);
+ __decorate([
+ core_1.Output(),
+ __metadata("design:type", Object)
+ ], SvgKeyboardComponent.prototype, "capture", void 0);
+ SvgKeyboardComponent = __decorate([
+ core_1.Component({
+ selector: 'svg-keyboard',
+ template: __webpack_require__(290),
+ styles: [__webpack_require__(291)],
+ changeDetection: core_1.ChangeDetectionStrategy.OnPush
+ }),
+ __metadata("design:paramtypes", [])
+ ], SvgKeyboardComponent);
+ exports.SvgKeyboardComponent = SvgKeyboardComponent;
+
+
+/***/ },
+/* 284 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ __export(__webpack_require__(285));
+ __export(__webpack_require__(288));
+
+
+/***/ },
+/* 285 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var SvgModuleComponent = (function () {
+ function SvgModuleComponent() {
+ this.keyClick = new core_1.EventEmitter();
+ this.keyHover = new core_1.EventEmitter();
+ this.capture = new core_1.EventEmitter();
+ this.keyboardKeys = [];
+ }
+ SvgModuleComponent.prototype.onKeyClick = function (index, keyTarget) {
+ this.keyClick.emit({
+ index: index,
+ keyTarget: keyTarget
+ });
+ };
+ SvgModuleComponent.prototype.onKeyHover = function (index, event, over) {
+ this.keyHover.emit({
+ index: index,
+ event: event,
+ over: over
+ });
+ };
+ SvgModuleComponent.prototype.onCapture = function (index, captured) {
+ this.capture.emit({
+ index: index,
+ captured: captured
+ });
+ };
+ return SvgModuleComponent;
+ }());
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Array)
+ ], SvgModuleComponent.prototype, "coverages", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Array)
+ ], SvgModuleComponent.prototype, "keyboardKeys", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Array)
+ ], SvgModuleComponent.prototype, "keyActions", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Boolean)
+ ], SvgModuleComponent.prototype, "keybindAnimationEnabled", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Boolean)
+ ], SvgModuleComponent.prototype, "capturingEnabled", void 0);
+ __decorate([
+ core_1.Output(),
+ __metadata("design:type", Object)
+ ], SvgModuleComponent.prototype, "keyClick", void 0);
+ __decorate([
+ core_1.Output(),
+ __metadata("design:type", Object)
+ ], SvgModuleComponent.prototype, "keyHover", void 0);
+ __decorate([
+ core_1.Output(),
+ __metadata("design:type", Object)
+ ], SvgModuleComponent.prototype, "capture", void 0);
+ SvgModuleComponent = __decorate([
+ core_1.Component({
+ selector: 'g[svg-module]',
+ template: __webpack_require__(286),
+ styles: [__webpack_require__(287)],
+ changeDetection: core_1.ChangeDetectionStrategy.OnPush
+ }),
+ __metadata("design:paramtypes", [])
+ ], SvgModuleComponent);
+ exports.SvgModuleComponent = SvgModuleComponent;
+
+
+/***/ },
+/* 286 */
+/***/ function(module, exports) {
+
+ module.exports = " \r\n ";
+
+/***/ },
+/* 287 */
+/***/ function(module, exports) {
+
+ module.exports = ":host {\n position: relative; }\n"
+
+/***/ },
+/* 288 */
+/***/ function(module, exports) {
+
+ "use strict";
+ var SvgModule = (function () {
+ function SvgModule(obj) {
+ this.keyboardKeys = obj.rect.map(function (rect) { return rect.$; }).map(function (rect) {
+ rect.height = +rect.height;
+ rect.width = +rect.width;
+ return rect;
+ });
+ this.coverages = obj.path;
+ this.attributes = obj.$;
+ }
+ return SvgModule;
+ }());
+ exports.SvgModule = SvgModule;
+
+
+/***/ },
+/* 289 */
+/***/ function(module, exports) {
+
+ module.exports = {"svg":{"$":{"xmlns:dc":"http://purl.org/dc/elements/1.1/","xmlns:cc":"http://creativecommons.org/ns#","xmlns:rdf":"http://www.w3.org/1999/02/22-rdf-syntax-ns#","xmlns:svg":"http://www.w3.org/2000/svg","xmlns":"http://www.w3.org/2000/svg","xmlns:sodipodi":"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd","xmlns:inkscape":"http://www.inkscape.org/namespaces/inkscape","version":"1.1","width":"1024.3346","height":"471.36612","viewBox":"0 0 1024.3346 471.36612","style":"overflow:visible;","id":"SvgjsSvg1006","inkscape:version":"0.91 r","sodipodi:docname":"base-layer.svg"},"metadata":[{"$":{"id":"metadata230"},"rdf:RDF":[{"cc:Work":[{"$":{"rdf:about":""},"dc:format":["image/svg+xml"],"dc:type":[{"$":{"rdf:resource":"http://purl.org/dc/dcmitype/StillImage"}}]}]}]}],"defs":[{"$":{"id":"defs228"}}],"sodipodi:namedview":[{"$":{"pagecolor":"#ffffff","bordercolor":"#666666","borderopacity":"1","objecttolerance":"10","gridtolerance":"10","guidetolerance":"10","inkscape:pageopacity":"0","inkscape:pageshadow":"2","inkscape:window-width":"1920","inkscape:window-height":"1028","id":"namedview226","showgrid":"false","inkscape:zoom":"1.046533","inkscape:cx":"461.77814","inkscape:cy":"312.8806","inkscape:window-x":"0","inkscape:window-y":"25","inkscape:window-maximized":"1","inkscape:current-layer":"left-parts"}}],"text":[{"$":{"x":"495.03632","y":"20","style":"font-size:34px;fill:#000000;font-family:Sans;text-align:center;text-anchor:middle;display:none;","font-family":"Helvetica, Arial, sans-serif","id":"layer-text"},"tspan":[{"_":"\r\n Base layer\r\n ","$":{"x":"495.03632","dy":"20.8","id":"SvgjsTspan1235"}}]}],"g":[{"$":{"transform":"translate(0 -580.99607)","style":"stroke:none;","id":"root","fill":"#333333"},"g":[{"$":{"transform":"translate(221.57008 1101.7666)","id":"left-parts"},"path":[{"$":{"d":"m 272.81516,-456.8166 -110.96971,0 c -0.32924,0 -0.65827,-0.0468 -0.97472,-0.1386 -0.31645,-0.0918 -0.62027,-0.22866 -0.89995,-0.40551 -0.27968,-0.17684 -0.53514,-0.39367 -0.7565,-0.64244 -0.22135,-0.24877 -0.40854,-0.52944 -0.55411,-0.83133 -0.14558,-0.3019 -0.24947,-0.62497 -0.30744,-0.95668 -3.11169,-17.80554 -6.22337,-35.61107 -9.33505,-53.41661 -0.16174,-0.9255 -0.46824,-1.8252 -0.90498,-2.65546 -0.43675,-0.83027 -1.00365,-1.59085 -1.67347,-2.24448 -0.66982,-0.65363 -1.44238,-1.20007 -2.2801,-1.61231 -0.83772,-0.41224 -1.74031,-0.69012 -2.66354,-0.81983 -0.92322,-0.12971 -1.86673,-0.11121 -2.78423,0.0544 l -352.97851,63.7382 c -0.81059,0.14636 -1.60096,0.40708 -2.34074,0.77257 -0.73979,0.3655 -1.42881,0.83571 -2.04035,1.39272 -0.61154,0.55702 -1.14547,1.20071 -1.58116,1.90622 -0.43571,0.70551 -0.77307,1.47267 -0.99931,2.2718 -0.22626,0.79913 -0.34137,1.63006 -0.34137,2.4609 l 0,389.594539 c 0,0.936363 0.14626,1.872858 0.43247,2.764016 0.2862,0.891158 0.7123,1.736655 1.25787,2.494964 0.54557,0.75831 1.21044,1.429141 1.96201,1.979608 0.75157,0.550465 1.58955,0.980376 2.47279,1.269152 0.88324,0.288776 1.8114,0.436358 2.73944,0.436358 l 342.7307,-1.4e-5 c 1.77165,0 3.54314,-1.7716 3.54314,-3.5432 0,-12.931979 0,-22.981768 0,-34.5827 0,-1.7717 -1.77149,-3.545 -3.54314,-3.545 l -322.73675,0.0013 c -2.79101,0 -5.3291,-2.56086 -5.3291,-5.376898 l 0,-329.455425 c 0,-2.81604 2.53809,-5.3769 5.3291,-5.3769 l 463.75521,0 c 0.93041,0 1.77697,-0.85444 1.77697,-1.79353 0,-7.80504 0,-14.68214 0,-21.94355 0,-0.94218 -0.84656,-1.79632 -1.77697,-1.79632","id":"left-case"}}],"rect":[{"$":{"rx":"3.5433071","ry":"3.5433071","x":"-194.89622","y":"-427.82285","height":"63.779526","width":"63.779526","id":"key-0"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"-127.57339","y":"-427.82285","height":"63.779526","width":"63.779526","id":"key-1"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"-60.250557","y":"-427.82285","height":"63.779526","width":"63.779526","id":"key-2"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"7.072278","y":"-427.82285","height":"63.779526","width":"63.779526","id":"key-3"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"74.395111","y":"-427.82285","height":"63.779526","width":"63.779526","id":"key-4"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"141.71794","y":"-427.82285","height":"63.779526","width":"63.779526","id":"key-5"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"209.04079","y":"-427.82285","height":"63.779526","width":"63.779526","id":"key-6"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"-194.89622","y":"-360.50003","height":"63.779526","width":"95.669289","id":"key-7"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"-95.683624","y":"-360.50003","height":"63.779526","width":"63.779526","id":"key-8"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"-28.360792","y":"-360.50003","height":"63.779526","width":"63.779526","id":"key-9"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"38.962044","y":"-360.50003","height":"63.779526","width":"63.779526","id":"key-10"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"106.28487","y":"-360.50003","height":"63.779526","width":"63.779526","id":"key-11"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"173.60771","y":"-360.50003","height":"63.779526","width":"63.779526","id":"key-12"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"-194.89622","y":"-293.17719","height":"63.779526","width":"111.61417","id":"key-13"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"-79.419846","y":"-293.17719","height":"63.779526","width":"63.779526","id":"key-14"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"-11.778116","y":"-293.17719","height":"63.779526","width":"63.779526","id":"key-15"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"55.863617","y":"-293.17719","height":"63.779526","width":"63.779526","id":"key-16"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"123.50535","y":"-293.17719","height":"63.779526","width":"63.779526","id":"key-17"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"191.14708","y":"-293.17719","height":"63.779526","width":"63.779526","id":"key-18"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"-194.89622","y":"-225.85435","height":"63.779526","width":"143.50394","id":"key-19"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"-47.14032","y":"-225.85435","height":"63.779526","width":"63.779526","id":"key-20"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"20.891174","y":"-225.85435","height":"63.779526","width":"63.779526","id":"key-21"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"88.922668","y":"-225.85435","height":"63.779526","width":"63.779526","id":"key-22"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"156.95416","y":"-225.85435","height":"63.779526","width":"63.779526","id":"key-23"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"224.98566","y":"-225.85435","height":"63.779526","width":"63.779526","id":"key-24"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"-194.89622","y":"-158.53151","height":"63.779526","width":"79.724411","id":"key-25"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"-111.98284","y":"-158.53151","height":"63.779526","width":"79.724411","id":"key-26"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"-29.069458","y":"-158.53151","height":"63.779526","width":"79.724411","id":"key-27"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"53.843929","y":"-158.53151","height":"63.779526","width":"79.724411","id":"key-28"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"137.11165","y":"-158.53151","height":"63.779526","width":"131.10236","id":"key-29"}},{"$":{"rx":"3.4856062","ry":"3.5433071","x":"137.11165","y":"-91.071709","height":"41.667309","width":"131.10236","id":"key-30"}}],"text":[{"$":{"y":"-435.0346495","x":"-163.006457","font-size":"19","id":"SvgjsText1084","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"~","$":{"x":"-163.006457","dy":"30.400000000000002","id":"SvgjsTspan1085"}},{"_":"`","$":{"x":"-163.006457","dy":"30.400000000000002","id":"SvgjsTspan1086"}}]},{"$":{"y":"-435.0346495","x":"-95.683627","font-size":"19","id":"SvgjsText1087","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"!","$":{"x":"-95.683627","dy":"30.400000000000002","id":"SvgjsTspan1088"}},{"_":"1","$":{"x":"-95.683627","dy":"30.400000000000002","id":"SvgjsTspan1089"}}]},{"$":{"y":"-435.0346495","x":"-28.360794000000002","font-size":"19","id":"SvgjsText1090","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"@","$":{"x":"-28.360794000000002","dy":"30.400000000000002","id":"SvgjsTspan1091"}},{"_":"2","$":{"x":"-28.360794000000002","dy":"30.400000000000002","id":"SvgjsTspan1092"}}]},{"$":{"y":"-435.0346495","x":"38.962041","font-size":"19","id":"SvgjsText1093","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"#","$":{"x":"38.962041","dy":"30.400000000000002","id":"SvgjsTspan1094"}},{"_":"3","$":{"x":"38.962041","dy":"30.400000000000002","id":"SvgjsTspan1095"}}]},{"$":{"y":"-435.0346495","x":"106.284874","font-size":"19","id":"SvgjsText1096","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"$","$":{"x":"106.284874","dy":"30.400000000000002","id":"SvgjsTspan1097"}},{"_":"4","$":{"x":"106.284874","dy":"30.400000000000002","id":"SvgjsTspan1098"}}]},{"$":{"y":"-435.0346495","x":"173.607703","font-size":"19","id":"SvgjsText1099","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"%","$":{"x":"173.607703","dy":"30.400000000000002","id":"SvgjsTspan1100"}},{"_":"5","$":{"x":"173.607703","dy":"30.400000000000002","id":"SvgjsTspan1101"}}]},{"$":{"y":"-435.0346495","x":"240.93055299999997","font-size":"19","id":"SvgjsText1102","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"^","$":{"x":"240.93055299999997","dy":"30.400000000000002","id":"SvgjsTspan1103"}},{"_":"6","$":{"x":"240.93055299999997","dy":"30.400000000000002","id":"SvgjsTspan1104"}}]},{"$":{"y":"-352.50870449999996","x":"-147.0615755","font-size":"19","id":"SvgjsText1125","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"\r\n Tab\r\n ","$":{"x":"-147.0615755","dy":"30.400000000000002","id":"SvgjsTspan1126"}}]},{"$":{"y":"-352.50870449999996","x":"-63.79386099999999","font-size":"19","id":"SvgjsText1127","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"\r\n Q\r\n ","$":{"x":"-63.79386099999999","dy":"30.400000000000002","id":"SvgjsTspan1128"}}]},{"$":{"y":"-352.50870449999996","x":"3.5289709999999985","font-size":"19","id":"SvgjsText1129","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"\r\n W\r\n ","$":{"x":"3.5289709999999985","dy":"30.400000000000002","id":"SvgjsTspan1130"}}]},{"$":{"y":"-352.50870449999996","x":"70.851807","font-size":"19","id":"SvgjsText1131","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"\r\n E\r\n ","$":{"x":"70.851807","dy":"30.400000000000002","id":"SvgjsTspan1132"}}]},{"$":{"y":"-352.50870449999996","x":"138.174633","font-size":"19","id":"SvgjsText1133","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"\r\n R\r\n ","$":{"x":"138.174633","dy":"30.400000000000002","id":"SvgjsTspan1134"}}]},{"$":{"y":"-352.50870449999996","x":"205.49747299999999","font-size":"19","id":"SvgjsText1135","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"\r\n T\r\n ","$":{"x":"205.49747299999999","dy":"30.400000000000002","id":"SvgjsTspan1136"}}]},{"$":{"y":"-285.1858645","x":"-139.089135","font-size":"19","id":"SvgjsText1156","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"\r\n Mouse\r\n ","$":{"x":"-139.089135","dy":"30.400000000000002","id":"SvgjsTspan1157"}}]},{"$":{"y":"-285.1858645","x":"-47.530083000000005","font-size":"19","id":"SvgjsText1158","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"\r\n A\r\n ","$":{"x":"-47.530083000000005","dy":"30.400000000000002","id":"SvgjsTspan1159"}}]},{"$":{"y":"-285.1858645","x":"20.111646999999998","font-size":"19","id":"SvgjsText1160","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"\r\n S\r\n ","$":{"x":"20.111646999999998","dy":"30.400000000000002","id":"SvgjsTspan1161"}}]},{"$":{"y":"-285.1858645","x":"87.75337999999999","font-size":"19","id":"SvgjsText1162","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"\r\n D\r\n ","$":{"x":"87.75337999999999","dy":"30.400000000000002","id":"SvgjsTspan1163"}}]},{"$":{"y":"-285.1858645","x":"155.395113","font-size":"19","id":"SvgjsText1164","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"\r\n F\r\n ","$":{"x":"155.395113","dy":"30.400000000000002","id":"SvgjsTspan1165"}}]},{"$":{"y":"-285.1858645","x":"223.03684299999998","font-size":"19","id":"SvgjsText1166","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"\r\n G\r\n ","$":{"x":"223.03684299999998","dy":"30.400000000000002","id":"SvgjsTspan1167"}}]},{"$":{"y":"-217.86302450000002","x":"-123.14425","font-size":"19","id":"SvgjsText1184","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"\r\n Shift\r\n ","$":{"x":"-123.14425","dy":"30.400000000000002","id":"SvgjsTspan1185"}}]},{"$":{"y":"-217.86302450000002","x":"-15.250557000000004","font-size":"19","id":"SvgjsText1186","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"\r\n Z\r\n ","$":{"x":"-15.250557000000004","dy":"30.400000000000002","id":"SvgjsTspan1187"}}]},{"$":{"y":"-217.86302450000002","x":"52.780936999999994","font-size":"19","id":"SvgjsText1188","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"\r\n X\r\n ","$":{"x":"52.780936999999994","dy":"30.400000000000002","id":"SvgjsTspan1189"}}]},{"$":{"y":"-217.86302450000002","x":"120.812431","font-size":"19","id":"SvgjsText1190","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"\r\n C\r\n ","$":{"x":"120.812431","dy":"30.400000000000002","id":"SvgjsTspan1191"}}]},{"$":{"y":"-217.86302450000002","x":"188.843923","font-size":"19","id":"SvgjsText1192","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"\r\n V\r\n ","$":{"x":"188.843923","dy":"30.400000000000002","id":"SvgjsTspan1193"}}]},{"$":{"y":"-217.86302450000002","x":"256.875423","font-size":"19","id":"SvgjsText1194","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"\r\n B\r\n ","$":{"x":"256.875423","dy":"30.400000000000002","id":"SvgjsTspan1195"}}]},{"$":{"y":"-150.5401845","x":"-155.0340145","font-size":"19","id":"SvgjsText1211","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"\r\n Ctrl\r\n ","$":{"x":"-155.0340145","dy":"30.400000000000002","id":"SvgjsTspan1212"}}]},{"$":{"y":"-150.5401845","x":"-72.1206345","font-size":"19","id":"SvgjsText1213","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"\r\n Super\r\n ","$":{"x":"-72.1206345","dy":"30.400000000000002","id":"SvgjsTspan1214"}}]},{"$":{"y":"-150.5401845","x":"10.7927475","font-size":"19","id":"SvgjsText1215","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"\r\n Alt\r\n ","$":{"x":"10.7927475","dy":"30.400000000000002","id":"SvgjsTspan1216"}}]},{"$":{"y":"-150.5401845","x":"93.7061345","font-size":"19","id":"SvgjsText1217","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"\r\n Fn\r\n ","$":{"x":"93.7061345","dy":"30.400000000000002","id":"SvgjsTspan1218"}}]},{"$":{"y":"-150.5401845","x":"202.66282999999999","font-size":"19","id":"SvgjsText1219","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"\r\n Mod\r\n ","$":{"x":"202.66282999999999","dy":"30.400000000000002","id":"SvgjsTspan1220"}}]},{"$":{"y":"-94.136492","x":"202.66282999999999","font-size":"19","id":"SvgjsText1231","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"\r\n Space\r\n ","$":{"x":"202.66282999999999","dy":"30.400000000000002","id":"SvgjsTspan1232"}}]}]},{"$":{"transform":"translate(44.404903 1101.7674)","id":"right-parts"},"path":[{"$":{"d":"m 951.05862,-431.2832 c 2.791,0 5.32908,2.56086 5.32908,5.3769 l 0,329.455425 c 0,2.816038 -2.53808,5.376898 -5.32908,5.376898 l -370.67909,-0.0013 c -1.77166,0 -3.54347,1.7733 -3.54347,3.545 0,12.895215 0,23.315027 0,34.58266 0,1.7716 1.77181,3.5432 3.54347,3.5432 l 390.67297,1.44e-4 c 0.92804,0 1.85621,-0.147582 2.73944,-0.436358 0.88324,-0.288776 1.72122,-0.718687 2.47277,-1.269152 0.75157,-0.550467 1.41644,-1.221298 1.96201,-1.979608 0.54557,-0.758309 0.97166,-1.603806 1.25787,-2.494964 0.2862,-0.891158 0.43247,-1.827653 0.43247,-2.764016 l 0,-389.434639 c 0,-0.83901 -0.11739,-1.67813 -0.34806,-2.4845 -0.23066,-0.80638 -0.57456,-1.57983 -1.01841,-2.28986 -0.44385,-0.71002 -0.98756,-1.35643 -1.60971,-1.91378 -0.62215,-0.55735 -1.3226,-1.0255 -2.07365,-1.38629 -0.75105,-0.36078 -1.55253,-0.61412 -2.37301,-0.75058 -130.52433,-21.7076 -270.93602,-45.05959 -384.94144,-64.01992 -0.91165,-0.15162 -1.8469,-0.15828 -2.76061,-0.0195 -0.91372,0.13871 -1.8056,0.42276 -2.63265,0.83829 -0.82706,0.41551 -1.58903,0.96236 -2.24949,1.61394 -0.66047,0.65158 -1.21924,1.40768 -1.64996,2.2319 -0.43072,0.82422 -0.73327,1.71631 -0.8936,2.63375 -3.12168,17.84567 -6.23258,35.69325 -9.35634,53.53854 -0.058,0.33171 -0.16187,0.65478 -0.30744,0.95668 -0.14556,0.30189 -0.33275,0.58256 -0.5541,0.83133 -0.22136,0.24877 -0.47683,0.4656 -0.7565,0.64244 -0.27967,0.17685 -0.5835,0.31372 -0.89995,0.40551 -0.31645,0.0919 -0.64548,0.1386 -0.97471,0.1386 l -109.19782,-2e-5 c -0.93043,-10e-6 -1.77697,0.85413 -1.77697,1.79631 10e-6,7.4108 -1e-5,15.64271 0,21.94355 0,0.93909 0.84654,1.79353 1.77697,1.79353 l 495.73901,0","id":"right-case"}}],"rect":[{"$":{"rx":"3.5433071","ry":"3.5433071","x":"453.52896","y":"-427.82285","height":"63.779526","width":"63.779526","id":"key-0"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"520.85181","y":"-427.82285","height":"63.779526","width":"63.779526","id":"key-1"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"588.17462","y":"-427.82285","height":"63.779526","width":"63.779526","id":"key-2"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"655.4975","y":"-427.82285","height":"63.779526","width":"63.779526","id":"key-3"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"722.82031","y":"-427.82285","height":"63.779526","width":"63.779526","id":"key-4"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"790.14313","y":"-427.82285","height":"63.779526","width":"63.779526","id":"key-5"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"857.466","y":"-427.82285","height":"63.779526","width":"95.669289","id":"key-6"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"418.09589","y":"-360.50003","height":"63.779526","width":"63.779526","id":"key-7"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"485.41873","y":"-360.50003","height":"63.779526","width":"63.779526","id":"key-8"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"552.74158","y":"-360.50003","height":"63.779526","width":"63.779526","id":"key-9"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"620.06439","y":"-360.50003","height":"63.779526","width":"63.779526","id":"key-10"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"687.38727","y":"-360.50003","height":"63.779526","width":"63.779526","id":"key-11"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"754.71008","y":"-360.50003","height":"63.779526","width":"63.779526","id":"key-12"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"822.0329","y":"-360.50003","height":"63.779526","width":"63.779526","id":"key-13"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"889.35571","y":"-360.50003","height":"63.779526","width":"63.779526","id":"key-14"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"435.67072","y":"-293.17719","height":"63.779526","width":"63.779526","id":"key-15"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"503.31244","y":"-293.17719","height":"63.779526","width":"63.779526","id":"key-16"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"570.95416","y":"-293.17719","height":"63.779526","width":"63.779526","id":"key-17"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"638.59589","y":"-293.17719","height":"63.779526","width":"63.779526","id":"key-18"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"706.23761","y":"-293.17719","height":"63.779526","width":"63.779526","id":"key-19"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"773.87939","y":"-293.17719","height":"63.779526","width":"63.779526","id":"key-20"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"841.52112","y":"-293.17719","height":"63.779526","width":"111.61417","id":"key-21"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"469.47385","y":"-225.85435","height":"63.779526","width":"63.779526","id":"key-22"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"537.50537","y":"-225.85435","height":"63.779526","width":"63.779526","id":"key-23"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"605.53687","y":"-225.85435","height":"63.779526","width":"63.779526","id":"key-24"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"673.56836","y":"-225.85435","height":"63.779526","width":"63.779526","id":"key-25"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"741.59985","y":"-225.85435","height":"63.779526","width":"63.779526","id":"key-26"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"809.63135","y":"-225.85435","height":"63.779526","width":"143.50394","id":"key-27"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"448.92267","y":"-158.53151","height":"63.779526","width":"124.37008","id":"key-28"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"576.83606","y":"-158.53151","height":"63.779526","width":"79.724411","id":"key-29"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"659.74945","y":"-158.53151","height":"63.779526","width":"79.724411","id":"key-30"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"742.66284","y":"-158.53151","height":"63.779526","width":"79.724411","id":"key-31"}},{"$":{"rx":"3.5433071","ry":"3.5433071","x":"825.57623","y":"-158.53151","height":"63.779526","width":"127.55905","id":"key-32"}},{"$":{"rx":"3.493542","ry":"3.5433071","x":"448.92267","y":"-91.071663","height":"41.667309","width":"124.37009","id":"key-33"}}],"text":[{"$":{"y":"-435.0346495","x":"485.418723","font-size":"19","id":"SvgjsText1105","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"&","$":{"x":"485.418723","dy":"30.400000000000002","id":"SvgjsTspan1106"}},{"_":"7","$":{"x":"485.418723","dy":"30.400000000000002","id":"SvgjsTspan1107"}}]},{"$":{"y":"-435.0346495","x":"552.741573","font-size":"19","id":"SvgjsText1108","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"*","$":{"x":"552.741573","dy":"30.400000000000002","id":"SvgjsTspan1109"}},{"_":"8","$":{"x":"552.741573","dy":"30.400000000000002","id":"SvgjsTspan1110"}}]},{"$":{"y":"-435.0346495","x":"620.064383","font-size":"19","id":"SvgjsText1111","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"(","$":{"x":"620.064383","dy":"30.400000000000002","id":"SvgjsTspan1112"}},{"_":"9","$":{"x":"620.064383","dy":"30.400000000000002","id":"SvgjsTspan1113"}}]},{"$":{"y":"-435.0346495","x":"687.387263","font-size":"19","id":"SvgjsText1114","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":")","$":{"x":"687.387263","dy":"30.400000000000002","id":"SvgjsTspan1115"}},{"_":"0","$":{"x":"687.387263","dy":"30.400000000000002","id":"SvgjsTspan1116"}}]},{"$":{"y":"-435.0346495","x":"754.710073","font-size":"19","id":"SvgjsText1117","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"_","$":{"x":"754.710073","dy":"30.400000000000002","id":"SvgjsTspan1118"}},{"_":"-","$":{"x":"754.710073","dy":"30.400000000000002","id":"SvgjsTspan1119"}}]},{"$":{"y":"-435.0346495","x":"822.0328930000001","font-size":"19","id":"SvgjsText1120","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"+","$":{"x":"822.0328930000001","dy":"30.400000000000002","id":"SvgjsTspan1121"}},{"_":"=","$":{"x":"822.0328930000001","dy":"30.400000000000002","id":"SvgjsTspan1122"}}]},{"$":{"y":"-419.8315245","x":"905.3006445","font-size":"19","id":"SvgjsText1123","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"\r\n ←\r\n ","$":{"x":"905.3006445","dy":"30.400000000000002","id":"SvgjsTspan1124"}}]},{"$":{"y":"-352.50870449999996","x":"449.985653","font-size":"19","id":"SvgjsText1137","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"\r\n Y\r\n ","$":{"x":"449.985653","dy":"30.400000000000002","id":"SvgjsTspan1138"}}]},{"$":{"y":"-352.50870449999996","x":"517.308493","font-size":"19","id":"SvgjsText1139","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"\r\n U\r\n ","$":{"x":"517.308493","dy":"30.400000000000002","id":"SvgjsTspan1140"}}]},{"$":{"y":"-352.50870449999996","x":"584.631343","font-size":"19","id":"SvgjsText1141","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"\r\n I\r\n ","$":{"x":"584.631343","dy":"30.400000000000002","id":"SvgjsTspan1142"}}]},{"$":{"y":"-352.50870449999996","x":"651.954153","font-size":"19","id":"SvgjsText1143","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"\r\n O\r\n ","$":{"x":"651.954153","dy":"30.400000000000002","id":"SvgjsTspan1144"}}]},{"$":{"y":"-352.50870449999996","x":"719.277033","font-size":"19","id":"SvgjsText1145","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"\r\n P\r\n ","$":{"x":"719.277033","dy":"30.400000000000002","id":"SvgjsTspan1146"}}]},{"$":{"y":"-367.71182949999996","x":"786.599843","font-size":"19","id":"SvgjsText1147","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"{","$":{"x":"786.599843","dy":"30.400000000000002","id":"SvgjsTspan1148"}},{"_":"[","$":{"x":"786.599843","dy":"30.400000000000002","id":"SvgjsTspan1149"}}]},{"$":{"y":"-367.71182949999996","x":"853.9226630000001","font-size":"19","id":"SvgjsText1150","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"}","$":{"x":"853.9226630000001","dy":"30.400000000000002","id":"SvgjsTspan1151"}},{"_":"]","$":{"x":"853.9226630000001","dy":"30.400000000000002","id":"SvgjsTspan1152"}}]},{"$":{"y":"-367.71182949999996","x":"921.2454730000001","font-size":"19","id":"SvgjsText1153","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"|","$":{"x":"921.2454730000001","dy":"30.400000000000002","id":"SvgjsTspan1154"}},{"_":"\\","$":{"x":"921.2454730000001","dy":"30.400000000000002","id":"SvgjsTspan1155"}}]},{"$":{"y":"-285.1858645","x":"467.56048300000003","font-size":"19","id":"SvgjsText1168","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"\r\n H\r\n ","$":{"x":"467.56048300000003","dy":"30.400000000000002","id":"SvgjsTspan1169"}}]},{"$":{"y":"-285.1858645","x":"535.2022029999999","font-size":"19","id":"SvgjsText1170","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"\r\n J\r\n ","$":{"x":"535.2022029999999","dy":"30.400000000000002","id":"SvgjsTspan1171"}}]},{"$":{"y":"-285.1858645","x":"602.843923","font-size":"19","id":"SvgjsText1172","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"\r\n K\r\n ","$":{"x":"602.843923","dy":"30.400000000000002","id":"SvgjsTspan1173"}}]},{"$":{"y":"-285.1858645","x":"670.4856530000001","font-size":"19","id":"SvgjsText1174","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"\r\n L\r\n ","$":{"x":"670.4856530000001","dy":"30.400000000000002","id":"SvgjsTspan1175"}}]},{"$":{"y":"-300.3889895","x":"738.127373","font-size":"19","id":"SvgjsText1176","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":":","$":{"x":"738.127373","dy":"30.400000000000002","id":"SvgjsTspan1177"}},{"_":";","$":{"x":"738.127373","dy":"30.400000000000002","id":"SvgjsTspan1178"}}]},{"$":{"y":"-300.3889895","x":"805.769153","font-size":"19","id":"SvgjsText1179","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"\"","$":{"x":"805.769153","dy":"30.400000000000002","id":"SvgjsTspan1180"}},{"_":"'","$":{"x":"805.769153","dy":"30.400000000000002","id":"SvgjsTspan1181"}}]},{"$":{"y":"-285.1858645","x":"897.328205","font-size":"19","id":"SvgjsText1182","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"\r\n Enter\r\n ","$":{"x":"897.328205","dy":"30.400000000000002","id":"SvgjsTspan1183"}}]},{"$":{"y":"-217.86302450000002","x":"501.36361300000004","font-size":"19","id":"SvgjsText1196","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"\r\n N\r\n ","$":{"x":"501.36361300000004","dy":"30.400000000000002","id":"SvgjsTspan1197"}}]},{"$":{"y":"-217.86302450000002","x":"569.395133","font-size":"19","id":"SvgjsText1198","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"\r\n M\r\n ","$":{"x":"569.395133","dy":"30.400000000000002","id":"SvgjsTspan1199"}}]},{"$":{"y":"-233.06614950000002","x":"637.426633","font-size":"19","id":"SvgjsText1200","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"<","$":{"x":"637.426633","dy":"30.400000000000002","id":"SvgjsTspan1201"}},{"_":",","$":{"x":"637.426633","dy":"30.400000000000002","id":"SvgjsTspan1202"}}]},{"$":{"y":"-233.06614950000002","x":"705.458123","font-size":"19","id":"SvgjsText1203","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":">","$":{"x":"705.458123","dy":"30.400000000000002","id":"SvgjsTspan1204"}},{"_":".","$":{"x":"705.458123","dy":"30.400000000000002","id":"SvgjsTspan1205"}}]},{"$":{"y":"-233.06614950000002","x":"773.489613","font-size":"19","id":"SvgjsText1206","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"?","$":{"x":"773.489613","dy":"30.400000000000002","id":"SvgjsTspan1207"}},{"_":"/","$":{"x":"773.489613","dy":"30.400000000000002","id":"SvgjsTspan1208"}}]},{"$":{"y":"-217.86302450000002","x":"881.38332","font-size":"19","id":"SvgjsText1209","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"\r\n Shift\r\n ","$":{"x":"881.38332","dy":"30.400000000000002","id":"SvgjsTspan1210"}}]},{"$":{"y":"-150.5401845","x":"511.10771","font-size":"19","id":"SvgjsText1221","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"\r\n Space\r\n ","$":{"x":"511.10771","dy":"30.400000000000002","id":"SvgjsTspan1222"}}]},{"$":{"y":"-150.5401845","x":"616.6982654999999","font-size":"19","id":"SvgjsText1223","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"\r\n Fn\r\n ","$":{"x":"616.6982654999999","dy":"30.400000000000002","id":"SvgjsTspan1224"}}]},{"$":{"y":"-150.5401845","x":"699.6116555","font-size":"19","id":"SvgjsText1225","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"\r\n Alt\r\n ","$":{"x":"699.6116555","dy":"30.400000000000002","id":"SvgjsTspan1226"}}]},{"$":{"y":"-150.5401845","x":"782.5250454999999","font-size":"19","id":"SvgjsText1227","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"\r\n Super\r\n ","$":{"x":"782.5250454999999","dy":"30.400000000000002","id":"SvgjsTspan1228"}}]},{"$":{"y":"-150.5401845","x":"889.355755","font-size":"19","id":"SvgjsText1229","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"\r\n Ctrl\r\n ","$":{"x":"889.355755","dy":"30.400000000000002","id":"SvgjsTspan1230"}}]},{"$":{"y":"-94.136446","x":"511.107715","font-size":"19","id":"SvgjsText1233","text-anchor":"middle","font-family":"Helvetica","fill":"#ffffff"},"tspan":[{"_":"\r\n Mod\r\n ","$":{"x":"511.107715","dy":"30.400000000000002","id":"SvgjsTspan1234"}}]}]}]}]}}
+
+/***/ },
+/* 290 */
+/***/ function(module, exports) {
+
+ module.exports = "\r\n \r\n \r\n \r\n ";
+
+/***/ },
+/* 291 */
+/***/ function(module, exports) {
+
+ module.exports = ":host {\n display: flex;\n width: 100%;\n height: 100%;\n position: relative; }\n"
+
+/***/ },
+/* 292 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var svg_icon_text_key_1 = __webpack_require__(293);
+ exports.SvgIconTextKeyComponent = svg_icon_text_key_1.SvgIconTextKeyComponent;
+ var svg_keyboard_key_1 = __webpack_require__(296);
+ exports.SvgKeyboardKeyComponent = svg_keyboard_key_1.SvgKeyboardKeyComponent;
+ var svg_keystroke_key_1 = __webpack_require__(300);
+ exports.SvgKeystrokeKeyComponent = svg_keystroke_key_1.SvgKeystrokeKeyComponent;
+ var svg_mouse_key_1 = __webpack_require__(304);
+ exports.SvgMouseKeyComponent = svg_mouse_key_1.SvgMouseKeyComponent;
+ var svg_mouse_click_key_1 = __webpack_require__(307);
+ exports.SvgMouseClickKeyComponent = svg_mouse_click_key_1.SvgMouseClickKeyComponent;
+ var svg_mouse_move_key_1 = __webpack_require__(310);
+ exports.SvgMouseMoveKeyComponent = svg_mouse_move_key_1.SvgMouseMoveKeyComponent;
+ var svg_mouse_speed_key_1 = __webpack_require__(313);
+ exports.SvgMouseSpeedKeyComponent = svg_mouse_speed_key_1.SvgMouseSpeedKeyComponent;
+ var svg_mouse_scroll_key_1 = __webpack_require__(316);
+ exports.SvgMouseScrollKeyComponent = svg_mouse_scroll_key_1.SvgMouseScrollKeyComponent;
+ var svg_one_line_text_key_1 = __webpack_require__(319);
+ exports.SvgOneLineTextKeyComponent = svg_one_line_text_key_1.SvgOneLineTextKeyComponent;
+ var svg_single_icon_key_1 = __webpack_require__(322);
+ exports.SvgSingleIconKeyComponent = svg_single_icon_key_1.SvgSingleIconKeyComponent;
+ var svg_switch_keymap_key_1 = __webpack_require__(325);
+ exports.SvgSwitchKeymapKeyComponent = svg_switch_keymap_key_1.SvgSwitchKeymapKeyComponent;
+ var svg_text_icon_key_1 = __webpack_require__(328);
+ exports.SvgTextIconKeyComponent = svg_text_icon_key_1.SvgTextIconKeyComponent;
+ var svg_two_line_text_key_1 = __webpack_require__(331);
+ exports.SvgTwoLineTextKeyComponent = svg_two_line_text_key_1.SvgTwoLineTextKeyComponent;
+
+
+/***/ },
+/* 293 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ __export(__webpack_require__(294));
+
+
+/***/ },
+/* 294 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var SvgIconTextKeyComponent = (function () {
+ function SvgIconTextKeyComponent() {
+ }
+ SvgIconTextKeyComponent.prototype.ngOnInit = function () {
+ this.useWidth = this.width / 3;
+ this.useHeight = this.height / 3;
+ this.useX = (this.width > 2 * this.height) ? 0 : this.width / 3;
+ this.useY = (this.width > 2 * this.height) ? this.height / 3 : this.height / 10;
+ this.textY = (this.width > 2 * this.height) ? this.height / 2 : this.height * 0.6;
+ this.spanX = (this.width > 2 * this.height) ? this.width * 0.6 : this.width / 2;
+ };
+ return SvgIconTextKeyComponent;
+ }());
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Number)
+ ], SvgIconTextKeyComponent.prototype, "width", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Number)
+ ], SvgIconTextKeyComponent.prototype, "height", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", String)
+ ], SvgIconTextKeyComponent.prototype, "icon", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", String)
+ ], SvgIconTextKeyComponent.prototype, "text", void 0);
+ SvgIconTextKeyComponent = __decorate([
+ core_1.Component({
+ selector: 'g[svg-icon-text-key]',
+ template: __webpack_require__(295),
+ changeDetection: core_1.ChangeDetectionStrategy.OnPush
+ }),
+ __metadata("design:paramtypes", [])
+ ], SvgIconTextKeyComponent);
+ exports.SvgIconTextKeyComponent = SvgIconTextKeyComponent;
+
+
+/***/ },
+/* 295 */
+/***/ function(module, exports) {
+
+ module.exports = "\r\n \r\n\r\n {{ text }} \r\n ";
+
+/***/ },
+/* 296 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ __export(__webpack_require__(297));
+
+
+/***/ },
+/* 297 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var store_1 = __webpack_require__(44);
+ var key_action_1 = __webpack_require__(142);
+ var KeyModifiers_1 = __webpack_require__(201);
+ var capture_service_1 = __webpack_require__(264);
+ var mapper_service_1 = __webpack_require__(202);
+ var user_configuration_1 = __webpack_require__(141);
+ var LabelTypes;
+ (function (LabelTypes) {
+ LabelTypes[LabelTypes["KeystrokeKey"] = 0] = "KeystrokeKey";
+ LabelTypes[LabelTypes["MouseKey"] = 1] = "MouseKey";
+ LabelTypes[LabelTypes["OneLineText"] = 2] = "OneLineText";
+ LabelTypes[LabelTypes["TwoLineText"] = 3] = "TwoLineText";
+ LabelTypes[LabelTypes["TextIcon"] = 4] = "TextIcon";
+ LabelTypes[LabelTypes["SingleIcon"] = 5] = "SingleIcon";
+ LabelTypes[LabelTypes["SwitchKeymap"] = 6] = "SwitchKeymap";
+ LabelTypes[LabelTypes["IconText"] = 7] = "IconText";
+ })(LabelTypes || (LabelTypes = {}));
+ var SvgKeyboardKeyComponent = (function () {
+ function SvgKeyboardKeyComponent(mapper, store, element, captureService, renderer) {
+ var _this = this;
+ this.mapper = mapper;
+ this.store = store;
+ this.element = element;
+ this.captureService = captureService;
+ this.renderer = renderer;
+ this.keyClick = new core_1.EventEmitter();
+ this.capture = new core_1.EventEmitter();
+ this.enumLabelTypes = LabelTypes;
+ this.changeAnimation = 'inactive';
+ this.subscription = store.let(user_configuration_1.getMacros())
+ .subscribe(function (macros) { return _this.macros = macros; });
+ this.reset();
+ this.captureService.populateMapping();
+ this.scanCodePressed = false;
+ }
+ SvgKeyboardKeyComponent.prototype.onClick = function () {
+ this.reset();
+ this.keyClick.emit(this.element.nativeElement);
+ };
+ SvgKeyboardKeyComponent.prototype.onMouseDown = function (e) {
+ if ((e.which === 2 || e.button === 1) && this.capturingEnabled) {
+ e.preventDefault();
+ this.renderer.invokeElementMethod(this.element.nativeElement, 'focus');
+ if (this.recording) {
+ this.reset();
+ }
+ else {
+ this.recording = true;
+ this.recordAnimation = 'active';
+ }
+ }
+ };
+ SvgKeyboardKeyComponent.prototype.onKeyUpe = function (e) {
+ if (this.scanCodePressed) {
+ e.preventDefault();
+ this.scanCodePressed = false;
+ }
+ else if (this.recording) {
+ e.preventDefault();
+ this.saveScanCode();
+ }
+ };
+ SvgKeyboardKeyComponent.prototype.onKeyDown = function (e) {
+ var code = e.keyCode;
+ if (this.recording) {
+ e.preventDefault();
+ if (this.captureService.hasMap(code)) {
+ this.saveScanCode(this.captureService.getMap(code));
+ this.scanCodePressed = true;
+ }
+ else {
+ this.captureService.setModifier((e.location === 1), code);
+ }
+ }
+ };
+ SvgKeyboardKeyComponent.prototype.onFocusOut = function () {
+ this.reset();
+ };
+ SvgKeyboardKeyComponent.prototype.ngOnInit = function () {
+ this.setLabels();
+ };
+ SvgKeyboardKeyComponent.prototype.ngOnChanges = function (changes) {
+ if (changes['keyAction']) {
+ this.setLabels();
+ if (this.keybindAnimationEnabled) {
+ this.changeAnimation = 'active';
+ }
+ }
+ };
+ SvgKeyboardKeyComponent.prototype.ngOnDestroy = function () {
+ this.subscription.unsubscribe();
+ };
+ SvgKeyboardKeyComponent.prototype.onChangeAnimationDone = function () {
+ this.changeAnimation = 'inactive';
+ };
+ SvgKeyboardKeyComponent.prototype.onRecordingAnimationDone = function () {
+ if (this.recording && this.recordAnimation === 'inactive') {
+ this.recordAnimation = 'active';
+ }
+ else {
+ this.recordAnimation = 'inactive';
+ }
+ };
+ SvgKeyboardKeyComponent.prototype.reset = function () {
+ this.recording = false;
+ this.changeAnimation = 'inactive';
+ this.captureService.initModifiers();
+ };
+ SvgKeyboardKeyComponent.prototype.saveScanCode = function (code) {
+ if (code === void 0) { code = 0; }
+ this.recording = false;
+ this.changeAnimation = 'inactive';
+ var left = this.captureService.getModifiers(true);
+ var right = this.captureService.getModifiers(false);
+ this.capture.emit({
+ code: code,
+ left: left,
+ right: right
+ });
+ this.captureService.initModifiers();
+ };
+ SvgKeyboardKeyComponent.prototype.setLabels = function () {
+ if (!this.keyAction) {
+ this.labelSource = undefined;
+ this.labelType = LabelTypes.OneLineText;
+ return;
+ }
+ this.labelType = LabelTypes.OneLineText;
+ if (this.keyAction instanceof key_action_1.KeystrokeAction) {
+ var keyAction = this.keyAction;
+ var newLabelSource = void 0;
+ if (!keyAction.hasActiveModifier() && keyAction.hasScancode()) {
+ var scancode = keyAction.scancode;
+ newLabelSource = this.mapper.scanCodeToText(scancode);
+ if (this.mapper.hasScancodeIcon(scancode)) {
+ this.labelSource = this.mapper.scanCodeToSvgImagePath(scancode);
+ this.labelType = LabelTypes.SingleIcon;
+ }
+ else if (newLabelSource !== undefined) {
+ if (newLabelSource.length === 1) {
+ this.labelSource = newLabelSource[0];
+ this.labelType = LabelTypes.OneLineText;
+ }
+ else {
+ this.labelSource = newLabelSource;
+ this.labelType = LabelTypes.TwoLineText;
+ }
+ }
+ }
+ else if (keyAction.hasOnlyOneActiveModifier() && !keyAction.hasScancode()) {
+ newLabelSource = [];
+ switch (keyAction.modifierMask) {
+ case KeyModifiers_1.KeyModifiers.leftCtrl:
+ case KeyModifiers_1.KeyModifiers.rightCtrl:
+ newLabelSource.push('Ctrl');
+ break;
+ case KeyModifiers_1.KeyModifiers.leftShift:
+ case KeyModifiers_1.KeyModifiers.rightShift:
+ newLabelSource.push('Shift');
+ break;
+ case KeyModifiers_1.KeyModifiers.leftAlt:
+ case KeyModifiers_1.KeyModifiers.rightAlt:
+ newLabelSource.push('Alt');
+ break;
+ case KeyModifiers_1.KeyModifiers.leftGui:
+ case KeyModifiers_1.KeyModifiers.rightGui:
+ newLabelSource.push('Super');
+ break;
+ default:
+ newLabelSource.push('Undefined');
+ break;
+ }
+ this.labelSource = newLabelSource;
+ }
+ else {
+ this.labelType = LabelTypes.KeystrokeKey;
+ this.labelSource = this.keyAction;
+ }
+ }
+ else if (this.keyAction instanceof key_action_1.SwitchLayerAction) {
+ var keyAction = this.keyAction;
+ var newLabelSource = void 0;
+ switch (keyAction.layer) {
+ case key_action_1.LayerName.mod:
+ newLabelSource = 'Mod';
+ break;
+ case key_action_1.LayerName.fn:
+ newLabelSource = 'Fn';
+ break;
+ case key_action_1.LayerName.mouse:
+ newLabelSource = 'Mouse';
+ break;
+ default:
+ break;
+ }
+ if (keyAction.isLayerToggleable) {
+ this.labelType = LabelTypes.TextIcon;
+ this.labelSource = {
+ text: newLabelSource,
+ icon: this.mapper.getIcon('toggle')
+ };
+ }
+ else {
+ this.labelType = LabelTypes.OneLineText;
+ this.labelSource = newLabelSource;
+ }
+ }
+ else if (this.keyAction instanceof key_action_1.SwitchKeymapAction) {
+ var keyAction = this.keyAction;
+ this.labelType = LabelTypes.SwitchKeymap;
+ this.labelSource = keyAction.keymapAbbreviation;
+ }
+ else if (this.keyAction instanceof key_action_1.PlayMacroAction) {
+ var keyAction_1 = this.keyAction;
+ var macro = this.macros.find(function (_macro) { return _macro.id === keyAction_1.macroId; });
+ this.labelType = LabelTypes.IconText;
+ this.labelSource = {
+ icon: this.mapper.getIcon('macro'),
+ text: macro.name
+ };
+ }
+ else if (this.keyAction instanceof key_action_1.MouseAction) {
+ this.labelType = LabelTypes.MouseKey;
+ this.labelSource = this.keyAction;
+ }
+ else {
+ this.labelSource = undefined;
+ }
+ };
+ return SvgKeyboardKeyComponent;
+ }());
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", String)
+ ], SvgKeyboardKeyComponent.prototype, "id", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", String)
+ ], SvgKeyboardKeyComponent.prototype, "rx", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", String)
+ ], SvgKeyboardKeyComponent.prototype, "ry", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Number)
+ ], SvgKeyboardKeyComponent.prototype, "height", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Number)
+ ], SvgKeyboardKeyComponent.prototype, "width", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", key_action_1.KeyAction)
+ ], SvgKeyboardKeyComponent.prototype, "keyAction", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Boolean)
+ ], SvgKeyboardKeyComponent.prototype, "keybindAnimationEnabled", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Boolean)
+ ], SvgKeyboardKeyComponent.prototype, "capturingEnabled", void 0);
+ __decorate([
+ core_1.Output(),
+ __metadata("design:type", Object)
+ ], SvgKeyboardKeyComponent.prototype, "keyClick", void 0);
+ __decorate([
+ core_1.Output(),
+ __metadata("design:type", Object)
+ ], SvgKeyboardKeyComponent.prototype, "capture", void 0);
+ __decorate([
+ core_1.HostListener('click'),
+ __metadata("design:type", Function),
+ __metadata("design:paramtypes", []),
+ __metadata("design:returntype", void 0)
+ ], SvgKeyboardKeyComponent.prototype, "onClick", null);
+ __decorate([
+ core_1.HostListener('mousedown', ['$event']),
+ __metadata("design:type", Function),
+ __metadata("design:paramtypes", [MouseEvent]),
+ __metadata("design:returntype", void 0)
+ ], SvgKeyboardKeyComponent.prototype, "onMouseDown", null);
+ __decorate([
+ core_1.HostListener('keyup', ['$event']),
+ __metadata("design:type", Function),
+ __metadata("design:paramtypes", [KeyboardEvent]),
+ __metadata("design:returntype", void 0)
+ ], SvgKeyboardKeyComponent.prototype, "onKeyUpe", null);
+ __decorate([
+ core_1.HostListener('keydown', ['$event']),
+ __metadata("design:type", Function),
+ __metadata("design:paramtypes", [KeyboardEvent]),
+ __metadata("design:returntype", void 0)
+ ], SvgKeyboardKeyComponent.prototype, "onKeyDown", null);
+ __decorate([
+ core_1.HostListener('focusout'),
+ __metadata("design:type", Function),
+ __metadata("design:paramtypes", []),
+ __metadata("design:returntype", void 0)
+ ], SvgKeyboardKeyComponent.prototype, "onFocusOut", null);
+ SvgKeyboardKeyComponent = __decorate([
+ core_1.Component({
+ animations: [
+ core_1.trigger('change', [
+ core_1.transition('inactive => active', [
+ core_1.style({ fill: '#fff' }),
+ core_1.group([
+ core_1.animate('1s ease-out', core_1.style({
+ fill: '#333'
+ }))
+ ])
+ ])
+ ]),
+ core_1.trigger('recording', [
+ core_1.state('inactive', core_1.style({
+ fill: 'rgba(204, 0, 0, 1)'
+ })),
+ core_1.state('active', core_1.style({
+ fill: 'rgba(204, 0, 0, 0.6)'
+ })),
+ core_1.transition('inactive <=> active', core_1.animate('600ms ease-in-out'))
+ ])
+ ],
+ selector: 'g[svg-keyboard-key]',
+ template: __webpack_require__(298),
+ styles: [__webpack_require__(299)]
+ }),
+ __metadata("design:paramtypes", [mapper_service_1.MapperService,
+ store_1.Store,
+ core_1.ElementRef,
+ capture_service_1.CaptureService,
+ core_1.Renderer])
+ ], SvgKeyboardKeyComponent);
+ exports.SvgKeyboardKeyComponent = SvgKeyboardKeyComponent;
+
+
+/***/ },
+/* 298 */
+/***/ function(module, exports) {
+
+ module.exports = " \r\n\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n";
+
+/***/ },
+/* 299 */
+/***/ function(module, exports) {
+
+ module.exports = ":host {\n cursor: pointer;\n outline: none; }\n :host /deep/ text {\n dominant-baseline: central; }\n :host:hover {\n fill: #494949; }\n"
+
+/***/ },
+/* 300 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ __export(__webpack_require__(301));
+
+
+/***/ },
+/* 301 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var key_action_1 = __webpack_require__(142);
+ var KeyModifiers_1 = __webpack_require__(201);
+ var mapper_service_1 = __webpack_require__(202);
+ var SvgAttributes = (function () {
+ function SvgAttributes() {
+ this.width = 0;
+ this.height = 0;
+ this.x = 0;
+ this.y = 0;
+ this.disabled = true;
+ }
+ return SvgAttributes;
+ }());
+ var Modifiers;
+ (function (Modifiers) {
+ Modifiers[Modifiers["Shift"] = 0] = "Shift";
+ Modifiers[Modifiers["Control"] = 1] = "Control";
+ Modifiers[Modifiers["Alt"] = 2] = "Alt";
+ Modifiers[Modifiers["Command"] = 3] = "Command";
+ })(Modifiers || (Modifiers = {}));
+ var SvgKeystrokeKeyComponent = (function () {
+ function SvgKeystrokeKeyComponent(mapper) {
+ this.mapper = mapper;
+ this.modifierIconNames = {};
+ this.textContainer = new SvgAttributes();
+ this.modifierContainer = new SvgAttributes();
+ this.shift = new SvgAttributes();
+ this.control = new SvgAttributes();
+ this.option = new SvgAttributes();
+ this.command = new SvgAttributes();
+ }
+ SvgKeystrokeKeyComponent.prototype.ngOnInit = function () {
+ this.viewBox = [0, 0, this.width, this.height].join(' ');
+ this.modifierIconNames.shift = this.mapper.getIcon('shift');
+ this.modifierIconNames.option = this.mapper.getIcon('option');
+ this.modifierIconNames.command = this.mapper.getIcon('command');
+ var bottomSideMode = this.width < this.height * 1.8;
+ var heightWidthRatio = this.height / this.width;
+ if (bottomSideMode) {
+ var maxIconWidth = this.width / 4;
+ var maxIconHeight = this.height;
+ var iconScalingFactor = 0.8;
+ var iconWidth = iconScalingFactor * heightWidthRatio * maxIconWidth;
+ var iconHeight = iconScalingFactor * maxIconHeight;
+ this.modifierContainer.width = this.width;
+ this.modifierContainer.height = this.height / 5;
+ this.modifierContainer.y = this.height - this.modifierContainer.height;
+ this.shift.width = iconWidth;
+ this.shift.height = iconHeight;
+ this.shift.x = (maxIconWidth - iconWidth) / 2;
+ this.shift.y = (maxIconHeight - iconHeight) / 2;
+ this.control.width = iconWidth;
+ this.control.height = iconHeight;
+ this.control.x = this.shift.x + maxIconWidth;
+ this.control.y = this.shift.y;
+ this.option.width = iconWidth;
+ this.option.height = iconHeight;
+ this.option.x = this.control.x + maxIconWidth;
+ this.option.y = this.shift.y;
+ this.command.width = iconWidth;
+ this.command.height = iconHeight;
+ this.command.x = this.option.x + maxIconWidth;
+ this.command.y = this.shift.y;
+ this.textContainer.y = -this.modifierContainer.height / 2;
+ }
+ else {
+ this.modifierContainer.width = this.width / 4;
+ this.modifierContainer.height = this.height;
+ this.modifierContainer.x = this.width - this.modifierContainer.width;
+ var length_1 = Math.min(this.modifierContainer.width / 2, this.modifierContainer.height / 2);
+ var iconScalingFactor = 0.8;
+ var iconWidth = iconScalingFactor * this.width * (length_1 / this.modifierContainer.width);
+ var iconHeight = iconScalingFactor * this.height * (length_1 / this.modifierContainer.height);
+ this.shift.width = iconWidth;
+ this.shift.height = iconHeight;
+ this.shift.x = this.width / 4 - iconWidth / 2;
+ this.shift.y = this.height / 4 - iconHeight / 2;
+ this.control.width = iconWidth;
+ this.control.height = iconHeight;
+ this.control.x = this.shift.x + this.width / 2;
+ this.control.y = this.shift.y;
+ this.option.width = iconWidth;
+ this.option.height = iconHeight;
+ this.option.x = this.shift.x;
+ this.option.y = this.shift.y + this.height / 2;
+ this.command.width = iconWidth;
+ this.command.height = iconHeight;
+ this.command.x = this.option.x + this.width / 2;
+ this.command.y = this.option.y;
+ this.textContainer.x = -this.modifierContainer.width / 2;
+ }
+ this.textContainer.width = this.width;
+ this.textContainer.height = this.height;
+ };
+ SvgKeystrokeKeyComponent.prototype.ngOnChanges = function () {
+ var newLabelSource;
+ if (this.keystrokeAction.hasScancode()) {
+ var scancode = this.keystrokeAction.scancode;
+ newLabelSource = this.mapper.scanCodeToText(scancode);
+ if (newLabelSource) {
+ if (newLabelSource.length === 1) {
+ this.labelSource = newLabelSource[0];
+ this.labelType = 'one-line';
+ }
+ else {
+ this.labelSource = newLabelSource;
+ this.labelType = 'two-line';
+ }
+ }
+ else {
+ this.labelSource = this.mapper.scanCodeToSvgImagePath(scancode);
+ this.labelType = 'icon';
+ }
+ }
+ else {
+ this.labelType = 'empty';
+ }
+ this.shift.disabled = !this.keystrokeAction.isActive(KeyModifiers_1.KeyModifiers.leftShift | KeyModifiers_1.KeyModifiers.rightShift);
+ this.control.disabled = !this.keystrokeAction.isActive(KeyModifiers_1.KeyModifiers.leftCtrl | KeyModifiers_1.KeyModifiers.rightCtrl);
+ this.option.disabled = !this.keystrokeAction.isActive(KeyModifiers_1.KeyModifiers.leftAlt | KeyModifiers_1.KeyModifiers.rightAlt);
+ this.command.disabled = !this.keystrokeAction.isActive(KeyModifiers_1.KeyModifiers.leftGui | KeyModifiers_1.KeyModifiers.rightGui);
+ };
+ return SvgKeystrokeKeyComponent;
+ }());
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Number)
+ ], SvgKeystrokeKeyComponent.prototype, "height", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Number)
+ ], SvgKeystrokeKeyComponent.prototype, "width", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", key_action_1.KeystrokeAction)
+ ], SvgKeystrokeKeyComponent.prototype, "keystrokeAction", void 0);
+ SvgKeystrokeKeyComponent = __decorate([
+ core_1.Component({
+ selector: 'g[svg-keystroke-key]',
+ template: __webpack_require__(302),
+ styles: [__webpack_require__(303)],
+ changeDetection: core_1.ChangeDetectionStrategy.OnPush
+ }),
+ __metadata("design:paramtypes", [mapper_service_1.MapperService])
+ ], SvgKeystrokeKeyComponent);
+ exports.SvgKeystrokeKeyComponent = SvgKeystrokeKeyComponent;
+
+
+/***/ },
+/* 302 */
+/***/ function(module, exports) {
+
+ module.exports = "\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n C \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ";
+
+/***/ },
+/* 303 */
+/***/ function(module, exports) {
+
+ module.exports = ".disabled {\n fill: gray; }\n\ntext {\n font-size: 100px; }\n"
+
+/***/ },
+/* 304 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ __export(__webpack_require__(305));
+
+
+/***/ },
+/* 305 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var key_action_1 = __webpack_require__(142);
+ var SvgMouseKeyComponent = (function () {
+ function SvgMouseKeyComponent() {
+ }
+ SvgMouseKeyComponent.prototype.ngOnChanges = function () {
+ switch (this.mouseAction.mouseAction) {
+ case key_action_1.MouseActionParam.leftClick:
+ this.type = 'click';
+ this.param = 'Left';
+ break;
+ case key_action_1.MouseActionParam.rightClick:
+ this.type = 'click';
+ this.param = 'Right';
+ break;
+ case key_action_1.MouseActionParam.middleClick:
+ this.type = 'click';
+ this.param = 'Middle';
+ break;
+ case key_action_1.MouseActionParam.scrollDown:
+ this.type = 'scroll';
+ this.param = 'down';
+ break;
+ case key_action_1.MouseActionParam.scrollLeft:
+ this.type = 'scroll';
+ this.param = 'left';
+ break;
+ case key_action_1.MouseActionParam.scrollRight:
+ this.type = 'scroll';
+ this.param = 'right';
+ break;
+ case key_action_1.MouseActionParam.scrollUp:
+ this.type = 'scroll';
+ this.param = 'up';
+ break;
+ case key_action_1.MouseActionParam.moveDown:
+ this.type = 'move';
+ this.param = 'down';
+ break;
+ case key_action_1.MouseActionParam.moveLeft:
+ this.type = 'move';
+ this.param = 'left';
+ break;
+ case key_action_1.MouseActionParam.moveRight:
+ this.type = 'move';
+ this.param = 'right';
+ break;
+ case key_action_1.MouseActionParam.moveUp:
+ this.type = 'move';
+ this.param = 'up';
+ break;
+ case key_action_1.MouseActionParam.accelerate:
+ this.type = 'speed';
+ this.param = true;
+ break;
+ case key_action_1.MouseActionParam.decelerate:
+ this.type = 'speed';
+ this.param = false;
+ break;
+ default:
+ break;
+ }
+ };
+ return SvgMouseKeyComponent;
+ }());
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", key_action_1.MouseAction)
+ ], SvgMouseKeyComponent.prototype, "mouseAction", void 0);
+ SvgMouseKeyComponent = __decorate([
+ core_1.Component({
+ selector: 'g[svg-mouse-key]',
+ template: __webpack_require__(306),
+ changeDetection: core_1.ChangeDetectionStrategy.OnPush
+ }),
+ __metadata("design:paramtypes", [])
+ ], SvgMouseKeyComponent);
+ exports.SvgMouseKeyComponent = SvgMouseKeyComponent;
+
+
+/***/ },
+/* 306 */
+/***/ function(module, exports) {
+
+ module.exports = "\r\n \r\n \r\n \r\n \r\n ";
+
+/***/ },
+/* 307 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ __export(__webpack_require__(308));
+
+
+/***/ },
+/* 308 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var mapper_service_1 = __webpack_require__(202);
+ var SvgMouseClickKeyComponent = (function () {
+ function SvgMouseClickKeyComponent(mapper) {
+ this.mapper = mapper;
+ this.icon = this.mapper.getIcon('mouse');
+ }
+ SvgMouseClickKeyComponent.prototype.ngOnInit = function () { };
+ return SvgMouseClickKeyComponent;
+ }());
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", String)
+ ], SvgMouseClickKeyComponent.prototype, "button", void 0);
+ SvgMouseClickKeyComponent = __decorate([
+ core_1.Component({
+ selector: 'g[svg-mouse-click-key]',
+ template: __webpack_require__(309),
+ changeDetection: core_1.ChangeDetectionStrategy.OnPush
+ }),
+ __metadata("design:paramtypes", [mapper_service_1.MapperService])
+ ], SvgMouseClickKeyComponent);
+ exports.SvgMouseClickKeyComponent = SvgMouseClickKeyComponent;
+
+
+/***/ },
+/* 309 */
+/***/ function(module, exports) {
+
+ module.exports = "\r\n \r\n\r\n Click \r\n \r\n\r\n {{ button }} \r\n ";
+
+/***/ },
+/* 310 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ __export(__webpack_require__(311));
+
+
+/***/ },
+/* 311 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var mapper_service_1 = __webpack_require__(202);
+ var SvgMouseMoveKeyComponent = (function () {
+ function SvgMouseMoveKeyComponent(mapper) {
+ this.mapper = mapper;
+ }
+ SvgMouseMoveKeyComponent.prototype.ngOnChanges = function () {
+ this.mouseIcon = this.mapper.getIcon('mouse');
+ this.directionIcon = this.mapper.getIcon(this.direction + "-arrow");
+ };
+ return SvgMouseMoveKeyComponent;
+ }());
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", String)
+ ], SvgMouseMoveKeyComponent.prototype, "direction", void 0);
+ SvgMouseMoveKeyComponent = __decorate([
+ core_1.Component({
+ selector: 'g[svg-mouse-move-key]',
+ template: __webpack_require__(312),
+ changeDetection: core_1.ChangeDetectionStrategy.OnPush
+ }),
+ __metadata("design:paramtypes", [mapper_service_1.MapperService])
+ ], SvgMouseMoveKeyComponent);
+ exports.SvgMouseMoveKeyComponent = SvgMouseMoveKeyComponent;
+
+
+/***/ },
+/* 312 */
+/***/ function(module, exports) {
+
+ module.exports = " \r\n\r\n Move \r\n \r\n ";
+
+/***/ },
+/* 313 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ __export(__webpack_require__(314));
+
+
+/***/ },
+/* 314 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var mapper_service_1 = __webpack_require__(202);
+ var SvgMouseSpeedKeyComponent = (function () {
+ function SvgMouseSpeedKeyComponent(mapper) {
+ this.mapper = mapper;
+ this.icon = this.mapper.getIcon('mouse');
+ }
+ SvgMouseSpeedKeyComponent.prototype.ngOnChanges = function () {
+ this.sign = this.plus ? '+' : '-';
+ };
+ return SvgMouseSpeedKeyComponent;
+ }());
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Boolean)
+ ], SvgMouseSpeedKeyComponent.prototype, "plus", void 0);
+ SvgMouseSpeedKeyComponent = __decorate([
+ core_1.Component({
+ selector: 'g[svg-mouse-speed-key]',
+ template: __webpack_require__(315),
+ changeDetection: core_1.ChangeDetectionStrategy.OnPush
+ }),
+ __metadata("design:paramtypes", [mapper_service_1.MapperService])
+ ], SvgMouseSpeedKeyComponent);
+ exports.SvgMouseSpeedKeyComponent = SvgMouseSpeedKeyComponent;
+
+
+/***/ },
+/* 315 */
+/***/ function(module, exports) {
+
+ module.exports = "\r\n \r\n\r\n Speed \r\n \r\n\r\n {{ sign }} \r\n ";
+
+/***/ },
+/* 316 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ __export(__webpack_require__(317));
+
+
+/***/ },
+/* 317 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var mapper_service_1 = __webpack_require__(202);
+ var SvgMouseScrollKeyComponent = (function () {
+ function SvgMouseScrollKeyComponent(mapper) {
+ this.mapper = mapper;
+ }
+ SvgMouseScrollKeyComponent.prototype.ngOnChanges = function () {
+ this.mouseIcon = this.mapper.getIcon('mouse');
+ this.directionIcon = this.mapper.getIcon("scroll-" + this.direction);
+ };
+ return SvgMouseScrollKeyComponent;
+ }());
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", String)
+ ], SvgMouseScrollKeyComponent.prototype, "direction", void 0);
+ SvgMouseScrollKeyComponent = __decorate([
+ core_1.Component({
+ selector: 'g[svg-mouse-scroll-key]',
+ template: __webpack_require__(318),
+ changeDetection: core_1.ChangeDetectionStrategy.OnPush
+ }),
+ __metadata("design:paramtypes", [mapper_service_1.MapperService])
+ ], SvgMouseScrollKeyComponent);
+ exports.SvgMouseScrollKeyComponent = SvgMouseScrollKeyComponent;
+
+
+/***/ },
+/* 318 */
+/***/ function(module, exports) {
+
+ module.exports = " \r\n\r\n Scroll \r\n \r\n ";
+
+/***/ },
+/* 319 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ __export(__webpack_require__(320));
+
+
+/***/ },
+/* 320 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var SvgOneLineTextKeyComponent = (function () {
+ function SvgOneLineTextKeyComponent() {
+ }
+ SvgOneLineTextKeyComponent.prototype.ngOnInit = function () {
+ this.textY = this.height / 2;
+ this.spanX = this.width / 2;
+ };
+ return SvgOneLineTextKeyComponent;
+ }());
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Number)
+ ], SvgOneLineTextKeyComponent.prototype, "height", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Number)
+ ], SvgOneLineTextKeyComponent.prototype, "width", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", String)
+ ], SvgOneLineTextKeyComponent.prototype, "text", void 0);
+ SvgOneLineTextKeyComponent = __decorate([
+ core_1.Component({
+ selector: 'g[svg-one-line-text-key]',
+ template: __webpack_require__(321),
+ changeDetection: core_1.ChangeDetectionStrategy.OnPush
+ }),
+ __metadata("design:paramtypes", [])
+ ], SvgOneLineTextKeyComponent);
+ exports.SvgOneLineTextKeyComponent = SvgOneLineTextKeyComponent;
+
+
+/***/ },
+/* 321 */
+/***/ function(module, exports) {
+
+ module.exports = " \r\n {{ text }} \r\n ";
+
+/***/ },
+/* 322 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ __export(__webpack_require__(323));
+
+
+/***/ },
+/* 323 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var SvgSingleIconKeyComponent = (function () {
+ function SvgSingleIconKeyComponent() {
+ }
+ SvgSingleIconKeyComponent.prototype.ngOnInit = function () {
+ this.svgWidth = this.width / 3;
+ this.svgHeight = this.height / 3;
+ };
+ return SvgSingleIconKeyComponent;
+ }());
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Number)
+ ], SvgSingleIconKeyComponent.prototype, "width", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Number)
+ ], SvgSingleIconKeyComponent.prototype, "height", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", String)
+ ], SvgSingleIconKeyComponent.prototype, "icon", void 0);
+ SvgSingleIconKeyComponent = __decorate([
+ core_1.Component({
+ selector: 'g[svg-single-icon-key]',
+ template: __webpack_require__(324),
+ changeDetection: core_1.ChangeDetectionStrategy.OnPush
+ }),
+ __metadata("design:paramtypes", [])
+ ], SvgSingleIconKeyComponent);
+ exports.SvgSingleIconKeyComponent = SvgSingleIconKeyComponent;
+
+
+/***/ },
+/* 324 */
+/***/ function(module, exports) {
+
+ module.exports = "\r\n ";
+
+/***/ },
+/* 325 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ __export(__webpack_require__(326));
+
+
+/***/ },
+/* 326 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var mapper_service_1 = __webpack_require__(202);
+ var SvgSwitchKeymapKeyComponent = (function () {
+ function SvgSwitchKeymapKeyComponent(mapperService) {
+ this.mapperService = mapperService;
+ }
+ SvgSwitchKeymapKeyComponent.prototype.ngOnInit = function () {
+ this.icon = this.mapperService.getIcon('switch-keymap');
+ this.useWidth = this.width / 4;
+ this.useHeight = this.height / 4;
+ this.useX = this.width * 3 / 8;
+ this.useY = this.height / 5;
+ this.textY = this.height * 2 / 3;
+ this.spanX = this.width / 2;
+ };
+ return SvgSwitchKeymapKeyComponent;
+ }());
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Number)
+ ], SvgSwitchKeymapKeyComponent.prototype, "width", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Number)
+ ], SvgSwitchKeymapKeyComponent.prototype, "height", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", String)
+ ], SvgSwitchKeymapKeyComponent.prototype, "abbreviation", void 0);
+ SvgSwitchKeymapKeyComponent = __decorate([
+ core_1.Component({
+ selector: 'g[svg-switch-keymap-key]',
+ template: __webpack_require__(327),
+ changeDetection: core_1.ChangeDetectionStrategy.OnPush
+ }),
+ __metadata("design:paramtypes", [mapper_service_1.MapperService])
+ ], SvgSwitchKeymapKeyComponent);
+ exports.SvgSwitchKeymapKeyComponent = SvgSwitchKeymapKeyComponent;
+
+
+/***/ },
+/* 327 */
+/***/ function(module, exports) {
+
+ module.exports = "\r\n \r\n\r\n {{ abbreviation }} \r\n ";
+
+/***/ },
+/* 328 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ __export(__webpack_require__(329));
+
+
+/***/ },
+/* 329 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var SvgTextIconKeyComponent = (function () {
+ function SvgTextIconKeyComponent() {
+ }
+ SvgTextIconKeyComponent.prototype.ngOnInit = function () {
+ this.useWidth = this.width / 3;
+ this.useHeight = this.height / 3;
+ this.useX = (this.width > 2 * this.height) ? this.width * 0.6 : this.width / 3;
+ this.useY = (this.width > 2 * this.height) ? this.height / 3 : this.height / 2;
+ this.textY = (this.width > 2 * this.height) ? this.height / 2 : this.height / 3;
+ this.textAnchor = (this.width > 2 * this.height) ? 'end' : 'middle';
+ this.spanX = (this.width > 2 * this.height) ? 0.6 * this.width : this.width / 2;
+ };
+ return SvgTextIconKeyComponent;
+ }());
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Number)
+ ], SvgTextIconKeyComponent.prototype, "width", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Number)
+ ], SvgTextIconKeyComponent.prototype, "height", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", String)
+ ], SvgTextIconKeyComponent.prototype, "text", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", String)
+ ], SvgTextIconKeyComponent.prototype, "icon", void 0);
+ SvgTextIconKeyComponent = __decorate([
+ core_1.Component({
+ selector: 'g[svg-text-icon-key]',
+ template: __webpack_require__(330),
+ changeDetection: core_1.ChangeDetectionStrategy.OnPush
+ }),
+ __metadata("design:paramtypes", [])
+ ], SvgTextIconKeyComponent);
+ exports.SvgTextIconKeyComponent = SvgTextIconKeyComponent;
+
+
+/***/ },
+/* 330 */
+/***/ function(module, exports) {
+
+ module.exports = " \r\n {{ text }} \r\n \r\n\r\n ";
+
+/***/ },
+/* 331 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ __export(__webpack_require__(332));
+
+
+/***/ },
+/* 332 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var SvgTwoLineTextKeyComponent = (function () {
+ function SvgTwoLineTextKeyComponent() {
+ this.spanYs = [];
+ }
+ SvgTwoLineTextKeyComponent.prototype.ngOnInit = function () {
+ this.textY = this.height / 2;
+ this.spanX = this.width / 2;
+ for (var i = 0; i < this.texts.length; ++i) {
+ this.spanYs.push((0.75 - i * 0.5) * this.height);
+ }
+ };
+ return SvgTwoLineTextKeyComponent;
+ }());
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Number)
+ ], SvgTwoLineTextKeyComponent.prototype, "height", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Number)
+ ], SvgTwoLineTextKeyComponent.prototype, "width", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Array)
+ ], SvgTwoLineTextKeyComponent.prototype, "texts", void 0);
+ SvgTwoLineTextKeyComponent = __decorate([
+ core_1.Component({
+ selector: 'g[svg-two-line-text-key]',
+ template: __webpack_require__(333),
+ changeDetection: core_1.ChangeDetectionStrategy.OnPush
+ }),
+ __metadata("design:paramtypes", [])
+ ], SvgTwoLineTextKeyComponent);
+ exports.SvgTwoLineTextKeyComponent = SvgTwoLineTextKeyComponent;
+
+
+/***/ },
+/* 333 */
+/***/ function(module, exports) {
+
+ module.exports = "\r\n {{ text }} \r\n ";
+
+/***/ },
+/* 334 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ __export(__webpack_require__(335));
+
+
+/***/ },
+/* 335 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var Observable_1 = __webpack_require__(8);
+ __webpack_require__(336);
+ __webpack_require__(137);
+ var store_1 = __webpack_require__(44);
+ var mapper_service_1 = __webpack_require__(202);
+ var key_action_1 = __webpack_require__(142);
+ var Keymap_1 = __webpack_require__(158);
+ var LongPressAction_1 = __webpack_require__(146);
+ var util_1 = __webpack_require__(337);
+ var actions_1 = __webpack_require__(127);
+ var popover_1 = __webpack_require__(258);
+ var SvgKeyboardWrapComponent = (function () {
+ function SvgKeyboardWrapComponent(store, mapper, element, renderer) {
+ this.store = store;
+ this.mapper = mapper;
+ this.element = element;
+ this.renderer = renderer;
+ this.popoverEnabled = true;
+ this.tooltipEnabled = false;
+ this.currentLayer = 0;
+ this.keyEditConfig = {
+ moduleId: undefined,
+ keyId: undefined
+ };
+ this.tooltipData = {
+ posTop: 0,
+ posLeft: 0,
+ content: Observable_1.Observable.of([]),
+ show: false
+ };
+ }
+ Object.defineProperty(SvgKeyboardWrapComponent.prototype, "space", {
+ get: function () {
+ return this.popoverEnabled;
+ },
+ enumerable: true,
+ configurable: true
+ });
+ SvgKeyboardWrapComponent.prototype.onResize = function () {
+ if (this.wrapHost) {
+ this.wrapPosition = this.wrapHost.getBoundingClientRect();
+ }
+ if (this.keyElement) {
+ this.keyPosition = this.keyElement.getBoundingClientRect();
+ }
+ };
+ SvgKeyboardWrapComponent.prototype.ngOnInit = function () {
+ this.wrapHost = this.element.nativeElement;
+ this.wrapPosition = this.wrapHost.getBoundingClientRect();
+ };
+ SvgKeyboardWrapComponent.prototype.ngOnChanges = function (changes) {
+ var keymapChanges = changes['keymap'];
+ if (keymapChanges) {
+ this.popoverShown = false;
+ this.layers = this.keymap.layers;
+ if (keymapChanges.previousValue.abbreviation !== keymapChanges.currentValue.abbreviation) {
+ this.currentLayer = 0;
+ this.keybindAnimationEnabled = keymapChanges.isFirstChange();
+ }
+ else {
+ this.keybindAnimationEnabled = true;
+ }
+ }
+ };
+ SvgKeyboardWrapComponent.prototype.onKeyClick = function (moduleId, keyId, keyTarget) {
+ if (!this.popoverShown && this.popoverEnabled) {
+ this.keyEditConfig = {
+ moduleId: moduleId,
+ keyId: keyId
+ };
+ var keyActionToEdit = this.layers[this.currentLayer].modules[moduleId].keyActions[keyId];
+ this.keyElement = keyTarget;
+ this.showPopover(keyActionToEdit);
+ }
+ };
+ SvgKeyboardWrapComponent.prototype.onKeyHover = function (moduleId, event, over, keyId) {
+ if (this.tooltipEnabled) {
+ var keyActionToEdit = this.layers[this.currentLayer].modules[moduleId].keyActions[keyId];
+ if (over) {
+ this.showTooltip(keyActionToEdit, event);
+ }
+ else {
+ this.hideTooltip();
+ }
+ }
+ };
+ SvgKeyboardWrapComponent.prototype.onCapture = function (moduleId, keyId, captured) {
+ var keystrokeAction = new key_action_1.KeystrokeAction();
+ var modifiers = captured.left.concat(captured.right).map(function (x) { return x ? 1 : 0; });
+ keystrokeAction.scancode = captured.code;
+ keystrokeAction.modifierMask = 0;
+ for (var i = 0; i < modifiers.length; ++i) {
+ keystrokeAction.modifierMask |= modifiers[i] << this.mapper.modifierMapper(i);
+ }
+ this.store.dispatch(actions_1.KeymapActions.saveKey(this.keymap, this.currentLayer, moduleId, keyId, keystrokeAction));
+ };
+ SvgKeyboardWrapComponent.prototype.onRemap = function (keyAction) {
+ this.store.dispatch(actions_1.KeymapActions.saveKey(this.keymap, this.currentLayer, this.keyEditConfig.moduleId, this.keyEditConfig.keyId, keyAction));
+ this.hidePopover();
+ };
+ SvgKeyboardWrapComponent.prototype.showPopover = function (keyAction) {
+ this.keyPosition = this.keyElement.getBoundingClientRect();
+ this.popoverInitKeyAction = keyAction;
+ this.popoverShown = true;
+ this.renderer.invokeElementMethod(this.popover.nativeElement, 'focus');
+ };
+ SvgKeyboardWrapComponent.prototype.showTooltip = function (keyAction, event) {
+ if (keyAction === undefined) {
+ return;
+ }
+ var el = event.target || event.srcElement;
+ var position = el.getBoundingClientRect();
+ var posLeft = this.tooltipData.posLeft;
+ var posTop = this.tooltipData.posTop;
+ if (el.tagName === 'g') {
+ posLeft = position.left + (position.width / 2);
+ posTop = position.top + position.height;
+ }
+ this.tooltipData = {
+ posLeft: posLeft,
+ posTop: posTop,
+ content: this.getKeyActionContent(keyAction),
+ show: true
+ };
+ };
+ SvgKeyboardWrapComponent.prototype.hideTooltip = function () {
+ this.tooltipData.show = false;
+ };
+ SvgKeyboardWrapComponent.prototype.hidePopover = function () {
+ this.popoverShown = false;
+ };
+ SvgKeyboardWrapComponent.prototype.selectLayer = function (index) {
+ this.currentLayer = index;
+ };
+ SvgKeyboardWrapComponent.prototype.getSelectedLayer = function () {
+ return this.currentLayer;
+ };
+ SvgKeyboardWrapComponent.prototype.getKeyActionContent = function (keyAction) {
+ if (keyAction instanceof key_action_1.KeystrokeAction) {
+ var keystrokeAction = keyAction;
+ var content = [];
+ content.push({
+ name: 'Action type',
+ value: 'Keystroke'
+ });
+ if (keystrokeAction.hasScancode()) {
+ var value = keystrokeAction.scancode.toString();
+ var scanCodeTexts = (this.mapper.scanCodeToText(keystrokeAction.scancode) || []).join(', ');
+ if (scanCodeTexts.length > 0) {
+ value += ' (' + scanCodeTexts + ')';
+ }
+ content.push({
+ name: 'Scancode',
+ value: value
+ });
+ }
+ if (keystrokeAction.hasActiveModifier()) {
+ content.push({
+ name: 'Modifiers',
+ value: keystrokeAction.getModifierList().join(', ')
+ });
+ }
+ if (keystrokeAction.hasLongPressAction()) {
+ content.push({
+ name: 'Long press',
+ value: LongPressAction_1.LongPressAction[keystrokeAction.longPressAction]
+ });
+ }
+ return Observable_1.Observable.of(content);
+ }
+ else if (keyAction instanceof key_action_1.MouseAction) {
+ var mouseAction = keyAction;
+ var content = [
+ {
+ name: 'Action type',
+ value: 'Mouse'
+ },
+ {
+ name: 'Action',
+ value: util_1.camelCaseToSentence(key_action_1.MouseActionParam[mouseAction.mouseAction])
+ }
+ ];
+ return Observable_1.Observable.of(content);
+ }
+ else if (keyAction instanceof key_action_1.PlayMacroAction) {
+ var playMacroAction_1 = keyAction;
+ return this.store
+ .select(function (appState) { return appState.userConfiguration.macros; })
+ .map(function (macroState) { return macroState.find(function (macro) {
+ return macro.id === playMacroAction_1.macroId;
+ }).name; })
+ .map(function (macroName) {
+ var content = [
+ {
+ name: 'Action type',
+ value: 'Play macro'
+ },
+ {
+ name: 'Macro name',
+ value: macroName
+ }
+ ];
+ return content;
+ });
+ }
+ else if (keyAction instanceof key_action_1.SwitchKeymapAction) {
+ var switchKeymapAction_1 = keyAction;
+ return this.store
+ .select(function (appState) { return appState.userConfiguration.keymaps; })
+ .map(function (keymaps) { return keymaps.find(function (keymap) { return keymap.abbreviation === switchKeymapAction_1.keymapAbbreviation; }).name; })
+ .map(function (keymapName) {
+ var content = [
+ {
+ name: 'Action type',
+ value: 'Switch keymap'
+ },
+ {
+ name: 'Keymap',
+ value: keymapName
+ }
+ ];
+ return content;
+ });
+ }
+ else if (keyAction instanceof key_action_1.SwitchLayerAction) {
+ var switchLayerAction = keyAction;
+ var content = [
+ {
+ name: 'Action type',
+ value: 'Switch layer'
+ },
+ {
+ name: 'Layer',
+ value: util_1.capitalizeFirstLetter(key_action_1.LayerName[switchLayerAction.layer])
+ },
+ {
+ name: 'Toogle',
+ value: switchLayerAction.isLayerToggleable ? 'On' : 'Off'
+ }
+ ];
+ return Observable_1.Observable.of(content);
+ }
+ return Observable_1.Observable.of([]);
+ };
+ return SvgKeyboardWrapComponent;
+ }());
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Keymap_1.Keymap)
+ ], SvgKeyboardWrapComponent.prototype, "keymap", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Boolean)
+ ], SvgKeyboardWrapComponent.prototype, "popoverEnabled", void 0);
+ __decorate([
+ core_1.Input(),
+ __metadata("design:type", Boolean)
+ ], SvgKeyboardWrapComponent.prototype, "tooltipEnabled", void 0);
+ __decorate([
+ core_1.ViewChild(popover_1.PopoverComponent, { read: core_1.ElementRef }),
+ __metadata("design:type", core_1.ElementRef)
+ ], SvgKeyboardWrapComponent.prototype, "popover", void 0);
+ __decorate([
+ core_1.HostBinding('class.space'),
+ __metadata("design:type", Object),
+ __metadata("design:paramtypes", [])
+ ], SvgKeyboardWrapComponent.prototype, "space", null);
+ __decorate([
+ core_1.HostListener('window:resize'),
+ __metadata("design:type", Function),
+ __metadata("design:paramtypes", []),
+ __metadata("design:returntype", void 0)
+ ], SvgKeyboardWrapComponent.prototype, "onResize", null);
+ SvgKeyboardWrapComponent = __decorate([
+ core_1.Component({
+ selector: 'svg-keyboard-wrap',
+ template: __webpack_require__(338),
+ styles: [__webpack_require__(339)],
+ changeDetection: core_1.ChangeDetectionStrategy.OnPush
+ }),
+ __metadata("design:paramtypes", [store_1.Store,
+ mapper_service_1.MapperService,
+ core_1.ElementRef,
+ core_1.Renderer])
+ ], SvgKeyboardWrapComponent);
+ exports.SvgKeyboardWrapComponent = SvgKeyboardWrapComponent;
+
+
+/***/ },
+/* 336 */,
+/* 337 */
+/***/ function(module, exports) {
+
+ "use strict";
+ // Source: http://stackoverflow.com/questions/13720256/javascript-regex-camelcase-to-sentence
+ function camelCaseToSentence(camelCasedText) {
+ return camelCasedText.replace(/^[a-z]|[A-Z]/g, function (v, i) {
+ return i === 0 ? v.toUpperCase() : ' ' + v.toLowerCase();
+ });
+ }
+ exports.camelCaseToSentence = camelCaseToSentence;
+ function capitalizeFirstLetter(text) {
+ return text.charAt(0).toUpperCase() + text.slice(1);
+ }
+ exports.capitalizeFirstLetter = capitalizeFirstLetter;
+
+
+/***/ },
+/* 338 */
+/***/ function(module, exports) {
+
+ module.exports = "\r\n \r\n \r\n \r\n \r\n ";
+
+/***/ },
+/* 339 */
+/***/ function(module, exports) {
+
+ module.exports = ":host {\n width: 100%;\n display: block; }\n :host.space {\n margin-bottom: 405px; }\n\nkeyboard-slider {\n display: block;\n position: relative;\n overflow: hidden;\n /* TODO create dynamic */\n height: 500px;\n margin-top: 30px; }\n\n.tooltip {\n position: fixed;\n transform: translate(-50%, -6px);\n display: none; }\n .tooltip-inner {\n background: #fff;\n color: #000;\n box-shadow: 0 1px 5px #000;\n text-align: left; }\n .tooltip-inner p {\n margin-bottom: 2px; }\n .tooltip-inner p:last-of-type {\n margin-bottom: 0; }\n .tooltip.bottom .tooltip-arrow {\n border-bottom-color: #fff;\n top: 1px; }\n .tooltip.in {\n display: block;\n opacity: 1; }\n"
+
+/***/ },
+/* 340 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ __export(__webpack_require__(341));
+ __export(__webpack_require__(345));
+
+
+/***/ },
+/* 341 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var core_1 = __webpack_require__(4);
+ var MainAppComponent = (function () {
+ function MainAppComponent() {
+ }
+ return MainAppComponent;
+ }());
+ MainAppComponent = __decorate([
+ core_1.Component({
+ selector: 'main-app',
+ template: __webpack_require__(342),
+ styles: [
+ __webpack_require__(343),
+ __webpack_require__(344)
+ ],
+ encapsulation: core_1.ViewEncapsulation.None
+ })
+ ], MainAppComponent);
+ exports.MainAppComponent = MainAppComponent;
+
+
+/***/ },
+/* 342 */
+/***/ function(module, exports) {
+
+ module.exports = " \r\n \r\n\r\n \r\n
\r\n\r\n \r\n";
+
+/***/ },
+/* 343 */
+/***/ function(module, exports) {
+
+ module.exports = "main-app {\n display: block;\n min-height: 100vh;\n width: 100%;\n overflow: hidden;\n position: relative; }\n main-app .select2-container--default .select2-selection--single .select2-selection__rendered {\n line-height: 26px; }\n\n.main-content {\n margin-left: 250px; }\n\n.select2-container {\n z-index: 1100; }\n .select2-container .scancode--searchterm {\n text-align: right;\n color: #b7b7b7; }\n\n.select2-item {\n display: flex;\n justify-content: space-between; }\n\n.select2-results {\n text-align: left; }\n\n.nav-pills > li > a {\n cursor: pointer; }\n\n.select2-container--default .select2-dropdown--below .select2-results > .select2-results__options {\n max-height: 300px; }\n"
+
+/***/ },
+/* 344 */
+/***/ function(module, exports) {
+
+ module.exports = "/* GitHub ribbon */\n.github-fork-ribbon {\n background-color: #a00;\n overflow: hidden;\n white-space: nowrap;\n position: fixed;\n right: -50px;\n bottom: 40px;\n z-index: 2000;\n /* stylelint-disable indentation */\n -webkit-transform: rotate(-45deg);\n -moz-transform: rotate(-45deg);\n -ms-transform: rotate(-45deg);\n -o-transform: rotate(-45deg);\n transform: rotate(-45deg);\n -webkit-box-shadow: 0 0 10px #888;\n -moz-box-shadow: 0 0 10px #888;\n box-shadow: 0 0 10px #888;\n /* stylelint-enable indentation */ }\n .github-fork-ribbon a {\n border: 1px solid #faa;\n color: #fff;\n display: block;\n font: bold 81.25% 'Helvetica Neue', Helvetica, Arial, sans-serif;\n margin: 1px 0;\n padding: 10px 50px;\n text-align: center;\n text-decoration: none;\n text-shadow: 0 0 5px #444; }\n"
+
+/***/ },
+/* 345 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var router_1 = __webpack_require__(99);
+ var add_on_1 = __webpack_require__(97);
+ var keymap_1 = __webpack_require__(346);
+ var macro_1 = __webpack_require__(183);
+ var settings_1 = __webpack_require__(271);
+ var appRoutes = keymap_1.keymapRoutes.concat(macro_1.macroRoutes, add_on_1.addOnRoutes, settings_1.settingsRoutes);
+ exports.appRoutingProviders = [];
+ exports.routing = router_1.RouterModule.forRoot(appRoutes, { useHash: true });
+
+
+/***/ },
+/* 346 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ __export(__webpack_require__(347));
+
+
+/***/ },
+/* 347 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var keymap_add_component_1 = __webpack_require__(122);
+ var edit_1 = __webpack_require__(348);
+ exports.keymapRoutes = [
+ {
+ path: '',
+ redirectTo: '/keymap',
+ pathMatch: 'full'
+ },
+ {
+ path: 'keymap',
+ component: edit_1.KeymapEditComponent,
+ canActivate: [edit_1.KeymapEditGuard]
+ },
+ {
+ path: 'keymap/add',
+ component: keymap_add_component_1.KeymapAddComponent
+ },
+ {
+ path: 'keymap/:abbr',
+ component: edit_1.KeymapEditComponent
+ }
+ ];
+
+
+/***/ },
+/* 348 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var keymap_edit_component_1 = __webpack_require__(132);
+ exports.KeymapEditComponent = keymap_edit_component_1.KeymapEditComponent;
+ var keymap_edit_guard_service_1 = __webpack_require__(349);
+ exports.KeymapEditGuard = keymap_edit_guard_service_1.KeymapEditGuard;
+
+
+/***/ },
+/* 349 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var router_1 = __webpack_require__(99);
+ var Observable_1 = __webpack_require__(8);
+ __webpack_require__(336);
+ __webpack_require__(278);
+ __webpack_require__(135);
+ __webpack_require__(138);
+ var store_1 = __webpack_require__(44);
+ var user_configuration_1 = __webpack_require__(141);
+ var KeymapEditGuard = (function () {
+ function KeymapEditGuard(store, router) {
+ this.store = store;
+ this.router = router;
+ }
+ KeymapEditGuard.prototype.canActivate = function () {
+ var _this = this;
+ return this.store
+ .let(user_configuration_1.getKeymaps())
+ .do(function (keymaps) {
+ var defaultKeymap = keymaps.find(function (keymap) { return keymap.isDefault; });
+ _this.router.navigate(['/keymap', defaultKeymap.abbreviation]);
+ })
+ .switchMap(function () { return Observable_1.Observable.of(false); });
+ };
+ return KeymapEditGuard;
+ }());
+ KeymapEditGuard = __decorate([
+ core_1.Injectable(),
+ __metadata("design:paramtypes", [store_1.Store, router_1.Router])
+ ], KeymapEditGuard);
+ exports.KeymapEditGuard = KeymapEditGuard;
+
+
+/***/ },
+/* 350 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ __export(__webpack_require__(351));
+
+
+/***/ },
+/* 351 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var cancelable_directive_1 = __webpack_require__(352);
+ exports.CancelableDirective = cancelable_directive_1.CancelableDirective;
+
+
+/***/ },
+/* 352 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var CancelableDirective = (function () {
+ function CancelableDirective(elementRef, renderer) {
+ this.elementRef = elementRef;
+ this.renderer = renderer;
+ }
+ CancelableDirective.prototype.onFocus = function () {
+ this.originalValue = this.elementRef.nativeElement.value;
+ };
+ CancelableDirective.prototype.onEscape = function () {
+ this.renderer.setElementProperty(this.elementRef.nativeElement, 'value', this.originalValue);
+ this.renderer.invokeElementMethod(this.elementRef.nativeElement, 'blur');
+ };
+ return CancelableDirective;
+ }());
+ __decorate([
+ core_1.HostListener('focus'),
+ __metadata("design:type", Function),
+ __metadata("design:paramtypes", []),
+ __metadata("design:returntype", void 0)
+ ], CancelableDirective.prototype, "onFocus", null);
+ __decorate([
+ core_1.HostListener('keyup.escape'),
+ __metadata("design:type", Function),
+ __metadata("design:paramtypes", []),
+ __metadata("design:returntype", void 0)
+ ], CancelableDirective.prototype, "onEscape", null);
+ CancelableDirective = __decorate([
+ core_1.Directive({
+ selector: '[cancelable]'
+ }),
+ __metadata("design:paramtypes", [core_1.ElementRef, core_1.Renderer])
+ ], CancelableDirective);
+ exports.CancelableDirective = CancelableDirective;
+
+
+/***/ },
+/* 353 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ function __export(m) {
+ for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];
+ }
+ __export(__webpack_require__(354));
+ __export(__webpack_require__(356));
+
+
+/***/ },
+/* 354 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var router_1 = __webpack_require__(99);
+ var effects_1 = __webpack_require__(29);
+ var store_1 = __webpack_require__(44);
+ __webpack_require__(278);
+ __webpack_require__(137);
+ __webpack_require__(355);
+ var actions_1 = __webpack_require__(127);
+ var KeymapEffects = (function () {
+ function KeymapEffects(actions$, router, store) {
+ var _this = this;
+ this.actions$ = actions$;
+ this.router = router;
+ this.store = store;
+ this.addOrDuplicate$ = this.actions$
+ .ofType(actions_1.KeymapActions.ADD, actions_1.KeymapActions.DUPLICATE)
+ .withLatestFrom(this.store)
+ .map(function (latest) { return latest[1].userConfiguration.keymaps; })
+ .do(function (keymaps) {
+ _this.router.navigate(['/keymap', keymaps[keymaps.length - 1].abbreviation]);
+ });
+ this.remove$ = this.actions$
+ .ofType(actions_1.KeymapActions.REMOVE)
+ .withLatestFrom(this.store)
+ .map(function (latest) { return latest[1].userConfiguration.keymaps; })
+ .do(function (keymaps) {
+ if (keymaps.length === 0) {
+ _this.router.navigate(['/keymap/add']);
+ }
+ else {
+ var favourite = keymaps.find(function (keymap) { return keymap.isDefault; });
+ _this.router.navigate(['/keymap', favourite.abbreviation]);
+ }
+ });
+ this.editAbbr$ = this.actions$
+ .ofType(actions_1.KeymapActions.EDIT_ABBR)
+ .map(function (action) { return action.payload.newAbbr; })
+ .do(function (newAbbr) {
+ _this.router.navigate(['/keymap', newAbbr]);
+ });
+ }
+ return KeymapEffects;
+ }());
+ __decorate([
+ effects_1.Effect({ dispatch: false }),
+ __metadata("design:type", Object)
+ ], KeymapEffects.prototype, "addOrDuplicate$", void 0);
+ __decorate([
+ effects_1.Effect({ dispatch: false }),
+ __metadata("design:type", Object)
+ ], KeymapEffects.prototype, "remove$", void 0);
+ __decorate([
+ effects_1.Effect({ dispatch: false }),
+ __metadata("design:type", Object)
+ ], KeymapEffects.prototype, "editAbbr$", void 0);
+ KeymapEffects = __decorate([
+ core_1.Injectable(),
+ __metadata("design:paramtypes", [effects_1.Actions, router_1.Router, store_1.Store])
+ ], KeymapEffects);
+ exports.KeymapEffects = KeymapEffects;
+
+
+/***/ },
+/* 355 */,
+/* 356 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var router_1 = __webpack_require__(99);
+ var effects_1 = __webpack_require__(29);
+ var store_1 = __webpack_require__(44);
+ __webpack_require__(278);
+ __webpack_require__(137);
+ __webpack_require__(355);
+ var actions_1 = __webpack_require__(127);
+ var MacroEffects = (function () {
+ function MacroEffects(actions$, router, store) {
+ var _this = this;
+ this.actions$ = actions$;
+ this.router = router;
+ this.store = store;
+ this.remove$ = this.actions$
+ .ofType(actions_1.MacroActions.REMOVE)
+ .map(function (action) { return _this.store.dispatch(actions_1.KeymapActions.checkMacro(action.payload)); })
+ .withLatestFrom(this.store)
+ .map(function (latest) { return latest[1].userConfiguration.macros; })
+ .do(function (macros) {
+ if (macros.length === 0) {
+ _this.router.navigate(['/macro']);
+ }
+ else {
+ _this.router.navigate(['/macro', macros[0].id]);
+ }
+ });
+ this.add$ = this.actions$
+ .ofType(actions_1.MacroActions.ADD)
+ .withLatestFrom(this.store)
+ .map(function (latest) { return latest[1].userConfiguration.macros; })
+ .map(function (macros) { return macros[macros.length - 1]; })
+ .do(function (lastMacro) {
+ _this.router.navigate(['/macro', lastMacro.id, 'new']);
+ });
+ }
+ return MacroEffects;
+ }());
+ __decorate([
+ effects_1.Effect({ dispatch: false }),
+ __metadata("design:type", Object)
+ ], MacroEffects.prototype, "remove$", void 0);
+ __decorate([
+ effects_1.Effect({ dispatch: false }),
+ __metadata("design:type", Object)
+ ], MacroEffects.prototype, "add$", void 0);
+ MacroEffects = __decorate([
+ core_1.Injectable(),
+ __metadata("design:paramtypes", [effects_1.Actions, router_1.Router, store_1.Store])
+ ], MacroEffects);
+ exports.MacroEffects = MacroEffects;
+
+
+/***/ },
+/* 357 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var user_configuration_1 = __webpack_require__(141);
+ exports.userConfigurationReducer = user_configuration_1.default;
+ exports.getUserConfiguration = user_configuration_1.getUserConfiguration;
+ var preset_1 = __webpack_require__(358);
+ exports.presetReducer = preset_1.default;
+
+
+/***/ },
+/* 358 */
+/***/ function(module, exports) {
+
+ "use strict";
+ var initialState = [];
+ function default_1(state) {
+ if (state === void 0) { state = initialState; }
+ return state;
+ }
+ Object.defineProperty(exports, "__esModule", { value: true });
+ exports.default = default_1;
+
+
+/***/ },
+/* 359 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
+ };
+ var __metadata = (this && this.__metadata) || function (k, v) {
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
+ };
+ var core_1 = __webpack_require__(4);
+ var Keymap_1 = __webpack_require__(158);
+ var UserConfiguration_1 = __webpack_require__(172);
+ var electron_1 = __webpack_require__(360);
+ var local_1 = __webpack_require__(361);
+ var DataStorage = (function () {
+ function DataStorage() {
+ this.initUHKJson();
+ this.detectEnvironment();
+ }
+ DataStorage.prototype.initialState = function () {
+ var config = this.getConfiguration();
+ return {
+ userConfiguration: config,
+ presetKeymaps: this.uhkPresets
+ };
+ };
+ DataStorage.prototype.detectEnvironment = function () {
+ // Electron
+ // TODO check if we can remove when electron will be implemented (maybe use process.versions['electron'])
+ if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {
+ this._environment = new electron_1.Electron();
+ }
+ else {
+ this._environment = new local_1.Local(this.defaultUserConfiguration.dataModelVersion);
+ }
+ };
+ // TODO: Add type for state
+ DataStorage.prototype.saveState = function (reducer) {
+ var _this = this;
+ return function (state, action) {
+ var nextState = reducer(state, action);
+ _this._environment.saveConfig(nextState);
+ return nextState;
+ };
+ };
+ DataStorage.prototype.initUHKJson = function () {
+ this.defaultUserConfiguration = new UserConfiguration_1.UserConfiguration()
+ .fromJsonObject(__webpack_require__(362));
+ this.uhkPresets = __webpack_require__(363)
+ .map(function (keymap) { return new Keymap_1.Keymap().fromJsonObject(keymap); });
+ };
+ DataStorage.prototype.getConfiguration = function () {
+ var config = this._environment.getConfig();
+ if (!config) {
+ config = this.defaultUserConfiguration;
+ }
+ return config;
+ };
+ return DataStorage;
+ }());
+ DataStorage = __decorate([
+ core_1.Injectable(),
+ __metadata("design:paramtypes", [])
+ ], DataStorage);
+ exports.DataStorage = DataStorage;
+
+
+/***/ },
+/* 360 */
+/***/ function(module, exports) {
+
+ "use strict";
+ var Electron = (function () {
+ function Electron() {
+ }
+ Electron.prototype.getConfig = function () {
+ // TODO implement load logic
+ return;
+ };
+ /* tslint:disable:no-unused-variable */
+ Electron.prototype.saveConfig = function (config) {
+ // TODO implement save logic
+ };
+ return Electron;
+ }());
+ exports.Electron = Electron;
+
+
+/***/ },
+/* 361 */
+/***/ function(module, exports, __webpack_require__) {
+
+ "use strict";
+ var UserConfiguration_1 = __webpack_require__(172);
+ var Local = (function () {
+ function Local(dataModelVersion) {
+ this.dataModelVersion = dataModelVersion;
+ }
+ Local.prototype.getConfig = function () {
+ var configJsonString = localStorage.getItem('config');
+ var config;
+ if (configJsonString) {
+ var configJsonObject = JSON.parse(configJsonString);
+ if (configJsonObject.dataModelVersion === this.dataModelVersion) {
+ config = new UserConfiguration_1.UserConfiguration().fromJsonObject(configJsonObject);
+ }
+ }
+ return config;
+ };
+ Local.prototype.saveConfig = function (config) {
+ localStorage.setItem('config', JSON.stringify(config.toJsonObject()));
+ };
+ return Local;
+ }());
+ exports.Local = Local;
+
+
+/***/ },
+/* 362 */
+/***/ function(module, exports) {
+
+ module.exports = {
+ "dataModelVersion": 3,
+ "moduleConfigurations": [
+ {
+ "id": 1,
+ "initialPointerSpeed": 1,
+ "pointerAcceleration": 5,
+ "maxPointerSpeed": 200
+ }
+ ],
+ "keymaps": [
+ {
+ "isDefault": true,
+ "abbreviation": "QTY",
+ "name": "QWERTY",
+ "description": "",
+ "layers": [
+ {
+ "modules": [
+ {
+ "id": 0,
+ "pointerRole": "move",
+ "keyActions": [
+ {
+ "keyActionType": "keystroke",
+ "scancode": 36
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 37
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 38
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 39
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 45
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 46
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 42
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 28
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 24
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 12
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 18
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 19
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 47
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 48
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 49
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 11
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 13
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 14
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 15
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 51
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 52
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 40
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 17
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 16
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 54
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 55
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 56
+ },
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 32
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 44
+ },
+ {
+ "keyActionType": "switchLayer",
+ "layer": "fn",
+ "toggle": false
+ },
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 64
+ },
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 128
+ },
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 16
+ },
+ {
+ "keyActionType": "switchLayer",
+ "layer": "mod",
+ "toggle": false
+ }
+ ]
+ },
+ {
+ "id": 1,
+ "pointerRole": "move",
+ "keyActions": [
+ {
+ "keyActionType": "keystroke",
+ "scancode": 53
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 30
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 31
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 32
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 33
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 34
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 35
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 43
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 20
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 26
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 8
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 21
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 23
+ },
+ {
+ "keyActionType": "switchLayer",
+ "layer": "mouse",
+ "toggle": false
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 4
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 22
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 7
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 9
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 10
+ },
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 2
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 29
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 27
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 6
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 25
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 5
+ },
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 1
+ },
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 8
+ },
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 4
+ },
+ {
+ "keyActionType": "switchLayer",
+ "layer": "fn",
+ "toggle": false
+ },
+ {
+ "keyActionType": "switchLayer",
+ "layer": "mod",
+ "toggle": false
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 44
+ }
+ ]
+ },
+ {
+ "id": 2,
+ "pointerRole": "scroll",
+ "keyActions": []
+ }
+ ]
+ },
+ {
+ "modules": [
+ {
+ "id": 0,
+ "pointerRole": "none",
+ "keyActions": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "keyActionType": "keystroke",
+ "scancode": 75
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 74
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 82
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 77
+ },
+ null,
+ null,
+ null,
+ null,
+ {
+ "keyActionType": "keystroke",
+ "scancode": 78
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 80
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 81
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 79
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "keyActionType": "switchKeymap",
+ "keymapAbbreviation": "VIM"
+ },
+ null,
+ {
+ "keyActionType": "keystroke",
+ "scancode": 118
+ },
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 32
+ },
+ null,
+ {
+ "keyActionType": "switchLayer",
+ "layer": "fn",
+ "toggle": false
+ },
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 64
+ },
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 128
+ },
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 16
+ },
+ {
+ "keyActionType": "switchLayer",
+ "layer": "mod",
+ "toggle": false
+ }
+ ]
+ },
+ {
+ "id": 1,
+ "pointerRole": "none",
+ "keyActions": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "keyActionType": "switchLayer",
+ "layer": "mouse",
+ "toggle": false
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 2
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 1
+ },
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 8
+ },
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 4
+ },
+ {
+ "keyActionType": "switchLayer",
+ "layer": "fn",
+ "toggle": false
+ },
+ {
+ "keyActionType": "switchLayer",
+ "layer": "mod",
+ "toggle": false
+ },
+ null
+ ]
+ }
+ ]
+ },
+ {
+ "modules": [
+ {
+ "id": 0,
+ "pointerRole": "move",
+ "keyActions": [
+ {
+ "keyActionType": "switchLayer",
+ "layer": "fn",
+ "toggle": true
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "keyActionType": "keystroke",
+ "scancode": 232
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 237
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 233
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "keyActionType": "keystroke",
+ "scancode": 234
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 238
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 235
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "keyActionType": "keystroke",
+ "scancode": 239
+ },
+ null,
+ null,
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 32
+ },
+ null,
+ {
+ "keyActionType": "switchLayer",
+ "layer": "fn",
+ "toggle": false
+ },
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 64
+ },
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 128
+ },
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 16
+ },
+ {
+ "keyActionType": "switchLayer",
+ "layer": "mod",
+ "toggle": true
+ }
+ ]
+ },
+ {
+ "id": 1,
+ "pointerRole": "scroll",
+ "keyActions": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "keyActionType": "switchLayer",
+ "layer": "mouse",
+ "toggle": true
+ },
+ {
+ "keyActionType": "switchLayer",
+ "layer": "mod",
+ "toggle": true
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "keyActionType": "switchLayer",
+ "layer": "mouse",
+ "toggle": true
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 2
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 1
+ },
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 8
+ },
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 4
+ },
+ {
+ "keyActionType": "switchLayer",
+ "layer": "fn",
+ "toggle": false
+ },
+ {
+ "keyActionType": "switchLayer",
+ "layer": "mod",
+ "toggle": true
+ },
+ null
+ ]
+ }
+ ]
+ },
+ {
+ "modules": [
+ {
+ "id": 0,
+ "pointerRole": "move",
+ "keyActions": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "keyActionType": "mouse",
+ "mouseAction": "scrollUp"
+ },
+ null,
+ {
+ "keyActionType": "mouse",
+ "mouseAction": "moveUp"
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "keyActionType": "mouse",
+ "mouseAction": "scrollDown"
+ },
+ {
+ "keyActionType": "mouse",
+ "mouseAction": "moveLeft"
+ },
+ {
+ "keyActionType": "mouse",
+ "mouseAction": "moveDown"
+ },
+ {
+ "keyActionType": "mouse",
+ "mouseAction": "moveRight"
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 64
+ },
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 128
+ },
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 16
+ },
+ null
+ ]
+ },
+ {
+ "id": 1,
+ "pointerRole": "move",
+ "keyActions": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "keyActionType": "switchLayer",
+ "layer": "mouse",
+ "toggle": false
+ },
+ null,
+ {
+ "keyActionType": "mouse",
+ "mouseAction": "rightClick"
+ },
+ {
+ "keyActionType": "mouse",
+ "mouseAction": "middleClick"
+ },
+ {
+ "keyActionType": "mouse",
+ "mouseAction": "leftClick"
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 1
+ },
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 8
+ },
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 4
+ },
+ null,
+ {
+ "keyActionType": "mouse",
+ "mouseAction": "accelerate"
+ },
+ {
+ "keyActionType": "mouse",
+ "mouseAction": "decelerate"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "isDefault": false,
+ "abbreviation": "VIM",
+ "name": "VIM",
+ "description": "",
+ "layers": [
+ {
+ "modules": [
+ {
+ "id": 0,
+ "pointerRole": "move",
+ "keyActions": [
+ {
+ "keyActionType": "mouse",
+ "mouseAction": "scrollDown"
+ },
+ {
+ "keyActionType": "playMacro",
+ "macroIndex": 0
+ },
+ {
+ "keyActionType": "switchKeymap",
+ "keymapAbbreviation": "QTY"
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null
+ ]
+ },
+ {
+ "id": 1,
+ "pointerRole": "scroll",
+ "keyActions": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null
+ ]
+ },
+ {
+ "id": 2,
+ "pointerRole": "move",
+ "keyActions": [
+ {
+ "keyActionType": "keystroke",
+ "scancode": 111
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "modules": [
+ {
+ "id": 0,
+ "pointerRole": "scroll",
+ "keyActions": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null
+ ]
+ },
+ {
+ "id": 1,
+ "pointerRole": "move",
+ "keyActions": [
+ {
+ "keyActionType": "keystroke",
+ "scancode": 111
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null
+ ]
+ }
+ ]
+ },
+ {
+ "modules": [
+ {
+ "id": 0,
+ "pointerRole": "scroll",
+ "keyActions": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null
+ ]
+ },
+ {
+ "id": 1,
+ "pointerRole": "move",
+ "keyActions": [
+ {
+ "keyActionType": "keystroke",
+ "scancode": 111
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null
+ ]
+ }
+ ]
+ },
+ {
+ "modules": [
+ {
+ "id": 0,
+ "pointerRole": "scroll",
+ "keyActions": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null
+ ]
+ },
+ {
+ "id": 1,
+ "pointerRole": "move",
+ "keyActions": [
+ {
+ "keyActionType": "keystroke",
+ "scancode": 111
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "isDefault": false,
+ "abbreviation": "DVR",
+ "name": "DVR",
+ "description": "",
+ "layers": [
+ {
+ "modules": [
+ {
+ "id": 0,
+ "pointerRole": "move",
+ "keyActions": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null
+ ]
+ },
+ {
+ "id": 1,
+ "pointerRole": "move",
+ "keyActions": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null
+ ]
+ }
+ ]
+ },
+ {
+ "modules": [
+ {
+ "id": 0,
+ "pointerRole": "move",
+ "keyActions": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null
+ ]
+ },
+ {
+ "id": 1,
+ "pointerRole": "move",
+ "keyActions": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null
+ ]
+ }
+ ]
+ },
+ {
+ "modules": [
+ {
+ "id": 0,
+ "pointerRole": "move",
+ "keyActions": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null
+ ]
+ },
+ {
+ "id": 1,
+ "pointerRole": "move",
+ "keyActions": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null
+ ]
+ }
+ ]
+ },
+ {
+ "modules": [
+ {
+ "id": 0,
+ "pointerRole": "move",
+ "keyActions": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null
+ ]
+ },
+ {
+ "id": 1,
+ "pointerRole": "move",
+ "keyActions": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ],
+ "macros": [
+ {
+ "isLooped": false,
+ "isPrivate": true,
+ "name": "My address",
+ "macroActions": [
+ {
+ "macroActionType": "key",
+ "action": "press",
+ "scancode": 111
+ },
+ {
+ "macroActionType": "key",
+ "action": "hold",
+ "scancode": 83
+ },
+ {
+ "macroActionType": "key",
+ "action": "release",
+ "scancode": 112
+ },
+ {
+ "macroActionType": "key",
+ "action": "press",
+ "modifierMask": 93
+ },
+ {
+ "macroActionType": "key",
+ "action": "hold",
+ "modifierMask": 101
+ },
+ {
+ "macroActionType": "key",
+ "action": "release",
+ "modifierMask": 133
+ },
+ {
+ "macroActionType": "mouseButton",
+ "action": "press",
+ "mouseButtonsMask": 9
+ },
+ {
+ "macroActionType": "mouseButton",
+ "action": "hold",
+ "mouseButtonsMask": 12
+ },
+ {
+ "macroActionType": "mouseButton",
+ "action": "release",
+ "mouseButtonsMask": 104
+ },
+ {
+ "macroActionType": "moveMouse",
+ "x": -1920,
+ "y": 220
+ },
+ {
+ "macroActionType": "scrollMouse",
+ "x": 0,
+ "y": 20000
+ },
+ {
+ "macroActionType": "delay",
+ "delay": 40000
+ },
+ {
+ "macroActionType": "text",
+ "text": "this is a text"
+ }
+ ]
+ },
+ {
+ "isLooped": true,
+ "isPrivate": true,
+ "name": "Blah Blah blah",
+ "macroActions": [
+ {
+ "macroActionType": "key",
+ "action": "press",
+ "scancode": 111
+ },
+ {
+ "macroActionType": "mouseButton",
+ "action": "release",
+ "mouseButtonsMask": 104
+ },
+ {
+ "macroActionType": "scrollMouse",
+ "x": 0,
+ "y": -20000
+ },
+ {
+ "macroActionType": "delay",
+ "delay": 40000
+ },
+ {
+ "macroActionType": "text",
+ "text": "blahhhhhhh"
+ }
+ ]
+ }
+ ]
+ };
+
+/***/ },
+/* 363 */
+/***/ function(module, exports) {
+
+ module.exports = [
+ {
+ "isDefault": false,
+ "abbreviation": "QTY",
+ "name": "QWERTY",
+ "description": "Maecenas sem dui, ullamcorper consequat pellentesque ut, mattis at velit. Duis scelerisque eleifend gravida. Aenean at mauris rhoncus, dictum mi vitae, semper eros. Quisque maximus est elit, at condimentum ligula consectetur vel. Aenean lorem felis, molestie id ex suscipit, sagittis mollis dui. Phasellus in felis in libero bibendum ornare. Duis vestibulum dolor sed diam tempor vulputate. Curabitur scelerisque pretium ipsum. Phasellus non orci vestibulum, vehicula lectus sit amet, lacinia velit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In diam lacus, cursus at pretium vel, ullamcorper at ante.",
+ "layers": [
+ {
+ "modules": [
+ {
+ "id": 0,
+ "pointerRole": "move",
+ "keyActions": [
+ {
+ "keyActionType": "keystroke",
+ "scancode": 36
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 37
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 38
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 39
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 45
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 46
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 42
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 28
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 24
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 12
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 18
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 19
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 47
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 48
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 49
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 11
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 13
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 14
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 15
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 51
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 52
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 40
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 17
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 16
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 54
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 55
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 56
+ },
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 32
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 44
+ },
+ {
+ "keyActionType": "switchLayer",
+ "layer": "fn",
+ "toggle": false
+ },
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 64
+ },
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 128
+ },
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 16
+ },
+ {
+ "keyActionType": "switchLayer",
+ "layer": "mod",
+ "toggle": false
+ }
+ ]
+ },
+ {
+ "id": 1,
+ "pointerRole": "move",
+ "keyActions": [
+ {
+ "keyActionType": "keystroke",
+ "scancode": 53
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 30
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 31
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 32
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 33
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 34
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 35
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 43
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 20
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 26
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 8
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 21
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 23
+ },
+ {
+ "keyActionType": "switchLayer",
+ "layer": "mouse",
+ "toggle": false
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 4
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 22
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 7
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 9
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 10
+ },
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 2
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 29
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 27
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 6
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 25
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 5
+ },
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 1
+ },
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 8
+ },
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 4
+ },
+ {
+ "keyActionType": "switchLayer",
+ "layer": "fn",
+ "toggle": false
+ },
+ {
+ "keyActionType": "switchLayer",
+ "layer": "mod",
+ "toggle": false
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 44
+ }
+ ]
+ },
+ {
+ "id": 2,
+ "pointerRole": "scroll",
+ "keyActions": []
+ }
+ ]
+ },
+ {
+ "modules": [
+ {
+ "id": 0,
+ "pointerRole": "none",
+ "keyActions": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "keyActionType": "keystroke",
+ "scancode": 75
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 74
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 82
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 77
+ },
+ null,
+ null,
+ null,
+ null,
+ {
+ "keyActionType": "keystroke",
+ "scancode": 78
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 80
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 81
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 79
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "keyActionType": "switchKeymap",
+ "keymapAbbreviation": "VIM"
+ },
+ null,
+ {
+ "keyActionType": "keystroke",
+ "scancode": 118
+ },
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 32
+ },
+ null,
+ {
+ "keyActionType": "switchLayer",
+ "layer": "fn",
+ "toggle": false
+ },
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 64
+ },
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 128
+ },
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 16
+ },
+ {
+ "keyActionType": "switchLayer",
+ "layer": "mod",
+ "toggle": false
+ }
+ ]
+ },
+ {
+ "id": 1,
+ "pointerRole": "none",
+ "keyActions": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "keyActionType": "switchLayer",
+ "layer": "mouse",
+ "toggle": false
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 2
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 1
+ },
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 8
+ },
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 4
+ },
+ {
+ "keyActionType": "switchLayer",
+ "layer": "fn",
+ "toggle": false
+ },
+ {
+ "keyActionType": "switchLayer",
+ "layer": "mod",
+ "toggle": false
+ },
+ null
+ ]
+ }
+ ]
+ },
+ {
+ "modules": [
+ {
+ "id": 0,
+ "pointerRole": "move",
+ "keyActions": [
+ {
+ "keyActionType": "switchLayer",
+ "layer": "fn",
+ "toggle": true
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "keyActionType": "keystroke",
+ "scancode": 232
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 237
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 233
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "keyActionType": "keystroke",
+ "scancode": 234
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 238
+ },
+ {
+ "keyActionType": "keystroke",
+ "scancode": 235
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "keyActionType": "keystroke",
+ "scancode": 239
+ },
+ null,
+ null,
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 32
+ },
+ null,
+ {
+ "keyActionType": "switchLayer",
+ "layer": "fn",
+ "toggle": false
+ },
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 64
+ },
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 128
+ },
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 16
+ },
+ {
+ "keyActionType": "switchLayer",
+ "layer": "mod",
+ "toggle": true
+ }
+ ]
+ },
+ {
+ "id": 1,
+ "pointerRole": "scroll",
+ "keyActions": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "keyActionType": "switchLayer",
+ "layer": "mouse",
+ "toggle": true
+ },
+ {
+ "keyActionType": "switchLayer",
+ "layer": "mod",
+ "toggle": true
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "keyActionType": "switchLayer",
+ "layer": "mouse",
+ "toggle": true
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 2
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 1
+ },
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 8
+ },
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 4
+ },
+ {
+ "keyActionType": "switchLayer",
+ "layer": "fn",
+ "toggle": false
+ },
+ {
+ "keyActionType": "switchLayer",
+ "layer": "mod",
+ "toggle": true
+ },
+ null
+ ]
+ }
+ ]
+ },
+ {
+ "modules": [
+ {
+ "id": 0,
+ "pointerRole": "move",
+ "keyActions": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "keyActionType": "mouse",
+ "mouseAction": "scrollUp"
+ },
+ null,
+ {
+ "keyActionType": "mouse",
+ "mouseAction": "moveUp"
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "keyActionType": "mouse",
+ "mouseAction": "scrollDown"
+ },
+ {
+ "keyActionType": "mouse",
+ "mouseAction": "moveLeft"
+ },
+ {
+ "keyActionType": "mouse",
+ "mouseAction": "moveDown"
+ },
+ {
+ "keyActionType": "mouse",
+ "mouseAction": "moveRight"
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 64
+ },
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 128
+ },
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 16
+ },
+ null
+ ]
+ },
+ {
+ "id": 1,
+ "pointerRole": "move",
+ "keyActions": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "keyActionType": "switchLayer",
+ "layer": "mouse",
+ "toggle": false
+ },
+ null,
+ {
+ "keyActionType": "mouse",
+ "mouseAction": "rightClick"
+ },
+ {
+ "keyActionType": "mouse",
+ "mouseAction": "middleClick"
+ },
+ {
+ "keyActionType": "mouse",
+ "mouseAction": "leftClick"
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 1
+ },
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 8
+ },
+ {
+ "keyActionType": "keystroke",
+ "modifierMask": 4
+ },
+ null,
+ {
+ "keyActionType": "mouse",
+ "mouseAction": "accelerate"
+ },
+ {
+ "keyActionType": "mouse",
+ "mouseAction": "decelerate"
+ }
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "isDefault": false,
+ "abbreviation": "VIM",
+ "name": "VIM",
+ "description": "Phasellus egestas ac tellus id tincidunt. Ut non nisl turpis. Morbi molestie diam elit, et cursus nibh tempus vel. Vestibulum mattis arcu nec nisi dictum, quis facilisis augue rutrum. Fusce vel tristique metus. Nullam pretium elit et enim maximus ornare. Praesent ultrices ligula ut mi convallis, quis ultrices enim venenatis. Aenean interdum odio aliquam quam vestibulum, vel bibendum elit ornare. Morbi leo enim, ullamcorper a bibendum sit amet, ultrices vitae ligula. Etiam consectetur et massa a convallis. Nullam non nisi aliquet, suscipit nulla a, tempor odio. Praesent eu turpis euismod, pellentesque mauris ut, imperdiet felis. Pellentesque vehicula luctus purus, et mattis ante volutpat eu. Quisque venenatis porta odio.",
+ "layers": [
+ {
+ "modules": [
+ {
+ "id": 0,
+ "pointerRole": "move",
+ "keyActions": [
+ {
+ "keyActionType": "mouse",
+ "mouseAction": "scrollDown"
+ },
+ null,
+ {
+ "keyActionType": "switchKeymap",
+ "keymapAbbreviation": "QTY"
+ },
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null
+ ]
+ },
+ {
+ "id": 1,
+ "pointerRole": "scroll",
+ "keyActions": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null
+ ]
+ },
+ {
+ "id": 2,
+ "pointerRole": "move",
+ "keyActions": [
+ {
+ "keyActionType": "keystroke",
+ "scancode": 111
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "modules": [
+ {
+ "id": 0,
+ "pointerRole": "move",
+ "keyActions": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null
+ ]
+ },
+ {
+ "id": 1,
+ "pointerRole": "move",
+ "keyActions": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null
+ ]
+ }
+ ]
+ },
+ {
+ "modules": [
+ {
+ "id": 0,
+ "pointerRole": "move",
+ "keyActions": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null
+ ]
+ },
+ {
+ "id": 1,
+ "pointerRole": "move",
+ "keyActions": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null
+ ]
+ }
+ ]
+ },
+ {
+ "modules": [
+ {
+ "id": 0,
+ "pointerRole": "move",
+ "keyActions": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null
+ ]
+ },
+ {
+ "id": 1,
+ "pointerRole": "move",
+ "keyActions": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "isDefault": false,
+ "abbreviation": "DVR",
+ "name": "DVR",
+ "description": "Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Aenean dictum sollicitudin massa, ut lacinia ipsum. Ut bibendum ipsum ac pulvinar vehicula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam feugiat lobortis lacus, id viverra nisl varius eu. Aliquam vitae eros a augue fermentum ultricies. Nam tempus dui sed ante ultricies bibendum. In ligula velit, aliquet a felis vitae, gravida tincidunt ante. Proin euismod velit odio, at pretium lacus porta egestas. Suspendisse aliquam, lacus accumsan dapibus elementum, orci felis egestas leo, non vulputate lorem turpis nec risus. Curabitur id volutpat orci. Sed aliquet finibus iaculis. In venenatis neque ac dolor posuere, vel vestibulum augue posuere.",
+ "layers": [
+ {
+ "modules": [
+ {
+ "id": 0,
+ "pointerRole": "move",
+ "keyActions": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null
+ ]
+ },
+ {
+ "id": 1,
+ "pointerRole": "move",
+ "keyActions": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null
+ ]
+ }
+ ]
+ },
+ {
+ "modules": [
+ {
+ "id": 0,
+ "pointerRole": "move",
+ "keyActions": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null
+ ]
+ },
+ {
+ "id": 1,
+ "pointerRole": "move",
+ "keyActions": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null
+ ]
+ }
+ ]
+ },
+ {
+ "modules": [
+ {
+ "id": 0,
+ "pointerRole": "move",
+ "keyActions": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null
+ ]
+ },
+ {
+ "id": 1,
+ "pointerRole": "move",
+ "keyActions": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null
+ ]
+ }
+ ]
+ },
+ {
+ "modules": [
+ {
+ "id": 0,
+ "pointerRole": "move",
+ "keyActions": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null
+ ]
+ },
+ {
+ "id": 1,
+ "pointerRole": "move",
+ "keyActions": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null
+ ]
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "isDefault": false,
+ "abbreviation": "EMY",
+ "name": "Empty keymap",
+ "description": "None of the keys are bind to any key action. It is ideal if you want to start creating your keymap from the ground up.",
+ "layers": [
+ {
+ "modules": [
+ {
+ "id": 0,
+ "pointerRole": "move",
+ "keyActions": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null
+ ]
+ },
+ {
+ "id": 1,
+ "pointerRole": "move",
+ "keyActions": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null
+ ]
+ }
+ ]
+ },
+ {
+ "modules": [
+ {
+ "id": 0,
+ "pointerRole": "move",
+ "keyActions": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null
+ ]
+ },
+ {
+ "id": 1,
+ "pointerRole": "move",
+ "keyActions": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null
+ ]
+ }
+ ]
+ },
+ {
+ "modules": [
+ {
+ "id": 0,
+ "pointerRole": "move",
+ "keyActions": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null
+ ]
+ },
+ {
+ "id": 1,
+ "pointerRole": "move",
+ "keyActions": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null
+ ]
+ }
+ ]
+ },
+ {
+ "modules": [
+ {
+ "id": 0,
+ "pointerRole": "move",
+ "keyActions": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null
+ ]
+ },
+ {
+ "id": 1,
+ "pointerRole": "move",
+ "keyActions": [
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null,
+ null
+ ]
+ }
+ ]
+ }
+ ]
+ }
+ ];
+
+/***/ },
+/* 364 */
+/***/ function(module, exports, __webpack_require__) {
+
+ /* WEBPACK VAR INJECTION */(function(process) {var WritableStream = __webpack_require__(365).Writable
+ var inherits = __webpack_require__(386).inherits
+
+ module.exports = BrowserStdout
+
+
+ inherits(BrowserStdout, WritableStream)
+
+ function BrowserStdout(opts) {
+ if (!(this instanceof BrowserStdout)) return new BrowserStdout(opts)
+
+ opts = opts || {}
+ WritableStream.call(this, opts)
+ this.label = (opts.label !== undefined) ? opts.label : 'stdout'
+ }
+
+ BrowserStdout.prototype._write = function(chunks, encoding, cb) {
+ var output = chunks.toString ? chunks.toString() : chunks
+ if (this.label === false) {
+ console.log(output)
+ } else {
+ console.log(this.label+':', output)
+ }
+ process.nextTick(cb)
+ }
+
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1)))
+
+/***/ },
+/* 365 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // Copyright Joyent, Inc. and other Node contributors.
+ //
+ // Permission is hereby granted, free of charge, to any person obtaining a
+ // copy of this software and associated documentation files (the
+ // "Software"), to deal in the Software without restriction, including
+ // without limitation the rights to use, copy, modify, merge, publish,
+ // distribute, sublicense, and/or sell copies of the Software, and to permit
+ // persons to whom the Software is furnished to do so, subject to the
+ // following conditions:
+ //
+ // The above copyright notice and this permission notice shall be included
+ // in all copies or substantial portions of the Software.
+ //
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+ // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+ // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+ // USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ module.exports = Stream;
+
+ var EE = __webpack_require__(366).EventEmitter;
+ var inherits = __webpack_require__(367);
+
+ inherits(Stream, EE);
+ Stream.Readable = __webpack_require__(368);
+ Stream.Writable = __webpack_require__(382);
+ Stream.Duplex = __webpack_require__(383);
+ Stream.Transform = __webpack_require__(384);
+ Stream.PassThrough = __webpack_require__(385);
+
+ // Backwards-compat with node 0.4.x
+ Stream.Stream = Stream;
+
+
+
+ // old-style streams. Note that the pipe method (the only relevant
+ // part of this class) is overridden in the Readable class.
+
+ function Stream() {
+ EE.call(this);
+ }
+
+ Stream.prototype.pipe = function(dest, options) {
+ var source = this;
+
+ function ondata(chunk) {
+ if (dest.writable) {
+ if (false === dest.write(chunk) && source.pause) {
+ source.pause();
+ }
+ }
+ }
+
+ source.on('data', ondata);
+
+ function ondrain() {
+ if (source.readable && source.resume) {
+ source.resume();
+ }
+ }
+
+ dest.on('drain', ondrain);
+
+ // If the 'end' option is not supplied, dest.end() will be called when
+ // source gets the 'end' or 'close' events. Only dest.end() once.
+ if (!dest._isStdio && (!options || options.end !== false)) {
+ source.on('end', onend);
+ source.on('close', onclose);
+ }
+
+ var didOnEnd = false;
+ function onend() {
+ if (didOnEnd) return;
+ didOnEnd = true;
+
+ dest.end();
+ }
+
+
+ function onclose() {
+ if (didOnEnd) return;
+ didOnEnd = true;
+
+ if (typeof dest.destroy === 'function') dest.destroy();
+ }
+
+ // don't leave dangling pipes when there are errors.
+ function onerror(er) {
+ cleanup();
+ if (EE.listenerCount(this, 'error') === 0) {
+ throw er; // Unhandled stream error in pipe.
+ }
+ }
+
+ source.on('error', onerror);
+ dest.on('error', onerror);
+
+ // remove all the event listeners that were added.
+ function cleanup() {
+ source.removeListener('data', ondata);
+ dest.removeListener('drain', ondrain);
+
+ source.removeListener('end', onend);
+ source.removeListener('close', onclose);
+
+ source.removeListener('error', onerror);
+ dest.removeListener('error', onerror);
+
+ source.removeListener('end', cleanup);
+ source.removeListener('close', cleanup);
+
+ dest.removeListener('close', cleanup);
+ }
+
+ source.on('end', cleanup);
+ source.on('close', cleanup);
+
+ dest.on('close', cleanup);
+
+ dest.emit('pipe', source);
+
+ // Allow for unix-like usage: A.pipe(B).pipe(C)
+ return dest;
+ };
+
+
+/***/ },
+/* 366 */
+/***/ function(module, exports) {
+
+ // Copyright Joyent, Inc. and other Node contributors.
+ //
+ // Permission is hereby granted, free of charge, to any person obtaining a
+ // copy of this software and associated documentation files (the
+ // "Software"), to deal in the Software without restriction, including
+ // without limitation the rights to use, copy, modify, merge, publish,
+ // distribute, sublicense, and/or sell copies of the Software, and to permit
+ // persons to whom the Software is furnished to do so, subject to the
+ // following conditions:
+ //
+ // The above copyright notice and this permission notice shall be included
+ // in all copies or substantial portions of the Software.
+ //
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+ // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+ // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+ // USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ function EventEmitter() {
+ this._events = this._events || {};
+ this._maxListeners = this._maxListeners || undefined;
+ }
+ module.exports = EventEmitter;
+
+ // Backwards-compat with node 0.10.x
+ EventEmitter.EventEmitter = EventEmitter;
+
+ EventEmitter.prototype._events = undefined;
+ EventEmitter.prototype._maxListeners = undefined;
+
+ // By default EventEmitters will print a warning if more than 10 listeners are
+ // added to it. This is a useful default which helps finding memory leaks.
+ EventEmitter.defaultMaxListeners = 10;
+
+ // Obviously not all Emitters should be limited to 10. This function allows
+ // that to be increased. Set to zero for unlimited.
+ EventEmitter.prototype.setMaxListeners = function(n) {
+ if (!isNumber(n) || n < 0 || isNaN(n))
+ throw TypeError('n must be a positive number');
+ this._maxListeners = n;
+ return this;
+ };
+
+ EventEmitter.prototype.emit = function(type) {
+ var er, handler, len, args, i, listeners;
+
+ if (!this._events)
+ this._events = {};
+
+ // If there is no 'error' event listener then throw.
+ if (type === 'error') {
+ if (!this._events.error ||
+ (isObject(this._events.error) && !this._events.error.length)) {
+ er = arguments[1];
+ if (er instanceof Error) {
+ throw er; // Unhandled 'error' event
+ } else {
+ // At least give some kind of context to the user
+ var err = new Error('Uncaught, unspecified "error" event. (' + er + ')');
+ err.context = er;
+ throw err;
+ }
+ }
+ }
+
+ handler = this._events[type];
+
+ if (isUndefined(handler))
+ return false;
+
+ if (isFunction(handler)) {
+ switch (arguments.length) {
+ // fast cases
+ case 1:
+ handler.call(this);
+ break;
+ case 2:
+ handler.call(this, arguments[1]);
+ break;
+ case 3:
+ handler.call(this, arguments[1], arguments[2]);
+ break;
+ // slower
+ default:
+ args = Array.prototype.slice.call(arguments, 1);
+ handler.apply(this, args);
+ }
+ } else if (isObject(handler)) {
+ args = Array.prototype.slice.call(arguments, 1);
+ listeners = handler.slice();
+ len = listeners.length;
+ for (i = 0; i < len; i++)
+ listeners[i].apply(this, args);
+ }
+
+ return true;
+ };
+
+ EventEmitter.prototype.addListener = function(type, listener) {
+ var m;
+
+ if (!isFunction(listener))
+ throw TypeError('listener must be a function');
+
+ if (!this._events)
+ this._events = {};
+
+ // To avoid recursion in the case that type === "newListener"! Before
+ // adding it to the listeners, first emit "newListener".
+ if (this._events.newListener)
+ this.emit('newListener', type,
+ isFunction(listener.listener) ?
+ listener.listener : listener);
+
+ if (!this._events[type])
+ // Optimize the case of one listener. Don't need the extra array object.
+ this._events[type] = listener;
+ else if (isObject(this._events[type]))
+ // If we've already got an array, just append.
+ this._events[type].push(listener);
+ else
+ // Adding the second element, need to change to array.
+ this._events[type] = [this._events[type], listener];
+
+ // Check for listener leak
+ if (isObject(this._events[type]) && !this._events[type].warned) {
+ if (!isUndefined(this._maxListeners)) {
+ m = this._maxListeners;
+ } else {
+ m = EventEmitter.defaultMaxListeners;
+ }
+
+ if (m && m > 0 && this._events[type].length > m) {
+ this._events[type].warned = true;
+ console.error('(node) warning: possible EventEmitter memory ' +
+ 'leak detected. %d listeners added. ' +
+ 'Use emitter.setMaxListeners() to increase limit.',
+ this._events[type].length);
+ if (typeof console.trace === 'function') {
+ // not supported in IE 10
+ console.trace();
+ }
+ }
+ }
+
+ return this;
+ };
+
+ EventEmitter.prototype.on = EventEmitter.prototype.addListener;
+
+ EventEmitter.prototype.once = function(type, listener) {
+ if (!isFunction(listener))
+ throw TypeError('listener must be a function');
+
+ var fired = false;
+
+ function g() {
+ this.removeListener(type, g);
+
+ if (!fired) {
+ fired = true;
+ listener.apply(this, arguments);
+ }
+ }
+
+ g.listener = listener;
+ this.on(type, g);
+
+ return this;
+ };
+
+ // emits a 'removeListener' event iff the listener was removed
+ EventEmitter.prototype.removeListener = function(type, listener) {
+ var list, position, length, i;
+
+ if (!isFunction(listener))
+ throw TypeError('listener must be a function');
+
+ if (!this._events || !this._events[type])
+ return this;
+
+ list = this._events[type];
+ length = list.length;
+ position = -1;
+
+ if (list === listener ||
+ (isFunction(list.listener) && list.listener === listener)) {
+ delete this._events[type];
+ if (this._events.removeListener)
+ this.emit('removeListener', type, listener);
+
+ } else if (isObject(list)) {
+ for (i = length; i-- > 0;) {
+ if (list[i] === listener ||
+ (list[i].listener && list[i].listener === listener)) {
+ position = i;
+ break;
+ }
+ }
+
+ if (position < 0)
+ return this;
+
+ if (list.length === 1) {
+ list.length = 0;
+ delete this._events[type];
+ } else {
+ list.splice(position, 1);
+ }
+
+ if (this._events.removeListener)
+ this.emit('removeListener', type, listener);
+ }
+
+ return this;
+ };
+
+ EventEmitter.prototype.removeAllListeners = function(type) {
+ var key, listeners;
+
+ if (!this._events)
+ return this;
+
+ // not listening for removeListener, no need to emit
+ if (!this._events.removeListener) {
+ if (arguments.length === 0)
+ this._events = {};
+ else if (this._events[type])
+ delete this._events[type];
+ return this;
+ }
+
+ // emit removeListener for all listeners on all events
+ if (arguments.length === 0) {
+ for (key in this._events) {
+ if (key === 'removeListener') continue;
+ this.removeAllListeners(key);
+ }
+ this.removeAllListeners('removeListener');
+ this._events = {};
+ return this;
+ }
+
+ listeners = this._events[type];
+
+ if (isFunction(listeners)) {
+ this.removeListener(type, listeners);
+ } else if (listeners) {
+ // LIFO order
+ while (listeners.length)
+ this.removeListener(type, listeners[listeners.length - 1]);
+ }
+ delete this._events[type];
+
+ return this;
+ };
+
+ EventEmitter.prototype.listeners = function(type) {
+ var ret;
+ if (!this._events || !this._events[type])
+ ret = [];
+ else if (isFunction(this._events[type]))
+ ret = [this._events[type]];
+ else
+ ret = this._events[type].slice();
+ return ret;
+ };
+
+ EventEmitter.prototype.listenerCount = function(type) {
+ if (this._events) {
+ var evlistener = this._events[type];
+
+ if (isFunction(evlistener))
+ return 1;
+ else if (evlistener)
+ return evlistener.length;
+ }
+ return 0;
+ };
+
+ EventEmitter.listenerCount = function(emitter, type) {
+ return emitter.listenerCount(type);
+ };
+
+ function isFunction(arg) {
+ return typeof arg === 'function';
+ }
+
+ function isNumber(arg) {
+ return typeof arg === 'number';
+ }
+
+ function isObject(arg) {
+ return typeof arg === 'object' && arg !== null;
+ }
+
+ function isUndefined(arg) {
+ return arg === void 0;
+ }
+
+
+/***/ },
+/* 367 */
+/***/ function(module, exports) {
+
+ if (typeof Object.create === 'function') {
+ // implementation from standard node.js 'util' module
+ module.exports = function inherits(ctor, superCtor) {
+ ctor.super_ = superCtor
+ ctor.prototype = Object.create(superCtor.prototype, {
+ constructor: {
+ value: ctor,
+ enumerable: false,
+ writable: true,
+ configurable: true
+ }
+ });
+ };
+ } else {
+ // old school shim for old browsers
+ module.exports = function inherits(ctor, superCtor) {
+ ctor.super_ = superCtor
+ var TempCtor = function () {}
+ TempCtor.prototype = superCtor.prototype
+ ctor.prototype = new TempCtor()
+ ctor.prototype.constructor = ctor
+ }
+ }
+
+
+/***/ },
+/* 368 */
+/***/ function(module, exports, __webpack_require__) {
+
+ /* WEBPACK VAR INJECTION */(function(process) {var Stream = (function (){
+ try {
+ return __webpack_require__(365); // hack to fix a circular dependency issue when used with browserify
+ } catch(_){}
+ }());
+ exports = module.exports = __webpack_require__(369);
+ exports.Stream = Stream || exports;
+ exports.Readable = exports;
+ exports.Writable = __webpack_require__(377);
+ exports.Duplex = __webpack_require__(376);
+ exports.Transform = __webpack_require__(380);
+ exports.PassThrough = __webpack_require__(381);
+
+ if (!process.browser && process.env.READABLE_STREAM === 'disable' && Stream) {
+ module.exports = Stream;
+ }
+
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1)))
+
+/***/ },
+/* 369 */
+/***/ function(module, exports, __webpack_require__) {
+
+ /* WEBPACK VAR INJECTION */(function(process) {'use strict';
+
+ module.exports = Readable;
+
+ /**/
+ var processNextTick = __webpack_require__(370);
+ /* */
+
+ /**/
+ var isArray = __webpack_require__(157);
+ /* */
+
+ /**/
+ var Duplex;
+ /* */
+
+ Readable.ReadableState = ReadableState;
+
+ /**/
+ var EE = __webpack_require__(366).EventEmitter;
+
+ var EElistenerCount = function (emitter, type) {
+ return emitter.listeners(type).length;
+ };
+ /* */
+
+ /**/
+ var Stream;
+ (function () {
+ try {
+ Stream = __webpack_require__(365);
+ } catch (_) {} finally {
+ if (!Stream) Stream = __webpack_require__(366).EventEmitter;
+ }
+ })();
+ /* */
+
+ var Buffer = __webpack_require__(371).Buffer;
+ /**/
+ var bufferShim = __webpack_require__(372);
+ /* */
+
+ /**/
+ var util = __webpack_require__(373);
+ util.inherits = __webpack_require__(367);
+ /* */
+
+ /**/
+ var debugUtil = __webpack_require__(374);
+ var debug = void 0;
+ if (debugUtil && debugUtil.debuglog) {
+ debug = debugUtil.debuglog('stream');
+ } else {
+ debug = function () {};
+ }
+ /* */
+
+ var BufferList = __webpack_require__(375);
+ var StringDecoder;
+
+ util.inherits(Readable, Stream);
+
+ function prependListener(emitter, event, fn) {
+ // Sadly this is not cacheable as some libraries bundle their own
+ // event emitter implementation with them.
+ if (typeof emitter.prependListener === 'function') {
+ return emitter.prependListener(event, fn);
+ } else {
+ // This is a hack to make sure that our error handler is attached before any
+ // userland ones. NEVER DO THIS. This is here only because this code needs
+ // to continue to work with older versions of Node.js that do not include
+ // the prependListener() method. The goal is to eventually remove this hack.
+ if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];
+ }
+ }
+
+ function ReadableState(options, stream) {
+ Duplex = Duplex || __webpack_require__(376);
+
+ options = options || {};
+
+ // object stream flag. Used to make read(n) ignore n and to
+ // make all the buffer merging and length checks go away
+ this.objectMode = !!options.objectMode;
+
+ if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;
+
+ // the point at which it stops calling _read() to fill the buffer
+ // Note: 0 is a valid value, means "don't call _read preemptively ever"
+ var hwm = options.highWaterMark;
+ var defaultHwm = this.objectMode ? 16 : 16 * 1024;
+ this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
+
+ // cast to ints.
+ this.highWaterMark = ~ ~this.highWaterMark;
+
+ // A linked list is used to store data chunks instead of an array because the
+ // linked list can remove elements from the beginning faster than
+ // array.shift()
+ this.buffer = new BufferList();
+ this.length = 0;
+ this.pipes = null;
+ this.pipesCount = 0;
+ this.flowing = null;
+ this.ended = false;
+ this.endEmitted = false;
+ this.reading = false;
+
+ // a flag to be able to tell if the onwrite cb is called immediately,
+ // or on a later tick. We set this to true at first, because any
+ // actions that shouldn't happen until "later" should generally also
+ // not happen before the first write call.
+ this.sync = true;
+
+ // whenever we return null, then we set a flag to say
+ // that we're awaiting a 'readable' event emission.
+ this.needReadable = false;
+ this.emittedReadable = false;
+ this.readableListening = false;
+ this.resumeScheduled = false;
+
+ // Crypto is kind of old and crusty. Historically, its default string
+ // encoding is 'binary' so we have to make this configurable.
+ // Everything else in the universe uses 'utf8', though.
+ this.defaultEncoding = options.defaultEncoding || 'utf8';
+
+ // when piping, we only care about 'readable' events that happen
+ // after read()ing all the bytes and not getting any pushback.
+ this.ranOut = false;
+
+ // the number of writers that are awaiting a drain event in .pipe()s
+ this.awaitDrain = 0;
+
+ // if true, a maybeReadMore has been scheduled
+ this.readingMore = false;
+
+ this.decoder = null;
+ this.encoding = null;
+ if (options.encoding) {
+ if (!StringDecoder) StringDecoder = __webpack_require__(379).StringDecoder;
+ this.decoder = new StringDecoder(options.encoding);
+ this.encoding = options.encoding;
+ }
+ }
+
+ function Readable(options) {
+ Duplex = Duplex || __webpack_require__(376);
+
+ if (!(this instanceof Readable)) return new Readable(options);
+
+ this._readableState = new ReadableState(options, this);
+
+ // legacy
+ this.readable = true;
+
+ if (options && typeof options.read === 'function') this._read = options.read;
+
+ Stream.call(this);
+ }
+
+ // Manually shove something into the read() buffer.
+ // This returns true if the highWaterMark has not been hit yet,
+ // similar to how Writable.write() returns true if you should
+ // write() some more.
+ Readable.prototype.push = function (chunk, encoding) {
+ var state = this._readableState;
+
+ if (!state.objectMode && typeof chunk === 'string') {
+ encoding = encoding || state.defaultEncoding;
+ if (encoding !== state.encoding) {
+ chunk = bufferShim.from(chunk, encoding);
+ encoding = '';
+ }
+ }
+
+ return readableAddChunk(this, state, chunk, encoding, false);
+ };
+
+ // Unshift should *always* be something directly out of read()
+ Readable.prototype.unshift = function (chunk) {
+ var state = this._readableState;
+ return readableAddChunk(this, state, chunk, '', true);
+ };
+
+ Readable.prototype.isPaused = function () {
+ return this._readableState.flowing === false;
+ };
+
+ function readableAddChunk(stream, state, chunk, encoding, addToFront) {
+ var er = chunkInvalid(state, chunk);
+ if (er) {
+ stream.emit('error', er);
+ } else if (chunk === null) {
+ state.reading = false;
+ onEofChunk(stream, state);
+ } else if (state.objectMode || chunk && chunk.length > 0) {
+ if (state.ended && !addToFront) {
+ var e = new Error('stream.push() after EOF');
+ stream.emit('error', e);
+ } else if (state.endEmitted && addToFront) {
+ var _e = new Error('stream.unshift() after end event');
+ stream.emit('error', _e);
+ } else {
+ var skipAdd;
+ if (state.decoder && !addToFront && !encoding) {
+ chunk = state.decoder.write(chunk);
+ skipAdd = !state.objectMode && chunk.length === 0;
+ }
+
+ if (!addToFront) state.reading = false;
+
+ // Don't add to the buffer if we've decoded to an empty string chunk and
+ // we're not in object mode
+ if (!skipAdd) {
+ // if we want the data now, just emit it.
+ if (state.flowing && state.length === 0 && !state.sync) {
+ stream.emit('data', chunk);
+ stream.read(0);
+ } else {
+ // update the buffer info.
+ state.length += state.objectMode ? 1 : chunk.length;
+ if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);
+
+ if (state.needReadable) emitReadable(stream);
+ }
+ }
+
+ maybeReadMore(stream, state);
+ }
+ } else if (!addToFront) {
+ state.reading = false;
+ }
+
+ return needMoreData(state);
+ }
+
+ // if it's past the high water mark, we can push in some more.
+ // Also, if we have no data yet, we can stand some
+ // more bytes. This is to work around cases where hwm=0,
+ // such as the repl. Also, if the push() triggered a
+ // readable event, and the user called read(largeNumber) such that
+ // needReadable was set, then we ought to push more, so that another
+ // 'readable' event will be triggered.
+ function needMoreData(state) {
+ return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);
+ }
+
+ // backwards compatibility.
+ Readable.prototype.setEncoding = function (enc) {
+ if (!StringDecoder) StringDecoder = __webpack_require__(379).StringDecoder;
+ this._readableState.decoder = new StringDecoder(enc);
+ this._readableState.encoding = enc;
+ return this;
+ };
+
+ // Don't raise the hwm > 8MB
+ var MAX_HWM = 0x800000;
+ function computeNewHighWaterMark(n) {
+ if (n >= MAX_HWM) {
+ n = MAX_HWM;
+ } else {
+ // Get the next highest power of 2 to prevent increasing hwm excessively in
+ // tiny amounts
+ n--;
+ n |= n >>> 1;
+ n |= n >>> 2;
+ n |= n >>> 4;
+ n |= n >>> 8;
+ n |= n >>> 16;
+ n++;
+ }
+ return n;
+ }
+
+ // This function is designed to be inlinable, so please take care when making
+ // changes to the function body.
+ function howMuchToRead(n, state) {
+ if (n <= 0 || state.length === 0 && state.ended) return 0;
+ if (state.objectMode) return 1;
+ if (n !== n) {
+ // Only flow one buffer at a time
+ if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;
+ }
+ // If we're asking for more than the current hwm, then raise the hwm.
+ if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);
+ if (n <= state.length) return n;
+ // Don't have enough
+ if (!state.ended) {
+ state.needReadable = true;
+ return 0;
+ }
+ return state.length;
+ }
+
+ // you can override either this method, or the async _read(n) below.
+ Readable.prototype.read = function (n) {
+ debug('read', n);
+ n = parseInt(n, 10);
+ var state = this._readableState;
+ var nOrig = n;
+
+ if (n !== 0) state.emittedReadable = false;
+
+ // if we're doing read(0) to trigger a readable event, but we
+ // already have a bunch of data in the buffer, then just trigger
+ // the 'readable' event and move on.
+ if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {
+ debug('read: emitReadable', state.length, state.ended);
+ if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);
+ return null;
+ }
+
+ n = howMuchToRead(n, state);
+
+ // if we've ended, and we're now clear, then finish it up.
+ if (n === 0 && state.ended) {
+ if (state.length === 0) endReadable(this);
+ return null;
+ }
+
+ // All the actual chunk generation logic needs to be
+ // *below* the call to _read. The reason is that in certain
+ // synthetic stream cases, such as passthrough streams, _read
+ // may be a completely synchronous operation which may change
+ // the state of the read buffer, providing enough data when
+ // before there was *not* enough.
+ //
+ // So, the steps are:
+ // 1. Figure out what the state of things will be after we do
+ // a read from the buffer.
+ //
+ // 2. If that resulting state will trigger a _read, then call _read.
+ // Note that this may be asynchronous, or synchronous. Yes, it is
+ // deeply ugly to write APIs this way, but that still doesn't mean
+ // that the Readable class should behave improperly, as streams are
+ // designed to be sync/async agnostic.
+ // Take note if the _read call is sync or async (ie, if the read call
+ // has returned yet), so that we know whether or not it's safe to emit
+ // 'readable' etc.
+ //
+ // 3. Actually pull the requested chunks out of the buffer and return.
+
+ // if we need a readable event, then we need to do some reading.
+ var doRead = state.needReadable;
+ debug('need readable', doRead);
+
+ // if we currently have less than the highWaterMark, then also read some
+ if (state.length === 0 || state.length - n < state.highWaterMark) {
+ doRead = true;
+ debug('length less than watermark', doRead);
+ }
+
+ // however, if we've ended, then there's no point, and if we're already
+ // reading, then it's unnecessary.
+ if (state.ended || state.reading) {
+ doRead = false;
+ debug('reading or ended', doRead);
+ } else if (doRead) {
+ debug('do read');
+ state.reading = true;
+ state.sync = true;
+ // if the length is currently zero, then we *need* a readable event.
+ if (state.length === 0) state.needReadable = true;
+ // call internal read method
+ this._read(state.highWaterMark);
+ state.sync = false;
+ // If _read pushed data synchronously, then `reading` will be false,
+ // and we need to re-evaluate how much data we can return to the user.
+ if (!state.reading) n = howMuchToRead(nOrig, state);
+ }
+
+ var ret;
+ if (n > 0) ret = fromList(n, state);else ret = null;
+
+ if (ret === null) {
+ state.needReadable = true;
+ n = 0;
+ } else {
+ state.length -= n;
+ }
+
+ if (state.length === 0) {
+ // If we have nothing in the buffer, then we want to know
+ // as soon as we *do* get something into the buffer.
+ if (!state.ended) state.needReadable = true;
+
+ // If we tried to read() past the EOF, then emit end on the next tick.
+ if (nOrig !== n && state.ended) endReadable(this);
+ }
+
+ if (ret !== null) this.emit('data', ret);
+
+ return ret;
+ };
+
+ function chunkInvalid(state, chunk) {
+ var er = null;
+ if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) {
+ er = new TypeError('Invalid non-string/buffer chunk');
+ }
+ return er;
+ }
+
+ function onEofChunk(stream, state) {
+ if (state.ended) return;
+ if (state.decoder) {
+ var chunk = state.decoder.end();
+ if (chunk && chunk.length) {
+ state.buffer.push(chunk);
+ state.length += state.objectMode ? 1 : chunk.length;
+ }
+ }
+ state.ended = true;
+
+ // emit 'readable' now to make sure it gets picked up.
+ emitReadable(stream);
+ }
+
+ // Don't emit readable right away in sync mode, because this can trigger
+ // another read() call => stack overflow. This way, it might trigger
+ // a nextTick recursion warning, but that's not so bad.
+ function emitReadable(stream) {
+ var state = stream._readableState;
+ state.needReadable = false;
+ if (!state.emittedReadable) {
+ debug('emitReadable', state.flowing);
+ state.emittedReadable = true;
+ if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);
+ }
+ }
+
+ function emitReadable_(stream) {
+ debug('emit readable');
+ stream.emit('readable');
+ flow(stream);
+ }
+
+ // at this point, the user has presumably seen the 'readable' event,
+ // and called read() to consume some data. that may have triggered
+ // in turn another _read(n) call, in which case reading = true if
+ // it's in progress.
+ // However, if we're not ended, or reading, and the length < hwm,
+ // then go ahead and try to read some more preemptively.
+ function maybeReadMore(stream, state) {
+ if (!state.readingMore) {
+ state.readingMore = true;
+ processNextTick(maybeReadMore_, stream, state);
+ }
+ }
+
+ function maybeReadMore_(stream, state) {
+ var len = state.length;
+ while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {
+ debug('maybeReadMore read 0');
+ stream.read(0);
+ if (len === state.length)
+ // didn't get any data, stop spinning.
+ break;else len = state.length;
+ }
+ state.readingMore = false;
+ }
+
+ // abstract method. to be overridden in specific implementation classes.
+ // call cb(er, data) where data is <= n in length.
+ // for virtual (non-string, non-buffer) streams, "length" is somewhat
+ // arbitrary, and perhaps not very meaningful.
+ Readable.prototype._read = function (n) {
+ this.emit('error', new Error('_read() is not implemented'));
+ };
+
+ Readable.prototype.pipe = function (dest, pipeOpts) {
+ var src = this;
+ var state = this._readableState;
+
+ switch (state.pipesCount) {
+ case 0:
+ state.pipes = dest;
+ break;
+ case 1:
+ state.pipes = [state.pipes, dest];
+ break;
+ default:
+ state.pipes.push(dest);
+ break;
+ }
+ state.pipesCount += 1;
+ debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);
+
+ var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;
+
+ var endFn = doEnd ? onend : cleanup;
+ if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);
+
+ dest.on('unpipe', onunpipe);
+ function onunpipe(readable) {
+ debug('onunpipe');
+ if (readable === src) {
+ cleanup();
+ }
+ }
+
+ function onend() {
+ debug('onend');
+ dest.end();
+ }
+
+ // when the dest drains, it reduces the awaitDrain counter
+ // on the source. This would be more elegant with a .once()
+ // handler in flow(), but adding and removing repeatedly is
+ // too slow.
+ var ondrain = pipeOnDrain(src);
+ dest.on('drain', ondrain);
+
+ var cleanedUp = false;
+ function cleanup() {
+ debug('cleanup');
+ // cleanup event handlers once the pipe is broken
+ dest.removeListener('close', onclose);
+ dest.removeListener('finish', onfinish);
+ dest.removeListener('drain', ondrain);
+ dest.removeListener('error', onerror);
+ dest.removeListener('unpipe', onunpipe);
+ src.removeListener('end', onend);
+ src.removeListener('end', cleanup);
+ src.removeListener('data', ondata);
+
+ cleanedUp = true;
+
+ // if the reader is waiting for a drain event from this
+ // specific writer, then it would cause it to never start
+ // flowing again.
+ // So, if this is awaiting a drain, then we just call it now.
+ // If we don't know, then assume that we are waiting for one.
+ if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();
+ }
+
+ // If the user pushes more data while we're writing to dest then we'll end up
+ // in ondata again. However, we only want to increase awaitDrain once because
+ // dest will only emit one 'drain' event for the multiple writes.
+ // => Introduce a guard on increasing awaitDrain.
+ var increasedAwaitDrain = false;
+ src.on('data', ondata);
+ function ondata(chunk) {
+ debug('ondata');
+ increasedAwaitDrain = false;
+ var ret = dest.write(chunk);
+ if (false === ret && !increasedAwaitDrain) {
+ // If the user unpiped during `dest.write()`, it is possible
+ // to get stuck in a permanently paused state if that write
+ // also returned false.
+ // => Check whether `dest` is still a piping destination.
+ if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {
+ debug('false write response, pause', src._readableState.awaitDrain);
+ src._readableState.awaitDrain++;
+ increasedAwaitDrain = true;
+ }
+ src.pause();
+ }
+ }
+
+ // if the dest has an error, then stop piping into it.
+ // however, don't suppress the throwing behavior for this.
+ function onerror(er) {
+ debug('onerror', er);
+ unpipe();
+ dest.removeListener('error', onerror);
+ if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);
+ }
+
+ // Make sure our error handler is attached before userland ones.
+ prependListener(dest, 'error', onerror);
+
+ // Both close and finish should trigger unpipe, but only once.
+ function onclose() {
+ dest.removeListener('finish', onfinish);
+ unpipe();
+ }
+ dest.once('close', onclose);
+ function onfinish() {
+ debug('onfinish');
+ dest.removeListener('close', onclose);
+ unpipe();
+ }
+ dest.once('finish', onfinish);
+
+ function unpipe() {
+ debug('unpipe');
+ src.unpipe(dest);
+ }
+
+ // tell the dest that it's being piped to
+ dest.emit('pipe', src);
+
+ // start the flow if it hasn't been started already.
+ if (!state.flowing) {
+ debug('pipe resume');
+ src.resume();
+ }
+
+ return dest;
+ };
+
+ function pipeOnDrain(src) {
+ return function () {
+ var state = src._readableState;
+ debug('pipeOnDrain', state.awaitDrain);
+ if (state.awaitDrain) state.awaitDrain--;
+ if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {
+ state.flowing = true;
+ flow(src);
+ }
+ };
+ }
+
+ Readable.prototype.unpipe = function (dest) {
+ var state = this._readableState;
+
+ // if we're not piping anywhere, then do nothing.
+ if (state.pipesCount === 0) return this;
+
+ // just one destination. most common case.
+ if (state.pipesCount === 1) {
+ // passed in one, but it's not the right one.
+ if (dest && dest !== state.pipes) return this;
+
+ if (!dest) dest = state.pipes;
+
+ // got a match.
+ state.pipes = null;
+ state.pipesCount = 0;
+ state.flowing = false;
+ if (dest) dest.emit('unpipe', this);
+ return this;
+ }
+
+ // slow case. multiple pipe destinations.
+
+ if (!dest) {
+ // remove all.
+ var dests = state.pipes;
+ var len = state.pipesCount;
+ state.pipes = null;
+ state.pipesCount = 0;
+ state.flowing = false;
+
+ for (var i = 0; i < len; i++) {
+ dests[i].emit('unpipe', this);
+ }return this;
+ }
+
+ // try to find the right one.
+ var index = indexOf(state.pipes, dest);
+ if (index === -1) return this;
+
+ state.pipes.splice(index, 1);
+ state.pipesCount -= 1;
+ if (state.pipesCount === 1) state.pipes = state.pipes[0];
+
+ dest.emit('unpipe', this);
+
+ return this;
+ };
+
+ // set up data events if they are asked for
+ // Ensure readable listeners eventually get something
+ Readable.prototype.on = function (ev, fn) {
+ var res = Stream.prototype.on.call(this, ev, fn);
+
+ if (ev === 'data') {
+ // Start flowing on next tick if stream isn't explicitly paused
+ if (this._readableState.flowing !== false) this.resume();
+ } else if (ev === 'readable') {
+ var state = this._readableState;
+ if (!state.endEmitted && !state.readableListening) {
+ state.readableListening = state.needReadable = true;
+ state.emittedReadable = false;
+ if (!state.reading) {
+ processNextTick(nReadingNextTick, this);
+ } else if (state.length) {
+ emitReadable(this, state);
+ }
+ }
+ }
+
+ return res;
+ };
+ Readable.prototype.addListener = Readable.prototype.on;
+
+ function nReadingNextTick(self) {
+ debug('readable nexttick read 0');
+ self.read(0);
+ }
+
+ // pause() and resume() are remnants of the legacy readable stream API
+ // If the user uses them, then switch into old mode.
+ Readable.prototype.resume = function () {
+ var state = this._readableState;
+ if (!state.flowing) {
+ debug('resume');
+ state.flowing = true;
+ resume(this, state);
+ }
+ return this;
+ };
+
+ function resume(stream, state) {
+ if (!state.resumeScheduled) {
+ state.resumeScheduled = true;
+ processNextTick(resume_, stream, state);
+ }
+ }
+
+ function resume_(stream, state) {
+ if (!state.reading) {
+ debug('resume read 0');
+ stream.read(0);
+ }
+
+ state.resumeScheduled = false;
+ state.awaitDrain = 0;
+ stream.emit('resume');
+ flow(stream);
+ if (state.flowing && !state.reading) stream.read(0);
+ }
+
+ Readable.prototype.pause = function () {
+ debug('call pause flowing=%j', this._readableState.flowing);
+ if (false !== this._readableState.flowing) {
+ debug('pause');
+ this._readableState.flowing = false;
+ this.emit('pause');
+ }
+ return this;
+ };
+
+ function flow(stream) {
+ var state = stream._readableState;
+ debug('flow', state.flowing);
+ while (state.flowing && stream.read() !== null) {}
+ }
+
+ // wrap an old-style stream as the async data source.
+ // This is *not* part of the readable stream interface.
+ // It is an ugly unfortunate mess of history.
+ Readable.prototype.wrap = function (stream) {
+ var state = this._readableState;
+ var paused = false;
+
+ var self = this;
+ stream.on('end', function () {
+ debug('wrapped end');
+ if (state.decoder && !state.ended) {
+ var chunk = state.decoder.end();
+ if (chunk && chunk.length) self.push(chunk);
+ }
+
+ self.push(null);
+ });
+
+ stream.on('data', function (chunk) {
+ debug('wrapped data');
+ if (state.decoder) chunk = state.decoder.write(chunk);
+
+ // don't skip over falsy values in objectMode
+ if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;
+
+ var ret = self.push(chunk);
+ if (!ret) {
+ paused = true;
+ stream.pause();
+ }
+ });
+
+ // proxy all the other methods.
+ // important when wrapping filters and duplexes.
+ for (var i in stream) {
+ if (this[i] === undefined && typeof stream[i] === 'function') {
+ this[i] = function (method) {
+ return function () {
+ return stream[method].apply(stream, arguments);
+ };
+ }(i);
+ }
+ }
+
+ // proxy certain important events.
+ var events = ['error', 'close', 'destroy', 'pause', 'resume'];
+ forEach(events, function (ev) {
+ stream.on(ev, self.emit.bind(self, ev));
+ });
+
+ // when we try to consume some more bytes, simply unpause the
+ // underlying stream.
+ self._read = function (n) {
+ debug('wrapped _read', n);
+ if (paused) {
+ paused = false;
+ stream.resume();
+ }
+ };
+
+ return self;
+ };
+
+ // exposed for testing purposes only.
+ Readable._fromList = fromList;
+
+ // Pluck off n bytes from an array of buffers.
+ // Length is the combined lengths of all the buffers in the list.
+ // This function is designed to be inlinable, so please take care when making
+ // changes to the function body.
+ function fromList(n, state) {
+ // nothing buffered
+ if (state.length === 0) return null;
+
+ var ret;
+ if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {
+ // read it all, truncate the list
+ if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);
+ state.buffer.clear();
+ } else {
+ // read part of list
+ ret = fromListPartial(n, state.buffer, state.decoder);
+ }
+
+ return ret;
+ }
+
+ // Extracts only enough buffered data to satisfy the amount requested.
+ // This function is designed to be inlinable, so please take care when making
+ // changes to the function body.
+ function fromListPartial(n, list, hasStrings) {
+ var ret;
+ if (n < list.head.data.length) {
+ // slice is the same for buffers and strings
+ ret = list.head.data.slice(0, n);
+ list.head.data = list.head.data.slice(n);
+ } else if (n === list.head.data.length) {
+ // first chunk is a perfect match
+ ret = list.shift();
+ } else {
+ // result spans more than one buffer
+ ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);
+ }
+ return ret;
+ }
+
+ // Copies a specified amount of characters from the list of buffered data
+ // chunks.
+ // This function is designed to be inlinable, so please take care when making
+ // changes to the function body.
+ function copyFromBufferString(n, list) {
+ var p = list.head;
+ var c = 1;
+ var ret = p.data;
+ n -= ret.length;
+ while (p = p.next) {
+ var str = p.data;
+ var nb = n > str.length ? str.length : n;
+ if (nb === str.length) ret += str;else ret += str.slice(0, n);
+ n -= nb;
+ if (n === 0) {
+ if (nb === str.length) {
+ ++c;
+ if (p.next) list.head = p.next;else list.head = list.tail = null;
+ } else {
+ list.head = p;
+ p.data = str.slice(nb);
+ }
+ break;
+ }
+ ++c;
+ }
+ list.length -= c;
+ return ret;
+ }
+
+ // Copies a specified amount of bytes from the list of buffered data chunks.
+ // This function is designed to be inlinable, so please take care when making
+ // changes to the function body.
+ function copyFromBuffer(n, list) {
+ var ret = bufferShim.allocUnsafe(n);
+ var p = list.head;
+ var c = 1;
+ p.data.copy(ret);
+ n -= p.data.length;
+ while (p = p.next) {
+ var buf = p.data;
+ var nb = n > buf.length ? buf.length : n;
+ buf.copy(ret, ret.length - n, 0, nb);
+ n -= nb;
+ if (n === 0) {
+ if (nb === buf.length) {
+ ++c;
+ if (p.next) list.head = p.next;else list.head = list.tail = null;
+ } else {
+ list.head = p;
+ p.data = buf.slice(nb);
+ }
+ break;
+ }
+ ++c;
+ }
+ list.length -= c;
+ return ret;
+ }
+
+ function endReadable(stream) {
+ var state = stream._readableState;
+
+ // If we get here before consuming all the bytes, then that is a
+ // bug in node. Should never happen.
+ if (state.length > 0) throw new Error('"endReadable()" called on non-empty stream');
+
+ if (!state.endEmitted) {
+ state.ended = true;
+ processNextTick(endReadableNT, state, stream);
+ }
+ }
+
+ function endReadableNT(state, stream) {
+ // Check that we didn't get one last unshift.
+ if (!state.endEmitted && state.length === 0) {
+ state.endEmitted = true;
+ stream.readable = false;
+ stream.emit('end');
+ }
+ }
+
+ function forEach(xs, f) {
+ for (var i = 0, l = xs.length; i < l; i++) {
+ f(xs[i], i);
+ }
+ }
+
+ function indexOf(xs, x) {
+ for (var i = 0, l = xs.length; i < l; i++) {
+ if (xs[i] === x) return i;
+ }
+ return -1;
+ }
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1)))
+
+/***/ },
+/* 370 */
+/***/ function(module, exports, __webpack_require__) {
+
+ /* WEBPACK VAR INJECTION */(function(process) {'use strict';
+
+ if (!process.version ||
+ process.version.indexOf('v0.') === 0 ||
+ process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {
+ module.exports = nextTick;
+ } else {
+ module.exports = process.nextTick;
+ }
+
+ function nextTick(fn, arg1, arg2, arg3) {
+ if (typeof fn !== 'function') {
+ throw new TypeError('"callback" argument must be a function');
+ }
+ var len = arguments.length;
+ var args, i;
+ switch (len) {
+ case 0:
+ case 1:
+ return process.nextTick(fn);
+ case 2:
+ return process.nextTick(function afterTickOne() {
+ fn.call(null, arg1);
+ });
+ case 3:
+ return process.nextTick(function afterTickTwo() {
+ fn.call(null, arg1, arg2);
+ });
+ case 4:
+ return process.nextTick(function afterTickThree() {
+ fn.call(null, arg1, arg2, arg3);
+ });
+ default:
+ args = new Array(len - 1);
+ i = 0;
+ while (i < args.length) {
+ args[i++] = arguments[i];
+ }
+ return process.nextTick(function afterTick() {
+ fn.apply(null, args);
+ });
+ }
+ }
+
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1)))
+
+/***/ },
+/* 371 */,
+/* 372 */
+/***/ function(module, exports, __webpack_require__) {
+
+ /* WEBPACK VAR INJECTION */(function(global) {'use strict';
+
+ var buffer = __webpack_require__(371);
+ var Buffer = buffer.Buffer;
+ var SlowBuffer = buffer.SlowBuffer;
+ var MAX_LEN = buffer.kMaxLength || 2147483647;
+ exports.alloc = function alloc(size, fill, encoding) {
+ if (typeof Buffer.alloc === 'function') {
+ return Buffer.alloc(size, fill, encoding);
+ }
+ if (typeof encoding === 'number') {
+ throw new TypeError('encoding must not be number');
+ }
+ if (typeof size !== 'number') {
+ throw new TypeError('size must be a number');
+ }
+ if (size > MAX_LEN) {
+ throw new RangeError('size is too large');
+ }
+ var enc = encoding;
+ var _fill = fill;
+ if (_fill === undefined) {
+ enc = undefined;
+ _fill = 0;
+ }
+ var buf = new Buffer(size);
+ if (typeof _fill === 'string') {
+ var fillBuf = new Buffer(_fill, enc);
+ var flen = fillBuf.length;
+ var i = -1;
+ while (++i < size) {
+ buf[i] = fillBuf[i % flen];
+ }
+ } else {
+ buf.fill(_fill);
+ }
+ return buf;
+ }
+ exports.allocUnsafe = function allocUnsafe(size) {
+ if (typeof Buffer.allocUnsafe === 'function') {
+ return Buffer.allocUnsafe(size);
+ }
+ if (typeof size !== 'number') {
+ throw new TypeError('size must be a number');
+ }
+ if (size > MAX_LEN) {
+ throw new RangeError('size is too large');
+ }
+ return new Buffer(size);
+ }
+ exports.from = function from(value, encodingOrOffset, length) {
+ if (typeof Buffer.from === 'function' && (!global.Uint8Array || Uint8Array.from !== Buffer.from)) {
+ return Buffer.from(value, encodingOrOffset, length);
+ }
+ if (typeof value === 'number') {
+ throw new TypeError('"value" argument must not be a number');
+ }
+ if (typeof value === 'string') {
+ return new Buffer(value, encodingOrOffset);
+ }
+ if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {
+ var offset = encodingOrOffset;
+ if (arguments.length === 1) {
+ return new Buffer(value);
+ }
+ if (typeof offset === 'undefined') {
+ offset = 0;
+ }
+ var len = length;
+ if (typeof len === 'undefined') {
+ len = value.byteLength - offset;
+ }
+ if (offset >= value.byteLength) {
+ throw new RangeError('\'offset\' is out of bounds');
+ }
+ if (len > value.byteLength - offset) {
+ throw new RangeError('\'length\' is out of bounds');
+ }
+ return new Buffer(value.slice(offset, offset + len));
+ }
+ if (Buffer.isBuffer(value)) {
+ var out = new Buffer(value.length);
+ value.copy(out, 0, 0, value.length);
+ return out;
+ }
+ if (value) {
+ if (Array.isArray(value) || (typeof ArrayBuffer !== 'undefined' && value.buffer instanceof ArrayBuffer) || 'length' in value) {
+ return new Buffer(value);
+ }
+ if (value.type === 'Buffer' && Array.isArray(value.data)) {
+ return new Buffer(value.data);
+ }
+ }
+
+ throw new TypeError('First argument must be a string, Buffer, ' + 'ArrayBuffer, Array, or array-like object.');
+ }
+ exports.allocUnsafeSlow = function allocUnsafeSlow(size) {
+ if (typeof Buffer.allocUnsafeSlow === 'function') {
+ return Buffer.allocUnsafeSlow(size);
+ }
+ if (typeof size !== 'number') {
+ throw new TypeError('size must be a number');
+ }
+ if (size >= MAX_LEN) {
+ throw new RangeError('size is too large');
+ }
+ return new SlowBuffer(size);
+ }
+
+ /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
+
+/***/ },
+/* 373 */
+/***/ function(module, exports, __webpack_require__) {
+
+ /* WEBPACK VAR INJECTION */(function(Buffer) {// Copyright Joyent, Inc. and other Node contributors.
+ //
+ // Permission is hereby granted, free of charge, to any person obtaining a
+ // copy of this software and associated documentation files (the
+ // "Software"), to deal in the Software without restriction, including
+ // without limitation the rights to use, copy, modify, merge, publish,
+ // distribute, sublicense, and/or sell copies of the Software, and to permit
+ // persons to whom the Software is furnished to do so, subject to the
+ // following conditions:
+ //
+ // The above copyright notice and this permission notice shall be included
+ // in all copies or substantial portions of the Software.
+ //
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+ // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+ // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+ // USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ // NOTE: These type checking functions intentionally don't use `instanceof`
+ // because it is fragile and can be easily faked with `Object.create()`.
+
+ function isArray(arg) {
+ if (Array.isArray) {
+ return Array.isArray(arg);
+ }
+ return objectToString(arg) === '[object Array]';
+ }
+ exports.isArray = isArray;
+
+ function isBoolean(arg) {
+ return typeof arg === 'boolean';
+ }
+ exports.isBoolean = isBoolean;
+
+ function isNull(arg) {
+ return arg === null;
+ }
+ exports.isNull = isNull;
+
+ function isNullOrUndefined(arg) {
+ return arg == null;
+ }
+ exports.isNullOrUndefined = isNullOrUndefined;
+
+ function isNumber(arg) {
+ return typeof arg === 'number';
+ }
+ exports.isNumber = isNumber;
+
+ function isString(arg) {
+ return typeof arg === 'string';
+ }
+ exports.isString = isString;
+
+ function isSymbol(arg) {
+ return typeof arg === 'symbol';
+ }
+ exports.isSymbol = isSymbol;
+
+ function isUndefined(arg) {
+ return arg === void 0;
+ }
+ exports.isUndefined = isUndefined;
+
+ function isRegExp(re) {
+ return objectToString(re) === '[object RegExp]';
+ }
+ exports.isRegExp = isRegExp;
+
+ function isObject(arg) {
+ return typeof arg === 'object' && arg !== null;
+ }
+ exports.isObject = isObject;
+
+ function isDate(d) {
+ return objectToString(d) === '[object Date]';
+ }
+ exports.isDate = isDate;
+
+ function isError(e) {
+ return (objectToString(e) === '[object Error]' || e instanceof Error);
+ }
+ exports.isError = isError;
+
+ function isFunction(arg) {
+ return typeof arg === 'function';
+ }
+ exports.isFunction = isFunction;
+
+ function isPrimitive(arg) {
+ return arg === null ||
+ typeof arg === 'boolean' ||
+ typeof arg === 'number' ||
+ typeof arg === 'string' ||
+ typeof arg === 'symbol' || // ES6 symbol
+ typeof arg === 'undefined';
+ }
+ exports.isPrimitive = isPrimitive;
+
+ exports.isBuffer = Buffer.isBuffer;
+
+ function objectToString(o) {
+ return Object.prototype.toString.call(o);
+ }
+
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(154).Buffer))
+
+/***/ },
+/* 374 */
+/***/ function(module, exports) {
+
+ /* (ignored) */
+
+/***/ },
+/* 375 */
+/***/ function(module, exports, __webpack_require__) {
+
+ 'use strict';
+
+ var Buffer = __webpack_require__(371).Buffer;
+ /**/
+ var bufferShim = __webpack_require__(372);
+ /* */
+
+ module.exports = BufferList;
+
+ function BufferList() {
+ this.head = null;
+ this.tail = null;
+ this.length = 0;
+ }
+
+ BufferList.prototype.push = function (v) {
+ var entry = { data: v, next: null };
+ if (this.length > 0) this.tail.next = entry;else this.head = entry;
+ this.tail = entry;
+ ++this.length;
+ };
+
+ BufferList.prototype.unshift = function (v) {
+ var entry = { data: v, next: this.head };
+ if (this.length === 0) this.tail = entry;
+ this.head = entry;
+ ++this.length;
+ };
+
+ BufferList.prototype.shift = function () {
+ if (this.length === 0) return;
+ var ret = this.head.data;
+ if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;
+ --this.length;
+ return ret;
+ };
+
+ BufferList.prototype.clear = function () {
+ this.head = this.tail = null;
+ this.length = 0;
+ };
+
+ BufferList.prototype.join = function (s) {
+ if (this.length === 0) return '';
+ var p = this.head;
+ var ret = '' + p.data;
+ while (p = p.next) {
+ ret += s + p.data;
+ }return ret;
+ };
+
+ BufferList.prototype.concat = function (n) {
+ if (this.length === 0) return bufferShim.alloc(0);
+ if (this.length === 1) return this.head.data;
+ var ret = bufferShim.allocUnsafe(n >>> 0);
+ var p = this.head;
+ var i = 0;
+ while (p) {
+ p.data.copy(ret, i);
+ i += p.data.length;
+ p = p.next;
+ }
+ return ret;
+ };
+
+/***/ },
+/* 376 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // a duplex stream is just a stream that is both readable and writable.
+ // Since JS doesn't have multiple prototypal inheritance, this class
+ // prototypally inherits from Readable, and then parasitically from
+ // Writable.
+
+ 'use strict';
+
+ /**/
+
+ var objectKeys = Object.keys || function (obj) {
+ var keys = [];
+ for (var key in obj) {
+ keys.push(key);
+ }return keys;
+ };
+ /* */
+
+ module.exports = Duplex;
+
+ /**/
+ var processNextTick = __webpack_require__(370);
+ /* */
+
+ /**/
+ var util = __webpack_require__(373);
+ util.inherits = __webpack_require__(367);
+ /* */
+
+ var Readable = __webpack_require__(369);
+ var Writable = __webpack_require__(377);
+
+ util.inherits(Duplex, Readable);
+
+ var keys = objectKeys(Writable.prototype);
+ for (var v = 0; v < keys.length; v++) {
+ var method = keys[v];
+ if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];
+ }
+
+ function Duplex(options) {
+ if (!(this instanceof Duplex)) return new Duplex(options);
+
+ Readable.call(this, options);
+ Writable.call(this, options);
+
+ if (options && options.readable === false) this.readable = false;
+
+ if (options && options.writable === false) this.writable = false;
+
+ this.allowHalfOpen = true;
+ if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;
+
+ this.once('end', onend);
+ }
+
+ // the no-half-open enforcer
+ function onend() {
+ // if we allow half-open state, or if the writable side ended,
+ // then we're ok.
+ if (this.allowHalfOpen || this._writableState.ended) return;
+
+ // no more data can be written.
+ // But allow more writes to happen in this tick.
+ processNextTick(onEndNT, this);
+ }
+
+ function onEndNT(self) {
+ self.end();
+ }
+
+ function forEach(xs, f) {
+ for (var i = 0, l = xs.length; i < l; i++) {
+ f(xs[i], i);
+ }
+ }
+
+/***/ },
+/* 377 */
+/***/ function(module, exports, __webpack_require__) {
+
+ /* WEBPACK VAR INJECTION */(function(process, setImmediate) {// A bit simpler than readable streams.
+ // Implement an async ._write(chunk, encoding, cb), and it'll handle all
+ // the drain event emission and buffering.
+
+ 'use strict';
+
+ module.exports = Writable;
+
+ /**/
+ var processNextTick = __webpack_require__(370);
+ /* */
+
+ /**/
+ var asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick;
+ /* */
+
+ /**/
+ var Duplex;
+ /* */
+
+ Writable.WritableState = WritableState;
+
+ /**/
+ var util = __webpack_require__(373);
+ util.inherits = __webpack_require__(367);
+ /* */
+
+ /**/
+ var internalUtil = {
+ deprecate: __webpack_require__(378)
+ };
+ /* */
+
+ /**/
+ var Stream;
+ (function () {
+ try {
+ Stream = __webpack_require__(365);
+ } catch (_) {} finally {
+ if (!Stream) Stream = __webpack_require__(366).EventEmitter;
+ }
+ })();
+ /* */
+
+ var Buffer = __webpack_require__(371).Buffer;
+ /**/
+ var bufferShim = __webpack_require__(372);
+ /* */
+
+ util.inherits(Writable, Stream);
+
+ function nop() {}
+
+ function WriteReq(chunk, encoding, cb) {
+ this.chunk = chunk;
+ this.encoding = encoding;
+ this.callback = cb;
+ this.next = null;
+ }
+
+ function WritableState(options, stream) {
+ Duplex = Duplex || __webpack_require__(376);
+
+ options = options || {};
+
+ // object stream flag to indicate whether or not this stream
+ // contains buffers or objects.
+ this.objectMode = !!options.objectMode;
+
+ if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;
+
+ // the point at which write() starts returning false
+ // Note: 0 is a valid value, means that we always return false if
+ // the entire buffer is not flushed immediately on write()
+ var hwm = options.highWaterMark;
+ var defaultHwm = this.objectMode ? 16 : 16 * 1024;
+ this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;
+
+ // cast to ints.
+ this.highWaterMark = ~ ~this.highWaterMark;
+
+ // drain event flag.
+ this.needDrain = false;
+ // at the start of calling end()
+ this.ending = false;
+ // when end() has been called, and returned
+ this.ended = false;
+ // when 'finish' is emitted
+ this.finished = false;
+
+ // should we decode strings into buffers before passing to _write?
+ // this is here so that some node-core streams can optimize string
+ // handling at a lower level.
+ var noDecode = options.decodeStrings === false;
+ this.decodeStrings = !noDecode;
+
+ // Crypto is kind of old and crusty. Historically, its default string
+ // encoding is 'binary' so we have to make this configurable.
+ // Everything else in the universe uses 'utf8', though.
+ this.defaultEncoding = options.defaultEncoding || 'utf8';
+
+ // not an actual buffer we keep track of, but a measurement
+ // of how much we're waiting to get pushed to some underlying
+ // socket or file.
+ this.length = 0;
+
+ // a flag to see when we're in the middle of a write.
+ this.writing = false;
+
+ // when true all writes will be buffered until .uncork() call
+ this.corked = 0;
+
+ // a flag to be able to tell if the onwrite cb is called immediately,
+ // or on a later tick. We set this to true at first, because any
+ // actions that shouldn't happen until "later" should generally also
+ // not happen before the first write call.
+ this.sync = true;
+
+ // a flag to know if we're processing previously buffered items, which
+ // may call the _write() callback in the same tick, so that we don't
+ // end up in an overlapped onwrite situation.
+ this.bufferProcessing = false;
+
+ // the callback that's passed to _write(chunk,cb)
+ this.onwrite = function (er) {
+ onwrite(stream, er);
+ };
+
+ // the callback that the user supplies to write(chunk,encoding,cb)
+ this.writecb = null;
+
+ // the amount that is being written when _write is called.
+ this.writelen = 0;
+
+ this.bufferedRequest = null;
+ this.lastBufferedRequest = null;
+
+ // number of pending user-supplied write callbacks
+ // this must be 0 before 'finish' can be emitted
+ this.pendingcb = 0;
+
+ // emit prefinish if the only thing we're waiting for is _write cbs
+ // This is relevant for synchronous Transform streams
+ this.prefinished = false;
+
+ // True if the error was already emitted and should not be thrown again
+ this.errorEmitted = false;
+
+ // count buffered requests
+ this.bufferedRequestCount = 0;
+
+ // allocate the first CorkedRequest, there is always
+ // one allocated and free to use, and we maintain at most two
+ this.corkedRequestsFree = new CorkedRequest(this);
+ }
+
+ WritableState.prototype.getBuffer = function getBuffer() {
+ var current = this.bufferedRequest;
+ var out = [];
+ while (current) {
+ out.push(current);
+ current = current.next;
+ }
+ return out;
+ };
+
+ (function () {
+ try {
+ Object.defineProperty(WritableState.prototype, 'buffer', {
+ get: internalUtil.deprecate(function () {
+ return this.getBuffer();
+ }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.')
+ });
+ } catch (_) {}
+ })();
+
+ // Test _writableState for inheritance to account for Duplex streams,
+ // whose prototype chain only points to Readable.
+ var realHasInstance;
+ if (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {
+ realHasInstance = Function.prototype[Symbol.hasInstance];
+ Object.defineProperty(Writable, Symbol.hasInstance, {
+ value: function (object) {
+ if (realHasInstance.call(this, object)) return true;
+
+ return object && object._writableState instanceof WritableState;
+ }
+ });
+ } else {
+ realHasInstance = function (object) {
+ return object instanceof this;
+ };
+ }
+
+ function Writable(options) {
+ Duplex = Duplex || __webpack_require__(376);
+
+ // Writable ctor is applied to Duplexes, too.
+ // `realHasInstance` is necessary because using plain `instanceof`
+ // would return false, as no `_writableState` property is attached.
+
+ // Trying to use the custom `instanceof` for Writable here will also break the
+ // Node.js LazyTransform implementation, which has a non-trivial getter for
+ // `_writableState` that would lead to infinite recursion.
+ if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {
+ return new Writable(options);
+ }
+
+ this._writableState = new WritableState(options, this);
+
+ // legacy.
+ this.writable = true;
+
+ if (options) {
+ if (typeof options.write === 'function') this._write = options.write;
+
+ if (typeof options.writev === 'function') this._writev = options.writev;
+ }
+
+ Stream.call(this);
+ }
+
+ // Otherwise people can pipe Writable streams, which is just wrong.
+ Writable.prototype.pipe = function () {
+ this.emit('error', new Error('Cannot pipe, not readable'));
+ };
+
+ function writeAfterEnd(stream, cb) {
+ var er = new Error('write after end');
+ // TODO: defer error events consistently everywhere, not just the cb
+ stream.emit('error', er);
+ processNextTick(cb, er);
+ }
+
+ // If we get something that is not a buffer, string, null, or undefined,
+ // and we're not in objectMode, then that's an error.
+ // Otherwise stream chunks are all considered to be of length=1, and the
+ // watermarks determine how many objects to keep in the buffer, rather than
+ // how many bytes or characters.
+ function validChunk(stream, state, chunk, cb) {
+ var valid = true;
+ var er = false;
+ // Always throw error if a null is written
+ // if we are not in object mode then throw
+ // if it is not a buffer, string, or undefined.
+ if (chunk === null) {
+ er = new TypeError('May not write null values to stream');
+ } else if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {
+ er = new TypeError('Invalid non-string/buffer chunk');
+ }
+ if (er) {
+ stream.emit('error', er);
+ processNextTick(cb, er);
+ valid = false;
+ }
+ return valid;
+ }
+
+ Writable.prototype.write = function (chunk, encoding, cb) {
+ var state = this._writableState;
+ var ret = false;
+
+ if (typeof encoding === 'function') {
+ cb = encoding;
+ encoding = null;
+ }
+
+ if (Buffer.isBuffer(chunk)) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;
+
+ if (typeof cb !== 'function') cb = nop;
+
+ if (state.ended) writeAfterEnd(this, cb);else if (validChunk(this, state, chunk, cb)) {
+ state.pendingcb++;
+ ret = writeOrBuffer(this, state, chunk, encoding, cb);
+ }
+
+ return ret;
+ };
+
+ Writable.prototype.cork = function () {
+ var state = this._writableState;
+
+ state.corked++;
+ };
+
+ Writable.prototype.uncork = function () {
+ var state = this._writableState;
+
+ if (state.corked) {
+ state.corked--;
+
+ if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);
+ }
+ };
+
+ Writable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {
+ // node::ParseEncoding() requires lower case.
+ if (typeof encoding === 'string') encoding = encoding.toLowerCase();
+ if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);
+ this._writableState.defaultEncoding = encoding;
+ return this;
+ };
+
+ function decodeChunk(state, chunk, encoding) {
+ if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {
+ chunk = bufferShim.from(chunk, encoding);
+ }
+ return chunk;
+ }
+
+ // if we're already writing something, then just put this
+ // in the queue, and wait our turn. Otherwise, call _write
+ // If we return false, then we need a drain event, so set that flag.
+ function writeOrBuffer(stream, state, chunk, encoding, cb) {
+ chunk = decodeChunk(state, chunk, encoding);
+
+ if (Buffer.isBuffer(chunk)) encoding = 'buffer';
+ var len = state.objectMode ? 1 : chunk.length;
+
+ state.length += len;
+
+ var ret = state.length < state.highWaterMark;
+ // we must ensure that previous needDrain will not be reset to false.
+ if (!ret) state.needDrain = true;
+
+ if (state.writing || state.corked) {
+ var last = state.lastBufferedRequest;
+ state.lastBufferedRequest = new WriteReq(chunk, encoding, cb);
+ if (last) {
+ last.next = state.lastBufferedRequest;
+ } else {
+ state.bufferedRequest = state.lastBufferedRequest;
+ }
+ state.bufferedRequestCount += 1;
+ } else {
+ doWrite(stream, state, false, len, chunk, encoding, cb);
+ }
+
+ return ret;
+ }
+
+ function doWrite(stream, state, writev, len, chunk, encoding, cb) {
+ state.writelen = len;
+ state.writecb = cb;
+ state.writing = true;
+ state.sync = true;
+ if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);
+ state.sync = false;
+ }
+
+ function onwriteError(stream, state, sync, er, cb) {
+ --state.pendingcb;
+ if (sync) processNextTick(cb, er);else cb(er);
+
+ stream._writableState.errorEmitted = true;
+ stream.emit('error', er);
+ }
+
+ function onwriteStateUpdate(state) {
+ state.writing = false;
+ state.writecb = null;
+ state.length -= state.writelen;
+ state.writelen = 0;
+ }
+
+ function onwrite(stream, er) {
+ var state = stream._writableState;
+ var sync = state.sync;
+ var cb = state.writecb;
+
+ onwriteStateUpdate(state);
+
+ if (er) onwriteError(stream, state, sync, er, cb);else {
+ // Check if we're actually ready to finish, but don't emit yet
+ var finished = needFinish(state);
+
+ if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {
+ clearBuffer(stream, state);
+ }
+
+ if (sync) {
+ /**/
+ asyncWrite(afterWrite, stream, state, finished, cb);
+ /* */
+ } else {
+ afterWrite(stream, state, finished, cb);
+ }
+ }
+ }
+
+ function afterWrite(stream, state, finished, cb) {
+ if (!finished) onwriteDrain(stream, state);
+ state.pendingcb--;
+ cb();
+ finishMaybe(stream, state);
+ }
+
+ // Must force callback to be called on nextTick, so that we don't
+ // emit 'drain' before the write() consumer gets the 'false' return
+ // value, and has a chance to attach a 'drain' listener.
+ function onwriteDrain(stream, state) {
+ if (state.length === 0 && state.needDrain) {
+ state.needDrain = false;
+ stream.emit('drain');
+ }
+ }
+
+ // if there's something in the buffer waiting, then process it
+ function clearBuffer(stream, state) {
+ state.bufferProcessing = true;
+ var entry = state.bufferedRequest;
+
+ if (stream._writev && entry && entry.next) {
+ // Fast case, write everything using _writev()
+ var l = state.bufferedRequestCount;
+ var buffer = new Array(l);
+ var holder = state.corkedRequestsFree;
+ holder.entry = entry;
+
+ var count = 0;
+ while (entry) {
+ buffer[count] = entry;
+ entry = entry.next;
+ count += 1;
+ }
+
+ doWrite(stream, state, true, state.length, buffer, '', holder.finish);
+
+ // doWrite is almost always async, defer these to save a bit of time
+ // as the hot path ends with doWrite
+ state.pendingcb++;
+ state.lastBufferedRequest = null;
+ if (holder.next) {
+ state.corkedRequestsFree = holder.next;
+ holder.next = null;
+ } else {
+ state.corkedRequestsFree = new CorkedRequest(state);
+ }
+ } else {
+ // Slow case, write chunks one-by-one
+ while (entry) {
+ var chunk = entry.chunk;
+ var encoding = entry.encoding;
+ var cb = entry.callback;
+ var len = state.objectMode ? 1 : chunk.length;
+
+ doWrite(stream, state, false, len, chunk, encoding, cb);
+ entry = entry.next;
+ // if we didn't call the onwrite immediately, then
+ // it means that we need to wait until it does.
+ // also, that means that the chunk and cb are currently
+ // being processed, so move the buffer counter past them.
+ if (state.writing) {
+ break;
+ }
+ }
+
+ if (entry === null) state.lastBufferedRequest = null;
+ }
+
+ state.bufferedRequestCount = 0;
+ state.bufferedRequest = entry;
+ state.bufferProcessing = false;
+ }
+
+ Writable.prototype._write = function (chunk, encoding, cb) {
+ cb(new Error('_write() is not implemented'));
+ };
+
+ Writable.prototype._writev = null;
+
+ Writable.prototype.end = function (chunk, encoding, cb) {
+ var state = this._writableState;
+
+ if (typeof chunk === 'function') {
+ cb = chunk;
+ chunk = null;
+ encoding = null;
+ } else if (typeof encoding === 'function') {
+ cb = encoding;
+ encoding = null;
+ }
+
+ if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);
+
+ // .end() fully uncorks
+ if (state.corked) {
+ state.corked = 1;
+ this.uncork();
+ }
+
+ // ignore unnecessary end() calls.
+ if (!state.ending && !state.finished) endWritable(this, state, cb);
+ };
+
+ function needFinish(state) {
+ return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;
+ }
+
+ function prefinish(stream, state) {
+ if (!state.prefinished) {
+ state.prefinished = true;
+ stream.emit('prefinish');
+ }
+ }
+
+ function finishMaybe(stream, state) {
+ var need = needFinish(state);
+ if (need) {
+ if (state.pendingcb === 0) {
+ prefinish(stream, state);
+ state.finished = true;
+ stream.emit('finish');
+ } else {
+ prefinish(stream, state);
+ }
+ }
+ return need;
+ }
+
+ function endWritable(stream, state, cb) {
+ state.ending = true;
+ finishMaybe(stream, state);
+ if (cb) {
+ if (state.finished) processNextTick(cb);else stream.once('finish', cb);
+ }
+ state.ended = true;
+ stream.writable = false;
+ }
+
+ // It seems a linked list but it is not
+ // there will be only 2 of these for each stream
+ function CorkedRequest(state) {
+ var _this = this;
+
+ this.next = null;
+ this.entry = null;
+
+ this.finish = function (err) {
+ var entry = _this.entry;
+ _this.entry = null;
+ while (entry) {
+ var cb = entry.callback;
+ state.pendingcb--;
+ cb(err);
+ entry = entry.next;
+ }
+ if (state.corkedRequestsFree) {
+ state.corkedRequestsFree.next = _this;
+ } else {
+ state.corkedRequestsFree = _this;
+ }
+ };
+ }
+ /* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(1), __webpack_require__(82).setImmediate))
+
+/***/ },
+/* 378 */
+/***/ function(module, exports) {
+
+ /* WEBPACK VAR INJECTION */(function(global) {
+ /**
+ * Module exports.
+ */
+
+ module.exports = deprecate;
+
+ /**
+ * Mark that a method should not be used.
+ * Returns a modified function which warns once by default.
+ *
+ * If `localStorage.noDeprecation = true` is set, then it is a no-op.
+ *
+ * If `localStorage.throwDeprecation = true` is set, then deprecated functions
+ * will throw an Error when invoked.
+ *
+ * If `localStorage.traceDeprecation = true` is set, then deprecated functions
+ * will invoke `console.trace()` instead of `console.error()`.
+ *
+ * @param {Function} fn - the function to deprecate
+ * @param {String} msg - the string to print to the console when `fn` is invoked
+ * @returns {Function} a new "deprecated" version of `fn`
+ * @api public
+ */
+
+ function deprecate (fn, msg) {
+ if (config('noDeprecation')) {
+ return fn;
+ }
+
+ var warned = false;
+ function deprecated() {
+ if (!warned) {
+ if (config('throwDeprecation')) {
+ throw new Error(msg);
+ } else if (config('traceDeprecation')) {
+ console.trace(msg);
+ } else {
+ console.warn(msg);
+ }
+ warned = true;
+ }
+ return fn.apply(this, arguments);
+ }
+
+ return deprecated;
+ }
+
+ /**
+ * Checks `localStorage` for boolean values for the given `name`.
+ *
+ * @param {String} name
+ * @returns {Boolean}
+ * @api private
+ */
+
+ function config (name) {
+ // accessing global.localStorage can trigger a DOMException in sandboxed iframes
+ try {
+ if (!global.localStorage) return false;
+ } catch (_) {
+ return false;
+ }
+ var val = global.localStorage[name];
+ if (null == val) return false;
+ return String(val).toLowerCase() === 'true';
+ }
+
+ /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }())))
+
+/***/ },
+/* 379 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // Copyright Joyent, Inc. and other Node contributors.
+ //
+ // Permission is hereby granted, free of charge, to any person obtaining a
+ // copy of this software and associated documentation files (the
+ // "Software"), to deal in the Software without restriction, including
+ // without limitation the rights to use, copy, modify, merge, publish,
+ // distribute, sublicense, and/or sell copies of the Software, and to permit
+ // persons to whom the Software is furnished to do so, subject to the
+ // following conditions:
+ //
+ // The above copyright notice and this permission notice shall be included
+ // in all copies or substantial portions of the Software.
+ //
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+ // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+ // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+ // USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ var Buffer = __webpack_require__(371).Buffer;
+
+ var isBufferEncoding = Buffer.isEncoding
+ || function(encoding) {
+ switch (encoding && encoding.toLowerCase()) {
+ case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true;
+ default: return false;
+ }
+ }
+
+
+ function assertEncoding(encoding) {
+ if (encoding && !isBufferEncoding(encoding)) {
+ throw new Error('Unknown encoding: ' + encoding);
+ }
+ }
+
+ // StringDecoder provides an interface for efficiently splitting a series of
+ // buffers into a series of JS strings without breaking apart multi-byte
+ // characters. CESU-8 is handled as part of the UTF-8 encoding.
+ //
+ // @TODO Handling all encodings inside a single object makes it very difficult
+ // to reason about this code, so it should be split up in the future.
+ // @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code
+ // points as used by CESU-8.
+ var StringDecoder = exports.StringDecoder = function(encoding) {
+ this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');
+ assertEncoding(encoding);
+ switch (this.encoding) {
+ case 'utf8':
+ // CESU-8 represents each of Surrogate Pair by 3-bytes
+ this.surrogateSize = 3;
+ break;
+ case 'ucs2':
+ case 'utf16le':
+ // UTF-16 represents each of Surrogate Pair by 2-bytes
+ this.surrogateSize = 2;
+ this.detectIncompleteChar = utf16DetectIncompleteChar;
+ break;
+ case 'base64':
+ // Base-64 stores 3 bytes in 4 chars, and pads the remainder.
+ this.surrogateSize = 3;
+ this.detectIncompleteChar = base64DetectIncompleteChar;
+ break;
+ default:
+ this.write = passThroughWrite;
+ return;
+ }
+
+ // Enough space to store all bytes of a single character. UTF-8 needs 4
+ // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).
+ this.charBuffer = new Buffer(6);
+ // Number of bytes received for the current incomplete multi-byte character.
+ this.charReceived = 0;
+ // Number of bytes expected for the current incomplete multi-byte character.
+ this.charLength = 0;
+ };
+
+
+ // write decodes the given buffer and returns it as JS string that is
+ // guaranteed to not contain any partial multi-byte characters. Any partial
+ // character found at the end of the buffer is buffered up, and will be
+ // returned when calling write again with the remaining bytes.
+ //
+ // Note: Converting a Buffer containing an orphan surrogate to a String
+ // currently works, but converting a String to a Buffer (via `new Buffer`, or
+ // Buffer#write) will replace incomplete surrogates with the unicode
+ // replacement character. See https://codereview.chromium.org/121173009/ .
+ StringDecoder.prototype.write = function(buffer) {
+ var charStr = '';
+ // if our last write ended with an incomplete multibyte character
+ while (this.charLength) {
+ // determine how many remaining bytes this buffer has to offer for this char
+ var available = (buffer.length >= this.charLength - this.charReceived) ?
+ this.charLength - this.charReceived :
+ buffer.length;
+
+ // add the new bytes to the char buffer
+ buffer.copy(this.charBuffer, this.charReceived, 0, available);
+ this.charReceived += available;
+
+ if (this.charReceived < this.charLength) {
+ // still not enough chars in this buffer? wait for more ...
+ return '';
+ }
+
+ // remove bytes belonging to the current character from the buffer
+ buffer = buffer.slice(available, buffer.length);
+
+ // get the character that was split
+ charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);
+
+ // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
+ var charCode = charStr.charCodeAt(charStr.length - 1);
+ if (charCode >= 0xD800 && charCode <= 0xDBFF) {
+ this.charLength += this.surrogateSize;
+ charStr = '';
+ continue;
+ }
+ this.charReceived = this.charLength = 0;
+
+ // if there are no more bytes in this buffer, just emit our char
+ if (buffer.length === 0) {
+ return charStr;
+ }
+ break;
+ }
+
+ // determine and set charLength / charReceived
+ this.detectIncompleteChar(buffer);
+
+ var end = buffer.length;
+ if (this.charLength) {
+ // buffer the incomplete character bytes we got
+ buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);
+ end -= this.charReceived;
+ }
+
+ charStr += buffer.toString(this.encoding, 0, end);
+
+ var end = charStr.length - 1;
+ var charCode = charStr.charCodeAt(end);
+ // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character
+ if (charCode >= 0xD800 && charCode <= 0xDBFF) {
+ var size = this.surrogateSize;
+ this.charLength += size;
+ this.charReceived += size;
+ this.charBuffer.copy(this.charBuffer, size, 0, size);
+ buffer.copy(this.charBuffer, 0, 0, size);
+ return charStr.substring(0, end);
+ }
+
+ // or just emit the charStr
+ return charStr;
+ };
+
+ // detectIncompleteChar determines if there is an incomplete UTF-8 character at
+ // the end of the given buffer. If so, it sets this.charLength to the byte
+ // length that character, and sets this.charReceived to the number of bytes
+ // that are available for this character.
+ StringDecoder.prototype.detectIncompleteChar = function(buffer) {
+ // determine how many bytes we have to check at the end of this buffer
+ var i = (buffer.length >= 3) ? 3 : buffer.length;
+
+ // Figure out if one of the last i bytes of our buffer announces an
+ // incomplete char.
+ for (; i > 0; i--) {
+ var c = buffer[buffer.length - i];
+
+ // See http://en.wikipedia.org/wiki/UTF-8#Description
+
+ // 110XXXXX
+ if (i == 1 && c >> 5 == 0x06) {
+ this.charLength = 2;
+ break;
+ }
+
+ // 1110XXXX
+ if (i <= 2 && c >> 4 == 0x0E) {
+ this.charLength = 3;
+ break;
+ }
+
+ // 11110XXX
+ if (i <= 3 && c >> 3 == 0x1E) {
+ this.charLength = 4;
+ break;
+ }
+ }
+ this.charReceived = i;
+ };
+
+ StringDecoder.prototype.end = function(buffer) {
+ var res = '';
+ if (buffer && buffer.length)
+ res = this.write(buffer);
+
+ if (this.charReceived) {
+ var cr = this.charReceived;
+ var buf = this.charBuffer;
+ var enc = this.encoding;
+ res += buf.slice(0, cr).toString(enc);
+ }
+
+ return res;
+ };
+
+ function passThroughWrite(buffer) {
+ return buffer.toString(this.encoding);
+ }
+
+ function utf16DetectIncompleteChar(buffer) {
+ this.charReceived = buffer.length % 2;
+ this.charLength = this.charReceived ? 2 : 0;
+ }
+
+ function base64DetectIncompleteChar(buffer) {
+ this.charReceived = buffer.length % 3;
+ this.charLength = this.charReceived ? 3 : 0;
+ }
+
+
+/***/ },
+/* 380 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // a transform stream is a readable/writable stream where you do
+ // something with the data. Sometimes it's called a "filter",
+ // but that's not a great name for it, since that implies a thing where
+ // some bits pass through, and others are simply ignored. (That would
+ // be a valid example of a transform, of course.)
+ //
+ // While the output is causally related to the input, it's not a
+ // necessarily symmetric or synchronous transformation. For example,
+ // a zlib stream might take multiple plain-text writes(), and then
+ // emit a single compressed chunk some time in the future.
+ //
+ // Here's how this works:
+ //
+ // The Transform stream has all the aspects of the readable and writable
+ // stream classes. When you write(chunk), that calls _write(chunk,cb)
+ // internally, and returns false if there's a lot of pending writes
+ // buffered up. When you call read(), that calls _read(n) until
+ // there's enough pending readable data buffered up.
+ //
+ // In a transform stream, the written data is placed in a buffer. When
+ // _read(n) is called, it transforms the queued up data, calling the
+ // buffered _write cb's as it consumes chunks. If consuming a single
+ // written chunk would result in multiple output chunks, then the first
+ // outputted bit calls the readcb, and subsequent chunks just go into
+ // the read buffer, and will cause it to emit 'readable' if necessary.
+ //
+ // This way, back-pressure is actually determined by the reading side,
+ // since _read has to be called to start processing a new chunk. However,
+ // a pathological inflate type of transform can cause excessive buffering
+ // here. For example, imagine a stream where every byte of input is
+ // interpreted as an integer from 0-255, and then results in that many
+ // bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in
+ // 1kb of data being output. In this case, you could write a very small
+ // amount of input, and end up with a very large amount of output. In
+ // such a pathological inflating mechanism, there'd be no way to tell
+ // the system to stop doing the transform. A single 4MB write could
+ // cause the system to run out of memory.
+ //
+ // However, even in such a pathological case, only a single written chunk
+ // would be consumed, and then the rest would wait (un-transformed) until
+ // the results of the previous transformed chunk were consumed.
+
+ 'use strict';
+
+ module.exports = Transform;
+
+ var Duplex = __webpack_require__(376);
+
+ /**/
+ var util = __webpack_require__(373);
+ util.inherits = __webpack_require__(367);
+ /* */
+
+ util.inherits(Transform, Duplex);
+
+ function TransformState(stream) {
+ this.afterTransform = function (er, data) {
+ return afterTransform(stream, er, data);
+ };
+
+ this.needTransform = false;
+ this.transforming = false;
+ this.writecb = null;
+ this.writechunk = null;
+ this.writeencoding = null;
+ }
+
+ function afterTransform(stream, er, data) {
+ var ts = stream._transformState;
+ ts.transforming = false;
+
+ var cb = ts.writecb;
+
+ if (!cb) return stream.emit('error', new Error('no writecb in Transform class'));
+
+ ts.writechunk = null;
+ ts.writecb = null;
+
+ if (data !== null && data !== undefined) stream.push(data);
+
+ cb(er);
+
+ var rs = stream._readableState;
+ rs.reading = false;
+ if (rs.needReadable || rs.length < rs.highWaterMark) {
+ stream._read(rs.highWaterMark);
+ }
+ }
+
+ function Transform(options) {
+ if (!(this instanceof Transform)) return new Transform(options);
+
+ Duplex.call(this, options);
+
+ this._transformState = new TransformState(this);
+
+ var stream = this;
+
+ // start out asking for a readable event once data is transformed.
+ this._readableState.needReadable = true;
+
+ // we have implemented the _read method, and done the other things
+ // that Readable wants before the first _read call, so unset the
+ // sync guard flag.
+ this._readableState.sync = false;
+
+ if (options) {
+ if (typeof options.transform === 'function') this._transform = options.transform;
+
+ if (typeof options.flush === 'function') this._flush = options.flush;
+ }
+
+ // When the writable side finishes, then flush out anything remaining.
+ this.once('prefinish', function () {
+ if (typeof this._flush === 'function') this._flush(function (er, data) {
+ done(stream, er, data);
+ });else done(stream);
+ });
+ }
+
+ Transform.prototype.push = function (chunk, encoding) {
+ this._transformState.needTransform = false;
+ return Duplex.prototype.push.call(this, chunk, encoding);
+ };
+
+ // This is the part where you do stuff!
+ // override this function in implementation classes.
+ // 'chunk' is an input chunk.
+ //
+ // Call `push(newChunk)` to pass along transformed output
+ // to the readable side. You may call 'push' zero or more times.
+ //
+ // Call `cb(err)` when you are done with this chunk. If you pass
+ // an error, then that'll put the hurt on the whole operation. If you
+ // never call cb(), then you'll never get another chunk.
+ Transform.prototype._transform = function (chunk, encoding, cb) {
+ throw new Error('_transform() is not implemented');
+ };
+
+ Transform.prototype._write = function (chunk, encoding, cb) {
+ var ts = this._transformState;
+ ts.writecb = cb;
+ ts.writechunk = chunk;
+ ts.writeencoding = encoding;
+ if (!ts.transforming) {
+ var rs = this._readableState;
+ if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);
+ }
+ };
+
+ // Doesn't matter what the args are here.
+ // _transform does all the work.
+ // That we got here means that the readable side wants more data.
+ Transform.prototype._read = function (n) {
+ var ts = this._transformState;
+
+ if (ts.writechunk !== null && ts.writecb && !ts.transforming) {
+ ts.transforming = true;
+ this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);
+ } else {
+ // mark that we need a transform, so that any data that comes in
+ // will get processed, now that we've asked for it.
+ ts.needTransform = true;
+ }
+ };
+
+ function done(stream, er, data) {
+ if (er) return stream.emit('error', er);
+
+ if (data !== null && data !== undefined) stream.push(data);
+
+ // if there's nothing in the write buffer, then that means
+ // that nothing more will ever be provided
+ var ws = stream._writableState;
+ var ts = stream._transformState;
+
+ if (ws.length) throw new Error('Calling transform done when ws.length != 0');
+
+ if (ts.transforming) throw new Error('Calling transform done when still transforming');
+
+ return stream.push(null);
+ }
+
+/***/ },
+/* 381 */
+/***/ function(module, exports, __webpack_require__) {
+
+ // a passthrough stream.
+ // basically just the most minimal sort of Transform stream.
+ // Every written chunk gets output as-is.
+
+ 'use strict';
+
+ module.exports = PassThrough;
+
+ var Transform = __webpack_require__(380);
+
+ /**/
+ var util = __webpack_require__(373);
+ util.inherits = __webpack_require__(367);
+ /* */
+
+ util.inherits(PassThrough, Transform);
+
+ function PassThrough(options) {
+ if (!(this instanceof PassThrough)) return new PassThrough(options);
+
+ Transform.call(this, options);
+ }
+
+ PassThrough.prototype._transform = function (chunk, encoding, cb) {
+ cb(null, chunk);
+ };
+
+/***/ },
+/* 382 */
+/***/ function(module, exports, __webpack_require__) {
+
+ module.exports = __webpack_require__(377)
+
+
+/***/ },
+/* 383 */
+/***/ function(module, exports, __webpack_require__) {
+
+ module.exports = __webpack_require__(376)
+
+
+/***/ },
+/* 384 */
+/***/ function(module, exports, __webpack_require__) {
+
+ module.exports = __webpack_require__(380)
+
+
+/***/ },
+/* 385 */
+/***/ function(module, exports, __webpack_require__) {
+
+ module.exports = __webpack_require__(381)
+
+
+/***/ },
+/* 386 */
+/***/ function(module, exports, __webpack_require__) {
+
+ /* WEBPACK VAR INJECTION */(function(global, process) {// Copyright Joyent, Inc. and other Node contributors.
+ //
+ // Permission is hereby granted, free of charge, to any person obtaining a
+ // copy of this software and associated documentation files (the
+ // "Software"), to deal in the Software without restriction, including
+ // without limitation the rights to use, copy, modify, merge, publish,
+ // distribute, sublicense, and/or sell copies of the Software, and to permit
+ // persons to whom the Software is furnished to do so, subject to the
+ // following conditions:
+ //
+ // The above copyright notice and this permission notice shall be included
+ // in all copies or substantial portions of the Software.
+ //
+ // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+ // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+ // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
+ // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
+ // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
+ // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
+ // USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+ var formatRegExp = /%[sdj%]/g;
+ exports.format = function(f) {
+ if (!isString(f)) {
+ var objects = [];
+ for (var i = 0; i < arguments.length; i++) {
+ objects.push(inspect(arguments[i]));
+ }
+ return objects.join(' ');
+ }
+
+ var i = 1;
+ var args = arguments;
+ var len = args.length;
+ var str = String(f).replace(formatRegExp, function(x) {
+ if (x === '%%') return '%';
+ if (i >= len) return x;
+ switch (x) {
+ case '%s': return String(args[i++]);
+ case '%d': return Number(args[i++]);
+ case '%j':
+ try {
+ return JSON.stringify(args[i++]);
+ } catch (_) {
+ return '[Circular]';
+ }
+ default:
+ return x;
+ }
+ });
+ for (var x = args[i]; i < len; x = args[++i]) {
+ if (isNull(x) || !isObject(x)) {
+ str += ' ' + x;
+ } else {
+ str += ' ' + inspect(x);
+ }
+ }
+ return str;
+ };
+
+
+ // Mark that a method should not be used.
+ // Returns a modified function which warns once by default.
+ // If --no-deprecation is set, then it is a no-op.
+ exports.deprecate = function(fn, msg) {
+ // Allow for deprecating things in the process of starting up.
+ if (isUndefined(global.process)) {
+ return function() {
+ return exports.deprecate(fn, msg).apply(this, arguments);
+ };
+ }
+
+ if (process.noDeprecation === true) {
+ return fn;
+ }
+
+ var warned = false;
+ function deprecated() {
+ if (!warned) {
+ if (process.throwDeprecation) {
+ throw new Error(msg);
+ } else if (process.traceDeprecation) {
+ console.trace(msg);
+ } else {
+ console.error(msg);
+ }
+ warned = true;
+ }
+ return fn.apply(this, arguments);
+ }
+
+ return deprecated;
+ };
+
+
+ var debugs = {};
+ var debugEnviron;
+ exports.debuglog = function(set) {
+ if (isUndefined(debugEnviron))
+ debugEnviron = process.env.NODE_DEBUG || '';
+ set = set.toUpperCase();
+ if (!debugs[set]) {
+ if (new RegExp('\\b' + set + '\\b', 'i').test(debugEnviron)) {
+ var pid = process.pid;
+ debugs[set] = function() {
+ var msg = exports.format.apply(exports, arguments);
+ console.error('%s %d: %s', set, pid, msg);
+ };
+ } else {
+ debugs[set] = function() {};
+ }
+ }
+ return debugs[set];
+ };
+
+
+ /**
+ * Echos the value of a value. Trys to print the value out
+ * in the best way possible given the different types.
+ *
+ * @param {Object} obj The object to print out.
+ * @param {Object} opts Optional options object that alters the output.
+ */
+ /* legacy: obj, showHidden, depth, colors*/
+ function inspect(obj, opts) {
+ // default options
+ var ctx = {
+ seen: [],
+ stylize: stylizeNoColor
+ };
+ // legacy...
+ if (arguments.length >= 3) ctx.depth = arguments[2];
+ if (arguments.length >= 4) ctx.colors = arguments[3];
+ if (isBoolean(opts)) {
+ // legacy...
+ ctx.showHidden = opts;
+ } else if (opts) {
+ // got an "options" object
+ exports._extend(ctx, opts);
+ }
+ // set default options
+ if (isUndefined(ctx.showHidden)) ctx.showHidden = false;
+ if (isUndefined(ctx.depth)) ctx.depth = 2;
+ if (isUndefined(ctx.colors)) ctx.colors = false;
+ if (isUndefined(ctx.customInspect)) ctx.customInspect = true;
+ if (ctx.colors) ctx.stylize = stylizeWithColor;
+ return formatValue(ctx, obj, ctx.depth);
+ }
+ exports.inspect = inspect;
+
+
+ // http://en.wikipedia.org/wiki/ANSI_escape_code#graphics
+ inspect.colors = {
+ 'bold' : [1, 22],
+ 'italic' : [3, 23],
+ 'underline' : [4, 24],
+ 'inverse' : [7, 27],
+ 'white' : [37, 39],
+ 'grey' : [90, 39],
+ 'black' : [30, 39],
+ 'blue' : [34, 39],
+ 'cyan' : [36, 39],
+ 'green' : [32, 39],
+ 'magenta' : [35, 39],
+ 'red' : [31, 39],
+ 'yellow' : [33, 39]
+ };
+
+ // Don't use 'blue' not visible on cmd.exe
+ inspect.styles = {
+ 'special': 'cyan',
+ 'number': 'yellow',
+ 'boolean': 'yellow',
+ 'undefined': 'grey',
+ 'null': 'bold',
+ 'string': 'green',
+ 'date': 'magenta',
+ // "name": intentionally not styling
+ 'regexp': 'red'
+ };
+
+
+ function stylizeWithColor(str, styleType) {
+ var style = inspect.styles[styleType];
+
+ if (style) {
+ return '\u001b[' + inspect.colors[style][0] + 'm' + str +
+ '\u001b[' + inspect.colors[style][1] + 'm';
+ } else {
+ return str;
+ }
+ }
+
+
+ function stylizeNoColor(str, styleType) {
+ return str;
+ }
+
+
+ function arrayToHash(array) {
+ var hash = {};
+
+ array.forEach(function(val, idx) {
+ hash[val] = true;
+ });
+
+ return hash;
+ }
+
+
+ function formatValue(ctx, value, recurseTimes) {
+ // Provide a hook for user-specified inspect functions.
+ // Check that value is an object with an inspect function on it
+ if (ctx.customInspect &&
+ value &&
+ isFunction(value.inspect) &&
+ // Filter out the util module, it's inspect function is special
+ value.inspect !== exports.inspect &&
+ // Also filter out any prototype objects using the circular check.
+ !(value.constructor && value.constructor.prototype === value)) {
+ var ret = value.inspect(recurseTimes, ctx);
+ if (!isString(ret)) {
+ ret = formatValue(ctx, ret, recurseTimes);
+ }
+ return ret;
+ }
+
+ // Primitive types cannot have properties
+ var primitive = formatPrimitive(ctx, value);
+ if (primitive) {
+ return primitive;
+ }
+
+ // Look up the keys of the object.
+ var keys = Object.keys(value);
+ var visibleKeys = arrayToHash(keys);
+
+ if (ctx.showHidden) {
+ keys = Object.getOwnPropertyNames(value);
+ }
+
+ // IE doesn't make error fields non-enumerable
+ // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx
+ if (isError(value)
+ && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {
+ return formatError(value);
+ }
+
+ // Some type of object without properties can be shortcutted.
+ if (keys.length === 0) {
+ if (isFunction(value)) {
+ var name = value.name ? ': ' + value.name : '';
+ return ctx.stylize('[Function' + name + ']', 'special');
+ }
+ if (isRegExp(value)) {
+ return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
+ }
+ if (isDate(value)) {
+ return ctx.stylize(Date.prototype.toString.call(value), 'date');
+ }
+ if (isError(value)) {
+ return formatError(value);
+ }
+ }
+
+ var base = '', array = false, braces = ['{', '}'];
+
+ // Make Array say that they are Array
+ if (isArray(value)) {
+ array = true;
+ braces = ['[', ']'];
+ }
+
+ // Make functions say that they are functions
+ if (isFunction(value)) {
+ var n = value.name ? ': ' + value.name : '';
+ base = ' [Function' + n + ']';
+ }
+
+ // Make RegExps say that they are RegExps
+ if (isRegExp(value)) {
+ base = ' ' + RegExp.prototype.toString.call(value);
+ }
+
+ // Make dates with properties first say the date
+ if (isDate(value)) {
+ base = ' ' + Date.prototype.toUTCString.call(value);
+ }
+
+ // Make error with message first say the error
+ if (isError(value)) {
+ base = ' ' + formatError(value);
+ }
+
+ if (keys.length === 0 && (!array || value.length == 0)) {
+ return braces[0] + base + braces[1];
+ }
+
+ if (recurseTimes < 0) {
+ if (isRegExp(value)) {
+ return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');
+ } else {
+ return ctx.stylize('[Object]', 'special');
+ }
+ }
+
+ ctx.seen.push(value);
+
+ var output;
+ if (array) {
+ output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);
+ } else {
+ output = keys.map(function(key) {
+ return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);
+ });
+ }
+
+ ctx.seen.pop();
+
+ return reduceToSingleString(output, base, braces);
+ }
+
+
+ function formatPrimitive(ctx, value) {
+ if (isUndefined(value))
+ return ctx.stylize('undefined', 'undefined');
+ if (isString(value)) {
+ var simple = '\'' + JSON.stringify(value).replace(/^"|"$/g, '')
+ .replace(/'/g, "\\'")
+ .replace(/\\"/g, '"') + '\'';
+ return ctx.stylize(simple, 'string');
+ }
+ if (isNumber(value))
+ return ctx.stylize('' + value, 'number');
+ if (isBoolean(value))
+ return ctx.stylize('' + value, 'boolean');
+ // For some reason typeof null is "object", so special case here.
+ if (isNull(value))
+ return ctx.stylize('null', 'null');
+ }
+
+
+ function formatError(value) {
+ return '[' + Error.prototype.toString.call(value) + ']';
+ }
+
+
+ function formatArray(ctx, value, recurseTimes, visibleKeys, keys) {
+ var output = [];
+ for (var i = 0, l = value.length; i < l; ++i) {
+ if (hasOwnProperty(value, String(i))) {
+ output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
+ String(i), true));
+ } else {
+ output.push('');
+ }
+ }
+ keys.forEach(function(key) {
+ if (!key.match(/^\d+$/)) {
+ output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,
+ key, true));
+ }
+ });
+ return output;
+ }
+
+
+ function formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {
+ var name, str, desc;
+ desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };
+ if (desc.get) {
+ if (desc.set) {
+ str = ctx.stylize('[Getter/Setter]', 'special');
+ } else {
+ str = ctx.stylize('[Getter]', 'special');
+ }
+ } else {
+ if (desc.set) {
+ str = ctx.stylize('[Setter]', 'special');
+ }
+ }
+ if (!hasOwnProperty(visibleKeys, key)) {
+ name = '[' + key + ']';
+ }
+ if (!str) {
+ if (ctx.seen.indexOf(desc.value) < 0) {
+ if (isNull(recurseTimes)) {
+ str = formatValue(ctx, desc.value, null);
+ } else {
+ str = formatValue(ctx, desc.value, recurseTimes - 1);
+ }
+ if (str.indexOf('\n') > -1) {
+ if (array) {
+ str = str.split('\n').map(function(line) {
+ return ' ' + line;
+ }).join('\n').substr(2);
+ } else {
+ str = '\n' + str.split('\n').map(function(line) {
+ return ' ' + line;
+ }).join('\n');
+ }
+ }
+ } else {
+ str = ctx.stylize('[Circular]', 'special');
+ }
+ }
+ if (isUndefined(name)) {
+ if (array && key.match(/^\d+$/)) {
+ return str;
+ }
+ name = JSON.stringify('' + key);
+ if (name.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)) {
+ name = name.substr(1, name.length - 2);
+ name = ctx.stylize(name, 'name');
+ } else {
+ name = name.replace(/'/g, "\\'")
+ .replace(/\\"/g, '"')
+ .replace(/(^"|"$)/g, "'");
+ name = ctx.stylize(name, 'string');
+ }
+ }
+
+ return name + ': ' + str;
+ }
+
+
+ function reduceToSingleString(output, base, braces) {
+ var numLinesEst = 0;
+ var length = output.reduce(function(prev, cur) {
+ numLinesEst++;
+ if (cur.indexOf('\n') >= 0) numLinesEst++;
+ return prev + cur.replace(/\u001b\[\d\d?m/g, '').length + 1;
+ }, 0);
+
+ if (length > 60) {
+ return braces[0] +
+ (base === '' ? '' : base + '\n ') +
+ ' ' +
+ output.join(',\n ') +
+ ' ' +
+ braces[1];
+ }
+
+ return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];
+ }
+
+
+ // NOTE: These type checking functions intentionally don't use `instanceof`
+ // because it is fragile and can be easily faked with `Object.create()`.
+ function isArray(ar) {
+ return Array.isArray(ar);
+ }
+ exports.isArray = isArray;
+
+ function isBoolean(arg) {
+ return typeof arg === 'boolean';
+ }
+ exports.isBoolean = isBoolean;
+
+ function isNull(arg) {
+ return arg === null;
+ }
+ exports.isNull = isNull;
+
+ function isNullOrUndefined(arg) {
+ return arg == null;
+ }
+ exports.isNullOrUndefined = isNullOrUndefined;
+
+ function isNumber(arg) {
+ return typeof arg === 'number';
+ }
+ exports.isNumber = isNumber;
+
+ function isString(arg) {
+ return typeof arg === 'string';
+ }
+ exports.isString = isString;
+
+ function isSymbol(arg) {
+ return typeof arg === 'symbol';
+ }
+ exports.isSymbol = isSymbol;
+
+ function isUndefined(arg) {
+ return arg === void 0;
+ }
+ exports.isUndefined = isUndefined;
+
+ function isRegExp(re) {
+ return isObject(re) && objectToString(re) === '[object RegExp]';
+ }
+ exports.isRegExp = isRegExp;
+
+ function isObject(arg) {
+ return typeof arg === 'object' && arg !== null;
+ }
+ exports.isObject = isObject;
+
+ function isDate(d) {
+ return isObject(d) && objectToString(d) === '[object Date]';
+ }
+ exports.isDate = isDate;
+
+ function isError(e) {
+ return isObject(e) &&
+ (objectToString(e) === '[object Error]' || e instanceof Error);
+ }
+ exports.isError = isError;
+
+ function isFunction(arg) {
+ return typeof arg === 'function';
+ }
+ exports.isFunction = isFunction;
+
+ function isPrimitive(arg) {
+ return arg === null ||
+ typeof arg === 'boolean' ||
+ typeof arg === 'number' ||
+ typeof arg === 'string' ||
+ typeof arg === 'symbol' || // ES6 symbol
+ typeof arg === 'undefined';
+ }
+ exports.isPrimitive = isPrimitive;
+
+ exports.isBuffer = __webpack_require__(387);
+
+ function objectToString(o) {
+ return Object.prototype.toString.call(o);
+ }
+
+
+ function pad(n) {
+ return n < 10 ? '0' + n.toString(10) : n.toString(10);
+ }
+
+
+ var months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',
+ 'Oct', 'Nov', 'Dec'];
+
+ // 26 Feb 16:19:34
+ function timestamp() {
+ var d = new Date();
+ var time = [pad(d.getHours()),
+ pad(d.getMinutes()),
+ pad(d.getSeconds())].join(':');
+ return [d.getDate(), months[d.getMonth()], time].join(' ');
+ }
+
+
+ // log is just a thin wrapper to console.log that prepends a timestamp
+ exports.log = function() {
+ console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));
+ };
+
+
+ /**
+ * Inherit the prototype methods from one constructor into another.
+ *
+ * The Function.prototype.inherits from lang.js rewritten as a standalone
+ * function (not on Function.prototype). NOTE: If this file is to be loaded
+ * during bootstrapping this function needs to be rewritten using some native
+ * functions as prototype setup using normal JavaScript does not work as
+ * expected during bootstrapping (see mirror.js in r114903).
+ *
+ * @param {function} ctor Constructor function which needs to inherit the
+ * prototype.
+ * @param {function} superCtor Constructor function to inherit prototype from.
+ */
+ exports.inherits = __webpack_require__(388);
+
+ exports._extend = function(origin, add) {
+ // Don't do anything if add isn't an object
+ if (!add || !isObject(add)) return origin;
+
+ var keys = Object.keys(add);
+ var i = keys.length;
+ while (i--) {
+ origin[keys[i]] = add[keys[i]];
+ }
+ return origin;
+ };
+
+ function hasOwnProperty(obj, prop) {
+ return Object.prototype.hasOwnProperty.call(obj, prop);
+ }
+
+ /* WEBPACK VAR INJECTION */}.call(exports, (function() { return this; }()), __webpack_require__(1)))
+
+/***/ },
+/* 387 */
+/***/ function(module, exports) {
+
+ module.exports = function isBuffer(arg) {
+ return arg && typeof arg === 'object'
+ && typeof arg.copy === 'function'
+ && typeof arg.fill === 'function'
+ && typeof arg.readUInt8 === 'function';
+ }
+
+/***/ },
+/* 388 */
+/***/ function(module, exports) {
+
+ if (typeof Object.create === 'function') {
+ // implementation from standard node.js 'util' module
+ module.exports = function inherits(ctor, superCtor) {
+ ctor.super_ = superCtor
+ ctor.prototype = Object.create(superCtor.prototype, {
+ constructor: {
+ value: ctor,
+ enumerable: false,
+ writable: true,
+ configurable: true
+ }
+ });
+ };
+ } else {
+ // old school shim for old browsers
+ module.exports = function inherits(ctor, superCtor) {
+ ctor.super_ = superCtor
+ var TempCtor = function () {}
+ TempCtor.prototype = superCtor.prototype
+ ctor.prototype = new TempCtor()
+ ctor.prototype.constructor = ctor
+ }
+ }
+
+
+/***/ }
+]);
+//# sourceMappingURL=app.uhk.js.map
\ No newline at end of file
diff --git a/app.uhk.js.map b/app.uhk.js.map
new file mode 100644
index 00000000..16f6d726
--- /dev/null
+++ b/app.uhk.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///./web/src/main.ts","webpack:///./web/src/app.module.ts","webpack:///./~/@ngrx/store-devtools/bundles/store-devtools.umd.js","webpack:///./~/@ngrx/store-log-monitor/bundles/store-log-monitor.umd.js","webpack:///./~/@ngrx/core/operator/select.js","webpack:///./~/@ngrx/core/compose.js","webpack:///./~/ng2-dragula/ng2-dragula.js","webpack:///./~/ng2-select2/ng2-select2.js","webpack:///./~/ng2-select2/ng2-select2.component.js","webpack:///./shared/src/components/add-on/index.ts","webpack:///./shared/src/components/add-on/add-on.component.ts","webpack:///./shared/src/components/add-on/add-on.component.html","webpack:///./shared/src/components/add-on/add-on.component.scss","webpack:///./shared/src/components/add-on/add-on.routes.ts","webpack:///./shared/src/components/keyboard/slider/index.ts","webpack:///./shared/src/components/keyboard/slider/keyboard-slider.component.ts","webpack:///./shared/src/components/keyboard/slider/keyboard-slider.component.html","webpack:///./shared/src/components/keyboard/slider/keyboard-slider.component.scss","webpack:///./shared/src/components/keymap/index.ts","webpack:///./shared/src/components/keymap/add/keymap-add.component.ts","webpack:///./shared/src/store/actions/index.ts","webpack:///./shared/src/store/actions/keymap.ts","webpack:///./shared/src/store/actions/macro.ts","webpack:///./shared/src/components/keymap/add/keymap-add.component.html","webpack:///./shared/src/components/keymap/add/keymap-add.component.scss","webpack:///./shared/src/components/keymap/edit/keymap-edit.component.ts","webpack:///./~/@ngrx/core/add/operator/select.js","webpack:///./~/filesaver.js/FileSaver.min.js","webpack:///(webpack)/buildin/amd-define.js","webpack:///./shared/src/store/reducers/user-configuration.ts","webpack:///./shared/src/config-serializer/config-items/key-action/index.ts","webpack:///./shared/src/config-serializer/config-items/key-action/KeyAction.ts","webpack:///./shared/src/config-serializer/config-items/key-action/KeystrokeAction.ts","webpack:///./shared/src/config-serializer/assert.ts","webpack:///./shared/src/config-serializer/config-items/LongPressAction.ts","webpack:///./shared/src/config-serializer/config-items/key-action/MouseAction.ts","webpack:///./shared/src/config-serializer/config-items/key-action/NoneAction.ts","webpack:///./shared/src/config-serializer/config-items/key-action/PlayMacroAction.ts","webpack:///./shared/src/config-serializer/config-items/key-action/SwitchKeymapAction.ts","webpack:///./shared/src/config-serializer/config-items/key-action/SwitchLayerAction.ts","webpack:///./shared/src/config-serializer/config-items/key-action/helper.ts","webpack:///./shared/src/config-serializer/UhkBuffer.ts","webpack:///./shared/src/config-serializer/config-items/Keymap.ts","webpack:///./shared/src/config-serializer/config-items/Layer.ts","webpack:///./shared/src/config-serializer/config-items/Module.ts","webpack:///./shared/src/config-serializer/config-items/Macro.ts","webpack:///./shared/src/config-serializer/config-items/macro-action/index.ts","webpack:///./shared/src/config-serializer/config-items/macro-action/DelayMacroAction.ts","webpack:///./shared/src/config-serializer/config-items/macro-action/MacroAction.ts","webpack:///./shared/src/config-serializer/config-items/macro-action/EditableMacroAction.ts","webpack:///./shared/src/config-serializer/config-items/macro-action/KeyMacroAction.ts","webpack:///./shared/src/config-serializer/config-items/macro-action/MouseButtonMacroAction.ts","webpack:///./shared/src/config-serializer/config-items/macro-action/MoveMouseMacroAction.ts","webpack:///./shared/src/config-serializer/config-items/macro-action/ScrollMouseMacroAction.ts","webpack:///./shared/src/config-serializer/config-items/macro-action/TextMacroAction.ts","webpack:///./shared/src/config-serializer/config-items/macro-action/helper.ts","webpack:///./shared/src/config-serializer/config-items/UserConfiguration.ts","webpack:///./shared/src/config-serializer/config-items/ModuleConfiguration.ts","webpack:///./shared/src/components/keymap/edit/keymap-edit.component.html","webpack:///./shared/src/components/keymap/edit/keymap-edit.component.scss","webpack:///./shared/src/components/keymap/header/keymap-header.component.ts","webpack:///./shared/src/components/keymap/header/keymap-header.component.html","webpack:///./shared/src/components/keymap/header/keymap-header.component.scss","webpack:///./shared/src/components/layers/index.ts","webpack:///./shared/src/components/layers/layers.component.ts","webpack:///./shared/src/components/layers/layers.component.html","webpack:///./shared/src/components/layers/layers.component.scss","webpack:///./shared/src/components/macro/index.ts","webpack:///./shared/src/components/macro/edit/macro-edit.component.ts","webpack:///./shared/src/components/macro/edit/macro-edit.component.html","webpack:///./shared/src/components/macro/edit/macro-edit.component.scss","webpack:///./shared/src/components/macro/list/macro-list.component.ts","webpack:///./shared/src/components/macro/list/macro-list.component.html","webpack:///./shared/src/components/macro/list/macro-list.component.scss","webpack:///./shared/src/components/macro/header/macro-header.component.ts","webpack:///./shared/src/components/macro/header/macro-header.component.html","webpack:///./shared/src/components/macro/header/macro-header.component.scss","webpack:///./shared/src/components/macro/macro.routes.ts","webpack:///./shared/src/components/macro/not-found/index.ts","webpack:///./shared/src/components/macro/not-found/macro-not-found.component.ts","webpack:///./shared/src/components/macro/not-found/macro-not-found.component.html","webpack:///./shared/src/components/macro/not-found/macro-not-found.component.scss","webpack:///./shared/src/components/macro/not-found/macro-not-found-guard.service.ts","webpack:///./shared/src/components/macro/item/index.ts","webpack:///./shared/src/components/macro/item/macro-item.component.ts","webpack:///./shared/src/config-serializer/config-items/KeyModifiers.ts","webpack:///./shared/src/services/mapper.service.ts","webpack:///./shared/src/components/macro/item/macro-item.component.html","webpack:///./shared/src/components/macro/item/macro-item.component.scss","webpack:///./shared/src/components/macro/action-editor/index.ts","webpack:///./shared/src/components/macro/action-editor/macro-action-editor.component.ts","webpack:///./shared/src/components/macro/action-editor/macro-action-editor.component.html","webpack:///./shared/src/components/macro/action-editor/macro-action-editor.component.scss","webpack:///./shared/src/components/macro/action-editor/tab/index.ts","webpack:///./shared/src/components/macro/action-editor/tab/delay/index.ts","webpack:///./shared/src/components/macro/action-editor/tab/delay/macro-delay.component.ts","webpack:///./shared/src/components/macro/action-editor/tab/delay/macro-delay.component.html","webpack:///./shared/src/components/macro/action-editor/tab/delay/macro-delay.component.scss","webpack:///./shared/src/components/macro/action-editor/tab/key/index.ts","webpack:///./shared/src/components/macro/action-editor/tab/key/macro-key.component.ts","webpack:///./shared/src/components/popover/tab/index.ts","webpack:///./shared/src/components/popover/tab/tab.ts","webpack:///./shared/src/components/popover/tab/keymap/index.ts","webpack:///./shared/src/components/popover/tab/keymap/keymap-tab.component.ts","webpack:///./shared/src/components/popover/tab/keymap/keymap-tab.component.html","webpack:///./shared/src/components/popover/tab/keymap/keymap-tab.component.scss","webpack:///./shared/src/components/popover/tab/keypress/index.ts","webpack:///./shared/src/components/popover/tab/keypress/keypress-tab.component.ts","webpack:///./shared/src/components/popover/tab/keypress/scancodes.json","webpack:///./shared/src/components/popover/tab/keypress/longPress.json","webpack:///./shared/src/components/popover/tab/keypress/keypress-tab.component.html","webpack:///./shared/src/components/popover/tab/keypress/keypress-tab.component.scss","webpack:///./shared/src/components/popover/tab/layer/index.ts","webpack:///./shared/src/components/popover/tab/layer/layer-tab.component.ts","webpack:///./shared/src/components/popover/tab/layer/layer-tab.component.html","webpack:///./shared/src/components/popover/tab/layer/layer-tab.component.scss","webpack:///./shared/src/components/popover/tab/macro/index.ts","webpack:///./shared/src/components/popover/tab/macro/macro-tab.component.ts","webpack:///./shared/src/components/popover/tab/macro/macro-tab.component.html","webpack:///./shared/src/components/popover/tab/macro/macro-tab.component.scss","webpack:///./shared/src/components/popover/tab/mouse/index.ts","webpack:///./shared/src/components/popover/tab/mouse/mouse-tab.component.ts","webpack:///./shared/src/components/popover/tab/mouse/mouse-tab.component.html","webpack:///./shared/src/components/popover/tab/mouse/mouse-tab.component.scss","webpack:///./shared/src/components/popover/tab/none/index.ts","webpack:///./shared/src/components/popover/tab/none/none-tab.component.ts","webpack:///./shared/src/components/popover/tab/none/none-tab.component.html","webpack:///./shared/src/components/popover/tab/none/none-tab.component.scss","webpack:///./shared/src/components/macro/action-editor/tab/key/macro-key.component.html","webpack:///./shared/src/components/macro/action-editor/tab/key/macro-key.component.scss","webpack:///./shared/src/components/macro/action-editor/tab/mouse/index.ts","webpack:///./shared/src/components/macro/action-editor/tab/mouse/macro-mouse.component.ts","webpack:///./shared/src/components/macro/action-editor/tab/mouse/macro-mouse.component.html","webpack:///./shared/src/components/macro/action-editor/tab/mouse/macro-mouse.component.scss","webpack:///./shared/src/components/macro/action-editor/tab/text/index.ts","webpack:///./shared/src/components/macro/action-editor/tab/text/macro-text.component.ts","webpack:///./shared/src/components/macro/action-editor/tab/text/macro-text.component.html","webpack:///./shared/src/components/macro/action-editor/tab/text/macro-text.component.scss","webpack:///./shared/src/components/notification/index.ts","webpack:///./shared/src/components/notification/notification.component.ts","webpack:///./shared/src/components/notification/notification.component.html","webpack:///./shared/src/components/notification/notification.component.scss","webpack:///./shared/src/components/popover/index.ts","webpack:///./shared/src/components/popover/popover.component.ts","webpack:///./shared/src/components/popover/popover.component.html","webpack:///./shared/src/components/popover/popover.component.scss","webpack:///./shared/src/components/popover/widgets/capture-keystroke/index.ts","webpack:///./shared/src/components/popover/widgets/capture-keystroke/capture-keystroke-button.component.ts","webpack:///./shared/src/services/capture.service.ts","webpack:///./shared/src/components/popover/widgets/capture-keystroke/capture-keystroke-button.component.html","webpack:///./shared/src/components/popover/widgets/capture-keystroke/capture-keystroke-button.component.scss","webpack:///./shared/src/components/popover/widgets/icon/index.ts","webpack:///./shared/src/components/popover/widgets/icon/icon.component.ts","webpack:///./shared/src/components/popover/widgets/icon/icon.component.html","webpack:///./shared/src/components/popover/widgets/icon/icon.component.scss","webpack:///./shared/src/components/settings/index.ts","webpack:///./shared/src/components/settings/settings.component.ts","webpack:///./shared/src/components/settings/settings.component.html","webpack:///./shared/src/components/settings/settings.component.scss","webpack:///./shared/src/components/settings/settings.routes.ts","webpack:///./shared/src/components/side-menu/index.ts","webpack:///./shared/src/components/side-menu/side-menu.component.ts","webpack:///./shared/src/components/side-menu/side-menu.component.html","webpack:///./shared/src/components/side-menu/side-menu.component.scss","webpack:///./shared/src/components/svg/keyboard/index.ts","webpack:///./shared/src/components/svg/keyboard/svg-keyboard.component.ts","webpack:///./shared/src/components/svg/module/index.ts","webpack:///./shared/src/components/svg/module/svg-module.component.ts","webpack:///./shared/src/components/svg/module/svg-module.component.html","webpack:///./shared/src/components/svg/module/svg-module.component.scss","webpack:///./shared/src/components/svg/module/svg-module.model.ts","webpack:///./images/base-layer.svg","webpack:///./shared/src/components/svg/keyboard/svg-keyboard.component.html","webpack:///./shared/src/components/svg/keyboard/svg-keyboard.component.scss","webpack:///./shared/src/components/svg/keys/index.ts","webpack:///./shared/src/components/svg/keys/svg-icon-text-key/index.ts","webpack:///./shared/src/components/svg/keys/svg-icon-text-key/svg-icon-text-key.component.ts","webpack:///./shared/src/components/svg/keys/svg-icon-text-key/svg-icon-text-key.component.html","webpack:///./shared/src/components/svg/keys/svg-keyboard-key/index.ts","webpack:///./shared/src/components/svg/keys/svg-keyboard-key/svg-keyboard-key.component.ts","webpack:///./shared/src/components/svg/keys/svg-keyboard-key/svg-keyboard-key.component.html","webpack:///./shared/src/components/svg/keys/svg-keyboard-key/svg-keyboard-key.component.scss","webpack:///./shared/src/components/svg/keys/svg-keystroke-key/index.ts","webpack:///./shared/src/components/svg/keys/svg-keystroke-key/svg-keystroke-key.component.ts","webpack:///./shared/src/components/svg/keys/svg-keystroke-key/svg-keystroke-key.component.html","webpack:///./shared/src/components/svg/keys/svg-keystroke-key/svg-keystroke-key.component.scss","webpack:///./shared/src/components/svg/keys/svg-mouse-key/index.ts","webpack:///./shared/src/components/svg/keys/svg-mouse-key/svg-mouse-key.ts","webpack:///./shared/src/components/svg/keys/svg-mouse-key/svg-mouse-key.html","webpack:///./shared/src/components/svg/keys/svg-mouse-click-key/index.ts","webpack:///./shared/src/components/svg/keys/svg-mouse-click-key/svg-mouse-click-key.ts","webpack:///./shared/src/components/svg/keys/svg-mouse-click-key/svg-mouse-click-key.html","webpack:///./shared/src/components/svg/keys/svg-mouse-move-key/index.ts","webpack:///./shared/src/components/svg/keys/svg-mouse-move-key/svg-mouse-move-key.ts","webpack:///./shared/src/components/svg/keys/svg-mouse-move-key/svg-mouse-move-key.html","webpack:///./shared/src/components/svg/keys/svg-mouse-speed-key/index.ts","webpack:///./shared/src/components/svg/keys/svg-mouse-speed-key/svg-mouse-speed-key.ts","webpack:///./shared/src/components/svg/keys/svg-mouse-speed-key/svg-mouse-speed-key.html","webpack:///./shared/src/components/svg/keys/svg-mouse-scroll-key/index.ts","webpack:///./shared/src/components/svg/keys/svg-mouse-scroll-key/svg-mouse-scroll-key.ts","webpack:///./shared/src/components/svg/keys/svg-mouse-scroll-key/svg-mouse-scroll-key.html","webpack:///./shared/src/components/svg/keys/svg-one-line-text-key/index.ts","webpack:///./shared/src/components/svg/keys/svg-one-line-text-key/svg-one-line-text-key.component.ts","webpack:///./shared/src/components/svg/keys/svg-one-line-text-key/svg-one-line-text-key.component.html","webpack:///./shared/src/components/svg/keys/svg-single-icon-key/index.ts","webpack:///./shared/src/components/svg/keys/svg-single-icon-key/svg-single-icon-key.component.ts","webpack:///./shared/src/components/svg/keys/svg-single-icon-key/svg-single-icon-key.component.html","webpack:///./shared/src/components/svg/keys/svg-switch-keymap-key/index.ts","webpack:///./shared/src/components/svg/keys/svg-switch-keymap-key/svg-switch-keymap-key.component.ts","webpack:///./shared/src/components/svg/keys/svg-switch-keymap-key/svg-switch-keymap-key.component.html","webpack:///./shared/src/components/svg/keys/svg-text-icon-key/index.ts","webpack:///./shared/src/components/svg/keys/svg-text-icon-key/svg-text-icon-key.component.ts","webpack:///./shared/src/components/svg/keys/svg-text-icon-key/svg-text-icon-key.component.html","webpack:///./shared/src/components/svg/keys/svg-two-line-text-key/index.ts","webpack:///./shared/src/components/svg/keys/svg-two-line-text-key/svg-two-line-text-key.component.ts","webpack:///./shared/src/components/svg/keys/svg-two-line-text-key/svg-two-line-text-key.component.html","webpack:///./shared/src/components/svg/wrap/index.ts","webpack:///./shared/src/components/svg/wrap/svg-keyboard-wrap.component.ts","webpack:///./shared/src/util/index.ts","webpack:///./shared/src/components/svg/wrap/svg-keyboard-wrap.component.html","webpack:///./shared/src/components/svg/wrap/svg-keyboard-wrap.component.scss","webpack:///./web/src/main-app/index.ts","webpack:///./web/src/main-app/main-app.component.ts","webpack:///./web/src/main-app/main-app.component.html","webpack:///./shared/src/main-app/main-app.component.scss","webpack:///./web/src/main-app/main-app.component.scss","webpack:///./web/src/main-app/main-app.routes.ts","webpack:///./web/src/components/keymap/index.ts","webpack:///./web/src/components/keymap/keymap.routes.ts","webpack:///./shared/src/components/keymap/edit/index.ts","webpack:///./shared/src/components/keymap/edit/keymap-edit-guard.service.ts","webpack:///./shared/src/directives/index.ts","webpack:///./shared/src/directives/cancelable/index.ts","webpack:///./shared/src/directives/cancelable/cancelable.directive.ts","webpack:///./shared/src/store/effects/index.ts","webpack:///./shared/src/store/effects/keymap.ts","webpack:///./shared/src/store/effects/macro.ts","webpack:///./shared/src/store/reducers/index.ts","webpack:///./shared/src/store/reducers/preset.ts","webpack:///./shared/src/store/storage/index.ts","webpack:///./shared/src/store/storage/electron.ts","webpack:///./shared/src/store/storage/local.ts","webpack:///./shared/src/config-serializer/user-config.json","webpack:///./shared/src/config-serializer/preset-keymaps.json","webpack:///./~/browser-stdout/index.js","webpack:///./~/stream-browserify/index.js","webpack:///./~/events/events.js","webpack:///./~/inherits/inherits_browser.js","webpack:///./~/readable-stream/readable.js","webpack:///./~/readable-stream/lib/_stream_readable.js","webpack:///./~/process-nextick-args/index.js","webpack:///./~/buffer-shims/index.js","webpack:///./~/core-util-is/lib/util.js","webpack:///util (ignored)","webpack:///./~/readable-stream/lib/internal/streams/BufferList.js","webpack:///./~/readable-stream/lib/_stream_duplex.js","webpack:///./~/readable-stream/lib/_stream_writable.js","webpack:///./~/util-deprecate/browser.js","webpack:///./~/string_decoder/index.js","webpack:///./~/readable-stream/lib/_stream_transform.js","webpack:///./~/readable-stream/lib/_stream_passthrough.js","webpack:///./~/readable-stream/writable.js","webpack:///./~/readable-stream/duplex.js","webpack:///./~/readable-stream/transform.js","webpack:///./~/readable-stream/passthrough.js","webpack:///./~/util/util.js","webpack:///./~/util/support/isBufferBrowser.js","webpack:///./~/util/~/inherits/inherits_browser.js"],"names":[],"mappings":"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CA;AACA,iBAAgB;AAChB,MAAK;AACL;AACA,iBAAgB;AAChB,MAAK;AACL;AACA,iBAAgB;AAChB,MAAK;AACL;AACA,iBAAgB;AAChB,MAAK;AACL;AACA,iBAAgB;AAChB,MAAK;AACL;AACA,iBAAgB;AAChB,MAAK;AACL;AACA,iCAAgC,eAAe;AAC/C,iBAAgB;AAChB,MAAK;AACL;AACA,iBAAgB;AAChB,MAAK;AACL;AACA,iBAAgB;AAChB;AACA;;AAEA;AACA,0CAAyC,iCAAiC,EAAE;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+DAA8D,+BAA+B;AAC7F,qDAAoD,gCAAgC,EAAE;AACtF;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,oFAAmF,mDAAmD,EAAE;AACxI;AACA,mFAAkF,kDAAkD,EAAE;AACtI;AACA;AACA,8DAA6D,sDAAsD,EAAE;AACrH,wDAAuD,2CAA2C,EAAE;AACpG;AACA;AACA;AACA,8DAA6D,oDAAoD,EAAE;AACnH,wDAAuD,2CAA2C,EAAE;AACpG;AACA;AACA;AACA;AACA,qFAAoF,0BAA0B,EAAE;AAChH,2FAA0F,yBAAyB,EAAE;AACrH;AACA;AACA;AACA;AACA;AACA,UAAS,iCAAiC;AAC1C;AACA;AACA;AACA,UAAS,gCAAgC,gEAAgE,IAAI;AAC7G;AACA;AACA,EAAC;;AAED,oBAAmB;AACnB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA0C,4BAA4B;AACtE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAkD;AAClD;AACA,uBAAsB,6BAA6B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA6B,cAAc;AAC3C;AACA;AACA;AACA,gCAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B,wBAAwB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAsE,uCAAuC,EAAE;AAC/G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+EAA8E,0BAA0B,EAAE;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAmC,SAAS;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;;AAEA;AACA;;AAEA;AACA;AACA,oBAAmB,sBAAsB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS,iCAAiC;AAC1C;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uDAAsD;AACtD,qDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS,iCAAiC;AAC1C;AACA;AACA;AACA,UAAS,4BAA4B;AACrC,UAAS,gCAAgC;AACzC,UAAS,6BAA6B;AACtC,UAAS,2BAA2B;AACpC,UAAS,gCAAgC,iEAAiE,IAAI;AAC9G,UAAS,gCAAgC,6DAA6D,IAAI;AAC1G;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA2B;AAC3B;AACA,+BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAkC,eAAe;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAkC,eAAe;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,IAAI;AACrB;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;;AAEA,+CAA8C,cAAc;;AAE5D,EAAC,I;;;;;;;;;;;;;;ACjnBD;AACA;AACA;AACA,8CAA6C,iEAAiE;AAC9G,EAAC,qMAAqM;;AAEtM;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,qBAAoB;AACpB,UAAS;AACT;AACA;AACA;AACA,0CAAyC,IAAI;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,qCAAoC,gBAAgB;AACpD;AACA;AACA;AACA,kBAAiB,IAAI;AACrB;AACA;AACA;AACA;AACA,uBAAsB,4BAA4B;AAClD,sBAAqB,6BAA6B;AAClD;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,4CAA2C,wBAAwB,eAAe,gBAAgB,iBAAiB,kBAAkB,6BAA6B,sBAAsB,OAAO,eAAe,2BAA2B,mBAAmB,+CAA+C,gCAAgC,gBAAgB,eAAe,oBAAoB,qBAAqB,OAAO,uBAAuB,oBAAoB,qBAAqB,uBAAuB,OAAO;AACxf,kBAAiB,IAAI;AACrB;AACA;AACA;AACA;AACA,uBAAsB,4BAA4B;AAClD,mBAAkB,4BAA4B;AAC9C,sBAAqB,4BAA4B;AACjD,2BAA0B,yDAAyD;AACnF,4BAA2B,0DAA0D;AACrF,0BAAyB,wDAAwD;AACjF,6BAA4B,2DAA2D;AACvF;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA,iBAAgB;AAChB;AACA;AACA,iBAAgB;AAChB;AACA;AACA,iBAAgB;AAChB;AACA;AACA,iBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA;AACA,UAAS,iCAAiC;AAC1C;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA,+FAA8F,uBAAuB,EAAE;AACvH,2FAA0F,kBAAkB,EAAE;AAC9G,4FAA2F,mBAAmB,EAAE;AAChH,wFAAuF,eAAe,EAAE;AACxG;AACA;AACA,sHAAqH,mCAAmC,EAAE,iEAAiE,iCAAiC,EAAE;AAC9P;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,kBAAiB,IAAI;AACrB;AACA;AACA;AACA,UAAS,2CAA2C;AACpD,UAAS,qBAAqB;AAC9B;AACA;AACA,4BAA2B,4BAA4B;AACvD,8BAA6B,4BAA4B;AACzD;AACA;AACA,EAAC;;AAED;AACA;AACA,+BAA8B,eAAe;AAC7C;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,gCAA+B,0BAA0B;AACzD;AACA;AACA;AACA;AACA;AACA,gCAA+B,sBAAsB;AACrD;AACA;AACA;AACA;AACA;AACA,gCAA+B,yBAAyB;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;;AAEA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,IAAI;AACrB;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAoC,qBAAqB;AACzD,8CAA6C,2BAA2B,0DAA0D,GAAG;AACrI,+CAA8C,0BAA0B,sCAAsC,GAAG;AACjH,qCAAoC,qBAAqB,aAAa,GAAG;AACzE,kCAAiC,4BAA4B;AAC7D,gCAA+B,uBAAuB;AACtD,yCAAwC,0BAA0B;AAClE,sCAAqC;AACrC;AACA,oEAAmE;AACnE;AACA;AACA,yCAAwC,+BAA+B,EAAE;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAqC,0DAA0D;AAC/F;AACA;AACA;AACA;AACA,qBAAoB;AACpB,UAAS;AACT;AACA;AACA;AACA,qBAAoB;AACpB,UAAS;AACT;AACA;AACA;AACA,qBAAoB;AACpB,UAAS;AACT;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,4CAA2C,uBAAuB,kCAAkC,2BAA2B,uBAAuB,uEAAuE,OAAO,2BAA2B,2BAA2B,iBAAiB,kBAAkB,wBAAwB,oCAAoC,OAAO,uCAAuC,iCAAiC,OAAO,0BAA0B,sBAAsB,wBAAwB,OAAO,+BAA+B,kCAAkC,OAAO,qBAAqB,uBAAuB,OAAO,mEAAmE,uBAAuB,OAAO,wEAAwE,uBAAuB,OAAO;AACh2B,4MAA2M,OAAO,+DAA+D,SAAS;AAC1R,kBAAiB,IAAI;AACrB;AACA;AACA;AACA;AACA,kBAAiB,4BAA4B;AAC7C,uBAAsB,4BAA4B;AAClD,oBAAmB,4BAA4B;AAC/C;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;AACL;AACA,UAAS;AACT;AACA;AACA,kBAAiB,IAAI;AACrB;AACA;AACA;AACA;AACA,uBAAsB,4BAA4B;AAClD,oBAAmB,4BAA4B;AAC/C;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,IAAI;AACrB;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA,sGAAqG,uCAAuC,EAAE;AAC9I,qGAAoG,yCAAyC,EAAE;AAC/I,sGAAqG,uCAAuC,EAAE;AAC9I;AACA;AACA;AACA,4BAA2B,4BAA4B;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,4CAA2C,uBAAuB,kCAAkC,uEAAuE,2BAA2B,2BAA2B,oBAAoB,qBAAqB,yBAAyB,uBAAuB,OAAO,qBAAqB,2BAA2B,iCAAiC,mCAAmC,kCAAkC,mBAAmB,sBAAsB,4BAA4B,uBAAuB,OAAO,mBAAmB,2BAA2B,gBAAgB,iBAAiB,kBAAkB,kBAAkB,2BAA2B,yBAAyB,OAAO;AACxuB,+oBAA8oB;AAC9oB,kBAAiB,IAAI;AACrB;AACA;AACA;AACA,UAAS,2CAA2C;AACpD;AACA;AACA,4BAA2B,4BAA4B;AACvD;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,gCAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,2CAA0C,qBAAqB,8BAA8B,uEAAuE,wBAAwB,0BAA0B,2BAA2B,yBAAyB,gCAAgC,yBAAyB,qBAAqB,8BAA8B,kCAAkC,OAAO,uBAAuB,qBAAqB,qBAAqB,sCAAsC,OAAO;AAC7gB,kBAAiB,IAAI;AACrB;AACA;AACA;AACA;AACA,uBAAsB,6DAA6D,GAAG,4BAA4B;AAClH,qBAAoB,6BAA6B;AACjD,2BAA0B,iEAAiE;AAC3F;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,MAAK;AACL;AACA;AACA,+BAA8B,yBAAyB;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA,4EAA2E,4BAA4B,wCAAwC,oBAAoB;AACnK,2CAA0C,uBAAuB,kCAAkC,wBAAwB,OAAO,iBAAiB,gCAAgC,0CAA0C,OAAO,kBAAkB,sBAAsB,OAAO,iBAAiB,sCAAsC,2BAA2B,qBAAqB,OAAO;AACjY,kBAAiB,IAAI;AACrB;AACA;AACA;AACA;AACA,4BAA2B,4BAA4B;AACvD,uBAAsB,4BAA4B;AAClD,mBAAkB,4BAA4B;AAC9C,qBAAoB,6BAA6B;AACjD;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB,IAAI;AACrB;AACA;AACA;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,kBAAiB,IAAI;AACrB;AACA;AACA;AACA;AACA,4BAA2B,4BAA4B;AACvD,8BAA6B,4BAA4B;AACzD,4BAA2B,4BAA4B;AACvD;AACA;AACA,EAAC;;AAED;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;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CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uEAAsE,gBAAgB;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,kD;;;;;;;;;;;;;;;ACxKA,mCAAmC;AACnC,oCAAgC;;;;;;;;;;;;;;;;;ACDhC,qCAA0C;AAC1C,wCAAiD;AAYjD,KAAa,cAAc;KAGvB,wBAAoB,KAAqB;SAArB,UAAK,GAAL,KAAK,CAAgB;SACrC,IAAI,CAAC,KAAK,GAAG,KAAK;cACb,MAAM;cACN,MAAM,CAAS,MAAM,CAAC,CAAC;KAChC,CAAC;KACL,qBAAC;AAAD,EAAC;AARY,eAAc;KAR1B,gBAAS,CAAC;SACP,QAAQ,EAAE,QAAQ;SAClB,QAAQ,EAAE,mBAAO,CAAC,GAAyB,CAAC;SAC5C,MAAM,EAAE,CAAC,mBAAO,CAAC,GAAyB,CAAC,CAAC;SAC5C,IAAI,EAAE;aACF,OAAO,EAAE,iBAAiB;UAC7B;MACJ,CAAC;sCAI6B,uBAAc;IAHhC,cAAc,CAQ1B;AARY,yCAAc;;;;;;;;;;;;;;;;;;;;;;ACb3B,4LAA2L,iBAAiB,iD;;;;;;ACA5M,0BAAyB,gBAAgB,iBAAiB,mBAAmB,EAAE,G;;;;;;;ACE/E,kDAAoD;AAEvC,oBAAW,GAAW;KAC/B;SA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I,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SACnC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SACnC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SACnC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SACnC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SACnC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SACnC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SACpC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SACpC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SACpC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SACpC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SACpC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SACpC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SACpC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SACpC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SACpC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SACpC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SACpC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SACpC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SACpC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SACpC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SACpC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SACpC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SACpC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SACpC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SACpC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SACpC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;SACzC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;SACzC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;SACzC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;SACzC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;SACzC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;SACzC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,C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KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA,iBAAgB;AAChB,KAAI;AACJ;AACA;AACA,iBAAgB;AAChB,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA,eAAc;AACd,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,G;;;;;;ACjlBA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA,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,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAG,IAAI;SAC/B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAG,IAAI;SAC/B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAG,IAAI;SAC/B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAG,IAAI;SAC/B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAE,IAAI;SAC/B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAE,IAAI;SAC/B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAE,IAAI;SAC/B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAE,IAAI;SAC/B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAE,IAAI;SAC/B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAE,IAAI;SAC/B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAE,IAAI;SAC/B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAE,IAAI;SAC/B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAE,IAAI;SAC/B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAE,IAAI;SAC/B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAE,IAAI;SAC/B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAE,IAAI;SAC/B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAE,IAAI;SAC/B,IAAI,CAAC,OAAO,CA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C,CAAC;KAC1E,CAAC;KACL,YAAC;AAAD,EAAC;AArBY,uBAAK;;;;;;;ACFlB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA,G;;;;;;AC7gDA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA,SAAQ;AACR;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAE;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAI;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,OAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,G;;;;;;AC5tDA;AACA;;AAEA;;;AAGA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;;;;;;;;ACxBA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;;AAIA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,gBAAe;AACf;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;;;;;;AC9HA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAiB;AACjB,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,gBAAe,SAAS;AACxB;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,IAAG;AACH,qBAAoB,SAAS;AAC7B;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;AC7SA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;ACtBA;AACA;AACA,qCAAkC;AAClC,IAAG;AACH,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;ACfA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG,aAAa;AAChB;AACA;AACA,EAAC;AACD;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA,4EAA2E,6EAA6E;AACxJ;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA,uDAAsD;;AAEtD;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6EAA4E;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA,8DAA6D;AAC7D;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,uCAAsC;;AAEtC;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA2D;AAC3D;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAY;AACZ;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,gDAA+C;;AAE/C;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,oBAAmB,SAAS;AAC5B;AACA,MAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,IAAG;;AAEH;AACA;AACA;;AAEA;AACA,6EAA4E;;AAE5E;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,oDAAmD;AACnD;AACA,oDAAmD,iEAAiE;AACpH;AACA,IAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAsC;AACtC;AACA;AACA;AACA;AACA,wCAAuC;AACvC,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAuC;AACvC,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA,iCAAgC,OAAO;AACvC;AACA;AACA;;AAEA;AACA,iCAAgC,OAAO;AACvC;AACA;AACA;AACA,E;;;;;;;AC56BA;;AAEA;AACA;AACA;AACA;AACA,EAAC;AACD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;;;;;;;;;AC1CA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;AC3GA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;;;;;;;AC1GA,gB;;;;;;ACAA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA,gBAAe;AACf,+CAA8C;AAC9C;AACA;AACA;;AAEA;AACA,gBAAe;AACf;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,uDAAsD;AACtD;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,G;;;;;;AC/DA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA,gBAAe,iBAAiB;AAChC;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,iCAAgC,OAAO;AACvC;AACA;AACA,E;;;;;;AC1EA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,IAAG,aAAa;AAChB;AACA;AACA,EAAC;AACD;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP,MAAK;AACL,IAAG;AACH,EAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,IAAG;AACH,EAAC;AACD;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,mDAAkD;;AAElD;;AAEA,4CAA2C;AAC3C;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,IAAG;AACH;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,oDAAmD;AACnD;AACA;;AAEA;AACA;AACA,qCAAoC;;AAEpC;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA,qDAAoD;AACpD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,6CAA4C;AAC5C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA,E;;;;;;;;ACxiBA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB,YAAW,OAAO;AAClB,cAAa,SAAS;AACtB;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA,YAAW,OAAO;AAClB,cAAa;AACb;AACA;;AAEA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;;;;;;;;AClEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,SAAQ,OAAO;AACf;;AAEA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;;;;;;AC5NA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA0C,YAAY;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA,MAAK,EAAE;AACP,IAAG;AACH;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;;AAEA;AACA,E;;;;;;ACrLA;AACA;AACA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,G;;;;;;ACzBA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;;;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA,oBAAmB,sBAAsB;AACzC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAS;AACT;AACA;AACA;AACA;AACA;AACA,IAAG;AACH,wBAAuB,SAAS;AAChC;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA,YAAW,OAAO;AAClB,YAAW,OAAO;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA,IAAG;;AAEH;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,6CAA4C,KAAK;;AAEjD;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA,IAAG;AACH;AACA;AACA,MAAK;AACL;;AAEA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;AACA,oCAAmC,OAAO;AAC1C;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;AACH;AACA;;;AAGA;AACA;AACA,0DAAyD;AACzD;AACA;AACA;AACA,MAAK;AACL;AACA;AACA,IAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,YAAW;AACX,UAAS;AACT;AACA;AACA,YAAW;AACX;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,IAAG;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;;AAGA;AACA;AACA;;;AAGA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAW,SAAS;AACpB;AACA,YAAW,SAAS;AACpB;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;;;;;;;ACzkBA;AACA;AACA;AACA;AACA;AACA,E;;;;;;ACLA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAK;AACL;AACA,EAAC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"app.uhk.js","sourcesContent":["import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app.module';\r\n\r\nif (!process.stdout) {\r\n process.stdout = require('browser-stdout')();\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule);\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./web/src/main.ts","import { NgModule, ReflectiveInjector } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { BrowserModule } from '@angular/platform-browser';\r\n\r\nimport { EffectsModule } from '@ngrx/effects';\r\nimport { StoreModule } from '@ngrx/store';\r\nimport { StoreDevtoolsModule } from '@ngrx/store-devtools';\r\nimport { StoreLogMonitorModule, useLogMonitor } from '@ngrx/store-log-monitor';\r\n\r\nimport { DragulaModule } from 'ng2-dragula/ng2-dragula';\r\nimport { Select2Module } from 'ng2-select2/ng2-select2';\r\n\r\nimport { AddOnComponent } from './shared/components/add-on';\r\nimport { KeyboardSliderComponent } from './shared/components/keyboard/slider';\r\nimport { KeymapAddComponent, KeymapEditComponent, KeymapHeaderComponent } from './shared/components/keymap';\r\nimport { LayersComponent } from './shared/components/layers';\r\nimport {\r\n MacroActionEditorComponent,\r\n MacroDelayTabComponent,\r\n MacroEditComponent,\r\n MacroHeaderComponent,\r\n MacroItemComponent,\r\n MacroKeyTabComponent,\r\n MacroListComponent,\r\n MacroMouseTabComponent,\r\n MacroNotFoundComponent,\r\n MacroTextTabComponent\r\n} from './shared/components/macro';\r\nimport { NotificationComponent } from './shared/components/notification';\r\nimport { PopoverComponent } from './shared/components/popover';\r\nimport {\r\n KeymapTabComponent,\r\n KeypressTabComponent,\r\n LayerTabComponent,\r\n MacroTabComponent,\r\n MouseTabComponent,\r\n NoneTabComponent\r\n} from './shared/components/popover/tab';\r\nimport { CaptureKeystrokeButtonComponent } from './shared/components/popover/widgets/capture-keystroke';\r\nimport { IconComponent } from './shared/components/popover/widgets/icon';\r\nimport { SettingsComponent } from './shared/components/settings';\r\nimport { SideMenuComponent } from './shared/components/side-menu';\r\nimport { SvgKeyboardComponent } from './shared/components/svg/keyboard';\r\nimport {\r\n SvgIconTextKeyComponent,\r\n SvgKeyboardKeyComponent,\r\n SvgKeystrokeKeyComponent,\r\n SvgMouseClickKeyComponent,\r\n SvgMouseKeyComponent,\r\n SvgMouseMoveKeyComponent,\r\n SvgMouseScrollKeyComponent,\r\n SvgMouseSpeedKeyComponent,\r\n SvgOneLineTextKeyComponent,\r\n SvgSingleIconKeyComponent,\r\n SvgSwitchKeymapKeyComponent,\r\n SvgTextIconKeyComponent,\r\n SvgTwoLineTextKeyComponent\r\n} from './shared/components/svg/keys';\r\nimport { SvgModuleComponent } from './shared/components/svg/module';\r\nimport { SvgKeyboardWrapComponent } from './shared/components/svg/wrap';\r\nimport { MainAppComponent, appRoutingProviders, routing } from './main-app';\r\n\r\nimport { CancelableDirective } from './shared/directives';\r\n\r\nimport { CaptureService } from './shared/services/capture.service';\r\nimport { MapperService } from './shared/services/mapper.service';\r\n\r\nimport { KeymapEffects, MacroEffects } from './shared/store/effects';\r\nimport { userConfigurationReducer, presetReducer } from './shared/store/reducers';\r\nimport { DataStorage } from './shared/store/storage';\r\n\r\nimport { KeymapEditGuard } from './shared/components/keymap/edit';\r\nimport { MacroNotFoundGuard } from './shared/components/macro/not-found';\r\n\r\n// Create DataStorage dependency injection\r\nconst storageProvider = ReflectiveInjector.resolve([DataStorage]);\r\nconst storageInjector = ReflectiveInjector.fromResolvedProviders(storageProvider);\r\nconst storageService: DataStorage = storageInjector.get(DataStorage);\r\n\r\n// All reducers that are used in application\r\nconst storeConfig = {\r\n userConfiguration: storageService.saveState(userConfigurationReducer),\r\n presetKeymaps: presetReducer\r\n};\r\n\r\n@NgModule({\r\n declarations: [\r\n MainAppComponent,\r\n KeymapEditComponent,\r\n KeymapHeaderComponent,\r\n NotificationComponent,\r\n SvgIconTextKeyComponent,\r\n SvgKeyboardKeyComponent,\r\n SvgKeystrokeKeyComponent,\r\n SvgMouseKeyComponent,\r\n SvgMouseClickKeyComponent,\r\n SvgMouseMoveKeyComponent,\r\n SvgMouseScrollKeyComponent,\r\n SvgMouseSpeedKeyComponent,\r\n SvgOneLineTextKeyComponent,\r\n SvgSingleIconKeyComponent,\r\n SvgSwitchKeymapKeyComponent,\r\n SvgTextIconKeyComponent,\r\n SvgTwoLineTextKeyComponent,\r\n SvgKeyboardKeyComponent,\r\n SvgKeyboardWrapComponent,\r\n SvgKeyboardComponent,\r\n SvgModuleComponent,\r\n LayersComponent,\r\n PopoverComponent,\r\n KeymapAddComponent,\r\n SideMenuComponent,\r\n KeypressTabComponent,\r\n KeymapTabComponent,\r\n LayerTabComponent,\r\n MacroTabComponent,\r\n MouseTabComponent,\r\n NoneTabComponent,\r\n CaptureKeystrokeButtonComponent,\r\n IconComponent,\r\n MacroEditComponent,\r\n MacroListComponent,\r\n MacroHeaderComponent,\r\n MacroItemComponent,\r\n MacroActionEditorComponent,\r\n MacroDelayTabComponent,\r\n MacroKeyTabComponent,\r\n MacroMouseTabComponent,\r\n MacroTextTabComponent,\r\n MacroNotFoundComponent,\r\n AddOnComponent,\r\n SettingsComponent,\r\n KeyboardSliderComponent,\r\n CancelableDirective\r\n ],\r\n imports: [\r\n BrowserModule,\r\n FormsModule,\r\n DragulaModule,\r\n routing,\r\n StoreModule.provideStore(storeConfig, storageService.initialState()),\r\n StoreDevtoolsModule.instrumentStore({\r\n monitor: useLogMonitor({\r\n visible: false,\r\n position: 'right'\r\n })\r\n }),\r\n StoreLogMonitorModule,\r\n Select2Module,\r\n EffectsModule.runAfterBootstrap(KeymapEffects),\r\n EffectsModule.runAfterBootstrap(MacroEffects)\r\n ],\r\n providers: [\r\n MapperService,\r\n appRoutingProviders,\r\n KeymapEditGuard,\r\n MacroNotFoundGuard,\r\n CaptureService\r\n ],\r\n bootstrap: [MainAppComponent]\r\n})\r\nexport class AppModule { }\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./web/src/app.module.ts","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@ngrx/store'), require('rxjs/ReplaySubject'), require('rxjs/operator/map'), require('rxjs/operator/merge'), require('rxjs/operator/observeOn'), require('rxjs/operator/scan'), require('rxjs/operator/skip'), require('rxjs/operator/withLatestFrom'), require('rxjs/scheduler/queue'), require('rxjs/Observable'), require('rxjs/observable/empty'), require('rxjs/operator/filter'), require('rxjs/operator/share'), require('rxjs/operator/switchMap'), require('rxjs/operator/takeUntil')) :\n typeof define === 'function' && define.amd ? define(['exports', '@angular/core', '@ngrx/store', 'rxjs/ReplaySubject', 'rxjs/operator/map', 'rxjs/operator/merge', 'rxjs/operator/observeOn', 'rxjs/operator/scan', 'rxjs/operator/skip', 'rxjs/operator/withLatestFrom', 'rxjs/scheduler/queue', 'rxjs/Observable', 'rxjs/observable/empty', 'rxjs/operator/filter', 'rxjs/operator/share', 'rxjs/operator/switchMap', 'rxjs/operator/takeUntil'], factory) :\n (factory((global.ngrx = global.ngrx || {}, global.ngrx.storeDevtools = global.ngrx.storeDevtools || {}),global.ng.core,global.ngrx.store,global.Rx,global.Rx.Observable.prototype,global.Rx.Observable.prototype,global.Rx.Observable.prototype,global.Rx.Observable.prototype,global.Rx.Observable.prototype,global.Rx.Observable.prototype,global.Rx.Scheduler,global.Rx,global.Rx.Observable,global.Rx.Observable.prototype,global.Rx.Observable.prototype,global.Rx.Observable.prototype,global.Rx.Observable.prototype));\n}(this, (function (exports,_angular_core,_ngrx_store,rxjs_ReplaySubject,rxjs_operator_map,rxjs_operator_merge,rxjs_operator_observeOn,rxjs_operator_scan,rxjs_operator_skip,rxjs_operator_withLatestFrom,rxjs_scheduler_queue,rxjs_Observable,rxjs_observable_empty,rxjs_operator_filter,rxjs_operator_share,rxjs_operator_switchMap,rxjs_operator_takeUntil) { 'use strict';\n\nvar ActionTypes = {\n PERFORM_ACTION: 'PERFORM_ACTION',\n RESET: 'RESET',\n ROLLBACK: 'ROLLBACK',\n COMMIT: 'COMMIT',\n SWEEP: 'SWEEP',\n TOGGLE_ACTION: 'TOGGLE_ACTION',\n SET_ACTIONS_ACTIVE: 'SET_ACTIONS_ACTIVE',\n JUMP_TO_STATE: 'JUMP_TO_STATE',\n IMPORT_STATE: 'IMPORT_STATE'\n};\n/**\n* Action creators to change the History state.\n*/\nvar StoreDevtoolActions = {\n performAction: function (action) {\n if (typeof action.type === 'undefined') {\n throw new Error('Actions may not have an undefined \"type\" property. ' +\n 'Have you misspelled a constant?');\n }\n return { type: ActionTypes.PERFORM_ACTION, action: action, timestamp: Date.now() };\n },\n reset: function () {\n return { type: ActionTypes.RESET, timestamp: Date.now() };\n },\n rollback: function () {\n return { type: ActionTypes.ROLLBACK, timestamp: Date.now() };\n },\n commit: function () {\n return { type: ActionTypes.COMMIT, timestamp: Date.now() };\n },\n sweep: function () {\n return { type: ActionTypes.SWEEP };\n },\n toggleAction: function (id) {\n return { type: ActionTypes.TOGGLE_ACTION, id: id };\n },\n setActionsActive: function (start, end, active) {\n if (active === void 0) { active = true; }\n return { type: ActionTypes.SET_ACTIONS_ACTIVE, start: start, end: end, active: active };\n },\n jumpToState: function (index) {\n return { type: ActionTypes.JUMP_TO_STATE, index: index };\n },\n importState: function (nextLiftedState) {\n return { type: ActionTypes.IMPORT_STATE, nextLiftedState: nextLiftedState };\n }\n};\n\nfunction difference(first, second) {\n return first.filter(function (item) { return second.indexOf(item) < 0; });\n}\n/**\n * Provides an app's view into the state of the lifted store.\n */\nfunction unliftState(liftedState) {\n var computedStates = liftedState.computedStates, currentStateIndex = liftedState.currentStateIndex;\n var state = computedStates[currentStateIndex].state;\n return state;\n}\n/**\n* Lifts an app's action into an action on the lifted store.\n*/\nfunction liftAction(action) {\n return StoreDevtoolActions.performAction(action);\n}\nfunction applyOperators(input$, operators) {\n return operators.reduce(function (source$, _a) {\n var operator = _a[0], args = _a.slice(1);\n return operator.apply(source$, args);\n }, input$);\n}\n\nvar ExtensionActionTypes = {\n START: 'START',\n DISPATCH: 'DISPATCH',\n STOP: 'STOP',\n ACTION: 'ACTION'\n};\nvar REDUX_DEVTOOLS_EXTENSION = new _angular_core.OpaqueToken('Redux Devtools Extension');\nvar DevtoolsExtension = (function () {\n function DevtoolsExtension(devtoolsExtension) {\n this.instanceId = \"ngrx-store-\" + Date.now();\n this.devtoolsExtension = devtoolsExtension;\n this.createActionStreams();\n }\n DevtoolsExtension.prototype.notify = function (action, state) {\n if (!this.devtoolsExtension) {\n return;\n }\n this.devtoolsExtension.send(null, state, false, this.instanceId);\n };\n DevtoolsExtension.prototype.createChangesObservable = function () {\n var _this = this;\n if (!this.devtoolsExtension) {\n return rxjs_observable_empty.empty();\n }\n return new rxjs_Observable.Observable(function (subscriber) {\n var connection = _this.devtoolsExtension.connect({ instanceId: _this.instanceId });\n connection.subscribe(function (change) { return subscriber.next(change); });\n return connection.unsubscribe;\n });\n };\n DevtoolsExtension.prototype.createActionStreams = function () {\n var _this = this;\n // Listens to all changes based on our instanceId\n var changes$ = rxjs_operator_share.share.call(this.createChangesObservable());\n // Listen for the start action\n var start$ = rxjs_operator_filter.filter.call(changes$, function (change) { return change.type === ExtensionActionTypes.START; });\n // Listen for the stop action\n var stop$ = rxjs_operator_filter.filter.call(changes$, function (change) { return change.type === ExtensionActionTypes.STOP; });\n // Listen for lifted actions\n var liftedActions$ = applyOperators(changes$, [\n [rxjs_operator_filter.filter, function (change) { return change.type === ExtensionActionTypes.DISPATCH; }],\n [rxjs_operator_map.map, function (change) { return _this.unwrapAction(change.payload); }]\n ]);\n // Listen for unlifted actions\n var actions$ = applyOperators(changes$, [\n [rxjs_operator_filter.filter, function (change) { return change.type === ExtensionActionTypes.ACTION; }],\n [rxjs_operator_map.map, function (change) { return _this.unwrapAction(change.payload); }]\n ]);\n var actionsUntilStop$ = rxjs_operator_takeUntil.takeUntil.call(actions$, stop$);\n var liftedUntilStop$ = rxjs_operator_takeUntil.takeUntil.call(liftedActions$, stop$);\n // Only take the action sources between the start/stop events\n this.actions$ = rxjs_operator_switchMap.switchMap.call(start$, function () { return actionsUntilStop$; });\n this.liftedActions$ = rxjs_operator_switchMap.switchMap.call(start$, function () { return liftedUntilStop$; });\n };\n DevtoolsExtension.prototype.unwrapAction = function (action) {\n return typeof action === 'string' ? eval(\"(\" + action + \")\") : action;\n };\n DevtoolsExtension.decorators = [\n { type: _angular_core.Injectable },\n ];\n /** @nocollapse */\n DevtoolsExtension.ctorParameters = [\n { type: undefined, decorators: [{ type: _angular_core.Inject, args: [REDUX_DEVTOOLS_EXTENSION,] },] },\n ];\n return DevtoolsExtension;\n}());\n\nvar INIT_ACTION = { type: _ngrx_store.Dispatcher.INIT };\n/**\n* Computes the next entry in the log by applying an action.\n*/\nfunction computeNextEntry(reducer, action, state, error) {\n if (error) {\n return {\n state: state,\n error: 'Interrupted by an error up the chain'\n };\n }\n var nextState = state;\n var nextError;\n try {\n nextState = reducer(state, action);\n }\n catch (err) {\n nextError = err.toString();\n console.error(err.stack || err);\n }\n return {\n state: nextState,\n error: nextError\n };\n}\n/**\n* Runs the reducer on invalidated actions to get a fresh computation log.\n*/\nfunction recomputeStates(computedStates, minInvalidatedStateIndex, reducer, committedState, actionsById, stagedActionIds, skippedActionIds) {\n // Optimization: exit early and return the same reference\n // if we know nothing could have changed.\n if (minInvalidatedStateIndex >= computedStates.length &&\n computedStates.length === stagedActionIds.length) {\n return computedStates;\n }\n var nextComputedStates = computedStates.slice(0, minInvalidatedStateIndex);\n for (var i = minInvalidatedStateIndex; i < stagedActionIds.length; i++) {\n var actionId = stagedActionIds[i];\n var action = actionsById[actionId].action;\n var previousEntry = nextComputedStates[i - 1];\n var previousState = previousEntry ? previousEntry.state : committedState;\n var previousError = previousEntry ? previousEntry.error : undefined;\n var shouldSkip = skippedActionIds.indexOf(actionId) > -1;\n var entry = shouldSkip ?\n previousEntry :\n computeNextEntry(reducer, action, previousState, previousError);\n nextComputedStates.push(entry);\n }\n return nextComputedStates;\n}\nfunction liftInitialState(initialCommittedState, monitorReducer) {\n return {\n monitorState: monitorReducer(undefined, {}),\n nextActionId: 1,\n actionsById: { 0: liftAction(INIT_ACTION) },\n stagedActionIds: [0],\n skippedActionIds: [],\n committedState: initialCommittedState,\n currentStateIndex: 0,\n computedStates: []\n };\n}\n/**\n* Creates a history state reducer from an app's reducer.\n*/\nfunction liftReducerWith(initialCommittedState, initialLiftedState, monitorReducer, options) {\n if (options === void 0) { options = {}; }\n /**\n * Manages how the history actions modify the history state.\n */\n return function (reducer) { return function (liftedState, liftedAction) {\n var _a = liftedState || initialLiftedState, monitorState = _a.monitorState, actionsById = _a.actionsById, nextActionId = _a.nextActionId, stagedActionIds = _a.stagedActionIds, skippedActionIds = _a.skippedActionIds, committedState = _a.committedState, currentStateIndex = _a.currentStateIndex, computedStates = _a.computedStates;\n if (!liftedState) {\n // Prevent mutating initialLiftedState\n actionsById = Object.create(actionsById);\n }\n function commitExcessActions(n) {\n // Auto-commits n-number of excess actions.\n var excess = n;\n var idsToDelete = stagedActionIds.slice(1, excess + 1);\n for (var i = 0; i < idsToDelete.length; i++) {\n if (computedStates[i + 1].error) {\n // Stop if error is found. Commit actions up to error.\n excess = i;\n idsToDelete = stagedActionIds.slice(1, excess + 1);\n break;\n }\n else {\n delete actionsById[idsToDelete[i]];\n }\n }\n skippedActionIds = skippedActionIds.filter(function (id) { return idsToDelete.indexOf(id) === -1; });\n stagedActionIds = [0].concat(stagedActionIds.slice(excess + 1));\n committedState = computedStates[excess].state;\n computedStates = computedStates.slice(excess);\n currentStateIndex = currentStateIndex > excess\n ? currentStateIndex - excess\n : 0;\n }\n // By default, agressively recompute every state whatever happens.\n // This has O(n) performance, so we'll override this to a sensible\n // value whenever we feel like we don't have to recompute the states.\n var minInvalidatedStateIndex = 0;\n switch (liftedAction.type) {\n case ActionTypes.RESET: {\n // Get back to the state the store was created with.\n actionsById = { 0: liftAction(INIT_ACTION) };\n nextActionId = 1;\n stagedActionIds = [0];\n skippedActionIds = [];\n committedState = initialCommittedState;\n currentStateIndex = 0;\n computedStates = [];\n break;\n }\n case ActionTypes.COMMIT: {\n // Consider the last committed state the new starting point.\n // Squash any staged actions into a single committed state.\n actionsById = { 0: liftAction(INIT_ACTION) };\n nextActionId = 1;\n stagedActionIds = [0];\n skippedActionIds = [];\n committedState = computedStates[currentStateIndex].state;\n currentStateIndex = 0;\n computedStates = [];\n break;\n }\n case ActionTypes.ROLLBACK: {\n // Forget about any staged actions.\n // Start again from the last committed state.\n actionsById = { 0: liftAction(INIT_ACTION) };\n nextActionId = 1;\n stagedActionIds = [0];\n skippedActionIds = [];\n currentStateIndex = 0;\n computedStates = [];\n break;\n }\n case ActionTypes.TOGGLE_ACTION: {\n // Toggle whether an action with given ID is skipped.\n // Being skipped means it is a no-op during the computation.\n var actionId_1 = liftedAction.id;\n var index = skippedActionIds.indexOf(actionId_1);\n if (index === -1) {\n skippedActionIds = [actionId_1].concat(skippedActionIds);\n }\n else {\n skippedActionIds = skippedActionIds.filter(function (id) { return id !== actionId_1; });\n }\n // Optimization: we know history before this action hasn't changed\n minInvalidatedStateIndex = stagedActionIds.indexOf(actionId_1);\n break;\n }\n case ActionTypes.SET_ACTIONS_ACTIVE: {\n // Toggle whether an action with given ID is skipped.\n // Being skipped means it is a no-op during the computation.\n var start = liftedAction.start, end = liftedAction.end, active = liftedAction.active;\n var actionIds = [];\n for (var i = start; i < end; i++)\n actionIds.push(i);\n if (active) {\n skippedActionIds = difference(skippedActionIds, actionIds);\n }\n else {\n skippedActionIds = skippedActionIds.concat(actionIds);\n }\n // Optimization: we know history before this action hasn't changed\n minInvalidatedStateIndex = stagedActionIds.indexOf(start);\n break;\n }\n case ActionTypes.JUMP_TO_STATE: {\n // Without recomputing anything, move the pointer that tell us\n // which state is considered the current one. Useful for sliders.\n currentStateIndex = liftedAction.index;\n // Optimization: we know the history has not changed.\n minInvalidatedStateIndex = Infinity;\n break;\n }\n case ActionTypes.SWEEP: {\n // Forget any actions that are currently being skipped.\n stagedActionIds = difference(stagedActionIds, skippedActionIds);\n skippedActionIds = [];\n currentStateIndex = Math.min(currentStateIndex, stagedActionIds.length - 1);\n break;\n }\n case ActionTypes.PERFORM_ACTION: {\n // Auto-commit as new actions come in.\n if (options.maxAge && stagedActionIds.length === options.maxAge) {\n commitExcessActions(1);\n }\n if (currentStateIndex === stagedActionIds.length - 1) {\n currentStateIndex++;\n }\n var actionId = nextActionId++;\n // Mutation! This is the hottest path, and we optimize on purpose.\n // It is safe because we set a new key in a cache dictionary.\n actionsById[actionId] = liftedAction;\n stagedActionIds = stagedActionIds.concat([actionId]);\n // Optimization: we know that only the new action needs computing.\n minInvalidatedStateIndex = stagedActionIds.length - 1;\n break;\n }\n case ActionTypes.IMPORT_STATE: {\n // Completely replace everything.\n (_b = liftedAction.nextLiftedState, monitorState = _b.monitorState, actionsById = _b.actionsById, nextActionId = _b.nextActionId, stagedActionIds = _b.stagedActionIds, skippedActionIds = _b.skippedActionIds, committedState = _b.committedState, currentStateIndex = _b.currentStateIndex, computedStates = _b.computedStates, _b);\n break;\n }\n case _ngrx_store.Reducer.REPLACE:\n case _ngrx_store.Dispatcher.INIT: {\n // Always recompute states on hot reload and init.\n minInvalidatedStateIndex = 0;\n if (options.maxAge && stagedActionIds.length > options.maxAge) {\n // States must be recomputed before committing excess.\n computedStates = recomputeStates(computedStates, minInvalidatedStateIndex, reducer, committedState, actionsById, stagedActionIds, skippedActionIds);\n commitExcessActions(stagedActionIds.length - options.maxAge);\n // Avoid double computation.\n minInvalidatedStateIndex = Infinity;\n }\n break;\n }\n default: {\n // If the action is not recognized, it's a monitor action.\n // Optimization: a monitor action can't change history.\n minInvalidatedStateIndex = Infinity;\n break;\n }\n }\n computedStates = recomputeStates(computedStates, minInvalidatedStateIndex, reducer, committedState, actionsById, stagedActionIds, skippedActionIds);\n monitorState = monitorReducer(monitorState, liftedAction);\n return {\n monitorState: monitorState,\n actionsById: actionsById,\n nextActionId: nextActionId,\n stagedActionIds: stagedActionIds,\n skippedActionIds: skippedActionIds,\n committedState: committedState,\n currentStateIndex: currentStateIndex,\n computedStates: computedStates\n };\n var _b;\n }; };\n}\n\nvar STORE_DEVTOOLS_CONFIG = new _angular_core.OpaqueToken('@ngrx/devtools Options');\nvar INITIAL_OPTIONS = new _angular_core.OpaqueToken('@ngrx/devtools Initial Config');\n\nvar __extends = (undefined && undefined.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar DevtoolsDispatcher = (function (_super) {\n __extends(DevtoolsDispatcher, _super);\n function DevtoolsDispatcher() {\n _super.apply(this, arguments);\n }\n DevtoolsDispatcher.decorators = [\n { type: _angular_core.Injectable },\n ];\n /** @nocollapse */\n DevtoolsDispatcher.ctorParameters = [];\n return DevtoolsDispatcher;\n}(_ngrx_store.Dispatcher));\nvar StoreDevtools = (function () {\n function StoreDevtools(dispatcher, actions$, reducers$, extension, initialState, config) {\n var liftedInitialState = liftInitialState(initialState, config.monitor);\n var liftReducer = liftReducerWith(initialState, liftedInitialState, config.monitor, {\n maxAge: config.maxAge\n });\n var liftedAction$ = applyOperators(actions$, [\n [rxjs_operator_skip.skip, 1],\n [rxjs_operator_merge.merge, extension.actions$],\n [rxjs_operator_map.map, liftAction],\n [rxjs_operator_merge.merge, dispatcher, extension.liftedActions$],\n [rxjs_operator_observeOn.observeOn, rxjs_scheduler_queue.queue]\n ]);\n var liftedReducer$ = rxjs_operator_map.map.call(reducers$, liftReducer);\n var liftedStateSubject = new rxjs_ReplaySubject.ReplaySubject(1);\n var liftedStateSubscription = applyOperators(liftedAction$, [\n [rxjs_operator_withLatestFrom.withLatestFrom, liftedReducer$],\n [rxjs_operator_scan.scan, function (liftedState, _a) {\n var action = _a[0], reducer = _a[1];\n var nextState = reducer(liftedState, action);\n extension.notify(action, nextState);\n return nextState;\n }, liftedInitialState]\n ]).subscribe(liftedStateSubject);\n var liftedState$ = liftedStateSubject.asObservable();\n var state$ = rxjs_operator_map.map.call(liftedState$, unliftState);\n this.stateSubscription = liftedStateSubscription;\n this.dispatcher = dispatcher;\n this.liftedState = liftedState$;\n this.state = state$;\n }\n StoreDevtools.prototype.dispatch = function (action) {\n this.dispatcher.dispatch(action);\n };\n StoreDevtools.prototype.next = function (action) {\n this.dispatcher.dispatch(action);\n };\n StoreDevtools.prototype.error = function (error) { };\n StoreDevtools.prototype.complete = function () { };\n StoreDevtools.prototype.performAction = function (action) {\n this.dispatch(StoreDevtoolActions.performAction(action));\n };\n StoreDevtools.prototype.reset = function () {\n this.dispatch(StoreDevtoolActions.reset());\n };\n StoreDevtools.prototype.rollback = function () {\n this.dispatch(StoreDevtoolActions.rollback());\n };\n StoreDevtools.prototype.commit = function () {\n this.dispatch(StoreDevtoolActions.commit());\n };\n StoreDevtools.prototype.sweep = function () {\n this.dispatch(StoreDevtoolActions.sweep());\n };\n StoreDevtools.prototype.toggleAction = function (id) {\n this.dispatch(StoreDevtoolActions.toggleAction(id));\n };\n StoreDevtools.prototype.jumpToState = function (index) {\n this.dispatch(StoreDevtoolActions.jumpToState(index));\n };\n StoreDevtools.prototype.importState = function (nextLiftedState) {\n this.dispatch(StoreDevtoolActions.importState(nextLiftedState));\n };\n StoreDevtools.decorators = [\n { type: _angular_core.Injectable },\n ];\n /** @nocollapse */\n StoreDevtools.ctorParameters = [\n { type: DevtoolsDispatcher, },\n { type: _ngrx_store.Dispatcher, },\n { type: _ngrx_store.Reducer, },\n { type: DevtoolsExtension, },\n { type: undefined, decorators: [{ type: _angular_core.Inject, args: [_ngrx_store.INITIAL_STATE,] },] },\n { type: undefined, decorators: [{ type: _angular_core.Inject, args: [STORE_DEVTOOLS_CONFIG,] },] },\n ];\n return StoreDevtools;\n}());\n\nfunction _createReduxDevtoolsExtension() {\n var legacyExtensionKey = 'devToolsExtension';\n var extensionKey = '__REDUX_DEVTOOLS_EXTENSION__';\n if (typeof window === 'object' && typeof window[legacyExtensionKey] !== 'undefined') {\n return window[legacyExtensionKey];\n }\n else if (typeof window === 'object' && typeof window[extensionKey] !== 'undefined') {\n return window[extensionKey];\n }\n else {\n return null;\n }\n}\nfunction _createState(devtools) {\n return devtools.state;\n}\nfunction _createReducer(dispatcher, reducer) {\n return new _ngrx_store.Reducer(dispatcher, reducer);\n}\nfunction _createStateIfExtension(extension, injector) {\n if (!!extension) {\n var devtools = injector.get(StoreDevtools);\n return _createState(devtools);\n }\n else {\n var initialState = injector.get(_ngrx_store.INITIAL_STATE);\n var dispatcher = injector.get(_ngrx_store.Dispatcher);\n var reducer = injector.get(_ngrx_store.Reducer);\n return new _ngrx_store.State(initialState, dispatcher, reducer);\n }\n}\nfunction _createReducerIfExtension(extension, injector) {\n if (!!extension) {\n var devtoolsDispatcher = injector.get(DevtoolsDispatcher);\n var reducer = injector.get(_ngrx_store.INITIAL_REDUCER);\n return _createReducer(devtoolsDispatcher, reducer);\n }\n else {\n var dispatcher = injector.get(_ngrx_store.Dispatcher);\n var reducer = injector.get(_ngrx_store.INITIAL_REDUCER);\n return new _ngrx_store.Reducer(dispatcher, reducer);\n }\n}\nfunction noMonitor() {\n return null;\n}\nfunction _createOptions(_options) {\n var DEFAULT_OPTIONS = { monitor: noMonitor };\n var options = typeof _options === 'function' ? _options() : _options;\n options = Object.assign({}, DEFAULT_OPTIONS, options);\n if (options.maxAge && options.maxAge < 2) {\n throw new Error(\"Devtools 'maxAge' cannot be less than 2, got \" + options.maxAge);\n }\n return options;\n}\nvar StoreDevtoolsModule = (function () {\n function StoreDevtoolsModule() {\n }\n StoreDevtoolsModule.instrumentStore = function (_options) {\n if (_options === void 0) { _options = {}; }\n return {\n ngModule: StoreDevtoolsModule,\n providers: [\n {\n provide: _ngrx_store.State,\n deps: [StoreDevtools],\n useFactory: _createState\n },\n {\n provide: INITIAL_OPTIONS,\n useValue: _options\n },\n {\n provide: _ngrx_store.Reducer,\n deps: [DevtoolsDispatcher, _ngrx_store.INITIAL_REDUCER],\n useFactory: _createReducer\n },\n {\n provide: STORE_DEVTOOLS_CONFIG,\n deps: [INITIAL_OPTIONS],\n useFactory: _createOptions\n }\n ]\n };\n };\n StoreDevtoolsModule.instrumentOnlyWithExtension = function (_options) {\n if (_options === void 0) { _options = {}; }\n return {\n ngModule: StoreDevtoolsModule,\n providers: [\n {\n provide: _ngrx_store.State,\n deps: [REDUX_DEVTOOLS_EXTENSION, _angular_core.Injector],\n useFactory: _createStateIfExtension\n },\n {\n provide: _ngrx_store.Reducer,\n deps: [REDUX_DEVTOOLS_EXTENSION, _angular_core.Injector],\n useFactory: _createReducerIfExtension\n },\n {\n provide: INITIAL_OPTIONS,\n useValue: _options\n },\n {\n provide: STORE_DEVTOOLS_CONFIG,\n deps: [INITIAL_OPTIONS],\n useFactory: _createOptions\n }\n ]\n };\n };\n StoreDevtoolsModule.decorators = [\n { type: _angular_core.NgModule, args: [{\n imports: [\n _ngrx_store.StoreModule\n ],\n providers: [\n DevtoolsExtension,\n DevtoolsDispatcher,\n StoreDevtools,\n {\n provide: REDUX_DEVTOOLS_EXTENSION,\n useFactory: _createReduxDevtoolsExtension\n }\n ]\n },] },\n ];\n /** @nocollapse */\n StoreDevtoolsModule.ctorParameters = [];\n return StoreDevtoolsModule;\n}());\n\nexports.StoreDevtoolsModule = StoreDevtoolsModule;\nexports.StoreDevtools = StoreDevtools;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@ngrx/store-devtools/bundles/store-devtools.umd.js\n// module id = 62\n// module chunks = 0","(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common'), require('rxjs/operator/filter'), require('rxjs/operator/map'), require('@ngrx/core/operator/select'), require('@ngrx/store-devtools'), require('rxjs/observable/merge'), require('@ngrx/store'), require('@ngrx/core/compose')) :\n typeof define === 'function' && define.amd ? define(['exports', '@angular/core', '@angular/common', 'rxjs/operator/filter', 'rxjs/operator/map', '@ngrx/core/operator/select', '@ngrx/store-devtools', 'rxjs/observable/merge', '@ngrx/store', '@ngrx/core/compose'], factory) :\n (factory((global.ngrx = global.ngrx || {}, global.ngrx.storeLogMonitor = global.ngrx.storeLogMonitor || {}),global.ng.core,global.ng.common,global.Rx.Observable.prototype,global.Rx.Observable.prototype,global.ngrx.core,global.ngrx.storeDevtools,global.Rx.Observable,global.ngrx.store,global.ngrx.core));\n}(this, (function (exports,_angular_core,_angular_common,rxjs_operator_filter,rxjs_operator_map,_ngrx_core_operator_select,_ngrx_storeDevtools,rxjs_observable_merge,_ngrx_store,_ngrx_core_compose) { 'use strict';\n\n// Most of these are according to this table: http://www.ssicom.org/js/x171166.htm\n// However where nodejs readline diverges, they are adjusted to conform to it\nvar KEYCODES = {\n nomod: {\n escape: '\\u001b',\n space: ' ' // actually '\\u0020'\n },\n ctrl: {\n ' ': '\\u0000',\n 'a': '\\u0001',\n 'b': '\\u0002',\n 'c': '\\u0003',\n 'd': '\\u0004',\n 'e': '\\u0005',\n 'f': '\\u0006',\n 'g': '\\u0007',\n 'h': '\\u0008',\n 'i': '\\u0009',\n 'j': '\\u000a',\n 'k': '\\u000b',\n 'm': '\\u000c',\n 'n': '\\u000d',\n 'l': '\\u000e',\n 'o': '\\u000f',\n 'p': '\\u0010',\n 'q': '\\u0011',\n 'r': '\\u0012',\n 's': '\\u0013',\n 't': '\\u0014',\n 'u': '\\u0015',\n 'v': '\\u0016',\n 'w': '\\u0017',\n 'x': '\\u0018',\n 'y': '\\u0019',\n 'z': '\\u001a',\n '[': '\\u001b',\n '\\\\': '\\u001c',\n ']': '\\u001d',\n '^': '\\u001e',\n '_': '\\u001f',\n 'space': '\\u0000'\n }\n};\n\nvar CommanderComponent = (function () {\n function CommanderComponent() {\n var _this = this;\n this.keydown$ = new _angular_core.EventEmitter();\n this._ignoreTags = ['INPUT', 'SELECT', 'TEXTAREA'];\n this.keydown$ = new _angular_core.EventEmitter();\n var filtered$ = rxjs_operator_filter.filter.call(this.keydown$, function (e) {\n if (_this._ignoreTags.indexOf(e.target.tagName) !== -1) {\n return false;\n }\n if (e.target.isContentEditable) {\n return false;\n }\n var command = _this.parseCommand(_this.shortcut);\n if (!command) {\n return false;\n }\n var charCode = e.keyCode || e.which;\n var char = String.fromCharCode(charCode);\n return command.name.toUpperCase() === char.toUpperCase() &&\n command.alt === e.altKey &&\n command.ctrl === e.ctrlKey &&\n command.meta === e.metaKey &&\n command.shift === e.shiftKey;\n });\n this.command = rxjs_operator_map.map.call(filtered$, function (e) {\n e.preventDefault();\n return { command: _this.shortcut };\n });\n }\n CommanderComponent.prototype.parseCommand = function (s) {\n var keyString = s.trim().toLowerCase();\n if (!/^(ctrl-|shift-|alt-|meta-){0,4}\\w+$/.test(keyString)) {\n throw new Error('The string to parse needs to be of the format \"c\", \"ctrl-c\", \"shift-ctrl-c\".');\n }\n var parts = keyString.split('-');\n var key = {\n ctrl: false,\n meta: false,\n shift: false,\n alt: false\n };\n var c;\n key.name = parts.pop();\n while ((c = parts.pop())) {\n key[c] = true;\n }\n if (key.ctrl) {\n key.sequence = KEYCODES.ctrl[key.name] || key.name;\n }\n else {\n key.sequence = KEYCODES.nomod[key.name] || key.name;\n }\n if (key.shift && key.sequence && key.sequence.length === 1) {\n key.sequence = key.sequence.toUpperCase();\n }\n return key;\n };\n CommanderComponent.decorators = [\n { type: _angular_core.Component, args: [{\n selector: 'ngrx-commander',\n template: '',\n styles: [':host{ display: none }'],\n host: {\n '(document:keydown)': 'keydown$.emit($event)'\n }\n },] },\n ];\n /** @nocollapse */\n CommanderComponent.ctorParameters = [];\n CommanderComponent.propDecorators = {\n 'shortcut': [{ type: _angular_core.Input },],\n 'command': [{ type: _angular_core.Output },],\n };\n return CommanderComponent;\n}());\n\nvar DockComponent = (function () {\n function DockComponent() {\n this.position = 'right';\n this.size = 0.3;\n this.visible = true;\n }\n Object.defineProperty(DockComponent.prototype, \"absoluteSize\", {\n get: function () {\n return 100 * this.size + \"%\";\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DockComponent.prototype, \"restSize\", {\n get: function () {\n return (100 - (100 * this.size)) + \"%\";\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DockComponent.prototype, \"leftPosition\", {\n get: function () {\n return this.calculatePosition('left', 'right');\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DockComponent.prototype, \"rightPosition\", {\n get: function () {\n return this.calculatePosition('right', 'left');\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DockComponent.prototype, \"topPosition\", {\n get: function () {\n return this.calculatePosition('top', 'bottom');\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(DockComponent.prototype, \"bottomPosition\", {\n get: function () {\n return this.calculatePosition('bottom', 'top');\n },\n enumerable: true,\n configurable: true\n });\n DockComponent.prototype.calculatePosition = function (primary, secondary) {\n if (this.visible) {\n switch (this.position) {\n case secondary:\n return this.restSize;\n default:\n return '0%';\n }\n }\n else {\n switch (this.position) {\n case primary:\n return \"-\" + this.absoluteSize;\n case secondary:\n return '100%';\n default:\n return '0%';\n }\n }\n };\n DockComponent.decorators = [\n { type: _angular_core.Component, args: [{\n selector: 'ngrx-dock',\n template: \"\\n \\n \",\n styles: [\"\\n :host {\\n position: fixed;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n transition: all 0.3s;\\n z-index: 9999;\\n }\\n\\n .dock {\\n position: absolute;\\n z-index: 1;\\n box-shadow: 0 0 4px rgba(0, 0, 0, 0.3);\\n background-color: white;\\n left: 0;\\n top: 0;\\n width: 100%;\\n height: 100%;\\n }\\n\\n .dock-content {\\n width: 100%;\\n height: 100%;\\n overflow: auto;\\n }\\n \"]\n },] },\n ];\n /** @nocollapse */\n DockComponent.ctorParameters = [];\n DockComponent.propDecorators = {\n 'position': [{ type: _angular_core.Input },],\n 'size': [{ type: _angular_core.Input },],\n 'visible': [{ type: _angular_core.Input },],\n 'leftPosition': [{ type: _angular_core.HostBinding, args: ['style.left',] },],\n 'rightPosition': [{ type: _angular_core.HostBinding, args: ['style.right',] },],\n 'topPosition': [{ type: _angular_core.HostBinding, args: ['style.top',] },],\n 'bottomPosition': [{ type: _angular_core.HostBinding, args: ['style.bottom',] },],\n };\n return DockComponent;\n}());\n\nvar DockActions = (function () {\n function DockActions() {\n }\n DockActions.prototype.toggleVisibility = function () {\n return { type: DockActions.TOGGLE_VISIBILITY };\n };\n DockActions.prototype.changePosition = function () {\n return { type: DockActions.CHANGE_POSITION };\n };\n DockActions.prototype.changeSize = function (size) {\n return { type: DockActions.CHANGE_SIZE, payload: size };\n };\n DockActions.prototype.changeMonitor = function () {\n return { type: DockActions.CHANGE_MONITOR };\n };\n DockActions.TOGGLE_VISIBILITY = '@@redux-devtools-log-monitor/TOGGLE_VISIBILITY';\n DockActions.CHANGE_POSITION = '@@redux-devtools-log-monitor/CHANGE_POSITION';\n DockActions.CHANGE_SIZE = '@@redux-devtools-log-monitor/CHANGE_SIZE';\n DockActions.CHANGE_MONITOR = '@@redux-devtools-log-monitor/CHANGE_MONITOR';\n DockActions.decorators = [\n { type: _angular_core.Injectable },\n ];\n /** @nocollapse */\n DockActions.ctorParameters = [];\n return DockActions;\n}());\n\nvar DockMonitorComponent = (function () {\n function DockMonitorComponent(tools, actions) {\n this.state$ = _ngrx_core_operator_select.select.call(tools.liftedState, function (s) { return s.monitorState; });\n this.visible$ = _ngrx_core_operator_select.select.call(this.state$, function (s) { return s.visible; });\n this.position$ = _ngrx_core_operator_select.select.call(this.state$, function (s) { return s.position; });\n this.size$ = _ngrx_core_operator_select.select.call(this.state$, function (s) { return s.size; });\n this.toggle$ = new _angular_core.EventEmitter();\n this.changePosition$ = new _angular_core.EventEmitter();\n this.actionsSubscription = rxjs_observable_merge.merge(rxjs_operator_map.map.call(this.toggle$, function () { return actions.toggleVisibility(); }), rxjs_operator_map.map.call(this.changePosition$, function () { return actions.changePosition(); })).subscribe(tools);\n }\n DockMonitorComponent.prototype.ngOnDestroy = function () {\n this.actionsSubscription.unsubscribe();\n };\n DockMonitorComponent.decorators = [\n { type: _angular_core.Component, args: [{\n selector: 'dock-monitor',\n changeDetection: _angular_core.ChangeDetectionStrategy.OnPush,\n template: \"\\n \\n \\n\\n \\n \\n \\n \"\n },] },\n ];\n /** @nocollapse */\n DockMonitorComponent.ctorParameters = [\n { type: _ngrx_storeDevtools.StoreDevtools, },\n { type: DockActions, },\n ];\n DockMonitorComponent.propDecorators = {\n 'toggleCommand': [{ type: _angular_core.Input },],\n 'positionCommand': [{ type: _angular_core.Input },],\n };\n return DockMonitorComponent;\n}());\n\nvar POSITIONS = ['left', 'top', 'right', 'bottom'];\nfunction useDockMonitor(_options) {\n if (_options === void 0) { _options = {}; }\n var options = Object.assign({\n position: 'right',\n visible: true,\n size: 0.3\n }, _options);\n function position(state, action) {\n if (state === void 0) { state = options.position; }\n return (action.type === DockActions.CHANGE_POSITION) ?\n POSITIONS[(POSITIONS.indexOf(state) + 1) % POSITIONS.length] :\n state;\n }\n function size(state, action) {\n if (state === void 0) { state = options.size; }\n return (action.type === DockActions.CHANGE_SIZE) ?\n action.size :\n state;\n }\n function visible(state, action) {\n if (state === void 0) { state = options.visible; }\n return (action.type === DockActions.TOGGLE_VISIBILITY) ?\n !state :\n state;\n }\n return _ngrx_store.combineReducers({\n position: position,\n visible: visible,\n size: size\n });\n}\n\nvar DockMonitorModule = (function () {\n function DockMonitorModule() {\n }\n DockMonitorModule.decorators = [\n { type: _angular_core.NgModule, args: [{\n imports: [\n _angular_common.CommonModule\n ],\n declarations: [\n CommanderComponent,\n DockComponent,\n DockMonitorComponent\n ],\n providers: [\n DockActions\n ],\n exports: [\n DockMonitorComponent\n ]\n },] },\n ];\n /** @nocollapse */\n DockMonitorModule.ctorParameters = [];\n return DockMonitorModule;\n}());\n\nvar KNOWN = {\n Array: 'array',\n Object: 'object',\n Null: 'null',\n Undefined: 'undefined',\n Boolean: 'boolean',\n Number: 'number',\n String: 'string',\n Symbol: 'symbol',\n Function: 'function',\n Iterable: 'iterable'\n};\nfunction getTypeOf(object) {\n var literalType = typeof object;\n if (literalType === 'object') {\n if (Array.isArray(object)) {\n return KNOWN.Array;\n }\n if (object === null) {\n return KNOWN.Null;\n }\n if (typeof object[Symbol.iterator] === 'function') {\n return KNOWN.Iterable;\n }\n }\n return literalType;\n}\nvar arrayLength = function (value) { return value.length; };\nvar lengthLabel = function (single, plural) { return function (length) { return (length + \" \" + (length === 1 ? single : plural)); }; };\nvar typeIndicator = function (typeIndicator) { return function (input) { return (typeIndicator + \" \" + input); }; };\nvar typeIdentity = function (type) { return function () { return type; }; };\nvar withQuotes = function (val) { return (\"\\\"\" + val + \"\\\"\"); };\nvar toString = function (val) { return val.toString(); };\nvar iterableToArray = function (value) { return Array.from(value); };\nvar labelFactoriesForTypes = (_a = {},\n _a[KNOWN.Array] = _ngrx_core_compose.compose(typeIndicator('[]'), lengthLabel('item', 'items'), arrayLength),\n _a[KNOWN.Object] = _ngrx_core_compose.compose(typeIndicator('{}'), lengthLabel('key', 'keys'), arrayLength, Object.getOwnPropertyNames),\n _a[KNOWN.Null] = typeIdentity(KNOWN.Null),\n _a[KNOWN.Undefined] = typeIdentity(KNOWN.Undefined),\n _a[KNOWN.Boolean] = function (val) { return val ? 'true' : 'false'; },\n _a[KNOWN.Number] = toString,\n _a[KNOWN.String] = withQuotes,\n _a[KNOWN.Symbol] = _ngrx_core_compose.compose(withQuotes, toString),\n _a[KNOWN.Function] = typeIdentity(KNOWN.Function),\n _a[KNOWN.Iterable] = _ngrx_core_compose.compose(typeIndicator('()'), lengthLabel('entry', 'entries'), arrayLength, iterableToArray),\n _a\n);\nvar getLabelFor = function (object) { return labelFactoriesForTypes[getTypeOf(object)](object); };\nfunction getChildrenFor(object) {\n var literalType = getTypeOf(object);\n if (literalType === KNOWN.Object) {\n return Object.getOwnPropertyNames(object).map(function (name) {\n return { key: name, value: object[name] };\n });\n }\n else if (literalType === KNOWN.Array) {\n return object.map(function (value, index) {\n return { key: index, value: value };\n });\n }\n else if (literalType === KNOWN.Iterable) {\n return Array.from(object).map(function (value, index) {\n return { key: index, value: value };\n });\n }\n throw new TypeError(\"Tried to get children for non-enumerable type \\\"\" + literalType + \"\\\"\");\n}\nvar _a;\n\nvar JsonNodeComponent = (function () {\n function JsonNodeComponent() {\n this.expanded = false;\n }\n Object.defineProperty(JsonNodeComponent.prototype, \"value\", {\n set: function (value) {\n this.label = getLabelFor(value);\n this.type = getTypeOf(value);\n if (this.type === KNOWN.Array || this.type === KNOWN.Object || this.type === KNOWN.Iterable) {\n this.children = getChildrenFor(value);\n }\n else {\n this.children = null;\n }\n },\n enumerable: true,\n configurable: true\n });\n JsonNodeComponent.prototype.toggle = function () {\n if (this.children) {\n this.expanded = !this.expanded;\n }\n };\n JsonNodeComponent.decorators = [\n { type: _angular_core.Component, args: [{\n selector: 'ngrx-json-node',\n styles: [\"\\n :host {\\n display: block;\\n padding: 2px 2px 2px 20px;\\n position: relative;\\n color: #70AFCD;\\n font-family: 'monaco', 'Consolas', 'Lucida Console', monospace;\\n }\\n .expanded-indicator {\\n position: absolute;\\n top: 7px;\\n left: 5px;\\n font-size: 10px;\\n transition: transform 200ms;\\n }\\n\\n .expanded .expanded-indicator {\\n transform: rotate(90deg);\\n }\\n\\n .node-key::after {\\n content: ': ';\\n display: inline;\\n }\\n\\n .expanded .node-label {\\n color: #BABBBD !important;\\n }\\n\\n .node-label {\\n color: #9AC05C;\\n }\\n\\n .node-label.array, .node-label.null, .node-label.iterable {\\n color: #D182C0;\\n }\\n\\n .node-label.number, .node-label.undefined, .node-label.boolean {\\n color: #F86936;\\n }\\n \"],\n template: \"\\n \\n \\u25B6 \\n {{ key }} \\n {{ label }} \\n
\\n \\n \\n
\\n \"\n },] },\n ];\n /** @nocollapse */\n JsonNodeComponent.ctorParameters = [];\n JsonNodeComponent.propDecorators = {\n 'key': [{ type: _angular_core.Input },],\n 'expanded': [{ type: _angular_core.Input },],\n 'value': [{ type: _angular_core.Input },],\n };\n return JsonNodeComponent;\n}());\n\nvar JsonTreeComponent = (function () {\n function JsonTreeComponent() {\n this.children = [];\n this.expanded = true;\n }\n Object.defineProperty(JsonTreeComponent.prototype, \"value\", {\n set: function (value) {\n this.children = getChildrenFor(value);\n },\n enumerable: true,\n configurable: true\n });\n JsonTreeComponent.decorators = [\n { type: _angular_core.Component, args: [{\n selector: 'ngrx-json-tree',\n template: \"\\n \\n \"\n },] },\n ];\n /** @nocollapse */\n JsonTreeComponent.ctorParameters = [];\n JsonTreeComponent.propDecorators = {\n 'expanded': [{ type: _angular_core.Input },],\n 'value': [{ type: _angular_core.Input },],\n };\n return JsonTreeComponent;\n}());\n\nvar JsonTreeModule = (function () {\n function JsonTreeModule() {\n }\n JsonTreeModule.decorators = [\n { type: _angular_core.NgModule, args: [{\n imports: [\n _angular_common.CommonModule\n ],\n declarations: [\n JsonNodeComponent,\n JsonTreeComponent\n ],\n exports: [\n JsonTreeComponent\n ]\n },] },\n ];\n /** @nocollapse */\n JsonTreeModule.ctorParameters = [];\n return JsonTreeModule;\n}());\n\nvar LogMonitorComponent = (function () {\n function LogMonitorComponent(devtools) {\n this.devtools = devtools;\n this.expandEntries = true;\n this.canRevert$ = _ngrx_core_operator_select.select.call(devtools.liftedState, function (s) { return !(s.computedStates.length > 1); });\n this.canSweep$ = _ngrx_core_operator_select.select.call(devtools.liftedState, function (s) { return !(s.skippedActionIds.length > 0); });\n this.canCommit$ = _ngrx_core_operator_select.select.call(devtools.liftedState, function (s) { return !(s.computedStates.length > 1); });\n this.items$ = rxjs_operator_map.map.call(devtools.liftedState, function (_a) {\n var actionsById = _a.actionsById, skippedActionIds = _a.skippedActionIds, stagedActionIds = _a.stagedActionIds, computedStates = _a.computedStates;\n var actions = [];\n for (var i = 0; i < stagedActionIds.length; i++) {\n var actionId = stagedActionIds[i];\n var action = actionsById[actionId].action;\n var _b = computedStates[i], state = _b.state, error = _b.error;\n var previousState = void 0;\n if (i > 0) {\n previousState = computedStates[i - 1].state;\n }\n actions.push({\n key: actionId,\n collapsed: skippedActionIds.indexOf(actionId) > -1,\n action: action,\n actionId: actionId,\n state: state,\n previousState: previousState,\n error: error\n });\n }\n return actions;\n });\n }\n LogMonitorComponent.prototype.handleToggle = function (id) {\n this.devtools.toggleAction(id);\n };\n LogMonitorComponent.prototype.handleReset = function () {\n this.devtools.reset();\n };\n LogMonitorComponent.prototype.handleRollback = function () {\n this.devtools.rollback();\n };\n LogMonitorComponent.prototype.handleSweep = function () {\n this.devtools.sweep();\n };\n LogMonitorComponent.prototype.handleCommit = function () {\n this.devtools.commit();\n };\n LogMonitorComponent.decorators = [\n { type: _angular_core.Component, args: [{\n selector: 'log-monitor',\n styles: [\"\\n :host {\\n display: block;\\n background-color: #2A2F3A;\\n font-family: 'monaco', 'Consolas', 'Lucida Console', monospace;\\n position: relative;\\n overflow-y: hidden;\\n width: 100%;\\n height: 100%;\\n min-width: 300px;\\n direction: ltr;\\n }\\n\\n .button-bar {\\n text-align: center;\\n border-bottom-width: 1px;\\n border-bottom-style: solid;\\n border-color: transparent;\\n z-index: 1;\\n display: flex;\\n flex-direction: row;\\n padding: 0 4px;\\n }\\n\\n .elements {\\n position: absolute;\\n left: 0;\\n right: 0;\\n top: 38px;\\n bottom: 0;\\n overflow-x: hidden;\\n overflow-y: auto;\\n }\\n \"],\n template: \"\\n \\n \\n Reset\\n \\n\\n \\n Revert\\n \\n\\n \\n Sweep\\n \\n\\n \\n Commit\\n \\n
\\n \\n \\n \\n
\\n \"\n },] },\n ];\n /** @nocollapse */\n LogMonitorComponent.ctorParameters = [\n { type: _ngrx_storeDevtools.StoreDevtools, },\n ];\n LogMonitorComponent.propDecorators = {\n 'expandEntries': [{ type: _angular_core.Input },],\n };\n return LogMonitorComponent;\n}());\n\nvar LogMonitorButtonComponent = (function () {\n function LogMonitorButtonComponent() {\n this.action = new _angular_core.EventEmitter();\n }\n LogMonitorButtonComponent.prototype.handleAction = function ($event) {\n if (!this.disabled) {\n this.action.next({});\n }\n $event.stopPropagation();\n return false;\n };\n LogMonitorButtonComponent.decorators = [\n { type: _angular_core.Component, args: [{\n selector: 'log-monitor-button',\n template: \"\\n \\n \",\n styles: [\"\\n :host{\\n flex-grow: 1;\\n display: inline-block;\\n font-family: 'monaco', 'Consolas', 'Lucida Console', monospace;\\n cursor: pointer;\\n font-weight: bold;\\n border-radius: 3px;\\n padding: 4px 8px;\\n margin: 5px 3px 5px 3px;\\n font-size: 0.8em;\\n color: white;\\n text-decoration: none;\\n background-color: #4F5A65;\\n }\\n\\n :host.disabled{\\n opacity: 0.2;\\n cursor: text;\\n background-color: transparent;\\n }\\n \"]\n },] },\n ];\n /** @nocollapse */\n LogMonitorButtonComponent.ctorParameters = [];\n LogMonitorButtonComponent.propDecorators = {\n 'disabled': [{ type: _angular_core.HostBinding, args: ['class.disabled',] }, { type: _angular_core.Input },],\n 'action': [{ type: _angular_core.Output },],\n 'handleAction': [{ type: _angular_core.HostListener, args: ['click', ['$event'],] },],\n };\n return LogMonitorButtonComponent;\n}());\n\nvar LogMonitorEntryComponent = (function () {\n function LogMonitorEntryComponent() {\n this.expandEntries = false;\n this.disabled = false;\n this.toggle = new _angular_core.EventEmitter();\n }\n Object.defineProperty(LogMonitorEntryComponent.prototype, \"item\", {\n get: function () {\n return this._item;\n },\n set: function (value) {\n this._item = value;\n this.stateActionPair = {\n state: value.state,\n action: value.action\n };\n },\n enumerable: true,\n configurable: true\n });\n LogMonitorEntryComponent.prototype.handleToggle = function () {\n if (!this.disabled) {\n this.toggle.next({ id: this.item.actionId });\n }\n };\n LogMonitorEntryComponent.prototype.logPayload = function () {\n console.log(this.item.action);\n };\n LogMonitorEntryComponent.prototype.logState = function () {\n console.log(this.item.state);\n };\n LogMonitorEntryComponent.decorators = [\n { type: _angular_core.Component, args: [{\n selector: 'log-monitor-entry',\n template: \"\\n \\n {{ item.action.type }}\\n
\\n \\n \\n
\\n \",\n styles: [\"\\n :host{\\n color: #FFFFFF;\\n background-color: #4F5A65;\\n cursor: pointer;\\n }\\n .title-bar{\\n padding: 8px 0 7px 16px;\\n background-color: rgba(0,0,0,0.1);\\n }\\n .action-bar{\\n padding: 20px;\\n }\\n .collapsed{\\n text-decoration: line-through;\\n font-style: italic;\\n opacity: 0.5;\\n }\\n \"]\n },] },\n ];\n /** @nocollapse */\n LogMonitorEntryComponent.ctorParameters = [];\n LogMonitorEntryComponent.propDecorators = {\n 'expandEntries': [{ type: _angular_core.Input },],\n 'disabled': [{ type: _angular_core.Input },],\n 'item': [{ type: _angular_core.Input },],\n 'toggle': [{ type: _angular_core.Output },],\n };\n return LogMonitorEntryComponent;\n}());\n\nvar LogMonitorModule = (function () {\n function LogMonitorModule() {\n }\n LogMonitorModule.decorators = [\n { type: _angular_core.NgModule, args: [{\n imports: [\n _angular_common.CommonModule,\n JsonTreeModule\n ],\n declarations: [\n LogMonitorComponent,\n LogMonitorButtonComponent,\n LogMonitorEntryComponent\n ],\n exports: [\n LogMonitorComponent\n ]\n },] },\n ];\n /** @nocollapse */\n LogMonitorModule.ctorParameters = [];\n return LogMonitorModule;\n}());\n\nvar StoreLogMonitorComponent = (function () {\n function StoreLogMonitorComponent() {\n this.toggleCommand = 'ctrl-h';\n this.positionCommand = 'ctrl-m';\n this.expandEntries = false;\n }\n StoreLogMonitorComponent.decorators = [\n { type: _angular_core.Component, args: [{\n selector: 'ngrx-store-log-monitor',\n template: \"\\n \\n \\n \\n \"\n },] },\n ];\n /** @nocollapse */\n StoreLogMonitorComponent.ctorParameters = [];\n StoreLogMonitorComponent.propDecorators = {\n 'toggleCommand': [{ type: _angular_core.Input },],\n 'positionCommand': [{ type: _angular_core.Input },],\n 'expandEntries': [{ type: _angular_core.Input },],\n };\n return StoreLogMonitorComponent;\n}());\n\nvar StoreLogMonitorModule = (function () {\n function StoreLogMonitorModule() {\n }\n StoreLogMonitorModule.decorators = [\n { type: _angular_core.NgModule, args: [{\n imports: [\n _angular_common.CommonModule,\n DockMonitorModule,\n LogMonitorModule\n ],\n declarations: [\n StoreLogMonitorComponent\n ],\n exports: [\n StoreLogMonitorComponent\n ]\n },] },\n ];\n /** @nocollapse */\n StoreLogMonitorModule.ctorParameters = [];\n return StoreLogMonitorModule;\n}());\n\nexports.StoreLogMonitorModule = StoreLogMonitorModule;\nexports.useLogMonitor = useDockMonitor;\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n})));\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@ngrx/store-log-monitor/bundles/store-log-monitor.umd.js\n// module id = 71\n// module chunks = 0","\"use strict\";\nvar pluck_1 = require('rxjs/operator/pluck');\nvar map_1 = require('rxjs/operator/map');\nvar distinctUntilChanged_1 = require('rxjs/operator/distinctUntilChanged');\nfunction select(pathOrMapFn) {\n var paths = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n paths[_i - 1] = arguments[_i];\n }\n var mapped$;\n if (typeof pathOrMapFn === 'string') {\n mapped$ = pluck_1.pluck.call.apply(pluck_1.pluck, [this, pathOrMapFn].concat(paths));\n }\n else if (typeof pathOrMapFn === 'function') {\n mapped$ = map_1.map.call(this, pathOrMapFn);\n }\n else {\n throw new TypeError((\"Unexpected type \" + typeof pathOrMapFn + \" in select operator,\")\n + \" expected 'string' or 'function'\");\n }\n return distinctUntilChanged_1.distinctUntilChanged.call(mapped$);\n}\nexports.select = select;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@ngrx/core/operator/select.js\n// module id = 72\n// module chunks = 0","\"use strict\";\nexports.compose = function () {\n var functions = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n functions[_i - 0] = arguments[_i];\n }\n return function (arg) {\n if (functions.length === 0) {\n return arg;\n }\n var last = functions[functions.length - 1];\n var rest = functions.slice(0, -1);\n return rest.reduceRight(function (composed, fn) { return fn(composed); }, last(arg));\n };\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@ngrx/core/compose.js\n// module id = 73\n// module chunks = 0","\"use strict\";\nfunction __export(m) {\n for (var p in m) if (!exports.hasOwnProperty(p)) exports[p] = m[p];\n}\n__export(require('./index'));\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/ng2-dragula/ng2-dragula.js\n// module id = 74\n// module chunks = 0","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar core_1 = require(\"@angular/core\");\nvar ng2_select2_component_1 = require(\"./ng2-select2.component\");\nvar ng2_select2_component_2 = require(\"./ng2-select2.component\");\nexports.Select2Component = ng2_select2_component_2.Select2Component;\nvar Select2Module = (function () {\n function Select2Module() {\n }\n return Select2Module;\n}());\nSelect2Module = __decorate([\n core_1.NgModule({\n declarations: [ng2_select2_component_1.Select2Component],\n exports: [ng2_select2_component_1.Select2Component]\n })\n], Select2Module);\nexports.Select2Module = Select2Module;\n//# sourceMappingURL=ng2-select2.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/ng2-select2/ng2-select2.js\n// module id = 91\n// module chunks = 0","\"use strict\";\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __metadata = (this && this.__metadata) || function (k, v) {\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(k, v);\n};\nvar core_1 = require(\"@angular/core\");\nvar Select2Component = (function () {\n function Select2Component(renderer) {\n this.renderer = renderer;\n // enable / disable default style for select2\n this.cssImport = true;\n // enable / disable select2\n this.disabled = false;\n // emitter when value is changed\n this.valueChanged = new core_1.EventEmitter();\n this.element = undefined;\n this.check = false;\n this.style = \".select2-container{box-sizing:border-box;display:inline-block;margin:0;position:relative;vertical-align:middle;min-width:100px}.select2-container .select2-selection--single{box-sizing:border-box;cursor:pointer;display:block;height:28px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--single .select2-selection__rendered{display:block;padding-left:8px;padding-right:20px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-selection--single .select2-selection__clear{position:relative}.select2-container[dir=rtl] .select2-selection--single .select2-selection__rendered{padding-right:8px;padding-left:20px}.select2-container .select2-selection--multiple{box-sizing:border-box;cursor:pointer;display:block;min-height:32px;user-select:none;-webkit-user-select:none}.select2-container .select2-selection--multiple .select2-selection__rendered{display:inline-block;overflow:hidden;padding-left:8px;text-overflow:ellipsis;white-space:nowrap}.select2-container .select2-search--inline{float:left}.select2-container .select2-search--inline .select2-search__field{box-sizing:border-box;border:none;font-size:100%;margin-top:5px;padding:0}.select2-container .select2-search--inline .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-dropdown{background-color:#fff;border:1px solid #aaa;border-radius:4px;box-sizing:border-box;display:block;position:absolute;left:-100000px;width:100%;z-index:1051}.select2-results{display:block}.select2-results__options{list-style:none;margin:0;padding:0}.select2-results__option{padding:6px;user-select:none;-webkit-user-select:none}.select2-results__option[aria-selected]{cursor:pointer}.select2-container--open .select2-dropdown{left:0}.select2-container--open .select2-dropdown--above{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--open .select2-dropdown--below{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-search--dropdown{display:block;padding:4px}.select2-search--dropdown .select2-search__field{padding:4px;width:100%;box-sizing:border-box}.select2-search--dropdown .select2-search__field::-webkit-search-cancel-button{-webkit-appearance:none}.select2-search--dropdown.select2-search--hide{display:none}.select2-close-mask{border:0;margin:0;padding:0;display:block;position:fixed;left:0;top:0;min-height:100%;min-width:100%;height:auto;width:auto;opacity:0;z-index:99;background-color:#fff;filter:alpha(opacity=0)}.select2-hidden-accessible{border:0!important;clip:rect(0 0 0 0)!important;height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important}.select2-container--classic .select2-results>.select2-results__options,.select2-container--default .select2-results>.select2-results__options{max-height:200px;overflow-y:auto}.select2-container--default .select2-selection--single{background-color:#fff;border:1px solid #aaa;border-radius:4px}.select2-container--default .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--default .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:700}.select2-container--default .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--default .select2-selection--single .select2-selection__arrow{height:26px;position:absolute;top:1px;right:1px;width:20px}.select2-container--default .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent;border-style:solid;border-width:5px 4px 0;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--default[dir=rtl] .select2-selection--single .select2-selection__arrow{left:1px;right:auto}.select2-container--default.select2-container--disabled .select2-selection--single{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection--single .select2-selection__clear{display:none}.select2-container--default.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888;border-width:0 4px 5px}.select2-container--default .select2-selection--multiple{background-color:#fff;border:1px solid #aaa;border-radius:4px;cursor:text}.select2-container--default .select2-selection--multiple .select2-selection__rendered{box-sizing:border-box;list-style:none;margin:0;padding:0 5px;width:100%}.select2-container--default .select2-selection--multiple .select2-selection__rendered li{list-style:none}.select2-container--default .select2-selection--multiple .select2-selection__placeholder{color:#999;margin-top:5px;float:left}.select2-container--default .select2-selection--multiple .select2-selection__clear{cursor:pointer;float:right;font-weight:700;margin-top:5px;margin-right:10px}.select2-container--default .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove{color:#999;cursor:pointer;display:inline-block;font-weight:700;margin-right:2px}.select2-container--default .select2-selection--multiple .select2-selection__choice__remove:hover{color:#333}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-search--inline,.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice,.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__placeholder{float:right}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice{margin-left:5px;margin-right:auto}.select2-container--default[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--default.select2-container--focus .select2-selection--multiple{border:1px solid #000;outline:0}.select2-container--default.select2-container--disabled .select2-selection--multiple{background-color:#eee;cursor:default}.select2-container--default.select2-container--disabled .select2-selection__choice__remove{display:none}.select2-container--default.select2-container--open.select2-container--above .select2-selection--multiple,.select2-container--default.select2-container--open.select2-container--above .select2-selection--single{border-top-left-radius:0;border-top-right-radius:0}.select2-container--default.select2-container--open.select2-container--below .select2-selection--multiple,.select2-container--default.select2-container--open.select2-container--below .select2-selection--single{border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--default .select2-search--dropdown .select2-search__field{border:1px solid #aaa}.select2-container--default .select2-search--inline .select2-search__field{background:0 0;border:none;outline:0;box-shadow:none;-webkit-appearance:textfield}.select2-container--default .select2-results__option[role=group]{padding:0}.select2-container--default .select2-results__option[aria-disabled=true]{color:#999}.select2-container--default .select2-results__option[aria-selected=true]{background-color:#ddd}.select2-container--default .select2-results__option .select2-results__option{padding-left:1em}.select2-container--default .select2-results__option .select2-results__option .select2-results__group{padding-left:0}.select2-container--default .select2-results__option .select2-results__option .select2-results__option{margin-left:-1em;padding-left:2em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-2em;padding-left:3em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-3em;padding-left:4em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-4em;padding-left:5em}.select2-container--default .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option .select2-results__option{margin-left:-5em;padding-left:6em}.select2-container--default .select2-results__option--highlighted[aria-selected]{background-color:#5897fb;color:#fff}.select2-container--default .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic .select2-selection--single{background-color:#f7f7f7;border:1px solid #aaa;border-radius:4px;outline:0;background-image:-webkit-linear-gradient(top,#fff 50%,#eee 100%);background-image:-o-linear-gradient(top,#fff 50%,#eee 100%);background-image:linear-gradient(to bottom,#fff 50%,#eee 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic .select2-selection--single:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--single .select2-selection__rendered{color:#444;line-height:28px}.select2-container--classic .select2-selection--single .select2-selection__clear{cursor:pointer;float:right;font-weight:700;margin-right:10px}.select2-container--classic .select2-selection--single .select2-selection__placeholder{color:#999}.select2-container--classic .select2-selection--single .select2-selection__arrow{background-color:#ddd;border:none;border-left:1px solid #aaa;border-top-right-radius:4px;border-bottom-right-radius:4px;height:26px;position:absolute;top:1px;right:1px;width:20px;background-image:-webkit-linear-gradient(top,#eee 50%,#ccc 100%);background-image:-o-linear-gradient(top,#eee 50%,#ccc 100%);background-image:linear-gradient(to bottom,#eee 50%,#ccc 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFCCCCCC', GradientType=0)}.select2-container--classic .select2-selection--single .select2-selection__arrow b{border-color:#888 transparent transparent;border-style:solid;border-width:5px 4px 0;height:0;left:50%;margin-left:-4px;margin-top:-2px;position:absolute;top:50%;width:0}.select2-container--classic[dir=rtl] .select2-selection--single .select2-selection__clear{float:left}.select2-container--classic[dir=rtl] .select2-selection--single .select2-selection__arrow{border:none;border-right:1px solid #aaa;border-radius:4px 0 0 4px;left:1px;right:auto}.select2-container--classic.select2-container--open .select2-selection--single{border:1px solid #5897fb}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow{background:0 0;border:none}.select2-container--classic.select2-container--open .select2-selection--single .select2-selection__arrow b{border-color:transparent transparent #888;border-width:0 4px 5px}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--single{border-top:none;border-top-left-radius:0;border-top-right-radius:0;background-image:-webkit-linear-gradient(top,#fff 0,#eee 50%);background-image:-o-linear-gradient(top,#fff 0,#eee 50%);background-image:linear-gradient(to bottom,#fff 0,#eee 50%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFFFFFFF', endColorstr='#FFEEEEEE', GradientType=0)}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--single{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0;background-image:-webkit-linear-gradient(top,#eee 50%,#fff 100%);background-image:-o-linear-gradient(top,#eee 50%,#fff 100%);background-image:linear-gradient(to bottom,#eee 50%,#fff 100%);background-repeat:repeat-x;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#FFEEEEEE', endColorstr='#FFFFFFFF', GradientType=0)}.select2-container--classic .select2-selection--multiple{background-color:#fff;border:1px solid #aaa;border-radius:4px;cursor:text;outline:0}.select2-container--classic .select2-selection--multiple:focus{border:1px solid #5897fb}.select2-container--classic .select2-selection--multiple .select2-selection__rendered{list-style:none;margin:0;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__clear{display:none}.select2-container--classic .select2-selection--multiple .select2-selection__choice{background-color:#e4e4e4;border:1px solid #aaa;border-radius:4px;cursor:default;float:left;margin-right:5px;margin-top:5px;padding:0 5px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove{color:#888;cursor:pointer;display:inline-block;font-weight:700;margin-right:2px}.select2-container--classic .select2-selection--multiple .select2-selection__choice__remove:hover{color:#555}.select2-container--classic[dir=rtl] .select2-selection--multiple .select2-selection__choice{float:right;margin-left:5px;margin-right:auto}.select2-container--classic[dir=rtl] .select2-selection--multiple .select2-selection__choice__remove{margin-left:2px;margin-right:auto}.select2-container--classic.select2-container--open .select2-selection--multiple{border:1px solid #5897fb}.select2-container--classic.select2-container--open.select2-container--above .select2-selection--multiple{border-top:none;border-top-left-radius:0;border-top-right-radius:0}.select2-container--classic.select2-container--open.select2-container--below .select2-selection--multiple{border-bottom:none;border-bottom-left-radius:0;border-bottom-right-radius:0}.select2-container--classic .select2-search--dropdown .select2-search__field{border:1px solid #aaa;outline:0}.select2-container--classic .select2-search--inline .select2-search__field{outline:0;box-shadow:none}.select2-container--classic .select2-dropdown{background-color:#fff;border:1px solid transparent}.select2-container--classic .select2-dropdown--above{border-bottom:none}.select2-container--classic .select2-dropdown--below{border-top:none}.select2-container--classic .select2-results__option[role=group]{padding:0}.select2-container--classic .select2-results__option[aria-disabled=true]{color:grey}.select2-container--classic .select2-results__option--highlighted[aria-selected]{background-color:#3875d7;color:#fff}.select2-container--classic .select2-results__group{cursor:default;display:block;padding:6px}.select2-container--classic.select2-container--open .select2-dropdown{border-color:#5897fb}\";\n }\n Select2Component.prototype.ngOnInit = function () {\n if (this.cssImport) {\n var head = document.getElementsByTagName('head')[0];\n var link = head.children[head.children.length - 1];\n if (!link.version) {\n var newLink = this.renderer.createElement(head, 'style');\n this.renderer.setElementProperty(newLink, 'type', 'text/css');\n this.renderer.setElementProperty(newLink, 'version', 'select2');\n this.renderer.setElementProperty(newLink, 'innerHTML', this.style);\n }\n }\n };\n Select2Component.prototype.ngOnChanges = function (changes) {\n if (!this.element) {\n return;\n }\n if (changes['data'] && JSON.stringify(changes['data'].previousValue) !== JSON.stringify(changes['data'].currentValue)) {\n this.initPlugin();\n var newValue = this.element.val();\n this.valueChanged.emit({\n value: newValue\n });\n }\n if (changes['value'] && changes['value'].previousValue !== changes['value'].currentValue) {\n var newValue = changes['value'].currentValue;\n this.setElementValue(newValue);\n this.valueChanged.emit({\n value: newValue\n });\n }\n if (changes['disabled'] && changes['disabled'].previousValue !== changes['disabled'].currentValue) {\n this.renderer.setElementProperty(this.selector.nativeElement, 'disabled', this.disabled);\n }\n };\n Select2Component.prototype.ngAfterViewInit = function () {\n var that = this;\n this.element = jQuery(this.selector.nativeElement);\n this.initPlugin();\n if (typeof this.value !== 'undefined') {\n this.setElementValue(this.value);\n }\n this.element.on('select2:select select2:unselect', function () {\n that.valueChanged.emit({\n value: that.element.val()\n });\n });\n };\n Select2Component.prototype.ngOnDestroy = function () {\n this.element.off(\"select2:select\");\n };\n Select2Component.prototype.initPlugin = function () {\n var _this = this;\n if (!this.element.select2) {\n if (!this.check) {\n this.check = true;\n console.log(\"Please add Select2 library (js file) to the project. You can download it from https://github.com/select2/select2/tree/master/dist/js.\");\n }\n return;\n }\n // If select2 already initialized remove him and remove all tags inside\n if (this.element.hasClass('select2-hidden-accessible') == true) {\n this.element.select2('destroy');\n this.renderer.setElementProperty(this.selector.nativeElement, 'innerHTML', '');\n }\n var options = {\n data: this.data,\n width: (this.width) ? this.width : 'resolve'\n };\n Object.assign(options, this.options);\n if (options.matcher) {\n jQuery.fn.select2.amd.require(['select2/compat/matcher'], function (oldMatcher) {\n options.matcher = oldMatcher(options.matcher);\n _this.element.select2(options);\n if (typeof _this.value !== 'undefined') {\n _this.setElementValue(_this.value);\n }\n });\n }\n else {\n this.element.select2(options);\n }\n if (this.disabled) {\n this.renderer.setElementProperty(this.selector.nativeElement, 'disabled', this.disabled);\n }\n };\n Select2Component.prototype.setElementValue = function (newValue) {\n if (Array.isArray(newValue)) {\n for (var _i = 0, _a = this.selector.nativeElement.options; _i < _a.length; _i++) {\n var option = _a[_i];\n if (newValue.indexOf(option.value) > -1) {\n this.renderer.setElementProperty(option, 'selected', 'true');\n }\n }\n }\n else {\n this.renderer.setElementProperty(this.selector.nativeElement, 'value', newValue);\n }\n this.element.val(newValue);\n this.element.trigger('change.select2');\n };\n return Select2Component;\n}());\n__decorate([\n core_1.ViewChild('selector'),\n __metadata(\"design:type\", core_1.ElementRef)\n], Select2Component.prototype, \"selector\", void 0);\n__decorate([\n core_1.Input(),\n __metadata(\"design:type\", Array)\n], Select2Component.prototype, \"data\", void 0);\n__decorate([\n core_1.Input(),\n __metadata(\"design:type\", Object)\n], Select2Component.prototype, \"value\", void 0);\n__decorate([\n core_1.Input(),\n __metadata(\"design:type\", Boolean)\n], Select2Component.prototype, \"cssImport\", void 0);\n__decorate([\n core_1.Input(),\n __metadata(\"design:type\", String)\n], Select2Component.prototype, \"width\", void 0);\n__decorate([\n core_1.Input(),\n __metadata(\"design:type\", Boolean)\n], Select2Component.prototype, \"disabled\", void 0);\n__decorate([\n core_1.Input(),\n __metadata(\"design:type\", Object)\n], Select2Component.prototype, \"options\", void 0);\n__decorate([\n core_1.Output(),\n __metadata(\"design:type\", Object)\n], Select2Component.prototype, \"valueChanged\", void 0);\nSelect2Component = __decorate([\n core_1.Component({\n selector: 'select2',\n template: ' ',\n encapsulation: core_1.ViewEncapsulation.None,\n changeDetection: core_1.ChangeDetectionStrategy.OnPush\n }),\n __metadata(\"design:paramtypes\", [core_1.Renderer])\n], Select2Component);\nexports.Select2Component = Select2Component;\n//# sourceMappingURL=ng2-select2.component.js.map\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/ng2-select2/ng2-select2.component.js\n// module id = 92\n// module chunks = 0","export * from './add-on.component';\r\nexport * from './add-on.routes';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/add-on/index.ts","import { Component } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\n\r\nimport { Observable } from 'rxjs/Observable';\r\n\r\n@Component({\r\n selector: 'add-on',\r\n template: require('./add-on.component.html'),\r\n styles: [require('./add-on.component.scss')],\r\n host: {\r\n 'class': 'container-fluid'\r\n }\r\n})\r\nexport class AddOnComponent {\r\n private name$: Observable;\r\n\r\n constructor(private route: ActivatedRoute) {\r\n this.name$ = route\r\n .params\r\n .select('name');\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/add-on/add-on.component.ts","module.exports = \"\\r\\n
\\r\\n \\r\\n {{ name$ | async }} \\r\\n \\r\\n\\r\\nTo be done...\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/add-on/add-on.component.html\n// module id = 114\n// module chunks = 0","module.exports = \":host {\\n width: 100%;\\n height: 100%;\\n display: block; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/add-on/add-on.component.scss\n// module id = 115\n// module chunks = 0","import { Routes } from '@angular/router';\r\n\r\nimport { AddOnComponent } from './add-on.component';\r\n\r\nexport const addOnRoutes: Routes = [\r\n {\r\n path: 'add-on/:name',\r\n component: AddOnComponent\r\n }\r\n];\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/add-on/add-on.routes.ts","export { KeyboardSliderComponent } from './keyboard-slider.component';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/keyboard/slider/index.ts","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n Output,\r\n SimpleChanges,\r\n animate,\r\n keyframes,\r\n state,\r\n style,\r\n transition,\r\n trigger\r\n} from '@angular/core';\r\n\r\nimport { Layer } from '../../../config-serializer/config-items/Layer';\r\n\r\ntype AnimationKeyboard =\r\n 'leftIn' |\r\n 'leftOut' |\r\n 'rightIn' |\r\n 'rightOut';\r\n\r\n@Component({\r\n selector: 'keyboard-slider',\r\n template: require('./keyboard-slider.component.html'),\r\n styles: [require('./keyboard-slider.component.scss')],\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n // We use 101%, because there was still a trace of the keyboard in the screen when animation was done\r\n animations: [\r\n trigger('layerState', [\r\n state('leftIn, rightIn', style({\r\n transform: 'translateX(-50%)',\r\n left: '50%'\r\n })),\r\n state('leftOut', style({\r\n transform: 'translateX(-101%)',\r\n left: '0'\r\n })),\r\n state('rightOut', style({\r\n transform: 'translateX(0)',\r\n left: '101%'\r\n })),\r\n transition('leftOut => leftIn, rightOut => leftIn', [\r\n animate('400ms ease-out', keyframes([\r\n style({ transform: 'translateX(0%)', left: '101%', offset: 0 }),\r\n style({ transform: 'translateX(-50%)', left: '50%', offset: 1 })\r\n ]))\r\n ]),\r\n transition('leftIn => leftOut, rightIn => leftOut', [\r\n animate('400ms ease-out', keyframes([\r\n style({ transform: 'translateX(-50%)', left: '50%', offset: 0 }),\r\n style({ transform: 'translateX(-101%)', left: '0%', offset: 1 })\r\n ]))\r\n ]),\r\n transition('* => rightIn', [\r\n animate('400ms ease-out', keyframes([\r\n style({ transform: 'translateX(-101%)', left: '0%', offset: 0 }),\r\n style({ transform: 'translateX(-50%)', left: '50%', offset: 1 })\r\n ]))\r\n ]),\r\n transition('* => rightOut', [\r\n animate('400ms ease-out', keyframes([\r\n style({ transform: 'translateX(-50%)', left: '50%', offset: 0 }),\r\n style({ transform: 'translateX(0%)', left: '101%', offset: 1 })\r\n ]))\r\n ]),\r\n transition(':leave', [\r\n animate('2000ms ease-out', keyframes([\r\n style({ opacity: 1, offset: 0 }),\r\n style({ opacity: 0, offset: 1 })\r\n ]))\r\n ])\r\n ])\r\n ]\r\n})\r\nexport class KeyboardSliderComponent implements OnChanges {\r\n @Input() layers: Layer[];\r\n @Input() currentLayer: number;\r\n @Input() keybindAnimationEnabled: boolean;\r\n @Input() capturingEnabled: boolean;\r\n @Output() keyClick = new EventEmitter();\r\n @Output() keyHover = new EventEmitter();\r\n @Output() capture = new EventEmitter();\r\n\r\n private layerAnimationState: AnimationKeyboard[];\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['layers']) {\r\n this.layerAnimationState = this.layers.map(() => 'leftOut');\r\n this.layerAnimationState[this.currentLayer] = 'leftIn';\r\n }\r\n const layerChange = changes['currentLayer'];\r\n if (layerChange) {\r\n const prevValue = layerChange.isFirstChange() ? layerChange.currentValue : layerChange.previousValue;\r\n this.onLayerChange(prevValue, layerChange.currentValue);\r\n }\r\n }\r\n\r\n trackKeyboard(index: number) {\r\n return index;\r\n }\r\n\r\n onLayerChange(oldIndex: number, index: number): void {\r\n if (index > oldIndex) {\r\n this.layerAnimationState[oldIndex] = 'leftOut';\r\n this.layerAnimationState[index] = 'leftIn';\r\n } else {\r\n this.layerAnimationState[oldIndex] = 'rightOut';\r\n this.layerAnimationState[index] = 'rightIn';\r\n }\r\n\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/keyboard/slider/keyboard-slider.component.ts","module.exports = \"\\r\\n \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/keyboard/slider/keyboard-slider.component.html\n// module id = 119\n// module chunks = 0","module.exports = \"svg-keyboard {\\n width: 95%;\\n max-width: 1400px;\\n position: absolute;\\n left: 0;\\n transform: translateX(-101%);\\n user-select: none; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/keyboard/slider/keyboard-slider.component.scss\n// module id = 120\n// module chunks = 0","export * from './add/keymap-add.component';\r\nexport * from './edit/keymap-edit.component';\r\nexport * from './header/keymap-header.component';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/keymap/index.ts","import { Component } from '@angular/core';\r\nimport { Store } from '@ngrx/store';\r\n\r\nimport { BehaviorSubject } from 'rxjs/BehaviorSubject';\r\nimport { Observable } from 'rxjs/Observable';\r\nimport 'rxjs/add/operator/combineLatest';\r\nimport 'rxjs/add/operator/publishReplay';\r\n\r\nimport { Keymap } from '../../../config-serializer/config-items/Keymap';\r\nimport { AppState } from '../../../store';\r\nimport { KeymapActions } from '../../../store/actions';\r\n\r\n@Component({\r\n selector: 'keymap-add',\r\n template: require('./keymap-add.component.html'),\r\n styles: [require('./keymap-add.component.scss')],\r\n host: {\r\n 'class': 'container-fluid'\r\n }\r\n})\r\nexport class KeymapAddComponent {\r\n presets$: Observable;\r\n private presetsAll$: Observable;\r\n private filterExpression$: BehaviorSubject;\r\n\r\n constructor(private store: Store) {\r\n this.presetsAll$ = store.select((appState: AppState) => appState.presetKeymaps);\r\n this.filterExpression$ = new BehaviorSubject('');\r\n\r\n this.presets$ = this.presetsAll$\r\n .combineLatest(this.filterExpression$, (keymaps: Keymap[], filterExpression: string) => {\r\n return keymaps.filter((keymap: Keymap) => keymap.name.toLocaleLowerCase().includes(filterExpression));\r\n })\r\n .publishReplay(1)\r\n .refCount();\r\n }\r\n\r\n filterKeyboards(filterExpression: string) {\r\n this.filterExpression$.next(filterExpression);\r\n }\r\n\r\n addKeymap(keymap: Keymap) {\r\n this.store.dispatch(KeymapActions.addKeymap(keymap));\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/keymap/add/keymap-add.component.ts","export * from './keymap';\r\nexport * from './macro';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/store/actions/index.ts","import { Action } from '@ngrx/store';\r\n\r\nimport { KeyAction } from '../../config-serializer/config-items/key-action';\r\nimport { Keymap } from '../../config-serializer/config-items/Keymap';\r\nimport { Macro } from '../../config-serializer/config-items/Macro';\r\n\r\nexport namespace KeymapActions {\r\n export const PREFIX = '[Keymap] ';\r\n export const ADD = KeymapActions.PREFIX + 'Add keymap';\r\n export const DUPLICATE = KeymapActions.PREFIX + 'Duplicate keymap';\r\n export const EDIT_ABBR = KeymapActions.PREFIX + 'Edit keymap abbreviation';\r\n export const EDIT_NAME = KeymapActions.PREFIX + 'Edit keymap title';\r\n export const SAVE_KEY = KeymapActions.PREFIX + 'Save key action';\r\n export const SET_DEFAULT = KeymapActions.PREFIX + 'Set default option';\r\n export const REMOVE = KeymapActions.PREFIX + 'Remove keymap';\r\n export const CHECK_MACRO = KeymapActions.PREFIX + 'Check deleted macro';\r\n\r\n export function addKeymap(item: Keymap): Action {\r\n return {\r\n type: KeymapActions.ADD,\r\n payload: item\r\n };\r\n }\r\n\r\n export function setDefault(abbr: string): Action {\r\n return {\r\n type: KeymapActions.SET_DEFAULT,\r\n payload: abbr\r\n };\r\n }\r\n\r\n export function removeKeymap(abbr: string): Action {\r\n return {\r\n type: KeymapActions.REMOVE,\r\n payload: abbr\r\n };\r\n }\r\n\r\n export function duplicateKeymap(keymap: Keymap): Action {\r\n return {\r\n type: KeymapActions.DUPLICATE,\r\n payload: keymap\r\n };\r\n }\r\n\r\n export function editKeymapName(abbr: string, name: string): Action {\r\n return {\r\n type: KeymapActions.EDIT_NAME,\r\n payload: {\r\n abbr: abbr,\r\n name: name\r\n }\r\n };\r\n }\r\n\r\n export function editKeymapAbbr(abbr: string, newAbbr: string): Action {\r\n return {\r\n type: KeymapActions.EDIT_ABBR,\r\n payload: {\r\n abbr: abbr,\r\n newAbbr: newAbbr\r\n }\r\n };\r\n }\r\n\r\n export function saveKey(keymap: Keymap, layer: number, module: number, key: number, keyAction: KeyAction): Action {\r\n return {\r\n type: KeymapActions.SAVE_KEY,\r\n payload: {\r\n keymap,\r\n layer,\r\n module,\r\n key,\r\n keyAction\r\n }\r\n };\r\n }\r\n\r\n export function checkMacro(macro: Macro): Action {\r\n return {\r\n type: KeymapActions.CHECK_MACRO,\r\n payload: macro\r\n };\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/store/actions/keymap.ts","import { Action } from '@ngrx/store';\r\n\r\nimport { Macro } from '../../config-serializer/config-items/Macro';\r\nimport { MacroAction } from '../../config-serializer/config-items/macro-action';\r\n\r\nexport namespace MacroActions {\r\n export const PREFIX = '[Macro] ';\r\n\r\n export const DUPLICATE = MacroActions.PREFIX + 'Duplicate macro';\r\n export const EDIT_NAME = MacroActions.PREFIX + 'Edit macro title';\r\n export const REMOVE = MacroActions.PREFIX + 'Remove macro';\r\n export const ADD = MacroActions.PREFIX + 'Add macro';\r\n\r\n export const ADD_ACTION = MacroActions.PREFIX + 'Add macro action';\r\n export const SAVE_ACTION = MacroActions.PREFIX + 'Save macro action';\r\n export const DELETE_ACTION = MacroActions.PREFIX + 'Delete macro action';\r\n export const REORDER_ACTION = MacroActions.PREFIX + 'Reorder macro action';\r\n\r\n export function addMacro(): Action {\r\n return {\r\n type: MacroActions.ADD\r\n };\r\n }\r\n\r\n export function removeMacro(macroId: number): Action {\r\n return {\r\n type: MacroActions.REMOVE,\r\n payload: macroId\r\n };\r\n }\r\n\r\n export function duplicateMacro(macro: Macro): Action {\r\n return {\r\n type: MacroActions.DUPLICATE,\r\n payload: macro\r\n };\r\n }\r\n\r\n export function editMacroName(id: number, name: string): Action {\r\n return {\r\n type: MacroActions.EDIT_NAME,\r\n payload: {\r\n id: id,\r\n name: name\r\n }\r\n };\r\n }\r\n\r\n export function addMacroAction(id: number, action: MacroAction): Action {\r\n return {\r\n type: MacroActions.ADD_ACTION,\r\n payload: {\r\n id: id,\r\n action: action\r\n }\r\n };\r\n }\r\n\r\n export function saveMacroAction(id: number, index: number, action: MacroAction): Action {\r\n return {\r\n type: MacroActions.SAVE_ACTION,\r\n payload: {\r\n id: id,\r\n index: index,\r\n action: action\r\n }\r\n };\r\n }\r\n\r\n export function deleteMacroAction(id: number, index: number, action: MacroAction): Action {\r\n return {\r\n type: MacroActions.DELETE_ACTION,\r\n payload: {\r\n id: id,\r\n index: index,\r\n action: action\r\n }\r\n };\r\n }\r\n\r\n export function reorderMacroAction(id: number, oldIndex: number, newIndex: number): Action {\r\n return {\r\n type: MacroActions.REORDER_ACTION,\r\n payload: {\r\n id: id,\r\n oldIndex: oldIndex,\r\n newIndex: newIndex\r\n }\r\n };\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/store/actions/macro.ts","module.exports = \"\\r\\n \\r\\n Add new keymap \\r\\n \\r\\n\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n {{ (presets$ | async).length }} / {{ (presetsAll$ | async).length }} keymaps shown\\r\\n
\\r\\n
\\r\\n\\r\\n
\\r\\n
{{ keymap.name }} \\r\\n
\\r\\n {{ keymap.description }}\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n Add keymap \\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n Sorry, no keyboard found under this search query.\\r\\n
\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/keymap/add/keymap-add.component.html\n// module id = 130\n// module chunks = 0","module.exports = \":host {\\n overflow-y: auto;\\n display: block;\\n height: 100%; }\\n\\n.uhk__layer-switcher--wrapper {\\n position: relative; }\\n .uhk__layer-switcher--wrapper:before {\\n content: attr(data-title);\\n display: inline-block;\\n position: absolute;\\n bottom: -0.3em;\\n right: 100%;\\n font-size: 2.4rem;\\n padding-right: 0.25em;\\n margin: 0; }\\n\\n.keymap__search {\\n margin-top: 10px; }\\n .keymap__search .input-group {\\n width: 100%;\\n max-width: 350px;\\n float: left; }\\n .keymap__search_amount {\\n float: left;\\n margin: 7px 0 0 20px; }\\n\\n.keymap__description {\\n margin-bottom: 20px; }\\n\\n.keymap__list {\\n margin-top: 40px; }\\n .keymap__list_item {\\n margin-bottom: 50px; }\\n .keymap__list .btn-group-lg {\\n margin: 30px 0 0;\\n width: 100%;\\n text-align: center; }\\n .keymap__list .btn-group-lg .btn {\\n float: none;\\n padding-left: 50px;\\n padding-right: 50px; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/keymap/add/keymap-add.component.scss\n// module id = 131\n// module chunks = 0","import { Component } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\n\r\nimport '@ngrx/core/add/operator/select';\r\nimport { Store } from '@ngrx/store';\r\n\r\nimport { Observable } from 'rxjs/Observable';\r\nimport 'rxjs/add/operator/first';\r\nimport 'rxjs/add/operator/let';\r\nimport 'rxjs/add/operator/map';\r\nimport 'rxjs/add/operator/publishReplay';\r\nimport 'rxjs/add/operator/switchMap';\r\n\r\nimport { saveAs } from 'file-saver';\r\n\r\nimport { Keymap } from '../../../config-serializer/config-items/Keymap';\r\nimport { AppState } from '../../../store';\r\nimport { getKeymap, getKeymaps, getUserConfiguration } from '../../../store/reducers/user-configuration';\r\n\r\n@Component({\r\n selector: 'keymap-edit',\r\n template: require('./keymap-edit.component.html'),\r\n styles: [require('./keymap-edit.component.scss')],\r\n host: {\r\n 'class': 'container-fluid'\r\n }\r\n})\r\nexport class KeymapEditComponent {\r\n\r\n protected keymap$: Observable;\r\n private deletable$: Observable;\r\n\r\n constructor(\r\n protected store: Store,\r\n private route: ActivatedRoute\r\n ) {\r\n this.keymap$ = route\r\n .params\r\n .select('abbr')\r\n .switchMap((abbr: string) => store.let(getKeymap(abbr)))\r\n .publishReplay(1)\r\n .refCount();\r\n\r\n this.deletable$ = store.let(getKeymaps())\r\n .map((keymaps: Keymap[]) => keymaps.length > 1);\r\n }\r\n\r\n downloadKeymap() {\r\n const exportableJSON$: Observable = this.keymap$\r\n .switchMap(keymap => this.toExportableJSON(keymap))\r\n .map(exportableJSON => JSON.stringify(exportableJSON));\r\n\r\n this.keymap$\r\n .combineLatest(exportableJSON$)\r\n .first()\r\n .subscribe(latest => {\r\n const keymap = latest[0];\r\n const exportableJSON = latest[1];\r\n const fileName = keymap.name + '_keymap.json';\r\n saveAs(new Blob([exportableJSON], { type: 'application/json' }), fileName);\r\n });\r\n }\r\n\r\n private toExportableJSON(keymap: Keymap): Observable {\r\n return this.store\r\n .let(getUserConfiguration())\r\n .first()\r\n .map(userConfiguration => {\r\n return {\r\n site: 'https://ultimatehackingkeyboard.com',\r\n description: 'Ultimate Hacking Keyboard keymap',\r\n keyboardModel: 'UHK60',\r\n dataModelVersion: userConfiguration.dataModelVersion,\r\n objectType: 'keymap',\r\n objectValue: keymap.toJsonObject()\r\n };\r\n });\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/keymap/edit/keymap-edit.component.ts","\"use strict\";\nvar Observable_1 = require('rxjs/Observable');\nvar select_1 = require('../../operator/select');\nObservable_1.Observable.prototype.select = select_1.select;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/@ngrx/core/add/operator/select.js\n// module id = 133\n// module chunks = 0","/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */\nvar saveAs=saveAs||function(e){\"use strict\";if(\"undefined\"==typeof navigator||!/MSIE [1-9]\\./.test(navigator.userAgent)){var t=e.document,n=function(){return e.URL||e.webkitURL||e},o=t.createElementNS(\"http://www.w3.org/1999/xhtml\",\"a\"),r=\"download\"in o,i=function(e){var t=new MouseEvent(\"click\");e.dispatchEvent(t)},a=e.webkitRequestFileSystem,c=e.requestFileSystem||a||e.mozRequestFileSystem,u=function(t){(e.setImmediate||e.setTimeout)(function(){throw t},0)},f=\"application/octet-stream\",s=0,d=500,l=function(t){var o=function(){\"string\"==typeof t?n().revokeObjectURL(t):t.remove()};e.chrome?o():setTimeout(o,d)},v=function(e,t,n){t=[].concat(t);for(var o=t.length;o--;){var r=e[\"on\"+t[o]];if(\"function\"==typeof r)try{r.call(e,n||e)}catch(i){u(i)}}},p=function(e){return/^\\s*(?:text\\/\\S*|application\\/xml|\\S*\\/\\S*\\+xml)\\s*;.*charset\\s*=\\s*utf-8/i.test(e.type)?new Blob([\"\",e],{type:e.type}):e},w=function(t,u,d){d||(t=p(t));var w,y,m,S=this,h=t.type,O=!1,R=function(){v(S,\"writestart progress write writeend\".split(\" \"))},b=function(){if((O||!w)&&(w=n().createObjectURL(t)),y)y.location.href=w;else{var o=e.open(w,\"_blank\");void 0==o&&\"undefined\"!=typeof safari&&(e.location.href=w)}S.readyState=S.DONE,R(),l(w)},g=function(e){return function(){return S.readyState!==S.DONE?e.apply(this,arguments):void 0}},E={create:!0,exclusive:!1};return S.readyState=S.INIT,u||(u=\"download\"),r?(w=n().createObjectURL(t),o.href=w,o.download=u,void setTimeout(function(){i(o),R(),l(w),S.readyState=S.DONE})):(e.chrome&&h&&h!==f&&(m=t.slice||t.webkitSlice,t=m.call(t,0,t.size,f),O=!0),a&&\"download\"!==u&&(u+=\".download\"),(h===f||a)&&(y=e),c?(s+=t.size,void c(e.TEMPORARY,s,g(function(e){e.root.getDirectory(\"saved\",E,g(function(e){var n=function(){e.getFile(u,E,g(function(e){e.createWriter(g(function(n){n.onwriteend=function(t){y.location.href=e.toURL(),S.readyState=S.DONE,v(S,\"writeend\",t),l(e)},n.onerror=function(){var e=n.error;e.code!==e.ABORT_ERR&&b()},\"writestart progress write abort\".split(\" \").forEach(function(e){n[\"on\"+e]=S[\"on\"+e]}),n.write(t),S.abort=function(){n.abort(),S.readyState=S.DONE},S.readyState=S.WRITING}),b)}),b)};e.getFile(u,{create:!1},g(function(e){e.remove(),n()}),g(function(e){e.code===e.NOT_FOUND_ERR?n():b()}))}),b)}),b)):void b())},y=w.prototype,m=function(e,t,n){return new w(e,t,n)};return\"undefined\"!=typeof navigator&&navigator.msSaveOrOpenBlob?function(e,t,n){return n||(e=p(e)),navigator.msSaveOrOpenBlob(e,t||\"download\")}:(y.abort=function(){var e=this;e.readyState=e.DONE,v(e,\"abort\")},y.readyState=y.INIT=0,y.WRITING=1,y.DONE=2,y.error=y.onwritestart=y.onprogress=y.onwrite=y.onabort=y.onerror=y.onwriteend=null,m)}}(\"undefined\"!=typeof self&&self||\"undefined\"!=typeof window&&window||this.content);\"undefined\"!=typeof module&&module.exports?module.exports.saveAs=saveAs:\"undefined\"!=typeof define&&null!==define&&null!=define.amd&&define([],function(){return saveAs});\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/filesaver.js/FileSaver.min.js\n// module id = 139\n// module chunks = 0","module.exports = function() { throw new Error(\"define cannot be used indirect\"); };\r\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// (webpack)/buildin/amd-define.js\n// module id = 140\n// module chunks = 0","import '@ngrx/core/add/operator/select';\r\nimport { Action } from '@ngrx/store';\r\n\r\nimport 'rxjs/add/operator/map';\r\nimport { Observable } from 'rxjs/Observable';\r\n\r\nimport { Helper as KeyActionHelper, KeyAction } from '../../config-serializer/config-items/key-action';\r\nimport { Keymap } from '../../config-serializer/config-items/Keymap';\r\nimport { Macro } from '../../config-serializer/config-items/Macro';\r\nimport { UserConfiguration } from '../../config-serializer/config-items/UserConfiguration';\r\nimport { Layer } from '../../config-serializer/config-items/Layer';\r\nimport { Module } from '../../config-serializer/config-items/Module';\r\nimport { KeymapActions, MacroActions } from '../actions';\r\nimport { AppState } from '../index';\r\n\r\nconst initialState: UserConfiguration = new UserConfiguration();\r\n\r\n/* tslint:disable:no-switch-case-fall-through */\r\n// tslint bug: https://github.com/palantir/tslint/issues/1538\r\n\r\nexport default function (state = initialState, action: Action): UserConfiguration {\r\n const changedUserConfiguration: UserConfiguration = Object.assign(new UserConfiguration(), state);\r\n\r\n switch (action.type) {\r\n case KeymapActions.ADD:\r\n case KeymapActions.DUPLICATE:\r\n {\r\n const newKeymap: Keymap = new Keymap(action.payload);\r\n newKeymap.abbreviation = generateAbbr(state.keymaps, newKeymap.abbreviation);\r\n newKeymap.name = generateName(state.keymaps, newKeymap.name);\r\n newKeymap.isDefault = (state.keymaps.length === 0);\r\n\r\n changedUserConfiguration.keymaps = state.keymaps.concat(newKeymap);\r\n break;\r\n }\r\n case KeymapActions.EDIT_NAME:\r\n {\r\n const name: string = generateName(state.keymaps, action.payload.name);\r\n\r\n changedUserConfiguration.keymaps = state.keymaps.map((keymap: Keymap) => {\r\n if (keymap.abbreviation === action.payload.abbr) {\r\n keymap = Object.assign(new Keymap(), keymap);\r\n keymap.name = name;\r\n }\r\n return keymap;\r\n });\r\n break;\r\n }\r\n case KeymapActions.EDIT_ABBR:\r\n const abbr: string = generateAbbr(state.keymaps, action.payload.newAbbr);\r\n\r\n changedUserConfiguration.keymaps = state.keymaps.map((keymap: Keymap) => {\r\n if (keymap.abbreviation === action.payload.abbr) {\r\n keymap = Object.assign(new Keymap(), keymap);\r\n keymap.abbreviation = abbr;\r\n }\r\n\r\n return keymap;\r\n });\r\n break;\r\n case KeymapActions.SET_DEFAULT:\r\n changedUserConfiguration.keymaps = state.keymaps.map((keymap: Keymap) => {\r\n if (keymap.abbreviation === action.payload || keymap.isDefault) {\r\n keymap = Object.assign(new Keymap(), keymap);\r\n keymap.isDefault = keymap.abbreviation === action.payload;\r\n }\r\n\r\n return keymap;\r\n });\r\n break;\r\n case KeymapActions.REMOVE:\r\n let isDefault: boolean;\r\n\r\n let filtered: Keymap[] = state.keymaps.filter((keymap: Keymap) => {\r\n if (keymap.abbreviation === action.payload) {\r\n isDefault = keymap.isDefault;\r\n return false;\r\n }\r\n\r\n return true;\r\n });\r\n\r\n // If deleted one is default set default keymap to the first on the list of keymaps\r\n if (isDefault && filtered.length > 0) {\r\n filtered[0].isDefault = true;\r\n }\r\n\r\n // Check for the deleted keymap in other keymaps\r\n changedUserConfiguration.keymaps = filtered.map(keymap => {\r\n keymap = Object.assign(new Keymap(), keymap);\r\n keymap.layers = checkExistence(keymap.layers, 'keymapAbbreviation', action.payload);\r\n\r\n return keymap;\r\n });\r\n break;\r\n\r\n case KeymapActions.SAVE_KEY:\r\n {\r\n const newKeymap: Keymap = Object.assign(new Keymap(), action.payload.keymap);\r\n newKeymap.layers = newKeymap.layers.slice();\r\n\r\n const layerIndex: number = action.payload.layer;\r\n const newLayer: Layer = Object.assign(new Layer(), newKeymap.layers[layerIndex]);\r\n newKeymap.layers[layerIndex] = newLayer;\r\n\r\n const moduleIndex: number = action.payload.module;\r\n const newModule: Module = Object.assign(new Module(), newLayer.modules[moduleIndex]);\r\n newLayer.modules = newLayer.modules.slice();\r\n newLayer.modules[moduleIndex] = newModule;\r\n\r\n const keyIndex: number = action.payload.key;\r\n newModule.keyActions = newModule.keyActions.slice();\r\n newModule.keyActions[keyIndex] = KeyActionHelper.createKeyAction(action.payload.keyAction);\r\n\r\n changedUserConfiguration.keymaps = state.keymaps.map(keymap => {\r\n if (keymap.abbreviation === newKeymap.abbreviation) {\r\n keymap = newKeymap;\r\n }\r\n\r\n return keymap;\r\n });\r\n break;\r\n }\r\n case KeymapActions.CHECK_MACRO:\r\n changedUserConfiguration.keymaps = state.keymaps.map(keymap => {\r\n keymap = Object.assign(new Keymap(), keymap);\r\n keymap.layers = checkExistence(keymap.layers, '_macroId', action.payload);\r\n return keymap;\r\n });\r\n break;\r\n case MacroActions.ADD:\r\n {\r\n const newMacro = new Macro();\r\n newMacro.id = generateMacroId(state.macros);\r\n newMacro.name = generateName(state.macros, 'New macro');\r\n newMacro.isLooped = false;\r\n newMacro.isPrivate = true;\r\n newMacro.macroActions = [];\r\n\r\n changedUserConfiguration.macros = state.macros.concat(newMacro);\r\n break;\r\n }\r\n case MacroActions.DUPLICATE:\r\n {\r\n const newMacro = new Macro(action.payload);\r\n newMacro.name = generateName(state.macros, newMacro.name);\r\n newMacro.id = generateMacroId(state.macros);\r\n\r\n changedUserConfiguration.macros = state.macros.concat(newMacro);\r\n break;\r\n }\r\n case MacroActions.EDIT_NAME:\r\n {\r\n const name: string = generateName(state.macros, action.payload.name);\r\n\r\n changedUserConfiguration.macros = state.macros.map((macro: Macro) => {\r\n if (macro.id === action.payload.id) {\r\n macro.name = name;\r\n }\r\n\r\n return macro;\r\n });\r\n\r\n break;\r\n }\r\n case MacroActions.REMOVE:\r\n changedUserConfiguration.macros = state.macros.filter((macro: Macro) => macro.id !== action.payload);\r\n break;\r\n case MacroActions.ADD_ACTION:\r\n changedUserConfiguration.macros = state.macros.map((macro: Macro) => {\r\n if (macro.id === action.payload.id) {\r\n macro = new Macro(macro);\r\n macro.macroActions.push(action.payload.action);\r\n }\r\n\r\n return macro;\r\n });\r\n break;\r\n case MacroActions.SAVE_ACTION:\r\n changedUserConfiguration.macros = state.macros.map((macro: Macro) => {\r\n if (macro.id === action.payload.id) {\r\n macro = new Macro(macro);\r\n macro.macroActions[action.payload.index] = action.payload.action;\r\n }\r\n\r\n return macro;\r\n });\r\n break;\r\n case MacroActions.DELETE_ACTION:\r\n changedUserConfiguration.macros = state.macros.map((macro: Macro) => {\r\n if (macro.id === action.payload.id) {\r\n macro = new Macro(macro);\r\n macro.macroActions.splice(action.payload.index, 1);\r\n }\r\n\r\n return macro;\r\n });\r\n break;\r\n case MacroActions.REORDER_ACTION:\r\n changedUserConfiguration.macros = state.macros.map((macro: Macro) => {\r\n if (macro.id === action.payload.id) {\r\n let newIndex: number = action.payload.newIndex;\r\n\r\n // We need to reduce the new index for one when we are moving action down\r\n if (newIndex > action.payload.oldIndex) {\r\n --newIndex;\r\n }\r\n\r\n macro = new Macro(macro);\r\n macro.macroActions.splice(\r\n newIndex,\r\n 0,\r\n macro.macroActions.splice(action.payload.oldIndex, 1)[0]\r\n );\r\n }\r\n\r\n return macro;\r\n });\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return changedUserConfiguration;\r\n}\r\n\r\nexport function getUserConfiguration(): (state$: Observable) => Observable {\r\n return (state$: Observable) => state$\r\n .select(state => state.userConfiguration);\r\n}\r\n\r\nexport function getKeymaps(): (state$: Observable) => Observable {\r\n return (state$: Observable) => state$\r\n .select(state => state.userConfiguration.keymaps);\r\n}\r\n\r\nexport function getKeymap(abbr: string) {\r\n if (abbr === undefined) {\r\n return getDefaultKeymap();\r\n }\r\n\r\n return (state$: Observable) => getKeymaps()(state$)\r\n .map((keymaps: Keymap[]) =>\r\n keymaps.find((keymap: Keymap) => keymap.abbreviation === abbr)\r\n );\r\n}\r\n\r\nexport function getDefaultKeymap() {\r\n return (state$: Observable) => getKeymaps()(state$)\r\n .map((keymaps: Keymap[]) =>\r\n keymaps.find((keymap: Keymap) => keymap.isDefault)\r\n );\r\n}\r\n\r\nexport function getMacros(): (state$: Observable) => Observable {\r\n return (state$: Observable) => state$\r\n .select(state => state.userConfiguration.macros);\r\n}\r\n\r\nexport function getMacro(id: number) {\r\n if (isNaN(id)) {\r\n return () => Observable.of(undefined);\r\n } else {\r\n return (state$: Observable) => getMacros()(state$)\r\n .map((macros: Macro[]) => macros.find((macro: Macro) => macro.id === id));\r\n }\r\n}\r\n\r\nfunction generateAbbr(keymaps: Keymap[], abbr: string): string {\r\n const chars: string[] = '23456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'.split('');\r\n let position = 0;\r\n\r\n while (keymaps.some((keymap: Keymap) => keymap.abbreviation === abbr)) {\r\n abbr = abbr.substring(0, abbr.length - 1) + chars[position];\r\n ++position;\r\n }\r\n\r\n return abbr;\r\n}\r\n\r\nfunction generateName(items: { name: string }[], name: string) {\r\n let suffix = 2;\r\n const oldName: string = name;\r\n\r\n while (items.some(item => item.name === name)) {\r\n name = oldName + ` (${suffix})`;\r\n ++suffix;\r\n }\r\n\r\n return name;\r\n}\r\n\r\nfunction generateMacroId(macros: Macro[]) {\r\n let newId = 0;\r\n\r\n macros.forEach((macro: Macro) => {\r\n if (macro.id > newId) {\r\n newId = macro.id;\r\n }\r\n });\r\n\r\n return newId + 1;\r\n}\r\n\r\nfunction checkExistence(layers: Layer[], property: string, value: any) {\r\n let newLayers = layers.map((layer) => {\r\n let newLayer = new Layer(layer);\r\n\r\n newLayer.modules = layer.modules.map((module: Module) => {\r\n module.keyActions.forEach((action: KeyAction, index: number) => {\r\n if (action && action.hasOwnProperty(property) && action[property] === value) {\r\n module.keyActions[index] = undefined;\r\n }\r\n });\r\n\r\n return module;\r\n });\r\n\r\n return newLayer;\r\n });\r\n\r\n return newLayers;\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/store/reducers/user-configuration.ts","export * from './KeyAction';\r\nexport * from './KeystrokeAction';\r\nexport * from './MouseAction';\r\nexport * from './NoneAction';\r\nexport * from './PlayMacroAction';\r\nexport * from './SwitchKeymapAction';\r\nexport * from './SwitchLayerAction';\r\nexport * from './helper';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/config-serializer/config-items/key-action/index.ts","/// \r\n\r\nimport { Macro } from '../Macro';\r\nimport { UhkBuffer } from '../../UhkBuffer';\r\n\r\nexport enum KeyActionId {\r\n NoneAction = 0,\r\n KeystrokeAction = 1,\r\n /*\r\n 1 - 7 are reserved for KeystrokeAction\r\n 3 bits:\r\n 1: Do we have scancode?\r\n 2: Do we have modifiers?\r\n 3: Do we have longpress?\r\n */\r\n LastKeystrokeAction = 7, // TODO: remove this after refactoring the keyActionId check\r\n SwitchLayerAction = 8,\r\n SwitchKeymapAction = 9,\r\n MouseAction = 10,\r\n PlayMacroAction = 11\r\n}\r\n\r\nexport let keyActionType = {\r\n NoneAction : 'none',\r\n KeystrokeAction : 'keystroke',\r\n SwitchLayerAction : 'switchLayer',\r\n SwitchKeymapAction : 'switchKeymap',\r\n MouseAction : 'mouse',\r\n PlayMacroAction : 'playMacro'\r\n};\r\n\r\nexport abstract class KeyAction {\r\n\r\n assertKeyActionType(jsObject: any): void {\r\n let keyActionClassname: string = this.constructor.name;\r\n let keyActionTypeString: string = keyActionType[keyActionClassname];\r\n if (jsObject.keyActionType !== keyActionTypeString) {\r\n throw `Invalid ${keyActionClassname}.keyActionType: ${jsObject.keyActionType}`;\r\n }\r\n }\r\n\r\n readAndAssertKeyActionId(buffer: UhkBuffer): KeyActionId {\r\n let classname: string = this.constructor.name;\r\n let readKeyActionId: number = buffer.readUInt8();\r\n let keyActionId: number = KeyActionId[classname];\r\n if (keyActionId === KeyActionId.KeystrokeAction) {\r\n if (readKeyActionId < KeyActionId.KeystrokeAction || readKeyActionId > KeyActionId.LastKeystrokeAction) {\r\n throw `Invalid ${classname} first byte: ${readKeyActionId}`;\r\n }\r\n } else if (readKeyActionId !== keyActionId) {\r\n throw `Invalid ${classname} first byte: ${readKeyActionId}`;\r\n }\r\n return readKeyActionId;\r\n }\r\n\r\n abstract toJsonObject(macros?: Macro[]): any;\r\n abstract toBinary(buffer: UhkBuffer, macros?: Macro[]): any;\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/config-serializer/config-items/key-action/KeyAction.ts","import { assertEnum, assertUInt8 } from '../../assert';\r\nimport { UhkBuffer } from '../../UhkBuffer';\r\nimport { KeyModifiers } from '../KeyModifiers';\r\nimport { LongPressAction } from '../LongPressAction';\r\nimport { KeyAction, KeyActionId, keyActionType } from './KeyAction';\r\n\r\nexport enum KeystrokeActionFlag {\r\n scancode = 1 << 0,\r\n modifierMask = 1 << 1,\r\n longPressAction = 1 << 2\r\n}\r\n\r\ninterface JsonObjectKeystrokeAction {\r\n keyActionType: string;\r\n scancode?: number;\r\n modifierMask?: number;\r\n longPressAction?: string;\r\n}\r\n\r\nconst MODIFIERS = ['LCtrl', 'LShift', 'LAlt', 'LSuper', 'RCtrl', 'RShift', 'RAlt', 'RSuper'];\r\n\r\nexport class KeystrokeAction extends KeyAction {\r\n\r\n @assertUInt8\r\n scancode: number;\r\n\r\n @assertUInt8\r\n modifierMask: number;\r\n\r\n @assertEnum(LongPressAction)\r\n longPressAction: LongPressAction;\r\n\r\n constructor(other?: KeystrokeAction) {\r\n super();\r\n if (!other) {\r\n return;\r\n }\r\n this.scancode = other.scancode;\r\n this.modifierMask = other.modifierMask;\r\n this.longPressAction = other.longPressAction;\r\n }\r\n\r\n fromJsonObject(jsonObject: JsonObjectKeystrokeAction): KeystrokeAction {\r\n this.assertKeyActionType(jsonObject);\r\n this.scancode = jsonObject.scancode;\r\n this.modifierMask = jsonObject.modifierMask;\r\n this.longPressAction = LongPressAction[jsonObject.longPressAction];\r\n return this;\r\n }\r\n\r\n fromBinary(buffer: UhkBuffer): KeystrokeAction {\r\n let keyActionId: KeyActionId = this.readAndAssertKeyActionId(buffer);\r\n let flags: number = keyActionId - KeyActionId.KeystrokeAction;\r\n if (flags & KeystrokeActionFlag.scancode) {\r\n this.scancode = buffer.readUInt8();\r\n }\r\n if (flags & KeystrokeActionFlag.modifierMask) {\r\n this.modifierMask = buffer.readUInt8();\r\n }\r\n if (flags & KeystrokeActionFlag.longPressAction) {\r\n this.longPressAction = buffer.readUInt8();\r\n }\r\n return this;\r\n }\r\n\r\n toJsonObject(): JsonObjectKeystrokeAction {\r\n let jsonObject: JsonObjectKeystrokeAction = {\r\n keyActionType: keyActionType.KeystrokeAction\r\n };\r\n\r\n if (this.hasScancode()) {\r\n jsonObject.scancode = this.scancode;\r\n }\r\n\r\n if (this.hasActiveModifier()) {\r\n jsonObject.modifierMask = this.modifierMask;\r\n }\r\n\r\n if (this.hasLongPressAction()) {\r\n jsonObject.longPressAction = LongPressAction[this.longPressAction];\r\n }\r\n\r\n return jsonObject;\r\n }\r\n\r\n toBinary(buffer: UhkBuffer) {\r\n let flags = 0;\r\n let bufferData: number[] = [];\r\n\r\n if (this.hasScancode()) {\r\n flags |= KeystrokeActionFlag.scancode;\r\n bufferData.push(this.scancode);\r\n }\r\n\r\n if (this.hasActiveModifier()) {\r\n flags |= KeystrokeActionFlag.modifierMask;\r\n bufferData.push(this.modifierMask);\r\n }\r\n\r\n if (this.hasLongPressAction()) {\r\n flags |= KeystrokeActionFlag.longPressAction;\r\n bufferData.push(this.longPressAction);\r\n }\r\n\r\n buffer.writeUInt8(KeyActionId.KeystrokeAction + flags);\r\n for (let i = 0; i < bufferData.length; ++i) {\r\n buffer.writeUInt8(bufferData[i]);\r\n }\r\n }\r\n\r\n toString(): string {\r\n let properties: string[] = [];\r\n if (this.hasScancode()) {\r\n properties.push(`scancode=\"${this.scancode}\"`);\r\n }\r\n if (this.hasActiveModifier()) {\r\n properties.push(`modifierMask=\"${this.modifierMask}\"`);\r\n }\r\n if (this.hasLongPressAction()) {\r\n properties.push(`longPressAction=\"${this.longPressAction}\"`);\r\n }\r\n\r\n return ``;\r\n }\r\n\r\n isActive(modifier: KeyModifiers): boolean {\r\n return (this.modifierMask & modifier) > 0;\r\n }\r\n\r\n hasActiveModifier(): boolean {\r\n return this.modifierMask > 0;\r\n }\r\n\r\n hasLongPressAction(): boolean {\r\n return this.longPressAction !== undefined;\r\n }\r\n\r\n hasScancode(): boolean {\r\n return !!this.scancode;\r\n }\r\n\r\n hasOnlyOneActiveModifier(): boolean {\r\n return this.modifierMask !== 0 && !(this.modifierMask & this.modifierMask - 1);\r\n }\r\n\r\n getModifierList(): string[] {\r\n let modifierList: string[] = [];\r\n let modifierMask = this.modifierMask;\r\n for (let i = 0; modifierMask !== 0; ++i, modifierMask >>= 1) {\r\n if (modifierMask & 1) {\r\n modifierList.push(MODIFIERS[i]);\r\n }\r\n }\r\n return modifierList;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/config-serializer/config-items/key-action/KeystrokeAction.ts","export function assertUInt8(target: any, key: string) {\r\n return assertInteger(target, key, 0, 0xFF);\r\n}\r\n\r\nexport function assertInt8(target: any, key: string) {\r\n return assertInteger(target, key, -0x80, 0x7F);\r\n}\r\n\r\nexport function assertUInt16(target: any, key: string) {\r\n return assertInteger(target, key, 0, 0xFFFF);\r\n}\r\n\r\nexport function assertInt16(target: any, key: string) {\r\n return assertInteger(target, key, -0x8000, 0x7FFF);\r\n}\r\n\r\nexport function assertUInt32(target: any, key: string) {\r\n return assertInteger(target, key, 0, 0xFFFFFFFF);\r\n}\r\n\r\nexport function assertInt32(target: any, key: string) {\r\n return assertInteger(target, key, -0x80000000, 0x7FFFFFFF);\r\n}\r\n\r\nexport function assertCompactLength(target: any, key: string) {\r\n return assertUInt16(target, key);\r\n}\r\n\r\nfunction assertInteger(target: any, key: string, min: number, max: number) {\r\n const priv = '_' + key;\r\n\r\n function getter() {\r\n return this[priv];\r\n }\r\n\r\n function setter(newVal: any) {\r\n if (this[priv] !== newVal) {\r\n if (newVal < min || newVal > max) {\r\n throw `${target.constructor.name}.${key}: ` +\r\n `Integer ${newVal} is outside the valid [${min}, ${max}] interval`;\r\n }\r\n this[priv] = newVal;\r\n }\r\n }\r\n\r\n Object.defineProperty(target, key, {\r\n get: getter,\r\n set: setter,\r\n enumerable: true,\r\n configurable: true\r\n });\r\n}\r\n\r\nexport function assertEnum(enumerated: E) {\r\n return function(target: any, key: string) {\r\n const priv = '_' + key;\r\n\r\n function getter() {\r\n return this[priv];\r\n }\r\n\r\n function setter(newVal: any) {\r\n if (this[priv] !== newVal) {\r\n if (enumerated[newVal] === undefined) {\r\n throw `${target.constructor.name}.${key}: ${newVal} is not enum`;\r\n }\r\n this[priv] = newVal;\r\n }\r\n }\r\n\r\n Object.defineProperty(target, key, {\r\n get: getter,\r\n set: setter,\r\n enumerable: true,\r\n configurable: true\r\n });\r\n };\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/config-serializer/assert.ts","export enum LongPressAction {\r\n leftCtrl,\r\n leftShift,\r\n leftAlt,\r\n leftSuper,\r\n rightCtrl,\r\n rightShift,\r\n rightAlt,\r\n rightSuper,\r\n mod,\r\n fn,\r\n mouse\r\n};\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/config-serializer/config-items/LongPressAction.ts","import { assertEnum } from '../../assert';\r\nimport { UhkBuffer } from '../../UhkBuffer';\r\nimport { KeyAction, KeyActionId, keyActionType } from './KeyAction';\r\n\r\nexport enum MouseActionParam {\r\n leftClick,\r\n middleClick,\r\n rightClick,\r\n moveUp,\r\n moveDown,\r\n moveLeft,\r\n moveRight,\r\n scrollUp,\r\n scrollDown,\r\n scrollLeft,\r\n scrollRight,\r\n accelerate,\r\n decelerate\r\n}\r\n\r\nexport class MouseAction extends KeyAction {\r\n\r\n @assertEnum(MouseActionParam)\r\n mouseAction: MouseActionParam;\r\n\r\n constructor(other?: MouseAction) {\r\n super();\r\n if (!other) {\r\n return;\r\n }\r\n this.mouseAction = other.mouseAction;\r\n }\r\n\r\n fromJsonObject(jsObject: any): MouseAction {\r\n this.assertKeyActionType(jsObject);\r\n this.mouseAction = MouseActionParam[jsObject.mouseAction];\r\n return this;\r\n }\r\n\r\n fromBinary(buffer: UhkBuffer): MouseAction {\r\n this.readAndAssertKeyActionId(buffer);\r\n this.mouseAction = buffer.readUInt8();\r\n return this;\r\n }\r\n\r\n toJsonObject(): any {\r\n return {\r\n keyActionType: keyActionType.MouseAction,\r\n mouseAction: MouseActionParam[this.mouseAction]\r\n };\r\n }\r\n\r\n toBinary(buffer: UhkBuffer) {\r\n buffer.writeUInt8(KeyActionId.MouseAction);\r\n buffer.writeUInt8(this.mouseAction);\r\n }\r\n\r\n toString(): string {\r\n return ``;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/config-serializer/config-items/key-action/MouseAction.ts","import { UhkBuffer } from '../../UhkBuffer';\r\nimport { KeyAction, KeyActionId, keyActionType } from './KeyAction';\r\n\r\n/**\r\n * NoneAction is only intended for binary serialization of undefined key actions\r\n * DO NOT use it as a real KeyAction\r\n *\r\n */\r\n\r\nexport class NoneAction extends KeyAction {\r\n\r\n fromJsonObject(jsonObject: any): NoneAction {\r\n this.assertKeyActionType(jsonObject);\r\n return this;\r\n }\r\n\r\n fromBinary(buffer: UhkBuffer): NoneAction {\r\n this.readAndAssertKeyActionId(buffer);\r\n return this;\r\n }\r\n\r\n toJsonObject(): any {\r\n return {\r\n keyActionType: keyActionType.NoneAction\r\n };\r\n }\r\n\r\n toBinary(buffer: UhkBuffer) {\r\n buffer.writeUInt8(KeyActionId.NoneAction);\r\n }\r\n\r\n toString(): string {\r\n return '';\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/config-serializer/config-items/key-action/NoneAction.ts","import { assertUInt8 } from '../../assert';\r\nimport { UhkBuffer } from '../../UhkBuffer';\r\nimport { Macro } from '../Macro';\r\nimport { KeyAction, KeyActionId, keyActionType } from './KeyAction';\r\n\r\nexport class PlayMacroAction extends KeyAction {\r\n\r\n @assertUInt8\r\n macroId: number;\r\n\r\n constructor(parameter?: PlayMacroAction | Macro) {\r\n super();\r\n if (!parameter) {\r\n return;\r\n }\r\n if (parameter instanceof PlayMacroAction) {\r\n this.macroId = parameter.macroId;\r\n } else {\r\n this.macroId = parameter.id;\r\n }\r\n }\r\n\r\n fromJsonObject(jsonObject: any, macros: Macro[]): PlayMacroAction {\r\n this.assertKeyActionType(jsonObject);\r\n this.macroId = macros[jsonObject.macroIndex].id;\r\n return this;\r\n }\r\n\r\n fromBinary(buffer: UhkBuffer, macros: Macro[]): PlayMacroAction {\r\n this.readAndAssertKeyActionId(buffer);\r\n const macroIndex = buffer.readUInt8();\r\n this.macroId = macros[macroIndex].id;\r\n return this;\r\n }\r\n\r\n toJsonObject(macros: Macro[]): any {\r\n return {\r\n keyActionType: keyActionType.PlayMacroAction,\r\n macroIndex: macros.findIndex(macro => macro.id === this.macroId)\r\n };\r\n }\r\n\r\n toBinary(buffer: UhkBuffer, macros: Macro[]) {\r\n buffer.writeUInt8(KeyActionId.PlayMacroAction);\r\n buffer.writeUInt8(macros.findIndex(macro => macro.id === this.macroId));\r\n }\r\n\r\n toString(): string {\r\n return ``;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/config-serializer/config-items/key-action/PlayMacroAction.ts","import { UhkBuffer } from '../../UhkBuffer';\r\nimport { Keymap } from '../Keymap';\r\nimport { KeyAction, KeyActionId, keyActionType } from './KeyAction';\r\n\r\nexport class SwitchKeymapAction extends KeyAction {\r\n\r\n keymapAbbreviation: string;\r\n\r\n constructor(parameter?: SwitchKeymapAction | Keymap) {\r\n super();\r\n if (!parameter) {\r\n return;\r\n }\r\n if (parameter instanceof SwitchKeymapAction) {\r\n this.keymapAbbreviation = parameter.keymapAbbreviation;\r\n } else {\r\n this.keymapAbbreviation = parameter.abbreviation;\r\n }\r\n }\r\n\r\n fromJsonObject(jsonObject: any): SwitchKeymapAction {\r\n this.assertKeyActionType(jsonObject);\r\n this.keymapAbbreviation = jsonObject.keymapAbbreviation;\r\n return this;\r\n }\r\n\r\n fromBinary(buffer: UhkBuffer): SwitchKeymapAction {\r\n this.readAndAssertKeyActionId(buffer);\r\n this.keymapAbbreviation = buffer.readString();\r\n return this;\r\n }\r\n\r\n toJsonObject(): any {\r\n return {\r\n keyActionType: keyActionType.SwitchKeymapAction,\r\n keymapAbbreviation: this.keymapAbbreviation\r\n };\r\n }\r\n\r\n toBinary(buffer: UhkBuffer) {\r\n buffer.writeUInt8(KeyActionId.SwitchKeymapAction);\r\n buffer.writeString(this.keymapAbbreviation);\r\n }\r\n\r\n toString(): string {\r\n return ``;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/config-serializer/config-items/key-action/SwitchKeymapAction.ts","import { assertEnum } from '../../assert';\r\nimport { UhkBuffer } from '../../UhkBuffer';\r\nimport { KeyAction, KeyActionId, keyActionType } from './KeyAction';\r\n\r\nexport enum LayerName {\r\n mod,\r\n fn,\r\n mouse\r\n}\r\n\r\nexport class SwitchLayerAction extends KeyAction {\r\n\r\n isLayerToggleable: boolean;\r\n\r\n @assertEnum(LayerName)\r\n layer: LayerName;\r\n\r\n constructor(other?: SwitchLayerAction) {\r\n super();\r\n if (!other) {\r\n return;\r\n }\r\n this.isLayerToggleable = other.isLayerToggleable;\r\n this.layer = other.layer;\r\n }\r\n\r\n fromJsonObject(jsonObject: any): SwitchLayerAction {\r\n this.assertKeyActionType(jsonObject);\r\n this.layer = LayerName[jsonObject.layer];\r\n this.isLayerToggleable = jsonObject.toggle;\r\n return this;\r\n }\r\n\r\n fromBinary(buffer: UhkBuffer): SwitchLayerAction {\r\n this.readAndAssertKeyActionId(buffer);\r\n this.layer = buffer.readUInt8();\r\n this.isLayerToggleable = buffer.readBoolean();\r\n return this;\r\n }\r\n\r\n toJsonObject(): any {\r\n return {\r\n keyActionType: keyActionType.SwitchLayerAction,\r\n layer: LayerName[this.layer],\r\n toggle: this.isLayerToggleable\r\n };\r\n }\r\n\r\n toBinary(buffer: UhkBuffer) {\r\n buffer.writeUInt8(KeyActionId.SwitchLayerAction);\r\n buffer.writeUInt8(this.layer);\r\n buffer.writeBoolean(this.isLayerToggleable);\r\n }\r\n\r\n toString(): string {\r\n return ``;\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/config-serializer/config-items/key-action/SwitchLayerAction.ts","import { UhkBuffer } from '../../UhkBuffer';\r\nimport {\r\n KeyAction,\r\n KeyActionId,\r\n KeystrokeAction,\r\n MouseAction,\r\n PlayMacroAction,\r\n SwitchKeymapAction,\r\n SwitchLayerAction,\r\n keyActionType\r\n} from './index';\r\n\r\nimport { Keymap } from '../Keymap';\r\nimport { Macro } from '../Macro';\r\n\r\nexport class Helper {\r\n\r\n static createKeyAction(source: KeyAction | UhkBuffer | any, macros?: Macro[]): KeyAction {\r\n if (source instanceof KeyAction) {\r\n return Helper.fromKeyAction(source);\r\n } else if (source instanceof UhkBuffer) {\r\n return Helper.fromUhkBuffer(source, macros);\r\n } else {\r\n return Helper.fromJSONObject(source, macros);\r\n }\r\n }\r\n\r\n private static fromUhkBuffer(buffer: UhkBuffer, macros: Macro[]): KeyAction {\r\n let keyActionFirstByte = buffer.readUInt8();\r\n buffer.backtrack();\r\n\r\n if (keyActionFirstByte >= KeyActionId.KeystrokeAction && keyActionFirstByte < KeyActionId.LastKeystrokeAction) {\r\n return new KeystrokeAction().fromBinary(buffer);\r\n }\r\n\r\n switch (keyActionFirstByte) {\r\n case KeyActionId.NoneAction:\r\n buffer.readUInt8(); // Read type just to skip it\r\n return undefined;\r\n case KeyActionId.SwitchLayerAction:\r\n return new SwitchLayerAction().fromBinary(buffer);\r\n case KeyActionId.SwitchKeymapAction:\r\n return new SwitchKeymapAction().fromBinary(buffer);\r\n case KeyActionId.MouseAction:\r\n return new MouseAction().fromBinary(buffer);\r\n case KeyActionId.PlayMacroAction:\r\n return new PlayMacroAction().fromBinary(buffer, macros);\r\n default:\r\n throw `Invalid KeyAction first byte: ${keyActionFirstByte}`;\r\n }\r\n }\r\n\r\n private static fromKeyAction(keyAction: KeyAction): KeyAction {\r\n let newKeyAction: KeyAction;\r\n if (keyAction instanceof KeystrokeAction) {\r\n newKeyAction = new KeystrokeAction(keyAction);\r\n } else if (keyAction instanceof SwitchLayerAction) {\r\n newKeyAction = new SwitchLayerAction(keyAction);\r\n } else if (keyAction instanceof SwitchKeymapAction) {\r\n newKeyAction = new SwitchKeymapAction(keyAction);\r\n } else if (keyAction instanceof MouseAction) {\r\n newKeyAction = new MouseAction(keyAction);\r\n } else if (keyAction instanceof PlayMacroAction) {\r\n newKeyAction = new PlayMacroAction(keyAction);\r\n }\r\n return newKeyAction;\r\n }\r\n\r\n private static fromJSONObject(keyAction: any, macros: Macro[]): KeyAction {\r\n if (!keyAction) {\r\n return;\r\n }\r\n\r\n switch (keyAction.keyActionType) {\r\n case keyActionType.KeystrokeAction:\r\n return new KeystrokeAction().fromJsonObject(keyAction);\r\n case keyActionType.SwitchLayerAction:\r\n return new SwitchLayerAction().fromJsonObject(keyAction);\r\n case keyActionType.SwitchKeymapAction:\r\n return new SwitchKeymapAction().fromJsonObject(keyAction);\r\n case keyActionType.MouseAction:\r\n return new MouseAction().fromJsonObject(keyAction);\r\n case keyActionType.PlayMacroAction:\r\n return new PlayMacroAction().fromJsonObject(keyAction, macros);\r\n default:\r\n throw `Invalid KeyAction.keyActionType: \"${keyAction.keyActionType}\"`;\r\n }\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/config-serializer/config-items/key-action/helper.ts","export class UhkBuffer {\r\n\r\n private static eepromSize = 32 * 1024;\r\n private static maxCompactLength = 0xFFFF;\r\n private static longCompactLengthPrefix = 0xFF;\r\n private static stringEncoding = 'utf8';\r\n private static isFirstElementToDump = false;\r\n\r\n offset: number;\r\n private _enableDump = false;\r\n\r\n private buffer: Buffer;\r\n private bytesToBacktrack: number;\r\n\r\n static simpleElementWriter(buffer: UhkBuffer, element: T): void {\r\n (element).toBinary(buffer); // TODO: Remove any\r\n }\r\n\r\n constructor() {\r\n this.offset = 0;\r\n this.bytesToBacktrack = 0;\r\n this.buffer = new Buffer(UhkBuffer.eepromSize);\r\n this.buffer.fill(0);\r\n }\r\n\r\n readInt8(): number {\r\n let value = this.buffer.readInt8(this.offset);\r\n this.dump(`i8(${value})`);\r\n this.bytesToBacktrack = 1;\r\n this.offset += this.bytesToBacktrack;\r\n return value;\r\n }\r\n\r\n writeInt8(value: number): void {\r\n this.dump(`i8(${value})`);\r\n this.buffer.writeInt8(value, this.offset);\r\n this.offset += 1;\r\n }\r\n\r\n readUInt8(): number {\r\n let value = this.buffer.readUInt8(this.offset);\r\n this.dump(`u8(${value})`);\r\n this.bytesToBacktrack = 1;\r\n this.offset += this.bytesToBacktrack;\r\n return value;\r\n }\r\n\r\n writeUInt8(value: number): void {\r\n this.dump(`u8(${value})`);\r\n this.buffer.writeUInt8(value, this.offset);\r\n this.offset += 1;\r\n }\r\n\r\n readInt16(): number {\r\n let value = this.buffer.readInt16LE(this.offset);\r\n this.dump(`i16(${value})`);\r\n this.bytesToBacktrack = 2;\r\n this.offset += this.bytesToBacktrack;\r\n return value;\r\n }\r\n\r\n writeInt16(value: number): void {\r\n this.dump(`i16(${value})`);\r\n this.buffer.writeInt16LE(value, this.offset);\r\n this.offset += 2;\r\n }\r\n\r\n readUInt16(): number {\r\n let value = this.buffer.readUInt16LE(this.offset);\r\n this.dump(`u16(${value})`);\r\n this.bytesToBacktrack = 2;\r\n this.offset += this.bytesToBacktrack;\r\n return value;\r\n }\r\n\r\n writeUInt16(value: number): void {\r\n this.dump(`u16(${value})`);\r\n this.buffer.writeUInt16LE(value, this.offset);\r\n this.offset += 2;\r\n }\r\n\r\n readInt32(): number {\r\n let value = this.buffer.readInt32LE(this.offset);\r\n this.dump(`i32(${value})`);\r\n this.bytesToBacktrack = 4;\r\n this.offset += this.bytesToBacktrack;\r\n return value;\r\n }\r\n\r\n writeInt32(value: number): void {\r\n this.dump(`i32(${value})`);\r\n this.buffer.writeInt32LE(value, this.offset);\r\n this.offset += 4;\r\n }\r\n\r\n readUInt32(): number {\r\n let value = this.buffer.readUInt32LE(this.offset);\r\n this.dump(`u32(${value})`);\r\n this.bytesToBacktrack = 4;\r\n this.offset += this.bytesToBacktrack;\r\n return value;\r\n }\r\n\r\n writeUInt32(value: number): void {\r\n this.dump(`u32(${value})`);\r\n this.buffer.writeUInt32LE(value, this.offset);\r\n this.offset += 4;\r\n }\r\n\r\n readCompactLength(): number {\r\n let length = this.readUInt8();\r\n if (length === UhkBuffer.longCompactLengthPrefix) {\r\n length += this.readUInt8() << 8;\r\n }\r\n return length;\r\n }\r\n\r\n writeCompactLength(length: number) {\r\n if (length >= UhkBuffer.longCompactLengthPrefix) {\r\n this.writeUInt8(UhkBuffer.longCompactLengthPrefix);\r\n this.writeUInt16(length);\r\n } else {\r\n this.writeUInt8(length);\r\n }\r\n }\r\n\r\n readString(): string {\r\n let stringByteLength = this.readCompactLength();\r\n let str = this.buffer.toString(UhkBuffer.stringEncoding, this.offset, this.offset + stringByteLength);\r\n this.dump(`${UhkBuffer.stringEncoding}(${str})`);\r\n this.bytesToBacktrack = stringByteLength;\r\n this.offset += stringByteLength;\r\n return str;\r\n }\r\n\r\n writeString(str: string): void {\r\n let stringByteLength = Buffer.byteLength(str, UhkBuffer.stringEncoding);\r\n\r\n if (stringByteLength > UhkBuffer.maxCompactLength) {\r\n throw `Cannot serialize string: ${stringByteLength} bytes is larger\r\n than the maximum allowed length of ${UhkBuffer.maxCompactLength} bytes`;\r\n }\r\n\r\n this.writeCompactLength(stringByteLength);\r\n this.dump(`${UhkBuffer.stringEncoding}(${str})`);\r\n this.buffer.write(str, this.offset, stringByteLength, UhkBuffer.stringEncoding);\r\n this.offset += stringByteLength;\r\n }\r\n\r\n readBoolean(): boolean {\r\n return this.readUInt8() !== 0;\r\n }\r\n\r\n writeBoolean(bool: boolean) {\r\n this.writeUInt8(bool ? 1 : 0);\r\n }\r\n\r\n readArray(elementReader: (buffer: UhkBuffer, index?: number) => T): T[] {\r\n let array: T[] = [];\r\n let length = this.readCompactLength();\r\n for (let i = 0; i < length; ++i) {\r\n array.push(elementReader(this, i));\r\n }\r\n return array;\r\n }\r\n\r\n writeArray(\r\n array: T[],\r\n elementWriter: (buffer: UhkBuffer, element: T, index?: number) => void = UhkBuffer.simpleElementWriter\r\n ): void {\r\n const length = array.length;\r\n this.writeCompactLength(length);\r\n for (let i = 0; i < length; ++i) {\r\n elementWriter(this, array[i], i);\r\n }\r\n }\r\n\r\n backtrack(): void {\r\n this.offset -= this.bytesToBacktrack;\r\n this.bytesToBacktrack = 0;\r\n }\r\n\r\n getBufferContent(): Buffer {\r\n return this.buffer.slice(0, this.offset);\r\n }\r\n\r\n get enableDump() {\r\n return this._enableDump;\r\n }\r\n\r\n set enableDump(value) {\r\n if (value) {\r\n UhkBuffer.isFirstElementToDump = true;\r\n }\r\n this._enableDump = value;\r\n }\r\n\r\n dump(value: any) {\r\n if (!this.enableDump) {\r\n return;\r\n }\r\n\r\n if (!UhkBuffer.isFirstElementToDump) {\r\n process.stdout.write(', ');\r\n }\r\n\r\n process.stdout.write(value);\r\n\r\n if (UhkBuffer.isFirstElementToDump) {\r\n UhkBuffer.isFirstElementToDump = false;\r\n }\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/config-serializer/UhkBuffer.ts","import { UhkBuffer } from '../UhkBuffer';\r\nimport { Layer } from './Layer';\r\nimport { Macro } from './Macro';\r\n\r\nexport class Keymap {\r\n\r\n name: string;\r\n\r\n description: string;\r\n\r\n abbreviation: string;\r\n\r\n isDefault: boolean;\r\n\r\n layers: Layer[];\r\n\r\n constructor(keymap?: Keymap) {\r\n if (!keymap) {\r\n return;\r\n }\r\n\r\n this.name = keymap.name;\r\n this.description = keymap.description;\r\n this.abbreviation = keymap.abbreviation;\r\n this.isDefault = keymap.isDefault;\r\n this.layers = keymap.layers.map(layer => new Layer(layer));\r\n }\r\n\r\n fromJsonObject(jsonObject: any, macros?: Macro[]): Keymap {\r\n this.isDefault = jsonObject.isDefault;\r\n this.abbreviation = jsonObject.abbreviation;\r\n this.name = jsonObject.name;\r\n this.description = jsonObject.description;\r\n this.layers = jsonObject.layers.map((layer: any) => new Layer().fromJsonObject(layer, macros));\r\n return this;\r\n }\r\n\r\n fromBinary(buffer: UhkBuffer, macros?: Macro[]): Keymap {\r\n this.abbreviation = buffer.readString();\r\n this.isDefault = buffer.readBoolean();\r\n this.name = buffer.readString();\r\n this.description = buffer.readString();\r\n this.layers = buffer.readArray(uhkBuffer => {\r\n return new Layer().fromBinary(uhkBuffer, macros);\r\n });\r\n return this;\r\n }\r\n\r\n toJsonObject(macros?: Macro[]): any {\r\n return {\r\n isDefault: this.isDefault,\r\n abbreviation: this.abbreviation,\r\n name: this.name,\r\n description: this.description,\r\n layers: this.layers.map(layer => layer.toJsonObject(macros))\r\n };\r\n }\r\n\r\n toBinary(buffer: UhkBuffer, macros?: Macro[]): void {\r\n buffer.writeString(this.abbreviation);\r\n buffer.writeBoolean(this.isDefault);\r\n buffer.writeString(this.name);\r\n buffer.writeString(this.description);\r\n buffer.writeArray(this.layers, (uhkBuffer: UhkBuffer, layer: Layer) => {\r\n layer.toBinary(uhkBuffer, macros);\r\n });\r\n }\r\n\r\n toString(): string {\r\n return ``;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/config-serializer/config-items/Keymap.ts","import { UhkBuffer } from '../UhkBuffer';\r\nimport { Keymap } from './Keymap';\r\nimport { Macro } from './Macro';\r\nimport { Module } from './Module';\r\n\r\nexport class Layer {\r\n\r\n modules: Module[];\r\n\r\n constructor(layers?: Layer) {\r\n if (!layers) {\r\n return;\r\n }\r\n this.modules = layers.modules.map(module => new Module(module));\r\n }\r\n\r\n fromJsonObject(jsonObject: any, macros?: Macro[]): Layer {\r\n this.modules = jsonObject.modules.map((module: any) => new Module().fromJsonObject(module, macros));\r\n return this;\r\n }\r\n\r\n fromBinary(buffer: UhkBuffer, macros?: Macro[]): Layer {\r\n this.modules = buffer.readArray(uhkBuffer => {\r\n return new Module().fromBinary(uhkBuffer, macros);\r\n });\r\n return this;\r\n }\r\n\r\n toJsonObject(macros?: Macro[]): any {\r\n return {\r\n modules: this.modules.map(module => module.toJsonObject(macros))\r\n };\r\n }\r\n\r\n toBinary(buffer: UhkBuffer, macros?: Macro[]): void {\r\n buffer.writeArray(this.modules, (uhkBuffer: UhkBuffer, module: Module) => {\r\n module.toBinary(uhkBuffer, macros);\r\n });\r\n }\r\n\r\n toString(): string {\r\n return ``;\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/config-serializer/config-items/Layer.ts","import { assertEnum, assertUInt8 } from '../assert';\r\nimport { UhkBuffer } from '../UhkBuffer';\r\nimport { Helper as KeyActionHelper, KeyAction, NoneAction } from './key-action';\r\nimport { Keymap } from './Keymap';\r\nimport { Macro } from './Macro';\r\nimport { PlayMacroAction, SwitchLayerAction } from './key-action';\r\n\r\nenum PointerRole {\r\n none,\r\n move,\r\n scroll\r\n}\r\n\r\nexport class Module {\r\n\r\n @assertUInt8\r\n id: number;\r\n\r\n keyActions: KeyAction[];\r\n\r\n @assertEnum(PointerRole)\r\n pointerRole: PointerRole;\r\n\r\n constructor(other?: Module) {\r\n if (!other) {\r\n return;\r\n }\r\n this.id = other.id;\r\n this.keyActions = other.keyActions.map(keyAction => KeyActionHelper.createKeyAction(keyAction));\r\n this.pointerRole = other.pointerRole;\r\n }\r\n\r\n fromJsonObject(jsonObject: any, macros?: Macro[]): Module {\r\n this.id = jsonObject.id;\r\n this.pointerRole = PointerRole[jsonObject.pointerRole];\r\n this.keyActions = jsonObject.keyActions.map((keyAction: any) => {\r\n return KeyActionHelper.createKeyAction(keyAction, macros);\r\n });\r\n return this;\r\n }\r\n\r\n fromBinary(buffer: UhkBuffer, macros?: Macro[]): Module {\r\n this.id = buffer.readUInt8();\r\n this.pointerRole = buffer.readUInt8();\r\n let keyActionsLength: number = buffer.readCompactLength();\r\n this.keyActions = [];\r\n for (let i = 0; i < keyActionsLength; ++i) {\r\n this.keyActions.push(KeyActionHelper.createKeyAction(buffer, macros));\r\n }\r\n return this;\r\n }\r\n\r\n toJsonObject(macros?: Macro[]): any {\r\n return {\r\n id: this.id,\r\n pointerRole: PointerRole[this.pointerRole],\r\n keyActions: this.keyActions.map(keyAction => {\r\n if (keyAction && (macros || !(keyAction instanceof PlayMacroAction || keyAction instanceof SwitchLayerAction))) {\r\n return keyAction.toJsonObject(macros);\r\n }\r\n })\r\n };\r\n }\r\n\r\n toBinary(buffer: UhkBuffer, macros?: Macro[]): void {\r\n buffer.writeUInt8(this.id);\r\n buffer.writeUInt8(this.pointerRole);\r\n\r\n const noneAction = new NoneAction();\r\n\r\n const keyActions: KeyAction[] = this.keyActions.map(keyAction => {\r\n if (keyAction) {\r\n return keyAction;\r\n }\r\n return noneAction;\r\n });\r\n\r\n buffer.writeArray(keyActions, (uhkBuffer: UhkBuffer, keyAction: KeyAction) => {\r\n keyAction.toBinary(uhkBuffer, macros);\r\n });\r\n }\r\n\r\n toString(): string {\r\n return ``;\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/config-serializer/config-items/Module.ts","import { assertUInt8 } from '../assert';\r\nimport { UhkBuffer } from '../UhkBuffer';\r\nimport { Helper as MacroActionHelper, MacroAction } from './macro-action';\r\n\r\nexport class Macro {\r\n\r\n @assertUInt8\r\n id: number;\r\n\r\n isLooped: boolean;\r\n\r\n isPrivate: boolean;\r\n\r\n name: string;\r\n\r\n macroActions: MacroAction[];\r\n\r\n constructor(other?: Macro) {\r\n if (!other) {\r\n return;\r\n }\r\n this.id = other.id;\r\n this.isLooped = other.isLooped;\r\n this.isPrivate = other.isPrivate;\r\n this.name = other.name;\r\n this.macroActions = other.macroActions.map(macroAction => MacroActionHelper.createMacroAction(macroAction));\r\n }\r\n\r\n fromJsonObject(jsonObject: any): Macro {\r\n this.isLooped = jsonObject.isLooped;\r\n this.isPrivate = jsonObject.isPrivate;\r\n this.name = jsonObject.name;\r\n this.macroActions = jsonObject.macroActions.map((macroAction: any) => MacroActionHelper.createMacroAction(macroAction));\r\n return this;\r\n }\r\n\r\n fromBinary(buffer: UhkBuffer): Macro {\r\n this.isLooped = buffer.readBoolean();\r\n this.isPrivate = buffer.readBoolean();\r\n this.name = buffer.readString();\r\n let macroActionsLength: number = buffer.readCompactLength();\r\n this.macroActions = [];\r\n for (let i = 0; i < macroActionsLength; ++i) {\r\n this.macroActions.push(MacroActionHelper.createMacroAction(buffer));\r\n }\r\n return this;\r\n }\r\n\r\n toJsonObject(): any {\r\n return {\r\n isLooped: this.isLooped,\r\n isPrivate: this.isPrivate,\r\n name: this.name,\r\n macroActions: this.macroActions.map(macroAction => macroAction.toJsonObject())\r\n };\r\n }\r\n\r\n toBinary(buffer: UhkBuffer): void {\r\n buffer.writeBoolean(this.isLooped);\r\n buffer.writeBoolean(this.isPrivate);\r\n buffer.writeString(this.name);\r\n buffer.writeArray(this.macroActions);\r\n }\r\n\r\n toString(): string {\r\n return ``;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/config-serializer/config-items/Macro.ts","export * from './DelayMacroAction';\r\nexport * from './EditableMacroAction';\r\nexport * from './KeyMacroAction';\r\nexport * from './MacroAction';\r\nexport * from './MoveMouseMacroAction';\r\nexport * from './MouseButtonMacroAction';\r\nexport * from './ScrollMouseMacroAction';\r\nexport * from './TextMacroAction';\r\nexport * from './helper';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/config-serializer/config-items/macro-action/index.ts","import { assertUInt16 } from '../../assert';\r\nimport { UhkBuffer } from '../../UhkBuffer';\r\nimport { MacroAction, MacroActionId, macroActionType } from './MacroAction';\r\n\r\nexport class DelayMacroAction extends MacroAction {\r\n\r\n @assertUInt16\r\n delay: number;\r\n\r\n constructor(other?: DelayMacroAction) {\r\n super();\r\n if (!other) {\r\n return;\r\n }\r\n this.delay = other.delay;\r\n }\r\n\r\n fromJsonObject(jsObject: any): DelayMacroAction {\r\n this.assertMacroActionType(jsObject);\r\n this.delay = jsObject.delay;\r\n return this;\r\n }\r\n\r\n fromBinary(buffer: UhkBuffer): DelayMacroAction {\r\n this.readAndAssertMacroActionId(buffer);\r\n this.delay = buffer.readUInt16();\r\n return this;\r\n }\r\n\r\n toJsonObject(): any {\r\n return {\r\n macroActionType: macroActionType.DelayMacroAction,\r\n delay: this.delay\r\n };\r\n }\r\n\r\n toBinary(buffer: UhkBuffer) {\r\n buffer.writeUInt8(MacroActionId.DelayMacroAction);\r\n buffer.writeUInt16(this.delay);\r\n }\r\n\r\n toString(): string {\r\n return ``;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/config-serializer/config-items/macro-action/DelayMacroAction.ts","import { UhkBuffer } from '../../UhkBuffer';\r\n\r\nexport enum MacroActionId {\r\n KeyMacroAction = 0,\r\n /*\r\n 0 - 8 are reserved for KeyMacroAction\r\n PressKeyMacroAction with scancode: 0\r\n PressKeyMacroAction with modifiers: 1\r\n PressKeyMacroAction with scancode and modifiers 2\r\n HoldKeyMacroAction with scancode: 3\r\n HoldKeyMacroAction with modifiers: 4\r\n HoldKeyMacroAction with scancode and modifiers 5\r\n ReleaseKeyMacroAction with scancode: 6\r\n ReleaseKeyMacroAction with modifiers: 7\r\n ReleaseKeyMacroAction with scancode and modifiers 8\r\n */\r\n LastKeyMacroAction = 8,\r\n MouseButtonMacroAction = 9,\r\n /*\r\n 9 - 11 are reserved for MouseButtonMacroAction\r\n PressMouseButtonsMacroAction = 9,\r\n HoldMouseButtonsMacroAction = 10,\r\n ReleaseMouseButtonsMacroAction = 11,\r\n */\r\n LastMouseButtonMacroAction = 11,\r\n MoveMouseMacroAction = 12,\r\n ScrollMouseMacroAction = 13,\r\n DelayMacroAction = 14,\r\n TextMacroAction = 15\r\n}\r\n\r\nexport enum MacroSubAction {\r\n press = 0,\r\n hold = 1,\r\n release = 2\r\n}\r\n\r\nexport let macroActionType = {\r\n KeyMacroAction : 'key',\r\n MouseButtonMacroAction : 'mouseButton',\r\n MoveMouseMacroAction : 'moveMouse',\r\n ScrollMouseMacroAction : 'scrollMouse',\r\n DelayMacroAction : 'delay',\r\n TextMacroAction : 'text'\r\n};\r\n\r\nexport abstract class MacroAction {\r\n assertMacroActionType(jsObject: any) {\r\n let macroActionClassname = this.constructor.name;\r\n let macroActionTypeString = macroActionType[macroActionClassname];\r\n if (jsObject.macroActionType !== macroActionTypeString) {\r\n throw `Invalid ${macroActionClassname}.macroActionType: ${jsObject.macroActionType}`;\r\n }\r\n }\r\n\r\n readAndAssertMacroActionId(buffer: UhkBuffer): MacroActionId {\r\n let classname: string = this.constructor.name;\r\n let readMacroActionId: MacroActionId = buffer.readUInt8();\r\n let macroActionId: MacroActionId = MacroActionId[classname];\r\n if (macroActionId === MacroActionId.KeyMacroAction) {\r\n if (readMacroActionId < MacroActionId.KeyMacroAction || readMacroActionId > MacroActionId.LastKeyMacroAction) {\r\n throw `Invalid ${classname} first byte: ${readMacroActionId}`;\r\n }\r\n } else if (macroActionId === MacroActionId.MouseButtonMacroAction) {\r\n if (readMacroActionId < MacroActionId.MouseButtonMacroAction ||\r\n readMacroActionId > MacroActionId.LastMouseButtonMacroAction) {\r\n throw `Invalid ${classname} first byte: ${readMacroActionId}`;\r\n }\r\n } else if (readMacroActionId !== macroActionId) {\r\n throw `Invalid ${classname} first byte: ${readMacroActionId}`;\r\n }\r\n return readMacroActionId;\r\n }\r\n\r\n abstract toJsonObject(): any;\r\n abstract toBinary(buffer: UhkBuffer): void;\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/config-serializer/config-items/macro-action/MacroAction.ts","import { KeyAction, KeystrokeAction, keyActionType } from '../key-action';\r\nimport { DelayMacroAction } from './DelayMacroAction';\r\nimport { KeyMacroAction } from './KeyMacroAction';\r\nimport { MacroAction, MacroSubAction, macroActionType } from './MacroAction';\r\nimport { MouseButtonMacroAction } from './MouseButtonMacroAction';\r\nimport { MoveMouseMacroAction } from './MoveMouseMacroAction';\r\nimport { ScrollMouseMacroAction } from './ScrollMouseMacroAction';\r\nimport { TextMacroAction } from './TextMacroAction';\r\n\r\ninterface JsObjectEditableMacroAction {\r\n macroActionType: string;\r\n action?: string;\r\n scancode?: number;\r\n modifierMask?: number;\r\n mouseButtonsMask?: number;\r\n x?: number;\r\n y?: number;\r\n delay?: number;\r\n text?: string;\r\n}\r\n\r\nexport class EditableMacroAction {\r\n macroActionType: string;\r\n action: MacroSubAction;\r\n // Key macro action properties\r\n scancode: number;\r\n modifierMask: number;\r\n // Mouse macro action properties\r\n mouseButtonsMask: number;\r\n moveX: number;\r\n moveY: number;\r\n scrollX: number;\r\n scrollY: number;\r\n // Delay macro action properties\r\n delay: number;\r\n // Text macro action properties\r\n text: string;\r\n\r\n constructor(jsObject?: JsObjectEditableMacroAction) {\r\n if (!jsObject) {\r\n return;\r\n }\r\n\r\n this.macroActionType = jsObject.macroActionType;\r\n\r\n switch (this.macroActionType) {\r\n case macroActionType.KeyMacroAction:\r\n this.action = MacroSubAction[jsObject.action];\r\n this.scancode = jsObject.scancode;\r\n this.modifierMask = jsObject.modifierMask;\r\n break;\r\n case macroActionType.MouseButtonMacroAction:\r\n this.action = MacroSubAction[jsObject.action];\r\n this.mouseButtonsMask = jsObject.mouseButtonsMask;\r\n break;\r\n case macroActionType.MoveMouseMacroAction:\r\n this.moveX = jsObject.x;\r\n this.moveY = jsObject.y;\r\n break;\r\n case macroActionType.ScrollMouseMacroAction:\r\n this.scrollX = jsObject.x;\r\n this.scrollY = jsObject.y;\r\n break;\r\n case macroActionType.TextMacroAction:\r\n this.text = jsObject.text;\r\n break;\r\n case macroActionType.DelayMacroAction:\r\n this.delay = jsObject.delay;\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n\r\n toJsObject(): any {\r\n return {\r\n macroActionType: this.macroActionType,\r\n action: this.action,\r\n delay: this.delay,\r\n text: this.text,\r\n scancode: this.scancode,\r\n modifierMask: this.modifierMask,\r\n mouseButtonsMask: this.mouseButtonsMask,\r\n mouseMove: {\r\n x: this.moveX,\r\n y: this.moveY\r\n },\r\n mouseScroll: {\r\n x: this.scrollX,\r\n y: this.scrollY\r\n }\r\n };\r\n }\r\n\r\n fromKeyAction(keyAction: KeyAction): void {\r\n let data = keyAction.toJsonObject();\r\n this.scancode = data.scancode;\r\n this.modifierMask = data.modifierMask;\r\n }\r\n\r\n toKeystrokeAction(): KeystrokeAction {\r\n let data = this.toJsObject();\r\n data.keyActionType = keyActionType.KeystrokeAction;\r\n return (new KeystrokeAction().fromJsonObject(data));\r\n }\r\n\r\n setMouseButtons(buttonStates: boolean[]): void {\r\n let bitmask = 0;\r\n for (let i = 0; i < buttonStates.length; i++) {\r\n bitmask |= Number(buttonStates[i]) << i;\r\n }\r\n this.mouseButtonsMask = bitmask;\r\n }\r\n\r\n getMouseButtons(): boolean[] {\r\n let enabledMouseButtons: boolean[] = [];\r\n for (let bitmask = this.mouseButtonsMask; bitmask; bitmask >>>= 1) {\r\n enabledMouseButtons.push(Boolean(bitmask & 1));\r\n }\r\n return enabledMouseButtons;\r\n }\r\n\r\n toClass(): MacroAction {\r\n switch (this.macroActionType) {\r\n // Delay action\r\n case macroActionType.DelayMacroAction:\r\n return new DelayMacroAction().fromJsonObject({\r\n macroActionType: this.macroActionType,\r\n delay: this.delay\r\n });\r\n // Text action\r\n case macroActionType.TextMacroAction:\r\n return new TextMacroAction().fromJsonObject({\r\n macroActionType: this.macroActionType,\r\n text: this.text\r\n });\r\n // Keypress action\r\n case macroActionType.KeyMacroAction:\r\n return new KeyMacroAction().fromJsonObject({\r\n macroActionType: this.macroActionType,\r\n action: MacroSubAction[this.action],\r\n scancode: this.scancode,\r\n modifierMask: this.modifierMask\r\n });\r\n // Mouse actions\r\n case macroActionType.MouseButtonMacroAction:\r\n return new MouseButtonMacroAction().fromJsonObject({\r\n macroActionType: this.macroActionType,\r\n action: MacroSubAction[this.action],\r\n mouseButtonsMask: this.mouseButtonsMask\r\n });\r\n case macroActionType.MoveMouseMacroAction:\r\n return new MoveMouseMacroAction().fromJsonObject({\r\n macroActionType: this.macroActionType,\r\n x: this.moveX,\r\n y: this.moveY\r\n });\r\n case macroActionType.ScrollMouseMacroAction:\r\n return new ScrollMouseMacroAction().fromJsonObject({\r\n macroActionType: this.macroActionType,\r\n x: this.scrollX,\r\n y: this.scrollY\r\n });\r\n default:\r\n throw new Error('Macro action type is missing or not implemented.');\r\n }\r\n }\r\n\r\n isKeyAction(): boolean {\r\n return this.macroActionType === macroActionType.KeyMacroAction;\r\n }\r\n\r\n isMouseButtonAction(): boolean {\r\n return this.macroActionType === macroActionType.MouseButtonMacroAction;\r\n }\r\n\r\n isOnlyHoldAction(): boolean {\r\n return this.action === MacroSubAction.hold;\r\n }\r\n\r\n isOnlyPressAction(): boolean {\r\n return this.action === MacroSubAction.press;\r\n }\r\n\r\n isOnlyReleaseAction(): boolean {\r\n return this.action === MacroSubAction.release;\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/config-serializer/config-items/macro-action/EditableMacroAction.ts","import { assertEnum, assertUInt8 } from '../../assert';\r\nimport { UhkBuffer } from '../../UhkBuffer';\r\nimport { KeyModifiers } from '../KeyModifiers';\r\nimport { MacroAction, MacroActionId, MacroSubAction, macroActionType } from './MacroAction';\r\n\r\nconst NUM_OF_COMBINATIONS = 3; // Cases: scancode, modifer, both\r\n\r\ninterface JsObjectKeyMacroAction {\r\n macroActionType: string;\r\n action: string;\r\n scancode?: number;\r\n modifierMask?: number;\r\n}\r\n\r\nexport class KeyMacroAction extends MacroAction {\r\n\r\n @assertEnum(MacroSubAction)\r\n action: MacroSubAction;\r\n\r\n @assertUInt8\r\n scancode: number;\r\n\r\n @assertUInt8\r\n modifierMask: number;\r\n\r\n constructor(other?: KeyMacroAction) {\r\n super();\r\n if (!other) {\r\n return;\r\n }\r\n this.action = other.action;\r\n this.scancode = other.scancode;\r\n this.modifierMask = other.modifierMask;\r\n }\r\n\r\n fromJsonObject(jsObject: JsObjectKeyMacroAction): KeyMacroAction {\r\n this.assertMacroActionType(jsObject);\r\n this.action = MacroSubAction[jsObject.action];\r\n this.scancode = jsObject.scancode;\r\n this.modifierMask = jsObject.modifierMask;\r\n return this;\r\n }\r\n\r\n fromBinary(buffer: UhkBuffer): KeyMacroAction {\r\n let macroActionId: MacroActionId = this.readAndAssertMacroActionId(buffer);\r\n let keyMacroType: number = macroActionId - MacroActionId.KeyMacroAction;\r\n this.action = Math.floor(keyMacroType / NUM_OF_COMBINATIONS);\r\n keyMacroType %= NUM_OF_COMBINATIONS;\r\n if (keyMacroType % 2 === 0) {\r\n this.scancode = buffer.readUInt8();\r\n }\r\n if (keyMacroType !== 0) {\r\n this.modifierMask = buffer.readUInt8();\r\n }\r\n return this;\r\n }\r\n\r\n toJsonObject(): any {\r\n let jsObject: JsObjectKeyMacroAction = {\r\n macroActionType: macroActionType.KeyMacroAction,\r\n action: MacroSubAction[this.action]\r\n };\r\n\r\n if (this.hasScancode()) {\r\n jsObject.scancode = this.scancode;\r\n }\r\n\r\n if (this.hasModifiers()) {\r\n jsObject.modifierMask = this.modifierMask;\r\n }\r\n\r\n return jsObject;\r\n }\r\n\r\n toBinary(buffer: UhkBuffer) {\r\n let keyMacroType: number = MacroActionId.KeyMacroAction;\r\n keyMacroType += NUM_OF_COMBINATIONS * this.action;\r\n\r\n if (this.hasModifiers()) {\r\n ++keyMacroType;\r\n if (this.hasScancode()) {\r\n ++keyMacroType;\r\n }\r\n }\r\n buffer.writeUInt8(keyMacroType);\r\n if (this.hasScancode()) {\r\n buffer.writeUInt8(this.scancode);\r\n }\r\n if (this.hasModifiers()) {\r\n buffer.writeUInt8(this.modifierMask);\r\n }\r\n }\r\n\r\n toString(): string {\r\n return ``;\r\n }\r\n\r\n isModifierActive(modifier: KeyModifiers): boolean {\r\n return (this.modifierMask & modifier) > 0;\r\n }\r\n\r\n hasScancode(): boolean {\r\n return !!this.scancode;\r\n }\r\n\r\n hasModifiers(): boolean {\r\n return !!this.modifierMask;\r\n }\r\n\r\n isHoldAction(): boolean {\r\n return this.action === MacroSubAction.hold;\r\n }\r\n\r\n isPressAction(): boolean {\r\n return this.action === MacroSubAction.press;\r\n }\r\n\r\n isReleaseAction(): boolean {\r\n return this.action === MacroSubAction.release;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/config-serializer/config-items/macro-action/KeyMacroAction.ts","import { assertEnum, assertUInt8 } from '../../assert';\r\nimport { UhkBuffer } from '../../UhkBuffer';\r\nimport { MacroAction, MacroActionId, MacroSubAction, macroActionType } from './MacroAction';\r\n\r\nexport enum MouseButtons {\r\n Left = 1 << 0,\r\n Middle = 1 << 1,\r\n Right = 1 << 2\r\n};\r\n\r\ninterface JsObjectMouseButtonMacroAction {\r\n macroActionType: string;\r\n action: string;\r\n mouseButtonsMask?: number;\r\n}\r\n\r\nexport class MouseButtonMacroAction extends MacroAction {\r\n @assertEnum(MacroSubAction)\r\n action: MacroSubAction;\r\n\r\n @assertUInt8\r\n mouseButtonsMask: number;\r\n\r\n constructor(other?: MouseButtonMacroAction) {\r\n super();\r\n if (!other) {\r\n return;\r\n }\r\n this.action = other.action;\r\n this.mouseButtonsMask = other.mouseButtonsMask;\r\n }\r\n\r\n fromJsonObject(jsObject: JsObjectMouseButtonMacroAction): MouseButtonMacroAction {\r\n this.assertMacroActionType(jsObject);\r\n this.action = MacroSubAction[jsObject.action];\r\n this.mouseButtonsMask = jsObject.mouseButtonsMask;\r\n return this;\r\n }\r\n\r\n fromBinary(buffer: UhkBuffer): MouseButtonMacroAction {\r\n let macroActionId: MacroActionId = this.readAndAssertMacroActionId(buffer);\r\n this.action = macroActionId - MacroActionId.MouseButtonMacroAction;\r\n this.mouseButtonsMask = buffer.readUInt8();\r\n return this;\r\n }\r\n\r\n toJsonObject(): any {\r\n return {\r\n macroActionType: macroActionType.MouseButtonMacroAction,\r\n action: MacroSubAction[this.action],\r\n mouseButtonsMask: this.mouseButtonsMask\r\n };\r\n }\r\n\r\n toBinary(buffer: UhkBuffer): void {\r\n buffer.writeUInt8(MacroActionId.MouseButtonMacroAction + this.action);\r\n buffer.writeUInt8(this.mouseButtonsMask);\r\n }\r\n\r\n setMouseButtons(buttonStates: boolean[]): void {\r\n let bitmask = 0;\r\n for (let i = 0; i < buttonStates.length; i++) {\r\n bitmask |= Number(buttonStates[i]) << i;\r\n }\r\n this.mouseButtonsMask = bitmask;\r\n }\r\n\r\n getMouseButtons(): boolean[] {\r\n let enabledMouseButtons: boolean[] = [];\r\n for (let bitmask = this.mouseButtonsMask; bitmask; bitmask >>>= 1) {\r\n enabledMouseButtons.push(Boolean(bitmask & 1));\r\n }\r\n return enabledMouseButtons;\r\n }\r\n\r\n toString(): string {\r\n return ``;\r\n }\r\n\r\n hasButtons(): boolean {\r\n return this.mouseButtonsMask !== 0;\r\n }\r\n\r\n isOnlyHoldAction(): boolean {\r\n return this.action === MacroSubAction.hold;\r\n }\r\n\r\n isOnlyPressAction(): boolean {\r\n return this.action === MacroSubAction.press;\r\n }\r\n\r\n isOnlyReleaseAction(): boolean {\r\n return this.action === MacroSubAction.release;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/config-serializer/config-items/macro-action/MouseButtonMacroAction.ts","import { assertInt16 } from '../../assert';\r\nimport { UhkBuffer } from '../../UhkBuffer';\r\nimport { MacroAction, MacroActionId, macroActionType } from './MacroAction';\r\n\r\nexport class MoveMouseMacroAction extends MacroAction {\r\n\r\n @assertInt16\r\n x: number;\r\n\r\n @assertInt16\r\n y: number;\r\n\r\n constructor(other?: MoveMouseMacroAction) {\r\n super();\r\n if (!other) {\r\n return;\r\n }\r\n this.x = other.x;\r\n this.y = other.y;\r\n }\r\n\r\n fromJsonObject(jsObject: any): MoveMouseMacroAction {\r\n this.assertMacroActionType(jsObject);\r\n this.x = jsObject.x;\r\n this.y = jsObject.y;\r\n return this;\r\n }\r\n\r\n fromBinary(buffer: UhkBuffer): MoveMouseMacroAction {\r\n this.readAndAssertMacroActionId(buffer);\r\n this.x = buffer.readInt16();\r\n this.y = buffer.readInt16();\r\n return this;\r\n }\r\n\r\n toJsonObject(): any {\r\n return {\r\n macroActionType: macroActionType.MoveMouseMacroAction,\r\n x: this.x,\r\n y: this.y\r\n };\r\n }\r\n\r\n toBinary(buffer: UhkBuffer) {\r\n buffer.writeUInt8(MacroActionId.MoveMouseMacroAction);\r\n buffer.writeInt16(this.x);\r\n buffer.writeInt16(this.y);\r\n }\r\n\r\n toString(): string {\r\n return ``;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/config-serializer/config-items/macro-action/MoveMouseMacroAction.ts","import { assertInt16 } from '../../assert';\r\nimport { UhkBuffer } from '../../UhkBuffer';\r\nimport { MacroAction, MacroActionId, macroActionType } from './MacroAction';\r\n\r\nexport class ScrollMouseMacroAction extends MacroAction {\r\n\r\n @assertInt16\r\n x: number;\r\n\r\n @assertInt16\r\n y: number;\r\n\r\n constructor(other?: ScrollMouseMacroAction) {\r\n super();\r\n if (!other) {\r\n return;\r\n }\r\n this.x = other.x;\r\n this.y = other.y;\r\n }\r\n\r\n fromJsonObject(jsObject: any): ScrollMouseMacroAction {\r\n this.assertMacroActionType(jsObject);\r\n this.x = jsObject.x;\r\n this.y = jsObject.y;\r\n return this;\r\n }\r\n\r\n fromBinary(buffer: UhkBuffer): ScrollMouseMacroAction {\r\n this.readAndAssertMacroActionId(buffer);\r\n this.x = buffer.readInt16();\r\n this.y = buffer.readInt16();\r\n return this;\r\n }\r\n\r\n toJsonObject(): any {\r\n return {\r\n macroActionType: macroActionType.ScrollMouseMacroAction,\r\n x: this.x,\r\n y: this.y\r\n };\r\n }\r\n\r\n toBinary(buffer: UhkBuffer) {\r\n buffer.writeUInt8(MacroActionId.ScrollMouseMacroAction);\r\n buffer.writeInt16(this.x);\r\n buffer.writeInt16(this.y);\r\n }\r\n\r\n toString(): string {\r\n return ``;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/config-serializer/config-items/macro-action/ScrollMouseMacroAction.ts","import { UhkBuffer } from '../../UhkBuffer';\r\nimport { MacroAction, MacroActionId, macroActionType } from './MacroAction';\r\n\r\nexport class TextMacroAction extends MacroAction {\r\n\r\n text: string;\r\n\r\n constructor(other?: TextMacroAction) {\r\n super();\r\n if (!other) {\r\n return;\r\n }\r\n this.text = other.text;\r\n }\r\n\r\n fromJsonObject(jsObject: any): TextMacroAction {\r\n this.assertMacroActionType(jsObject);\r\n this.text = jsObject.text;\r\n return this;\r\n }\r\n\r\n fromBinary(buffer: UhkBuffer): TextMacroAction {\r\n this.readAndAssertMacroActionId(buffer);\r\n this.text = buffer.readString();\r\n return this;\r\n }\r\n\r\n toJsonObject(): any {\r\n return {\r\n macroActionType: macroActionType.TextMacroAction,\r\n text: this.text\r\n };\r\n }\r\n\r\n toBinary(buffer: UhkBuffer) {\r\n buffer.writeUInt8(MacroActionId.TextMacroAction);\r\n buffer.writeString(this.text);\r\n }\r\n\r\n toString(): string {\r\n return ``;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/config-serializer/config-items/macro-action/TextMacroAction.ts","import { UhkBuffer } from '../../UhkBuffer';\r\nimport {\r\n DelayMacroAction,\r\n KeyMacroAction,\r\n MacroAction,\r\n MacroActionId,\r\n MouseButtonMacroAction,\r\n MoveMouseMacroAction,\r\n ScrollMouseMacroAction,\r\n TextMacroAction,\r\n macroActionType\r\n} from './index';\r\n\r\nexport class Helper {\r\n\r\n static createMacroAction(source: MacroAction | UhkBuffer | any): MacroAction {\r\n if (source instanceof MacroAction) {\r\n return Helper.fromMacroAction(source);\r\n } else if (source instanceof UhkBuffer) {\r\n return Helper.fromUhkBuffer(source);\r\n } else {\r\n return Helper.fromJSONObject(source);\r\n }\r\n }\r\n\r\n private static fromUhkBuffer(buffer: UhkBuffer): MacroAction {\r\n let macroActionFirstByte = buffer.readUInt8();\r\n buffer.backtrack();\r\n\r\n if (macroActionFirstByte >= MacroActionId.KeyMacroAction && macroActionFirstByte <= MacroActionId.LastKeyMacroAction) {\r\n return new KeyMacroAction().fromBinary(buffer);\r\n } else if (\r\n macroActionFirstByte >= MacroActionId.MouseButtonMacroAction &&\r\n macroActionFirstByte <= MacroActionId.LastMouseButtonMacroAction\r\n ) {\r\n return new MouseButtonMacroAction().fromBinary(buffer);\r\n }\r\n switch (macroActionFirstByte) {\r\n case MacroActionId.MoveMouseMacroAction:\r\n return new MoveMouseMacroAction().fromBinary(buffer);\r\n case MacroActionId.ScrollMouseMacroAction:\r\n return new ScrollMouseMacroAction().fromBinary(buffer);\r\n case MacroActionId.DelayMacroAction:\r\n return new DelayMacroAction().fromBinary(buffer);\r\n case MacroActionId.TextMacroAction:\r\n return new TextMacroAction().fromBinary(buffer);\r\n default:\r\n throw `Invalid MacroAction first byte: ${macroActionFirstByte}`;\r\n }\r\n }\r\n\r\n private static fromMacroAction(macroAction: MacroAction): MacroAction {\r\n let newMacroAction: MacroAction;\r\n if (macroAction instanceof KeyMacroAction) {\r\n newMacroAction = new KeyMacroAction(macroAction);\r\n } else if (macroAction instanceof MouseButtonMacroAction) {\r\n newMacroAction = new MouseButtonMacroAction(macroAction);\r\n } else if (macroAction instanceof MoveMouseMacroAction) {\r\n newMacroAction = new MoveMouseMacroAction(macroAction);\r\n } else if (macroAction instanceof ScrollMouseMacroAction) {\r\n newMacroAction = new ScrollMouseMacroAction(macroAction);\r\n } else if (macroAction instanceof DelayMacroAction) {\r\n newMacroAction = new DelayMacroAction(macroAction);\r\n } else if (macroAction instanceof TextMacroAction) {\r\n newMacroAction = new TextMacroAction(macroAction);\r\n }\r\n return newMacroAction;\r\n }\r\n\r\n private static fromJSONObject(macroAction: any): MacroAction {\r\n switch (macroAction.macroActionType) {\r\n case macroActionType.KeyMacroAction:\r\n return new KeyMacroAction().fromJsonObject(macroAction);\r\n case macroActionType.MouseButtonMacroAction:\r\n return new MouseButtonMacroAction().fromJsonObject(macroAction);\r\n case macroActionType.MoveMouseMacroAction:\r\n return new MoveMouseMacroAction().fromJsonObject(macroAction);\r\n case macroActionType.ScrollMouseMacroAction:\r\n return new ScrollMouseMacroAction().fromJsonObject(macroAction);\r\n case macroActionType.DelayMacroAction:\r\n return new DelayMacroAction().fromJsonObject(macroAction);\r\n case macroActionType.TextMacroAction:\r\n return new TextMacroAction().fromJsonObject(macroAction);\r\n default:\r\n throw `Invalid MacroAction.macroActionType: \"${macroAction.macroActionType}\"`;\r\n }\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/config-serializer/config-items/macro-action/helper.ts","import { assertUInt16 } from '../assert';\r\nimport { UhkBuffer } from '../UhkBuffer';\r\nimport { Keymap } from './Keymap';\r\nimport { Macro } from './Macro';\r\nimport { ModuleConfiguration } from './ModuleConfiguration';\r\n\r\nexport class UserConfiguration {\r\n\r\n @assertUInt16\r\n dataModelVersion: number;\r\n\r\n moduleConfigurations: ModuleConfiguration[];\r\n\r\n keymaps: Keymap[];\r\n\r\n macros: Macro[];\r\n\r\n fromJsonObject(jsonObject: any): UserConfiguration {\r\n this.dataModelVersion = jsonObject.dataModelVersion;\r\n this.moduleConfigurations = jsonObject.moduleConfigurations.map((moduleConfiguration: any) => {\r\n return new ModuleConfiguration().fromJsonObject(moduleConfiguration);\r\n });\r\n this.macros = jsonObject.macros.map((macroJsonObject: any, index: number) => {\r\n const macro = new Macro().fromJsonObject(macroJsonObject);\r\n macro.id = index;\r\n return macro;\r\n });\r\n this.keymaps = jsonObject.keymaps.map((keymap: any) => new Keymap().fromJsonObject(keymap, this.macros));\r\n return this;\r\n }\r\n\r\n fromBinary(buffer: UhkBuffer): UserConfiguration {\r\n this.dataModelVersion = buffer.readUInt16();\r\n this.moduleConfigurations = buffer.readArray(uhkBuffer => {\r\n return new ModuleConfiguration().fromBinary(uhkBuffer);\r\n });\r\n this.macros = buffer.readArray((uhkBuffer, index) => {\r\n const macro = new Macro().fromBinary(uhkBuffer);\r\n macro.id = index;\r\n return macro;\r\n });\r\n this.keymaps = buffer.readArray(uhkBuffer => new Keymap().fromBinary(uhkBuffer, this.macros));\r\n return this;\r\n }\r\n\r\n toJsonObject(): any {\r\n return {\r\n dataModelVersion: this.dataModelVersion,\r\n moduleConfigurations: this.moduleConfigurations.map(moduleConfiguration => moduleConfiguration.toJsonObject()),\r\n keymaps: this.keymaps.map(keymap => keymap.toJsonObject(this.macros)),\r\n macros: this.macros.map(macro => macro.toJsonObject())\r\n };\r\n }\r\n\r\n toBinary(buffer: UhkBuffer): void {\r\n buffer.writeUInt16(this.dataModelVersion);\r\n buffer.writeArray(this.moduleConfigurations);\r\n buffer.writeArray(this.macros);\r\n buffer.writeArray(this.keymaps, (uhkBuffer: UhkBuffer, keymap: Keymap) => {\r\n keymap.toBinary(uhkBuffer, this.macros);\r\n });\r\n }\r\n\r\n toString(): string {\r\n return ``;\r\n }\r\n\r\n getKeymap(keymapAbbreviation: string): Keymap {\r\n return this.keymaps.find(keymap => keymapAbbreviation === keymap.abbreviation);\r\n }\r\n\r\n getMacro(macroId: number): Macro {\r\n return this.macros.find(macro => macroId === macro.id);\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/config-serializer/config-items/UserConfiguration.ts","import { assertUInt8 } from '../assert';\r\nimport { UhkBuffer } from '../UhkBuffer';\r\n\r\nexport class ModuleConfiguration {\r\n\r\n /*\r\n * module id enumeration is a separate story\r\n */\r\n\r\n @assertUInt8\r\n id: number;\r\n\r\n @assertUInt8\r\n initialPointerSpeed: number;\r\n\r\n @assertUInt8\r\n pointerAcceleration: number;\r\n\r\n @assertUInt8\r\n maxPointerSpeed: number;\r\n\r\n fromJsonObject(jsonObject: any): ModuleConfiguration {\r\n this.id = jsonObject.id;\r\n this.initialPointerSpeed = jsonObject.initialPointerSpeed;\r\n this.pointerAcceleration = jsonObject.pointerAcceleration;\r\n this.maxPointerSpeed = jsonObject.maxPointerSpeed;\r\n return this;\r\n }\r\n\r\n fromBinary(buffer: UhkBuffer): ModuleConfiguration {\r\n this.id = buffer.readUInt8();\r\n this.initialPointerSpeed = buffer.readUInt8();\r\n this.pointerAcceleration = buffer.readUInt8();\r\n this.maxPointerSpeed = buffer.readUInt8();\r\n return this;\r\n }\r\n\r\n toJsonObject(): any {\r\n return {\r\n id: this.id,\r\n initialPointerSpeed: this.initialPointerSpeed,\r\n pointerAcceleration: this.pointerAcceleration,\r\n maxPointerSpeed: this.maxPointerSpeed\r\n };\r\n }\r\n\r\n toBinary(buffer: UhkBuffer): void {\r\n buffer.writeUInt8(this.id);\r\n buffer.writeUInt8(this.initialPointerSpeed);\r\n buffer.writeUInt8(this.pointerAcceleration);\r\n buffer.writeUInt8(this.maxPointerSpeed);\r\n }\r\n\r\n toString(): string {\r\n return ``;\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/config-serializer/config-items/ModuleConfiguration.ts","module.exports = \"\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n\\r\\n Sorry, there is no keymap with this abbreviation.\\r\\n
\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/keymap/edit/keymap-edit.component.html\n// module id = 174\n// module chunks = 0","module.exports = \":host {\\n width: 100%;\\n display: block; }\\n\\n.not-found {\\n margin-top: 30px;\\n font-size: 16px;\\n text-align: center; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/keymap/edit/keymap-edit.component.scss\n// module id = 175\n// module chunks = 0","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n OnChanges,\r\n Renderer,\r\n SimpleChanges,\r\n ViewChild\r\n} from '@angular/core';\r\n\r\nimport { Store } from '@ngrx/store';\r\n\r\nimport { Keymap } from '../../../config-serializer/config-items/Keymap';\r\n\r\nimport { AppState } from '../../../store';\r\nimport { KeymapActions } from '../../../store/actions';\r\n\r\n@Component({\r\n selector: 'keymap-header',\r\n template: require('./keymap-header.component.html'),\r\n styles: [require('./keymap-header.component.scss')],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class KeymapHeaderComponent implements OnChanges {\r\n @Input() keymap: Keymap;\r\n @Input() deletable: boolean;\r\n @Output() downloadClick = new EventEmitter();\r\n\r\n @ViewChild('name') keymapName: ElementRef;\r\n @ViewChild('abbr') keymapAbbr: ElementRef;\r\n\r\n private starTitle: string;\r\n private trashTitle: string;\r\n\r\n constructor(private store: Store, private renderer: Renderer) { }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['keymap']) {\r\n this.setKeymapTitle();\r\n }\r\n if (changes['deletable']) {\r\n this.setTrashTitle();\r\n }\r\n }\r\n\r\n setDefault() {\r\n if (!this.keymap.isDefault) {\r\n this.store.dispatch(KeymapActions.setDefault(this.keymap.abbreviation));\r\n }\r\n }\r\n\r\n removeKeymap() {\r\n if (this.deletable) {\r\n this.store.dispatch(KeymapActions.removeKeymap(this.keymap.abbreviation));\r\n }\r\n }\r\n\r\n duplicateKeymap() {\r\n this.store.dispatch(KeymapActions.duplicateKeymap(this.keymap));\r\n }\r\n\r\n editKeymapName(name: string) {\r\n if (name.length === 0) {\r\n this.renderer.setElementProperty(this.keymapName.nativeElement, 'value', this.keymap.name);\r\n return;\r\n }\r\n\r\n this.store.dispatch(KeymapActions.editKeymapName(this.keymap.abbreviation, name));\r\n }\r\n\r\n editKeymapAbbr(newAbbr: string) {\r\n if (newAbbr.length !== 3) {\r\n this.renderer.setElementProperty(this.keymapAbbr.nativeElement, 'value', this.keymap.abbreviation);\r\n return;\r\n }\r\n\r\n newAbbr = newAbbr.toUpperCase();\r\n this.store.dispatch(KeymapActions.editKeymapAbbr(this.keymap.abbreviation, newAbbr));\r\n }\r\n\r\n setKeymapTitle(): void {\r\n this.starTitle = this.keymap.isDefault\r\n ? 'This is the default keymap which gets activated when powering the keyboard.'\r\n : 'Makes this keymap the default keymap which gets activated when powering the keyboard.';\r\n }\r\n\r\n setTrashTitle(): void {\r\n this.trashTitle = this.deletable ? '' : 'The last keymap cannot be deleted.';\r\n }\r\n\r\n onDownloadIconClick(): void {\r\n this.downloadClick.emit();\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/keymap/header/keymap-header.component.ts","module.exports = \"\\r\\n
\\r\\n \\r\\n keymap\\r\\n ( )\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/keymap/header/keymap-header.component.html\n// module id = 177\n// module chunks = 0","module.exports = \":host {\\n display: block; }\\n\\n.keymap__is-default.fa-star-o {\\n cursor: pointer; }\\n .keymap__is-default.fa-star-o:hover {\\n color: #337ab7; }\\n\\n.keymap__remove {\\n font-size: 0.75em;\\n top: 8px; }\\n .keymap__remove:not(.disabled):hover {\\n cursor: pointer;\\n color: #900; }\\n .keymap__remove.disabled {\\n opacity: 0.25; }\\n\\n.keymap__duplicate {\\n font-size: 0.75em;\\n top: 7px;\\n margin-right: 15px;\\n position: relative; }\\n .keymap__duplicate:hover {\\n cursor: pointer;\\n color: #337ab7; }\\n\\n.layer__download {\\n top: 10px;\\n font-size: 0.8em;\\n position: relative;\\n margin-right: 10px; }\\n .layer__download:hover {\\n cursor: pointer;\\n color: #337ab7; }\\n\\n.pane-title {\\n margin-bottom: 1em; }\\n .pane-title__name, .pane-title__abbrev {\\n border: none;\\n border-bottom: 2px dotted #999;\\n padding: 0;\\n margin: 0 0.25rem; }\\n .pane-title__name:focus, .pane-title__abbrev:focus {\\n box-shadow: 0 0 0 1px #ccc, 0 0 5px 0 #ccc;\\n border-color: transparent; }\\n .pane-title__name {\\n width: 290px;\\n text-overflow: ellipsis; }\\n .pane-title__abbrev {\\n width: 90px;\\n text-align: center; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/keymap/header/keymap-header.component.scss\n// module id = 178\n// module chunks = 0","export * from './layers.component';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/layers/index.ts","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'layers',\r\n template: require('./layers.component.html'),\r\n styles: [require('./layers.component.scss')]\r\n})\r\nexport class LayersComponent {\r\n @Input() current: number;\r\n @Output() select = new EventEmitter();\r\n\r\n private buttons: string[];\r\n\r\n constructor() {\r\n this.buttons = ['Base', 'Mod', 'Fn', 'Mouse'];\r\n this.current = 0;\r\n }\r\n\r\n selectLayer(index: number) {\r\n if (this.current === index) {\r\n return;\r\n }\r\n\r\n this.select.emit({\r\n oldIndex: this.current,\r\n index: index\r\n });\r\n\r\n this.current = index;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/layers/layers.component.ts","module.exports = \"\\r\\n \\r\\n \\r\\n {{ button }}\\r\\n \\r\\n \\r\\n
\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/layers/layers.component.html\n// module id = 181\n// module chunks = 0","module.exports = \":host {\\n display: block; }\\n :host.disabled button {\\n cursor: no-drop;\\n background: rgba(204, 204, 204, 0.43);\\n pointer-events: none; }\\n :host.disabled button.btn-primary {\\n background: #7c7c7c;\\n border-color: #7c7c7c; }\\n\\nbutton {\\n margin: 2px; }\\n\\n.uhk__layer-switcher--wrapper {\\n position: relative;\\n margin-bottom: 2rem; }\\n .uhk__layer-switcher--wrapper:before {\\n content: attr(data-title);\\n display: inline-block;\\n position: absolute;\\n bottom: -0.3em;\\n right: 100%;\\n font-size: 2.4rem;\\n padding-right: 0.25em;\\n margin: 0; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/layers/layers.component.scss\n// module id = 182\n// module chunks = 0","export * from './edit/macro-edit.component';\r\nexport * from './list/macro-list.component';\r\nexport * from './header/macro-header.component';\r\nexport * from './macro.routes';\r\nexport * from './not-found';\r\nexport * from './item';\r\nexport * from './action-editor';\r\nexport * from './action-editor/tab';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/macro/index.ts","import { Component, OnDestroy } from '@angular/core';\r\nimport { ActivatedRoute } from '@angular/router';\r\n\r\nimport { Store } from '@ngrx/store';\r\n\r\nimport { Subscription } from 'rxjs/Subscription';\r\n\r\nimport { Macro } from '../../../config-serializer/config-items/Macro';\r\nimport { MacroAction } from '../../../config-serializer/config-items/macro-action/MacroAction';\r\n\r\nimport { MacroActions } from '../../../store/actions';\r\nimport { AppState } from '../../../store/index';\r\nimport { getMacro } from '../../../store/reducers/user-configuration';\r\n\r\n@Component({\r\n selector: 'macro-edit',\r\n template: require('./macro-edit.component.html'),\r\n styles: [require('./macro-edit.component.scss')],\r\n host: {\r\n 'class': 'container-fluid'\r\n }\r\n})\r\nexport class MacroEditComponent implements OnDestroy {\r\n private subscription: Subscription;\r\n private macro: Macro;\r\n private isNew: boolean;\r\n\r\n constructor(private store: Store, public route: ActivatedRoute) {\r\n this.subscription = route\r\n .params\r\n .select('id')\r\n .switchMap((id: string) => store.let(getMacro(+id)))\r\n .subscribe((macro: Macro) => {\r\n this.macro = macro;\r\n });\r\n\r\n this.isNew = this.route.snapshot.params['empty'] === 'new';\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n addAction(macroId: number, action: MacroAction) {\r\n this.store.dispatch(MacroActions.addMacroAction(macroId, action));\r\n }\r\n\r\n editAction(macroId: number, index: number, action: MacroAction) {\r\n this.store.dispatch(MacroActions.saveMacroAction(macroId, index, action));\r\n }\r\n\r\n deleteAction(macroId: number, index: number, action: MacroAction) {\r\n this.store.dispatch(MacroActions.deleteMacroAction(macroId, index, action));\r\n }\r\n\r\n reorderAction(macroId: number, oldIndex: number, newIndex: number) {\r\n this.store.dispatch(MacroActions.reorderMacroAction(macroId, oldIndex, newIndex));\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/macro/edit/macro-edit.component.ts","module.exports = \"\\r\\n \\r\\n \\r\\n \\r\\n\\r\\n\\r\\n There is no macro with id {{ route.params.select('id') | async }}.\\r\\n
\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/macro/edit/macro-edit.component.html\n// module id = 185\n// module chunks = 0","module.exports = \":host {\\n width: 100%;\\n height: 100%;\\n display: block; }\\n\\n.not-found {\\n margin-top: 30px;\\n font-size: 16px;\\n text-align: center; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/macro/edit/macro-edit.component.scss\n// module id = 186\n// module chunks = 0","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n Output,\r\n QueryList,\r\n ViewChildren,\r\n animate,\r\n forwardRef,\r\n state,\r\n style,\r\n transition,\r\n trigger\r\n} from '@angular/core';\r\n\r\nimport { DragulaService } from 'ng2-dragula/ng2-dragula';\r\n\r\nimport { Macro } from '../../../config-serializer/config-items/Macro';\r\nimport { MacroAction } from '../../../config-serializer/config-items/macro-action';\r\nimport { MacroItemComponent } from './../index';\r\n\r\n@Component({\r\n animations: [\r\n trigger('toggler', [\r\n state('inactive', style({\r\n height: '0px'\r\n })),\r\n state('active', style({\r\n height: '*'\r\n })),\r\n transition('inactive <=> active', animate('500ms ease-out'))\r\n ]),\r\n trigger('togglerNew', [\r\n state('void', style({\r\n height: '0px'\r\n })),\r\n state('active', style({\r\n height: '*'\r\n })),\r\n transition(':enter', animate('500ms ease-out')),\r\n transition(':leave', animate('500ms ease-out'))\r\n ])\r\n ],\r\n selector: 'macro-list',\r\n template: require('./macro-list.component.html'),\r\n styles: [require('./macro-list.component.scss')],\r\n viewProviders: [DragulaService]\r\n})\r\nexport class MacroListComponent {\r\n @Input() macro: Macro;\r\n @ViewChildren(forwardRef(() => MacroItemComponent)) macroItems: QueryList;\r\n\r\n @Output() add = new EventEmitter();\r\n @Output() edit = new EventEmitter();\r\n @Output() delete = new EventEmitter();\r\n @Output() reorder = new EventEmitter();\r\n\r\n private newMacro: Macro = undefined;\r\n private activeEdit: number = undefined;\r\n private dragIndex: number;\r\n private showNew: boolean = false;\r\n\r\n constructor(private dragulaService: DragulaService) {\r\n /* tslint:disable:no-unused-variable: Used by Dragula. */\r\n dragulaService.setOptions('macroActions', {\r\n moves: function (el: any, container: any, handle: any) {\r\n return handle.className.includes('action--movable');\r\n }\r\n });\r\n\r\n dragulaService.drag.subscribe((value: any) => {\r\n this.dragIndex = +value[1].getAttribute('data-index');\r\n });\r\n\r\n dragulaService.drop.subscribe((value: any) => {\r\n if (value[4]) {\r\n this.reorder.emit({\r\n macroId: this.macro.id,\r\n oldIndex: this.dragIndex,\r\n newIndex: +value[4].getAttribute('data-index')\r\n });\r\n }\r\n });\r\n }\r\n\r\n showNewAction() {\r\n this.hideActiveEditor();\r\n\r\n this.newMacro = undefined;\r\n this.showNew = true;\r\n }\r\n\r\n hideNewAction() {\r\n this.showNew = false;\r\n }\r\n\r\n addNewAction(macroAction: MacroAction) {\r\n this.add.emit({\r\n macroId: this.macro.id,\r\n action: macroAction\r\n });\r\n\r\n this.newMacro = undefined;\r\n this.showNew = false;\r\n }\r\n\r\n editAction(index: number) {\r\n // Hide other editors when clicking edit button of a macro action\r\n this.hideActiveEditor();\r\n this.showNew = false;\r\n this.activeEdit = index;\r\n }\r\n\r\n cancelAction() {\r\n this.activeEdit = undefined;\r\n }\r\n\r\n saveAction(macroAction: MacroAction, index: number) {\r\n this.edit.emit({\r\n macroId: this.macro.id,\r\n index: index,\r\n action: macroAction\r\n });\r\n\r\n this.hideActiveEditor();\r\n }\r\n\r\n deleteAction(macroAction: MacroAction, index: number) {\r\n this.delete.emit({\r\n macroId: this.macro.id,\r\n index: index,\r\n action: macroAction\r\n });\r\n\r\n this.hideActiveEditor();\r\n }\r\n\r\n private hideActiveEditor() {\r\n if (this.activeEdit !== undefined) {\r\n this.macroItems.toArray()[this.activeEdit].cancelEdit();\r\n }\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/macro/list/macro-list.component.ts","module.exports = \"\\r\\n
\\r\\n
\\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/macro/list/macro-list.component.html\n// module id = 188\n// module chunks = 0","module.exports = \":host {\\n display: flex;\\n flex-direction: column;\\n height: 100%; }\\n :host .list-container {\\n display: flex;\\n flex: 1; }\\n\\n.main-wrapper {\\n width: 500px; }\\n\\nh1 {\\n margin-bottom: 3rem; }\\n\\n.action--edit__form {\\n background-color: #fff;\\n margin-left: -0.5rem;\\n margin-right: -15px;\\n margin-top: 15px;\\n padding-top: 15px;\\n border-top: 1px solid #ddd; }\\n\\n.action--item {\\n padding-left: 8px; }\\n .action--item.active, .action--item.active:hover {\\n background-color: white;\\n font-weight: bold;\\n color: black;\\n border-color: black;\\n z-index: 10; }\\n\\n.list-group {\\n overflow: auto; }\\n\\n.macro__name {\\n border-bottom: 2px dotted #999;\\n padding: 0 0.5rem;\\n margin: 0 0.25rem; }\\n\\n.macro-settings {\\n border: 1px solid black;\\n border-top-color: #999;\\n z-index: 100; }\\n .macro-settings .helper {\\n position: absolute;\\n display: block;\\n height: 13px;\\n background: #fff;\\n width: 100%;\\n left: 0;\\n top: -14px; }\\n\\n.action--item.active.callout,\\n.macro-settings.callout {\\n box-shadow: 0 0 20px 0 rgba(0, 0, 0, 0.5); }\\n\\n.macro-actions-container {\\n margin-bottom: 0;\\n border-radius: 4px;\\n border: 1px solid #ddd;\\n border-bottom: 0; }\\n\\n.list-group-item .move-handle:hover {\\n cursor: move; }\\n\\n.flex-button-wrapper {\\n display: flex;\\n flex-direction: row-reverse; }\\n\\n.flex-button {\\n align-self: flex-end; }\\n\\n.add-new__action-container {\\n overflow: hidden;\\n flex-shrink: 0;\\n border-top: 1px solid #ddd; }\\n\\n.add-new__action-item {\\n border-radius: 0 0 4px 4px;\\n border-top: 0;\\n padding: 0; }\\n .add-new__action-item:hover {\\n cursor: pointer; }\\n .add-new__action-item--link {\\n width: 50%;\\n float: left;\\n padding: 10px 5px;\\n text-align: center;\\n color: #337ab7; }\\n .add-new__action-item--link:first-of-type {\\n border-right: 1px solid #ddd; }\\n .add-new__action-item--link:hover {\\n text-decoration: none;\\n background: #e6e6e6; }\\n .add-new__action-item .fa-circle {\\n color: #c00; }\\n\\n.gu-mirror {\\n position: fixed;\\n margin: 0;\\n z-index: 9999;\\n opacity: 0.8; }\\n\\n.gu-hide {\\n display: none; }\\n\\n.gu-unselectable {\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/macro/list/macro-list.component.scss\n// module id = 189\n// module chunks = 0","import {\r\n AfterViewInit, ChangeDetectionStrategy, Component, ElementRef, Input, OnChanges, Renderer,\r\n ViewChild\r\n} from '@angular/core';\r\n\r\nimport { Store } from '@ngrx/store';\r\n\r\nimport { Macro } from '../../../config-serializer/config-items/Macro';\r\n\r\nimport { MacroActions } from '../../../store/actions';\r\nimport { AppState } from '../../../store/index';\r\n\r\n@Component({\r\n selector: 'macro-header',\r\n template: require('./macro-header.component.html'),\r\n styles: [require('./macro-header.component.scss')],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class MacroHeaderComponent implements AfterViewInit, OnChanges {\r\n @Input() macro: Macro;\r\n @Input() isNew: boolean;\r\n @ViewChild('macroName') macroName: ElementRef;\r\n\r\n constructor(private store: Store, private renderer: Renderer) { }\r\n\r\n ngOnChanges() {\r\n if (this.isNew) {\r\n this.renderer.invokeElementMethod(this.macroName.nativeElement, 'select', []);\r\n }\r\n }\r\n\r\n ngAfterViewInit() {\r\n if (this.isNew) {\r\n this.renderer.invokeElementMethod(this.macroName.nativeElement, 'select', []);\r\n }\r\n }\r\n\r\n removeMacro() {\r\n this.store.dispatch(MacroActions.removeMacro(this.macro.id));\r\n }\r\n\r\n duplicateMacro() {\r\n this.store.dispatch(MacroActions.duplicateMacro(this.macro));\r\n }\r\n\r\n editMacroName(name: string) {\r\n if (name.length === 0) {\r\n this.renderer.setElementProperty(this.macroName.nativeElement, 'value', this.macro.name);\r\n return;\r\n }\r\n\r\n this.store.dispatch(MacroActions.editMacroName(this.macro.id, name));\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/macro/header/macro-header.component.ts","module.exports = \"\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/macro/header/macro-header.component.html\n// module id = 191\n// module chunks = 0","module.exports = \".macro__remove {\\n font-size: 0.75em;\\n top: 8px; }\\n .macro__remove:hover {\\n cursor: pointer;\\n color: #900; }\\n\\n.macro__duplicate {\\n font-size: 0.75em;\\n top: 7px;\\n margin-right: 15px;\\n position: relative; }\\n .macro__duplicate:hover {\\n cursor: pointer;\\n color: #337ab7; }\\n\\n.pane-title {\\n margin-bottom: 1em; }\\n .pane-title__name {\\n border: none;\\n border-bottom: 2px dotted #999;\\n padding: 0;\\n margin: 0 0.25rem;\\n width: 330px;\\n text-overflow: ellipsis; }\\n .pane-title__name:focus {\\n box-shadow: 0 0 0 1px #ccc, 0 0 5px 0 #ccc;\\n border-color: transparent; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/macro/header/macro-header.component.scss\n// module id = 192\n// module chunks = 0","import { Routes } from '@angular/router';\r\n\r\nimport { MacroEditComponent } from './edit/macro-edit.component';\r\nimport { MacroNotFoundComponent, MacroNotFoundGuard } from './not-found';\r\n\r\nexport const macroRoutes: Routes = [\r\n {\r\n path: 'macro',\r\n component: MacroNotFoundComponent,\r\n canActivate: [MacroNotFoundGuard]\r\n },\r\n {\r\n path: 'macro/:id',\r\n component: MacroEditComponent\r\n },\r\n {\r\n path: 'macro/:id/:empty',\r\n component: MacroEditComponent\r\n }\r\n];\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/macro/macro.routes.ts","export { MacroNotFoundComponent } from './macro-not-found.component';\r\nexport { MacroNotFoundGuard } from './macro-not-found-guard.service';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/macro/not-found/index.ts","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'macro-not-found',\r\n template: require('./macro-not-found.component.html'),\r\n styles: [require('./macro-not-found.component.scss')]\r\n})\r\nexport class MacroNotFoundComponent { }\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/macro/not-found/macro-not-found.component.ts","module.exports = \"\\r\\n You don't have any macros. Try to add one!\\r\\n
\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/macro/not-found/macro-not-found.component.html\n// module id = 196\n// module chunks = 0","module.exports = \".not-found {\\n margin-top: 30px;\\n font-size: 16px;\\n text-align: center; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/macro/not-found/macro-not-found.component.scss\n// module id = 197\n// module chunks = 0","import { Injectable } from '@angular/core';\r\nimport { CanActivate, Router } from '@angular/router';\r\n\r\nimport { Observable } from 'rxjs/Observable';\r\n\r\nimport 'rxjs/add/operator/let';\r\nimport 'rxjs/add/operator/map';\r\n\r\nimport { Store } from '@ngrx/store';\r\n\r\nimport { AppState } from '../../../store/index';\r\nimport { getMacros } from '../../../store/reducers/user-configuration';\r\nimport { Macro } from './../../../config-serializer/config-items/Macro';\r\n\r\n@Injectable()\r\nexport class MacroNotFoundGuard implements CanActivate {\r\n\r\n constructor(private store: Store, private router: Router) { }\r\n\r\n canActivate(): Observable {\r\n return this.store\r\n .let(getMacros())\r\n .map((macros: Macro[]) => {\r\n const hasMacros = macros.length > 0;\r\n if (hasMacros) {\r\n this.router.navigate(['/macro', macros[0].id]);\r\n }\r\n return !hasMacros;\r\n });\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/macro/not-found/macro-not-found-guard.service.ts","export { MacroItemComponent } from './macro-item.component';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/macro/item/index.ts","import {\r\n Component,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n animate,\r\n state,\r\n style,\r\n transition,\r\n trigger\r\n} from '@angular/core';\r\n\r\nimport { KeyModifiers } from '../../../config-serializer/config-items/KeyModifiers';\r\nimport {\r\n DelayMacroAction,\r\n KeyMacroAction,\r\n MacroAction,\r\n MouseButtonMacroAction,\r\n MoveMouseMacroAction,\r\n ScrollMouseMacroAction,\r\n TextMacroAction\r\n} from '../../../config-serializer/config-items/macro-action';\r\n\r\nimport { MapperService } from '../../../services/mapper.service';\r\n\r\n@Component({\r\n animations: [\r\n trigger('toggler', [\r\n state('inactive', style({\r\n height: '0px'\r\n })),\r\n state('active', style({\r\n height: '*'\r\n })),\r\n transition('inactive <=> active', animate('500ms ease-out'))\r\n ])\r\n ],\r\n selector: 'macro-item',\r\n template: require('./macro-item.component.html'),\r\n styles: [require('./macro-item.component.scss')],\r\n host: { 'class': 'macro-item' }\r\n})\r\nexport class MacroItemComponent implements OnInit, OnChanges {\r\n @Input() macroAction: MacroAction;\r\n @Input() editable: boolean;\r\n @Input() deletable: boolean;\r\n @Input() movable: boolean;\r\n\r\n @Output() save = new EventEmitter();\r\n @Output() cancel = new EventEmitter();\r\n @Output() edit = new EventEmitter();\r\n @Output() delete = new EventEmitter();\r\n\r\n private title: string;\r\n private iconName: string;\r\n private editing: boolean;\r\n private newItem: boolean = false;\r\n\r\n constructor(private mapper: MapperService) { }\r\n\r\n ngOnInit() {\r\n this.updateView();\r\n if (!this.macroAction) {\r\n this.editing = true;\r\n this.newItem = true;\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['macroAction']) {\r\n this.updateView();\r\n }\r\n }\r\n\r\n saveEditedAction(editedAction: MacroAction): void {\r\n this.macroAction = editedAction;\r\n this.editing = false;\r\n this.updateView();\r\n this.save.emit(editedAction);\r\n }\r\n\r\n editAction(): void {\r\n if (!this.editable || this.editing) {\r\n return;\r\n }\r\n\r\n this.editing = true;\r\n this.edit.emit();\r\n }\r\n\r\n cancelEdit(): void {\r\n this.editing = false;\r\n this.cancel.emit();\r\n }\r\n\r\n deleteAction(): void {\r\n this.delete.emit();\r\n }\r\n\r\n private updateView(): void {\r\n if (!this.macroAction) {\r\n this.title = 'New macro action';\r\n } else if (this.macroAction instanceof DelayMacroAction) {\r\n // Delay\r\n this.iconName = 'clock';\r\n let action: DelayMacroAction = this.macroAction as DelayMacroAction;\r\n const delay = action.delay > 0 ? action.delay / 1000 : 0;\r\n this.title = `Delay of ${delay}s`;\r\n } else if (this.macroAction instanceof TextMacroAction) {\r\n // Write text\r\n let action: TextMacroAction = this.macroAction as TextMacroAction;\r\n this.iconName = 'font';\r\n this.title = `Write text: ${action.text}`;\r\n } else if (this.macroAction instanceof KeyMacroAction) {\r\n // Key pressed/held/released\r\n const action: KeyMacroAction = this.macroAction as KeyMacroAction;\r\n this.setKeyActionContent(action);\r\n } else if (this.macroAction instanceof MouseButtonMacroAction) {\r\n // Mouse button clicked/held/released\r\n const action: MouseButtonMacroAction = this.macroAction as MouseButtonMacroAction;\r\n this.setMouseButtonActionContent(action);\r\n } else if (this.macroAction instanceof MoveMouseMacroAction || this.macroAction instanceof ScrollMouseMacroAction) {\r\n // Mouse moved or scrolled\r\n this.setMouseMoveScrollActionContent(this.macroAction);\r\n } else {\r\n this.title = this.macroAction.constructor.name;\r\n }\r\n }\r\n\r\n private setKeyActionContent(action: KeyMacroAction): void {\r\n if (!action.hasScancode() && !action.hasModifiers()) {\r\n this.title = 'Invalid keypress';\r\n return;\r\n }\r\n\r\n if (action.isPressAction()) {\r\n // Press key\r\n this.iconName = 'hand-pointer';\r\n this.title = 'Press key: ';\r\n } else if (action.isHoldAction()) {\r\n // Hold key\r\n this.iconName = 'hand-rock';\r\n this.title = 'Hold key: ';\r\n } else if (action.isReleaseAction()) {\r\n // Release key\r\n this.iconName = 'hand-paper';\r\n this.title = 'Release key: ';\r\n }\r\n\r\n if (action.hasScancode()) {\r\n const scancode: string = (this.mapper.scanCodeToText(action.scancode) || [ 'Unknown' ]).join(' ');\r\n if (scancode) {\r\n this.title += scancode;\r\n }\r\n }\r\n\r\n if (action.hasModifiers()) {\r\n // Press/hold/release modifiers\r\n for (let i = KeyModifiers.leftCtrl; i !== KeyModifiers.rightGui; i <<= 1) {\r\n if (action.isModifierActive(i)) {\r\n this.title += ' ' + KeyModifiers[i];\r\n }\r\n }\r\n }\r\n }\r\n\r\n private setMouseMoveScrollActionContent(action: MacroAction): void {\r\n let typedAction: any;\r\n if (action instanceof MoveMouseMacroAction) {\r\n // Move mouse pointer\r\n this.iconName = 'mouse-pointer';\r\n this.title = 'Move pointer';\r\n typedAction = this.macroAction as MoveMouseMacroAction;\r\n } else {\r\n // Scroll mouse\r\n this.iconName = 'mouse-pointer';\r\n this.title = 'Scroll';\r\n typedAction = this.macroAction as ScrollMouseMacroAction;\r\n }\r\n\r\n let needAnd: boolean;\r\n if (Math.abs(typedAction.x) !== 0) {\r\n this.title += ` by ${Math.abs(typedAction.x)}px ${typedAction.x > 0 ? 'left' : 'right'}`;\r\n needAnd = true;\r\n }\r\n if (Math.abs(typedAction.y) !== 0) {\r\n this.title += ` ${needAnd ? 'and' : 'by'} ${Math.abs(typedAction.y)}px ${typedAction.y > 0 ? 'down' : 'up'}`;\r\n }\r\n }\r\n\r\n private setMouseButtonActionContent(action: MouseButtonMacroAction): void {\r\n // Press/hold/release mouse buttons\r\n if (action.isOnlyPressAction()) {\r\n this.iconName = 'mouse-pointer';\r\n this.title = 'Click mouse button: ';\r\n } else if (action.isOnlyHoldAction()) {\r\n this.iconName = 'hand-rock';\r\n this.title = 'Hold mouse button: ';\r\n } else if (action.isOnlyReleaseAction()) {\r\n this.iconName = 'hand-paper';\r\n this.title = 'Release mouse button: ';\r\n }\r\n\r\n const buttonLabels: string[] = ['Left', 'Middle', 'Right'];\r\n const selectedButtons: boolean[] = action.getMouseButtons();\r\n const selectedButtonLabels: string[] = [];\r\n selectedButtons.forEach((isSelected, idx) => {\r\n if (isSelected && buttonLabels[idx]) {\r\n selectedButtonLabels.push(buttonLabels[idx]);\r\n }\r\n });\r\n this.title += selectedButtonLabels.join(', ');\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/macro/item/macro-item.component.ts","export enum KeyModifiers {\r\n leftCtrl = 1 << 0,\r\n leftShift = 1 << 1,\r\n leftAlt = 1 << 2,\r\n leftGui = 1 << 3,\r\n rightCtrl = 1 << 4,\r\n rightShift = 1 << 5,\r\n rightAlt = 1 << 6,\r\n rightGui = 1 << 7\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/config-serializer/config-items/KeyModifiers.ts","/* tslint:disable:variable-name */\r\nconst __svg__ = { path: '../../../images/icons/**/*.svg', name: 'assets/compiled_sprite.svg' };\r\n/* tslint:enable:variable-name */\r\n\r\nimport { Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class MapperService {\r\n\r\n private scanCodeTextMap: Map;\r\n\r\n private scanCodeFileName: Map;\r\n private nameToFileName: Map;\r\n\r\n constructor() {\r\n this.initScanCodeTextMap();\r\n this.initScanCodeFileName();\r\n this.initNameToFileNames();\r\n }\r\n\r\n public scanCodeToText(scanCode: number): string[] {\r\n return this.scanCodeTextMap.get(scanCode);\r\n }\r\n\r\n public hasScancodeIcon(scancode: number): boolean {\r\n return this.scanCodeFileName.has(scancode);\r\n }\r\n\r\n public scanCodeToSvgImagePath(scanCode: number): string {\r\n let fileName: string = this.scanCodeFileName.get(scanCode);\r\n if (fileName) {\r\n return 'assets/compiled_sprite.svg#' + fileName;\r\n }\r\n return undefined;\r\n }\r\n\r\n public getIcon(iconName: string): string {\r\n return 'assets/compiled_sprite.svg#' + this.nameToFileName.get(iconName);\r\n }\r\n\r\n public modifierMapper(x: number) {\r\n if (x < 8) {\r\n return Math.floor(x / 2) * 4 + 1 - x; // 1, 0, 3, 2, 5, 4, 7, 6\r\n } else {\r\n return x;\r\n }\r\n }\r\n\r\n // TODO: read the mapping from JSON\r\n private initScanCodeTextMap(): void {\r\n this.scanCodeTextMap = new Map();\r\n this.scanCodeTextMap.set(4, ['A']);\r\n this.scanCodeTextMap.set(5, ['B']);\r\n this.scanCodeTextMap.set(6, ['C']);\r\n this.scanCodeTextMap.set(7, ['D']);\r\n this.scanCodeTextMap.set(8, ['E']);\r\n this.scanCodeTextMap.set(9, ['F']);\r\n this.scanCodeTextMap.set(10, ['G']);\r\n this.scanCodeTextMap.set(11, ['H']);\r\n this.scanCodeTextMap.set(12, ['I']);\r\n this.scanCodeTextMap.set(13, ['J']);\r\n this.scanCodeTextMap.set(14, ['K']);\r\n this.scanCodeTextMap.set(15, ['L']);\r\n this.scanCodeTextMap.set(16, ['M']);\r\n this.scanCodeTextMap.set(17, ['N']);\r\n this.scanCodeTextMap.set(18, ['O']);\r\n this.scanCodeTextMap.set(19, ['P']);\r\n this.scanCodeTextMap.set(20, ['Q']);\r\n this.scanCodeTextMap.set(21, ['R']);\r\n this.scanCodeTextMap.set(22, ['S']);\r\n this.scanCodeTextMap.set(23, ['T']);\r\n this.scanCodeTextMap.set(24, ['U']);\r\n this.scanCodeTextMap.set(25, ['V']);\r\n this.scanCodeTextMap.set(26, ['W']);\r\n this.scanCodeTextMap.set(27, ['X']);\r\n this.scanCodeTextMap.set(28, ['Y']);\r\n this.scanCodeTextMap.set(29, ['Z']);\r\n this.scanCodeTextMap.set(30, ['1', '!']);\r\n this.scanCodeTextMap.set(31, ['2', '@']);\r\n this.scanCodeTextMap.set(32, ['3', '#']);\r\n this.scanCodeTextMap.set(33, ['4', '$']);\r\n this.scanCodeTextMap.set(34, ['5', '%']);\r\n this.scanCodeTextMap.set(35, ['6', '^']);\r\n this.scanCodeTextMap.set(36, ['7', '&']);\r\n this.scanCodeTextMap.set(37, ['8', '*']);\r\n this.scanCodeTextMap.set(38, ['9', '(']);\r\n this.scanCodeTextMap.set(39, ['0', ')']);\r\n this.scanCodeTextMap.set(40, ['Enter']);\r\n this.scanCodeTextMap.set(41, ['Esc']);\r\n this.scanCodeTextMap.set(42, ['Backspace']);\r\n this.scanCodeTextMap.set(43, ['Tab']);\r\n this.scanCodeTextMap.set(44, ['Space']);\r\n this.scanCodeTextMap.set(45, ['-', '_']);\r\n this.scanCodeTextMap.set(46, ['=', '+']);\r\n this.scanCodeTextMap.set(47, ['[', '{']);\r\n this.scanCodeTextMap.set(48, [']', '}']);\r\n this.scanCodeTextMap.set(49, ['\\\\', '|']);\r\n this.scanCodeTextMap.set(50, ['NON_US_HASHMARK_AND_TILDE']);\r\n this.scanCodeTextMap.set(51, [';', ':']);\r\n this.scanCodeTextMap.set(52, ['\\'', '\"']);\r\n this.scanCodeTextMap.set(53, ['`', '~']);\r\n this.scanCodeTextMap.set(54, [',', '<']);\r\n this.scanCodeTextMap.set(55, ['.', '>']);\r\n this.scanCodeTextMap.set(56, ['/', '?']);\r\n this.scanCodeTextMap.set(57, ['Caps Lock']);\r\n this.scanCodeTextMap.set(58, ['F1']);\r\n this.scanCodeTextMap.set(59, ['F2']);\r\n this.scanCodeTextMap.set(60, ['F3']);\r\n this.scanCodeTextMap.set(61, ['F4']);\r\n this.scanCodeTextMap.set(62, ['F5']);\r\n this.scanCodeTextMap.set(63, ['F6']);\r\n this.scanCodeTextMap.set(64, ['F7']);\r\n this.scanCodeTextMap.set(65, ['F8']);\r\n this.scanCodeTextMap.set(66, ['F9']);\r\n this.scanCodeTextMap.set(67, ['F10']);\r\n this.scanCodeTextMap.set(68, ['F11']);\r\n this.scanCodeTextMap.set(69, ['F12']);\r\n this.scanCodeTextMap.set(70, ['PrtScn']);\r\n this.scanCodeTextMap.set(71, ['Scroll Lock']);\r\n this.scanCodeTextMap.set(72, ['Pause']);\r\n this.scanCodeTextMap.set(73, ['Insert']);\r\n this.scanCodeTextMap.set(74, ['Home']);\r\n this.scanCodeTextMap.set(75, ['PgUp']);\r\n this.scanCodeTextMap.set(76, ['Del']);\r\n this.scanCodeTextMap.set(77, ['End']);\r\n this.scanCodeTextMap.set(78, ['PgDn']);\r\n this.scanCodeTextMap.set(79, ['Right Arrow']);\r\n this.scanCodeTextMap.set(80, ['Left Arrow']);\r\n this.scanCodeTextMap.set(81, ['Down Arrow']);\r\n this.scanCodeTextMap.set(82, ['Up Arrow']);\r\n this.scanCodeTextMap.set(83, ['Num Lock']);\r\n this.scanCodeTextMap.set(84, ['/']);\r\n this.scanCodeTextMap.set(85, ['*']);\r\n this.scanCodeTextMap.set(86, ['-']);\r\n this.scanCodeTextMap.set(87, ['+']);\r\n this.scanCodeTextMap.set(88, ['Enter']);\r\n this.scanCodeTextMap.set(89, ['end', '1']);\r\n this.scanCodeTextMap.set(90, ['2']);\r\n this.scanCodeTextMap.set(91, ['pgdn', '3']);\r\n this.scanCodeTextMap.set(92, ['4']);\r\n this.scanCodeTextMap.set(93, ['5']);\r\n this.scanCodeTextMap.set(94, ['6']);\r\n this.scanCodeTextMap.set(95, ['home', '7']);\r\n this.scanCodeTextMap.set(96, ['8']);\r\n this.scanCodeTextMap.set(97, ['pgup', '9']);\r\n this.scanCodeTextMap.set(98, ['Insert', '0']);\r\n this.scanCodeTextMap.set(99, ['Del', '.']);\r\n this.scanCodeTextMap.set(104, ['F13']);\r\n this.scanCodeTextMap.set(105, ['F14']);\r\n this.scanCodeTextMap.set(106, ['F15']);\r\n this.scanCodeTextMap.set(107, ['F16']);\r\n this.scanCodeTextMap.set(108, ['F17']);\r\n this.scanCodeTextMap.set(109, ['F18']);\r\n this.scanCodeTextMap.set(110, ['F19']);\r\n this.scanCodeTextMap.set(111, ['F20']);\r\n this.scanCodeTextMap.set(112, ['F21']);\r\n this.scanCodeTextMap.set(113, ['F22']);\r\n this.scanCodeTextMap.set(114, ['F23']);\r\n this.scanCodeTextMap.set(115, ['F24']);\r\n this.scanCodeTextMap.set(118, ['Menu']);\r\n this.scanCodeTextMap.set(176, ['00']);\r\n this.scanCodeTextMap.set(177, ['000']);\r\n this.scanCodeTextMap.set(232, ['Play']);\r\n this.scanCodeTextMap.set(233, ['Stop']);\r\n this.scanCodeTextMap.set(234, ['Prev']);\r\n this.scanCodeTextMap.set(235, ['Next']);\r\n this.scanCodeTextMap.set(236, ['Eject']);\r\n this.scanCodeTextMap.set(237, ['Vol +']);\r\n this.scanCodeTextMap.set(238, ['Vol -']);\r\n this.scanCodeTextMap.set(239, ['Mute']);\r\n this.scanCodeTextMap.set(240, ['WWW']);\r\n this.scanCodeTextMap.set(241, ['Bckwrd']);\r\n this.scanCodeTextMap.set(242, ['Frwrd']);\r\n this.scanCodeTextMap.set(243, ['Cancel']);\r\n }\r\n\r\n private initScanCodeFileName(): void {\r\n this.scanCodeFileName = new Map();\r\n this.scanCodeFileName.set(79, 'icon-kbd__mod--arrow-right');\r\n this.scanCodeFileName.set(80, 'icon-kbd__mod--arrow-left');\r\n this.scanCodeFileName.set(81, 'icon-kbd__mod--arrow-down');\r\n this.scanCodeFileName.set(82, 'icon-kbd__mod--arrow-up');\r\n this.scanCodeFileName.set(118, 'icon-kbd__mod--menu');\r\n }\r\n\r\n private initNameToFileNames(): void {\r\n this.nameToFileName = new Map();\r\n this.nameToFileName.set('toggle', 'icon-kbd__fn--toggle');\r\n this.nameToFileName.set('switch-keymap', 'icon-kbd__mod--switch-keymap');\r\n this.nameToFileName.set('macro', 'icon-icon__macro');\r\n this.nameToFileName.set('shift', 'icon-kbd__default--modifier-shift');\r\n this.nameToFileName.set('option', 'icon-kbd__default--modifier-option');\r\n this.nameToFileName.set('command', 'icon-kbd__default--modifier-command');\r\n this.nameToFileName.set('mouse', 'icon-kbd__mouse');\r\n this.nameToFileName.set('left-arrow', 'icon-kbd__mod--arrow-left');\r\n this.nameToFileName.set('right-arrow', 'icon-kbd__mod--arrow-right');\r\n this.nameToFileName.set('down-arrow', 'icon-kbd__mod--arrow-down');\r\n this.nameToFileName.set('up-arrow', 'icon-kbd__mod--arrow-up');\r\n this.nameToFileName.set('scroll-left', 'icon-kbd__mouse--scroll-left');\r\n this.nameToFileName.set('scroll-right', 'icon-kbd__mouse--scroll-right');\r\n this.nameToFileName.set('scroll-down', 'icon-kbd__mouse--scroll-down');\r\n this.nameToFileName.set('scroll-up', 'icon-kbd__mouse--scroll-up');\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/services/mapper.service.ts","module.exports = \"\\r\\n
\\r\\n
\\r\\n
\\r\\n
{{ title }}
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n\\r\\n \\r\\n \\r\\n
\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/macro/item/macro-item.component.html\n// module id = 203\n// module chunks = 0","module.exports = \":host {\\n overflow: hidden;\\n display: block; }\\n :host.macro-item:first-of-type .list-group-item {\\n border-radius: 4px 4px 0 0; }\\n :host.macro-item:last-of-type .list-group-item {\\n border-bottom: 0; }\\n :host.gu-transit {\\n opacity: 0.2; }\\n :host.gu-transit .list-group-item {\\n background: #f5f5f5; }\\n\\n.action--item {\\n display: flex;\\n flex-shrink: 0;\\n border: 0;\\n border-bottom: 1px solid #ddd; }\\n .action--item icon {\\n margin: 0 5px; }\\n .action--item > div {\\n display: flex;\\n flex: 1; }\\n .action--item:first-child {\\n border-radius: 0; }\\n .action--item.is-editing {\\n background: #f5f5f5; }\\n .action--item--wrap {\\n justify-content: space-between; }\\n .action--item--wrap.pointer:hover {\\n cursor: pointer;\\n color: #337ab7; }\\n\\n.action--title {\\n display: flex;\\n flex: 1; }\\n\\n.action--movable:hover {\\n cursor: move; }\\n\\n.list-group-item {\\n margin-bottom: 0; }\\n\\n.macro-action-editor__container {\\n padding-top: 0;\\n padding-bottom: 0;\\n border-radius: 0;\\n border: none;\\n overflow: hidden; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/macro/item/macro-item.component.scss\n// module id = 204\n// module chunks = 0","export { MacroActionEditorComponent } from './macro-action-editor.component';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/macro/action-editor/index.ts","import { Component, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\r\n\r\nimport {\r\n EditableMacroAction,\r\n MacroAction,\r\n TextMacroAction,\r\n macroActionType\r\n} from '../../../config-serializer/config-items/macro-action';\r\nimport { MacroKeyTabComponent } from './tab/key';\r\n\r\nenum TabName {\r\n Keypress,\r\n Text,\r\n Mouse,\r\n Delay\r\n};\r\n\r\n@Component({\r\n selector: 'macro-action-editor',\r\n template: require('./macro-action-editor.component.html'),\r\n styles: [require('./macro-action-editor.component.scss')],\r\n host: { 'class': 'macro-action-editor' }\r\n})\r\nexport class MacroActionEditorComponent implements OnInit {\r\n @Input() macroAction: MacroAction;\r\n\r\n @Output() save = new EventEmitter();\r\n @Output() cancel = new EventEmitter();\r\n\r\n @ViewChild('tab') selectedTab: any;\r\n\r\n private editableMacroAction: EditableMacroAction;\r\n private activeTab: TabName;\r\n /* tslint:disable:variable-name: It is an enum type. So it can start with uppercase. */\r\n /* tslint:disable:no-unused-variable: It is used in the template. */\r\n private TabName = TabName;\r\n /* tslint:enable:no-unused-variable */\r\n /* tslint:enable:variable-name */\r\n\r\n ngOnInit() {\r\n let macroAction: MacroAction = this.macroAction ? this.macroAction : new TextMacroAction();\r\n this.editableMacroAction = new EditableMacroAction(macroAction.toJsonObject());\r\n let tab: TabName = this.getTabName(this.editableMacroAction);\r\n this.activeTab = tab;\r\n }\r\n\r\n onCancelClick(): void {\r\n this.cancel.emit();\r\n }\r\n\r\n onSaveClick(): void {\r\n try {\r\n const action = this.editableMacroAction;\r\n if (action.isKeyAction()) {\r\n // Could updating the saved keys be done in a better way?\r\n const tab = this.selectedTab as MacroKeyTabComponent;\r\n action.fromKeyAction(tab.getKeyAction());\r\n }\r\n this.save.emit(action.toClass());\r\n } catch (e) {\r\n // TODO: show error dialog\r\n console.error(e);\r\n }\r\n }\r\n\r\n selectTab(tab: TabName): void {\r\n this.activeTab = tab;\r\n this.editableMacroAction.macroActionType = this.getTabMacroActionType(tab);\r\n }\r\n\r\n getTabName(action: EditableMacroAction): TabName {\r\n switch (action.macroActionType) {\r\n // Delay action\r\n case macroActionType.DelayMacroAction:\r\n return TabName.Delay;\r\n // Text action\r\n case macroActionType.TextMacroAction:\r\n return TabName.Text;\r\n // Keypress actions\r\n case macroActionType.KeyMacroAction:\r\n return TabName.Keypress;\r\n // Mouse actions\r\n case macroActionType.MouseButtonMacroAction:\r\n case macroActionType.MoveMouseMacroAction:\r\n case macroActionType.ScrollMouseMacroAction:\r\n return TabName.Mouse;\r\n default:\r\n return TabName.Keypress;\r\n }\r\n }\r\n\r\n getTabMacroActionType(tab: TabName): string {\r\n switch (tab) {\r\n case TabName.Delay:\r\n return macroActionType.DelayMacroAction;\r\n case TabName.Keypress:\r\n return macroActionType.KeyMacroAction;\r\n case TabName.Mouse:\r\n return macroActionType.MouseButtonMacroAction;\r\n case TabName.Text:\r\n return macroActionType.TextMacroAction;\r\n default:\r\n throw new Error('Could not get macro action type');\r\n }\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/macro/action-editor/macro-action-editor.component.ts","module.exports = \"\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Cancel \\r\\n Save \\r\\n
\\r\\n
\\r\\n
\\r\\n
\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/macro/action-editor/macro-action-editor.component.html\n// module id = 207\n// module chunks = 0","module.exports = \":host {\\n display: block;\\n width: 100%; }\\n\\n.action--editor {\\n padding-top: 0;\\n padding-bottom: 0;\\n border-radius: 0;\\n border: 0; }\\n\\n.nav {\\n padding-bottom: 1rem; }\\n .nav li a {\\n border-top-right-radius: 0;\\n border-bottom-right-radius: 0; }\\n .nav li a.selected {\\n font-style: italic; }\\n .nav li a:hover {\\n cursor: pointer; }\\n .nav li.active {\\n z-index: 2; }\\n .nav li.active a.selected {\\n font-style: normal; }\\n .nav li.active a:after {\\n content: '';\\n display: block;\\n position: absolute;\\n width: 0;\\n height: 0;\\n top: 0;\\n right: -4rem;\\n border-color: transparent transparent transparent #337ab7;\\n border-style: solid;\\n border-width: 2rem; }\\n\\n.editor__tabs, .editor__tab-links {\\n padding-top: 1rem; }\\n\\n.editor__tabs {\\n border-left: 1px solid #ddd;\\n margin-left: -1.6rem;\\n padding-left: 3rem; }\\n\\n.editor__actions {\\n float: right; }\\n .editor__actions-container {\\n background: #f5f5f5;\\n border-top: 1px solid #ddd;\\n border-bottom: 1px solid #ddd;\\n padding: 1rem 1.5rem; }\\n\\n.flex-button-wrapper {\\n display: flex;\\n flex-direction: row-reverse; }\\n\\n.flex-button {\\n align-self: flex-end; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/macro/action-editor/macro-action-editor.component.scss\n// module id = 208\n// module chunks = 0","export { MacroDelayTabComponent } from './delay';\r\nexport { MacroKeyTabComponent } from './key';\r\nexport { MacroMouseTabComponent } from './mouse';\r\nexport { MacroTextTabComponent } from './text';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/macro/action-editor/tab/index.ts","export { MacroDelayTabComponent } from './macro-delay.component';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/macro/action-editor/tab/delay/index.ts","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n Input,\r\n OnInit,\r\n ViewChild\r\n} from '@angular/core';\r\n\r\nimport { EditableMacroAction } from '../../../../../config-serializer/config-items/macro-action';\r\n\r\nconst INITIAL_DELAY = 0.5; // In seconds\r\n\r\n@Component({\r\n selector: 'macro-delay-tab',\r\n template: require('./macro-delay.component.html'),\r\n styles: [require('./macro-delay.component.scss')],\r\n host: { 'class': 'macro__delay' },\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class MacroDelayTabComponent implements OnInit {\r\n @Input() macroAction: EditableMacroAction;\r\n @ViewChild('macroDelayInput') input: ElementRef;\r\n\r\n private delay: number;\r\n /* tslint:disable:no-unused-variable: It is used in the template. */\r\n private presets: number[] = [0.3, 0.5, 0.8, 1, 2, 3, 4, 5];\r\n /* tslint:enable:no-unused-variable */\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n this.delay = this.macroAction.delay > 0 ? this.macroAction.delay / 1000 : INITIAL_DELAY;\r\n }\r\n\r\n setDelay(value: number): void {\r\n this.delay = value;\r\n this.macroAction.delay = this.delay * 1000;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/macro/action-editor/tab/delay/macro-delay.component.ts","module.exports = \"\\r\\n
\\r\\n
\\r\\n
Enter delay in seconds \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Choose a preset \\r\\n {{delay}}s \\r\\n \\r\\n
\\r\\n
\\r\\n\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/macro/action-editor/tab/delay/macro-delay.component.html\n// module id = 212\n// module chunks = 0","module.exports = \":host {\\n display: flex;\\n flex-direction: column;\\n position: relative; }\\n\\n.macro-delay__presets {\\n margin-top: 1rem; }\\n .macro-delay__presets button {\\n margin-right: 0.25rem;\\n margin-bottom: 0.25rem; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/macro/action-editor/tab/delay/macro-delay.component.scss\n// module id = 213\n// module chunks = 0","export { MacroKeyTabComponent } from './macro-key.component';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/macro/action-editor/tab/key/index.ts","import { Component, Input, OnInit, ViewChild } from '@angular/core';\r\n\r\nimport { KeyAction } from '../../../../../config-serializer/config-items/key-action';\r\nimport { EditableMacroAction, MacroSubAction } from '../../../../../config-serializer/config-items/macro-action';\r\nimport { KeypressTabComponent } from '../../../../popover/tab';\r\nimport { Tab } from '../../../../popover/tab';\r\n\r\nenum TabName {\r\n Keypress,\r\n Hold,\r\n Release\r\n}\r\n\r\n@Component({\r\n selector: 'macro-key-tab',\r\n template: require('./macro-key.component.html'),\r\n styles: [\r\n require('../../macro-action-editor.component.scss'),\r\n require('./macro-key.component.scss')\r\n ],\r\n host: { 'class': 'macro__mouse' }\r\n})\r\nexport class MacroKeyTabComponent implements OnInit {\r\n @Input() macroAction: EditableMacroAction;\r\n @ViewChild('tab') selectedTab: Tab;\r\n @ViewChild('keypressTab') keypressTab: KeypressTabComponent;\r\n\r\n private defaultKeyAction: KeyAction;\r\n\r\n private activeTab: TabName;\r\n /* tslint:disable:variable-name: It is an enum type. So it can start with uppercase. */\r\n /* tslint:disable:no-unused-variable: It is used in the template. */\r\n private TabName = TabName;\r\n /* tslint:enable:no-unused-variable */\r\n /* tslint:enable:variable-name */\r\n\r\n ngOnInit() {\r\n this.defaultKeyAction = this.macroAction.toKeystrokeAction();\r\n this.selectTab(this.getTabName(this.macroAction));\r\n }\r\n\r\n selectTab(tab: TabName): void {\r\n this.activeTab = tab;\r\n this.macroAction.action = this.getActionType(tab);\r\n }\r\n\r\n getTabName(action: EditableMacroAction): TabName {\r\n if (!action.action || action.isOnlyPressAction()) {\r\n return TabName.Keypress;\r\n } else if (action.isOnlyHoldAction()) {\r\n return TabName.Hold;\r\n } else if (action.isOnlyReleaseAction()) {\r\n return TabName.Release;\r\n }\r\n }\r\n\r\n getActionType(tab: TabName): MacroSubAction {\r\n switch (tab) {\r\n case TabName.Keypress:\r\n return MacroSubAction.press;\r\n case TabName.Hold:\r\n return MacroSubAction.hold;\r\n case TabName.Release:\r\n return MacroSubAction.release;\r\n default:\r\n throw new Error('Invalid tab type');\r\n }\r\n }\r\n\r\n getKeyAction(): KeyAction {\r\n return this.keypressTab.toKeyAction();\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/macro/action-editor/tab/key/macro-key.component.ts","export * from './tab';\r\nexport { KeymapTabComponent } from './keymap';\r\nexport { KeypressTabComponent } from './keypress';\r\nexport { LayerTabComponent } from './layer';\r\nexport { MacroTabComponent } from './macro';\r\nexport { MouseTabComponent } from './mouse';\r\nexport { NoneTabComponent } from './none';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/popover/tab/index.ts","import { EventEmitter, Output } from '@angular/core';\r\n\r\nimport { KeyAction } from '../../../config-serializer/config-items/key-action';\r\n\r\nexport abstract class Tab {\r\n @Output() validAction = new EventEmitter();\r\n\r\n abstract keyActionValid(): boolean;\r\n abstract fromKeyAction(keyAction: KeyAction): boolean;\r\n abstract toKeyAction(): KeyAction;\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/popover/tab/tab.ts","export * from './keymap-tab.component';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/popover/tab/keymap/index.ts","import { ChangeDetectionStrategy, Component, EventEmitter, Input, OnChanges, OnInit, Output } from '@angular/core';\r\n\r\nimport { Select2OptionData } from 'ng2-select2/ng2-select2';\r\n\r\nimport { KeyAction, SwitchKeymapAction } from '../../../../config-serializer/config-items/key-action';\r\nimport { Keymap } from '../../../../config-serializer/config-items/Keymap';\r\nimport { Tab } from '../tab';\r\n\r\n@Component({\r\n selector: 'keymap-tab',\r\n template: require('./keymap-tab.component.html'),\r\n styles: [require('./keymap-tab.component.scss')],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class KeymapTabComponent extends Tab implements OnInit, OnChanges {\r\n @Input() defaultKeyAction: KeyAction;\r\n @Input() keymaps: Keymap[];\r\n\r\n private keymapOptions: Array;\r\n private selectedKeymap: Keymap;\r\n\r\n constructor() {\r\n super();\r\n this.keymapOptions = [];\r\n }\r\n\r\n ngOnInit() {\r\n this.keymapOptions = this.keymaps\r\n .map((keymap: Keymap): Select2OptionData => {\r\n return {\r\n id: keymap.abbreviation,\r\n text: keymap.name\r\n };\r\n });\r\n if (this.keymaps.length > 0) {\r\n this.selectedKeymap = this.keymaps[0];\r\n }\r\n }\r\n\r\n ngOnChanges() {\r\n this.fromKeyAction(this.defaultKeyAction);\r\n this.validAction.emit(true);\r\n }\r\n\r\n // TODO: change to the correct type when the wrapper has added it.\r\n onChange(event: any) {\r\n if (event.value === '-1') {\r\n this.selectedKeymap = undefined;\r\n } else {\r\n this.selectedKeymap = this.keymaps.find((keymap: Keymap) => keymap.abbreviation === event.value);\r\n }\r\n }\r\n\r\n keyActionValid(): boolean {\r\n return !!this.selectedKeymap;\r\n }\r\n\r\n fromKeyAction(keyAction: KeyAction): boolean {\r\n if (!(keyAction instanceof SwitchKeymapAction)) {\r\n return false;\r\n }\r\n\r\n const switchKeymapAction: SwitchKeymapAction = keyAction;\r\n this.selectedKeymap = this.keymaps\r\n .find((keymap: Keymap) => keymap.abbreviation === switchKeymapAction.keymapAbbreviation);\r\n }\r\n\r\n toKeyAction(): SwitchKeymapAction {\r\n if (!this.keyActionValid()) {\r\n throw new Error('KeyAction is not valid. No selected keymap!');\r\n }\r\n\r\n const keymapAction = new SwitchKeymapAction();\r\n keymapAction.keymapAbbreviation = this.selectedKeymap.abbreviation;\r\n return keymapAction;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/popover/tab/keymap/keymap-tab.component.ts","module.exports = \"\\r\\n No keymaps are available to choose from. Create a keymap first! \\r\\n \\r\\n 0\\\">\\r\\n \\r\\n Switch to keymap: \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n
\\r\\n \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/popover/tab/keymap/keymap-tab.component.html\n// module id = 220\n// module chunks = 0","module.exports = \":host {\\n display: flex;\\n flex-direction: column; }\\n :host > span {\\n text-align: center; }\\n :host > div {\\n display: flex;\\n margin-top: 2px; }\\n :host > div b {\\n display: flex;\\n align-items: center;\\n margin-right: 7px; }\\n :host > div select2 {\\n flex: 1; }\\n :host > div:last-child {\\n margin-top: 10px; }\\n :host > div:last-child img {\\n max-height: 100%;\\n max-width: 100%; }\\n\\n.empty {\\n display: flex; }\\n .empty img {\\n display: flex;\\n width: 100%;\\n height: 100%;\\n position: relative; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/popover/tab/keymap/keymap-tab.component.scss\n// module id = 221\n// module chunks = 0","export * from './keypress-tab.component';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/popover/tab/keypress/index.ts","import { Component, Input, EventEmitter, OnChanges, Output } from '@angular/core';\r\n\r\nimport { Select2OptionData, Select2TemplateFunction } from 'ng2-select2';\r\n\r\nimport { KeyAction, KeystrokeAction } from '../../../../config-serializer/config-items/key-action';\r\n\r\nimport { Tab } from '../tab';\r\nimport { MapperService } from '../../../../services/mapper.service';\r\n\r\n@Component({\r\n selector: 'keypress-tab',\r\n template: require('./keypress-tab.component.html'),\r\n styles: [require('./keypress-tab.component.scss')]\r\n})\r\nexport class KeypressTabComponent extends Tab implements OnChanges {\r\n @Input() defaultKeyAction: KeyAction;\r\n @Input() longPressEnabled: boolean;\r\n\r\n private leftModifiers: string[];\r\n private rightModifiers: string[];\r\n\r\n private leftModifierSelects: boolean[];\r\n private rightModifierSelects: boolean[];\r\n\r\n private scanCodeGroups: Array;\r\n private longPressGroups: Array;\r\n private options: Select2Options;\r\n\r\n private scanCode: number;\r\n private selectedLongPressIndex: number;\r\n\r\n constructor(private mapper: MapperService) {\r\n super();\r\n this.leftModifiers = ['LShift', 'LCtrl', 'LSuper', 'LAlt'];\r\n this.rightModifiers = ['RShift', 'RCtrl', 'RSuper', 'RAlt'];\r\n this.scanCodeGroups = [{\r\n id: '0',\r\n text: 'None'\r\n }];\r\n this.scanCodeGroups = this.scanCodeGroups.concat(require('json!./scancodes.json'));\r\n this.longPressGroups = require('json!./longPress.json');\r\n this.leftModifierSelects = Array(this.leftModifiers.length).fill(false);\r\n this.rightModifierSelects = Array(this.rightModifiers.length).fill(false);\r\n this.scanCode = 0;\r\n this.selectedLongPressIndex = -1;\r\n this.options = {\r\n templateResult: this.scanCodeTemplateResult,\r\n matcher: (term: string, text: string, data: Select2OptionData) => {\r\n let found = text.toUpperCase().indexOf(term.toUpperCase()) > -1;\r\n\r\n if (!found && data.additional && data.additional.explanation) {\r\n found = data.additional.explanation.toUpperCase().indexOf(term.toUpperCase()) > -1;\r\n }\r\n\r\n return found;\r\n }\r\n };\r\n }\r\n\r\n ngOnChanges() {\r\n this.fromKeyAction(this.defaultKeyAction);\r\n this.validAction.emit(this.keyActionValid());\r\n }\r\n\r\n keyActionValid(keystrokeAction?: KeystrokeAction): boolean {\r\n if (!keystrokeAction) {\r\n keystrokeAction = this.toKeyAction();\r\n }\r\n\r\n return (keystrokeAction) ? (keystrokeAction.scancode > 0 || keystrokeAction.modifierMask > 0) : false;\r\n }\r\n\r\n onKeysCapture(event: {code: number, left: boolean[], right: boolean[]}) {\r\n if (event.code) {\r\n this.scanCode = event.code;\r\n } else {\r\n this.scanCode = 0;\r\n }\r\n\r\n this.leftModifierSelects = event.left;\r\n this.rightModifierSelects = event.right;\r\n this.validAction.emit(this.keyActionValid());\r\n }\r\n\r\n fromKeyAction(keyAction: KeyAction): boolean {\r\n if (!(keyAction instanceof KeystrokeAction)) {\r\n return false;\r\n }\r\n let keystrokeAction: KeystrokeAction = keyAction;\r\n // Restore scancode\r\n this.scanCode = keystrokeAction.scancode || 0;\r\n\r\n let leftModifiersLength: number = this.leftModifiers.length;\r\n\r\n // Restore modifiers\r\n for (let i = 0; i < leftModifiersLength; ++i) {\r\n this.leftModifierSelects[this.mapper.modifierMapper(i)] = ((keystrokeAction.modifierMask >> i) & 1) === 1;\r\n }\r\n\r\n for (let i = leftModifiersLength; i < leftModifiersLength + this.rightModifierSelects.length; ++i) {\r\n let index: number = this.mapper.modifierMapper(i) - leftModifiersLength;\r\n this.rightModifierSelects[index] = ((keystrokeAction.modifierMask >> i) & 1) === 1;\r\n }\r\n\r\n // Restore longPressAction\r\n if (keystrokeAction.longPressAction !== undefined) {\r\n this.selectedLongPressIndex = this.mapper.modifierMapper(keystrokeAction.longPressAction);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n toKeyAction(): KeystrokeAction {\r\n let keystrokeAction: KeystrokeAction = new KeystrokeAction();\r\n keystrokeAction.scancode = this.scanCode;\r\n\r\n keystrokeAction.modifierMask = 0;\r\n let modifiers = this.leftModifierSelects.concat(this.rightModifierSelects).map(x => x ? 1 : 0);\r\n for (let i = 0; i < modifiers.length; ++i) {\r\n keystrokeAction.modifierMask |= modifiers[i] << this.mapper.modifierMapper(i);\r\n }\r\n\r\n keystrokeAction.longPressAction = this.selectedLongPressIndex === -1\r\n ? undefined\r\n : this.mapper.modifierMapper(this.selectedLongPressIndex);\r\n\r\n if (this.keyActionValid(keystrokeAction)) {\r\n return keystrokeAction;\r\n }\r\n }\r\n\r\n scanCodeTemplateResult: Select2TemplateFunction = (state: Select2OptionData): JQuery | string => {\r\n if (!state.id) {\r\n return state.text;\r\n }\r\n\r\n if (state.additional && state.additional.explanation) {\r\n return jQuery(\r\n ''\r\n + '' + state.text + ' '\r\n + ' '\r\n + state.additional.explanation\r\n + ' ' +\r\n ' '\r\n );\r\n } else {\r\n return jQuery('' + state.text + ' ');\r\n }\r\n }\r\n\r\n toggleModifier(right: boolean, index: number) {\r\n let modifierSelects: boolean[] = right ? this.rightModifierSelects : this.leftModifierSelects;\r\n modifierSelects[index] = !modifierSelects[index];\r\n\r\n this.validAction.emit(this.keyActionValid());\r\n }\r\n\r\n onLongpressChange(event: {value: string}) {\r\n this.selectedLongPressIndex = +event.value;\r\n }\r\n\r\n onScancodeChange(event: {value: string}) {\r\n this.scanCode = +event.value;\r\n this.validAction.emit(this.keyActionValid());\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/popover/tab/keypress/keypress-tab.component.ts","module.exports = [\n\t{\n\t\t\"text\": \"Alphabet\",\n\t\t\"children\": [\n\t\t\t{\n\t\t\t\t\"id\": \"4\",\n\t\t\t\t\"text\": \"A\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"5\",\n\t\t\t\t\"text\": \"B\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"6\",\n\t\t\t\t\"text\": \"C\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"7\",\n\t\t\t\t\"text\": \"D\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"8\",\n\t\t\t\t\"text\": \"E\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"9\",\n\t\t\t\t\"text\": \"F\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"10\",\n\t\t\t\t\"text\": \"G\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"11\",\n\t\t\t\t\"text\": \"H\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"12\",\n\t\t\t\t\"text\": \"I\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"13\",\n\t\t\t\t\"text\": \"J\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"14\",\n\t\t\t\t\"text\": \"K\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"15\",\n\t\t\t\t\"text\": \"L\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"16\",\n\t\t\t\t\"text\": \"M\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"17\",\n\t\t\t\t\"text\": \"N\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"18\",\n\t\t\t\t\"text\": \"O\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"19\",\n\t\t\t\t\"text\": \"P\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"20\",\n\t\t\t\t\"text\": \"Q\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"21\",\n\t\t\t\t\"text\": \"R\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"22\",\n\t\t\t\t\"text\": \"S\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"23\",\n\t\t\t\t\"text\": \"T\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"24\",\n\t\t\t\t\"text\": \"U\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"25\",\n\t\t\t\t\"text\": \"V\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"26\",\n\t\t\t\t\"text\": \"W\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"27\",\n\t\t\t\t\"text\": \"X\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"28\",\n\t\t\t\t\"text\": \"Y\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"29\",\n\t\t\t\t\"text\": \"Z\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"text\": \"Number Row\",\n\t\t\"children\": [\n\t\t\t{\n\t\t\t\t\"id\": \"30\",\n\t\t\t\t\"text\": \"1 !\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"31\",\n\t\t\t\t\"text\": \"2 @\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"32\",\n\t\t\t\t\"text\": \"3 #\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"33\",\n\t\t\t\t\"text\": \"4 $\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"34\",\n\t\t\t\t\"text\": \"5 %\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"35\",\n\t\t\t\t\"text\": \"6 ^\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"36\",\n\t\t\t\t\"text\": \"7 &\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"37\",\n\t\t\t\t\"text\": \"8 *\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"38\",\n\t\t\t\t\"text\": \"9 (\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"39\",\n\t\t\t\t\"text\": \"0 )\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"text\": \"Whitespace\",\n\t\t\"children\": [\n\t\t\t{\n\t\t\t\t\"id\": \"40\",\n\t\t\t\t\"additional\": {\n\t\t\t\t\t\"explanation\": \"Return\"\n\t\t\t\t},\n\t\t\t\t\"text\": \"Enter\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"41\",\n\t\t\t\t\"text\": \"Escape\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"42\",\n\t\t\t\t\"text\": \"Backspace\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"43\",\n\t\t\t\t\"text\": \"Tab\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"44\",\n\t\t\t\t\"text\": \"Space\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"text\": \"Punctuation\",\n\t\t\"children\": [\n\t\t\t{\n\t\t\t\t\"id\": \"45\",\n\t\t\t\t\"text\": \"- _\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"46\",\n\t\t\t\t\"text\": \"= +\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"47\",\n\t\t\t\t\"text\": \"[ {\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"48\",\n\t\t\t\t\"text\": \"] }\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"49\",\n\t\t\t\t\"text\": \"\\\\ |\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"51\",\n\t\t\t\t\"text\": \"; :\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"52\",\n\t\t\t\t\"text\": \"' \\\"\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"53\",\n\t\t\t\t\"text\": \"` ~\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"54\",\n\t\t\t\t\"text\": \", <\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"55\",\n\t\t\t\t\"text\": \". >\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"56\",\n\t\t\t\t\"text\": \"/ ?\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"text\": \"Function keys\",\n\t\t\"children\": [\n\t\t\t{\n\t\t\t\t\"id\": \"58\",\n\t\t\t\t\"text\": \"F1\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"59\",\n\t\t\t\t\"text\": \"F2\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"60\",\n\t\t\t\t\"text\": \"F3\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"61\",\n\t\t\t\t\"text\": \"F4\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"62\",\n\t\t\t\t\"text\": \"F5\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"63\",\n\t\t\t\t\"text\": \"F6\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"64\",\n\t\t\t\t\"text\": \"F7\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"65\",\n\t\t\t\t\"text\": \"F8\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"66\",\n\t\t\t\t\"text\": \"F9\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"67\",\n\t\t\t\t\"text\": \"F10\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"68\",\n\t\t\t\t\"text\": \"F11\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"69\",\n\t\t\t\t\"text\": \"F12\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"104\",\n\t\t\t\t\"text\": \"F13\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"105\",\n\t\t\t\t\"text\": \"F14\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"106\",\n\t\t\t\t\"text\": \"F15\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"107\",\n\t\t\t\t\"text\": \"F16\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"108\",\n\t\t\t\t\"text\": \"F17\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"109\",\n\t\t\t\t\"text\": \"F18\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"110\",\n\t\t\t\t\"text\": \"F19\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"111\",\n\t\t\t\t\"text\": \"F20\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"112\",\n\t\t\t\t\"text\": \"F21\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"113\",\n\t\t\t\t\"text\": \"F22\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"114\",\n\t\t\t\t\"text\": \"F23\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"115\",\n\t\t\t\t\"text\": \"F24\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"text\": \"Navigation\",\n\t\t\"children\": [\n\t\t\t{\n\t\t\t\t\"id\": \"74\",\n\t\t\t\t\"text\": \"Home\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"75\",\n\t\t\t\t\"additional\": {\n\t\t\t\t\t\"explanation\": \"PgUp pageup\"\n\t\t\t\t},\n\t\t\t\t\"text\": \"Page Up\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"77\",\n\t\t\t\t\"text\": \"End\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"78\",\n\t\t\t\t\"additional\": {\n\t\t\t\t\t\"explanation\": \"PgDn pagedown\"\n\t\t\t\t},\n\t\t\t\t\"text\": \"Page Down\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"79\",\n\t\t\t\t\"additional\": {\n\t\t\t\t\t\"explanation\": \"ArrowRight\"\n\t\t\t\t},\n\t\t\t\t\"text\": \"Right Arrow\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"80\",\n\t\t\t\t\"additional\": {\n\t\t\t\t\t\"explanation\": \"ArrowLeft\"\n\t\t\t\t},\n\t\t\t\t\"text\": \"Left Arrow\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"81\",\n\t\t\t\t\"additional\": {\n\t\t\t\t\t\"explanation\": \"ArrowDown\"\n\t\t\t\t},\n\t\t\t\t\"text\": \"Down Arrow\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"82\",\n\t\t\t\t\"additional\": {\n\t\t\t\t\t\"explanation\": \"ArrowUp\"\n\t\t\t\t},\n\t\t\t\t\"text\": \"Up Arrow\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"text\": \"Numpad\",\n\t\t\"children\": [\n\t\t\t{\n\t\t\t\t\"id\": \"83\",\n\t\t\t\t\"text\": \"NumLock\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"84\",\n\t\t\t\t\"additional\": {\n\t\t\t\t\t\"explanation\": \"slash\"\n\t\t\t\t},\n\t\t\t\t\"text\": \"/\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"85\",\n\t\t\t\t\"additional\": {\n\t\t\t\t\t\"explanation\": \"asterisk\"\n\t\t\t\t},\n\t\t\t\t\"text\": \"*\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"86\",\n\t\t\t\t\"additional\": {\n\t\t\t\t\t\"explanation\": \"minus\"\n\t\t\t\t},\n\t\t\t\t\"text\": \"-\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"87\",\n\t\t\t\t\"additional\": {\n\t\t\t\t\t\"explanation\": \"plus\"\n\t\t\t\t},\n\t\t\t\t\"text\": \"+\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"88\",\n\t\t\t\t\"text\": \"Enter\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"89\",\n\t\t\t\t\"additional\": {\n\t\t\t\t\t\"explanation\": \"one\"\n\t\t\t\t},\n\t\t\t\t\"text\": \"1\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"90\",\n\t\t\t\t\"additional\": {\n\t\t\t\t\t\"explanation\": \"two\"\n\t\t\t\t},\n\t\t\t\t\"text\": \"2\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"91\",\n\t\t\t\t\"additional\": {\n\t\t\t\t\t\"explanation\": \"three\"\n\t\t\t\t},\n\t\t\t\t\"text\": \"3\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"92\",\n\t\t\t\t\"additional\": {\n\t\t\t\t\t\"explanation\": \"four\"\n\t\t\t\t},\n\t\t\t\t\"text\": \"4\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"93\",\n\t\t\t\t\"additional\": {\n\t\t\t\t\t\"explanation\": \"five\"\n\t\t\t\t},\n\t\t\t\t\"text\": \"5\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"94\",\n\t\t\t\t\"additional\": {\n\t\t\t\t\t\"explanation\": \"six\"\n\t\t\t\t},\n\t\t\t\t\"text\": \"6\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"95\",\n\t\t\t\t\"additional\": {\n\t\t\t\t\t\"explanation\": \"seven\"\n\t\t\t\t},\n\t\t\t\t\"text\": \"7\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"96\",\n\t\t\t\t\"additional\": {\n\t\t\t\t\t\"explanation\": \"eight\"\n\t\t\t\t},\n\t\t\t\t\"text\": \"8\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"97\",\n\t\t\t\t\"additional\": {\n\t\t\t\t\t\"explanation\": \"nine\"\n\t\t\t\t},\n\t\t\t\t\"text\": \"9\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"98\",\n\t\t\t\t\"additional\": {\n\t\t\t\t\t\"explanation\": \"zero\"\n\t\t\t\t},\n\t\t\t\t\"text\": \"0\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"99\",\n\t\t\t\t\"additional\": {\n\t\t\t\t\t\"explanation\": \"Period\"\n\t\t\t\t},\n\t\t\t\t\"text\": \".\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"176\",\n\t\t\t\t\"additional\": {\n\t\t\t\t\t\"explanation\": \"Doublezero\"\n\t\t\t\t},\n\t\t\t\t\"text\": \"00\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"177\",\n\t\t\t\t\"additional\": {\n\t\t\t\t\t\"explanation\": \"Triplezero\"\n\t\t\t\t},\n\t\t\t\t\"text\": \"000\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"text\": \"Misc\",\n\t\t\"children\": [\n\t\t\t{\n\t\t\t\t\"id\": \"118\",\n\t\t\t\t\"text\": \"Menu\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"73\",\n\t\t\t\t\"text\": \"Insert\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"76\",\n\t\t\t\t\"additional\": {\n\t\t\t\t\t\"explanation\": \"Delete Forward\"\n\t\t\t\t},\n\t\t\t\t\"text\": \"Delete\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"57\",\n\t\t\t\t\"text\": \"CapsLock\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"70\",\n\t\t\t\t\"text\": \"PrintScreen\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"71\",\n\t\t\t\t\"text\": \"ScrollLock\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"72\",\n\t\t\t\t\"text\": \"Pause\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"text\": \"Media Keys\",\n\t\t\"children\": [\n\t\t\t{\n\t\t\t\t\"id\": \"127\",\n\t\t\t\t\"text\": \"Mute\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"128\",\n\t\t\t\t\"text\": \"Volume Up\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"129\",\n\t\t\t\t\"text\": \"Volume Down\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"\",\n\t\t\t\t\"text\": \"Next Track\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"\",\n\t\t\t\t\"text\": \"Previous Track\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"\",\n\t\t\t\t\"text\": \"Stop\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"\",\n\t\t\t\t\"text\": \"Play/Pause\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"\",\n\t\t\t\t\"text\": \"Eject\"\n\t\t\t}\n\t\t]\n\t}\n];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/json-loader!./shared/src/components/popover/tab/keypress/scancodes.json\n// module id = 224\n// module chunks = 0","module.exports = [\n\t{\n\t\t\"id\": \"-1\",\n\t\t\"text\": \"None\"\n\t},\n\t{\n\t\t\"text\": \"Modifiers\",\n\t\t\"children\": [\n\t\t\t{\n\t\t\t\t\"id\": \"0\",\n\t\t\t\t\"text\": \"LShift\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"1\",\n\t\t\t\t\"text\": \"LCtrl\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"2\",\n\t\t\t\t\"text\": \"LSuper\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"3\",\n\t\t\t\t\"text\": \"LAlt\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"4\",\n\t\t\t\t\"text\": \"RShift\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"5\",\n\t\t\t\t\"text\": \"RCtrl\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"6\",\n\t\t\t\t\"text\": \"RSuper\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"7\",\n\t\t\t\t\"text\": \"RAlt\"\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"text\": \"Layer switcher\",\n\t\t\"children\": [\n\t\t\t{\n\t\t\t\t\"id\": \"8\",\n\t\t\t\t\"text\": \"Mod\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"9\",\n\t\t\t\t\"text\": \"Mouse\"\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"id\": \"10\",\n\t\t\t\t\"text\": \"Fn\"\n\t\t\t}\n\t\t]\n\t}\n];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/json-loader!./shared/src/components/popover/tab/keypress/longPress.json\n// module id = 225\n// module chunks = 0","module.exports = \"\\r\\n Scancode: \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n
Modifiers: \\r\\n
\\r\\n
\\r\\n\\r\\n Long press action: \\r\\n \\r\\n \\r\\n
\\r\\n\\r\\n\\r\\n \\r\\n When a key is configured as layer switcher key, you can't assign other functions to it.\\r\\n To assign a scancode to the key, set the Layer action to None .\\r\\n
\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/popover/tab/keypress/keypress-tab.component.html\n// module id = 226\n// module chunks = 0","module.exports = \":host {\\n display: flex;\\n flex-direction: column;\\n position: relative; }\\n :host .scancode-options {\\n margin-bottom: 10px;\\n margin-top: 2px; }\\n :host .scancode-options > b {\\n position: relative;\\n top: 2px; }\\n :host .modifier-options > b {\\n position: relative;\\n top: -9px;\\n margin-right: 4px; }\\n :host .modifier-options .btn-toolbar {\\n display: inline-block; }\\n :host .long-press-container {\\n display: flex;\\n margin-top: 3rem; }\\n :host .long-press-container > b {\\n margin-right: 0.6em;\\n align-items: center;\\n display: flex; }\\n :host .long-press-container .secondary-role {\\n width: 135px; }\\n :host .long-press-container icon {\\n margin-left: 0.6em; }\\n :host .setting-label.disabled {\\n color: #999; }\\n :host .disabled-state--text {\\n display: none;\\n position: absolute;\\n top: 50%;\\n margin-top: -4rem;\\n color: #31708f;\\n padding-right: 40px; }\\n :host .disabled-state--text .fa {\\n font-size: 2.6rem;\\n float: left;\\n padding: 1rem 1.5rem 2rem; }\\n :host.disabled .scancode-options,\\n :host.disabled .modifier-options,\\n :host.disabled .long-press-container {\\n visibility: hidden; }\\n :host.disabled .disabled-state--text {\\n display: block; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/popover/tab/keypress/keypress-tab.component.scss\n// module id = 227\n// module chunks = 0","export * from './layer-tab.component';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/popover/tab/layer/index.ts","import { Component, EventEmitter, HostBinding, Input, OnChanges, Output, SimpleChanges } from '@angular/core';\r\n\r\nimport { KeyAction, LayerName, SwitchLayerAction } from '../../../../config-serializer/config-items/key-action';\r\n\r\nimport { Tab } from '../tab';\r\n\r\n@Component({\r\n selector: 'layer-tab',\r\n template: require('./layer-tab.component.html'),\r\n styles: [require('./layer-tab.component.scss')]\r\n})\r\nexport class LayerTabComponent extends Tab implements OnChanges {\r\n @Input() defaultKeyAction: KeyAction;\r\n @Input() currentLayer: number;\r\n\r\n @HostBinding('class.no-base') isNotBase: boolean;\r\n\r\n toggleData: { id: boolean, text: string }[] = [\r\n {\r\n id: false,\r\n text: 'Activate'\r\n },\r\n {\r\n id: true,\r\n text: 'Toggle'\r\n }\r\n ];\r\n\r\n layerData: { id: number, text: string }[] = [\r\n {\r\n id: 0,\r\n text: 'Mod'\r\n },\r\n {\r\n id: 1,\r\n text: 'Fn'\r\n },\r\n {\r\n id: 2,\r\n text: 'Mouse'\r\n }\r\n ];\r\n\r\n private toggle: boolean;\r\n private layer: LayerName;\r\n\r\n constructor() {\r\n super();\r\n this.toggle = false;\r\n this.layer = LayerName.mod;\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n if (changes['defaultKeyAction']) {\r\n this.fromKeyAction(this.defaultKeyAction);\r\n }\r\n\r\n if (changes['currentLayer']) {\r\n this.isNotBase = this.currentLayer > 0;\r\n }\r\n\r\n this.validAction.emit(true);\r\n }\r\n\r\n keyActionValid(): boolean {\r\n return !this.isNotBase;\r\n }\r\n\r\n fromKeyAction(keyAction: KeyAction): boolean {\r\n if (!(keyAction instanceof SwitchLayerAction)) {\r\n return false;\r\n }\r\n\r\n let switchLayerAction: SwitchLayerAction = keyAction;\r\n this.toggle = switchLayerAction.isLayerToggleable;\r\n this.layer = switchLayerAction.layer;\r\n return true;\r\n }\r\n\r\n toKeyAction(): SwitchLayerAction {\r\n let keyAction = new SwitchLayerAction();\r\n keyAction.isLayerToggleable = this.toggle;\r\n keyAction.layer = this.layer;\r\n if (!this.keyActionValid()) {\r\n throw new Error('KeyAction is invalid!');\r\n }\r\n return keyAction;\r\n }\r\n\r\n toggleChanged(value: string) {\r\n this.toggle = value === 'true';\r\n }\r\n\r\n layerChanged(value: number) {\r\n this.layer = +value;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/popover/tab/layer/layer-tab.component.ts","module.exports = \"\\r\\n \\r\\n \\r\\n {{ item.text }}\\r\\n \\r\\n \\r\\n the \\r\\n \\r\\n \\r\\n {{ item.text }}\\r\\n \\r\\n \\r\\n \\r\\n layer by pressing this key. \\r\\n layer by holding this key. \\r\\n \\r\\n \\r\\n\\r\\n Layer switching is only possible from the base layer. \\r\\n \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/popover/tab/layer/layer-tab.component.html\n// module id = 230\n// module chunks = 0","module.exports = \":host {\\n display: flex;\\n margin: 0 -5px; }\\n :host.no-base {\\n justify-content: center; }\\n :host > span,\\n :host > select {\\n margin: 0 5px;\\n display: flex;\\n align-items: center; }\\n\\nselect {\\n background-color: #fff;\\n border: 1px solid #aaa;\\n border-radius: 4px;\\n padding: 4px 20px 4px 8px; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/popover/tab/layer/layer-tab.component.scss\n// module id = 231\n// module chunks = 0","export * from './macro-tab.component';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/popover/tab/macro/index.ts","import { Component, EventEmitter, Input, OnChanges, OnDestroy, OnInit, Output } from '@angular/core';\r\n\r\nimport { Store } from '@ngrx/store';\r\n\r\nimport { Subscription } from 'rxjs/Subscription';\r\n\r\nimport { Select2OptionData } from 'ng2-select2/ng2-select2';\r\n\r\nimport { KeyAction, PlayMacroAction } from '../../../../config-serializer/config-items/key-action';\r\nimport { Macro } from '../../../../config-serializer/config-items/Macro';\r\n\r\nimport { Tab } from '../tab';\r\n\r\nimport { AppState } from '../../../../store/index';\r\nimport { getMacros } from '../../../../store/reducers/user-configuration';\r\n\r\n@Component({\r\n selector: 'macro-tab',\r\n template: require('./macro-tab.component.html'),\r\n styles: [require('./macro-tab.component.scss')]\r\n})\r\nexport class MacroTabComponent extends Tab implements OnInit, OnChanges, OnDestroy {\r\n @Input() defaultKeyAction: KeyAction;\r\n\r\n private macros: Macro[];\r\n private macroOptions: Array;\r\n private selectedMacroIndex: number;\r\n private subscription: Subscription;\r\n\r\n constructor(private store: Store) {\r\n super();\r\n this.subscription = store.let(getMacros())\r\n .subscribe((macros: Macro[]) => this.macros = macros);\r\n this.macroOptions = [];\r\n this.selectedMacroIndex = 0;\r\n }\r\n\r\n ngOnInit() {\r\n this.macroOptions = this.macros.map(function (macro: Macro, index: number): Select2OptionData {\r\n return {\r\n id: index.toString(),\r\n text: macro.name\r\n };\r\n });\r\n }\r\n\r\n ngOnChanges() {\r\n this.fromKeyAction(this.defaultKeyAction);\r\n this.validAction.emit(true);\r\n }\r\n\r\n // TODO: change to the correct type when the wrapper has added it.\r\n onChange(event: any) {\r\n this.selectedMacroIndex = +event.value;\r\n }\r\n\r\n keyActionValid(): boolean {\r\n return this.selectedMacroIndex >= 0;\r\n }\r\n\r\n fromKeyAction(keyAction: KeyAction): boolean {\r\n if (!(keyAction instanceof PlayMacroAction)) {\r\n return false;\r\n }\r\n const playMacroAction: PlayMacroAction = keyAction;\r\n this.selectedMacroIndex = this.macros.findIndex(macro => playMacroAction.macroId === macro.id);\r\n return true;\r\n }\r\n\r\n toKeyAction(): PlayMacroAction {\r\n if (!this.keyActionValid()) {\r\n throw new Error('KeyAction is not valid. No selected macro!');\r\n }\r\n\r\n const keymapAction = new PlayMacroAction();\r\n keymapAction.macroId = this.macros[this.selectedMacroIndex].id;\r\n return keymapAction;\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscription.unsubscribe();\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/popover/tab/macro/macro-tab.component.ts","module.exports = \"\\r\\n No macros are available to choose from. Create a macro first! \\r\\n \\r\\n 0\\\">\\r\\n \\r\\n Play macro: \\r\\n \\r\\n
\\r\\n \\r\\n
\\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/popover/tab/macro/macro-tab.component.html\n// module id = 234\n// module chunks = 0","module.exports = \":host {\\n display: flex;\\n flex-direction: column; }\\n :host > span {\\n text-align: center; }\\n :host .macro-selector {\\n display: flex;\\n margin-top: 2px; }\\n :host .macro-selector b {\\n display: flex;\\n align-items: center;\\n margin-right: 7px; }\\n :host .macro-selector select2 {\\n flex: 1; }\\n :host .macro-action-container {\\n display: flex;\\n flex-direction: column;\\n min-height: 200px;\\n max-height: 300px;\\n margin: 20px 0;\\n overflow-x: hidden;\\n overflow-y: auto;\\n border-radius: 4px;\\n border: 1px solid #ddd; }\\n :host .macro-action-container .list-group {\\n margin-bottom: 0;\\n border: 0; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/popover/tab/macro/macro-tab.component.scss\n// module id = 235\n// module chunks = 0","export * from './mouse-tab.component';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/popover/tab/mouse/index.ts","import { Component, EventEmitter, Input, OnChanges, Output } from '@angular/core';\r\n\r\nimport { KeyAction, MouseAction, MouseActionParam } from '../../../../config-serializer/config-items/key-action';\r\nimport { Tab } from '../tab';\r\n\r\n@Component({\r\n selector: 'mouse-tab',\r\n template: require('./mouse-tab.component.html'),\r\n styles: [require('./mouse-tab.component.scss')]\r\n})\r\nexport class MouseTabComponent extends Tab implements OnChanges {\r\n @Input() defaultKeyAction: KeyAction;\r\n\r\n private mouseActionParam: MouseActionParam;\r\n private selectedPageIndex: number;\r\n /* tslint:disable:variable-name: It is an enum type. So it can start with uppercase. */\r\n /* tslint:disable:no-unused-variable: It is used in the template. */\r\n private MouseActionParam = MouseActionParam;\r\n /* tslint:enable:no-unused-variable tslint:enable:variable-name */\r\n\r\n private pages: string[];\r\n\r\n constructor() {\r\n super();\r\n this.selectedPageIndex = 0;\r\n this.pages = ['Move', 'Scroll', 'Click', 'Speed'];\r\n }\r\n\r\n ngOnChanges() {\r\n this.fromKeyAction(this.defaultKeyAction);\r\n this.validAction.emit(this.keyActionValid());\r\n }\r\n\r\n keyActionValid(): boolean {\r\n return this.mouseActionParam !== undefined;\r\n }\r\n\r\n fromKeyAction(keyAction: KeyAction): boolean {\r\n if (!(keyAction instanceof MouseAction)) {\r\n return false;\r\n }\r\n\r\n let mouseAction: MouseAction = keyAction;\r\n this.mouseActionParam = mouseAction.mouseAction;\r\n\r\n if (mouseAction.mouseAction === MouseActionParam.moveUp) {\r\n this.selectedPageIndex = 0;\r\n }\r\n\r\n switch (mouseAction.mouseAction) {\r\n case MouseActionParam.moveDown:\r\n case MouseActionParam.moveUp:\r\n case MouseActionParam.moveLeft:\r\n case MouseActionParam.moveRight:\r\n this.selectedPageIndex = 0;\r\n break;\r\n case MouseActionParam.scrollDown:\r\n case MouseActionParam.scrollUp:\r\n case MouseActionParam.scrollLeft:\r\n case MouseActionParam.scrollRight:\r\n this.selectedPageIndex = 1;\r\n break;\r\n case MouseActionParam.leftClick:\r\n case MouseActionParam.middleClick:\r\n case MouseActionParam.rightClick:\r\n this.selectedPageIndex = 2;\r\n break;\r\n case MouseActionParam.decelerate:\r\n case MouseActionParam.accelerate:\r\n this.selectedPageIndex = 3;\r\n break;\r\n default:\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n toKeyAction(): MouseAction {\r\n let mouseAction: MouseAction = new MouseAction();\r\n mouseAction.mouseAction = this.mouseActionParam;\r\n return mouseAction;\r\n }\r\n\r\n changePage(index: number) {\r\n if (index < -1 || index > 3) {\r\n console.error(`Invalid index error: ${index}`);\r\n return;\r\n }\r\n\r\n this.selectedPageIndex = index;\r\n this.mouseActionParam = undefined;\r\n this.validAction.emit(false);\r\n }\r\n\r\n setMouseActionParam(mouseActionParam: MouseActionParam) {\r\n this.mouseActionParam = mouseActionParam;\r\n this.validAction.emit(true);\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/popover/tab/mouse/mouse-tab.component.ts","module.exports = \"\\r\\n\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n Left \\r\\n Middle \\r\\n Right \\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Press this key along with mouse movement/scrolling to accelerate/decelerate the speed of the action.
\\r\\n
\\r\\n
\\r\\n \\r\\n -\\r\\n Decelerate \\r\\n \\r\\n \\r\\n +\\r\\n Accelerate \\r\\n \\r\\n
\\r\\n
\\r\\n
You can set the multiplier in the settings .
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\\r\\n
\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/popover/tab/mouse/mouse-tab.component.html\n// module id = 238\n// module chunks = 0","module.exports = \":host {\\n display: flex; }\\n :host.popover-content {\\n padding: 10px;\\n display: flex;\\n align-items: center; }\\n :host .mouse-action .nav {\\n border-right: 1px solid #ccc; }\\n :host .mouse-action .nav li a {\\n border-top-right-radius: 0;\\n border-bottom-right-radius: 0; }\\n :host .mouse-action .nav li a.selected {\\n font-style: italic; }\\n :host .mouse-action .nav li.active a.selected {\\n font-style: normal; }\\n :host .mouse-action .nav li.active a:after {\\n content: '';\\n display: block;\\n position: absolute;\\n width: 0;\\n height: 0;\\n top: 0;\\n right: -4rem;\\n border-color: transparent transparent transparent #337ab7;\\n border-style: solid;\\n border-width: 2rem; }\\n :host .help-text--mouse-speed {\\n margin-bottom: 2rem;\\n font-size: 0.9em;\\n color: #666; }\\n :host .help-text--mouse-speed p {\\n margin: 0; }\\n :host .details .btn-placeholder {\\n visibility: hidden; }\\n\\n.mouse__config--speed .btn-default {\\n font-size: 25px;\\n line-height: 22px;\\n padding-top: 4px;\\n padding-bottom: 4px; }\\n .mouse__config--speed .btn-default span {\\n font-size: 13px;\\n display: block;\\n text-align: center; }\\n\\n.help-text--mouse-speed.last-help {\\n margin-bottom: 0;\\n margin-top: 2rem; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/popover/tab/mouse/mouse-tab.component.scss\n// module id = 239\n// module chunks = 0","export * from './none-tab.component';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/popover/tab/none/index.ts","import { Component, EventEmitter, OnChanges, Output } from '@angular/core';\r\n\r\nimport { Tab } from '../tab';\r\n\r\n@Component({\r\n selector: 'none-tab',\r\n template: require('./none-tab.component.html'),\r\n styles: [require('./none-tab.component.scss')]\r\n})\r\nexport class NoneTabComponent extends Tab implements OnChanges {\r\n ngOnChanges(event: any) {\r\n this.validAction.emit(true);\r\n }\r\n\r\n keyActionValid(): boolean {\r\n return true;\r\n }\r\n\r\n fromKeyAction(): boolean {\r\n return false;\r\n }\r\n\r\n toKeyAction(): undefined {\r\n return undefined;\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/popover/tab/none/none-tab.component.ts","module.exports = \"This key is unassigned and has no functionality.\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/popover/tab/none/none-tab.component.html\n// module id = 242\n// module chunks = 0","module.exports = \":host {\\n display: flex;\\n justify-content: center;\\n padding: 2rem 0; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/popover/tab/none/none-tab.component.scss\n// module id = 243\n// module chunks = 0","module.exports = \"\\r\\n
\\r\\n
\\r\\n
\\r\\n
Press key \\r\\n Hold key \\r\\n Release key \\r\\n \\r\\n \\r\\n
\\r\\n
\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/macro/action-editor/tab/key/macro-key.component.html\n// module id = 244\n// module chunks = 0","module.exports = \".macro-key__container {\\n padding: 0; }\\n\\n.macro-key__types {\\n margin-left: 0;\\n padding: 0 0 1rem; }\\n\\n.macro-key__action {\\n padding-left: 3rem;\\n padding-bottom: 1rem; }\\n .macro-key__action-container {\\n margin-top: -1rem;\\n padding-top: 1rem;\\n border-left: 1px solid #ddd; }\\n\\n.fa {\\n min-width: 14px; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/macro/action-editor/tab/key/macro-key.component.scss\n// module id = 245\n// module chunks = 0","export { MacroMouseTabComponent } from './macro-mouse.component';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/macro/action-editor/tab/mouse/index.ts","import { Component, Input, OnInit, ViewChild } from '@angular/core';\r\n\r\nimport { EditableMacroAction, MacroSubAction, macroActionType } from '../../../../../config-serializer/config-items/macro-action';\r\nimport { Tab } from '../../../../popover/tab';\r\n\r\nenum TabName {\r\n Move,\r\n Scroll,\r\n Click,\r\n Hold,\r\n Release\r\n}\r\n\r\n@Component({\r\n selector: 'macro-mouse-tab',\r\n template: require('./macro-mouse.component.html'),\r\n styles: [\r\n require('../../macro-action-editor.component.scss'),\r\n require('./macro-mouse.component.scss')\r\n ],\r\n host: { 'class': 'macro__mouse' }\r\n})\r\nexport class MacroMouseTabComponent implements OnInit {\r\n @Input() macroAction: EditableMacroAction;\r\n @ViewChild('tab') selectedTab: Tab;\r\n\r\n private activeTab: TabName;\r\n private buttonLabels: string[];\r\n private selectedButtons: boolean[];\r\n /* tslint:disable:variable-name: It is an enum type. So it can start with uppercase. */\r\n /* tslint:disable:no-unused-variable: It is used in the template. */\r\n private TabName = TabName;\r\n /* tslint:enable:no-unused-variable */\r\n /* tslint:enable:variable-name */\r\n\r\n constructor() {\r\n this.buttonLabels = ['Left', 'Middle', 'Right'];\r\n this.selectedButtons = Array(this.buttonLabels.length).fill(false);\r\n }\r\n\r\n ngOnInit() {\r\n const tabName = this.getTabName(this.macroAction);\r\n this.selectTab(tabName);\r\n const buttonActions = [TabName.Click, TabName.Hold, TabName.Release];\r\n if (buttonActions.includes(this.activeTab)) {\r\n this.selectedButtons = this.macroAction.getMouseButtons();\r\n }\r\n }\r\n\r\n selectTab(tab: TabName): void {\r\n this.activeTab = tab;\r\n this.macroAction.macroActionType = this.getMacroActionType(tab);\r\n if (this.macroAction.macroActionType === macroActionType.MouseButtonMacroAction) {\r\n this.macroAction.action = this.getAction(tab);\r\n }\r\n }\r\n\r\n setMouseClick(index: number): void {\r\n this.selectedButtons[index] = !this.selectedButtons[index];\r\n this.macroAction.setMouseButtons(this.selectedButtons);\r\n }\r\n\r\n hasButton(index: number): boolean {\r\n return this.selectedButtons[index];\r\n }\r\n\r\n getAction(tab: TabName): MacroSubAction {\r\n switch (tab) {\r\n case TabName.Click:\r\n return MacroSubAction.press;\r\n case TabName.Hold:\r\n return MacroSubAction.hold;\r\n case TabName.Release:\r\n return MacroSubAction.release;\r\n default:\r\n throw new Error('Invalid tab name');\r\n }\r\n }\r\n\r\n getTabName(action: EditableMacroAction): TabName {\r\n if (action.macroActionType === macroActionType.MouseButtonMacroAction) {\r\n if (!action.action || action.isOnlyPressAction()) {\r\n return TabName.Click;\r\n } else if (action.isOnlyPressAction()) {\r\n return TabName.Hold;\r\n } else if (action.isOnlyReleaseAction()) {\r\n return TabName.Release;\r\n }\r\n } else if (action.macroActionType === macroActionType.MoveMouseMacroAction) {\r\n return TabName.Move;\r\n } else if (action.macroActionType === macroActionType.ScrollMouseMacroAction) {\r\n return TabName.Scroll;\r\n }\r\n return TabName.Move;\r\n }\r\n\r\n getMacroActionType(tab: TabName): string {\r\n if (tab === TabName.Click || tab === TabName.Hold || tab === TabName.Release) {\r\n return macroActionType.MouseButtonMacroAction;\r\n } else if (tab === TabName.Move) {\r\n return macroActionType.MoveMouseMacroAction;\r\n } else if (tab === TabName.Scroll) {\r\n return macroActionType.ScrollMouseMacroAction;\r\n }\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/macro/action-editor/tab/mouse/macro-mouse.component.ts","module.exports = \"\\r\\n
\\r\\n
\\r\\n
\\r\\n
Move pointer \\r\\n
Use negative values to move down or left from current position.
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Scroll \\r\\n
Use negative values to move down or left from current position.
\\r\\n
\\r\\n
\\r\\n
\\r\\n
Click mouse button \\r\\n
Hold mouse button \\r\\n
Release mouse button \\r\\n
\\r\\n {{buttonLabel}} \\r\\n
\\r\\n
\\r\\n
\\r\\n
\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/macro/action-editor/tab/mouse/macro-mouse.component.html\n// module id = 248\n// module chunks = 0","module.exports = \".macro-mouse__container {\\n padding: 0; }\\n\\n.macro-mouse__types {\\n border-right: 1px solid #ddd;\\n border-left: 0;\\n margin-top: -1rem;\\n margin-left: 0;\\n padding: 1rem 0; }\\n\\n.macro-mouse__actions {\\n padding-left: 3rem;\\n padding-bottom: 1rem; }\\n\\n.macro-mouse__buttons {\\n margin-top: 3rem;\\n margin-bottom: 1rem; }\\n\\n.fa {\\n min-width: 14px; }\\n\\n.form-horizontal .form-group {\\n margin: 0 0 0.5rem; }\\n\\n.form-horizontal label {\\n display: inline-block;\\n margin-right: 0.5rem; }\\n\\n.form-horizontal .form-control {\\n display: inline-block;\\n width: 60%; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/macro/action-editor/tab/mouse/macro-mouse.component.scss\n// module id = 249\n// module chunks = 0","export { MacroTextTabComponent } from './macro-text.component';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/macro/action-editor/tab/text/index.ts","import {\r\n AfterViewInit,\r\n Component,\r\n ElementRef,\r\n Input,\r\n Renderer,\r\n ViewChild\r\n} from '@angular/core';\r\n\r\nimport { EditableMacroAction } from '../../../../../config-serializer/config-items/macro-action';\r\n\r\n@Component({\r\n selector: 'macro-text-tab',\r\n template: require('./macro-text.component.html'),\r\n styles: [require('./macro-text.component.scss')],\r\n host: { 'class': 'macro__text' }\r\n})\r\nexport class MacroTextTabComponent implements AfterViewInit {\r\n @Input() macroAction: EditableMacroAction;\r\n @ViewChild('macroTextInput') input: ElementRef;\r\n\r\n constructor(private renderer: Renderer) {}\r\n\r\n ngAfterViewInit() {\r\n this.renderer.invokeElementMethod(this.input.nativeElement, 'focus');\r\n }\r\n\r\n onTextChange() {\r\n this.macroAction.text = this.input.nativeElement.value;\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/macro/action-editor/tab/text/macro-text.component.ts","module.exports = \"\\r\\n
Type text \\r\\n
Input the text you want to type with this macro action.
\\r\\n
\\r\\n
\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/macro/action-editor/tab/text/macro-text.component.html\n// module id = 252\n// module chunks = 0","module.exports = \":host {\\n display: flex;\\n flex-direction: column;\\n position: relative; }\\n\\n.macro__text-input {\\n width: 100%;\\n min-height: 10rem;\\n margin-bottom: 1rem; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/macro/action-editor/tab/text/macro-text.component.scss\n// module id = 253\n// module chunks = 0","export * from './notification.component';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/notification/index.ts","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'notification',\r\n template: require('./notification.component.html'),\r\n styles: [require('./notification.component.scss')]\r\n})\r\nexport class NotificationComponent {\r\n\r\n constructor() {\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/notification/notification.component.ts","module.exports = \"Keymap removed \\r\\nUndo \\r\\n× \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/notification/notification.component.html\n// module id = 256\n// module chunks = 0","module.exports = \":host {\\n padding: 1rem 1.5rem;\\n box-shadow: 0 0 0 1px #000;\\n border-radius: 0.5rem;\\n position: absolute;\\n top: 2rem;\\n right: 2rem;\\n z-index: 10000;\\n background-color: #333;\\n color: #eee;\\n display: none; }\\n\\n.action {\\n margin-left: 1rem;\\n margin-right: 1rem;\\n color: #5bc0de;\\n text-transform: uppercase;\\n font-weight: bold; }\\n .action:focus, .action:active, .action:hover {\\n text-decoration: none;\\n color: #5bc0de; }\\n\\n.dismiss {\\n position: relative;\\n bottom: 1px;\\n color: #ccc; }\\n .dismiss:hover {\\n cursor: pointer;\\n color: #fff; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/notification/notification.component.scss\n// module id = 257\n// module chunks = 0","export * from './popover.component';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/popover/index.ts","import {\r\n Component, ElementRef, EventEmitter, HostListener, Input, OnChanges, Output, SimpleChanges, ViewChild,\r\n animate, keyframes, state, style, transition, trigger\r\n} from '@angular/core';\r\n\r\nimport { Store } from '@ngrx/store';\r\nimport { Observable } from 'rxjs/Observable';\r\n\r\nimport {\r\n KeyAction,\r\n KeystrokeAction,\r\n MouseAction,\r\n PlayMacroAction,\r\n SwitchKeymapAction,\r\n SwitchLayerAction\r\n} from '../../config-serializer/config-items/key-action';\r\nimport { Keymap } from '../../config-serializer/config-items/Keymap';\r\n\r\nimport { Tab } from './tab/tab';\r\n\r\nimport { AppState } from '../../store';\r\nimport { getKeymaps } from '../../store/reducers/user-configuration';\r\n\r\nenum TabName {\r\n Keypress,\r\n Layer,\r\n Mouse,\r\n Macro,\r\n Keymap,\r\n None\r\n}\r\n\r\n@Component({\r\n selector: 'popover',\r\n template: require('./popover.component.html'),\r\n styles: [require('./popover.component.scss')],\r\n animations: [\r\n trigger('popover', [\r\n state('closed', style({\r\n transform: 'translateY(30px)',\r\n visibility: 'hidden',\r\n opacity: 0\r\n })),\r\n state('opened', style({\r\n transform: 'translateY(0)',\r\n visibility: 'visible',\r\n opacity: 1\r\n })),\r\n transition('opened => closed', [\r\n animate('200ms ease-out', keyframes([\r\n style({ transform: 'translateY(0)', visibility: 'visible', opacity: 1, offset: 0 }),\r\n style({ transform: 'translateY(30px)', visibility: 'hidden', opacity: 0, offset: 1 })\r\n ]))\r\n ]),\r\n transition('closed => opened', [\r\n style({\r\n visibility: 'visible'\r\n }),\r\n animate('200ms ease-out', keyframes([\r\n style({ transform: 'translateY(30px)', opacity: 0, offset: 0 }),\r\n style({ transform: 'translateY(0)', opacity: 1, offset: 1 })\r\n ]))\r\n ])\r\n ])\r\n ]\r\n})\r\nexport class PopoverComponent implements OnChanges {\r\n @Input() defaultKeyAction: KeyAction;\r\n @Input() currentKeymap: Keymap;\r\n @Input() currentLayer: number;\r\n @Input() keyPosition: ClientRect;\r\n @Input() wrapPosition: ClientRect;\r\n @Input() visible: boolean;\r\n\r\n @Output() cancel = new EventEmitter();\r\n @Output() remap = new EventEmitter();\r\n\r\n @ViewChild('tab') selectedTab: Tab;\r\n @ViewChild('popover') popoverHost: ElementRef;\r\n\r\n public tabName = TabName;\r\n public keyActionValid: boolean;\r\n private activeTab: TabName;\r\n private keymaps$: Observable;\r\n private leftArrow: boolean = false;\r\n private rightArrow: boolean = false;\r\n private topPosition: number = 0;\r\n private leftPosition: number = 0;\r\n private animationState: string;\r\n\r\n constructor(private store: Store) {\r\n this.animationState = 'closed';\r\n this.keymaps$ = store.let(getKeymaps())\r\n .map((keymaps: Keymap[]) =>\r\n keymaps.filter((keymap: Keymap) => this.currentKeymap.abbreviation !== keymap.abbreviation)\r\n );\r\n }\r\n\r\n ngOnChanges(change: SimpleChanges) {\r\n if (this.keyPosition && this.wrapPosition && (change['keyPosition'] || change['wrapPosition'])) {\r\n this.calculatePosition();\r\n }\r\n\r\n if (change['defaultKeyAction']) {\r\n let tab: TabName;\r\n\r\n if (this.defaultKeyAction instanceof KeystrokeAction) {\r\n tab = TabName.Keypress;\r\n } else if (this.defaultKeyAction instanceof SwitchLayerAction) {\r\n tab = TabName.Layer;\r\n } else if (this.defaultKeyAction instanceof MouseAction) {\r\n tab = TabName.Mouse;\r\n } else if (this.defaultKeyAction instanceof PlayMacroAction) {\r\n tab = TabName.Macro;\r\n } else if (this.defaultKeyAction instanceof SwitchKeymapAction) {\r\n tab = TabName.Keymap;\r\n } else {\r\n tab = TabName.None;\r\n }\r\n\r\n this.selectTab(tab);\r\n }\r\n\r\n if (change['visible']) {\r\n if (change['visible'].currentValue) {\r\n this.animationState = 'opened';\r\n } else {\r\n this.animationState = 'closed';\r\n }\r\n }\r\n }\r\n\r\n onCancelClick(): void {\r\n this.cancel.emit(undefined);\r\n }\r\n\r\n onRemapKey(): void {\r\n if (this.keyActionValid) {\r\n try {\r\n let keyAction = this.selectedTab.toKeyAction();\r\n this.remap.emit(keyAction);\r\n } catch (e) {\r\n // TODO: show error dialog\r\n console.error(e);\r\n }\r\n }\r\n }\r\n\r\n @HostListener('keydown.escape')\r\n onEscape(): void {\r\n this.cancel.emit();\r\n }\r\n\r\n selectTab(tab: TabName): void {\r\n this.activeTab = tab;\r\n }\r\n\r\n onOverlay() {\r\n this.cancel.emit(undefined);\r\n }\r\n\r\n private calculatePosition() {\r\n const offsetLeft: number = this.wrapPosition.left + 265; // 265 is a width of the side menu with a margin\r\n const popover: HTMLElement = this.popoverHost.nativeElement;\r\n let newLeft: number = this.keyPosition.left + (this.keyPosition.width / 2);\r\n\r\n this.leftArrow = newLeft < offsetLeft;\r\n this.rightArrow = (newLeft + popover.offsetWidth) > offsetLeft + this.wrapPosition.width;\r\n\r\n if (this.leftArrow) {\r\n newLeft = this.keyPosition.left;\r\n } else if (this.rightArrow) {\r\n newLeft = this.keyPosition.left - popover.offsetWidth + this.keyPosition.width;\r\n } else {\r\n newLeft -= popover.offsetWidth / 2;\r\n }\r\n\r\n // 7 is a space between a bottom key position and a popover\r\n this.topPosition = this.keyPosition.top + this.keyPosition.height + 7 + window.scrollY;\r\n this.leftPosition = newLeft;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/popover/popover.component.ts","module.exports = \"\\r\\n
\\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\\r\\n
\\r\\n Cancel \\r\\n Remap Key \\r\\n
\\r\\n
\\r\\n
\\r\\n\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/popover/popover.component.html\n// module id = 260\n// module chunks = 0","module.exports = \".popover {\\n display: flex;\\n flex-direction: column;\\n padding: 0;\\n max-width: 568px;\\n width: 100%;\\n user-select: none; }\\n .popover.leftArrow .arrowCustom {\\n transform: none;\\n left: 22px; }\\n .popover.rightArrow .arrowCustom {\\n transform: none;\\n right: 22px;\\n left: auto; }\\n .popover > .container-fluid {\\n overflow: hidden; }\\n\\n.nav-tabs > li {\\n overflow: hidden; }\\n\\n.arrowCustom {\\n position: absolute;\\n top: -16px;\\n left: 50%;\\n transform: translateX(-50%);\\n width: 41px;\\n height: 16px; }\\n .arrowCustom:before {\\n content: '';\\n width: 0;\\n height: 0;\\n border-left: 21px solid transparent;\\n border-right: 21px solid transparent;\\n border-bottom: 17px solid rgba(0, 0, 0, 0.2);\\n display: block;\\n position: absolute;\\n top: -1px; }\\n .arrowCustom:after {\\n content: '';\\n width: 0;\\n height: 0;\\n border-left: 20px solid transparent;\\n border-right: 20px solid transparent;\\n border-bottom: 16px solid #f7f7f7;\\n display: block;\\n position: absolute;\\n top: 0; }\\n\\n.popover-action {\\n padding: 8px 14px;\\n margin: 0;\\n font-size: 14px;\\n background-color: #f7f7f7;\\n border-top: 1px solid #ebebeb;\\n border-radius: 0 0 5px 5px;\\n text-align: right; }\\n\\n.popover-title.menu-tabs {\\n padding: 0.5rem 0.5rem 0;\\n display: block; }\\n .popover-title.menu-tabs .nav-tabs {\\n position: relative;\\n top: 1px;\\n display: flex; }\\n .popover-title.menu-tabs .nav-tabs .menu-tabs--item {\\n display: flex;\\n align-items: center;\\n cursor: pointer; }\\n .popover-title.menu-tabs .nav-tabs .menu-tabs--item i {\\n margin-right: 0.25em; }\\n\\n.popover-content {\\n padding: 10px 24px; }\\n\\n.popover-overlay {\\n position: fixed;\\n width: 100%;\\n height: 0;\\n top: 0;\\n left: 0;\\n z-index: 1050;\\n background: transparent;\\n transition: background 200ms ease-out, height 0ms 200ms linear; }\\n .popover-overlay.display {\\n height: 100%;\\n background: rgba(0, 0, 0, 0.2);\\n transition: background 200ms ease-out; }\\n\\n.select2-item {\\n position: relative;\\n font-size: 1.5rem; }\\n .select2-item.keymap-name--wrapper {\\n padding-left: 50px; }\\n .select2-item .layout-segment-code {\\n height: 2rem;\\n position: absolute;\\n left: 0;\\n top: 50%;\\n margin-top: -1rem; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/popover/popover.component.scss\n// module id = 261\n// module chunks = 0","export * from './capture-keystroke-button.component';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/popover/widgets/capture-keystroke/index.ts","import { Component, EventEmitter, HostListener, Output } from '@angular/core';\r\nimport { CaptureService } from '../../../../services/capture.service';\r\n\r\n@Component({\r\n selector: 'capture-keystroke-button',\r\n template: require('./capture-keystroke-button.component.html'),\r\n styles: [require('./capture-keystroke-button.component.scss')]\r\n})\r\nexport class CaptureKeystrokeButtonComponent {\r\n @Output() capture = new EventEmitter();\r\n\r\n private record: boolean;\r\n private first: boolean; // enable usage of Enter to start capturing\r\n private scanCodePressed: boolean;\r\n\r\n constructor(private captureService: CaptureService) {\r\n this.record = false;\r\n this.captureService.initModifiers();\r\n this.captureService.populateMapping();\r\n this.scanCodePressed = false;\r\n }\r\n\r\n @HostListener('keyup', ['$event'])\r\n onKeyUp(e: KeyboardEvent) {\r\n if (this.scanCodePressed) {\r\n e.preventDefault();\r\n this.scanCodePressed = false;\r\n } else if (this.record && !this.first) {\r\n e.preventDefault();\r\n this.saveScanCode();\r\n }\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n onKeyDown(e: KeyboardEvent) {\r\n const code: number = e.keyCode;\r\n const enter = 13;\r\n\r\n if (this.record) {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.first = false;\r\n\r\n if (this.captureService.hasMap(code)) {\r\n this.saveScanCode(this.captureService.getMap(code));\r\n this.scanCodePressed = true;\r\n } else {\r\n this.captureService.setModifier((e.location === 1), code);\r\n }\r\n } else if (code === enter) {\r\n this.record = true;\r\n this.first = true;\r\n }\r\n }\r\n\r\n @HostListener('focusout')\r\n onFocusOut() {\r\n this.record = false;\r\n this.reset();\r\n }\r\n\r\n start(): void {\r\n this.record = true;\r\n }\r\n\r\n private saveScanCode(code?: number) {\r\n this.record = false;\r\n const left: boolean[] = this.captureService.getModifiers(true);\r\n const right: boolean[] = this.captureService.getModifiers(false);\r\n\r\n this.capture.emit({\r\n code,\r\n left,\r\n right\r\n });\r\n\r\n this.reset();\r\n }\r\n\r\n private reset() {\r\n this.first = false;\r\n this.captureService.initModifiers();\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/popover/widgets/capture-keystroke/capture-keystroke-button.component.ts","import { Injectable } from '@angular/core';\r\n\r\n@Injectable()\r\nexport class CaptureService {\r\n private mapping: Map;\r\n private leftModifiers: Map;\r\n private rightModifiers: Map;\r\n\r\n constructor() {\r\n this.leftModifiers = new Map();\r\n this.rightModifiers = new Map();\r\n this.mapping = new Map();\r\n }\r\n\r\n public getMap(code: number) {\r\n return this.mapping.get(code);\r\n }\r\n\r\n public hasMap(code: number) {\r\n return this.mapping.has(code);\r\n }\r\n\r\n public setModifier(left: boolean, code: number) {\r\n return left ? this.leftModifiers.set(code, true) : this.rightModifiers.set(code, true);\r\n }\r\n\r\n public getModifiers(left: boolean) {\r\n return left ? this.reMap(this.leftModifiers) : this.reMap(this.rightModifiers);\r\n }\r\n\r\n public initModifiers() {\r\n this.leftModifiers.set(16, false); // Shift\r\n this.leftModifiers.set(17, false); // Ctrl\r\n this.leftModifiers.set(18, false); // Alt\r\n this.leftModifiers.set(91, false); // Super\r\n\r\n this.rightModifiers.set(16, false); // Shift\r\n this.rightModifiers.set(17, false); // Ctrl\r\n this.rightModifiers.set(18, false); // Alt\r\n this.rightModifiers.set(91, false); // Super\r\n }\r\n\r\n public populateMapping () {\r\n this.mapping.set(8, 42); // Backspace\r\n this.mapping.set(9, 43); // Tab\r\n this.mapping.set(13, 40); // Enter\r\n this.mapping.set(19, 72); // Pause/break\r\n this.mapping.set(20, 57); // Caps lock\r\n this.mapping.set(27, 41); // Escape\r\n this.mapping.set(32, 44); // (space)\r\n this.mapping.set(33, 75); // Page up\r\n this.mapping.set(34, 78); // Page down\r\n this.mapping.set(35, 77); // End\r\n this.mapping.set(36, 74); // Home\r\n this.mapping.set(37, 80); // Left arrow\r\n this.mapping.set(38, 82); // Up arrow\r\n this.mapping.set(39, 79); // Right arrow\r\n this.mapping.set(40, 81); // Down arrow\r\n this.mapping.set(45, 73); // Insert\r\n this.mapping.set(46, 76); // Delete\r\n this.mapping.set(48, 39); // 0\r\n this.mapping.set(49, 30); // 1\r\n this.mapping.set(50, 31); // 2\r\n this.mapping.set(51, 32); // 3\r\n this.mapping.set(52, 33); // 4\r\n this.mapping.set(53, 34); // 5\r\n this.mapping.set(54, 35); // 6\r\n this.mapping.set(55, 36); // 7\r\n this.mapping.set(56, 37); // 8\r\n this.mapping.set(57, 38); // 9\r\n this.mapping.set(65, 4); // A\r\n this.mapping.set(66, 5); // B\r\n this.mapping.set(67, 6); // C\r\n this.mapping.set(68, 7); // D\r\n this.mapping.set(69, 8); // E\r\n this.mapping.set(70, 9); // F\r\n this.mapping.set(71, 10); // G\r\n this.mapping.set(72, 11); // H\r\n this.mapping.set(73, 12); // I\r\n this.mapping.set(74, 13); // J\r\n this.mapping.set(75, 14); // K\r\n this.mapping.set(76, 15); // L\r\n this.mapping.set(77, 16); // M\r\n this.mapping.set(78, 17); // N\r\n this.mapping.set(79, 18); // O\r\n this.mapping.set(80, 19); // P\r\n this.mapping.set(81, 20); // Q\r\n this.mapping.set(82, 21); // R\r\n this.mapping.set(83, 22); // S\r\n this.mapping.set(84, 23); // T\r\n this.mapping.set(85, 24); // U\r\n this.mapping.set(86, 25); // V\r\n this.mapping.set(87, 26); // W\r\n this.mapping.set(88, 27); // X\r\n this.mapping.set(89, 28); // Y\r\n this.mapping.set(90, 29); // Z\r\n this.mapping.set(93, 118); // Menu\r\n this.mapping.set(96, 98); // Num pad 0\r\n this.mapping.set(97, 89); // Num pad 1\r\n this.mapping.set(98, 90); // Num pad 2\r\n this.mapping.set(99, 91); // Num pad 3\r\n this.mapping.set(100, 92); // Num pad 4\r\n this.mapping.set(101, 93); // Num pad 5\r\n this.mapping.set(102, 94); // Num pad 6\r\n this.mapping.set(103, 95); // Num pad 7\r\n this.mapping.set(104, 96); // Num pad 8\r\n this.mapping.set(105, 97); // Num pad 9\r\n this.mapping.set(106, 85); // Multiply\r\n this.mapping.set(107, 87); // Add\r\n this.mapping.set(109, 86); // Subtract\r\n this.mapping.set(110, 99); // Decimal point\r\n this.mapping.set(111, 84); // Divide\r\n this.mapping.set(112, 58); // F1\r\n this.mapping.set(113, 59); // F2\r\n this.mapping.set(114, 60); // F3\r\n this.mapping.set(115, 61); // F4\r\n this.mapping.set(116, 62); // F5\r\n this.mapping.set(117, 63); // F6\r\n this.mapping.set(118, 64); // F7\r\n this.mapping.set(119, 65); // F8\r\n this.mapping.set(120, 66); // F9\r\n this.mapping.set(121, 67); // F10\r\n this.mapping.set(122, 68); // F11\r\n this.mapping.set(123, 69); // F12\r\n this.mapping.set(144, 83); // Num lock\r\n this.mapping.set(145, 71); // Scroll lock\r\n this.mapping.set(186, 51); // Semi-colon\r\n this.mapping.set(187, 46); // Equal sign\r\n this.mapping.set(188, 54); // Comma\r\n this.mapping.set(189, 45); // Dash\r\n this.mapping.set(190, 55); // Period\r\n this.mapping.set(191, 56); // Forward slash\r\n this.mapping.set(192, 53); // Grave accent\r\n this.mapping.set(219, 47); // Open bracket\r\n this.mapping.set(220, 49); // Back slash\r\n this.mapping.set(221, 48); // Close bracket\r\n this.mapping.set(222, 52); // Single quote\r\n }\r\n\r\n private reMap(value: Map): boolean[] {\r\n return [value.get(16), value.get(17), value.get(91), value.get(18)];\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/services/capture.service.ts","module.exports = \"\\r\\n \\r\\n \\r\\n Capture keystroke\\r\\n \\r\\n \\r\\n Capturing ...\\r\\n \\r\\n \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/popover/widgets/capture-keystroke/capture-keystroke-button.component.html\n// module id = 265\n// module chunks = 0","module.exports = \"button {\\n display: inline-block;\\n margin: 0 0 0 0.25rem; }\\n\\n.fa-circle {\\n color: #c00; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/popover/widgets/capture-keystroke/capture-keystroke-button.component.scss\n// module id = 266\n// module chunks = 0","export * from './icon.component';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/popover/widgets/icon/index.ts","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'icon',\r\n template: require('./icon.component.html'),\r\n styles: [require('./icon.component.scss')]\r\n})\r\nexport class IconComponent implements OnInit {\r\n\r\n @Input() name: string;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() { }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/popover/widgets/icon/icon.component.ts","module.exports = \"\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n
\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/popover/widgets/icon/icon.component.html\n// module id = 269\n// module chunks = 0","module.exports = \":host {\\n display: flex;\\n align-items: center; }\\n\\n.action--edit:hover {\\n color: #337ab7;\\n cursor: pointer; }\\n\\n.action--trash:hover {\\n color: #d9534f;\\n cursor: pointer; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/popover/widgets/icon/icon.component.scss\n// module id = 270\n// module chunks = 0","export * from './settings.component';\r\nexport * from './settings.routes';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/settings/index.ts","import { Component } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'settings',\r\n template: require('./settings.component.html'),\r\n styles: [require('./settings.component.scss')],\r\n host: {\r\n 'class': 'container-fluid'\r\n }\r\n})\r\nexport class SettingsComponent {\r\n constructor() { }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/settings/settings.component.ts","module.exports = \"\\r\\n
\\r\\n \\r\\n Settings \\r\\n \\r\\n\\r\\nTo be done...\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/settings/settings.component.html\n// module id = 273\n// module chunks = 0","module.exports = \":host {\\n width: 100%;\\n height: 100%;\\n display: block; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/settings/settings.component.scss\n// module id = 274\n// module chunks = 0","import { Routes } from '@angular/router';\r\n\r\nimport { SettingsComponent } from './settings.component';\r\n\r\nexport const settingsRoutes: Routes = [\r\n {\r\n path: 'settings',\r\n component: SettingsComponent\r\n }\r\n];\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/settings/settings.routes.ts","export * from './side-menu.component';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/side-menu/index.ts","import { Component, Renderer, animate, state, style, transition, trigger } from '@angular/core';\r\n\r\nimport { Store } from '@ngrx/store';\r\n\r\nimport { Observable } from 'rxjs/Observable';\r\nimport 'rxjs/add/operator/do';\r\nimport 'rxjs/add/operator/map';\r\nimport 'rxjs/add/operator/let';\r\n\r\nimport { Keymap } from '../../config-serializer/config-items/Keymap';\r\nimport { Macro } from '../../config-serializer/config-items/Macro';\r\n\r\nimport { AppState } from '../../store';\r\nimport { MacroActions } from '../../store/actions';\r\nimport { getKeymaps, getMacros } from '../../store/reducers/user-configuration';\r\n\r\n@Component({\r\n animations: [\r\n trigger('toggler', [\r\n state('inactive', style({\r\n height: '0px'\r\n })),\r\n state('active', style({\r\n height: '*'\r\n })),\r\n transition('inactive <=> active', animate('500ms ease-out'))\r\n ])\r\n ],\r\n selector: 'side-menu',\r\n template: require('./side-menu.component.html'),\r\n styles: [require('./side-menu.component.scss')]\r\n})\r\nexport class SideMenuComponent {\r\n private keymaps$: Observable;\r\n private macros$: Observable;\r\n private animation: { [key: string]: 'active' | 'inactive' };\r\n\r\n constructor(private store: Store, private renderer: Renderer) {\r\n this.animation = {\r\n keymap: 'active',\r\n macro: 'active',\r\n addon: 'active'\r\n };\r\n\r\n this.keymaps$ = store.let(getKeymaps())\r\n .map(keymaps => keymaps.slice()) // Creating a new array reference, because the sort is working in place\r\n .do((keymaps: Keymap[]) => {\r\n keymaps.sort((first: Keymap, second: Keymap) => first.name.localeCompare(second.name));\r\n });\r\n\r\n this.macros$ = store.let(getMacros())\r\n .map(macros => macros.slice()) // Creating a new array reference, because the sort is working in place\r\n .do((macros: Macro[]) => {\r\n macros.sort((first: Macro, second: Macro) => first.name.localeCompare(second.name));\r\n });\r\n }\r\n\r\n toggleHide(event: Event, type: string) {\r\n let header: DOMTokenList = (event.target).classList;\r\n let show = false;\r\n\r\n if (header.contains('fa-chevron-down')) {\r\n show = true;\r\n this.animation[type] = 'active';\r\n } else {\r\n this.animation[type] = 'inactive';\r\n }\r\n\r\n this.renderer.setElementClass(event.target, 'fa-chevron-up', show);\r\n this.renderer.setElementClass(event.target, 'fa-chevron-down', !show);\r\n }\r\n\r\n addMacro() {\r\n this.store.dispatch(MacroActions.addMacro());\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/side-menu/side-menu.component.ts","module.exports = \"\\r\\n\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/side-menu/side-menu.component.html\n// module id = 280\n// module chunks = 0","module.exports = \":host {\\n background-color: #f5f5f5;\\n border-right: 1px solid #ccc;\\n position: fixed;\\n overflow-y: auto;\\n width: 250px;\\n height: 100%; }\\n\\na {\\n color: #333; }\\n\\nul {\\n padding: 0;\\n margin: 0; }\\n ul li {\\n list-style: none;\\n padding: 0; }\\n ul ul {\\n overflow: hidden; }\\n\\n.sidebar__level-1 {\\n padding: 0.5rem 1rem;\\n font-size: 2rem;\\n line-height: 3rem;\\n cursor: default; }\\n .sidebar__level-1:hover .fa-chevron-up,\\n .sidebar__level-1:hover .fa-chevron-down {\\n display: inline-block; }\\n .sidebar__level-1--item {\\n margin-top: 0; }\\n .sidebar__level-1--item:nth-child(1) {\\n margin: 0; }\\n .sidebar__level-1 .sidebar__name {\\n width: 100%;\\n display: block; }\\n .sidebar__level-1 .fa-chevron-up,\\n .sidebar__level-1 .fa-chevron-down {\\n margin-right: 1rem;\\n font-size: 1.5rem;\\n position: relative;\\n top: 0.5rem;\\n display: none;\\n cursor: pointer; }\\n\\n.sidebar__level-2--item {\\n padding: 0 20px 0 0;\\n position: relative; }\\n .sidebar__level-2--item.active {\\n background-color: #555;\\n color: #fff; }\\n .sidebar__level-2--item.active .fa-star {\\n color: #fff; }\\n .sidebar__level-2--item.active:hover {\\n background-color: #555; }\\n .sidebar__level-2--item:hover {\\n cursor: pointer; }\\n .sidebar__level-2--item .fa.pull-right {\\n position: relative;\\n top: 2px; }\\n .sidebar__level-2--item .fa-star {\\n color: #666; }\\n .sidebar__level-2--item a {\\n display: block;\\n width: 100%;\\n padding: 0 15px 0 30px; }\\n .sidebar__level-2--item a:hover, .sidebar__level-2--item a:focus {\\n text-decoration: none; }\\n\\n.sidebar__level-1:hover, .sidebar__level-2:hover {\\n background-color: rgba(0, 0, 0, 0.05); }\\n\\n.sidebar__level-1.active, .sidebar__level-2.active {\\n background-color: rgba(0, 0, 0, 0.18); }\\n\\n.sidebar__fav {\\n position: absolute;\\n right: 19px;\\n top: 3px; }\\n\\n.menu--bottom {\\n position: absolute;\\n bottom: 0;\\n left: 0;\\n width: 100%; }\\n .menu--bottom .sidebar__level-1 {\\n display: block;\\n padding: 1rem;\\n cursor: pointer; }\\n .menu--bottom .sidebar__level-1:hover {\\n text-decoration: none; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/side-menu/side-menu.component.scss\n// module id = 281\n// module chunks = 0","export * from './svg-keyboard.component';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/svg/keyboard/index.ts","import { Component, EventEmitter, Input, OnInit, Output, ChangeDetectionStrategy } from '@angular/core';\r\n\r\nimport { Module } from '../../../config-serializer/config-items/Module';\r\nimport { SvgModule } from '../module';\r\n\r\n@Component({\r\n selector: 'svg-keyboard',\r\n template: require('./svg-keyboard.component.html'),\r\n styles: [require('./svg-keyboard.component.scss')],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SvgKeyboardComponent implements OnInit {\r\n @Input() moduleConfig: Module[];\r\n @Input() keybindAnimationEnabled: boolean;\r\n @Input() capturingEnabled: boolean;\r\n @Output() keyClick = new EventEmitter();\r\n @Output() keyHover = new EventEmitter();\r\n @Output() capture = new EventEmitter();\r\n\r\n private modules: SvgModule[];\r\n private svgAttributes: { viewBox: string, transform: string, fill: string };\r\n\r\n constructor() {\r\n this.modules = [];\r\n this.svgAttributes = this.getKeyboardSvgAttributes();\r\n }\r\n\r\n ngOnInit() {\r\n this.modules = this.getSvgModules();\r\n }\r\n\r\n onKeyClick(moduleId: number, keyId: number, keyTarget: HTMLElement): void {\r\n this.keyClick.emit({\r\n moduleId,\r\n keyId,\r\n keyTarget\r\n });\r\n }\r\n\r\n onCapture(moduleId: number, keyId: number, captured: {code: number, left: boolean[], right: boolean[]}): void {\r\n this.capture.emit({\r\n moduleId,\r\n keyId,\r\n captured\r\n });\r\n }\r\n\r\n onKeyHover(keyId: number, event: MouseEvent, over: boolean, moduleId: number): void {\r\n this.keyHover.emit({\r\n moduleId,\r\n event,\r\n over,\r\n keyId\r\n });\r\n }\r\n\r\n private getKeyboardSvgAttributes(): { viewBox: string, transform: string, fill: string } {\r\n let svg: any = this.getBaseLayer();\r\n return {\r\n viewBox: svg.$.viewBox,\r\n transform: svg.g[0].$.transform,\r\n fill: svg.g[0].$.fill\r\n };\r\n }\r\n\r\n private getSvgModules(): SvgModule[] {\r\n let modules = this.getBaseLayer().g[0].g.map((obj: any) => new SvgModule(obj));\r\n return [modules[1], modules[0]]; // TODO: remove if the svg will be correct\r\n }\r\n\r\n private getBaseLayer(): any {\r\n return require('xml!../../../../../images/base-layer.svg').svg;\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/svg/keyboard/svg-keyboard.component.ts","export * from './svg-module.component';\r\nexport * from './svg-module.model';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/svg/module/index.ts","import { Component, EventEmitter, Input, Output, ChangeDetectionStrategy } from '@angular/core';\r\n\r\nimport { KeyAction } from '../../../config-serializer/config-items/key-action';\r\n\r\nimport { SvgKeyboardKey } from '../keys';\r\n\r\n@Component({\r\n selector: 'g[svg-module]',\r\n template: require('./svg-module.component.html'),\r\n styles: [require('./svg-module.component.scss')],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SvgModuleComponent {\r\n @Input() coverages: any[];\r\n @Input() keyboardKeys: SvgKeyboardKey[];\r\n @Input() keyActions: KeyAction[];\r\n @Input() keybindAnimationEnabled: boolean;\r\n @Input() capturingEnabled: boolean;\r\n @Output() keyClick = new EventEmitter();\r\n @Output() keyHover = new EventEmitter();\r\n @Output() capture = new EventEmitter();\r\n\r\n constructor() {\r\n this.keyboardKeys = [];\r\n }\r\n\r\n onKeyClick(index: number, keyTarget: HTMLElement): void {\r\n this.keyClick.emit({\r\n index,\r\n keyTarget\r\n });\r\n }\r\n\r\n onKeyHover(index: number, event: MouseEvent, over: boolean): void {\r\n this.keyHover.emit({\r\n index,\r\n event,\r\n over\r\n });\r\n }\r\n\r\n onCapture(index: number, captured: {code: number, left: boolean[], right: boolean[]}) {\r\n this.capture.emit({\r\n index,\r\n captured\r\n });\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/svg/module/svg-module.component.ts","module.exports = \" \\r\\n \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/svg/module/svg-module.component.html\n// module id = 286\n// module chunks = 0","module.exports = \":host {\\n position: relative; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/svg/module/svg-module.component.scss\n// module id = 287\n// module chunks = 0","import { SvgKeyboardKey } from '../keys';\r\n\r\nexport class SvgModule {\r\n private coverages: any[];\r\n private keyboardKeys: SvgKeyboardKey[];\r\n private attributes: any;\r\n\r\n constructor(obj: { rect: any[], path: any[], $: Object }) {\r\n this.keyboardKeys = obj.rect.map(rect => rect.$).map(rect => {\r\n rect.height = +rect.height;\r\n rect.width = +rect.width;\r\n return rect;\r\n });\r\n this.coverages = obj.path;\r\n this.attributes = obj.$;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/svg/module/svg-module.model.ts","module.exports = {\"svg\":{\"$\":{\"xmlns:dc\":\"http://purl.org/dc/elements/1.1/\",\"xmlns:cc\":\"http://creativecommons.org/ns#\",\"xmlns:rdf\":\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\",\"xmlns:svg\":\"http://www.w3.org/2000/svg\",\"xmlns\":\"http://www.w3.org/2000/svg\",\"xmlns:sodipodi\":\"http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd\",\"xmlns:inkscape\":\"http://www.inkscape.org/namespaces/inkscape\",\"version\":\"1.1\",\"width\":\"1024.3346\",\"height\":\"471.36612\",\"viewBox\":\"0 0 1024.3346 471.36612\",\"style\":\"overflow:visible;\",\"id\":\"SvgjsSvg1006\",\"inkscape:version\":\"0.91 r\",\"sodipodi:docname\":\"base-layer.svg\"},\"metadata\":[{\"$\":{\"id\":\"metadata230\"},\"rdf:RDF\":[{\"cc:Work\":[{\"$\":{\"rdf:about\":\"\"},\"dc:format\":[\"image/svg+xml\"],\"dc:type\":[{\"$\":{\"rdf:resource\":\"http://purl.org/dc/dcmitype/StillImage\"}}]}]}]}],\"defs\":[{\"$\":{\"id\":\"defs228\"}}],\"sodipodi:namedview\":[{\"$\":{\"pagecolor\":\"#ffffff\",\"bordercolor\":\"#666666\",\"borderopacity\":\"1\",\"objecttolerance\":\"10\",\"gridtolerance\":\"10\",\"guidetolerance\":\"10\",\"inkscape:pageopacity\":\"0\",\"inkscape:pageshadow\":\"2\",\"inkscape:window-width\":\"1920\",\"inkscape:window-height\":\"1028\",\"id\":\"namedview226\",\"showgrid\":\"false\",\"inkscape:zoom\":\"1.046533\",\"inkscape:cx\":\"461.77814\",\"inkscape:cy\":\"312.8806\",\"inkscape:window-x\":\"0\",\"inkscape:window-y\":\"25\",\"inkscape:window-maximized\":\"1\",\"inkscape:current-layer\":\"left-parts\"}}],\"text\":[{\"$\":{\"x\":\"495.03632\",\"y\":\"20\",\"style\":\"font-size:34px;fill:#000000;font-family:Sans;text-align:center;text-anchor:middle;display:none;\",\"font-family\":\"Helvetica, Arial, sans-serif\",\"id\":\"layer-text\"},\"tspan\":[{\"_\":\"\\r\\n Base layer\\r\\n \",\"$\":{\"x\":\"495.03632\",\"dy\":\"20.8\",\"id\":\"SvgjsTspan1235\"}}]}],\"g\":[{\"$\":{\"transform\":\"translate(0 -580.99607)\",\"style\":\"stroke:none;\",\"id\":\"root\",\"fill\":\"#333333\"},\"g\":[{\"$\":{\"transform\":\"translate(221.57008 1101.7666)\",\"id\":\"left-parts\"},\"path\":[{\"$\":{\"d\":\"m 272.81516,-456.8166 -110.96971,0 c -0.32924,0 -0.65827,-0.0468 -0.97472,-0.1386 -0.31645,-0.0918 -0.62027,-0.22866 -0.89995,-0.40551 -0.27968,-0.17684 -0.53514,-0.39367 -0.7565,-0.64244 -0.22135,-0.24877 -0.40854,-0.52944 -0.55411,-0.83133 -0.14558,-0.3019 -0.24947,-0.62497 -0.30744,-0.95668 -3.11169,-17.80554 -6.22337,-35.61107 -9.33505,-53.41661 -0.16174,-0.9255 -0.46824,-1.8252 -0.90498,-2.65546 -0.43675,-0.83027 -1.00365,-1.59085 -1.67347,-2.24448 -0.66982,-0.65363 -1.44238,-1.20007 -2.2801,-1.61231 -0.83772,-0.41224 -1.74031,-0.69012 -2.66354,-0.81983 -0.92322,-0.12971 -1.86673,-0.11121 -2.78423,0.0544 l -352.97851,63.7382 c -0.81059,0.14636 -1.60096,0.40708 -2.34074,0.77257 -0.73979,0.3655 -1.42881,0.83571 -2.04035,1.39272 -0.61154,0.55702 -1.14547,1.20071 -1.58116,1.90622 -0.43571,0.70551 -0.77307,1.47267 -0.99931,2.2718 -0.22626,0.79913 -0.34137,1.63006 -0.34137,2.4609 l 0,389.594539 c 0,0.936363 0.14626,1.872858 0.43247,2.764016 0.2862,0.891158 0.7123,1.736655 1.25787,2.494964 0.54557,0.75831 1.21044,1.429141 1.96201,1.979608 0.75157,0.550465 1.58955,0.980376 2.47279,1.269152 0.88324,0.288776 1.8114,0.436358 2.73944,0.436358 l 342.7307,-1.4e-5 c 1.77165,0 3.54314,-1.7716 3.54314,-3.5432 0,-12.931979 0,-22.981768 0,-34.5827 0,-1.7717 -1.77149,-3.545 -3.54314,-3.545 l -322.73675,0.0013 c -2.79101,0 -5.3291,-2.56086 -5.3291,-5.376898 l 0,-329.455425 c 0,-2.81604 2.53809,-5.3769 5.3291,-5.3769 l 463.75521,0 c 0.93041,0 1.77697,-0.85444 1.77697,-1.79353 0,-7.80504 0,-14.68214 0,-21.94355 0,-0.94218 -0.84656,-1.79632 -1.77697,-1.79632\",\"id\":\"left-case\"}}],\"rect\":[{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"-194.89622\",\"y\":\"-427.82285\",\"height\":\"63.779526\",\"width\":\"63.779526\",\"id\":\"key-0\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"-127.57339\",\"y\":\"-427.82285\",\"height\":\"63.779526\",\"width\":\"63.779526\",\"id\":\"key-1\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"-60.250557\",\"y\":\"-427.82285\",\"height\":\"63.779526\",\"width\":\"63.779526\",\"id\":\"key-2\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"7.072278\",\"y\":\"-427.82285\",\"height\":\"63.779526\",\"width\":\"63.779526\",\"id\":\"key-3\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"74.395111\",\"y\":\"-427.82285\",\"height\":\"63.779526\",\"width\":\"63.779526\",\"id\":\"key-4\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"141.71794\",\"y\":\"-427.82285\",\"height\":\"63.779526\",\"width\":\"63.779526\",\"id\":\"key-5\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"209.04079\",\"y\":\"-427.82285\",\"height\":\"63.779526\",\"width\":\"63.779526\",\"id\":\"key-6\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"-194.89622\",\"y\":\"-360.50003\",\"height\":\"63.779526\",\"width\":\"95.669289\",\"id\":\"key-7\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"-95.683624\",\"y\":\"-360.50003\",\"height\":\"63.779526\",\"width\":\"63.779526\",\"id\":\"key-8\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"-28.360792\",\"y\":\"-360.50003\",\"height\":\"63.779526\",\"width\":\"63.779526\",\"id\":\"key-9\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"38.962044\",\"y\":\"-360.50003\",\"height\":\"63.779526\",\"width\":\"63.779526\",\"id\":\"key-10\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"106.28487\",\"y\":\"-360.50003\",\"height\":\"63.779526\",\"width\":\"63.779526\",\"id\":\"key-11\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"173.60771\",\"y\":\"-360.50003\",\"height\":\"63.779526\",\"width\":\"63.779526\",\"id\":\"key-12\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"-194.89622\",\"y\":\"-293.17719\",\"height\":\"63.779526\",\"width\":\"111.61417\",\"id\":\"key-13\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"-79.419846\",\"y\":\"-293.17719\",\"height\":\"63.779526\",\"width\":\"63.779526\",\"id\":\"key-14\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"-11.778116\",\"y\":\"-293.17719\",\"height\":\"63.779526\",\"width\":\"63.779526\",\"id\":\"key-15\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"55.863617\",\"y\":\"-293.17719\",\"height\":\"63.779526\",\"width\":\"63.779526\",\"id\":\"key-16\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"123.50535\",\"y\":\"-293.17719\",\"height\":\"63.779526\",\"width\":\"63.779526\",\"id\":\"key-17\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"191.14708\",\"y\":\"-293.17719\",\"height\":\"63.779526\",\"width\":\"63.779526\",\"id\":\"key-18\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"-194.89622\",\"y\":\"-225.85435\",\"height\":\"63.779526\",\"width\":\"143.50394\",\"id\":\"key-19\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"-47.14032\",\"y\":\"-225.85435\",\"height\":\"63.779526\",\"width\":\"63.779526\",\"id\":\"key-20\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"20.891174\",\"y\":\"-225.85435\",\"height\":\"63.779526\",\"width\":\"63.779526\",\"id\":\"key-21\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"88.922668\",\"y\":\"-225.85435\",\"height\":\"63.779526\",\"width\":\"63.779526\",\"id\":\"key-22\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"156.95416\",\"y\":\"-225.85435\",\"height\":\"63.779526\",\"width\":\"63.779526\",\"id\":\"key-23\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"224.98566\",\"y\":\"-225.85435\",\"height\":\"63.779526\",\"width\":\"63.779526\",\"id\":\"key-24\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"-194.89622\",\"y\":\"-158.53151\",\"height\":\"63.779526\",\"width\":\"79.724411\",\"id\":\"key-25\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"-111.98284\",\"y\":\"-158.53151\",\"height\":\"63.779526\",\"width\":\"79.724411\",\"id\":\"key-26\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"-29.069458\",\"y\":\"-158.53151\",\"height\":\"63.779526\",\"width\":\"79.724411\",\"id\":\"key-27\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"53.843929\",\"y\":\"-158.53151\",\"height\":\"63.779526\",\"width\":\"79.724411\",\"id\":\"key-28\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"137.11165\",\"y\":\"-158.53151\",\"height\":\"63.779526\",\"width\":\"131.10236\",\"id\":\"key-29\"}},{\"$\":{\"rx\":\"3.4856062\",\"ry\":\"3.5433071\",\"x\":\"137.11165\",\"y\":\"-91.071709\",\"height\":\"41.667309\",\"width\":\"131.10236\",\"id\":\"key-30\"}}],\"text\":[{\"$\":{\"y\":\"-435.0346495\",\"x\":\"-163.006457\",\"font-size\":\"19\",\"id\":\"SvgjsText1084\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"~\",\"$\":{\"x\":\"-163.006457\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1085\"}},{\"_\":\"`\",\"$\":{\"x\":\"-163.006457\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1086\"}}]},{\"$\":{\"y\":\"-435.0346495\",\"x\":\"-95.683627\",\"font-size\":\"19\",\"id\":\"SvgjsText1087\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"!\",\"$\":{\"x\":\"-95.683627\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1088\"}},{\"_\":\"1\",\"$\":{\"x\":\"-95.683627\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1089\"}}]},{\"$\":{\"y\":\"-435.0346495\",\"x\":\"-28.360794000000002\",\"font-size\":\"19\",\"id\":\"SvgjsText1090\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"@\",\"$\":{\"x\":\"-28.360794000000002\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1091\"}},{\"_\":\"2\",\"$\":{\"x\":\"-28.360794000000002\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1092\"}}]},{\"$\":{\"y\":\"-435.0346495\",\"x\":\"38.962041\",\"font-size\":\"19\",\"id\":\"SvgjsText1093\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"#\",\"$\":{\"x\":\"38.962041\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1094\"}},{\"_\":\"3\",\"$\":{\"x\":\"38.962041\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1095\"}}]},{\"$\":{\"y\":\"-435.0346495\",\"x\":\"106.284874\",\"font-size\":\"19\",\"id\":\"SvgjsText1096\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"$\",\"$\":{\"x\":\"106.284874\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1097\"}},{\"_\":\"4\",\"$\":{\"x\":\"106.284874\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1098\"}}]},{\"$\":{\"y\":\"-435.0346495\",\"x\":\"173.607703\",\"font-size\":\"19\",\"id\":\"SvgjsText1099\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"%\",\"$\":{\"x\":\"173.607703\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1100\"}},{\"_\":\"5\",\"$\":{\"x\":\"173.607703\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1101\"}}]},{\"$\":{\"y\":\"-435.0346495\",\"x\":\"240.93055299999997\",\"font-size\":\"19\",\"id\":\"SvgjsText1102\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"^\",\"$\":{\"x\":\"240.93055299999997\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1103\"}},{\"_\":\"6\",\"$\":{\"x\":\"240.93055299999997\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1104\"}}]},{\"$\":{\"y\":\"-352.50870449999996\",\"x\":\"-147.0615755\",\"font-size\":\"19\",\"id\":\"SvgjsText1125\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"\\r\\n Tab\\r\\n \",\"$\":{\"x\":\"-147.0615755\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1126\"}}]},{\"$\":{\"y\":\"-352.50870449999996\",\"x\":\"-63.79386099999999\",\"font-size\":\"19\",\"id\":\"SvgjsText1127\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"\\r\\n Q\\r\\n \",\"$\":{\"x\":\"-63.79386099999999\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1128\"}}]},{\"$\":{\"y\":\"-352.50870449999996\",\"x\":\"3.5289709999999985\",\"font-size\":\"19\",\"id\":\"SvgjsText1129\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"\\r\\n W\\r\\n \",\"$\":{\"x\":\"3.5289709999999985\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1130\"}}]},{\"$\":{\"y\":\"-352.50870449999996\",\"x\":\"70.851807\",\"font-size\":\"19\",\"id\":\"SvgjsText1131\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"\\r\\n E\\r\\n \",\"$\":{\"x\":\"70.851807\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1132\"}}]},{\"$\":{\"y\":\"-352.50870449999996\",\"x\":\"138.174633\",\"font-size\":\"19\",\"id\":\"SvgjsText1133\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"\\r\\n R\\r\\n \",\"$\":{\"x\":\"138.174633\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1134\"}}]},{\"$\":{\"y\":\"-352.50870449999996\",\"x\":\"205.49747299999999\",\"font-size\":\"19\",\"id\":\"SvgjsText1135\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"\\r\\n T\\r\\n \",\"$\":{\"x\":\"205.49747299999999\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1136\"}}]},{\"$\":{\"y\":\"-285.1858645\",\"x\":\"-139.089135\",\"font-size\":\"19\",\"id\":\"SvgjsText1156\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"\\r\\n Mouse\\r\\n \",\"$\":{\"x\":\"-139.089135\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1157\"}}]},{\"$\":{\"y\":\"-285.1858645\",\"x\":\"-47.530083000000005\",\"font-size\":\"19\",\"id\":\"SvgjsText1158\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"\\r\\n A\\r\\n \",\"$\":{\"x\":\"-47.530083000000005\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1159\"}}]},{\"$\":{\"y\":\"-285.1858645\",\"x\":\"20.111646999999998\",\"font-size\":\"19\",\"id\":\"SvgjsText1160\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"\\r\\n S\\r\\n \",\"$\":{\"x\":\"20.111646999999998\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1161\"}}]},{\"$\":{\"y\":\"-285.1858645\",\"x\":\"87.75337999999999\",\"font-size\":\"19\",\"id\":\"SvgjsText1162\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"\\r\\n D\\r\\n \",\"$\":{\"x\":\"87.75337999999999\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1163\"}}]},{\"$\":{\"y\":\"-285.1858645\",\"x\":\"155.395113\",\"font-size\":\"19\",\"id\":\"SvgjsText1164\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"\\r\\n F\\r\\n \",\"$\":{\"x\":\"155.395113\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1165\"}}]},{\"$\":{\"y\":\"-285.1858645\",\"x\":\"223.03684299999998\",\"font-size\":\"19\",\"id\":\"SvgjsText1166\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"\\r\\n G\\r\\n \",\"$\":{\"x\":\"223.03684299999998\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1167\"}}]},{\"$\":{\"y\":\"-217.86302450000002\",\"x\":\"-123.14425\",\"font-size\":\"19\",\"id\":\"SvgjsText1184\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"\\r\\n Shift\\r\\n \",\"$\":{\"x\":\"-123.14425\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1185\"}}]},{\"$\":{\"y\":\"-217.86302450000002\",\"x\":\"-15.250557000000004\",\"font-size\":\"19\",\"id\":\"SvgjsText1186\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"\\r\\n Z\\r\\n \",\"$\":{\"x\":\"-15.250557000000004\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1187\"}}]},{\"$\":{\"y\":\"-217.86302450000002\",\"x\":\"52.780936999999994\",\"font-size\":\"19\",\"id\":\"SvgjsText1188\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"\\r\\n X\\r\\n \",\"$\":{\"x\":\"52.780936999999994\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1189\"}}]},{\"$\":{\"y\":\"-217.86302450000002\",\"x\":\"120.812431\",\"font-size\":\"19\",\"id\":\"SvgjsText1190\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"\\r\\n C\\r\\n \",\"$\":{\"x\":\"120.812431\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1191\"}}]},{\"$\":{\"y\":\"-217.86302450000002\",\"x\":\"188.843923\",\"font-size\":\"19\",\"id\":\"SvgjsText1192\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"\\r\\n V\\r\\n \",\"$\":{\"x\":\"188.843923\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1193\"}}]},{\"$\":{\"y\":\"-217.86302450000002\",\"x\":\"256.875423\",\"font-size\":\"19\",\"id\":\"SvgjsText1194\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"\\r\\n B\\r\\n \",\"$\":{\"x\":\"256.875423\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1195\"}}]},{\"$\":{\"y\":\"-150.5401845\",\"x\":\"-155.0340145\",\"font-size\":\"19\",\"id\":\"SvgjsText1211\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"\\r\\n Ctrl\\r\\n \",\"$\":{\"x\":\"-155.0340145\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1212\"}}]},{\"$\":{\"y\":\"-150.5401845\",\"x\":\"-72.1206345\",\"font-size\":\"19\",\"id\":\"SvgjsText1213\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"\\r\\n Super\\r\\n \",\"$\":{\"x\":\"-72.1206345\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1214\"}}]},{\"$\":{\"y\":\"-150.5401845\",\"x\":\"10.7927475\",\"font-size\":\"19\",\"id\":\"SvgjsText1215\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"\\r\\n Alt\\r\\n \",\"$\":{\"x\":\"10.7927475\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1216\"}}]},{\"$\":{\"y\":\"-150.5401845\",\"x\":\"93.7061345\",\"font-size\":\"19\",\"id\":\"SvgjsText1217\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"\\r\\n Fn\\r\\n \",\"$\":{\"x\":\"93.7061345\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1218\"}}]},{\"$\":{\"y\":\"-150.5401845\",\"x\":\"202.66282999999999\",\"font-size\":\"19\",\"id\":\"SvgjsText1219\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"\\r\\n Mod\\r\\n \",\"$\":{\"x\":\"202.66282999999999\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1220\"}}]},{\"$\":{\"y\":\"-94.136492\",\"x\":\"202.66282999999999\",\"font-size\":\"19\",\"id\":\"SvgjsText1231\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"\\r\\n Space\\r\\n \",\"$\":{\"x\":\"202.66282999999999\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1232\"}}]}]},{\"$\":{\"transform\":\"translate(44.404903 1101.7674)\",\"id\":\"right-parts\"},\"path\":[{\"$\":{\"d\":\"m 951.05862,-431.2832 c 2.791,0 5.32908,2.56086 5.32908,5.3769 l 0,329.455425 c 0,2.816038 -2.53808,5.376898 -5.32908,5.376898 l -370.67909,-0.0013 c -1.77166,0 -3.54347,1.7733 -3.54347,3.545 0,12.895215 0,23.315027 0,34.58266 0,1.7716 1.77181,3.5432 3.54347,3.5432 l 390.67297,1.44e-4 c 0.92804,0 1.85621,-0.147582 2.73944,-0.436358 0.88324,-0.288776 1.72122,-0.718687 2.47277,-1.269152 0.75157,-0.550467 1.41644,-1.221298 1.96201,-1.979608 0.54557,-0.758309 0.97166,-1.603806 1.25787,-2.494964 0.2862,-0.891158 0.43247,-1.827653 0.43247,-2.764016 l 0,-389.434639 c 0,-0.83901 -0.11739,-1.67813 -0.34806,-2.4845 -0.23066,-0.80638 -0.57456,-1.57983 -1.01841,-2.28986 -0.44385,-0.71002 -0.98756,-1.35643 -1.60971,-1.91378 -0.62215,-0.55735 -1.3226,-1.0255 -2.07365,-1.38629 -0.75105,-0.36078 -1.55253,-0.61412 -2.37301,-0.75058 -130.52433,-21.7076 -270.93602,-45.05959 -384.94144,-64.01992 -0.91165,-0.15162 -1.8469,-0.15828 -2.76061,-0.0195 -0.91372,0.13871 -1.8056,0.42276 -2.63265,0.83829 -0.82706,0.41551 -1.58903,0.96236 -2.24949,1.61394 -0.66047,0.65158 -1.21924,1.40768 -1.64996,2.2319 -0.43072,0.82422 -0.73327,1.71631 -0.8936,2.63375 -3.12168,17.84567 -6.23258,35.69325 -9.35634,53.53854 -0.058,0.33171 -0.16187,0.65478 -0.30744,0.95668 -0.14556,0.30189 -0.33275,0.58256 -0.5541,0.83133 -0.22136,0.24877 -0.47683,0.4656 -0.7565,0.64244 -0.27967,0.17685 -0.5835,0.31372 -0.89995,0.40551 -0.31645,0.0919 -0.64548,0.1386 -0.97471,0.1386 l -109.19782,-2e-5 c -0.93043,-10e-6 -1.77697,0.85413 -1.77697,1.79631 10e-6,7.4108 -1e-5,15.64271 0,21.94355 0,0.93909 0.84654,1.79353 1.77697,1.79353 l 495.73901,0\",\"id\":\"right-case\"}}],\"rect\":[{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"453.52896\",\"y\":\"-427.82285\",\"height\":\"63.779526\",\"width\":\"63.779526\",\"id\":\"key-0\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"520.85181\",\"y\":\"-427.82285\",\"height\":\"63.779526\",\"width\":\"63.779526\",\"id\":\"key-1\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"588.17462\",\"y\":\"-427.82285\",\"height\":\"63.779526\",\"width\":\"63.779526\",\"id\":\"key-2\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"655.4975\",\"y\":\"-427.82285\",\"height\":\"63.779526\",\"width\":\"63.779526\",\"id\":\"key-3\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"722.82031\",\"y\":\"-427.82285\",\"height\":\"63.779526\",\"width\":\"63.779526\",\"id\":\"key-4\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"790.14313\",\"y\":\"-427.82285\",\"height\":\"63.779526\",\"width\":\"63.779526\",\"id\":\"key-5\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"857.466\",\"y\":\"-427.82285\",\"height\":\"63.779526\",\"width\":\"95.669289\",\"id\":\"key-6\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"418.09589\",\"y\":\"-360.50003\",\"height\":\"63.779526\",\"width\":\"63.779526\",\"id\":\"key-7\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"485.41873\",\"y\":\"-360.50003\",\"height\":\"63.779526\",\"width\":\"63.779526\",\"id\":\"key-8\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"552.74158\",\"y\":\"-360.50003\",\"height\":\"63.779526\",\"width\":\"63.779526\",\"id\":\"key-9\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"620.06439\",\"y\":\"-360.50003\",\"height\":\"63.779526\",\"width\":\"63.779526\",\"id\":\"key-10\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"687.38727\",\"y\":\"-360.50003\",\"height\":\"63.779526\",\"width\":\"63.779526\",\"id\":\"key-11\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"754.71008\",\"y\":\"-360.50003\",\"height\":\"63.779526\",\"width\":\"63.779526\",\"id\":\"key-12\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"822.0329\",\"y\":\"-360.50003\",\"height\":\"63.779526\",\"width\":\"63.779526\",\"id\":\"key-13\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"889.35571\",\"y\":\"-360.50003\",\"height\":\"63.779526\",\"width\":\"63.779526\",\"id\":\"key-14\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"435.67072\",\"y\":\"-293.17719\",\"height\":\"63.779526\",\"width\":\"63.779526\",\"id\":\"key-15\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"503.31244\",\"y\":\"-293.17719\",\"height\":\"63.779526\",\"width\":\"63.779526\",\"id\":\"key-16\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"570.95416\",\"y\":\"-293.17719\",\"height\":\"63.779526\",\"width\":\"63.779526\",\"id\":\"key-17\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"638.59589\",\"y\":\"-293.17719\",\"height\":\"63.779526\",\"width\":\"63.779526\",\"id\":\"key-18\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"706.23761\",\"y\":\"-293.17719\",\"height\":\"63.779526\",\"width\":\"63.779526\",\"id\":\"key-19\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"773.87939\",\"y\":\"-293.17719\",\"height\":\"63.779526\",\"width\":\"63.779526\",\"id\":\"key-20\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"841.52112\",\"y\":\"-293.17719\",\"height\":\"63.779526\",\"width\":\"111.61417\",\"id\":\"key-21\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"469.47385\",\"y\":\"-225.85435\",\"height\":\"63.779526\",\"width\":\"63.779526\",\"id\":\"key-22\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"537.50537\",\"y\":\"-225.85435\",\"height\":\"63.779526\",\"width\":\"63.779526\",\"id\":\"key-23\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"605.53687\",\"y\":\"-225.85435\",\"height\":\"63.779526\",\"width\":\"63.779526\",\"id\":\"key-24\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"673.56836\",\"y\":\"-225.85435\",\"height\":\"63.779526\",\"width\":\"63.779526\",\"id\":\"key-25\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"741.59985\",\"y\":\"-225.85435\",\"height\":\"63.779526\",\"width\":\"63.779526\",\"id\":\"key-26\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"809.63135\",\"y\":\"-225.85435\",\"height\":\"63.779526\",\"width\":\"143.50394\",\"id\":\"key-27\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"448.92267\",\"y\":\"-158.53151\",\"height\":\"63.779526\",\"width\":\"124.37008\",\"id\":\"key-28\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"576.83606\",\"y\":\"-158.53151\",\"height\":\"63.779526\",\"width\":\"79.724411\",\"id\":\"key-29\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"659.74945\",\"y\":\"-158.53151\",\"height\":\"63.779526\",\"width\":\"79.724411\",\"id\":\"key-30\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"742.66284\",\"y\":\"-158.53151\",\"height\":\"63.779526\",\"width\":\"79.724411\",\"id\":\"key-31\"}},{\"$\":{\"rx\":\"3.5433071\",\"ry\":\"3.5433071\",\"x\":\"825.57623\",\"y\":\"-158.53151\",\"height\":\"63.779526\",\"width\":\"127.55905\",\"id\":\"key-32\"}},{\"$\":{\"rx\":\"3.493542\",\"ry\":\"3.5433071\",\"x\":\"448.92267\",\"y\":\"-91.071663\",\"height\":\"41.667309\",\"width\":\"124.37009\",\"id\":\"key-33\"}}],\"text\":[{\"$\":{\"y\":\"-435.0346495\",\"x\":\"485.418723\",\"font-size\":\"19\",\"id\":\"SvgjsText1105\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"&\",\"$\":{\"x\":\"485.418723\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1106\"}},{\"_\":\"7\",\"$\":{\"x\":\"485.418723\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1107\"}}]},{\"$\":{\"y\":\"-435.0346495\",\"x\":\"552.741573\",\"font-size\":\"19\",\"id\":\"SvgjsText1108\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"*\",\"$\":{\"x\":\"552.741573\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1109\"}},{\"_\":\"8\",\"$\":{\"x\":\"552.741573\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1110\"}}]},{\"$\":{\"y\":\"-435.0346495\",\"x\":\"620.064383\",\"font-size\":\"19\",\"id\":\"SvgjsText1111\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"(\",\"$\":{\"x\":\"620.064383\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1112\"}},{\"_\":\"9\",\"$\":{\"x\":\"620.064383\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1113\"}}]},{\"$\":{\"y\":\"-435.0346495\",\"x\":\"687.387263\",\"font-size\":\"19\",\"id\":\"SvgjsText1114\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\")\",\"$\":{\"x\":\"687.387263\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1115\"}},{\"_\":\"0\",\"$\":{\"x\":\"687.387263\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1116\"}}]},{\"$\":{\"y\":\"-435.0346495\",\"x\":\"754.710073\",\"font-size\":\"19\",\"id\":\"SvgjsText1117\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"_\",\"$\":{\"x\":\"754.710073\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1118\"}},{\"_\":\"-\",\"$\":{\"x\":\"754.710073\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1119\"}}]},{\"$\":{\"y\":\"-435.0346495\",\"x\":\"822.0328930000001\",\"font-size\":\"19\",\"id\":\"SvgjsText1120\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"+\",\"$\":{\"x\":\"822.0328930000001\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1121\"}},{\"_\":\"=\",\"$\":{\"x\":\"822.0328930000001\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1122\"}}]},{\"$\":{\"y\":\"-419.8315245\",\"x\":\"905.3006445\",\"font-size\":\"19\",\"id\":\"SvgjsText1123\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"\\r\\n ←\\r\\n \",\"$\":{\"x\":\"905.3006445\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1124\"}}]},{\"$\":{\"y\":\"-352.50870449999996\",\"x\":\"449.985653\",\"font-size\":\"19\",\"id\":\"SvgjsText1137\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"\\r\\n Y\\r\\n \",\"$\":{\"x\":\"449.985653\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1138\"}}]},{\"$\":{\"y\":\"-352.50870449999996\",\"x\":\"517.308493\",\"font-size\":\"19\",\"id\":\"SvgjsText1139\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"\\r\\n U\\r\\n \",\"$\":{\"x\":\"517.308493\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1140\"}}]},{\"$\":{\"y\":\"-352.50870449999996\",\"x\":\"584.631343\",\"font-size\":\"19\",\"id\":\"SvgjsText1141\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"\\r\\n I\\r\\n \",\"$\":{\"x\":\"584.631343\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1142\"}}]},{\"$\":{\"y\":\"-352.50870449999996\",\"x\":\"651.954153\",\"font-size\":\"19\",\"id\":\"SvgjsText1143\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"\\r\\n O\\r\\n \",\"$\":{\"x\":\"651.954153\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1144\"}}]},{\"$\":{\"y\":\"-352.50870449999996\",\"x\":\"719.277033\",\"font-size\":\"19\",\"id\":\"SvgjsText1145\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"\\r\\n P\\r\\n \",\"$\":{\"x\":\"719.277033\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1146\"}}]},{\"$\":{\"y\":\"-367.71182949999996\",\"x\":\"786.599843\",\"font-size\":\"19\",\"id\":\"SvgjsText1147\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"{\",\"$\":{\"x\":\"786.599843\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1148\"}},{\"_\":\"[\",\"$\":{\"x\":\"786.599843\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1149\"}}]},{\"$\":{\"y\":\"-367.71182949999996\",\"x\":\"853.9226630000001\",\"font-size\":\"19\",\"id\":\"SvgjsText1150\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"}\",\"$\":{\"x\":\"853.9226630000001\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1151\"}},{\"_\":\"]\",\"$\":{\"x\":\"853.9226630000001\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1152\"}}]},{\"$\":{\"y\":\"-367.71182949999996\",\"x\":\"921.2454730000001\",\"font-size\":\"19\",\"id\":\"SvgjsText1153\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"|\",\"$\":{\"x\":\"921.2454730000001\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1154\"}},{\"_\":\"\\\\\",\"$\":{\"x\":\"921.2454730000001\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1155\"}}]},{\"$\":{\"y\":\"-285.1858645\",\"x\":\"467.56048300000003\",\"font-size\":\"19\",\"id\":\"SvgjsText1168\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"\\r\\n H\\r\\n \",\"$\":{\"x\":\"467.56048300000003\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1169\"}}]},{\"$\":{\"y\":\"-285.1858645\",\"x\":\"535.2022029999999\",\"font-size\":\"19\",\"id\":\"SvgjsText1170\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"\\r\\n J\\r\\n \",\"$\":{\"x\":\"535.2022029999999\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1171\"}}]},{\"$\":{\"y\":\"-285.1858645\",\"x\":\"602.843923\",\"font-size\":\"19\",\"id\":\"SvgjsText1172\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"\\r\\n K\\r\\n \",\"$\":{\"x\":\"602.843923\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1173\"}}]},{\"$\":{\"y\":\"-285.1858645\",\"x\":\"670.4856530000001\",\"font-size\":\"19\",\"id\":\"SvgjsText1174\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"\\r\\n L\\r\\n \",\"$\":{\"x\":\"670.4856530000001\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1175\"}}]},{\"$\":{\"y\":\"-300.3889895\",\"x\":\"738.127373\",\"font-size\":\"19\",\"id\":\"SvgjsText1176\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\":\",\"$\":{\"x\":\"738.127373\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1177\"}},{\"_\":\";\",\"$\":{\"x\":\"738.127373\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1178\"}}]},{\"$\":{\"y\":\"-300.3889895\",\"x\":\"805.769153\",\"font-size\":\"19\",\"id\":\"SvgjsText1179\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"\\\"\",\"$\":{\"x\":\"805.769153\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1180\"}},{\"_\":\"'\",\"$\":{\"x\":\"805.769153\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1181\"}}]},{\"$\":{\"y\":\"-285.1858645\",\"x\":\"897.328205\",\"font-size\":\"19\",\"id\":\"SvgjsText1182\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"\\r\\n Enter\\r\\n \",\"$\":{\"x\":\"897.328205\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1183\"}}]},{\"$\":{\"y\":\"-217.86302450000002\",\"x\":\"501.36361300000004\",\"font-size\":\"19\",\"id\":\"SvgjsText1196\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"\\r\\n N\\r\\n \",\"$\":{\"x\":\"501.36361300000004\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1197\"}}]},{\"$\":{\"y\":\"-217.86302450000002\",\"x\":\"569.395133\",\"font-size\":\"19\",\"id\":\"SvgjsText1198\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"\\r\\n M\\r\\n \",\"$\":{\"x\":\"569.395133\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1199\"}}]},{\"$\":{\"y\":\"-233.06614950000002\",\"x\":\"637.426633\",\"font-size\":\"19\",\"id\":\"SvgjsText1200\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"<\",\"$\":{\"x\":\"637.426633\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1201\"}},{\"_\":\",\",\"$\":{\"x\":\"637.426633\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1202\"}}]},{\"$\":{\"y\":\"-233.06614950000002\",\"x\":\"705.458123\",\"font-size\":\"19\",\"id\":\"SvgjsText1203\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\">\",\"$\":{\"x\":\"705.458123\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1204\"}},{\"_\":\".\",\"$\":{\"x\":\"705.458123\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1205\"}}]},{\"$\":{\"y\":\"-233.06614950000002\",\"x\":\"773.489613\",\"font-size\":\"19\",\"id\":\"SvgjsText1206\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"?\",\"$\":{\"x\":\"773.489613\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1207\"}},{\"_\":\"/\",\"$\":{\"x\":\"773.489613\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1208\"}}]},{\"$\":{\"y\":\"-217.86302450000002\",\"x\":\"881.38332\",\"font-size\":\"19\",\"id\":\"SvgjsText1209\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"\\r\\n Shift\\r\\n \",\"$\":{\"x\":\"881.38332\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1210\"}}]},{\"$\":{\"y\":\"-150.5401845\",\"x\":\"511.10771\",\"font-size\":\"19\",\"id\":\"SvgjsText1221\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"\\r\\n Space\\r\\n \",\"$\":{\"x\":\"511.10771\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1222\"}}]},{\"$\":{\"y\":\"-150.5401845\",\"x\":\"616.6982654999999\",\"font-size\":\"19\",\"id\":\"SvgjsText1223\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"\\r\\n Fn\\r\\n \",\"$\":{\"x\":\"616.6982654999999\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1224\"}}]},{\"$\":{\"y\":\"-150.5401845\",\"x\":\"699.6116555\",\"font-size\":\"19\",\"id\":\"SvgjsText1225\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"\\r\\n Alt\\r\\n \",\"$\":{\"x\":\"699.6116555\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1226\"}}]},{\"$\":{\"y\":\"-150.5401845\",\"x\":\"782.5250454999999\",\"font-size\":\"19\",\"id\":\"SvgjsText1227\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"\\r\\n Super\\r\\n \",\"$\":{\"x\":\"782.5250454999999\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1228\"}}]},{\"$\":{\"y\":\"-150.5401845\",\"x\":\"889.355755\",\"font-size\":\"19\",\"id\":\"SvgjsText1229\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"\\r\\n Ctrl\\r\\n \",\"$\":{\"x\":\"889.355755\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1230\"}}]},{\"$\":{\"y\":\"-94.136446\",\"x\":\"511.107715\",\"font-size\":\"19\",\"id\":\"SvgjsText1233\",\"text-anchor\":\"middle\",\"font-family\":\"Helvetica\",\"fill\":\"#ffffff\"},\"tspan\":[{\"_\":\"\\r\\n Mod\\r\\n \",\"$\":{\"x\":\"511.107715\",\"dy\":\"30.400000000000002\",\"id\":\"SvgjsTspan1234\"}}]}]}]}]}}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/xml-loader!./images/base-layer.svg\n// module id = 289\n// module chunks = 0","module.exports = \"\\r\\n \\r\\n \\r\\n \\r\\n \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/svg/keyboard/svg-keyboard.component.html\n// module id = 290\n// module chunks = 0","module.exports = \":host {\\n display: flex;\\n width: 100%;\\n height: 100%;\\n position: relative; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/svg/keyboard/svg-keyboard.component.scss\n// module id = 291\n// module chunks = 0","export { SvgIconTextKeyComponent } from './svg-icon-text-key';\r\nexport { SvgKeyboardKeyComponent, SvgKeyboardKey } from './svg-keyboard-key';\r\nexport { SvgKeystrokeKeyComponent } from './svg-keystroke-key';\r\nexport { SvgMouseKeyComponent } from './svg-mouse-key';\r\nexport { SvgMouseClickKeyComponent } from './svg-mouse-click-key';\r\nexport { SvgMouseMoveKeyComponent } from './svg-mouse-move-key';\r\nexport { SvgMouseSpeedKeyComponent } from './svg-mouse-speed-key';\r\nexport { SvgMouseScrollKeyComponent } from './svg-mouse-scroll-key';\r\nexport { SvgOneLineTextKeyComponent } from './svg-one-line-text-key';\r\nexport { SvgSingleIconKeyComponent } from './svg-single-icon-key';\r\nexport { SvgSwitchKeymapKeyComponent } from './svg-switch-keymap-key';\r\nexport { SvgTextIconKeyComponent } from './svg-text-icon-key';\r\nexport { SvgTwoLineTextKeyComponent } from './svg-two-line-text-key';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/svg/keys/index.ts","export * from './svg-icon-text-key.component';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/svg/keys/svg-icon-text-key/index.ts","import { Component, Input, OnInit, ChangeDetectionStrategy } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'g[svg-icon-text-key]',\r\n template: require('./svg-icon-text-key.component.html'),\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SvgIconTextKeyComponent implements OnInit {\r\n @Input() width: number;\r\n @Input() height: number;\r\n @Input() icon: string;\r\n @Input() text: string;\r\n\r\n private useWidth: number;\r\n private useHeight: number;\r\n private useX: number;\r\n private useY: number;\r\n private textY: number;\r\n private spanX: number;\r\n\r\n constructor() {\r\n }\r\n\r\n ngOnInit() {\r\n this.useWidth = this.width / 3;\r\n this.useHeight = this.height / 3;\r\n this.useX = (this.width > 2 * this.height) ? 0 : this.width / 3;\r\n this.useY = (this.width > 2 * this.height) ? this.height / 3 : this.height / 10;\r\n this.textY = (this.width > 2 * this.height) ? this.height / 2 : this.height * 0.6;\r\n this.spanX = (this.width > 2 * this.height) ? this.width * 0.6 : this.width / 2;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/svg/keys/svg-icon-text-key/svg-icon-text-key.component.ts","module.exports = \"\\r\\n \\r\\n\\r\\n {{ text }} \\r\\n \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/svg/keys/svg-icon-text-key/svg-icon-text-key.component.html\n// module id = 295\n// module chunks = 0","export * from './svg-keyboard-key.component';\r\nexport * from './svg-keyboard-key.model';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/svg/keys/svg-keyboard-key/index.ts","import {\r\n Component, ElementRef, EventEmitter, HostListener, Input, OnChanges, OnDestroy, OnInit, Output, Renderer,\r\n SimpleChange, animate, group, state, style, transition, trigger\r\n} from '@angular/core';\r\n\r\nimport { Store } from '@ngrx/store';\r\n\r\nimport { Subscription } from 'rxjs/Subscription';\r\n\r\nimport {\r\n KeyAction,\r\n KeystrokeAction,\r\n LayerName,\r\n MouseAction,\r\n PlayMacroAction,\r\n SwitchKeymapAction,\r\n SwitchLayerAction\r\n} from '../../../../config-serializer/config-items/key-action';\r\nimport { KeyModifiers } from '../../../../config-serializer/config-items/KeyModifiers';\r\nimport { Macro } from '../../../../config-serializer/config-items/Macro';\r\n\r\nimport { CaptureService } from '../../../../services/capture.service';\r\nimport { MapperService } from '../../../../services/mapper.service';\r\n\r\nimport { AppState } from '../../../../store/index';\r\nimport { getMacros } from '../../../../store/reducers/user-configuration';\r\n\r\nenum LabelTypes {\r\n KeystrokeKey,\r\n MouseKey,\r\n OneLineText,\r\n TwoLineText,\r\n TextIcon,\r\n SingleIcon,\r\n SwitchKeymap,\r\n IconText\r\n}\r\n\r\n@Component({\r\n animations: [\r\n trigger('change', [\r\n transition('inactive => active', [\r\n style({ fill: '#fff' }),\r\n group([\r\n animate('1s ease-out', style({\r\n fill: '#333'\r\n }))\r\n ])\r\n ])\r\n ]),\r\n trigger('recording', [\r\n state('inactive', style({\r\n fill: 'rgba(204, 0, 0, 1)'\r\n })),\r\n state('active', style({\r\n fill: 'rgba(204, 0, 0, 0.6)'\r\n })),\r\n transition('inactive <=> active', animate('600ms ease-in-out'))\r\n ])\r\n ],\r\n selector: 'g[svg-keyboard-key]',\r\n template: require('./svg-keyboard-key.component.html'),\r\n styles: [require('./svg-keyboard-key.component.scss')]\r\n})\r\nexport class SvgKeyboardKeyComponent implements OnInit, OnChanges, OnDestroy {\r\n @Input() id: string;\r\n @Input() rx: string;\r\n @Input() ry: string;\r\n @Input() height: number;\r\n @Input() width: number;\r\n @Input() keyAction: KeyAction;\r\n @Input() keybindAnimationEnabled: boolean;\r\n @Input() capturingEnabled: boolean;\r\n @Output() keyClick = new EventEmitter();\r\n @Output() capture = new EventEmitter();\r\n\r\n enumLabelTypes = LabelTypes;\r\n\r\n public changeAnimation: string = 'inactive';\r\n public recordAnimation: string;\r\n\r\n private labelSource: any;\r\n private labelType: LabelTypes;\r\n private macros: Macro[];\r\n private subscription: Subscription;\r\n private recording: boolean;\r\n private scanCodePressed: boolean;\r\n\r\n @HostListener('click')\r\n onClick() {\r\n this.reset();\r\n this.keyClick.emit(this.element.nativeElement);\r\n }\r\n\r\n @HostListener('mousedown', ['$event'])\r\n onMouseDown(e: MouseEvent) {\r\n if ((e.which === 2 || e.button === 1) && this.capturingEnabled) {\r\n e.preventDefault();\r\n this.renderer.invokeElementMethod(this.element.nativeElement, 'focus');\r\n\r\n if (this.recording) {\r\n this.reset();\r\n } else {\r\n this.recording = true;\r\n this.recordAnimation = 'active';\r\n }\r\n }\r\n }\r\n\r\n @HostListener('keyup', ['$event'])\r\n onKeyUpe(e: KeyboardEvent) {\r\n if (this.scanCodePressed) {\r\n e.preventDefault();\r\n this.scanCodePressed = false;\r\n } else if (this.recording) {\r\n e.preventDefault();\r\n this.saveScanCode();\r\n }\r\n }\r\n\r\n @HostListener('keydown', ['$event'])\r\n onKeyDown(e: KeyboardEvent) {\r\n const code: number = e.keyCode;\r\n\r\n if (this.recording) {\r\n e.preventDefault();\r\n\r\n if (this.captureService.hasMap(code)) {\r\n this.saveScanCode(this.captureService.getMap(code));\r\n this.scanCodePressed = true;\r\n } else {\r\n this.captureService.setModifier((e.location === 1), code);\r\n }\r\n }\r\n }\r\n\r\n @HostListener('focusout')\r\n onFocusOut() {\r\n this.reset();\r\n }\r\n\r\n constructor(\r\n private mapper: MapperService,\r\n private store: Store,\r\n private element: ElementRef,\r\n private captureService: CaptureService,\r\n private renderer: Renderer\r\n ) {\r\n this.subscription = store.let(getMacros())\r\n .subscribe((macros: Macro[]) => this.macros = macros);\r\n\r\n this.reset();\r\n this.captureService.populateMapping();\r\n this.scanCodePressed = false;\r\n }\r\n\r\n ngOnInit() {\r\n this.setLabels();\r\n }\r\n\r\n ngOnChanges(changes: { [propertyName: string]: SimpleChange }) {\r\n if (changes['keyAction']) {\r\n this.setLabels();\r\n if (this.keybindAnimationEnabled) {\r\n this.changeAnimation = 'active';\r\n }\r\n }\r\n }\r\n\r\n ngOnDestroy() {\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n onChangeAnimationDone() {\r\n this.changeAnimation = 'inactive';\r\n }\r\n\r\n onRecordingAnimationDone() {\r\n if (this.recording && this.recordAnimation === 'inactive') {\r\n this.recordAnimation = 'active';\r\n } else {\r\n this.recordAnimation = 'inactive';\r\n }\r\n }\r\n\r\n private reset() {\r\n this.recording = false;\r\n this.changeAnimation = 'inactive';\r\n this.captureService.initModifiers();\r\n }\r\n\r\n private saveScanCode(code = 0) {\r\n this.recording = false;\r\n this.changeAnimation = 'inactive';\r\n\r\n const left: boolean[] = this.captureService.getModifiers(true);\r\n const right: boolean[] = this.captureService.getModifiers(false);\r\n\r\n this.capture.emit({\r\n code,\r\n left,\r\n right\r\n });\r\n\r\n this.captureService.initModifiers();\r\n }\r\n\r\n private setLabels(): void {\r\n if (!this.keyAction) {\r\n this.labelSource = undefined;\r\n this.labelType = LabelTypes.OneLineText;\r\n return;\r\n }\r\n\r\n this.labelType = LabelTypes.OneLineText;\r\n\r\n if (this.keyAction instanceof KeystrokeAction) {\r\n let keyAction: KeystrokeAction = this.keyAction as KeystrokeAction;\r\n let newLabelSource: string[];\r\n\r\n if (!keyAction.hasActiveModifier() && keyAction.hasScancode()) {\r\n let scancode: number = keyAction.scancode;\r\n newLabelSource = this.mapper.scanCodeToText(scancode);\r\n if (this.mapper.hasScancodeIcon(scancode)) {\r\n this.labelSource = this.mapper.scanCodeToSvgImagePath(scancode);\r\n this.labelType = LabelTypes.SingleIcon;\r\n } else if (newLabelSource !== undefined) {\r\n if (newLabelSource.length === 1) {\r\n this.labelSource = newLabelSource[0];\r\n this.labelType = LabelTypes.OneLineText;\r\n } else {\r\n this.labelSource = newLabelSource;\r\n this.labelType = LabelTypes.TwoLineText;\r\n }\r\n }\r\n } else if (keyAction.hasOnlyOneActiveModifier() && !keyAction.hasScancode()) {\r\n newLabelSource = [];\r\n switch (keyAction.modifierMask) {\r\n case KeyModifiers.leftCtrl:\r\n case KeyModifiers.rightCtrl:\r\n newLabelSource.push('Ctrl');\r\n break;\r\n case KeyModifiers.leftShift:\r\n case KeyModifiers.rightShift:\r\n newLabelSource.push('Shift');\r\n break;\r\n case KeyModifiers.leftAlt:\r\n case KeyModifiers.rightAlt:\r\n newLabelSource.push('Alt');\r\n break;\r\n case KeyModifiers.leftGui:\r\n case KeyModifiers.rightGui:\r\n newLabelSource.push('Super');\r\n break;\r\n default:\r\n newLabelSource.push('Undefined');\r\n break;\r\n }\r\n this.labelSource = newLabelSource;\r\n } else {\r\n this.labelType = LabelTypes.KeystrokeKey;\r\n this.labelSource = this.keyAction;\r\n }\r\n } else if (this.keyAction instanceof SwitchLayerAction) {\r\n let keyAction: SwitchLayerAction = this.keyAction as SwitchLayerAction;\r\n let newLabelSource: string;\r\n switch (keyAction.layer) {\r\n case LayerName.mod:\r\n newLabelSource = 'Mod';\r\n break;\r\n case LayerName.fn:\r\n newLabelSource = 'Fn';\r\n break;\r\n case LayerName.mouse:\r\n newLabelSource = 'Mouse';\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n if (keyAction.isLayerToggleable) {\r\n this.labelType = LabelTypes.TextIcon;\r\n this.labelSource = {\r\n text: newLabelSource,\r\n icon: this.mapper.getIcon('toggle')\r\n };\r\n } else {\r\n this.labelType = LabelTypes.OneLineText;\r\n this.labelSource = newLabelSource;\r\n }\r\n } else if (this.keyAction instanceof SwitchKeymapAction) {\r\n let keyAction: SwitchKeymapAction = this.keyAction as SwitchKeymapAction;\r\n this.labelType = LabelTypes.SwitchKeymap;\r\n this.labelSource = keyAction.keymapAbbreviation;\r\n } else if (this.keyAction instanceof PlayMacroAction) {\r\n let keyAction: PlayMacroAction = this.keyAction as PlayMacroAction;\r\n const macro: Macro = this.macros.find((_macro: Macro) => _macro.id === keyAction.macroId);\r\n this.labelType = LabelTypes.IconText;\r\n this.labelSource = {\r\n icon: this.mapper.getIcon('macro'),\r\n text: macro.name\r\n };\r\n } else if (this.keyAction instanceof MouseAction) {\r\n this.labelType = LabelTypes.MouseKey;\r\n this.labelSource = this.keyAction;\r\n } else {\r\n this.labelSource = undefined;\r\n }\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/svg/keys/svg-keyboard-key/svg-keyboard-key.component.ts","module.exports = \" \\r\\n\\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/svg/keys/svg-keyboard-key/svg-keyboard-key.component.html\n// module id = 298\n// module chunks = 0","module.exports = \":host {\\n cursor: pointer;\\n outline: none; }\\n :host /deep/ text {\\n dominant-baseline: central; }\\n :host:hover {\\n fill: #494949; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/svg/keys/svg-keyboard-key/svg-keyboard-key.component.scss\n// module id = 299\n// module chunks = 0","export * from './svg-keystroke-key.component';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/svg/keys/svg-keystroke-key/index.ts","import { Component, Input, OnChanges, OnInit, ChangeDetectionStrategy } from '@angular/core';\r\n\r\nimport { KeystrokeAction } from '../../../../config-serializer/config-items/key-action';\r\nimport { KeyModifiers } from '../../../../config-serializer/config-items/KeyModifiers';\r\nimport { MapperService } from '../../../../services/mapper.service';\r\n\r\nclass SvgAttributes {\r\n width: number;\r\n height: number;\r\n x: number;\r\n y: number;\r\n disabled: boolean;\r\n\r\n constructor() {\r\n this.width = 0;\r\n this.height = 0;\r\n this.x = 0;\r\n this.y = 0;\r\n this.disabled = true;\r\n }\r\n}\r\n\r\nenum Modifiers {\r\n Shift, Control, Alt, Command\r\n}\r\n\r\n@Component({\r\n selector: 'g[svg-keystroke-key]',\r\n template: require('./svg-keystroke-key.component.html'),\r\n styles: [require('./svg-keystroke-key.component.scss')],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SvgKeystrokeKeyComponent implements OnInit, OnChanges {\r\n @Input() height: number;\r\n @Input() width: number;\r\n @Input() keystrokeAction: KeystrokeAction;\r\n\r\n private viewBox: string;\r\n private textContainer: SvgAttributes;\r\n private modifierContainer: SvgAttributes;\r\n private shift: SvgAttributes;\r\n private control: SvgAttributes;\r\n private option: SvgAttributes;\r\n private command: SvgAttributes;\r\n\r\n private labelSource: any;\r\n private labelType: 'empty' | 'one-line' | 'two-line' | 'icon';\r\n\r\n private modifierIconNames: {\r\n shift?: string,\r\n option?: string,\r\n command?: string\r\n };\r\n\r\n constructor(private mapper: MapperService) {\r\n this.modifierIconNames = {};\r\n this.textContainer = new SvgAttributes();\r\n this.modifierContainer = new SvgAttributes();\r\n this.shift = new SvgAttributes();\r\n this.control = new SvgAttributes();\r\n this.option = new SvgAttributes();\r\n this.command = new SvgAttributes();\r\n }\r\n\r\n ngOnInit() {\r\n this.viewBox = [0, 0, this.width, this.height].join(' ');\r\n this.modifierIconNames.shift = this.mapper.getIcon('shift');\r\n this.modifierIconNames.option = this.mapper.getIcon('option');\r\n this.modifierIconNames.command = this.mapper.getIcon('command');\r\n\r\n let bottomSideMode: boolean = this.width < this.height * 1.8;\r\n\r\n const heightWidthRatio = this.height / this.width;\r\n\r\n if (bottomSideMode) {\r\n const maxIconWidth = this.width / 4;\r\n const maxIconHeight = this.height;\r\n const iconScalingFactor = 0.8;\r\n let iconWidth = iconScalingFactor * heightWidthRatio * maxIconWidth;\r\n let iconHeight = iconScalingFactor * maxIconHeight;\r\n this.modifierContainer.width = this.width;\r\n this.modifierContainer.height = this.height / 5;\r\n this.modifierContainer.y = this.height - this.modifierContainer.height;\r\n this.shift.width = iconWidth;\r\n this.shift.height = iconHeight;\r\n this.shift.x = (maxIconWidth - iconWidth) / 2;\r\n this.shift.y = (maxIconHeight - iconHeight) / 2;\r\n this.control.width = iconWidth;\r\n this.control.height = iconHeight;\r\n this.control.x = this.shift.x + maxIconWidth;\r\n this.control.y = this.shift.y;\r\n this.option.width = iconWidth;\r\n this.option.height = iconHeight;\r\n this.option.x = this.control.x + maxIconWidth;\r\n this.option.y = this.shift.y;\r\n this.command.width = iconWidth;\r\n this.command.height = iconHeight;\r\n this.command.x = this.option.x + maxIconWidth;\r\n this.command.y = this.shift.y;\r\n this.textContainer.y = -this.modifierContainer.height / 2;\r\n } else {\r\n this.modifierContainer.width = this.width / 4;\r\n this.modifierContainer.height = this.height;\r\n this.modifierContainer.x = this.width - this.modifierContainer.width;\r\n\r\n const length = Math.min(this.modifierContainer.width / 2, this.modifierContainer.height / 2);\r\n\r\n const iconScalingFactor = 0.8;\r\n const iconWidth = iconScalingFactor * this.width * (length / this.modifierContainer.width);\r\n const iconHeight = iconScalingFactor * this.height * (length / this.modifierContainer.height);\r\n this.shift.width = iconWidth;\r\n this.shift.height = iconHeight;\r\n this.shift.x = this.width / 4 - iconWidth / 2;\r\n this.shift.y = this.height / 4 - iconHeight / 2;\r\n this.control.width = iconWidth;\r\n this.control.height = iconHeight;\r\n this.control.x = this.shift.x + this.width / 2;\r\n this.control.y = this.shift.y;\r\n this.option.width = iconWidth;\r\n this.option.height = iconHeight;\r\n this.option.x = this.shift.x;\r\n this.option.y = this.shift.y + this.height / 2;\r\n this.command.width = iconWidth;\r\n this.command.height = iconHeight;\r\n this.command.x = this.option.x + this.width / 2;\r\n this.command.y = this.option.y;\r\n this.textContainer.x = -this.modifierContainer.width / 2;\r\n }\r\n\r\n this.textContainer.width = this.width;\r\n this.textContainer.height = this.height;\r\n }\r\n\r\n ngOnChanges() {\r\n let newLabelSource: string[];\r\n if (this.keystrokeAction.hasScancode()) {\r\n let scancode: number = this.keystrokeAction.scancode;\r\n newLabelSource = this.mapper.scanCodeToText(scancode);\r\n if (newLabelSource) {\r\n if (newLabelSource.length === 1) {\r\n this.labelSource = newLabelSource[0];\r\n this.labelType = 'one-line';\r\n } else {\r\n this.labelSource = newLabelSource;\r\n this.labelType = 'two-line';\r\n }\r\n } else {\r\n this.labelSource = this.mapper.scanCodeToSvgImagePath(scancode);\r\n this.labelType = 'icon';\r\n }\r\n } else {\r\n this.labelType = 'empty';\r\n }\r\n\r\n this.shift.disabled = !this.keystrokeAction.isActive(KeyModifiers.leftShift | KeyModifiers.rightShift);\r\n this.control.disabled = !this.keystrokeAction.isActive(KeyModifiers.leftCtrl | KeyModifiers.rightCtrl);\r\n this.option.disabled = !this.keystrokeAction.isActive(KeyModifiers.leftAlt | KeyModifiers.rightAlt);\r\n this.command.disabled = !this.keystrokeAction.isActive(KeyModifiers.leftGui | KeyModifiers.rightGui);\r\n\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/svg/keys/svg-keystroke-key/svg-keystroke-key.component.ts","module.exports = \"\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n C \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/svg/keys/svg-keystroke-key/svg-keystroke-key.component.html\n// module id = 302\n// module chunks = 0","module.exports = \".disabled {\\n fill: gray; }\\n\\ntext {\\n font-size: 100px; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/svg/keys/svg-keystroke-key/svg-keystroke-key.component.scss\n// module id = 303\n// module chunks = 0","export * from './svg-mouse-key';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/svg/keys/svg-mouse-key/index.ts","import { Component, Input, OnChanges, ChangeDetectionStrategy } from '@angular/core';\r\n\r\nimport { MouseAction, MouseActionParam } from '../../../../config-serializer/config-items/key-action';\r\n\r\n@Component({\r\n selector: 'g[svg-mouse-key]',\r\n template: require('./svg-mouse-key.html'),\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SvgMouseKeyComponent implements OnChanges {\r\n @Input() mouseAction: MouseAction;\r\n private type: 'click' | 'scroll' | 'move' | 'speed';\r\n private param: any;\r\n\r\n constructor() { }\r\n\r\n ngOnChanges() {\r\n switch (this.mouseAction.mouseAction) {\r\n case MouseActionParam.leftClick:\r\n this.type = 'click';\r\n this.param = 'Left';\r\n break;\r\n case MouseActionParam.rightClick:\r\n this.type = 'click';\r\n this.param = 'Right';\r\n break;\r\n case MouseActionParam.middleClick:\r\n this.type = 'click';\r\n this.param = 'Middle';\r\n break;\r\n case MouseActionParam.scrollDown:\r\n this.type = 'scroll';\r\n this.param = 'down';\r\n break;\r\n case MouseActionParam.scrollLeft:\r\n this.type = 'scroll';\r\n this.param = 'left';\r\n break;\r\n case MouseActionParam.scrollRight:\r\n this.type = 'scroll';\r\n this.param = 'right';\r\n break;\r\n case MouseActionParam.scrollUp:\r\n this.type = 'scroll';\r\n this.param = 'up';\r\n break;\r\n case MouseActionParam.moveDown:\r\n this.type = 'move';\r\n this.param = 'down';\r\n break;\r\n case MouseActionParam.moveLeft:\r\n this.type = 'move';\r\n this.param = 'left';\r\n break;\r\n case MouseActionParam.moveRight:\r\n this.type = 'move';\r\n this.param = 'right';\r\n break;\r\n case MouseActionParam.moveUp:\r\n this.type = 'move';\r\n this.param = 'up';\r\n break;\r\n case MouseActionParam.accelerate:\r\n this.type = 'speed';\r\n this.param = true;\r\n break;\r\n case MouseActionParam.decelerate:\r\n this.type = 'speed';\r\n this.param = false;\r\n break;\r\n default:\r\n break;\r\n }\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/svg/keys/svg-mouse-key/svg-mouse-key.ts","module.exports = \"\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/svg/keys/svg-mouse-key/svg-mouse-key.html\n// module id = 306\n// module chunks = 0","export * from './svg-mouse-click-key';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/svg/keys/svg-mouse-click-key/index.ts","import { Component, Input, OnInit, ChangeDetectionStrategy } from '@angular/core';\r\n\r\nimport { MapperService } from '../../../../services/mapper.service';\r\n\r\n@Component({\r\n selector: 'g[svg-mouse-click-key]',\r\n template: require('./svg-mouse-click-key.html'),\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SvgMouseClickKeyComponent implements OnInit {\r\n @Input() button: string;\r\n\r\n private icon: string;\r\n\r\n constructor(private mapper: MapperService) {\r\n this.icon = this.mapper.getIcon('mouse');\r\n }\r\n\r\n ngOnInit() { }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/svg/keys/svg-mouse-click-key/svg-mouse-click-key.ts","module.exports = \"\\r\\n \\r\\n\\r\\n Click \\r\\n \\r\\n\\r\\n {{ button }} \\r\\n \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/svg/keys/svg-mouse-click-key/svg-mouse-click-key.html\n// module id = 309\n// module chunks = 0","export * from './svg-mouse-move-key';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/svg/keys/svg-mouse-move-key/index.ts","import { Component, Input, OnChanges, ChangeDetectionStrategy } from '@angular/core';\r\n\r\nimport { MapperService } from '../../../../services/mapper.service';\r\n\r\n@Component({\r\n selector: 'g[svg-mouse-move-key]',\r\n template: require('./svg-mouse-move-key.html'),\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SvgMouseMoveKeyComponent implements OnChanges {\r\n @Input() direction: string;\r\n\r\n private mouseIcon: string;\r\n private directionIcon: string;\r\n\r\n constructor(private mapper: MapperService) { }\r\n\r\n ngOnChanges() {\r\n this.mouseIcon = this.mapper.getIcon('mouse');\r\n this.directionIcon = this.mapper.getIcon(`${this.direction}-arrow`);\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/svg/keys/svg-mouse-move-key/svg-mouse-move-key.ts","module.exports = \" \\r\\n\\r\\n Move \\r\\n \\r\\n \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/svg/keys/svg-mouse-move-key/svg-mouse-move-key.html\n// module id = 312\n// module chunks = 0","export * from './svg-mouse-speed-key';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/svg/keys/svg-mouse-speed-key/index.ts","import { Component, Input, OnChanges, ChangeDetectionStrategy } from '@angular/core';\r\n\r\nimport { MapperService } from '../../../../services/mapper.service';\r\n\r\n@Component({\r\n selector: 'g[svg-mouse-speed-key]',\r\n template: require('./svg-mouse-speed-key.html'),\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SvgMouseSpeedKeyComponent implements OnChanges {\r\n @Input() plus: boolean;\r\n\r\n private icon: string;\r\n private sign: string;\r\n\r\n constructor(private mapper: MapperService) {\r\n this.icon = this.mapper.getIcon('mouse');\r\n }\r\n\r\n ngOnChanges() {\r\n this.sign = this.plus ? '+' : '-';\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/svg/keys/svg-mouse-speed-key/svg-mouse-speed-key.ts","module.exports = \"\\r\\n \\r\\n\\r\\n Speed \\r\\n \\r\\n\\r\\n {{ sign }} \\r\\n \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/svg/keys/svg-mouse-speed-key/svg-mouse-speed-key.html\n// module id = 315\n// module chunks = 0","export * from './svg-mouse-scroll-key';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/svg/keys/svg-mouse-scroll-key/index.ts","import { Component, Input, OnChanges, ChangeDetectionStrategy } from '@angular/core';\r\n\r\nimport { MapperService } from '../../../../services/mapper.service';\r\n\r\n@Component({\r\n selector: 'g[svg-mouse-scroll-key]',\r\n template: require('./svg-mouse-scroll-key.html'),\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SvgMouseScrollKeyComponent implements OnChanges {\r\n @Input() direction: string;\r\n\r\n private mouseIcon: string;\r\n private directionIcon: string;\r\n\r\n constructor(private mapper: MapperService) { }\r\n\r\n ngOnChanges() {\r\n this.mouseIcon = this.mapper.getIcon('mouse');\r\n this.directionIcon = this.mapper.getIcon(`scroll-${this.direction}`);\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/svg/keys/svg-mouse-scroll-key/svg-mouse-scroll-key.ts","module.exports = \" \\r\\n\\r\\n Scroll \\r\\n \\r\\n \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/svg/keys/svg-mouse-scroll-key/svg-mouse-scroll-key.html\n// module id = 318\n// module chunks = 0","export * from './svg-one-line-text-key.component';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/svg/keys/svg-one-line-text-key/index.ts","import { Component, Input, OnInit, ChangeDetectionStrategy } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'g[svg-one-line-text-key]',\r\n template: require('./svg-one-line-text-key.component.html'),\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SvgOneLineTextKeyComponent implements OnInit {\r\n @Input() height: number;\r\n @Input() width: number;\r\n @Input() text: string;\r\n\r\n private textY: number;\r\n private spanX: number;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n this.textY = this.height / 2;\r\n this.spanX = this.width / 2;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/svg/keys/svg-one-line-text-key/svg-one-line-text-key.component.ts","module.exports = \" \\r\\n {{ text }} \\r\\n \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/svg/keys/svg-one-line-text-key/svg-one-line-text-key.component.html\n// module id = 321\n// module chunks = 0","export * from './svg-single-icon-key.component';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/svg/keys/svg-single-icon-key/index.ts","import { Component, Input, OnInit, ChangeDetectionStrategy } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'g[svg-single-icon-key]',\r\n template: require('./svg-single-icon-key.component.html'),\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SvgSingleIconKeyComponent implements OnInit {\r\n @Input() width: number;\r\n @Input() height: number;\r\n @Input() icon: string;\r\n\r\n private svgHeight: number;\r\n private svgWidth: number;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n this.svgWidth = this.width / 3;\r\n this.svgHeight = this.height / 3;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/svg/keys/svg-single-icon-key/svg-single-icon-key.component.ts","module.exports = \"\\r\\n \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/svg/keys/svg-single-icon-key/svg-single-icon-key.component.html\n// module id = 324\n// module chunks = 0","export * from './svg-switch-keymap-key.component';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/svg/keys/svg-switch-keymap-key/index.ts","import { Component, Input, OnInit, ChangeDetectionStrategy } from '@angular/core';\r\n\r\nimport { MapperService } from '../../../../services/mapper.service';\r\n\r\n@Component({\r\n selector: 'g[svg-switch-keymap-key]',\r\n template: require('./svg-switch-keymap-key.component.html'),\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SvgSwitchKeymapKeyComponent implements OnInit {\r\n @Input() width: number;\r\n @Input() height: number;\r\n @Input() abbreviation: string;\r\n\r\n private icon: string;\r\n private useWidth: number;\r\n private useHeight: number;\r\n private useX: number;\r\n private useY: number;\r\n private textY: number;\r\n private spanX: number;\r\n\r\n constructor(private mapperService: MapperService) { }\r\n\r\n ngOnInit() {\r\n this.icon = this.mapperService.getIcon('switch-keymap');\r\n\r\n this.useWidth = this.width / 4;\r\n this.useHeight = this.height / 4;\r\n this.useX = this.width * 3 / 8;\r\n this.useY = this.height / 5;\r\n this.textY = this.height * 2 / 3;\r\n this.spanX = this.width / 2;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/svg/keys/svg-switch-keymap-key/svg-switch-keymap-key.component.ts","module.exports = \"\\r\\n \\r\\n\\r\\n {{ abbreviation }} \\r\\n \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/svg/keys/svg-switch-keymap-key/svg-switch-keymap-key.component.html\n// module id = 327\n// module chunks = 0","export * from './svg-text-icon-key.component';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/svg/keys/svg-text-icon-key/index.ts","import { Component, Input, OnInit, ChangeDetectionStrategy } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'g[svg-text-icon-key]',\r\n template: require('./svg-text-icon-key.component.html'),\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SvgTextIconKeyComponent implements OnInit {\r\n @Input() width: number;\r\n @Input() height: number;\r\n @Input() text: string;\r\n @Input() icon: string;\r\n\r\n private useWidth: number;\r\n private useHeight: number;\r\n private useX: number;\r\n private useY: number;\r\n private textY: number;\r\n private textAnchor: string;\r\n private spanX: number;\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n this.useWidth = this.width / 3;\r\n this.useHeight = this.height / 3;\r\n this.useX = (this.width > 2 * this.height) ? this.width * 0.6 : this.width / 3;\r\n this.useY = (this.width > 2 * this.height) ? this.height / 3 : this.height / 2;\r\n this.textY = (this.width > 2 * this.height) ? this.height / 2 : this.height / 3;\r\n this.textAnchor = (this.width > 2 * this.height) ? 'end' : 'middle';\r\n this.spanX = (this.width > 2 * this.height) ? 0.6 * this.width : this.width / 2;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/svg/keys/svg-text-icon-key/svg-text-icon-key.component.ts","module.exports = \" \\r\\n {{ text }} \\r\\n \\r\\n\\r\\n \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/svg/keys/svg-text-icon-key/svg-text-icon-key.component.html\n// module id = 330\n// module chunks = 0","export * from './svg-two-line-text-key.component';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/svg/keys/svg-two-line-text-key/index.ts","import { Component, Input, OnInit, ChangeDetectionStrategy } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'g[svg-two-line-text-key]',\r\n template: require('./svg-two-line-text-key.component.html'),\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SvgTwoLineTextKeyComponent implements OnInit {\r\n @Input() height: number;\r\n @Input() width: number;\r\n @Input() texts: string[];\r\n\r\n private textY: number;\r\n private spanX: number;\r\n private spanYs: number[];\r\n\r\n constructor() {\r\n this.spanYs = [];\r\n }\r\n\r\n ngOnInit() {\r\n this.textY = this.height / 2;\r\n this.spanX = this.width / 2;\r\n for (let i = 0; i < this.texts.length; ++i) {\r\n this.spanYs.push((0.75 - i * 0.5) * this.height);\r\n }\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/svg/keys/svg-two-line-text-key/svg-two-line-text-key.component.ts","module.exports = \"\\r\\n {{ text }} \\r\\n \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/svg/keys/svg-two-line-text-key/svg-two-line-text-key.component.html\n// module id = 333\n// module chunks = 0","export * from './svg-keyboard-wrap.component';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/svg/wrap/index.ts","import {\r\n ChangeDetectionStrategy,\r\n Component,\r\n ElementRef,\r\n Renderer,\r\n HostBinding,\r\n HostListener,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n ViewChild,\r\n SimpleChanges\r\n} from '@angular/core';\r\n\r\nimport { Observable } from 'rxjs/Observable';\r\nimport 'rxjs/add/observable/of';\r\nimport 'rxjs/add/operator/map';\r\nimport { Store } from '@ngrx/store';\r\n\r\nimport { MapperService } from '../../../services/mapper.service';\r\n\r\nimport {\r\n KeyAction,\r\n KeystrokeAction,\r\n LayerName,\r\n MouseAction,\r\n MouseActionParam,\r\n PlayMacroAction,\r\n SwitchKeymapAction,\r\n SwitchLayerAction\r\n} from '../../../config-serializer/config-items/key-action';\r\nimport { Keymap } from '../../../config-serializer/config-items/Keymap';\r\nimport { Layer } from '../../../config-serializer/config-items/Layer';\r\nimport { LongPressAction } from '../../../config-serializer/config-items/LongPressAction';\r\nimport { camelCaseToSentence, capitalizeFirstLetter } from '../../../util';\r\n\r\nimport { AppState } from '../../../store';\r\nimport { KeymapActions } from '../../../store/actions';\r\nimport { PopoverComponent } from '../../popover';\r\n\r\ninterface NameValuePair {\r\n name: string;\r\n value: string;\r\n}\r\n\r\n@Component({\r\n selector: 'svg-keyboard-wrap',\r\n template: require('./svg-keyboard-wrap.component.html'),\r\n styles: [require('./svg-keyboard-wrap.component.scss')],\r\n changeDetection: ChangeDetectionStrategy.OnPush\r\n})\r\nexport class SvgKeyboardWrapComponent implements OnInit, OnChanges {\r\n @Input() keymap: Keymap;\r\n @Input() popoverEnabled: boolean = true;\r\n @Input() tooltipEnabled: boolean = false;\r\n\r\n @ViewChild(PopoverComponent, { read: ElementRef }) popover: ElementRef;\r\n\r\n private popoverShown: boolean;\r\n private keyEditConfig: { moduleId: number, keyId: number };\r\n private popoverInitKeyAction: KeyAction;\r\n private keybindAnimationEnabled: boolean;\r\n private currentLayer: number = 0;\r\n private tooltipData: {\r\n posTop: number,\r\n posLeft: number,\r\n content: Observable,\r\n show: boolean\r\n };\r\n private layers: Layer[];\r\n private keyPosition: ClientRect;\r\n private wrapPosition: ClientRect;\r\n private wrapHost: HTMLElement;\r\n private keyElement: HTMLElement;\r\n\r\n @HostBinding('class.space') get space() {\r\n return this.popoverEnabled;\r\n }\r\n\r\n @HostListener('window:resize')\r\n onResize() {\r\n if (this.wrapHost) {\r\n this.wrapPosition = this.wrapHost.getBoundingClientRect();\r\n }\r\n\r\n if (this.keyElement) {\r\n this.keyPosition = this.keyElement.getBoundingClientRect();\r\n }\r\n }\r\n\r\n constructor(\r\n private store: Store,\r\n private mapper: MapperService,\r\n private element: ElementRef,\r\n private renderer: Renderer\r\n ) {\r\n this.keyEditConfig = {\r\n moduleId: undefined,\r\n keyId: undefined\r\n };\r\n\r\n this.tooltipData = {\r\n posTop: 0,\r\n posLeft: 0,\r\n content: Observable.of([]),\r\n show: false\r\n };\r\n }\r\n\r\n ngOnInit() {\r\n this.wrapHost = this.element.nativeElement;\r\n this.wrapPosition = this.wrapHost.getBoundingClientRect();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n const keymapChanges = changes['keymap'];\r\n if (keymapChanges) {\r\n this.popoverShown = false;\r\n this.layers = this.keymap.layers;\r\n if (keymapChanges.previousValue.abbreviation !== keymapChanges.currentValue.abbreviation) {\r\n this.currentLayer = 0;\r\n this.keybindAnimationEnabled = keymapChanges.isFirstChange();\r\n } else {\r\n this.keybindAnimationEnabled = true;\r\n }\r\n }\r\n\r\n }\r\n\r\n onKeyClick(moduleId: number, keyId: number, keyTarget: HTMLElement): void {\r\n if (!this.popoverShown && this.popoverEnabled) {\r\n this.keyEditConfig = {\r\n moduleId,\r\n keyId\r\n };\r\n\r\n const keyActionToEdit: KeyAction = this.layers[this.currentLayer].modules[moduleId].keyActions[keyId];\r\n this.keyElement = keyTarget;\r\n this.showPopover(keyActionToEdit);\r\n }\r\n }\r\n\r\n onKeyHover(moduleId: number, event: MouseEvent, over: boolean, keyId: number): void {\r\n if (this.tooltipEnabled) {\r\n const keyActionToEdit: KeyAction = this.layers[this.currentLayer].modules[moduleId].keyActions[keyId];\r\n\r\n if (over) {\r\n this.showTooltip(keyActionToEdit, event);\r\n } else {\r\n this.hideTooltip();\r\n }\r\n }\r\n }\r\n\r\n onCapture(moduleId: number, keyId: number, captured: { code: number, left: boolean[], right: boolean[] }): void {\r\n let keystrokeAction: KeystrokeAction = new KeystrokeAction();\r\n const modifiers = captured.left.concat(captured.right).map(x => x ? 1 : 0);\r\n\r\n keystrokeAction.scancode = captured.code;\r\n keystrokeAction.modifierMask = 0;\r\n\r\n for (let i = 0; i < modifiers.length; ++i) {\r\n keystrokeAction.modifierMask |= modifiers[i] << this.mapper.modifierMapper(i);\r\n }\r\n\r\n this.store.dispatch(\r\n KeymapActions.saveKey(\r\n this.keymap,\r\n this.currentLayer,\r\n moduleId,\r\n keyId,\r\n keystrokeAction)\r\n );\r\n }\r\n\r\n onRemap(keyAction: KeyAction): void {\r\n this.store.dispatch(\r\n KeymapActions.saveKey(\r\n this.keymap,\r\n this.currentLayer,\r\n this.keyEditConfig.moduleId,\r\n this.keyEditConfig.keyId,\r\n keyAction)\r\n );\r\n this.hidePopover();\r\n }\r\n\r\n showPopover(keyAction: KeyAction): void {\r\n this.keyPosition = this.keyElement.getBoundingClientRect();\r\n this.popoverInitKeyAction = keyAction;\r\n this.popoverShown = true;\r\n this.renderer.invokeElementMethod(this.popover.nativeElement, 'focus');\r\n }\r\n\r\n showTooltip(keyAction: KeyAction, event: MouseEvent): void {\r\n if (keyAction === undefined) {\r\n return;\r\n }\r\n\r\n const el: Element = event.target as Element || event.srcElement;\r\n const position: ClientRect = el.getBoundingClientRect();\r\n let posLeft: number = this.tooltipData.posLeft;\r\n let posTop: number = this.tooltipData.posTop;\r\n\r\n if (el.tagName === 'g') {\r\n posLeft = position.left + (position.width / 2);\r\n posTop = position.top + position.height;\r\n }\r\n\r\n this.tooltipData = {\r\n posLeft: posLeft,\r\n posTop: posTop,\r\n content: this.getKeyActionContent(keyAction),\r\n show: true\r\n };\r\n }\r\n\r\n hideTooltip() {\r\n this.tooltipData.show = false;\r\n }\r\n\r\n hidePopover(): void {\r\n this.popoverShown = false;\r\n }\r\n\r\n selectLayer(index: number): void {\r\n this.currentLayer = index;\r\n }\r\n\r\n getSelectedLayer(): number {\r\n return this.currentLayer;\r\n }\r\n\r\n private getKeyActionContent(keyAction: KeyAction): Observable {\r\n if (keyAction instanceof KeystrokeAction) {\r\n const keystrokeAction: KeystrokeAction = keyAction;\r\n const content: NameValuePair[] = [];\r\n content.push({\r\n name: 'Action type',\r\n value: 'Keystroke'\r\n });\r\n\r\n if (keystrokeAction.hasScancode()) {\r\n let value: string = keystrokeAction.scancode.toString();\r\n const scanCodeTexts: string = (this.mapper.scanCodeToText(keystrokeAction.scancode) || []).join(', ');\r\n if (scanCodeTexts.length > 0) {\r\n value += ' (' + scanCodeTexts + ')';\r\n }\r\n content.push({\r\n name: 'Scancode',\r\n value\r\n });\r\n }\r\n\r\n if (keystrokeAction.hasActiveModifier()) {\r\n content.push({\r\n name: 'Modifiers',\r\n value: keystrokeAction.getModifierList().join(', ')\r\n });\r\n }\r\n\r\n if (keystrokeAction.hasLongPressAction()) {\r\n content.push({\r\n name: 'Long press',\r\n value: LongPressAction[keystrokeAction.longPressAction]\r\n });\r\n }\r\n return Observable.of(content);\r\n } else if (keyAction instanceof MouseAction) {\r\n const mouseAction: MouseAction = keyAction;\r\n const content: NameValuePair[] =\r\n [\r\n {\r\n name: 'Action type',\r\n value: 'Mouse'\r\n },\r\n {\r\n name: 'Action',\r\n value: camelCaseToSentence(MouseActionParam[mouseAction.mouseAction])\r\n }\r\n ];\r\n return Observable.of(content);\r\n } else if (keyAction instanceof PlayMacroAction) {\r\n const playMacroAction: PlayMacroAction = keyAction;\r\n return this.store\r\n .select(appState => appState.userConfiguration.macros)\r\n .map(macroState => macroState.find(macro => {\r\n return macro.id === playMacroAction.macroId;\r\n }).name)\r\n .map(macroName => {\r\n const content: NameValuePair[] = [\r\n {\r\n name: 'Action type',\r\n value: 'Play macro'\r\n },\r\n {\r\n name: 'Macro name',\r\n value: macroName\r\n }\r\n ];\r\n return content;\r\n });\r\n } else if (keyAction instanceof SwitchKeymapAction) {\r\n const switchKeymapAction: SwitchKeymapAction = keyAction;\r\n return this.store\r\n .select(appState => appState.userConfiguration.keymaps)\r\n .map(keymaps => keymaps.find(keymap => keymap.abbreviation === switchKeymapAction.keymapAbbreviation).name)\r\n .map(keymapName => {\r\n const content: NameValuePair[] = [\r\n {\r\n name: 'Action type',\r\n value: 'Switch keymap'\r\n },\r\n {\r\n name: 'Keymap',\r\n value: keymapName\r\n }\r\n ];\r\n return content;\r\n });\r\n } else if (keyAction instanceof SwitchLayerAction) {\r\n const switchLayerAction: SwitchLayerAction = keyAction;\r\n const content: NameValuePair[] =\r\n [\r\n {\r\n name: 'Action type',\r\n value: 'Switch layer'\r\n },\r\n {\r\n name: 'Layer',\r\n value: capitalizeFirstLetter(LayerName[switchLayerAction.layer])\r\n },\r\n {\r\n name: 'Toogle',\r\n value: switchLayerAction.isLayerToggleable ? 'On' : 'Off'\r\n }\r\n ];\r\n return Observable.of(content);\r\n }\r\n\r\n return Observable.of([]);\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/svg/wrap/svg-keyboard-wrap.component.ts","// Source: http://stackoverflow.com/questions/13720256/javascript-regex-camelcase-to-sentence\r\nexport function camelCaseToSentence(camelCasedText: string): string {\r\n return camelCasedText.replace(/^[a-z]|[A-Z]/g, function (v, i) {\r\n return i === 0 ? v.toUpperCase() : ' ' + v.toLowerCase();\r\n });\r\n}\r\n\r\nexport function capitalizeFirstLetter(text: string): string {\r\n return text.charAt(0).toUpperCase() + text.slice(1);\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/util/index.ts","module.exports = \"\\r\\n \\r\\n \\r\\n \\r\\n \\r\\n \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/svg/wrap/svg-keyboard-wrap.component.html\n// module id = 338\n// module chunks = 0","module.exports = \":host {\\n width: 100%;\\n display: block; }\\n :host.space {\\n margin-bottom: 405px; }\\n\\nkeyboard-slider {\\n display: block;\\n position: relative;\\n overflow: hidden;\\n /* TODO create dynamic */\\n height: 500px;\\n margin-top: 30px; }\\n\\n.tooltip {\\n position: fixed;\\n transform: translate(-50%, -6px);\\n display: none; }\\n .tooltip-inner {\\n background: #fff;\\n color: #000;\\n box-shadow: 0 1px 5px #000;\\n text-align: left; }\\n .tooltip-inner p {\\n margin-bottom: 2px; }\\n .tooltip-inner p:last-of-type {\\n margin-bottom: 0; }\\n .tooltip.bottom .tooltip-arrow {\\n border-bottom-color: #fff;\\n top: 1px; }\\n .tooltip.in {\\n display: block;\\n opacity: 1; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/components/svg/wrap/svg-keyboard-wrap.component.scss\n// module id = 339\n// module chunks = 0","export * from './main-app.component';\r\nexport * from './main-app.routes';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./web/src/main-app/index.ts","import { Component, ViewEncapsulation } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'main-app',\r\n template: require('./main-app.component.html'),\r\n styles: [\r\n require('../shared/main-app/main-app.component.scss'),\r\n require('./main-app.component.scss')\r\n ],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class MainAppComponent { }\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./web/src/main-app/main-app.component.ts","module.exports = \" \\r\\n \\r\\n\\r\\n \\r\\n
\\r\\n\\r\\n \\r\\n\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./web/src/main-app/main-app.component.html\n// module id = 342\n// module chunks = 0","module.exports = \"main-app {\\n display: block;\\n min-height: 100vh;\\n width: 100%;\\n overflow: hidden;\\n position: relative; }\\n main-app .select2-container--default .select2-selection--single .select2-selection__rendered {\\n line-height: 26px; }\\n\\n.main-content {\\n margin-left: 250px; }\\n\\n.select2-container {\\n z-index: 1100; }\\n .select2-container .scancode--searchterm {\\n text-align: right;\\n color: #b7b7b7; }\\n\\n.select2-item {\\n display: flex;\\n justify-content: space-between; }\\n\\n.select2-results {\\n text-align: left; }\\n\\n.nav-pills > li > a {\\n cursor: pointer; }\\n\\n.select2-container--default .select2-dropdown--below .select2-results > .select2-results__options {\\n max-height: 300px; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./shared/src/main-app/main-app.component.scss\n// module id = 343\n// module chunks = 0","module.exports = \"/* GitHub ribbon */\\n.github-fork-ribbon {\\n background-color: #a00;\\n overflow: hidden;\\n white-space: nowrap;\\n position: fixed;\\n right: -50px;\\n bottom: 40px;\\n z-index: 2000;\\n /* stylelint-disable indentation */\\n -webkit-transform: rotate(-45deg);\\n -moz-transform: rotate(-45deg);\\n -ms-transform: rotate(-45deg);\\n -o-transform: rotate(-45deg);\\n transform: rotate(-45deg);\\n -webkit-box-shadow: 0 0 10px #888;\\n -moz-box-shadow: 0 0 10px #888;\\n box-shadow: 0 0 10px #888;\\n /* stylelint-enable indentation */ }\\n .github-fork-ribbon a {\\n border: 1px solid #faa;\\n color: #fff;\\n display: block;\\n font: bold 81.25% 'Helvetica Neue', Helvetica, Arial, sans-serif;\\n margin: 1px 0;\\n padding: 10px 50px;\\n text-align: center;\\n text-decoration: none;\\n text-shadow: 0 0 5px #444; }\\n\"\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./web/src/main-app/main-app.component.scss\n// module id = 344\n// module chunks = 0","import { ModuleWithProviders } from '@angular/core';\r\nimport { RouterModule, Routes } from '@angular/router';\r\n\r\nimport { addOnRoutes } from '../shared/components/add-on';\r\nimport { keymapRoutes } from '../components/keymap';\r\nimport { macroRoutes } from '../shared/components/macro';\r\nimport { settingsRoutes } from '../shared/components/settings';\r\n\r\nconst appRoutes: Routes = [\r\n ...keymapRoutes,\r\n ...macroRoutes,\r\n ...addOnRoutes,\r\n ...settingsRoutes\r\n];\r\n\r\nexport const appRoutingProviders: any[] = [ ];\r\n\r\nexport const routing: ModuleWithProviders = RouterModule.forRoot(appRoutes, { useHash: true });\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./web/src/main-app/main-app.routes.ts","export * from './keymap.routes';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./web/src/components/keymap/index.ts","import { Routes } from '@angular/router';\r\n\r\nimport { KeymapAddComponent } from '../../shared/components/keymap/add/keymap-add.component';\r\nimport { KeymapEditComponent, KeymapEditGuard } from '../../shared/components/keymap/edit';\r\n\r\nexport const keymapRoutes: Routes = [\r\n {\r\n path: '',\r\n redirectTo: '/keymap',\r\n pathMatch: 'full'\r\n },\r\n {\r\n path: 'keymap',\r\n component: KeymapEditComponent,\r\n canActivate: [KeymapEditGuard]\r\n },\r\n {\r\n path: 'keymap/add',\r\n component: KeymapAddComponent\r\n },\r\n {\r\n path: 'keymap/:abbr',\r\n component: KeymapEditComponent\r\n }\r\n];\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./web/src/components/keymap/keymap.routes.ts","export { KeymapEditComponent } from './keymap-edit.component';\r\nexport { KeymapEditGuard } from './keymap-edit-guard.service';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/keymap/edit/index.ts","import { Injectable } from '@angular/core';\r\nimport { CanActivate, Router } from '@angular/router';\r\n\r\nimport { Observable } from 'rxjs/Observable';\r\n\r\nimport 'rxjs/add/observable/of';\r\nimport 'rxjs/add/operator/do';\r\nimport 'rxjs/add/operator/let';\r\nimport 'rxjs/add/operator/switchMap';\r\n\r\nimport { Store } from '@ngrx/store';\r\n\r\nimport { Keymap } from './../../../config-serializer/config-items/Keymap';\r\nimport { AppState } from '../../../store/index';\r\nimport { getKeymaps } from '../../../store/reducers/user-configuration';\r\n\r\n@Injectable()\r\nexport class KeymapEditGuard implements CanActivate {\r\n\r\n constructor(private store: Store, private router: Router) { }\r\n\r\n canActivate(): Observable {\r\n return this.store\r\n .let(getKeymaps())\r\n .do((keymaps: Keymap[]) => {\r\n const defaultKeymap = keymaps.find(keymap => keymap.isDefault);\r\n this.router.navigate(['/keymap', defaultKeymap.abbreviation]);\r\n })\r\n .switchMap(() => Observable.of(false));\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/components/keymap/edit/keymap-edit-guard.service.ts","export * from './cancelable';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/directives/index.ts","export { CancelableDirective } from './cancelable.directive';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/directives/cancelable/index.ts","import { Directive, ElementRef, HostListener, Renderer } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[cancelable]'\r\n})\r\nexport class CancelableDirective {\r\n\r\n private originalValue: string;\r\n\r\n constructor(private elementRef: ElementRef, private renderer: Renderer) { }\r\n\r\n @HostListener('focus') onFocus(): void {\r\n this.originalValue = this.elementRef.nativeElement.value;\r\n }\r\n\r\n @HostListener('keyup.escape') onEscape(): void {\r\n this.renderer.setElementProperty(this.elementRef.nativeElement, 'value', this.originalValue);\r\n this.renderer.invokeElementMethod(this.elementRef.nativeElement, 'blur');\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/directives/cancelable/cancelable.directive.ts","export * from './keymap';\r\nexport * from './macro';\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/store/effects/index.ts","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { Actions, Effect } from '@ngrx/effects';\r\nimport { Store } from '@ngrx/store';\r\n\r\nimport 'rxjs/add/operator/do';\r\nimport 'rxjs/add/operator/map';\r\nimport 'rxjs/add/operator/withLatestFrom';\r\n\r\nimport { KeymapActions } from '../actions';\r\nimport { AppState } from '../index';\r\n\r\nimport { Keymap } from '../../config-serializer/config-items/Keymap';\r\n\r\n@Injectable()\r\nexport class KeymapEffects {\r\n\r\n @Effect({ dispatch: false }) addOrDuplicate$: any = this.actions$\r\n .ofType(KeymapActions.ADD, KeymapActions.DUPLICATE)\r\n .withLatestFrom(this.store)\r\n .map(latest => latest[1].userConfiguration.keymaps)\r\n .do(keymaps => {\r\n this.router.navigate(['/keymap', keymaps[keymaps.length - 1].abbreviation]);\r\n });\r\n\r\n @Effect({ dispatch: false }) remove$: any = this.actions$\r\n .ofType(KeymapActions.REMOVE)\r\n .withLatestFrom(this.store)\r\n .map(latest => latest[1].userConfiguration.keymaps)\r\n .do(keymaps => {\r\n if (keymaps.length === 0) {\r\n this.router.navigate(['/keymap/add']);\r\n } else {\r\n const favourite: Keymap = keymaps.find(keymap => keymap.isDefault);\r\n this.router.navigate(['/keymap', favourite.abbreviation]);\r\n }\r\n });\r\n\r\n @Effect({ dispatch: false }) editAbbr$: any = this.actions$\r\n .ofType(KeymapActions.EDIT_ABBR)\r\n .map(action => action.payload.newAbbr)\r\n .do(newAbbr => {\r\n this.router.navigate(['/keymap', newAbbr]);\r\n });\r\n\r\n constructor(private actions$: Actions, private router: Router, private store: Store) { }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/store/effects/keymap.ts","import { Injectable } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\n\r\nimport { Actions, Effect } from '@ngrx/effects';\r\nimport { Store } from '@ngrx/store';\r\n\r\nimport 'rxjs/add/operator/do';\r\nimport 'rxjs/add/operator/map';\r\nimport 'rxjs/add/operator/withLatestFrom';\r\n\r\nimport { Macro } from '../../config-serializer/config-items/Macro';\r\n\r\nimport { KeymapActions, MacroActions } from '../actions';\r\nimport { AppState } from '../index';\r\n\r\n@Injectable()\r\nexport class MacroEffects {\r\n\r\n @Effect({dispatch: false}) remove$: any = this.actions$\r\n .ofType(MacroActions.REMOVE)\r\n .map(action => this.store.dispatch(KeymapActions.checkMacro(action.payload)))\r\n .withLatestFrom(this.store)\r\n .map(latest => latest[1].userConfiguration.macros)\r\n .do(macros => {\r\n if (macros.length === 0) {\r\n this.router.navigate(['/macro']);\r\n } else {\r\n this.router.navigate(['/macro', macros[0].id]);\r\n }\r\n });\r\n\r\n @Effect({dispatch: false}) add$: any = this.actions$\r\n .ofType(MacroActions.ADD)\r\n .withLatestFrom(this.store)\r\n .map(latest => latest[1].userConfiguration.macros)\r\n .map(macros => macros[macros.length - 1])\r\n .do(lastMacro => {\r\n this.router.navigate(['/macro', lastMacro.id, 'new']);\r\n });\r\n\r\n constructor(private actions$: Actions, private router: Router, private store: Store) {}\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/store/effects/macro.ts","import userConfigurationReducer, { getUserConfiguration } from './user-configuration';\r\nimport presetReducer from './preset';\r\n\r\nexport { userConfigurationReducer, presetReducer, getUserConfiguration };\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/store/reducers/index.ts","import { Keymap } from '../../config-serializer/config-items/Keymap';\r\n\r\nconst initialState: Keymap[] = [];\r\n\r\nexport default function(state = initialState): Keymap[] {\r\n return state;\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/store/reducers/preset.ts","import { Injectable } from '@angular/core';\r\n\r\nimport { Action } from '@ngrx/store';\r\n\r\nimport { Keymap } from '../../config-serializer/config-items/Keymap';\r\nimport { Macro } from '../../config-serializer/config-items/Macro';\r\nimport { UserConfiguration } from '../../config-serializer/config-items/UserConfiguration';\r\n\r\nimport { KeymapActions, MacroActions } from '../actions';\r\nimport { AppState } from '../index';\r\nimport { Electron } from './electron';\r\nimport { Local } from './local';\r\n\r\n@Injectable()\r\nexport class DataStorage {\r\n\r\n private _environment: Local | Electron;\r\n private defaultUserConfiguration: UserConfiguration;\r\n private uhkPresets: Keymap[];\r\n\r\n constructor() {\r\n this.initUHKJson();\r\n this.detectEnvironment();\r\n }\r\n\r\n initialState(): AppState {\r\n const config: UserConfiguration = this.getConfiguration();\r\n return {\r\n userConfiguration: config,\r\n presetKeymaps: this.uhkPresets\r\n };\r\n }\r\n\r\n detectEnvironment(): void {\r\n // Electron\r\n // TODO check if we can remove when electron will be implemented (maybe use process.versions['electron'])\r\n if (typeof window !== 'undefined' && (window).process && (window).process.type === 'renderer') {\r\n this._environment = new Electron();\r\n }\r\n // Local storage\r\n else {\r\n this._environment = new Local(this.defaultUserConfiguration.dataModelVersion);\r\n }\r\n }\r\n\r\n // TODO: Add type for state\r\n saveState(reducer: any): (state: any, action: Action) => AppState {\r\n return (state: any, action: Action) => {\r\n const nextState = reducer(state, action);\r\n this._environment.saveConfig(nextState);\r\n return nextState;\r\n };\r\n }\r\n\r\n initUHKJson() {\r\n this.defaultUserConfiguration = new UserConfiguration()\r\n .fromJsonObject(require('json!../../config-serializer/user-config.json'));\r\n this.uhkPresets = (require('json!../../config-serializer/preset-keymaps.json'))\r\n .map(keymap => new Keymap().fromJsonObject(keymap));\r\n }\r\n\r\n getConfiguration(): UserConfiguration {\r\n let config: UserConfiguration = this._environment.getConfig();\r\n if (!config) {\r\n config = this.defaultUserConfiguration;\r\n }\r\n return config;\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/store/storage/index.ts","import { UserConfiguration } from '../../config-serializer/config-items/UserConfiguration';\r\n\r\nexport class Electron {\r\n getConfig(): UserConfiguration {\r\n // TODO implement load logic\r\n return;\r\n }\r\n\r\n /* tslint:disable:no-unused-variable */\r\n saveConfig(config: UserConfiguration): void {\r\n // TODO implement save logic\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/store/storage/electron.ts","import { UserConfiguration } from '../../config-serializer/config-items/UserConfiguration';\r\n\r\nexport class Local {\r\n\r\n constructor(private dataModelVersion: number) { }\r\n\r\n getConfig(): UserConfiguration {\r\n let configJsonString = localStorage.getItem('config');\r\n let config: UserConfiguration;\r\n\r\n if (configJsonString) {\r\n const configJsonObject = JSON.parse(configJsonString);\r\n if (configJsonObject.dataModelVersion === this.dataModelVersion) {\r\n config = new UserConfiguration().fromJsonObject(configJsonObject);\r\n }\r\n }\r\n\r\n return config;\r\n }\r\n\r\n saveConfig(config: UserConfiguration): void {\r\n localStorage.setItem('config', JSON.stringify(config.toJsonObject()));\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./~/angular2-template-loader!./shared/src/store/storage/local.ts","module.exports = {\n\t\"dataModelVersion\": 3,\n\t\"moduleConfigurations\": [\n\t\t{\n\t\t\t\"id\": 1,\n\t\t\t\"initialPointerSpeed\": 1,\n\t\t\t\"pointerAcceleration\": 5,\n\t\t\t\"maxPointerSpeed\": 200\n\t\t}\n\t],\n\t\"keymaps\": [\n\t\t{\n\t\t\t\"isDefault\": true,\n\t\t\t\"abbreviation\": \"QTY\",\n\t\t\t\"name\": \"QWERTY\",\n\t\t\t\"description\": \"\",\n\t\t\t\"layers\": [\n\t\t\t\t{\n\t\t\t\t\t\"modules\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"id\": 0,\n\t\t\t\t\t\t\t\"pointerRole\": \"move\",\n\t\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 36\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 37\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 38\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 39\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 45\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 46\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 42\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 28\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 24\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 12\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 18\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 19\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 47\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 48\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 49\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 11\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 13\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 14\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 15\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 51\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 52\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 40\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 17\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 16\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 54\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 55\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 56\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"modifierMask\": 32\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 44\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"switchLayer\",\n\t\t\t\t\t\t\t\t\t\"layer\": \"fn\",\n\t\t\t\t\t\t\t\t\t\"toggle\": false\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"modifierMask\": 64\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"modifierMask\": 128\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"modifierMask\": 16\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"switchLayer\",\n\t\t\t\t\t\t\t\t\t\"layer\": \"mod\",\n\t\t\t\t\t\t\t\t\t\"toggle\": false\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"id\": 1,\n\t\t\t\t\t\t\t\"pointerRole\": \"move\",\n\t\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 53\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 30\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 31\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 32\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 33\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 34\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 35\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 43\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 20\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 26\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 8\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 21\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 23\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"switchLayer\",\n\t\t\t\t\t\t\t\t\t\"layer\": \"mouse\",\n\t\t\t\t\t\t\t\t\t\"toggle\": false\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 4\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 22\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 7\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 9\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 10\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"modifierMask\": 2\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 29\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 27\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 6\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 25\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 5\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"modifierMask\": 1\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"modifierMask\": 8\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"modifierMask\": 4\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"switchLayer\",\n\t\t\t\t\t\t\t\t\t\"layer\": \"fn\",\n\t\t\t\t\t\t\t\t\t\"toggle\": false\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"switchLayer\",\n\t\t\t\t\t\t\t\t\t\"layer\": \"mod\",\n\t\t\t\t\t\t\t\t\t\"toggle\": false\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 44\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"id\": 2,\n\t\t\t\t\t\t\t\"pointerRole\": \"scroll\",\n\t\t\t\t\t\t\t\"keyActions\": []\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"modules\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"id\": 0,\n\t\t\t\t\t\t\t\"pointerRole\": \"none\",\n\t\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 75\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 74\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 82\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 77\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 78\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 80\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 81\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 79\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"switchKeymap\",\n\t\t\t\t\t\t\t\t\t\"keymapAbbreviation\": \"VIM\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 118\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"modifierMask\": 32\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"switchLayer\",\n\t\t\t\t\t\t\t\t\t\"layer\": \"fn\",\n\t\t\t\t\t\t\t\t\t\"toggle\": false\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"modifierMask\": 64\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"modifierMask\": 128\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"modifierMask\": 16\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"switchLayer\",\n\t\t\t\t\t\t\t\t\t\"layer\": \"mod\",\n\t\t\t\t\t\t\t\t\t\"toggle\": false\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"id\": 1,\n\t\t\t\t\t\t\t\"pointerRole\": \"none\",\n\t\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"switchLayer\",\n\t\t\t\t\t\t\t\t\t\"layer\": \"mouse\",\n\t\t\t\t\t\t\t\t\t\"toggle\": false\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"modifierMask\": 2\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"modifierMask\": 1\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"modifierMask\": 8\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"modifierMask\": 4\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"switchLayer\",\n\t\t\t\t\t\t\t\t\t\"layer\": \"fn\",\n\t\t\t\t\t\t\t\t\t\"toggle\": false\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"switchLayer\",\n\t\t\t\t\t\t\t\t\t\"layer\": \"mod\",\n\t\t\t\t\t\t\t\t\t\"toggle\": false\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"modules\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"id\": 0,\n\t\t\t\t\t\t\t\"pointerRole\": \"move\",\n\t\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"switchLayer\",\n\t\t\t\t\t\t\t\t\t\"layer\": \"fn\",\n\t\t\t\t\t\t\t\t\t\"toggle\": true\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 232\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 237\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 233\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 234\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 238\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 235\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 239\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"modifierMask\": 32\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"switchLayer\",\n\t\t\t\t\t\t\t\t\t\"layer\": \"fn\",\n\t\t\t\t\t\t\t\t\t\"toggle\": false\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"modifierMask\": 64\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"modifierMask\": 128\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"modifierMask\": 16\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"switchLayer\",\n\t\t\t\t\t\t\t\t\t\"layer\": \"mod\",\n\t\t\t\t\t\t\t\t\t\"toggle\": true\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"id\": 1,\n\t\t\t\t\t\t\t\"pointerRole\": \"scroll\",\n\t\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"switchLayer\",\n\t\t\t\t\t\t\t\t\t\"layer\": \"mouse\",\n\t\t\t\t\t\t\t\t\t\"toggle\": true\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"switchLayer\",\n\t\t\t\t\t\t\t\t\t\"layer\": \"mod\",\n\t\t\t\t\t\t\t\t\t\"toggle\": true\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"switchLayer\",\n\t\t\t\t\t\t\t\t\t\"layer\": \"mouse\",\n\t\t\t\t\t\t\t\t\t\"toggle\": true\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"modifierMask\": 2\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"modifierMask\": 1\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"modifierMask\": 8\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"modifierMask\": 4\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"switchLayer\",\n\t\t\t\t\t\t\t\t\t\"layer\": \"fn\",\n\t\t\t\t\t\t\t\t\t\"toggle\": false\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"switchLayer\",\n\t\t\t\t\t\t\t\t\t\"layer\": \"mod\",\n\t\t\t\t\t\t\t\t\t\"toggle\": true\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"modules\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"id\": 0,\n\t\t\t\t\t\t\t\"pointerRole\": \"move\",\n\t\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"mouse\",\n\t\t\t\t\t\t\t\t\t\"mouseAction\": \"scrollUp\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"mouse\",\n\t\t\t\t\t\t\t\t\t\"mouseAction\": \"moveUp\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"mouse\",\n\t\t\t\t\t\t\t\t\t\"mouseAction\": \"scrollDown\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"mouse\",\n\t\t\t\t\t\t\t\t\t\"mouseAction\": \"moveLeft\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"mouse\",\n\t\t\t\t\t\t\t\t\t\"mouseAction\": \"moveDown\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"mouse\",\n\t\t\t\t\t\t\t\t\t\"mouseAction\": \"moveRight\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"modifierMask\": 64\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"modifierMask\": 128\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"modifierMask\": 16\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"id\": 1,\n\t\t\t\t\t\t\t\"pointerRole\": \"move\",\n\t\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"switchLayer\",\n\t\t\t\t\t\t\t\t\t\"layer\": \"mouse\",\n\t\t\t\t\t\t\t\t\t\"toggle\": false\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"mouse\",\n\t\t\t\t\t\t\t\t\t\"mouseAction\": \"rightClick\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"mouse\",\n\t\t\t\t\t\t\t\t\t\"mouseAction\": \"middleClick\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"mouse\",\n\t\t\t\t\t\t\t\t\t\"mouseAction\": \"leftClick\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"modifierMask\": 1\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"modifierMask\": 8\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"modifierMask\": 4\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"mouse\",\n\t\t\t\t\t\t\t\t\t\"mouseAction\": \"accelerate\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"mouse\",\n\t\t\t\t\t\t\t\t\t\"mouseAction\": \"decelerate\"\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"isDefault\": false,\n\t\t\t\"abbreviation\": \"VIM\",\n\t\t\t\"name\": \"VIM\",\n\t\t\t\"description\": \"\",\n\t\t\t\"layers\": [\n\t\t\t\t{\n\t\t\t\t\t\"modules\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"id\": 0,\n\t\t\t\t\t\t\t\"pointerRole\": \"move\",\n\t\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"mouse\",\n\t\t\t\t\t\t\t\t\t\"mouseAction\": \"scrollDown\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"playMacro\",\n\t\t\t\t\t\t\t\t\t\"macroIndex\": 0\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"switchKeymap\",\n\t\t\t\t\t\t\t\t\t\"keymapAbbreviation\": \"QTY\"\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"id\": 1,\n\t\t\t\t\t\t\t\"pointerRole\": \"scroll\",\n\t\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"id\": 2,\n\t\t\t\t\t\t\t\"pointerRole\": \"move\",\n\t\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 111\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"modules\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"id\": 0,\n\t\t\t\t\t\t\t\"pointerRole\": \"scroll\",\n\t\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"id\": 1,\n\t\t\t\t\t\t\t\"pointerRole\": \"move\",\n\t\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 111\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"modules\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"id\": 0,\n\t\t\t\t\t\t\t\"pointerRole\": \"scroll\",\n\t\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"id\": 1,\n\t\t\t\t\t\t\t\"pointerRole\": \"move\",\n\t\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 111\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"modules\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"id\": 0,\n\t\t\t\t\t\t\t\"pointerRole\": \"scroll\",\n\t\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"id\": 1,\n\t\t\t\t\t\t\t\"pointerRole\": \"move\",\n\t\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\t\"scancode\": 111\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"isDefault\": false,\n\t\t\t\"abbreviation\": \"DVR\",\n\t\t\t\"name\": \"DVR\",\n\t\t\t\"description\": \"\",\n\t\t\t\"layers\": [\n\t\t\t\t{\n\t\t\t\t\t\"modules\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"id\": 0,\n\t\t\t\t\t\t\t\"pointerRole\": \"move\",\n\t\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"id\": 1,\n\t\t\t\t\t\t\t\"pointerRole\": \"move\",\n\t\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"modules\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"id\": 0,\n\t\t\t\t\t\t\t\"pointerRole\": \"move\",\n\t\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"id\": 1,\n\t\t\t\t\t\t\t\"pointerRole\": \"move\",\n\t\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"modules\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"id\": 0,\n\t\t\t\t\t\t\t\"pointerRole\": \"move\",\n\t\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"id\": 1,\n\t\t\t\t\t\t\t\"pointerRole\": \"move\",\n\t\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"modules\": [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"id\": 0,\n\t\t\t\t\t\t\t\"pointerRole\": \"move\",\n\t\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\"id\": 1,\n\t\t\t\t\t\t\t\"pointerRole\": \"move\",\n\t\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t\t]\n\t\t\t\t\t\t}\n\t\t\t\t\t]\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t],\n\t\"macros\": [\n\t\t{\n\t\t\t\"isLooped\": false,\n\t\t\t\"isPrivate\": true,\n\t\t\t\"name\": \"My address\",\n\t\t\t\"macroActions\": [\n\t\t\t\t{\n\t\t\t\t\t\"macroActionType\": \"key\",\n\t\t\t\t\t\"action\": \"press\",\n\t\t\t\t\t\"scancode\": 111\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"macroActionType\": \"key\",\n\t\t\t\t\t\"action\": \"hold\",\n\t\t\t\t\t\"scancode\": 83\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"macroActionType\": \"key\",\n\t\t\t\t\t\"action\": \"release\",\n\t\t\t\t\t\"scancode\": 112\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"macroActionType\": \"key\",\n\t\t\t\t\t\"action\": \"press\",\n\t\t\t\t\t\"modifierMask\": 93\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"macroActionType\": \"key\",\n\t\t\t\t\t\"action\": \"hold\",\n\t\t\t\t\t\"modifierMask\": 101\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"macroActionType\": \"key\",\n\t\t\t\t\t\"action\": \"release\",\n\t\t\t\t\t\"modifierMask\": 133\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"macroActionType\": \"mouseButton\",\n\t\t\t\t\t\"action\": \"press\",\n\t\t\t\t\t\"mouseButtonsMask\": 9\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"macroActionType\": \"mouseButton\",\n\t\t\t\t\t\"action\": \"hold\",\n\t\t\t\t\t\"mouseButtonsMask\": 12\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"macroActionType\": \"mouseButton\",\n\t\t\t\t\t\"action\": \"release\",\n\t\t\t\t\t\"mouseButtonsMask\": 104\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"macroActionType\": \"moveMouse\",\n\t\t\t\t\t\"x\": -1920,\n\t\t\t\t\t\"y\": 220\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"macroActionType\": \"scrollMouse\",\n\t\t\t\t\t\"x\": 0,\n\t\t\t\t\t\"y\": 20000\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"macroActionType\": \"delay\",\n\t\t\t\t\t\"delay\": 40000\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"macroActionType\": \"text\",\n\t\t\t\t\t\"text\": \"this is a text\"\n\t\t\t\t}\n\t\t\t]\n\t\t},\n\t\t{\n\t\t\t\"isLooped\": true,\n\t\t\t\"isPrivate\": true,\n\t\t\t\"name\": \"Blah Blah blah\",\n\t\t\t\"macroActions\": [\n\t\t\t\t{\n\t\t\t\t\t\"macroActionType\": \"key\",\n\t\t\t\t\t\"action\": \"press\",\n\t\t\t\t\t\"scancode\": 111\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"macroActionType\": \"mouseButton\",\n\t\t\t\t\t\"action\": \"release\",\n\t\t\t\t\t\"mouseButtonsMask\": 104\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"macroActionType\": \"scrollMouse\",\n\t\t\t\t\t\"x\": 0,\n\t\t\t\t\t\"y\": -20000\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"macroActionType\": \"delay\",\n\t\t\t\t\t\"delay\": 40000\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\t\"macroActionType\": \"text\",\n\t\t\t\t\t\"text\": \"blahhhhhhh\"\n\t\t\t\t}\n\t\t\t]\n\t\t}\n\t]\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/json-loader!./shared/src/config-serializer/user-config.json\n// module id = 362\n// module chunks = 0","module.exports = [\n\t{\n\t\t\"isDefault\": false,\n\t\t\"abbreviation\": \"QTY\",\n\t\t\"name\": \"QWERTY\",\n\t\t\"description\": \"Maecenas sem dui, ullamcorper consequat pellentesque ut, mattis at velit. Duis scelerisque eleifend gravida. Aenean at mauris rhoncus, dictum mi vitae, semper eros. Quisque maximus est elit, at condimentum ligula consectetur vel. Aenean lorem felis, molestie id ex suscipit, sagittis mollis dui. Phasellus in felis in libero bibendum ornare. Duis vestibulum dolor sed diam tempor vulputate. Curabitur scelerisque pretium ipsum. Phasellus non orci vestibulum, vehicula lectus sit amet, lacinia velit. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. In diam lacus, cursus at pretium vel, ullamcorper at ante.\",\n\t\t\"layers\": [\n\t\t\t{\n\t\t\t\t\"modules\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 0,\n\t\t\t\t\t\t\"pointerRole\": \"move\",\n\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 36\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 37\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 38\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 39\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 45\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 46\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 42\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 28\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 24\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 12\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 18\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 19\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 47\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 48\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 49\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 11\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 13\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 14\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 15\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 51\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 52\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 40\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 17\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 16\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 54\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 55\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 56\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"modifierMask\": 32\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 44\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"switchLayer\",\n\t\t\t\t\t\t\t\t\"layer\": \"fn\",\n\t\t\t\t\t\t\t\t\"toggle\": false\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"modifierMask\": 64\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"modifierMask\": 128\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"modifierMask\": 16\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"switchLayer\",\n\t\t\t\t\t\t\t\t\"layer\": \"mod\",\n\t\t\t\t\t\t\t\t\"toggle\": false\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 1,\n\t\t\t\t\t\t\"pointerRole\": \"move\",\n\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 53\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 30\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 31\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 32\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 33\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 34\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 35\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 43\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 20\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 26\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 8\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 21\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 23\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"switchLayer\",\n\t\t\t\t\t\t\t\t\"layer\": \"mouse\",\n\t\t\t\t\t\t\t\t\"toggle\": false\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 4\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 22\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 7\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 9\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 10\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"modifierMask\": 2\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 29\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 27\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 6\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 25\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 5\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"modifierMask\": 1\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"modifierMask\": 8\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"modifierMask\": 4\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"switchLayer\",\n\t\t\t\t\t\t\t\t\"layer\": \"fn\",\n\t\t\t\t\t\t\t\t\"toggle\": false\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"switchLayer\",\n\t\t\t\t\t\t\t\t\"layer\": \"mod\",\n\t\t\t\t\t\t\t\t\"toggle\": false\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 44\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 2,\n\t\t\t\t\t\t\"pointerRole\": \"scroll\",\n\t\t\t\t\t\t\"keyActions\": []\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"modules\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 0,\n\t\t\t\t\t\t\"pointerRole\": \"none\",\n\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 75\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 74\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 82\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 77\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 78\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 80\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 81\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 79\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"switchKeymap\",\n\t\t\t\t\t\t\t\t\"keymapAbbreviation\": \"VIM\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 118\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"modifierMask\": 32\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"switchLayer\",\n\t\t\t\t\t\t\t\t\"layer\": \"fn\",\n\t\t\t\t\t\t\t\t\"toggle\": false\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"modifierMask\": 64\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"modifierMask\": 128\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"modifierMask\": 16\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"switchLayer\",\n\t\t\t\t\t\t\t\t\"layer\": \"mod\",\n\t\t\t\t\t\t\t\t\"toggle\": false\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 1,\n\t\t\t\t\t\t\"pointerRole\": \"none\",\n\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"switchLayer\",\n\t\t\t\t\t\t\t\t\"layer\": \"mouse\",\n\t\t\t\t\t\t\t\t\"toggle\": false\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"modifierMask\": 2\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"modifierMask\": 1\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"modifierMask\": 8\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"modifierMask\": 4\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"switchLayer\",\n\t\t\t\t\t\t\t\t\"layer\": \"fn\",\n\t\t\t\t\t\t\t\t\"toggle\": false\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"switchLayer\",\n\t\t\t\t\t\t\t\t\"layer\": \"mod\",\n\t\t\t\t\t\t\t\t\"toggle\": false\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"modules\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 0,\n\t\t\t\t\t\t\"pointerRole\": \"move\",\n\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"switchLayer\",\n\t\t\t\t\t\t\t\t\"layer\": \"fn\",\n\t\t\t\t\t\t\t\t\"toggle\": true\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 232\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 237\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 233\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 234\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 238\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 235\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 239\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"modifierMask\": 32\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"switchLayer\",\n\t\t\t\t\t\t\t\t\"layer\": \"fn\",\n\t\t\t\t\t\t\t\t\"toggle\": false\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"modifierMask\": 64\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"modifierMask\": 128\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"modifierMask\": 16\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"switchLayer\",\n\t\t\t\t\t\t\t\t\"layer\": \"mod\",\n\t\t\t\t\t\t\t\t\"toggle\": true\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 1,\n\t\t\t\t\t\t\"pointerRole\": \"scroll\",\n\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"switchLayer\",\n\t\t\t\t\t\t\t\t\"layer\": \"mouse\",\n\t\t\t\t\t\t\t\t\"toggle\": true\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"switchLayer\",\n\t\t\t\t\t\t\t\t\"layer\": \"mod\",\n\t\t\t\t\t\t\t\t\"toggle\": true\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"switchLayer\",\n\t\t\t\t\t\t\t\t\"layer\": \"mouse\",\n\t\t\t\t\t\t\t\t\"toggle\": true\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"modifierMask\": 2\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"modifierMask\": 1\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"modifierMask\": 8\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"modifierMask\": 4\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"switchLayer\",\n\t\t\t\t\t\t\t\t\"layer\": \"fn\",\n\t\t\t\t\t\t\t\t\"toggle\": false\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"switchLayer\",\n\t\t\t\t\t\t\t\t\"layer\": \"mod\",\n\t\t\t\t\t\t\t\t\"toggle\": true\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"modules\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 0,\n\t\t\t\t\t\t\"pointerRole\": \"move\",\n\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"mouse\",\n\t\t\t\t\t\t\t\t\"mouseAction\": \"scrollUp\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"mouse\",\n\t\t\t\t\t\t\t\t\"mouseAction\": \"moveUp\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"mouse\",\n\t\t\t\t\t\t\t\t\"mouseAction\": \"scrollDown\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"mouse\",\n\t\t\t\t\t\t\t\t\"mouseAction\": \"moveLeft\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"mouse\",\n\t\t\t\t\t\t\t\t\"mouseAction\": \"moveDown\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"mouse\",\n\t\t\t\t\t\t\t\t\"mouseAction\": \"moveRight\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"modifierMask\": 64\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"modifierMask\": 128\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"modifierMask\": 16\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t]\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 1,\n\t\t\t\t\t\t\"pointerRole\": \"move\",\n\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"switchLayer\",\n\t\t\t\t\t\t\t\t\"layer\": \"mouse\",\n\t\t\t\t\t\t\t\t\"toggle\": false\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"mouse\",\n\t\t\t\t\t\t\t\t\"mouseAction\": \"rightClick\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"mouse\",\n\t\t\t\t\t\t\t\t\"mouseAction\": \"middleClick\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"mouse\",\n\t\t\t\t\t\t\t\t\"mouseAction\": \"leftClick\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"modifierMask\": 1\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"modifierMask\": 8\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"modifierMask\": 4\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"mouse\",\n\t\t\t\t\t\t\t\t\"mouseAction\": \"accelerate\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"mouse\",\n\t\t\t\t\t\t\t\t\"mouseAction\": \"decelerate\"\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"isDefault\": false,\n\t\t\"abbreviation\": \"VIM\",\n\t\t\"name\": \"VIM\",\n\t\t\"description\": \"Phasellus egestas ac tellus id tincidunt. Ut non nisl turpis. Morbi molestie diam elit, et cursus nibh tempus vel. Vestibulum mattis arcu nec nisi dictum, quis facilisis augue rutrum. Fusce vel tristique metus. Nullam pretium elit et enim maximus ornare. Praesent ultrices ligula ut mi convallis, quis ultrices enim venenatis. Aenean interdum odio aliquam quam vestibulum, vel bibendum elit ornare. Morbi leo enim, ullamcorper a bibendum sit amet, ultrices vitae ligula. Etiam consectetur et massa a convallis. Nullam non nisi aliquet, suscipit nulla a, tempor odio. Praesent eu turpis euismod, pellentesque mauris ut, imperdiet felis. Pellentesque vehicula luctus purus, et mattis ante volutpat eu. Quisque venenatis porta odio.\",\n\t\t\"layers\": [\n\t\t\t{\n\t\t\t\t\"modules\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 0,\n\t\t\t\t\t\t\"pointerRole\": \"move\",\n\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"mouse\",\n\t\t\t\t\t\t\t\t\"mouseAction\": \"scrollDown\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"switchKeymap\",\n\t\t\t\t\t\t\t\t\"keymapAbbreviation\": \"QTY\"\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t]\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 1,\n\t\t\t\t\t\t\"pointerRole\": \"scroll\",\n\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t]\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 2,\n\t\t\t\t\t\t\"pointerRole\": \"move\",\n\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"keyActionType\": \"keystroke\",\n\t\t\t\t\t\t\t\t\"scancode\": 111\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"modules\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 0,\n\t\t\t\t\t\t\"pointerRole\": \"move\",\n\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t]\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 1,\n\t\t\t\t\t\t\"pointerRole\": \"move\",\n\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"modules\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 0,\n\t\t\t\t\t\t\"pointerRole\": \"move\",\n\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t]\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 1,\n\t\t\t\t\t\t\"pointerRole\": \"move\",\n\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"modules\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 0,\n\t\t\t\t\t\t\"pointerRole\": \"move\",\n\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t]\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 1,\n\t\t\t\t\t\t\"pointerRole\": \"move\",\n\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"isDefault\": false,\n\t\t\"abbreviation\": \"DVR\",\n\t\t\"name\": \"DVR\",\n\t\t\"description\": \"Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Aenean dictum sollicitudin massa, ut lacinia ipsum. Ut bibendum ipsum ac pulvinar vehicula. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Etiam feugiat lobortis lacus, id viverra nisl varius eu. Aliquam vitae eros a augue fermentum ultricies. Nam tempus dui sed ante ultricies bibendum. In ligula velit, aliquet a felis vitae, gravida tincidunt ante. Proin euismod velit odio, at pretium lacus porta egestas. Suspendisse aliquam, lacus accumsan dapibus elementum, orci felis egestas leo, non vulputate lorem turpis nec risus. Curabitur id volutpat orci. Sed aliquet finibus iaculis. In venenatis neque ac dolor posuere, vel vestibulum augue posuere.\",\n\t\t\"layers\": [\n\t\t\t{\n\t\t\t\t\"modules\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 0,\n\t\t\t\t\t\t\"pointerRole\": \"move\",\n\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t]\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 1,\n\t\t\t\t\t\t\"pointerRole\": \"move\",\n\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"modules\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 0,\n\t\t\t\t\t\t\"pointerRole\": \"move\",\n\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t]\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 1,\n\t\t\t\t\t\t\"pointerRole\": \"move\",\n\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"modules\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 0,\n\t\t\t\t\t\t\"pointerRole\": \"move\",\n\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t]\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 1,\n\t\t\t\t\t\t\"pointerRole\": \"move\",\n\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"modules\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 0,\n\t\t\t\t\t\t\"pointerRole\": \"move\",\n\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t]\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 1,\n\t\t\t\t\t\t\"pointerRole\": \"move\",\n\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t},\n\t{\n\t\t\"isDefault\": false,\n\t\t\"abbreviation\": \"EMY\",\n\t\t\"name\": \"Empty keymap\",\n\t\t\"description\": \"None of the keys are bind to any key action. It is ideal if you want to start creating your keymap from the ground up.\",\n\t\t\"layers\": [\n\t\t\t{\n\t\t\t\t\"modules\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 0,\n\t\t\t\t\t\t\"pointerRole\": \"move\",\n\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t]\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 1,\n\t\t\t\t\t\t\"pointerRole\": \"move\",\n\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"modules\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 0,\n\t\t\t\t\t\t\"pointerRole\": \"move\",\n\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t]\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 1,\n\t\t\t\t\t\t\"pointerRole\": \"move\",\n\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"modules\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 0,\n\t\t\t\t\t\t\"pointerRole\": \"move\",\n\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t]\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 1,\n\t\t\t\t\t\t\"pointerRole\": \"move\",\n\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t},\n\t\t\t{\n\t\t\t\t\"modules\": [\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 0,\n\t\t\t\t\t\t\"pointerRole\": \"move\",\n\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t]\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\t\"id\": 1,\n\t\t\t\t\t\t\"pointerRole\": \"move\",\n\t\t\t\t\t\t\"keyActions\": [\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull,\n\t\t\t\t\t\t\tnull\n\t\t\t\t\t\t]\n\t\t\t\t\t}\n\t\t\t\t]\n\t\t\t}\n\t\t]\n\t}\n];\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/json-loader!./shared/src/config-serializer/preset-keymaps.json\n// module id = 363\n// module chunks = 0","var WritableStream = require('stream').Writable\nvar inherits = require('util').inherits\n\nmodule.exports = BrowserStdout\n\n\ninherits(BrowserStdout, WritableStream)\n\nfunction BrowserStdout(opts) {\n if (!(this instanceof BrowserStdout)) return new BrowserStdout(opts)\n\n opts = opts || {}\n WritableStream.call(this, opts)\n this.label = (opts.label !== undefined) ? opts.label : 'stdout'\n}\n\nBrowserStdout.prototype._write = function(chunks, encoding, cb) {\n var output = chunks.toString ? chunks.toString() : chunks\n if (this.label === false) {\n console.log(output)\n } else {\n console.log(this.label+':', output)\n }\n process.nextTick(cb)\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/browser-stdout/index.js\n// module id = 364\n// module chunks = 0","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = require('events').EventEmitter;\nvar inherits = require('inherits');\n\ninherits(Stream, EE);\nStream.Readable = require('readable-stream/readable.js');\nStream.Writable = require('readable-stream/writable.js');\nStream.Duplex = require('readable-stream/duplex.js');\nStream.Transform = require('readable-stream/transform.js');\nStream.PassThrough = require('readable-stream/passthrough.js');\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/stream-browserify/index.js\n// module id = 365\n// module chunks = 0","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nfunction EventEmitter() {\n this._events = this._events || {};\n this._maxListeners = this._maxListeners || undefined;\n}\nmodule.exports = EventEmitter;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nEventEmitter.defaultMaxListeners = 10;\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function(n) {\n if (!isNumber(n) || n < 0 || isNaN(n))\n throw TypeError('n must be a positive number');\n this._maxListeners = n;\n return this;\n};\n\nEventEmitter.prototype.emit = function(type) {\n var er, handler, len, args, i, listeners;\n\n if (!this._events)\n this._events = {};\n\n // If there is no 'error' event listener then throw.\n if (type === 'error') {\n if (!this._events.error ||\n (isObject(this._events.error) && !this._events.error.length)) {\n er = arguments[1];\n if (er instanceof Error) {\n throw er; // Unhandled 'error' event\n } else {\n // At least give some kind of context to the user\n var err = new Error('Uncaught, unspecified \"error\" event. (' + er + ')');\n err.context = er;\n throw err;\n }\n }\n }\n\n handler = this._events[type];\n\n if (isUndefined(handler))\n return false;\n\n if (isFunction(handler)) {\n switch (arguments.length) {\n // fast cases\n case 1:\n handler.call(this);\n break;\n case 2:\n handler.call(this, arguments[1]);\n break;\n case 3:\n handler.call(this, arguments[1], arguments[2]);\n break;\n // slower\n default:\n args = Array.prototype.slice.call(arguments, 1);\n handler.apply(this, args);\n }\n } else if (isObject(handler)) {\n args = Array.prototype.slice.call(arguments, 1);\n listeners = handler.slice();\n len = listeners.length;\n for (i = 0; i < len; i++)\n listeners[i].apply(this, args);\n }\n\n return true;\n};\n\nEventEmitter.prototype.addListener = function(type, listener) {\n var m;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events)\n this._events = {};\n\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (this._events.newListener)\n this.emit('newListener', type,\n isFunction(listener.listener) ?\n listener.listener : listener);\n\n if (!this._events[type])\n // Optimize the case of one listener. Don't need the extra array object.\n this._events[type] = listener;\n else if (isObject(this._events[type]))\n // If we've already got an array, just append.\n this._events[type].push(listener);\n else\n // Adding the second element, need to change to array.\n this._events[type] = [this._events[type], listener];\n\n // Check for listener leak\n if (isObject(this._events[type]) && !this._events[type].warned) {\n if (!isUndefined(this._maxListeners)) {\n m = this._maxListeners;\n } else {\n m = EventEmitter.defaultMaxListeners;\n }\n\n if (m && m > 0 && this._events[type].length > m) {\n this._events[type].warned = true;\n console.error('(node) warning: possible EventEmitter memory ' +\n 'leak detected. %d listeners added. ' +\n 'Use emitter.setMaxListeners() to increase limit.',\n this._events[type].length);\n if (typeof console.trace === 'function') {\n // not supported in IE 10\n console.trace();\n }\n }\n }\n\n return this;\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.once = function(type, listener) {\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n var fired = false;\n\n function g() {\n this.removeListener(type, g);\n\n if (!fired) {\n fired = true;\n listener.apply(this, arguments);\n }\n }\n\n g.listener = listener;\n this.on(type, g);\n\n return this;\n};\n\n// emits a 'removeListener' event iff the listener was removed\nEventEmitter.prototype.removeListener = function(type, listener) {\n var list, position, length, i;\n\n if (!isFunction(listener))\n throw TypeError('listener must be a function');\n\n if (!this._events || !this._events[type])\n return this;\n\n list = this._events[type];\n length = list.length;\n position = -1;\n\n if (list === listener ||\n (isFunction(list.listener) && list.listener === listener)) {\n delete this._events[type];\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n\n } else if (isObject(list)) {\n for (i = length; i-- > 0;) {\n if (list[i] === listener ||\n (list[i].listener && list[i].listener === listener)) {\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (list.length === 1) {\n list.length = 0;\n delete this._events[type];\n } else {\n list.splice(position, 1);\n }\n\n if (this._events.removeListener)\n this.emit('removeListener', type, listener);\n }\n\n return this;\n};\n\nEventEmitter.prototype.removeAllListeners = function(type) {\n var key, listeners;\n\n if (!this._events)\n return this;\n\n // not listening for removeListener, no need to emit\n if (!this._events.removeListener) {\n if (arguments.length === 0)\n this._events = {};\n else if (this._events[type])\n delete this._events[type];\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n for (key in this._events) {\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = {};\n return this;\n }\n\n listeners = this._events[type];\n\n if (isFunction(listeners)) {\n this.removeListener(type, listeners);\n } else if (listeners) {\n // LIFO order\n while (listeners.length)\n this.removeListener(type, listeners[listeners.length - 1]);\n }\n delete this._events[type];\n\n return this;\n};\n\nEventEmitter.prototype.listeners = function(type) {\n var ret;\n if (!this._events || !this._events[type])\n ret = [];\n else if (isFunction(this._events[type]))\n ret = [this._events[type]];\n else\n ret = this._events[type].slice();\n return ret;\n};\n\nEventEmitter.prototype.listenerCount = function(type) {\n if (this._events) {\n var evlistener = this._events[type];\n\n if (isFunction(evlistener))\n return 1;\n else if (evlistener)\n return evlistener.length;\n }\n return 0;\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n return emitter.listenerCount(type);\n};\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/events/events.js\n// module id = 366\n// module chunks = 0","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/inherits/inherits_browser.js\n// module id = 367\n// module chunks = 0","var Stream = (function (){\n try {\n return require('st' + 'ream'); // hack to fix a circular dependency issue when used with browserify\n } catch(_){}\n}());\nexports = module.exports = require('./lib/_stream_readable.js');\nexports.Stream = Stream || exports;\nexports.Readable = exports;\nexports.Writable = require('./lib/_stream_writable.js');\nexports.Duplex = require('./lib/_stream_duplex.js');\nexports.Transform = require('./lib/_stream_transform.js');\nexports.PassThrough = require('./lib/_stream_passthrough.js');\n\nif (!process.browser && process.env.READABLE_STREAM === 'disable' && Stream) {\n module.exports = Stream;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/readable-stream/readable.js\n// module id = 368\n// module chunks = 0","'use strict';\n\nmodule.exports = Readable;\n\n/**/\nvar processNextTick = require('process-nextick-args');\n/* */\n\n/**/\nvar isArray = require('isarray');\n/* */\n\n/**/\nvar Duplex;\n/* */\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = require('events').EventEmitter;\n\nvar EElistenerCount = function (emitter, type) {\n return emitter.listeners(type).length;\n};\n/* */\n\n/**/\nvar Stream;\n(function () {\n try {\n Stream = require('st' + 'ream');\n } catch (_) {} finally {\n if (!Stream) Stream = require('events').EventEmitter;\n }\n})();\n/* */\n\nvar Buffer = require('buffer').Buffer;\n/**/\nvar bufferShim = require('buffer-shims');\n/* */\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/* */\n\n/**/\nvar debugUtil = require('util');\nvar debug = void 0;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function () {};\n}\n/* */\n\nvar BufferList = require('./internal/streams/BufferList');\nvar StringDecoder;\n\nutil.inherits(Readable, Stream);\n\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') {\n return emitter.prependListener(event, fn);\n } else {\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n }\n}\n\nfunction ReadableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n\n if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n var hwm = options.highWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;\n\n // cast to ints.\n this.highWaterMark = ~ ~this.highWaterMark;\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // when piping, we only care about 'readable' events that happen\n // after read()ing all the bytes and not getting any pushback.\n this.ranOut = false;\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\n\nfunction Readable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n if (!(this instanceof Readable)) return new Readable(options);\n\n this._readableState = new ReadableState(options, this);\n\n // legacy\n this.readable = true;\n\n if (options && typeof options.read === 'function') this._read = options.read;\n\n Stream.call(this);\n}\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n\n if (!state.objectMode && typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = bufferShim.from(chunk, encoding);\n encoding = '';\n }\n }\n\n return readableAddChunk(this, state, chunk, encoding, false);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n var state = this._readableState;\n return readableAddChunk(this, state, chunk, '', true);\n};\n\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\nfunction readableAddChunk(stream, state, chunk, encoding, addToFront) {\n var er = chunkInvalid(state, chunk);\n if (er) {\n stream.emit('error', er);\n } else if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (state.ended && !addToFront) {\n var e = new Error('stream.push() after EOF');\n stream.emit('error', e);\n } else if (state.endEmitted && addToFront) {\n var _e = new Error('stream.unshift() after end event');\n stream.emit('error', _e);\n } else {\n var skipAdd;\n if (state.decoder && !addToFront && !encoding) {\n chunk = state.decoder.write(chunk);\n skipAdd = !state.objectMode && chunk.length === 0;\n }\n\n if (!addToFront) state.reading = false;\n\n // Don't add to the buffer if we've decoded to an empty string chunk and\n // we're not in object mode\n if (!skipAdd) {\n // if we want the data now, just emit it.\n if (state.flowing && state.length === 0 && !state.sync) {\n stream.emit('data', chunk);\n stream.read(0);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n\n if (state.needReadable) emitReadable(stream);\n }\n }\n\n maybeReadMore(stream, state);\n }\n } else if (!addToFront) {\n state.reading = false;\n }\n\n return needMoreData(state);\n}\n\n// if it's past the high water mark, we can push in some more.\n// Also, if we have no data yet, we can stand some\n// more bytes. This is to work around cases where hwm=0,\n// such as the repl. Also, if the push() triggered a\n// readable event, and the user called read(largeNumber) such that\n// needReadable was set, then we ought to push more, so that another\n// 'readable' event will be triggered.\nfunction needMoreData(state) {\n return !state.ended && (state.needReadable || state.length < state.highWaterMark || state.length === 0);\n}\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = require('string_decoder/').StringDecoder;\n this._readableState.decoder = new StringDecoder(enc);\n this._readableState.encoding = enc;\n return this;\n};\n\n// Don't raise the hwm > 8MB\nvar MAX_HWM = 0x800000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && (state.length >= state.highWaterMark || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n\n if (ret === null) {\n state.needReadable = true;\n n = 0;\n } else {\n state.length -= n;\n }\n\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n\n if (ret !== null) this.emit('data', ret);\n\n return ret;\n};\n\nfunction chunkInvalid(state, chunk) {\n var er = null;\n if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== null && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n return er;\n}\n\nfunction onEofChunk(stream, state) {\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n\n // emit 'readable' now to make sure it gets picked up.\n emitReadable(stream);\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n if (state.sync) processNextTick(emitReadable_, stream);else emitReadable_(stream);\n }\n}\n\nfunction emitReadable_(stream) {\n debug('emit readable');\n stream.emit('readable');\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n processNextTick(maybeReadMore_, stream, state);\n }\n}\n\nfunction maybeReadMore_(stream, state) {\n var len = state.length;\n while (!state.reading && !state.flowing && !state.ended && state.length < state.highWaterMark) {\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;else len = state.length;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n this.emit('error', new Error('_read() is not implemented'));\n};\n\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n\n var endFn = doEnd ? onend : cleanup;\n if (state.endEmitted) processNextTick(endFn);else src.once('end', endFn);\n\n dest.on('unpipe', onunpipe);\n function onunpipe(readable) {\n debug('onunpipe');\n if (readable === src) {\n cleanup();\n }\n }\n\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', cleanup);\n src.removeListener('data', ondata);\n\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n\n // If the user pushes more data while we're writing to dest then we'll end up\n // in ondata again. However, we only want to increase awaitDrain once because\n // dest will only emit one 'drain' event for the multiple writes.\n // => Introduce a guard on increasing awaitDrain.\n var increasedAwaitDrain = false;\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n increasedAwaitDrain = false;\n var ret = dest.write(chunk);\n if (false === ret && !increasedAwaitDrain) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', src._readableState.awaitDrain);\n src._readableState.awaitDrain++;\n increasedAwaitDrain = true;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) dest.emit('error', er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n\n return dest;\n};\n\nfunction pipeOnDrain(src) {\n return function () {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\n\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n\n for (var i = 0; i < len; i++) {\n dests[i].emit('unpipe', this);\n }return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n\n dest.emit('unpipe', this);\n\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n\n if (ev === 'data') {\n // Start flowing on next tick if stream isn't explicitly paused\n if (this._readableState.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n var state = this._readableState;\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.emittedReadable = false;\n if (!state.reading) {\n processNextTick(nReadingNextTick, this);\n } else if (state.length) {\n emitReadable(this, state);\n }\n }\n }\n\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\n\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n state.flowing = true;\n resume(this, state);\n }\n return this;\n};\n\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n processNextTick(resume_, stream, state);\n }\n}\n\nfunction resume_(stream, state) {\n if (!state.reading) {\n debug('resume read 0');\n stream.read(0);\n }\n\n state.resumeScheduled = false;\n state.awaitDrain = 0;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\n\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (false !== this._readableState.flowing) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n return this;\n};\n\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null) {}\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var state = this._readableState;\n var paused = false;\n\n var self = this;\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) self.push(chunk);\n }\n\n self.push(null);\n });\n\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n\n var ret = self.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function (method) {\n return function () {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n var events = ['error', 'close', 'destroy', 'pause', 'resume'];\n forEach(events, function (ev) {\n stream.on(ev, self.emit.bind(self, ev));\n });\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n self._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n\n return self;\n};\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.head.data;else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = fromListPartial(n, state.buffer, state.decoder);\n }\n\n return ret;\n}\n\n// Extracts only enough buffered data to satisfy the amount requested.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromListPartial(n, list, hasStrings) {\n var ret;\n if (n < list.head.data.length) {\n // slice is the same for buffers and strings\n ret = list.head.data.slice(0, n);\n list.head.data = list.head.data.slice(n);\n } else if (n === list.head.data.length) {\n // first chunk is a perfect match\n ret = list.shift();\n } else {\n // result spans more than one buffer\n ret = hasStrings ? copyFromBufferString(n, list) : copyFromBuffer(n, list);\n }\n return ret;\n}\n\n// Copies a specified amount of characters from the list of buffered data\n// chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBufferString(n, list) {\n var p = list.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\n// Copies a specified amount of bytes from the list of buffered data chunks.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction copyFromBuffer(n, list) {\n var ret = bufferShim.allocUnsafe(n);\n var p = list.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) list.head = p.next;else list.head = list.tail = null;\n } else {\n list.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n list.length -= c;\n return ret;\n}\n\nfunction endReadable(stream) {\n var state = stream._readableState;\n\n // If we get here before consuming all the bytes, then that is a\n // bug in node. Should never happen.\n if (state.length > 0) throw new Error('\"endReadable()\" called on non-empty stream');\n\n if (!state.endEmitted) {\n state.ended = true;\n processNextTick(endReadableNT, state, stream);\n }\n}\n\nfunction endReadableNT(state, stream) {\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n }\n}\n\nfunction forEach(xs, f) {\n for (var i = 0, l = xs.length; i < l; i++) {\n f(xs[i], i);\n }\n}\n\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/readable-stream/lib/_stream_readable.js\n// module id = 369\n// module chunks = 0","'use strict';\n\nif (!process.version ||\n process.version.indexOf('v0.') === 0 ||\n process.version.indexOf('v1.') === 0 && process.version.indexOf('v1.8.') !== 0) {\n module.exports = nextTick;\n} else {\n module.exports = process.nextTick;\n}\n\nfunction nextTick(fn, arg1, arg2, arg3) {\n if (typeof fn !== 'function') {\n throw new TypeError('\"callback\" argument must be a function');\n }\n var len = arguments.length;\n var args, i;\n switch (len) {\n case 0:\n case 1:\n return process.nextTick(fn);\n case 2:\n return process.nextTick(function afterTickOne() {\n fn.call(null, arg1);\n });\n case 3:\n return process.nextTick(function afterTickTwo() {\n fn.call(null, arg1, arg2);\n });\n case 4:\n return process.nextTick(function afterTickThree() {\n fn.call(null, arg1, arg2, arg3);\n });\n default:\n args = new Array(len - 1);\n i = 0;\n while (i < args.length) {\n args[i++] = arguments[i];\n }\n return process.nextTick(function afterTick() {\n fn.apply(null, args);\n });\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/process-nextick-args/index.js\n// module id = 370\n// module chunks = 0","'use strict';\n\nvar buffer = require('buffer');\nvar Buffer = buffer.Buffer;\nvar SlowBuffer = buffer.SlowBuffer;\nvar MAX_LEN = buffer.kMaxLength || 2147483647;\nexports.alloc = function alloc(size, fill, encoding) {\n if (typeof Buffer.alloc === 'function') {\n return Buffer.alloc(size, fill, encoding);\n }\n if (typeof encoding === 'number') {\n throw new TypeError('encoding must not be number');\n }\n if (typeof size !== 'number') {\n throw new TypeError('size must be a number');\n }\n if (size > MAX_LEN) {\n throw new RangeError('size is too large');\n }\n var enc = encoding;\n var _fill = fill;\n if (_fill === undefined) {\n enc = undefined;\n _fill = 0;\n }\n var buf = new Buffer(size);\n if (typeof _fill === 'string') {\n var fillBuf = new Buffer(_fill, enc);\n var flen = fillBuf.length;\n var i = -1;\n while (++i < size) {\n buf[i] = fillBuf[i % flen];\n }\n } else {\n buf.fill(_fill);\n }\n return buf;\n}\nexports.allocUnsafe = function allocUnsafe(size) {\n if (typeof Buffer.allocUnsafe === 'function') {\n return Buffer.allocUnsafe(size);\n }\n if (typeof size !== 'number') {\n throw new TypeError('size must be a number');\n }\n if (size > MAX_LEN) {\n throw new RangeError('size is too large');\n }\n return new Buffer(size);\n}\nexports.from = function from(value, encodingOrOffset, length) {\n if (typeof Buffer.from === 'function' && (!global.Uint8Array || Uint8Array.from !== Buffer.from)) {\n return Buffer.from(value, encodingOrOffset, length);\n }\n if (typeof value === 'number') {\n throw new TypeError('\"value\" argument must not be a number');\n }\n if (typeof value === 'string') {\n return new Buffer(value, encodingOrOffset);\n }\n if (typeof ArrayBuffer !== 'undefined' && value instanceof ArrayBuffer) {\n var offset = encodingOrOffset;\n if (arguments.length === 1) {\n return new Buffer(value);\n }\n if (typeof offset === 'undefined') {\n offset = 0;\n }\n var len = length;\n if (typeof len === 'undefined') {\n len = value.byteLength - offset;\n }\n if (offset >= value.byteLength) {\n throw new RangeError('\\'offset\\' is out of bounds');\n }\n if (len > value.byteLength - offset) {\n throw new RangeError('\\'length\\' is out of bounds');\n }\n return new Buffer(value.slice(offset, offset + len));\n }\n if (Buffer.isBuffer(value)) {\n var out = new Buffer(value.length);\n value.copy(out, 0, 0, value.length);\n return out;\n }\n if (value) {\n if (Array.isArray(value) || (typeof ArrayBuffer !== 'undefined' && value.buffer instanceof ArrayBuffer) || 'length' in value) {\n return new Buffer(value);\n }\n if (value.type === 'Buffer' && Array.isArray(value.data)) {\n return new Buffer(value.data);\n }\n }\n\n throw new TypeError('First argument must be a string, Buffer, ' + 'ArrayBuffer, Array, or array-like object.');\n}\nexports.allocUnsafeSlow = function allocUnsafeSlow(size) {\n if (typeof Buffer.allocUnsafeSlow === 'function') {\n return Buffer.allocUnsafeSlow(size);\n }\n if (typeof size !== 'number') {\n throw new TypeError('size must be a number');\n }\n if (size >= MAX_LEN) {\n throw new RangeError('size is too large');\n }\n return new SlowBuffer(size);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/buffer-shims/index.js\n// module id = 372\n// module chunks = 0","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\n\nfunction isArray(arg) {\n if (Array.isArray) {\n return Array.isArray(arg);\n }\n return objectToString(arg) === '[object Array]';\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = Buffer.isBuffer;\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/core-util-is/lib/util.js\n// module id = 373\n// module chunks = 0","/* (ignored) */\n\n\n//////////////////\n// WEBPACK FOOTER\n// util (ignored)\n// module id = 374\n// module chunks = 0","'use strict';\n\nvar Buffer = require('buffer').Buffer;\n/**/\nvar bufferShim = require('buffer-shims');\n/* */\n\nmodule.exports = BufferList;\n\nfunction BufferList() {\n this.head = null;\n this.tail = null;\n this.length = 0;\n}\n\nBufferList.prototype.push = function (v) {\n var entry = { data: v, next: null };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n};\n\nBufferList.prototype.unshift = function (v) {\n var entry = { data: v, next: this.head };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n};\n\nBufferList.prototype.shift = function () {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n};\n\nBufferList.prototype.clear = function () {\n this.head = this.tail = null;\n this.length = 0;\n};\n\nBufferList.prototype.join = function (s) {\n if (this.length === 0) return '';\n var p = this.head;\n var ret = '' + p.data;\n while (p = p.next) {\n ret += s + p.data;\n }return ret;\n};\n\nBufferList.prototype.concat = function (n) {\n if (this.length === 0) return bufferShim.alloc(0);\n if (this.length === 1) return this.head.data;\n var ret = bufferShim.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n p.data.copy(ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/readable-stream/lib/internal/streams/BufferList.js\n// module id = 375\n// module chunks = 0","// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n'use strict';\n\n/**/\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n keys.push(key);\n }return keys;\n};\n/* */\n\nmodule.exports = Duplex;\n\n/**/\nvar processNextTick = require('process-nextick-args');\n/* */\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/* */\n\nvar Readable = require('./_stream_readable');\nvar Writable = require('./_stream_writable');\n\nutil.inherits(Duplex, Readable);\n\nvar keys = objectKeys(Writable.prototype);\nfor (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n}\n\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n\n Readable.call(this, options);\n Writable.call(this, options);\n\n if (options && options.readable === false) this.readable = false;\n\n if (options && options.writable === false) this.writable = false;\n\n this.allowHalfOpen = true;\n if (options && options.allowHalfOpen === false) this.allowHalfOpen = false;\n\n this.once('end', onend);\n}\n\n// the no-half-open enforcer\nfunction onend() {\n // if we allow half-open state, or if the writable side ended,\n // then we're ok.\n if (this.allowHalfOpen || this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n processNextTick(onEndNT, this);\n}\n\nfunction onEndNT(self) {\n self.end();\n}\n\nfunction forEach(xs, f) {\n for (var i = 0, l = xs.length; i < l; i++) {\n f(xs[i], i);\n }\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/readable-stream/lib/_stream_duplex.js\n// module id = 376\n// module chunks = 0","// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n'use strict';\n\nmodule.exports = Writable;\n\n/**/\nvar processNextTick = require('process-nextick-args');\n/* */\n\n/**/\nvar asyncWrite = !process.browser && ['v0.10', 'v0.9.'].indexOf(process.version.slice(0, 5)) > -1 ? setImmediate : processNextTick;\n/* */\n\n/**/\nvar Duplex;\n/* */\n\nWritable.WritableState = WritableState;\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/* */\n\n/**/\nvar internalUtil = {\n deprecate: require('util-deprecate')\n};\n/* */\n\n/**/\nvar Stream;\n(function () {\n try {\n Stream = require('st' + 'ream');\n } catch (_) {} finally {\n if (!Stream) Stream = require('events').EventEmitter;\n }\n})();\n/* */\n\nvar Buffer = require('buffer').Buffer;\n/**/\nvar bufferShim = require('buffer-shims');\n/* */\n\nutil.inherits(Writable, Stream);\n\nfunction nop() {}\n\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\nfunction WritableState(options, stream) {\n Duplex = Duplex || require('./_stream_duplex');\n\n options = options || {};\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n\n if (stream instanceof Duplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n var hwm = options.highWaterMark;\n var defaultHwm = this.objectMode ? 16 : 16 * 1024;\n this.highWaterMark = hwm || hwm === 0 ? hwm : defaultHwm;\n\n // cast to ints.\n this.highWaterMark = ~ ~this.highWaterMark;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\n\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function () {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function (object) {\n if (realHasInstance.call(this, object)) return true;\n\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function (object) {\n return object instanceof this;\n };\n}\n\nfunction Writable(options) {\n Duplex = Duplex || require('./_stream_duplex');\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n if (!realHasInstance.call(Writable, this) && !(this instanceof Duplex)) {\n return new Writable(options);\n }\n\n this._writableState = new WritableState(options, this);\n\n // legacy.\n this.writable = true;\n\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n\n if (typeof options.writev === 'function') this._writev = options.writev;\n }\n\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n this.emit('error', new Error('Cannot pipe, not readable'));\n};\n\nfunction writeAfterEnd(stream, cb) {\n var er = new Error('write after end');\n // TODO: defer error events consistently everywhere, not just the cb\n stream.emit('error', er);\n processNextTick(cb, er);\n}\n\n// If we get something that is not a buffer, string, null, or undefined,\n// and we're not in objectMode, then that's an error.\n// Otherwise stream chunks are all considered to be of length=1, and the\n// watermarks determine how many objects to keep in the buffer, rather than\n// how many bytes or characters.\nfunction validChunk(stream, state, chunk, cb) {\n var valid = true;\n var er = false;\n // Always throw error if a null is written\n // if we are not in object mode then throw\n // if it is not a buffer, string, or undefined.\n if (chunk === null) {\n er = new TypeError('May not write null values to stream');\n } else if (!Buffer.isBuffer(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new TypeError('Invalid non-string/buffer chunk');\n }\n if (er) {\n stream.emit('error', er);\n processNextTick(cb, er);\n valid = false;\n }\n return valid;\n}\n\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (Buffer.isBuffer(chunk)) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n\n if (typeof cb !== 'function') cb = nop;\n\n if (state.ended) writeAfterEnd(this, cb);else if (validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, chunk, encoding, cb);\n }\n\n return ret;\n};\n\nWritable.prototype.cork = function () {\n var state = this._writableState;\n\n state.corked++;\n};\n\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n\n if (state.corked) {\n state.corked--;\n\n if (!state.writing && !state.corked && !state.finished && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\n\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new TypeError('Unknown encoding: ' + encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\n\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = bufferShim.from(chunk, encoding);\n }\n return chunk;\n}\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, chunk, encoding, cb) {\n chunk = decodeChunk(state, chunk, encoding);\n\n if (Buffer.isBuffer(chunk)) encoding = 'buffer';\n var len = state.objectMode ? 1 : chunk.length;\n\n state.length += len;\n\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = new WriteReq(chunk, encoding, cb);\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n\n return ret;\n}\n\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\n\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n if (sync) processNextTick(cb, er);else cb(er);\n\n stream._writableState.errorEmitted = true;\n stream.emit('error', er);\n}\n\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\n\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n\n onwriteStateUpdate(state);\n\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state);\n\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n\n if (sync) {\n /**/\n asyncWrite(afterWrite, stream, state, finished, cb);\n /* */\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\n\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n\n var count = 0;\n while (entry) {\n buffer[count] = entry;\n entry = entry.next;\n count += 1;\n }\n\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n\n if (entry === null) state.lastBufferedRequest = null;\n }\n\n state.bufferedRequestCount = 0;\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\n\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new Error('_write() is not implemented'));\n};\n\nWritable.prototype._writev = null;\n\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending && !state.finished) endWritable(this, state, cb);\n};\n\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\n\nfunction prefinish(stream, state) {\n if (!state.prefinished) {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n}\n\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n if (state.pendingcb === 0) {\n prefinish(stream, state);\n state.finished = true;\n stream.emit('finish');\n } else {\n prefinish(stream, state);\n }\n }\n return need;\n}\n\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) processNextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n\n this.next = null;\n this.entry = null;\n\n this.finish = function (err) {\n var entry = _this.entry;\n _this.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n if (state.corkedRequestsFree) {\n state.corkedRequestsFree.next = _this;\n } else {\n state.corkedRequestsFree = _this;\n }\n };\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/readable-stream/lib/_stream_writable.js\n// module id = 377\n// module chunks = 0","\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!global.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = global.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/util-deprecate/browser.js\n// module id = 378\n// module chunks = 0","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar Buffer = require('buffer').Buffer;\n\nvar isBufferEncoding = Buffer.isEncoding\n || function(encoding) {\n switch (encoding && encoding.toLowerCase()) {\n case 'hex': case 'utf8': case 'utf-8': case 'ascii': case 'binary': case 'base64': case 'ucs2': case 'ucs-2': case 'utf16le': case 'utf-16le': case 'raw': return true;\n default: return false;\n }\n }\n\n\nfunction assertEncoding(encoding) {\n if (encoding && !isBufferEncoding(encoding)) {\n throw new Error('Unknown encoding: ' + encoding);\n }\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters. CESU-8 is handled as part of the UTF-8 encoding.\n//\n// @TODO Handling all encodings inside a single object makes it very difficult\n// to reason about this code, so it should be split up in the future.\n// @TODO There should be a utf8-strict encoding that rejects invalid UTF-8 code\n// points as used by CESU-8.\nvar StringDecoder = exports.StringDecoder = function(encoding) {\n this.encoding = (encoding || 'utf8').toLowerCase().replace(/[-_]/, '');\n assertEncoding(encoding);\n switch (this.encoding) {\n case 'utf8':\n // CESU-8 represents each of Surrogate Pair by 3-bytes\n this.surrogateSize = 3;\n break;\n case 'ucs2':\n case 'utf16le':\n // UTF-16 represents each of Surrogate Pair by 2-bytes\n this.surrogateSize = 2;\n this.detectIncompleteChar = utf16DetectIncompleteChar;\n break;\n case 'base64':\n // Base-64 stores 3 bytes in 4 chars, and pads the remainder.\n this.surrogateSize = 3;\n this.detectIncompleteChar = base64DetectIncompleteChar;\n break;\n default:\n this.write = passThroughWrite;\n return;\n }\n\n // Enough space to store all bytes of a single character. UTF-8 needs 4\n // bytes, but CESU-8 may require up to 6 (3 bytes per surrogate).\n this.charBuffer = new Buffer(6);\n // Number of bytes received for the current incomplete multi-byte character.\n this.charReceived = 0;\n // Number of bytes expected for the current incomplete multi-byte character.\n this.charLength = 0;\n};\n\n\n// write decodes the given buffer and returns it as JS string that is\n// guaranteed to not contain any partial multi-byte characters. Any partial\n// character found at the end of the buffer is buffered up, and will be\n// returned when calling write again with the remaining bytes.\n//\n// Note: Converting a Buffer containing an orphan surrogate to a String\n// currently works, but converting a String to a Buffer (via `new Buffer`, or\n// Buffer#write) will replace incomplete surrogates with the unicode\n// replacement character. See https://codereview.chromium.org/121173009/ .\nStringDecoder.prototype.write = function(buffer) {\n var charStr = '';\n // if our last write ended with an incomplete multibyte character\n while (this.charLength) {\n // determine how many remaining bytes this buffer has to offer for this char\n var available = (buffer.length >= this.charLength - this.charReceived) ?\n this.charLength - this.charReceived :\n buffer.length;\n\n // add the new bytes to the char buffer\n buffer.copy(this.charBuffer, this.charReceived, 0, available);\n this.charReceived += available;\n\n if (this.charReceived < this.charLength) {\n // still not enough chars in this buffer? wait for more ...\n return '';\n }\n\n // remove bytes belonging to the current character from the buffer\n buffer = buffer.slice(available, buffer.length);\n\n // get the character that was split\n charStr = this.charBuffer.slice(0, this.charLength).toString(this.encoding);\n\n // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character\n var charCode = charStr.charCodeAt(charStr.length - 1);\n if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n this.charLength += this.surrogateSize;\n charStr = '';\n continue;\n }\n this.charReceived = this.charLength = 0;\n\n // if there are no more bytes in this buffer, just emit our char\n if (buffer.length === 0) {\n return charStr;\n }\n break;\n }\n\n // determine and set charLength / charReceived\n this.detectIncompleteChar(buffer);\n\n var end = buffer.length;\n if (this.charLength) {\n // buffer the incomplete character bytes we got\n buffer.copy(this.charBuffer, 0, buffer.length - this.charReceived, end);\n end -= this.charReceived;\n }\n\n charStr += buffer.toString(this.encoding, 0, end);\n\n var end = charStr.length - 1;\n var charCode = charStr.charCodeAt(end);\n // CESU-8: lead surrogate (D800-DBFF) is also the incomplete character\n if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n var size = this.surrogateSize;\n this.charLength += size;\n this.charReceived += size;\n this.charBuffer.copy(this.charBuffer, size, 0, size);\n buffer.copy(this.charBuffer, 0, 0, size);\n return charStr.substring(0, end);\n }\n\n // or just emit the charStr\n return charStr;\n};\n\n// detectIncompleteChar determines if there is an incomplete UTF-8 character at\n// the end of the given buffer. If so, it sets this.charLength to the byte\n// length that character, and sets this.charReceived to the number of bytes\n// that are available for this character.\nStringDecoder.prototype.detectIncompleteChar = function(buffer) {\n // determine how many bytes we have to check at the end of this buffer\n var i = (buffer.length >= 3) ? 3 : buffer.length;\n\n // Figure out if one of the last i bytes of our buffer announces an\n // incomplete char.\n for (; i > 0; i--) {\n var c = buffer[buffer.length - i];\n\n // See http://en.wikipedia.org/wiki/UTF-8#Description\n\n // 110XXXXX\n if (i == 1 && c >> 5 == 0x06) {\n this.charLength = 2;\n break;\n }\n\n // 1110XXXX\n if (i <= 2 && c >> 4 == 0x0E) {\n this.charLength = 3;\n break;\n }\n\n // 11110XXX\n if (i <= 3 && c >> 3 == 0x1E) {\n this.charLength = 4;\n break;\n }\n }\n this.charReceived = i;\n};\n\nStringDecoder.prototype.end = function(buffer) {\n var res = '';\n if (buffer && buffer.length)\n res = this.write(buffer);\n\n if (this.charReceived) {\n var cr = this.charReceived;\n var buf = this.charBuffer;\n var enc = this.encoding;\n res += buf.slice(0, cr).toString(enc);\n }\n\n return res;\n};\n\nfunction passThroughWrite(buffer) {\n return buffer.toString(this.encoding);\n}\n\nfunction utf16DetectIncompleteChar(buffer) {\n this.charReceived = buffer.length % 2;\n this.charLength = this.charReceived ? 2 : 0;\n}\n\nfunction base64DetectIncompleteChar(buffer) {\n this.charReceived = buffer.length % 3;\n this.charLength = this.charReceived ? 3 : 0;\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/string_decoder/index.js\n// module id = 379\n// module chunks = 0","// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n'use strict';\n\nmodule.exports = Transform;\n\nvar Duplex = require('./_stream_duplex');\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/* */\n\nutil.inherits(Transform, Duplex);\n\nfunction TransformState(stream) {\n this.afterTransform = function (er, data) {\n return afterTransform(stream, er, data);\n };\n\n this.needTransform = false;\n this.transforming = false;\n this.writecb = null;\n this.writechunk = null;\n this.writeencoding = null;\n}\n\nfunction afterTransform(stream, er, data) {\n var ts = stream._transformState;\n ts.transforming = false;\n\n var cb = ts.writecb;\n\n if (!cb) return stream.emit('error', new Error('no writecb in Transform class'));\n\n ts.writechunk = null;\n ts.writecb = null;\n\n if (data !== null && data !== undefined) stream.push(data);\n\n cb(er);\n\n var rs = stream._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n stream._read(rs.highWaterMark);\n }\n}\n\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n\n Duplex.call(this, options);\n\n this._transformState = new TransformState(this);\n\n var stream = this;\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.once('prefinish', function () {\n if (typeof this._flush === 'function') this._flush(function (er, data) {\n done(stream, er, data);\n });else done(stream);\n });\n}\n\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n throw new Error('_transform() is not implemented');\n};\n\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n\n if (ts.writechunk !== null && ts.writecb && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\n\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n\n if (data !== null && data !== undefined) stream.push(data);\n\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n var ws = stream._writableState;\n var ts = stream._transformState;\n\n if (ws.length) throw new Error('Calling transform done when ws.length != 0');\n\n if (ts.transforming) throw new Error('Calling transform done when still transforming');\n\n return stream.push(null);\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/readable-stream/lib/_stream_transform.js\n// module id = 380\n// module chunks = 0","// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n'use strict';\n\nmodule.exports = PassThrough;\n\nvar Transform = require('./_stream_transform');\n\n/**/\nvar util = require('core-util-is');\nutil.inherits = require('inherits');\n/* */\n\nutil.inherits(PassThrough, Transform);\n\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n\n Transform.call(this, options);\n}\n\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/readable-stream/lib/_stream_passthrough.js\n// module id = 381\n// module chunks = 0","module.exports = require(\"./lib/_stream_writable.js\")\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/readable-stream/writable.js\n// module id = 382\n// module chunks = 0","module.exports = require(\"./lib/_stream_duplex.js\")\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/readable-stream/duplex.js\n// module id = 383\n// module chunks = 0","module.exports = require(\"./lib/_stream_transform.js\")\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/readable-stream/transform.js\n// module id = 384\n// module chunks = 0","module.exports = require(\"./lib/_stream_passthrough.js\")\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/readable-stream/passthrough.js\n// module id = 385\n// module chunks = 0","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar formatRegExp = /%[sdj%]/g;\nexports.format = function(f) {\n if (!isString(f)) {\n var objects = [];\n for (var i = 0; i < arguments.length; i++) {\n objects.push(inspect(arguments[i]));\n }\n return objects.join(' ');\n }\n\n var i = 1;\n var args = arguments;\n var len = args.length;\n var str = String(f).replace(formatRegExp, function(x) {\n if (x === '%%') return '%';\n if (i >= len) return x;\n switch (x) {\n case '%s': return String(args[i++]);\n case '%d': return Number(args[i++]);\n case '%j':\n try {\n return JSON.stringify(args[i++]);\n } catch (_) {\n return '[Circular]';\n }\n default:\n return x;\n }\n });\n for (var x = args[i]; i < len; x = args[++i]) {\n if (isNull(x) || !isObject(x)) {\n str += ' ' + x;\n } else {\n str += ' ' + inspect(x);\n }\n }\n return str;\n};\n\n\n// Mark that a method should not be used.\n// Returns a modified function which warns once by default.\n// If --no-deprecation is set, then it is a no-op.\nexports.deprecate = function(fn, msg) {\n // Allow for deprecating things in the process of starting up.\n if (isUndefined(global.process)) {\n return function() {\n return exports.deprecate(fn, msg).apply(this, arguments);\n };\n }\n\n if (process.noDeprecation === true) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (process.throwDeprecation) {\n throw new Error(msg);\n } else if (process.traceDeprecation) {\n console.trace(msg);\n } else {\n console.error(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n};\n\n\nvar debugs = {};\nvar debugEnviron;\nexports.debuglog = function(set) {\n if (isUndefined(debugEnviron))\n debugEnviron = process.env.NODE_DEBUG || '';\n set = set.toUpperCase();\n if (!debugs[set]) {\n if (new RegExp('\\\\b' + set + '\\\\b', 'i').test(debugEnviron)) {\n var pid = process.pid;\n debugs[set] = function() {\n var msg = exports.format.apply(exports, arguments);\n console.error('%s %d: %s', set, pid, msg);\n };\n } else {\n debugs[set] = function() {};\n }\n }\n return debugs[set];\n};\n\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n exports._extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\nexports.inspect = inspect;\n\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== exports.inspect &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var numLinesEst = 0;\n var length = output.reduce(function(prev, cur) {\n numLinesEst++;\n if (cur.indexOf('\\n') >= 0) numLinesEst++;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\nexports.isArray = isArray;\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\nexports.isBoolean = isBoolean;\n\nfunction isNull(arg) {\n return arg === null;\n}\nexports.isNull = isNull;\n\nfunction isNullOrUndefined(arg) {\n return arg == null;\n}\nexports.isNullOrUndefined = isNullOrUndefined;\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\nexports.isNumber = isNumber;\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\nexports.isString = isString;\n\nfunction isSymbol(arg) {\n return typeof arg === 'symbol';\n}\nexports.isSymbol = isSymbol;\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\nexports.isUndefined = isUndefined;\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\nexports.isRegExp = isRegExp;\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\nexports.isObject = isObject;\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\nexports.isDate = isDate;\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\nexports.isError = isError;\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\nexports.isFunction = isFunction;\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\nexports.isPrimitive = isPrimitive;\n\nexports.isBuffer = require('./support/isBuffer');\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\n\nfunction pad(n) {\n return n < 10 ? '0' + n.toString(10) : n.toString(10);\n}\n\n\nvar months = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep',\n 'Oct', 'Nov', 'Dec'];\n\n// 26 Feb 16:19:34\nfunction timestamp() {\n var d = new Date();\n var time = [pad(d.getHours()),\n pad(d.getMinutes()),\n pad(d.getSeconds())].join(':');\n return [d.getDate(), months[d.getMonth()], time].join(' ');\n}\n\n\n// log is just a thin wrapper to console.log that prepends a timestamp\nexports.log = function() {\n console.log('%s - %s', timestamp(), exports.format.apply(exports, arguments));\n};\n\n\n/**\n * Inherit the prototype methods from one constructor into another.\n *\n * The Function.prototype.inherits from lang.js rewritten as a standalone\n * function (not on Function.prototype). NOTE: If this file is to be loaded\n * during bootstrapping this function needs to be rewritten using some native\n * functions as prototype setup using normal JavaScript does not work as\n * expected during bootstrapping (see mirror.js in r114903).\n *\n * @param {function} ctor Constructor function which needs to inherit the\n * prototype.\n * @param {function} superCtor Constructor function to inherit prototype from.\n */\nexports.inherits = require('inherits');\n\nexports._extend = function(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n};\n\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/util/util.js\n// module id = 386\n// module chunks = 0","module.exports = function isBuffer(arg) {\n return arg && typeof arg === 'object'\n && typeof arg.copy === 'function'\n && typeof arg.fill === 'function'\n && typeof arg.readUInt8 === 'function';\n}\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/util/support/isBufferBrowser.js\n// module id = 387\n// module chunks = 0","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/util/~/inherits/inherits_browser.js\n// module id = 388\n// module chunks = 0"],"sourceRoot":""}
\ No newline at end of file
diff --git a/assets/compiled_sprite.svg b/assets/compiled_sprite.svg
index 625da678..ab5bca21 100644
--- a/assets/compiled_sprite.svg
+++ b/assets/compiled_sprite.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/images/icons/kbd__mouse--scroll-rigth.svg b/images/icons/kbd__mouse--scroll-rigth.svg
deleted file mode 100644
index 5a019e8d..00000000
--- a/images/icons/kbd__mouse--scroll-rigth.svg
+++ /dev/null
@@ -1,126 +0,0 @@
-
-
-
-
-
-
-
-
-
- image/svg+xml
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/index.html b/index.html
index 0897d5c9..baaf9d8b 100644
--- a/index.html
+++ b/index.html
@@ -7,8 +7,8 @@
-
-
+
+
@@ -26,8 +26,6 @@ j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
-
-
-
+