@jsx6/nodditor
Version:
JSX6 blocky nodes code editor
199 lines (193 loc) • 5.3 kB
TypeScript
/**
@typedef BlockData
@property {string} id
@property {string} type
@property {Array<number>} pos
@property {Array<number>} size
@property {HTMLElement} el
@property {Object} block
@property {Map<string, ConnectorData>} map
@property {Set<Element>} resizeSet
@property {Map<string, ConnectorData>} connectorMap
@property {NodeEditor} editor
@typedef HTMLBlock_
@property {BlockData} neBlock
@typedef {HTMLElement & HTMLBlock_} HTMLBlock
@typedef ConnectorData
@property {string} id
@property {string} dir
@property {number} changed
@property {string} idFull
@property {HTMLElement} el
@property {BlockData} root
@property {Array<number>} relPos
@property {Array<number>} pos
@property {number} offsetX
@property {number} offsetY
@property {Array<number>} size
@property {NodeEditor} editor
@typedef HTMLConnector_
@property {ConnectorData} ncData
@typedef {HTMLElement & HTMLConnector_} HTMLConnector
@typedef LinePoint
@property {Array<number>} pos
@property {ConnectorData} con
@property {Array<Function>} listen
@property {string} align
*/
/**
*
*/
export class NodeEditor {
/** @type {Array<BlockData>} */
blocks: Array<BlockData>;
/** @type {Array<ConnectLine>} */
lines: Array<ConnectLine>;
/** @type {ConnectLine} */
selectedLine: ConnectLine;
/** @type {Array<BlockData>} */
selectedBlocks: Array<BlockData>;
blockMap: Map<any, any>;
nodeMap: Map<any, any>;
/** @type {HTMLElement} */
currentMenu: HTMLElement;
/**
* @param {ConnectorData} con
*/
newConnector(con: ConnectorData): void;
/**
*
* @param {any} block
* @param {string} id
* @param {Object} [param2]
* @returns {BlockData}
*/
add(block: any, id: string, { pos, type }?: any): BlockData;
recheckConnectors(blockData: any): void;
/**
*
* @param {string} id
* @returns {BlockData}
*/
getBlockData(id: string): BlockData;
/**
*
* @param {string} nid
* @returns {Array<number>}
*/
getPos(nid: string): Array<number>;
/**
*
* @param {string | Array<string>} blockId block id
* @param {string} [cid] connector id
* @returns {ConnectorData}
*/
getConnector(blockId: string | Array<string>, cid?: string): ConnectorData;
lineHasConnector(con: any): boolean;
removeLine(line: any): void;
removeBlock(block: any): void;
getMinXY(): number[];
setZoomAndPos(zoom: any, x: any, y: any): void;
set zoom(zoom: any);
get zoom(): any;
resetView(padx?: number, pady?: number): void;
moveAll(dx?: number, dy?: number): void;
setPos(nid: any, pos: any): void;
_setPos(blockData: any, pos: any): void;
tpl({ menu, ...attr }?: {
menu?: any;
}): any;
menuGenerator: any;
lineinteraciton: LineInteraction;
realWidth: any;
realHeight: any;
observer: ResizeObserver;
svgLayer: any;
contentArea: any;
_zoom: any;
$focusOrSelecting: any;
onfocus: (e: any) => boolean;
onblur: (e: any) => boolean;
udpateSize(): void;
changeZoomMouse(zoom: any, e: any): void;
changeZoomCenter(zoom: any): void;
changeZoom(delta: any, x?: number, y?: number): void;
clear(): void;
deleteSelectedBlocks(): void;
deleteBlocks(blocks: any): void;
/**
*
* @param {string|Array<string>} c1
* @param {string|Array<string>} c2
* @returns {ConnectLine}
*/
addConnectorFromTo(c1: string | Array<string>, c2: string | Array<string>): ConnectLine;
/**
* @param {ConnectLine} con
*/
addConnector(con: ConnectLine): ConnectLine;
/**
*
* @typedef Menu
* @property {Function} afterAdd
*
* @typedef {HTMLElement & Menu} MenuHtml
*
* @param {*} blocks
*/
selectBlocks(blocks: any): void;
selectConnector(con: any): void;
deselect(): void;
/**
*
* @param {Element} el
* @param {string} name
* @param {*} [detail]
*/
fireCustom(el: Element, name: string, detail?: any): void;
fireMoveDone(blockData: any): void;
fireMove(blockData: any, evtName?: string): void;
}
export type BlockData = {
id: string;
type: string;
pos: Array<number>;
size: Array<number>;
el: HTMLElement;
block: any;
map: Map<string, ConnectorData>;
resizeSet: Set<Element>;
connectorMap: Map<string, ConnectorData>;
editor: NodeEditor;
};
export type HTMLBlock_ = {
neBlock: BlockData;
};
export type HTMLBlock = HTMLElement & HTMLBlock_;
export type ConnectorData = {
id: string;
dir: string;
changed: number;
idFull: string;
el: HTMLElement;
root: BlockData;
relPos: Array<number>;
pos: Array<number>;
offsetX: number;
offsetY: number;
size: Array<number>;
editor: NodeEditor;
};
export type HTMLConnector_ = {
ncData: ConnectorData;
};
export type HTMLConnector = HTMLElement & HTMLConnector_;
export type LinePoint = {
pos: Array<number>;
con: ConnectorData;
listen: Array<Function>;
align: string;
};
import { ConnectLine } from './ConnectLine.js';
import { LineInteraction } from './LineInteraction.js';
//# sourceMappingURL=NodeEditor.d.ts.map