Socket
Socket
Sign inDemoInstall

ng2-konva

Package Overview
Dependencies
4
Maintainers
1
Versions
28
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 2.0.6 to 2.0.7

esm2015/lib/components/core-shape.component.js

856

bundles/ng2-konva.umd.js
(function (global, factory) {
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common')) :
typeof define === 'function' && define.amd ? define(['exports', '@angular/core', '@angular/common'], factory) :
(factory((global['ng2-konva'] = {}),global.ng.core,global.ng.common));
typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@angular/core'), require('@angular/common')) :
typeof define === 'function' && define.amd ? define('ng2-konva', ['exports', '@angular/core', '@angular/common'], factory) :
(factory((global['ng2-konva'] = {}),global.ng.core,global.ng.common));
}(this, (function (exports,core,common) { 'use strict';
/**
* @param {?} node
* @return {?}
*/
function updatePicture(node) {
var /** @type {?} */ drawingNode = node.getLayer() || node.getStage();
if (drawingNode) {
drawingNode.batchDraw();
}
}
// adapted FROM: https://github.com/lavrton/react-konva/blob/master/src/react-konva-fiber.js
/**
* @param {?} component
* @param {?=} props
* @param {?=} oldProps
* @return {?}
*/
function applyNodeProps(component, props, oldProps) {
if (props === void 0) { props = {}; }
if (oldProps === void 0) { oldProps = {}; }
if ('id' in props) {
// tslint:disable-next-line:max-line-length
var /** @type {?} */ message = "ng2-konva: You are using \"id\" attribute for Konva node. In some very rare cases it may produce bugs. Currently we recommend not to use it and use \"name\" attribute instead.";
console.warn(message);
}
var /** @type {?} */ instance = component._stage;
var /** @type {?} */ updatedProps = {};
var /** @type {?} */ hasUpdates = false;
Object.keys(oldProps).forEach(function (key) {
var /** @type {?} */ isEvent = key.slice(0, 2) === 'on';
var /** @type {?} */ propChanged = oldProps[key] !== props[key];
if (isEvent && propChanged) {
var /** @type {?} */ eventName = key.substr(2).toLowerCase();
if (eventName.substr(0, 7) === 'content') {
eventName =
'content' +
eventName.substr(7, 1).toUpperCase() +
eventName.substr(8);
}
instance.off(eventName, oldProps[key]);
/*! *****************************************************************************
Copyright (c) Microsoft Corporation. All rights reserved.
Licensed under the Apache License, Version 2.0 (the "License"); you may not use
this file except in compliance with the License. You may obtain a copy of the
License at http://www.apache.org/licenses/LICENSE-2.0
THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
MERCHANTABLITY OR NON-INFRINGEMENT.
See the Apache Version 2.0 License for specific language governing permissions
and limitations under the License.
***************************************************************************** */
var __assign = Object.assign || function __assign(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s)
if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
var /** @type {?} */ toRemove = !props.hasOwnProperty(key);
if (toRemove) {
instance.setAttr(key, undefined);
}
});
Object.keys(props).forEach(function (key) {
var /** @type {?} */ isEvent = key.slice(0, 2) === 'on';
var /** @type {?} */ toAdd = oldProps[key] !== props[key];
if (isEvent && toAdd) {
var /** @type {?} */ eventName = key.substr(2).toLowerCase();
if (eventName.substr(0, 7) === 'content') {
eventName =
'content' +
eventName.substr(7, 1).toUpperCase() +
eventName.substr(8);
}
if (props[key]) {
instance.off(eventName);
instance.on(eventName, function (evt) {
props[key](evt.target.AngularComponent, evt);
});
}
}
if (!isEvent &&
(props[key] !== oldProps[key] || props[key] !== instance.getAttr(key))) {
hasUpdates = true;
updatedProps[key] = props[key];
}
});
if (hasUpdates) {
instance.setAttrs(updatedProps);
updatePicture(instance);
var /** @type {?} */ val_1;
Object.keys(updatedProps).forEach(function (prop) {
val_1 = updatedProps[prop];
if (val_1 instanceof Image && !val_1.complete) {
var /** @type {?} */ node_1 = instance;
val_1.addEventListener('load', function () {
var /** @type {?} */ layer = node_1.getLayer();
if (layer) {
layer.batchDraw();
}
});
}
});
}
}
/**
* @param {?} str
* @return {?}
*/
function camelize(str) {
return str
.replace(/(?:^\w|[A-Z]|\b\w)/g, function (letter, index) {
return index == 0 ? letter.toLowerCase() : letter.toUpperCase();
})
.replace(/\s+/g, '');
}
/**
* @param {?} string
* @return {?}
*/
function capitalizeFirstLetter(string) {
return string.charAt(0).toUpperCase() + string.slice(1);
}
/**
* @param {?} componentTag
* @return {?}
*/
function getName(componentTag) {
return capitalizeFirstLetter(camelize(componentTag.substr(3).replace('-', ' ')));
}
/**
* @param {?} instance
* @return {?}
*/
function createListener(instance) {
var /** @type {?} */ output = {};
[
'click',
'dblclick',
'mouseover',
'mouseout',
'mousemove',
'tap',
'dbltap',
'touchstart',
'scaleXChange',
'fillChange',
'dragstart',
'dragmove',
'dragend',
].forEach(function (eventName) {
if (instance[eventName].observers.length) {
output['on' + eventName] = instance[eventName].emit.bind(instance[eventName]);
}
});
return output;
}
var CoreShapeComponent = (function () {
/**
* @param {?} elementRef
*/
function CoreShapeComponent(elementRef) {
this.elementRef = elementRef;
this.shapes = new core.QueryList();
this.click = new core.EventEmitter();
this.dblclick = new core.EventEmitter();
this.mouseover = new core.EventEmitter();
this.mouseout = new core.EventEmitter();
this.mousemove = new core.EventEmitter();
this.tap = new core.EventEmitter();
this.dbltap = new core.EventEmitter();
this.touchstart = new core.EventEmitter();
this.scaleXChange = new core.EventEmitter();
this.fillChange = new core.EventEmitter();
this.dragstart = new core.EventEmitter();
this.dragmove = new core.EventEmitter();
this.dragend = new core.EventEmitter();
this.added = false;
this.cacheProps = {};
this._stage = {};
this.nameNode = getName(elementRef.nativeElement.localName);
}
/**
* @return {?}
*/
CoreShapeComponent.prototype.getStage = function () {
return this._stage;
return t;
};
/**
* @return {?}
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
CoreShapeComponent.prototype.getConfig = function () {
return this._config || {};
};
/**
* @param {?} node
* @return {?}
*/
CoreShapeComponent.prototype.ngOnInit = function () {
this.initKonva();
};
/**
* @return {?}
*/
CoreShapeComponent.prototype.initKonva = function () {
var _this = this;
var /** @type {?} */ ng = this;
var /** @type {?} */ NodeClass = Konva[this.nameNode];
this._stage = new NodeClass();
this._stage.AngularComponent = this;
var /** @type {?} */ animationStage = this._stage.to.bind(this._stage);
this._stage.to = function (newConfig) {
animationStage(newConfig);
setTimeout(function () {
Object.keys(ng._stage.attrs).forEach(function (key) {
if (typeof ng._stage.attrs[key] !== 'function') {
ng.config[key] = ng._stage.attrs[key];
}
});
}, 200);
};
if (this.config) {
this.config.subscribe(function (config) {
_this._config = config;
_this.uploadKonva(config);
});
function updatePicture(node) {
var /** @type {?} */ drawingNode = node.getLayer() || node.getStage();
if (drawingNode) {
drawingNode.batchDraw();
}
};
}
/**
* @param {?} config
* @return {?}
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
CoreShapeComponent.prototype.uploadKonva = function (config) {
var /** @type {?} */ props = Object.assign({}, config, createListener(this));
applyNodeProps(this, props, this.cacheProps);
this.cacheProps = props;
};
/**
* @param {?} component
* @param {?=} props
* @param {?=} oldProps
* @return {?}
*/
CoreShapeComponent.prototype.ngAfterContentInit = function () {
var _this = this;
this.shapes.forEach(function (item) {
if (_this !== item) {
item.added = true;
_this._stage.add(item.getStage());
updatePicture(_this._stage);
function applyNodeProps(component, props, oldProps) {
if (props === void 0) {
props = {};
}
if (oldProps === void 0) {
oldProps = {};
}
if ('id' in props) {
// tslint:disable-next-line:max-line-length
var /** @type {?} */ message = "ng2-konva: You are using \"id\" attribute for Konva node. In some very rare cases it may produce bugs. Currently we recommend not to use it and use \"name\" attribute instead.";
console.warn(message);
}
var /** @type {?} */ instance = component._stage;
var /** @type {?} */ updatedProps = {};
var /** @type {?} */ hasUpdates = false;
Object.keys(oldProps).forEach(function (key) {
var /** @type {?} */ isEvent = key.slice(0, 2) === 'on';
var /** @type {?} */ propChanged = oldProps[key] !== props[key];
if (isEvent && propChanged) {
var /** @type {?} */ eventName = key.substr(2).toLowerCase();
if (eventName.substr(0, 7) === 'content') {
eventName =
'content' +
eventName.substr(7, 1).toUpperCase() +
eventName.substr(8);
}
instance.off(eventName, oldProps[key]);
}
var /** @type {?} */ toRemove = !props.hasOwnProperty(key);
if (toRemove) {
instance.setAttr(key, undefined);
}
});
};
Object.keys(props).forEach(function (key) {
var /** @type {?} */ isEvent = key.slice(0, 2) === 'on';
var /** @type {?} */ toAdd = oldProps[key] !== props[key];
if (isEvent && toAdd) {
var /** @type {?} */ eventName = key.substr(2).toLowerCase();
if (eventName.substr(0, 7) === 'content') {
eventName =
'content' +
eventName.substr(7, 1).toUpperCase() +
eventName.substr(8);
}
if (props[key]) {
instance.off(eventName);
instance.on(eventName, function (evt) {
props[key](evt.target.AngularComponent, evt);
});
}
}
if (!isEvent &&
(props[key] !== oldProps[key] || props[key] !== instance.getAttr(key))) {
hasUpdates = true;
updatedProps[key] = props[key];
}
});
if (hasUpdates) {
instance.setAttrs(updatedProps);
updatePicture(instance);
var /** @type {?} */ val_1;
Object.keys(updatedProps).forEach(function (prop) {
val_1 = updatedProps[prop];
if (val_1 instanceof Image && !val_1.complete) {
var /** @type {?} */ node_1 = instance;
val_1.addEventListener('load', function () {
var /** @type {?} */ layer = node_1.getLayer();
if (layer) {
layer.batchDraw();
}
});
}
});
}
}
/**
* @return {?}
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
CoreShapeComponent.prototype.ngOnDestroy = function () {
this._stage.destroy();
};
return CoreShapeComponent;
}());
CoreShapeComponent.decorators = [
{ type: core.Component, args: [{
// tslint:disable-next-line:max-line-length
selector: 'ko-shape, ko-layer, ko-circle, ko-fastlayer, ko-group, ko-label, ko-rect, ko-ellipse, ko-wedge, ko-line, ko-sprite, ko-image, ko-text, ko-text-path, ko-star, ko-ring, ko-arc, ko-tag, ko-path, ko-regular-polygon, ko-arrow',
template: "<div><ng-content></ng-content></div>"
},] },
];
/**
* @nocollapse
*/
CoreShapeComponent.ctorParameters = function () { return [
{ type: core.ElementRef, },
]; };
CoreShapeComponent.propDecorators = {
'shapes': [{ type: core.ContentChildren, args: [CoreShapeComponent,] },],
'config': [{ type: core.Input },],
'click': [{ type: core.Output },],
'dblclick': [{ type: core.Output },],
'mouseover': [{ type: core.Output },],
'mouseout': [{ type: core.Output },],
'mousemove': [{ type: core.Output },],
'tap': [{ type: core.Output },],
'dbltap': [{ type: core.Output },],
'touchstart': [{ type: core.Output },],
'scaleXChange': [{ type: core.Output },],
'fillChange': [{ type: core.Output },],
'dragstart': [{ type: core.Output },],
'dragmove': [{ type: core.Output },],
'dragend': [{ type: core.Output },],
};
var StageComponent = (function () {
/**
* @param {?} elementRef
* @param {?} str
* @return {?}
*/
function StageComponent(elementRef) {
this.elementRef = elementRef;
this.shapes = new core.QueryList();
this.click = new core.EventEmitter();
this.dblclick = new core.EventEmitter();
this.mouseover = new core.EventEmitter();
this.mouseout = new core.EventEmitter();
this.mousemove = new core.EventEmitter();
this.tap = new core.EventEmitter();
this.dbltap = new core.EventEmitter();
this.touchstart = new core.EventEmitter();
this.scaleXChange = new core.EventEmitter();
this.fillChange = new core.EventEmitter();
this.dragstart = new core.EventEmitter();
this.dragmove = new core.EventEmitter();
this.dragend = new core.EventEmitter();
this.cacheProps = {};
function camelize(str) {
return str
.replace(/(?:^\w|[A-Z]|\b\w)/g, function (letter, index) {
return index == 0 ? letter.toLowerCase() : letter.toUpperCase();
})
.replace(/\s+/g, '');
}
/**
* @param {?} string
* @return {?}
*/
StageComponent.prototype.getStage = function () {
return this._stage || {};
};
function capitalizeFirstLetter(string) {
return string.charAt(0).toUpperCase() + string.slice(1);
}
/**
* @param {?} componentTag
* @return {?}
*/
StageComponent.prototype.getConfig = function () {
return this._config || {};
};
function getName(componentTag) {
return capitalizeFirstLetter(camelize(componentTag.substr(3).replace('-', ' ')));
}
/**
* @param {?} config
* @param {?} instance
* @return {?}
*/
StageComponent.prototype.uploadKonva = function (config) {
var /** @type {?} */ props = Object.assign({}, config, createListener(this));
applyNodeProps(this, props, this.cacheProps);
this.cacheProps = props;
};
function createListener(instance) {
var /** @type {?} */ output = {};
[
'click',
'dblclick',
'mouseover',
'mouseout',
'mousemove',
'tap',
'dbltap',
'touchstart',
'scaleXChange',
'fillChange',
'dragstart',
'dragmove',
'dragend',
].forEach(function (eventName) {
if (instance[eventName].observers.length) {
output['on' + eventName] = instance[eventName].emit.bind(instance[eventName]);
}
});
return output;
}
/**
* @return {?}
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
StageComponent.prototype.ngOnInit = function () {
var _this = this;
var /** @type {?} */ nodeContainer = this.elementRef.nativeElement;
this.config.subscribe(function (config) {
_this._config = config;
if (!_this._stage) {
_this._stage = new Konva.Stage({
width: config.width,
height: config.height,
container: nodeContainer
var CoreShapeComponent = (function () {
function CoreShapeComponent(elementRef) {
this.elementRef = elementRef;
this.shapes = new core.QueryList();
this.click = new core.EventEmitter();
this.dblclick = new core.EventEmitter();
this.mouseover = new core.EventEmitter();
this.mouseout = new core.EventEmitter();
this.mousemove = new core.EventEmitter();
this.tap = new core.EventEmitter();
this.dbltap = new core.EventEmitter();
this.touchstart = new core.EventEmitter();
this.scaleXChange = new core.EventEmitter();
this.fillChange = new core.EventEmitter();
this.dragstart = new core.EventEmitter();
this.dragmove = new core.EventEmitter();
this.dragend = new core.EventEmitter();
this.added = false;
this.cacheProps = {};
this._stage = {};
this.nameNode = getName(elementRef.nativeElement.localName);
}
/**
* @return {?}
*/
CoreShapeComponent.prototype.getStage = /**
* @return {?}
*/
function () {
return this._stage;
};
/**
* @return {?}
*/
CoreShapeComponent.prototype.getConfig = /**
* @return {?}
*/
function () {
return this._config || {};
};
/**
* @return {?}
*/
CoreShapeComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
this.initKonva();
};
/**
* @return {?}
*/
CoreShapeComponent.prototype.initKonva = /**
* @return {?}
*/
function () {
var _this = this;
var /** @type {?} */ ng = this;
var /** @type {?} */ NodeClass = Konva[this.nameNode];
this._stage = new NodeClass();
this._stage.AngularComponent = this;
var /** @type {?} */ animationStage = this._stage.to.bind(this._stage);
this._stage.to = function (newConfig) {
animationStage(newConfig);
setTimeout(function () {
Object.keys(ng._stage.attrs).forEach(function (key) {
if (typeof ng._stage.attrs[key] !== 'function') {
ng.config[key] = ng._stage.attrs[key];
}
});
}, 200);
};
if (this.config) {
this.config.subscribe(function (config) {
_this._config = config;
_this.uploadKonva(config);
});
}
};
/**
* @param {?} config
* @return {?}
*/
CoreShapeComponent.prototype.uploadKonva = /**
* @param {?} config
* @return {?}
*/
function (config) {
var /** @type {?} */ props = __assign({}, config, createListener(this));
applyNodeProps(this, props, this.cacheProps);
this.cacheProps = props;
};
/**
* @return {?}
*/
CoreShapeComponent.prototype.ngAfterContentInit = /**
* @return {?}
*/
function () {
var _this = this;
this.shapes.forEach(function (item) {
if (_this !== item) {
item.added = true;
_this._stage.add(item.getStage());
updatePicture(_this._stage);
}
});
_this.uploadKonva(config);
}
else {
_this.uploadKonva(config);
}
});
};
};
/**
* @return {?}
*/
CoreShapeComponent.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
this._stage.destroy();
};
CoreShapeComponent.decorators = [
{ type: core.Component, args: [{
// tslint:disable-next-line:max-line-length
selector: 'ko-shape, ko-layer, ko-circle, ko-fastlayer, ko-group, ko-label, ko-rect, ko-ellipse, ko-wedge, ko-line, ko-sprite, ko-image, ko-text, ko-text-path, ko-star, ko-ring, ko-arc, ko-tag, ko-path, ko-regular-polygon, ko-arrow',
template: "<div><ng-content></ng-content></div>"
},] },
];
/** @nocollapse */
CoreShapeComponent.ctorParameters = function () {
return [
{ type: core.ElementRef }
];
};
CoreShapeComponent.propDecorators = {
shapes: [{ type: core.ContentChildren, args: [CoreShapeComponent,] }],
config: [{ type: core.Input }],
click: [{ type: core.Output }],
dblclick: [{ type: core.Output }],
mouseover: [{ type: core.Output }],
mouseout: [{ type: core.Output }],
mousemove: [{ type: core.Output }],
tap: [{ type: core.Output }],
dbltap: [{ type: core.Output }],
touchstart: [{ type: core.Output }],
scaleXChange: [{ type: core.Output }],
fillChange: [{ type: core.Output }],
dragstart: [{ type: core.Output }],
dragmove: [{ type: core.Output }],
dragend: [{ type: core.Output }]
};
return CoreShapeComponent;
}());
/**
* @return {?}
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
StageComponent.prototype.ngAfterContentInit = function () {
var _this = this;
this.shapes.forEach(function (item) {
_this._stage.add(item.getStage());
updatePicture(_this._stage);
});
};
var StageComponent = (function () {
function StageComponent(elementRef) {
this.elementRef = elementRef;
this.shapes = new core.QueryList();
this.click = new core.EventEmitter();
this.dblclick = new core.EventEmitter();
this.mouseover = new core.EventEmitter();
this.mouseout = new core.EventEmitter();
this.mousemove = new core.EventEmitter();
this.tap = new core.EventEmitter();
this.dbltap = new core.EventEmitter();
this.touchstart = new core.EventEmitter();
this.scaleXChange = new core.EventEmitter();
this.fillChange = new core.EventEmitter();
this.dragstart = new core.EventEmitter();
this.dragmove = new core.EventEmitter();
this.dragend = new core.EventEmitter();
this.cacheProps = {};
}
/**
* @return {?}
*/
StageComponent.prototype.getStage = /**
* @return {?}
*/
function () {
return this._stage || {};
};
/**
* @return {?}
*/
StageComponent.prototype.getConfig = /**
* @return {?}
*/
function () {
return this._config || {};
};
/**
* @param {?} config
* @return {?}
*/
StageComponent.prototype.uploadKonva = /**
* @param {?} config
* @return {?}
*/
function (config) {
var /** @type {?} */ props = __assign({}, config, createListener(this));
applyNodeProps(this, props, this.cacheProps);
this.cacheProps = props;
};
/**
* @return {?}
*/
StageComponent.prototype.ngOnInit = /**
* @return {?}
*/
function () {
var _this = this;
var /** @type {?} */ nodeContainer = this.elementRef.nativeElement;
this.config.subscribe(function (config) {
_this._config = config;
if (!_this._stage) {
_this._stage = new Konva.Stage({
width: config.width,
height: config.height,
container: nodeContainer
});
_this.uploadKonva(config);
}
else {
_this.uploadKonva(config);
}
});
};
/**
* @return {?}
*/
StageComponent.prototype.ngAfterContentInit = /**
* @return {?}
*/
function () {
var _this = this;
this.shapes.forEach(function (item) {
_this._stage.add(item.getStage());
updatePicture(_this._stage);
});
};
/**
* @return {?}
*/
StageComponent.prototype.ngOnDestroy = /**
* @return {?}
*/
function () {
this._stage.destroy();
};
StageComponent.decorators = [
{ type: core.Component, args: [{
selector: 'ko-stage',
template: "<div><ng-content></ng-content>{{config}}</div>"
},] },
];
/** @nocollapse */
StageComponent.ctorParameters = function () {
return [
{ type: core.ElementRef }
];
};
StageComponent.propDecorators = {
shapes: [{ type: core.ContentChildren, args: [CoreShapeComponent,] }],
config: [{ type: core.Input }],
click: [{ type: core.Output }],
dblclick: [{ type: core.Output }],
mouseover: [{ type: core.Output }],
mouseout: [{ type: core.Output }],
mousemove: [{ type: core.Output }],
tap: [{ type: core.Output }],
dbltap: [{ type: core.Output }],
touchstart: [{ type: core.Output }],
scaleXChange: [{ type: core.Output }],
fillChange: [{ type: core.Output }],
dragstart: [{ type: core.Output }],
dragmove: [{ type: core.Output }],
dragend: [{ type: core.Output }]
};
return StageComponent;
}());
/**
* @return {?}
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
StageComponent.prototype.ngOnDestroy = function () {
this._stage.destroy();
};
return StageComponent;
}());
StageComponent.decorators = [
{ type: core.Component, args: [{
selector: 'ko-stage',
template: "<div><ng-content></ng-content>{{config}}</div>"
},] },
];
/**
* @nocollapse
*/
StageComponent.ctorParameters = function () { return [
{ type: core.ElementRef, },
]; };
StageComponent.propDecorators = {
'shapes': [{ type: core.ContentChildren, args: [CoreShapeComponent,] },],
'config': [{ type: core.Input },],
'click': [{ type: core.Output },],
'dblclick': [{ type: core.Output },],
'mouseover': [{ type: core.Output },],
'mouseout': [{ type: core.Output },],
'mousemove': [{ type: core.Output },],
'tap': [{ type: core.Output },],
'dbltap': [{ type: core.Output },],
'touchstart': [{ type: core.Output },],
'scaleXChange': [{ type: core.Output },],
'fillChange': [{ type: core.Output },],
'dragstart': [{ type: core.Output },],
'dragmove': [{ type: core.Output },],
'dragend': [{ type: core.Output },],
};
if (typeof window !== 'undefined' && !window.Konva) {
require('konva');
}
var KonvaModule = (function () {
function KonvaModule() {
if (typeof window !== 'undefined' && !window.Konva) {
require('konva');
}
return KonvaModule;
}());
KonvaModule.decorators = [
{ type: core.NgModule, args: [{
imports: [
common.CommonModule
],
declarations: [
StageComponent,
CoreShapeComponent,
],
exports: [
StageComponent,
CoreShapeComponent,
]
},] },
];
/**
* @nocollapse
*/
KonvaModule.ctorParameters = function () { return []; };
var KonvaModule = (function () {
function KonvaModule() {
}
KonvaModule.decorators = [
{ type: core.NgModule, args: [{
imports: [
common.CommonModule
],
declarations: [
StageComponent,
CoreShapeComponent,
],
exports: [
StageComponent,
CoreShapeComponent,
]
},] },
];
return KonvaModule;
}());
exports.KonvaModule = KonvaModule;
exports.StageComponent = StageComponent;
exports.CoreShapeComponent = CoreShapeComponent;
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
Object.defineProperty(exports, '__esModule', { value: true });
/**
* @fileoverview added by tsickle
* @suppress {checkTypes} checked by tsc
*/
exports.KonvaModule = KonvaModule;
exports.StageComponent = StageComponent;
exports.CoreShapeComponent = CoreShapeComponent;
Object.defineProperty(exports, '__esModule', { value: true });
})));
//# sourceMappingURL=ng2-konva.umd.js.map
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmcyLWtvbnZhLnVtZC5qcy5tYXAiLCJzb3VyY2VzIjpbbnVsbCwibmc6Ly9uZzIta29udmEvbGliL3V0aWxzL3VwZGF0ZVBpY3R1cmUudHMiLCJuZzovL25nMi1rb252YS9saWIvdXRpbHMvYXBwbHlOb2RlUHJvcHMudHMiLCJuZzovL25nMi1rb252YS9saWIvdXRpbHMvaW5kZXgudHMiLCJuZzovL25nMi1rb252YS9saWIvY29tcG9uZW50cy9jb3JlLXNoYXBlLmNvbXBvbmVudC50cyIsIm5nOi8vbmcyLWtvbnZhL2xpYi9jb21wb25lbnRzL3N0YWdlLmNvbXBvbmVudC50cyIsIm5nOi8vbmcyLWtvbnZhL2xpYi9rb252YS5tb2R1bGUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLyohICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXHJcbkNvcHlyaWdodCAoYykgTWljcm9zb2Z0IENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLlxyXG5MaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpOyB5b3UgbWF5IG5vdCB1c2VcclxudGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGVcclxuTGljZW5zZSBhdCBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcclxuXHJcblRISVMgQ09ERSBJUyBQUk9WSURFRCBPTiBBTiAqQVMgSVMqIEJBU0lTLCBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTllcclxuS0lORCwgRUlUSEVSIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIFdJVEhPVVQgTElNSVRBVElPTiBBTlkgSU1QTElFRFxyXG5XQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgVElUTEUsIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLFxyXG5NRVJDSEFOVEFCTElUWSBPUiBOT04tSU5GUklOR0VNRU5ULlxyXG5cclxuU2VlIHRoZSBBcGFjaGUgVmVyc2lvbiAyLjAgTGljZW5zZSBmb3Igc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zXHJcbmFuZCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cclxuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiogKi9cclxuLyogZ2xvYmFsIFJlZmxlY3QsIFByb21pc2UgKi9cclxuXHJcbnZhciBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XHJcbiAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XHJcbiAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChiLmhhc093blByb3BlcnR5KHApKSBkW3BdID0gYltwXTsgfTtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2V4dGVuZHMoZCwgYikge1xyXG4gICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcclxuICAgIGZ1bmN0aW9uIF9fKCkgeyB0aGlzLmNvbnN0cnVjdG9yID0gZDsgfVxyXG4gICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xyXG59XHJcblxyXG5leHBvcnQgdmFyIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiBfX2Fzc2lnbih0KSB7XHJcbiAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcclxuICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xyXG4gICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSkgdFtwXSA9IHNbcF07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdDtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVzdChzLCBlKSB7XHJcbiAgICB2YXIgdCA9IHt9O1xyXG4gICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApICYmIGUuaW5kZXhPZihwKSA8IDApXHJcbiAgICAgICAgdFtwXSA9IHNbcF07XHJcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXHJcbiAgICAgICAgZm9yICh2YXIgaSA9IDAsIHAgPSBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKHMpOyBpIDwgcC5sZW5ndGg7IGkrKykgaWYgKGUuaW5kZXhPZihwW2ldKSA8IDApXHJcbiAgICAgICAgICAgIHRbcFtpXV0gPSBzW3BbaV1dO1xyXG4gICAgcmV0dXJuIHQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2RlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKSB7XHJcbiAgICB2YXIgYyA9IGFyZ3VtZW50cy5sZW5ndGgsIHIgPSBjIDwgMyA/IHRhcmdldCA6IGRlc2MgPT09IG51bGwgPyBkZXNjID0gT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcih0YXJnZXQsIGtleSkgOiBkZXNjLCBkO1xyXG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0LmRlY29yYXRlID09PSBcImZ1bmN0aW9uXCIpIHIgPSBSZWZsZWN0LmRlY29yYXRlKGRlY29yYXRvcnMsIHRhcmdldCwga2V5LCBkZXNjKTtcclxuICAgIGVsc2UgZm9yICh2YXIgaSA9IGRlY29yYXRvcnMubGVuZ3RoIC0gMTsgaSA+PSAwOyBpLS0pIGlmIChkID0gZGVjb3JhdG9yc1tpXSkgciA9IChjIDwgMyA/IGQocikgOiBjID4gMyA/IGQodGFyZ2V0LCBrZXksIHIpIDogZCh0YXJnZXQsIGtleSkpIHx8IHI7XHJcbiAgICByZXR1cm4gYyA+IDMgJiYgciAmJiBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBrZXksIHIpLCByO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19wYXJhbShwYXJhbUluZGV4LCBkZWNvcmF0b3IpIHtcclxuICAgIHJldHVybiBmdW5jdGlvbiAodGFyZ2V0LCBrZXkpIHsgZGVjb3JhdG9yKHRhcmdldCwga2V5LCBwYXJhbUluZGV4KTsgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19tZXRhZGF0YShtZXRhZGF0YUtleSwgbWV0YWRhdGFWYWx1ZSkge1xyXG4gICAgaWYgKHR5cGVvZiBSZWZsZWN0ID09PSBcIm9iamVjdFwiICYmIHR5cGVvZiBSZWZsZWN0Lm1ldGFkYXRhID09PSBcImZ1bmN0aW9uXCIpIHJldHVybiBSZWZsZWN0Lm1ldGFkYXRhKG1ldGFkYXRhS2V5LCBtZXRhZGF0YVZhbHVlKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXRlcih0aGlzQXJnLCBfYXJndW1lbnRzLCBQLCBnZW5lcmF0b3IpIHtcclxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xyXG4gICAgICAgIGZ1bmN0aW9uIGZ1bGZpbGxlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvci5uZXh0KHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiByZWplY3RlZCh2YWx1ZSkgeyB0cnkgeyBzdGVwKGdlbmVyYXRvcltcInRocm93XCJdKHZhbHVlKSk7IH0gY2F0Y2ggKGUpIHsgcmVqZWN0KGUpOyB9IH1cclxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUocmVzdWx0LnZhbHVlKTsgfSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxyXG4gICAgICAgIHN0ZXAoKGdlbmVyYXRvciA9IGdlbmVyYXRvci5hcHBseSh0aGlzQXJnLCBfYXJndW1lbnRzIHx8IFtdKSkubmV4dCgpKTtcclxuICAgIH0pO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19nZW5lcmF0b3IodGhpc0FyZywgYm9keSkge1xyXG4gICAgdmFyIF8gPSB7IGxhYmVsOiAwLCBzZW50OiBmdW5jdGlvbigpIHsgaWYgKHRbMF0gJiAxKSB0aHJvdyB0WzFdOyByZXR1cm4gdFsxXTsgfSwgdHJ5czogW10sIG9wczogW10gfSwgZiwgeSwgdCwgZztcclxuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuKSB7IHJldHVybiBmdW5jdGlvbiAodikgeyByZXR1cm4gc3RlcChbbiwgdl0pOyB9OyB9XHJcbiAgICBmdW5jdGlvbiBzdGVwKG9wKSB7XHJcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xyXG4gICAgICAgIHdoaWxlIChfKSB0cnkge1xyXG4gICAgICAgICAgICBpZiAoZiA9IDEsIHkgJiYgKHQgPSB5W29wWzBdICYgMiA/IFwicmV0dXJuXCIgOiBvcFswXSA/IFwidGhyb3dcIiA6IFwibmV4dFwiXSkgJiYgISh0ID0gdC5jYWxsKHksIG9wWzFdKSkuZG9uZSkgcmV0dXJuIHQ7XHJcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbMCwgdC52YWx1ZV07XHJcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcclxuICAgICAgICAgICAgICAgIGNhc2UgMDogY2FzZSAxOiB0ID0gb3A7IGJyZWFrO1xyXG4gICAgICAgICAgICAgICAgY2FzZSA0OiBfLmxhYmVsKys7IHJldHVybiB7IHZhbHVlOiBvcFsxXSwgZG9uZTogZmFsc2UgfTtcclxuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGNhc2UgNzogb3AgPSBfLm9wcy5wb3AoKTsgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcclxuICAgICAgICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9wWzBdID09PSAzICYmICghdCB8fCAob3BbMV0gPiB0WzBdICYmIG9wWzFdIDwgdFszXSkpKSB7IF8ubGFiZWwgPSBvcFsxXTsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAob3BbMF0gPT09IDYgJiYgXy5sYWJlbCA8IHRbMV0pIHsgXy5sYWJlbCA9IHRbMV07IHQgPSBvcDsgYnJlYWs7IH1cclxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKHRbMl0pIF8ub3BzLnBvcCgpO1xyXG4gICAgICAgICAgICAgICAgICAgIF8udHJ5cy5wb3AoKTsgY29udGludWU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgb3AgPSBib2R5LmNhbGwodGhpc0FyZywgXyk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkgeyBvcCA9IFs2LCBlXTsgeSA9IDA7IH0gZmluYWxseSB7IGYgPSB0ID0gMDsgfVxyXG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xyXG4gICAgfVxyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gX19leHBvcnRTdGFyKG0sIGV4cG9ydHMpIHtcclxuICAgIGZvciAodmFyIHAgaW4gbSkgaWYgKCFleHBvcnRzLmhhc093blByb3BlcnR5KHApKSBleHBvcnRzW3BdID0gbVtwXTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fdmFsdWVzKG8pIHtcclxuICAgIHZhciBtID0gdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIG9bU3ltYm9sLml0ZXJhdG9yXSwgaSA9IDA7XHJcbiAgICBpZiAobSkgcmV0dXJuIG0uY2FsbChvKTtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgbmV4dDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBpZiAobyAmJiBpID49IG8ubGVuZ3RoKSBvID0gdm9pZCAwO1xyXG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogbyAmJiBvW2krK10sIGRvbmU6ICFvIH07XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fcmVhZChvLCBuKSB7XHJcbiAgICB2YXIgbSA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiAmJiBvW1N5bWJvbC5pdGVyYXRvcl07XHJcbiAgICBpZiAoIW0pIHJldHVybiBvO1xyXG4gICAgdmFyIGkgPSBtLmNhbGwobyksIHIsIGFyID0gW10sIGU7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIHdoaWxlICgobiA9PT0gdm9pZCAwIHx8IG4tLSA+IDApICYmICEociA9IGkubmV4dCgpKS5kb25lKSBhci5wdXNoKHIudmFsdWUpO1xyXG4gICAgfVxyXG4gICAgY2F0Y2ggKGVycm9yKSB7IGUgPSB7IGVycm9yOiBlcnJvciB9OyB9XHJcbiAgICBmaW5hbGx5IHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBpZiAociAmJiAhci5kb25lICYmIChtID0gaVtcInJldHVyblwiXSkpIG0uY2FsbChpKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZmluYWxseSB7IGlmIChlKSB0aHJvdyBlLmVycm9yOyB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXI7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX3NwcmVhZCgpIHtcclxuICAgIGZvciAodmFyIGFyID0gW10sIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKVxyXG4gICAgICAgIGFyID0gYXIuY29uY2F0KF9fcmVhZChhcmd1bWVudHNbaV0pKTtcclxuICAgIHJldHVybiBhcjtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXdhaXQodikge1xyXG4gICAgcmV0dXJuIHRoaXMgaW5zdGFuY2VvZiBfX2F3YWl0ID8gKHRoaXMudiA9IHYsIHRoaXMpIDogbmV3IF9fYXdhaXQodik7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jR2VuZXJhdG9yKHRoaXNBcmcsIF9hcmd1bWVudHMsIGdlbmVyYXRvcikge1xyXG4gICAgaWYgKCFTeW1ib2wuYXN5bmNJdGVyYXRvcikgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlN5bWJvbC5hc3luY0l0ZXJhdG9yIGlzIG5vdCBkZWZpbmVkLlwiKTtcclxuICAgIHZhciBnID0gZ2VuZXJhdG9yLmFwcGx5KHRoaXNBcmcsIF9hcmd1bWVudHMgfHwgW10pLCBpLCBxID0gW107XHJcbiAgICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIpLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSA9IGZ1bmN0aW9uICgpIHsgcmV0dXJuIHRoaXM7IH0sIGk7XHJcbiAgICBmdW5jdGlvbiB2ZXJiKG4pIHsgaWYgKGdbbl0pIGlbbl0gPSBmdW5jdGlvbiAodikgeyByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKGEsIGIpIHsgcS5wdXNoKFtuLCB2LCBhLCBiXSkgPiAxIHx8IHJlc3VtZShuLCB2KTsgfSk7IH07IH1cclxuICAgIGZ1bmN0aW9uIHJlc3VtZShuLCB2KSB7IHRyeSB7IHN0ZXAoZ1tuXSh2KSk7IH0gY2F0Y2ggKGUpIHsgc2V0dGxlKHFbMF1bM10sIGUpOyB9IH1cclxuICAgIGZ1bmN0aW9uIHN0ZXAocikgeyByLnZhbHVlIGluc3RhbmNlb2YgX19hd2FpdCA/IFByb21pc2UucmVzb2x2ZShyLnZhbHVlLnYpLnRoZW4oZnVsZmlsbCwgcmVqZWN0KSA6IHNldHRsZShxWzBdWzJdLCByKTsgIH1cclxuICAgIGZ1bmN0aW9uIGZ1bGZpbGwodmFsdWUpIHsgcmVzdW1lKFwibmV4dFwiLCB2YWx1ZSk7IH1cclxuICAgIGZ1bmN0aW9uIHJlamVjdCh2YWx1ZSkgeyByZXN1bWUoXCJ0aHJvd1wiLCB2YWx1ZSk7IH1cclxuICAgIGZ1bmN0aW9uIHNldHRsZShmLCB2KSB7IGlmIChmKHYpLCBxLnNoaWZ0KCksIHEubGVuZ3RoKSByZXN1bWUocVswXVswXSwgcVswXVsxXSk7IH1cclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIF9fYXN5bmNEZWxlZ2F0b3Iobykge1xyXG4gICAgdmFyIGksIHA7XHJcbiAgICByZXR1cm4gaSA9IHt9LCB2ZXJiKFwibmV4dFwiKSwgdmVyYihcInRocm93XCIsIGZ1bmN0aW9uIChlKSB7IHRocm93IGU7IH0pLCB2ZXJiKFwicmV0dXJuXCIpLCBpW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbiAoKSB7IHJldHVybiB0aGlzOyB9LCBpO1xyXG4gICAgZnVuY3Rpb24gdmVyYihuLCBmKSB7IGlmIChvW25dKSBpW25dID0gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIChwID0gIXApID8geyB2YWx1ZTogX19hd2FpdChvW25dKHYpKSwgZG9uZTogbiA9PT0gXCJyZXR1cm5cIiB9IDogZiA/IGYodikgOiB2OyB9OyB9XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX2FzeW5jVmFsdWVzKG8pIHtcclxuICAgIGlmICghU3ltYm9sLmFzeW5jSXRlcmF0b3IpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJTeW1ib2wuYXN5bmNJdGVyYXRvciBpcyBub3QgZGVmaW5lZC5cIik7XHJcbiAgICB2YXIgbSA9IG9bU3ltYm9sLmFzeW5jSXRlcmF0b3JdO1xyXG4gICAgcmV0dXJuIG0gPyBtLmNhbGwobykgOiB0eXBlb2YgX192YWx1ZXMgPT09IFwiZnVuY3Rpb25cIiA/IF9fdmFsdWVzKG8pIDogb1tTeW1ib2wuaXRlcmF0b3JdKCk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBfX21ha2VUZW1wbGF0ZU9iamVjdChjb29rZWQsIHJhdykge1xyXG4gICAgaWYgKE9iamVjdC5kZWZpbmVQcm9wZXJ0eSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkoY29va2VkLCBcInJhd1wiLCB7IHZhbHVlOiByYXcgfSk7IH0gZWxzZSB7IGNvb2tlZC5yYXcgPSByYXc7IH1cclxuICAgIHJldHVybiBjb29rZWQ7XHJcbn07XHJcbiIsIi8vIGFkYXB0ZWQgRlJPTTogaHR0cHM6Ly9naXRodWIuY29tL2xhdnJ0b24vcmVhY3Qta29udmEvYmxvYi9tYXN0ZXIvc3JjL3JlYWN0LWtvbnZhLWZpYmVyLmpzXHJcblxyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1cGRhdGVQaWN0dXJlKG5vZGUpIHtcclxuICBjb25zdCBkcmF3aW5nTm9kZSA9IG5vZGUuZ2V0TGF5ZXIoKSB8fCBub2RlLmdldFN0YWdlKCk7XHJcbiAgaWYgKGRyYXdpbmdOb2RlKSB7XHJcbiAgICBkcmF3aW5nTm9kZS5iYXRjaERyYXcoKTtcclxuICB9XHJcbn1cclxuIiwiLy8gYWRhcHRlZCBGUk9NOiBodHRwczovL2dpdGh1Yi5jb20vbGF2cnRvbi9yZWFjdC1rb252YS9ibG9iL21hc3Rlci9zcmMvcmVhY3Qta29udmEtZmliZXIuanNcclxuXHJcbmltcG9ydCB1cGRhdGVQaWN0dXJlIGZyb20gJy4vdXBkYXRlUGljdHVyZSc7XHJcblxyXG5kZWNsYXJlIGNvbnN0IEltYWdlOiBhbnk7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBhcHBseU5vZGVQcm9wcyhjb21wb25lbnQsIHByb3BzID0ge30sIG9sZFByb3BzID0ge30pIHtcclxuICBpZiAoJ2lkJyBpbiBwcm9wcykge1xyXG4gICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm1heC1saW5lLWxlbmd0aFxyXG4gICAgY29uc3QgbWVzc2FnZSA9IGBuZzIta29udmE6IFlvdSBhcmUgdXNpbmcgXCJpZFwiIGF0dHJpYnV0ZSBmb3IgS29udmEgbm9kZS4gSW4gc29tZSB2ZXJ5IHJhcmUgY2FzZXMgaXQgbWF5IHByb2R1Y2UgYnVncy4gQ3VycmVudGx5IHdlIHJlY29tbWVuZCBub3QgdG8gdXNlIGl0IGFuZCB1c2UgXCJuYW1lXCIgYXR0cmlidXRlIGluc3RlYWQuYDtcclxuICAgIGNvbnNvbGUud2FybihtZXNzYWdlKTtcclxuICB9XHJcblxyXG4gIGNvbnN0IGluc3RhbmNlID0gY29tcG9uZW50Ll9zdGFnZTtcclxuICBjb25zdCB1cGRhdGVkUHJvcHMgPSB7fTtcclxuICBsZXQgaGFzVXBkYXRlcyA9IGZhbHNlO1xyXG5cclxuICBPYmplY3Qua2V5cyhvbGRQcm9wcykuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgY29uc3QgaXNFdmVudCA9IGtleS5zbGljZSgwLCAyKSA9PT0gJ29uJztcclxuICAgIGNvbnN0IHByb3BDaGFuZ2VkID0gb2xkUHJvcHNba2V5XSAhPT0gcHJvcHNba2V5XTtcclxuICAgIGlmIChpc0V2ZW50ICYmIHByb3BDaGFuZ2VkKSB7XHJcbiAgICAgIGxldCBldmVudE5hbWUgPSBrZXkuc3Vic3RyKDIpLnRvTG93ZXJDYXNlKCk7XHJcbiAgICAgIGlmIChldmVudE5hbWUuc3Vic3RyKDAsIDcpID09PSAnY29udGVudCcpIHtcclxuICAgICAgICBldmVudE5hbWUgPVxyXG4gICAgICAgICAgJ2NvbnRlbnQnICtcclxuICAgICAgICAgIGV2ZW50TmFtZS5zdWJzdHIoNywgMSkudG9VcHBlckNhc2UoKSArXHJcbiAgICAgICAgICBldmVudE5hbWUuc3Vic3RyKDgpO1xyXG4gICAgICB9XHJcbiAgICAgIGluc3RhbmNlLm9mZihldmVudE5hbWUsIG9sZFByb3BzW2tleV0pO1xyXG4gICAgfVxyXG4gICAgY29uc3QgdG9SZW1vdmUgPSAhcHJvcHMuaGFzT3duUHJvcGVydHkoa2V5KTtcclxuICAgIGlmICh0b1JlbW92ZSkge1xyXG4gICAgICBpbnN0YW5jZS5zZXRBdHRyKGtleSwgdW5kZWZpbmVkKTtcclxuICAgIH1cclxuICB9KTtcclxuICBPYmplY3Qua2V5cyhwcm9wcykuZm9yRWFjaChrZXkgPT4ge1xyXG4gICAgbGV0IGlzRXZlbnQgPSBrZXkuc2xpY2UoMCwgMikgPT09ICdvbic7XHJcbiAgICBjb25zdCB0b0FkZCA9IG9sZFByb3BzW2tleV0gIT09IHByb3BzW2tleV07XHJcbiAgICBpZiAoaXNFdmVudCAmJiB0b0FkZCkge1xyXG4gICAgICBsZXQgZXZlbnROYW1lID0ga2V5LnN1YnN0cigyKS50b0xvd2VyQ2FzZSgpO1xyXG4gICAgICBpZiAoZXZlbnROYW1lLnN1YnN0cigwLCA3KSA9PT0gJ2NvbnRlbnQnKSB7XHJcbiAgICAgICAgZXZlbnROYW1lID1cclxuICAgICAgICAgICdjb250ZW50JyArXHJcbiAgICAgICAgICBldmVudE5hbWUuc3Vic3RyKDcsIDEpLnRvVXBwZXJDYXNlKCkgK1xyXG4gICAgICAgICAgZXZlbnROYW1lLnN1YnN0cig4KTtcclxuICAgICAgfVxyXG4gICAgICBpZiAocHJvcHNba2V5XSkge1xyXG4gICAgICAgIGluc3RhbmNlLm9mZihldmVudE5hbWUpO1xyXG4gICAgICAgIGluc3RhbmNlLm9uKGV2ZW50TmFtZSwgZXZ0ID0+IHtcclxuICAgICAgICAgIHByb3BzW2tleV0oZXZ0LnRhcmdldC5Bbmd1bGFyQ29tcG9uZW50LCBldnQpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoXHJcbiAgICAgICFpc0V2ZW50ICYmXHJcbiAgICAgIChwcm9wc1trZXldICE9PSBvbGRQcm9wc1trZXldIHx8IHByb3BzW2tleV0gIT09IGluc3RhbmNlLmdldEF0dHIoa2V5KSlcclxuICAgICkge1xyXG4gICAgICBoYXNVcGRhdGVzID0gdHJ1ZTtcclxuICAgICAgdXBkYXRlZFByb3BzW2tleV0gPSBwcm9wc1trZXldO1xyXG4gICAgfVxyXG4gIH0pO1xyXG5cclxuICBpZiAoaGFzVXBkYXRlcykge1xyXG4gICAgaW5zdGFuY2Uuc2V0QXR0cnModXBkYXRlZFByb3BzKTtcclxuICAgIHVwZGF0ZVBpY3R1cmUoaW5zdGFuY2UpO1xyXG4gICAgbGV0IHZhbDtcclxuICAgIE9iamVjdC5rZXlzKHVwZGF0ZWRQcm9wcykuZm9yRWFjaChwcm9wID0+IHtcclxuICAgICAgdmFsID0gdXBkYXRlZFByb3BzW3Byb3BdO1xyXG4gICAgICBpZiAodmFsIGluc3RhbmNlb2YgSW1hZ2UgJiYgIXZhbC5jb21wbGV0ZSkge1xyXG4gICAgICAgIGNvbnN0IG5vZGUgPSBpbnN0YW5jZTtcclxuICAgICAgICB2YWwuYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIGZ1bmN0aW9uKCkge1xyXG4gICAgICAgICAgY29uc3QgbGF5ZXIgPSBub2RlLmdldExheWVyKCk7XHJcbiAgICAgICAgICBpZiAobGF5ZXIpIHtcclxuICAgICAgICAgICAgbGF5ZXIuYmF0Y2hEcmF3KCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxufVxyXG4iLCJpbXBvcnQgdXBkYXRlUGljdHVyZSBmcm9tICcuL3VwZGF0ZVBpY3R1cmUnO1xyXG5pbXBvcnQgYXBwbHlOb2RlUHJvcHMgZnJvbSAnLi9hcHBseU5vZGVQcm9wcyc7XHJcblxyXG5mdW5jdGlvbiBjYW1lbGl6ZShzdHIpIHtcclxuICByZXR1cm4gc3RyXHJcbiAgICAucmVwbGFjZSgvKD86Xlxcd3xbQS1aXXxcXGJcXHcpL2csIGZ1bmN0aW9uKGxldHRlciwgaW5kZXgpIHtcclxuICAgICAgcmV0dXJuIGluZGV4ID09IDAgPyBsZXR0ZXIudG9Mb3dlckNhc2UoKSA6IGxldHRlci50b1VwcGVyQ2FzZSgpO1xyXG4gICAgfSlcclxuICAgIC5yZXBsYWNlKC9cXHMrL2csICcnKTtcclxufVxyXG5cclxuZnVuY3Rpb24gY2FwaXRhbGl6ZUZpcnN0TGV0dGVyKHN0cmluZykge1xyXG4gIHJldHVybiBzdHJpbmcuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHJpbmcuc2xpY2UoMSk7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBnZXROYW1lKGNvbXBvbmVudFRhZykge1xyXG4gIHJldHVybiBjYXBpdGFsaXplRmlyc3RMZXR0ZXIoY2FtZWxpemUoY29tcG9uZW50VGFnLnN1YnN0cigzKS5yZXBsYWNlKCctJywgJyAnKSkpO1xyXG59XHJcblxyXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlTGlzdGVuZXIoaW5zdGFuY2U6IGFueSkge1xyXG4gIGNvbnN0IG91dHB1dCA9IHt9O1xyXG4gIFtcclxuICAgICdjbGljaycsXHJcbiAgICAnZGJsY2xpY2snLFxyXG4gICAgJ21vdXNlb3ZlcicsXHJcbiAgICAnbW91c2VvdXQnLFxyXG4gICAgJ21vdXNlbW92ZScsXHJcbiAgICAndGFwJyxcclxuICAgICdkYmx0YXAnLFxyXG4gICAgJ3RvdWNoc3RhcnQnLFxyXG4gICAgJ3NjYWxlWENoYW5nZScsXHJcbiAgICAnZmlsbENoYW5nZScsXHJcbiAgICAnZHJhZ3N0YXJ0JyxcclxuICAgICdkcmFnbW92ZScsXHJcbiAgICAnZHJhZ2VuZCcsXHJcbiAgXS5mb3JFYWNoKGV2ZW50TmFtZSA9PiB7XHJcbiAgICBpZiAoaW5zdGFuY2VbZXZlbnROYW1lXS5vYnNlcnZlcnMubGVuZ3RoKSB7XHJcbiAgICAgIG91dHB1dFsnb24nICsgZXZlbnROYW1lXSA9IGluc3RhbmNlW2V2ZW50TmFtZV0uZW1pdC5iaW5kKFxyXG4gICAgICAgIGluc3RhbmNlW2V2ZW50TmFtZV1cclxuICAgICAgKTtcclxuICAgIH1cclxuICB9KTtcclxuICByZXR1cm4gb3V0cHV0O1xyXG59XHJcblxyXG5leHBvcnQgeyB1cGRhdGVQaWN0dXJlLCBhcHBseU5vZGVQcm9wcyB9O1xyXG4iLCJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgQWZ0ZXJDb250ZW50SW5pdCxcclxuICBDb250ZW50Q2hpbGRyZW4sXHJcbiAgUXVlcnlMaXN0LFxyXG4gIE9uRGVzdHJveSxcclxuICBPbkluaXQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzL09ic2VydmFibGUnO1xyXG5pbXBvcnQge1xyXG4gIGdldE5hbWUsXHJcbiAgY3JlYXRlTGlzdGVuZXIsXHJcbiAgYXBwbHlOb2RlUHJvcHMsXHJcbiAgdXBkYXRlUGljdHVyZVxyXG59IGZyb20gJy4uL3V0aWxzL2luZGV4JztcclxuaW1wb3J0IHsgS29udmFDb21wb25lbnQgfSBmcm9tICcuLi9rby5pbnRlcmZhY2UnO1xyXG5cclxuZGVjbGFyZSBjb25zdCBLb252YTogYW55O1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOm1heC1saW5lLWxlbmd0aFxyXG4gIHNlbGVjdG9yOlxyXG4gICAgJ2tvLXNoYXBlLCBrby1sYXllciwga28tY2lyY2xlLCBrby1mYXN0bGF5ZXIsIGtvLWdyb3VwLCBrby1sYWJlbCwga28tcmVjdCwga28tZWxsaXBzZSwga28td2VkZ2UsIGtvLWxpbmUsIGtvLXNwcml0ZSwga28taW1hZ2UsIGtvLXRleHQsIGtvLXRleHQtcGF0aCwga28tc3Rhciwga28tcmluZywga28tYXJjLCBrby10YWcsIGtvLXBhdGgsIGtvLXJlZ3VsYXItcG9seWdvbiwga28tYXJyb3cnLFxyXG4gIHRlbXBsYXRlOiBgPGRpdj48bmctY29udGVudD48L25nLWNvbnRlbnQ+PC9kaXY+YFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ29yZVNoYXBlQ29tcG9uZW50XHJcbiAgaW1wbGVtZW50cyBLb252YUNvbXBvbmVudCwgQWZ0ZXJDb250ZW50SW5pdCwgT25EZXN0cm95LCBPbkluaXQge1xyXG4gIEBDb250ZW50Q2hpbGRyZW4oQ29yZVNoYXBlQ29tcG9uZW50KVxyXG4gIHNoYXBlcyA9IG5ldyBRdWVyeUxpc3Q8Q29yZVNoYXBlQ29tcG9uZW50PigpO1xyXG4gIEBJbnB1dCgpIGNvbmZpZzogT2JzZXJ2YWJsZTxhbnk+O1xyXG4gIEBPdXRwdXQoKSBjbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGRibGNsaWNrOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgbW91c2VvdmVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgbW91c2VvdXQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBtb3VzZW1vdmU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSB0YXA6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBkYmx0YXA6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSB0b3VjaHN0YXJ0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgc2NhbGVYQ2hhbmdlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZmlsbENoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGRyYWdzdGFydDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGRyYWdtb3ZlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZHJhZ2VuZDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcblxyXG4gIHB1YmxpYyBuYW1lTm9kZTogc3RyaW5nO1xyXG4gIHB1YmxpYyBhZGRlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBwcml2YXRlIGNhY2hlUHJvcHM6IGFueSA9IHt9O1xyXG4gIHByaXZhdGUgX3N0YWdlOiBhbnkgPSB7fTtcclxuICBwcml2YXRlIF9jb25maWc7XHJcblxyXG4gIHB1YmxpYyBnZXRTdGFnZSgpIHtcclxuICAgIHJldHVybiB0aGlzLl9zdGFnZTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRDb25maWcoKSB7XHJcbiAgICByZXR1cm4gdGhpcy5fY29uZmlnIHx8IHt9O1xyXG4gIH1cclxuXHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmKSB7XHJcbiAgICB0aGlzLm5hbWVOb2RlID0gZ2V0TmFtZShlbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQubG9jYWxOYW1lKTtcclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy5pbml0S29udmEoKTtcclxuICB9XHJcblxyXG4gIHByaXZhdGUgaW5pdEtvbnZhKCkge1xyXG4gICAgY29uc3QgbmcgPSB0aGlzO1xyXG4gICAgY29uc3QgTm9kZUNsYXNzID0gS29udmFbdGhpcy5uYW1lTm9kZV07XHJcbiAgICB0aGlzLl9zdGFnZSA9IG5ldyBOb2RlQ2xhc3MoKTtcclxuICAgIHRoaXMuX3N0YWdlLkFuZ3VsYXJDb21wb25lbnQgPSB0aGlzO1xyXG4gICAgY29uc3QgYW5pbWF0aW9uU3RhZ2UgPSB0aGlzLl9zdGFnZS50by5iaW5kKHRoaXMuX3N0YWdlKTtcclxuXHJcbiAgICB0aGlzLl9zdGFnZS50byA9IGZ1bmN0aW9uKG5ld0NvbmZpZykge1xyXG4gICAgICBhbmltYXRpb25TdGFnZShuZXdDb25maWcpO1xyXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICBPYmplY3Qua2V5cyhuZy5fc3RhZ2UuYXR0cnMpLmZvckVhY2goa2V5ID0+IHtcclxuICAgICAgICAgIGlmICh0eXBlb2YgbmcuX3N0YWdlLmF0dHJzW2tleV0gIT09ICdmdW5jdGlvbicpIHtcclxuICAgICAgICAgICAgbmcuY29uZmlnW2tleV0gPSBuZy5fc3RhZ2UuYXR0cnNba2V5XTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSwgMjAwKTtcclxuICAgIH07XHJcbiAgICBpZiAodGhpcy5jb25maWcpIHtcclxuICAgICAgdGhpcy5jb25maWcuc3Vic2NyaWJlKGNvbmZpZyA9PiB7XHJcbiAgICAgICAgdGhpcy5fY29uZmlnID0gY29uZmlnO1xyXG4gICAgICAgIHRoaXMudXBsb2FkS29udmEoY29uZmlnKTtcclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIHVwbG9hZEtvbnZhKGNvbmZpZykge1xyXG4gICAgY29uc3QgcHJvcHMgPSB7XHJcbiAgICAgIC4uLmNvbmZpZyxcclxuICAgICAgLi4uY3JlYXRlTGlzdGVuZXIodGhpcylcclxuICAgIH07XHJcbiAgICBhcHBseU5vZGVQcm9wcyh0aGlzLCBwcm9wcywgdGhpcy5jYWNoZVByb3BzKTtcclxuICAgIHRoaXMuY2FjaGVQcm9wcyA9IHByb3BzO1xyXG4gIH1cclxuXHJcbiAgbmdBZnRlckNvbnRlbnRJbml0KCkge1xyXG4gICAgdGhpcy5zaGFwZXMuZm9yRWFjaCgoaXRlbTogQ29yZVNoYXBlQ29tcG9uZW50KSA9PiB7XHJcbiAgICAgIGlmICh0aGlzICE9PSBpdGVtKSB7XHJcbiAgICAgICAgaXRlbS5hZGRlZCA9IHRydWU7XHJcbiAgICAgICAgdGhpcy5fc3RhZ2UuYWRkKGl0ZW0uZ2V0U3RhZ2UoKSk7XHJcbiAgICAgICAgdXBkYXRlUGljdHVyZSh0aGlzLl9zdGFnZSk7XHJcbiAgICAgIH1cclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgbmdPbkRlc3Ryb3koKSB7XHJcbiAgICB0aGlzLl9zdGFnZS5kZXN0cm95KCk7XHJcbiAgfVxyXG59XHJcbiIsImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIElucHV0LFxyXG4gIE91dHB1dCxcclxuICBFdmVudEVtaXR0ZXIsXHJcbiAgQWZ0ZXJDb250ZW50SW5pdCxcclxuICBFbGVtZW50UmVmLFxyXG4gIENvbnRlbnRDaGlsZHJlbixcclxuICBRdWVyeUxpc3QsXHJcbiAgT25Jbml0LFxyXG4gIE9uRGVzdHJveVxyXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBDb3JlU2hhcGVDb21wb25lbnQgYXMgQ29yZVNoYXBlIH0gZnJvbSAnLi9jb3JlLXNoYXBlLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzL09ic2VydmFibGUnO1xyXG5pbXBvcnQgeyB1cGRhdGVQaWN0dXJlLCBjcmVhdGVMaXN0ZW5lciwgYXBwbHlOb2RlUHJvcHMgfSBmcm9tICcuLi91dGlscy9pbmRleCc7XHJcbmltcG9ydCB7IEtvbnZhQ29tcG9uZW50IH0gZnJvbSAnLi4va28uaW50ZXJmYWNlJztcclxuXHJcbmRlY2xhcmUgY29uc3QgS29udmE6IGFueTtcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAna28tc3RhZ2UnLFxyXG4gIHRlbXBsYXRlOiBgPGRpdj48bmctY29udGVudD48L25nLWNvbnRlbnQ+e3tjb25maWd9fTwvZGl2PmBcclxufSlcclxuZXhwb3J0IGNsYXNzIFN0YWdlQ29tcG9uZW50XHJcbiAgaW1wbGVtZW50cyBLb252YUNvbXBvbmVudCwgQWZ0ZXJDb250ZW50SW5pdCwgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIEBDb250ZW50Q2hpbGRyZW4oQ29yZVNoYXBlKSBzaGFwZXMgPSBuZXcgUXVlcnlMaXN0PENvcmVTaGFwZT4oKTtcclxuICBASW5wdXQoKSBjb25maWc6IE9ic2VydmFibGU8YW55PjtcclxuICBAT3V0cHV0KCkgY2xpY2s6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBkYmxjbGljazogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG1vdXNlb3ZlcjogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG1vdXNlb3V0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgbW91c2Vtb3ZlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgdGFwOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgZGJsdGFwOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgdG91Y2hzdGFydDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIHNjYWxlWENoYW5nZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGZpbGxDaGFuZ2U6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBkcmFnc3RhcnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBkcmFnbW92ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGRyYWdlbmQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG5cclxuICBwcml2YXRlIF9zdGFnZTtcclxuICBwcml2YXRlIF9jb25maWc7XHJcbiAgcHJpdmF0ZSBjYWNoZVByb3BzOiBhbnkgPSB7fTtcclxuXHJcbiAgcHVibGljIGdldFN0YWdlKCkge1xyXG4gICAgcmV0dXJuIHRoaXMuX3N0YWdlIHx8IHt9O1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldENvbmZpZygpIHtcclxuICAgIHJldHVybiB0aGlzLl9jb25maWcgfHwge307XHJcbiAgfVxyXG5cclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsZW1lbnRSZWY6IEVsZW1lbnRSZWYpIHt9XHJcblxyXG4gIHByaXZhdGUgdXBsb2FkS29udmEoY29uZmlnKSB7XHJcbiAgICBjb25zdCBwcm9wcyA9IHtcclxuICAgICAgLi4uY29uZmlnLFxyXG4gICAgICAuLi5jcmVhdGVMaXN0ZW5lcih0aGlzKVxyXG4gICAgfTtcclxuICAgIGFwcGx5Tm9kZVByb3BzKHRoaXMsIHByb3BzLCB0aGlzLmNhY2hlUHJvcHMpO1xyXG4gICAgdGhpcy5jYWNoZVByb3BzID0gcHJvcHM7XHJcbiAgfVxyXG5cclxuICBuZ09uSW5pdCgpIHtcclxuICAgIGNvbnN0IG5vZGVDb250YWluZXIgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcclxuICAgIHRoaXMuY29uZmlnLnN1YnNjcmliZShjb25maWcgPT4ge1xyXG4gICAgICB0aGlzLl9jb25maWcgPSBjb25maWc7XHJcbiAgICAgIGlmICghdGhpcy5fc3RhZ2UpIHtcclxuICAgICAgICB0aGlzLl9zdGFnZSA9IG5ldyBLb252YS5TdGFnZSh7XHJcbiAgICAgICAgICB3aWR0aDogY29uZmlnLndpZHRoLFxyXG4gICAgICAgICAgaGVpZ2h0OiBjb25maWcuaGVpZ2h0LFxyXG4gICAgICAgICAgY29udGFpbmVyOiBub2RlQ29udGFpbmVyXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy51cGxvYWRLb252YShjb25maWcpO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudXBsb2FkS29udmEoY29uZmlnKTtcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ0FmdGVyQ29udGVudEluaXQoKSB7XHJcbiAgICB0aGlzLnNoYXBlcy5mb3JFYWNoKChpdGVtOiBDb3JlU2hhcGUpID0+IHtcclxuICAgICAgdGhpcy5fc3RhZ2UuYWRkKGl0ZW0uZ2V0U3RhZ2UoKSk7XHJcbiAgICAgIHVwZGF0ZVBpY3R1cmUodGhpcy5fc3RhZ2UpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICBuZ09uRGVzdHJveSgpIHtcclxuICAgIHRoaXMuX3N0YWdlLmRlc3Ryb3koKTtcclxuICB9XHJcbn1cclxuIiwiaW1wb3J0IHsgTmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgU3RhZ2VDb21wb25lbnQgfSBmcm9tICcuL2NvbXBvbmVudHMvc3RhZ2UuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ29yZVNoYXBlQ29tcG9uZW50IH0gZnJvbSAnLi9jb21wb25lbnRzL2NvcmUtc2hhcGUuY29tcG9uZW50JztcclxuXHJcbmRlY2xhcmUgZ2xvYmFsIHtcclxuICBpbnRlcmZhY2UgV2luZG93IHsgS29udmE6IGFueTsgfVxyXG59XHJcblxyXG5pZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgIXdpbmRvdy5Lb252YSkge1xyXG4gIHJlcXVpcmUoJ2tvbnZhJyk7XHJcbn1cclxuXHJcbmV4cG9ydCAqIGZyb20gJy4vY29tcG9uZW50cy9zdGFnZS5jb21wb25lbnQnO1xyXG5leHBvcnQgKiBmcm9tICcuL2NvbXBvbmVudHMvY29yZS1zaGFwZS5jb21wb25lbnQnO1xyXG5leHBvcnQgeyBLb252YUNvbXBvbmVudCB9IGZyb20gJy4va28uaW50ZXJmYWNlJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgaW1wb3J0czogW1xyXG4gICAgQ29tbW9uTW9kdWxlXHJcbiAgXSxcclxuICBkZWNsYXJhdGlvbnM6IFtcclxuICAgIFN0YWdlQ29tcG9uZW50LFxyXG4gICAgQ29yZVNoYXBlQ29tcG9uZW50LFxyXG4gIF0sXHJcbiAgZXhwb3J0czogW1xyXG4gICAgU3RhZ2VDb21wb25lbnQsXHJcbiAgICBDb3JlU2hhcGVDb21wb25lbnQsXHJcbiAgXVxyXG59KVxyXG5leHBvcnQgY2xhc3MgS29udmFNb2R1bGUge1xyXG59XHJcbiJdLCJuYW1lcyI6WyJRdWVyeUxpc3QiLCJFdmVudEVtaXR0ZXIiLCJDb21wb25lbnQiLCJFbGVtZW50UmVmIiwiQ29udGVudENoaWxkcmVuIiwiSW5wdXQiLCJPdXRwdXQiLCJDb3JlU2hhcGUiLCJOZ01vZHVsZSIsIkNvbW1vbk1vZHVsZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0lBQUE7Ozs7Ozs7Ozs7Ozs7O0FBY0EsSUFZTyxJQUFJLFFBQVEsR0FBRyxNQUFNLENBQUMsTUFBTSxJQUFJLGtCQUFrQixDQUFDO1FBQ3RELEtBQUssSUFBSSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsU0FBUyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQ2pELENBQUMsR0FBRyxTQUFTLENB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

@@ -1,2 +0,2 @@

!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/core"),require("@angular/common")):"function"==typeof define&&define.amd?define(["exports","@angular/core","@angular/common"],e):e(t["ng2-konva"]={},t.ng.core,t.ng.common)}(this,function(t,e,n){"use strict";function o(t){var e=t.getLayer()||t.getStage();e&&e.batchDraw()}function r(t,e,n){if(void 0===e&&(e={}),void 0===n&&(n={}),"id"in e){console.warn('ng2-konva: You are using "id" attribute for Konva node. In some very rare cases it may produce bugs. Currently we recommend not to use it and use "name" attribute instead.')}var r=t._stage,i={},s=!1;if(Object.keys(n).forEach(function(t){var o="on"===t.slice(0,2),i=n[t]!==e[t];if(o&&i){var s=t.substr(2).toLowerCase();"content"===s.substr(0,7)&&(s="content"+s.substr(7,1).toUpperCase()+s.substr(8)),r.off(s,n[t])}!e.hasOwnProperty(t)&&r.setAttr(t,undefined)}),Object.keys(e).forEach(function(t){var o="on"===t.slice(0,2),a=n[t]!==e[t];if(o&&a){var u=t.substr(2).toLowerCase();"content"===u.substr(0,7)&&(u="content"+u.substr(7,1).toUpperCase()+u.substr(8)),e[t]&&(r.off(u),r.on(u,function(n){e[t](n.target.AngularComponent,n)}))}o||e[t]===n[t]&&e[t]===r.getAttr(t)||(s=!0,i[t]=e[t])}),s){r.setAttrs(i),o(r);var a;Object.keys(i).forEach(function(t){if((a=i[t])instanceof Image&&!a.complete){var e=r;a.addEventListener("load",function(){var t=e.getLayer();t&&t.batchDraw()})}})}}function i(t){var e={};return["click","dblclick","mouseover","mouseout","mousemove","tap","dbltap","touchstart","scaleXChange","fillChange","dragstart","dragmove","dragend"].forEach(function(n){t[n].observers.length&&(e["on"+n]=t[n].emit.bind(t[n]))}),e}var s=function(){function t(t){this.elementRef=t,this.shapes=new e.QueryList,this.click=new e.EventEmitter,this.dblclick=new e.EventEmitter,this.mouseover=new e.EventEmitter,this.mouseout=new e.EventEmitter,this.mousemove=new e.EventEmitter,this.tap=new e.EventEmitter,this.dbltap=new e.EventEmitter,this.touchstart=new e.EventEmitter,this.scaleXChange=new e.EventEmitter,this.fillChange=new e.EventEmitter,this.dragstart=new e.EventEmitter,this.dragmove=new e.EventEmitter,this.dragend=new e.EventEmitter,this.added=!1,this.cacheProps={},this._stage={},this.nameNode=function(t){return function(t){return t.charAt(0).toUpperCase()+t.slice(1)}(function(t){return t.replace(/(?:^\w|[A-Z]|\b\w)/g,function(t,e){return 0==e?t.toLowerCase():t.toUpperCase()}).replace(/\s+/g,"")}(t.substr(3).replace("-"," ")))}(t.nativeElement.localName)}return t.prototype.getStage=function(){return this._stage},t.prototype.getConfig=function(){return this._config||{}},t.prototype.ngOnInit=function(){this.initKonva()},t.prototype.initKonva=function(){var t=this,e=this,n=Konva[this.nameNode];this._stage=new n,this._stage.AngularComponent=this;var o=this._stage.to.bind(this._stage);this._stage.to=function(t){o(t),setTimeout(function(){Object.keys(e._stage.attrs).forEach(function(t){"function"!=typeof e._stage.attrs[t]&&(e.config[t]=e._stage.attrs[t])})},200)},this.config&&this.config.subscribe(function(e){t._config=e,t.uploadKonva(e)})},t.prototype.uploadKonva=function(t){var e=Object.assign({},t,i(this));r(this,e,this.cacheProps),this.cacheProps=e},t.prototype.ngAfterContentInit=function(){var t=this;this.shapes.forEach(function(e){t!==e&&(e.added=!0,t._stage.add(e.getStage()),o(t._stage))})},t.prototype.ngOnDestroy=function(){this._stage.destroy()},t}();s.decorators=[{type:e.Component,args:[{selector:"ko-shape, ko-layer, ko-circle, ko-fastlayer, ko-group, ko-label, ko-rect, ko-ellipse, ko-wedge, ko-line, ko-sprite, ko-image, ko-text, ko-text-path, ko-star, ko-ring, ko-arc, ko-tag, ko-path, ko-regular-polygon, ko-arrow",template:"<div><ng-content></ng-content></div>"}]}],s.ctorParameters=function(){return[{type:e.ElementRef}]},s.propDecorators={shapes:[{type:e.ContentChildren,args:[s]}],config:[{type:e.Input}],click:[{type:e.Output}],dblclick:[{type:e.Output}],mouseover:[{type:e.Output}],mouseout:[{type:e.Output}],mousemove:[{type:e.Output}],tap:[{type:e.Output}],dbltap:[{type:e.Output}],touchstart:[{type:e.Output}],scaleXChange:[{type:e.Output}],fillChange:[{type:e.Output}],dragstart:[{type:e.Output}],dragmove:[{type:e.Output}],dragend:[{type:e.Output}]};var a=function(){function t(t){this.elementRef=t,this.shapes=new e.QueryList,this.click=new e.EventEmitter,this.dblclick=new e.EventEmitter,this.mouseover=new e.EventEmitter,this.mouseout=new e.EventEmitter,this.mousemove=new e.EventEmitter,this.tap=new e.EventEmitter,this.dbltap=new e.EventEmitter,this.touchstart=new e.EventEmitter,this.scaleXChange=new e.EventEmitter,this.fillChange=new e.EventEmitter,this.dragstart=new e.EventEmitter,this.dragmove=new e.EventEmitter,this.dragend=new e.EventEmitter,this.cacheProps={}}return t.prototype.getStage=function(){return this._stage||{}},t.prototype.getConfig=function(){return this._config||{}},t.prototype.uploadKonva=function(t){var e=Object.assign({},t,i(this));r(this,e,this.cacheProps),this.cacheProps=e},t.prototype.ngOnInit=function(){var t=this,e=this.elementRef.nativeElement;this.config.subscribe(function(n){t._config=n,t._stage?t.uploadKonva(n):(t._stage=new Konva.Stage({width:n.width,height:n.height,container:e}),t.uploadKonva(n))})},t.prototype.ngAfterContentInit=function(){var t=this;this.shapes.forEach(function(e){t._stage.add(e.getStage()),o(t._stage)})},t.prototype.ngOnDestroy=function(){this._stage.destroy()},t}();a.decorators=[{type:e.Component,args:[{selector:"ko-stage",template:"<div><ng-content></ng-content>{{config}}</div>"}]}],a.ctorParameters=function(){return[{type:e.ElementRef}]},a.propDecorators={shapes:[{type:e.ContentChildren,args:[s]}],config:[{type:e.Input}],click:[{type:e.Output}],dblclick:[{type:e.Output}],mouseover:[{type:e.Output}],mouseout:[{type:e.Output}],mousemove:[{type:e.Output}],tap:[{type:e.Output}],dbltap:[{type:e.Output}],touchstart:[{type:e.Output}],scaleXChange:[{type:e.Output}],fillChange:[{type:e.Output}],dragstart:[{type:e.Output}],dragmove:[{type:e.Output}],dragend:[{type:e.Output}]},"undefined"==typeof window||window.Konva||require("konva");var u=function(){return function(){}}();u.decorators=[{type:e.NgModule,args:[{imports:[n.CommonModule],declarations:[a,s],exports:[a,s]}]}],u.ctorParameters=function(){return[]},t.KonvaModule=u,t.StageComponent=a,t.CoreShapeComponent=s,Object.defineProperty(t,"__esModule",{value:!0})});
//# sourceMappingURL=ng2-konva.umd.min.js.map
!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(exports,require("@angular/core"),require("@angular/common")):"function"==typeof define&&define.amd?define("ng2-konva",["exports","@angular/core","@angular/common"],e):e(t["ng2-konva"]={},t.ng.core,t.ng.common)}(this,function(t,e,n){"use strict";function o(t){var e=t.getLayer()||t.getStage();e&&e.batchDraw()}function r(t,e,n){if(void 0===e&&(e={}),void 0===n&&(n={}),"id"in e){console.warn('ng2-konva: You are using "id" attribute for Konva node. In some very rare cases it may produce bugs. Currently we recommend not to use it and use "name" attribute instead.')}var r=t._stage,i={},a=!1;if(Object.keys(n).forEach(function(t){var o="on"===t.slice(0,2),i=n[t]!==e[t];if(o&&i){var a=t.substr(2).toLowerCase();"content"===a.substr(0,7)&&(a="content"+a.substr(7,1).toUpperCase()+a.substr(8)),r.off(a,n[t])}!e.hasOwnProperty(t)&&r.setAttr(t,undefined)}),Object.keys(e).forEach(function(t){var o="on"===t.slice(0,2),s=n[t]!==e[t];if(o&&s){var u=t.substr(2).toLowerCase();"content"===u.substr(0,7)&&(u="content"+u.substr(7,1).toUpperCase()+u.substr(8)),e[t]&&(r.off(u),r.on(u,function(n){e[t](n.target.AngularComponent,n)}))}o||e[t]===n[t]&&e[t]===r.getAttr(t)||(a=!0,i[t]=e[t])}),a){r.setAttrs(i),o(r);var s;Object.keys(i).forEach(function(t){if((s=i[t])instanceof Image&&!s.complete){var e=r;s.addEventListener("load",function(){var t=e.getLayer();t&&t.batchDraw()})}})}}function i(t){var e={};return["click","dblclick","mouseover","mouseout","mousemove","tap","dbltap","touchstart","scaleXChange","fillChange","dragstart","dragmove","dragend"].forEach(function(n){t[n].observers.length&&(e["on"+n]=t[n].emit.bind(t[n]))}),e}var a=Object.assign||function(t){for(var e,n=1,o=arguments.length;n<o;n++){e=arguments[n];for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&(t[r]=e[r])}return t},s=function(){function t(t){this.elementRef=t,this.shapes=new e.QueryList,this.click=new e.EventEmitter,this.dblclick=new e.EventEmitter,this.mouseover=new e.EventEmitter,this.mouseout=new e.EventEmitter,this.mousemove=new e.EventEmitter,this.tap=new e.EventEmitter,this.dbltap=new e.EventEmitter,this.touchstart=new e.EventEmitter,this.scaleXChange=new e.EventEmitter,this.fillChange=new e.EventEmitter,this.dragstart=new e.EventEmitter,this.dragmove=new e.EventEmitter,this.dragend=new e.EventEmitter,this.added=!1,this.cacheProps={},this._stage={},this.nameNode=function(t){return function(t){return t.charAt(0).toUpperCase()+t.slice(1)}(function(t){return t.replace(/(?:^\w|[A-Z]|\b\w)/g,function(t,e){return 0==e?t.toLowerCase():t.toUpperCase()}).replace(/\s+/g,"")}(t.substr(3).replace("-"," ")))}(t.nativeElement.localName)}return t.prototype.getStage=function(){return this._stage},t.prototype.getConfig=function(){return this._config||{}},t.prototype.ngOnInit=function(){this.initKonva()},t.prototype.initKonva=function(){var t=this,e=this,n=Konva[this.nameNode];this._stage=new n,this._stage.AngularComponent=this;var o=this._stage.to.bind(this._stage);this._stage.to=function(t){o(t),setTimeout(function(){Object.keys(e._stage.attrs).forEach(function(t){"function"!=typeof e._stage.attrs[t]&&(e.config[t]=e._stage.attrs[t])})},200)},this.config&&this.config.subscribe(function(e){t._config=e,t.uploadKonva(e)})},t.prototype.uploadKonva=function(t){var e=a({},t,i(this));r(this,e,this.cacheProps),this.cacheProps=e},t.prototype.ngAfterContentInit=function(){var t=this;this.shapes.forEach(function(e){t!==e&&(e.added=!0,t._stage.add(e.getStage()),o(t._stage))})},t.prototype.ngOnDestroy=function(){this._stage.destroy()},t.decorators=[{type:e.Component,args:[{selector:"ko-shape, ko-layer, ko-circle, ko-fastlayer, ko-group, ko-label, ko-rect, ko-ellipse, ko-wedge, ko-line, ko-sprite, ko-image, ko-text, ko-text-path, ko-star, ko-ring, ko-arc, ko-tag, ko-path, ko-regular-polygon, ko-arrow",template:"<div><ng-content></ng-content></div>"}]}],t.ctorParameters=function(){return[{type:e.ElementRef}]},t.propDecorators={shapes:[{type:e.ContentChildren,args:[t]}],config:[{type:e.Input}],click:[{type:e.Output}],dblclick:[{type:e.Output}],mouseover:[{type:e.Output}],mouseout:[{type:e.Output}],mousemove:[{type:e.Output}],tap:[{type:e.Output}],dbltap:[{type:e.Output}],touchstart:[{type:e.Output}],scaleXChange:[{type:e.Output}],fillChange:[{type:e.Output}],dragstart:[{type:e.Output}],dragmove:[{type:e.Output}],dragend:[{type:e.Output}]},t}(),u=function(){function t(t){this.elementRef=t,this.shapes=new e.QueryList,this.click=new e.EventEmitter,this.dblclick=new e.EventEmitter,this.mouseover=new e.EventEmitter,this.mouseout=new e.EventEmitter,this.mousemove=new e.EventEmitter,this.tap=new e.EventEmitter,this.dbltap=new e.EventEmitter,this.touchstart=new e.EventEmitter,this.scaleXChange=new e.EventEmitter,this.fillChange=new e.EventEmitter,this.dragstart=new e.EventEmitter,this.dragmove=new e.EventEmitter,this.dragend=new e.EventEmitter,this.cacheProps={}}return t.prototype.getStage=function(){return this._stage||{}},t.prototype.getConfig=function(){return this._config||{}},t.prototype.uploadKonva=function(t){var e=a({},t,i(this));r(this,e,this.cacheProps),this.cacheProps=e},t.prototype.ngOnInit=function(){var t=this,e=this.elementRef.nativeElement;this.config.subscribe(function(n){t._config=n,t._stage?t.uploadKonva(n):(t._stage=new Konva.Stage({width:n.width,height:n.height,container:e}),t.uploadKonva(n))})},t.prototype.ngAfterContentInit=function(){var t=this;this.shapes.forEach(function(e){t._stage.add(e.getStage()),o(t._stage)})},t.prototype.ngOnDestroy=function(){this._stage.destroy()},t.decorators=[{type:e.Component,args:[{selector:"ko-stage",template:"<div><ng-content></ng-content>{{config}}</div>"}]}],t.ctorParameters=function(){return[{type:e.ElementRef}]},t.propDecorators={shapes:[{type:e.ContentChildren,args:[s]}],config:[{type:e.Input}],click:[{type:e.Output}],dblclick:[{type:e.Output}],mouseover:[{type:e.Output}],mouseout:[{type:e.Output}],mousemove:[{type:e.Output}],tap:[{type:e.Output}],dbltap:[{type:e.Output}],touchstart:[{type:e.Output}],scaleXChange:[{type:e.Output}],fillChange:[{type:e.Output}],dragstart:[{type:e.Output}],dragmove:[{type:e.Output}],dragend:[{type:e.Output}]},t}();"undefined"==typeof window||window.Konva||require("konva");var p=function(){function t(){}return t.decorators=[{type:e.NgModule,args:[{imports:[n.CommonModule],declarations:[u,s],exports:[u,s]}]}],t}();t.KonvaModule=p,t.StageComponent=u,t.CoreShapeComponent=s,Object.defineProperty(t,"__esModule",{value:!0})});
//# sourceMappingURL=ng2-konva.umd.min.js.map

@@ -1,1 +0,1 @@

{"__symbolic":"module","version":3,"metadata":{"KonvaModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule"},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule"}],"declarations":[{"__symbolic":"reference","name":"StageComponent"},{"__symbolic":"reference","name":"CoreShapeComponent"}],"exports":[{"__symbolic":"reference","name":"StageComponent"},{"__symbolic":"reference","name":"CoreShapeComponent"}]}]}],"members":{}},"StageComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component"},"arguments":[{"selector":"ko-stage","template":"<div><ng-content></ng-content>{{config}}</div>"}]}],"members":{"shapes":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChildren"},"arguments":[{"__symbolic":"reference","name":"CoreShapeComponent"}]}]}],"config":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"click":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"dblclick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"mouseover":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"mouseout":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"mousemove":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"tap":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"dbltap":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"touchstart":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"scaleXChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"fillChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"dragstart":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"dragmove":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"dragend":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"getStage":[{"__symbolic":"method"}],"getConfig":[{"__symbolic":"method"}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef"}]}],"uploadKonva":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterContentInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"CoreShapeComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component"},"arguments":[{"selector":"ko-shape, ko-layer, ko-circle, ko-fastlayer, ko-group, ko-label, ko-rect, ko-ellipse, ko-wedge, ko-line, ko-sprite, ko-image, ko-text, ko-text-path, ko-star, ko-ring, ko-arc, ko-tag, ko-path, ko-regular-polygon, ko-arrow","template":"<div><ng-content></ng-content></div>"}]}],"members":{"shapes":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChildren"},"arguments":[{"__symbolic":"reference","name":"CoreShapeComponent"}]}]}],"config":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input"}}]}],"click":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"dblclick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"mouseover":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"mouseout":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"mousemove":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"tap":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"dbltap":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"touchstart":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"scaleXChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"fillChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"dragstart":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"dragmove":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"dragend":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output"}}]}],"getStage":[{"__symbolic":"method"}],"getConfig":[{"__symbolic":"method"}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef"}]}],"ngOnInit":[{"__symbolic":"method"}],"initKonva":[{"__symbolic":"method"}],"uploadKonva":[{"__symbolic":"method"}],"ngAfterContentInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"KonvaComponent":{"__symbolic":"interface"}},"origins":{"KonvaModule":"./lib/konva.module","StageComponent":"./lib/components/stage.component","CoreShapeComponent":"./lib/components/core-shape.component","KonvaComponent":"./lib/ko.interface"},"importAs":"ng2-konva"}
{"__symbolic":"module","version":4,"metadata":{"KonvaModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":17,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common","name":"CommonModule","line":19,"character":4}],"declarations":[{"__symbolic":"reference","name":"StageComponent"},{"__symbolic":"reference","name":"CoreShapeComponent"}],"exports":[{"__symbolic":"reference","name":"StageComponent"},{"__symbolic":"reference","name":"CoreShapeComponent"}]}]}],"members":{}},"StageComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":19,"character":1},"arguments":[{"selector":"ko-stage","template":"<div><ng-content></ng-content>{{config}}</div>"}]}],"members":{"shapes":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChildren","line":25,"character":3},"arguments":[{"__symbolic":"reference","name":"CoreShapeComponent"}]}]}],"config":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":26,"character":3}}]}],"click":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":27,"character":3}}]}],"dblclick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":28,"character":3}}]}],"mouseover":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":29,"character":3}}]}],"mouseout":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":30,"character":3}}]}],"mousemove":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":31,"character":3}}]}],"tap":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":32,"character":3}}]}],"dbltap":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":33,"character":3}}]}],"touchstart":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":34,"character":3}}]}],"scaleXChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":35,"character":3}}]}],"fillChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":36,"character":3}}]}],"dragstart":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":37,"character":3}}]}],"dragmove":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":38,"character":3}}]}],"dragend":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":39,"character":3}}]}],"getStage":[{"__symbolic":"method"}],"getConfig":[{"__symbolic":"method"}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":53,"character":34}]}],"uploadKonva":[{"__symbolic":"method"}],"ngOnInit":[{"__symbolic":"method"}],"ngAfterContentInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"CoreShapeComponent":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Component","line":23,"character":1},"arguments":[{"selector":"ko-shape, ko-layer, ko-circle, ko-fastlayer, ko-group, ko-label, ko-rect, ko-ellipse, ko-wedge, ko-line, ko-sprite, ko-image, ko-text, ko-text-path, ko-star, ko-ring, ko-arc, ko-tag, ko-path, ko-regular-polygon, ko-arrow","template":"<div><ng-content></ng-content></div>"}]}],"members":{"shapes":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"ContentChildren","line":31,"character":3},"arguments":[{"__symbolic":"reference","name":"CoreShapeComponent"}]}]}],"config":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Input","line":33,"character":3}}]}],"click":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":34,"character":3}}]}],"dblclick":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":35,"character":3}}]}],"mouseover":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":36,"character":3}}]}],"mouseout":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":37,"character":3}}]}],"mousemove":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":38,"character":3}}]}],"tap":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":39,"character":3}}]}],"dbltap":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":40,"character":3}}]}],"touchstart":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":41,"character":3}}]}],"scaleXChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":42,"character":3}}]}],"fillChange":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":43,"character":3}}]}],"dragstart":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":44,"character":3}}]}],"dragmove":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":45,"character":3}}]}],"dragend":[{"__symbolic":"property","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Output","line":46,"character":3}}]}],"getStage":[{"__symbolic":"method"}],"getConfig":[{"__symbolic":"method"}],"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/core","name":"ElementRef","line":63,"character":34}]}],"ngOnInit":[{"__symbolic":"method"}],"initKonva":[{"__symbolic":"method"}],"uploadKonva":[{"__symbolic":"method"}],"ngAfterContentInit":[{"__symbolic":"method"}],"ngOnDestroy":[{"__symbolic":"method"}]}},"KonvaComponent":{"__symbolic":"interface"}},"origins":{"KonvaModule":"./lib/konva.module","StageComponent":"./lib/components/stage.component","CoreShapeComponent":"./lib/components/core-shape.component","KonvaComponent":"./lib/ko.interface"},"importAs":"ng2-konva"}

