UNPKG

jw-ng-forward

Version:

Temporary package. The default solution for those that want to write Angular 2.x style code in Angular 1.x

101 lines (100 loc) 3.9 kB
"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 __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); var directive_1 = require("../decorators/directive"); var inject_1 = require("../decorators/inject"); var parse_selector_1 = __importDefault(require("../util/parse-selector")); var helpers_1 = require("../util/helpers"); var eventList = new Set([ 'click', 'dblclick', 'mousedown', 'mouseup', 'mouseover', 'mouseout', 'mousemove', 'mouseenter', 'mouseleave', 'keydown', 'keyup', 'keypress', 'submit', 'focus', 'blur', 'copy', 'cut', 'paste', 'change', 'dragstart', 'drag', 'dragenter', 'dragleave', 'dragover', 'drop', 'dragend', 'error', 'input', 'load', 'wheel', 'scroll' ]); function resolve() { var directives = []; eventList.forEach(function (event) { var selector = "[(" + helpers_1.dasherize(event) + ")]"; var EventHandler = (function () { function EventHandler($parse, $element, $attrs, $scope) { var _this = this; this.$element = $element; this.$scope = $scope; var attrName = parse_selector_1.default(selector).name; this.expression = $parse($attrs[attrName]); $element.on(event, function (e) { return _this.eventHandler(e); }); $scope.$on('$destroy', function () { return _this.onDestroy(); }); } EventHandler.prototype.eventHandler = function ($event) { if ($event === void 0) { $event = {}; } if ($event.detail && $event.detail._output !== undefined) { $event = $event.detail._output; } if ($event && $event.originalEvent && $event.originalEvent.detail && $event.originalEvent.detail._output) { $event = $event.detail._output; } if ($event && $event.originalEvent && $event.originalEvent.detail) $event = $event.originalEvent.detail._output; this.expression(this.$scope, { $event: $event }); this.$scope.$applyAsync(); }; EventHandler.prototype.onDestroy = function () { this.$element.off(event); }; EventHandler = __decorate([ directive_1.Directive({ selector: selector }), inject_1.Inject('$parse', '$element', '$attrs', '$scope'), __metadata("design:paramtypes", [Function, Object, Object, Object]) ], EventHandler); return EventHandler; }()); directives.push(EventHandler); }); return directives; } function add() { var customEvents = []; for (var _i = 0; _i < arguments.length; _i++) { customEvents[_i] = arguments[_i]; } customEvents.forEach(function (event) { return eventList.add(event); }); } exports.events = { resolve: resolve, add: add };