New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

@idraw/core

Package Overview
Dependencies
Maintainers
1
Versions
122
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@idraw/core - npm Package Compare versions

Comparing version 0.3.0-beta.3 to 0.3.0-beta.6

88

dist/esm/index.d.ts

@@ -1,47 +0,46 @@

import { TypeData, TypePoint, TypeBoardSizeOptions, TypeConfig, TypeElementBase, TypeElement, TypeElemDesc, TypeContext, TypeCoreOptions, TypeScreenContext, TypeScreenData } from '@idraw/types';
import { TypeIs } from './lib/is';
import { TypeCheck } from './lib/check';
import { TypeCoreEventArgMap } from './lib';
import { _board, _data, _opts, _config, _renderer, _element, _tempData, _draw, _coreEvent, _emitChangeScreen, _emitChangeData, _engine } from './names';
import { IDrawData, Point, BoardSizeOptions, IDrawConfig, DataElementBase, DataElement, DataElemDesc, IDrawContext, CoreOptions, ScreenContext, ScreenData } from '@idraw/types';
import { IsTypeUtil } from './lib/is';
import { CheckTypeUtil } from './lib/check';
import { Element, TypeCoreEventArgMap } from './lib';
import { Engine } from './lib/engine';
export default class Core {
private [_board];
private [_data];
private [_opts];
private [_config];
private [_renderer];
private [_element];
private [_coreEvent];
private [_tempData];
private [_engine];
static is: TypeIs;
static check: TypeCheck;
constructor(mount: HTMLDivElement, opts: TypeCoreOptions, config?: TypeConfig);
[_draw](opts?: {
$data: IDrawData;
private _board;
private _opts;
private _config;
private _renderer;
private _elementHandler;
private _coreEvent;
private _tempData;
private _engine;
static is: IsTypeUtil;
static check: CheckTypeUtil;
constructor(mount: HTMLDivElement, opts: CoreOptions, config?: IDrawConfig);
private _emitChangeScreen;
$draw(opts?: {
resourceChangeUUIDs?: string[];
}): void;
getElement(uuid: string): TypeElement<keyof TypeElemDesc> | null;
getElementByIndex(index: number): TypeElement<keyof TypeElemDesc> | null;
getElement(uuid: string): any;
getElementByIndex(index: number): any;
selectElementByIndex(index: number): void;
selectElement(uuid: string): void;
cancelElementByIndex(index: number): void;
cancelElement(uuid: string, opts?: {
useMode?: boolean;
}): void;
cancelElement(uuid: string): void;
moveUpElement(uuid: string): void;
moveDownElement(uuid: string): void;
updateElement(elem: TypeElement<keyof TypeElemDesc>): void;
addElement(elem: TypeElementBase<keyof TypeElemDesc>): string | null;
updateElement(elem: DataElement<keyof DataElemDesc>): void;
addElement(elem: DataElementBase<keyof DataElemDesc>): string | null;
deleteElement(uuid: string): void;
insertElementBefore(elem: TypeElementBase<keyof TypeElemDesc>, beforeUUID: string): any;
insertElementBeforeIndex(elem: TypeElementBase<keyof TypeElemDesc>, index: number): any;
getSelectedElements(): TypeElement<keyof TypeElemDesc>[];
insertElementAfter(elem: TypeElementBase<keyof TypeElemDesc>, beforeUUID: string): any;
insertElementAfterIndex(elem: TypeElementBase<keyof TypeElemDesc>, index: number): any;
resetSize(opts: TypeBoardSizeOptions): void;
scale(ratio: number): TypeScreenContext;
scrollLeft(left: number): TypeScreenContext;
scrollTop(top: number): TypeScreenContext;
getScreenTransform(): TypeScreenData;
getData(): TypeData;
setData(data: any | TypeData, opts?: {
insertElementBefore(elem: DataElementBase<keyof DataElemDesc>, beforeUUID: string): any;
insertElementBeforeIndex(elem: DataElementBase<keyof DataElemDesc>, index: number): any;
getSelectedElements(): DataElement<string | number | symbol>[];
insertElementAfter(elem: DataElementBase<keyof DataElemDesc>, beforeUUID: string): any;
insertElementAfterIndex(elem: DataElementBase<keyof DataElemDesc>, index: number): any;
resetSize(opts: BoardSizeOptions): void;
scale(ratio: number): ScreenContext;
scrollLeft(left: number): ScreenContext;
scrollTop(top: number): ScreenContext;
getScreenTransform(): ScreenData;
getData(): IDrawData;
setData(data: any | IDrawData, opts?: {
triggerChangeEvent: boolean;

@@ -52,9 +51,10 @@ }): void;

off<T extends keyof TypeCoreEventArgMap>(key: T, callback: (p: TypeCoreEventArgMap[T]) => void): void;
pointScreenToContext(p: TypePoint): TypePoint;
pointContextToScreen(p: TypePoint): TypePoint;
__getBoardContext(): TypeContext;
__getDisplayContext2D(): CanvasRenderingContext2D;
__getOriginContext2D(): CanvasRenderingContext2D;
private [_emitChangeScreen];
private [_emitChangeData];
getEngine(): Engine;
pointScreenToContext(p: Point): any;
pointContextToScreen(p: Point): any;
$getBoardContext(): IDrawContext;
$getDisplayContext2D(): CanvasRenderingContext2D;
$getOriginContext2D(): CanvasRenderingContext2D;
$emitChangeData(): void;
$getElementHandler(): Element;
}

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

var _a, _b;
import Board from '@idraw/board';

@@ -8,21 +7,20 @@ import { deepClone } from '@idraw/util';

import { Element, mergeConfig, CoreEvent, parseData, TempData, diffElementResourceChangeList } from './lib';
import { _board, _data, _opts, _config, _renderer, _element, _tempData, _draw, _coreEvent, _emitChangeScreen, _emitChangeData, _engine } from './names';
import { getSelectedElements, updateElement, selectElementByIndex, selectElement, cancelElementByIndex, cancelElement, getElement, getElementByIndex, moveUpElement, moveDownElement, addElement, deleteElement, insertElementBefore, insertElementBeforeIndex, insertElementAfter, insertElementAfterIndex } from './mixins/element';
import { Engine } from './lib/engine';
import { drawElementWrapper, drawAreaWrapper, drawElementListWrappers } from './lib/draw/wrapper';
export default class Core {
class Core {
constructor(mount, opts, config) {
var _c, _d, _e;
this[_a] = new CoreEvent();
this[_b] = new TempData();
this[_data] = { elements: [] };
this[_opts] = opts;
this[_config] = mergeConfig(config || {});
this[_board] = new Board(mount, Object.assign(Object.assign({}, this[_opts]), { canScroll: (_c = config === null || config === void 0 ? void 0 : config.scrollWrapper) === null || _c === void 0 ? void 0 : _c.use, scrollConfig: Object.assign({ color: ((_d = config === null || config === void 0 ? void 0 : config.scrollWrapper) === null || _d === void 0 ? void 0 : _d.color) || '#000000', width: ((_e = config === null || config === void 0 ? void 0 : config.scrollWrapper) === null || _e === void 0 ? void 0 : _e.width) || 12 }, ((config === null || config === void 0 ? void 0 : config.scrollWrapper) || {})) }));
this[_renderer] = new Renderer();
var _a, _b, _c;
this._coreEvent = new CoreEvent();
this._tempData = new TempData();
this.$data = { elements: [] };
this._opts = opts;
this._config = mergeConfig(config || {});
this._board = new Board(mount, Object.assign(Object.assign({}, this._opts), { canScroll: (_a = config === null || config === void 0 ? void 0 : config.scrollWrapper) === null || _a === void 0 ? void 0 : _a.use, scrollConfig: Object.assign({ color: ((_b = config === null || config === void 0 ? void 0 : config.scrollWrapper) === null || _b === void 0 ? void 0 : _b.color) || '#000000', width: ((_c = config === null || config === void 0 ? void 0 : config.scrollWrapper) === null || _c === void 0 ? void 0 : _c.width) || 12 }, ((config === null || config === void 0 ? void 0 : config.scrollWrapper) || {})) }));
this._renderer = new Renderer();
const drawFrame = () => {
const helperCtx = this[_board].getHelperContext();
const helperConfig = this[_engine].getHelperConfig();
this[_board].clear();
const { contextWidth, contextHeight, devicePixelRatio } = this[_opts];
const helperCtx = this._board.getHelperContext();
const helperConfig = this._engine.getHelperConfig();
this._board.clear();
const { contextWidth, contextHeight, devicePixelRatio } = this._opts;
helperCtx.clearRect(0, 0, contextWidth * devicePixelRatio, contextHeight * devicePixelRatio);

@@ -32,39 +30,44 @@ drawElementWrapper(helperCtx, helperConfig);

drawElementListWrappers(helperCtx, helperConfig);
this[_board].draw();
this._board.draw();
};
this[_renderer].on('drawFrame', () => {
this._renderer.on('drawFrame', () => {
drawFrame();
});
this[_renderer].on('drawFrameComplete', () => {
this._renderer.on('drawFrameComplete', () => {
drawFrame();
});
this[_element] = new Element(this[_board].getContext());
this[_engine] = new Engine({
coreEvent: this[_coreEvent],
board: this[_board],
element: this[_element],
config: this[_config],
drawFeekback: this[_draw].bind(this),
getDataFeekback: () => this[_data],
this._elementHandler = new Element(this._board.getContext());
this._engine = new Engine({
coreEvent: this._coreEvent,
board: this._board,
element: this._elementHandler,
config: this._config,
drawFeekback: this.$draw.bind(this),
getDataFeekback: () => this.$data,
selectElementByIndex: this.selectElementByIndex.bind(this),
emitChangeScreen: this[_emitChangeScreen].bind(this),
emitChangeData: this[_emitChangeData].bind(this)
emitChangeScreen: this._emitChangeScreen.bind(this),
emitChangeData: this.$emitChangeData.bind(this)
});
this[_engine].init();
this[_renderer].on('drawFrame', () => {
this[_coreEvent].trigger('drawFrame', undefined);
this._engine.init();
this._renderer.on('drawFrame', () => {
this._coreEvent.trigger('drawFrame', undefined);
});
this[_renderer].on('drawFrameComplete', () => {
this[_coreEvent].trigger('drawFrameComplete', undefined);
this._renderer.on('drawFrameComplete', () => {
this._coreEvent.trigger('drawFrameComplete', undefined);
});
this[_tempData].set('hasInited', true);
this._tempData.set('hasInited', true);
}
[(_a = _coreEvent, _b = _tempData, _draw)](opts) {
this[_engine].updateHelperConfig({
width: this[_opts].width,
height: this[_opts].height,
devicePixelRatio: this[_opts].devicePixelRatio
_emitChangeScreen() {
if (this._coreEvent.has('changeScreen')) {
this._coreEvent.trigger('changeScreen', Object.assign({}, this.getScreenTransform()));
}
}
$draw(opts) {
this._engine.updateHelperConfig({
width: this._opts.width,
height: this._opts.height,
devicePixelRatio: this._opts.devicePixelRatio
});
this[_renderer].thaw();
this[_renderer].render(this[_board].getContext(), this[_data], {
this._renderer.thaw();
this._renderer.render(this._board.getContext(), this.$data, {
changeResourceUUIDs: (opts === null || opts === void 0 ? void 0 : opts.resourceChangeUUIDs) || []

@@ -88,4 +91,4 @@ });

}
cancelElement(uuid, opts) {
return cancelElement(this, uuid, opts);
cancelElement(uuid) {
return cancelElement(this, uuid);
}

@@ -123,26 +126,26 @@ moveUpElement(uuid) {

resetSize(opts) {
this[_opts] = Object.assign(Object.assign({}, this[_opts]), opts);
this[_board].resetSize(opts);
this[_draw]();
this._opts = Object.assign(Object.assign({}, this._opts), opts);
this._board.resetSize(opts);
this.$draw();
}
scale(ratio) {
const screen = this[_board].scale(ratio);
this[_draw]();
this[_emitChangeScreen]();
const screen = this._board.scale(ratio);
this.$draw();
this._emitChangeScreen();
return screen;
}
scrollLeft(left) {
const screen = this[_board].scrollX(0 - left);
this[_draw]();
this[_emitChangeScreen]();
const screen = this._board.scrollX(0 - left);
this.$draw();
this._emitChangeScreen();
return screen;
}
scrollTop(top) {
const screen = this[_board].scrollY(0 - top);
this[_draw]();
this[_emitChangeScreen]();
const screen = this._board.scrollY(0 - top);
this.$draw();
this._emitChangeScreen();
return screen;
}
getScreenTransform() {
const transform = this[_board].getTransform();
const transform = this._board.getTransform();
return {

@@ -155,46 +158,47 @@ scale: transform.scale,

getData() {
return deepClone(this[_data]);
return deepClone(this.$data);
}
setData(data, opts) {
const resourceChangeUUIDs = diffElementResourceChangeList(this[_data], data);
this[_data] = this[_element].initData(deepClone(parseData(data)));
const resourceChangeUUIDs = diffElementResourceChangeList(this.$data, data);
this.$data = this._elementHandler.initData(deepClone(parseData(data)));
if (opts && opts.triggerChangeEvent === true) {
this[_emitChangeData]();
this.$emitChangeData();
}
this[_draw]({ resourceChangeUUIDs });
this.$draw({ resourceChangeUUIDs });
}
clearOperation() {
this[_tempData].clear();
this[_draw]();
this._tempData.clear();
this.$draw();
}
on(key, callback) {
this[_coreEvent].on(key, callback);
this._coreEvent.on(key, callback);
}
off(key, callback) {
this[_coreEvent].off(key, callback);
this._coreEvent.off(key, callback);
}
getEngine() {
return this._engine;
}
pointScreenToContext(p) {
return this[_board].pointScreenToContext(p);
return this._board.pointScreenToContext(p);
}
pointContextToScreen(p) {
return this[_board].pointContextToScreen(p);
return this._board.pointContextToScreen(p);
}
__getBoardContext() {
return this[_board].getContext();
$getBoardContext() {
return this._board.getContext();
}
__getDisplayContext2D() {
return this[_board].getDisplayContext2D();
$getDisplayContext2D() {
return this._board.getDisplayContext2D();
}
__getOriginContext2D() {
return this[_board].getOriginContext2D();
$getOriginContext2D() {
return this._board.getOriginContext2D();
}
[_emitChangeScreen]() {
if (this[_coreEvent].has('changeScreen')) {
this[_coreEvent].trigger('changeScreen', Object.assign({}, this.getScreenTransform()));
$emitChangeData() {
if (this._coreEvent.has('changeData')) {
this._coreEvent.trigger('changeData', deepClone(this.$data));
}
}
[_emitChangeData]() {
if (this[_coreEvent].has('changeData')) {
this[_coreEvent].trigger('changeData', deepClone(this[_data]));
}
$getElementHandler() {
return this._elementHandler;
}

@@ -204,1 +208,2 @@ }

Core.check = check;
export default Core;

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

import { TypeElement, TypeElemDesc, TypePoint } from '@idraw/types';
import { DataElement, DataElemDesc, Point } from '@idraw/types';
export declare function parseRadianToAngle(radian: number): number;
export declare function parseAngleToRadian(angle: number): number;
export declare function calcElementCenter(elem: TypeElement<keyof TypeElemDesc>): TypePoint;
export declare function calcRadian(center: TypePoint, start: TypePoint, end: TypePoint): number;
export declare function calcElementCenter(elem: DataElement<keyof DataElemDesc>): Point;
export declare function calcRadian(center: Point, start: Point, end: Point): number;
export function parseRadianToAngle(radian) {
return radian / Math.PI * 180;
return (radian / Math.PI) * 180;
}
export function parseAngleToRadian(angle) {
return angle / 180 * Math.PI;
return (angle / 180) * Math.PI;
}

@@ -10,3 +10,3 @@ export function calcElementCenter(elem) {

x: elem.x + elem.w / 2,
y: elem.y + elem.h / 2,
y: elem.y + elem.h / 2
};

@@ -19,6 +19,6 @@ return p;

if (endAngle !== null && startAngle !== null) {
if (startAngle > Math.PI * 3 / 2 && endAngle < Math.PI / 2) {
if (startAngle > (Math.PI * 3) / 2 && endAngle < Math.PI / 2) {
return endAngle + (Math.PI * 2 - startAngle);
}
else if (endAngle > Math.PI * 3 / 2 && startAngle < Math.PI / 2) {
else if (endAngle > (Math.PI * 3) / 2 && startAngle < Math.PI / 2) {
return startAngle + (Math.PI * 2 - endAngle);

@@ -25,0 +25,0 @@ }

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

import { TypeElementAttrs } from '@idraw/types';
declare function attrs(attrs: TypeElementAttrs): boolean;
import { DataElementAttrs } from '@idraw/types';
declare function attrs(attrs: DataElementAttrs): boolean;
declare function rectDesc(desc: any): boolean;

@@ -18,3 +18,3 @@ declare function circleDesc(desc: any): boolean;

};
type TypeCheck = {
type CheckTypeUtil = {
attrs: (value: any) => boolean;

@@ -28,3 +28,3 @@ rectDesc: (value: any) => boolean;

};
export { TypeCheck };
export { CheckTypeUtil };
export default check;

@@ -113,4 +113,4 @@ import is from './is';

svgDesc,
htmlDesc,
htmlDesc
};
export default check;

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

import { TypeConfig, TypeConfigStrict } from '@idraw/types';
declare function mergeConfig(config?: TypeConfig): TypeConfigStrict;
import { IDrawConfig, IDrawConfigStrict } from '@idraw/types';
declare function mergeConfig(config?: IDrawConfig): IDrawConfigStrict;
export { mergeConfig };

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

import { TypeElement, TypeElemDesc, TypePoint, TypeData, TypeScreenData } from '@idraw/types';
import { DataElement, DataElemDesc, Point, IDrawData, ScreenData } from '@idraw/types';
export type TypeCoreEventSelectBaseArg = {

@@ -7,23 +7,23 @@ index: number | null;

export type TypeCoreEventArgMap = {
'error': any;
'mouseOverScreen': TypePoint;
'mouseLeaveScreen': void;
'mouseOverElement': TypeCoreEventSelectBaseArg & {
element: TypeElement<keyof TypeElemDesc>;
error: any;
mouseOverScreen: Point;
mouseLeaveScreen: void;
mouseOverElement: TypeCoreEventSelectBaseArg & {
element: DataElement<keyof DataElemDesc>;
};
'mouseLeaveElement': TypeCoreEventSelectBaseArg & {
element: TypeElement<keyof TypeElemDesc>;
mouseLeaveElement: TypeCoreEventSelectBaseArg & {
element: DataElement<keyof DataElemDesc>;
};
'screenClickElement': TypeCoreEventSelectBaseArg & {
element: TypeElement<keyof TypeElemDesc>;
screenClickElement: TypeCoreEventSelectBaseArg & {
element: DataElement<keyof DataElemDesc>;
};
'screenDoubleClickElement': TypeCoreEventSelectBaseArg & {
element: TypeElement<keyof TypeElemDesc>;
screenDoubleClickElement: TypeCoreEventSelectBaseArg & {
element: DataElement<keyof DataElemDesc>;
};
'screenSelectElement': TypeCoreEventSelectBaseArg & {
element: TypeElement<keyof TypeElemDesc>;
screenSelectElement: TypeCoreEventSelectBaseArg & {
element: DataElement<keyof DataElemDesc>;
};
'screenMoveElementStart': TypeCoreEventSelectBaseArg & TypePoint;
'screenMoveElementEnd': TypeCoreEventSelectBaseArg & TypePoint;
'screenChangeElement': TypeCoreEventSelectBaseArg & {
screenMoveElementStart: TypeCoreEventSelectBaseArg & Point;
screenMoveElementEnd: TypeCoreEventSelectBaseArg & Point;
screenChangeElement: TypeCoreEventSelectBaseArg & {
width: number;

@@ -33,6 +33,6 @@ height: number;

};
'changeData': TypeData;
'changeScreen': TypeScreenData;
'drawFrameComplete': void;
'drawFrame': void;
changeData: IDrawData;
changeScreen: ScreenData;
drawFrameComplete: void;
drawFrame: void;
};

@@ -39,0 +39,0 @@ export interface TypeCoreEvent {

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

import { TypeElement, TypeData, TypeElemDesc } from '@idraw/types';
export declare function isChangeImageElementResource(before: TypeElement<'image'>, after: TypeElement<'image'>): boolean;
export declare function isChangeSVGElementResource(before: TypeElement<'svg'>, after: TypeElement<'svg'>): boolean;
export declare function isChangeHTMLElementResource(before: TypeElement<'html'>, after: TypeElement<'html'>): boolean;
export declare function diffElementResourceChange(before: TypeElement<keyof TypeElemDesc>, after: TypeElement<keyof TypeElemDesc>): string | null;
export declare function diffElementResourceChangeList(before: TypeData, after: TypeData): string[];
import { DataElement, IDrawData, DataElemDesc } from '@idraw/types';
export declare function isChangeImageElementResource(before: DataElement<'image'>, after: DataElement<'image'>): boolean;
export declare function isChangeSVGElementResource(before: DataElement<'svg'>, after: DataElement<'svg'>): boolean;
export declare function isChangeHTMLElementResource(before: DataElement<'html'>, after: DataElement<'html'>): boolean;
export declare function diffElementResourceChange(before: DataElement<keyof DataElemDesc>, after: DataElement<keyof DataElemDesc>): string | null;
export declare function diffElementResourceChangeList(before: IDrawData, after: IDrawData): string[];
export function isChangeImageElementResource(before, after) {
var _a, _b;
return (((_a = before === null || before === void 0 ? void 0 : before.desc) === null || _a === void 0 ? void 0 : _a.src) !== ((_b = after === null || after === void 0 ? void 0 : after.desc) === null || _b === void 0 ? void 0 : _b.src));
return ((_a = before === null || before === void 0 ? void 0 : before.desc) === null || _a === void 0 ? void 0 : _a.src) !== ((_b = after === null || after === void 0 ? void 0 : after.desc) === null || _b === void 0 ? void 0 : _b.src);
}
export function isChangeSVGElementResource(before, after) {
var _a, _b;
return (((_a = before === null || before === void 0 ? void 0 : before.desc) === null || _a === void 0 ? void 0 : _a.svg) !== ((_b = after === null || after === void 0 ? void 0 : after.desc) === null || _b === void 0 ? void 0 : _b.svg));
return ((_a = before === null || before === void 0 ? void 0 : before.desc) === null || _a === void 0 ? void 0 : _a.svg) !== ((_b = after === null || after === void 0 ? void 0 : after.desc) === null || _b === void 0 ? void 0 : _b.svg);
}
export function isChangeHTMLElementResource(before, after) {
var _a, _b, _c, _d, _e, _f;
return (((_a = before === null || before === void 0 ? void 0 : before.desc) === null || _a === void 0 ? void 0 : _a.html) !== ((_b = after === null || after === void 0 ? void 0 : after.desc) === null || _b === void 0 ? void 0 : _b.html)
|| ((_c = before === null || before === void 0 ? void 0 : before.desc) === null || _c === void 0 ? void 0 : _c.width) !== ((_d = after === null || after === void 0 ? void 0 : after.desc) === null || _d === void 0 ? void 0 : _d.width)
|| ((_e = before === null || before === void 0 ? void 0 : before.desc) === null || _e === void 0 ? void 0 : _e.height) !== ((_f = after === null || after === void 0 ? void 0 : after.desc) === null || _f === void 0 ? void 0 : _f.height));
return (((_a = before === null || before === void 0 ? void 0 : before.desc) === null || _a === void 0 ? void 0 : _a.html) !== ((_b = after === null || after === void 0 ? void 0 : after.desc) === null || _b === void 0 ? void 0 : _b.html) ||
((_c = before === null || before === void 0 ? void 0 : before.desc) === null || _c === void 0 ? void 0 : _c.width) !== ((_d = after === null || after === void 0 ? void 0 : after.desc) === null || _d === void 0 ? void 0 : _d.width) ||
((_e = before === null || before === void 0 ? void 0 : before.desc) === null || _e === void 0 ? void 0 : _e.height) !== ((_f = after === null || after === void 0 ? void 0 : after.desc) === null || _f === void 0 ? void 0 : _f.height));
}

@@ -31,3 +31,4 @@ export function diffElementResourceChange(before, after) {

}
default: break;
default:
break;
}

@@ -63,3 +64,4 @@ if (isChange === true) {

}
default: break;
default:
break;
}

@@ -66,0 +68,0 @@ if (isChange === true) {

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

import { TypeContext, TypeElement } from '@idraw/types';
export declare function clearContext(ctx: TypeContext): void;
export declare function drawBgColor(ctx: TypeContext, color: string): void;
export declare function drawBox(ctx: TypeContext, elem: TypeElement<'text' | 'rect'>, pattern: string | CanvasPattern | null): void;
export declare function drawBoxBorder(ctx: TypeContext, elem: TypeElement<'text' | 'rect'>): void;
import { IDrawContext, DataElement } from '@idraw/types';
export declare function clearContext(ctx: IDrawContext): void;
export declare function drawBgColor(ctx: IDrawContext, color: string): void;
export declare function drawBox(ctx: IDrawContext, elem: DataElement<'text' | 'rect'>, pattern: string | CanvasPattern | null): void;
export declare function drawBoxBorder(ctx: IDrawContext, elem: DataElement<'text' | 'rect'>): void;

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

import { TypeContext, TypeHelperConfig } from '@idraw/types';
export declare function drawElementWrapper(ctx: TypeContext, config: TypeHelperConfig): void;
export declare function drawAreaWrapper(ctx: TypeContext, config: TypeHelperConfig): void;
export declare function drawElementListWrappers(ctx: TypeContext, config: TypeHelperConfig): void;
import { IDrawContext, HelperConfig } from '@idraw/types';
export declare function drawElementWrapper(ctx: IDrawContext, config: HelperConfig): void;
export declare function drawAreaWrapper(ctx: IDrawContext, config: HelperConfig): void;
export declare function drawElementListWrappers(ctx: IDrawContext, config: HelperConfig): void;

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

import { TypeContext, TypePoint, TypeData, TypeHelperWrapperControllerDirection, TypeElement, TypeElemDesc } from '@idraw/types';
import { IDrawContext, Point, IDrawData, HelperWrapperControllerDirection, DataElement, DataElemDesc } from '@idraw/types';
export declare class Element {
private _ctx;
constructor(ctx: TypeContext);
initData(data: TypeData): TypeData;
isPointInElement(p: TypePoint, data: TypeData): [number, string | null];
dragElement(data: TypeData, uuid: string, point: TypePoint, prevPoint: TypePoint, scale: number): void;
transformElement(data: TypeData, uuid: string, point: TypePoint, prevPoint: TypePoint, scale: number, direction: TypeHelperWrapperControllerDirection): null | {
constructor(ctx: IDrawContext);
initData(data: IDrawData): IDrawData;
isPointInElement(p: Point, data: IDrawData): [number, string | null];
dragElement(data: IDrawData, uuid: string, point: Point, prevPoint: Point, scale: number): void;
transformElement(data: IDrawData, uuid: string, point: Point, prevPoint: Point, scale: number, direction: HelperWrapperControllerDirection): null | {
width: number;

@@ -13,4 +13,4 @@ height: number;

};
getElementIndex(data: TypeData, uuid: string): number;
limitElementAttrs(elem: TypeElement<keyof TypeElemDesc>): void;
getElementIndex(data: IDrawData, uuid: string): number;
limitElementAttrs(elem: DataElement<keyof DataElemDesc>): void;
}

@@ -84,3 +84,3 @@ import { createUUID } from '@idraw/util';

].includes(direction)) {
const p = calcuScaleElemPosition(elem, moveX, moveY, direction, scale);
const p = calcuScaleElemPosition(elem, moveX, moveY, direction);
elem.x = p.x;

@@ -121,6 +121,6 @@ elem.y = p.y;

}
function calcuScaleElemPosition(elem, moveX, moveY, direction, scale) {
function calcuScaleElemPosition(elem, moveX, moveY, direction) {
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
const p = { x: elem.x, y: elem.y, w: elem.w, h: elem.h };
let angle = elem.angle;
let angle = elem.angle || 0;
if (angle < 0) {

@@ -147,3 +147,3 @@ angle = Math.max(0, 360 + angle);

case 'top': {
if (elem.angle === 0 || Math.abs(elem.angle) < limitQbliqueAngle) {
if (elem.angle === 0 || Math.abs(elem.angle || 0) < limitQbliqueAngle) {
if (p.h - moveY > 0) {

@@ -158,3 +158,4 @@ p.y += moveY;

}
else if (elem.angle > 0 || elem.angle < 0) {
else if (elem.angle !== undefined &&
(elem.angle > 0 || elem.angle < 0)) {
const angle = elem.angle > 0 ? elem.angle : Math.max(0, elem.angle + 360);

@@ -222,3 +223,3 @@ let moveDist = calcMoveDist(moveX, moveY);

case 'right': {
if (elem.angle === 0 || Math.abs(elem.angle) < limitQbliqueAngle) {
if (elem.angle === 0 || Math.abs(elem.angle || 0) < limitQbliqueAngle) {
if (elem.w + moveX > 0) {

@@ -232,3 +233,4 @@ p.w += moveX;

}
else if (elem.angle > 0 || elem.angle < 0) {
else if (elem.angle !== undefined &&
(elem.angle > 0 || elem.angle < 0)) {
const angle = elem.angle > 0 ? elem.angle : Math.max(0, elem.angle + 360);

@@ -295,3 +297,3 @@ let moveDist = calcMoveDist(moveX, moveY);

case 'bottom': {
if (elem.angle === 0 || Math.abs(elem.angle) < limitQbliqueAngle) {
if (elem.angle === 0 || Math.abs(elem.angle || 0) < limitQbliqueAngle) {
if (elem.h + moveY > 0) {

@@ -305,3 +307,4 @@ p.h += moveY;

}
else if (elem.angle > 0 || elem.angle < 0) {
else if (elem.angle !== undefined &&
(elem.angle > 0 || elem.angle < 0)) {
const angle = elem.angle > 0 ? elem.angle : Math.max(0, elem.angle + 360);

@@ -368,3 +371,3 @@ let moveDist = calcMoveDist(moveX, moveY);

case 'left': {
if (elem.angle === 0 || Math.abs(elem.angle) < limitQbliqueAngle) {
if (elem.angle === 0 || Math.abs(elem.angle || 0) < limitQbliqueAngle) {
if (elem.w - moveX > 0) {

@@ -379,3 +382,4 @@ p.x += moveX;

}
else if (elem.angle > 0 || elem.angle < 0) {
else if (elem.angle !== undefined &&
(elem.angle > 0 || elem.angle < 0)) {
const angle = elem.angle > 0 ? elem.angle : Math.max(0, elem.angle + 360);

@@ -382,0 +386,0 @@ let moveDist = calcMoveDist(moveX, moveY);

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

import { TypeHelperWrapperControllerDirection, TypePoint } from '@idraw/types';
import { HelperWrapperControllerDirection, Point } from '@idraw/types';
import { Mode, CursorStatus } from '../constant/static';

@@ -10,5 +10,5 @@ type TempDataDesc = {

hoverUUID: string | null;
selectedControllerDirection: TypeHelperWrapperControllerDirection | null;
hoverControllerDirection: TypeHelperWrapperControllerDirection | null;
prevPoint: TypePoint | null;
selectedControllerDirection: HelperWrapperControllerDirection | null;
hoverControllerDirection: HelperWrapperControllerDirection | null;
prevPoint: Point | null;
hasChangedElement: boolean;

@@ -15,0 +15,0 @@ };

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

declare const is: TypeIs;
type TypeIs = {
declare const is: IsTypeUtil;
type IsTypeUtil = {
x: (value: any) => boolean;

@@ -26,2 +26,2 @@ y: (value: any) => boolean;

export default is;
export { TypeIs };
export { IsTypeUtil };

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

import { TypeData } from '@idraw/types';
export declare function parseData(data: any): TypeData;
import { IDrawData } from '@idraw/types';
export declare function parseData(data: any): IDrawData;
import { elementNames } from './../constant/element';
export function parseData(data) {
const result = {
elements: [],
elements: []
};

@@ -19,3 +19,6 @@ if (Array.isArray(data === null || data === void 0 ? void 0 : data.elements)) {

function isElement(elem) {
if (!(isNumber(elem.x) && isNumber(elem.y) && isNumber(elem.w) && isNumber(elem.h))) {
if (!(isNumber(elem.x) &&
isNumber(elem.y) &&
isNumber(elem.w) &&
isNumber(elem.h))) {
return false;

@@ -29,3 +32,3 @@ }

function isNumber(num) {
return (num >= 0 || num < 0);
return num >= 0 || num < 0;
}

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

import { TypeContext, TypePoint, TypeElement, TypeElemDesc } from '@idraw/types';
declare function rotateElement(ctx: TypeContext, elem: TypeElement<keyof TypeElemDesc>, callback: (ctx: TypeContext) => void): void;
declare function rotateContext(ctx: TypeContext, center: TypePoint | undefined, radian: number, callback: (ctx: TypeContext) => void): void;
export { rotateContext, rotateElement, };
import { IDrawContext, Point, DataElement, DataElemDesc } from '@idraw/types';
declare function rotateElement(ctx: IDrawContext, elem: DataElement<keyof DataElemDesc>, callback: (ctx: IDrawContext) => void): void;
declare function rotateContext(ctx: IDrawContext, center: Point | undefined, radian: number, callback: (ctx: IDrawContext) => void): void;
export { rotateContext, rotateElement };

@@ -20,2 +20,2 @@ import { calcElementCenter, parseAngleToRadian } from './calculate';

}
export { rotateContext, rotateElement, };
export { rotateContext, rotateElement };

@@ -1,20 +0,18 @@

import { TypeElement, TypeElemDesc, TypeElementBase } from '@idraw/types';
import Core from './../index';
export declare function getSelectedElements(core: Core): TypeElement<keyof TypeElemDesc>[];
export declare function getElement(core: Core, uuid: string): TypeElement<keyof TypeElemDesc> | null;
export declare function getElementByIndex(core: Core, index: number): TypeElement<keyof TypeElemDesc> | null;
export declare function updateElement(core: Core, elem: TypeElement<keyof TypeElemDesc>): void;
import { DataElement, DataElemDesc, DataElementBase } from '@idraw/types';
import Core from '../index';
export declare function getSelectedElements(core: Core): DataElement<keyof DataElemDesc>[];
export declare function getElement(core: Core, uuid: string): DataElement<keyof DataElemDesc> | null;
export declare function getElementByIndex(core: Core, index: number): DataElement<keyof DataElemDesc> | null;
export declare function updateElement(core: Core, elem: DataElement<keyof DataElemDesc>): void;
export declare function selectElementByIndex(core: Core, index: number): void;
export declare function selectElement(core: Core, uuid: string): void;
export declare function cancelElementByIndex(core: Core, index: number): void;
export declare function cancelElement(core: Core, uuid: string, opts?: {
useMode?: boolean;
}): void;
export declare function cancelElement(core: Core, uuid: string): void;
export declare function moveUpElement(core: Core, uuid: string): void;
export declare function moveDownElement(core: Core, uuid: string): void;
export declare function addElement(core: Core, elem: TypeElementBase<keyof TypeElemDesc>): string | null;
export declare function addElement(core: Core, elem: DataElementBase<keyof DataElemDesc>): string | null;
export declare function deleteElement(core: Core, uuid: string): void;
export declare function insertElementBefore(core: Core, elem: TypeElementBase<keyof TypeElemDesc>, beforeUUID: string): any;
export declare function insertElementBeforeIndex(core: Core, elem: TypeElementBase<keyof TypeElemDesc>, index: number): any;
export declare function insertElementAfter(core: Core, elem: TypeElementBase<keyof TypeElemDesc>, beforeUUID: string): any;
export declare function insertElementAfterIndex(core: Core, elem: TypeElementBase<keyof TypeElemDesc>, index: number): any;
export declare function insertElementBefore(core: Core, elem: DataElementBase<keyof DataElemDesc>, beforeUUID: string): any;
export declare function insertElementBeforeIndex(core: Core, elem: DataElementBase<keyof DataElemDesc>, index: number): any;
export declare function insertElementAfter(core: Core, elem: DataElementBase<keyof DataElemDesc>, beforeUUID: string): any;
export declare function insertElementAfterIndex(core: Core, elem: DataElementBase<keyof DataElemDesc>, index: number): any;
import { deepClone, createUUID } from '@idraw/util';
import { _data, _element, _engine, _draw, _emitChangeData } from './../names';
import { diffElementResourceChange } from './../lib/diff';
import { Mode } from './../constant/static';
import { diffElementResourceChange } from '../lib/diff';
import { Mode } from '../constant/static';
export function getSelectedElements(core) {
const elems = [];
let list = [];
const uuid = core[_engine].temp.get('selectedUUID');
const uuid = core.getEngine().temp.get('selectedUUID');
if (typeof uuid === 'string' && uuid) {

@@ -13,9 +12,8 @@ list.push(uuid);

else {
list = core[_engine].temp.get('selectedUUIDList');
list = core.getEngine().temp.get('selectedUUIDList');
}
list.forEach((uuid) => {
var _a;
const index = core[_engine].helper.getElementIndexByUUID(uuid);
const index = core.getEngine().helper.getElementIndexByUUID(uuid);
if (index !== null && index >= 0) {
const elem = (_a = core[_data]) === null || _a === void 0 ? void 0 : _a.elements[index];
const elem = core.$data.elements[index];
if (elem)

@@ -29,5 +27,5 @@ elems.push(elem);

let elem = null;
const index = core[_engine].helper.getElementIndexByUUID(uuid);
if (index !== null && core[_data].elements[index]) {
elem = deepClone(core[_data].elements[index]);
const index = core.getEngine().helper.getElementIndexByUUID(uuid);
if (index !== null && core.$data.elements[index]) {
elem = deepClone(core.$data.elements[index]);
}

@@ -38,4 +36,4 @@ return elem;

let elem = null;
if (index >= 0 && core[_data].elements[index]) {
elem = deepClone(core[_data].elements[index]);
if (index >= 0 && core.$data.elements[index]) {
elem = deepClone(core.$data.elements[index]);
}

@@ -47,3 +45,3 @@ return elem;

const _elem = deepClone(elem);
const data = core[_data];
const data = core.getData();
const resourceChangeUUIDs = [];

@@ -60,18 +58,18 @@ for (let i = 0; i < data.elements.length; i++) {

}
core[_emitChangeData]();
core[_draw]({ resourceChangeUUIDs });
core.$emitChangeData();
core.$draw({ resourceChangeUUIDs });
}
export function selectElementByIndex(core, index) {
if (core[_data].elements[index]) {
const uuid = core[_data].elements[index].uuid;
core[_engine].temp.set('mode', Mode.NULL);
if (core.$data.elements[index]) {
const uuid = core.$data.elements[index].uuid;
core.getEngine().temp.set('mode', Mode.NULL);
if (typeof uuid === 'string') {
core[_engine].temp.set('selectedUUID', uuid);
core[_engine].temp.set('selectedUUIDList', []);
core.getEngine().temp.set('selectedUUID', uuid);
core.getEngine().temp.set('selectedUUIDList', []);
}
core[_draw]();
core.$draw();
}
}
export function selectElement(core, uuid) {
const index = core[_engine].helper.getElementIndexByUUID(uuid);
const index = core.getEngine().helper.getElementIndexByUUID(uuid);
if (typeof index === 'number' && index >= 0) {

@@ -82,42 +80,42 @@ core.selectElementByIndex(index);

export function cancelElementByIndex(core, index) {
if (core[_data].elements[index]) {
const uuid = core[_data].elements[index].uuid;
const selectedUUID = core[_engine].temp.get('selectedUUID');
if (core.$data.elements[index]) {
const uuid = core.$data.elements[index].uuid;
const selectedUUID = core.getEngine().temp.get('selectedUUID');
if (typeof uuid === 'string' && uuid === selectedUUID) {
core[_engine].temp.set('mode', Mode.NULL);
core[_engine].temp.set('selectedUUID', null);
core[_engine].temp.set('selectedUUIDList', []);
core.getEngine().temp.set('mode', Mode.NULL);
core.getEngine().temp.set('selectedUUID', null);
core.getEngine().temp.set('selectedUUIDList', []);
}
core[_draw]();
core.$draw();
}
}
export function cancelElement(core, uuid, opts) {
const index = core[_engine].helper.getElementIndexByUUID(uuid);
export function cancelElement(core, uuid) {
const index = core.getEngine().helper.getElementIndexByUUID(uuid);
if (typeof index === 'number' && index >= 0) {
core.cancelElementByIndex(index, opts);
core.cancelElementByIndex(index);
}
}
export function moveUpElement(core, uuid) {
const index = core[_engine].helper.getElementIndexByUUID(uuid);
const index = core.getEngine().helper.getElementIndexByUUID(uuid);
if (typeof index === 'number' &&
index >= 0 &&
index < core[_data].elements.length - 1) {
const temp = core[_data].elements[index];
core[_data].elements[index] = core[_data].elements[index + 1];
core[_data].elements[index + 1] = temp;
index < core.$data.elements.length - 1) {
const temp = core.$data.elements[index];
core.$data.elements[index] = core.$data.elements[index + 1];
core.$data.elements[index + 1] = temp;
}
core[_emitChangeData]();
core[_draw]();
core.$emitChangeData();
core.$draw();
}
export function moveDownElement(core, uuid) {
const index = core[_engine].helper.getElementIndexByUUID(uuid);
const index = core.getEngine().helper.getElementIndexByUUID(uuid);
if (typeof index === 'number' &&
index > 0 &&
index < core[_data].elements.length) {
const temp = core[_data].elements[index];
core[_data].elements[index] = core[_data].elements[index - 1];
core[_data].elements[index - 1] = temp;
index < core.$data.elements.length) {
const temp = core.$data.elements[index];
core.$data.elements[index] = core.$data.elements[index - 1];
core.$data.elements[index - 1] = temp;
}
core[_emitChangeData]();
core[_draw]();
core.$emitChangeData();
core.$draw();
}

@@ -127,17 +125,17 @@ export function addElement(core, elem) {

_elem.uuid = createUUID();
core[_data].elements.push(_elem);
core[_emitChangeData]();
core[_draw]();
core.$data.elements.push(_elem);
core.$emitChangeData();
core.$draw();
return _elem.uuid;
}
export function deleteElement(core, uuid) {
const index = core[_element].getElementIndex(core[_data], uuid);
const index = core.$getElementHandler().getElementIndex(core.getData(), uuid);
if (index >= 0) {
core[_data].elements.splice(index, 1);
core[_emitChangeData]();
core[_draw]();
core.$data.elements.splice(index, 1);
core.$emitChangeData();
core.$draw();
}
}
export function insertElementBefore(core, elem, beforeUUID) {
const index = core[_engine].helper.getElementIndexByUUID(beforeUUID);
const index = core.getEngine().helper.getElementIndexByUUID(beforeUUID);
if (index !== null) {

@@ -152,5 +150,5 @@ return core.insertElementBeforeIndex(elem, index);

if (index >= 0) {
core[_data].elements.splice(index, 0, _elem);
core[_emitChangeData]();
core[_draw]();
core.$data.elements.splice(index, 0, _elem);
core.$emitChangeData();
core.$draw();
return _elem.uuid;

@@ -161,3 +159,3 @@ }

export function insertElementAfter(core, elem, beforeUUID) {
const index = core[_engine].helper.getElementIndexByUUID(beforeUUID);
const index = core.getEngine().helper.getElementIndexByUUID(beforeUUID);
if (index !== null) {

@@ -172,5 +170,5 @@ return core.insertElementAfterIndex(elem, index);

if (index >= 0) {
core[_data].elements.splice(index + 1, 0, _elem);
core[_emitChangeData]();
core[_draw]();
core.$data.elements.splice(index + 1, 0, _elem);
core.$emitChangeData();
core.$draw();
return _elem.uuid;

@@ -177,0 +175,0 @@ }

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

import { InterfaceHelperPlugin, TypeHelperPluginEventDetail, TypeHelperPluginEventResult } from '@idraw/types';
import { InterfaceHelperPlugin, HelperPluginEventDetail, HelperPluginEventResult } from '@idraw/types';
export declare class HelperPlugin implements Required<InterfaceHelperPlugin> {

@@ -6,8 +6,8 @@ readonly name: string;

constructor();
onHover(detail: TypeHelperPluginEventDetail): void | TypeHelperPluginEventResult;
onPoint(detail: TypeHelperPluginEventDetail): void | TypeHelperPluginEventResult;
onClick(detail: TypeHelperPluginEventDetail): void | TypeHelperPluginEventResult;
onMoveStart(detail: TypeHelperPluginEventDetail): void | TypeHelperPluginEventResult;
onMove(detail: TypeHelperPluginEventDetail): void | TypeHelperPluginEventResult;
onMoveEnd(detail: TypeHelperPluginEventDetail): void | TypeHelperPluginEventResult;
onHover(detail: HelperPluginEventDetail): void | HelperPluginEventResult;
onPoint(detail: HelperPluginEventDetail): void | HelperPluginEventResult;
onClick(detail: HelperPluginEventDetail): void | HelperPluginEventResult;
onMoveStart(detail: HelperPluginEventDetail): void | HelperPluginEventResult;
onMove(detail: HelperPluginEventDetail): void | HelperPluginEventResult;
onMoveEnd(detail: HelperPluginEventDetail): void | HelperPluginEventResult;
}

@@ -11,12 +11,7 @@ import { createUUID } from '@idraw/util';

}
onPoint(detail) {
}
onClick(detail) {
}
onMoveStart(detail) {
}
onMove(detail) {
}
onMoveEnd(detail) {
}
onPoint(detail) { }
onClick(detail) { }
onMoveStart(detail) { }
onMove(detail) { }
onMoveEnd(detail) { }
}
{
"name": "@idraw/core",
"version": "0.3.0-beta.3",
"version": "0.3.0-beta.6",
"description": "",

@@ -24,8 +24,8 @@ "main": "dist/esm/index.js",

"devDependencies": {
"@idraw/types": "^0.3.0-beta.3"
"@idraw/types": "^0.3.0-beta.6"
},
"dependencies": {
"@idraw/board": "^0.3.0-beta.3",
"@idraw/renderer": "^0.3.0-beta.3",
"@idraw/util": "^0.3.0-beta.3"
"@idraw/board": "^0.3.0-beta.6",
"@idraw/renderer": "^0.3.0-beta.6",
"@idraw/util": "^0.3.0-beta.6"
},

@@ -35,3 +35,3 @@ "publishConfig": {

},
"gitHead": "2420306f422d6c7b87772690e59dbfd8c6e0729c"
"gitHead": "afbadcfac219cd8e1897a080385b730374c980ea"
}

Sorry, the diff of this file is too big to display

Sorry, the diff of this file is too big to display

SocketSocket SOC 2 Logo

Product

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

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc