first commit
This commit is contained in:
+194
@@ -0,0 +1,194 @@
|
||||
/*
|
||||
* Konva JavaScript Framework v10.9.0
|
||||
* http://konvajs.org/
|
||||
* Licensed under the MIT
|
||||
* Date: @@date
|
||||
*
|
||||
* Original work Copyright (C) 2011 - 2013 by Eric Rowell (KineticJS)
|
||||
* Modified work Copyright (C) 2014 - present by Anton Lavrenov (Konva)
|
||||
*
|
||||
* @license
|
||||
*/
|
||||
const PI_OVER_180 = Math.PI / 180;
|
||||
/**
|
||||
* @namespace Konva
|
||||
*/
|
||||
function detectBrowser() {
|
||||
return (typeof window !== 'undefined' &&
|
||||
// browser case
|
||||
({}.toString.call(window) === '[object Window]' ||
|
||||
// electron case
|
||||
{}.toString.call(window) === '[object global]'));
|
||||
}
|
||||
export const glob = typeof global !== 'undefined'
|
||||
? global
|
||||
: typeof window !== 'undefined'
|
||||
? window
|
||||
: typeof WorkerGlobalScope !== 'undefined'
|
||||
? self
|
||||
: {};
|
||||
export const Konva = {
|
||||
_global: glob,
|
||||
version: '10.9.0',
|
||||
isBrowser: detectBrowser(),
|
||||
isUnminified: /param/.test(function (param) { }.toString()),
|
||||
dblClickWindow: 400,
|
||||
getAngle(angle) {
|
||||
return Konva.angleDeg ? angle * PI_OVER_180 : angle;
|
||||
},
|
||||
enableTrace: false,
|
||||
pointerEventsEnabled: true,
|
||||
/**
|
||||
* Should Konva automatically update canvas on any changes. Default is true.
|
||||
* @property autoDrawEnabled
|
||||
* @default true
|
||||
* @name autoDrawEnabled
|
||||
* @memberof Konva
|
||||
* @example
|
||||
* Konva.autoDrawEnabled = true;
|
||||
*/
|
||||
autoDrawEnabled: true,
|
||||
/**
|
||||
* Should we enable hit detection while dragging? For performance reasons, by default it is false.
|
||||
* But on some rare cases you want to see hit graph and check intersections. Just set it to true.
|
||||
* @property hitOnDragEnabled
|
||||
* @default false
|
||||
* @name hitOnDragEnabled
|
||||
* @memberof Konva
|
||||
* @example
|
||||
* Konva.hitOnDragEnabled = true;
|
||||
*/
|
||||
hitOnDragEnabled: false,
|
||||
/**
|
||||
* Should we capture touch events and bind them to the touchstart target? That is how it works on DOM elements.
|
||||
* The case: we touchstart on div1, then touchmove out of that element into another element div2.
|
||||
* DOM will continue trigger touchmove events on div1 (not div2). Because events are "captured" into initial target.
|
||||
* By default Konva do not do that and will trigger touchmove on another element, while pointer is moving.
|
||||
* @property capturePointerEventsEnabled
|
||||
* @default false
|
||||
* @name capturePointerEventsEnabled
|
||||
* @memberof Konva
|
||||
* @example
|
||||
* Konva.capturePointerEventsEnabled = true;
|
||||
*/
|
||||
capturePointerEventsEnabled: false,
|
||||
_renderBackend: 'web', // web, node-canvas, skia-canvas
|
||||
/**
|
||||
* Use legacy text rendering. with "middle" baseline by default.
|
||||
* @property legacyTextRendering
|
||||
* @default false
|
||||
* @name legacyTextRendering
|
||||
* @memberof Konva
|
||||
* @example
|
||||
* Konva.legacyTextRendering = true;
|
||||
*/
|
||||
legacyTextRendering: false,
|
||||
/**
|
||||
* Global pixel ratio configuration. KonvaJS automatically detect pixel ratio of current device.
|
||||
* But you may override such property, if you want to use your value. Set this value before any components initializations.
|
||||
* @property pixelRatio
|
||||
* @default window.devicePixelRatio || 1
|
||||
* @name pixelRatio
|
||||
* @memberof Konva
|
||||
* @example
|
||||
* // before any Konva code:
|
||||
* Konva.pixelRatio = 1;
|
||||
*/
|
||||
pixelRatio: (typeof window !== 'undefined' && window.devicePixelRatio) || 1,
|
||||
/**
|
||||
* Drag distance property. If you start to drag a node you may want to wait until pointer is moved to some distance from start point
|
||||
* on either axis, only then start dragging. Default is 3px.
|
||||
* @property dragDistance
|
||||
* @default 3
|
||||
* @memberof Konva
|
||||
* @example
|
||||
* Konva.dragDistance = 10;
|
||||
*/
|
||||
dragDistance: 3,
|
||||
/**
|
||||
* Use degree values for angle properties. You may set this property to false if you want to use radian values.
|
||||
* @property angleDeg
|
||||
* @default true
|
||||
* @memberof Konva
|
||||
* @example
|
||||
* node.rotation(45); // 45 degrees
|
||||
* Konva.angleDeg = false;
|
||||
* node.rotation(Math.PI / 2); // PI/2 radian
|
||||
*/
|
||||
angleDeg: true,
|
||||
/**
|
||||
* Show warnings about wrong API usage (`Konva.Util.warn`). Errors are always printed
|
||||
* @property showWarnings
|
||||
* @default true
|
||||
* @memberof Konva
|
||||
* @example
|
||||
* Konva.showWarnings = false;
|
||||
*/
|
||||
showWarnings: true,
|
||||
/**
|
||||
* Configure what mouse buttons can be used for drag and drop.
|
||||
* Default value is [0, 1] - left and middle mouse buttons.
|
||||
* @property dragButtons
|
||||
* @default [0, 1]
|
||||
* @memberof Konva
|
||||
* @example
|
||||
* // enable left and right mouse buttons
|
||||
* Konva.dragButtons = [0, 2];
|
||||
*/
|
||||
dragButtons: [0, 1],
|
||||
/**
|
||||
* returns whether or not drag and drop is currently active
|
||||
* @method
|
||||
* @memberof Konva
|
||||
*/
|
||||
isDragging() {
|
||||
return Konva['DD'].isDragging;
|
||||
},
|
||||
/**
|
||||
* returns whether or not a Transformer is currently transforming a node
|
||||
* @method
|
||||
* @memberof Konva
|
||||
*/
|
||||
isTransforming() {
|
||||
var _a, _b;
|
||||
return (_b = (_a = Konva['Transformer']) === null || _a === void 0 ? void 0 : _a.isTransforming()) !== null && _b !== void 0 ? _b : false;
|
||||
},
|
||||
/**
|
||||
* returns whether or not a drag and drop operation is ready, but may
|
||||
* not necessarily have started
|
||||
* @method
|
||||
* @memberof Konva
|
||||
*/
|
||||
isDragReady() {
|
||||
return !!Konva['DD'].node;
|
||||
},
|
||||
/**
|
||||
* Should Konva release canvas elements on destroy. Default is true.
|
||||
* Useful to avoid memory leak issues in Safari on macOS/iOS.
|
||||
* @property releaseCanvasOnDestroy
|
||||
* @default true
|
||||
* @name releaseCanvasOnDestroy
|
||||
* @memberof Konva
|
||||
* @example
|
||||
* Konva.releaseCanvasOnDestroy = true;
|
||||
*/
|
||||
releaseCanvasOnDestroy: true,
|
||||
document: glob.document,
|
||||
// insert Konva into global namespace (window)
|
||||
// it is required for npm packages
|
||||
_injectGlobal(Konva) {
|
||||
if (typeof glob.Konva !== 'undefined') {
|
||||
console.error('Several Konva instances detected. It is not recommended to use multiple Konva instances in the same environment.');
|
||||
}
|
||||
glob.Konva = Konva;
|
||||
},
|
||||
};
|
||||
// Konva's own shapes whose bounds cover everything they paint. Plugins can
|
||||
// import _registerNode, so they opt in explicitly.
|
||||
export const _boundedShapes = new Set();
|
||||
export const _registerNode = (NodeClass, boundsCoverPaint = false) => {
|
||||
Konva[NodeClass.prototype.getClassName()] = NodeClass;
|
||||
if (boundsCoverPaint)
|
||||
_boundedShapes.add(NodeClass);
|
||||
};
|
||||
Konva._injectGlobal(Konva);
|
||||
Reference in New Issue
Block a user