squarified
Version:
squarified tree map
111 lines (107 loc) • 3.93 kB
JavaScript
;
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;