@@ -1,1 +0,100 @@

{"name":"ng2-konva","version":"2.0.6","description":"Angular binding to canvas element via Konva framework","keywords":["angular","angular2","ng","konva","canvas"],"main":"bundles/ng2-konva.umd.js","jsnext:main":"konva.module.js","module":"ng2-konva.es5.js","types":"konva.module.d.ts","scripts":{"ng":"ng","start":"ng serve","test":"mocha --require ts-node/register test/**/*.spec.ts --recursive","test:watch":"mocha -w --require ts-node/register test/**/*.spec.ts --recursive","lite":"lite-server","webpack":"webpack","build":"rimraf dist && tsc -p tsconfig-esm.json && rollup -c rollup.config.js dist/konva.module.js > dist/konva.bundle.js && cp package.json dist && ts-node tools/cleanup.ts && ngc && cp readme.md dist","lint":"tslint -c tslint.json lib/**/*.ts test/**/*.ts","packagr":"ng-packagr -p ng-package.json"},"repository":{"type":"git","url":"https://github.com/rafaesc/ng2-konva.git"},"author":{"name":"Rafael Escala","email":"rafaesc92@gmail.com"},"license":"MIT","bugs":{"url":"https://github.com/rafaesc/ng2-konva.git/issues"},"peerDependencies":{"@angular/core":">=4.0.0"},"devDependencies":{"@angular/animations":"^5.0.3","@angular/cli":"1.5.4","@angular/common":"^5.0.3","@angular/compiler":"^5.0.3","@angular/compiler-cli":"^5.0.0","@angular/core":"^5.0.3","@angular/forms":"^5.0.3","@angular/http":"^5.0.3","@angular/language-service":"^5.0.0","@angular/platform-browser":"^5.0.3","@angular/platform-browser-dynamic":"^5.0.3","@angular/router":"^5.0.3","@types/jasmine":"~2.5.53","@types/jasminewd2":"~2.0.2","@types/node":"~6.0.60","codelyzer":"^4.0.1","concurrently":"^3.5.1","core-js":"^2.4.1","html-loader":"^0.5.1","jasmine-core":"~2.6.2","jasmine-spec-reporter":"~4.1.0","karma":"~1.7.0","karma-chrome-launcher":"~2.1.1","karma-cli":"~1.0.1","karma-coverage-istanbul-reporter":"^1.2.1","karma-jasmine":"~1.1.0","karma-jasmine-html-reporter":"^0.2.2","konva":"^1.7.6","lite-server":"^2.3.0","markdown-loader":"^2.0.1","ng-packagr":"^1.6.0","ng2-konva":"^1.0.8","node-sass":"^4.7.2","node-sass-tilde-importer":"^1.0.0","protractor":"~5.1.2","raw-loader":"^0.5.1","rimraf":"^2.5.4","rollup":"^0.41.4","rollup-plugin-commonjs":"^8.0.2","rollup-plugin-node-resolve":"^3.0.0","rxjs":"^5.5.2","systemjs":"0.19.28","ts-helpers":"^1.1.2","ts-loader":"^3.2.0","ts-node":"~3.2.0","tslib":"^1.5.0","tslint":"~5.7.0","typescript":"~2.4.2","uglifyjs":"^2.4.10","uglifyjs-webpack-plugin":"^1.0.1","url-loader":"^0.6.2","webpack":"^3.10.0","zone.js":"^0.8.14"},"engines":{"node":">=6.0.0"},"es2015":"ng2-konva.js","typings":"ng2-konva.d.ts","metadata":"ng2-konva.metadata.json"}
{
"name": "ng2-konva",
"version": "2.0.7",
"description": "Angular binding to canvas element via Konva framework",
"keywords": [
"angular",
"angular2",
"ng",
"konva",
"canvas"
],
"main": "bundles/ng2-konva.umd.js",
"jsnext:main": "konva.module.js",
"module": "fesm5/ng2-konva.js",
"types": "konva.module.d.ts",
"repository": {
"type": "git",
"url": "https://github.com/rafaesc/ng2-konva.git"
},
"author": {
"name": "Rafael Escala",
"email": "rafaesc92@gmail.com"
},
"license": "MIT",
"bugs": {
"url": "https://github.com/rafaesc/ng2-konva.git/issues"
},
"peerDependencies": {
"@angular/core": ">=4.0.0"
},
"devDependencies": {
"@angular/animations": "^6.0.6",
"@angular/cli": "1.5.4",
"@angular/common": "^6.0.6",
"@angular/compiler": "^6.0.6",
"@angular/compiler-cli": "^6.0.6",
"@angular/core": "^6.0.6",
"@angular/forms": "^6.0.6",
"@angular/http": "^6.0.6",
"@angular/language-service": "^6.0.6",
"@angular/platform-browser": "^6.0.6",
"@angular/platform-browser-dynamic": "^6.0.6",
"@angular/router": "^6.0.6",
"@types/jasmine": "~2.5.53",
"@types/jasminewd2": "~2.0.2",
"@types/node": "~6.0.60",
"codelyzer": "^4.0.1",
"concurrently": "^3.5.1",
"core-js": "^2.4.1",
"html-loader": "^0.5.1",
"jasmine-core": "~2.6.2",
"jasmine-spec-reporter": "~4.1.0",
"karma": "~1.7.0",
"karma-chrome-launcher": "~2.1.1",
"karma-cli": "~1.0.1",
"karma-coverage-istanbul-reporter": "^1.2.1",
"karma-jasmine": "~1.1.0",
"karma-jasmine-html-reporter": "^0.2.2",
"konva": "^1.7.6",
"lite-server": "^2.3.0",
"markdown-loader": "^2.0.1",
"ng-packagr": "^3.0.3",
"ng2-konva": "^2.0.6",
"node-sass": "^4.7.2",
"node-sass-tilde-importer": "^1.0.0",
"protractor": "~5.1.2",
"raw-loader": "^0.5.1",
"rimraf": "^2.5.4",
"rollup": "^0.41.4",
"rollup-plugin-commonjs": "^8.0.2",
"rollup-plugin-node-resolve": "^3.0.0",
"rxjs": "^5.5.2",
"systemjs": "0.19.28",
"ts-helpers": "^1.1.2",
"ts-loader": "^3.2.0",
"ts-node": "~3.2.0",
"tslib": "^1.5.0",
"tslint": "~5.7.0",
"typescript": "~2.7.2",
"uglifyjs": "^2.4.10",
"uglifyjs-webpack-plugin": "^1.0.1",
"url-loader": "^0.6.2",
"webpack": "^4.12.0",
"zone.js": "^0.8.14"
},
"engines": {
"node": ">=6.0.0"
},
"es2015": "fesm2015/ng2-konva.js",
"esm5": "esm5/ng2-konva.js",
"esm2015": "esm2015/ng2-konva.js",
"fesm5": "fesm5/ng2-konva.js",
"fesm2015": "fesm2015/ng2-konva.js",
"typings": "ng2-konva.d.ts",
"metadata": "ng2-konva.metadata.json",
"sideEffects": false,
"dependencies": {
"tslib": "^1.9.0"
}
}

Sorry, the diff of this file is not supported yet

Sorry, the diff of this file is not supported yet

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc