StackGenVis: Alignment of Data, Algorithms, and Models for Stacking Ensemble Learning Using Performance Metrics
https://doi.org/10.1109/TVCG.2020.3030352
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
155 lines
36 KiB
155 lines
36 KiB
{
|
|
"version": 3,
|
|
"sources": [
|
|
"index.ts"
|
|
],
|
|
"names": [
|
|
"Interactable",
|
|
"ActionName",
|
|
"Scope",
|
|
"utils",
|
|
"drag",
|
|
"DropEvent",
|
|
"install",
|
|
"scope",
|
|
"actions",
|
|
"interact",
|
|
"defaults",
|
|
"usePlugin",
|
|
"prototype",
|
|
"dropzone",
|
|
"options",
|
|
"dropzoneMethod",
|
|
"dropCheck",
|
|
"dragEvent",
|
|
"event",
|
|
"draggable",
|
|
"draggableElement",
|
|
"dropElement",
|
|
"rect",
|
|
"dropCheckMethod",
|
|
"dynamicDrop",
|
|
"newValue",
|
|
"is",
|
|
"bool",
|
|
"arr",
|
|
"merge",
|
|
"eventTypes",
|
|
"methodDict",
|
|
"drop",
|
|
"collectDrops",
|
|
"interactables",
|
|
"drops",
|
|
"list",
|
|
"enabled",
|
|
"accept",
|
|
"element",
|
|
"string",
|
|
"dom",
|
|
"matchesSelector",
|
|
"func",
|
|
"dropElements",
|
|
"target",
|
|
"_context",
|
|
"querySelectorAll",
|
|
"array",
|
|
"dropzoneElement",
|
|
"push",
|
|
"fireActivationEvents",
|
|
"activeDrops",
|
|
"slice",
|
|
"fire",
|
|
"propagationStopped",
|
|
"immediatePropagationStopped",
|
|
"getActiveDrops",
|
|
"dragElement",
|
|
"activeDrop",
|
|
"getRect",
|
|
"getDrop",
|
|
"dropState",
|
|
"interactable",
|
|
"pointerEvent",
|
|
"validDrops",
|
|
"dropIndex",
|
|
"indexOfDeepestElement",
|
|
"getDropEvents",
|
|
"interaction",
|
|
"_pointerEvent",
|
|
"dropEvents",
|
|
"enter",
|
|
"leave",
|
|
"activate",
|
|
"deactivate",
|
|
"move",
|
|
"type",
|
|
"rejected",
|
|
"cur",
|
|
"prev",
|
|
"dragLeave",
|
|
"prevDropzone",
|
|
"dragEnter",
|
|
"relatedTarget",
|
|
"dragmove",
|
|
"fireDropEvents",
|
|
"events",
|
|
"onEventCreated",
|
|
"iEvent",
|
|
"dropResult",
|
|
"object",
|
|
"listeners",
|
|
"normalized",
|
|
"normalizeListeners",
|
|
"corrected",
|
|
"Object",
|
|
"keys",
|
|
"reduce",
|
|
"acc",
|
|
"correctedType",
|
|
"test",
|
|
"off",
|
|
"on",
|
|
"ondrop",
|
|
"ondropactivate",
|
|
"ondropdeactivate",
|
|
"ondragenter",
|
|
"ondragleave",
|
|
"ondropmove",
|
|
"overlap",
|
|
"number",
|
|
"Math",
|
|
"max",
|
|
"min",
|
|
"checker",
|
|
"dropped",
|
|
"dropOverlap",
|
|
"origin",
|
|
"getOriginXY",
|
|
"Drag",
|
|
"page",
|
|
"pointer",
|
|
"getPageXY",
|
|
"x",
|
|
"y",
|
|
"horizontal",
|
|
"left",
|
|
"right",
|
|
"vertical",
|
|
"top",
|
|
"bottom",
|
|
"dragRect",
|
|
"cx",
|
|
"width",
|
|
"cy",
|
|
"height",
|
|
"overlapArea",
|
|
"overlapRatio",
|
|
"id",
|
|
"prepared",
|
|
"name",
|
|
"fireDropAfterMove"
|
|
],
|
|
"mappings": "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",
|
|
"sourcesContent": [
|
|
"import Interactable from '@interactjs/core/Interactable'\nimport InteractEvent from '@interactjs/core/InteractEvent'\nimport { ActionName, Scope } from '@interactjs/core/scope'\nimport * as utils from '@interactjs/utils/index'\nimport drag from '../drag'\nimport DropEvent from './DropEvent'\n\nexport interface DropzoneMethod {\n (options: Interact.DropzoneOptions | boolean): Interact.Interactable\n (): Interact.DropzoneOptions\n}\n\ndeclare module '@interactjs/core/Interactable' {\n interface Interactable {\n dropzone: DropzoneMethod\n dropCheck: (\n dragEvent: InteractEvent,\n event: Interact.PointerEventType,\n draggable: Interactable,\n draggableElement: Interact.Element,\n dropElemen: Interact.Element,\n rect: any\n ) => boolean\n }\n}\n\ndeclare module '@interactjs/core/Interaction' {\n interface Interaction {\n dropState?: {\n cur: {\n dropzone: Interactable // the dropzone a drag target might be dropped into\n element: Interact.Element // the element at the time of checking\n }\n prev: {\n dropzone: Interactable // the dropzone that was recently dragged away from\n element: Interact.Element // the element at the time of checking\n }\n rejected: boolean // wheather the potential drop was rejected from a listener\n events: any // the drop events related to the current drag event\n activeDrops: Array<{\n dropzone: Interactable\n element: Interact.Element\n rect: Interact.Rect\n }>\n }\n }\n}\n\ndeclare module '@interactjs/core/defaultOptions' {\n interface ActionDefaults {\n drop: Interact.DropzoneOptions\n }\n}\n\ninterface DropSignalArg {\n interaction: Interact.Interaction\n dragEvent: Interact.DragEvent\n}\n\ndeclare module '@interactjs/core/scope' {\n interface Scope {\n dynamicDrop?: boolean\n }\n\n interface SignalArgs {\n 'actions/drop:start': DropSignalArg\n 'actions/drop:move': DropSignalArg\n 'actions/drop:end': DropSignalArg\n }\n}\n\nfunction install (scope: Scope) {\n const {\n actions,\n /** @lends module:interact */\n interact,\n /** @lends Interactable */\n Interactable, // eslint-disable-line no-shadow\n defaults,\n } = scope\n\n scope.usePlugin(drag)\n\n /**\n *\n * ```js\n * interact('.drop').dropzone({\n * accept: '.can-drop' || document.getElementById('single-drop'),\n * overlap: 'pointer' || 'center' || zeroToOne\n * }\n * ```\n *\n * Returns or sets whether draggables can be dropped onto this target to\n * trigger drop events\n *\n * Dropzones can receive the following events:\n * - `dropactivate` and `dropdeactivate` when an acceptable drag starts and ends\n * - `dragenter` and `dragleave` when a draggable enters and leaves the dropzone\n * - `dragmove` when a draggable that has entered the dropzone is moved\n * - `drop` when a draggable is dropped into this dropzone\n *\n * Use the `accept` option to allow only elements that match the given CSS\n * selector or element. The value can be:\n *\n * - **an Element** - only that element can be dropped into this dropzone.\n * - **a string**, - the element being dragged must match it as a CSS selector.\n * - **`null`** - accept options is cleared - it accepts any element.\n *\n * Use the `overlap` option to set how drops are checked for. The allowed\n * values are:\n *\n * - `'pointer'`, the pointer must be over the dropzone (default)\n * - `'center'`, the draggable element's center must be over the dropzone\n * - a number from 0-1 which is the `(intersection area) / (draggable area)`.\n * e.g. `0.5` for drop to happen when half of the area of the draggable is\n * over the dropzone\n *\n * Use the `checker` option to specify a function to check if a dragged element\n * is over this Interactable.\n *\n * @param {boolean | object | null} [options] The new options to be set.\n * @return {boolean | Interactable} The current setting or this Interactable\n */\n Interactable.prototype.dropzone = function (this: Interact.Interactable, options?: Interact.DropzoneOptions | boolean) {\n return dropzoneMethod(this, options)\n }\n\n /**\n * ```js\n * interact(target)\n * .dropChecker(function(dragEvent, // related dragmove or dragend event\n * event, // TouchEvent/PointerEvent/MouseEvent\n * dropped, // bool result of the default checker\n * dropzone, // dropzone Interactable\n * dropElement, // dropzone elemnt\n * draggable, // draggable Interactable\n * draggableElement) {// draggable element\n *\n * return dropped && event.target.hasAttribute('allow-drop')\n * }\n * ```\n */\n Interactable.prototype.dropCheck = function (this: Interact.Interactable, dragEvent, event, draggable, draggableElement, dropElement, rect) {\n return dropCheckMethod(this, dragEvent, event, draggable, draggableElement, dropElement, rect)\n }\n\n /**\n * Returns or sets whether the dimensions of dropzone elements are calculated\n * on every dragmove or only on dragstart for the default dropChecker\n *\n * @param {boolean} [newValue] True to check on each move. False to check only\n * before start\n * @return {boolean | interact} The current setting or interact\n */\n interact.dynamicDrop = function (newValue?: boolean) {\n if (utils.is.bool(newValue)) {\n // if (dragging && scope.dynamicDrop !== newValue && !newValue) {\n // calcRects(dropzones)\n // }\n\n scope.dynamicDrop = newValue\n\n return interact\n }\n return scope.dynamicDrop\n }\n\n utils.arr.merge(actions.eventTypes, [\n 'dragenter',\n 'dragleave',\n 'dropactivate',\n 'dropdeactivate',\n 'dropmove',\n 'drop',\n ])\n actions.methodDict.drop = 'dropzone'\n\n scope.dynamicDrop = false\n\n defaults.actions.drop = drop.defaults\n}\n\nfunction collectDrops ({ interactables }, draggableElement) {\n const drops = []\n\n // collect all dropzones and their elements which qualify for a drop\n for (const dropzone of interactables.list) {\n if (!dropzone.options.drop.enabled) { continue }\n\n const accept = dropzone.options.drop.accept\n\n // test the draggable draggableElement against the dropzone's accept setting\n if ((utils.is.element(accept) && accept !== draggableElement) ||\n (utils.is.string(accept) &&\n !utils.dom.matchesSelector(draggableElement, accept)) ||\n (utils.is.func(accept) && !accept({ dropzone, draggableElement }))) {\n continue\n }\n\n // query for new elements if necessary\n const dropElements = utils.is.string(dropzone.target)\n ? dropzone._context.querySelectorAll(dropzone.target)\n : utils.is.array(dropzone.target) ? dropzone.target : [dropzone.target]\n\n for (const dropzoneElement of dropElements) {\n if (dropzoneElement !== draggableElement) {\n drops.push({\n dropzone,\n element: dropzoneElement,\n })\n }\n }\n }\n\n return drops\n}\n\nfunction fireActivationEvents (activeDrops, event) {\n // loop through all active dropzones and trigger event\n for (const { dropzone, element } of activeDrops.slice()) {\n event.dropzone = dropzone\n\n // set current element as event target\n event.target = element\n dropzone.fire(event)\n event.propagationStopped = event.immediatePropagationStopped = false\n }\n}\n\n// return a new array of possible drops. getActiveDrops should always be\n// called when a drag has just started or a drag event happens while\n// dynamicDrop is true\nfunction getActiveDrops (scope: Scope, dragElement: Interact.Element) {\n // get dropzones and their elements that could receive the draggable\n const activeDrops = collectDrops(scope, dragElement)\n\n for (const activeDrop of activeDrops) {\n activeDrop.rect = activeDrop.dropzone.getRect(activeDrop.element)\n }\n\n return activeDrops\n}\n\nfunction getDrop ({ dropState, interactable: draggable, element: dragElement }: Partial<Interact.Interaction>, dragEvent, pointerEvent) {\n const validDrops = []\n\n // collect all dropzones and their elements which qualify for a drop\n for (const { dropzone, element: dropzoneElement, rect } of dropState.activeDrops) {\n validDrops.push(dropzone.dropCheck(dragEvent, pointerEvent, draggable, dragElement, dropzoneElement, rect)\n ? dropzoneElement\n : null)\n }\n\n // get the most appropriate dropzone based on DOM depth and order\n const dropIndex = utils.dom.indexOfDeepestElement(validDrops)\n\n return dropState.activeDrops[dropIndex] || null\n}\n\nfunction getDropEvents (interaction: Interact.Interaction, _pointerEvent, dragEvent) {\n const { dropState } = interaction\n const dropEvents = {\n enter : null,\n leave : null,\n activate : null,\n deactivate: null,\n move : null,\n drop : null,\n }\n\n if (dragEvent.type === 'dragstart') {\n dropEvents.activate = new DropEvent(dropState, dragEvent, 'dropactivate')\n\n dropEvents.activate.target = null\n dropEvents.activate.dropzone = null\n }\n if (dragEvent.type === 'dragend') {\n dropEvents.deactivate = new DropEvent(dropState, dragEvent, 'dropdeactivate')\n\n dropEvents.deactivate.target = null\n dropEvents.deactivate.dropzone = null\n }\n\n if (dropState.rejected) {\n return dropEvents\n }\n\n if (dropState.cur.element !== dropState.prev.element) {\n // if there was a previous dropzone, create a dragleave event\n if (dropState.prev.dropzone) {\n dropEvents.leave = new DropEvent(dropState, dragEvent, 'dragleave')\n\n dragEvent.dragLeave = dropEvents.leave.target = dropState.prev.element\n dragEvent.prevDropzone = dropEvents.leave.dropzone = dropState.prev.dropzone\n }\n // if dropzone is not null, create a dragenter event\n if (dropState.cur.dropzone) {\n dropEvents.enter = new DropEvent(dropState, dragEvent, 'dragenter')\n\n dragEvent.dragEnter = dropState.cur.element\n dragEvent.dropzone = dropState.cur.dropzone\n }\n }\n\n if (dragEvent.type === 'dragend' && dropState.cur.dropzone) {\n dropEvents.drop = new DropEvent(dropState, dragEvent, 'drop')\n\n dragEvent.dropzone = dropState.cur.dropzone\n dragEvent.relatedTarget = dropState.cur.element\n }\n if (dragEvent.type === 'dragmove' && dropState.cur.dropzone) {\n dropEvents.move = new DropEvent(dropState, dragEvent, 'dropmove')\n\n dropEvents.move.dragmove = dragEvent\n dragEvent.dropzone = dropState.cur.dropzone\n }\n\n return dropEvents\n}\n\nfunction fireDropEvents (interaction: Interact.Interaction, events) {\n const { dropState } = interaction\n const {\n activeDrops,\n cur,\n prev,\n } = dropState\n\n if (events.leave) { prev.dropzone.fire(events.leave) }\n if (events.move) { cur.dropzone.fire(events.move) }\n if (events.enter) { cur.dropzone.fire(events.enter) }\n if (events.drop) { cur.dropzone.fire(events.drop) }\n\n if (events.deactivate) {\n fireActivationEvents(activeDrops, events.deactivate)\n }\n\n dropState.prev.dropzone = cur.dropzone\n dropState.prev.element = cur.element\n}\n\nfunction onEventCreated ({ interaction, iEvent, event }: Interact.DoPhaseArg, scope) {\n if (iEvent.type !== 'dragmove' && iEvent.type !== 'dragend') { return }\n\n const { dropState } = interaction\n\n if (scope.dynamicDrop) {\n dropState.activeDrops = getActiveDrops(scope, interaction.element)\n }\n\n const dragEvent = iEvent\n const dropResult = getDrop(interaction, dragEvent, event)\n\n // update rejected status\n dropState.rejected = dropState.rejected &&\n !!dropResult &&\n dropResult.dropzone === dropState.cur.dropzone &&\n dropResult.element === dropState.cur.element\n\n dropState.cur.dropzone = dropResult && dropResult.dropzone\n dropState.cur.element = dropResult && dropResult.element\n\n dropState.events = getDropEvents(interaction, event, dragEvent)\n}\n\nfunction dropzoneMethod (interactable: Interact.Interactable): Interact.DropzoneOptions\nfunction dropzoneMethod (interactable: Interact.Interactable, options: Interact.DropzoneOptions | boolean)\nfunction dropzoneMethod (interactable: Interact.Interactable, options?: Interact.DropzoneOptions | boolean) {\n if (utils.is.object(options)) {\n interactable.options.drop.enabled = options.enabled !== false\n\n if (options.listeners) {\n const normalized = utils.normalizeListeners(options.listeners)\n // rename 'drop' to '' as it will be prefixed with 'drop'\n const corrected = Object.keys(normalized).reduce((acc, type) => {\n const correctedType = /^(enter|leave)/.test(type)\n ? `drag${type}`\n : /^(activate|deactivate|move)/.test(type)\n ? `drop${type}`\n : type\n\n acc[correctedType] = normalized[type]\n\n return acc\n }, {})\n\n interactable.off(interactable.options.drop.listeners)\n interactable.on(corrected)\n interactable.options.drop.listeners = corrected\n }\n\n if (utils.is.func(options.ondrop)) { interactable.on('drop', options.ondrop) }\n if (utils.is.func(options.ondropactivate)) { interactable.on('dropactivate', options.ondropactivate) }\n if (utils.is.func(options.ondropdeactivate)) { interactable.on('dropdeactivate', options.ondropdeactivate) }\n if (utils.is.func(options.ondragenter)) { interactable.on('dragenter', options.ondragenter) }\n if (utils.is.func(options.ondragleave)) { interactable.on('dragleave', options.ondragleave) }\n if (utils.is.func(options.ondropmove)) { interactable.on('dropmove', options.ondropmove) }\n\n if (/^(pointer|center)$/.test(options.overlap as string)) {\n interactable.options.drop.overlap = options.overlap\n }\n else if (utils.is.number(options.overlap)) {\n interactable.options.drop.overlap = Math.max(Math.min(1, options.overlap), 0)\n }\n if ('accept' in options) {\n interactable.options.drop.accept = options.accept\n }\n if ('checker' in options) {\n interactable.options.drop.checker = options.checker\n }\n\n return interactable\n }\n\n if (utils.is.bool(options)) {\n interactable.options.drop.enabled = options\n\n return interactable\n }\n\n return interactable.options.drop\n}\n\nfunction dropCheckMethod (\n interactable: Interact.Interactable,\n dragEvent: InteractEvent,\n event: Interact.PointerEventType,\n draggable: Interact.Interactable,\n draggableElement: Interact.Element,\n dropElement: Interact.Element,\n rect: any,\n) {\n let dropped = false\n\n // if the dropzone has no rect (eg. display: none)\n // call the custom dropChecker or just return false\n if (!(rect = rect || interactable.getRect(dropElement))) {\n return (interactable.options.drop.checker\n ? interactable.options.drop.checker(dragEvent, event, dropped, interactable, dropElement, draggable, draggableElement)\n : false)\n }\n\n const dropOverlap = interactable.options.drop.overlap\n\n if (dropOverlap === 'pointer') {\n const origin = utils.getOriginXY(draggable, draggableElement, ActionName.Drag)\n const page = utils.pointer.getPageXY(dragEvent)\n\n page.x += origin.x\n page.y += origin.y\n\n const horizontal = (page.x > rect.left) && (page.x < rect.right)\n const vertical = (page.y > rect.top) && (page.y < rect.bottom)\n\n dropped = horizontal && vertical\n }\n\n const dragRect = draggable.getRect(draggableElement)\n\n if (dragRect && dropOverlap === 'center') {\n const cx = dragRect.left + dragRect.width / 2\n const cy = dragRect.top + dragRect.height / 2\n\n dropped = cx >= rect.left && cx <= rect.right && cy >= rect.top && cy <= rect.bottom\n }\n\n if (dragRect && utils.is.number(dropOverlap)) {\n const overlapArea = (Math.max(0, Math.min(rect.right, dragRect.right) - Math.max(rect.left, dragRect.left)) *\n Math.max(0, Math.min(rect.bottom, dragRect.bottom) - Math.max(rect.top, dragRect.top)))\n\n const overlapRatio = overlapArea / (dragRect.width * dragRect.height)\n\n dropped = overlapRatio >= dropOverlap\n }\n\n if (interactable.options.drop.checker) {\n dropped = interactable.options.drop.checker(dragEvent, event, dropped, interactable, dropElement, draggable, draggableElement)\n }\n\n return dropped\n}\n\nconst drop: Interact.Plugin = {\n id: 'actions/drop',\n install,\n listeners: {\n 'interactions:before-action-start': ({ interaction }) => {\n if (interaction.prepared.name !== 'drag') { return }\n\n interaction.dropState = {\n cur: {\n dropzone: null,\n element: null,\n },\n prev: {\n dropzone: null,\n element: null,\n },\n rejected: null,\n events: null,\n activeDrops: [],\n }\n },\n\n 'interactions:after-action-start': ({ interaction, event, iEvent: dragEvent }, scope) => {\n if (interaction.prepared.name !== 'drag') { return }\n\n const { dropState } = interaction\n\n // reset active dropzones\n dropState.activeDrops = null\n dropState.events = null\n dropState.activeDrops = getActiveDrops(scope, interaction.element)\n dropState.events = getDropEvents(interaction, event, dragEvent)\n\n if (dropState.events.activate) {\n fireActivationEvents(dropState.activeDrops, dropState.events.activate)\n scope.fire('actions/drop:start', { interaction, dragEvent })\n }\n },\n\n // FIXME proper signal types\n 'interactions:action-move': onEventCreated,\n 'interactions:action-end': onEventCreated,\n\n 'interactions:after-action-move': function fireDropAfterMove ({ interaction, iEvent: dragEvent }, scope) {\n if (interaction.prepared.name !== 'drag') { return }\n\n fireDropEvents(interaction, interaction.dropState.events)\n\n scope.fire('actions/drop:move', { interaction, dragEvent })\n interaction.dropState.events = {}\n },\n\n 'interactions:after-action-end': ({ interaction, iEvent: dragEvent }, scope) => {\n if (interaction.prepared.name !== 'drag') { return }\n\n fireDropEvents(interaction, interaction.dropState.events)\n scope.fire('actions/drop:end', { interaction, dragEvent })\n },\n\n 'interactions:stop': ({ interaction }) => {\n if (interaction.prepared.name !== 'drag') { return }\n\n const { dropState } = interaction\n\n if (dropState) {\n dropState.activeDrops = null\n dropState.events = null\n dropState.cur.dropzone = null\n dropState.cur.element = null\n dropState.prev.dropzone = null\n dropState.prev.element = null\n dropState.rejected = false\n }\n },\n },\n getActiveDrops,\n getDrop,\n getDropEvents,\n fireDropEvents,\n defaults: {\n enabled: false,\n accept : null,\n overlap: 'pointer',\n } as Interact.DropzoneOptions,\n}\n\nexport default drop\n"
|
|
]
|
|
} |