UNPKG

squarified

Version:
111 lines (107 loc) 3.93 kB
'use strict'; var domEvent = require('./dom-event-ClwTQnot.js'); function createTreemap(// @ts-expect-error todo fix options) { const { plugins = [], graphic = {} } = options || {}; let root = null; let installed = false; let domEvent$1 = null; let component = null; const exposedEvent = new domEvent.Event(); if (!Array.isArray(plugins)) { domEvent.logger.panic('Plugins should be an array'); } const ctx = { init, dispose, resize, setOptions }; function init(el) { component = new domEvent.Component(graphic, el); domEvent$1 = new domEvent.DOMEvent(component); root = el; root.style.position = 'relative'; if (!installed) { plugins.forEach((plugin)=>component?.pluginDriver.use(plugin)); installed = true; component.pluginDriver.runHook('onLoad', ctx, domEvent$1); } domEvent$1.on('__exposed__', (type, args)=>exposedEvent.emit(type, args)); } function dispose() { if (root && component && domEvent$1) { domEvent$1.destory(); component.destory(); root.removeChild(root.firstChild); for(const evt in exposedEvent.eventCollections){ exposedEvent.off(evt); } component.pluginDriver.runHook('onDispose'); root = null; component = null; domEvent$1 = null; } } function resize() { if (!component || !root) { return; } const { width, height } = root.getBoundingClientRect(); component.render.initOptions({ height, width, devicePixelRatio: window.devicePixelRatio }); component.render.canvas.style.position = 'absolute'; if (domEvent$1) { component.pluginDriver.runHook('onResize', domEvent$1); } component.cleanup(); component.draw(); } function setOptions(options) { domEvent.assertExists(component, domEvent.logger, 'Treemap not initialized. Please call `init()` before setOptions.'); component.data = domEvent.bindParentForModule(options.data); resize(); } const base = domEvent.mixin(ctx, [ { name: 'on', fn: ()=>exposedEvent.on.bind(exposedEvent) }, { name: 'off', fn: ()=>exposedEvent.off.bind(exposedEvent) } ]); return base; } exports.DefaultMap = domEvent.DefaultMap; exports.applyCanvasTransform = domEvent.applyCanvasTransform; exports.c2m = domEvent.c2m; exports.createCanvasElement = domEvent.createCanvasElement; exports.createRoundBlock = domEvent.createRoundBlock; exports.createTitleText = domEvent.createTitleText; exports.definePlugin = domEvent.definePlugin; exports.findRelativeNode = domEvent.findRelativeNode; exports.findRelativeNodeById = domEvent.findRelativeNodeById; exports.flattenModule = domEvent.flatten; exports.getNodeDepth = domEvent.getNodeDepth; exports.hashCode = domEvent.hashCode; exports.isClickEvent = domEvent.isClickEvent; exports.isContextMenuEvent = domEvent.isContextMenuEvent; exports.isMouseEvent = domEvent.isMouseEvent; exports.isScrollWheelOrRightButtonOnMouseupAndDown = domEvent.isScrollWheelOrRightButtonOnMouseupAndDown; exports.isWheelEvent = domEvent.isWheelEvent; exports.mixin = domEvent.mixin; exports.noop = domEvent.noop; exports.perferNumeric = domEvent.perferNumeric; exports.raf = domEvent.raf; exports.smoothFrame = domEvent.smoothFrame; exports.sortChildrenByKey = domEvent.sortChildrenByKey; exports.stackMatrixTransform = domEvent.stackMatrixTransform; exports.stackMatrixTransformWithGraphAndLayer = domEvent.stackMatrixTransformWithGraphAndLayer; exports.typedForIn = domEvent.typedForIn; exports.visit = domEvent.visit; exports.createTreemap = createTreemap;