@stonecrop/node-editor 0.4.35 → 0.4.36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"node-editor.js","sources":["../../common/temp/node_modules/.pnpm/@vue-flow+core@1.45.0_vue@3.5.18_typescript@5.8.3_/node_modules/@vue-flow/core/dist/vue-flow-core.mjs","../src/components/EditableEdge.vue","../src/components/EditableNode.vue","../src/components/NodeEditor.vue","../src/components/StateEditor.vue","../src/index.ts"],"sourcesContent":["import { getCurrentScope, onScopeDispose, isRef, reactive, unref, toRefs as toRefs$1, customRef, ref, readonly, watch, getCurrentInstance, nextTick, computed, toValue as toValue$1, shallowRef, markRaw, inject, effectScope, toRef, onBeforeMount, defineComponent, createPropsRestProxy, onMounted, openBlock, createElementBlock, normalizeClass, renderSlot, h, Fragment, normalizeStyle, createCommentVNode, createElementVNode, mergeProps, createBlock, resolveDynamicComponent, createTextVNode, toDisplayString, useAttrs, provide, onBeforeUnmount, createVNode, withCtx, resolveComponent, renderList, Teleport, isMemoSame, useSlots, onUnmounted } from \"vue\";\nfunction tryOnScopeDispose(fn) {\n if (getCurrentScope()) {\n onScopeDispose(fn);\n return true;\n }\n return false;\n}\nfunction toValue(r) {\n return typeof r === \"function\" ? r() : unref(r);\n}\nfunction toReactive(objectRef) {\n if (!isRef(objectRef))\n return reactive(objectRef);\n const proxy = new Proxy({}, {\n get(_, p, receiver) {\n return unref(Reflect.get(objectRef.value, p, receiver));\n },\n set(_, p, value) {\n if (isRef(objectRef.value[p]) && !isRef(value))\n objectRef.value[p].value = value;\n else\n objectRef.value[p] = value;\n return true;\n },\n deleteProperty(_, p) {\n return Reflect.deleteProperty(objectRef.value, p);\n },\n has(_, p) {\n return Reflect.has(objectRef.value, p);\n },\n ownKeys() {\n return Object.keys(objectRef.value);\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true\n };\n }\n });\n return reactive(proxy);\n}\nconst isClient = typeof window !== \"undefined\" && typeof document !== \"undefined\";\nconst isDef$1 = (val) => typeof val !== \"undefined\";\nconst toString = Object.prototype.toString;\nconst isObject = (val) => toString.call(val) === \"[object Object]\";\nconst noop$2 = () => {\n};\nfunction createFilterWrapper(filter2, fn) {\n function wrapper(...args) {\n return new Promise((resolve, reject) => {\n Promise.resolve(filter2(() => fn.apply(this, args), { fn, thisArg: this, args })).then(resolve).catch(reject);\n });\n }\n return wrapper;\n}\nconst bypassFilter = (invoke) => {\n return invoke();\n};\nfunction pausableFilter(extendFilter = bypassFilter) {\n const isActive = ref(true);\n function pause() {\n isActive.value = false;\n }\n function resume() {\n isActive.value = true;\n }\n const eventFilter = (...args) => {\n if (isActive.value)\n extendFilter(...args);\n };\n return { isActive: readonly(isActive), pause, resume, eventFilter };\n}\nfunction promiseTimeout(ms, throwOnTimeout = false, reason = \"Timeout\") {\n return new Promise((resolve, reject) => {\n if (throwOnTimeout)\n setTimeout(() => reject(reason), ms);\n else\n setTimeout(resolve, ms);\n });\n}\nfunction watchWithFilter(source, cb, options = {}) {\n const {\n eventFilter = bypassFilter,\n ...watchOptions\n } = options;\n return watch(\n source,\n createFilterWrapper(\n eventFilter,\n cb\n ),\n watchOptions\n );\n}\nfunction watchPausable(source, cb, options = {}) {\n const {\n eventFilter: filter2,\n ...watchOptions\n } = options;\n const { eventFilter, pause, resume, isActive } = pausableFilter(filter2);\n const stop = watchWithFilter(\n source,\n cb,\n {\n ...watchOptions,\n eventFilter\n }\n );\n return { stop, pause, resume, isActive };\n}\nfunction toRefs(objectRef, options = {}) {\n if (!isRef(objectRef))\n return toRefs$1(objectRef);\n const result = Array.isArray(objectRef.value) ? Array.from({ length: objectRef.value.length }) : {};\n for (const key in objectRef.value) {\n result[key] = customRef(() => ({\n get() {\n return objectRef.value[key];\n },\n set(v) {\n var _a;\n const replaceRef = (_a = toValue(options.replaceRef)) != null ? _a : true;\n if (replaceRef) {\n if (Array.isArray(objectRef.value)) {\n const copy = [...objectRef.value];\n copy[key] = v;\n objectRef.value = copy;\n } else {\n const newObject = { ...objectRef.value, [key]: v };\n Object.setPrototypeOf(newObject, Object.getPrototypeOf(objectRef.value));\n objectRef.value = newObject;\n }\n } else {\n objectRef.value[key] = v;\n }\n }\n }));\n }\n return result;\n}\nfunction createUntil(r, isNot = false) {\n function toMatch(condition, { flush = \"sync\", deep = false, timeout: timeout2, throwOnTimeout } = {}) {\n let stop = null;\n const watcher = new Promise((resolve) => {\n stop = watch(\n r,\n (v) => {\n if (condition(v) !== isNot) {\n stop == null ? void 0 : stop();\n resolve(v);\n }\n },\n {\n flush,\n deep,\n immediate: true\n }\n );\n });\n const promises = [watcher];\n if (timeout2 != null) {\n promises.push(\n promiseTimeout(timeout2, throwOnTimeout).then(() => toValue(r)).finally(() => stop == null ? void 0 : stop())\n );\n }\n return Promise.race(promises);\n }\n function toBe(value, options) {\n if (!isRef(value))\n return toMatch((v) => v === value, options);\n const { flush = \"sync\", deep = false, timeout: timeout2, throwOnTimeout } = options != null ? options : {};\n let stop = null;\n const watcher = new Promise((resolve) => {\n stop = watch(\n [r, value],\n ([v1, v2]) => {\n if (isNot !== (v1 === v2)) {\n stop == null ? void 0 : stop();\n resolve(v1);\n }\n },\n {\n flush,\n deep,\n immediate: true\n }\n );\n });\n const promises = [watcher];\n if (timeout2 != null) {\n promises.push(\n promiseTimeout(timeout2, throwOnTimeout).then(() => toValue(r)).finally(() => {\n stop == null ? void 0 : stop();\n return toValue(r);\n })\n );\n }\n return Promise.race(promises);\n }\n function toBeTruthy(options) {\n return toMatch((v) => Boolean(v), options);\n }\n function toBeNull(options) {\n return toBe(null, options);\n }\n function toBeUndefined(options) {\n return toBe(void 0, options);\n }\n function toBeNaN(options) {\n return toMatch(Number.isNaN, options);\n }\n function toContains(value, options) {\n return toMatch((v) => {\n const array2 = Array.from(v);\n return array2.includes(value) || array2.includes(toValue(value));\n }, options);\n }\n function changed(options) {\n return changedTimes(1, options);\n }\n function changedTimes(n = 1, options) {\n let count = -1;\n return toMatch(() => {\n count += 1;\n return count >= n;\n }, options);\n }\n if (Array.isArray(toValue(r))) {\n const instance = {\n toMatch,\n toContains,\n changed,\n changedTimes,\n get not() {\n return createUntil(r, !isNot);\n }\n };\n return instance;\n } else {\n const instance = {\n toMatch,\n toBe,\n toBeTruthy,\n toBeNull,\n toBeNaN,\n toBeUndefined,\n changed,\n changedTimes,\n get not() {\n return createUntil(r, !isNot);\n }\n };\n return instance;\n }\n}\nfunction until(r) {\n return createUntil(r);\n}\nfunction unrefElement(elRef) {\n var _a;\n const plain = toValue(elRef);\n return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;\n}\nconst defaultWindow = isClient ? window : void 0;\nfunction useEventListener(...args) {\n let target;\n let events;\n let listeners;\n let options;\n if (typeof args[0] === \"string\" || Array.isArray(args[0])) {\n [events, listeners, options] = args;\n target = defaultWindow;\n } else {\n [target, events, listeners, options] = args;\n }\n if (!target)\n return noop$2;\n if (!Array.isArray(events))\n events = [events];\n if (!Array.isArray(listeners))\n listeners = [listeners];\n const cleanups = [];\n const cleanup = () => {\n cleanups.forEach((fn) => fn());\n cleanups.length = 0;\n };\n const register = (el, event, listener, options2) => {\n el.addEventListener(event, listener, options2);\n return () => el.removeEventListener(event, listener, options2);\n };\n const stopWatch = watch(\n () => [unrefElement(target), toValue(options)],\n ([el, options2]) => {\n cleanup();\n if (!el)\n return;\n const optionsClone = isObject(options2) ? { ...options2 } : options2;\n cleanups.push(\n ...events.flatMap((event) => {\n return listeners.map((listener) => register(el, event, listener, optionsClone));\n })\n );\n },\n { immediate: true, flush: \"post\" }\n );\n const stop = () => {\n stopWatch();\n cleanup();\n };\n tryOnScopeDispose(stop);\n return stop;\n}\nfunction createKeyPredicate$1(keyFilter) {\n if (typeof keyFilter === \"function\")\n return keyFilter;\n else if (typeof keyFilter === \"string\")\n return (event) => event.key === keyFilter;\n else if (Array.isArray(keyFilter))\n return (event) => keyFilter.includes(event.key);\n return () => true;\n}\nfunction onKeyStroke(...args) {\n let key;\n let handler;\n let options = {};\n if (args.length === 3) {\n key = args[0];\n handler = args[1];\n options = args[2];\n } else if (args.length === 2) {\n if (typeof args[1] === \"object\") {\n key = true;\n handler = args[0];\n options = args[1];\n } else {\n key = args[0];\n handler = args[1];\n }\n } else {\n key = true;\n handler = args[0];\n }\n const {\n target = defaultWindow,\n eventName = \"keydown\",\n passive = false,\n dedupe = false\n } = options;\n const predicate = createKeyPredicate$1(key);\n const listener = (e) => {\n if (e.repeat && toValue(dedupe))\n return;\n if (predicate(e))\n handler(e);\n };\n return useEventListener(target, eventName, listener, passive);\n}\nfunction cloneFnJSON(source) {\n return JSON.parse(JSON.stringify(source));\n}\nfunction useVModel(props, key, emit, options = {}) {\n var _a, _b, _c;\n const {\n clone = false,\n passive = false,\n eventName,\n deep = false,\n defaultValue,\n shouldEmit\n } = options;\n const vm = getCurrentInstance();\n const _emit = emit || (vm == null ? void 0 : vm.emit) || ((_a = vm == null ? void 0 : vm.$emit) == null ? void 0 : _a.bind(vm)) || ((_c = (_b = vm == null ? void 0 : vm.proxy) == null ? void 0 : _b.$emit) == null ? void 0 : _c.bind(vm == null ? void 0 : vm.proxy));\n let event = eventName;\n if (!key) {\n {\n key = \"modelValue\";\n }\n }\n event = event || `update:${key.toString()}`;\n const cloneFn = (val) => !clone ? val : typeof clone === \"function\" ? clone(val) : cloneFnJSON(val);\n const getValue = () => isDef$1(props[key]) ? cloneFn(props[key]) : defaultValue;\n const triggerEmit = (value) => {\n if (shouldEmit) {\n if (shouldEmit(value))\n _emit(event, value);\n } else {\n _emit(event, value);\n }\n };\n if (passive) {\n const initialValue = getValue();\n const proxy = ref(initialValue);\n let isUpdating = false;\n watch(\n () => props[key],\n (v) => {\n if (!isUpdating) {\n isUpdating = true;\n proxy.value = cloneFn(v);\n nextTick(() => isUpdating = false);\n }\n }\n );\n watch(\n proxy,\n (v) => {\n if (!isUpdating && (v !== props[key] || deep))\n triggerEmit(v);\n },\n { deep }\n );\n return proxy;\n } else {\n return computed({\n get() {\n return getValue();\n },\n set(value) {\n triggerEmit(value);\n }\n });\n }\n}\nvar noop$1 = { value: () => {\n} };\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || t in _ || /[\\s.]/.test(t))\n throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\nfunction Dispatch(_) {\n this._ = _;\n}\nfunction parseTypenames$1(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0)\n name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t))\n throw new Error(\"unknown type: \" + t);\n return { type: t, name };\n });\n}\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._, T = parseTypenames$1(typename + \"\", _), t, i = -1, n = T.length;\n if (arguments.length < 2) {\n while (++i < n)\n if ((t = (typename = T[i]).type) && (t = get$1(_[t], typename.name)))\n return t;\n return;\n }\n if (callback != null && typeof callback !== \"function\")\n throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type)\n _[t] = set$1(_[t], typename.name, callback);\n else if (callback == null)\n for (t in _)\n _[t] = set$1(_[t], typename.name, null);\n }\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _)\n copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0)\n for (var args = new Array(n), i = 0, n, t; i < n; ++i)\n args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type))\n throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i)\n t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type))\n throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i)\n t[i].value.apply(that, args);\n }\n};\nfunction get$1(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\nfunction set$1(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop$1, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null)\n type.push({ name, value: callback });\n return type;\n}\nvar xhtml = \"http://www.w3.org/1999/xhtml\";\nconst namespaces = {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\nfunction namespace(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\")\n name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? { space: namespaces[prefix], local: name } : name;\n}\nfunction creatorInherit(name) {\n return function() {\n var document2 = this.ownerDocument, uri = this.namespaceURI;\n return uri === xhtml && document2.documentElement.namespaceURI === xhtml ? document2.createElement(name) : document2.createElementNS(uri, name);\n };\n}\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\nfunction creator(name) {\n var fullname = namespace(name);\n return (fullname.local ? creatorFixed : creatorInherit)(fullname);\n}\nfunction none() {\n}\nfunction selector(selector2) {\n return selector2 == null ? none : function() {\n return this.querySelector(selector2);\n };\n}\nfunction selection_select(select2) {\n if (typeof select2 !== \"function\")\n select2 = selector(select2);\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select2.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node)\n subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n return new Selection$1(subgroups, this._parents);\n}\nfunction array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\nfunction empty() {\n return [];\n}\nfunction selectorAll(selector2) {\n return selector2 == null ? empty : function() {\n return this.querySelectorAll(selector2);\n };\n}\nfunction arrayAll(select2) {\n return function() {\n return array(select2.apply(this, arguments));\n };\n}\nfunction selection_selectAll(select2) {\n if (typeof select2 === \"function\")\n select2 = arrayAll(select2);\n else\n select2 = selectorAll(select2);\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select2.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n return new Selection$1(subgroups, parents);\n}\nfunction matcher(selector2) {\n return function() {\n return this.matches(selector2);\n };\n}\nfunction childMatcher(selector2) {\n return function(node) {\n return node.matches(selector2);\n };\n}\nvar find = Array.prototype.find;\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\nfunction childFirst() {\n return this.firstElementChild;\n}\nfunction selection_selectChild(match) {\n return this.select(match == null ? childFirst : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\nvar filter = Array.prototype.filter;\nfunction children() {\n return Array.from(this.children);\n}\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\nfunction selection_selectChildren(match) {\n return this.selectAll(match == null ? children : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\nfunction selection_filter(match) {\n if (typeof match !== \"function\")\n match = matcher(match);\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n return new Selection$1(subgroups, this._parents);\n}\nfunction sparse(update) {\n return new Array(update.length);\n}\nfunction selection_enter() {\n return new Selection$1(this._enter || this._groups.map(sparse), this._parents);\n}\nfunction EnterNode(parent, datum2) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum2;\n}\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) {\n return this._parent.insertBefore(child, this._next);\n },\n insertBefore: function(child, next) {\n return this._parent.insertBefore(child, next);\n },\n querySelector: function(selector2) {\n return this._parent.querySelector(selector2);\n },\n querySelectorAll: function(selector2) {\n return this._parent.querySelectorAll(selector2);\n }\n};\nfunction constant$3(x) {\n return function() {\n return x;\n };\n}\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0, node, groupLength = group.length, dataLength = data.length;\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i, node, nodeByKeyValue = /* @__PURE__ */ new Map(), groupLength = group.length, dataLength = data.length, keyValues = new Array(groupLength), keyValue;\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && nodeByKeyValue.get(keyValues[i]) === node) {\n exit[i] = node;\n }\n }\n}\nfunction datum(node) {\n return node.__data__;\n}\nfunction selection_data(value, key) {\n if (!arguments.length)\n return Array.from(this, datum);\n var bind = key ? bindKey : bindIndex, parents = this._parents, groups = this._groups;\n if (typeof value !== \"function\")\n value = constant$3(value);\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j], group = groups[j], groupLength = group.length, data = arraylike(value.call(parent, parent && parent.__data__, j, parents)), dataLength = data.length, enterGroup = enter[j] = new Array(dataLength), updateGroup = update[j] = new Array(dataLength), exitGroup = exit[j] = new Array(groupLength);\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1)\n i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength)\n ;\n previous._next = next || null;\n }\n }\n }\n update = new Selection$1(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data ? data : Array.from(data);\n}\nfunction selection_exit() {\n return new Selection$1(this._exit || this._groups.map(sparse), this._parents);\n}\nfunction selection_join(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter)\n enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update)\n update = update.selection();\n }\n if (onexit == null)\n exit.remove();\n else\n onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\nfunction selection_merge(context) {\n var selection2 = context.selection ? context.selection() : context;\n for (var groups0 = this._groups, groups1 = selection2._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n return new Selection$1(merges, this._parents);\n}\nfunction selection_order() {\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m; ) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0; ) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4)\n next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n return this;\n}\nfunction selection_sort(compare) {\n if (!compare)\n compare = ascending;\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n return new Selection$1(sortgroups, this._parents).order();\n}\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\nfunction selection_call() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\nfunction selection_nodes() {\n return Array.from(this);\n}\nfunction selection_node() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node)\n return node;\n }\n }\n return null;\n}\nfunction selection_size() {\n let size = 0;\n for (const node of this)\n ++size;\n return size;\n}\nfunction selection_empty() {\n return !this.node();\n}\nfunction selection_each(callback) {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i])\n callback.call(node, node.__data__, i, group);\n }\n }\n return this;\n}\nfunction attrRemove$1(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\nfunction attrRemoveNS$1(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\nfunction attrConstant$1(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\nfunction attrConstantNS$1(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\nfunction attrFunction$1(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null)\n this.removeAttribute(name);\n else\n this.setAttribute(name, v);\n };\n}\nfunction attrFunctionNS$1(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null)\n this.removeAttributeNS(fullname.space, fullname.local);\n else\n this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\nfunction selection_attr(name, value) {\n var fullname = namespace(name);\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local ? node.getAttributeNS(fullname.space, fullname.local) : node.getAttribute(fullname);\n }\n return this.each((value == null ? fullname.local ? attrRemoveNS$1 : attrRemove$1 : typeof value === \"function\" ? fullname.local ? attrFunctionNS$1 : attrFunction$1 : fullname.local ? attrConstantNS$1 : attrConstant$1)(fullname, value));\n}\nfunction defaultView(node) {\n return node.ownerDocument && node.ownerDocument.defaultView || node.document && node || node.defaultView;\n}\nfunction styleRemove$1(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\nfunction styleConstant$1(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\nfunction styleFunction$1(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null)\n this.style.removeProperty(name);\n else\n this.style.setProperty(name, v, priority);\n };\n}\nfunction selection_style(name, value, priority) {\n return arguments.length > 1 ? this.each((value == null ? styleRemove$1 : typeof value === \"function\" ? styleFunction$1 : styleConstant$1)(name, value, priority == null ? \"\" : priority)) : styleValue(this.node(), name);\n}\nfunction styleValue(node, name) {\n return node.style.getPropertyValue(name) || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\nfunction propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null)\n delete this[name];\n else\n this[name] = v;\n };\n}\nfunction selection_property(name, value) {\n return arguments.length > 1 ? this.each((value == null ? propertyRemove : typeof value === \"function\" ? propertyFunction : propertyConstant)(name, value)) : this.node()[name];\n}\nfunction classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n)\n list.add(names[i]);\n}\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n)\n list.remove(names[i]);\n}\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\nfunction selection_classed(name, value) {\n var names = classArray(name + \"\");\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n)\n if (!list.contains(names[i]))\n return false;\n return true;\n }\n return this.each((typeof value === \"function\" ? classedFunction : value ? classedTrue : classedFalse)(names, value));\n}\nfunction textRemove() {\n this.textContent = \"\";\n}\nfunction textConstant$1(value) {\n return function() {\n this.textContent = value;\n };\n}\nfunction textFunction$1(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\nfunction selection_text(value) {\n return arguments.length ? this.each(value == null ? textRemove : (typeof value === \"function\" ? textFunction$1 : textConstant$1)(value)) : this.node().textContent;\n}\nfunction htmlRemove() {\n this.innerHTML = \"\";\n}\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\nfunction selection_html(value) {\n return arguments.length ? this.each(value == null ? htmlRemove : (typeof value === \"function\" ? htmlFunction : htmlConstant)(value)) : this.node().innerHTML;\n}\nfunction raise() {\n if (this.nextSibling)\n this.parentNode.appendChild(this);\n}\nfunction selection_raise() {\n return this.each(raise);\n}\nfunction lower() {\n if (this.previousSibling)\n this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\nfunction selection_lower() {\n return this.each(lower);\n}\nfunction selection_append(name) {\n var create2 = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create2.apply(this, arguments));\n });\n}\nfunction constantNull() {\n return null;\n}\nfunction selection_insert(name, before) {\n var create2 = typeof name === \"function\" ? name : creator(name), select2 = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create2.apply(this, arguments), select2.apply(this, arguments) || null);\n });\n}\nfunction remove() {\n var parent = this.parentNode;\n if (parent)\n parent.removeChild(this);\n}\nfunction selection_remove() {\n return this.each(remove);\n}\nfunction selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\nfunction selection_clone(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\nfunction selection_datum(value) {\n return arguments.length ? this.property(\"__data__\", value) : this.node().__data__;\n}\nfunction contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0)\n name = t.slice(i + 1), t = t.slice(0, i);\n return { type: t, name };\n });\n}\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on)\n return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i)\n on.length = i;\n else\n delete this.__on;\n };\n}\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on)\n for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = { type: typename.type, name: typename.name, value, listener, options };\n if (!on)\n this.__on = [o];\n else\n on.push(o);\n };\n}\nfunction selection_on(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on)\n for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i)\n this.each(on(typenames[i], value, options));\n return this;\n}\nfunction dispatchEvent(node, type, params) {\n var window2 = defaultView(node), event = window2.CustomEvent;\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window2.document.createEvent(\"Event\");\n if (params)\n event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else\n event.initEvent(type, false, false);\n }\n node.dispatchEvent(event);\n}\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\nfunction selection_dispatch(type, params) {\n return this.each((typeof params === \"function\" ? dispatchFunction : dispatchConstant)(type, params));\n}\nfunction* selection_iterator() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i])\n yield node;\n }\n }\n}\nvar root = [null];\nfunction Selection$1(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\nfunction selection() {\n return new Selection$1([[document.documentElement]], root);\n}\nfunction selection_selection() {\n return this;\n}\nSelection$1.prototype = selection.prototype = {\n constructor: Selection$1,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\nfunction select(selector2) {\n return typeof selector2 === \"string\" ? new Selection$1([[document.querySelector(selector2)]], [document.documentElement]) : new Selection$1([[selector2]], root);\n}\nfunction sourceEvent(event) {\n let sourceEvent2;\n while (sourceEvent2 = event.sourceEvent)\n event = sourceEvent2;\n return event;\n}\nfunction pointer(event, node) {\n event = sourceEvent(event);\n if (node === void 0)\n node = event.currentTarget;\n if (node) {\n var svg = node.ownerSVGElement || node;\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n if (node.getBoundingClientRect) {\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n }\n }\n return [event.pageX, event.pageY];\n}\nconst nonpassive = { passive: false };\nconst nonpassivecapture = { capture: true, passive: false };\nfunction nopropagation$1(event) {\n event.stopImmediatePropagation();\n}\nfunction noevent$1(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\nfunction dragDisable(view) {\n var root2 = view.document.documentElement, selection2 = select(view).on(\"dragstart.drag\", noevent$1, nonpassivecapture);\n if (\"onselectstart\" in root2) {\n selection2.on(\"selectstart.drag\", noevent$1, nonpassivecapture);\n } else {\n root2.__noselect = root2.style.MozUserSelect;\n root2.style.MozUserSelect = \"none\";\n }\n}\nfunction yesdrag(view, noclick) {\n var root2 = view.document.documentElement, selection2 = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection2.on(\"click.drag\", noevent$1, nonpassivecapture);\n setTimeout(function() {\n selection2.on(\"click.drag\", null);\n }, 0);\n }\n if (\"onselectstart\" in root2) {\n selection2.on(\"selectstart.drag\", null);\n } else {\n root2.style.MozUserSelect = root2.__noselect;\n delete root2.__noselect;\n }\n}\nconst constant$2 = (x) => () => x;\nfunction DragEvent(type, {\n sourceEvent: sourceEvent2,\n subject,\n target,\n identifier,\n active,\n x,\n y,\n dx,\n dy,\n dispatch: dispatch2\n}) {\n Object.defineProperties(this, {\n type: { value: type, enumerable: true, configurable: true },\n sourceEvent: { value: sourceEvent2, enumerable: true, configurable: true },\n subject: { value: subject, enumerable: true, configurable: true },\n target: { value: target, enumerable: true, configurable: true },\n identifier: { value: identifier, enumerable: true, configurable: true },\n active: { value: active, enumerable: true, configurable: true },\n x: { value: x, enumerable: true, configurable: true },\n y: { value: y, enumerable: true, configurable: true },\n dx: { value: dx, enumerable: true, configurable: true },\n dy: { value: dy, enumerable: true, configurable: true },\n _: { value: dispatch2 }\n });\n}\nDragEvent.prototype.on = function() {\n var value = this._.on.apply(this._, arguments);\n return value === this._ ? this : value;\n};\nfunction defaultFilter$1(event) {\n return !event.ctrlKey && !event.button;\n}\nfunction defaultContainer() {\n return this.parentNode;\n}\nfunction defaultSubject(event, d) {\n return d == null ? { x: event.x, y: event.y } : d;\n}\nfunction defaultTouchable$1() {\n return navigator.maxTouchPoints || \"ontouchstart\" in this;\n}\nfunction drag() {\n var filter2 = defaultFilter$1, container = defaultContainer, subject = defaultSubject, touchable = defaultTouchable$1, gestures = {}, listeners = dispatch(\"start\", \"drag\", \"end\"), active = 0, mousedownx, mousedowny, mousemoving, touchending, clickDistance2 = 0;\n function drag2(selection2) {\n selection2.on(\"mousedown.drag\", mousedowned).filter(touchable).on(\"touchstart.drag\", touchstarted).on(\"touchmove.drag\", touchmoved, nonpassive).on(\"touchend.drag touchcancel.drag\", touchended).style(\"touch-action\", \"none\").style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n function mousedowned(event, d) {\n if (touchending || !filter2.call(this, event, d))\n return;\n var gesture = beforestart(this, container.call(this, event, d), event, d, \"mouse\");\n if (!gesture)\n return;\n select(event.view).on(\"mousemove.drag\", mousemoved, nonpassivecapture).on(\"mouseup.drag\", mouseupped, nonpassivecapture);\n dragDisable(event.view);\n nopropagation$1(event);\n mousemoving = false;\n mousedownx = event.clientX;\n mousedowny = event.clientY;\n gesture(\"start\", event);\n }\n function mousemoved(event) {\n noevent$1(event);\n if (!mousemoving) {\n var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n mousemoving = dx * dx + dy * dy > clickDistance2;\n }\n gestures.mouse(\"drag\", event);\n }\n function mouseupped(event) {\n select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n yesdrag(event.view, mousemoving);\n noevent$1(event);\n gestures.mouse(\"end\", event);\n }\n function touchstarted(event, d) {\n if (!filter2.call(this, event, d))\n return;\n var touches = event.changedTouches, c = container.call(this, event, d), n = touches.length, i, gesture;\n for (i = 0; i < n; ++i) {\n if (gesture = beforestart(this, c, event, d, touches[i].identifier, touches[i])) {\n nopropagation$1(event);\n gesture(\"start\", event, touches[i]);\n }\n }\n }\n function touchmoved(event) {\n var touches = event.changedTouches, n = touches.length, i, gesture;\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n noevent$1(event);\n gesture(\"drag\", event, touches[i]);\n }\n }\n }\n function touchended(event) {\n var touches = event.changedTouches, n = touches.length, i, gesture;\n if (touchending)\n clearTimeout(touchending);\n touchending = setTimeout(function() {\n touchending = null;\n }, 500);\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n nopropagation$1(event);\n gesture(\"end\", event, touches[i]);\n }\n }\n }\n function beforestart(that, container2, event, d, identifier, touch) {\n var dispatch2 = listeners.copy(), p = pointer(touch || event, container2), dx, dy, s;\n if ((s = subject.call(that, new DragEvent(\"beforestart\", {\n sourceEvent: event,\n target: drag2,\n identifier,\n active,\n x: p[0],\n y: p[1],\n dx: 0,\n dy: 0,\n dispatch: dispatch2\n }), d)) == null)\n return;\n dx = s.x - p[0] || 0;\n dy = s.y - p[1] || 0;\n return function gesture(type, event2, touch2) {\n var p0 = p, n;\n switch (type) {\n case \"start\":\n gestures[identifier] = gesture, n = active++;\n break;\n case \"end\":\n delete gestures[identifier], --active;\n case \"drag\":\n p = pointer(touch2 || event2, container2), n = active;\n break;\n }\n dispatch2.call(\n type,\n that,\n new DragEvent(type, {\n sourceEvent: event2,\n subject: s,\n target: drag2,\n identifier,\n active: n,\n x: p[0] + dx,\n y: p[1] + dy,\n dx: p[0] - p0[0],\n dy: p[1] - p0[1],\n dispatch: dispatch2\n }),\n d\n );\n };\n }\n drag2.filter = function(_) {\n return arguments.length ? (filter2 = typeof _ === \"function\" ? _ : constant$2(!!_), drag2) : filter2;\n };\n drag2.container = function(_) {\n return arguments.length ? (container = typeof _ === \"function\" ? _ : constant$2(_), drag2) : container;\n };\n drag2.subject = function(_) {\n return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant$2(_), drag2) : subject;\n };\n drag2.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant$2(!!_), drag2) : touchable;\n };\n drag2.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? drag2 : value;\n };\n drag2.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, drag2) : Math.sqrt(clickDistance2);\n };\n return drag2;\n}\nfunction define(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\nfunction extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition)\n prototype[key] = definition[key];\n return prototype;\n}\nfunction Color() {\n}\nvar darker = 0.7;\nvar brighter = 1 / darker;\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\", reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\", reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\", reHex = /^#([0-9a-f]{3,8})$/, reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`), reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`), reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`), reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`), reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`), reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\nvar named = {\n aliceblue: 15792383,\n antiquewhite: 16444375,\n aqua: 65535,\n aquamarine: 8388564,\n azure: 15794175,\n beige: 16119260,\n bisque: 16770244,\n black: 0,\n blanchedalmond: 16772045,\n blue: 255,\n blueviolet: 9055202,\n brown: 10824234,\n burlywood: 14596231,\n cadetblue: 6266528,\n chartreuse: 8388352,\n chocolate: 13789470,\n coral: 16744272,\n cornflowerblue: 6591981,\n cornsilk: 16775388,\n crimson: 14423100,\n cyan: 65535,\n darkblue: 139,\n darkcyan: 35723,\n darkgoldenrod: 12092939,\n darkgray: 11119017,\n darkgreen: 25600,\n darkgrey: 11119017,\n darkkhaki: 12433259,\n darkmagenta: 9109643,\n darkolivegreen: 5597999,\n darkorange: 16747520,\n darkorchid: 10040012,\n darkred: 9109504,\n darksalmon: 15308410,\n darkseagreen: 9419919,\n darkslateblue: 4734347,\n darkslategray: 3100495,\n darkslategrey: 3100495,\n darkturquoise: 52945,\n darkviolet: 9699539,\n deeppink: 16716947,\n deepskyblue: 49151,\n dimgray: 6908265,\n dimgrey: 6908265,\n dodgerblue: 2003199,\n firebrick: 11674146,\n floralwhite: 16775920,\n forestgreen: 2263842,\n fuchsia: 16711935,\n gainsboro: 14474460,\n ghostwhite: 16316671,\n gold: 16766720,\n goldenrod: 14329120,\n gray: 8421504,\n green: 32768,\n greenyellow: 11403055,\n grey: 8421504,\n honeydew: 15794160,\n hotpink: 16738740,\n indianred: 13458524,\n indigo: 4915330,\n ivory: 16777200,\n khaki: 15787660,\n lavender: 15132410,\n lavenderblush: 16773365,\n lawngreen: 8190976,\n lemonchiffon: 16775885,\n lightblue: 11393254,\n lightcoral: 15761536,\n lightcyan: 14745599,\n lightgoldenrodyellow: 16448210,\n lightgray: 13882323,\n lightgreen: 9498256,\n lightgrey: 13882323,\n lightpink: 16758465,\n lightsalmon: 16752762,\n lightseagreen: 2142890,\n lightskyblue: 8900346,\n lightslategray: 7833753,\n lightslategrey: 7833753,\n lightsteelblue: 11584734,\n lightyellow: 16777184,\n lime: 65280,\n limegreen: 3329330,\n linen: 16445670,\n magenta: 16711935,\n maroon: 8388608,\n mediumaquamarine: 6737322,\n mediumblue: 205,\n mediumorchid: 12211667,\n mediumpurple: 9662683,\n mediumseagreen: 3978097,\n mediumslateblue: 8087790,\n mediumspringgreen: 64154,\n mediumturquoise: 4772300,\n mediumvioletred: 13047173,\n midnightblue: 1644912,\n mintcream: 16121850,\n mistyrose: 16770273,\n moccasin: 16770229,\n navajowhite: 16768685,\n navy: 128,\n oldlace: 16643558,\n olive: 8421376,\n olivedrab: 7048739,\n orange: 16753920,\n orangered: 16729344,\n orchid: 14315734,\n palegoldenrod: 15657130,\n palegreen: 10025880,\n paleturquoise: 11529966,\n palevioletred: 14381203,\n papayawhip: 16773077,\n peachpuff: 16767673,\n peru: 13468991,\n pink: 16761035,\n plum: 14524637,\n powderblue: 11591910,\n purple: 8388736,\n rebeccapurple: 6697881,\n red: 16711680,\n rosybrown: 12357519,\n royalblue: 4286945,\n saddlebrown: 9127187,\n salmon: 16416882,\n sandybrown: 16032864,\n seagreen: 3050327,\n seashell: 16774638,\n sienna: 10506797,\n silver: 12632256,\n skyblue: 8900331,\n slateblue: 6970061,\n slategray: 7372944,\n slategrey: 7372944,\n snow: 16775930,\n springgreen: 65407,\n steelblue: 4620980,\n tan: 13808780,\n teal: 32896,\n thistle: 14204888,\n tomato: 16737095,\n turquoise: 4251856,\n violet: 15631086,\n wheat: 16113331,\n white: 16777215,\n whitesmoke: 16119285,\n yellow: 16776960,\n yellowgreen: 10145074\n};\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor(), this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex,\n // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\nfunction color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) : l === 3 ? new Rgb(m >> 8 & 15 | m >> 4 & 240, m >> 4 & 15 | m & 240, (m & 15) << 4 | m & 15, 1) : l === 8 ? rgba(m >> 24 & 255, m >> 16 & 255, m >> 8 & 255, (m & 255) / 255) : l === 4 ? rgba(m >> 12 & 15 | m >> 8 & 240, m >> 8 & 15 | m >> 4 & 240, m >> 4 & 15 | m & 240, ((m & 15) << 4 | m & 15) / 255) : null) : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) : named.hasOwnProperty(format) ? rgbn(named[format]) : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0) : null;\n}\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 255, n >> 8 & 255, n & 255, 1);\n}\nfunction rgba(r, g, b, a) {\n if (a <= 0)\n r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\nfunction rgbConvert(o) {\n if (!(o instanceof Color))\n o = color(o);\n if (!o)\n return new Rgb();\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\nfunction rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\nfunction Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return -0.5 <= this.r && this.r < 255.5 && (-0.5 <= this.g && this.g < 255.5) && (-0.5 <= this.b && this.b < 255.5) && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex,\n // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\nfunction hsla(h2, s, l, a) {\n if (a <= 0)\n h2 = s = l = NaN;\n else if (l <= 0 || l >= 1)\n h2 = s = NaN;\n else if (s <= 0)\n h2 = NaN;\n return new Hsl(h2, s, l, a);\n}\nfunction hslConvert(o) {\n if (o instanceof Hsl)\n return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color))\n o = color(o);\n if (!o)\n return new Hsl();\n if (o instanceof Hsl)\n return o;\n o = o.rgb();\n var r = o.r / 255, g = o.g / 255, b = o.b / 255, min = Math.min(r, g, b), max = Math.max(r, g, b), h2 = NaN, s = max - min, l = (max + min) / 2;\n if (s) {\n if (r === max)\n h2 = (g - b) / s + (g < b) * 6;\n else if (g === max)\n h2 = (b - r) / s + 2;\n else\n h2 = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h2 *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h2;\n }\n return new Hsl(h2, s, l, o.opacity);\n}\nfunction hsl(h2, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h2) : new Hsl(h2, s, l, opacity == null ? 1 : opacity);\n}\nfunction Hsl(h2, s, l, opacity) {\n this.h = +h2;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h2 = this.h % 360 + (this.h < 0) * 360, s = isNaN(h2) || isNaN(this.s) ? 0 : this.s, l = this.l, m2 = l + (l < 0.5 ? l : 1 - l) * s, m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h2 >= 240 ? h2 - 240 : h2 + 120, m1, m2),\n hsl2rgb(h2, m1, m2),\n hsl2rgb(h2 < 120 ? h2 + 240 : h2 - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s)) && (0 <= this.l && this.l <= 1) && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\nfunction hsl2rgb(h2, m1, m2) {\n return (h2 < 60 ? m1 + (m2 - m1) * h2 / 60 : h2 < 180 ? m2 : h2 < 240 ? m1 + (m2 - m1) * (240 - h2) / 60 : m1) * 255;\n}\nconst constant$1 = (x) => () => x;\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\nfunction gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant$1(isNaN(a) ? b : a);\n };\n}\nfunction nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant$1(isNaN(a) ? b : a);\n}\nconst interpolateRgb = function rgbGamma(y) {\n var color2 = gamma(y);\n function rgb$1(start2, end) {\n var r = color2((start2 = rgb(start2)).r, (end = rgb(end)).r), g = color2(start2.g, end.g), b = color2(start2.b, end.b), opacity = nogamma(start2.opacity, end.opacity);\n return function(t) {\n start2.r = r(t);\n start2.g = g(t);\n start2.b = b(t);\n start2.opacity = opacity(t);\n return start2 + \"\";\n };\n }\n rgb$1.gamma = rgbGamma;\n return rgb$1;\n}(1);\nfunction numberArray(a, b) {\n if (!b)\n b = [];\n var n = a ? Math.min(b.length, a.length) : 0, c = b.slice(), i;\n return function(t) {\n for (i = 0; i < n; ++i)\n c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\nfunction isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\nfunction genericArray(a, b) {\n var nb = b ? b.length : 0, na = a ? Math.min(nb, a.length) : 0, x = new Array(na), c = new Array(nb), i;\n for (i = 0; i < na; ++i)\n x[i] = interpolate$1(a[i], b[i]);\n for (; i < nb; ++i)\n c[i] = b[i];\n return function(t) {\n for (i = 0; i < na; ++i)\n c[i] = x[i](t);\n return c;\n };\n}\nfunction date(a, b) {\n var d = /* @__PURE__ */ new Date();\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\nfunction interpolateNumber(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\nfunction object(a, b) {\n var i = {}, c = {}, k;\n if (a === null || typeof a !== \"object\")\n a = {};\n if (b === null || typeof b !== \"object\")\n b = {};\n for (k in b) {\n if (k in a) {\n i[k] = interpolate$1(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n return function(t) {\n for (k in i)\n c[k] = i[k](t);\n return c;\n };\n}\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g, reB = new RegExp(reA.source, \"g\");\nfunction zero(b) {\n return function() {\n return b;\n };\n}\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\nfunction interpolateString(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, am, bm, bs, i = -1, s = [], q = [];\n a = a + \"\", b = b + \"\";\n while ((am = reA.exec(a)) && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) {\n bs = b.slice(bi, bs);\n if (s[i])\n s[i] += bs;\n else\n s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) {\n if (s[i])\n s[i] += bm;\n else\n s[++i] = bm;\n } else {\n s[++i] = null;\n q.push({ i, x: interpolateNumber(am, bm) });\n }\n bi = reB.lastIndex;\n }\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i])\n s[i] += bs;\n else\n s[++i] = bs;\n }\n return s.length < 2 ? q[0] ? one(q[0].x) : zero(b) : (b = q.length, function(t) {\n for (var i2 = 0, o; i2 < b; ++i2)\n s[(o = q[i2]).i] = o.x(t);\n return s.join(\"\");\n });\n}\nfunction interpolate$1(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant$1(b) : (t === \"number\" ? interpolateNumber : t === \"string\" ? (c = color(b)) ? (b = c, interpolateRgb) : interpolateString : b instanceof color ? interpolateRgb : b instanceof Date ? date : isNumberArray(b) ? numberArray : Array.isArray(b) ? genericArray : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object : interpolateNumber)(a, b);\n}\nvar degrees = 180 / Math.PI;\nvar identity$1 = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\nfunction decompose(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b))\n a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d)\n c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d))\n c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c)\n a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX,\n scaleY\n };\n}\nvar svgNode;\nfunction parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity$1 : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\nfunction parseSvg(value) {\n if (value == null)\n return identity$1;\n if (!svgNode)\n svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate()))\n return identity$1;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({ i: i - 4, x: interpolateNumber(xa, xb) }, { i: i - 2, x: interpolateNumber(ya, yb) });\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180)\n b += 360;\n else if (b - a > 180)\n a += 360;\n q.push({ i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: interpolateNumber(a, b) });\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({ i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: interpolateNumber(a, b) });\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({ i: i - 4, x: interpolateNumber(xa, xb) }, { i: i - 2, x: interpolateNumber(ya, yb) });\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n return function(a, b) {\n var s = [], q = [];\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null;\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n)\n s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\nvar interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nvar interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\nvar epsilon2 = 1e-12;\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\nconst interpolateZoom = function zoomRho(rho, rho2, rho4) {\n function zoom2(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], ux1 = p1[0], uy1 = p1[1], w1 = p1[2], dx = ux1 - ux0, dy = uy1 - uy0, d2 = dx * dx + dy * dy, i, S;\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n };\n } else {\n var d1 = Math.sqrt(d2), b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1), b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1), r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S, coshr0 = cosh(r0), u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n };\n }\n i.duration = S * 1e3 * rho / Math.SQRT2;\n return i;\n }\n zoom2.rho = function(_) {\n var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2;\n return zoomRho(_1, _2, _4);\n };\n return zoom2;\n}(Math.SQRT2, 2, 4);\nvar frame = 0, timeout$1 = 0, interval = 0, pokeDelay = 1e3, taskHead, taskTail, clockLast = 0, clockNow = 0, clockSkew = 0, clock = typeof performance === \"object\" && performance.now ? performance : Date, setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) {\n setTimeout(f, 17);\n};\nfunction now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\nfunction clearNow() {\n clockNow = 0;\n}\nfunction Timer() {\n this._call = this._time = this._next = null;\n}\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\")\n throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail)\n taskTail._next = this;\n else\n taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\nfunction timer(callback, delay, time) {\n var t = new Timer();\n t.restart(callback, delay, time);\n return t;\n}\nfunction timerFlush() {\n now();\n ++frame;\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0)\n t._call.call(void 0, e);\n t = t._next;\n }\n --frame;\n}\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout$1 = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\nfunction poke() {\n var now2 = clock.now(), delay = now2 - clockLast;\n if (delay > pokeDelay)\n clockSkew -= delay, clockLast = now2;\n}\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time)\n time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\nfunction sleep(time) {\n if (frame)\n return;\n if (timeout$1)\n timeout$1 = clearTimeout(timeout$1);\n var delay = time - clockNow;\n if (delay > 24) {\n if (time < Infinity)\n timeout$1 = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval)\n interval = clearInterval(interval);\n } else {\n if (!interval)\n clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\nfunction timeout(callback, delay, time) {\n var t = new Timer();\n delay = delay == null ? 0 : +delay;\n t.restart((elapsed) => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\nvar CREATED = 0;\nvar SCHEDULED = 1;\nvar STARTING = 2;\nvar STARTED = 3;\nvar RUNNING = 4;\nvar ENDING = 5;\nvar ENDED = 6;\nfunction schedule(node, name, id2, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules)\n node.__transition = {};\n else if (id2 in schedules)\n return;\n create(node, id2, {\n name,\n index,\n // For context during callback.\n group,\n // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\nfunction init(node, id2) {\n var schedule2 = get(node, id2);\n if (schedule2.state > CREATED)\n throw new Error(\"too late; already scheduled\");\n return schedule2;\n}\nfunction set(node, id2) {\n var schedule2 = get(node, id2);\n if (schedule2.state > STARTED)\n throw new Error(\"too late; already running\");\n return schedule2;\n}\nfunction get(node, id2) {\n var schedule2 = node.__transition;\n if (!schedule2 || !(schedule2 = schedule2[id2]))\n throw new Error(\"transition not found\");\n return schedule2;\n}\nfunction create(node, id2, self) {\n var schedules = node.__transition, tween;\n schedules[id2] = self;\n self.timer = timer(schedule2, 0, self.time);\n function schedule2(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start2, self.delay, self.time);\n if (self.delay <= elapsed)\n start2(elapsed - self.delay);\n }\n function start2(elapsed) {\n var i, j, n, o;\n if (self.state !== SCHEDULED)\n return stop();\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name)\n continue;\n if (o.state === STARTED)\n return timeout(start2);\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n } else if (+i < id2) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING)\n return;\n self.state = STARTED;\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1), i = -1, n = tween.length;\n while (++i < n) {\n tween[i].call(node, t);\n }\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id2];\n for (var i in schedules)\n return;\n delete node.__transition;\n }\n}\nfunction interrupt(node, name) {\n var schedules = node.__transition, schedule2, active, empty2 = true, i;\n if (!schedules)\n return;\n name = name == null ? null : name + \"\";\n for (i in schedules) {\n if ((schedule2 = schedules[i]).name !== name) {\n empty2 = false;\n continue;\n }\n active = schedule2.state > STARTING && schedule2.state < ENDING;\n schedule2.state = ENDED;\n schedule2.timer.stop();\n schedule2.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule2.index, schedule2.group);\n delete schedules[i];\n }\n if (empty2)\n delete node.__transition;\n}\nfunction selection_interrupt(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\nfunction tweenRemove(id2, name) {\n var tween0, tween1;\n return function() {\n var schedule2 = set(this, id2), tween = schedule2.tween;\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n schedule2.tween = tween1;\n };\n}\nfunction tweenFunction(id2, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\")\n throw new Error();\n return function() {\n var schedule2 = set(this, id2), tween = schedule2.tween;\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = { name, value }, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n)\n tween1.push(t);\n }\n schedule2.tween = tween1;\n };\n}\nfunction transition_tween(name, value) {\n var id2 = this._id;\n name += \"\";\n if (arguments.length < 2) {\n var tween = get(this.node(), id2).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n return this.each((value == null ? tweenRemove : tweenFunction)(id2, name, value));\n}\nfunction tweenValue(transition, name, value) {\n var id2 = transition._id;\n transition.each(function() {\n var schedule2 = set(this, id2);\n (schedule2.value || (schedule2.value = {}))[name] = value.apply(this, arguments);\n });\n return function(node) {\n return get(node, id2).value[name];\n };\n}\nfunction interpolate(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber : b instanceof color ? interpolateRgb : (c = color(b)) ? (b = c, interpolateRgb) : interpolateString)(a, b);\n}\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\nfunction attrConstant(name, interpolate2, value1) {\n var string00, string1 = value1 + \"\", interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null : string0 === string00 ? interpolate0 : interpolate0 = interpolate2(string00 = string0, value1);\n };\n}\nfunction attrConstantNS(fullname, interpolate2, value1) {\n var string00, string1 = value1 + \"\", interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null : string0 === string00 ? interpolate0 : interpolate0 = interpolate2(string00 = string0, value1);\n };\n}\nfunction attrFunction(name, interpolate2, value) {\n var string00, string10, interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null)\n return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null : string0 === string00 && string1 === string10 ? interpolate0 : (string10 = string1, interpolate0 = interpolate2(string00 = string0, value1));\n };\n}\nfunction attrFunctionNS(fullname, interpolate2, value) {\n var string00, string10, interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null)\n return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null : string0 === string00 && string1 === string10 ? interpolate0 : (string10 = string1, interpolate0 = interpolate2(string00 = string0, value1));\n };\n}\nfunction transition_attr(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransformSvg : interpolate;\n return this.attrTween(name, typeof value === \"function\" ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value)) : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname) : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0)\n t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0)\n t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\nfunction transition_attrTween(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2)\n return (key = this.tween(key)) && key._value;\n if (value == null)\n return this.tween(key, null);\n if (typeof value !== \"function\")\n throw new Error();\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\nfunction delayFunction(id2, value) {\n return function() {\n init(this, id2).delay = +value.apply(this, arguments);\n };\n}\nfunction delayConstant(id2, value) {\n return value = +value, function() {\n init(this, id2).delay = value;\n };\n}\nfunction transition_delay(value) {\n var id2 = this._id;\n return arguments.length ? this.each((typeof value === \"function\" ? delayFunction : delayConstant)(id2, value)) : get(this.node(), id2).delay;\n}\nfunction durationFunction(id2, value) {\n return function() {\n set(this, id2).duration = +value.apply(this, arguments);\n };\n}\nfunction durationConstant(id2, value) {\n return value = +value, function() {\n set(this, id2).duration = value;\n };\n}\nfunction transition_duration(value) {\n var id2 = this._id;\n return arguments.length ? this.each((typeof value === \"function\" ? durationFunction : durationConstant)(id2, value)) : get(this.node(), id2).duration;\n}\nfunction easeConstant(id2, value) {\n if (typeof value !== \"function\")\n throw new Error();\n return function() {\n set(this, id2).ease = value;\n };\n}\nfunction transition_ease(value) {\n var id2 = this._id;\n return arguments.length ? this.each(easeConstant(id2, value)) : get(this.node(), id2).ease;\n}\nfunction easeVarying(id2, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\")\n throw new Error();\n set(this, id2).ease = v;\n };\n}\nfunction transition_easeVarying(value) {\n if (typeof value !== \"function\")\n throw new Error();\n return this.each(easeVarying(this._id, value));\n}\nfunction transition_filter(match) {\n if (typeof match !== \"function\")\n match = matcher(match);\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\nfunction transition_merge(transition) {\n if (transition._id !== this._id)\n throw new Error();\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n return new Transition(merges, this._parents, this._name, this._id);\n}\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0)\n t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\nfunction onFunction(id2, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule2 = sit(this, id2), on = schedule2.on;\n if (on !== on0)\n (on1 = (on0 = on).copy()).on(name, listener);\n schedule2.on = on1;\n };\n}\nfunction transition_on(name, listener) {\n var id2 = this._id;\n return arguments.length < 2 ? get(this.node(), id2).on.on(name) : this.each(onFunction(id2, name, listener));\n}\nfunction removeFunction(id2) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition)\n if (+i !== id2)\n return;\n if (parent)\n parent.removeChild(this);\n };\n}\nfunction transition_remove() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\nfunction transition_select(select2) {\n var name = this._name, id2 = this._id;\n if (typeof select2 !== \"function\")\n select2 = selector(select2);\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select2.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node)\n subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id2, i, subgroup, get(node, id2));\n }\n }\n }\n return new Transition(subgroups, this._parents, name, id2);\n}\nfunction transition_selectAll(select2) {\n var name = this._name, id2 = this._id;\n if (typeof select2 !== \"function\")\n select2 = selectorAll(select2);\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children2 = select2.call(node, node.__data__, i, group), child, inherit2 = get(node, id2), k = 0, l = children2.length; k < l; ++k) {\n if (child = children2[k]) {\n schedule(child, name, id2, k, children2, inherit2);\n }\n }\n subgroups.push(children2);\n parents.push(node);\n }\n }\n }\n return new Transition(subgroups, parents, name, id2);\n}\nvar Selection = selection.prototype.constructor;\nfunction transition_selection() {\n return new Selection(this._groups, this._parents);\n}\nfunction styleNull(name, interpolate2) {\n var string00, string10, interpolate0;\n return function() {\n var string0 = styleValue(this, name), string1 = (this.style.removeProperty(name), styleValue(this, name));\n return string0 === string1 ? null : string0 === string00 && string1 === string10 ? interpolate0 : interpolate0 = interpolate2(string00 = string0, string10 = string1);\n };\n}\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\nfunction styleConstant(name, interpolate2, value1) {\n var string00, string1 = value1 + \"\", interpolate0;\n return function() {\n var string0 = styleValue(this, name);\n return string0 === string1 ? null : string0 === string00 ? interpolate0 : interpolate0 = interpolate2(string00 = string0, value1);\n };\n}\nfunction styleFunction(name, interpolate2, value) {\n var string00, string10, interpolate0;\n return function() {\n var string0 = styleValue(this, name), value1 = value(this), string1 = value1 + \"\";\n if (value1 == null)\n string1 = value1 = (this.style.removeProperty(name), styleValue(this, name));\n return string0 === string1 ? null : string0 === string00 && string1 === string10 ? interpolate0 : (string10 = string1, interpolate0 = interpolate2(string00 = string0, value1));\n };\n}\nfunction styleMaybeRemove(id2, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove2;\n return function() {\n var schedule2 = set(this, id2), on = schedule2.on, listener = schedule2.value[key] == null ? remove2 || (remove2 = styleRemove(name)) : void 0;\n if (on !== on0 || listener0 !== listener)\n (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n schedule2.on = on1;\n };\n}\nfunction transition_style(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransformCss : interpolate;\n return value == null ? this.styleTween(name, styleNull(name, i)).on(\"end.style.\" + name, styleRemove(name)) : typeof value === \"function\" ? this.styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value))).each(styleMaybeRemove(this._id, name)) : this.styleTween(name, styleConstant(name, i, value), priority).on(\"end.style.\" + name, null);\n}\nfunction styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0)\n t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\nfunction transition_styleTween(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2)\n return (key = this.tween(key)) && key._value;\n if (value == null)\n return this.tween(key, null);\n if (typeof value !== \"function\")\n throw new Error();\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\nfunction transition_text(value) {\n return this.tween(\"text\", typeof value === \"function\" ? textFunction(tweenValue(this, \"text\", value)) : textConstant(value == null ? \"\" : value + \"\"));\n}\nfunction textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0)\n t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\nfunction transition_textTween(value) {\n var key = \"text\";\n if (arguments.length < 1)\n return (key = this.tween(key)) && key._value;\n if (value == null)\n return this.tween(key, null);\n if (typeof value !== \"function\")\n throw new Error();\n return this.tween(key, textTween(value));\n}\nfunction transition_transition() {\n var name = this._name, id0 = this._id, id1 = newId();\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit2 = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit2.time + inherit2.delay + inherit2.duration,\n delay: 0,\n duration: inherit2.duration,\n ease: inherit2.ease\n });\n }\n }\n }\n return new Transition(groups, this._parents, name, id1);\n}\nfunction transition_end() {\n var on0, on1, that = this, id2 = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = { value: reject }, end = { value: function() {\n if (--size === 0)\n resolve();\n } };\n that.each(function() {\n var schedule2 = set(this, id2), on = schedule2.on;\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n schedule2.on = on1;\n });\n if (size === 0)\n resolve();\n });\n}\nvar id = 0;\nfunction Transition(groups, parents, name, id2) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id2;\n}\nfunction newId() {\n return ++id;\n}\nvar selection_prototype = selection.prototype;\nTransition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\nfunction cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\nvar defaultTiming = {\n time: null,\n // Set on use.\n delay: 0,\n duration: 250,\n ease: cubicInOut\n};\nfunction inherit(node, id2) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id2])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id2} not found`);\n }\n }\n return timing;\n}\nfunction selection_transition(name) {\n var id2, timing;\n if (name instanceof Transition) {\n id2 = name._id, name = name._name;\n } else {\n id2 = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id2, i, group, timing || inherit(node, id2));\n }\n }\n }\n return new Transition(groups, this._parents, name, id2);\n}\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\nconst constant = (x) => () => x;\nfunction ZoomEvent(type, {\n sourceEvent: sourceEvent2,\n target,\n transform,\n dispatch: dispatch2\n}) {\n Object.defineProperties(this, {\n type: { value: type, enumerable: true, configurable: true },\n sourceEvent: { value: sourceEvent2, enumerable: true, configurable: true },\n target: { value: target, enumerable: true, configurable: true },\n transform: { value: transform, enumerable: true, configurable: true },\n _: { value: dispatch2 }\n });\n}\nfunction Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\nvar identity = new Transform(1, 0, 0);\nTransform.prototype;\nfunction nopropagation(event) {\n event.stopImmediatePropagation();\n}\nfunction noevent(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\nfunction defaultFilter(event) {\n return (!event.ctrlKey || event.type === \"wheel\") && !event.button;\n}\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\nfunction defaultWheelDelta(event) {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 2e-3) * (event.ctrlKey ? 10 : 1);\n}\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || \"ontouchstart\" in this;\n}\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0], dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0], dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1], dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\nfunction zoom() {\n var filter2 = defaultFilter, extent = defaultExtent, constrain = defaultConstrain, wheelDelta = defaultWheelDelta, touchable = defaultTouchable, scaleExtent = [0, Infinity], translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]], duration = 250, interpolate2 = interpolateZoom, listeners = dispatch(\"start\", \"zoom\", \"end\"), touchstarting, touchfirst, touchending, touchDelay = 500, wheelDelay = 150, clickDistance2 = 0, tapDistance = 10;\n function zoom2(selection2) {\n selection2.property(\"__zoom\", defaultTransform).on(\"wheel.zoom\", wheeled, { passive: false }).on(\"mousedown.zoom\", mousedowned).on(\"dblclick.zoom\", dblclicked).filter(touchable).on(\"touchstart.zoom\", touchstarted).on(\"touchmove.zoom\", touchmoved).on(\"touchend.zoom touchcancel.zoom\", touchended).style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n zoom2.transform = function(collection, transform, point, event) {\n var selection2 = collection.selection ? collection.selection() : collection;\n selection2.property(\"__zoom\", defaultTransform);\n if (collection !== selection2) {\n schedule2(collection, transform, point, event);\n } else {\n selection2.interrupt().each(function() {\n gesture(this, arguments).event(event).start().zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform).end();\n });\n }\n };\n zoom2.scaleBy = function(selection2, k, p, event) {\n zoom2.scaleTo(selection2, function() {\n var k0 = this.__zoom.k, k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p, event);\n };\n zoom2.scaleTo = function(selection2, k, p, event) {\n zoom2.transform(selection2, function() {\n var e = extent.apply(this, arguments), t0 = this.__zoom, p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p, p1 = t0.invert(p0), k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p, event);\n };\n zoom2.translateBy = function(selection2, x, y, event) {\n zoom2.transform(selection2, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n }, null, event);\n };\n zoom2.translateTo = function(selection2, x, y, p, event) {\n zoom2.transform(selection2, function() {\n var e = extent.apply(this, arguments), t = this.__zoom, p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p, event);\n };\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n function centroid(extent2) {\n return [(+extent2[0][0] + +extent2[1][0]) / 2, (+extent2[0][1] + +extent2[1][1]) / 2];\n }\n function schedule2(transition, transform, point, event) {\n transition.on(\"start.zoom\", function() {\n gesture(this, arguments).event(event).start();\n }).on(\"interrupt.zoom end.zoom\", function() {\n gesture(this, arguments).event(event).end();\n }).tween(\"zoom\", function() {\n var that = this, args = arguments, g = gesture(that, args).event(event), e = extent.apply(that, args), p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point, w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]), a = that.__zoom, b = typeof transform === \"function\" ? transform.apply(that, args) : transform, i = interpolate2(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1)\n t = b;\n else {\n var l = i(t), k = w / l[2];\n t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k);\n }\n g.zoom(null, t);\n };\n });\n }\n function gesture(that, args, clean) {\n return !clean && that.__zooming || new Gesture(that, args);\n }\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.sourceEvent = null;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n Gesture.prototype = {\n event: function(event) {\n if (event)\n this.sourceEvent = event;\n return this;\n },\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\")\n this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\")\n this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\")\n this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n var d = select(this.that).datum();\n listeners.call(\n type,\n this.that,\n new ZoomEvent(type, {\n sourceEvent: this.sourceEvent,\n target: zoom2,\n type,\n transform: this.that.__zoom,\n dispatch: listeners\n }),\n d\n );\n }\n };\n function wheeled(event, ...args) {\n if (!filter2.apply(this, arguments))\n return;\n var g = gesture(this, args).event(event), t = this.__zoom, k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))), p = pointer(event);\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n } else if (t.k === k)\n return;\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n noevent(event);\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n function mousedowned(event, ...args) {\n if (touchending || !filter2.apply(this, arguments))\n return;\n var currentTarget = event.currentTarget, g = gesture(this, args, true).event(event), v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true), p = pointer(event, currentTarget), x0 = event.clientX, y0 = event.clientY;\n dragDisable(event.view);\n nopropagation(event);\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n function mousemoved(event2) {\n noevent(event2);\n if (!g.moved) {\n var dx = event2.clientX - x0, dy = event2.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.event(event2).zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = pointer(event2, currentTarget), g.mouse[1]), g.extent, translateExtent));\n }\n function mouseupped(event2) {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n yesdrag(event2.view, g.moved);\n noevent(event2);\n g.event(event2).end();\n }\n }\n function dblclicked(event, ...args) {\n if (!filter2.apply(this, arguments))\n return;\n var t0 = this.__zoom, p0 = pointer(event.changedTouches ? event.changedTouches[0] : event, this), p1 = t0.invert(p0), k1 = t0.k * (event.shiftKey ? 0.5 : 2), t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, args), translateExtent);\n noevent(event);\n if (duration > 0)\n select(this).transition().duration(duration).call(schedule2, t1, p0, event);\n else\n select(this).call(zoom2.transform, t1, p0, event);\n }\n function touchstarted(event, ...args) {\n if (!filter2.apply(this, arguments))\n return;\n var touches = event.touches, n = touches.length, g = gesture(this, args, event.changedTouches.length === n).event(event), started, i, t, p;\n nopropagation(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0)\n g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2])\n g.touch1 = p, g.taps = 0;\n }\n if (touchstarting)\n touchstarting = clearTimeout(touchstarting);\n if (started) {\n if (g.taps < 2)\n touchfirst = p[0], touchstarting = setTimeout(function() {\n touchstarting = null;\n }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n function touchmoved(event, ...args) {\n if (!this.__zooming)\n return;\n var g = gesture(this, args).event(event), touches = event.changedTouches, n = touches.length, i, t, p, l;\n noevent(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n if (g.touch0 && g.touch0[2] === t.identifier)\n g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier)\n g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1], p1 = g.touch1[0], l1 = g.touch1[1], dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp, dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n } else if (g.touch0)\n p = g.touch0[0], l = g.touch0[1];\n else\n return;\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n function touchended(event, ...args) {\n if (!this.__zooming)\n return;\n var g = gesture(this, args).event(event), touches = event.changedTouches, n = touches.length, i, t;\n nopropagation(event);\n if (touchending)\n clearTimeout(touchending);\n touchending = setTimeout(function() {\n touchending = null;\n }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier)\n delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier)\n delete g.touch1;\n }\n if (g.touch1 && !g.touch0)\n g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0)\n g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n if (g.taps === 2) {\n t = pointer(t, this);\n if (Math.hypot(touchfirst[0] - t[0], touchfirst[1] - t[1]) < tapDistance) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p)\n p.apply(this, arguments);\n }\n }\n }\n }\n zoom2.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom2) : wheelDelta;\n };\n zoom2.filter = function(_) {\n return arguments.length ? (filter2 = typeof _ === \"function\" ? _ : constant(!!_), zoom2) : filter2;\n };\n zoom2.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom2) : touchable;\n };\n zoom2.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom2) : extent;\n };\n zoom2.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom2) : [scaleExtent[0], scaleExtent[1]];\n };\n zoom2.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom2) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n zoom2.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom2) : constrain;\n };\n zoom2.duration = function(_) {\n return arguments.length ? (duration = +_, zoom2) : duration;\n };\n zoom2.interpolate = function(_) {\n return arguments.length ? (interpolate2 = _, zoom2) : interpolate2;\n };\n zoom2.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom2 : value;\n };\n zoom2.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom2) : Math.sqrt(clickDistance2);\n };\n zoom2.tapDistance = function(_) {\n return arguments.length ? (tapDistance = +_, zoom2) : tapDistance;\n };\n return zoom2;\n}\nvar Position = /* @__PURE__ */ ((Position2) => {\n Position2[\"Left\"] = \"left\";\n Position2[\"Top\"] = \"top\";\n Position2[\"Right\"] = \"right\";\n Position2[\"Bottom\"] = \"bottom\";\n return Position2;\n})(Position || {});\nvar SelectionMode = /* @__PURE__ */ ((SelectionMode2) => {\n SelectionMode2[\"Partial\"] = \"partial\";\n SelectionMode2[\"Full\"] = \"full\";\n return SelectionMode2;\n})(SelectionMode || {});\nvar ConnectionLineType = /* @__PURE__ */ ((ConnectionLineType2) => {\n ConnectionLineType2[\"Bezier\"] = \"default\";\n ConnectionLineType2[\"SimpleBezier\"] = \"simple-bezier\";\n ConnectionLineType2[\"Straight\"] = \"straight\";\n ConnectionLineType2[\"Step\"] = \"step\";\n ConnectionLineType2[\"SmoothStep\"] = \"smoothstep\";\n return ConnectionLineType2;\n})(ConnectionLineType || {});\nvar ConnectionMode = /* @__PURE__ */ ((ConnectionMode2) => {\n ConnectionMode2[\"Strict\"] = \"strict\";\n ConnectionMode2[\"Loose\"] = \"loose\";\n return ConnectionMode2;\n})(ConnectionMode || {});\nvar MarkerType = /* @__PURE__ */ ((MarkerType2) => {\n MarkerType2[\"Arrow\"] = \"arrow\";\n MarkerType2[\"ArrowClosed\"] = \"arrowclosed\";\n return MarkerType2;\n})(MarkerType || {});\nvar PanOnScrollMode = /* @__PURE__ */ ((PanOnScrollMode2) => {\n PanOnScrollMode2[\"Free\"] = \"free\";\n PanOnScrollMode2[\"Vertical\"] = \"vertical\";\n PanOnScrollMode2[\"Horizontal\"] = \"horizontal\";\n return PanOnScrollMode2;\n})(PanOnScrollMode || {});\nvar PanelPosition = /* @__PURE__ */ ((PanelPosition2) => {\n PanelPosition2[\"TopLeft\"] = \"top-left\";\n PanelPosition2[\"TopCenter\"] = \"top-center\";\n PanelPosition2[\"TopRight\"] = \"top-right\";\n PanelPosition2[\"BottomLeft\"] = \"bottom-left\";\n PanelPosition2[\"BottomCenter\"] = \"bottom-center\";\n PanelPosition2[\"BottomRight\"] = \"bottom-right\";\n return PanelPosition2;\n})(PanelPosition || {});\nconst inputTags = [\"INPUT\", \"SELECT\", \"TEXTAREA\"];\nconst defaultDoc = typeof document !== \"undefined\" ? document : null;\nfunction isInputDOMNode(event) {\n var _a, _b;\n const target = ((_b = (_a = event.composedPath) == null ? void 0 : _a.call(event)) == null ? void 0 : _b[0]) || event.target;\n const hasAttribute = typeof (target == null ? void 0 : target.hasAttribute) === \"function\" ? target.hasAttribute(\"contenteditable\") : false;\n const closest = typeof (target == null ? void 0 : target.closest) === \"function\" ? target.closest(\".nokey\") : null;\n return inputTags.includes(target == null ? void 0 : target.nodeName) || hasAttribute || !!closest;\n}\nfunction wasModifierPressed(event) {\n return event.ctrlKey || event.metaKey || event.shiftKey || event.altKey;\n}\nfunction isKeyMatch(pressedKey, keyToMatch, pressedKeys, isKeyUp) {\n const keyCombination = keyToMatch.replace(\"+\", \"\\n\").replace(\"\\n\\n\", \"\\n+\").split(\"\\n\").map((k) => k.trim().toLowerCase());\n if (keyCombination.length === 1) {\n return pressedKey.toLowerCase() === keyToMatch.toLowerCase();\n }\n if (!isKeyUp) {\n pressedKeys.add(pressedKey.toLowerCase());\n }\n const isMatch = keyCombination.every(\n (key, index) => pressedKeys.has(key) && Array.from(pressedKeys.values())[index] === keyCombination[index]\n );\n if (isKeyUp) {\n pressedKeys.delete(pressedKey.toLowerCase());\n }\n return isMatch;\n}\nfunction createKeyPredicate(keyFilter, pressedKeys) {\n return (event) => {\n if (!event.code && !event.key) {\n return false;\n }\n const keyOrCode = useKeyOrCode(event.code, keyFilter);\n if (Array.isArray(keyFilter)) {\n return keyFilter.some((key) => isKeyMatch(event[keyOrCode], key, pressedKeys, event.type === \"keyup\"));\n }\n return isKeyMatch(event[keyOrCode], keyFilter, pressedKeys, event.type === \"keyup\");\n };\n}\nfunction useKeyOrCode(code, keysToWatch) {\n return keysToWatch.includes(code) ? \"code\" : \"key\";\n}\nfunction useKeyPress(keyFilter, options) {\n const target = computed(() => toValue$1(options == null ? void 0 : options.target) ?? defaultDoc);\n const isPressed = shallowRef(toValue$1(keyFilter) === true);\n let modifierPressed = false;\n const pressedKeys = /* @__PURE__ */ new Set();\n let currentFilter = createKeyFilterFn(toValue$1(keyFilter));\n watch(\n () => toValue$1(keyFilter),\n (nextKeyFilter, previousKeyFilter) => {\n if (typeof previousKeyFilter === \"boolean\" && typeof nextKeyFilter !== \"boolean\") {\n reset();\n }\n currentFilter = createKeyFilterFn(nextKeyFilter);\n },\n {\n immediate: true\n }\n );\n useEventListener([\"blur\", \"contextmenu\"], reset);\n onKeyStroke(\n (...args) => currentFilter(...args),\n (e) => {\n var _a, _b;\n const actInsideInputWithModifier = toValue$1(options == null ? void 0 : options.actInsideInputWithModifier) ?? true;\n const preventDefault = toValue$1(options == null ? void 0 : options.preventDefault) ?? false;\n modifierPressed = wasModifierPressed(e);\n const preventAction = (!modifierPressed || modifierPressed && !actInsideInputWithModifier) && isInputDOMNode(e);\n if (preventAction) {\n return;\n }\n const target2 = ((_b = (_a = e.composedPath) == null ? void 0 : _a.call(e)) == null ? void 0 : _b[0]) || e.target;\n const isInteractiveElement = (target2 == null ? void 0 : target2.nodeName) === \"BUTTON\" || (target2 == null ? void 0 : target2.nodeName) === \"A\";\n if (!preventDefault && (modifierPressed || !isInteractiveElement)) {\n e.preventDefault();\n }\n isPressed.value = true;\n },\n { eventName: \"keydown\", target }\n );\n onKeyStroke(\n (...args) => currentFilter(...args),\n (e) => {\n const actInsideInputWithModifier = toValue$1(options == null ? void 0 : options.actInsideInputWithModifier) ?? true;\n if (isPressed.value) {\n const preventAction = (!modifierPressed || modifierPressed && !actInsideInputWithModifier) && isInputDOMNode(e);\n if (preventAction) {\n return;\n }\n modifierPressed = false;\n isPressed.value = false;\n }\n },\n { eventName: \"keyup\", target }\n );\n function reset() {\n modifierPressed = false;\n pressedKeys.clear();\n isPressed.value = toValue$1(keyFilter) === true;\n }\n function createKeyFilterFn(keyFilter2) {\n if (keyFilter2 === null) {\n reset();\n return () => false;\n }\n if (typeof keyFilter2 === \"boolean\") {\n reset();\n isPressed.value = keyFilter2;\n return () => false;\n }\n if (Array.isArray(keyFilter2) || typeof keyFilter2 === \"string\") {\n return createKeyPredicate(keyFilter2, pressedKeys);\n }\n return keyFilter2;\n }\n return isPressed;\n}\nconst ARIA_NODE_DESC_KEY = \"vue-flow__node-desc\";\nconst ARIA_EDGE_DESC_KEY = \"vue-flow__edge-desc\";\nconst ARIA_LIVE_MESSAGE = \"vue-flow__aria-live\";\nconst elementSelectionKeys = [\"Enter\", \" \", \"Escape\"];\nconst arrowKeyDiffs = {\n ArrowUp: { x: 0, y: -1 },\n ArrowDown: { x: 0, y: 1 },\n ArrowLeft: { x: -1, y: 0 },\n ArrowRight: { x: 1, y: 0 }\n};\nfunction nodeToRect(node) {\n return {\n ...node.computedPosition || { x: 0, y: 0 },\n width: node.dimensions.width || 0,\n height: node.dimensions.height || 0\n };\n}\nfunction getOverlappingArea(rectA, rectB) {\n const xOverlap = Math.max(0, Math.min(rectA.x + rectA.width, rectB.x + rectB.width) - Math.max(rectA.x, rectB.x));\n const yOverlap = Math.max(0, Math.min(rectA.y + rectA.height, rectB.y + rectB.height) - Math.max(rectA.y, rectB.y));\n return Math.ceil(xOverlap * yOverlap);\n}\nfunction getDimensions(node) {\n return {\n width: node.offsetWidth,\n height: node.offsetHeight\n };\n}\nfunction clamp(val, min = 0, max = 1) {\n return Math.min(Math.max(val, min), max);\n}\nfunction clampPosition(position, extent) {\n return {\n x: clamp(position.x, extent[0][0], extent[1][0]),\n y: clamp(position.y, extent[0][1], extent[1][1])\n };\n}\nfunction getHostForElement(element) {\n const doc = element.getRootNode();\n if (\"elementFromPoint\" in doc) {\n return doc;\n }\n return window.document;\n}\nfunction isEdge(element) {\n return element && typeof element === \"object\" && \"id\" in element && \"source\" in element && \"target\" in element;\n}\nfunction isGraphEdge(element) {\n return isEdge(element) && \"sourceNode\" in element && \"targetNode\" in element;\n}\nfunction isNode(element) {\n return element && typeof element === \"object\" && \"id\" in element && \"position\" in element && !isEdge(element);\n}\nfunction isGraphNode(element) {\n return isNode(element) && \"computedPosition\" in element;\n}\nfunction isNumeric(n) {\n return !Number.isNaN(n) && Number.isFinite(n);\n}\nfunction isRect(obj) {\n return isNumeric(obj.width) && isNumeric(obj.height) && isNumeric(obj.x) && isNumeric(obj.y);\n}\nfunction parseNode(node, existingNode, parentNode) {\n const initialState = {\n id: node.id.toString(),\n type: node.type ?? \"default\",\n dimensions: markRaw({\n width: 0,\n height: 0\n }),\n computedPosition: markRaw({\n z: 0,\n ...node.position\n }),\n // todo: shouldn't be defined initially, as we want to use handleBounds to check if a node was actually initialized or not\n handleBounds: {\n source: [],\n target: []\n },\n draggable: void 0,\n selectable: void 0,\n connectable: void 0,\n focusable: void 0,\n selected: false,\n dragging: false,\n resizing: false,\n initialized: false,\n isParent: false,\n position: {\n x: 0,\n y: 0\n },\n data: isDef(node.data) ? node.data : {},\n events: markRaw(isDef(node.events) ? node.events : {})\n };\n return Object.assign(existingNode ?? initialState, node, { id: node.id.toString(), parentNode });\n}\nfunction parseEdge(edge, existingEdge, defaultEdgeOptions) {\n var _a, _b;\n const initialState = {\n id: edge.id.toString(),\n type: edge.type ?? (existingEdge == null ? void 0 : existingEdge.type) ?? \"default\",\n source: edge.source.toString(),\n target: edge.target.toString(),\n sourceHandle: (_a = edge.sourceHandle) == null ? void 0 : _a.toString(),\n targetHandle: (_b = edge.targetHandle) == null ? void 0 : _b.toString(),\n updatable: edge.updatable ?? (defaultEdgeOptions == null ? void 0 : defaultEdgeOptions.updatable),\n selectable: edge.selectable ?? (defaultEdgeOptions == null ? void 0 : defaultEdgeOptions.selectable),\n focusable: edge.focusable ?? (defaultEdgeOptions == null ? void 0 : defaultEdgeOptions.focusable),\n data: isDef(edge.data) ? edge.data : {},\n events: markRaw(isDef(edge.events) ? edge.events : {}),\n label: edge.label ?? \"\",\n interactionWidth: edge.interactionWidth ?? (defaultEdgeOptions == null ? void 0 : defaultEdgeOptions.interactionWidth),\n ...defaultEdgeOptions ?? {}\n };\n return Object.assign(existingEdge ?? initialState, edge, { id: edge.id.toString() });\n}\nfunction getConnectedElements(nodeOrId, nodes, edges, dir) {\n const id2 = typeof nodeOrId === \"string\" ? nodeOrId : nodeOrId.id;\n const connectedIds = /* @__PURE__ */ new Set();\n const origin = dir === \"source\" ? \"target\" : \"source\";\n for (const edge of edges) {\n if (edge[origin] === id2) {\n connectedIds.add(edge[dir]);\n }\n }\n return nodes.filter((n) => connectedIds.has(n.id));\n}\nfunction getOutgoers(...args) {\n if (args.length === 3) {\n const [nodeOrId2, nodes, edges] = args;\n return getConnectedElements(nodeOrId2, nodes, edges, \"target\");\n }\n const [nodeOrId, elements] = args;\n const nodeId = typeof nodeOrId === \"string\" ? nodeOrId : nodeOrId.id;\n const outgoers = elements.filter((el) => isEdge(el) && el.source === nodeId);\n return outgoers.map((edge) => elements.find((el) => isNode(el) && el.id === edge.target));\n}\nfunction getIncomers(...args) {\n if (args.length === 3) {\n const [nodeOrId2, nodes, edges] = args;\n return getConnectedElements(nodeOrId2, nodes, edges, \"source\");\n }\n const [nodeOrId, elements] = args;\n const nodeId = typeof nodeOrId === \"string\" ? nodeOrId : nodeOrId.id;\n const incomers = elements.filter((el) => isEdge(el) && el.target === nodeId);\n return incomers.map((edge) => elements.find((el) => isNode(el) && el.id === edge.source));\n}\nfunction getEdgeId({ source, sourceHandle, target, targetHandle }) {\n return `vueflow__edge-${source}${sourceHandle ?? \"\"}-${target}${targetHandle ?? \"\"}`;\n}\nfunction connectionExists(edge, elements) {\n return elements.some(\n (el) => isEdge(el) && el.source === edge.source && el.target === edge.target && (el.sourceHandle === edge.sourceHandle || !el.sourceHandle && !edge.sourceHandle) && (el.targetHandle === edge.targetHandle || !el.targetHandle && !edge.targetHandle)\n );\n}\nfunction addEdge(edgeParams, elements, defaults) {\n if (!edgeParams.source || !edgeParams.target) {\n warn(\"Can't create edge. An edge needs a source and a target.\");\n return elements;\n }\n let edge;\n if (isEdge(edgeParams)) {\n edge = { ...edgeParams };\n } else {\n edge = {\n ...edgeParams,\n id: getEdgeId(edgeParams)\n };\n }\n edge = parseEdge(edge, void 0, defaults);\n if (connectionExists(edge, elements)) {\n return elements;\n }\n elements.push(edge);\n return elements;\n}\nfunction updateEdge(oldEdge, newConnection, elements) {\n if (!newConnection.source || !newConnection.target) {\n warn(\"Can't create new edge. An edge needs a source and a target.\");\n return elements;\n }\n const foundEdge = elements.find((e) => isEdge(e) && e.id === oldEdge.id);\n if (!foundEdge) {\n warn(`The old edge with id=${oldEdge.id} does not exist.`);\n return elements;\n }\n const edge = {\n ...oldEdge,\n id: getEdgeId(newConnection),\n source: newConnection.source,\n target: newConnection.target,\n sourceHandle: newConnection.sourceHandle,\n targetHandle: newConnection.targetHandle\n };\n elements.splice(elements.indexOf(foundEdge), 1, edge);\n return elements.filter((e) => e.id !== oldEdge.id);\n}\nfunction rendererPointToPoint({ x, y }, { x: tx, y: ty, zoom: tScale }) {\n return {\n x: x * tScale + tx,\n y: y * tScale + ty\n };\n}\nfunction pointToRendererPoint({ x, y }, { x: tx, y: ty, zoom: tScale }, snapToGrid = false, snapGrid = [1, 1]) {\n const position = {\n x: (x - tx) / tScale,\n y: (y - ty) / tScale\n };\n return snapToGrid ? snapPosition(position, snapGrid) : position;\n}\nfunction getBoundsOfBoxes(box1, box2) {\n return {\n x: Math.min(box1.x, box2.x),\n y: Math.min(box1.y, box2.y),\n x2: Math.max(box1.x2, box2.x2),\n y2: Math.max(box1.y2, box2.y2)\n };\n}\nfunction rectToBox({ x, y, width, height }) {\n return {\n x,\n y,\n x2: x + width,\n y2: y + height\n };\n}\nfunction boxToRect({ x, y, x2, y2 }) {\n return {\n x,\n y,\n width: x2 - x,\n height: y2 - y\n };\n}\nfunction getBoundsofRects(rect1, rect2) {\n return boxToRect(getBoundsOfBoxes(rectToBox(rect1), rectToBox(rect2)));\n}\nfunction getRectOfNodes(nodes) {\n let box = {\n x: Number.POSITIVE_INFINITY,\n y: Number.POSITIVE_INFINITY,\n x2: Number.NEGATIVE_INFINITY,\n y2: Number.NEGATIVE_INFINITY\n };\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n box = getBoundsOfBoxes(\n box,\n rectToBox({\n ...node.computedPosition,\n ...node.dimensions\n })\n );\n }\n return boxToRect(box);\n}\nfunction getNodesInside(nodes, rect, viewport = { x: 0, y: 0, zoom: 1 }, partially = false, excludeNonSelectableNodes = false) {\n const paneRect = {\n ...pointToRendererPoint(rect, viewport),\n width: rect.width / viewport.zoom,\n height: rect.height / viewport.zoom\n };\n const visibleNodes = [];\n for (const node of nodes) {\n const { dimensions, selectable = true, hidden = false } = node;\n const width = dimensions.width ?? node.width ?? null;\n const height = dimensions.height ?? node.height ?? null;\n if (excludeNonSelectableNodes && !selectable || hidden) {\n continue;\n }\n const overlappingArea = getOverlappingArea(paneRect, nodeToRect(node));\n const notInitialized = width === null || height === null;\n const partiallyVisible = partially && overlappingArea > 0;\n const area = (width ?? 0) * (height ?? 0);\n const isVisible = notInitialized || partiallyVisible || overlappingArea >= area;\n if (isVisible || node.dragging) {\n visibleNodes.push(node);\n }\n }\n return visibleNodes;\n}\nfunction getConnectedEdges(nodesOrId, edges) {\n const nodeIds = /* @__PURE__ */ new Set();\n if (typeof nodesOrId === \"string\") {\n nodeIds.add(nodesOrId);\n } else if (nodesOrId.length >= 1) {\n for (const n of nodesOrId) {\n nodeIds.add(n.id);\n }\n }\n return edges.filter((edge) => nodeIds.has(edge.source) || nodeIds.has(edge.target));\n}\nfunction getTransformForBounds(bounds, width, height, minZoom, maxZoom, padding = 0.1, offset = { x: 0, y: 0 }) {\n const xZoom = width / (bounds.width * (1 + padding));\n const yZoom = height / (bounds.height * (1 + padding));\n const zoom2 = Math.min(xZoom, yZoom);\n const clampedZoom = clamp(zoom2, minZoom, maxZoom);\n const boundsCenterX = bounds.x + bounds.width / 2;\n const boundsCenterY = bounds.y + bounds.height / 2;\n const x = width / 2 - boundsCenterX * clampedZoom + (offset.x ?? 0);\n const y = height / 2 - boundsCenterY * clampedZoom + (offset.y ?? 0);\n return { x, y, zoom: clampedZoom };\n}\nfunction getXYZPos(parentPos, computedPosition) {\n return {\n x: computedPosition.x + parentPos.x,\n y: computedPosition.y + parentPos.y,\n z: (parentPos.z > computedPosition.z ? parentPos.z : computedPosition.z) + 1\n };\n}\nfunction isParentSelected(node, findNode) {\n if (!node.parentNode) {\n return false;\n }\n const parent = findNode(node.parentNode);\n if (!parent) {\n return false;\n }\n if (parent.selected) {\n return true;\n }\n return isParentSelected(parent, findNode);\n}\nfunction getMarkerId(marker, vueFlowId) {\n if (typeof marker === \"undefined\") {\n return \"\";\n }\n if (typeof marker === \"string\") {\n return marker;\n }\n const idPrefix = vueFlowId ? `${vueFlowId}__` : \"\";\n return `${idPrefix}${Object.keys(marker).sort().map((key) => `${key}=${marker[key]}`).join(\"&\")}`;\n}\nfunction calcAutoPanVelocity(value, min, max) {\n if (value < min) {\n return clamp(Math.abs(value - min), 1, min) / min;\n }\n if (value > max) {\n return -clamp(Math.abs(value - max), 1, min) / min;\n }\n return 0;\n}\nfunction calcAutoPan(pos, bounds, speed = 15, distance2 = 40) {\n const xMovement = calcAutoPanVelocity(pos.x, distance2, bounds.width - distance2) * speed;\n const yMovement = calcAutoPanVelocity(pos.y, distance2, bounds.height - distance2) * speed;\n return [xMovement, yMovement];\n}\nfunction handleParentExpand(updateItem, parent) {\n if (parent) {\n const extendWidth = updateItem.position.x + updateItem.dimensions.width - parent.dimensions.width;\n const extendHeight = updateItem.position.y + updateItem.dimensions.height - parent.dimensions.height;\n if (extendWidth > 0 || extendHeight > 0 || updateItem.position.x < 0 || updateItem.position.y < 0) {\n let parentStyles = {};\n if (typeof parent.style === \"function\") {\n parentStyles = { ...parent.style(parent) };\n } else if (parent.style) {\n parentStyles = { ...parent.style };\n }\n parentStyles.width = parentStyles.width ?? `${parent.dimensions.width}px`;\n parentStyles.height = parentStyles.height ?? `${parent.dimensions.height}px`;\n if (extendWidth > 0) {\n if (typeof parentStyles.width === \"string\") {\n const currWidth = Number(parentStyles.width.replace(\"px\", \"\"));\n parentStyles.width = `${currWidth + extendWidth}px`;\n } else {\n parentStyles.width += extendWidth;\n }\n }\n if (extendHeight > 0) {\n if (typeof parentStyles.height === \"string\") {\n const currWidth = Number(parentStyles.height.replace(\"px\", \"\"));\n parentStyles.height = `${currWidth + extendHeight}px`;\n } else {\n parentStyles.height += extendHeight;\n }\n }\n if (updateItem.position.x < 0) {\n const xDiff = Math.abs(updateItem.position.x);\n parent.position.x = parent.position.x - xDiff;\n if (typeof parentStyles.width === \"string\") {\n const currWidth = Number(parentStyles.width.replace(\"px\", \"\"));\n parentStyles.width = `${currWidth + xDiff}px`;\n } else {\n parentStyles.width += xDiff;\n }\n updateItem.position.x = 0;\n }\n if (updateItem.position.y < 0) {\n const yDiff = Math.abs(updateItem.position.y);\n parent.position.y = parent.position.y - yDiff;\n if (typeof parentStyles.height === \"string\") {\n const currWidth = Number(parentStyles.height.replace(\"px\", \"\"));\n parentStyles.height = `${currWidth + yDiff}px`;\n } else {\n parentStyles.height += yDiff;\n }\n updateItem.position.y = 0;\n }\n parent.dimensions.width = Number(parentStyles.width.toString().replace(\"px\", \"\"));\n parent.dimensions.height = Number(parentStyles.height.toString().replace(\"px\", \"\"));\n if (typeof parent.style === \"function\") {\n parent.style = (p) => {\n const styleFunc = parent.style;\n return {\n ...styleFunc(p),\n ...parentStyles\n };\n };\n } else {\n parent.style = {\n ...parent.style,\n ...parentStyles\n };\n }\n }\n }\n}\nfunction applyChanges(changes, elements) {\n var _a, _b;\n const addRemoveChanges = changes.filter((c) => c.type === \"add\" || c.type === \"remove\");\n for (const change of addRemoveChanges) {\n if (change.type === \"add\") {\n const index = elements.findIndex((el) => el.id === change.item.id);\n if (index === -1) {\n elements.push(change.item);\n }\n } else if (change.type === \"remove\") {\n const index = elements.findIndex((el) => el.id === change.id);\n if (index !== -1) {\n elements.splice(index, 1);\n }\n }\n }\n const elementIds = elements.map((el) => el.id);\n for (const element of elements) {\n for (const currentChange of changes) {\n if (currentChange.id !== element.id) {\n continue;\n }\n switch (currentChange.type) {\n case \"select\":\n element.selected = currentChange.selected;\n break;\n case \"position\":\n if (isGraphNode(element)) {\n if (typeof currentChange.position !== \"undefined\") {\n element.position = currentChange.position;\n }\n if (typeof currentChange.dragging !== \"undefined\") {\n element.dragging = currentChange.dragging;\n }\n if (element.expandParent && element.parentNode) {\n const parent = elements[elementIds.indexOf(element.parentNode)];\n if (parent && isGraphNode(parent)) {\n handleParentExpand(element, parent);\n }\n }\n }\n break;\n case \"dimensions\":\n if (isGraphNode(element)) {\n if (typeof currentChange.dimensions !== \"undefined\") {\n element.dimensions = currentChange.dimensions;\n }\n if (typeof currentChange.updateStyle !== \"undefined\" && currentChange.updateStyle) {\n element.style = {\n ...element.style || {},\n width: `${(_a = currentChange.dimensions) == null ? void 0 : _a.width}px`,\n height: `${(_b = currentChange.dimensions) == null ? void 0 : _b.height}px`\n };\n }\n if (typeof currentChange.resizing !== \"undefined\") {\n element.resizing = currentChange.resizing;\n }\n if (element.expandParent && element.parentNode) {\n const parent = elements[elementIds.indexOf(element.parentNode)];\n if (parent && isGraphNode(parent)) {\n const parentInit = !!parent.dimensions.width && !!parent.dimensions.height;\n if (!parentInit) {\n nextTick(() => {\n handleParentExpand(element, parent);\n });\n } else {\n handleParentExpand(element, parent);\n }\n }\n }\n }\n break;\n }\n }\n }\n return elements;\n}\nfunction applyEdgeChanges(changes, edges) {\n return applyChanges(changes, edges);\n}\nfunction applyNodeChanges(changes, nodes) {\n return applyChanges(changes, nodes);\n}\nfunction createSelectionChange(id2, selected) {\n return {\n id: id2,\n type: \"select\",\n selected\n };\n}\nfunction createAdditionChange(item) {\n return {\n item,\n type: \"add\"\n };\n}\nfunction createNodeRemoveChange(id2) {\n return {\n id: id2,\n type: \"remove\"\n };\n}\nfunction createEdgeRemoveChange(id2, source, target, sourceHandle, targetHandle) {\n return {\n id: id2,\n source,\n target,\n sourceHandle: sourceHandle || null,\n targetHandle: targetHandle || null,\n type: \"remove\"\n };\n}\nfunction getSelectionChanges(items, selectedIds = /* @__PURE__ */ new Set(), mutateItem = false) {\n const changes = [];\n for (const [id2, item] of items) {\n const willBeSelected = selectedIds.has(id2);\n if (!(item.selected === void 0 && !willBeSelected) && item.selected !== willBeSelected) {\n if (mutateItem) {\n item.selected = willBeSelected;\n }\n changes.push(createSelectionChange(item.id, willBeSelected));\n }\n }\n return changes;\n}\nfunction createExtendedEventHook(defaultHandler) {\n const fns = /* @__PURE__ */ new Set();\n let hasDefaultHandler = false;\n const hasListeners = () => fns.size > 0;\n if (defaultHandler) {\n hasDefaultHandler = true;\n fns.add(defaultHandler);\n }\n const off = (fn) => {\n fns.delete(fn);\n };\n const on = (fn) => {\n if (defaultHandler && hasDefaultHandler) {\n fns.delete(defaultHandler);\n }\n fns.add(fn);\n const offFn = () => {\n off(fn);\n if (defaultHandler && hasDefaultHandler) {\n fns.add(defaultHandler);\n }\n };\n tryOnScopeDispose(offFn);\n return {\n off: offFn\n };\n };\n const trigger = (param) => {\n return Promise.all(Array.from(fns).map((fn) => fn(param)));\n };\n return {\n on,\n off,\n trigger,\n hasListeners,\n fns\n };\n}\nfunction hasSelector(target, selector2, node) {\n let current = target;\n do {\n if (current && current.matches(selector2)) {\n return true;\n } else if (current === node) {\n return false;\n }\n current = current.parentElement;\n } while (current);\n return false;\n}\nfunction getDragItems(nodes, nodesDraggable, mousePos, findNode, nodeId) {\n var _a, _b;\n const dragItems = [];\n for (const node of nodes) {\n if ((node.selected || node.id === nodeId) && (!node.parentNode || !isParentSelected(node, findNode)) && (node.draggable || nodesDraggable && typeof node.draggable === \"undefined\")) {\n dragItems.push(\n markRaw({\n id: node.id,\n position: node.position || { x: 0, y: 0 },\n distance: {\n x: mousePos.x - ((_a = node.computedPosition) == null ? void 0 : _a.x) || 0,\n y: mousePos.y - ((_b = node.computedPosition) == null ? void 0 : _b.y) || 0\n },\n from: node.computedPosition,\n extent: node.extent,\n parentNode: node.parentNode,\n dimensions: node.dimensions,\n expandParent: node.expandParent\n })\n );\n }\n }\n return dragItems;\n}\nfunction getEventHandlerParams({\n id: id2,\n dragItems,\n findNode\n}) {\n const extendedDragItems = [];\n for (const dragItem of dragItems) {\n const node = findNode(dragItem.id);\n if (node) {\n extendedDragItems.push(node);\n }\n }\n return [id2 ? extendedDragItems.find((n) => n.id === id2) : extendedDragItems[0], extendedDragItems];\n}\nfunction getExtentPadding(padding) {\n if (Array.isArray(padding)) {\n switch (padding.length) {\n case 1:\n return [padding[0], padding[0], padding[0], padding[0]];\n case 2:\n return [padding[0], padding[1], padding[0], padding[1]];\n case 3:\n return [padding[0], padding[1], padding[2], padding[1]];\n case 4:\n return padding;\n default:\n return [0, 0, 0, 0];\n }\n }\n return [padding, padding, padding, padding];\n}\nfunction getParentExtent(currentExtent, node, parent) {\n const [top, right, bottom, left] = typeof currentExtent !== \"string\" ? getExtentPadding(currentExtent.padding) : [0, 0, 0, 0];\n if (parent && typeof parent.computedPosition.x !== \"undefined\" && typeof parent.computedPosition.y !== \"undefined\" && typeof parent.dimensions.width !== \"undefined\" && typeof parent.dimensions.height !== \"undefined\") {\n return [\n [parent.computedPosition.x + left, parent.computedPosition.y + top],\n [\n parent.computedPosition.x + parent.dimensions.width - right,\n parent.computedPosition.y + parent.dimensions.height - bottom\n ]\n ];\n }\n return false;\n}\nfunction getExtent(item, triggerError, extent, parent) {\n let currentExtent = item.extent || extent;\n if ((currentExtent === \"parent\" || !Array.isArray(currentExtent) && (currentExtent == null ? void 0 : currentExtent.range) === \"parent\") && !item.expandParent) {\n if (item.parentNode && parent && item.dimensions.width && item.dimensions.height) {\n const parentExtent = getParentExtent(currentExtent, item, parent);\n if (parentExtent) {\n currentExtent = parentExtent;\n }\n } else {\n triggerError(new VueFlowError(ErrorCode.NODE_EXTENT_INVALID, item.id));\n currentExtent = extent;\n }\n } else if (Array.isArray(currentExtent)) {\n const parentX = (parent == null ? void 0 : parent.computedPosition.x) || 0;\n const parentY = (parent == null ? void 0 : parent.computedPosition.y) || 0;\n currentExtent = [\n [currentExtent[0][0] + parentX, currentExtent[0][1] + parentY],\n [currentExtent[1][0] + parentX, currentExtent[1][1] + parentY]\n ];\n } else if (currentExtent !== \"parent\" && (currentExtent == null ? void 0 : currentExtent.range) && Array.isArray(currentExtent.range)) {\n const [top, right, bottom, left] = getExtentPadding(currentExtent.padding);\n const parentX = (parent == null ? void 0 : parent.computedPosition.x) || 0;\n const parentY = (parent == null ? void 0 : parent.computedPosition.y) || 0;\n currentExtent = [\n [currentExtent.range[0][0] + parentX + left, currentExtent.range[0][1] + parentY + top],\n [currentExtent.range[1][0] + parentX - right, currentExtent.range[1][1] + parentY - bottom]\n ];\n }\n return currentExtent === \"parent\" ? [\n [Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY],\n [Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY]\n ] : currentExtent;\n}\nfunction clampNodeExtent({ width, height }, extent) {\n return [extent[0], [extent[1][0] - (width || 0), extent[1][1] - (height || 0)]];\n}\nfunction calcNextPosition(node, nextPosition, triggerError, nodeExtent, parentNode) {\n const extent = clampNodeExtent(node.dimensions, getExtent(node, triggerError, nodeExtent, parentNode));\n const clampedPos = clampPosition(nextPosition, extent);\n return {\n position: {\n x: clampedPos.x - ((parentNode == null ? void 0 : parentNode.computedPosition.x) || 0),\n y: clampedPos.y - ((parentNode == null ? void 0 : parentNode.computedPosition.y) || 0)\n },\n computedPosition: clampedPos\n };\n}\nfunction getHandlePosition(node, handle, fallbackPosition = Position.Left, center = false) {\n const x = ((handle == null ? void 0 : handle.x) ?? 0) + node.computedPosition.x;\n const y = ((handle == null ? void 0 : handle.y) ?? 0) + node.computedPosition.y;\n const { width, height } = handle ?? getNodeDimensions(node);\n if (center) {\n return { x: x + width / 2, y: y + height / 2 };\n }\n const position = (handle == null ? void 0 : handle.position) ?? fallbackPosition;\n switch (position) {\n case Position.Top:\n return { x: x + width / 2, y };\n case Position.Right:\n return { x: x + width, y: y + height / 2 };\n case Position.Bottom:\n return { x: x + width / 2, y: y + height };\n case Position.Left:\n return { x, y: y + height / 2 };\n }\n}\nfunction getEdgeHandle(bounds, handleId) {\n if (!bounds) {\n return null;\n }\n return (!handleId ? bounds[0] : bounds.find((d) => d.id === handleId)) || null;\n}\nfunction isEdgeVisible({\n sourcePos,\n targetPos,\n sourceWidth,\n sourceHeight,\n targetWidth,\n targetHeight,\n width,\n height,\n viewport\n}) {\n const edgeBox = {\n x: Math.min(sourcePos.x, targetPos.x),\n y: Math.min(sourcePos.y, targetPos.y),\n x2: Math.max(sourcePos.x + sourceWidth, targetPos.x + targetWidth),\n y2: Math.max(sourcePos.y + sourceHeight, targetPos.y + targetHeight)\n };\n if (edgeBox.x === edgeBox.x2) {\n edgeBox.x2 += 1;\n }\n if (edgeBox.y === edgeBox.y2) {\n edgeBox.y2 += 1;\n }\n const viewBox = rectToBox({\n x: (0 - viewport.x) / viewport.zoom,\n y: (0 - viewport.y) / viewport.zoom,\n width: width / viewport.zoom,\n height: height / viewport.zoom\n });\n const xOverlap = Math.max(0, Math.min(viewBox.x2, edgeBox.x2) - Math.max(viewBox.x, edgeBox.x));\n const yOverlap = Math.max(0, Math.min(viewBox.y2, edgeBox.y2) - Math.max(viewBox.y, edgeBox.y));\n const overlappingArea = Math.ceil(xOverlap * yOverlap);\n return overlappingArea > 0;\n}\nfunction getEdgeZIndex(edge, findNode, elevateEdgesOnSelect = false) {\n const hasZIndex = typeof edge.zIndex === \"number\";\n let z = hasZIndex ? edge.zIndex : 0;\n const source = findNode(edge.source);\n const target = findNode(edge.target);\n if (!source || !target) {\n return 0;\n }\n if (elevateEdgesOnSelect) {\n z = hasZIndex ? edge.zIndex : Math.max(source.computedPosition.z || 0, target.computedPosition.z || 0);\n }\n return z;\n}\nvar ErrorCode = /* @__PURE__ */ ((ErrorCode2) => {\n ErrorCode2[\"MISSING_STYLES\"] = \"MISSING_STYLES\";\n ErrorCode2[\"MISSING_VIEWPORT_DIMENSIONS\"] = \"MISSING_VIEWPORT_DIMENSIONS\";\n ErrorCode2[\"NODE_INVALID\"] = \"NODE_INVALID\";\n ErrorCode2[\"NODE_NOT_FOUND\"] = \"NODE_NOT_FOUND\";\n ErrorCode2[\"NODE_MISSING_PARENT\"] = \"NODE_MISSING_PARENT\";\n ErrorCode2[\"NODE_TYPE_MISSING\"] = \"NODE_TYPE_MISSING\";\n ErrorCode2[\"NODE_EXTENT_INVALID\"] = \"NODE_EXTENT_INVALID\";\n ErrorCode2[\"EDGE_INVALID\"] = \"EDGE_INVALID\";\n ErrorCode2[\"EDGE_NOT_FOUND\"] = \"EDGE_NOT_FOUND\";\n ErrorCode2[\"EDGE_SOURCE_MISSING\"] = \"EDGE_SOURCE_MISSING\";\n ErrorCode2[\"EDGE_TARGET_MISSING\"] = \"EDGE_TARGET_MISSING\";\n ErrorCode2[\"EDGE_TYPE_MISSING\"] = \"EDGE_TYPE_MISSING\";\n ErrorCode2[\"EDGE_SOURCE_TARGET_SAME\"] = \"EDGE_SOURCE_TARGET_SAME\";\n ErrorCode2[\"EDGE_SOURCE_TARGET_MISSING\"] = \"EDGE_SOURCE_TARGET_MISSING\";\n ErrorCode2[\"EDGE_ORPHANED\"] = \"EDGE_ORPHANED\";\n ErrorCode2[\"USEVUEFLOW_OPTIONS\"] = \"USEVUEFLOW_OPTIONS\";\n return ErrorCode2;\n})(ErrorCode || {});\nconst messages = {\n [\n \"MISSING_STYLES\"\n /* MISSING_STYLES */\n ]: () => `It seems that you haven't loaded the necessary styles. Please import '@vue-flow/core/dist/style.css' to ensure that the graph is rendered correctly`,\n [\n \"MISSING_VIEWPORT_DIMENSIONS\"\n /* MISSING_VIEWPORT_DIMENSIONS */\n ]: () => \"The Vue Flow parent container needs a width and a height to render the graph\",\n [\n \"NODE_INVALID\"\n /* NODE_INVALID */\n ]: (id2) => `Node is invalid\nNode: ${id2}`,\n [\n \"NODE_NOT_FOUND\"\n /* NODE_NOT_FOUND */\n ]: (id2) => `Node not found\nNode: ${id2}`,\n [\n \"NODE_MISSING_PARENT\"\n /* NODE_MISSING_PARENT */\n ]: (id2, parentId) => `Node is missing a parent\nNode: ${id2}\nParent: ${parentId}`,\n [\n \"NODE_TYPE_MISSING\"\n /* NODE_TYPE_MISSING */\n ]: (type) => `Node type is missing\nType: ${type}`,\n [\n \"NODE_EXTENT_INVALID\"\n /* NODE_EXTENT_INVALID */\n ]: (id2) => `Only child nodes can use a parent extent\nNode: ${id2}`,\n [\n \"EDGE_INVALID\"\n /* EDGE_INVALID */\n ]: (id2) => `An edge needs a source and a target\nEdge: ${id2}`,\n [\n \"EDGE_SOURCE_MISSING\"\n /* EDGE_SOURCE_MISSING */\n ]: (id2, source) => `Edge source is missing\nEdge: ${id2} \nSource: ${source}`,\n [\n \"EDGE_TARGET_MISSING\"\n /* EDGE_TARGET_MISSING */\n ]: (id2, target) => `Edge target is missing\nEdge: ${id2} \nTarget: ${target}`,\n [\n \"EDGE_TYPE_MISSING\"\n /* EDGE_TYPE_MISSING */\n ]: (type) => `Edge type is missing\nType: ${type}`,\n [\n \"EDGE_SOURCE_TARGET_SAME\"\n /* EDGE_SOURCE_TARGET_SAME */\n ]: (id2, source, target) => `Edge source and target are the same\nEdge: ${id2} \nSource: ${source} \nTarget: ${target}`,\n [\n \"EDGE_SOURCE_TARGET_MISSING\"\n /* EDGE_SOURCE_TARGET_MISSING */\n ]: (id2, source, target) => `Edge source or target is missing\nEdge: ${id2} \nSource: ${source} \nTarget: ${target}`,\n [\n \"EDGE_ORPHANED\"\n /* EDGE_ORPHANED */\n ]: (id2) => `Edge was orphaned (suddenly missing source or target) and has been removed\nEdge: ${id2}`,\n [\n \"EDGE_NOT_FOUND\"\n /* EDGE_NOT_FOUND */\n ]: (id2) => `Edge not found\nEdge: ${id2}`,\n // deprecation errors\n [\n \"USEVUEFLOW_OPTIONS\"\n /* USEVUEFLOW_OPTIONS */\n ]: () => `The options parameter is deprecated and will be removed in the next major version. Please use the id parameter instead`\n};\nclass VueFlowError extends Error {\n constructor(code, ...args) {\n var _a;\n super((_a = messages[code]) == null ? void 0 : _a.call(messages, ...args));\n this.name = \"VueFlowError\";\n this.code = code;\n this.args = args;\n }\n}\nfunction isErrorOfType(error, code) {\n return error.code === code;\n}\nfunction isMouseEvent(event) {\n return \"clientX\" in event;\n}\nfunction isUseDragEvent(event) {\n return \"sourceEvent\" in event;\n}\nfunction getEventPosition(event, bounds) {\n const isMouse = isMouseEvent(event);\n let evtX;\n let evtY;\n if (isMouse) {\n evtX = event.clientX;\n evtY = event.clientY;\n } else if (\"touches\" in event && event.touches.length > 0) {\n evtX = event.touches[0].clientX;\n evtY = event.touches[0].clientY;\n } else if (\"changedTouches\" in event && event.changedTouches.length > 0) {\n evtX = event.changedTouches[0].clientX;\n evtY = event.changedTouches[0].clientY;\n } else {\n evtX = 0;\n evtY = 0;\n }\n return {\n x: evtX - ((bounds == null ? void 0 : bounds.left) ?? 0),\n y: evtY - ((bounds == null ? void 0 : bounds.top) ?? 0)\n };\n}\nconst isMacOs = () => {\n var _a;\n return typeof navigator !== \"undefined\" && ((_a = navigator == null ? void 0 : navigator.userAgent) == null ? void 0 : _a.indexOf(\"Mac\")) >= 0;\n};\nfunction getNodeDimensions(node) {\n var _a, _b;\n return {\n width: ((_a = node.dimensions) == null ? void 0 : _a.width) ?? node.width ?? 0,\n height: ((_b = node.dimensions) == null ? void 0 : _b.height) ?? node.height ?? 0\n };\n}\nfunction snapPosition(position, snapGrid = [1, 1]) {\n return {\n x: snapGrid[0] * Math.round(position.x / snapGrid[0]),\n y: snapGrid[1] * Math.round(position.y / snapGrid[1])\n };\n}\nconst alwaysValid$1 = () => true;\nfunction resetRecentHandle(handleDomNode) {\n handleDomNode == null ? void 0 : handleDomNode.classList.remove(\"valid\", \"connecting\", \"vue-flow__handle-valid\", \"vue-flow__handle-connecting\");\n}\nfunction getNodesWithinDistance(position, nodeLookup, distance2) {\n const nodes = [];\n const rect = {\n x: position.x - distance2,\n y: position.y - distance2,\n width: distance2 * 2,\n height: distance2 * 2\n };\n for (const node of nodeLookup.values()) {\n if (getOverlappingArea(rect, nodeToRect(node)) > 0) {\n nodes.push(node);\n }\n }\n return nodes;\n}\nconst ADDITIONAL_DISTANCE = 250;\nfunction getClosestHandle(position, connectionRadius, nodeLookup, fromHandle) {\n var _a, _b;\n let closestHandles = [];\n let minDistance = Number.POSITIVE_INFINITY;\n const closeNodes = getNodesWithinDistance(position, nodeLookup, connectionRadius + ADDITIONAL_DISTANCE);\n for (const node of closeNodes) {\n const allHandles = [...((_a = node.handleBounds) == null ? void 0 : _a.source) ?? [], ...((_b = node.handleBounds) == null ? void 0 : _b.target) ?? []];\n for (const handle of allHandles) {\n if (fromHandle.nodeId === handle.nodeId && fromHandle.type === handle.type && fromHandle.id === handle.id) {\n continue;\n }\n const { x, y } = getHandlePosition(node, handle, handle.position, true);\n const distance2 = Math.sqrt((x - position.x) ** 2 + (y - position.y) ** 2);\n if (distance2 > connectionRadius) {\n continue;\n }\n if (distance2 < minDistance) {\n closestHandles = [{ ...handle, x, y }];\n minDistance = distance2;\n } else if (distance2 === minDistance) {\n closestHandles.push({ ...handle, x, y });\n }\n }\n }\n if (!closestHandles.length) {\n return null;\n }\n if (closestHandles.length > 1) {\n const oppositeHandleType = fromHandle.type === \"source\" ? \"target\" : \"source\";\n return closestHandles.find((handle) => handle.type === oppositeHandleType) ?? closestHandles[0];\n }\n return closestHandles[0];\n}\nfunction isValidHandle(event, {\n handle,\n connectionMode,\n fromNodeId,\n fromHandleId,\n fromType,\n doc,\n lib,\n flowId,\n isValidConnection = alwaysValid$1\n}, edges, nodes, findNode) {\n const isTarget = fromType === \"target\";\n const handleDomNode = handle ? doc.querySelector(`.${lib}-flow__handle[data-id=\"${flowId}-${handle == null ? void 0 : handle.nodeId}-${handle == null ? void 0 : handle.id}-${handle == null ? void 0 : handle.type}\"]`) : null;\n const { x, y } = getEventPosition(event);\n const handleBelow = doc.elementFromPoint(x, y);\n const handleToCheck = (handleBelow == null ? void 0 : handleBelow.classList.contains(`${lib}-flow__handle`)) ? handleBelow : handleDomNode;\n const result = {\n handleDomNode: handleToCheck,\n isValid: false,\n connection: null,\n toHandle: null\n };\n if (handleToCheck) {\n const handleType = getHandleType(void 0, handleToCheck);\n const handleNodeId = handleToCheck.getAttribute(\"data-nodeid\");\n const handleId = handleToCheck.getAttribute(\"data-handleid\");\n const connectable = handleToCheck.classList.contains(\"connectable\");\n const connectableEnd = handleToCheck.classList.contains(\"connectableend\");\n if (!handleNodeId || !handleType) {\n return result;\n }\n const connection = {\n source: isTarget ? handleNodeId : fromNodeId,\n sourceHandle: isTarget ? handleId : fromHandleId,\n target: isTarget ? fromNodeId : handleNodeId,\n targetHandle: isTarget ? fromHandleId : handleId\n };\n result.connection = connection;\n const isConnectable = connectable && connectableEnd;\n const isValid = isConnectable && (connectionMode === ConnectionMode.Strict ? isTarget && handleType === \"source\" || !isTarget && handleType === \"target\" : handleNodeId !== fromNodeId || handleId !== fromHandleId);\n result.isValid = isValid && isValidConnection(connection, {\n nodes,\n edges,\n sourceNode: findNode(fromNodeId),\n targetNode: findNode(handleNodeId)\n });\n result.toHandle = handle;\n }\n return result;\n}\nfunction getHandleType(edgeUpdaterType, handleDomNode) {\n if (edgeUpdaterType) {\n return edgeUpdaterType;\n } else if (handleDomNode == null ? void 0 : handleDomNode.classList.contains(\"target\")) {\n return \"target\";\n } else if (handleDomNode == null ? void 0 : handleDomNode.classList.contains(\"source\")) {\n return \"source\";\n }\n return null;\n}\nfunction getConnectionStatus(isInsideConnectionRadius, isHandleValid) {\n let connectionStatus = null;\n if (isHandleValid) {\n connectionStatus = \"valid\";\n } else if (isInsideConnectionRadius && !isHandleValid) {\n connectionStatus = \"invalid\";\n }\n return connectionStatus;\n}\nfunction isConnectionValid(isInsideConnectionRadius, isHandleValid) {\n let isValid = null;\n if (isHandleValid) {\n isValid = true;\n } else if (isInsideConnectionRadius && !isHandleValid) {\n isValid = false;\n }\n return isValid;\n}\nfunction getHandle(nodeId, handleType, handleId, nodeLookup, connectionMode, withAbsolutePosition = false) {\n var _a, _b, _c;\n const node = nodeLookup.get(nodeId);\n if (!node) {\n return null;\n }\n const handles = connectionMode === ConnectionMode.Strict ? (_a = node.handleBounds) == null ? void 0 : _a[handleType] : [...((_b = node.handleBounds) == null ? void 0 : _b.source) ?? [], ...((_c = node.handleBounds) == null ? void 0 : _c.target) ?? []];\n const handle = (handleId ? handles == null ? void 0 : handles.find((h2) => h2.id === handleId) : handles == null ? void 0 : handles[0]) ?? null;\n return handle && withAbsolutePosition ? { ...handle, ...getHandlePosition(node, handle, handle.position, true) } : handle;\n}\nconst oppositePosition = {\n [Position.Left]: Position.Right,\n [Position.Right]: Position.Left,\n [Position.Top]: Position.Bottom,\n [Position.Bottom]: Position.Top\n};\nconst productionEnvs = [\"production\", \"prod\"];\nfunction warn(message, ...args) {\n if (isDev()) {\n console.warn(`[Vue Flow]: ${message}`, ...args);\n }\n}\nfunction isDev() {\n return !productionEnvs.includes(process.env.NODE_ENV || \"\");\n}\nfunction getHandleBounds(type, nodeElement, nodeBounds, zoom2, nodeId) {\n const handles = nodeElement.querySelectorAll(`.vue-flow__handle.${type}`);\n if (!(handles == null ? void 0 : handles.length)) {\n return null;\n }\n return Array.from(handles).map((handle) => {\n const handleBounds = handle.getBoundingClientRect();\n return {\n id: handle.getAttribute(\"data-handleid\"),\n type,\n nodeId,\n position: handle.getAttribute(\"data-handlepos\"),\n x: (handleBounds.left - nodeBounds.left) / zoom2,\n y: (handleBounds.top - nodeBounds.top) / zoom2,\n ...getDimensions(handle)\n };\n });\n}\nfunction handleNodeClick(node, multiSelectionActive, addSelectedNodes, removeSelectedNodes, nodesSelectionActive, unselect = false, nodeEl) {\n nodesSelectionActive.value = false;\n if (!node.selected) {\n addSelectedNodes([node]);\n } else if (unselect || node.selected && multiSelectionActive) {\n removeSelectedNodes([node]);\n nextTick(() => {\n nodeEl.blur();\n });\n }\n}\nfunction isDef(val) {\n const unrefVal = unref(val);\n return typeof unrefVal !== \"undefined\";\n}\nfunction addEdgeToStore(edgeParams, edges, triggerError, defaultEdgeOptions) {\n if (!edgeParams || !edgeParams.source || !edgeParams.target) {\n triggerError(new VueFlowError(ErrorCode.EDGE_INVALID, (edgeParams == null ? void 0 : edgeParams.id) ?? `[ID UNKNOWN]`));\n return false;\n }\n let edge;\n if (isEdge(edgeParams)) {\n edge = edgeParams;\n } else {\n edge = {\n ...edgeParams,\n id: getEdgeId(edgeParams)\n };\n }\n edge = parseEdge(edge, void 0, defaultEdgeOptions);\n if (connectionExists(edge, edges)) {\n return false;\n }\n return edge;\n}\nfunction updateEdgeAction(edge, newConnection, prevEdge, shouldReplaceId, triggerError) {\n if (!newConnection.source || !newConnection.target) {\n triggerError(new VueFlowError(ErrorCode.EDGE_INVALID, edge.id));\n return false;\n }\n if (!prevEdge) {\n triggerError(new VueFlowError(ErrorCode.EDGE_NOT_FOUND, edge.id));\n return false;\n }\n const { id: id2, ...rest } = edge;\n return {\n ...rest,\n id: shouldReplaceId ? getEdgeId(newConnection) : id2,\n source: newConnection.source,\n target: newConnection.target,\n sourceHandle: newConnection.sourceHandle,\n targetHandle: newConnection.targetHandle\n };\n}\nfunction createGraphNodes(nodes, findNode, triggerError) {\n const parentNodes = {};\n const nextNodes = [];\n for (let i = 0; i < nodes.length; ++i) {\n const node = nodes[i];\n if (!isNode(node)) {\n triggerError(\n new VueFlowError(ErrorCode.NODE_INVALID, node == null ? void 0 : node.id) || `[ID UNKNOWN|INDEX ${i}]`\n );\n continue;\n }\n const parsed = parseNode(node, findNode(node.id), node.parentNode);\n if (node.parentNode) {\n parentNodes[node.parentNode] = true;\n }\n nextNodes[i] = parsed;\n }\n for (const node of nextNodes) {\n const parentNode = findNode(node.parentNode) || nextNodes.find((n) => n.id === node.parentNode);\n if (node.parentNode && !parentNode) {\n triggerError(new VueFlowError(ErrorCode.NODE_MISSING_PARENT, node.id, node.parentNode));\n }\n if (node.parentNode || parentNodes[node.id]) {\n if (parentNodes[node.id]) {\n node.isParent = true;\n }\n if (parentNode) {\n parentNode.isParent = true;\n }\n }\n }\n return nextNodes;\n}\nfunction addConnectionToLookup(type, connection, connectionKey, connectionLookup, nodeId, handleId) {\n let key = nodeId;\n const nodeMap = connectionLookup.get(key) || /* @__PURE__ */ new Map();\n connectionLookup.set(key, nodeMap.set(connectionKey, connection));\n key = `${nodeId}-${type}`;\n const typeMap = connectionLookup.get(key) || /* @__PURE__ */ new Map();\n connectionLookup.set(key, typeMap.set(connectionKey, connection));\n if (handleId) {\n key = `${nodeId}-${type}-${handleId}`;\n const handleMap = connectionLookup.get(key) || /* @__PURE__ */ new Map();\n connectionLookup.set(key, handleMap.set(connectionKey, connection));\n }\n}\nfunction updateConnectionLookup(connectionLookup, edgeLookup, edges) {\n connectionLookup.clear();\n for (const edge of edges) {\n const { source: sourceNode, target: targetNode, sourceHandle = null, targetHandle = null } = edge;\n const connection = { edgeId: edge.id, source: sourceNode, target: targetNode, sourceHandle, targetHandle };\n const sourceKey = `${sourceNode}-${sourceHandle}--${targetNode}-${targetHandle}`;\n const targetKey = `${targetNode}-${targetHandle}--${sourceNode}-${sourceHandle}`;\n addConnectionToLookup(\"source\", connection, targetKey, connectionLookup, sourceNode, sourceHandle);\n addConnectionToLookup(\"target\", connection, sourceKey, connectionLookup, targetNode, targetHandle);\n }\n}\nfunction handleConnectionChange(a, b, cb) {\n if (!cb) {\n return;\n }\n const diff = [];\n for (const key of a.keys()) {\n if (!b.has(key)) {\n diff.push(a.get(key));\n }\n }\n if (diff.length) {\n cb(diff);\n }\n}\nfunction areConnectionMapsEqual(a, b) {\n if (!a && !b) {\n return true;\n }\n if (!a || !b || a.size !== b.size) {\n return false;\n }\n if (!a.size && !b.size) {\n return true;\n }\n for (const key of a.keys()) {\n if (!b.has(key)) {\n return false;\n }\n }\n return true;\n}\nfunction areSetsEqual(a, b) {\n if (a.size !== b.size) {\n return false;\n }\n for (const item of a) {\n if (!b.has(item)) {\n return false;\n }\n }\n return true;\n}\nfunction createGraphEdges(nextEdges, isValidConnection, findNode, findEdge, onError, defaultEdgeOptions, nodes, edges) {\n const validEdges = [];\n for (const edgeOrConnection of nextEdges) {\n const edge = isEdge(edgeOrConnection) ? edgeOrConnection : addEdgeToStore(edgeOrConnection, edges, onError, defaultEdgeOptions);\n if (!edge) {\n continue;\n }\n const sourceNode = findNode(edge.source);\n const targetNode = findNode(edge.target);\n if (!sourceNode || !targetNode) {\n onError(new VueFlowError(ErrorCode.EDGE_SOURCE_TARGET_MISSING, edge.id, edge.source, edge.target));\n continue;\n }\n if (!sourceNode) {\n onError(new VueFlowError(ErrorCode.EDGE_SOURCE_MISSING, edge.id, edge.source));\n continue;\n }\n if (!targetNode) {\n onError(new VueFlowError(ErrorCode.EDGE_TARGET_MISSING, edge.id, edge.target));\n continue;\n }\n if (isValidConnection) {\n const isValid = isValidConnection(edge, {\n edges,\n nodes,\n sourceNode,\n targetNode\n });\n if (!isValid) {\n onError(new VueFlowError(ErrorCode.EDGE_INVALID, edge.id));\n continue;\n }\n }\n const existingEdge = findEdge(edge.id);\n validEdges.push({\n ...parseEdge(edge, existingEdge, defaultEdgeOptions),\n sourceNode,\n targetNode\n });\n }\n return validEdges;\n}\nconst VueFlow = Symbol(\"vueFlow\");\nconst NodeId = Symbol(\"nodeId\");\nconst NodeRef = Symbol(\"nodeRef\");\nconst EdgeId = Symbol(\"edgeId\");\nconst EdgeRef = Symbol(\"edgeRef\");\nconst Slots = Symbol(\"slots\");\nfunction useDrag(params) {\n const {\n vueFlowRef,\n snapToGrid,\n snapGrid,\n noDragClassName,\n nodes,\n nodeExtent,\n nodeDragThreshold,\n viewport,\n autoPanOnNodeDrag,\n autoPanSpeed,\n nodesDraggable,\n panBy,\n findNode,\n multiSelectionActive,\n nodesSelectionActive,\n selectNodesOnDrag,\n removeSelectedElements,\n addSelectedNodes,\n updateNodePositions,\n emits\n } = useVueFlow();\n const { onStart, onDrag, onStop, onClick, el, disabled, id: id2, selectable, dragHandle } = params;\n const dragging = shallowRef(false);\n let dragItems = [];\n let dragHandler;\n let containerBounds = null;\n let lastPos = { x: void 0, y: void 0 };\n let mousePosition = { x: 0, y: 0 };\n let dragEvent = null;\n let dragStarted = false;\n let autoPanId = 0;\n let autoPanStarted = false;\n const getPointerPosition = useGetPointerPosition();\n const updateNodes = ({ x, y }) => {\n lastPos = { x, y };\n let hasChange = false;\n dragItems = dragItems.map((n) => {\n const nextPosition = { x: x - n.distance.x, y: y - n.distance.y };\n const { computedPosition } = calcNextPosition(\n n,\n snapToGrid.value ? snapPosition(nextPosition, snapGrid.value) : nextPosition,\n emits.error,\n nodeExtent.value,\n n.parentNode ? findNode(n.parentNode) : void 0\n );\n hasChange = hasChange || n.position.x !== computedPosition.x || n.position.y !== computedPosition.y;\n n.position = computedPosition;\n return n;\n });\n if (!hasChange) {\n return;\n }\n updateNodePositions(dragItems, true, true);\n dragging.value = true;\n if (dragEvent) {\n const [currentNode, nodes2] = getEventHandlerParams({\n id: id2,\n dragItems,\n findNode\n });\n onDrag({ event: dragEvent, node: currentNode, nodes: nodes2 });\n }\n };\n const autoPan = () => {\n if (!containerBounds) {\n return;\n }\n const [xMovement, yMovement] = calcAutoPan(mousePosition, containerBounds, autoPanSpeed.value);\n if (xMovement !== 0 || yMovement !== 0) {\n const nextPos = {\n x: (lastPos.x ?? 0) - xMovement / viewport.value.zoom,\n y: (lastPos.y ?? 0) - yMovement / viewport.value.zoom\n };\n if (panBy({ x: xMovement, y: yMovement })) {\n updateNodes(nextPos);\n }\n }\n autoPanId = requestAnimationFrame(autoPan);\n };\n const startDrag = (event, nodeEl) => {\n dragStarted = true;\n const node = findNode(id2);\n if (!selectNodesOnDrag.value && !multiSelectionActive.value && node) {\n if (!node.selected) {\n removeSelectedElements();\n }\n }\n if (node && toValue$1(selectable) && selectNodesOnDrag.value) {\n handleNodeClick(\n node,\n multiSelectionActive.value,\n addSelectedNodes,\n removeSelectedElements,\n nodesSelectionActive,\n false,\n nodeEl\n );\n }\n const pointerPos = getPointerPosition(event.sourceEvent);\n lastPos = pointerPos;\n dragItems = getDragItems(nodes.value, nodesDraggable.value, pointerPos, findNode, id2);\n if (dragItems.length) {\n const [currentNode, nodes2] = getEventHandlerParams({\n id: id2,\n dragItems,\n findNode\n });\n onStart({ event: event.sourceEvent, node: currentNode, nodes: nodes2 });\n }\n };\n const eventStart = (event, nodeEl) => {\n var _a;\n if (event.sourceEvent.type === \"touchmove\" && event.sourceEvent.touches.length > 1) {\n return;\n }\n if (nodeDragThreshold.value === 0) {\n startDrag(event, nodeEl);\n }\n lastPos = getPointerPosition(event.sourceEvent);\n containerBounds = ((_a = vueFlowRef.value) == null ? void 0 : _a.getBoundingClientRect()) || null;\n mousePosition = getEventPosition(event.sourceEvent, containerBounds);\n };\n const eventDrag = (event, nodeEl) => {\n const pointerPos = getPointerPosition(event.sourceEvent);\n if (!autoPanStarted && dragStarted && autoPanOnNodeDrag.value) {\n autoPanStarted = true;\n autoPan();\n }\n if (!dragStarted) {\n const x = pointerPos.xSnapped - (lastPos.x ?? 0);\n const y = pointerPos.ySnapped - (lastPos.y ?? 0);\n const distance2 = Math.sqrt(x * x + y * y);\n if (distance2 > nodeDragThreshold.value) {\n startDrag(event, nodeEl);\n }\n }\n if ((lastPos.x !== pointerPos.xSnapped || lastPos.y !== pointerPos.ySnapped) && dragItems.length && dragStarted) {\n dragEvent = event.sourceEvent;\n mousePosition = getEventPosition(event.sourceEvent, containerBounds);\n updateNodes(pointerPos);\n }\n };\n const eventEnd = (event) => {\n let isClick = false;\n if (!dragStarted && !dragging.value && !multiSelectionActive.value) {\n const evt = event.sourceEvent;\n const pointerPos = getPointerPosition(evt);\n const x = pointerPos.xSnapped - (lastPos.x ?? 0);\n const y = pointerPos.ySnapped - (lastPos.y ?? 0);\n const distance2 = Math.sqrt(x * x + y * y);\n if (distance2 !== 0 && distance2 <= nodeDragThreshold.value) {\n onClick == null ? void 0 : onClick(evt);\n isClick = true;\n }\n }\n if (dragItems.length && !isClick) {\n updateNodePositions(dragItems, false, false);\n const [currentNode, nodes2] = getEventHandlerParams({\n id: id2,\n dragItems,\n findNode\n });\n onStop({ event: event.sourceEvent, node: currentNode, nodes: nodes2 });\n }\n dragItems = [];\n dragging.value = false;\n autoPanStarted = false;\n dragStarted = false;\n lastPos = { x: void 0, y: void 0 };\n cancelAnimationFrame(autoPanId);\n };\n watch([() => toValue$1(disabled), el], ([isDisabled, nodeEl], _, onCleanup) => {\n if (nodeEl) {\n const selection2 = select(nodeEl);\n if (!isDisabled) {\n dragHandler = drag().on(\"start\", (event) => eventStart(event, nodeEl)).on(\"drag\", (event) => eventDrag(event, nodeEl)).on(\"end\", (event) => eventEnd(event)).filter((event) => {\n const target = event.target;\n const unrefDragHandle = toValue$1(dragHandle);\n return !event.button && (!noDragClassName.value || !hasSelector(target, `.${noDragClassName.value}`, nodeEl) && (!unrefDragHandle || hasSelector(target, unrefDragHandle, nodeEl)));\n });\n selection2.call(dragHandler);\n }\n onCleanup(() => {\n selection2.on(\".drag\", null);\n if (dragHandler) {\n dragHandler.on(\"start\", null);\n dragHandler.on(\"drag\", null);\n dragHandler.on(\"end\", null);\n }\n });\n }\n });\n return dragging;\n}\nfunction useEdge(id2) {\n const edgeId = id2 ?? inject(EdgeId, \"\");\n const edgeEl = inject(EdgeRef, ref(null));\n const { findEdge, emits } = useVueFlow();\n const edge = findEdge(edgeId);\n if (!edge) {\n emits.error(new VueFlowError(ErrorCode.EDGE_NOT_FOUND, edgeId));\n }\n return {\n id: edgeId,\n edge,\n edgeEl\n };\n}\nfunction createEdgeHooks() {\n return {\n doubleClick: createExtendedEventHook(),\n click: createExtendedEventHook(),\n mouseEnter: createExtendedEventHook(),\n mouseMove: createExtendedEventHook(),\n mouseLeave: createExtendedEventHook(),\n contextMenu: createExtendedEventHook(),\n updateStart: createExtendedEventHook(),\n update: createExtendedEventHook(),\n updateEnd: createExtendedEventHook()\n };\n}\nfunction useEdgeHooks(edge, emits) {\n const edgeHooks = createEdgeHooks();\n edgeHooks.doubleClick.on((event) => {\n var _a, _b;\n emits.edgeDoubleClick(event);\n (_b = (_a = edge.events) == null ? void 0 : _a.doubleClick) == null ? void 0 : _b.call(_a, event);\n });\n edgeHooks.click.on((event) => {\n var _a, _b;\n emits.edgeClick(event);\n (_b = (_a = edge.events) == null ? void 0 : _a.click) == null ? void 0 : _b.call(_a, event);\n });\n edgeHooks.mouseEnter.on((event) => {\n var _a, _b;\n emits.edgeMouseEnter(event);\n (_b = (_a = edge.events) == null ? void 0 : _a.mouseEnter) == null ? void 0 : _b.call(_a, event);\n });\n edgeHooks.mouseMove.on((event) => {\n var _a, _b;\n emits.edgeMouseMove(event);\n (_b = (_a = edge.events) == null ? void 0 : _a.mouseMove) == null ? void 0 : _b.call(_a, event);\n });\n edgeHooks.mouseLeave.on((event) => {\n var _a, _b;\n emits.edgeMouseLeave(event);\n (_b = (_a = edge.events) == null ? void 0 : _a.mouseLeave) == null ? void 0 : _b.call(_a, event);\n });\n edgeHooks.contextMenu.on((event) => {\n var _a, _b;\n emits.edgeContextMenu(event);\n (_b = (_a = edge.events) == null ? void 0 : _a.contextMenu) == null ? void 0 : _b.call(_a, event);\n });\n edgeHooks.updateStart.on((event) => {\n var _a, _b;\n emits.edgeUpdateStart(event);\n (_b = (_a = edge.events) == null ? void 0 : _a.updateStart) == null ? void 0 : _b.call(_a, event);\n });\n edgeHooks.update.on((event) => {\n var _a, _b;\n emits.edgeUpdate(event);\n (_b = (_a = edge.events) == null ? void 0 : _a.update) == null ? void 0 : _b.call(_a, event);\n });\n edgeHooks.updateEnd.on((event) => {\n var _a, _b;\n emits.edgeUpdateEnd(event);\n (_b = (_a = edge.events) == null ? void 0 : _a.updateEnd) == null ? void 0 : _b.call(_a, event);\n });\n return Object.entries(edgeHooks).reduce(\n (hooks, [key, value]) => {\n hooks.emit[key] = value.trigger;\n hooks.on[key] = value.on;\n return hooks;\n },\n { emit: {}, on: {} }\n );\n}\nfunction useGetPointerPosition() {\n const { viewport, snapGrid, snapToGrid, vueFlowRef } = useVueFlow();\n return (event) => {\n var _a;\n const containerBounds = ((_a = vueFlowRef.value) == null ? void 0 : _a.getBoundingClientRect()) ?? { left: 0, top: 0 };\n const evt = isUseDragEvent(event) ? event.sourceEvent : event;\n const { x, y } = getEventPosition(evt, containerBounds);\n const pointerPos = pointToRendererPoint({ x, y }, viewport.value);\n const { x: xSnapped, y: ySnapped } = snapToGrid.value ? snapPosition(pointerPos, snapGrid.value) : pointerPos;\n return {\n xSnapped,\n ySnapped,\n ...pointerPos\n };\n };\n}\nfunction alwaysValid() {\n return true;\n}\nfunction useHandle({\n handleId,\n nodeId,\n type,\n isValidConnection,\n edgeUpdaterType,\n onEdgeUpdate,\n onEdgeUpdateEnd\n}) {\n const {\n id: flowId,\n vueFlowRef,\n connectionMode,\n connectionRadius,\n connectOnClick,\n connectionClickStartHandle,\n nodesConnectable,\n autoPanOnConnect,\n autoPanSpeed,\n findNode,\n panBy,\n startConnection,\n updateConnection,\n endConnection,\n emits,\n viewport,\n edges,\n nodes,\n isValidConnection: isValidConnectionProp,\n nodeLookup\n } = useVueFlow();\n let connection = null;\n let isValid = false;\n let handleDomNode = null;\n function handlePointerDown(event) {\n var _a;\n const isTarget = toValue$1(type) === \"target\";\n const isMouseTriggered = isMouseEvent(event);\n const doc = getHostForElement(event.target);\n if (isMouseTriggered && event.button === 0 || !isMouseTriggered) {\n let onPointerMove = function(event2) {\n connectionPosition = getEventPosition(event2, containerBounds);\n closestHandle = getClosestHandle(\n pointToRendererPoint(connectionPosition, viewport.value, false, [1, 1]),\n connectionRadius.value,\n nodeLookup.value,\n fromHandle\n );\n if (!autoPanStarted) {\n autoPan();\n autoPanStarted = true;\n }\n const result = isValidHandle(\n event2,\n {\n handle: closestHandle,\n connectionMode: connectionMode.value,\n fromNodeId: toValue$1(nodeId),\n fromHandleId: toValue$1(handleId),\n fromType: isTarget ? \"target\" : \"source\",\n isValidConnection: isValidConnectionHandler,\n doc,\n lib: \"vue\",\n flowId,\n nodeLookup: nodeLookup.value\n },\n edges.value,\n nodes.value,\n findNode\n );\n handleDomNode = result.handleDomNode;\n connection = result.connection;\n isValid = isConnectionValid(!!closestHandle, result.isValid);\n const newConnection2 = {\n // from stays the same\n ...previousConnection,\n isValid,\n to: result.toHandle && isValid ? rendererPointToPoint({ x: result.toHandle.x, y: result.toHandle.y }, viewport.value) : connectionPosition,\n toHandle: result.toHandle,\n toPosition: isValid && result.toHandle ? result.toHandle.position : oppositePosition[fromHandle.position],\n toNode: result.toHandle ? nodeLookup.value.get(result.toHandle.nodeId) : null\n };\n if (isValid && closestHandle && (previousConnection == null ? void 0 : previousConnection.toHandle) && newConnection2.toHandle && previousConnection.toHandle.type === newConnection2.toHandle.type && previousConnection.toHandle.nodeId === newConnection2.toHandle.nodeId && previousConnection.toHandle.id === newConnection2.toHandle.id && previousConnection.to.x === newConnection2.to.x && previousConnection.to.y === newConnection2.to.y) {\n return;\n }\n updateConnection(\n closestHandle && isValid ? rendererPointToPoint(\n {\n x: closestHandle.x,\n y: closestHandle.y\n },\n viewport.value\n ) : connectionPosition,\n result.toHandle,\n getConnectionStatus(!!closestHandle, isValid)\n );\n previousConnection = newConnection2;\n if (!closestHandle && !isValid && !handleDomNode) {\n return resetRecentHandle(prevActiveHandle);\n }\n if (connection && connection.source !== connection.target && handleDomNode) {\n resetRecentHandle(prevActiveHandle);\n prevActiveHandle = handleDomNode;\n handleDomNode.classList.add(\"connecting\", \"vue-flow__handle-connecting\");\n handleDomNode.classList.toggle(\"valid\", !!isValid);\n handleDomNode.classList.toggle(\"vue-flow__handle-valid\", !!isValid);\n }\n }, onPointerUp = function(event2) {\n if ((closestHandle || handleDomNode) && connection && isValid) {\n if (!onEdgeUpdate) {\n emits.connect(connection);\n } else {\n onEdgeUpdate(event2, connection);\n }\n }\n emits.connectEnd(event2);\n if (edgeUpdaterType) {\n onEdgeUpdateEnd == null ? void 0 : onEdgeUpdateEnd(event2);\n }\n resetRecentHandle(prevActiveHandle);\n cancelAnimationFrame(autoPanId);\n endConnection(event2);\n autoPanStarted = false;\n isValid = false;\n connection = null;\n handleDomNode = null;\n doc.removeEventListener(\"mousemove\", onPointerMove);\n doc.removeEventListener(\"mouseup\", onPointerUp);\n doc.removeEventListener(\"touchmove\", onPointerMove);\n doc.removeEventListener(\"touchend\", onPointerUp);\n };\n const node = findNode(toValue$1(nodeId));\n let isValidConnectionHandler = toValue$1(isValidConnection) || isValidConnectionProp.value || alwaysValid;\n if (!isValidConnectionHandler && node) {\n isValidConnectionHandler = (!isTarget ? node.isValidTargetPos : node.isValidSourcePos) || alwaysValid;\n }\n let closestHandle;\n let autoPanId = 0;\n const { x, y } = getEventPosition(event);\n const clickedHandle = doc == null ? void 0 : doc.elementFromPoint(x, y);\n const handleType = getHandleType(toValue$1(edgeUpdaterType), clickedHandle);\n const containerBounds = (_a = vueFlowRef.value) == null ? void 0 : _a.getBoundingClientRect();\n if (!containerBounds || !handleType) {\n return;\n }\n const fromHandleInternal = getHandle(toValue$1(nodeId), handleType, toValue$1(handleId), nodeLookup.value, connectionMode.value);\n if (!fromHandleInternal) {\n return;\n }\n let prevActiveHandle;\n let connectionPosition = getEventPosition(event, containerBounds);\n let autoPanStarted = false;\n const autoPan = () => {\n if (!autoPanOnConnect.value) {\n return;\n }\n const [xMovement, yMovement] = calcAutoPan(connectionPosition, containerBounds, autoPanSpeed.value);\n panBy({ x: xMovement, y: yMovement });\n autoPanId = requestAnimationFrame(autoPan);\n };\n const fromHandle = {\n ...fromHandleInternal,\n nodeId: toValue$1(nodeId),\n type: handleType,\n position: fromHandleInternal.position\n };\n const fromNodeInternal = nodeLookup.value.get(toValue$1(nodeId));\n const from = getHandlePosition(fromNodeInternal, fromHandle, Position.Left, true);\n const newConnection = {\n inProgress: true,\n isValid: null,\n from,\n fromHandle,\n fromPosition: fromHandle.position,\n fromNode: fromNodeInternal,\n to: connectionPosition,\n toHandle: null,\n toPosition: oppositePosition[fromHandle.position],\n toNode: null\n };\n startConnection(\n {\n nodeId: toValue$1(nodeId),\n id: toValue$1(handleId),\n type: handleType,\n position: (clickedHandle == null ? void 0 : clickedHandle.getAttribute(\"data-handlepos\")) || Position.Top,\n ...connectionPosition\n },\n {\n x: x - containerBounds.left,\n y: y - containerBounds.top\n }\n );\n emits.connectStart({ event, nodeId: toValue$1(nodeId), handleId: toValue$1(handleId), handleType });\n let previousConnection = newConnection;\n doc.addEventListener(\"mousemove\", onPointerMove);\n doc.addEventListener(\"mouseup\", onPointerUp);\n doc.addEventListener(\"touchmove\", onPointerMove);\n doc.addEventListener(\"touchend\", onPointerUp);\n }\n }\n function handleClick(event) {\n var _a, _b;\n if (!connectOnClick.value) {\n return;\n }\n const isTarget = toValue$1(type) === \"target\";\n if (!connectionClickStartHandle.value) {\n emits.clickConnectStart({ event, nodeId: toValue$1(nodeId), handleId: toValue$1(handleId) });\n startConnection(\n {\n nodeId: toValue$1(nodeId),\n type: toValue$1(type),\n id: toValue$1(handleId),\n position: Position.Top,\n ...getEventPosition(event)\n },\n void 0,\n true\n );\n return;\n }\n let isValidConnectionHandler = toValue$1(isValidConnection) || isValidConnectionProp.value || alwaysValid;\n const node = findNode(toValue$1(nodeId));\n if (!isValidConnectionHandler && node) {\n isValidConnectionHandler = (!isTarget ? node.isValidTargetPos : node.isValidSourcePos) || alwaysValid;\n }\n if (node && (typeof node.connectable === \"undefined\" ? nodesConnectable.value : node.connectable) === false) {\n return;\n }\n const doc = getHostForElement(event.target);\n const result = isValidHandle(\n event,\n {\n handle: {\n nodeId: toValue$1(nodeId),\n id: toValue$1(handleId),\n type: toValue$1(type),\n position: Position.Top,\n ...getEventPosition(event)\n },\n connectionMode: connectionMode.value,\n fromNodeId: connectionClickStartHandle.value.nodeId,\n fromHandleId: connectionClickStartHandle.value.id ?? null,\n fromType: connectionClickStartHandle.value.type,\n isValidConnection: isValidConnectionHandler,\n doc,\n lib: \"vue\",\n flowId,\n nodeLookup: nodeLookup.value\n },\n edges.value,\n nodes.value,\n findNode\n );\n const isOwnHandle = ((_a = result.connection) == null ? void 0 : _a.source) === ((_b = result.connection) == null ? void 0 : _b.target);\n if (result.isValid && result.connection && !isOwnHandle) {\n emits.connect(result.connection);\n }\n emits.clickConnectEnd(event);\n endConnection(event, true);\n }\n return {\n handlePointerDown,\n handleClick\n };\n}\nfunction useNodeId() {\n return inject(NodeId, \"\");\n}\nfunction useNode(id2) {\n const nodeId = id2 ?? useNodeId() ?? \"\";\n const nodeEl = inject(NodeRef, ref(null));\n const { findNode, edges, emits } = useVueFlow();\n const node = findNode(nodeId);\n if (!node) {\n emits.error(new VueFlowError(ErrorCode.NODE_NOT_FOUND, nodeId));\n }\n return {\n id: nodeId,\n nodeEl,\n node,\n parentNode: computed(() => findNode(node.parentNode)),\n connectedEdges: computed(() => getConnectedEdges([node], edges.value))\n };\n}\nfunction createNodeHooks() {\n return {\n doubleClick: createExtendedEventHook(),\n click: createExtendedEventHook(),\n mouseEnter: createExtendedEventHook(),\n mouseMove: createExtendedEventHook(),\n mouseLeave: createExtendedEventHook(),\n contextMenu: createExtendedEventHook(),\n dragStart: createExtendedEventHook(),\n drag: createExtendedEventHook(),\n dragStop: createExtendedEventHook()\n };\n}\nfunction useNodeHooks(node, emits) {\n const nodeHooks = createNodeHooks();\n nodeHooks.doubleClick.on((event) => {\n var _a, _b;\n emits.nodeDoubleClick(event);\n (_b = (_a = node.events) == null ? void 0 : _a.doubleClick) == null ? void 0 : _b.call(_a, event);\n });\n nodeHooks.click.on((event) => {\n var _a, _b;\n emits.nodeClick(event);\n (_b = (_a = node.events) == null ? void 0 : _a.click) == null ? void 0 : _b.call(_a, event);\n });\n nodeHooks.mouseEnter.on((event) => {\n var _a, _b;\n emits.nodeMouseEnter(event);\n (_b = (_a = node.events) == null ? void 0 : _a.mouseEnter) == null ? void 0 : _b.call(_a, event);\n });\n nodeHooks.mouseMove.on((event) => {\n var _a, _b;\n emits.nodeMouseMove(event);\n (_b = (_a = node.events) == null ? void 0 : _a.mouseMove) == null ? void 0 : _b.call(_a, event);\n });\n nodeHooks.mouseLeave.on((event) => {\n var _a, _b;\n emits.nodeMouseLeave(event);\n (_b = (_a = node.events) == null ? void 0 : _a.mouseLeave) == null ? void 0 : _b.call(_a, event);\n });\n nodeHooks.contextMenu.on((event) => {\n var _a, _b;\n emits.nodeContextMenu(event);\n (_b = (_a = node.events) == null ? void 0 : _a.contextMenu) == null ? void 0 : _b.call(_a, event);\n });\n nodeHooks.dragStart.on((event) => {\n var _a, _b;\n emits.nodeDragStart(event);\n (_b = (_a = node.events) == null ? void 0 : _a.dragStart) == null ? void 0 : _b.call(_a, event);\n });\n nodeHooks.drag.on((event) => {\n var _a, _b;\n emits.nodeDrag(event);\n (_b = (_a = node.events) == null ? void 0 : _a.drag) == null ? void 0 : _b.call(_a, event);\n });\n nodeHooks.dragStop.on((event) => {\n var _a, _b;\n emits.nodeDragStop(event);\n (_b = (_a = node.events) == null ? void 0 : _a.dragStop) == null ? void 0 : _b.call(_a, event);\n });\n return Object.entries(nodeHooks).reduce(\n (hooks, [key, value]) => {\n hooks.emit[key] = value.trigger;\n hooks.on[key] = value.on;\n return hooks;\n },\n { emit: {}, on: {} }\n );\n}\nfunction useUpdateNodePositions() {\n const { getSelectedNodes, nodeExtent, updateNodePositions, findNode, snapGrid, snapToGrid, nodesDraggable, emits } = useVueFlow();\n return (positionDiff, isShiftPressed = false) => {\n const xVelo = snapToGrid.value ? snapGrid.value[0] : 5;\n const yVelo = snapToGrid.value ? snapGrid.value[1] : 5;\n const factor = isShiftPressed ? 4 : 1;\n const positionDiffX = positionDiff.x * xVelo * factor;\n const positionDiffY = positionDiff.y * yVelo * factor;\n const nodeUpdates = [];\n for (const node of getSelectedNodes.value) {\n if (node.draggable || nodesDraggable && typeof node.draggable === \"undefined\") {\n const nextPosition = { x: node.computedPosition.x + positionDiffX, y: node.computedPosition.y + positionDiffY };\n const { computedPosition } = calcNextPosition(\n node,\n nextPosition,\n emits.error,\n nodeExtent.value,\n node.parentNode ? findNode(node.parentNode) : void 0\n );\n nodeUpdates.push({\n id: node.id,\n position: computedPosition,\n from: node.position,\n distance: { x: positionDiff.x, y: positionDiff.y },\n dimensions: node.dimensions\n });\n }\n }\n updateNodePositions(nodeUpdates, true, false);\n };\n}\nconst DEFAULT_PADDING = 0.1;\nconst defaultEase = (t) => ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\nfunction noop() {\n warn(\"Viewport not initialized yet.\");\n return Promise.resolve(false);\n}\nconst initialViewportHelper = {\n zoomIn: noop,\n zoomOut: noop,\n zoomTo: noop,\n fitView: noop,\n setCenter: noop,\n fitBounds: noop,\n project: (position) => position,\n screenToFlowCoordinate: (position) => position,\n flowToScreenCoordinate: (position) => position,\n setViewport: noop,\n setTransform: noop,\n getViewport: () => ({ x: 0, y: 0, zoom: 1 }),\n getTransform: () => ({ x: 0, y: 0, zoom: 1 }),\n viewportInitialized: false\n};\nfunction useViewportHelper(state) {\n function zoom2(scale, transitionOptions) {\n return new Promise((resolve) => {\n if (state.d3Selection && state.d3Zoom) {\n state.d3Zoom.interpolate((transitionOptions == null ? void 0 : transitionOptions.interpolate) === \"linear\" ? interpolate$1 : interpolateZoom).scaleBy(\n getD3Transition(state.d3Selection, transitionOptions == null ? void 0 : transitionOptions.duration, transitionOptions == null ? void 0 : transitionOptions.ease, () => {\n resolve(true);\n }),\n scale\n );\n } else {\n resolve(false);\n }\n });\n }\n function transformViewport(x, y, zoom22, transitionOptions) {\n return new Promise((resolve) => {\n var _a;\n const { x: clampedX, y: clampedY } = clampPosition({ x: -x, y: -y }, state.translateExtent);\n const nextTransform = identity.translate(-clampedX, -clampedY).scale(zoom22);\n if (state.d3Selection && state.d3Zoom) {\n (_a = state.d3Zoom) == null ? void 0 : _a.interpolate((transitionOptions == null ? void 0 : transitionOptions.interpolate) === \"linear\" ? interpolate$1 : interpolateZoom).transform(\n getD3Transition(state.d3Selection, transitionOptions == null ? void 0 : transitionOptions.duration, transitionOptions == null ? void 0 : transitionOptions.ease, () => {\n resolve(true);\n }),\n nextTransform\n );\n } else {\n resolve(false);\n }\n });\n }\n return computed(() => {\n const isInitialized = state.d3Zoom && state.d3Selection && state.dimensions.width && state.dimensions.height;\n if (!isInitialized) {\n return initialViewportHelper;\n }\n return {\n viewportInitialized: true,\n // todo: allow passing scale as option\n zoomIn: (options) => {\n return zoom2(1.2, options);\n },\n zoomOut: (options) => {\n return zoom2(1 / 1.2, options);\n },\n zoomTo: (zoomLevel, options) => {\n return new Promise((resolve) => {\n if (state.d3Selection && state.d3Zoom) {\n state.d3Zoom.interpolate((options == null ? void 0 : options.interpolate) === \"linear\" ? interpolate$1 : interpolateZoom).scaleTo(\n getD3Transition(state.d3Selection, options == null ? void 0 : options.duration, options == null ? void 0 : options.ease, () => {\n resolve(true);\n }),\n zoomLevel\n );\n } else {\n resolve(false);\n }\n });\n },\n setViewport: (transform, options) => {\n return transformViewport(transform.x, transform.y, transform.zoom, options);\n },\n setTransform: (transform, options) => {\n return transformViewport(transform.x, transform.y, transform.zoom, options);\n },\n getViewport: () => ({\n x: state.viewport.x,\n y: state.viewport.y,\n zoom: state.viewport.zoom\n }),\n getTransform: () => {\n return {\n x: state.viewport.x,\n y: state.viewport.y,\n zoom: state.viewport.zoom\n };\n },\n fitView: (options = {\n padding: DEFAULT_PADDING,\n includeHiddenNodes: false,\n duration: 0\n }) => {\n var _a, _b;\n const nodesToFit = [];\n for (const node of state.nodes) {\n const isVisible = node.dimensions.width && node.dimensions.height && ((options == null ? void 0 : options.includeHiddenNodes) || !node.hidden);\n if (isVisible) {\n if (!((_a = options.nodes) == null ? void 0 : _a.length) || ((_b = options.nodes) == null ? void 0 : _b.length) && options.nodes.includes(node.id)) {\n nodesToFit.push(node);\n }\n }\n }\n if (!nodesToFit.length) {\n return Promise.resolve(false);\n }\n const bounds = getRectOfNodes(nodesToFit);\n const { x, y, zoom: zoom22 } = getTransformForBounds(\n bounds,\n state.dimensions.width,\n state.dimensions.height,\n options.minZoom ?? state.minZoom,\n options.maxZoom ?? state.maxZoom,\n options.padding ?? DEFAULT_PADDING,\n options.offset\n );\n return transformViewport(x, y, zoom22, options);\n },\n setCenter: (x, y, options) => {\n const nextZoom = typeof (options == null ? void 0 : options.zoom) !== \"undefined\" ? options.zoom : state.maxZoom;\n const centerX = state.dimensions.width / 2 - x * nextZoom;\n const centerY = state.dimensions.height / 2 - y * nextZoom;\n return transformViewport(centerX, centerY, nextZoom, options);\n },\n fitBounds: (bounds, options = { padding: DEFAULT_PADDING }) => {\n const { x, y, zoom: zoom22 } = getTransformForBounds(\n bounds,\n state.dimensions.width,\n state.dimensions.height,\n state.minZoom,\n state.maxZoom,\n options.padding\n );\n return transformViewport(x, y, zoom22, options);\n },\n project: (position) => pointToRendererPoint(position, state.viewport, state.snapToGrid, state.snapGrid),\n screenToFlowCoordinate: (position) => {\n if (state.vueFlowRef) {\n const { x: domX, y: domY } = state.vueFlowRef.getBoundingClientRect();\n const correctedPosition = {\n x: position.x - domX,\n y: position.y - domY\n };\n return pointToRendererPoint(correctedPosition, state.viewport, state.snapToGrid, state.snapGrid);\n }\n return { x: 0, y: 0 };\n },\n flowToScreenCoordinate: (position) => {\n if (state.vueFlowRef) {\n const { x: domX, y: domY } = state.vueFlowRef.getBoundingClientRect();\n const correctedPosition = {\n x: position.x + domX,\n y: position.y + domY\n };\n return rendererPointToPoint(correctedPosition, state.viewport);\n }\n return { x: 0, y: 0 };\n }\n };\n });\n}\nfunction getD3Transition(selection2, duration = 0, ease = defaultEase, onEnd = () => {\n}) {\n const hasDuration = typeof duration === \"number\" && duration > 0;\n if (!hasDuration) {\n onEnd();\n }\n return hasDuration ? selection2.transition().duration(duration).ease(ease).on(\"end\", onEnd) : selection2;\n}\nfunction useWatchProps(models, props, store) {\n const scope = effectScope(true);\n scope.run(() => {\n const watchModelValue = () => {\n scope.run(() => {\n let pauseModel;\n let pauseStore;\n let immediateStore = !!(store.nodes.value.length || store.edges.value.length);\n pauseModel = watchPausable([models.modelValue, () => {\n var _a, _b;\n return (_b = (_a = models.modelValue) == null ? void 0 : _a.value) == null ? void 0 : _b.length;\n }], ([elements]) => {\n if (elements && Array.isArray(elements)) {\n pauseStore == null ? void 0 : pauseStore.pause();\n store.setElements(elements);\n if (!pauseStore && !immediateStore && elements.length) {\n immediateStore = true;\n } else {\n pauseStore == null ? void 0 : pauseStore.resume();\n }\n }\n });\n pauseStore = watchPausable(\n [store.nodes, store.edges, () => store.edges.value.length, () => store.nodes.value.length],\n ([nodes, edges]) => {\n var _a;\n if (((_a = models.modelValue) == null ? void 0 : _a.value) && Array.isArray(models.modelValue.value)) {\n pauseModel == null ? void 0 : pauseModel.pause();\n models.modelValue.value = [...nodes, ...edges];\n nextTick(() => {\n pauseModel == null ? void 0 : pauseModel.resume();\n });\n }\n },\n { immediate: immediateStore }\n );\n onScopeDispose(() => {\n pauseModel == null ? void 0 : pauseModel.stop();\n pauseStore == null ? void 0 : pauseStore.stop();\n });\n });\n };\n const watchNodesValue = () => {\n scope.run(() => {\n let pauseModel;\n let pauseStore;\n let immediateStore = !!store.nodes.value.length;\n pauseModel = watchPausable([models.nodes, () => {\n var _a, _b;\n return (_b = (_a = models.nodes) == null ? void 0 : _a.value) == null ? void 0 : _b.length;\n }], ([nodes]) => {\n if (nodes && Array.isArray(nodes)) {\n pauseStore == null ? void 0 : pauseStore.pause();\n store.setNodes(nodes);\n if (!pauseStore && !immediateStore && nodes.length) {\n immediateStore = true;\n } else {\n pauseStore == null ? void 0 : pauseStore.resume();\n }\n }\n });\n pauseStore = watchPausable(\n [store.nodes, () => store.nodes.value.length],\n ([nodes]) => {\n var _a;\n if (((_a = models.nodes) == null ? void 0 : _a.value) && Array.isArray(models.nodes.value)) {\n pauseModel == null ? void 0 : pauseModel.pause();\n models.nodes.value = [...nodes];\n nextTick(() => {\n pauseModel == null ? void 0 : pauseModel.resume();\n });\n }\n },\n { immediate: immediateStore }\n );\n onScopeDispose(() => {\n pauseModel == null ? void 0 : pauseModel.stop();\n pauseStore == null ? void 0 : pauseStore.stop();\n });\n });\n };\n const watchEdgesValue = () => {\n scope.run(() => {\n let pauseModel;\n let pauseStore;\n let immediateStore = !!store.edges.value.length;\n pauseModel = watchPausable([models.edges, () => {\n var _a, _b;\n return (_b = (_a = models.edges) == null ? void 0 : _a.value) == null ? void 0 : _b.length;\n }], ([edges]) => {\n if (edges && Array.isArray(edges)) {\n pauseStore == null ? void 0 : pauseStore.pause();\n store.setEdges(edges);\n if (!pauseStore && !immediateStore && edges.length) {\n immediateStore = true;\n } else {\n pauseStore == null ? void 0 : pauseStore.resume();\n }\n }\n });\n pauseStore = watchPausable(\n [store.edges, () => store.edges.value.length],\n ([edges]) => {\n var _a;\n if (((_a = models.edges) == null ? void 0 : _a.value) && Array.isArray(models.edges.value)) {\n pauseModel == null ? void 0 : pauseModel.pause();\n models.edges.value = [...edges];\n nextTick(() => {\n pauseModel == null ? void 0 : pauseModel.resume();\n });\n }\n },\n { immediate: immediateStore }\n );\n onScopeDispose(() => {\n pauseModel == null ? void 0 : pauseModel.stop();\n pauseStore == null ? void 0 : pauseStore.stop();\n });\n });\n };\n const watchMaxZoom = () => {\n scope.run(() => {\n watch(\n () => props.maxZoom,\n () => {\n if (props.maxZoom && isDef(props.maxZoom)) {\n store.setMaxZoom(props.maxZoom);\n }\n },\n {\n immediate: true\n }\n );\n });\n };\n const watchMinZoom = () => {\n scope.run(() => {\n watch(\n () => props.minZoom,\n () => {\n if (props.minZoom && isDef(props.minZoom)) {\n store.setMinZoom(props.minZoom);\n }\n },\n { immediate: true }\n );\n });\n };\n const watchTranslateExtent = () => {\n scope.run(() => {\n watch(\n () => props.translateExtent,\n () => {\n if (props.translateExtent && isDef(props.translateExtent)) {\n store.setTranslateExtent(props.translateExtent);\n }\n },\n {\n immediate: true\n }\n );\n });\n };\n const watchNodeExtent = () => {\n scope.run(() => {\n watch(\n () => props.nodeExtent,\n () => {\n if (props.nodeExtent && isDef(props.nodeExtent)) {\n store.setNodeExtent(props.nodeExtent);\n }\n },\n {\n immediate: true\n }\n );\n });\n };\n const watchApplyDefault = () => {\n scope.run(() => {\n watch(\n () => props.applyDefault,\n () => {\n if (isDef(props.applyDefault)) {\n store.applyDefault.value = props.applyDefault;\n }\n },\n {\n immediate: true\n }\n );\n });\n };\n const watchAutoConnect = () => {\n scope.run(() => {\n const autoConnector = async (params) => {\n let connection = params;\n if (typeof props.autoConnect === \"function\") {\n connection = await props.autoConnect(params);\n }\n if (connection !== false) {\n store.addEdges([connection]);\n }\n };\n watch(\n () => props.autoConnect,\n () => {\n if (isDef(props.autoConnect)) {\n store.autoConnect.value = props.autoConnect;\n }\n },\n { immediate: true }\n );\n watch(\n store.autoConnect,\n (autoConnectEnabled, _, onCleanup) => {\n if (autoConnectEnabled) {\n store.onConnect(autoConnector);\n } else {\n store.hooks.value.connect.off(autoConnector);\n }\n onCleanup(() => {\n store.hooks.value.connect.off(autoConnector);\n });\n },\n { immediate: true }\n );\n });\n };\n const watchRest = () => {\n const skip = [\n \"id\",\n \"modelValue\",\n \"translateExtent\",\n \"nodeExtent\",\n \"edges\",\n \"nodes\",\n \"maxZoom\",\n \"minZoom\",\n \"applyDefault\",\n \"autoConnect\"\n ];\n for (const key of Object.keys(props)) {\n const propKey = key;\n if (!skip.includes(propKey)) {\n const propValue = toRef(() => props[propKey]);\n const storeRef = store[propKey];\n if (isRef(storeRef)) {\n scope.run(() => {\n watch(\n propValue,\n (nextValue) => {\n if (isDef(nextValue)) {\n storeRef.value = nextValue;\n }\n },\n { immediate: true }\n );\n });\n }\n }\n }\n };\n const runAll = () => {\n watchModelValue();\n watchNodesValue();\n watchEdgesValue();\n watchMinZoom();\n watchMaxZoom();\n watchTranslateExtent();\n watchNodeExtent();\n watchApplyDefault();\n watchAutoConnect();\n watchRest();\n };\n runAll();\n });\n return () => scope.stop();\n}\nfunction useZoomPanHelper(vueFlowId) {\n const state = useVueFlow({ id: vueFlowId });\n const viewportHelper = useViewportHelper(toReactive(state));\n return {\n fitView: (params) => viewportHelper.value.fitView(params),\n zoomIn: (transitionOpts) => viewportHelper.value.zoomIn(transitionOpts),\n zoomOut: (transitionOpts) => viewportHelper.value.zoomOut(transitionOpts),\n zoomTo: (zoomLevel, transitionOpts) => viewportHelper.value.zoomTo(zoomLevel, transitionOpts),\n setViewport: (params, transitionOpts) => viewportHelper.value.setViewport(params, transitionOpts),\n setTransform: (params, transitionOpts) => viewportHelper.value.setTransform(params, transitionOpts),\n getViewport: () => viewportHelper.value.getViewport(),\n getTransform: () => viewportHelper.value.getTransform(),\n setCenter: (x, y, opts) => viewportHelper.value.setCenter(x, y, opts),\n fitBounds: (params, opts) => viewportHelper.value.fitBounds(params, opts),\n project: (params) => viewportHelper.value.project(params)\n };\n}\nfunction createHooks() {\n return {\n edgesChange: createExtendedEventHook(),\n nodesChange: createExtendedEventHook(),\n nodeDoubleClick: createExtendedEventHook(),\n nodeClick: createExtendedEventHook(),\n nodeMouseEnter: createExtendedEventHook(),\n nodeMouseMove: createExtendedEventHook(),\n nodeMouseLeave: createExtendedEventHook(),\n nodeContextMenu: createExtendedEventHook(),\n nodeDragStart: createExtendedEventHook(),\n nodeDrag: createExtendedEventHook(),\n nodeDragStop: createExtendedEventHook(),\n nodesInitialized: createExtendedEventHook(),\n miniMapNodeClick: createExtendedEventHook(),\n miniMapNodeDoubleClick: createExtendedEventHook(),\n miniMapNodeMouseEnter: createExtendedEventHook(),\n miniMapNodeMouseMove: createExtendedEventHook(),\n miniMapNodeMouseLeave: createExtendedEventHook(),\n connect: createExtendedEventHook(),\n connectStart: createExtendedEventHook(),\n connectEnd: createExtendedEventHook(),\n clickConnectStart: createExtendedEventHook(),\n clickConnectEnd: createExtendedEventHook(),\n paneReady: createExtendedEventHook(),\n init: createExtendedEventHook(),\n move: createExtendedEventHook(),\n moveStart: createExtendedEventHook(),\n moveEnd: createExtendedEventHook(),\n selectionDragStart: createExtendedEventHook(),\n selectionDrag: createExtendedEventHook(),\n selectionDragStop: createExtendedEventHook(),\n selectionContextMenu: createExtendedEventHook(),\n selectionStart: createExtendedEventHook(),\n selectionEnd: createExtendedEventHook(),\n viewportChangeStart: createExtendedEventHook(),\n viewportChange: createExtendedEventHook(),\n viewportChangeEnd: createExtendedEventHook(),\n paneScroll: createExtendedEventHook(),\n paneClick: createExtendedEventHook(),\n paneContextMenu: createExtendedEventHook(),\n paneMouseEnter: createExtendedEventHook(),\n paneMouseMove: createExtendedEventHook(),\n paneMouseLeave: createExtendedEventHook(),\n edgeContextMenu: createExtendedEventHook(),\n edgeMouseEnter: createExtendedEventHook(),\n edgeMouseMove: createExtendedEventHook(),\n edgeMouseLeave: createExtendedEventHook(),\n edgeDoubleClick: createExtendedEventHook(),\n edgeClick: createExtendedEventHook(),\n edgeUpdateStart: createExtendedEventHook(),\n edgeUpdate: createExtendedEventHook(),\n edgeUpdateEnd: createExtendedEventHook(),\n updateNodeInternals: createExtendedEventHook(),\n error: createExtendedEventHook((err) => warn(err.message))\n };\n}\nfunction useHooks(emit, hooks) {\n onBeforeMount(() => {\n for (const [key, value] of Object.entries(hooks.value)) {\n const listener = (data) => {\n emit(key, data);\n };\n value.fns.add(listener);\n tryOnScopeDispose(() => {\n value.off(listener);\n });\n }\n });\n}\nfunction useState() {\n return {\n vueFlowRef: null,\n viewportRef: null,\n nodes: [],\n edges: [],\n connectionLookup: /* @__PURE__ */ new Map(),\n nodeTypes: {},\n edgeTypes: {},\n initialized: false,\n dimensions: {\n width: 0,\n height: 0\n },\n viewport: { x: 0, y: 0, zoom: 1 },\n d3Zoom: null,\n d3Selection: null,\n d3ZoomHandler: null,\n minZoom: 0.5,\n maxZoom: 2,\n translateExtent: [\n [Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY],\n [Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY]\n ],\n nodeExtent: [\n [Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY],\n [Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY]\n ],\n selectionMode: SelectionMode.Full,\n paneDragging: false,\n preventScrolling: true,\n zoomOnScroll: true,\n zoomOnPinch: true,\n zoomOnDoubleClick: true,\n panOnScroll: false,\n panOnScrollSpeed: 0.5,\n panOnScrollMode: PanOnScrollMode.Free,\n paneClickDistance: 0,\n panOnDrag: true,\n edgeUpdaterRadius: 10,\n onlyRenderVisibleElements: false,\n defaultViewport: { x: 0, y: 0, zoom: 1 },\n nodesSelectionActive: false,\n userSelectionActive: false,\n userSelectionRect: null,\n defaultMarkerColor: \"#b1b1b7\",\n connectionLineStyle: {},\n connectionLineType: null,\n connectionLineOptions: {\n type: ConnectionLineType.Bezier,\n style: {}\n },\n connectionMode: ConnectionMode.Loose,\n connectionStartHandle: null,\n connectionEndHandle: null,\n connectionClickStartHandle: null,\n connectionPosition: { x: Number.NaN, y: Number.NaN },\n connectionRadius: 20,\n connectOnClick: true,\n connectionStatus: null,\n isValidConnection: null,\n snapGrid: [15, 15],\n snapToGrid: false,\n edgesUpdatable: false,\n edgesFocusable: true,\n nodesFocusable: true,\n nodesConnectable: true,\n nodesDraggable: true,\n nodeDragThreshold: 1,\n elementsSelectable: true,\n selectNodesOnDrag: true,\n multiSelectionActive: false,\n selectionKeyCode: \"Shift\",\n multiSelectionKeyCode: isMacOs() ? \"Meta\" : \"Control\",\n zoomActivationKeyCode: isMacOs() ? \"Meta\" : \"Control\",\n deleteKeyCode: \"Backspace\",\n panActivationKeyCode: \"Space\",\n hooks: createHooks(),\n applyDefault: true,\n autoConnect: false,\n fitViewOnInit: false,\n fitViewOnInitDone: false,\n noDragClassName: \"nodrag\",\n noWheelClassName: \"nowheel\",\n noPanClassName: \"nopan\",\n defaultEdgeOptions: void 0,\n elevateEdgesOnSelect: false,\n elevateNodesOnSelect: true,\n autoPanOnNodeDrag: true,\n autoPanOnConnect: true,\n autoPanSpeed: 15,\n disableKeyboardA11y: false,\n ariaLiveMessage: \"\"\n };\n}\nconst storeOptionsToSkip = [\n \"id\",\n \"vueFlowRef\",\n \"viewportRef\",\n \"initialized\",\n \"modelValue\",\n \"nodes\",\n \"edges\",\n \"maxZoom\",\n \"minZoom\",\n \"translateExtent\",\n \"hooks\",\n \"defaultEdgeOptions\"\n];\nfunction useActions(state, nodeLookup, edgeLookup) {\n const viewportHelper = useViewportHelper(state);\n const updateNodeInternals = (ids) => {\n const updateIds = ids ?? [];\n state.hooks.updateNodeInternals.trigger(updateIds);\n };\n const getIncomers$1 = (nodeOrId) => {\n return getIncomers(nodeOrId, state.nodes, state.edges);\n };\n const getOutgoers$1 = (nodeOrId) => {\n return getOutgoers(nodeOrId, state.nodes, state.edges);\n };\n const getConnectedEdges$1 = (nodesOrId) => {\n return getConnectedEdges(nodesOrId, state.edges);\n };\n const getHandleConnections = ({ id: id2, type, nodeId }) => {\n var _a;\n return Array.from(((_a = state.connectionLookup.get(`${nodeId}-${type}-${id2 ?? null}`)) == null ? void 0 : _a.values()) ?? []);\n };\n const findNode = (id2) => {\n if (!id2) {\n return;\n }\n return nodeLookup.value.get(id2);\n };\n const findEdge = (id2) => {\n if (!id2) {\n return;\n }\n return edgeLookup.value.get(id2);\n };\n const updateNodePositions = (dragItems, changed, dragging) => {\n var _a, _b;\n const changes = [];\n for (const node of dragItems) {\n const change = {\n id: node.id,\n type: \"position\",\n dragging,\n from: node.from\n };\n if (changed) {\n change.position = node.position;\n if (node.parentNode) {\n const parentNode = findNode(node.parentNode);\n change.position = {\n x: change.position.x - (((_a = parentNode == null ? void 0 : parentNode.computedPosition) == null ? void 0 : _a.x) ?? 0),\n y: change.position.y - (((_b = parentNode == null ? void 0 : parentNode.computedPosition) == null ? void 0 : _b.y) ?? 0)\n };\n }\n }\n changes.push(change);\n }\n if (changes == null ? void 0 : changes.length) {\n state.hooks.nodesChange.trigger(changes);\n }\n };\n const updateNodeDimensions = (updates) => {\n if (!state.vueFlowRef) {\n return;\n }\n const viewportNode = state.vueFlowRef.querySelector(\".vue-flow__transformationpane\");\n if (!viewportNode) {\n return;\n }\n const style = window.getComputedStyle(viewportNode);\n const { m22: zoom2 } = new window.DOMMatrixReadOnly(style.transform);\n const changes = [];\n for (const element of updates) {\n const update = element;\n const node = findNode(update.id);\n if (node) {\n const dimensions = getDimensions(update.nodeElement);\n const doUpdate = !!(dimensions.width && dimensions.height && (node.dimensions.width !== dimensions.width || node.dimensions.height !== dimensions.height || update.forceUpdate));\n if (doUpdate) {\n const nodeBounds = update.nodeElement.getBoundingClientRect();\n node.dimensions = dimensions;\n node.handleBounds.source = getHandleBounds(\"source\", update.nodeElement, nodeBounds, zoom2, node.id);\n node.handleBounds.target = getHandleBounds(\"target\", update.nodeElement, nodeBounds, zoom2, node.id);\n changes.push({\n id: node.id,\n type: \"dimensions\",\n dimensions\n });\n }\n }\n }\n if (!state.fitViewOnInitDone && state.fitViewOnInit) {\n viewportHelper.value.fitView().then(() => {\n state.fitViewOnInitDone = true;\n });\n }\n if (changes.length) {\n state.hooks.nodesChange.trigger(changes);\n }\n };\n const elementSelectionHandler = (elements, selected) => {\n const nodeIds = /* @__PURE__ */ new Set();\n const edgeIds = /* @__PURE__ */ new Set();\n for (const element of elements) {\n if (isNode(element)) {\n nodeIds.add(element.id);\n } else if (isEdge(element)) {\n edgeIds.add(element.id);\n }\n }\n const changedNodes = getSelectionChanges(nodeLookup.value, nodeIds, true);\n const changedEdges = getSelectionChanges(edgeLookup.value, edgeIds);\n if (state.multiSelectionActive) {\n for (const nodeId of nodeIds) {\n changedNodes.push(createSelectionChange(nodeId, selected));\n }\n for (const edgeId of edgeIds) {\n changedEdges.push(createSelectionChange(edgeId, selected));\n }\n }\n if (changedNodes.length) {\n state.hooks.nodesChange.trigger(changedNodes);\n }\n if (changedEdges.length) {\n state.hooks.edgesChange.trigger(changedEdges);\n }\n };\n const addSelectedNodes = (nodes) => {\n if (state.multiSelectionActive) {\n const nodeChanges = nodes.map((node) => createSelectionChange(node.id, true));\n state.hooks.nodesChange.trigger(nodeChanges);\n return;\n }\n state.hooks.nodesChange.trigger(getSelectionChanges(nodeLookup.value, new Set(nodes.map((n) => n.id)), true));\n state.hooks.edgesChange.trigger(getSelectionChanges(edgeLookup.value));\n };\n const addSelectedEdges = (edges) => {\n if (state.multiSelectionActive) {\n const changedEdges = edges.map((edge) => createSelectionChange(edge.id, true));\n state.hooks.edgesChange.trigger(changedEdges);\n return;\n }\n state.hooks.edgesChange.trigger(getSelectionChanges(edgeLookup.value, new Set(edges.map((e) => e.id))));\n state.hooks.nodesChange.trigger(getSelectionChanges(nodeLookup.value, /* @__PURE__ */ new Set(), true));\n };\n const addSelectedElements = (elements) => {\n elementSelectionHandler(elements, true);\n };\n const removeSelectedNodes = (nodes) => {\n const nodesToUnselect = nodes || state.nodes;\n const nodeChanges = nodesToUnselect.map((n) => {\n n.selected = false;\n return createSelectionChange(n.id, false);\n });\n state.hooks.nodesChange.trigger(nodeChanges);\n };\n const removeSelectedEdges = (edges) => {\n const edgesToUnselect = edges || state.edges;\n const edgeChanges = edgesToUnselect.map((e) => {\n e.selected = false;\n return createSelectionChange(e.id, false);\n });\n state.hooks.edgesChange.trigger(edgeChanges);\n };\n const removeSelectedElements = (elements) => {\n if (!elements || !elements.length) {\n return elementSelectionHandler([], false);\n }\n const changes = elements.reduce(\n (changes2, curr) => {\n const selectionChange = createSelectionChange(curr.id, false);\n if (isNode(curr)) {\n changes2.nodes.push(selectionChange);\n } else {\n changes2.edges.push(selectionChange);\n }\n return changes2;\n },\n { nodes: [], edges: [] }\n );\n if (changes.nodes.length) {\n state.hooks.nodesChange.trigger(changes.nodes);\n }\n if (changes.edges.length) {\n state.hooks.edgesChange.trigger(changes.edges);\n }\n };\n const setMinZoom = (minZoom) => {\n var _a;\n (_a = state.d3Zoom) == null ? void 0 : _a.scaleExtent([minZoom, state.maxZoom]);\n state.minZoom = minZoom;\n };\n const setMaxZoom = (maxZoom) => {\n var _a;\n (_a = state.d3Zoom) == null ? void 0 : _a.scaleExtent([state.minZoom, maxZoom]);\n state.maxZoom = maxZoom;\n };\n const setTranslateExtent = (translateExtent) => {\n var _a;\n (_a = state.d3Zoom) == null ? void 0 : _a.translateExtent(translateExtent);\n state.translateExtent = translateExtent;\n };\n const setNodeExtent = (nodeExtent) => {\n state.nodeExtent = nodeExtent;\n updateNodeInternals();\n };\n const setPaneClickDistance = (clickDistance) => {\n var _a;\n (_a = state.d3Zoom) == null ? void 0 : _a.clickDistance(clickDistance);\n };\n const setInteractive = (isInteractive) => {\n state.nodesDraggable = isInteractive;\n state.nodesConnectable = isInteractive;\n state.elementsSelectable = isInteractive;\n };\n const setNodes = (nodes) => {\n const nextNodes = nodes instanceof Function ? nodes(state.nodes) : nodes;\n if (!state.initialized && !nextNodes.length) {\n return;\n }\n state.nodes = createGraphNodes(nextNodes, findNode, state.hooks.error.trigger);\n };\n const setEdges = (edges) => {\n const nextEdges = edges instanceof Function ? edges(state.edges) : edges;\n if (!state.initialized && !nextEdges.length) {\n return;\n }\n const validEdges = createGraphEdges(\n nextEdges,\n state.isValidConnection,\n findNode,\n findEdge,\n state.hooks.error.trigger,\n state.defaultEdgeOptions,\n state.nodes,\n state.edges\n );\n updateConnectionLookup(state.connectionLookup, edgeLookup.value, validEdges);\n state.edges = validEdges;\n };\n const setElements = (elements) => {\n const nextElements = elements instanceof Function ? elements([...state.nodes, ...state.edges]) : elements;\n if (!state.initialized && !nextElements.length) {\n return;\n }\n setNodes(nextElements.filter(isNode));\n setEdges(nextElements.filter(isEdge));\n };\n const addNodes = (nodes) => {\n let nextNodes = nodes instanceof Function ? nodes(state.nodes) : nodes;\n nextNodes = Array.isArray(nextNodes) ? nextNodes : [nextNodes];\n const graphNodes = createGraphNodes(nextNodes, findNode, state.hooks.error.trigger);\n const changes = [];\n for (const node of graphNodes) {\n changes.push(createAdditionChange(node));\n }\n if (changes.length) {\n state.hooks.nodesChange.trigger(changes);\n }\n };\n const addEdges = (params) => {\n let nextEdges = params instanceof Function ? params(state.edges) : params;\n nextEdges = Array.isArray(nextEdges) ? nextEdges : [nextEdges];\n const validEdges = createGraphEdges(\n nextEdges,\n state.isValidConnection,\n findNode,\n findEdge,\n state.hooks.error.trigger,\n state.defaultEdgeOptions,\n state.nodes,\n state.edges\n );\n const changes = [];\n for (const edge of validEdges) {\n changes.push(createAdditionChange(edge));\n }\n if (changes.length) {\n state.hooks.edgesChange.trigger(changes);\n }\n };\n const removeNodes = (nodes, removeConnectedEdges = true, removeChildren = false) => {\n const nextNodes = nodes instanceof Function ? nodes(state.nodes) : nodes;\n const nodesToRemove = Array.isArray(nextNodes) ? nextNodes : [nextNodes];\n const nodeChanges = [];\n const edgeChanges = [];\n function createEdgeRemovalChanges(nodes2) {\n const connectedEdges = getConnectedEdges$1(nodes2);\n for (const edge of connectedEdges) {\n if (isDef(edge.deletable) ? edge.deletable : true) {\n edgeChanges.push(createEdgeRemoveChange(edge.id, edge.source, edge.target, edge.sourceHandle, edge.targetHandle));\n }\n }\n }\n function createChildrenRemovalChanges(id2) {\n const children2 = [];\n for (const node of state.nodes) {\n if (node.parentNode === id2) {\n children2.push(node);\n }\n }\n if (children2.length) {\n for (const child of children2) {\n nodeChanges.push(createNodeRemoveChange(child.id));\n }\n if (removeConnectedEdges) {\n createEdgeRemovalChanges(children2);\n }\n for (const child of children2) {\n createChildrenRemovalChanges(child.id);\n }\n }\n }\n for (const item of nodesToRemove) {\n const currNode = typeof item === \"string\" ? findNode(item) : item;\n if (!currNode) {\n continue;\n }\n if (isDef(currNode.deletable) && !currNode.deletable) {\n continue;\n }\n nodeChanges.push(createNodeRemoveChange(currNode.id));\n if (removeConnectedEdges) {\n createEdgeRemovalChanges([currNode]);\n }\n if (removeChildren) {\n createChildrenRemovalChanges(currNode.id);\n }\n }\n if (edgeChanges.length) {\n state.hooks.edgesChange.trigger(edgeChanges);\n }\n if (nodeChanges.length) {\n state.hooks.nodesChange.trigger(nodeChanges);\n }\n };\n const removeEdges = (edges) => {\n const nextEdges = edges instanceof Function ? edges(state.edges) : edges;\n const edgesToRemove = Array.isArray(nextEdges) ? nextEdges : [nextEdges];\n const changes = [];\n for (const item of edgesToRemove) {\n const currEdge = typeof item === \"string\" ? findEdge(item) : item;\n if (!currEdge) {\n continue;\n }\n if (isDef(currEdge.deletable) && !currEdge.deletable) {\n continue;\n }\n changes.push(\n createEdgeRemoveChange(\n typeof item === \"string\" ? item : item.id,\n currEdge.source,\n currEdge.target,\n currEdge.sourceHandle,\n currEdge.targetHandle\n )\n );\n }\n state.hooks.edgesChange.trigger(changes);\n };\n const updateEdge2 = (oldEdge, newConnection, shouldReplaceId = true) => {\n const prevEdge = findEdge(oldEdge.id);\n if (!prevEdge) {\n return false;\n }\n const prevEdgeIndex = state.edges.indexOf(prevEdge);\n const newEdge = updateEdgeAction(oldEdge, newConnection, prevEdge, shouldReplaceId, state.hooks.error.trigger);\n if (newEdge) {\n const [validEdge] = createGraphEdges(\n [newEdge],\n state.isValidConnection,\n findNode,\n findEdge,\n state.hooks.error.trigger,\n state.defaultEdgeOptions,\n state.nodes,\n state.edges\n );\n state.edges = state.edges.map((edge, index) => index === prevEdgeIndex ? validEdge : edge);\n updateConnectionLookup(state.connectionLookup, edgeLookup.value, [validEdge]);\n return validEdge;\n }\n return false;\n };\n const updateEdgeData = (id2, dataUpdate, options = { replace: false }) => {\n const edge = findEdge(id2);\n if (!edge) {\n return;\n }\n const nextData = typeof dataUpdate === \"function\" ? dataUpdate(edge) : dataUpdate;\n edge.data = options.replace ? nextData : { ...edge.data, ...nextData };\n };\n const applyNodeChanges2 = (changes) => {\n return applyChanges(changes, state.nodes);\n };\n const applyEdgeChanges2 = (changes) => {\n const changedEdges = applyChanges(changes, state.edges);\n updateConnectionLookup(state.connectionLookup, edgeLookup.value, changedEdges);\n return changedEdges;\n };\n const updateNode = (id2, nodeUpdate, options = { replace: false }) => {\n const node = findNode(id2);\n if (!node) {\n return;\n }\n const nextNode = typeof nodeUpdate === \"function\" ? nodeUpdate(node) : nodeUpdate;\n if (options.replace) {\n state.nodes.splice(state.nodes.indexOf(node), 1, nextNode);\n } else {\n Object.assign(node, nextNode);\n }\n };\n const updateNodeData = (id2, dataUpdate, options = { replace: false }) => {\n const node = findNode(id2);\n if (!node) {\n return;\n }\n const nextData = typeof dataUpdate === \"function\" ? dataUpdate(node) : dataUpdate;\n node.data = options.replace ? nextData : { ...node.data, ...nextData };\n };\n const startConnection = (startHandle, position, isClick = false) => {\n if (isClick) {\n state.connectionClickStartHandle = startHandle;\n } else {\n state.connectionStartHandle = startHandle;\n }\n state.connectionEndHandle = null;\n state.connectionStatus = null;\n if (position) {\n state.connectionPosition = position;\n }\n };\n const updateConnection = (position, result = null, status = null) => {\n if (state.connectionStartHandle) {\n state.connectionPosition = position;\n state.connectionEndHandle = result;\n state.connectionStatus = status;\n }\n };\n const endConnection = (event, isClick) => {\n state.connectionPosition = { x: Number.NaN, y: Number.NaN };\n state.connectionEndHandle = null;\n state.connectionStatus = null;\n if (isClick) {\n state.connectionClickStartHandle = null;\n } else {\n state.connectionStartHandle = null;\n }\n };\n const getNodeRect = (nodeOrRect) => {\n const isRectObj = isRect(nodeOrRect);\n const node = isRectObj ? null : isGraphNode(nodeOrRect) ? nodeOrRect : findNode(nodeOrRect.id);\n if (!isRectObj && !node) {\n return [null, null, isRectObj];\n }\n const nodeRect = isRectObj ? nodeOrRect : nodeToRect(node);\n return [nodeRect, node, isRectObj];\n };\n const getIntersectingNodes = (nodeOrRect, partially = true, nodes = state.nodes) => {\n const [nodeRect, node, isRect2] = getNodeRect(nodeOrRect);\n if (!nodeRect) {\n return [];\n }\n const intersections = [];\n for (const n of nodes || state.nodes) {\n if (!isRect2 && (n.id === node.id || !n.computedPosition)) {\n continue;\n }\n const currNodeRect = nodeToRect(n);\n const overlappingArea = getOverlappingArea(currNodeRect, nodeRect);\n const partiallyVisible = partially && overlappingArea > 0;\n if (partiallyVisible || overlappingArea >= Number(nodeRect.width) * Number(nodeRect.height)) {\n intersections.push(n);\n }\n }\n return intersections;\n };\n const isNodeIntersecting = (nodeOrRect, area, partially = true) => {\n const [nodeRect] = getNodeRect(nodeOrRect);\n if (!nodeRect) {\n return false;\n }\n const overlappingArea = getOverlappingArea(nodeRect, area);\n const partiallyVisible = partially && overlappingArea > 0;\n return partiallyVisible || overlappingArea >= Number(nodeRect.width) * Number(nodeRect.height);\n };\n const panBy = (delta) => {\n const { viewport, dimensions, d3Zoom, d3Selection, translateExtent } = state;\n if (!d3Zoom || !d3Selection || !delta.x && !delta.y) {\n return false;\n }\n const nextTransform = identity.translate(viewport.x + delta.x, viewport.y + delta.y).scale(viewport.zoom);\n const extent = [\n [0, 0],\n [dimensions.width, dimensions.height]\n ];\n const constrainedTransform = d3Zoom.constrain()(nextTransform, extent, translateExtent);\n const transformChanged = state.viewport.x !== constrainedTransform.x || state.viewport.y !== constrainedTransform.y || state.viewport.zoom !== constrainedTransform.k;\n d3Zoom.transform(d3Selection, constrainedTransform);\n return transformChanged;\n };\n const setState = (options) => {\n const opts = options instanceof Function ? options(state) : options;\n const exclude = [\n \"d3Zoom\",\n \"d3Selection\",\n \"d3ZoomHandler\",\n \"viewportRef\",\n \"vueFlowRef\",\n \"dimensions\",\n \"hooks\"\n ];\n if (isDef(opts.defaultEdgeOptions)) {\n state.defaultEdgeOptions = opts.defaultEdgeOptions;\n }\n const elements = opts.modelValue || opts.nodes || opts.edges ? [] : void 0;\n if (elements) {\n if (opts.modelValue) {\n elements.push(...opts.modelValue);\n }\n if (opts.nodes) {\n elements.push(...opts.nodes);\n }\n if (opts.edges) {\n elements.push(...opts.edges);\n }\n setElements(elements);\n }\n const setSkippedOptions = () => {\n if (isDef(opts.maxZoom)) {\n setMaxZoom(opts.maxZoom);\n }\n if (isDef(opts.minZoom)) {\n setMinZoom(opts.minZoom);\n }\n if (isDef(opts.translateExtent)) {\n setTranslateExtent(opts.translateExtent);\n }\n };\n for (const o of Object.keys(opts)) {\n const key = o;\n const option = opts[key];\n if (![...storeOptionsToSkip, ...exclude].includes(key) && isDef(option)) {\n state[key] = option;\n }\n }\n until(() => state.d3Zoom).not.toBeNull().then(setSkippedOptions);\n if (!state.initialized) {\n state.initialized = true;\n }\n };\n const toObject = () => {\n const nodes = [];\n const edges = [];\n for (const node of state.nodes) {\n const {\n computedPosition: _,\n handleBounds: __,\n selected: ___,\n dimensions: ____,\n isParent: _____,\n resizing: ______,\n dragging: _______,\n events: _________,\n ...rest\n } = node;\n nodes.push(rest);\n }\n for (const edge of state.edges) {\n const { selected: _, sourceNode: __, targetNode: ___, events: ____, ...rest } = edge;\n edges.push(rest);\n }\n return JSON.parse(\n JSON.stringify({\n nodes,\n edges,\n position: [state.viewport.x, state.viewport.y],\n zoom: state.viewport.zoom,\n viewport: state.viewport\n })\n );\n };\n const fromObject = (obj) => {\n return new Promise((resolve) => {\n const { nodes, edges, position, zoom: zoom2, viewport } = obj;\n if (nodes) {\n setNodes(nodes);\n }\n if (edges) {\n setEdges(edges);\n }\n if ((viewport == null ? void 0 : viewport.x) && (viewport == null ? void 0 : viewport.y) || position) {\n const x = (viewport == null ? void 0 : viewport.x) || position[0];\n const y = (viewport == null ? void 0 : viewport.y) || position[1];\n const nextZoom = (viewport == null ? void 0 : viewport.zoom) || zoom2 || state.viewport.zoom;\n return until(() => viewportHelper.value.viewportInitialized).toBe(true).then(() => {\n viewportHelper.value.setViewport({\n x,\n y,\n zoom: nextZoom\n }).then(() => {\n resolve(true);\n });\n });\n } else {\n resolve(true);\n }\n });\n };\n const $reset = () => {\n const resetState = useState();\n state.edges = [];\n state.nodes = [];\n if (state.d3Zoom && state.d3Selection) {\n const updatedTransform = identity.translate(resetState.defaultViewport.x ?? 0, resetState.defaultViewport.y ?? 0).scale(clamp(resetState.defaultViewport.zoom ?? 1, resetState.minZoom, resetState.maxZoom));\n const bbox = state.viewportRef.getBoundingClientRect();\n const extent = [\n [0, 0],\n [bbox.width, bbox.height]\n ];\n const constrainedTransform = state.d3Zoom.constrain()(updatedTransform, extent, resetState.translateExtent);\n state.d3Zoom.transform(state.d3Selection, constrainedTransform);\n }\n setState(resetState);\n };\n return {\n updateNodePositions,\n updateNodeDimensions,\n setElements,\n setNodes,\n setEdges,\n addNodes,\n addEdges,\n removeNodes,\n removeEdges,\n findNode,\n findEdge,\n updateEdge: updateEdge2,\n updateEdgeData,\n updateNode,\n updateNodeData,\n applyEdgeChanges: applyEdgeChanges2,\n applyNodeChanges: applyNodeChanges2,\n addSelectedElements,\n addSelectedNodes,\n addSelectedEdges,\n setMinZoom,\n setMaxZoom,\n setTranslateExtent,\n setNodeExtent,\n setPaneClickDistance,\n removeSelectedElements,\n removeSelectedNodes,\n removeSelectedEdges,\n startConnection,\n updateConnection,\n endConnection,\n setInteractive,\n setState,\n getIntersectingNodes,\n getIncomers: getIncomers$1,\n getOutgoers: getOutgoers$1,\n getConnectedEdges: getConnectedEdges$1,\n getHandleConnections,\n isNodeIntersecting,\n panBy,\n fitView: (params) => viewportHelper.value.fitView(params),\n zoomIn: (transitionOpts) => viewportHelper.value.zoomIn(transitionOpts),\n zoomOut: (transitionOpts) => viewportHelper.value.zoomOut(transitionOpts),\n zoomTo: (zoomLevel, transitionOpts) => viewportHelper.value.zoomTo(zoomLevel, transitionOpts),\n setViewport: (params, transitionOpts) => viewportHelper.value.setViewport(params, transitionOpts),\n setTransform: (params, transitionOpts) => viewportHelper.value.setTransform(params, transitionOpts),\n getViewport: () => viewportHelper.value.getViewport(),\n getTransform: () => viewportHelper.value.getTransform(),\n setCenter: (x, y, opts) => viewportHelper.value.setCenter(x, y, opts),\n fitBounds: (params, opts) => viewportHelper.value.fitBounds(params, opts),\n project: (params) => viewportHelper.value.project(params),\n screenToFlowCoordinate: (params) => viewportHelper.value.screenToFlowCoordinate(params),\n flowToScreenCoordinate: (params) => viewportHelper.value.flowToScreenCoordinate(params),\n toObject,\n fromObject,\n updateNodeInternals,\n viewportHelper,\n $reset,\n $destroy: () => {\n }\n };\n}\nconst _hoisted_1$9 = [\"data-id\", \"data-handleid\", \"data-nodeid\", \"data-handlepos\"];\nconst __default__$f = {\n name: \"Handle\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$f = /* @__PURE__ */ defineComponent({\n ...__default__$f,\n props: {\n id: { default: null },\n type: {},\n position: { default: () => Position.Top },\n isValidConnection: { type: Function },\n connectable: { type: [Boolean, Number, String, Function], default: void 0 },\n connectableStart: { type: Boolean, default: true },\n connectableEnd: { type: Boolean, default: true }\n },\n setup(__props, { expose: __expose }) {\n const props = createPropsRestProxy(__props, [\"position\", \"connectable\", \"connectableStart\", \"connectableEnd\", \"id\"]);\n const type = toRef(() => props.type ?? \"source\");\n const isValidConnection = toRef(() => props.isValidConnection ?? null);\n const {\n id: flowId,\n connectionStartHandle,\n connectionClickStartHandle,\n connectionEndHandle,\n vueFlowRef,\n nodesConnectable,\n noDragClassName,\n noPanClassName\n } = useVueFlow();\n const { id: nodeId, node, nodeEl, connectedEdges } = useNode();\n const handle = ref();\n const isConnectableStart = toRef(() => typeof __props.connectableStart !== \"undefined\" ? __props.connectableStart : true);\n const isConnectableEnd = toRef(() => typeof __props.connectableEnd !== \"undefined\" ? __props.connectableEnd : true);\n const isConnecting = toRef(\n () => {\n var _a, _b, _c, _d, _e, _f;\n return ((_a = connectionStartHandle.value) == null ? void 0 : _a.nodeId) === nodeId && ((_b = connectionStartHandle.value) == null ? void 0 : _b.id) === __props.id && ((_c = connectionStartHandle.value) == null ? void 0 : _c.type) === type.value || ((_d = connectionEndHandle.value) == null ? void 0 : _d.nodeId) === nodeId && ((_e = connectionEndHandle.value) == null ? void 0 : _e.id) === __props.id && ((_f = connectionEndHandle.value) == null ? void 0 : _f.type) === type.value;\n }\n );\n const isClickConnecting = toRef(\n () => {\n var _a, _b, _c;\n return ((_a = connectionClickStartHandle.value) == null ? void 0 : _a.nodeId) === nodeId && ((_b = connectionClickStartHandle.value) == null ? void 0 : _b.id) === __props.id && ((_c = connectionClickStartHandle.value) == null ? void 0 : _c.type) === type.value;\n }\n );\n const { handlePointerDown, handleClick } = useHandle({\n nodeId,\n handleId: __props.id,\n isValidConnection,\n type\n });\n const isConnectable = computed(() => {\n if (typeof __props.connectable === \"string\" && __props.connectable === \"single\") {\n return !connectedEdges.value.some((edge) => {\n const id2 = edge[`${type.value}Handle`];\n if (edge[type.value] !== nodeId) {\n return false;\n }\n return id2 ? id2 === __props.id : true;\n });\n }\n if (typeof __props.connectable === \"number\") {\n return connectedEdges.value.filter((edge) => {\n const id2 = edge[`${type.value}Handle`];\n if (edge[type.value] !== nodeId) {\n return false;\n }\n return id2 ? id2 === __props.id : true;\n }).length < __props.connectable;\n }\n if (typeof __props.connectable === \"function\") {\n return __props.connectable(node, connectedEdges.value);\n }\n return isDef(__props.connectable) ? __props.connectable : nodesConnectable.value;\n });\n onMounted(() => {\n var _a;\n if (!node.dimensions.width || !node.dimensions.height) {\n return;\n }\n const existingBounds = (_a = node.handleBounds[type.value]) == null ? void 0 : _a.find((b) => b.id === __props.id);\n if (!vueFlowRef.value || existingBounds) {\n return;\n }\n const viewportNode = vueFlowRef.value.querySelector(\".vue-flow__transformationpane\");\n if (!nodeEl.value || !handle.value || !viewportNode || !__props.id) {\n return;\n }\n const nodeBounds = nodeEl.value.getBoundingClientRect();\n const handleBounds = handle.value.getBoundingClientRect();\n const style = window.getComputedStyle(viewportNode);\n const { m22: zoom2 } = new window.DOMMatrixReadOnly(style.transform);\n const nextBounds = {\n id: __props.id,\n position: __props.position,\n x: (handleBounds.left - nodeBounds.left) / zoom2,\n y: (handleBounds.top - nodeBounds.top) / zoom2,\n type: type.value,\n nodeId,\n ...getDimensions(handle.value)\n };\n node.handleBounds[type.value] = [...node.handleBounds[type.value] ?? [], nextBounds];\n });\n function onPointerDown(event) {\n const isMouseTriggered = isMouseEvent(event);\n if (isConnectable.value && isConnectableStart.value && (isMouseTriggered && event.button === 0 || !isMouseTriggered)) {\n handlePointerDown(event);\n }\n }\n function onClick(event) {\n if (!nodeId || !connectionClickStartHandle.value && !isConnectableStart.value) {\n return;\n }\n if (isConnectable.value) {\n handleClick(event);\n }\n }\n __expose({\n handleClick,\n handlePointerDown,\n onClick,\n onPointerDown\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n ref_key: \"handle\",\n ref: handle,\n \"data-id\": `${unref(flowId)}-${unref(nodeId)}-${__props.id}-${type.value}`,\n \"data-handleid\": __props.id,\n \"data-nodeid\": unref(nodeId),\n \"data-handlepos\": _ctx.position,\n class: normalizeClass([\"vue-flow__handle\", [\n `vue-flow__handle-${_ctx.position}`,\n `vue-flow__handle-${__props.id}`,\n unref(noDragClassName),\n unref(noPanClassName),\n type.value,\n {\n connectable: isConnectable.value,\n connecting: isClickConnecting.value,\n connectablestart: isConnectableStart.value,\n connectableend: isConnectableEnd.value,\n connectionindicator: isConnectable.value && (isConnectableStart.value && !isConnecting.value || isConnectableEnd.value && isConnecting.value)\n }\n ]]),\n onMousedown: onPointerDown,\n onTouchstartPassive: onPointerDown,\n onClick\n }, [\n renderSlot(_ctx.$slots, \"default\", { id: _ctx.id })\n ], 42, _hoisted_1$9);\n };\n }\n});\nconst DefaultNode = function({\n sourcePosition = Position.Bottom,\n targetPosition = Position.Top,\n label: _label,\n connectable = true,\n isValidTargetPos,\n isValidSourcePos,\n data\n}) {\n const label = data.label ?? _label;\n return [\n h(_sfc_main$f, { type: \"target\", position: targetPosition, connectable, isValidConnection: isValidTargetPos }),\n typeof label !== \"string\" && label ? h(label) : h(Fragment, [label]),\n h(_sfc_main$f, { type: \"source\", position: sourcePosition, connectable, isValidConnection: isValidSourcePos })\n ];\n};\nDefaultNode.props = [\"sourcePosition\", \"targetPosition\", \"label\", \"isValidTargetPos\", \"isValidSourcePos\", \"connectable\", \"data\"];\nDefaultNode.inheritAttrs = false;\nDefaultNode.compatConfig = { MODE: 3 };\nconst DefaultNode$1 = DefaultNode;\nconst OutputNode = function({\n targetPosition = Position.Top,\n label: _label,\n connectable = true,\n isValidTargetPos,\n data\n}) {\n const label = data.label ?? _label;\n return [\n h(_sfc_main$f, { type: \"target\", position: targetPosition, connectable, isValidConnection: isValidTargetPos }),\n typeof label !== \"string\" && label ? h(label) : h(Fragment, [label])\n ];\n};\nOutputNode.props = [\"targetPosition\", \"label\", \"isValidTargetPos\", \"connectable\", \"data\"];\nOutputNode.inheritAttrs = false;\nOutputNode.compatConfig = { MODE: 3 };\nconst OutputNode$1 = OutputNode;\nconst InputNode = function({\n sourcePosition = Position.Bottom,\n label: _label,\n connectable = true,\n isValidSourcePos,\n data\n}) {\n const label = data.label ?? _label;\n return [\n typeof label !== \"string\" && label ? h(label) : h(Fragment, [label]),\n h(_sfc_main$f, { type: \"source\", position: sourcePosition, connectable, isValidConnection: isValidSourcePos })\n ];\n};\nInputNode.props = [\"sourcePosition\", \"label\", \"isValidSourcePos\", \"connectable\", \"data\"];\nInputNode.inheritAttrs = false;\nInputNode.compatConfig = { MODE: 3 };\nconst InputNode$1 = InputNode;\nconst _hoisted_1$8 = [\"transform\"];\nconst _hoisted_2$2 = [\"width\", \"height\", \"x\", \"y\", \"rx\", \"ry\"];\nconst _hoisted_3$1 = [\"y\"];\nconst __default__$e = {\n name: \"EdgeText\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$e = /* @__PURE__ */ defineComponent({\n ...__default__$e,\n props: {\n x: {},\n y: {},\n label: {},\n labelStyle: { default: () => ({}) },\n labelShowBg: { type: Boolean, default: true },\n labelBgStyle: { default: () => ({}) },\n labelBgPadding: { default: () => [2, 4] },\n labelBgBorderRadius: { default: 2 }\n },\n setup(__props) {\n const box = ref({ x: 0, y: 0, width: 0, height: 0 });\n const el = ref(null);\n const transform = computed(() => `translate(${__props.x - box.value.width / 2} ${__props.y - box.value.height / 2})`);\n onMounted(getBox);\n watch([() => __props.x, () => __props.y, el, () => __props.label], getBox);\n function getBox() {\n if (!el.value) {\n return;\n }\n const nextBox = el.value.getBBox();\n if (nextBox.width !== box.value.width || nextBox.height !== box.value.height) {\n box.value = nextBox;\n }\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"g\", {\n transform: transform.value,\n class: \"vue-flow__edge-textwrapper\"\n }, [\n _ctx.labelShowBg ? (openBlock(), createElementBlock(\"rect\", {\n key: 0,\n class: \"vue-flow__edge-textbg\",\n width: `${box.value.width + 2 * _ctx.labelBgPadding[0]}px`,\n height: `${box.value.height + 2 * _ctx.labelBgPadding[1]}px`,\n x: -_ctx.labelBgPadding[0],\n y: -_ctx.labelBgPadding[1],\n style: normalizeStyle(_ctx.labelBgStyle),\n rx: _ctx.labelBgBorderRadius,\n ry: _ctx.labelBgBorderRadius\n }, null, 12, _hoisted_2$2)) : createCommentVNode(\"\", true),\n createElementVNode(\"text\", mergeProps(_ctx.$attrs, {\n ref_key: \"el\",\n ref: el,\n class: \"vue-flow__edge-text\",\n y: box.value.height / 2,\n dy: \"0.3em\",\n style: _ctx.labelStyle\n }), [\n renderSlot(_ctx.$slots, \"default\", {}, () => [\n typeof _ctx.label !== \"string\" ? (openBlock(), createBlock(resolveDynamicComponent(_ctx.label), { key: 0 })) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [\n createTextVNode(toDisplayString(_ctx.label), 1)\n ], 64))\n ])\n ], 16, _hoisted_3$1)\n ], 8, _hoisted_1$8);\n };\n }\n});\nconst _hoisted_1$7 = [\"id\", \"d\", \"marker-end\", \"marker-start\"];\nconst _hoisted_2$1 = [\"d\", \"stroke-width\"];\nconst __default__$d = {\n name: \"BaseEdge\",\n inheritAttrs: false,\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$d = /* @__PURE__ */ defineComponent({\n ...__default__$d,\n props: {\n id: {},\n labelX: {},\n labelY: {},\n path: {},\n label: {},\n markerStart: {},\n markerEnd: {},\n interactionWidth: { default: 20 },\n labelStyle: {},\n labelShowBg: { type: Boolean },\n labelBgStyle: {},\n labelBgPadding: {},\n labelBgBorderRadius: {}\n },\n setup(__props, { expose: __expose }) {\n const pathEl = ref(null);\n const interactionEl = ref(null);\n const labelEl = ref(null);\n const attrs = useAttrs();\n __expose({\n pathEl,\n interactionEl,\n labelEl\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(Fragment, null, [\n createElementVNode(\"path\", mergeProps(unref(attrs), {\n id: _ctx.id,\n ref_key: \"pathEl\",\n ref: pathEl,\n d: _ctx.path,\n class: \"vue-flow__edge-path\",\n \"marker-end\": _ctx.markerEnd,\n \"marker-start\": _ctx.markerStart\n }), null, 16, _hoisted_1$7),\n _ctx.interactionWidth ? (openBlock(), createElementBlock(\"path\", {\n key: 0,\n ref_key: \"interactionEl\",\n ref: interactionEl,\n fill: \"none\",\n d: _ctx.path,\n \"stroke-width\": _ctx.interactionWidth,\n \"stroke-opacity\": 0,\n class: \"vue-flow__edge-interaction\"\n }, null, 8, _hoisted_2$1)) : createCommentVNode(\"\", true),\n _ctx.label && _ctx.labelX && _ctx.labelY ? (openBlock(), createBlock(_sfc_main$e, {\n key: 1,\n ref_key: \"labelEl\",\n ref: labelEl,\n x: _ctx.labelX,\n y: _ctx.labelY,\n label: _ctx.label,\n \"label-show-bg\": _ctx.labelShowBg,\n \"label-bg-style\": _ctx.labelBgStyle,\n \"label-bg-padding\": _ctx.labelBgPadding,\n \"label-bg-border-radius\": _ctx.labelBgBorderRadius,\n \"label-style\": _ctx.labelStyle\n }, null, 8, [\"x\", \"y\", \"label\", \"label-show-bg\", \"label-bg-style\", \"label-bg-padding\", \"label-bg-border-radius\", \"label-style\"])) : createCommentVNode(\"\", true)\n ], 64);\n };\n }\n});\nfunction getSimpleEdgeCenter({\n sourceX,\n sourceY,\n targetX,\n targetY\n}) {\n const xOffset = Math.abs(targetX - sourceX) / 2;\n const centerX = targetX < sourceX ? targetX + xOffset : targetX - xOffset;\n const yOffset = Math.abs(targetY - sourceY) / 2;\n const centerY = targetY < sourceY ? targetY + yOffset : targetY - yOffset;\n return [centerX, centerY, xOffset, yOffset];\n}\nfunction getBezierEdgeCenter({\n sourceX,\n sourceY,\n targetX,\n targetY,\n sourceControlX,\n sourceControlY,\n targetControlX,\n targetControlY\n}) {\n const centerX = sourceX * 0.125 + sourceControlX * 0.375 + targetControlX * 0.375 + targetX * 0.125;\n const centerY = sourceY * 0.125 + sourceControlY * 0.375 + targetControlY * 0.375 + targetY * 0.125;\n const offsetX = Math.abs(centerX - sourceX);\n const offsetY = Math.abs(centerY - sourceY);\n return [centerX, centerY, offsetX, offsetY];\n}\nfunction calculateControlOffset(distance2, curvature) {\n if (distance2 >= 0) {\n return 0.5 * distance2;\n } else {\n return curvature * 25 * Math.sqrt(-distance2);\n }\n}\nfunction getControlWithCurvature({ pos, x1, y1, x2, y2, c }) {\n let ctX, ctY;\n switch (pos) {\n case Position.Left:\n ctX = x1 - calculateControlOffset(x1 - x2, c);\n ctY = y1;\n break;\n case Position.Right:\n ctX = x1 + calculateControlOffset(x2 - x1, c);\n ctY = y1;\n break;\n case Position.Top:\n ctX = x1;\n ctY = y1 - calculateControlOffset(y1 - y2, c);\n break;\n case Position.Bottom:\n ctX = x1;\n ctY = y1 + calculateControlOffset(y2 - y1, c);\n break;\n }\n return [ctX, ctY];\n}\nfunction getBezierPath(bezierPathParams) {\n const {\n sourceX,\n sourceY,\n sourcePosition = Position.Bottom,\n targetX,\n targetY,\n targetPosition = Position.Top,\n curvature = 0.25\n } = bezierPathParams;\n const [sourceControlX, sourceControlY] = getControlWithCurvature({\n pos: sourcePosition,\n x1: sourceX,\n y1: sourceY,\n x2: targetX,\n y2: targetY,\n c: curvature\n });\n const [targetControlX, targetControlY] = getControlWithCurvature({\n pos: targetPosition,\n x1: targetX,\n y1: targetY,\n x2: sourceX,\n y2: sourceY,\n c: curvature\n });\n const [labelX, labelY, offsetX, offsetY] = getBezierEdgeCenter({\n sourceX,\n sourceY,\n targetX,\n targetY,\n sourceControlX,\n sourceControlY,\n targetControlX,\n targetControlY\n });\n return [\n `M${sourceX},${sourceY} C${sourceControlX},${sourceControlY} ${targetControlX},${targetControlY} ${targetX},${targetY}`,\n labelX,\n labelY,\n offsetX,\n offsetY\n ];\n}\nfunction getControl({ pos, x1, y1, x2, y2 }) {\n let ctX, ctY;\n switch (pos) {\n case Position.Left:\n case Position.Right:\n ctX = 0.5 * (x1 + x2);\n ctY = y1;\n break;\n case Position.Top:\n case Position.Bottom:\n ctX = x1;\n ctY = 0.5 * (y1 + y2);\n break;\n }\n return [ctX, ctY];\n}\nfunction getSimpleBezierPath(simpleBezierPathParams) {\n const {\n sourceX,\n sourceY,\n sourcePosition = Position.Bottom,\n targetX,\n targetY,\n targetPosition = Position.Top\n } = simpleBezierPathParams;\n const [sourceControlX, sourceControlY] = getControl({\n pos: sourcePosition,\n x1: sourceX,\n y1: sourceY,\n x2: targetX,\n y2: targetY\n });\n const [targetControlX, targetControlY] = getControl({\n pos: targetPosition,\n x1: targetX,\n y1: targetY,\n x2: sourceX,\n y2: sourceY\n });\n const [centerX, centerY, offsetX, offsetY] = getBezierEdgeCenter({\n sourceX,\n sourceY,\n targetX,\n targetY,\n sourceControlX,\n sourceControlY,\n targetControlX,\n targetControlY\n });\n return [\n `M${sourceX},${sourceY} C${sourceControlX},${sourceControlY} ${targetControlX},${targetControlY} ${targetX},${targetY}`,\n centerX,\n centerY,\n offsetX,\n offsetY\n ];\n}\nconst handleDirections = {\n [Position.Left]: { x: -1, y: 0 },\n [Position.Right]: { x: 1, y: 0 },\n [Position.Top]: { x: 0, y: -1 },\n [Position.Bottom]: { x: 0, y: 1 }\n};\nfunction getDirection({\n source,\n sourcePosition = Position.Bottom,\n target\n}) {\n if (sourcePosition === Position.Left || sourcePosition === Position.Right) {\n return source.x < target.x ? { x: 1, y: 0 } : { x: -1, y: 0 };\n }\n return source.y < target.y ? { x: 0, y: 1 } : { x: 0, y: -1 };\n}\nfunction distance(a, b) {\n return Math.sqrt((b.x - a.x) ** 2 + (b.y - a.y) ** 2);\n}\nfunction getPoints({\n source,\n sourcePosition = Position.Bottom,\n target,\n targetPosition = Position.Top,\n center,\n offset\n}) {\n const sourceDir = handleDirections[sourcePosition];\n const targetDir = handleDirections[targetPosition];\n const sourceGapped = { x: source.x + sourceDir.x * offset, y: source.y + sourceDir.y * offset };\n const targetGapped = { x: target.x + targetDir.x * offset, y: target.y + targetDir.y * offset };\n const dir = getDirection({\n source: sourceGapped,\n sourcePosition,\n target: targetGapped\n });\n const dirAccessor = dir.x !== 0 ? \"x\" : \"y\";\n const currDir = dir[dirAccessor];\n let points;\n let centerX, centerY;\n const sourceGapOffset = { x: 0, y: 0 };\n const targetGapOffset = { x: 0, y: 0 };\n const [defaultCenterX, defaultCenterY, defaultOffsetX, defaultOffsetY] = getSimpleEdgeCenter({\n sourceX: source.x,\n sourceY: source.y,\n targetX: target.x,\n targetY: target.y\n });\n if (sourceDir[dirAccessor] * targetDir[dirAccessor] === -1) {\n centerX = center.x ?? defaultCenterX;\n centerY = center.y ?? defaultCenterY;\n const verticalSplit = [\n { x: centerX, y: sourceGapped.y },\n { x: centerX, y: targetGapped.y }\n ];\n const horizontalSplit = [\n { x: sourceGapped.x, y: centerY },\n { x: targetGapped.x, y: centerY }\n ];\n if (sourceDir[dirAccessor] === currDir) {\n points = dirAccessor === \"x\" ? verticalSplit : horizontalSplit;\n } else {\n points = dirAccessor === \"x\" ? horizontalSplit : verticalSplit;\n }\n } else {\n const sourceTarget = [{ x: sourceGapped.x, y: targetGapped.y }];\n const targetSource = [{ x: targetGapped.x, y: sourceGapped.y }];\n if (dirAccessor === \"x\") {\n points = sourceDir.x === currDir ? targetSource : sourceTarget;\n } else {\n points = sourceDir.y === currDir ? sourceTarget : targetSource;\n }\n if (sourcePosition === targetPosition) {\n const diff = Math.abs(source[dirAccessor] - target[dirAccessor]);\n if (diff <= offset) {\n const gapOffset = Math.min(offset - 1, offset - diff);\n if (sourceDir[dirAccessor] === currDir) {\n sourceGapOffset[dirAccessor] = (sourceGapped[dirAccessor] > source[dirAccessor] ? -1 : 1) * gapOffset;\n } else {\n targetGapOffset[dirAccessor] = (targetGapped[dirAccessor] > target[dirAccessor] ? -1 : 1) * gapOffset;\n }\n }\n }\n if (sourcePosition !== targetPosition) {\n const dirAccessorOpposite = dirAccessor === \"x\" ? \"y\" : \"x\";\n const isSameDir = sourceDir[dirAccessor] === targetDir[dirAccessorOpposite];\n const sourceGtTargetOppo = sourceGapped[dirAccessorOpposite] > targetGapped[dirAccessorOpposite];\n const sourceLtTargetOppo = sourceGapped[dirAccessorOpposite] < targetGapped[dirAccessorOpposite];\n const flipSourceTarget = sourceDir[dirAccessor] === 1 && (!isSameDir && sourceGtTargetOppo || isSameDir && sourceLtTargetOppo) || sourceDir[dirAccessor] !== 1 && (!isSameDir && sourceLtTargetOppo || isSameDir && sourceGtTargetOppo);\n if (flipSourceTarget) {\n points = dirAccessor === \"x\" ? sourceTarget : targetSource;\n }\n }\n const sourceGapPoint = { x: sourceGapped.x + sourceGapOffset.x, y: sourceGapped.y + sourceGapOffset.y };\n const targetGapPoint = { x: targetGapped.x + targetGapOffset.x, y: targetGapped.y + targetGapOffset.y };\n const maxXDistance = Math.max(Math.abs(sourceGapPoint.x - points[0].x), Math.abs(targetGapPoint.x - points[0].x));\n const maxYDistance = Math.max(Math.abs(sourceGapPoint.y - points[0].y), Math.abs(targetGapPoint.y - points[0].y));\n if (maxXDistance >= maxYDistance) {\n centerX = (sourceGapPoint.x + targetGapPoint.x) / 2;\n centerY = points[0].y;\n } else {\n centerX = points[0].x;\n centerY = (sourceGapPoint.y + targetGapPoint.y) / 2;\n }\n }\n const pathPoints = [\n source,\n { x: sourceGapped.x + sourceGapOffset.x, y: sourceGapped.y + sourceGapOffset.y },\n ...points,\n { x: targetGapped.x + targetGapOffset.x, y: targetGapped.y + targetGapOffset.y },\n target\n ];\n return [pathPoints, centerX, centerY, defaultOffsetX, defaultOffsetY];\n}\nfunction getBend(a, b, c, size) {\n const bendSize = Math.min(distance(a, b) / 2, distance(b, c) / 2, size);\n const { x, y } = b;\n if (a.x === x && x === c.x || a.y === y && y === c.y) {\n return `L${x} ${y}`;\n }\n if (a.y === y) {\n const xDir2 = a.x < c.x ? -1 : 1;\n const yDir2 = a.y < c.y ? 1 : -1;\n return `L ${x + bendSize * xDir2},${y}Q ${x},${y} ${x},${y + bendSize * yDir2}`;\n }\n const xDir = a.x < c.x ? 1 : -1;\n const yDir = a.y < c.y ? -1 : 1;\n return `L ${x},${y + bendSize * yDir}Q ${x},${y} ${x + bendSize * xDir},${y}`;\n}\nfunction getSmoothStepPath(smoothStepPathParams) {\n const {\n sourceX,\n sourceY,\n sourcePosition = Position.Bottom,\n targetX,\n targetY,\n targetPosition = Position.Top,\n borderRadius = 5,\n centerX,\n centerY,\n offset = 20\n } = smoothStepPathParams;\n const [points, labelX, labelY, offsetX, offsetY] = getPoints({\n source: { x: sourceX, y: sourceY },\n sourcePosition,\n target: { x: targetX, y: targetY },\n targetPosition,\n center: { x: centerX, y: centerY },\n offset\n });\n const path = points.reduce((res, p, i) => {\n let segment;\n if (i > 0 && i < points.length - 1) {\n segment = getBend(points[i - 1], p, points[i + 1], borderRadius);\n } else {\n segment = `${i === 0 ? \"M\" : \"L\"}${p.x} ${p.y}`;\n }\n res += segment;\n return res;\n }, \"\");\n return [path, labelX, labelY, offsetX, offsetY];\n}\nfunction getStraightPath(straightEdgeParams) {\n const { sourceX, sourceY, targetX, targetY } = straightEdgeParams;\n const [centerX, centerY, offsetX, offsetY] = getSimpleEdgeCenter({\n sourceX,\n sourceY,\n targetX,\n targetY\n });\n return [`M ${sourceX},${sourceY}L ${targetX},${targetY}`, centerX, centerY, offsetX, offsetY];\n}\nconst StraightEdge = defineComponent({\n name: \"StraightEdge\",\n props: [\n \"label\",\n \"labelStyle\",\n \"labelShowBg\",\n \"labelBgStyle\",\n \"labelBgPadding\",\n \"labelBgBorderRadius\",\n \"sourceY\",\n \"sourceX\",\n \"targetX\",\n \"targetY\",\n \"markerEnd\",\n \"markerStart\",\n \"interactionWidth\"\n ],\n compatConfig: { MODE: 3 },\n setup(props, { attrs }) {\n return () => {\n const [path, labelX, labelY] = getStraightPath(props);\n return h(_sfc_main$d, {\n path,\n labelX,\n labelY,\n ...attrs,\n ...props\n });\n };\n }\n});\nconst StraightEdge$1 = StraightEdge;\nconst SmoothStepEdge = defineComponent({\n name: \"SmoothStepEdge\",\n props: [\n \"sourcePosition\",\n \"targetPosition\",\n \"label\",\n \"labelStyle\",\n \"labelShowBg\",\n \"labelBgStyle\",\n \"labelBgPadding\",\n \"labelBgBorderRadius\",\n \"sourceY\",\n \"sourceX\",\n \"targetX\",\n \"targetY\",\n \"borderRadius\",\n \"markerEnd\",\n \"markerStart\",\n \"interactionWidth\",\n \"offset\"\n ],\n compatConfig: { MODE: 3 },\n setup(props, { attrs }) {\n return () => {\n const [path, labelX, labelY] = getSmoothStepPath({\n ...props,\n sourcePosition: props.sourcePosition ?? Position.Bottom,\n targetPosition: props.targetPosition ?? Position.Top\n });\n return h(_sfc_main$d, {\n path,\n labelX,\n labelY,\n ...attrs,\n ...props\n });\n };\n }\n});\nconst SmoothStepEdge$1 = SmoothStepEdge;\nconst StepEdge = defineComponent({\n name: \"StepEdge\",\n props: [\n \"sourcePosition\",\n \"targetPosition\",\n \"label\",\n \"labelStyle\",\n \"labelShowBg\",\n \"labelBgStyle\",\n \"labelBgPadding\",\n \"labelBgBorderRadius\",\n \"sourceY\",\n \"sourceX\",\n \"targetX\",\n \"targetY\",\n \"markerEnd\",\n \"markerStart\",\n \"interactionWidth\"\n ],\n setup(props, { attrs }) {\n return () => h(SmoothStepEdge$1, { ...props, ...attrs, borderRadius: 0 });\n }\n});\nconst StepEdge$1 = StepEdge;\nconst BezierEdge = defineComponent({\n name: \"BezierEdge\",\n props: [\n \"sourcePosition\",\n \"targetPosition\",\n \"label\",\n \"labelStyle\",\n \"labelShowBg\",\n \"labelBgStyle\",\n \"labelBgPadding\",\n \"labelBgBorderRadius\",\n \"sourceY\",\n \"sourceX\",\n \"targetX\",\n \"targetY\",\n \"curvature\",\n \"markerEnd\",\n \"markerStart\",\n \"interactionWidth\"\n ],\n compatConfig: { MODE: 3 },\n setup(props, { attrs }) {\n return () => {\n const [path, labelX, labelY] = getBezierPath({\n ...props,\n sourcePosition: props.sourcePosition ?? Position.Bottom,\n targetPosition: props.targetPosition ?? Position.Top\n });\n return h(_sfc_main$d, {\n path,\n labelX,\n labelY,\n ...attrs,\n ...props\n });\n };\n }\n});\nconst BezierEdge$1 = BezierEdge;\nconst SimpleBezierEdge = defineComponent({\n name: \"SimpleBezierEdge\",\n props: [\n \"sourcePosition\",\n \"targetPosition\",\n \"label\",\n \"labelStyle\",\n \"labelShowBg\",\n \"labelBgStyle\",\n \"labelBgPadding\",\n \"labelBgBorderRadius\",\n \"sourceY\",\n \"sourceX\",\n \"targetX\",\n \"targetY\",\n \"markerEnd\",\n \"markerStart\",\n \"interactionWidth\"\n ],\n compatConfig: { MODE: 3 },\n setup(props, { attrs }) {\n return () => {\n const [path, labelX, labelY] = getSimpleBezierPath({\n ...props,\n sourcePosition: props.sourcePosition ?? Position.Bottom,\n targetPosition: props.targetPosition ?? Position.Top\n });\n return h(_sfc_main$d, {\n path,\n labelX,\n labelY,\n ...attrs,\n ...props\n });\n };\n }\n});\nconst SimpleBezierEdge$1 = SimpleBezierEdge;\nconst defaultNodeTypes = {\n input: InputNode$1,\n default: DefaultNode$1,\n output: OutputNode$1\n};\nconst defaultEdgeTypes = {\n default: BezierEdge$1,\n straight: StraightEdge$1,\n step: StepEdge$1,\n smoothstep: SmoothStepEdge$1,\n simplebezier: SimpleBezierEdge$1\n};\nfunction useGetters(state, nodeLookup, edgeLookup) {\n const getNode = computed(() => (id2) => nodeLookup.value.get(id2));\n const getEdge = computed(() => (id2) => edgeLookup.value.get(id2));\n const getEdgeTypes = computed(() => {\n const edgeTypes = {\n ...defaultEdgeTypes,\n ...state.edgeTypes\n };\n const keys = Object.keys(edgeTypes);\n for (const e of state.edges) {\n e.type && !keys.includes(e.type) && (edgeTypes[e.type] = e.type);\n }\n return edgeTypes;\n });\n const getNodeTypes = computed(() => {\n const nodeTypes = {\n ...defaultNodeTypes,\n ...state.nodeTypes\n };\n const keys = Object.keys(nodeTypes);\n for (const n of state.nodes) {\n n.type && !keys.includes(n.type) && (nodeTypes[n.type] = n.type);\n }\n return nodeTypes;\n });\n const getNodes = computed(() => {\n if (state.onlyRenderVisibleElements) {\n return getNodesInside(\n state.nodes,\n {\n x: 0,\n y: 0,\n width: state.dimensions.width,\n height: state.dimensions.height\n },\n state.viewport,\n true\n );\n }\n return state.nodes;\n });\n const getEdges = computed(() => {\n if (state.onlyRenderVisibleElements) {\n const visibleEdges = [];\n for (const edge of state.edges) {\n const source = nodeLookup.value.get(edge.source);\n const target = nodeLookup.value.get(edge.target);\n if (isEdgeVisible({\n sourcePos: source.computedPosition || { x: 0, y: 0 },\n targetPos: target.computedPosition || { x: 0, y: 0 },\n sourceWidth: source.dimensions.width,\n sourceHeight: source.dimensions.height,\n targetWidth: target.dimensions.width,\n targetHeight: target.dimensions.height,\n width: state.dimensions.width,\n height: state.dimensions.height,\n viewport: state.viewport\n })) {\n visibleEdges.push(edge);\n }\n }\n return visibleEdges;\n }\n return state.edges;\n });\n const getElements = computed(() => [...getNodes.value, ...getEdges.value]);\n const getSelectedNodes = computed(() => {\n const selectedNodes = [];\n for (const node of state.nodes) {\n if (node.selected) {\n selectedNodes.push(node);\n }\n }\n return selectedNodes;\n });\n const getSelectedEdges = computed(() => {\n const selectedEdges = [];\n for (const edge of state.edges) {\n if (edge.selected) {\n selectedEdges.push(edge);\n }\n }\n return selectedEdges;\n });\n const getSelectedElements = computed(() => [\n ...getSelectedNodes.value,\n ...getSelectedEdges.value\n ]);\n const getNodesInitialized = computed(() => {\n const initializedNodes = [];\n for (const node of state.nodes) {\n if (!!node.dimensions.width && !!node.dimensions.height && node.handleBounds !== void 0) {\n initializedNodes.push(node);\n }\n }\n return initializedNodes;\n });\n const areNodesInitialized = computed(\n () => getNodes.value.length > 0 && getNodesInitialized.value.length === getNodes.value.length\n );\n return {\n getNode,\n getEdge,\n getElements,\n getEdgeTypes,\n getNodeTypes,\n getEdges,\n getNodes,\n getSelectedElements,\n getSelectedNodes,\n getSelectedEdges,\n getNodesInitialized,\n areNodesInitialized\n };\n}\nclass Storage {\n constructor() {\n this.currentId = 0;\n this.flows = /* @__PURE__ */ new Map();\n }\n static getInstance() {\n var _a;\n const vueApp = (_a = getCurrentInstance()) == null ? void 0 : _a.appContext.app;\n const existingInstance = (vueApp == null ? void 0 : vueApp.config.globalProperties.$vueFlowStorage) ?? Storage.instance;\n Storage.instance = existingInstance ?? new Storage();\n if (vueApp) {\n vueApp.config.globalProperties.$vueFlowStorage = Storage.instance;\n }\n return Storage.instance;\n }\n set(id2, flow) {\n return this.flows.set(id2, flow);\n }\n get(id2) {\n return this.flows.get(id2);\n }\n remove(id2) {\n return this.flows.delete(id2);\n }\n create(id2, preloadedState) {\n const state = useState();\n const reactiveState = reactive(state);\n const hooksOn = {};\n for (const [n, h2] of Object.entries(reactiveState.hooks)) {\n const name = `on${n.charAt(0).toUpperCase() + n.slice(1)}`;\n hooksOn[name] = h2.on;\n }\n const emits = {};\n for (const [n, h2] of Object.entries(reactiveState.hooks)) {\n emits[n] = h2.trigger;\n }\n const nodeLookup = computed(() => {\n const nodesMap = /* @__PURE__ */ new Map();\n for (const node of reactiveState.nodes) {\n nodesMap.set(node.id, node);\n }\n return nodesMap;\n });\n const edgeLookup = computed(() => {\n const edgesMap = /* @__PURE__ */ new Map();\n for (const edge of reactiveState.edges) {\n edgesMap.set(edge.id, edge);\n }\n return edgesMap;\n });\n const getters = useGetters(reactiveState, nodeLookup, edgeLookup);\n const actions = useActions(reactiveState, nodeLookup, edgeLookup);\n actions.setState({ ...reactiveState, ...preloadedState });\n const flow = {\n ...hooksOn,\n ...getters,\n ...actions,\n ...toRefs(reactiveState),\n nodeLookup,\n edgeLookup,\n emits,\n id: id2,\n vueFlowVersion: \"1.45.0\",\n $destroy: () => {\n this.remove(id2);\n }\n };\n this.set(id2, flow);\n return flow;\n }\n getId() {\n return `vue-flow-${this.currentId++}`;\n }\n}\nfunction useVueFlow(idOrOpts) {\n const storage = Storage.getInstance();\n const scope = getCurrentScope();\n const isOptsObj = typeof idOrOpts === \"object\";\n const options = isOptsObj ? idOrOpts : { id: idOrOpts };\n const id2 = options.id;\n const vueFlowId = id2 ?? (scope == null ? void 0 : scope.vueFlowId);\n let vueFlow;\n if (scope) {\n const injectedState = inject(VueFlow, null);\n if (typeof injectedState !== \"undefined\" && injectedState !== null && (!vueFlowId || injectedState.id === vueFlowId)) {\n vueFlow = injectedState;\n }\n }\n if (!vueFlow) {\n if (vueFlowId) {\n vueFlow = storage.get(vueFlowId);\n }\n }\n if (!vueFlow || vueFlowId && vueFlow.id !== vueFlowId) {\n const name = id2 ?? storage.getId();\n const state = storage.create(name, options);\n vueFlow = state;\n const vfScope = scope ?? effectScope(true);\n vfScope.run(() => {\n watch(\n state.applyDefault,\n (shouldApplyDefault, __, onCleanup) => {\n const nodesChangeHandler = (changes) => {\n state.applyNodeChanges(changes);\n };\n const edgesChangeHandler = (changes) => {\n state.applyEdgeChanges(changes);\n };\n if (shouldApplyDefault) {\n state.onNodesChange(nodesChangeHandler);\n state.onEdgesChange(edgesChangeHandler);\n } else {\n state.hooks.value.nodesChange.off(nodesChangeHandler);\n state.hooks.value.edgesChange.off(edgesChangeHandler);\n }\n onCleanup(() => {\n state.hooks.value.nodesChange.off(nodesChangeHandler);\n state.hooks.value.edgesChange.off(edgesChangeHandler);\n });\n },\n { immediate: true }\n );\n tryOnScopeDispose(() => {\n if (vueFlow) {\n const storedInstance = storage.get(vueFlow.id);\n if (storedInstance) {\n storedInstance.$destroy();\n } else {\n warn(`No store instance found for id ${vueFlow.id} in storage.`);\n }\n }\n });\n });\n } else {\n if (isOptsObj) {\n vueFlow.setState(options);\n }\n }\n if (scope) {\n provide(VueFlow, vueFlow);\n scope.vueFlowId = vueFlow.id;\n }\n if (isOptsObj) {\n const instance = getCurrentInstance();\n if ((instance == null ? void 0 : instance.type.name) !== \"VueFlow\") {\n vueFlow.emits.error(new VueFlowError(ErrorCode.USEVUEFLOW_OPTIONS));\n }\n }\n return vueFlow;\n}\nfunction useResizeHandler(viewportEl) {\n const { emits, dimensions } = useVueFlow();\n let resizeObserver;\n onMounted(() => {\n const rendererNode = viewportEl.value;\n const updateDimensions = () => {\n if (!rendererNode) {\n return;\n }\n const size = getDimensions(rendererNode);\n if (size.width === 0 || size.height === 0) {\n emits.error(new VueFlowError(ErrorCode.MISSING_VIEWPORT_DIMENSIONS));\n }\n dimensions.value = { width: size.width || 500, height: size.height || 500 };\n };\n updateDimensions();\n window.addEventListener(\"resize\", updateDimensions);\n if (rendererNode) {\n resizeObserver = new ResizeObserver(() => updateDimensions());\n resizeObserver.observe(rendererNode);\n }\n onBeforeUnmount(() => {\n window.removeEventListener(\"resize\", updateDimensions);\n if (resizeObserver && rendererNode) {\n resizeObserver.unobserve(rendererNode);\n }\n });\n });\n}\nconst __default__$c = {\n name: \"UserSelection\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$c = /* @__PURE__ */ defineComponent({\n ...__default__$c,\n props: {\n userSelectionRect: {}\n },\n setup(__props) {\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: \"vue-flow__selection vue-flow__container\",\n style: normalizeStyle({\n width: `${_ctx.userSelectionRect.width}px`,\n height: `${_ctx.userSelectionRect.height}px`,\n transform: `translate(${_ctx.userSelectionRect.x}px, ${_ctx.userSelectionRect.y}px)`\n })\n }, null, 4);\n };\n }\n});\nconst _hoisted_1$6 = [\"tabIndex\"];\nconst __default__$b = {\n name: \"NodesSelection\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$b = /* @__PURE__ */ defineComponent({\n ...__default__$b,\n setup(__props) {\n const { emits, viewport, getSelectedNodes, noPanClassName, disableKeyboardA11y, userSelectionActive } = useVueFlow();\n const updatePositions = useUpdateNodePositions();\n const el = ref(null);\n const dragging = useDrag({\n el,\n onStart(args) {\n emits.selectionDragStart(args);\n },\n onDrag(args) {\n emits.selectionDrag(args);\n },\n onStop(args) {\n emits.selectionDragStop(args);\n }\n });\n onMounted(() => {\n var _a;\n if (!disableKeyboardA11y.value) {\n (_a = el.value) == null ? void 0 : _a.focus({ preventScroll: true });\n }\n });\n const selectedNodesBBox = computed(() => getRectOfNodes(getSelectedNodes.value));\n const innerStyle = computed(() => ({\n width: `${selectedNodesBBox.value.width}px`,\n height: `${selectedNodesBBox.value.height}px`,\n top: `${selectedNodesBBox.value.y}px`,\n left: `${selectedNodesBBox.value.x}px`\n }));\n function onContextMenu(event) {\n emits.selectionContextMenu({ event, nodes: getSelectedNodes.value });\n }\n function onKeyDown(event) {\n if (disableKeyboardA11y) {\n return;\n }\n if (arrowKeyDiffs[event.key]) {\n event.preventDefault();\n updatePositions(\n {\n x: arrowKeyDiffs[event.key].x,\n y: arrowKeyDiffs[event.key].y\n },\n event.shiftKey\n );\n }\n }\n return (_ctx, _cache) => {\n return !unref(userSelectionActive) && selectedNodesBBox.value.width && selectedNodesBBox.value.height ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass([\"vue-flow__nodesselection vue-flow__container\", unref(noPanClassName)]),\n style: normalizeStyle({ transform: `translate(${unref(viewport).x}px,${unref(viewport).y}px) scale(${unref(viewport).zoom})` })\n }, [\n createElementVNode(\"div\", {\n ref_key: \"el\",\n ref: el,\n class: normalizeClass([{ dragging: unref(dragging) }, \"vue-flow__nodesselection-rect\"]),\n style: normalizeStyle(innerStyle.value),\n tabIndex: unref(disableKeyboardA11y) ? void 0 : -1,\n onContextmenu: onContextMenu,\n onKeydown: onKeyDown\n }, null, 46, _hoisted_1$6)\n ], 6)) : createCommentVNode(\"\", true);\n };\n }\n});\nfunction getMousePosition(event, containerBounds) {\n return {\n x: event.clientX - containerBounds.left,\n y: event.clientY - containerBounds.top\n };\n}\nconst __default__$a = {\n name: \"Pane\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$a = /* @__PURE__ */ defineComponent({\n ...__default__$a,\n props: {\n isSelecting: { type: Boolean },\n selectionKeyPressed: { type: Boolean }\n },\n setup(__props) {\n const {\n vueFlowRef,\n nodes,\n viewport,\n emits,\n userSelectionActive,\n removeSelectedElements,\n userSelectionRect,\n elementsSelectable,\n nodesSelectionActive,\n getSelectedEdges,\n getSelectedNodes,\n removeNodes,\n removeEdges,\n selectionMode,\n deleteKeyCode,\n multiSelectionKeyCode,\n multiSelectionActive,\n edgeLookup,\n nodeLookup,\n connectionLookup,\n defaultEdgeOptions,\n connectionStartHandle\n } = useVueFlow();\n const container = ref(null);\n const selectedNodeIds = ref(/* @__PURE__ */ new Set());\n const selectedEdgeIds = ref(/* @__PURE__ */ new Set());\n const containerBounds = ref();\n const hasActiveSelection = toRef(() => elementsSelectable.value && (__props.isSelecting || userSelectionActive.value));\n const connectionInProgress = toRef(() => connectionStartHandle.value !== null);\n let selectionInProgress = false;\n let selectionStarted = false;\n const deleteKeyPressed = useKeyPress(deleteKeyCode, { actInsideInputWithModifier: false });\n const multiSelectKeyPressed = useKeyPress(multiSelectionKeyCode);\n watch(deleteKeyPressed, (isKeyPressed) => {\n if (!isKeyPressed) {\n return;\n }\n removeNodes(getSelectedNodes.value);\n removeEdges(getSelectedEdges.value);\n nodesSelectionActive.value = false;\n });\n watch(multiSelectKeyPressed, (isKeyPressed) => {\n multiSelectionActive.value = isKeyPressed;\n });\n function wrapHandler(handler, containerRef) {\n return (event) => {\n if (event.target !== containerRef) {\n return;\n }\n handler == null ? void 0 : handler(event);\n };\n }\n function onClick(event) {\n if (selectionInProgress || connectionInProgress.value) {\n selectionInProgress = false;\n return;\n }\n emits.paneClick(event);\n removeSelectedElements();\n nodesSelectionActive.value = false;\n }\n function onContextMenu(event) {\n event.preventDefault();\n event.stopPropagation();\n emits.paneContextMenu(event);\n }\n function onWheel(event) {\n emits.paneScroll(event);\n }\n function onPointerDown(event) {\n var _a, _b, _c;\n containerBounds.value = (_a = vueFlowRef.value) == null ? void 0 : _a.getBoundingClientRect();\n if (!elementsSelectable.value || !__props.isSelecting || event.button !== 0 || event.target !== container.value || !containerBounds.value) {\n return;\n }\n (_c = (_b = event.target) == null ? void 0 : _b.setPointerCapture) == null ? void 0 : _c.call(_b, event.pointerId);\n const { x, y } = getMousePosition(event, containerBounds.value);\n selectionStarted = true;\n selectionInProgress = false;\n removeSelectedElements();\n userSelectionRect.value = {\n width: 0,\n height: 0,\n startX: x,\n startY: y,\n x,\n y\n };\n emits.selectionStart(event);\n }\n function onPointerMove(event) {\n var _a;\n if (!containerBounds.value || !userSelectionRect.value) {\n return;\n }\n selectionInProgress = true;\n const { x: mouseX, y: mouseY } = getEventPosition(event, containerBounds.value);\n const { startX = 0, startY = 0 } = userSelectionRect.value;\n const nextUserSelectRect = {\n startX,\n startY,\n x: mouseX < startX ? mouseX : startX,\n y: mouseY < startY ? mouseY : startY,\n width: Math.abs(mouseX - startX),\n height: Math.abs(mouseY - startY)\n };\n const prevSelectedNodeIds = selectedNodeIds.value;\n const prevSelectedEdgeIds = selectedEdgeIds.value;\n selectedNodeIds.value = new Set(\n getNodesInside(nodes.value, nextUserSelectRect, viewport.value, selectionMode.value === SelectionMode.Partial, true).map(\n (node) => node.id\n )\n );\n selectedEdgeIds.value = /* @__PURE__ */ new Set();\n const edgesSelectable = ((_a = defaultEdgeOptions.value) == null ? void 0 : _a.selectable) ?? true;\n for (const nodeId of selectedNodeIds.value) {\n const connections = connectionLookup.value.get(nodeId);\n if (!connections) {\n continue;\n }\n for (const { edgeId } of connections.values()) {\n const edge = edgeLookup.value.get(edgeId);\n if (edge && (edge.selectable ?? edgesSelectable)) {\n selectedEdgeIds.value.add(edgeId);\n }\n }\n }\n if (!areSetsEqual(prevSelectedNodeIds, selectedNodeIds.value)) {\n const changes = getSelectionChanges(nodeLookup.value, selectedNodeIds.value, true);\n emits.nodesChange(changes);\n }\n if (!areSetsEqual(prevSelectedEdgeIds, selectedEdgeIds.value)) {\n const changes = getSelectionChanges(edgeLookup.value, selectedEdgeIds.value);\n emits.edgesChange(changes);\n }\n userSelectionRect.value = nextUserSelectRect;\n userSelectionActive.value = true;\n nodesSelectionActive.value = false;\n }\n function onPointerUp(event) {\n var _a;\n if (event.button !== 0 || !selectionStarted) {\n return;\n }\n (_a = event.target) == null ? void 0 : _a.releasePointerCapture(event.pointerId);\n if (!userSelectionActive.value && userSelectionRect.value && event.target === container.value) {\n onClick(event);\n }\n userSelectionActive.value = false;\n userSelectionRect.value = null;\n nodesSelectionActive.value = selectedNodeIds.value.size > 0;\n emits.selectionEnd(event);\n if (__props.selectionKeyPressed) {\n selectionInProgress = false;\n }\n selectionStarted = false;\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n ref_key: \"container\",\n ref: container,\n class: normalizeClass([\"vue-flow__pane vue-flow__container\", { selection: _ctx.isSelecting }]),\n onClick: _cache[0] || (_cache[0] = (event) => hasActiveSelection.value ? void 0 : wrapHandler(onClick, container.value)(event)),\n onContextmenu: _cache[1] || (_cache[1] = ($event) => wrapHandler(onContextMenu, container.value)($event)),\n onWheelPassive: _cache[2] || (_cache[2] = ($event) => wrapHandler(onWheel, container.value)($event)),\n onPointerenter: _cache[3] || (_cache[3] = (event) => hasActiveSelection.value ? void 0 : unref(emits).paneMouseEnter(event)),\n onPointerdown: _cache[4] || (_cache[4] = (event) => hasActiveSelection.value ? onPointerDown(event) : unref(emits).paneMouseMove(event)),\n onPointermove: _cache[5] || (_cache[5] = (event) => hasActiveSelection.value ? onPointerMove(event) : unref(emits).paneMouseMove(event)),\n onPointerup: _cache[6] || (_cache[6] = (event) => hasActiveSelection.value ? onPointerUp(event) : void 0),\n onPointerleave: _cache[7] || (_cache[7] = ($event) => unref(emits).paneMouseLeave($event))\n }, [\n renderSlot(_ctx.$slots, \"default\"),\n unref(userSelectionActive) && unref(userSelectionRect) ? (openBlock(), createBlock(_sfc_main$c, {\n key: 0,\n \"user-selection-rect\": unref(userSelectionRect)\n }, null, 8, [\"user-selection-rect\"])) : createCommentVNode(\"\", true),\n unref(nodesSelectionActive) && unref(getSelectedNodes).length ? (openBlock(), createBlock(_sfc_main$b, { key: 1 })) : createCommentVNode(\"\", true)\n ], 34);\n };\n }\n});\nconst __default__$9 = {\n name: \"Transform\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$9 = /* @__PURE__ */ defineComponent({\n ...__default__$9,\n setup(__props) {\n const { viewport, fitViewOnInit, fitViewOnInitDone } = useVueFlow();\n const isHidden = computed(() => {\n if (fitViewOnInit.value) {\n return !fitViewOnInitDone.value;\n }\n return false;\n });\n const transform = computed(() => `translate(${viewport.value.x}px,${viewport.value.y}px) scale(${viewport.value.zoom})`);\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: \"vue-flow__transformationpane vue-flow__container\",\n style: normalizeStyle({ transform: transform.value, opacity: isHidden.value ? 0 : void 0 })\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 4);\n };\n }\n});\nconst __default__$8 = {\n name: \"Viewport\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$8 = /* @__PURE__ */ defineComponent({\n ...__default__$8,\n setup(__props) {\n const {\n minZoom,\n maxZoom,\n defaultViewport,\n translateExtent,\n zoomActivationKeyCode,\n selectionKeyCode,\n panActivationKeyCode,\n panOnScroll,\n panOnScrollMode,\n panOnScrollSpeed,\n panOnDrag,\n zoomOnDoubleClick,\n zoomOnPinch,\n zoomOnScroll,\n preventScrolling,\n noWheelClassName,\n noPanClassName,\n emits,\n connectionStartHandle,\n userSelectionActive,\n paneDragging,\n d3Zoom: storeD3Zoom,\n d3Selection: storeD3Selection,\n d3ZoomHandler: storeD3ZoomHandler,\n viewport,\n viewportRef,\n paneClickDistance\n } = useVueFlow();\n useResizeHandler(viewportRef);\n const isZoomingOrPanning = shallowRef(false);\n const isPanScrolling = shallowRef(false);\n let panScrollTimeout = null;\n let zoomedWithRightMouseButton = false;\n let mouseButton = 0;\n let prevTransform = {\n x: 0,\n y: 0,\n zoom: 0\n };\n const panKeyPressed = useKeyPress(panActivationKeyCode);\n const selectionKeyPressed = useKeyPress(selectionKeyCode);\n const zoomKeyPressed = useKeyPress(zoomActivationKeyCode);\n const shouldPanOnDrag = toRef(\n () => (!selectionKeyPressed.value || selectionKeyPressed.value && selectionKeyCode.value === true) && (panKeyPressed.value || panOnDrag.value)\n );\n const shouldPanOnScroll = toRef(() => panKeyPressed.value || panOnScroll.value);\n const isSelecting = toRef(() => selectionKeyPressed.value || selectionKeyCode.value === true && shouldPanOnDrag.value !== true);\n onMounted(() => {\n if (!viewportRef.value) {\n warn(\"Viewport element is missing\");\n return;\n }\n const viewportElement = viewportRef.value;\n const bbox = viewportElement.getBoundingClientRect();\n const d3Zoom = zoom().clickDistance(paneClickDistance.value).scaleExtent([minZoom.value, maxZoom.value]).translateExtent(translateExtent.value);\n const d3Selection = select(viewportElement).call(d3Zoom);\n const d3ZoomHandler = d3Selection.on(\"wheel.zoom\");\n const updatedTransform = identity.translate(defaultViewport.value.x ?? 0, defaultViewport.value.y ?? 0).scale(clamp(defaultViewport.value.zoom ?? 1, minZoom.value, maxZoom.value));\n const extent = [\n [0, 0],\n [bbox.width, bbox.height]\n ];\n const constrainedTransform = d3Zoom.constrain()(updatedTransform, extent, translateExtent.value);\n d3Zoom.transform(d3Selection, constrainedTransform);\n d3Zoom.wheelDelta(wheelDelta);\n storeD3Zoom.value = d3Zoom;\n storeD3Selection.value = d3Selection;\n storeD3ZoomHandler.value = d3ZoomHandler;\n viewport.value = { x: constrainedTransform.x, y: constrainedTransform.y, zoom: constrainedTransform.k };\n d3Zoom.on(\"start\", (event) => {\n var _a;\n if (!event.sourceEvent) {\n return null;\n }\n mouseButton = event.sourceEvent.button;\n isZoomingOrPanning.value = true;\n const flowTransform = eventToFlowTransform(event.transform);\n if (((_a = event.sourceEvent) == null ? void 0 : _a.type) === \"mousedown\") {\n paneDragging.value = true;\n }\n prevTransform = flowTransform;\n emits.viewportChangeStart(flowTransform);\n emits.moveStart({ event, flowTransform });\n });\n d3Zoom.on(\"end\", (event) => {\n if (!event.sourceEvent) {\n return null;\n }\n isZoomingOrPanning.value = false;\n paneDragging.value = false;\n if (isRightClickPan(shouldPanOnDrag.value, mouseButton ?? 0) && !zoomedWithRightMouseButton) {\n emits.paneContextMenu(event.sourceEvent);\n }\n zoomedWithRightMouseButton = false;\n if (viewChanged(prevTransform, event.transform)) {\n const flowTransform = eventToFlowTransform(event.transform);\n prevTransform = flowTransform;\n emits.viewportChangeEnd(flowTransform);\n emits.moveEnd({ event, flowTransform });\n }\n });\n d3Zoom.filter((event) => {\n var _a;\n const zoomScroll = zoomKeyPressed.value || zoomOnScroll.value;\n const pinchZoom = zoomOnPinch.value && event.ctrlKey;\n const eventButton = event.button;\n if (eventButton === 1 && event.type === \"mousedown\" && (isWrappedWithClass(event, \"vue-flow__node\") || isWrappedWithClass(event, \"vue-flow__edge\"))) {\n return true;\n }\n if (!shouldPanOnDrag.value && !zoomScroll && !shouldPanOnScroll.value && !zoomOnDoubleClick.value && !zoomOnPinch.value) {\n return false;\n }\n if (userSelectionActive.value) {\n return false;\n }\n if (!zoomOnDoubleClick.value && event.type === \"dblclick\") {\n return false;\n }\n if (isWrappedWithClass(event, noWheelClassName.value) && event.type === \"wheel\") {\n return false;\n }\n if (isWrappedWithClass(event, noPanClassName.value) && (event.type !== \"wheel\" || shouldPanOnScroll.value && event.type === \"wheel\" && !zoomKeyPressed.value)) {\n return false;\n }\n if (!zoomOnPinch.value && event.ctrlKey && event.type === \"wheel\") {\n return false;\n }\n if (!zoomScroll && !shouldPanOnScroll.value && !pinchZoom && event.type === \"wheel\") {\n return false;\n }\n if (!zoomOnPinch && event.type === \"touchstart\" && ((_a = event.touches) == null ? void 0 : _a.length) > 1) {\n event.preventDefault();\n return false;\n }\n if (!shouldPanOnDrag.value && (event.type === \"mousedown\" || event.type === \"touchstart\")) {\n return false;\n }\n if (selectionKeyCode.value === true && Array.isArray(panOnDrag.value) && panOnDrag.value.includes(0) && eventButton === 0) {\n return false;\n }\n if (Array.isArray(panOnDrag.value) && !panOnDrag.value.includes(eventButton) && (event.type === \"mousedown\" || event.type === \"touchstart\")) {\n return false;\n }\n const buttonAllowed = Array.isArray(panOnDrag.value) && panOnDrag.value.includes(eventButton) || selectionKeyCode.value === true && Array.isArray(panOnDrag.value) && !panOnDrag.value.includes(0) || !eventButton || eventButton <= 1;\n return (!event.ctrlKey || panKeyPressed.value || event.type === \"wheel\") && buttonAllowed;\n });\n watch(\n [userSelectionActive, shouldPanOnDrag],\n () => {\n if (userSelectionActive.value && !isZoomingOrPanning.value) {\n d3Zoom.on(\"zoom\", null);\n } else if (!userSelectionActive.value) {\n d3Zoom.on(\"zoom\", (event) => {\n viewport.value = { x: event.transform.x, y: event.transform.y, zoom: event.transform.k };\n const flowTransform = eventToFlowTransform(event.transform);\n zoomedWithRightMouseButton = isRightClickPan(shouldPanOnDrag.value, mouseButton ?? 0);\n emits.viewportChange(flowTransform);\n emits.move({ event, flowTransform });\n });\n }\n },\n { immediate: true }\n );\n watch(\n [userSelectionActive, shouldPanOnScroll, panOnScrollMode, zoomKeyPressed, zoomOnPinch, preventScrolling, noWheelClassName],\n () => {\n if (shouldPanOnScroll.value && !zoomKeyPressed.value && !userSelectionActive.value) {\n d3Selection.on(\n \"wheel.zoom\",\n (event) => {\n if (isWrappedWithClass(event, noWheelClassName.value)) {\n return false;\n }\n const zoomScroll = zoomKeyPressed.value || zoomOnScroll.value;\n const pinchZoom = zoomOnPinch.value && event.ctrlKey;\n const scrollEventEnabled = !preventScrolling.value || shouldPanOnScroll.value || zoomScroll || pinchZoom;\n if (!scrollEventEnabled) {\n return false;\n }\n event.preventDefault();\n event.stopImmediatePropagation();\n const currentZoom = d3Selection.property(\"__zoom\").k || 1;\n const _isMacOs = isMacOs();\n if (!panKeyPressed.value && event.ctrlKey && zoomOnPinch.value && _isMacOs) {\n const point = pointer(event);\n const pinchDelta = wheelDelta(event);\n const zoom2 = currentZoom * 2 ** pinchDelta;\n d3Zoom.scaleTo(d3Selection, zoom2, point, event);\n return;\n }\n const deltaNormalize = event.deltaMode === 1 ? 20 : 1;\n let deltaX = panOnScrollMode.value === PanOnScrollMode.Vertical ? 0 : event.deltaX * deltaNormalize;\n let deltaY = panOnScrollMode.value === PanOnScrollMode.Horizontal ? 0 : event.deltaY * deltaNormalize;\n if (!_isMacOs && event.shiftKey && panOnScrollMode.value !== PanOnScrollMode.Vertical && !deltaX && deltaY) {\n deltaX = deltaY;\n deltaY = 0;\n }\n d3Zoom.translateBy(\n d3Selection,\n -(deltaX / currentZoom) * panOnScrollSpeed.value,\n -(deltaY / currentZoom) * panOnScrollSpeed.value\n );\n const nextViewport = eventToFlowTransform(d3Selection.property(\"__zoom\"));\n if (panScrollTimeout) {\n clearTimeout(panScrollTimeout);\n }\n if (!isPanScrolling.value) {\n isPanScrolling.value = true;\n emits.moveStart({ event, flowTransform: nextViewport });\n emits.viewportChangeStart(nextViewport);\n } else {\n emits.move({ event, flowTransform: nextViewport });\n emits.viewportChange(nextViewport);\n panScrollTimeout = setTimeout(() => {\n emits.moveEnd({ event, flowTransform: nextViewport });\n emits.viewportChangeEnd(nextViewport);\n isPanScrolling.value = false;\n }, 150);\n }\n },\n { passive: false }\n );\n } else if (typeof d3ZoomHandler !== \"undefined\") {\n d3Selection.on(\n \"wheel.zoom\",\n function(event, d) {\n const invalidEvent = !preventScrolling.value && event.type === \"wheel\" && !event.ctrlKey;\n const zoomScroll = zoomKeyPressed.value || zoomOnScroll.value;\n const pinchZoom = zoomOnPinch.value && event.ctrlKey;\n const scrollEventsDisabled = !zoomScroll && !panOnScroll.value && !pinchZoom && event.type === \"wheel\";\n if (scrollEventsDisabled || invalidEvent || isWrappedWithClass(event, noWheelClassName.value)) {\n return null;\n }\n event.preventDefault();\n d3ZoomHandler.call(this, event, d);\n },\n { passive: false }\n );\n }\n },\n { immediate: true }\n );\n });\n function isRightClickPan(pan, usedButton) {\n return usedButton === 2 && Array.isArray(pan) && pan.includes(2);\n }\n function wheelDelta(event) {\n const factor = event.ctrlKey && isMacOs() ? 10 : 1;\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 2e-3) * factor;\n }\n function viewChanged(prevViewport, eventTransform) {\n return prevViewport.x !== eventTransform.x && !Number.isNaN(eventTransform.x) || prevViewport.y !== eventTransform.y && !Number.isNaN(eventTransform.y) || prevViewport.zoom !== eventTransform.k && !Number.isNaN(eventTransform.k);\n }\n function eventToFlowTransform(eventTransform) {\n return {\n x: eventTransform.x,\n y: eventTransform.y,\n zoom: eventTransform.k\n };\n }\n function isWrappedWithClass(event, className) {\n return event.target.closest(`.${className}`);\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n ref_key: \"viewportRef\",\n ref: viewportRef,\n class: \"vue-flow__viewport vue-flow__container\"\n }, [\n createVNode(_sfc_main$a, {\n \"is-selecting\": isSelecting.value,\n \"selection-key-pressed\": unref(selectionKeyPressed),\n class: normalizeClass({\n connecting: !!unref(connectionStartHandle),\n dragging: unref(paneDragging),\n draggable: unref(panOnDrag) === true || Array.isArray(unref(panOnDrag)) && unref(panOnDrag).includes(0)\n })\n }, {\n default: withCtx(() => [\n createVNode(_sfc_main$9, null, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n })\n ]),\n _: 3\n }, 8, [\"is-selecting\", \"selection-key-pressed\", \"class\"])\n ], 512);\n };\n }\n});\nconst _hoisted_1$5 = [\"id\"];\nconst _hoisted_2 = [\"id\"];\nconst _hoisted_3 = [\"id\"];\nconst __default__$7 = {\n name: \"A11yDescriptions\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$7 = /* @__PURE__ */ defineComponent({\n ...__default__$7,\n setup(__props) {\n const { id: id2, disableKeyboardA11y, ariaLiveMessage } = useVueFlow();\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(Fragment, null, [\n createElementVNode(\"div\", {\n id: `${unref(ARIA_NODE_DESC_KEY)}-${unref(id2)}`,\n style: { \"display\": \"none\" }\n }, \" Press enter or space to select a node. \" + toDisplayString(!unref(disableKeyboardA11y) ? \"You can then use the arrow keys to move the node around.\" : \"\") + \" You can then use the arrow keys to move the node around, press delete to remove it and press escape to cancel. \", 9, _hoisted_1$5),\n createElementVNode(\"div\", {\n id: `${unref(ARIA_EDGE_DESC_KEY)}-${unref(id2)}`,\n style: { \"display\": \"none\" }\n }, \" Press enter or space to select an edge. You can then press delete to remove it or press escape to cancel. \", 8, _hoisted_2),\n !unref(disableKeyboardA11y) ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n id: `${unref(ARIA_LIVE_MESSAGE)}-${unref(id2)}`,\n \"aria-live\": \"assertive\",\n \"aria-atomic\": \"true\",\n style: { \"position\": \"absolute\", \"width\": \"1px\", \"height\": \"1px\", \"margin\": \"-1px\", \"border\": \"0\", \"padding\": \"0\", \"overflow\": \"hidden\", \"clip\": \"rect(0px, 0px, 0px, 0px)\", \"clip-path\": \"inset(100%)\" }\n }, toDisplayString(unref(ariaLiveMessage)), 9, _hoisted_3)) : createCommentVNode(\"\", true)\n ], 64);\n };\n }\n});\nfunction useOnInitHandler() {\n const vfInstance = useVueFlow();\n watch(\n () => vfInstance.viewportHelper.value.viewportInitialized,\n (isInitialized) => {\n if (isInitialized) {\n setTimeout(() => {\n vfInstance.emits.init(vfInstance);\n vfInstance.emits.paneReady(vfInstance);\n }, 1);\n }\n }\n );\n}\nfunction shiftX(x, shift, position) {\n if (position === Position.Left) {\n return x - shift;\n }\n if (position === Position.Right) {\n return x + shift;\n }\n return x;\n}\nfunction shiftY(y, shift, position) {\n if (position === Position.Top) {\n return y - shift;\n }\n if (position === Position.Bottom) {\n return y + shift;\n }\n return y;\n}\nconst EdgeAnchor = function({\n radius = 10,\n centerX = 0,\n centerY = 0,\n position = Position.Top,\n type\n}) {\n return h(\"circle\", {\n class: `vue-flow__edgeupdater vue-flow__edgeupdater-${type}`,\n cx: shiftX(centerX, radius, position),\n cy: shiftY(centerY, radius, position),\n r: radius,\n stroke: \"transparent\",\n fill: \"transparent\"\n });\n};\nEdgeAnchor.props = [\"radius\", \"centerX\", \"centerY\", \"position\", \"type\"];\nEdgeAnchor.compatConfig = { MODE: 3 };\nconst EdgeAnchor$1 = EdgeAnchor;\nconst EdgeWrapper = defineComponent({\n name: \"Edge\",\n compatConfig: { MODE: 3 },\n props: [\"id\"],\n setup(props) {\n const {\n id: vueFlowId,\n addSelectedEdges,\n connectionMode,\n edgeUpdaterRadius,\n emits,\n nodesSelectionActive,\n noPanClassName,\n getEdgeTypes,\n removeSelectedEdges,\n findEdge,\n findNode,\n isValidConnection,\n multiSelectionActive,\n disableKeyboardA11y,\n elementsSelectable,\n edgesUpdatable,\n edgesFocusable,\n hooks\n } = useVueFlow();\n const edge = computed(() => findEdge(props.id));\n const { emit, on } = useEdgeHooks(edge.value, emits);\n const slots = inject(Slots);\n const instance = getCurrentInstance();\n const mouseOver = ref(false);\n const updating = ref(false);\n const nodeId = ref(\"\");\n const handleId = ref(null);\n const edgeUpdaterType = ref(\"source\");\n const edgeEl = ref(null);\n const isSelectable = toRef(\n () => typeof edge.value.selectable === \"undefined\" ? elementsSelectable.value : edge.value.selectable\n );\n const isUpdatable = toRef(() => typeof edge.value.updatable === \"undefined\" ? edgesUpdatable.value : edge.value.updatable);\n const isFocusable = toRef(() => typeof edge.value.focusable === \"undefined\" ? edgesFocusable.value : edge.value.focusable);\n provide(EdgeId, props.id);\n provide(EdgeRef, edgeEl);\n const edgeClass = computed(() => edge.value.class instanceof Function ? edge.value.class(edge.value) : edge.value.class);\n const edgeStyle = computed(() => edge.value.style instanceof Function ? edge.value.style(edge.value) : edge.value.style);\n const edgeCmp = computed(() => {\n const name = edge.value.type || \"default\";\n const slot = slots == null ? void 0 : slots[`edge-${name}`];\n if (slot) {\n return slot;\n }\n let edgeType = edge.value.template ?? getEdgeTypes.value[name];\n if (typeof edgeType === \"string\") {\n if (instance) {\n const components = Object.keys(instance.appContext.components);\n if (components && components.includes(name)) {\n edgeType = resolveComponent(name, false);\n }\n }\n }\n if (edgeType && typeof edgeType !== \"string\") {\n return edgeType;\n }\n emits.error(new VueFlowError(ErrorCode.EDGE_TYPE_MISSING, edgeType));\n return false;\n });\n const { handlePointerDown } = useHandle({\n nodeId,\n handleId,\n type: edgeUpdaterType,\n isValidConnection,\n edgeUpdaterType,\n onEdgeUpdate,\n onEdgeUpdateEnd\n });\n return () => {\n const sourceNode = findNode(edge.value.source);\n const targetNode = findNode(edge.value.target);\n const pathOptions = \"pathOptions\" in edge.value ? edge.value.pathOptions : {};\n if (!sourceNode && !targetNode) {\n emits.error(new VueFlowError(ErrorCode.EDGE_SOURCE_TARGET_MISSING, edge.value.id, edge.value.source, edge.value.target));\n return null;\n }\n if (!sourceNode) {\n emits.error(new VueFlowError(ErrorCode.EDGE_SOURCE_MISSING, edge.value.id, edge.value.source));\n return null;\n }\n if (!targetNode) {\n emits.error(new VueFlowError(ErrorCode.EDGE_TARGET_MISSING, edge.value.id, edge.value.target));\n return null;\n }\n if (!edge.value || edge.value.hidden || sourceNode.hidden || targetNode.hidden) {\n return null;\n }\n let sourceNodeHandles;\n if (connectionMode.value === ConnectionMode.Strict) {\n sourceNodeHandles = sourceNode.handleBounds.source;\n } else {\n sourceNodeHandles = [...sourceNode.handleBounds.source || [], ...sourceNode.handleBounds.target || []];\n }\n const sourceHandle = getEdgeHandle(sourceNodeHandles, edge.value.sourceHandle);\n let targetNodeHandles;\n if (connectionMode.value === ConnectionMode.Strict) {\n targetNodeHandles = targetNode.handleBounds.target;\n } else {\n targetNodeHandles = [...targetNode.handleBounds.target || [], ...targetNode.handleBounds.source || []];\n }\n const targetHandle = getEdgeHandle(targetNodeHandles, edge.value.targetHandle);\n const sourcePosition = (sourceHandle == null ? void 0 : sourceHandle.position) || Position.Bottom;\n const targetPosition = (targetHandle == null ? void 0 : targetHandle.position) || Position.Top;\n const { x: sourceX, y: sourceY } = getHandlePosition(sourceNode, sourceHandle, sourcePosition);\n const { x: targetX, y: targetY } = getHandlePosition(targetNode, targetHandle, targetPosition);\n edge.value.sourceX = sourceX;\n edge.value.sourceY = sourceY;\n edge.value.targetX = targetX;\n edge.value.targetY = targetY;\n return h(\n \"g\",\n {\n \"ref\": edgeEl,\n \"key\": props.id,\n \"data-id\": props.id,\n \"class\": [\n \"vue-flow__edge\",\n `vue-flow__edge-${edgeCmp.value === false ? \"default\" : edge.value.type || \"default\"}`,\n noPanClassName.value,\n edgeClass.value,\n {\n updating: mouseOver.value,\n selected: edge.value.selected,\n animated: edge.value.animated,\n inactive: !isSelectable.value && !hooks.value.edgeClick.hasListeners()\n }\n ],\n \"tabIndex\": isFocusable.value ? 0 : void 0,\n \"aria-label\": edge.value.ariaLabel === null ? void 0 : edge.value.ariaLabel ?? `Edge from ${edge.value.source} to ${edge.value.target}`,\n \"aria-describedby\": isFocusable.value ? `${ARIA_EDGE_DESC_KEY}-${vueFlowId}` : void 0,\n \"aria-roledescription\": \"edge\",\n \"role\": isFocusable.value ? \"group\" : \"img\",\n ...edge.value.domAttributes,\n \"onClick\": onEdgeClick,\n \"onContextmenu\": onEdgeContextMenu,\n \"onDblclick\": onDoubleClick,\n \"onMouseenter\": onEdgeMouseEnter,\n \"onMousemove\": onEdgeMouseMove,\n \"onMouseleave\": onEdgeMouseLeave,\n \"onKeyDown\": isFocusable.value ? onKeyDown : void 0\n },\n [\n updating.value ? null : h(edgeCmp.value === false ? getEdgeTypes.value.default : edgeCmp.value, {\n id: props.id,\n sourceNode,\n targetNode,\n source: edge.value.source,\n target: edge.value.target,\n type: edge.value.type,\n updatable: isUpdatable.value,\n selected: edge.value.selected,\n animated: edge.value.animated,\n label: edge.value.label,\n labelStyle: edge.value.labelStyle,\n labelShowBg: edge.value.labelShowBg,\n labelBgStyle: edge.value.labelBgStyle,\n labelBgPadding: edge.value.labelBgPadding,\n labelBgBorderRadius: edge.value.labelBgBorderRadius,\n data: edge.value.data,\n events: { ...edge.value.events, ...on },\n style: edgeStyle.value,\n markerStart: `url('#${getMarkerId(edge.value.markerStart, vueFlowId)}')`,\n markerEnd: `url('#${getMarkerId(edge.value.markerEnd, vueFlowId)}')`,\n sourcePosition,\n targetPosition,\n sourceX,\n sourceY,\n targetX,\n targetY,\n sourceHandleId: edge.value.sourceHandle,\n targetHandleId: edge.value.targetHandle,\n interactionWidth: edge.value.interactionWidth,\n ...pathOptions\n }),\n [\n isUpdatable.value === \"source\" || isUpdatable.value === true ? [\n h(\n \"g\",\n {\n onMousedown: onEdgeUpdaterSourceMouseDown,\n onMouseenter: onEdgeUpdaterMouseEnter,\n onMouseout: onEdgeUpdaterMouseOut\n },\n h(EdgeAnchor$1, {\n \"position\": sourcePosition,\n \"centerX\": sourceX,\n \"centerY\": sourceY,\n \"radius\": edgeUpdaterRadius.value,\n \"type\": \"source\",\n \"data-type\": \"source\"\n })\n )\n ] : null,\n isUpdatable.value === \"target\" || isUpdatable.value === true ? [\n h(\n \"g\",\n {\n onMousedown: onEdgeUpdaterTargetMouseDown,\n onMouseenter: onEdgeUpdaterMouseEnter,\n onMouseout: onEdgeUpdaterMouseOut\n },\n h(EdgeAnchor$1, {\n \"position\": targetPosition,\n \"centerX\": targetX,\n \"centerY\": targetY,\n \"radius\": edgeUpdaterRadius.value,\n \"type\": \"target\",\n \"data-type\": \"target\"\n })\n )\n ] : null\n ]\n ]\n );\n };\n function onEdgeUpdaterMouseEnter() {\n mouseOver.value = true;\n }\n function onEdgeUpdaterMouseOut() {\n mouseOver.value = false;\n }\n function onEdgeUpdate(event, connection) {\n emit.update({ event, edge: edge.value, connection });\n }\n function onEdgeUpdateEnd(event) {\n emit.updateEnd({ event, edge: edge.value });\n updating.value = false;\n }\n function handleEdgeUpdater(event, isSourceHandle) {\n if (event.button !== 0) {\n return;\n }\n updating.value = true;\n nodeId.value = isSourceHandle ? edge.value.target : edge.value.source;\n handleId.value = (isSourceHandle ? edge.value.targetHandle : edge.value.sourceHandle) ?? null;\n edgeUpdaterType.value = isSourceHandle ? \"target\" : \"source\";\n emit.updateStart({ event, edge: edge.value });\n handlePointerDown(event);\n }\n function onEdgeClick(event) {\n var _a;\n const data = { event, edge: edge.value };\n if (isSelectable.value) {\n nodesSelectionActive.value = false;\n if (edge.value.selected && multiSelectionActive.value) {\n removeSelectedEdges([edge.value]);\n (_a = edgeEl.value) == null ? void 0 : _a.blur();\n } else {\n addSelectedEdges([edge.value]);\n }\n }\n emit.click(data);\n }\n function onEdgeContextMenu(event) {\n emit.contextMenu({ event, edge: edge.value });\n }\n function onDoubleClick(event) {\n emit.doubleClick({ event, edge: edge.value });\n }\n function onEdgeMouseEnter(event) {\n emit.mouseEnter({ event, edge: edge.value });\n }\n function onEdgeMouseMove(event) {\n emit.mouseMove({ event, edge: edge.value });\n }\n function onEdgeMouseLeave(event) {\n emit.mouseLeave({ event, edge: edge.value });\n }\n function onEdgeUpdaterSourceMouseDown(event) {\n handleEdgeUpdater(event, true);\n }\n function onEdgeUpdaterTargetMouseDown(event) {\n handleEdgeUpdater(event, false);\n }\n function onKeyDown(event) {\n var _a;\n if (!disableKeyboardA11y.value && elementSelectionKeys.includes(event.key) && isSelectable.value) {\n const unselect = event.key === \"Escape\";\n if (unselect) {\n (_a = edgeEl.value) == null ? void 0 : _a.blur();\n removeSelectedEdges([findEdge(props.id)]);\n } else {\n addSelectedEdges([findEdge(props.id)]);\n }\n }\n }\n }\n});\nconst EdgeWrapper$1 = EdgeWrapper;\nconst ConnectionLine = defineComponent({\n name: \"ConnectionLine\",\n compatConfig: { MODE: 3 },\n setup() {\n var _a;\n const {\n id: id2,\n connectionMode,\n connectionStartHandle,\n connectionEndHandle,\n connectionPosition,\n connectionLineType,\n connectionLineStyle,\n connectionLineOptions,\n connectionStatus,\n viewport,\n findNode\n } = useVueFlow();\n const connectionLineComponent = (_a = inject(Slots)) == null ? void 0 : _a[\"connection-line\"];\n const fromNode = computed(() => {\n var _a2;\n return findNode((_a2 = connectionStartHandle.value) == null ? void 0 : _a2.nodeId);\n });\n const toNode = computed(() => {\n var _a2;\n return findNode((_a2 = connectionEndHandle.value) == null ? void 0 : _a2.nodeId) ?? null;\n });\n const toXY = computed(() => {\n return {\n x: (connectionPosition.value.x - viewport.value.x) / viewport.value.zoom,\n y: (connectionPosition.value.y - viewport.value.y) / viewport.value.zoom\n };\n });\n const markerStart = computed(\n () => connectionLineOptions.value.markerStart ? `url(#${getMarkerId(connectionLineOptions.value.markerStart, id2)})` : \"\"\n );\n const markerEnd = computed(\n () => connectionLineOptions.value.markerEnd ? `url(#${getMarkerId(connectionLineOptions.value.markerEnd, id2)})` : \"\"\n );\n return () => {\n var _a2, _b, _c;\n if (!fromNode.value || !connectionStartHandle.value) {\n return null;\n }\n const startHandleId = connectionStartHandle.value.id;\n const handleType = connectionStartHandle.value.type;\n const fromHandleBounds = fromNode.value.handleBounds;\n let handleBounds = (fromHandleBounds == null ? void 0 : fromHandleBounds[handleType]) ?? [];\n if (connectionMode.value === ConnectionMode.Loose) {\n const oppositeBounds = (fromHandleBounds == null ? void 0 : fromHandleBounds[handleType === \"source\" ? \"target\" : \"source\"]) ?? [];\n handleBounds = [...handleBounds, ...oppositeBounds];\n }\n if (!handleBounds) {\n return null;\n }\n const fromHandle = (startHandleId ? handleBounds.find((d) => d.id === startHandleId) : handleBounds[0]) ?? null;\n const fromPosition = (fromHandle == null ? void 0 : fromHandle.position) ?? Position.Top;\n const { x: fromX, y: fromY } = getHandlePosition(fromNode.value, fromHandle, fromPosition);\n let toHandle = null;\n if (toNode.value) {\n if (connectionMode.value === ConnectionMode.Strict) {\n toHandle = ((_a2 = toNode.value.handleBounds[handleType === \"source\" ? \"target\" : \"source\"]) == null ? void 0 : _a2.find(\n (d) => {\n var _a3;\n return d.id === ((_a3 = connectionEndHandle.value) == null ? void 0 : _a3.id);\n }\n )) || null;\n } else {\n toHandle = ((_b = [...toNode.value.handleBounds.source ?? [], ...toNode.value.handleBounds.target ?? []]) == null ? void 0 : _b.find(\n (d) => {\n var _a3;\n return d.id === ((_a3 = connectionEndHandle.value) == null ? void 0 : _a3.id);\n }\n )) || null;\n }\n }\n const toPosition = ((_c = connectionEndHandle.value) == null ? void 0 : _c.position) ?? (fromPosition ? oppositePosition[fromPosition] : null);\n if (!fromPosition || !toPosition) {\n return null;\n }\n const type = connectionLineType.value ?? connectionLineOptions.value.type ?? ConnectionLineType.Bezier;\n let dAttr = \"\";\n const pathParams = {\n sourceX: fromX,\n sourceY: fromY,\n sourcePosition: fromPosition,\n targetX: toXY.value.x,\n targetY: toXY.value.y,\n targetPosition: toPosition\n };\n if (type === ConnectionLineType.Bezier) {\n [dAttr] = getBezierPath(pathParams);\n } else if (type === ConnectionLineType.Step) {\n [dAttr] = getSmoothStepPath({\n ...pathParams,\n borderRadius: 0\n });\n } else if (type === ConnectionLineType.SmoothStep) {\n [dAttr] = getSmoothStepPath(pathParams);\n } else if (type === ConnectionLineType.SimpleBezier) {\n [dAttr] = getSimpleBezierPath(pathParams);\n } else {\n dAttr = `M${fromX},${fromY} ${toXY.value.x},${toXY.value.y}`;\n }\n return h(\n \"svg\",\n { class: \"vue-flow__edges vue-flow__connectionline vue-flow__container\" },\n h(\n \"g\",\n { class: \"vue-flow__connection\" },\n connectionLineComponent ? h(connectionLineComponent, {\n sourceX: fromX,\n sourceY: fromY,\n sourcePosition: fromPosition,\n targetX: toXY.value.x,\n targetY: toXY.value.y,\n targetPosition: toPosition,\n sourceNode: fromNode.value,\n sourceHandle: fromHandle,\n targetNode: toNode.value,\n targetHandle: toHandle,\n markerEnd: markerEnd.value,\n markerStart: markerStart.value,\n connectionStatus: connectionStatus.value\n }) : h(\"path\", {\n \"d\": dAttr,\n \"class\": [connectionLineOptions.value.class, connectionStatus, \"vue-flow__connection-path\"],\n \"style\": {\n ...connectionLineStyle.value,\n ...connectionLineOptions.value.style\n },\n \"marker-end\": markerEnd.value,\n \"marker-start\": markerStart.value\n })\n )\n );\n };\n }\n});\nconst ConnectionLine$1 = ConnectionLine;\nconst _hoisted_1$4 = [\"id\", \"markerWidth\", \"markerHeight\", \"markerUnits\", \"orient\"];\nconst __default__$6 = {\n name: \"MarkerType\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$6 = /* @__PURE__ */ defineComponent({\n ...__default__$6,\n props: {\n id: {},\n type: {},\n color: { default: \"none\" },\n width: { default: 12.5 },\n height: { default: 12.5 },\n markerUnits: { default: \"strokeWidth\" },\n orient: { default: \"auto-start-reverse\" },\n strokeWidth: { default: 1 }\n },\n setup(__props) {\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"marker\", {\n id: _ctx.id,\n class: \"vue-flow__arrowhead\",\n viewBox: \"-10 -10 20 20\",\n refX: \"0\",\n refY: \"0\",\n markerWidth: `${_ctx.width}`,\n markerHeight: `${_ctx.height}`,\n markerUnits: _ctx.markerUnits,\n orient: _ctx.orient\n }, [\n _ctx.type === unref(MarkerType).ArrowClosed ? (openBlock(), createElementBlock(\"polyline\", {\n key: 0,\n style: normalizeStyle({\n stroke: _ctx.color,\n fill: _ctx.color,\n strokeWidth: _ctx.strokeWidth\n }),\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n points: \"-5,-4 0,0 -5,4 -5,-4\"\n }, null, 4)) : createCommentVNode(\"\", true),\n _ctx.type === unref(MarkerType).Arrow ? (openBlock(), createElementBlock(\"polyline\", {\n key: 1,\n style: normalizeStyle({\n stroke: _ctx.color,\n strokeWidth: _ctx.strokeWidth\n }),\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n fill: \"none\",\n points: \"-5,-4 0,0 -5,4\"\n }, null, 4)) : createCommentVNode(\"\", true)\n ], 8, _hoisted_1$4);\n };\n }\n});\nconst _hoisted_1$3 = {\n class: \"vue-flow__marker vue-flow__container\",\n \"aria-hidden\": \"true\"\n};\nconst __default__$5 = {\n name: \"MarkerDefinitions\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$5 = /* @__PURE__ */ defineComponent({\n ...__default__$5,\n setup(__props) {\n const { id: vueFlowId, edges, connectionLineOptions, defaultMarkerColor: defaultColor } = useVueFlow();\n const markers = computed(() => {\n const ids = /* @__PURE__ */ new Set();\n const markers2 = [];\n const createMarkers = (marker) => {\n if (marker) {\n const markerId = getMarkerId(marker, vueFlowId);\n if (!ids.has(markerId)) {\n if (typeof marker === \"object\") {\n markers2.push({ ...marker, id: markerId, color: marker.color || defaultColor.value });\n } else {\n markers2.push({ id: markerId, color: defaultColor.value, type: marker });\n }\n ids.add(markerId);\n }\n }\n };\n for (const marker of [connectionLineOptions.value.markerEnd, connectionLineOptions.value.markerStart]) {\n createMarkers(marker);\n }\n for (const edge of edges.value) {\n for (const marker of [edge.markerStart, edge.markerEnd]) {\n createMarkers(marker);\n }\n }\n return markers2.sort((a, b) => a.id.localeCompare(b.id));\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1$3, [\n createElementVNode(\"defs\", null, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(markers.value, (marker) => {\n return openBlock(), createBlock(_sfc_main$6, {\n id: marker.id,\n key: marker.id,\n type: marker.type,\n color: marker.color,\n width: marker.width,\n height: marker.height,\n markerUnits: marker.markerUnits,\n \"stroke-width\": marker.strokeWidth,\n orient: marker.orient\n }, null, 8, [\"id\", \"type\", \"color\", \"width\", \"height\", \"markerUnits\", \"stroke-width\", \"orient\"]);\n }), 128))\n ])\n ]);\n };\n }\n});\nconst __default__$4 = {\n name: \"Edges\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$4 = /* @__PURE__ */ defineComponent({\n ...__default__$4,\n setup(__props) {\n const { findNode, getEdges, elevateEdgesOnSelect } = useVueFlow();\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(Fragment, null, [\n createVNode(_sfc_main$5),\n (openBlock(true), createElementBlock(Fragment, null, renderList(unref(getEdges), (edge) => {\n return openBlock(), createElementBlock(\"svg\", {\n key: edge.id,\n class: \"vue-flow__edges vue-flow__container\",\n style: normalizeStyle({ zIndex: unref(getEdgeZIndex)(edge, unref(findNode), unref(elevateEdgesOnSelect)) })\n }, [\n createVNode(unref(EdgeWrapper$1), {\n id: edge.id\n }, null, 8, [\"id\"])\n ], 4);\n }), 128)),\n createVNode(unref(ConnectionLine$1))\n ], 64);\n };\n }\n});\nconst NodeWrapper = defineComponent({\n name: \"Node\",\n compatConfig: { MODE: 3 },\n props: [\"id\", \"resizeObserver\"],\n setup(props) {\n const {\n id: vueFlowId,\n noPanClassName,\n selectNodesOnDrag,\n nodesSelectionActive,\n multiSelectionActive,\n emits,\n removeSelectedNodes,\n addSelectedNodes,\n updateNodeDimensions,\n onUpdateNodeInternals,\n getNodeTypes,\n nodeExtent,\n elevateNodesOnSelect,\n disableKeyboardA11y,\n ariaLiveMessage,\n snapToGrid,\n snapGrid,\n nodeDragThreshold,\n nodesDraggable,\n elementsSelectable,\n nodesConnectable,\n nodesFocusable,\n hooks\n } = useVueFlow();\n const nodeElement = ref(null);\n provide(NodeRef, nodeElement);\n provide(NodeId, props.id);\n const slots = inject(Slots);\n const instance = getCurrentInstance();\n const updateNodePositions = useUpdateNodePositions();\n const { node, parentNode } = useNode(props.id);\n const { emit, on } = useNodeHooks(node, emits);\n const isDraggable = toRef(() => typeof node.draggable === \"undefined\" ? nodesDraggable.value : node.draggable);\n const isSelectable = toRef(() => typeof node.selectable === \"undefined\" ? elementsSelectable.value : node.selectable);\n const isConnectable = toRef(() => typeof node.connectable === \"undefined\" ? nodesConnectable.value : node.connectable);\n const isFocusable = toRef(() => typeof node.focusable === \"undefined\" ? nodesFocusable.value : node.focusable);\n const hasPointerEvents = computed(\n () => isSelectable.value || isDraggable.value || hooks.value.nodeClick.hasListeners() || hooks.value.nodeDoubleClick.hasListeners() || hooks.value.nodeMouseEnter.hasListeners() || hooks.value.nodeMouseMove.hasListeners() || hooks.value.nodeMouseLeave.hasListeners()\n );\n const isInit = toRef(() => !!node.dimensions.width && !!node.dimensions.height);\n const nodeCmp = computed(() => {\n const name = node.type || \"default\";\n const slot = slots == null ? void 0 : slots[`node-${name}`];\n if (slot) {\n return slot;\n }\n let nodeType = node.template || getNodeTypes.value[name];\n if (typeof nodeType === \"string\") {\n if (instance) {\n const components = Object.keys(instance.appContext.components);\n if (components && components.includes(name)) {\n nodeType = resolveComponent(name, false);\n }\n }\n }\n if (nodeType && typeof nodeType !== \"string\") {\n return nodeType;\n }\n emits.error(new VueFlowError(ErrorCode.NODE_TYPE_MISSING, nodeType));\n return false;\n });\n const dragging = useDrag({\n id: props.id,\n el: nodeElement,\n disabled: () => !isDraggable.value,\n selectable: isSelectable,\n dragHandle: () => node.dragHandle,\n onStart(event) {\n emit.dragStart(event);\n },\n onDrag(event) {\n emit.drag(event);\n },\n onStop(event) {\n emit.dragStop(event);\n },\n onClick(event) {\n onSelectNode(event);\n }\n });\n const getClass = computed(() => node.class instanceof Function ? node.class(node) : node.class);\n const getStyle = computed(() => {\n const styles = (node.style instanceof Function ? node.style(node) : node.style) || {};\n const width = node.width instanceof Function ? node.width(node) : node.width;\n const height = node.height instanceof Function ? node.height(node) : node.height;\n if (!styles.width && width) {\n styles.width = typeof width === \"string\" ? width : `${width}px`;\n }\n if (!styles.height && height) {\n styles.height = typeof height === \"string\" ? height : `${height}px`;\n }\n return styles;\n });\n const zIndex = toRef(() => Number(node.zIndex ?? getStyle.value.zIndex ?? 0));\n onUpdateNodeInternals((updateIds) => {\n if (updateIds.includes(props.id) || !updateIds.length) {\n updateInternals();\n }\n });\n onMounted(() => {\n watch(\n () => node.hidden,\n (isHidden = false, _, onCleanup) => {\n if (!isHidden && nodeElement.value) {\n props.resizeObserver.observe(nodeElement.value);\n onCleanup(() => {\n if (nodeElement.value) {\n props.resizeObserver.unobserve(nodeElement.value);\n }\n });\n }\n },\n { immediate: true, flush: \"post\" }\n );\n });\n watch([() => node.type, () => node.sourcePosition, () => node.targetPosition], () => {\n nextTick(() => {\n updateNodeDimensions([{ id: props.id, nodeElement: nodeElement.value, forceUpdate: true }]);\n });\n });\n watch(\n [\n () => node.position.x,\n () => node.position.y,\n () => {\n var _a;\n return (_a = parentNode.value) == null ? void 0 : _a.computedPosition.x;\n },\n () => {\n var _a;\n return (_a = parentNode.value) == null ? void 0 : _a.computedPosition.y;\n },\n () => {\n var _a;\n return (_a = parentNode.value) == null ? void 0 : _a.computedPosition.z;\n },\n zIndex,\n () => node.selected,\n () => node.dimensions.height,\n () => node.dimensions.width,\n () => {\n var _a;\n return (_a = parentNode.value) == null ? void 0 : _a.dimensions.height;\n },\n () => {\n var _a;\n return (_a = parentNode.value) == null ? void 0 : _a.dimensions.width;\n }\n ],\n ([newX, newY, parentX, parentY, parentZ, nodeZIndex]) => {\n const xyzPos = {\n x: newX,\n y: newY,\n z: nodeZIndex + (elevateNodesOnSelect.value ? node.selected ? 1e3 : 0 : 0)\n };\n if (typeof parentX !== \"undefined\" && typeof parentY !== \"undefined\") {\n node.computedPosition = getXYZPos({ x: parentX, y: parentY, z: parentZ }, xyzPos);\n } else {\n node.computedPosition = xyzPos;\n }\n },\n { flush: \"post\", immediate: true }\n );\n watch([() => node.extent, nodeExtent], ([nodeExtent2, globalExtent], [oldNodeExtent, oldGlobalExtent]) => {\n if (nodeExtent2 !== oldNodeExtent || globalExtent !== oldGlobalExtent) {\n clampPosition2();\n }\n });\n if (node.extent === \"parent\" || typeof node.extent === \"object\" && \"range\" in node.extent && node.extent.range === \"parent\") {\n until(() => isInit).toBe(true).then(clampPosition2);\n } else {\n clampPosition2();\n }\n return () => {\n if (node.hidden) {\n return null;\n }\n return h(\n \"div\",\n {\n \"ref\": nodeElement,\n \"data-id\": node.id,\n \"class\": [\n \"vue-flow__node\",\n `vue-flow__node-${nodeCmp.value === false ? \"default\" : node.type || \"default\"}`,\n {\n [noPanClassName.value]: isDraggable.value,\n dragging: dragging == null ? void 0 : dragging.value,\n draggable: isDraggable.value,\n selected: node.selected,\n selectable: isSelectable.value,\n parent: node.isParent\n },\n getClass.value\n ],\n \"style\": {\n visibility: isInit.value ? \"visible\" : \"hidden\",\n zIndex: node.computedPosition.z ?? zIndex.value,\n transform: `translate(${node.computedPosition.x}px,${node.computedPosition.y}px)`,\n pointerEvents: hasPointerEvents.value ? \"all\" : \"none\",\n ...getStyle.value\n },\n \"tabIndex\": isFocusable.value ? 0 : void 0,\n \"role\": isFocusable.value ? \"group\" : void 0,\n \"aria-describedby\": disableKeyboardA11y.value ? void 0 : `${ARIA_NODE_DESC_KEY}-${vueFlowId}`,\n \"aria-label\": node.ariaLabel,\n \"aria-roledescription\": \"node\",\n ...node.domAttributes,\n \"onMouseenter\": onMouseEnter,\n \"onMousemove\": onMouseMove,\n \"onMouseleave\": onMouseLeave,\n \"onContextmenu\": onContextMenu,\n \"onClick\": onSelectNode,\n \"onDblclick\": onDoubleClick,\n \"onKeydown\": onKeyDown\n },\n [\n h(nodeCmp.value === false ? getNodeTypes.value.default : nodeCmp.value, {\n id: node.id,\n type: node.type,\n data: node.data,\n events: { ...node.events, ...on },\n selected: node.selected,\n resizing: node.resizing,\n dragging: dragging.value,\n connectable: isConnectable.value,\n position: node.computedPosition,\n dimensions: node.dimensions,\n isValidTargetPos: node.isValidTargetPos,\n isValidSourcePos: node.isValidSourcePos,\n parent: node.parentNode,\n parentNodeId: node.parentNode,\n zIndex: node.computedPosition.z ?? zIndex.value,\n targetPosition: node.targetPosition,\n sourcePosition: node.sourcePosition,\n label: node.label,\n dragHandle: node.dragHandle,\n onUpdateNodeInternals: updateInternals\n })\n ]\n );\n };\n function clampPosition2() {\n const nextPosition = node.computedPosition;\n const { computedPosition, position } = calcNextPosition(\n node,\n snapToGrid.value ? snapPosition(nextPosition, snapGrid.value) : nextPosition,\n emits.error,\n nodeExtent.value,\n parentNode.value\n );\n if (node.computedPosition.x !== computedPosition.x || node.computedPosition.y !== computedPosition.y) {\n node.computedPosition = { ...node.computedPosition, ...computedPosition };\n }\n if (node.position.x !== position.x || node.position.y !== position.y) {\n node.position = position;\n }\n }\n function updateInternals() {\n if (nodeElement.value) {\n updateNodeDimensions([{ id: props.id, nodeElement: nodeElement.value, forceUpdate: true }]);\n }\n }\n function onMouseEnter(event) {\n if (!(dragging == null ? void 0 : dragging.value)) {\n emit.mouseEnter({ event, node });\n }\n }\n function onMouseMove(event) {\n if (!(dragging == null ? void 0 : dragging.value)) {\n emit.mouseMove({ event, node });\n }\n }\n function onMouseLeave(event) {\n if (!(dragging == null ? void 0 : dragging.value)) {\n emit.mouseLeave({ event, node });\n }\n }\n function onContextMenu(event) {\n return emit.contextMenu({ event, node });\n }\n function onDoubleClick(event) {\n return emit.doubleClick({ event, node });\n }\n function onSelectNode(event) {\n if (isSelectable.value && (!selectNodesOnDrag.value || !isDraggable.value || nodeDragThreshold.value > 0)) {\n handleNodeClick(\n node,\n multiSelectionActive.value,\n addSelectedNodes,\n removeSelectedNodes,\n nodesSelectionActive,\n false,\n nodeElement.value\n );\n }\n emit.click({ event, node });\n }\n function onKeyDown(event) {\n if (isInputDOMNode(event) || disableKeyboardA11y.value) {\n return;\n }\n if (elementSelectionKeys.includes(event.key) && isSelectable.value) {\n const unselect = event.key === \"Escape\";\n handleNodeClick(\n node,\n multiSelectionActive.value,\n addSelectedNodes,\n removeSelectedNodes,\n nodesSelectionActive,\n unselect,\n nodeElement.value\n );\n } else if (isDraggable.value && node.selected && arrowKeyDiffs[event.key]) {\n event.preventDefault();\n ariaLiveMessage.value = `Moved selected node ${event.key.replace(\"Arrow\", \"\").toLowerCase()}. New position, x: ${~~node.position.x}, y: ${~~node.position.y}`;\n updateNodePositions(\n {\n x: arrowKeyDiffs[event.key].x,\n y: arrowKeyDiffs[event.key].y\n },\n event.shiftKey\n );\n }\n }\n }\n});\nconst NodeWrapper$1 = NodeWrapper;\nconst _hoisted_1$2 = {\n height: \"0\",\n width: \"0\"\n};\nconst __default__$3 = {\n name: \"EdgeLabelRenderer\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$3 = /* @__PURE__ */ defineComponent({\n ...__default__$3,\n setup(__props) {\n const { viewportRef } = useVueFlow();\n const teleportTarget = toRef(() => {\n var _a;\n return (_a = viewportRef.value) == null ? void 0 : _a.getElementsByClassName(\"vue-flow__edge-labels\")[0];\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"svg\", null, [\n (openBlock(), createElementBlock(\"foreignObject\", _hoisted_1$2, [\n (openBlock(), createBlock(Teleport, {\n to: teleportTarget.value,\n disabled: !teleportTarget.value\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 8, [\"to\", \"disabled\"]))\n ]))\n ]);\n };\n }\n});\nfunction useNodesInitialized(options = { includeHiddenNodes: false }) {\n const { nodes } = useVueFlow();\n return computed(() => {\n if (nodes.value.length === 0) {\n return false;\n }\n for (const node of nodes.value) {\n if (options.includeHiddenNodes || !node.hidden) {\n if ((node == null ? void 0 : node.handleBounds) === void 0 || node.dimensions.width === 0 || node.dimensions.height === 0) {\n return false;\n }\n }\n }\n return true;\n });\n}\nconst _hoisted_1$1 = { class: \"vue-flow__nodes vue-flow__container\" };\nconst __default__$2 = {\n name: \"Nodes\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$2 = /* @__PURE__ */ defineComponent({\n ...__default__$2,\n setup(__props) {\n const { getNodes, updateNodeDimensions, emits } = useVueFlow();\n const nodesInitialized = useNodesInitialized();\n const resizeObserver = ref();\n watch(\n nodesInitialized,\n (isInit) => {\n if (isInit) {\n nextTick(() => {\n emits.nodesInitialized(getNodes.value);\n });\n }\n },\n { immediate: true }\n );\n onMounted(() => {\n resizeObserver.value = new ResizeObserver((entries) => {\n const updates = entries.map((entry) => {\n const id2 = entry.target.getAttribute(\"data-id\");\n return {\n id: id2,\n nodeElement: entry.target,\n forceUpdate: true\n };\n });\n nextTick(() => updateNodeDimensions(updates));\n });\n });\n onBeforeUnmount(() => {\n var _a;\n return (_a = resizeObserver.value) == null ? void 0 : _a.disconnect();\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1$1, [\n resizeObserver.value ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(unref(getNodes), (node, __, ___, _cached) => {\n const _memo = [node.id];\n if (_cached && _cached.key === node.id && isMemoSame(_cached, _memo))\n return _cached;\n const _item = (openBlock(), createBlock(unref(NodeWrapper$1), {\n id: node.id,\n key: node.id,\n \"resize-observer\": resizeObserver.value\n }, null, 8, [\"id\", \"resize-observer\"]));\n _item.memo = _memo;\n return _item;\n }, _cache, 0), 128)) : createCommentVNode(\"\", true)\n ]);\n };\n }\n});\nfunction useStylesLoadedWarning() {\n const { emits } = useVueFlow();\n onMounted(() => {\n if (isDev()) {\n const pane = document.querySelector(\".vue-flow__pane\");\n if (pane && !(window.getComputedStyle(pane).zIndex === \"1\")) {\n emits.error(new VueFlowError(ErrorCode.MISSING_STYLES));\n }\n }\n });\n}\nconst _hoisted_1 = /* @__PURE__ */ createElementVNode(\"div\", { class: \"vue-flow__edge-labels\" }, null, -1);\nconst __default__$1 = {\n name: \"VueFlow\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$1 = /* @__PURE__ */ defineComponent({\n ...__default__$1,\n props: {\n id: {},\n modelValue: {},\n nodes: {},\n edges: {},\n edgeTypes: {},\n nodeTypes: {},\n connectionMode: {},\n connectionLineType: {},\n connectionLineStyle: { default: void 0 },\n connectionLineOptions: { default: void 0 },\n connectionRadius: {},\n isValidConnection: { type: [Function, null], default: void 0 },\n deleteKeyCode: { default: void 0 },\n selectionKeyCode: { type: [Boolean, null], default: void 0 },\n multiSelectionKeyCode: { default: void 0 },\n zoomActivationKeyCode: { default: void 0 },\n panActivationKeyCode: { default: void 0 },\n snapToGrid: { type: Boolean, default: void 0 },\n snapGrid: {},\n onlyRenderVisibleElements: { type: Boolean, default: void 0 },\n edgesUpdatable: { type: [Boolean, String], default: void 0 },\n nodesDraggable: { type: Boolean, default: void 0 },\n nodesConnectable: { type: Boolean, default: void 0 },\n nodeDragThreshold: {},\n elementsSelectable: { type: Boolean, default: void 0 },\n selectNodesOnDrag: { type: Boolean, default: void 0 },\n panOnDrag: { type: [Boolean, Array], default: void 0 },\n minZoom: {},\n maxZoom: {},\n defaultViewport: {},\n translateExtent: {},\n nodeExtent: {},\n defaultMarkerColor: {},\n zoomOnScroll: { type: Boolean, default: void 0 },\n zoomOnPinch: { type: Boolean, default: void 0 },\n panOnScroll: { type: Boolean, default: void 0 },\n panOnScrollSpeed: {},\n panOnScrollMode: {},\n paneClickDistance: {},\n zoomOnDoubleClick: { type: Boolean, default: void 0 },\n preventScrolling: { type: Boolean, default: void 0 },\n selectionMode: {},\n edgeUpdaterRadius: {},\n fitViewOnInit: { type: Boolean, default: void 0 },\n connectOnClick: { type: Boolean, default: void 0 },\n applyDefault: { type: Boolean, default: void 0 },\n autoConnect: { type: [Boolean, Function], default: void 0 },\n noDragClassName: {},\n noWheelClassName: {},\n noPanClassName: {},\n defaultEdgeOptions: {},\n elevateEdgesOnSelect: { type: Boolean, default: void 0 },\n elevateNodesOnSelect: { type: Boolean, default: void 0 },\n disableKeyboardA11y: { type: Boolean, default: void 0 },\n edgesFocusable: { type: Boolean, default: void 0 },\n nodesFocusable: { type: Boolean, default: void 0 },\n autoPanOnConnect: { type: Boolean, default: void 0 },\n autoPanOnNodeDrag: { type: Boolean, default: void 0 },\n autoPanSpeed: {}\n },\n emits: [\"nodesChange\", \"edgesChange\", \"nodesInitialized\", \"paneReady\", \"init\", \"updateNodeInternals\", \"error\", \"connect\", \"connectStart\", \"connectEnd\", \"clickConnectStart\", \"clickConnectEnd\", \"moveStart\", \"move\", \"moveEnd\", \"selectionDragStart\", \"selectionDrag\", \"selectionDragStop\", \"selectionContextMenu\", \"selectionStart\", \"selectionEnd\", \"viewportChangeStart\", \"viewportChange\", \"viewportChangeEnd\", \"paneScroll\", \"paneClick\", \"paneContextMenu\", \"paneMouseEnter\", \"paneMouseMove\", \"paneMouseLeave\", \"edgeUpdate\", \"edgeContextMenu\", \"edgeMouseEnter\", \"edgeMouseMove\", \"edgeMouseLeave\", \"edgeDoubleClick\", \"edgeClick\", \"edgeUpdateStart\", \"edgeUpdateEnd\", \"nodeContextMenu\", \"nodeMouseEnter\", \"nodeMouseMove\", \"nodeMouseLeave\", \"nodeDoubleClick\", \"nodeClick\", \"nodeDragStart\", \"nodeDrag\", \"nodeDragStop\", \"miniMapNodeClick\", \"miniMapNodeDoubleClick\", \"miniMapNodeMouseEnter\", \"miniMapNodeMouseMove\", \"miniMapNodeMouseLeave\", \"update:modelValue\", \"update:nodes\", \"update:edges\"],\n setup(__props, { expose: __expose, emit }) {\n const props = __props;\n const slots = useSlots();\n const modelValue = useVModel(props, \"modelValue\", emit);\n const modelNodes = useVModel(props, \"nodes\", emit);\n const modelEdges = useVModel(props, \"edges\", emit);\n const instance = useVueFlow(props);\n const dispose = useWatchProps({ modelValue, nodes: modelNodes, edges: modelEdges }, props, instance);\n useHooks(emit, instance.hooks);\n useOnInitHandler();\n useStylesLoadedWarning();\n provide(Slots, slots);\n onUnmounted(() => {\n dispose();\n });\n __expose(instance);\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n ref: unref(instance).vueFlowRef,\n class: \"vue-flow\"\n }, [\n createVNode(_sfc_main$8, null, {\n default: withCtx(() => [\n createVNode(_sfc_main$4),\n _hoisted_1,\n createVNode(_sfc_main$2),\n renderSlot(_ctx.$slots, \"zoom-pane\")\n ]),\n _: 3\n }),\n renderSlot(_ctx.$slots, \"default\"),\n createVNode(_sfc_main$7)\n ], 512);\n };\n }\n});\nconst __default__ = {\n name: \"Panel\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: {\n position: {}\n },\n setup(__props) {\n const props = __props;\n const { userSelectionActive } = useVueFlow();\n const positionClasses = computed(() => `${props.position}`.split(\"-\"));\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\"vue-flow__panel\", positionClasses.value]),\n style: normalizeStyle({ pointerEvents: unref(userSelectionActive) ? \"none\" : \"all\" })\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 6);\n };\n }\n});\nfunction useConnection() {\n const {\n connectionStartHandle: startHandle,\n connectionEndHandle: endHandle,\n connectionStatus: status,\n connectionPosition: position\n } = useVueFlow();\n return {\n startHandle,\n endHandle,\n status,\n position\n };\n}\nfunction useHandleConnections(params) {\n const { type, id: id2, nodeId, onConnect, onDisconnect } = params;\n const { connectionLookup } = useVueFlow();\n const _nodeId = useNodeId();\n const currentNodeId = toRef(() => toValue$1(nodeId) ?? _nodeId);\n const handleType = toRef(() => toValue$1(type));\n const handleId = toRef(() => toValue$1(id2) ?? null);\n const prevConnections = ref(null);\n const connections = ref();\n watch(\n () => connectionLookup.value.get(`${currentNodeId.value}-${handleType.value}-${handleId.value}`),\n (nextConnections) => {\n if (areConnectionMapsEqual(connections.value, nextConnections)) {\n return;\n }\n connections.value = nextConnections;\n },\n { immediate: true }\n );\n watch(\n [connections, () => typeof onConnect !== \"undefined\", () => typeof onDisconnect !== \"undefined\"],\n ([currentConnections = /* @__PURE__ */ new Map()]) => {\n if (prevConnections.value && prevConnections.value !== currentConnections) {\n handleConnectionChange(prevConnections.value, currentConnections, onDisconnect);\n handleConnectionChange(currentConnections, prevConnections.value, onConnect);\n }\n prevConnections.value = currentConnections;\n },\n { immediate: true }\n );\n return computed(() => {\n if (!connections.value) {\n return [];\n }\n return Array.from(connections.value.values());\n });\n}\nfunction useNodeConnections(params = {}) {\n const { handleType, handleId, nodeId, onConnect, onDisconnect } = params;\n const { connectionLookup } = useVueFlow();\n const _nodeId = useNodeId();\n const prevConnections = ref(null);\n const connections = ref();\n const lookupKey = computed(() => {\n const currNodeId = toValue$1(nodeId) ?? _nodeId;\n const currentHandleType = toValue$1(handleType);\n const currHandleId = toValue$1(handleId);\n let handleSuffix = \"\";\n if (currentHandleType) {\n handleSuffix = currHandleId ? `-${currentHandleType}-${currHandleId}` : `-${currentHandleType}`;\n }\n return `${currNodeId}${handleSuffix}`;\n });\n watch(\n () => connectionLookup.value.get(lookupKey.value),\n (nextConnections) => {\n if (areConnectionMapsEqual(connections.value, nextConnections)) {\n return;\n }\n connections.value = nextConnections;\n },\n { immediate: true }\n );\n watch(\n [connections, () => typeof onConnect !== \"undefined\", () => typeof onDisconnect !== \"undefined\"],\n ([currentConnections = /* @__PURE__ */ new Map()]) => {\n if (prevConnections.value && prevConnections.value !== currentConnections) {\n handleConnectionChange(prevConnections.value, currentConnections, onDisconnect);\n handleConnectionChange(currentConnections, prevConnections.value, onConnect);\n }\n prevConnections.value = currentConnections;\n },\n { immediate: true }\n );\n return computed(() => {\n if (!connections.value) {\n return [];\n }\n return Array.from(connections.value.values());\n });\n}\nfunction useNodesData(_nodeIds) {\n const { findNode } = useVueFlow();\n return computed({\n get() {\n const nodeIds = toValue$1(_nodeIds);\n if (!Array.isArray(nodeIds)) {\n const node = findNode(nodeIds);\n if (node) {\n return {\n id: node.id,\n type: node.type,\n data: node.data\n };\n }\n return null;\n }\n const data = [];\n for (const nodeId of nodeIds) {\n const node = findNode(nodeId);\n if (node) {\n data.push({\n id: node.id,\n type: node.type,\n data: node.data\n });\n }\n }\n return data;\n },\n set() {\n warn(\"You are trying to set node data via useNodesData. This is not supported.\");\n }\n });\n}\nfunction useEdgesData(_edgeIds) {\n const { findEdge } = useVueFlow();\n return computed({\n get() {\n const edgeIds = toValue$1(_edgeIds);\n if (!Array.isArray(edgeIds)) {\n const edge = findEdge(edgeIds);\n if (edge) {\n return {\n id: edge.id,\n type: edge.type,\n data: edge.data ?? null\n };\n }\n return null;\n }\n const data = [];\n for (const edgeId of edgeIds) {\n const edge = findEdge(edgeId);\n if (edge) {\n data.push({\n id: edge.id,\n type: edge.type,\n data: edge.data ?? null\n });\n }\n }\n return data;\n },\n set() {\n warn(\"You are trying to set edge data via useEdgesData. This is not supported.\");\n }\n });\n}\nexport {\n _sfc_main$d as BaseEdge,\n BezierEdge$1 as BezierEdge,\n ConnectionLineType,\n ConnectionMode,\n _sfc_main$3 as EdgeLabelRenderer,\n _sfc_main$e as EdgeText,\n ErrorCode,\n _sfc_main$f as Handle,\n MarkerType,\n NodeId as NodeIdInjection,\n PanOnScrollMode,\n _sfc_main as Panel,\n PanelPosition,\n Position,\n SelectionMode,\n SimpleBezierEdge$1 as SimpleBezierEdge,\n SmoothStepEdge$1 as SmoothStepEdge,\n StepEdge$1 as StepEdge,\n StraightEdge$1 as StraightEdge,\n _sfc_main$1 as VueFlow,\n VueFlowError,\n VueFlow as VueFlowInjection,\n addEdge,\n applyChanges,\n applyEdgeChanges,\n applyNodeChanges,\n clamp,\n connectionExists,\n defaultEdgeTypes,\n defaultNodeTypes,\n getBezierEdgeCenter,\n getBezierPath,\n getBoundsofRects,\n getConnectedEdges,\n getIncomers,\n getMarkerId,\n getNodesInside,\n getOutgoers,\n getRectOfNodes,\n getSimpleBezierPath,\n getSimpleEdgeCenter,\n getSmoothStepPath,\n getStraightPath,\n getTransformForBounds,\n rendererPointToPoint as graphPosToZoomedPos,\n isEdge,\n isErrorOfType,\n isGraphEdge,\n isGraphNode,\n isNode,\n pointToRendererPoint,\n rendererPointToPoint,\n updateEdge,\n useConnection,\n useEdge,\n useEdgesData,\n useGetPointerPosition,\n useHandle,\n useHandleConnections,\n useKeyPress,\n useNode,\n useNodeConnections,\n useNodeId,\n useNodesData,\n useNodesInitialized,\n useVueFlow,\n useZoomPanHelper\n};\n","<template>\n\t<path :id=\"id\" :style=\"style\" class=\"vue-flow__edge-path\" :d=\"path[0]\" :marker-end=\"markerEnd\" />\n\n\t<EdgeLabelRenderer>\n\t\t<div\n\t\t\t:style=\"{\n\t\t\t\tpointerEvents: 'all',\n\t\t\t\tposition: 'absolute',\n\t\t\t\ttransform: `translate(-50%, -50%) translate(${path[1]}px,${path[2]}px)`,\n\t\t\t}\"\n\t\t\tclass=\"nodrag nopan editable-edge-label\"\n\t\t\t@click=\"labelOnClick()\">\n\t\t\t<div class=\"vue-flow__edge-label\">{{ label }}</div>\n\t\t\t<div v-if=\"showInput\" class=\"label-input-wrapper\">\n\t\t\t\t<input\n\t\t\t\t\tref=\"labelInput\"\n\t\t\t\t\tclass=\"label-input\"\n\t\t\t\t\tv-model=\"newLabel\"\n\t\t\t\t\t@blur=\"showInput = false\"\n\t\t\t\t\t@keypress.enter=\"submitNewLabel\" />\n\t\t\t</div>\n\t\t</div>\n\t</EdgeLabelRenderer>\n</template>\n\n<script setup lang=\"ts\">\nimport { type EdgeProps, EdgeLabelRenderer, getBezierPath /* useVueFlow */ } from '@vue-flow/core'\nimport { computed, ref, nextTick, useTemplateRef } from 'vue'\n\nconst props = defineProps<EdgeProps>()\nconst emit = defineEmits(['change'])\n\n// TODO: Implement edge removal\n// const { removeEdges } = useVueFlow()\n\nconst inputRef = useTemplateRef<HTMLInputElement>('labelInput')\nconst newLabel = ref<EdgeProps['label']>('')\nconst showInput = ref(false)\nlet lastClick = 0\n\nconst labelOnClick = async () => {\n\tlet now = Date.now()\n\tif (now - lastClick < 500 && !showInput.value) {\n\t\tawait showLabelInput()\n\t}\n\tlastClick = now\n}\n\nconst showLabelInput = async () => {\n\tnewLabel.value = props.label\n\tshowInput.value = true\n\tawait nextTick()\n\tinputRef.value.focus()\n}\n\nconst submitNewLabel = () => {\n\tshowInput.value = false\n\temit('change', newLabel.value)\n}\n\nconst path = computed(() => getBezierPath(props))\n</script>\n\n<script lang=\"ts\">\nexport default {\n\tinheritAttrs: false,\n}\n</script>\n\n<style>\n.editable-edge-label {\n\tbackground-color: white;\n\tposition: relative;\n\tfont-size: 12px;\n}\n\n.label-input-wrapper {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n.label-input {\n\ttext-align: center;\n\twidth: 40ch;\n}\n</style>\n","<template>\n\t<div @click=\"nodeOnClick()\">\n\t\t<div>{{ label }}</div>\n\t\t<div v-if=\"showInput\" class=\"label-input-wrapper\">\n\t\t\t<input\n\t\t\t\tref=\"labelInput\"\n\t\t\t\tclass=\"label-input\"\n\t\t\t\tv-model=\"newLabel\"\n\t\t\t\t@blur=\"showInput = false\"\n\t\t\t\t@keypress.enter=\"submitNewLabel\" />\n\t\t</div>\n\t\t<Handle v-if=\"data.hasInput\" id=\"a\" type=\"target\" :position=\"targetPosition\" />\n\t\t<Handle v-if=\"data.hasOutput\" id=\"b\" type=\"source\" :position=\"sourcePosition\" />\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport { NodeProps, Handle } from '@vue-flow/core'\nimport { ref, nextTick, useTemplateRef } from 'vue'\n\nconst props = defineProps<NodeProps>()\nconst emit = defineEmits(['change'])\n\nconst inputRef = useTemplateRef<HTMLInputElement>('labelInput')\nconst newLabel = ref<NodeProps['label']>('')\nconst showInput = ref(false)\nlet lastClick = 0\n\nconst nodeOnClick = async () => {\n\tlet now = Date.now()\n\tif (now - lastClick < 500 && !showInput.value) {\n\t\tawait showLabelInput()\n\t}\n\tlastClick = now\n}\n\nconst showLabelInput = async () => {\n\tnewLabel.value = props.label\n\tshowInput.value = true\n\tawait nextTick()\n\tinputRef.value.focus()\n}\n\nconst submitNewLabel = () => {\n\tshowInput.value = false\n\temit('change', newLabel.value)\n}\n</script>\n\n<style>\n.label-input-wrapper {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n.label-input {\n\ttext-align: center;\n}\n</style>\n","<template>\n\t<div class=\"node-editor-wrapper\" :class=\"nodeContainerClass\" @mouseover=\"hover = true\" @mouseleave=\"hover = false\">\n\t\t<div class=\"chart-controls\">\n\t\t\t<div class=\"chart-controls-left\">\n\t\t\t\t<div><b>Selected Node:</b> {{ activeElementKey ? activeElementKey : 'none' }}</div>\n\t\t\t</div>\n\t\t\t<div class=\"chart-controls-right\">\n\t\t\t\t<div>\n\t\t\t\t\t<button class=\"button-default\" @click=\"addNode\">Add Node</button>\n\t\t\t\t</div>\n\t\t\t\t<div>\n\t\t\t\t\t<button class=\"button-default\" @click=\"fitView\">Center</button>\n\t\t\t\t</div>\n\t\t\t\t<div v-if=\"activeElementIndex > -1\">\n\t\t\t\t\t<button class=\"button-default\" @click=\"shiftInput\">Shift Input Position</button>\n\t\t\t\t</div>\n\t\t\t\t<div v-if=\"activeElementIndex > -1\">\n\t\t\t\t\t<button class=\"button-default\" @click=\"shiftOutput\">Shift Output Position</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<VueFlow\n\t\t\tv-if=\"vueFlowElements && vueFlowElements.length\"\n\t\t\tclass=\"nowheel\"\n\t\t\t:prevent-scrolling=\"true\"\n\t\t\t:zoom-on-scroll=\"false\"\n\t\t\t:fit-view-on-init=\"true\"\n\t\t\tv-model=\"vueFlowElements\"\n\t\t\t@wheel.prevent=\"onWheel\">\n\t\t\t<template #node-editable=\"props\">\n\t\t\t\t<EditableNode v-bind=\"props\" @change=\"labelChanged($event, props.id)\" />\n\t\t\t</template>\n\t\t\t<template #edge-editable=\"props\">\n\t\t\t\t<EditableEdge v-bind=\"props\" @change=\"labelChanged($event, props.id)\" />\n\t\t\t</template>\n\t\t</VueFlow>\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport { type VueFlowStore, Position, VueFlow, useVueFlow, Connection, Node } from '@vue-flow/core'\nimport { type HTMLAttributes, ref, computed, defineEmits, onBeforeUnmount, onMounted } from 'vue'\n\nimport EditableEdge from './EditableEdge.vue'\nimport EditableNode from './EditableNode.vue'\nimport type { FlowElements } from '../types'\n\nconst { modelValue, nodeContainerClass } = defineProps<{\n\tmodelValue: FlowElements\n\tnodeContainerClass?: HTMLAttributes['class']\n}>()\nconst emit = defineEmits(['update:modelValue'])\n\nconst hover = ref(false)\nconst vueFlowElements = ref<FlowElements>([])\nconst vueFlowInstance = ref<VueFlowStore>()\n\nconst activeElementKey = ref('')\nconst activeElementIndex = computed(() => {\n\tvueFlowElements.value.forEach((element, index) => {\n\t\tif (element.id === activeElementKey.value) {\n\t\t\treturn index\n\t\t}\n\t})\n\n\treturn -1\n})\n\nconst elements = computed({\n\tget: () => {\n\t\tconst _elements = modelValue\n\n\t\t// Add data to each element\n\t\tfor (const _element of _elements) {\n\t\t\t_element.data = {}\n\t\t\tif (_element.type === 'input') {\n\t\t\t\t_element.data.hasInput = false\n\t\t\t\t_element.data.hasOutput = true\n\t\t\t} else if (_element.type === 'output') {\n\t\t\t\t_element.data.hasInput = true\n\t\t\t\t_element.data.hasOutput = false\n\t\t\t} else {\n\t\t\t\t_element.data.hasInput = true\n\t\t\t\t_element.data.hasOutput = true\n\t\t\t}\n\t\t\t_element.class = 'vue-flow__node-default'\n\t\t\t_element.type = 'editable'\n\t\t}\n\n\t\t// Add click event to each element\n\t\tfor (const _element of _elements) {\n\t\t\t_element.events = {\n\t\t\t\tclick: () => {\n\t\t\t\t\tactiveElementKey.value = _element.id\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\n\t\treturn _elements\n\t},\n\tset: newValue => {\n\t\temit('update:modelValue', JSON.parse(JSON.stringify(newValue)))\n\t},\n})\nconst { onConnect, addEdges, onEdgeContextMenu, onPaneReady, removeEdges } = useVueFlow()\n\nonMounted(() => {\n\tdocument.removeEventListener('keypress', handleKeypress)\n\tdocument.addEventListener('keypress', handleKeypress)\n})\n\nonBeforeUnmount(() => {\n\tdocument.removeEventListener('keypress', handleKeypress)\n})\n\nonPaneReady(instance => {\n\tvueFlowInstance.value = instance\n})\n\nvueFlowElements.value = elements.value\n\n// Methods\nconst shiftTerminal = (currentTerminal: Position) => {\n\treturn {\n\t\t[Position.Top]: Position.Right,\n\t\t[Position.Right]: Position.Bottom,\n\t\t[Position.Bottom]: Position.Left,\n\t\t[Position.Left]: Position.Top,\n\t}[currentTerminal]\n}\n\nconst shiftOutput = () => {\n\tif (activeElementIndex.value > -1) {\n\t\tconst activeNode = vueFlowElements.value[activeElementIndex.value] as Node\n\t\tactiveNode.sourcePosition = shiftTerminal(activeNode.sourcePosition)\n\t}\n}\n\nconst shiftInput = () => {\n\tif (activeElementIndex.value > -1) {\n\t\tconst activeNode = vueFlowElements.value[activeElementIndex.value] as Node\n\t\tactiveNode.targetPosition = shiftTerminal(activeNode.targetPosition)\n\t}\n}\n\nconst onWheel = (event: WheelEvent) => {\n\twindow.scrollBy(0, event.deltaY)\n}\n\nconst handleKeypress = (event: KeyboardEvent) => {\n\tif (hover.value && event.ctrlKey == true) {\n\t\tif (event.key == '+' || event.key == '=') {\n\t\t\tvoid vueFlowInstance.value.zoomIn()\n\t\t}\n\t\tif (event.key == '-') {\n\t\t\tvoid vueFlowInstance.value.zoomOut()\n\t\t}\n\t}\n}\n\nconst fitView = async () => {\n\tawait vueFlowInstance.value.fitView()\n}\n\nconst addNode = () => {\n\tlet makeEdge = false\n\tlet newNodePosition = { x: Math.random() * 200, y: Math.random() * 200 }\n\tif (activeElementIndex.value > -1) {\n\t\tconst activeNode = vueFlowElements.value[activeElementIndex.value]\n\t\tif (activeNode.data.hasOutput) {\n\t\t\tnewNodePosition = { x: (activeNode as Node).position.x + 200, y: (activeNode as Node).position.y + 50 }\n\t\t\tmakeEdge = true\n\t\t}\n\t}\n\n\tconst id = vueFlowElements.value.length\n\tconst nodeId = `node-${id}`\n\tvueFlowElements.value.push({\n\t\tid: nodeId,\n\t\tlabel: 'Node ' + id,\n\t\tsourcePosition: Position.Right,\n\t\ttargetPosition: Position.Left,\n\t\tclass: 'vue-flow__node-default',\n\t\ttype: 'editable',\n\t\tdata: {\n\t\t\thasInput: true,\n\t\t\thasOutput: true,\n\t\t},\n\t\tevents: {\n\t\t\tclick: () => {\n\t\t\t\tactiveElementKey.value = nodeId\n\t\t\t},\n\t\t},\n\t\t// position: { x: Math.random() * vueFlowInstance.value.dimensions.width, y: Math.random() * vueFlowInstance.value.dimensions.height }\n\t\tposition: newNodePosition,\n\t})\n\n\tif (makeEdge) {\n\t\tlet edgeId = `edge-${id + 1}`\n\t\tvueFlowElements.value.push({\n\t\t\tid: edgeId,\n\t\t\tsource: activeElementKey.value,\n\t\t\ttarget: nodeId,\n\t\t\ttype: 'editable',\n\t\t\tlabel: `EDGE ${id + 1}`,\n\t\t\tanimated: true,\n\t\t\tevents: {\n\t\t\t\tclick: () => {\n\t\t\t\t\tactiveElementKey.value = edgeId\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t}\n}\n\nconst labelChanged = (e, id) => {\n\tfor (let j = 0; j < vueFlowElements.value.length; j++) {\n\t\tif (vueFlowElements.value[j].id == id) {\n\t\t\tvueFlowElements.value[j].label = e\n\t\t\tbreak\n\t\t}\n\t}\n}\n\nconst handleConnect = (connection: Connection) => {\n\tconst id = vueFlowElements.value.length\n\tconst newEdge = {\n\t\tid: `edge-${id}`,\n\t\tsource: connection.source,\n\t\ttarget: connection.target,\n\t\ttype: 'editable',\n\t\tlabel: `New Edge`,\n\t\tinteractionWidth: 400,\n\t\tanimated: true,\n\t\tevents: {\n\t\t\tclick: () => {\n\t\t\t\tactiveElementKey.value = newEdge.id\n\t\t\t},\n\t\t},\n\t}\n\taddEdges([newEdge])\n}\n\nonConnect(handleConnect)\n\nconst handleEdgeRemove = edgeId => {\n\tremoveEdges(edgeId)\n}\n\nonEdgeContextMenu(({ event, edge }) => {\n\thandleEdgeRemove(edge.id)\n})\n</script>\n\n<style>\n@import '@vue-flow/core/dist/style.css';\n@import '@vue-flow/core/dist/theme-default.css';\n\n.chart-controls-left,\n.chart-controls-right {\n\theight: 1.8em;\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n\tpadding-top: 0.2em;\n}\n\n.chart-controls-right div {\n\tmargin-left: 5px;\n}\n\n.chart-controls {\n\tpadding-left: 20px;\n\tpadding-right: 20px;\n\theight: 1.8em;\n\tborder-bottom: 1px solid #ccc;\n\tdisplay: flex;\n\tflex-direction: row;\n\tjustify-content: space-between;\n}\n\n.chart-controls div {\n\tmargin-bottom: 5px;\n}\n\n.defaultContainerClass {\n\theight: 90vh;\n\twidth: 100%;\n\tborder: 1px solid #ccc;\n}\n\n.default-input-node.vue-flow__node-input,\n.default-output-node.vue-flow__node-output {\n\tborder-color: #000;\n}\n\n.default-input-node.vue-flow__node-input .vue-flow__handle,\n.default-output-node.vue-flow__node-output .vue-flow__handle {\n\tbackground-color: #000;\n}\n\n.default-input-node.vue-flow__node-input.selected,\n.default-output-node.vue-flow__node-output.selected {\n\tbox-shadow: 0 0 0 0.5px #000;\n}\n\nbutton.button-default {\n\tbackground-color: #ffffff;\n\tpadding: 1px 12px;\n\tborder-radius: 3px;\n\tborder: 1px solid #ccc;\n\tcursor: pointer;\n\twhite-space: nowrap;\n}\n\nbutton.button-default:hover {\n\tbackground-color: #f2f2f2;\n}\n\n.vue-flow {\n\tbackground-size: 40px 40px;\n\tbackground-image: linear-gradient(to right, #ccc 1px, transparent 1px),\n\t\tlinear-gradient(to bottom, #ccc 1px, transparent 1px);\n}\n\ninput.label-editor {\n\tposition: absolute;\n}\n\n.node-editor-wrapper {\n\tposition: relative;\n}\n</style>\n","<template>\n\t<div>\n\t\t<NodeEditor v-model=\"elements\" :node-container-class=\"nodeContainerClass\" />\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport { type Node, Position } from '@vue-flow/core'\nimport { type HTMLAttributes, computed } from 'vue'\n\nimport NodeEditor from './NodeEditor.vue'\nimport type { EditorStates, FlowElement, FlowElements, Layout } from '../types'\n\nconst emit = defineEmits(['update:modelValue'])\nconst states = defineModel<EditorStates>()\nconst { layout, nodeContainerClass } = defineProps<{\n\tlayout: Layout\n\tnodeContainerClass?: HTMLAttributes['class']\n}>()\n\nconst elements = computed<FlowElements>({\n\tget: () => {\n\t\tconst hasInputs = {}\n\t\tconst stateElements: FlowElements = []\n\t\tconst stateHash: Record<string, FlowElement> = {}\n\n\t\tif (!states.value) {\n\t\t\treturn stateElements\n\t\t}\n\n\t\tlet index = 0\n\t\tfor (const [key, value] of Object.entries(states.value)) {\n\t\t\tconst el: Node = {\n\t\t\t\tid: key,\n\t\t\t\tlabel: key,\n\t\t\t\tposition: layout[key]?.position || { x: 200 * index, y: 100 },\n\t\t\t\ttargetPosition: layout[key]?.targetPosition || Position.Left,\n\t\t\t\tsourcePosition: layout[key]?.sourcePosition || Position.Right,\n\t\t\t}\n\n\t\t\tif (value?.type === 'final') {\n\t\t\t\tel.type = 'output'\n\t\t\t\tel.class = 'default-output-node'\n\t\t\t}\n\n\t\t\tstateHash[key] = el\n\t\t}\n\n\t\tfor (const [key, value] of Object.entries(states.value)) {\n\t\t\tif (value?.on) {\n\t\t\t\tfor (const [edgeKey, edgeValue] of Object.entries(value.on)) {\n\t\t\t\t\t// NOTE: If the proxy array 'value.on' has more than one edge, 'edgeValue' will contain a proxy object\n\t\t\t\t\t// where 'target' can be accessed. Otherwise, 'edgeValue' will be available directly.\n\n\t\t\t\t\t// TODO: resolve type issues with xstate\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n\t\t\t\t\tconst target = edgeValue.target || edgeValue\n\t\t\t\t\tstateElements.push({\n\t\t\t\t\t\tid: `${key}-${target}`,\n\t\t\t\t\t\tsource: key,\n\t\t\t\t\t\ttarget: target,\n\t\t\t\t\t\tlabel: edgeKey,\n\t\t\t\t\t\tanimated: true,\n\t\t\t\t\t})\n\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n\t\t\t\t\thasInputs[target] = true\n\t\t\t\t}\n\t\t\t}\n\t\t\tindex++\n\t\t}\n\n\t\tfor (const [key, value] of Object.entries(stateHash)) {\n\t\t\tif (!hasInputs[key]) {\n\t\t\t\tvalue['type'] = 'input'\n\t\t\t\tvalue['class'] = 'default-input-node'\n\t\t\t}\n\t\t\tstateElements.push(value)\n\t\t}\n\n\t\treturn stateElements\n\t},\n\n\tset: newValue => {\n\t\t// update modelValue when elements change\n\t\tonElementsChange(newValue)\n\n\t\t// TODO: emit('update:modelValue', modelValue)\n\t},\n})\nconst onElementsChange = (elements: FlowElements) => {\n\tconst edges: Record<string, Record<string, any>> = {}\n\tconst idToLabel: Record<string, string> = {}\n\tconst states: EditorStates = {}\n\n\tfor (const el of elements) {\n\t\tconst label = el.label as string\n\n\t\tif (el.type === 'input') {\n\t\t\t// it's an input node\n\t\t\tstates[label] = {\n\t\t\t\ton: {},\n\t\t\t}\n\t\t} else if (el.type === 'output') {\n\t\t\t// it's an output node\n\t\t\tstates[label] = {\n\t\t\t\ttype: 'final',\n\t\t\t}\n\t\t} else if (el.source && el.target) {\n\t\t\t// it's an edge\n\t\t\tedges[el.source] = edges[el.source] || {}\n\t\t\tedges[el.source][label] = {\n\t\t\t\ttarget: el.target,\n\t\t\t}\n\t\t} else {\n\t\t\t// it's a state\n\t\t\tstates[label] = {\n\t\t\t\ton: {},\n\t\t\t}\n\t\t}\n\t\tidToLabel[el.id] = label\n\t}\n\n\tfor (const [edgeKey, edgeValue] of Object.entries(edges)) {\n\t\t// add edges to states\n\t\tconst label = idToLabel[edgeKey]\n\t\tfor (const [key, value] of Object.entries(edgeValue)) {\n\t\t\tif (!states[label]) {\n\t\t\t\tstates[label] = { on: {} }\n\t\t\t}\n\t\t\tstates[label].on[key] = value\n\t\t}\n\t}\n\n\temit('update:modelValue', states)\n}\n</script>\n","import { App } from 'vue'\n\nimport NodeEditor from './components/NodeEditor.vue'\nimport StateEditor from './components/StateEditor.vue'\nexport type * from './types'\n\n/**\n * Install all Node Editor components\n * @param app - Vue app instance\n * @public\n */\nfunction install(app: App) {\n\tapp.component('NodeEditor', NodeEditor)\n\tapp.component('StateEditor', StateEditor)\n}\n\nexport { install, NodeEditor, StateEditor }\n"],"names":["tryOnScopeDispose","fn","getCurrentScope","onScopeDispose","toValue","r","unref","isClient","isDef$1","val","toString","isObject","noop$2","createFilterWrapper","filter2","wrapper","args","resolve","reject","bypassFilter","invoke","pausableFilter","extendFilter","isActive","ref","pause","resume","eventFilter","readonly","promiseTimeout","ms","throwOnTimeout","reason","watchWithFilter","source","cb","options","watchOptions","watch","watchPausable","toRefs","objectRef","isRef","toRefs$1","result","key","customRef","v","_a","copy","newObject","createUntil","isNot","toMatch","condition","flush","deep","timeout2","stop","promises","toBe","value","v1","v2","toBeTruthy","toBeNull","toBeUndefined","toBeNaN","toContains","array2","changed","changedTimes","n","count","until","unrefElement","elRef","plain","defaultWindow","useEventListener","target","events","listeners","cleanups","cleanup","register","el","event","listener","options2","stopWatch","optionsClone","createKeyPredicate$1","keyFilter","onKeyStroke","handler","eventName","passive","dedupe","predicate","e","cloneFnJSON","useVModel","props","emit","_b","_c","clone","defaultValue","shouldEmit","vm","getCurrentInstance","_emit","cloneFn","getValue","triggerEmit","initialValue","proxy","isUpdating","nextTick","computed","noop$1","dispatch","i","_","t","Dispatch","parseTypenames$1","typenames","types","name","typename","callback","T","get$1","set$1","type","that","c","xhtml","namespaces","namespace","prefix","creatorInherit","document2","uri","creatorFixed","fullname","creator","none","selector","selector2","selection_select","select2","groups","m","subgroups","j","group","subgroup","node","subnode","Selection$1","array","x","empty","selectorAll","arrayAll","selection_selectAll","parents","matcher","childMatcher","find","childFind","match","childFirst","selection_selectChild","filter","children","childrenFilter","selection_selectChildren","selection_filter","sparse","update","selection_enter","EnterNode","parent","datum2","child","next","constant$3","bindIndex","enter","exit","data","groupLength","dataLength","bindKey","nodeByKeyValue","keyValues","keyValue","datum","selection_data","bind","arraylike","enterGroup","updateGroup","exitGroup","i0","i1","previous","selection_exit","selection_join","onenter","onupdate","onexit","selection_merge","context","selection2","groups0","groups1","m0","m1","merges","group0","group1","merge","selection_order","selection_sort","compare","ascending","compareNode","a","b","sortgroups","sortgroup","selection_call","selection_nodes","selection_node","selection_size","size","selection_empty","selection_each","attrRemove$1","attrRemoveNS$1","attrConstant$1","attrConstantNS$1","attrFunction$1","attrFunctionNS$1","selection_attr","defaultView","styleRemove$1","styleConstant$1","priority","styleFunction$1","selection_style","styleValue","propertyRemove","propertyConstant","propertyFunction","selection_property","classArray","string","classList","ClassList","classedAdd","names","list","classedRemove","classedTrue","classedFalse","classedFunction","selection_classed","textRemove","textConstant$1","textFunction$1","selection_text","htmlRemove","htmlConstant","htmlFunction","selection_html","raise","selection_raise","lower","selection_lower","selection_append","create2","constantNull","selection_insert","before","remove","selection_remove","selection_cloneShallow","selection_cloneDeep","selection_clone","selection_datum","contextListener","parseTypenames","onRemove","on","o","onAdd","selection_on","dispatchEvent","params","window2","dispatchConstant","dispatchFunction","selection_dispatch","selection_iterator","root","selection","selection_selection","select","sourceEvent","sourceEvent2","pointer","svg","point","rect","nonpassive","nonpassivecapture","nopropagation$1","noevent$1","dragDisable","view","root2","yesdrag","noclick","constant$2","DragEvent","subject","identifier","active","y","dx","dy","dispatch2","defaultFilter$1","defaultContainer","defaultSubject","d","defaultTouchable$1","drag","container","touchable","gestures","mousedownx","mousedowny","mousemoving","touchending","clickDistance2","drag2","mousedowned","touchstarted","touchmoved","touchended","gesture","beforestart","mousemoved","mouseupped","touches","container2","touch","p","s","event2","touch2","p0","define","constructor","factory","prototype","extend","definition","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","color","channels","color_formatHex","color_formatHex8","color_formatHsl","color_formatRgb","hslConvert","format","l","rgbn","Rgb","rgba","hsla","g","rgbConvert","rgb","opacity","k","clampi","clampa","rgb_formatHex","rgb_formatHex8","rgb_formatRgb","hex","h2","Hsl","min","max","hsl","m2","hsl2rgb","clamph","clampt","constant$1","linear","exponential","gamma","nogamma","interpolateRgb","rgbGamma","color2","rgb$1","start2","end","numberArray","isNumberArray","genericArray","nb","na","interpolate$1","date","interpolateNumber","object","reA","reB","zero","one","interpolateString","bi","am","bm","bs","q","i2","degrees","identity$1","decompose","f","scaleX","scaleY","skewX","svgNode","parseCss","parseSvg","interpolateTransform","parse","pxComma","pxParen","degParen","pop","translate","xa","ya","xb","yb","rotate","scale","interpolateTransformCss","interpolateTransformSvg","epsilon2","cosh","sinh","tanh","interpolateZoom","zoomRho","rho","rho2","rho4","zoom2","p1","ux0","uy0","w0","ux1","uy1","w1","d2","S","d1","b0","b1","r0","r1","coshr0","u","_1","_2","_4","frame","timeout$1","interval","pokeDelay","taskHead","taskTail","clockLast","clockNow","clockSkew","clock","setFrame","now","clearNow","Timer","timer","delay","time","sleep","timerFlush","wake","nap","poke","now2","t0","t1","t2","timeout","elapsed","emptyOn","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","schedule","id2","index","timing","schedules","create","init","schedule2","get","set","self","tween","tick","interrupt","empty2","selection_interrupt","tweenRemove","tween0","tween1","tweenFunction","transition_tween","tweenValue","transition","interpolate","attrRemove","attrRemoveNS","attrConstant","interpolate2","value1","string00","string1","interpolate0","string0","attrConstantNS","attrFunction","string10","attrFunctionNS","transition_attr","attrInterpolate","attrInterpolateNS","attrTweenNS","attrTween","transition_attrTween","delayFunction","delayConstant","transition_delay","durationFunction","durationConstant","transition_duration","easeConstant","transition_ease","easeVarying","transition_easeVarying","transition_filter","Transition","transition_merge","start","onFunction","on0","on1","sit","transition_on","removeFunction","transition_remove","transition_select","transition_selectAll","children2","inherit2","Selection","transition_selection","styleNull","styleRemove","styleConstant","styleFunction","styleMaybeRemove","listener0","remove2","transition_style","styleInterpolate","styleTween","transition_styleTween","textConstant","textFunction","transition_text","textInterpolate","textTween","transition_textTween","transition_transition","id0","id1","newId","transition_end","cancel","id","selection_prototype","cubicInOut","defaultTiming","inherit","selection_transition","constant","ZoomEvent","transform","Transform","location","identity","nopropagation","noevent","defaultFilter","defaultExtent","defaultTransform","defaultWheelDelta","defaultTouchable","defaultConstrain","extent","translateExtent","dx0","dx1","dy0","dy1","zoom","constrain","wheelDelta","scaleExtent","duration","touchstarting","touchfirst","touchDelay","wheelDelay","tapDistance","wheeled","dblclicked","collection","k0","k1","centroid","extent2","w","clean","Gesture","wheelidled","currentTarget","x0","y0","started","l0","l1","dp","dl","Position","Position2","SelectionMode","SelectionMode2","ConnectionLineType","ConnectionLineType2","ConnectionMode","ConnectionMode2","MarkerType","MarkerType2","PanOnScrollMode","PanOnScrollMode2","inputTags","defaultDoc","isInputDOMNode","hasAttribute","closest","wasModifierPressed","isKeyMatch","pressedKey","keyToMatch","pressedKeys","isKeyUp","keyCombination","isMatch","createKeyPredicate","keyOrCode","useKeyOrCode","code","keysToWatch","useKeyPress","toValue$1","isPressed","shallowRef","modifierPressed","currentFilter","createKeyFilterFn","nextKeyFilter","previousKeyFilter","reset","actInsideInputWithModifier","preventDefault","target2","isInteractiveElement","keyFilter2","ARIA_NODE_DESC_KEY","ARIA_EDGE_DESC_KEY","ARIA_LIVE_MESSAGE","elementSelectionKeys","arrowKeyDiffs","nodeToRect","getOverlappingArea","rectA","rectB","xOverlap","yOverlap","getDimensions","clamp","clampPosition","position","getHostForElement","element","doc","isEdge","isNode","isGraphNode","isNumeric","isRect","obj","parseNode","existingNode","parentNode","initialState","markRaw","isDef","parseEdge","edge","existingEdge","defaultEdgeOptions","getConnectedElements","nodeOrId","nodes","edges","dir","connectedIds","origin","getOutgoers","nodeOrId2","elements","nodeId","getIncomers","getEdgeId","sourceHandle","targetHandle","connectionExists","rendererPointToPoint","tx","ty","tScale","pointToRendererPoint","snapToGrid","snapGrid","snapPosition","getBoundsOfBoxes","box1","box2","rectToBox","width","height","boxToRect","x2","y2","getRectOfNodes","box","getNodesInside","viewport","partially","excludeNonSelectableNodes","paneRect","visibleNodes","dimensions","selectable","hidden","overlappingArea","notInitialized","partiallyVisible","area","getConnectedEdges","nodesOrId","nodeIds","getTransformForBounds","bounds","minZoom","maxZoom","padding","offset","xZoom","yZoom","clampedZoom","boundsCenterX","boundsCenterY","getXYZPos","parentPos","computedPosition","isParentSelected","findNode","getMarkerId","marker","vueFlowId","calcAutoPanVelocity","calcAutoPan","pos","speed","distance2","xMovement","yMovement","handleParentExpand","updateItem","extendWidth","extendHeight","parentStyles","currWidth","xDiff","yDiff","styleFunc","applyChanges","changes","addRemoveChanges","change","elementIds","currentChange","createSelectionChange","selected","createAdditionChange","item","createNodeRemoveChange","createEdgeRemoveChange","getSelectionChanges","items","selectedIds","mutateItem","willBeSelected","createExtendedEventHook","defaultHandler","fns","hasDefaultHandler","hasListeners","off","offFn","param","hasSelector","current","getDragItems","nodesDraggable","mousePos","dragItems","getEventHandlerParams","extendedDragItems","dragItem","getExtentPadding","getParentExtent","currentExtent","top","right","bottom","left","getExtent","triggerError","parentExtent","VueFlowError","ErrorCode","parentX","parentY","clampNodeExtent","calcNextPosition","nextPosition","nodeExtent","clampedPos","getHandlePosition","handle","fallbackPosition","center","getNodeDimensions","getEdgeHandle","handleId","isEdgeVisible","sourcePos","targetPos","sourceWidth","sourceHeight","targetWidth","targetHeight","edgeBox","viewBox","getEdgeZIndex","elevateEdgesOnSelect","hasZIndex","z","ErrorCode2","messages","parentId","isMouseEvent","isUseDragEvent","getEventPosition","isMouse","evtX","evtY","isMacOs","alwaysValid$1","resetRecentHandle","handleDomNode","getNodesWithinDistance","nodeLookup","ADDITIONAL_DISTANCE","getClosestHandle","connectionRadius","fromHandle","closestHandles","minDistance","closeNodes","allHandles","oppositeHandleType","isValidHandle","connectionMode","fromNodeId","fromHandleId","fromType","lib","flowId","isValidConnection","isTarget","handleBelow","handleToCheck","handleType","getHandleType","handleNodeId","connectable","connectableEnd","connection","isValid","edgeUpdaterType","getConnectionStatus","isInsideConnectionRadius","isHandleValid","connectionStatus","isConnectionValid","getHandle","withAbsolutePosition","handles","oppositePosition","productionEnvs","warn","message","isDev","getHandleBounds","nodeElement","nodeBounds","handleBounds","handleNodeClick","multiSelectionActive","addSelectedNodes","removeSelectedNodes","nodesSelectionActive","unselect","nodeEl","addEdgeToStore","edgeParams","updateEdgeAction","newConnection","prevEdge","shouldReplaceId","rest","createGraphNodes","parentNodes","nextNodes","parsed","addConnectionToLookup","connectionKey","connectionLookup","nodeMap","typeMap","handleMap","updateConnectionLookup","edgeLookup","sourceNode","targetNode","sourceKey","targetKey","areSetsEqual","createGraphEdges","nextEdges","findEdge","onError","validEdges","edgeOrConnection","VueFlow","NodeId","NodeRef","EdgeId","EdgeRef","Slots","useDrag","vueFlowRef","noDragClassName","nodeDragThreshold","autoPanOnNodeDrag","autoPanSpeed","panBy","selectNodesOnDrag","removeSelectedElements","updateNodePositions","emits","useVueFlow","onStart","onDrag","onStop","onClick","disabled","dragHandle","dragging","dragHandler","containerBounds","lastPos","mousePosition","dragEvent","dragStarted","autoPanId","autoPanStarted","getPointerPosition","useGetPointerPosition","updateNodes","hasChange","currentNode","nodes2","autoPan","nextPos","startDrag","pointerPos","eventStart","eventDrag","eventEnd","isClick","evt","isDisabled","onCleanup","unrefDragHandle","createEdgeHooks","useEdgeHooks","edgeHooks","hooks","xSnapped","ySnapped","alwaysValid","useHandle","onEdgeUpdate","onEdgeUpdateEnd","connectOnClick","connectionClickStartHandle","nodesConnectable","autoPanOnConnect","startConnection","updateConnection","endConnection","isValidConnectionProp","handlePointerDown","isMouseTriggered","onPointerMove","connectionPosition","closestHandle","isValidConnectionHandler","newConnection2","previousConnection","prevActiveHandle","onPointerUp","clickedHandle","fromHandleInternal","fromNodeInternal","handleClick","isOwnHandle","useNodeId","inject","useNode","createNodeHooks","useNodeHooks","nodeHooks","useUpdateNodePositions","getSelectedNodes","positionDiff","isShiftPressed","xVelo","yVelo","factor","positionDiffX","positionDiffY","nodeUpdates","DEFAULT_PADDING","defaultEase","noop","initialViewportHelper","useViewportHelper","state","transitionOptions","getD3Transition","transformViewport","zoom22","clampedX","clampedY","nextTransform","zoomLevel","nodesToFit","nextZoom","centerX","centerY","domX","domY","correctedPosition","ease","onEnd","hasDuration","useWatchProps","models","store","scope","effectScope","watchModelValue","pauseModel","pauseStore","immediateStore","watchNodesValue","watchEdgesValue","watchMaxZoom","watchMinZoom","watchTranslateExtent","watchNodeExtent","watchApplyDefault","watchAutoConnect","autoConnector","autoConnectEnabled","watchRest","skip","propKey","propValue","toRef","storeRef","nextValue","createHooks","err","useHooks","onBeforeMount","useState","storeOptionsToSkip","useActions","viewportHelper","updateNodeInternals","ids","updateIds","getIncomers$1","getOutgoers$1","getConnectedEdges$1","getHandleConnections","updateNodeDimensions","updates","viewportNode","style","elementSelectionHandler","edgeIds","changedNodes","changedEdges","edgeId","nodeChanges","addSelectedEdges","addSelectedElements","removeSelectedEdges","edgeChanges","changes2","curr","selectionChange","setMinZoom","setMaxZoom","setTranslateExtent","setNodeExtent","setPaneClickDistance","clickDistance","setInteractive","isInteractive","setNodes","setEdges","setElements","nextElements","addNodes","graphNodes","addEdges","removeNodes","removeConnectedEdges","removeChildren","nodesToRemove","createEdgeRemovalChanges","connectedEdges","createChildrenRemovalChanges","currNode","removeEdges","edgesToRemove","currEdge","updateEdge2","oldEdge","prevEdgeIndex","newEdge","validEdge","updateEdgeData","dataUpdate","nextData","applyNodeChanges2","applyEdgeChanges2","updateNode","nodeUpdate","nextNode","updateNodeData","startHandle","status","getNodeRect","nodeOrRect","isRectObj","getIntersectingNodes","nodeRect","isRect2","intersections","currNodeRect","isNodeIntersecting","delta","d3Zoom","d3Selection","constrainedTransform","transformChanged","setState","opts","exclude","setSkippedOptions","option","transitionOpts","__","___","____","_____","______","_______","_________","resetState","updatedTransform","bbox","_hoisted_1$9","__default__$f","_sfc_main$f","defineComponent","__props","__expose","createPropsRestProxy","connectionStartHandle","connectionEndHandle","noPanClassName","isConnectableStart","isConnectableEnd","isConnecting","_d","_e","_f","isClickConnecting","isConnectable","onMounted","existingBounds","nextBounds","onPointerDown","_ctx","_cache","openBlock","createElementBlock","normalizeClass","renderSlot","DefaultNode","sourcePosition","targetPosition","_label","isValidTargetPos","isValidSourcePos","label","h","Fragment","DefaultNode$1","OutputNode","OutputNode$1","InputNode","InputNode$1","_hoisted_1$8","_hoisted_2$2","_hoisted_3$1","__default__$e","_sfc_main$e","getBox","nextBox","normalizeStyle","createCommentVNode","createElementVNode","mergeProps","createBlock","resolveDynamicComponent","createTextVNode","toDisplayString","_hoisted_1$7","_hoisted_2$1","__default__$d","_sfc_main$d","pathEl","interactionEl","labelEl","attrs","useAttrs","getSimpleEdgeCenter","sourceX","sourceY","targetX","targetY","xOffset","yOffset","getBezierEdgeCenter","sourceControlX","sourceControlY","targetControlX","targetControlY","offsetX","offsetY","calculateControlOffset","curvature","getControlWithCurvature","x1","y1","ctX","ctY","getBezierPath","bezierPathParams","labelX","labelY","getControl","getSimpleBezierPath","simpleBezierPathParams","handleDirections","getDirection","distance","getPoints","sourceDir","targetDir","sourceGapped","targetGapped","dirAccessor","currDir","points","sourceGapOffset","targetGapOffset","defaultCenterX","defaultCenterY","defaultOffsetX","defaultOffsetY","verticalSplit","horizontalSplit","sourceTarget","targetSource","diff","gapOffset","dirAccessorOpposite","isSameDir","sourceGtTargetOppo","sourceLtTargetOppo","sourceGapPoint","targetGapPoint","maxXDistance","maxYDistance","getBend","bendSize","xDir2","yDir2","xDir","yDir","getSmoothStepPath","smoothStepPathParams","borderRadius","res","segment","getStraightPath","straightEdgeParams","StraightEdge","path","StraightEdge$1","SmoothStepEdge","SmoothStepEdge$1","StepEdge","StepEdge$1","BezierEdge","BezierEdge$1","SimpleBezierEdge","SimpleBezierEdge$1","defaultNodeTypes","defaultEdgeTypes","useGetters","getNode","getEdge","getEdgeTypes","edgeTypes","keys","getNodeTypes","nodeTypes","getNodes","getEdges","visibleEdges","getElements","selectedNodes","getSelectedEdges","selectedEdges","getSelectedElements","getNodesInitialized","initializedNodes","areNodesInitialized","Storage","vueApp","existingInstance","flow","preloadedState","reactiveState","reactive","hooksOn","nodesMap","edgesMap","getters","actions","idOrOpts","storage","isOptsObj","vueFlow","injectedState","shouldApplyDefault","nodesChangeHandler","edgesChangeHandler","storedInstance","provide","instance","useResizeHandler","viewportEl","resizeObserver","rendererNode","updateDimensions","onBeforeUnmount","__default__$c","_sfc_main$c","_hoisted_1$6","__default__$b","_sfc_main$b","disableKeyboardA11y","userSelectionActive","updatePositions","selectedNodesBBox","innerStyle","onContextMenu","onKeyDown","getMousePosition","__default__$a","_sfc_main$a","userSelectionRect","elementsSelectable","selectionMode","deleteKeyCode","multiSelectionKeyCode","selectedNodeIds","selectedEdgeIds","hasActiveSelection","connectionInProgress","selectionInProgress","selectionStarted","deleteKeyPressed","multiSelectKeyPressed","isKeyPressed","wrapHandler","containerRef","onWheel","mouseX","mouseY","startX","startY","nextUserSelectRect","prevSelectedNodeIds","prevSelectedEdgeIds","edgesSelectable","connections","$event","__default__$9","_sfc_main$9","fitViewOnInit","fitViewOnInitDone","isHidden","__default__$8","_sfc_main$8","defaultViewport","zoomActivationKeyCode","selectionKeyCode","panActivationKeyCode","panOnScroll","panOnScrollMode","panOnScrollSpeed","panOnDrag","zoomOnDoubleClick","zoomOnPinch","zoomOnScroll","preventScrolling","noWheelClassName","paneDragging","storeD3Zoom","storeD3Selection","storeD3ZoomHandler","viewportRef","paneClickDistance","isZoomingOrPanning","isPanScrolling","panScrollTimeout","zoomedWithRightMouseButton","mouseButton","prevTransform","panKeyPressed","selectionKeyPressed","zoomKeyPressed","shouldPanOnDrag","shouldPanOnScroll","isSelecting","viewportElement","d3ZoomHandler","flowTransform","eventToFlowTransform","isRightClickPan","viewChanged","zoomScroll","pinchZoom","eventButton","isWrappedWithClass","buttonAllowed","currentZoom","_isMacOs","pinchDelta","deltaNormalize","deltaX","deltaY","nextViewport","invalidEvent","pan","usedButton","prevViewport","eventTransform","className","createVNode","withCtx","_hoisted_1$5","_hoisted_2","_hoisted_3","__default__$7","_sfc_main$7","ariaLiveMessage","useOnInitHandler","vfInstance","isInitialized","shiftX","shift","shiftY","EdgeAnchor","radius","EdgeAnchor$1","EdgeWrapper","edgeUpdaterRadius","edgesUpdatable","edgesFocusable","slots","mouseOver","updating","edgeEl","isSelectable","isUpdatable","isFocusable","edgeClass","edgeStyle","edgeCmp","slot","edgeType","components","resolveComponent","pathOptions","sourceNodeHandles","targetNodeHandles","onEdgeClick","onEdgeContextMenu","onDoubleClick","onEdgeMouseEnter","onEdgeMouseMove","onEdgeMouseLeave","onEdgeUpdaterSourceMouseDown","onEdgeUpdaterMouseEnter","onEdgeUpdaterMouseOut","onEdgeUpdaterTargetMouseDown","handleEdgeUpdater","isSourceHandle","EdgeWrapper$1","ConnectionLine","connectionLineType","connectionLineStyle","connectionLineOptions","connectionLineComponent","fromNode","_a2","toNode","toXY","markerStart","markerEnd","startHandleId","fromHandleBounds","oppositeBounds","fromPosition","fromX","fromY","toHandle","_a3","toPosition","dAttr","pathParams","ConnectionLine$1","_hoisted_1$4","__default__$6","_sfc_main$6","_hoisted_1$3","__default__$5","_sfc_main$5","defaultColor","markers","markers2","createMarkers","markerId","renderList","__default__$4","_sfc_main$4","NodeWrapper","onUpdateNodeInternals","elevateNodesOnSelect","nodesFocusable","isDraggable","hasPointerEvents","isInit","nodeCmp","nodeType","onSelectNode","getClass","getStyle","styles","zIndex","updateInternals","newX","newY","parentZ","nodeZIndex","xyzPos","nodeExtent2","globalExtent","oldNodeExtent","oldGlobalExtent","clampPosition2","onMouseEnter","onMouseMove","onMouseLeave","NodeWrapper$1","_hoisted_1$2","__default__$3","_sfc_main$3","teleportTarget","Teleport","useNodesInitialized","_hoisted_1$1","__default__$2","_sfc_main$2","nodesInitialized","entries","entry","_cached","_memo","isMemoSame","_item","useStylesLoadedWarning","pane","_hoisted_1","__default__$1","_sfc_main$1","useSlots","modelValue","modelNodes","modelEdges","dispose","onUnmounted","__default__","__emit","inputRef","useTemplateRef","newLabel","showInput","lastClick","labelOnClick","showLabelInput","submitNewLabel","_createElementVNode","_createVNode","_unref","EdgeLabelRenderer","_normalizeStyle","_toDisplayString","_openBlock","_createElementBlock","nodeOnClick","_createBlock","Handle","hover","vueFlowElements","vueFlowInstance","activeElementKey","activeElementIndex","_elements","_element","newValue","onConnect","onPaneReady","handleKeypress","shiftTerminal","currentTerminal","shiftOutput","activeNode","shiftInput","fitView","addNode","makeEdge","newNodePosition","labelChanged","handleEdgeRemove","_normalizeClass","nodeContainerClass","_hoisted_4","_hoisted_5","_withCtx","EditableNode","_mergeProps","EditableEdge","states","_useModel","hasInputs","stateElements","stateHash","edgeKey","edgeValue","onElementsChange","idToLabel","NodeEditor","install","app","StateEditor"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"node-editor.js","sources":["../../common/temp/node_modules/.pnpm/@vue-flow+core@1.45.0_vue@3.5.22_typescript@5.9.3_/node_modules/@vue-flow/core/dist/vue-flow-core.mjs","../src/components/EditableEdge.vue","../src/components/EditableNode.vue","../src/components/NodeEditor.vue","../src/components/StateEditor.vue","../src/index.ts"],"sourcesContent":["import { getCurrentScope, onScopeDispose, isRef, reactive, unref, toRefs as toRefs$1, customRef, ref, readonly, watch, getCurrentInstance, nextTick, computed, toValue as toValue$1, shallowRef, markRaw, inject, effectScope, toRef, onBeforeMount, defineComponent, createPropsRestProxy, onMounted, openBlock, createElementBlock, normalizeClass, renderSlot, h, Fragment, normalizeStyle, createCommentVNode, createElementVNode, mergeProps, createBlock, resolveDynamicComponent, createTextVNode, toDisplayString, useAttrs, provide, onBeforeUnmount, createVNode, withCtx, resolveComponent, renderList, Teleport, isMemoSame, useSlots, onUnmounted } from \"vue\";\nfunction tryOnScopeDispose(fn) {\n if (getCurrentScope()) {\n onScopeDispose(fn);\n return true;\n }\n return false;\n}\nfunction toValue(r) {\n return typeof r === \"function\" ? r() : unref(r);\n}\nfunction toReactive(objectRef) {\n if (!isRef(objectRef))\n return reactive(objectRef);\n const proxy = new Proxy({}, {\n get(_, p, receiver) {\n return unref(Reflect.get(objectRef.value, p, receiver));\n },\n set(_, p, value) {\n if (isRef(objectRef.value[p]) && !isRef(value))\n objectRef.value[p].value = value;\n else\n objectRef.value[p] = value;\n return true;\n },\n deleteProperty(_, p) {\n return Reflect.deleteProperty(objectRef.value, p);\n },\n has(_, p) {\n return Reflect.has(objectRef.value, p);\n },\n ownKeys() {\n return Object.keys(objectRef.value);\n },\n getOwnPropertyDescriptor() {\n return {\n enumerable: true,\n configurable: true\n };\n }\n });\n return reactive(proxy);\n}\nconst isClient = typeof window !== \"undefined\" && typeof document !== \"undefined\";\nconst isDef$1 = (val) => typeof val !== \"undefined\";\nconst toString = Object.prototype.toString;\nconst isObject = (val) => toString.call(val) === \"[object Object]\";\nconst noop$2 = () => {\n};\nfunction createFilterWrapper(filter2, fn) {\n function wrapper(...args) {\n return new Promise((resolve, reject) => {\n Promise.resolve(filter2(() => fn.apply(this, args), { fn, thisArg: this, args })).then(resolve).catch(reject);\n });\n }\n return wrapper;\n}\nconst bypassFilter = (invoke) => {\n return invoke();\n};\nfunction pausableFilter(extendFilter = bypassFilter) {\n const isActive = ref(true);\n function pause() {\n isActive.value = false;\n }\n function resume() {\n isActive.value = true;\n }\n const eventFilter = (...args) => {\n if (isActive.value)\n extendFilter(...args);\n };\n return { isActive: readonly(isActive), pause, resume, eventFilter };\n}\nfunction promiseTimeout(ms, throwOnTimeout = false, reason = \"Timeout\") {\n return new Promise((resolve, reject) => {\n if (throwOnTimeout)\n setTimeout(() => reject(reason), ms);\n else\n setTimeout(resolve, ms);\n });\n}\nfunction watchWithFilter(source, cb, options = {}) {\n const {\n eventFilter = bypassFilter,\n ...watchOptions\n } = options;\n return watch(\n source,\n createFilterWrapper(\n eventFilter,\n cb\n ),\n watchOptions\n );\n}\nfunction watchPausable(source, cb, options = {}) {\n const {\n eventFilter: filter2,\n ...watchOptions\n } = options;\n const { eventFilter, pause, resume, isActive } = pausableFilter(filter2);\n const stop = watchWithFilter(\n source,\n cb,\n {\n ...watchOptions,\n eventFilter\n }\n );\n return { stop, pause, resume, isActive };\n}\nfunction toRefs(objectRef, options = {}) {\n if (!isRef(objectRef))\n return toRefs$1(objectRef);\n const result = Array.isArray(objectRef.value) ? Array.from({ length: objectRef.value.length }) : {};\n for (const key in objectRef.value) {\n result[key] = customRef(() => ({\n get() {\n return objectRef.value[key];\n },\n set(v) {\n var _a;\n const replaceRef = (_a = toValue(options.replaceRef)) != null ? _a : true;\n if (replaceRef) {\n if (Array.isArray(objectRef.value)) {\n const copy = [...objectRef.value];\n copy[key] = v;\n objectRef.value = copy;\n } else {\n const newObject = { ...objectRef.value, [key]: v };\n Object.setPrototypeOf(newObject, Object.getPrototypeOf(objectRef.value));\n objectRef.value = newObject;\n }\n } else {\n objectRef.value[key] = v;\n }\n }\n }));\n }\n return result;\n}\nfunction createUntil(r, isNot = false) {\n function toMatch(condition, { flush = \"sync\", deep = false, timeout: timeout2, throwOnTimeout } = {}) {\n let stop = null;\n const watcher = new Promise((resolve) => {\n stop = watch(\n r,\n (v) => {\n if (condition(v) !== isNot) {\n stop == null ? void 0 : stop();\n resolve(v);\n }\n },\n {\n flush,\n deep,\n immediate: true\n }\n );\n });\n const promises = [watcher];\n if (timeout2 != null) {\n promises.push(\n promiseTimeout(timeout2, throwOnTimeout).then(() => toValue(r)).finally(() => stop == null ? void 0 : stop())\n );\n }\n return Promise.race(promises);\n }\n function toBe(value, options) {\n if (!isRef(value))\n return toMatch((v) => v === value, options);\n const { flush = \"sync\", deep = false, timeout: timeout2, throwOnTimeout } = options != null ? options : {};\n let stop = null;\n const watcher = new Promise((resolve) => {\n stop = watch(\n [r, value],\n ([v1, v2]) => {\n if (isNot !== (v1 === v2)) {\n stop == null ? void 0 : stop();\n resolve(v1);\n }\n },\n {\n flush,\n deep,\n immediate: true\n }\n );\n });\n const promises = [watcher];\n if (timeout2 != null) {\n promises.push(\n promiseTimeout(timeout2, throwOnTimeout).then(() => toValue(r)).finally(() => {\n stop == null ? void 0 : stop();\n return toValue(r);\n })\n );\n }\n return Promise.race(promises);\n }\n function toBeTruthy(options) {\n return toMatch((v) => Boolean(v), options);\n }\n function toBeNull(options) {\n return toBe(null, options);\n }\n function toBeUndefined(options) {\n return toBe(void 0, options);\n }\n function toBeNaN(options) {\n return toMatch(Number.isNaN, options);\n }\n function toContains(value, options) {\n return toMatch((v) => {\n const array2 = Array.from(v);\n return array2.includes(value) || array2.includes(toValue(value));\n }, options);\n }\n function changed(options) {\n return changedTimes(1, options);\n }\n function changedTimes(n = 1, options) {\n let count = -1;\n return toMatch(() => {\n count += 1;\n return count >= n;\n }, options);\n }\n if (Array.isArray(toValue(r))) {\n const instance = {\n toMatch,\n toContains,\n changed,\n changedTimes,\n get not() {\n return createUntil(r, !isNot);\n }\n };\n return instance;\n } else {\n const instance = {\n toMatch,\n toBe,\n toBeTruthy,\n toBeNull,\n toBeNaN,\n toBeUndefined,\n changed,\n changedTimes,\n get not() {\n return createUntil(r, !isNot);\n }\n };\n return instance;\n }\n}\nfunction until(r) {\n return createUntil(r);\n}\nfunction unrefElement(elRef) {\n var _a;\n const plain = toValue(elRef);\n return (_a = plain == null ? void 0 : plain.$el) != null ? _a : plain;\n}\nconst defaultWindow = isClient ? window : void 0;\nfunction useEventListener(...args) {\n let target;\n let events;\n let listeners;\n let options;\n if (typeof args[0] === \"string\" || Array.isArray(args[0])) {\n [events, listeners, options] = args;\n target = defaultWindow;\n } else {\n [target, events, listeners, options] = args;\n }\n if (!target)\n return noop$2;\n if (!Array.isArray(events))\n events = [events];\n if (!Array.isArray(listeners))\n listeners = [listeners];\n const cleanups = [];\n const cleanup = () => {\n cleanups.forEach((fn) => fn());\n cleanups.length = 0;\n };\n const register = (el, event, listener, options2) => {\n el.addEventListener(event, listener, options2);\n return () => el.removeEventListener(event, listener, options2);\n };\n const stopWatch = watch(\n () => [unrefElement(target), toValue(options)],\n ([el, options2]) => {\n cleanup();\n if (!el)\n return;\n const optionsClone = isObject(options2) ? { ...options2 } : options2;\n cleanups.push(\n ...events.flatMap((event) => {\n return listeners.map((listener) => register(el, event, listener, optionsClone));\n })\n );\n },\n { immediate: true, flush: \"post\" }\n );\n const stop = () => {\n stopWatch();\n cleanup();\n };\n tryOnScopeDispose(stop);\n return stop;\n}\nfunction createKeyPredicate$1(keyFilter) {\n if (typeof keyFilter === \"function\")\n return keyFilter;\n else if (typeof keyFilter === \"string\")\n return (event) => event.key === keyFilter;\n else if (Array.isArray(keyFilter))\n return (event) => keyFilter.includes(event.key);\n return () => true;\n}\nfunction onKeyStroke(...args) {\n let key;\n let handler;\n let options = {};\n if (args.length === 3) {\n key = args[0];\n handler = args[1];\n options = args[2];\n } else if (args.length === 2) {\n if (typeof args[1] === \"object\") {\n key = true;\n handler = args[0];\n options = args[1];\n } else {\n key = args[0];\n handler = args[1];\n }\n } else {\n key = true;\n handler = args[0];\n }\n const {\n target = defaultWindow,\n eventName = \"keydown\",\n passive = false,\n dedupe = false\n } = options;\n const predicate = createKeyPredicate$1(key);\n const listener = (e) => {\n if (e.repeat && toValue(dedupe))\n return;\n if (predicate(e))\n handler(e);\n };\n return useEventListener(target, eventName, listener, passive);\n}\nfunction cloneFnJSON(source) {\n return JSON.parse(JSON.stringify(source));\n}\nfunction useVModel(props, key, emit, options = {}) {\n var _a, _b, _c;\n const {\n clone = false,\n passive = false,\n eventName,\n deep = false,\n defaultValue,\n shouldEmit\n } = options;\n const vm = getCurrentInstance();\n const _emit = emit || (vm == null ? void 0 : vm.emit) || ((_a = vm == null ? void 0 : vm.$emit) == null ? void 0 : _a.bind(vm)) || ((_c = (_b = vm == null ? void 0 : vm.proxy) == null ? void 0 : _b.$emit) == null ? void 0 : _c.bind(vm == null ? void 0 : vm.proxy));\n let event = eventName;\n if (!key) {\n {\n key = \"modelValue\";\n }\n }\n event = event || `update:${key.toString()}`;\n const cloneFn = (val) => !clone ? val : typeof clone === \"function\" ? clone(val) : cloneFnJSON(val);\n const getValue = () => isDef$1(props[key]) ? cloneFn(props[key]) : defaultValue;\n const triggerEmit = (value) => {\n if (shouldEmit) {\n if (shouldEmit(value))\n _emit(event, value);\n } else {\n _emit(event, value);\n }\n };\n if (passive) {\n const initialValue = getValue();\n const proxy = ref(initialValue);\n let isUpdating = false;\n watch(\n () => props[key],\n (v) => {\n if (!isUpdating) {\n isUpdating = true;\n proxy.value = cloneFn(v);\n nextTick(() => isUpdating = false);\n }\n }\n );\n watch(\n proxy,\n (v) => {\n if (!isUpdating && (v !== props[key] || deep))\n triggerEmit(v);\n },\n { deep }\n );\n return proxy;\n } else {\n return computed({\n get() {\n return getValue();\n },\n set(value) {\n triggerEmit(value);\n }\n });\n }\n}\nvar noop$1 = { value: () => {\n} };\nfunction dispatch() {\n for (var i = 0, n = arguments.length, _ = {}, t; i < n; ++i) {\n if (!(t = arguments[i] + \"\") || t in _ || /[\\s.]/.test(t))\n throw new Error(\"illegal type: \" + t);\n _[t] = [];\n }\n return new Dispatch(_);\n}\nfunction Dispatch(_) {\n this._ = _;\n}\nfunction parseTypenames$1(typenames, types) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0)\n name = t.slice(i + 1), t = t.slice(0, i);\n if (t && !types.hasOwnProperty(t))\n throw new Error(\"unknown type: \" + t);\n return { type: t, name };\n });\n}\nDispatch.prototype = dispatch.prototype = {\n constructor: Dispatch,\n on: function(typename, callback) {\n var _ = this._, T = parseTypenames$1(typename + \"\", _), t, i = -1, n = T.length;\n if (arguments.length < 2) {\n while (++i < n)\n if ((t = (typename = T[i]).type) && (t = get$1(_[t], typename.name)))\n return t;\n return;\n }\n if (callback != null && typeof callback !== \"function\")\n throw new Error(\"invalid callback: \" + callback);\n while (++i < n) {\n if (t = (typename = T[i]).type)\n _[t] = set$1(_[t], typename.name, callback);\n else if (callback == null)\n for (t in _)\n _[t] = set$1(_[t], typename.name, null);\n }\n return this;\n },\n copy: function() {\n var copy = {}, _ = this._;\n for (var t in _)\n copy[t] = _[t].slice();\n return new Dispatch(copy);\n },\n call: function(type, that) {\n if ((n = arguments.length - 2) > 0)\n for (var args = new Array(n), i = 0, n, t; i < n; ++i)\n args[i] = arguments[i + 2];\n if (!this._.hasOwnProperty(type))\n throw new Error(\"unknown type: \" + type);\n for (t = this._[type], i = 0, n = t.length; i < n; ++i)\n t[i].value.apply(that, args);\n },\n apply: function(type, that, args) {\n if (!this._.hasOwnProperty(type))\n throw new Error(\"unknown type: \" + type);\n for (var t = this._[type], i = 0, n = t.length; i < n; ++i)\n t[i].value.apply(that, args);\n }\n};\nfunction get$1(type, name) {\n for (var i = 0, n = type.length, c; i < n; ++i) {\n if ((c = type[i]).name === name) {\n return c.value;\n }\n }\n}\nfunction set$1(type, name, callback) {\n for (var i = 0, n = type.length; i < n; ++i) {\n if (type[i].name === name) {\n type[i] = noop$1, type = type.slice(0, i).concat(type.slice(i + 1));\n break;\n }\n }\n if (callback != null)\n type.push({ name, value: callback });\n return type;\n}\nvar xhtml = \"http://www.w3.org/1999/xhtml\";\nconst namespaces = {\n svg: \"http://www.w3.org/2000/svg\",\n xhtml,\n xlink: \"http://www.w3.org/1999/xlink\",\n xml: \"http://www.w3.org/XML/1998/namespace\",\n xmlns: \"http://www.w3.org/2000/xmlns/\"\n};\nfunction namespace(name) {\n var prefix = name += \"\", i = prefix.indexOf(\":\");\n if (i >= 0 && (prefix = name.slice(0, i)) !== \"xmlns\")\n name = name.slice(i + 1);\n return namespaces.hasOwnProperty(prefix) ? { space: namespaces[prefix], local: name } : name;\n}\nfunction creatorInherit(name) {\n return function() {\n var document2 = this.ownerDocument, uri = this.namespaceURI;\n return uri === xhtml && document2.documentElement.namespaceURI === xhtml ? document2.createElement(name) : document2.createElementNS(uri, name);\n };\n}\nfunction creatorFixed(fullname) {\n return function() {\n return this.ownerDocument.createElementNS(fullname.space, fullname.local);\n };\n}\nfunction creator(name) {\n var fullname = namespace(name);\n return (fullname.local ? creatorFixed : creatorInherit)(fullname);\n}\nfunction none() {\n}\nfunction selector(selector2) {\n return selector2 == null ? none : function() {\n return this.querySelector(selector2);\n };\n}\nfunction selection_select(select2) {\n if (typeof select2 !== \"function\")\n select2 = selector(select2);\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select2.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node)\n subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n }\n }\n }\n return new Selection$1(subgroups, this._parents);\n}\nfunction array(x) {\n return x == null ? [] : Array.isArray(x) ? x : Array.from(x);\n}\nfunction empty() {\n return [];\n}\nfunction selectorAll(selector2) {\n return selector2 == null ? empty : function() {\n return this.querySelectorAll(selector2);\n };\n}\nfunction arrayAll(select2) {\n return function() {\n return array(select2.apply(this, arguments));\n };\n}\nfunction selection_selectAll(select2) {\n if (typeof select2 === \"function\")\n select2 = arrayAll(select2);\n else\n select2 = selectorAll(select2);\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n subgroups.push(select2.call(node, node.__data__, i, group));\n parents.push(node);\n }\n }\n }\n return new Selection$1(subgroups, parents);\n}\nfunction matcher(selector2) {\n return function() {\n return this.matches(selector2);\n };\n}\nfunction childMatcher(selector2) {\n return function(node) {\n return node.matches(selector2);\n };\n}\nvar find = Array.prototype.find;\nfunction childFind(match) {\n return function() {\n return find.call(this.children, match);\n };\n}\nfunction childFirst() {\n return this.firstElementChild;\n}\nfunction selection_selectChild(match) {\n return this.select(match == null ? childFirst : childFind(typeof match === \"function\" ? match : childMatcher(match)));\n}\nvar filter = Array.prototype.filter;\nfunction children() {\n return Array.from(this.children);\n}\nfunction childrenFilter(match) {\n return function() {\n return filter.call(this.children, match);\n };\n}\nfunction selection_selectChildren(match) {\n return this.selectAll(match == null ? children : childrenFilter(typeof match === \"function\" ? match : childMatcher(match)));\n}\nfunction selection_filter(match) {\n if (typeof match !== \"function\")\n match = matcher(match);\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n return new Selection$1(subgroups, this._parents);\n}\nfunction sparse(update) {\n return new Array(update.length);\n}\nfunction selection_enter() {\n return new Selection$1(this._enter || this._groups.map(sparse), this._parents);\n}\nfunction EnterNode(parent, datum2) {\n this.ownerDocument = parent.ownerDocument;\n this.namespaceURI = parent.namespaceURI;\n this._next = null;\n this._parent = parent;\n this.__data__ = datum2;\n}\nEnterNode.prototype = {\n constructor: EnterNode,\n appendChild: function(child) {\n return this._parent.insertBefore(child, this._next);\n },\n insertBefore: function(child, next) {\n return this._parent.insertBefore(child, next);\n },\n querySelector: function(selector2) {\n return this._parent.querySelector(selector2);\n },\n querySelectorAll: function(selector2) {\n return this._parent.querySelectorAll(selector2);\n }\n};\nfunction constant$3(x) {\n return function() {\n return x;\n };\n}\nfunction bindIndex(parent, group, enter, update, exit, data) {\n var i = 0, node, groupLength = group.length, dataLength = data.length;\n for (; i < dataLength; ++i) {\n if (node = group[i]) {\n node.__data__ = data[i];\n update[i] = node;\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n for (; i < groupLength; ++i) {\n if (node = group[i]) {\n exit[i] = node;\n }\n }\n}\nfunction bindKey(parent, group, enter, update, exit, data, key) {\n var i, node, nodeByKeyValue = /* @__PURE__ */ new Map(), groupLength = group.length, dataLength = data.length, keyValues = new Array(groupLength), keyValue;\n for (i = 0; i < groupLength; ++i) {\n if (node = group[i]) {\n keyValues[i] = keyValue = key.call(node, node.__data__, i, group) + \"\";\n if (nodeByKeyValue.has(keyValue)) {\n exit[i] = node;\n } else {\n nodeByKeyValue.set(keyValue, node);\n }\n }\n }\n for (i = 0; i < dataLength; ++i) {\n keyValue = key.call(parent, data[i], i, data) + \"\";\n if (node = nodeByKeyValue.get(keyValue)) {\n update[i] = node;\n node.__data__ = data[i];\n nodeByKeyValue.delete(keyValue);\n } else {\n enter[i] = new EnterNode(parent, data[i]);\n }\n }\n for (i = 0; i < groupLength; ++i) {\n if ((node = group[i]) && nodeByKeyValue.get(keyValues[i]) === node) {\n exit[i] = node;\n }\n }\n}\nfunction datum(node) {\n return node.__data__;\n}\nfunction selection_data(value, key) {\n if (!arguments.length)\n return Array.from(this, datum);\n var bind = key ? bindKey : bindIndex, parents = this._parents, groups = this._groups;\n if (typeof value !== \"function\")\n value = constant$3(value);\n for (var m = groups.length, update = new Array(m), enter = new Array(m), exit = new Array(m), j = 0; j < m; ++j) {\n var parent = parents[j], group = groups[j], groupLength = group.length, data = arraylike(value.call(parent, parent && parent.__data__, j, parents)), dataLength = data.length, enterGroup = enter[j] = new Array(dataLength), updateGroup = update[j] = new Array(dataLength), exitGroup = exit[j] = new Array(groupLength);\n bind(parent, group, enterGroup, updateGroup, exitGroup, data, key);\n for (var i0 = 0, i1 = 0, previous, next; i0 < dataLength; ++i0) {\n if (previous = enterGroup[i0]) {\n if (i0 >= i1)\n i1 = i0 + 1;\n while (!(next = updateGroup[i1]) && ++i1 < dataLength)\n ;\n previous._next = next || null;\n }\n }\n }\n update = new Selection$1(update, parents);\n update._enter = enter;\n update._exit = exit;\n return update;\n}\nfunction arraylike(data) {\n return typeof data === \"object\" && \"length\" in data ? data : Array.from(data);\n}\nfunction selection_exit() {\n return new Selection$1(this._exit || this._groups.map(sparse), this._parents);\n}\nfunction selection_join(onenter, onupdate, onexit) {\n var enter = this.enter(), update = this, exit = this.exit();\n if (typeof onenter === \"function\") {\n enter = onenter(enter);\n if (enter)\n enter = enter.selection();\n } else {\n enter = enter.append(onenter + \"\");\n }\n if (onupdate != null) {\n update = onupdate(update);\n if (update)\n update = update.selection();\n }\n if (onexit == null)\n exit.remove();\n else\n onexit(exit);\n return enter && update ? enter.merge(update).order() : update;\n}\nfunction selection_merge(context) {\n var selection2 = context.selection ? context.selection() : context;\n for (var groups0 = this._groups, groups1 = selection2._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n return new Selection$1(merges, this._parents);\n}\nfunction selection_order() {\n for (var groups = this._groups, j = -1, m = groups.length; ++j < m; ) {\n for (var group = groups[j], i = group.length - 1, next = group[i], node; --i >= 0; ) {\n if (node = group[i]) {\n if (next && node.compareDocumentPosition(next) ^ 4)\n next.parentNode.insertBefore(node, next);\n next = node;\n }\n }\n }\n return this;\n}\nfunction selection_sort(compare) {\n if (!compare)\n compare = ascending;\n function compareNode(a, b) {\n return a && b ? compare(a.__data__, b.__data__) : !a - !b;\n }\n for (var groups = this._groups, m = groups.length, sortgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, sortgroup = sortgroups[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n sortgroup[i] = node;\n }\n }\n sortgroup.sort(compareNode);\n }\n return new Selection$1(sortgroups, this._parents).order();\n}\nfunction ascending(a, b) {\n return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;\n}\nfunction selection_call() {\n var callback = arguments[0];\n arguments[0] = this;\n callback.apply(null, arguments);\n return this;\n}\nfunction selection_nodes() {\n return Array.from(this);\n}\nfunction selection_node() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length; i < n; ++i) {\n var node = group[i];\n if (node)\n return node;\n }\n }\n return null;\n}\nfunction selection_size() {\n let size = 0;\n for (const node of this)\n ++size;\n return size;\n}\nfunction selection_empty() {\n return !this.node();\n}\nfunction selection_each(callback) {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i])\n callback.call(node, node.__data__, i, group);\n }\n }\n return this;\n}\nfunction attrRemove$1(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\nfunction attrRemoveNS$1(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\nfunction attrConstant$1(name, value) {\n return function() {\n this.setAttribute(name, value);\n };\n}\nfunction attrConstantNS$1(fullname, value) {\n return function() {\n this.setAttributeNS(fullname.space, fullname.local, value);\n };\n}\nfunction attrFunction$1(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null)\n this.removeAttribute(name);\n else\n this.setAttribute(name, v);\n };\n}\nfunction attrFunctionNS$1(fullname, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null)\n this.removeAttributeNS(fullname.space, fullname.local);\n else\n this.setAttributeNS(fullname.space, fullname.local, v);\n };\n}\nfunction selection_attr(name, value) {\n var fullname = namespace(name);\n if (arguments.length < 2) {\n var node = this.node();\n return fullname.local ? node.getAttributeNS(fullname.space, fullname.local) : node.getAttribute(fullname);\n }\n return this.each((value == null ? fullname.local ? attrRemoveNS$1 : attrRemove$1 : typeof value === \"function\" ? fullname.local ? attrFunctionNS$1 : attrFunction$1 : fullname.local ? attrConstantNS$1 : attrConstant$1)(fullname, value));\n}\nfunction defaultView(node) {\n return node.ownerDocument && node.ownerDocument.defaultView || node.document && node || node.defaultView;\n}\nfunction styleRemove$1(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\nfunction styleConstant$1(name, value, priority) {\n return function() {\n this.style.setProperty(name, value, priority);\n };\n}\nfunction styleFunction$1(name, value, priority) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null)\n this.style.removeProperty(name);\n else\n this.style.setProperty(name, v, priority);\n };\n}\nfunction selection_style(name, value, priority) {\n return arguments.length > 1 ? this.each((value == null ? styleRemove$1 : typeof value === \"function\" ? styleFunction$1 : styleConstant$1)(name, value, priority == null ? \"\" : priority)) : styleValue(this.node(), name);\n}\nfunction styleValue(node, name) {\n return node.style.getPropertyValue(name) || defaultView(node).getComputedStyle(node, null).getPropertyValue(name);\n}\nfunction propertyRemove(name) {\n return function() {\n delete this[name];\n };\n}\nfunction propertyConstant(name, value) {\n return function() {\n this[name] = value;\n };\n}\nfunction propertyFunction(name, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (v == null)\n delete this[name];\n else\n this[name] = v;\n };\n}\nfunction selection_property(name, value) {\n return arguments.length > 1 ? this.each((value == null ? propertyRemove : typeof value === \"function\" ? propertyFunction : propertyConstant)(name, value)) : this.node()[name];\n}\nfunction classArray(string) {\n return string.trim().split(/^|\\s+/);\n}\nfunction classList(node) {\n return node.classList || new ClassList(node);\n}\nfunction ClassList(node) {\n this._node = node;\n this._names = classArray(node.getAttribute(\"class\") || \"\");\n}\nClassList.prototype = {\n add: function(name) {\n var i = this._names.indexOf(name);\n if (i < 0) {\n this._names.push(name);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n remove: function(name) {\n var i = this._names.indexOf(name);\n if (i >= 0) {\n this._names.splice(i, 1);\n this._node.setAttribute(\"class\", this._names.join(\" \"));\n }\n },\n contains: function(name) {\n return this._names.indexOf(name) >= 0;\n }\n};\nfunction classedAdd(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n)\n list.add(names[i]);\n}\nfunction classedRemove(node, names) {\n var list = classList(node), i = -1, n = names.length;\n while (++i < n)\n list.remove(names[i]);\n}\nfunction classedTrue(names) {\n return function() {\n classedAdd(this, names);\n };\n}\nfunction classedFalse(names) {\n return function() {\n classedRemove(this, names);\n };\n}\nfunction classedFunction(names, value) {\n return function() {\n (value.apply(this, arguments) ? classedAdd : classedRemove)(this, names);\n };\n}\nfunction selection_classed(name, value) {\n var names = classArray(name + \"\");\n if (arguments.length < 2) {\n var list = classList(this.node()), i = -1, n = names.length;\n while (++i < n)\n if (!list.contains(names[i]))\n return false;\n return true;\n }\n return this.each((typeof value === \"function\" ? classedFunction : value ? classedTrue : classedFalse)(names, value));\n}\nfunction textRemove() {\n this.textContent = \"\";\n}\nfunction textConstant$1(value) {\n return function() {\n this.textContent = value;\n };\n}\nfunction textFunction$1(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.textContent = v == null ? \"\" : v;\n };\n}\nfunction selection_text(value) {\n return arguments.length ? this.each(value == null ? textRemove : (typeof value === \"function\" ? textFunction$1 : textConstant$1)(value)) : this.node().textContent;\n}\nfunction htmlRemove() {\n this.innerHTML = \"\";\n}\nfunction htmlConstant(value) {\n return function() {\n this.innerHTML = value;\n };\n}\nfunction htmlFunction(value) {\n return function() {\n var v = value.apply(this, arguments);\n this.innerHTML = v == null ? \"\" : v;\n };\n}\nfunction selection_html(value) {\n return arguments.length ? this.each(value == null ? htmlRemove : (typeof value === \"function\" ? htmlFunction : htmlConstant)(value)) : this.node().innerHTML;\n}\nfunction raise() {\n if (this.nextSibling)\n this.parentNode.appendChild(this);\n}\nfunction selection_raise() {\n return this.each(raise);\n}\nfunction lower() {\n if (this.previousSibling)\n this.parentNode.insertBefore(this, this.parentNode.firstChild);\n}\nfunction selection_lower() {\n return this.each(lower);\n}\nfunction selection_append(name) {\n var create2 = typeof name === \"function\" ? name : creator(name);\n return this.select(function() {\n return this.appendChild(create2.apply(this, arguments));\n });\n}\nfunction constantNull() {\n return null;\n}\nfunction selection_insert(name, before) {\n var create2 = typeof name === \"function\" ? name : creator(name), select2 = before == null ? constantNull : typeof before === \"function\" ? before : selector(before);\n return this.select(function() {\n return this.insertBefore(create2.apply(this, arguments), select2.apply(this, arguments) || null);\n });\n}\nfunction remove() {\n var parent = this.parentNode;\n if (parent)\n parent.removeChild(this);\n}\nfunction selection_remove() {\n return this.each(remove);\n}\nfunction selection_cloneShallow() {\n var clone = this.cloneNode(false), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\nfunction selection_cloneDeep() {\n var clone = this.cloneNode(true), parent = this.parentNode;\n return parent ? parent.insertBefore(clone, this.nextSibling) : clone;\n}\nfunction selection_clone(deep) {\n return this.select(deep ? selection_cloneDeep : selection_cloneShallow);\n}\nfunction selection_datum(value) {\n return arguments.length ? this.property(\"__data__\", value) : this.node().__data__;\n}\nfunction contextListener(listener) {\n return function(event) {\n listener.call(this, event, this.__data__);\n };\n}\nfunction parseTypenames(typenames) {\n return typenames.trim().split(/^|\\s+/).map(function(t) {\n var name = \"\", i = t.indexOf(\".\");\n if (i >= 0)\n name = t.slice(i + 1), t = t.slice(0, i);\n return { type: t, name };\n });\n}\nfunction onRemove(typename) {\n return function() {\n var on = this.__on;\n if (!on)\n return;\n for (var j = 0, i = -1, m = on.length, o; j < m; ++j) {\n if (o = on[j], (!typename.type || o.type === typename.type) && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n } else {\n on[++i] = o;\n }\n }\n if (++i)\n on.length = i;\n else\n delete this.__on;\n };\n}\nfunction onAdd(typename, value, options) {\n return function() {\n var on = this.__on, o, listener = contextListener(value);\n if (on)\n for (var j = 0, m = on.length; j < m; ++j) {\n if ((o = on[j]).type === typename.type && o.name === typename.name) {\n this.removeEventListener(o.type, o.listener, o.options);\n this.addEventListener(o.type, o.listener = listener, o.options = options);\n o.value = value;\n return;\n }\n }\n this.addEventListener(typename.type, listener, options);\n o = { type: typename.type, name: typename.name, value, listener, options };\n if (!on)\n this.__on = [o];\n else\n on.push(o);\n };\n}\nfunction selection_on(typename, value, options) {\n var typenames = parseTypenames(typename + \"\"), i, n = typenames.length, t;\n if (arguments.length < 2) {\n var on = this.node().__on;\n if (on)\n for (var j = 0, m = on.length, o; j < m; ++j) {\n for (i = 0, o = on[j]; i < n; ++i) {\n if ((t = typenames[i]).type === o.type && t.name === o.name) {\n return o.value;\n }\n }\n }\n return;\n }\n on = value ? onAdd : onRemove;\n for (i = 0; i < n; ++i)\n this.each(on(typenames[i], value, options));\n return this;\n}\nfunction dispatchEvent(node, type, params) {\n var window2 = defaultView(node), event = window2.CustomEvent;\n if (typeof event === \"function\") {\n event = new event(type, params);\n } else {\n event = window2.document.createEvent(\"Event\");\n if (params)\n event.initEvent(type, params.bubbles, params.cancelable), event.detail = params.detail;\n else\n event.initEvent(type, false, false);\n }\n node.dispatchEvent(event);\n}\nfunction dispatchConstant(type, params) {\n return function() {\n return dispatchEvent(this, type, params);\n };\n}\nfunction dispatchFunction(type, params) {\n return function() {\n return dispatchEvent(this, type, params.apply(this, arguments));\n };\n}\nfunction selection_dispatch(type, params) {\n return this.each((typeof params === \"function\" ? dispatchFunction : dispatchConstant)(type, params));\n}\nfunction* selection_iterator() {\n for (var groups = this._groups, j = 0, m = groups.length; j < m; ++j) {\n for (var group = groups[j], i = 0, n = group.length, node; i < n; ++i) {\n if (node = group[i])\n yield node;\n }\n }\n}\nvar root = [null];\nfunction Selection$1(groups, parents) {\n this._groups = groups;\n this._parents = parents;\n}\nfunction selection() {\n return new Selection$1([[document.documentElement]], root);\n}\nfunction selection_selection() {\n return this;\n}\nSelection$1.prototype = selection.prototype = {\n constructor: Selection$1,\n select: selection_select,\n selectAll: selection_selectAll,\n selectChild: selection_selectChild,\n selectChildren: selection_selectChildren,\n filter: selection_filter,\n data: selection_data,\n enter: selection_enter,\n exit: selection_exit,\n join: selection_join,\n merge: selection_merge,\n selection: selection_selection,\n order: selection_order,\n sort: selection_sort,\n call: selection_call,\n nodes: selection_nodes,\n node: selection_node,\n size: selection_size,\n empty: selection_empty,\n each: selection_each,\n attr: selection_attr,\n style: selection_style,\n property: selection_property,\n classed: selection_classed,\n text: selection_text,\n html: selection_html,\n raise: selection_raise,\n lower: selection_lower,\n append: selection_append,\n insert: selection_insert,\n remove: selection_remove,\n clone: selection_clone,\n datum: selection_datum,\n on: selection_on,\n dispatch: selection_dispatch,\n [Symbol.iterator]: selection_iterator\n};\nfunction select(selector2) {\n return typeof selector2 === \"string\" ? new Selection$1([[document.querySelector(selector2)]], [document.documentElement]) : new Selection$1([[selector2]], root);\n}\nfunction sourceEvent(event) {\n let sourceEvent2;\n while (sourceEvent2 = event.sourceEvent)\n event = sourceEvent2;\n return event;\n}\nfunction pointer(event, node) {\n event = sourceEvent(event);\n if (node === void 0)\n node = event.currentTarget;\n if (node) {\n var svg = node.ownerSVGElement || node;\n if (svg.createSVGPoint) {\n var point = svg.createSVGPoint();\n point.x = event.clientX, point.y = event.clientY;\n point = point.matrixTransform(node.getScreenCTM().inverse());\n return [point.x, point.y];\n }\n if (node.getBoundingClientRect) {\n var rect = node.getBoundingClientRect();\n return [event.clientX - rect.left - node.clientLeft, event.clientY - rect.top - node.clientTop];\n }\n }\n return [event.pageX, event.pageY];\n}\nconst nonpassive = { passive: false };\nconst nonpassivecapture = { capture: true, passive: false };\nfunction nopropagation$1(event) {\n event.stopImmediatePropagation();\n}\nfunction noevent$1(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\nfunction dragDisable(view) {\n var root2 = view.document.documentElement, selection2 = select(view).on(\"dragstart.drag\", noevent$1, nonpassivecapture);\n if (\"onselectstart\" in root2) {\n selection2.on(\"selectstart.drag\", noevent$1, nonpassivecapture);\n } else {\n root2.__noselect = root2.style.MozUserSelect;\n root2.style.MozUserSelect = \"none\";\n }\n}\nfunction yesdrag(view, noclick) {\n var root2 = view.document.documentElement, selection2 = select(view).on(\"dragstart.drag\", null);\n if (noclick) {\n selection2.on(\"click.drag\", noevent$1, nonpassivecapture);\n setTimeout(function() {\n selection2.on(\"click.drag\", null);\n }, 0);\n }\n if (\"onselectstart\" in root2) {\n selection2.on(\"selectstart.drag\", null);\n } else {\n root2.style.MozUserSelect = root2.__noselect;\n delete root2.__noselect;\n }\n}\nconst constant$2 = (x) => () => x;\nfunction DragEvent(type, {\n sourceEvent: sourceEvent2,\n subject,\n target,\n identifier,\n active,\n x,\n y,\n dx,\n dy,\n dispatch: dispatch2\n}) {\n Object.defineProperties(this, {\n type: { value: type, enumerable: true, configurable: true },\n sourceEvent: { value: sourceEvent2, enumerable: true, configurable: true },\n subject: { value: subject, enumerable: true, configurable: true },\n target: { value: target, enumerable: true, configurable: true },\n identifier: { value: identifier, enumerable: true, configurable: true },\n active: { value: active, enumerable: true, configurable: true },\n x: { value: x, enumerable: true, configurable: true },\n y: { value: y, enumerable: true, configurable: true },\n dx: { value: dx, enumerable: true, configurable: true },\n dy: { value: dy, enumerable: true, configurable: true },\n _: { value: dispatch2 }\n });\n}\nDragEvent.prototype.on = function() {\n var value = this._.on.apply(this._, arguments);\n return value === this._ ? this : value;\n};\nfunction defaultFilter$1(event) {\n return !event.ctrlKey && !event.button;\n}\nfunction defaultContainer() {\n return this.parentNode;\n}\nfunction defaultSubject(event, d) {\n return d == null ? { x: event.x, y: event.y } : d;\n}\nfunction defaultTouchable$1() {\n return navigator.maxTouchPoints || \"ontouchstart\" in this;\n}\nfunction drag() {\n var filter2 = defaultFilter$1, container = defaultContainer, subject = defaultSubject, touchable = defaultTouchable$1, gestures = {}, listeners = dispatch(\"start\", \"drag\", \"end\"), active = 0, mousedownx, mousedowny, mousemoving, touchending, clickDistance2 = 0;\n function drag2(selection2) {\n selection2.on(\"mousedown.drag\", mousedowned).filter(touchable).on(\"touchstart.drag\", touchstarted).on(\"touchmove.drag\", touchmoved, nonpassive).on(\"touchend.drag touchcancel.drag\", touchended).style(\"touch-action\", \"none\").style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n function mousedowned(event, d) {\n if (touchending || !filter2.call(this, event, d))\n return;\n var gesture = beforestart(this, container.call(this, event, d), event, d, \"mouse\");\n if (!gesture)\n return;\n select(event.view).on(\"mousemove.drag\", mousemoved, nonpassivecapture).on(\"mouseup.drag\", mouseupped, nonpassivecapture);\n dragDisable(event.view);\n nopropagation$1(event);\n mousemoving = false;\n mousedownx = event.clientX;\n mousedowny = event.clientY;\n gesture(\"start\", event);\n }\n function mousemoved(event) {\n noevent$1(event);\n if (!mousemoving) {\n var dx = event.clientX - mousedownx, dy = event.clientY - mousedowny;\n mousemoving = dx * dx + dy * dy > clickDistance2;\n }\n gestures.mouse(\"drag\", event);\n }\n function mouseupped(event) {\n select(event.view).on(\"mousemove.drag mouseup.drag\", null);\n yesdrag(event.view, mousemoving);\n noevent$1(event);\n gestures.mouse(\"end\", event);\n }\n function touchstarted(event, d) {\n if (!filter2.call(this, event, d))\n return;\n var touches = event.changedTouches, c = container.call(this, event, d), n = touches.length, i, gesture;\n for (i = 0; i < n; ++i) {\n if (gesture = beforestart(this, c, event, d, touches[i].identifier, touches[i])) {\n nopropagation$1(event);\n gesture(\"start\", event, touches[i]);\n }\n }\n }\n function touchmoved(event) {\n var touches = event.changedTouches, n = touches.length, i, gesture;\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n noevent$1(event);\n gesture(\"drag\", event, touches[i]);\n }\n }\n }\n function touchended(event) {\n var touches = event.changedTouches, n = touches.length, i, gesture;\n if (touchending)\n clearTimeout(touchending);\n touchending = setTimeout(function() {\n touchending = null;\n }, 500);\n for (i = 0; i < n; ++i) {\n if (gesture = gestures[touches[i].identifier]) {\n nopropagation$1(event);\n gesture(\"end\", event, touches[i]);\n }\n }\n }\n function beforestart(that, container2, event, d, identifier, touch) {\n var dispatch2 = listeners.copy(), p = pointer(touch || event, container2), dx, dy, s;\n if ((s = subject.call(that, new DragEvent(\"beforestart\", {\n sourceEvent: event,\n target: drag2,\n identifier,\n active,\n x: p[0],\n y: p[1],\n dx: 0,\n dy: 0,\n dispatch: dispatch2\n }), d)) == null)\n return;\n dx = s.x - p[0] || 0;\n dy = s.y - p[1] || 0;\n return function gesture(type, event2, touch2) {\n var p0 = p, n;\n switch (type) {\n case \"start\":\n gestures[identifier] = gesture, n = active++;\n break;\n case \"end\":\n delete gestures[identifier], --active;\n case \"drag\":\n p = pointer(touch2 || event2, container2), n = active;\n break;\n }\n dispatch2.call(\n type,\n that,\n new DragEvent(type, {\n sourceEvent: event2,\n subject: s,\n target: drag2,\n identifier,\n active: n,\n x: p[0] + dx,\n y: p[1] + dy,\n dx: p[0] - p0[0],\n dy: p[1] - p0[1],\n dispatch: dispatch2\n }),\n d\n );\n };\n }\n drag2.filter = function(_) {\n return arguments.length ? (filter2 = typeof _ === \"function\" ? _ : constant$2(!!_), drag2) : filter2;\n };\n drag2.container = function(_) {\n return arguments.length ? (container = typeof _ === \"function\" ? _ : constant$2(_), drag2) : container;\n };\n drag2.subject = function(_) {\n return arguments.length ? (subject = typeof _ === \"function\" ? _ : constant$2(_), drag2) : subject;\n };\n drag2.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant$2(!!_), drag2) : touchable;\n };\n drag2.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? drag2 : value;\n };\n drag2.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, drag2) : Math.sqrt(clickDistance2);\n };\n return drag2;\n}\nfunction define(constructor, factory, prototype) {\n constructor.prototype = factory.prototype = prototype;\n prototype.constructor = constructor;\n}\nfunction extend(parent, definition) {\n var prototype = Object.create(parent.prototype);\n for (var key in definition)\n prototype[key] = definition[key];\n return prototype;\n}\nfunction Color() {\n}\nvar darker = 0.7;\nvar brighter = 1 / darker;\nvar reI = \"\\\\s*([+-]?\\\\d+)\\\\s*\", reN = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)\\\\s*\", reP = \"\\\\s*([+-]?(?:\\\\d*\\\\.)?\\\\d+(?:[eE][+-]?\\\\d+)?)%\\\\s*\", reHex = /^#([0-9a-f]{3,8})$/, reRgbInteger = new RegExp(`^rgb\\\\(${reI},${reI},${reI}\\\\)$`), reRgbPercent = new RegExp(`^rgb\\\\(${reP},${reP},${reP}\\\\)$`), reRgbaInteger = new RegExp(`^rgba\\\\(${reI},${reI},${reI},${reN}\\\\)$`), reRgbaPercent = new RegExp(`^rgba\\\\(${reP},${reP},${reP},${reN}\\\\)$`), reHslPercent = new RegExp(`^hsl\\\\(${reN},${reP},${reP}\\\\)$`), reHslaPercent = new RegExp(`^hsla\\\\(${reN},${reP},${reP},${reN}\\\\)$`);\nvar named = {\n aliceblue: 15792383,\n antiquewhite: 16444375,\n aqua: 65535,\n aquamarine: 8388564,\n azure: 15794175,\n beige: 16119260,\n bisque: 16770244,\n black: 0,\n blanchedalmond: 16772045,\n blue: 255,\n blueviolet: 9055202,\n brown: 10824234,\n burlywood: 14596231,\n cadetblue: 6266528,\n chartreuse: 8388352,\n chocolate: 13789470,\n coral: 16744272,\n cornflowerblue: 6591981,\n cornsilk: 16775388,\n crimson: 14423100,\n cyan: 65535,\n darkblue: 139,\n darkcyan: 35723,\n darkgoldenrod: 12092939,\n darkgray: 11119017,\n darkgreen: 25600,\n darkgrey: 11119017,\n darkkhaki: 12433259,\n darkmagenta: 9109643,\n darkolivegreen: 5597999,\n darkorange: 16747520,\n darkorchid: 10040012,\n darkred: 9109504,\n darksalmon: 15308410,\n darkseagreen: 9419919,\n darkslateblue: 4734347,\n darkslategray: 3100495,\n darkslategrey: 3100495,\n darkturquoise: 52945,\n darkviolet: 9699539,\n deeppink: 16716947,\n deepskyblue: 49151,\n dimgray: 6908265,\n dimgrey: 6908265,\n dodgerblue: 2003199,\n firebrick: 11674146,\n floralwhite: 16775920,\n forestgreen: 2263842,\n fuchsia: 16711935,\n gainsboro: 14474460,\n ghostwhite: 16316671,\n gold: 16766720,\n goldenrod: 14329120,\n gray: 8421504,\n green: 32768,\n greenyellow: 11403055,\n grey: 8421504,\n honeydew: 15794160,\n hotpink: 16738740,\n indianred: 13458524,\n indigo: 4915330,\n ivory: 16777200,\n khaki: 15787660,\n lavender: 15132410,\n lavenderblush: 16773365,\n lawngreen: 8190976,\n lemonchiffon: 16775885,\n lightblue: 11393254,\n lightcoral: 15761536,\n lightcyan: 14745599,\n lightgoldenrodyellow: 16448210,\n lightgray: 13882323,\n lightgreen: 9498256,\n lightgrey: 13882323,\n lightpink: 16758465,\n lightsalmon: 16752762,\n lightseagreen: 2142890,\n lightskyblue: 8900346,\n lightslategray: 7833753,\n lightslategrey: 7833753,\n lightsteelblue: 11584734,\n lightyellow: 16777184,\n lime: 65280,\n limegreen: 3329330,\n linen: 16445670,\n magenta: 16711935,\n maroon: 8388608,\n mediumaquamarine: 6737322,\n mediumblue: 205,\n mediumorchid: 12211667,\n mediumpurple: 9662683,\n mediumseagreen: 3978097,\n mediumslateblue: 8087790,\n mediumspringgreen: 64154,\n mediumturquoise: 4772300,\n mediumvioletred: 13047173,\n midnightblue: 1644912,\n mintcream: 16121850,\n mistyrose: 16770273,\n moccasin: 16770229,\n navajowhite: 16768685,\n navy: 128,\n oldlace: 16643558,\n olive: 8421376,\n olivedrab: 7048739,\n orange: 16753920,\n orangered: 16729344,\n orchid: 14315734,\n palegoldenrod: 15657130,\n palegreen: 10025880,\n paleturquoise: 11529966,\n palevioletred: 14381203,\n papayawhip: 16773077,\n peachpuff: 16767673,\n peru: 13468991,\n pink: 16761035,\n plum: 14524637,\n powderblue: 11591910,\n purple: 8388736,\n rebeccapurple: 6697881,\n red: 16711680,\n rosybrown: 12357519,\n royalblue: 4286945,\n saddlebrown: 9127187,\n salmon: 16416882,\n sandybrown: 16032864,\n seagreen: 3050327,\n seashell: 16774638,\n sienna: 10506797,\n silver: 12632256,\n skyblue: 8900331,\n slateblue: 6970061,\n slategray: 7372944,\n slategrey: 7372944,\n snow: 16775930,\n springgreen: 65407,\n steelblue: 4620980,\n tan: 13808780,\n teal: 32896,\n thistle: 14204888,\n tomato: 16737095,\n turquoise: 4251856,\n violet: 15631086,\n wheat: 16113331,\n white: 16777215,\n whitesmoke: 16119285,\n yellow: 16776960,\n yellowgreen: 10145074\n};\ndefine(Color, color, {\n copy(channels) {\n return Object.assign(new this.constructor(), this, channels);\n },\n displayable() {\n return this.rgb().displayable();\n },\n hex: color_formatHex,\n // Deprecated! Use color.formatHex.\n formatHex: color_formatHex,\n formatHex8: color_formatHex8,\n formatHsl: color_formatHsl,\n formatRgb: color_formatRgb,\n toString: color_formatRgb\n});\nfunction color_formatHex() {\n return this.rgb().formatHex();\n}\nfunction color_formatHex8() {\n return this.rgb().formatHex8();\n}\nfunction color_formatHsl() {\n return hslConvert(this).formatHsl();\n}\nfunction color_formatRgb() {\n return this.rgb().formatRgb();\n}\nfunction color(format) {\n var m, l;\n format = (format + \"\").trim().toLowerCase();\n return (m = reHex.exec(format)) ? (l = m[1].length, m = parseInt(m[1], 16), l === 6 ? rgbn(m) : l === 3 ? new Rgb(m >> 8 & 15 | m >> 4 & 240, m >> 4 & 15 | m & 240, (m & 15) << 4 | m & 15, 1) : l === 8 ? rgba(m >> 24 & 255, m >> 16 & 255, m >> 8 & 255, (m & 255) / 255) : l === 4 ? rgba(m >> 12 & 15 | m >> 8 & 240, m >> 8 & 15 | m >> 4 & 240, m >> 4 & 15 | m & 240, ((m & 15) << 4 | m & 15) / 255) : null) : (m = reRgbInteger.exec(format)) ? new Rgb(m[1], m[2], m[3], 1) : (m = reRgbPercent.exec(format)) ? new Rgb(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, 1) : (m = reRgbaInteger.exec(format)) ? rgba(m[1], m[2], m[3], m[4]) : (m = reRgbaPercent.exec(format)) ? rgba(m[1] * 255 / 100, m[2] * 255 / 100, m[3] * 255 / 100, m[4]) : (m = reHslPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, 1) : (m = reHslaPercent.exec(format)) ? hsla(m[1], m[2] / 100, m[3] / 100, m[4]) : named.hasOwnProperty(format) ? rgbn(named[format]) : format === \"transparent\" ? new Rgb(NaN, NaN, NaN, 0) : null;\n}\nfunction rgbn(n) {\n return new Rgb(n >> 16 & 255, n >> 8 & 255, n & 255, 1);\n}\nfunction rgba(r, g, b, a) {\n if (a <= 0)\n r = g = b = NaN;\n return new Rgb(r, g, b, a);\n}\nfunction rgbConvert(o) {\n if (!(o instanceof Color))\n o = color(o);\n if (!o)\n return new Rgb();\n o = o.rgb();\n return new Rgb(o.r, o.g, o.b, o.opacity);\n}\nfunction rgb(r, g, b, opacity) {\n return arguments.length === 1 ? rgbConvert(r) : new Rgb(r, g, b, opacity == null ? 1 : opacity);\n}\nfunction Rgb(r, g, b, opacity) {\n this.r = +r;\n this.g = +g;\n this.b = +b;\n this.opacity = +opacity;\n}\ndefine(Rgb, rgb, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Rgb(this.r * k, this.g * k, this.b * k, this.opacity);\n },\n rgb() {\n return this;\n },\n clamp() {\n return new Rgb(clampi(this.r), clampi(this.g), clampi(this.b), clampa(this.opacity));\n },\n displayable() {\n return -0.5 <= this.r && this.r < 255.5 && (-0.5 <= this.g && this.g < 255.5) && (-0.5 <= this.b && this.b < 255.5) && (0 <= this.opacity && this.opacity <= 1);\n },\n hex: rgb_formatHex,\n // Deprecated! Use color.formatHex.\n formatHex: rgb_formatHex,\n formatHex8: rgb_formatHex8,\n formatRgb: rgb_formatRgb,\n toString: rgb_formatRgb\n}));\nfunction rgb_formatHex() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}`;\n}\nfunction rgb_formatHex8() {\n return `#${hex(this.r)}${hex(this.g)}${hex(this.b)}${hex((isNaN(this.opacity) ? 1 : this.opacity) * 255)}`;\n}\nfunction rgb_formatRgb() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"rgb(\" : \"rgba(\"}${clampi(this.r)}, ${clampi(this.g)}, ${clampi(this.b)}${a === 1 ? \")\" : `, ${a})`}`;\n}\nfunction clampa(opacity) {\n return isNaN(opacity) ? 1 : Math.max(0, Math.min(1, opacity));\n}\nfunction clampi(value) {\n return Math.max(0, Math.min(255, Math.round(value) || 0));\n}\nfunction hex(value) {\n value = clampi(value);\n return (value < 16 ? \"0\" : \"\") + value.toString(16);\n}\nfunction hsla(h2, s, l, a) {\n if (a <= 0)\n h2 = s = l = NaN;\n else if (l <= 0 || l >= 1)\n h2 = s = NaN;\n else if (s <= 0)\n h2 = NaN;\n return new Hsl(h2, s, l, a);\n}\nfunction hslConvert(o) {\n if (o instanceof Hsl)\n return new Hsl(o.h, o.s, o.l, o.opacity);\n if (!(o instanceof Color))\n o = color(o);\n if (!o)\n return new Hsl();\n if (o instanceof Hsl)\n return o;\n o = o.rgb();\n var r = o.r / 255, g = o.g / 255, b = o.b / 255, min = Math.min(r, g, b), max = Math.max(r, g, b), h2 = NaN, s = max - min, l = (max + min) / 2;\n if (s) {\n if (r === max)\n h2 = (g - b) / s + (g < b) * 6;\n else if (g === max)\n h2 = (b - r) / s + 2;\n else\n h2 = (r - g) / s + 4;\n s /= l < 0.5 ? max + min : 2 - max - min;\n h2 *= 60;\n } else {\n s = l > 0 && l < 1 ? 0 : h2;\n }\n return new Hsl(h2, s, l, o.opacity);\n}\nfunction hsl(h2, s, l, opacity) {\n return arguments.length === 1 ? hslConvert(h2) : new Hsl(h2, s, l, opacity == null ? 1 : opacity);\n}\nfunction Hsl(h2, s, l, opacity) {\n this.h = +h2;\n this.s = +s;\n this.l = +l;\n this.opacity = +opacity;\n}\ndefine(Hsl, hsl, extend(Color, {\n brighter(k) {\n k = k == null ? brighter : Math.pow(brighter, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n darker(k) {\n k = k == null ? darker : Math.pow(darker, k);\n return new Hsl(this.h, this.s, this.l * k, this.opacity);\n },\n rgb() {\n var h2 = this.h % 360 + (this.h < 0) * 360, s = isNaN(h2) || isNaN(this.s) ? 0 : this.s, l = this.l, m2 = l + (l < 0.5 ? l : 1 - l) * s, m1 = 2 * l - m2;\n return new Rgb(\n hsl2rgb(h2 >= 240 ? h2 - 240 : h2 + 120, m1, m2),\n hsl2rgb(h2, m1, m2),\n hsl2rgb(h2 < 120 ? h2 + 240 : h2 - 120, m1, m2),\n this.opacity\n );\n },\n clamp() {\n return new Hsl(clamph(this.h), clampt(this.s), clampt(this.l), clampa(this.opacity));\n },\n displayable() {\n return (0 <= this.s && this.s <= 1 || isNaN(this.s)) && (0 <= this.l && this.l <= 1) && (0 <= this.opacity && this.opacity <= 1);\n },\n formatHsl() {\n const a = clampa(this.opacity);\n return `${a === 1 ? \"hsl(\" : \"hsla(\"}${clamph(this.h)}, ${clampt(this.s) * 100}%, ${clampt(this.l) * 100}%${a === 1 ? \")\" : `, ${a})`}`;\n }\n}));\nfunction clamph(value) {\n value = (value || 0) % 360;\n return value < 0 ? value + 360 : value;\n}\nfunction clampt(value) {\n return Math.max(0, Math.min(1, value || 0));\n}\nfunction hsl2rgb(h2, m1, m2) {\n return (h2 < 60 ? m1 + (m2 - m1) * h2 / 60 : h2 < 180 ? m2 : h2 < 240 ? m1 + (m2 - m1) * (240 - h2) / 60 : m1) * 255;\n}\nconst constant$1 = (x) => () => x;\nfunction linear(a, d) {\n return function(t) {\n return a + t * d;\n };\n}\nfunction exponential(a, b, y) {\n return a = Math.pow(a, y), b = Math.pow(b, y) - a, y = 1 / y, function(t) {\n return Math.pow(a + t * b, y);\n };\n}\nfunction gamma(y) {\n return (y = +y) === 1 ? nogamma : function(a, b) {\n return b - a ? exponential(a, b, y) : constant$1(isNaN(a) ? b : a);\n };\n}\nfunction nogamma(a, b) {\n var d = b - a;\n return d ? linear(a, d) : constant$1(isNaN(a) ? b : a);\n}\nconst interpolateRgb = function rgbGamma(y) {\n var color2 = gamma(y);\n function rgb$1(start2, end) {\n var r = color2((start2 = rgb(start2)).r, (end = rgb(end)).r), g = color2(start2.g, end.g), b = color2(start2.b, end.b), opacity = nogamma(start2.opacity, end.opacity);\n return function(t) {\n start2.r = r(t);\n start2.g = g(t);\n start2.b = b(t);\n start2.opacity = opacity(t);\n return start2 + \"\";\n };\n }\n rgb$1.gamma = rgbGamma;\n return rgb$1;\n}(1);\nfunction numberArray(a, b) {\n if (!b)\n b = [];\n var n = a ? Math.min(b.length, a.length) : 0, c = b.slice(), i;\n return function(t) {\n for (i = 0; i < n; ++i)\n c[i] = a[i] * (1 - t) + b[i] * t;\n return c;\n };\n}\nfunction isNumberArray(x) {\n return ArrayBuffer.isView(x) && !(x instanceof DataView);\n}\nfunction genericArray(a, b) {\n var nb = b ? b.length : 0, na = a ? Math.min(nb, a.length) : 0, x = new Array(na), c = new Array(nb), i;\n for (i = 0; i < na; ++i)\n x[i] = interpolate$1(a[i], b[i]);\n for (; i < nb; ++i)\n c[i] = b[i];\n return function(t) {\n for (i = 0; i < na; ++i)\n c[i] = x[i](t);\n return c;\n };\n}\nfunction date(a, b) {\n var d = /* @__PURE__ */ new Date();\n return a = +a, b = +b, function(t) {\n return d.setTime(a * (1 - t) + b * t), d;\n };\n}\nfunction interpolateNumber(a, b) {\n return a = +a, b = +b, function(t) {\n return a * (1 - t) + b * t;\n };\n}\nfunction object(a, b) {\n var i = {}, c = {}, k;\n if (a === null || typeof a !== \"object\")\n a = {};\n if (b === null || typeof b !== \"object\")\n b = {};\n for (k in b) {\n if (k in a) {\n i[k] = interpolate$1(a[k], b[k]);\n } else {\n c[k] = b[k];\n }\n }\n return function(t) {\n for (k in i)\n c[k] = i[k](t);\n return c;\n };\n}\nvar reA = /[-+]?(?:\\d+\\.?\\d*|\\.?\\d+)(?:[eE][-+]?\\d+)?/g, reB = new RegExp(reA.source, \"g\");\nfunction zero(b) {\n return function() {\n return b;\n };\n}\nfunction one(b) {\n return function(t) {\n return b(t) + \"\";\n };\n}\nfunction interpolateString(a, b) {\n var bi = reA.lastIndex = reB.lastIndex = 0, am, bm, bs, i = -1, s = [], q = [];\n a = a + \"\", b = b + \"\";\n while ((am = reA.exec(a)) && (bm = reB.exec(b))) {\n if ((bs = bm.index) > bi) {\n bs = b.slice(bi, bs);\n if (s[i])\n s[i] += bs;\n else\n s[++i] = bs;\n }\n if ((am = am[0]) === (bm = bm[0])) {\n if (s[i])\n s[i] += bm;\n else\n s[++i] = bm;\n } else {\n s[++i] = null;\n q.push({ i, x: interpolateNumber(am, bm) });\n }\n bi = reB.lastIndex;\n }\n if (bi < b.length) {\n bs = b.slice(bi);\n if (s[i])\n s[i] += bs;\n else\n s[++i] = bs;\n }\n return s.length < 2 ? q[0] ? one(q[0].x) : zero(b) : (b = q.length, function(t) {\n for (var i2 = 0, o; i2 < b; ++i2)\n s[(o = q[i2]).i] = o.x(t);\n return s.join(\"\");\n });\n}\nfunction interpolate$1(a, b) {\n var t = typeof b, c;\n return b == null || t === \"boolean\" ? constant$1(b) : (t === \"number\" ? interpolateNumber : t === \"string\" ? (c = color(b)) ? (b = c, interpolateRgb) : interpolateString : b instanceof color ? interpolateRgb : b instanceof Date ? date : isNumberArray(b) ? numberArray : Array.isArray(b) ? genericArray : typeof b.valueOf !== \"function\" && typeof b.toString !== \"function\" || isNaN(b) ? object : interpolateNumber)(a, b);\n}\nvar degrees = 180 / Math.PI;\nvar identity$1 = {\n translateX: 0,\n translateY: 0,\n rotate: 0,\n skewX: 0,\n scaleX: 1,\n scaleY: 1\n};\nfunction decompose(a, b, c, d, e, f) {\n var scaleX, scaleY, skewX;\n if (scaleX = Math.sqrt(a * a + b * b))\n a /= scaleX, b /= scaleX;\n if (skewX = a * c + b * d)\n c -= a * skewX, d -= b * skewX;\n if (scaleY = Math.sqrt(c * c + d * d))\n c /= scaleY, d /= scaleY, skewX /= scaleY;\n if (a * d < b * c)\n a = -a, b = -b, skewX = -skewX, scaleX = -scaleX;\n return {\n translateX: e,\n translateY: f,\n rotate: Math.atan2(b, a) * degrees,\n skewX: Math.atan(skewX) * degrees,\n scaleX,\n scaleY\n };\n}\nvar svgNode;\nfunction parseCss(value) {\n const m = new (typeof DOMMatrix === \"function\" ? DOMMatrix : WebKitCSSMatrix)(value + \"\");\n return m.isIdentity ? identity$1 : decompose(m.a, m.b, m.c, m.d, m.e, m.f);\n}\nfunction parseSvg(value) {\n if (value == null)\n return identity$1;\n if (!svgNode)\n svgNode = document.createElementNS(\"http://www.w3.org/2000/svg\", \"g\");\n svgNode.setAttribute(\"transform\", value);\n if (!(value = svgNode.transform.baseVal.consolidate()))\n return identity$1;\n value = value.matrix;\n return decompose(value.a, value.b, value.c, value.d, value.e, value.f);\n}\nfunction interpolateTransform(parse, pxComma, pxParen, degParen) {\n function pop(s) {\n return s.length ? s.pop() + \" \" : \"\";\n }\n function translate(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(\"translate(\", null, pxComma, null, pxParen);\n q.push({ i: i - 4, x: interpolateNumber(xa, xb) }, { i: i - 2, x: interpolateNumber(ya, yb) });\n } else if (xb || yb) {\n s.push(\"translate(\" + xb + pxComma + yb + pxParen);\n }\n }\n function rotate(a, b, s, q) {\n if (a !== b) {\n if (a - b > 180)\n b += 360;\n else if (b - a > 180)\n a += 360;\n q.push({ i: s.push(pop(s) + \"rotate(\", null, degParen) - 2, x: interpolateNumber(a, b) });\n } else if (b) {\n s.push(pop(s) + \"rotate(\" + b + degParen);\n }\n }\n function skewX(a, b, s, q) {\n if (a !== b) {\n q.push({ i: s.push(pop(s) + \"skewX(\", null, degParen) - 2, x: interpolateNumber(a, b) });\n } else if (b) {\n s.push(pop(s) + \"skewX(\" + b + degParen);\n }\n }\n function scale(xa, ya, xb, yb, s, q) {\n if (xa !== xb || ya !== yb) {\n var i = s.push(pop(s) + \"scale(\", null, \",\", null, \")\");\n q.push({ i: i - 4, x: interpolateNumber(xa, xb) }, { i: i - 2, x: interpolateNumber(ya, yb) });\n } else if (xb !== 1 || yb !== 1) {\n s.push(pop(s) + \"scale(\" + xb + \",\" + yb + \")\");\n }\n }\n return function(a, b) {\n var s = [], q = [];\n a = parse(a), b = parse(b);\n translate(a.translateX, a.translateY, b.translateX, b.translateY, s, q);\n rotate(a.rotate, b.rotate, s, q);\n skewX(a.skewX, b.skewX, s, q);\n scale(a.scaleX, a.scaleY, b.scaleX, b.scaleY, s, q);\n a = b = null;\n return function(t) {\n var i = -1, n = q.length, o;\n while (++i < n)\n s[(o = q[i]).i] = o.x(t);\n return s.join(\"\");\n };\n };\n}\nvar interpolateTransformCss = interpolateTransform(parseCss, \"px, \", \"px)\", \"deg)\");\nvar interpolateTransformSvg = interpolateTransform(parseSvg, \", \", \")\", \")\");\nvar epsilon2 = 1e-12;\nfunction cosh(x) {\n return ((x = Math.exp(x)) + 1 / x) / 2;\n}\nfunction sinh(x) {\n return ((x = Math.exp(x)) - 1 / x) / 2;\n}\nfunction tanh(x) {\n return ((x = Math.exp(2 * x)) - 1) / (x + 1);\n}\nconst interpolateZoom = function zoomRho(rho, rho2, rho4) {\n function zoom2(p0, p1) {\n var ux0 = p0[0], uy0 = p0[1], w0 = p0[2], ux1 = p1[0], uy1 = p1[1], w1 = p1[2], dx = ux1 - ux0, dy = uy1 - uy0, d2 = dx * dx + dy * dy, i, S;\n if (d2 < epsilon2) {\n S = Math.log(w1 / w0) / rho;\n i = function(t) {\n return [\n ux0 + t * dx,\n uy0 + t * dy,\n w0 * Math.exp(rho * t * S)\n ];\n };\n } else {\n var d1 = Math.sqrt(d2), b0 = (w1 * w1 - w0 * w0 + rho4 * d2) / (2 * w0 * rho2 * d1), b1 = (w1 * w1 - w0 * w0 - rho4 * d2) / (2 * w1 * rho2 * d1), r0 = Math.log(Math.sqrt(b0 * b0 + 1) - b0), r1 = Math.log(Math.sqrt(b1 * b1 + 1) - b1);\n S = (r1 - r0) / rho;\n i = function(t) {\n var s = t * S, coshr0 = cosh(r0), u = w0 / (rho2 * d1) * (coshr0 * tanh(rho * s + r0) - sinh(r0));\n return [\n ux0 + u * dx,\n uy0 + u * dy,\n w0 * coshr0 / cosh(rho * s + r0)\n ];\n };\n }\n i.duration = S * 1e3 * rho / Math.SQRT2;\n return i;\n }\n zoom2.rho = function(_) {\n var _1 = Math.max(1e-3, +_), _2 = _1 * _1, _4 = _2 * _2;\n return zoomRho(_1, _2, _4);\n };\n return zoom2;\n}(Math.SQRT2, 2, 4);\nvar frame = 0, timeout$1 = 0, interval = 0, pokeDelay = 1e3, taskHead, taskTail, clockLast = 0, clockNow = 0, clockSkew = 0, clock = typeof performance === \"object\" && performance.now ? performance : Date, setFrame = typeof window === \"object\" && window.requestAnimationFrame ? window.requestAnimationFrame.bind(window) : function(f) {\n setTimeout(f, 17);\n};\nfunction now() {\n return clockNow || (setFrame(clearNow), clockNow = clock.now() + clockSkew);\n}\nfunction clearNow() {\n clockNow = 0;\n}\nfunction Timer() {\n this._call = this._time = this._next = null;\n}\nTimer.prototype = timer.prototype = {\n constructor: Timer,\n restart: function(callback, delay, time) {\n if (typeof callback !== \"function\")\n throw new TypeError(\"callback is not a function\");\n time = (time == null ? now() : +time) + (delay == null ? 0 : +delay);\n if (!this._next && taskTail !== this) {\n if (taskTail)\n taskTail._next = this;\n else\n taskHead = this;\n taskTail = this;\n }\n this._call = callback;\n this._time = time;\n sleep();\n },\n stop: function() {\n if (this._call) {\n this._call = null;\n this._time = Infinity;\n sleep();\n }\n }\n};\nfunction timer(callback, delay, time) {\n var t = new Timer();\n t.restart(callback, delay, time);\n return t;\n}\nfunction timerFlush() {\n now();\n ++frame;\n var t = taskHead, e;\n while (t) {\n if ((e = clockNow - t._time) >= 0)\n t._call.call(void 0, e);\n t = t._next;\n }\n --frame;\n}\nfunction wake() {\n clockNow = (clockLast = clock.now()) + clockSkew;\n frame = timeout$1 = 0;\n try {\n timerFlush();\n } finally {\n frame = 0;\n nap();\n clockNow = 0;\n }\n}\nfunction poke() {\n var now2 = clock.now(), delay = now2 - clockLast;\n if (delay > pokeDelay)\n clockSkew -= delay, clockLast = now2;\n}\nfunction nap() {\n var t0, t1 = taskHead, t2, time = Infinity;\n while (t1) {\n if (t1._call) {\n if (time > t1._time)\n time = t1._time;\n t0 = t1, t1 = t1._next;\n } else {\n t2 = t1._next, t1._next = null;\n t1 = t0 ? t0._next = t2 : taskHead = t2;\n }\n }\n taskTail = t0;\n sleep(time);\n}\nfunction sleep(time) {\n if (frame)\n return;\n if (timeout$1)\n timeout$1 = clearTimeout(timeout$1);\n var delay = time - clockNow;\n if (delay > 24) {\n if (time < Infinity)\n timeout$1 = setTimeout(wake, time - clock.now() - clockSkew);\n if (interval)\n interval = clearInterval(interval);\n } else {\n if (!interval)\n clockLast = clock.now(), interval = setInterval(poke, pokeDelay);\n frame = 1, setFrame(wake);\n }\n}\nfunction timeout(callback, delay, time) {\n var t = new Timer();\n delay = delay == null ? 0 : +delay;\n t.restart((elapsed) => {\n t.stop();\n callback(elapsed + delay);\n }, delay, time);\n return t;\n}\nvar emptyOn = dispatch(\"start\", \"end\", \"cancel\", \"interrupt\");\nvar emptyTween = [];\nvar CREATED = 0;\nvar SCHEDULED = 1;\nvar STARTING = 2;\nvar STARTED = 3;\nvar RUNNING = 4;\nvar ENDING = 5;\nvar ENDED = 6;\nfunction schedule(node, name, id2, index, group, timing) {\n var schedules = node.__transition;\n if (!schedules)\n node.__transition = {};\n else if (id2 in schedules)\n return;\n create(node, id2, {\n name,\n index,\n // For context during callback.\n group,\n // For context during callback.\n on: emptyOn,\n tween: emptyTween,\n time: timing.time,\n delay: timing.delay,\n duration: timing.duration,\n ease: timing.ease,\n timer: null,\n state: CREATED\n });\n}\nfunction init(node, id2) {\n var schedule2 = get(node, id2);\n if (schedule2.state > CREATED)\n throw new Error(\"too late; already scheduled\");\n return schedule2;\n}\nfunction set(node, id2) {\n var schedule2 = get(node, id2);\n if (schedule2.state > STARTED)\n throw new Error(\"too late; already running\");\n return schedule2;\n}\nfunction get(node, id2) {\n var schedule2 = node.__transition;\n if (!schedule2 || !(schedule2 = schedule2[id2]))\n throw new Error(\"transition not found\");\n return schedule2;\n}\nfunction create(node, id2, self) {\n var schedules = node.__transition, tween;\n schedules[id2] = self;\n self.timer = timer(schedule2, 0, self.time);\n function schedule2(elapsed) {\n self.state = SCHEDULED;\n self.timer.restart(start2, self.delay, self.time);\n if (self.delay <= elapsed)\n start2(elapsed - self.delay);\n }\n function start2(elapsed) {\n var i, j, n, o;\n if (self.state !== SCHEDULED)\n return stop();\n for (i in schedules) {\n o = schedules[i];\n if (o.name !== self.name)\n continue;\n if (o.state === STARTED)\n return timeout(start2);\n if (o.state === RUNNING) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"interrupt\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n } else if (+i < id2) {\n o.state = ENDED;\n o.timer.stop();\n o.on.call(\"cancel\", node, node.__data__, o.index, o.group);\n delete schedules[i];\n }\n }\n timeout(function() {\n if (self.state === STARTED) {\n self.state = RUNNING;\n self.timer.restart(tick, self.delay, self.time);\n tick(elapsed);\n }\n });\n self.state = STARTING;\n self.on.call(\"start\", node, node.__data__, self.index, self.group);\n if (self.state !== STARTING)\n return;\n self.state = STARTED;\n tween = new Array(n = self.tween.length);\n for (i = 0, j = -1; i < n; ++i) {\n if (o = self.tween[i].value.call(node, node.__data__, self.index, self.group)) {\n tween[++j] = o;\n }\n }\n tween.length = j + 1;\n }\n function tick(elapsed) {\n var t = elapsed < self.duration ? self.ease.call(null, elapsed / self.duration) : (self.timer.restart(stop), self.state = ENDING, 1), i = -1, n = tween.length;\n while (++i < n) {\n tween[i].call(node, t);\n }\n if (self.state === ENDING) {\n self.on.call(\"end\", node, node.__data__, self.index, self.group);\n stop();\n }\n }\n function stop() {\n self.state = ENDED;\n self.timer.stop();\n delete schedules[id2];\n for (var i in schedules)\n return;\n delete node.__transition;\n }\n}\nfunction interrupt(node, name) {\n var schedules = node.__transition, schedule2, active, empty2 = true, i;\n if (!schedules)\n return;\n name = name == null ? null : name + \"\";\n for (i in schedules) {\n if ((schedule2 = schedules[i]).name !== name) {\n empty2 = false;\n continue;\n }\n active = schedule2.state > STARTING && schedule2.state < ENDING;\n schedule2.state = ENDED;\n schedule2.timer.stop();\n schedule2.on.call(active ? \"interrupt\" : \"cancel\", node, node.__data__, schedule2.index, schedule2.group);\n delete schedules[i];\n }\n if (empty2)\n delete node.__transition;\n}\nfunction selection_interrupt(name) {\n return this.each(function() {\n interrupt(this, name);\n });\n}\nfunction tweenRemove(id2, name) {\n var tween0, tween1;\n return function() {\n var schedule2 = set(this, id2), tween = schedule2.tween;\n if (tween !== tween0) {\n tween1 = tween0 = tween;\n for (var i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1 = tween1.slice();\n tween1.splice(i, 1);\n break;\n }\n }\n }\n schedule2.tween = tween1;\n };\n}\nfunction tweenFunction(id2, name, value) {\n var tween0, tween1;\n if (typeof value !== \"function\")\n throw new Error();\n return function() {\n var schedule2 = set(this, id2), tween = schedule2.tween;\n if (tween !== tween0) {\n tween1 = (tween0 = tween).slice();\n for (var t = { name, value }, i = 0, n = tween1.length; i < n; ++i) {\n if (tween1[i].name === name) {\n tween1[i] = t;\n break;\n }\n }\n if (i === n)\n tween1.push(t);\n }\n schedule2.tween = tween1;\n };\n}\nfunction transition_tween(name, value) {\n var id2 = this._id;\n name += \"\";\n if (arguments.length < 2) {\n var tween = get(this.node(), id2).tween;\n for (var i = 0, n = tween.length, t; i < n; ++i) {\n if ((t = tween[i]).name === name) {\n return t.value;\n }\n }\n return null;\n }\n return this.each((value == null ? tweenRemove : tweenFunction)(id2, name, value));\n}\nfunction tweenValue(transition, name, value) {\n var id2 = transition._id;\n transition.each(function() {\n var schedule2 = set(this, id2);\n (schedule2.value || (schedule2.value = {}))[name] = value.apply(this, arguments);\n });\n return function(node) {\n return get(node, id2).value[name];\n };\n}\nfunction interpolate(a, b) {\n var c;\n return (typeof b === \"number\" ? interpolateNumber : b instanceof color ? interpolateRgb : (c = color(b)) ? (b = c, interpolateRgb) : interpolateString)(a, b);\n}\nfunction attrRemove(name) {\n return function() {\n this.removeAttribute(name);\n };\n}\nfunction attrRemoveNS(fullname) {\n return function() {\n this.removeAttributeNS(fullname.space, fullname.local);\n };\n}\nfunction attrConstant(name, interpolate2, value1) {\n var string00, string1 = value1 + \"\", interpolate0;\n return function() {\n var string0 = this.getAttribute(name);\n return string0 === string1 ? null : string0 === string00 ? interpolate0 : interpolate0 = interpolate2(string00 = string0, value1);\n };\n}\nfunction attrConstantNS(fullname, interpolate2, value1) {\n var string00, string1 = value1 + \"\", interpolate0;\n return function() {\n var string0 = this.getAttributeNS(fullname.space, fullname.local);\n return string0 === string1 ? null : string0 === string00 ? interpolate0 : interpolate0 = interpolate2(string00 = string0, value1);\n };\n}\nfunction attrFunction(name, interpolate2, value) {\n var string00, string10, interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null)\n return void this.removeAttribute(name);\n string0 = this.getAttribute(name);\n string1 = value1 + \"\";\n return string0 === string1 ? null : string0 === string00 && string1 === string10 ? interpolate0 : (string10 = string1, interpolate0 = interpolate2(string00 = string0, value1));\n };\n}\nfunction attrFunctionNS(fullname, interpolate2, value) {\n var string00, string10, interpolate0;\n return function() {\n var string0, value1 = value(this), string1;\n if (value1 == null)\n return void this.removeAttributeNS(fullname.space, fullname.local);\n string0 = this.getAttributeNS(fullname.space, fullname.local);\n string1 = value1 + \"\";\n return string0 === string1 ? null : string0 === string00 && string1 === string10 ? interpolate0 : (string10 = string1, interpolate0 = interpolate2(string00 = string0, value1));\n };\n}\nfunction transition_attr(name, value) {\n var fullname = namespace(name), i = fullname === \"transform\" ? interpolateTransformSvg : interpolate;\n return this.attrTween(name, typeof value === \"function\" ? (fullname.local ? attrFunctionNS : attrFunction)(fullname, i, tweenValue(this, \"attr.\" + name, value)) : value == null ? (fullname.local ? attrRemoveNS : attrRemove)(fullname) : (fullname.local ? attrConstantNS : attrConstant)(fullname, i, value));\n}\nfunction attrInterpolate(name, i) {\n return function(t) {\n this.setAttribute(name, i.call(this, t));\n };\n}\nfunction attrInterpolateNS(fullname, i) {\n return function(t) {\n this.setAttributeNS(fullname.space, fullname.local, i.call(this, t));\n };\n}\nfunction attrTweenNS(fullname, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0)\n t0 = (i0 = i) && attrInterpolateNS(fullname, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\nfunction attrTween(name, value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0)\n t0 = (i0 = i) && attrInterpolate(name, i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\nfunction transition_attrTween(name, value) {\n var key = \"attr.\" + name;\n if (arguments.length < 2)\n return (key = this.tween(key)) && key._value;\n if (value == null)\n return this.tween(key, null);\n if (typeof value !== \"function\")\n throw new Error();\n var fullname = namespace(name);\n return this.tween(key, (fullname.local ? attrTweenNS : attrTween)(fullname, value));\n}\nfunction delayFunction(id2, value) {\n return function() {\n init(this, id2).delay = +value.apply(this, arguments);\n };\n}\nfunction delayConstant(id2, value) {\n return value = +value, function() {\n init(this, id2).delay = value;\n };\n}\nfunction transition_delay(value) {\n var id2 = this._id;\n return arguments.length ? this.each((typeof value === \"function\" ? delayFunction : delayConstant)(id2, value)) : get(this.node(), id2).delay;\n}\nfunction durationFunction(id2, value) {\n return function() {\n set(this, id2).duration = +value.apply(this, arguments);\n };\n}\nfunction durationConstant(id2, value) {\n return value = +value, function() {\n set(this, id2).duration = value;\n };\n}\nfunction transition_duration(value) {\n var id2 = this._id;\n return arguments.length ? this.each((typeof value === \"function\" ? durationFunction : durationConstant)(id2, value)) : get(this.node(), id2).duration;\n}\nfunction easeConstant(id2, value) {\n if (typeof value !== \"function\")\n throw new Error();\n return function() {\n set(this, id2).ease = value;\n };\n}\nfunction transition_ease(value) {\n var id2 = this._id;\n return arguments.length ? this.each(easeConstant(id2, value)) : get(this.node(), id2).ease;\n}\nfunction easeVarying(id2, value) {\n return function() {\n var v = value.apply(this, arguments);\n if (typeof v !== \"function\")\n throw new Error();\n set(this, id2).ease = v;\n };\n}\nfunction transition_easeVarying(value) {\n if (typeof value !== \"function\")\n throw new Error();\n return this.each(easeVarying(this._id, value));\n}\nfunction transition_filter(match) {\n if (typeof match !== \"function\")\n match = matcher(match);\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = [], node, i = 0; i < n; ++i) {\n if ((node = group[i]) && match.call(node, node.__data__, i, group)) {\n subgroup.push(node);\n }\n }\n }\n return new Transition(subgroups, this._parents, this._name, this._id);\n}\nfunction transition_merge(transition) {\n if (transition._id !== this._id)\n throw new Error();\n for (var groups0 = this._groups, groups1 = transition._groups, m0 = groups0.length, m1 = groups1.length, m = Math.min(m0, m1), merges = new Array(m0), j = 0; j < m; ++j) {\n for (var group0 = groups0[j], group1 = groups1[j], n = group0.length, merge = merges[j] = new Array(n), node, i = 0; i < n; ++i) {\n if (node = group0[i] || group1[i]) {\n merge[i] = node;\n }\n }\n }\n for (; j < m0; ++j) {\n merges[j] = groups0[j];\n }\n return new Transition(merges, this._parents, this._name, this._id);\n}\nfunction start(name) {\n return (name + \"\").trim().split(/^|\\s+/).every(function(t) {\n var i = t.indexOf(\".\");\n if (i >= 0)\n t = t.slice(0, i);\n return !t || t === \"start\";\n });\n}\nfunction onFunction(id2, name, listener) {\n var on0, on1, sit = start(name) ? init : set;\n return function() {\n var schedule2 = sit(this, id2), on = schedule2.on;\n if (on !== on0)\n (on1 = (on0 = on).copy()).on(name, listener);\n schedule2.on = on1;\n };\n}\nfunction transition_on(name, listener) {\n var id2 = this._id;\n return arguments.length < 2 ? get(this.node(), id2).on.on(name) : this.each(onFunction(id2, name, listener));\n}\nfunction removeFunction(id2) {\n return function() {\n var parent = this.parentNode;\n for (var i in this.__transition)\n if (+i !== id2)\n return;\n if (parent)\n parent.removeChild(this);\n };\n}\nfunction transition_remove() {\n return this.on(\"end.remove\", removeFunction(this._id));\n}\nfunction transition_select(select2) {\n var name = this._name, id2 = this._id;\n if (typeof select2 !== \"function\")\n select2 = selector(select2);\n for (var groups = this._groups, m = groups.length, subgroups = new Array(m), j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, subgroup = subgroups[j] = new Array(n), node, subnode, i = 0; i < n; ++i) {\n if ((node = group[i]) && (subnode = select2.call(node, node.__data__, i, group))) {\n if (\"__data__\" in node)\n subnode.__data__ = node.__data__;\n subgroup[i] = subnode;\n schedule(subgroup[i], name, id2, i, subgroup, get(node, id2));\n }\n }\n }\n return new Transition(subgroups, this._parents, name, id2);\n}\nfunction transition_selectAll(select2) {\n var name = this._name, id2 = this._id;\n if (typeof select2 !== \"function\")\n select2 = selectorAll(select2);\n for (var groups = this._groups, m = groups.length, subgroups = [], parents = [], j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n for (var children2 = select2.call(node, node.__data__, i, group), child, inherit2 = get(node, id2), k = 0, l = children2.length; k < l; ++k) {\n if (child = children2[k]) {\n schedule(child, name, id2, k, children2, inherit2);\n }\n }\n subgroups.push(children2);\n parents.push(node);\n }\n }\n }\n return new Transition(subgroups, parents, name, id2);\n}\nvar Selection = selection.prototype.constructor;\nfunction transition_selection() {\n return new Selection(this._groups, this._parents);\n}\nfunction styleNull(name, interpolate2) {\n var string00, string10, interpolate0;\n return function() {\n var string0 = styleValue(this, name), string1 = (this.style.removeProperty(name), styleValue(this, name));\n return string0 === string1 ? null : string0 === string00 && string1 === string10 ? interpolate0 : interpolate0 = interpolate2(string00 = string0, string10 = string1);\n };\n}\nfunction styleRemove(name) {\n return function() {\n this.style.removeProperty(name);\n };\n}\nfunction styleConstant(name, interpolate2, value1) {\n var string00, string1 = value1 + \"\", interpolate0;\n return function() {\n var string0 = styleValue(this, name);\n return string0 === string1 ? null : string0 === string00 ? interpolate0 : interpolate0 = interpolate2(string00 = string0, value1);\n };\n}\nfunction styleFunction(name, interpolate2, value) {\n var string00, string10, interpolate0;\n return function() {\n var string0 = styleValue(this, name), value1 = value(this), string1 = value1 + \"\";\n if (value1 == null)\n string1 = value1 = (this.style.removeProperty(name), styleValue(this, name));\n return string0 === string1 ? null : string0 === string00 && string1 === string10 ? interpolate0 : (string10 = string1, interpolate0 = interpolate2(string00 = string0, value1));\n };\n}\nfunction styleMaybeRemove(id2, name) {\n var on0, on1, listener0, key = \"style.\" + name, event = \"end.\" + key, remove2;\n return function() {\n var schedule2 = set(this, id2), on = schedule2.on, listener = schedule2.value[key] == null ? remove2 || (remove2 = styleRemove(name)) : void 0;\n if (on !== on0 || listener0 !== listener)\n (on1 = (on0 = on).copy()).on(event, listener0 = listener);\n schedule2.on = on1;\n };\n}\nfunction transition_style(name, value, priority) {\n var i = (name += \"\") === \"transform\" ? interpolateTransformCss : interpolate;\n return value == null ? this.styleTween(name, styleNull(name, i)).on(\"end.style.\" + name, styleRemove(name)) : typeof value === \"function\" ? this.styleTween(name, styleFunction(name, i, tweenValue(this, \"style.\" + name, value))).each(styleMaybeRemove(this._id, name)) : this.styleTween(name, styleConstant(name, i, value), priority).on(\"end.style.\" + name, null);\n}\nfunction styleInterpolate(name, i, priority) {\n return function(t) {\n this.style.setProperty(name, i.call(this, t), priority);\n };\n}\nfunction styleTween(name, value, priority) {\n var t, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0)\n t = (i0 = i) && styleInterpolate(name, i, priority);\n return t;\n }\n tween._value = value;\n return tween;\n}\nfunction transition_styleTween(name, value, priority) {\n var key = \"style.\" + (name += \"\");\n if (arguments.length < 2)\n return (key = this.tween(key)) && key._value;\n if (value == null)\n return this.tween(key, null);\n if (typeof value !== \"function\")\n throw new Error();\n return this.tween(key, styleTween(name, value, priority == null ? \"\" : priority));\n}\nfunction textConstant(value) {\n return function() {\n this.textContent = value;\n };\n}\nfunction textFunction(value) {\n return function() {\n var value1 = value(this);\n this.textContent = value1 == null ? \"\" : value1;\n };\n}\nfunction transition_text(value) {\n return this.tween(\"text\", typeof value === \"function\" ? textFunction(tweenValue(this, \"text\", value)) : textConstant(value == null ? \"\" : value + \"\"));\n}\nfunction textInterpolate(i) {\n return function(t) {\n this.textContent = i.call(this, t);\n };\n}\nfunction textTween(value) {\n var t0, i0;\n function tween() {\n var i = value.apply(this, arguments);\n if (i !== i0)\n t0 = (i0 = i) && textInterpolate(i);\n return t0;\n }\n tween._value = value;\n return tween;\n}\nfunction transition_textTween(value) {\n var key = \"text\";\n if (arguments.length < 1)\n return (key = this.tween(key)) && key._value;\n if (value == null)\n return this.tween(key, null);\n if (typeof value !== \"function\")\n throw new Error();\n return this.tween(key, textTween(value));\n}\nfunction transition_transition() {\n var name = this._name, id0 = this._id, id1 = newId();\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n var inherit2 = get(node, id0);\n schedule(node, name, id1, i, group, {\n time: inherit2.time + inherit2.delay + inherit2.duration,\n delay: 0,\n duration: inherit2.duration,\n ease: inherit2.ease\n });\n }\n }\n }\n return new Transition(groups, this._parents, name, id1);\n}\nfunction transition_end() {\n var on0, on1, that = this, id2 = that._id, size = that.size();\n return new Promise(function(resolve, reject) {\n var cancel = { value: reject }, end = { value: function() {\n if (--size === 0)\n resolve();\n } };\n that.each(function() {\n var schedule2 = set(this, id2), on = schedule2.on;\n if (on !== on0) {\n on1 = (on0 = on).copy();\n on1._.cancel.push(cancel);\n on1._.interrupt.push(cancel);\n on1._.end.push(end);\n }\n schedule2.on = on1;\n });\n if (size === 0)\n resolve();\n });\n}\nvar id = 0;\nfunction Transition(groups, parents, name, id2) {\n this._groups = groups;\n this._parents = parents;\n this._name = name;\n this._id = id2;\n}\nfunction newId() {\n return ++id;\n}\nvar selection_prototype = selection.prototype;\nTransition.prototype = {\n constructor: Transition,\n select: transition_select,\n selectAll: transition_selectAll,\n selectChild: selection_prototype.selectChild,\n selectChildren: selection_prototype.selectChildren,\n filter: transition_filter,\n merge: transition_merge,\n selection: transition_selection,\n transition: transition_transition,\n call: selection_prototype.call,\n nodes: selection_prototype.nodes,\n node: selection_prototype.node,\n size: selection_prototype.size,\n empty: selection_prototype.empty,\n each: selection_prototype.each,\n on: transition_on,\n attr: transition_attr,\n attrTween: transition_attrTween,\n style: transition_style,\n styleTween: transition_styleTween,\n text: transition_text,\n textTween: transition_textTween,\n remove: transition_remove,\n tween: transition_tween,\n delay: transition_delay,\n duration: transition_duration,\n ease: transition_ease,\n easeVarying: transition_easeVarying,\n end: transition_end,\n [Symbol.iterator]: selection_prototype[Symbol.iterator]\n};\nfunction cubicInOut(t) {\n return ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\n}\nvar defaultTiming = {\n time: null,\n // Set on use.\n delay: 0,\n duration: 250,\n ease: cubicInOut\n};\nfunction inherit(node, id2) {\n var timing;\n while (!(timing = node.__transition) || !(timing = timing[id2])) {\n if (!(node = node.parentNode)) {\n throw new Error(`transition ${id2} not found`);\n }\n }\n return timing;\n}\nfunction selection_transition(name) {\n var id2, timing;\n if (name instanceof Transition) {\n id2 = name._id, name = name._name;\n } else {\n id2 = newId(), (timing = defaultTiming).time = now(), name = name == null ? null : name + \"\";\n }\n for (var groups = this._groups, m = groups.length, j = 0; j < m; ++j) {\n for (var group = groups[j], n = group.length, node, i = 0; i < n; ++i) {\n if (node = group[i]) {\n schedule(node, name, id2, i, group, timing || inherit(node, id2));\n }\n }\n }\n return new Transition(groups, this._parents, name, id2);\n}\nselection.prototype.interrupt = selection_interrupt;\nselection.prototype.transition = selection_transition;\nconst constant = (x) => () => x;\nfunction ZoomEvent(type, {\n sourceEvent: sourceEvent2,\n target,\n transform,\n dispatch: dispatch2\n}) {\n Object.defineProperties(this, {\n type: { value: type, enumerable: true, configurable: true },\n sourceEvent: { value: sourceEvent2, enumerable: true, configurable: true },\n target: { value: target, enumerable: true, configurable: true },\n transform: { value: transform, enumerable: true, configurable: true },\n _: { value: dispatch2 }\n });\n}\nfunction Transform(k, x, y) {\n this.k = k;\n this.x = x;\n this.y = y;\n}\nTransform.prototype = {\n constructor: Transform,\n scale: function(k) {\n return k === 1 ? this : new Transform(this.k * k, this.x, this.y);\n },\n translate: function(x, y) {\n return x === 0 & y === 0 ? this : new Transform(this.k, this.x + this.k * x, this.y + this.k * y);\n },\n apply: function(point) {\n return [point[0] * this.k + this.x, point[1] * this.k + this.y];\n },\n applyX: function(x) {\n return x * this.k + this.x;\n },\n applyY: function(y) {\n return y * this.k + this.y;\n },\n invert: function(location) {\n return [(location[0] - this.x) / this.k, (location[1] - this.y) / this.k];\n },\n invertX: function(x) {\n return (x - this.x) / this.k;\n },\n invertY: function(y) {\n return (y - this.y) / this.k;\n },\n rescaleX: function(x) {\n return x.copy().domain(x.range().map(this.invertX, this).map(x.invert, x));\n },\n rescaleY: function(y) {\n return y.copy().domain(y.range().map(this.invertY, this).map(y.invert, y));\n },\n toString: function() {\n return \"translate(\" + this.x + \",\" + this.y + \") scale(\" + this.k + \")\";\n }\n};\nvar identity = new Transform(1, 0, 0);\nTransform.prototype;\nfunction nopropagation(event) {\n event.stopImmediatePropagation();\n}\nfunction noevent(event) {\n event.preventDefault();\n event.stopImmediatePropagation();\n}\nfunction defaultFilter(event) {\n return (!event.ctrlKey || event.type === \"wheel\") && !event.button;\n}\nfunction defaultExtent() {\n var e = this;\n if (e instanceof SVGElement) {\n e = e.ownerSVGElement || e;\n if (e.hasAttribute(\"viewBox\")) {\n e = e.viewBox.baseVal;\n return [[e.x, e.y], [e.x + e.width, e.y + e.height]];\n }\n return [[0, 0], [e.width.baseVal.value, e.height.baseVal.value]];\n }\n return [[0, 0], [e.clientWidth, e.clientHeight]];\n}\nfunction defaultTransform() {\n return this.__zoom || identity;\n}\nfunction defaultWheelDelta(event) {\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 2e-3) * (event.ctrlKey ? 10 : 1);\n}\nfunction defaultTouchable() {\n return navigator.maxTouchPoints || \"ontouchstart\" in this;\n}\nfunction defaultConstrain(transform, extent, translateExtent) {\n var dx0 = transform.invertX(extent[0][0]) - translateExtent[0][0], dx1 = transform.invertX(extent[1][0]) - translateExtent[1][0], dy0 = transform.invertY(extent[0][1]) - translateExtent[0][1], dy1 = transform.invertY(extent[1][1]) - translateExtent[1][1];\n return transform.translate(\n dx1 > dx0 ? (dx0 + dx1) / 2 : Math.min(0, dx0) || Math.max(0, dx1),\n dy1 > dy0 ? (dy0 + dy1) / 2 : Math.min(0, dy0) || Math.max(0, dy1)\n );\n}\nfunction zoom() {\n var filter2 = defaultFilter, extent = defaultExtent, constrain = defaultConstrain, wheelDelta = defaultWheelDelta, touchable = defaultTouchable, scaleExtent = [0, Infinity], translateExtent = [[-Infinity, -Infinity], [Infinity, Infinity]], duration = 250, interpolate2 = interpolateZoom, listeners = dispatch(\"start\", \"zoom\", \"end\"), touchstarting, touchfirst, touchending, touchDelay = 500, wheelDelay = 150, clickDistance2 = 0, tapDistance = 10;\n function zoom2(selection2) {\n selection2.property(\"__zoom\", defaultTransform).on(\"wheel.zoom\", wheeled, { passive: false }).on(\"mousedown.zoom\", mousedowned).on(\"dblclick.zoom\", dblclicked).filter(touchable).on(\"touchstart.zoom\", touchstarted).on(\"touchmove.zoom\", touchmoved).on(\"touchend.zoom touchcancel.zoom\", touchended).style(\"-webkit-tap-highlight-color\", \"rgba(0,0,0,0)\");\n }\n zoom2.transform = function(collection, transform, point, event) {\n var selection2 = collection.selection ? collection.selection() : collection;\n selection2.property(\"__zoom\", defaultTransform);\n if (collection !== selection2) {\n schedule2(collection, transform, point, event);\n } else {\n selection2.interrupt().each(function() {\n gesture(this, arguments).event(event).start().zoom(null, typeof transform === \"function\" ? transform.apply(this, arguments) : transform).end();\n });\n }\n };\n zoom2.scaleBy = function(selection2, k, p, event) {\n zoom2.scaleTo(selection2, function() {\n var k0 = this.__zoom.k, k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return k0 * k1;\n }, p, event);\n };\n zoom2.scaleTo = function(selection2, k, p, event) {\n zoom2.transform(selection2, function() {\n var e = extent.apply(this, arguments), t0 = this.__zoom, p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p, p1 = t0.invert(p0), k1 = typeof k === \"function\" ? k.apply(this, arguments) : k;\n return constrain(translate(scale(t0, k1), p0, p1), e, translateExtent);\n }, p, event);\n };\n zoom2.translateBy = function(selection2, x, y, event) {\n zoom2.transform(selection2, function() {\n return constrain(this.__zoom.translate(\n typeof x === \"function\" ? x.apply(this, arguments) : x,\n typeof y === \"function\" ? y.apply(this, arguments) : y\n ), extent.apply(this, arguments), translateExtent);\n }, null, event);\n };\n zoom2.translateTo = function(selection2, x, y, p, event) {\n zoom2.transform(selection2, function() {\n var e = extent.apply(this, arguments), t = this.__zoom, p0 = p == null ? centroid(e) : typeof p === \"function\" ? p.apply(this, arguments) : p;\n return constrain(identity.translate(p0[0], p0[1]).scale(t.k).translate(\n typeof x === \"function\" ? -x.apply(this, arguments) : -x,\n typeof y === \"function\" ? -y.apply(this, arguments) : -y\n ), e, translateExtent);\n }, p, event);\n };\n function scale(transform, k) {\n k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], k));\n return k === transform.k ? transform : new Transform(k, transform.x, transform.y);\n }\n function translate(transform, p0, p1) {\n var x = p0[0] - p1[0] * transform.k, y = p0[1] - p1[1] * transform.k;\n return x === transform.x && y === transform.y ? transform : new Transform(transform.k, x, y);\n }\n function centroid(extent2) {\n return [(+extent2[0][0] + +extent2[1][0]) / 2, (+extent2[0][1] + +extent2[1][1]) / 2];\n }\n function schedule2(transition, transform, point, event) {\n transition.on(\"start.zoom\", function() {\n gesture(this, arguments).event(event).start();\n }).on(\"interrupt.zoom end.zoom\", function() {\n gesture(this, arguments).event(event).end();\n }).tween(\"zoom\", function() {\n var that = this, args = arguments, g = gesture(that, args).event(event), e = extent.apply(that, args), p = point == null ? centroid(e) : typeof point === \"function\" ? point.apply(that, args) : point, w = Math.max(e[1][0] - e[0][0], e[1][1] - e[0][1]), a = that.__zoom, b = typeof transform === \"function\" ? transform.apply(that, args) : transform, i = interpolate2(a.invert(p).concat(w / a.k), b.invert(p).concat(w / b.k));\n return function(t) {\n if (t === 1)\n t = b;\n else {\n var l = i(t), k = w / l[2];\n t = new Transform(k, p[0] - l[0] * k, p[1] - l[1] * k);\n }\n g.zoom(null, t);\n };\n });\n }\n function gesture(that, args, clean) {\n return !clean && that.__zooming || new Gesture(that, args);\n }\n function Gesture(that, args) {\n this.that = that;\n this.args = args;\n this.active = 0;\n this.sourceEvent = null;\n this.extent = extent.apply(that, args);\n this.taps = 0;\n }\n Gesture.prototype = {\n event: function(event) {\n if (event)\n this.sourceEvent = event;\n return this;\n },\n start: function() {\n if (++this.active === 1) {\n this.that.__zooming = this;\n this.emit(\"start\");\n }\n return this;\n },\n zoom: function(key, transform) {\n if (this.mouse && key !== \"mouse\")\n this.mouse[1] = transform.invert(this.mouse[0]);\n if (this.touch0 && key !== \"touch\")\n this.touch0[1] = transform.invert(this.touch0[0]);\n if (this.touch1 && key !== \"touch\")\n this.touch1[1] = transform.invert(this.touch1[0]);\n this.that.__zoom = transform;\n this.emit(\"zoom\");\n return this;\n },\n end: function() {\n if (--this.active === 0) {\n delete this.that.__zooming;\n this.emit(\"end\");\n }\n return this;\n },\n emit: function(type) {\n var d = select(this.that).datum();\n listeners.call(\n type,\n this.that,\n new ZoomEvent(type, {\n sourceEvent: this.sourceEvent,\n target: zoom2,\n type,\n transform: this.that.__zoom,\n dispatch: listeners\n }),\n d\n );\n }\n };\n function wheeled(event, ...args) {\n if (!filter2.apply(this, arguments))\n return;\n var g = gesture(this, args).event(event), t = this.__zoom, k = Math.max(scaleExtent[0], Math.min(scaleExtent[1], t.k * Math.pow(2, wheelDelta.apply(this, arguments)))), p = pointer(event);\n if (g.wheel) {\n if (g.mouse[0][0] !== p[0] || g.mouse[0][1] !== p[1]) {\n g.mouse[1] = t.invert(g.mouse[0] = p);\n }\n clearTimeout(g.wheel);\n } else if (t.k === k)\n return;\n else {\n g.mouse = [p, t.invert(p)];\n interrupt(this);\n g.start();\n }\n noevent(event);\n g.wheel = setTimeout(wheelidled, wheelDelay);\n g.zoom(\"mouse\", constrain(translate(scale(t, k), g.mouse[0], g.mouse[1]), g.extent, translateExtent));\n function wheelidled() {\n g.wheel = null;\n g.end();\n }\n }\n function mousedowned(event, ...args) {\n if (touchending || !filter2.apply(this, arguments))\n return;\n var currentTarget = event.currentTarget, g = gesture(this, args, true).event(event), v = select(event.view).on(\"mousemove.zoom\", mousemoved, true).on(\"mouseup.zoom\", mouseupped, true), p = pointer(event, currentTarget), x0 = event.clientX, y0 = event.clientY;\n dragDisable(event.view);\n nopropagation(event);\n g.mouse = [p, this.__zoom.invert(p)];\n interrupt(this);\n g.start();\n function mousemoved(event2) {\n noevent(event2);\n if (!g.moved) {\n var dx = event2.clientX - x0, dy = event2.clientY - y0;\n g.moved = dx * dx + dy * dy > clickDistance2;\n }\n g.event(event2).zoom(\"mouse\", constrain(translate(g.that.__zoom, g.mouse[0] = pointer(event2, currentTarget), g.mouse[1]), g.extent, translateExtent));\n }\n function mouseupped(event2) {\n v.on(\"mousemove.zoom mouseup.zoom\", null);\n yesdrag(event2.view, g.moved);\n noevent(event2);\n g.event(event2).end();\n }\n }\n function dblclicked(event, ...args) {\n if (!filter2.apply(this, arguments))\n return;\n var t0 = this.__zoom, p0 = pointer(event.changedTouches ? event.changedTouches[0] : event, this), p1 = t0.invert(p0), k1 = t0.k * (event.shiftKey ? 0.5 : 2), t1 = constrain(translate(scale(t0, k1), p0, p1), extent.apply(this, args), translateExtent);\n noevent(event);\n if (duration > 0)\n select(this).transition().duration(duration).call(schedule2, t1, p0, event);\n else\n select(this).call(zoom2.transform, t1, p0, event);\n }\n function touchstarted(event, ...args) {\n if (!filter2.apply(this, arguments))\n return;\n var touches = event.touches, n = touches.length, g = gesture(this, args, event.changedTouches.length === n).event(event), started, i, t, p;\n nopropagation(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n p = [p, this.__zoom.invert(p), t.identifier];\n if (!g.touch0)\n g.touch0 = p, started = true, g.taps = 1 + !!touchstarting;\n else if (!g.touch1 && g.touch0[2] !== p[2])\n g.touch1 = p, g.taps = 0;\n }\n if (touchstarting)\n touchstarting = clearTimeout(touchstarting);\n if (started) {\n if (g.taps < 2)\n touchfirst = p[0], touchstarting = setTimeout(function() {\n touchstarting = null;\n }, touchDelay);\n interrupt(this);\n g.start();\n }\n }\n function touchmoved(event, ...args) {\n if (!this.__zooming)\n return;\n var g = gesture(this, args).event(event), touches = event.changedTouches, n = touches.length, i, t, p, l;\n noevent(event);\n for (i = 0; i < n; ++i) {\n t = touches[i], p = pointer(t, this);\n if (g.touch0 && g.touch0[2] === t.identifier)\n g.touch0[0] = p;\n else if (g.touch1 && g.touch1[2] === t.identifier)\n g.touch1[0] = p;\n }\n t = g.that.__zoom;\n if (g.touch1) {\n var p0 = g.touch0[0], l0 = g.touch0[1], p1 = g.touch1[0], l1 = g.touch1[1], dp = (dp = p1[0] - p0[0]) * dp + (dp = p1[1] - p0[1]) * dp, dl = (dl = l1[0] - l0[0]) * dl + (dl = l1[1] - l0[1]) * dl;\n t = scale(t, Math.sqrt(dp / dl));\n p = [(p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2];\n l = [(l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2];\n } else if (g.touch0)\n p = g.touch0[0], l = g.touch0[1];\n else\n return;\n g.zoom(\"touch\", constrain(translate(t, p, l), g.extent, translateExtent));\n }\n function touchended(event, ...args) {\n if (!this.__zooming)\n return;\n var g = gesture(this, args).event(event), touches = event.changedTouches, n = touches.length, i, t;\n nopropagation(event);\n if (touchending)\n clearTimeout(touchending);\n touchending = setTimeout(function() {\n touchending = null;\n }, touchDelay);\n for (i = 0; i < n; ++i) {\n t = touches[i];\n if (g.touch0 && g.touch0[2] === t.identifier)\n delete g.touch0;\n else if (g.touch1 && g.touch1[2] === t.identifier)\n delete g.touch1;\n }\n if (g.touch1 && !g.touch0)\n g.touch0 = g.touch1, delete g.touch1;\n if (g.touch0)\n g.touch0[1] = this.__zoom.invert(g.touch0[0]);\n else {\n g.end();\n if (g.taps === 2) {\n t = pointer(t, this);\n if (Math.hypot(touchfirst[0] - t[0], touchfirst[1] - t[1]) < tapDistance) {\n var p = select(this).on(\"dblclick.zoom\");\n if (p)\n p.apply(this, arguments);\n }\n }\n }\n }\n zoom2.wheelDelta = function(_) {\n return arguments.length ? (wheelDelta = typeof _ === \"function\" ? _ : constant(+_), zoom2) : wheelDelta;\n };\n zoom2.filter = function(_) {\n return arguments.length ? (filter2 = typeof _ === \"function\" ? _ : constant(!!_), zoom2) : filter2;\n };\n zoom2.touchable = function(_) {\n return arguments.length ? (touchable = typeof _ === \"function\" ? _ : constant(!!_), zoom2) : touchable;\n };\n zoom2.extent = function(_) {\n return arguments.length ? (extent = typeof _ === \"function\" ? _ : constant([[+_[0][0], +_[0][1]], [+_[1][0], +_[1][1]]]), zoom2) : extent;\n };\n zoom2.scaleExtent = function(_) {\n return arguments.length ? (scaleExtent[0] = +_[0], scaleExtent[1] = +_[1], zoom2) : [scaleExtent[0], scaleExtent[1]];\n };\n zoom2.translateExtent = function(_) {\n return arguments.length ? (translateExtent[0][0] = +_[0][0], translateExtent[1][0] = +_[1][0], translateExtent[0][1] = +_[0][1], translateExtent[1][1] = +_[1][1], zoom2) : [[translateExtent[0][0], translateExtent[0][1]], [translateExtent[1][0], translateExtent[1][1]]];\n };\n zoom2.constrain = function(_) {\n return arguments.length ? (constrain = _, zoom2) : constrain;\n };\n zoom2.duration = function(_) {\n return arguments.length ? (duration = +_, zoom2) : duration;\n };\n zoom2.interpolate = function(_) {\n return arguments.length ? (interpolate2 = _, zoom2) : interpolate2;\n };\n zoom2.on = function() {\n var value = listeners.on.apply(listeners, arguments);\n return value === listeners ? zoom2 : value;\n };\n zoom2.clickDistance = function(_) {\n return arguments.length ? (clickDistance2 = (_ = +_) * _, zoom2) : Math.sqrt(clickDistance2);\n };\n zoom2.tapDistance = function(_) {\n return arguments.length ? (tapDistance = +_, zoom2) : tapDistance;\n };\n return zoom2;\n}\nvar Position = /* @__PURE__ */ ((Position2) => {\n Position2[\"Left\"] = \"left\";\n Position2[\"Top\"] = \"top\";\n Position2[\"Right\"] = \"right\";\n Position2[\"Bottom\"] = \"bottom\";\n return Position2;\n})(Position || {});\nvar SelectionMode = /* @__PURE__ */ ((SelectionMode2) => {\n SelectionMode2[\"Partial\"] = \"partial\";\n SelectionMode2[\"Full\"] = \"full\";\n return SelectionMode2;\n})(SelectionMode || {});\nvar ConnectionLineType = /* @__PURE__ */ ((ConnectionLineType2) => {\n ConnectionLineType2[\"Bezier\"] = \"default\";\n ConnectionLineType2[\"SimpleBezier\"] = \"simple-bezier\";\n ConnectionLineType2[\"Straight\"] = \"straight\";\n ConnectionLineType2[\"Step\"] = \"step\";\n ConnectionLineType2[\"SmoothStep\"] = \"smoothstep\";\n return ConnectionLineType2;\n})(ConnectionLineType || {});\nvar ConnectionMode = /* @__PURE__ */ ((ConnectionMode2) => {\n ConnectionMode2[\"Strict\"] = \"strict\";\n ConnectionMode2[\"Loose\"] = \"loose\";\n return ConnectionMode2;\n})(ConnectionMode || {});\nvar MarkerType = /* @__PURE__ */ ((MarkerType2) => {\n MarkerType2[\"Arrow\"] = \"arrow\";\n MarkerType2[\"ArrowClosed\"] = \"arrowclosed\";\n return MarkerType2;\n})(MarkerType || {});\nvar PanOnScrollMode = /* @__PURE__ */ ((PanOnScrollMode2) => {\n PanOnScrollMode2[\"Free\"] = \"free\";\n PanOnScrollMode2[\"Vertical\"] = \"vertical\";\n PanOnScrollMode2[\"Horizontal\"] = \"horizontal\";\n return PanOnScrollMode2;\n})(PanOnScrollMode || {});\nvar PanelPosition = /* @__PURE__ */ ((PanelPosition2) => {\n PanelPosition2[\"TopLeft\"] = \"top-left\";\n PanelPosition2[\"TopCenter\"] = \"top-center\";\n PanelPosition2[\"TopRight\"] = \"top-right\";\n PanelPosition2[\"BottomLeft\"] = \"bottom-left\";\n PanelPosition2[\"BottomCenter\"] = \"bottom-center\";\n PanelPosition2[\"BottomRight\"] = \"bottom-right\";\n return PanelPosition2;\n})(PanelPosition || {});\nconst inputTags = [\"INPUT\", \"SELECT\", \"TEXTAREA\"];\nconst defaultDoc = typeof document !== \"undefined\" ? document : null;\nfunction isInputDOMNode(event) {\n var _a, _b;\n const target = ((_b = (_a = event.composedPath) == null ? void 0 : _a.call(event)) == null ? void 0 : _b[0]) || event.target;\n const hasAttribute = typeof (target == null ? void 0 : target.hasAttribute) === \"function\" ? target.hasAttribute(\"contenteditable\") : false;\n const closest = typeof (target == null ? void 0 : target.closest) === \"function\" ? target.closest(\".nokey\") : null;\n return inputTags.includes(target == null ? void 0 : target.nodeName) || hasAttribute || !!closest;\n}\nfunction wasModifierPressed(event) {\n return event.ctrlKey || event.metaKey || event.shiftKey || event.altKey;\n}\nfunction isKeyMatch(pressedKey, keyToMatch, pressedKeys, isKeyUp) {\n const keyCombination = keyToMatch.replace(\"+\", \"\\n\").replace(\"\\n\\n\", \"\\n+\").split(\"\\n\").map((k) => k.trim().toLowerCase());\n if (keyCombination.length === 1) {\n return pressedKey.toLowerCase() === keyToMatch.toLowerCase();\n }\n if (!isKeyUp) {\n pressedKeys.add(pressedKey.toLowerCase());\n }\n const isMatch = keyCombination.every(\n (key, index) => pressedKeys.has(key) && Array.from(pressedKeys.values())[index] === keyCombination[index]\n );\n if (isKeyUp) {\n pressedKeys.delete(pressedKey.toLowerCase());\n }\n return isMatch;\n}\nfunction createKeyPredicate(keyFilter, pressedKeys) {\n return (event) => {\n if (!event.code && !event.key) {\n return false;\n }\n const keyOrCode = useKeyOrCode(event.code, keyFilter);\n if (Array.isArray(keyFilter)) {\n return keyFilter.some((key) => isKeyMatch(event[keyOrCode], key, pressedKeys, event.type === \"keyup\"));\n }\n return isKeyMatch(event[keyOrCode], keyFilter, pressedKeys, event.type === \"keyup\");\n };\n}\nfunction useKeyOrCode(code, keysToWatch) {\n return keysToWatch.includes(code) ? \"code\" : \"key\";\n}\nfunction useKeyPress(keyFilter, options) {\n const target = computed(() => toValue$1(options == null ? void 0 : options.target) ?? defaultDoc);\n const isPressed = shallowRef(toValue$1(keyFilter) === true);\n let modifierPressed = false;\n const pressedKeys = /* @__PURE__ */ new Set();\n let currentFilter = createKeyFilterFn(toValue$1(keyFilter));\n watch(\n () => toValue$1(keyFilter),\n (nextKeyFilter, previousKeyFilter) => {\n if (typeof previousKeyFilter === \"boolean\" && typeof nextKeyFilter !== \"boolean\") {\n reset();\n }\n currentFilter = createKeyFilterFn(nextKeyFilter);\n },\n {\n immediate: true\n }\n );\n useEventListener([\"blur\", \"contextmenu\"], reset);\n onKeyStroke(\n (...args) => currentFilter(...args),\n (e) => {\n var _a, _b;\n const actInsideInputWithModifier = toValue$1(options == null ? void 0 : options.actInsideInputWithModifier) ?? true;\n const preventDefault = toValue$1(options == null ? void 0 : options.preventDefault) ?? false;\n modifierPressed = wasModifierPressed(e);\n const preventAction = (!modifierPressed || modifierPressed && !actInsideInputWithModifier) && isInputDOMNode(e);\n if (preventAction) {\n return;\n }\n const target2 = ((_b = (_a = e.composedPath) == null ? void 0 : _a.call(e)) == null ? void 0 : _b[0]) || e.target;\n const isInteractiveElement = (target2 == null ? void 0 : target2.nodeName) === \"BUTTON\" || (target2 == null ? void 0 : target2.nodeName) === \"A\";\n if (!preventDefault && (modifierPressed || !isInteractiveElement)) {\n e.preventDefault();\n }\n isPressed.value = true;\n },\n { eventName: \"keydown\", target }\n );\n onKeyStroke(\n (...args) => currentFilter(...args),\n (e) => {\n const actInsideInputWithModifier = toValue$1(options == null ? void 0 : options.actInsideInputWithModifier) ?? true;\n if (isPressed.value) {\n const preventAction = (!modifierPressed || modifierPressed && !actInsideInputWithModifier) && isInputDOMNode(e);\n if (preventAction) {\n return;\n }\n modifierPressed = false;\n isPressed.value = false;\n }\n },\n { eventName: \"keyup\", target }\n );\n function reset() {\n modifierPressed = false;\n pressedKeys.clear();\n isPressed.value = toValue$1(keyFilter) === true;\n }\n function createKeyFilterFn(keyFilter2) {\n if (keyFilter2 === null) {\n reset();\n return () => false;\n }\n if (typeof keyFilter2 === \"boolean\") {\n reset();\n isPressed.value = keyFilter2;\n return () => false;\n }\n if (Array.isArray(keyFilter2) || typeof keyFilter2 === \"string\") {\n return createKeyPredicate(keyFilter2, pressedKeys);\n }\n return keyFilter2;\n }\n return isPressed;\n}\nconst ARIA_NODE_DESC_KEY = \"vue-flow__node-desc\";\nconst ARIA_EDGE_DESC_KEY = \"vue-flow__edge-desc\";\nconst ARIA_LIVE_MESSAGE = \"vue-flow__aria-live\";\nconst elementSelectionKeys = [\"Enter\", \" \", \"Escape\"];\nconst arrowKeyDiffs = {\n ArrowUp: { x: 0, y: -1 },\n ArrowDown: { x: 0, y: 1 },\n ArrowLeft: { x: -1, y: 0 },\n ArrowRight: { x: 1, y: 0 }\n};\nfunction nodeToRect(node) {\n return {\n ...node.computedPosition || { x: 0, y: 0 },\n width: node.dimensions.width || 0,\n height: node.dimensions.height || 0\n };\n}\nfunction getOverlappingArea(rectA, rectB) {\n const xOverlap = Math.max(0, Math.min(rectA.x + rectA.width, rectB.x + rectB.width) - Math.max(rectA.x, rectB.x));\n const yOverlap = Math.max(0, Math.min(rectA.y + rectA.height, rectB.y + rectB.height) - Math.max(rectA.y, rectB.y));\n return Math.ceil(xOverlap * yOverlap);\n}\nfunction getDimensions(node) {\n return {\n width: node.offsetWidth,\n height: node.offsetHeight\n };\n}\nfunction clamp(val, min = 0, max = 1) {\n return Math.min(Math.max(val, min), max);\n}\nfunction clampPosition(position, extent) {\n return {\n x: clamp(position.x, extent[0][0], extent[1][0]),\n y: clamp(position.y, extent[0][1], extent[1][1])\n };\n}\nfunction getHostForElement(element) {\n const doc = element.getRootNode();\n if (\"elementFromPoint\" in doc) {\n return doc;\n }\n return window.document;\n}\nfunction isEdge(element) {\n return element && typeof element === \"object\" && \"id\" in element && \"source\" in element && \"target\" in element;\n}\nfunction isGraphEdge(element) {\n return isEdge(element) && \"sourceNode\" in element && \"targetNode\" in element;\n}\nfunction isNode(element) {\n return element && typeof element === \"object\" && \"id\" in element && \"position\" in element && !isEdge(element);\n}\nfunction isGraphNode(element) {\n return isNode(element) && \"computedPosition\" in element;\n}\nfunction isNumeric(n) {\n return !Number.isNaN(n) && Number.isFinite(n);\n}\nfunction isRect(obj) {\n return isNumeric(obj.width) && isNumeric(obj.height) && isNumeric(obj.x) && isNumeric(obj.y);\n}\nfunction parseNode(node, existingNode, parentNode) {\n const initialState = {\n id: node.id.toString(),\n type: node.type ?? \"default\",\n dimensions: markRaw({\n width: 0,\n height: 0\n }),\n computedPosition: markRaw({\n z: 0,\n ...node.position\n }),\n // todo: shouldn't be defined initially, as we want to use handleBounds to check if a node was actually initialized or not\n handleBounds: {\n source: [],\n target: []\n },\n draggable: void 0,\n selectable: void 0,\n connectable: void 0,\n focusable: void 0,\n selected: false,\n dragging: false,\n resizing: false,\n initialized: false,\n isParent: false,\n position: {\n x: 0,\n y: 0\n },\n data: isDef(node.data) ? node.data : {},\n events: markRaw(isDef(node.events) ? node.events : {})\n };\n return Object.assign(existingNode ?? initialState, node, { id: node.id.toString(), parentNode });\n}\nfunction parseEdge(edge, existingEdge, defaultEdgeOptions) {\n var _a, _b;\n const initialState = {\n id: edge.id.toString(),\n type: edge.type ?? (existingEdge == null ? void 0 : existingEdge.type) ?? \"default\",\n source: edge.source.toString(),\n target: edge.target.toString(),\n sourceHandle: (_a = edge.sourceHandle) == null ? void 0 : _a.toString(),\n targetHandle: (_b = edge.targetHandle) == null ? void 0 : _b.toString(),\n updatable: edge.updatable ?? (defaultEdgeOptions == null ? void 0 : defaultEdgeOptions.updatable),\n selectable: edge.selectable ?? (defaultEdgeOptions == null ? void 0 : defaultEdgeOptions.selectable),\n focusable: edge.focusable ?? (defaultEdgeOptions == null ? void 0 : defaultEdgeOptions.focusable),\n data: isDef(edge.data) ? edge.data : {},\n events: markRaw(isDef(edge.events) ? edge.events : {}),\n label: edge.label ?? \"\",\n interactionWidth: edge.interactionWidth ?? (defaultEdgeOptions == null ? void 0 : defaultEdgeOptions.interactionWidth),\n ...defaultEdgeOptions ?? {}\n };\n return Object.assign(existingEdge ?? initialState, edge, { id: edge.id.toString() });\n}\nfunction getConnectedElements(nodeOrId, nodes, edges, dir) {\n const id2 = typeof nodeOrId === \"string\" ? nodeOrId : nodeOrId.id;\n const connectedIds = /* @__PURE__ */ new Set();\n const origin = dir === \"source\" ? \"target\" : \"source\";\n for (const edge of edges) {\n if (edge[origin] === id2) {\n connectedIds.add(edge[dir]);\n }\n }\n return nodes.filter((n) => connectedIds.has(n.id));\n}\nfunction getOutgoers(...args) {\n if (args.length === 3) {\n const [nodeOrId2, nodes, edges] = args;\n return getConnectedElements(nodeOrId2, nodes, edges, \"target\");\n }\n const [nodeOrId, elements] = args;\n const nodeId = typeof nodeOrId === \"string\" ? nodeOrId : nodeOrId.id;\n const outgoers = elements.filter((el) => isEdge(el) && el.source === nodeId);\n return outgoers.map((edge) => elements.find((el) => isNode(el) && el.id === edge.target));\n}\nfunction getIncomers(...args) {\n if (args.length === 3) {\n const [nodeOrId2, nodes, edges] = args;\n return getConnectedElements(nodeOrId2, nodes, edges, \"source\");\n }\n const [nodeOrId, elements] = args;\n const nodeId = typeof nodeOrId === \"string\" ? nodeOrId : nodeOrId.id;\n const incomers = elements.filter((el) => isEdge(el) && el.target === nodeId);\n return incomers.map((edge) => elements.find((el) => isNode(el) && el.id === edge.source));\n}\nfunction getEdgeId({ source, sourceHandle, target, targetHandle }) {\n return `vueflow__edge-${source}${sourceHandle ?? \"\"}-${target}${targetHandle ?? \"\"}`;\n}\nfunction connectionExists(edge, elements) {\n return elements.some(\n (el) => isEdge(el) && el.source === edge.source && el.target === edge.target && (el.sourceHandle === edge.sourceHandle || !el.sourceHandle && !edge.sourceHandle) && (el.targetHandle === edge.targetHandle || !el.targetHandle && !edge.targetHandle)\n );\n}\nfunction addEdge(edgeParams, elements, defaults) {\n if (!edgeParams.source || !edgeParams.target) {\n warn(\"Can't create edge. An edge needs a source and a target.\");\n return elements;\n }\n let edge;\n if (isEdge(edgeParams)) {\n edge = { ...edgeParams };\n } else {\n edge = {\n ...edgeParams,\n id: getEdgeId(edgeParams)\n };\n }\n edge = parseEdge(edge, void 0, defaults);\n if (connectionExists(edge, elements)) {\n return elements;\n }\n elements.push(edge);\n return elements;\n}\nfunction updateEdge(oldEdge, newConnection, elements) {\n if (!newConnection.source || !newConnection.target) {\n warn(\"Can't create new edge. An edge needs a source and a target.\");\n return elements;\n }\n const foundEdge = elements.find((e) => isEdge(e) && e.id === oldEdge.id);\n if (!foundEdge) {\n warn(`The old edge with id=${oldEdge.id} does not exist.`);\n return elements;\n }\n const edge = {\n ...oldEdge,\n id: getEdgeId(newConnection),\n source: newConnection.source,\n target: newConnection.target,\n sourceHandle: newConnection.sourceHandle,\n targetHandle: newConnection.targetHandle\n };\n elements.splice(elements.indexOf(foundEdge), 1, edge);\n return elements.filter((e) => e.id !== oldEdge.id);\n}\nfunction rendererPointToPoint({ x, y }, { x: tx, y: ty, zoom: tScale }) {\n return {\n x: x * tScale + tx,\n y: y * tScale + ty\n };\n}\nfunction pointToRendererPoint({ x, y }, { x: tx, y: ty, zoom: tScale }, snapToGrid = false, snapGrid = [1, 1]) {\n const position = {\n x: (x - tx) / tScale,\n y: (y - ty) / tScale\n };\n return snapToGrid ? snapPosition(position, snapGrid) : position;\n}\nfunction getBoundsOfBoxes(box1, box2) {\n return {\n x: Math.min(box1.x, box2.x),\n y: Math.min(box1.y, box2.y),\n x2: Math.max(box1.x2, box2.x2),\n y2: Math.max(box1.y2, box2.y2)\n };\n}\nfunction rectToBox({ x, y, width, height }) {\n return {\n x,\n y,\n x2: x + width,\n y2: y + height\n };\n}\nfunction boxToRect({ x, y, x2, y2 }) {\n return {\n x,\n y,\n width: x2 - x,\n height: y2 - y\n };\n}\nfunction getBoundsofRects(rect1, rect2) {\n return boxToRect(getBoundsOfBoxes(rectToBox(rect1), rectToBox(rect2)));\n}\nfunction getRectOfNodes(nodes) {\n let box = {\n x: Number.POSITIVE_INFINITY,\n y: Number.POSITIVE_INFINITY,\n x2: Number.NEGATIVE_INFINITY,\n y2: Number.NEGATIVE_INFINITY\n };\n for (let i = 0; i < nodes.length; i++) {\n const node = nodes[i];\n box = getBoundsOfBoxes(\n box,\n rectToBox({\n ...node.computedPosition,\n ...node.dimensions\n })\n );\n }\n return boxToRect(box);\n}\nfunction getNodesInside(nodes, rect, viewport = { x: 0, y: 0, zoom: 1 }, partially = false, excludeNonSelectableNodes = false) {\n const paneRect = {\n ...pointToRendererPoint(rect, viewport),\n width: rect.width / viewport.zoom,\n height: rect.height / viewport.zoom\n };\n const visibleNodes = [];\n for (const node of nodes) {\n const { dimensions, selectable = true, hidden = false } = node;\n const width = dimensions.width ?? node.width ?? null;\n const height = dimensions.height ?? node.height ?? null;\n if (excludeNonSelectableNodes && !selectable || hidden) {\n continue;\n }\n const overlappingArea = getOverlappingArea(paneRect, nodeToRect(node));\n const notInitialized = width === null || height === null;\n const partiallyVisible = partially && overlappingArea > 0;\n const area = (width ?? 0) * (height ?? 0);\n const isVisible = notInitialized || partiallyVisible || overlappingArea >= area;\n if (isVisible || node.dragging) {\n visibleNodes.push(node);\n }\n }\n return visibleNodes;\n}\nfunction getConnectedEdges(nodesOrId, edges) {\n const nodeIds = /* @__PURE__ */ new Set();\n if (typeof nodesOrId === \"string\") {\n nodeIds.add(nodesOrId);\n } else if (nodesOrId.length >= 1) {\n for (const n of nodesOrId) {\n nodeIds.add(n.id);\n }\n }\n return edges.filter((edge) => nodeIds.has(edge.source) || nodeIds.has(edge.target));\n}\nfunction getTransformForBounds(bounds, width, height, minZoom, maxZoom, padding = 0.1, offset = { x: 0, y: 0 }) {\n const xZoom = width / (bounds.width * (1 + padding));\n const yZoom = height / (bounds.height * (1 + padding));\n const zoom2 = Math.min(xZoom, yZoom);\n const clampedZoom = clamp(zoom2, minZoom, maxZoom);\n const boundsCenterX = bounds.x + bounds.width / 2;\n const boundsCenterY = bounds.y + bounds.height / 2;\n const x = width / 2 - boundsCenterX * clampedZoom + (offset.x ?? 0);\n const y = height / 2 - boundsCenterY * clampedZoom + (offset.y ?? 0);\n return { x, y, zoom: clampedZoom };\n}\nfunction getXYZPos(parentPos, computedPosition) {\n return {\n x: computedPosition.x + parentPos.x,\n y: computedPosition.y + parentPos.y,\n z: (parentPos.z > computedPosition.z ? parentPos.z : computedPosition.z) + 1\n };\n}\nfunction isParentSelected(node, findNode) {\n if (!node.parentNode) {\n return false;\n }\n const parent = findNode(node.parentNode);\n if (!parent) {\n return false;\n }\n if (parent.selected) {\n return true;\n }\n return isParentSelected(parent, findNode);\n}\nfunction getMarkerId(marker, vueFlowId) {\n if (typeof marker === \"undefined\") {\n return \"\";\n }\n if (typeof marker === \"string\") {\n return marker;\n }\n const idPrefix = vueFlowId ? `${vueFlowId}__` : \"\";\n return `${idPrefix}${Object.keys(marker).sort().map((key) => `${key}=${marker[key]}`).join(\"&\")}`;\n}\nfunction calcAutoPanVelocity(value, min, max) {\n if (value < min) {\n return clamp(Math.abs(value - min), 1, min) / min;\n }\n if (value > max) {\n return -clamp(Math.abs(value - max), 1, min) / min;\n }\n return 0;\n}\nfunction calcAutoPan(pos, bounds, speed = 15, distance2 = 40) {\n const xMovement = calcAutoPanVelocity(pos.x, distance2, bounds.width - distance2) * speed;\n const yMovement = calcAutoPanVelocity(pos.y, distance2, bounds.height - distance2) * speed;\n return [xMovement, yMovement];\n}\nfunction handleParentExpand(updateItem, parent) {\n if (parent) {\n const extendWidth = updateItem.position.x + updateItem.dimensions.width - parent.dimensions.width;\n const extendHeight = updateItem.position.y + updateItem.dimensions.height - parent.dimensions.height;\n if (extendWidth > 0 || extendHeight > 0 || updateItem.position.x < 0 || updateItem.position.y < 0) {\n let parentStyles = {};\n if (typeof parent.style === \"function\") {\n parentStyles = { ...parent.style(parent) };\n } else if (parent.style) {\n parentStyles = { ...parent.style };\n }\n parentStyles.width = parentStyles.width ?? `${parent.dimensions.width}px`;\n parentStyles.height = parentStyles.height ?? `${parent.dimensions.height}px`;\n if (extendWidth > 0) {\n if (typeof parentStyles.width === \"string\") {\n const currWidth = Number(parentStyles.width.replace(\"px\", \"\"));\n parentStyles.width = `${currWidth + extendWidth}px`;\n } else {\n parentStyles.width += extendWidth;\n }\n }\n if (extendHeight > 0) {\n if (typeof parentStyles.height === \"string\") {\n const currWidth = Number(parentStyles.height.replace(\"px\", \"\"));\n parentStyles.height = `${currWidth + extendHeight}px`;\n } else {\n parentStyles.height += extendHeight;\n }\n }\n if (updateItem.position.x < 0) {\n const xDiff = Math.abs(updateItem.position.x);\n parent.position.x = parent.position.x - xDiff;\n if (typeof parentStyles.width === \"string\") {\n const currWidth = Number(parentStyles.width.replace(\"px\", \"\"));\n parentStyles.width = `${currWidth + xDiff}px`;\n } else {\n parentStyles.width += xDiff;\n }\n updateItem.position.x = 0;\n }\n if (updateItem.position.y < 0) {\n const yDiff = Math.abs(updateItem.position.y);\n parent.position.y = parent.position.y - yDiff;\n if (typeof parentStyles.height === \"string\") {\n const currWidth = Number(parentStyles.height.replace(\"px\", \"\"));\n parentStyles.height = `${currWidth + yDiff}px`;\n } else {\n parentStyles.height += yDiff;\n }\n updateItem.position.y = 0;\n }\n parent.dimensions.width = Number(parentStyles.width.toString().replace(\"px\", \"\"));\n parent.dimensions.height = Number(parentStyles.height.toString().replace(\"px\", \"\"));\n if (typeof parent.style === \"function\") {\n parent.style = (p) => {\n const styleFunc = parent.style;\n return {\n ...styleFunc(p),\n ...parentStyles\n };\n };\n } else {\n parent.style = {\n ...parent.style,\n ...parentStyles\n };\n }\n }\n }\n}\nfunction applyChanges(changes, elements) {\n var _a, _b;\n const addRemoveChanges = changes.filter((c) => c.type === \"add\" || c.type === \"remove\");\n for (const change of addRemoveChanges) {\n if (change.type === \"add\") {\n const index = elements.findIndex((el) => el.id === change.item.id);\n if (index === -1) {\n elements.push(change.item);\n }\n } else if (change.type === \"remove\") {\n const index = elements.findIndex((el) => el.id === change.id);\n if (index !== -1) {\n elements.splice(index, 1);\n }\n }\n }\n const elementIds = elements.map((el) => el.id);\n for (const element of elements) {\n for (const currentChange of changes) {\n if (currentChange.id !== element.id) {\n continue;\n }\n switch (currentChange.type) {\n case \"select\":\n element.selected = currentChange.selected;\n break;\n case \"position\":\n if (isGraphNode(element)) {\n if (typeof currentChange.position !== \"undefined\") {\n element.position = currentChange.position;\n }\n if (typeof currentChange.dragging !== \"undefined\") {\n element.dragging = currentChange.dragging;\n }\n if (element.expandParent && element.parentNode) {\n const parent = elements[elementIds.indexOf(element.parentNode)];\n if (parent && isGraphNode(parent)) {\n handleParentExpand(element, parent);\n }\n }\n }\n break;\n case \"dimensions\":\n if (isGraphNode(element)) {\n if (typeof currentChange.dimensions !== \"undefined\") {\n element.dimensions = currentChange.dimensions;\n }\n if (typeof currentChange.updateStyle !== \"undefined\" && currentChange.updateStyle) {\n element.style = {\n ...element.style || {},\n width: `${(_a = currentChange.dimensions) == null ? void 0 : _a.width}px`,\n height: `${(_b = currentChange.dimensions) == null ? void 0 : _b.height}px`\n };\n }\n if (typeof currentChange.resizing !== \"undefined\") {\n element.resizing = currentChange.resizing;\n }\n if (element.expandParent && element.parentNode) {\n const parent = elements[elementIds.indexOf(element.parentNode)];\n if (parent && isGraphNode(parent)) {\n const parentInit = !!parent.dimensions.width && !!parent.dimensions.height;\n if (!parentInit) {\n nextTick(() => {\n handleParentExpand(element, parent);\n });\n } else {\n handleParentExpand(element, parent);\n }\n }\n }\n }\n break;\n }\n }\n }\n return elements;\n}\nfunction applyEdgeChanges(changes, edges) {\n return applyChanges(changes, edges);\n}\nfunction applyNodeChanges(changes, nodes) {\n return applyChanges(changes, nodes);\n}\nfunction createSelectionChange(id2, selected) {\n return {\n id: id2,\n type: \"select\",\n selected\n };\n}\nfunction createAdditionChange(item) {\n return {\n item,\n type: \"add\"\n };\n}\nfunction createNodeRemoveChange(id2) {\n return {\n id: id2,\n type: \"remove\"\n };\n}\nfunction createEdgeRemoveChange(id2, source, target, sourceHandle, targetHandle) {\n return {\n id: id2,\n source,\n target,\n sourceHandle: sourceHandle || null,\n targetHandle: targetHandle || null,\n type: \"remove\"\n };\n}\nfunction getSelectionChanges(items, selectedIds = /* @__PURE__ */ new Set(), mutateItem = false) {\n const changes = [];\n for (const [id2, item] of items) {\n const willBeSelected = selectedIds.has(id2);\n if (!(item.selected === void 0 && !willBeSelected) && item.selected !== willBeSelected) {\n if (mutateItem) {\n item.selected = willBeSelected;\n }\n changes.push(createSelectionChange(item.id, willBeSelected));\n }\n }\n return changes;\n}\nfunction createExtendedEventHook(defaultHandler) {\n const fns = /* @__PURE__ */ new Set();\n let hasDefaultHandler = false;\n const hasListeners = () => fns.size > 0;\n if (defaultHandler) {\n hasDefaultHandler = true;\n fns.add(defaultHandler);\n }\n const off = (fn) => {\n fns.delete(fn);\n };\n const on = (fn) => {\n if (defaultHandler && hasDefaultHandler) {\n fns.delete(defaultHandler);\n }\n fns.add(fn);\n const offFn = () => {\n off(fn);\n if (defaultHandler && hasDefaultHandler) {\n fns.add(defaultHandler);\n }\n };\n tryOnScopeDispose(offFn);\n return {\n off: offFn\n };\n };\n const trigger = (param) => {\n return Promise.all(Array.from(fns).map((fn) => fn(param)));\n };\n return {\n on,\n off,\n trigger,\n hasListeners,\n fns\n };\n}\nfunction hasSelector(target, selector2, node) {\n let current = target;\n do {\n if (current && current.matches(selector2)) {\n return true;\n } else if (current === node) {\n return false;\n }\n current = current.parentElement;\n } while (current);\n return false;\n}\nfunction getDragItems(nodes, nodesDraggable, mousePos, findNode, nodeId) {\n var _a, _b;\n const dragItems = [];\n for (const node of nodes) {\n if ((node.selected || node.id === nodeId) && (!node.parentNode || !isParentSelected(node, findNode)) && (node.draggable || nodesDraggable && typeof node.draggable === \"undefined\")) {\n dragItems.push(\n markRaw({\n id: node.id,\n position: node.position || { x: 0, y: 0 },\n distance: {\n x: mousePos.x - ((_a = node.computedPosition) == null ? void 0 : _a.x) || 0,\n y: mousePos.y - ((_b = node.computedPosition) == null ? void 0 : _b.y) || 0\n },\n from: node.computedPosition,\n extent: node.extent,\n parentNode: node.parentNode,\n dimensions: node.dimensions,\n expandParent: node.expandParent\n })\n );\n }\n }\n return dragItems;\n}\nfunction getEventHandlerParams({\n id: id2,\n dragItems,\n findNode\n}) {\n const extendedDragItems = [];\n for (const dragItem of dragItems) {\n const node = findNode(dragItem.id);\n if (node) {\n extendedDragItems.push(node);\n }\n }\n return [id2 ? extendedDragItems.find((n) => n.id === id2) : extendedDragItems[0], extendedDragItems];\n}\nfunction getExtentPadding(padding) {\n if (Array.isArray(padding)) {\n switch (padding.length) {\n case 1:\n return [padding[0], padding[0], padding[0], padding[0]];\n case 2:\n return [padding[0], padding[1], padding[0], padding[1]];\n case 3:\n return [padding[0], padding[1], padding[2], padding[1]];\n case 4:\n return padding;\n default:\n return [0, 0, 0, 0];\n }\n }\n return [padding, padding, padding, padding];\n}\nfunction getParentExtent(currentExtent, node, parent) {\n const [top, right, bottom, left] = typeof currentExtent !== \"string\" ? getExtentPadding(currentExtent.padding) : [0, 0, 0, 0];\n if (parent && typeof parent.computedPosition.x !== \"undefined\" && typeof parent.computedPosition.y !== \"undefined\" && typeof parent.dimensions.width !== \"undefined\" && typeof parent.dimensions.height !== \"undefined\") {\n return [\n [parent.computedPosition.x + left, parent.computedPosition.y + top],\n [\n parent.computedPosition.x + parent.dimensions.width - right,\n parent.computedPosition.y + parent.dimensions.height - bottom\n ]\n ];\n }\n return false;\n}\nfunction getExtent(item, triggerError, extent, parent) {\n let currentExtent = item.extent || extent;\n if ((currentExtent === \"parent\" || !Array.isArray(currentExtent) && (currentExtent == null ? void 0 : currentExtent.range) === \"parent\") && !item.expandParent) {\n if (item.parentNode && parent && item.dimensions.width && item.dimensions.height) {\n const parentExtent = getParentExtent(currentExtent, item, parent);\n if (parentExtent) {\n currentExtent = parentExtent;\n }\n } else {\n triggerError(new VueFlowError(ErrorCode.NODE_EXTENT_INVALID, item.id));\n currentExtent = extent;\n }\n } else if (Array.isArray(currentExtent)) {\n const parentX = (parent == null ? void 0 : parent.computedPosition.x) || 0;\n const parentY = (parent == null ? void 0 : parent.computedPosition.y) || 0;\n currentExtent = [\n [currentExtent[0][0] + parentX, currentExtent[0][1] + parentY],\n [currentExtent[1][0] + parentX, currentExtent[1][1] + parentY]\n ];\n } else if (currentExtent !== \"parent\" && (currentExtent == null ? void 0 : currentExtent.range) && Array.isArray(currentExtent.range)) {\n const [top, right, bottom, left] = getExtentPadding(currentExtent.padding);\n const parentX = (parent == null ? void 0 : parent.computedPosition.x) || 0;\n const parentY = (parent == null ? void 0 : parent.computedPosition.y) || 0;\n currentExtent = [\n [currentExtent.range[0][0] + parentX + left, currentExtent.range[0][1] + parentY + top],\n [currentExtent.range[1][0] + parentX - right, currentExtent.range[1][1] + parentY - bottom]\n ];\n }\n return currentExtent === \"parent\" ? [\n [Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY],\n [Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY]\n ] : currentExtent;\n}\nfunction clampNodeExtent({ width, height }, extent) {\n return [extent[0], [extent[1][0] - (width || 0), extent[1][1] - (height || 0)]];\n}\nfunction calcNextPosition(node, nextPosition, triggerError, nodeExtent, parentNode) {\n const extent = clampNodeExtent(node.dimensions, getExtent(node, triggerError, nodeExtent, parentNode));\n const clampedPos = clampPosition(nextPosition, extent);\n return {\n position: {\n x: clampedPos.x - ((parentNode == null ? void 0 : parentNode.computedPosition.x) || 0),\n y: clampedPos.y - ((parentNode == null ? void 0 : parentNode.computedPosition.y) || 0)\n },\n computedPosition: clampedPos\n };\n}\nfunction getHandlePosition(node, handle, fallbackPosition = Position.Left, center = false) {\n const x = ((handle == null ? void 0 : handle.x) ?? 0) + node.computedPosition.x;\n const y = ((handle == null ? void 0 : handle.y) ?? 0) + node.computedPosition.y;\n const { width, height } = handle ?? getNodeDimensions(node);\n if (center) {\n return { x: x + width / 2, y: y + height / 2 };\n }\n const position = (handle == null ? void 0 : handle.position) ?? fallbackPosition;\n switch (position) {\n case Position.Top:\n return { x: x + width / 2, y };\n case Position.Right:\n return { x: x + width, y: y + height / 2 };\n case Position.Bottom:\n return { x: x + width / 2, y: y + height };\n case Position.Left:\n return { x, y: y + height / 2 };\n }\n}\nfunction getEdgeHandle(bounds, handleId) {\n if (!bounds) {\n return null;\n }\n return (!handleId ? bounds[0] : bounds.find((d) => d.id === handleId)) || null;\n}\nfunction isEdgeVisible({\n sourcePos,\n targetPos,\n sourceWidth,\n sourceHeight,\n targetWidth,\n targetHeight,\n width,\n height,\n viewport\n}) {\n const edgeBox = {\n x: Math.min(sourcePos.x, targetPos.x),\n y: Math.min(sourcePos.y, targetPos.y),\n x2: Math.max(sourcePos.x + sourceWidth, targetPos.x + targetWidth),\n y2: Math.max(sourcePos.y + sourceHeight, targetPos.y + targetHeight)\n };\n if (edgeBox.x === edgeBox.x2) {\n edgeBox.x2 += 1;\n }\n if (edgeBox.y === edgeBox.y2) {\n edgeBox.y2 += 1;\n }\n const viewBox = rectToBox({\n x: (0 - viewport.x) / viewport.zoom,\n y: (0 - viewport.y) / viewport.zoom,\n width: width / viewport.zoom,\n height: height / viewport.zoom\n });\n const xOverlap = Math.max(0, Math.min(viewBox.x2, edgeBox.x2) - Math.max(viewBox.x, edgeBox.x));\n const yOverlap = Math.max(0, Math.min(viewBox.y2, edgeBox.y2) - Math.max(viewBox.y, edgeBox.y));\n const overlappingArea = Math.ceil(xOverlap * yOverlap);\n return overlappingArea > 0;\n}\nfunction getEdgeZIndex(edge, findNode, elevateEdgesOnSelect = false) {\n const hasZIndex = typeof edge.zIndex === \"number\";\n let z = hasZIndex ? edge.zIndex : 0;\n const source = findNode(edge.source);\n const target = findNode(edge.target);\n if (!source || !target) {\n return 0;\n }\n if (elevateEdgesOnSelect) {\n z = hasZIndex ? edge.zIndex : Math.max(source.computedPosition.z || 0, target.computedPosition.z || 0);\n }\n return z;\n}\nvar ErrorCode = /* @__PURE__ */ ((ErrorCode2) => {\n ErrorCode2[\"MISSING_STYLES\"] = \"MISSING_STYLES\";\n ErrorCode2[\"MISSING_VIEWPORT_DIMENSIONS\"] = \"MISSING_VIEWPORT_DIMENSIONS\";\n ErrorCode2[\"NODE_INVALID\"] = \"NODE_INVALID\";\n ErrorCode2[\"NODE_NOT_FOUND\"] = \"NODE_NOT_FOUND\";\n ErrorCode2[\"NODE_MISSING_PARENT\"] = \"NODE_MISSING_PARENT\";\n ErrorCode2[\"NODE_TYPE_MISSING\"] = \"NODE_TYPE_MISSING\";\n ErrorCode2[\"NODE_EXTENT_INVALID\"] = \"NODE_EXTENT_INVALID\";\n ErrorCode2[\"EDGE_INVALID\"] = \"EDGE_INVALID\";\n ErrorCode2[\"EDGE_NOT_FOUND\"] = \"EDGE_NOT_FOUND\";\n ErrorCode2[\"EDGE_SOURCE_MISSING\"] = \"EDGE_SOURCE_MISSING\";\n ErrorCode2[\"EDGE_TARGET_MISSING\"] = \"EDGE_TARGET_MISSING\";\n ErrorCode2[\"EDGE_TYPE_MISSING\"] = \"EDGE_TYPE_MISSING\";\n ErrorCode2[\"EDGE_SOURCE_TARGET_SAME\"] = \"EDGE_SOURCE_TARGET_SAME\";\n ErrorCode2[\"EDGE_SOURCE_TARGET_MISSING\"] = \"EDGE_SOURCE_TARGET_MISSING\";\n ErrorCode2[\"EDGE_ORPHANED\"] = \"EDGE_ORPHANED\";\n ErrorCode2[\"USEVUEFLOW_OPTIONS\"] = \"USEVUEFLOW_OPTIONS\";\n return ErrorCode2;\n})(ErrorCode || {});\nconst messages = {\n [\n \"MISSING_STYLES\"\n /* MISSING_STYLES */\n ]: () => `It seems that you haven't loaded the necessary styles. Please import '@vue-flow/core/dist/style.css' to ensure that the graph is rendered correctly`,\n [\n \"MISSING_VIEWPORT_DIMENSIONS\"\n /* MISSING_VIEWPORT_DIMENSIONS */\n ]: () => \"The Vue Flow parent container needs a width and a height to render the graph\",\n [\n \"NODE_INVALID\"\n /* NODE_INVALID */\n ]: (id2) => `Node is invalid\nNode: ${id2}`,\n [\n \"NODE_NOT_FOUND\"\n /* NODE_NOT_FOUND */\n ]: (id2) => `Node not found\nNode: ${id2}`,\n [\n \"NODE_MISSING_PARENT\"\n /* NODE_MISSING_PARENT */\n ]: (id2, parentId) => `Node is missing a parent\nNode: ${id2}\nParent: ${parentId}`,\n [\n \"NODE_TYPE_MISSING\"\n /* NODE_TYPE_MISSING */\n ]: (type) => `Node type is missing\nType: ${type}`,\n [\n \"NODE_EXTENT_INVALID\"\n /* NODE_EXTENT_INVALID */\n ]: (id2) => `Only child nodes can use a parent extent\nNode: ${id2}`,\n [\n \"EDGE_INVALID\"\n /* EDGE_INVALID */\n ]: (id2) => `An edge needs a source and a target\nEdge: ${id2}`,\n [\n \"EDGE_SOURCE_MISSING\"\n /* EDGE_SOURCE_MISSING */\n ]: (id2, source) => `Edge source is missing\nEdge: ${id2} \nSource: ${source}`,\n [\n \"EDGE_TARGET_MISSING\"\n /* EDGE_TARGET_MISSING */\n ]: (id2, target) => `Edge target is missing\nEdge: ${id2} \nTarget: ${target}`,\n [\n \"EDGE_TYPE_MISSING\"\n /* EDGE_TYPE_MISSING */\n ]: (type) => `Edge type is missing\nType: ${type}`,\n [\n \"EDGE_SOURCE_TARGET_SAME\"\n /* EDGE_SOURCE_TARGET_SAME */\n ]: (id2, source, target) => `Edge source and target are the same\nEdge: ${id2} \nSource: ${source} \nTarget: ${target}`,\n [\n \"EDGE_SOURCE_TARGET_MISSING\"\n /* EDGE_SOURCE_TARGET_MISSING */\n ]: (id2, source, target) => `Edge source or target is missing\nEdge: ${id2} \nSource: ${source} \nTarget: ${target}`,\n [\n \"EDGE_ORPHANED\"\n /* EDGE_ORPHANED */\n ]: (id2) => `Edge was orphaned (suddenly missing source or target) and has been removed\nEdge: ${id2}`,\n [\n \"EDGE_NOT_FOUND\"\n /* EDGE_NOT_FOUND */\n ]: (id2) => `Edge not found\nEdge: ${id2}`,\n // deprecation errors\n [\n \"USEVUEFLOW_OPTIONS\"\n /* USEVUEFLOW_OPTIONS */\n ]: () => `The options parameter is deprecated and will be removed in the next major version. Please use the id parameter instead`\n};\nclass VueFlowError extends Error {\n constructor(code, ...args) {\n var _a;\n super((_a = messages[code]) == null ? void 0 : _a.call(messages, ...args));\n this.name = \"VueFlowError\";\n this.code = code;\n this.args = args;\n }\n}\nfunction isErrorOfType(error, code) {\n return error.code === code;\n}\nfunction isMouseEvent(event) {\n return \"clientX\" in event;\n}\nfunction isUseDragEvent(event) {\n return \"sourceEvent\" in event;\n}\nfunction getEventPosition(event, bounds) {\n const isMouse = isMouseEvent(event);\n let evtX;\n let evtY;\n if (isMouse) {\n evtX = event.clientX;\n evtY = event.clientY;\n } else if (\"touches\" in event && event.touches.length > 0) {\n evtX = event.touches[0].clientX;\n evtY = event.touches[0].clientY;\n } else if (\"changedTouches\" in event && event.changedTouches.length > 0) {\n evtX = event.changedTouches[0].clientX;\n evtY = event.changedTouches[0].clientY;\n } else {\n evtX = 0;\n evtY = 0;\n }\n return {\n x: evtX - ((bounds == null ? void 0 : bounds.left) ?? 0),\n y: evtY - ((bounds == null ? void 0 : bounds.top) ?? 0)\n };\n}\nconst isMacOs = () => {\n var _a;\n return typeof navigator !== \"undefined\" && ((_a = navigator == null ? void 0 : navigator.userAgent) == null ? void 0 : _a.indexOf(\"Mac\")) >= 0;\n};\nfunction getNodeDimensions(node) {\n var _a, _b;\n return {\n width: ((_a = node.dimensions) == null ? void 0 : _a.width) ?? node.width ?? 0,\n height: ((_b = node.dimensions) == null ? void 0 : _b.height) ?? node.height ?? 0\n };\n}\nfunction snapPosition(position, snapGrid = [1, 1]) {\n return {\n x: snapGrid[0] * Math.round(position.x / snapGrid[0]),\n y: snapGrid[1] * Math.round(position.y / snapGrid[1])\n };\n}\nconst alwaysValid$1 = () => true;\nfunction resetRecentHandle(handleDomNode) {\n handleDomNode == null ? void 0 : handleDomNode.classList.remove(\"valid\", \"connecting\", \"vue-flow__handle-valid\", \"vue-flow__handle-connecting\");\n}\nfunction getNodesWithinDistance(position, nodeLookup, distance2) {\n const nodes = [];\n const rect = {\n x: position.x - distance2,\n y: position.y - distance2,\n width: distance2 * 2,\n height: distance2 * 2\n };\n for (const node of nodeLookup.values()) {\n if (getOverlappingArea(rect, nodeToRect(node)) > 0) {\n nodes.push(node);\n }\n }\n return nodes;\n}\nconst ADDITIONAL_DISTANCE = 250;\nfunction getClosestHandle(position, connectionRadius, nodeLookup, fromHandle) {\n var _a, _b;\n let closestHandles = [];\n let minDistance = Number.POSITIVE_INFINITY;\n const closeNodes = getNodesWithinDistance(position, nodeLookup, connectionRadius + ADDITIONAL_DISTANCE);\n for (const node of closeNodes) {\n const allHandles = [...((_a = node.handleBounds) == null ? void 0 : _a.source) ?? [], ...((_b = node.handleBounds) == null ? void 0 : _b.target) ?? []];\n for (const handle of allHandles) {\n if (fromHandle.nodeId === handle.nodeId && fromHandle.type === handle.type && fromHandle.id === handle.id) {\n continue;\n }\n const { x, y } = getHandlePosition(node, handle, handle.position, true);\n const distance2 = Math.sqrt((x - position.x) ** 2 + (y - position.y) ** 2);\n if (distance2 > connectionRadius) {\n continue;\n }\n if (distance2 < minDistance) {\n closestHandles = [{ ...handle, x, y }];\n minDistance = distance2;\n } else if (distance2 === minDistance) {\n closestHandles.push({ ...handle, x, y });\n }\n }\n }\n if (!closestHandles.length) {\n return null;\n }\n if (closestHandles.length > 1) {\n const oppositeHandleType = fromHandle.type === \"source\" ? \"target\" : \"source\";\n return closestHandles.find((handle) => handle.type === oppositeHandleType) ?? closestHandles[0];\n }\n return closestHandles[0];\n}\nfunction isValidHandle(event, {\n handle,\n connectionMode,\n fromNodeId,\n fromHandleId,\n fromType,\n doc,\n lib,\n flowId,\n isValidConnection = alwaysValid$1\n}, edges, nodes, findNode) {\n const isTarget = fromType === \"target\";\n const handleDomNode = handle ? doc.querySelector(`.${lib}-flow__handle[data-id=\"${flowId}-${handle == null ? void 0 : handle.nodeId}-${handle == null ? void 0 : handle.id}-${handle == null ? void 0 : handle.type}\"]`) : null;\n const { x, y } = getEventPosition(event);\n const handleBelow = doc.elementFromPoint(x, y);\n const handleToCheck = (handleBelow == null ? void 0 : handleBelow.classList.contains(`${lib}-flow__handle`)) ? handleBelow : handleDomNode;\n const result = {\n handleDomNode: handleToCheck,\n isValid: false,\n connection: null,\n toHandle: null\n };\n if (handleToCheck) {\n const handleType = getHandleType(void 0, handleToCheck);\n const handleNodeId = handleToCheck.getAttribute(\"data-nodeid\");\n const handleId = handleToCheck.getAttribute(\"data-handleid\");\n const connectable = handleToCheck.classList.contains(\"connectable\");\n const connectableEnd = handleToCheck.classList.contains(\"connectableend\");\n if (!handleNodeId || !handleType) {\n return result;\n }\n const connection = {\n source: isTarget ? handleNodeId : fromNodeId,\n sourceHandle: isTarget ? handleId : fromHandleId,\n target: isTarget ? fromNodeId : handleNodeId,\n targetHandle: isTarget ? fromHandleId : handleId\n };\n result.connection = connection;\n const isConnectable = connectable && connectableEnd;\n const isValid = isConnectable && (connectionMode === ConnectionMode.Strict ? isTarget && handleType === \"source\" || !isTarget && handleType === \"target\" : handleNodeId !== fromNodeId || handleId !== fromHandleId);\n result.isValid = isValid && isValidConnection(connection, {\n nodes,\n edges,\n sourceNode: findNode(fromNodeId),\n targetNode: findNode(handleNodeId)\n });\n result.toHandle = handle;\n }\n return result;\n}\nfunction getHandleType(edgeUpdaterType, handleDomNode) {\n if (edgeUpdaterType) {\n return edgeUpdaterType;\n } else if (handleDomNode == null ? void 0 : handleDomNode.classList.contains(\"target\")) {\n return \"target\";\n } else if (handleDomNode == null ? void 0 : handleDomNode.classList.contains(\"source\")) {\n return \"source\";\n }\n return null;\n}\nfunction getConnectionStatus(isInsideConnectionRadius, isHandleValid) {\n let connectionStatus = null;\n if (isHandleValid) {\n connectionStatus = \"valid\";\n } else if (isInsideConnectionRadius && !isHandleValid) {\n connectionStatus = \"invalid\";\n }\n return connectionStatus;\n}\nfunction isConnectionValid(isInsideConnectionRadius, isHandleValid) {\n let isValid = null;\n if (isHandleValid) {\n isValid = true;\n } else if (isInsideConnectionRadius && !isHandleValid) {\n isValid = false;\n }\n return isValid;\n}\nfunction getHandle(nodeId, handleType, handleId, nodeLookup, connectionMode, withAbsolutePosition = false) {\n var _a, _b, _c;\n const node = nodeLookup.get(nodeId);\n if (!node) {\n return null;\n }\n const handles = connectionMode === ConnectionMode.Strict ? (_a = node.handleBounds) == null ? void 0 : _a[handleType] : [...((_b = node.handleBounds) == null ? void 0 : _b.source) ?? [], ...((_c = node.handleBounds) == null ? void 0 : _c.target) ?? []];\n const handle = (handleId ? handles == null ? void 0 : handles.find((h2) => h2.id === handleId) : handles == null ? void 0 : handles[0]) ?? null;\n return handle && withAbsolutePosition ? { ...handle, ...getHandlePosition(node, handle, handle.position, true) } : handle;\n}\nconst oppositePosition = {\n [Position.Left]: Position.Right,\n [Position.Right]: Position.Left,\n [Position.Top]: Position.Bottom,\n [Position.Bottom]: Position.Top\n};\nconst productionEnvs = [\"production\", \"prod\"];\nfunction warn(message, ...args) {\n if (isDev()) {\n console.warn(`[Vue Flow]: ${message}`, ...args);\n }\n}\nfunction isDev() {\n return !productionEnvs.includes(process.env.NODE_ENV || \"\");\n}\nfunction getHandleBounds(type, nodeElement, nodeBounds, zoom2, nodeId) {\n const handles = nodeElement.querySelectorAll(`.vue-flow__handle.${type}`);\n if (!(handles == null ? void 0 : handles.length)) {\n return null;\n }\n return Array.from(handles).map((handle) => {\n const handleBounds = handle.getBoundingClientRect();\n return {\n id: handle.getAttribute(\"data-handleid\"),\n type,\n nodeId,\n position: handle.getAttribute(\"data-handlepos\"),\n x: (handleBounds.left - nodeBounds.left) / zoom2,\n y: (handleBounds.top - nodeBounds.top) / zoom2,\n ...getDimensions(handle)\n };\n });\n}\nfunction handleNodeClick(node, multiSelectionActive, addSelectedNodes, removeSelectedNodes, nodesSelectionActive, unselect = false, nodeEl) {\n nodesSelectionActive.value = false;\n if (!node.selected) {\n addSelectedNodes([node]);\n } else if (unselect || node.selected && multiSelectionActive) {\n removeSelectedNodes([node]);\n nextTick(() => {\n nodeEl.blur();\n });\n }\n}\nfunction isDef(val) {\n const unrefVal = unref(val);\n return typeof unrefVal !== \"undefined\";\n}\nfunction addEdgeToStore(edgeParams, edges, triggerError, defaultEdgeOptions) {\n if (!edgeParams || !edgeParams.source || !edgeParams.target) {\n triggerError(new VueFlowError(ErrorCode.EDGE_INVALID, (edgeParams == null ? void 0 : edgeParams.id) ?? `[ID UNKNOWN]`));\n return false;\n }\n let edge;\n if (isEdge(edgeParams)) {\n edge = edgeParams;\n } else {\n edge = {\n ...edgeParams,\n id: getEdgeId(edgeParams)\n };\n }\n edge = parseEdge(edge, void 0, defaultEdgeOptions);\n if (connectionExists(edge, edges)) {\n return false;\n }\n return edge;\n}\nfunction updateEdgeAction(edge, newConnection, prevEdge, shouldReplaceId, triggerError) {\n if (!newConnection.source || !newConnection.target) {\n triggerError(new VueFlowError(ErrorCode.EDGE_INVALID, edge.id));\n return false;\n }\n if (!prevEdge) {\n triggerError(new VueFlowError(ErrorCode.EDGE_NOT_FOUND, edge.id));\n return false;\n }\n const { id: id2, ...rest } = edge;\n return {\n ...rest,\n id: shouldReplaceId ? getEdgeId(newConnection) : id2,\n source: newConnection.source,\n target: newConnection.target,\n sourceHandle: newConnection.sourceHandle,\n targetHandle: newConnection.targetHandle\n };\n}\nfunction createGraphNodes(nodes, findNode, triggerError) {\n const parentNodes = {};\n const nextNodes = [];\n for (let i = 0; i < nodes.length; ++i) {\n const node = nodes[i];\n if (!isNode(node)) {\n triggerError(\n new VueFlowError(ErrorCode.NODE_INVALID, node == null ? void 0 : node.id) || `[ID UNKNOWN|INDEX ${i}]`\n );\n continue;\n }\n const parsed = parseNode(node, findNode(node.id), node.parentNode);\n if (node.parentNode) {\n parentNodes[node.parentNode] = true;\n }\n nextNodes[i] = parsed;\n }\n for (const node of nextNodes) {\n const parentNode = findNode(node.parentNode) || nextNodes.find((n) => n.id === node.parentNode);\n if (node.parentNode && !parentNode) {\n triggerError(new VueFlowError(ErrorCode.NODE_MISSING_PARENT, node.id, node.parentNode));\n }\n if (node.parentNode || parentNodes[node.id]) {\n if (parentNodes[node.id]) {\n node.isParent = true;\n }\n if (parentNode) {\n parentNode.isParent = true;\n }\n }\n }\n return nextNodes;\n}\nfunction addConnectionToLookup(type, connection, connectionKey, connectionLookup, nodeId, handleId) {\n let key = nodeId;\n const nodeMap = connectionLookup.get(key) || /* @__PURE__ */ new Map();\n connectionLookup.set(key, nodeMap.set(connectionKey, connection));\n key = `${nodeId}-${type}`;\n const typeMap = connectionLookup.get(key) || /* @__PURE__ */ new Map();\n connectionLookup.set(key, typeMap.set(connectionKey, connection));\n if (handleId) {\n key = `${nodeId}-${type}-${handleId}`;\n const handleMap = connectionLookup.get(key) || /* @__PURE__ */ new Map();\n connectionLookup.set(key, handleMap.set(connectionKey, connection));\n }\n}\nfunction updateConnectionLookup(connectionLookup, edgeLookup, edges) {\n connectionLookup.clear();\n for (const edge of edges) {\n const { source: sourceNode, target: targetNode, sourceHandle = null, targetHandle = null } = edge;\n const connection = { edgeId: edge.id, source: sourceNode, target: targetNode, sourceHandle, targetHandle };\n const sourceKey = `${sourceNode}-${sourceHandle}--${targetNode}-${targetHandle}`;\n const targetKey = `${targetNode}-${targetHandle}--${sourceNode}-${sourceHandle}`;\n addConnectionToLookup(\"source\", connection, targetKey, connectionLookup, sourceNode, sourceHandle);\n addConnectionToLookup(\"target\", connection, sourceKey, connectionLookup, targetNode, targetHandle);\n }\n}\nfunction handleConnectionChange(a, b, cb) {\n if (!cb) {\n return;\n }\n const diff = [];\n for (const key of a.keys()) {\n if (!b.has(key)) {\n diff.push(a.get(key));\n }\n }\n if (diff.length) {\n cb(diff);\n }\n}\nfunction areConnectionMapsEqual(a, b) {\n if (!a && !b) {\n return true;\n }\n if (!a || !b || a.size !== b.size) {\n return false;\n }\n if (!a.size && !b.size) {\n return true;\n }\n for (const key of a.keys()) {\n if (!b.has(key)) {\n return false;\n }\n }\n return true;\n}\nfunction areSetsEqual(a, b) {\n if (a.size !== b.size) {\n return false;\n }\n for (const item of a) {\n if (!b.has(item)) {\n return false;\n }\n }\n return true;\n}\nfunction createGraphEdges(nextEdges, isValidConnection, findNode, findEdge, onError, defaultEdgeOptions, nodes, edges) {\n const validEdges = [];\n for (const edgeOrConnection of nextEdges) {\n const edge = isEdge(edgeOrConnection) ? edgeOrConnection : addEdgeToStore(edgeOrConnection, edges, onError, defaultEdgeOptions);\n if (!edge) {\n continue;\n }\n const sourceNode = findNode(edge.source);\n const targetNode = findNode(edge.target);\n if (!sourceNode || !targetNode) {\n onError(new VueFlowError(ErrorCode.EDGE_SOURCE_TARGET_MISSING, edge.id, edge.source, edge.target));\n continue;\n }\n if (!sourceNode) {\n onError(new VueFlowError(ErrorCode.EDGE_SOURCE_MISSING, edge.id, edge.source));\n continue;\n }\n if (!targetNode) {\n onError(new VueFlowError(ErrorCode.EDGE_TARGET_MISSING, edge.id, edge.target));\n continue;\n }\n if (isValidConnection) {\n const isValid = isValidConnection(edge, {\n edges,\n nodes,\n sourceNode,\n targetNode\n });\n if (!isValid) {\n onError(new VueFlowError(ErrorCode.EDGE_INVALID, edge.id));\n continue;\n }\n }\n const existingEdge = findEdge(edge.id);\n validEdges.push({\n ...parseEdge(edge, existingEdge, defaultEdgeOptions),\n sourceNode,\n targetNode\n });\n }\n return validEdges;\n}\nconst VueFlow = Symbol(\"vueFlow\");\nconst NodeId = Symbol(\"nodeId\");\nconst NodeRef = Symbol(\"nodeRef\");\nconst EdgeId = Symbol(\"edgeId\");\nconst EdgeRef = Symbol(\"edgeRef\");\nconst Slots = Symbol(\"slots\");\nfunction useDrag(params) {\n const {\n vueFlowRef,\n snapToGrid,\n snapGrid,\n noDragClassName,\n nodes,\n nodeExtent,\n nodeDragThreshold,\n viewport,\n autoPanOnNodeDrag,\n autoPanSpeed,\n nodesDraggable,\n panBy,\n findNode,\n multiSelectionActive,\n nodesSelectionActive,\n selectNodesOnDrag,\n removeSelectedElements,\n addSelectedNodes,\n updateNodePositions,\n emits\n } = useVueFlow();\n const { onStart, onDrag, onStop, onClick, el, disabled, id: id2, selectable, dragHandle } = params;\n const dragging = shallowRef(false);\n let dragItems = [];\n let dragHandler;\n let containerBounds = null;\n let lastPos = { x: void 0, y: void 0 };\n let mousePosition = { x: 0, y: 0 };\n let dragEvent = null;\n let dragStarted = false;\n let autoPanId = 0;\n let autoPanStarted = false;\n const getPointerPosition = useGetPointerPosition();\n const updateNodes = ({ x, y }) => {\n lastPos = { x, y };\n let hasChange = false;\n dragItems = dragItems.map((n) => {\n const nextPosition = { x: x - n.distance.x, y: y - n.distance.y };\n const { computedPosition } = calcNextPosition(\n n,\n snapToGrid.value ? snapPosition(nextPosition, snapGrid.value) : nextPosition,\n emits.error,\n nodeExtent.value,\n n.parentNode ? findNode(n.parentNode) : void 0\n );\n hasChange = hasChange || n.position.x !== computedPosition.x || n.position.y !== computedPosition.y;\n n.position = computedPosition;\n return n;\n });\n if (!hasChange) {\n return;\n }\n updateNodePositions(dragItems, true, true);\n dragging.value = true;\n if (dragEvent) {\n const [currentNode, nodes2] = getEventHandlerParams({\n id: id2,\n dragItems,\n findNode\n });\n onDrag({ event: dragEvent, node: currentNode, nodes: nodes2 });\n }\n };\n const autoPan = () => {\n if (!containerBounds) {\n return;\n }\n const [xMovement, yMovement] = calcAutoPan(mousePosition, containerBounds, autoPanSpeed.value);\n if (xMovement !== 0 || yMovement !== 0) {\n const nextPos = {\n x: (lastPos.x ?? 0) - xMovement / viewport.value.zoom,\n y: (lastPos.y ?? 0) - yMovement / viewport.value.zoom\n };\n if (panBy({ x: xMovement, y: yMovement })) {\n updateNodes(nextPos);\n }\n }\n autoPanId = requestAnimationFrame(autoPan);\n };\n const startDrag = (event, nodeEl) => {\n dragStarted = true;\n const node = findNode(id2);\n if (!selectNodesOnDrag.value && !multiSelectionActive.value && node) {\n if (!node.selected) {\n removeSelectedElements();\n }\n }\n if (node && toValue$1(selectable) && selectNodesOnDrag.value) {\n handleNodeClick(\n node,\n multiSelectionActive.value,\n addSelectedNodes,\n removeSelectedElements,\n nodesSelectionActive,\n false,\n nodeEl\n );\n }\n const pointerPos = getPointerPosition(event.sourceEvent);\n lastPos = pointerPos;\n dragItems = getDragItems(nodes.value, nodesDraggable.value, pointerPos, findNode, id2);\n if (dragItems.length) {\n const [currentNode, nodes2] = getEventHandlerParams({\n id: id2,\n dragItems,\n findNode\n });\n onStart({ event: event.sourceEvent, node: currentNode, nodes: nodes2 });\n }\n };\n const eventStart = (event, nodeEl) => {\n var _a;\n if (event.sourceEvent.type === \"touchmove\" && event.sourceEvent.touches.length > 1) {\n return;\n }\n if (nodeDragThreshold.value === 0) {\n startDrag(event, nodeEl);\n }\n lastPos = getPointerPosition(event.sourceEvent);\n containerBounds = ((_a = vueFlowRef.value) == null ? void 0 : _a.getBoundingClientRect()) || null;\n mousePosition = getEventPosition(event.sourceEvent, containerBounds);\n };\n const eventDrag = (event, nodeEl) => {\n const pointerPos = getPointerPosition(event.sourceEvent);\n if (!autoPanStarted && dragStarted && autoPanOnNodeDrag.value) {\n autoPanStarted = true;\n autoPan();\n }\n if (!dragStarted) {\n const x = pointerPos.xSnapped - (lastPos.x ?? 0);\n const y = pointerPos.ySnapped - (lastPos.y ?? 0);\n const distance2 = Math.sqrt(x * x + y * y);\n if (distance2 > nodeDragThreshold.value) {\n startDrag(event, nodeEl);\n }\n }\n if ((lastPos.x !== pointerPos.xSnapped || lastPos.y !== pointerPos.ySnapped) && dragItems.length && dragStarted) {\n dragEvent = event.sourceEvent;\n mousePosition = getEventPosition(event.sourceEvent, containerBounds);\n updateNodes(pointerPos);\n }\n };\n const eventEnd = (event) => {\n let isClick = false;\n if (!dragStarted && !dragging.value && !multiSelectionActive.value) {\n const evt = event.sourceEvent;\n const pointerPos = getPointerPosition(evt);\n const x = pointerPos.xSnapped - (lastPos.x ?? 0);\n const y = pointerPos.ySnapped - (lastPos.y ?? 0);\n const distance2 = Math.sqrt(x * x + y * y);\n if (distance2 !== 0 && distance2 <= nodeDragThreshold.value) {\n onClick == null ? void 0 : onClick(evt);\n isClick = true;\n }\n }\n if (dragItems.length && !isClick) {\n updateNodePositions(dragItems, false, false);\n const [currentNode, nodes2] = getEventHandlerParams({\n id: id2,\n dragItems,\n findNode\n });\n onStop({ event: event.sourceEvent, node: currentNode, nodes: nodes2 });\n }\n dragItems = [];\n dragging.value = false;\n autoPanStarted = false;\n dragStarted = false;\n lastPos = { x: void 0, y: void 0 };\n cancelAnimationFrame(autoPanId);\n };\n watch([() => toValue$1(disabled), el], ([isDisabled, nodeEl], _, onCleanup) => {\n if (nodeEl) {\n const selection2 = select(nodeEl);\n if (!isDisabled) {\n dragHandler = drag().on(\"start\", (event) => eventStart(event, nodeEl)).on(\"drag\", (event) => eventDrag(event, nodeEl)).on(\"end\", (event) => eventEnd(event)).filter((event) => {\n const target = event.target;\n const unrefDragHandle = toValue$1(dragHandle);\n return !event.button && (!noDragClassName.value || !hasSelector(target, `.${noDragClassName.value}`, nodeEl) && (!unrefDragHandle || hasSelector(target, unrefDragHandle, nodeEl)));\n });\n selection2.call(dragHandler);\n }\n onCleanup(() => {\n selection2.on(\".drag\", null);\n if (dragHandler) {\n dragHandler.on(\"start\", null);\n dragHandler.on(\"drag\", null);\n dragHandler.on(\"end\", null);\n }\n });\n }\n });\n return dragging;\n}\nfunction useEdge(id2) {\n const edgeId = id2 ?? inject(EdgeId, \"\");\n const edgeEl = inject(EdgeRef, ref(null));\n const { findEdge, emits } = useVueFlow();\n const edge = findEdge(edgeId);\n if (!edge) {\n emits.error(new VueFlowError(ErrorCode.EDGE_NOT_FOUND, edgeId));\n }\n return {\n id: edgeId,\n edge,\n edgeEl\n };\n}\nfunction createEdgeHooks() {\n return {\n doubleClick: createExtendedEventHook(),\n click: createExtendedEventHook(),\n mouseEnter: createExtendedEventHook(),\n mouseMove: createExtendedEventHook(),\n mouseLeave: createExtendedEventHook(),\n contextMenu: createExtendedEventHook(),\n updateStart: createExtendedEventHook(),\n update: createExtendedEventHook(),\n updateEnd: createExtendedEventHook()\n };\n}\nfunction useEdgeHooks(edge, emits) {\n const edgeHooks = createEdgeHooks();\n edgeHooks.doubleClick.on((event) => {\n var _a, _b;\n emits.edgeDoubleClick(event);\n (_b = (_a = edge.events) == null ? void 0 : _a.doubleClick) == null ? void 0 : _b.call(_a, event);\n });\n edgeHooks.click.on((event) => {\n var _a, _b;\n emits.edgeClick(event);\n (_b = (_a = edge.events) == null ? void 0 : _a.click) == null ? void 0 : _b.call(_a, event);\n });\n edgeHooks.mouseEnter.on((event) => {\n var _a, _b;\n emits.edgeMouseEnter(event);\n (_b = (_a = edge.events) == null ? void 0 : _a.mouseEnter) == null ? void 0 : _b.call(_a, event);\n });\n edgeHooks.mouseMove.on((event) => {\n var _a, _b;\n emits.edgeMouseMove(event);\n (_b = (_a = edge.events) == null ? void 0 : _a.mouseMove) == null ? void 0 : _b.call(_a, event);\n });\n edgeHooks.mouseLeave.on((event) => {\n var _a, _b;\n emits.edgeMouseLeave(event);\n (_b = (_a = edge.events) == null ? void 0 : _a.mouseLeave) == null ? void 0 : _b.call(_a, event);\n });\n edgeHooks.contextMenu.on((event) => {\n var _a, _b;\n emits.edgeContextMenu(event);\n (_b = (_a = edge.events) == null ? void 0 : _a.contextMenu) == null ? void 0 : _b.call(_a, event);\n });\n edgeHooks.updateStart.on((event) => {\n var _a, _b;\n emits.edgeUpdateStart(event);\n (_b = (_a = edge.events) == null ? void 0 : _a.updateStart) == null ? void 0 : _b.call(_a, event);\n });\n edgeHooks.update.on((event) => {\n var _a, _b;\n emits.edgeUpdate(event);\n (_b = (_a = edge.events) == null ? void 0 : _a.update) == null ? void 0 : _b.call(_a, event);\n });\n edgeHooks.updateEnd.on((event) => {\n var _a, _b;\n emits.edgeUpdateEnd(event);\n (_b = (_a = edge.events) == null ? void 0 : _a.updateEnd) == null ? void 0 : _b.call(_a, event);\n });\n return Object.entries(edgeHooks).reduce(\n (hooks, [key, value]) => {\n hooks.emit[key] = value.trigger;\n hooks.on[key] = value.on;\n return hooks;\n },\n { emit: {}, on: {} }\n );\n}\nfunction useGetPointerPosition() {\n const { viewport, snapGrid, snapToGrid, vueFlowRef } = useVueFlow();\n return (event) => {\n var _a;\n const containerBounds = ((_a = vueFlowRef.value) == null ? void 0 : _a.getBoundingClientRect()) ?? { left: 0, top: 0 };\n const evt = isUseDragEvent(event) ? event.sourceEvent : event;\n const { x, y } = getEventPosition(evt, containerBounds);\n const pointerPos = pointToRendererPoint({ x, y }, viewport.value);\n const { x: xSnapped, y: ySnapped } = snapToGrid.value ? snapPosition(pointerPos, snapGrid.value) : pointerPos;\n return {\n xSnapped,\n ySnapped,\n ...pointerPos\n };\n };\n}\nfunction alwaysValid() {\n return true;\n}\nfunction useHandle({\n handleId,\n nodeId,\n type,\n isValidConnection,\n edgeUpdaterType,\n onEdgeUpdate,\n onEdgeUpdateEnd\n}) {\n const {\n id: flowId,\n vueFlowRef,\n connectionMode,\n connectionRadius,\n connectOnClick,\n connectionClickStartHandle,\n nodesConnectable,\n autoPanOnConnect,\n autoPanSpeed,\n findNode,\n panBy,\n startConnection,\n updateConnection,\n endConnection,\n emits,\n viewport,\n edges,\n nodes,\n isValidConnection: isValidConnectionProp,\n nodeLookup\n } = useVueFlow();\n let connection = null;\n let isValid = false;\n let handleDomNode = null;\n function handlePointerDown(event) {\n var _a;\n const isTarget = toValue$1(type) === \"target\";\n const isMouseTriggered = isMouseEvent(event);\n const doc = getHostForElement(event.target);\n if (isMouseTriggered && event.button === 0 || !isMouseTriggered) {\n let onPointerMove = function(event2) {\n connectionPosition = getEventPosition(event2, containerBounds);\n closestHandle = getClosestHandle(\n pointToRendererPoint(connectionPosition, viewport.value, false, [1, 1]),\n connectionRadius.value,\n nodeLookup.value,\n fromHandle\n );\n if (!autoPanStarted) {\n autoPan();\n autoPanStarted = true;\n }\n const result = isValidHandle(\n event2,\n {\n handle: closestHandle,\n connectionMode: connectionMode.value,\n fromNodeId: toValue$1(nodeId),\n fromHandleId: toValue$1(handleId),\n fromType: isTarget ? \"target\" : \"source\",\n isValidConnection: isValidConnectionHandler,\n doc,\n lib: \"vue\",\n flowId,\n nodeLookup: nodeLookup.value\n },\n edges.value,\n nodes.value,\n findNode\n );\n handleDomNode = result.handleDomNode;\n connection = result.connection;\n isValid = isConnectionValid(!!closestHandle, result.isValid);\n const newConnection2 = {\n // from stays the same\n ...previousConnection,\n isValid,\n to: result.toHandle && isValid ? rendererPointToPoint({ x: result.toHandle.x, y: result.toHandle.y }, viewport.value) : connectionPosition,\n toHandle: result.toHandle,\n toPosition: isValid && result.toHandle ? result.toHandle.position : oppositePosition[fromHandle.position],\n toNode: result.toHandle ? nodeLookup.value.get(result.toHandle.nodeId) : null\n };\n if (isValid && closestHandle && (previousConnection == null ? void 0 : previousConnection.toHandle) && newConnection2.toHandle && previousConnection.toHandle.type === newConnection2.toHandle.type && previousConnection.toHandle.nodeId === newConnection2.toHandle.nodeId && previousConnection.toHandle.id === newConnection2.toHandle.id && previousConnection.to.x === newConnection2.to.x && previousConnection.to.y === newConnection2.to.y) {\n return;\n }\n updateConnection(\n closestHandle && isValid ? rendererPointToPoint(\n {\n x: closestHandle.x,\n y: closestHandle.y\n },\n viewport.value\n ) : connectionPosition,\n result.toHandle,\n getConnectionStatus(!!closestHandle, isValid)\n );\n previousConnection = newConnection2;\n if (!closestHandle && !isValid && !handleDomNode) {\n return resetRecentHandle(prevActiveHandle);\n }\n if (connection && connection.source !== connection.target && handleDomNode) {\n resetRecentHandle(prevActiveHandle);\n prevActiveHandle = handleDomNode;\n handleDomNode.classList.add(\"connecting\", \"vue-flow__handle-connecting\");\n handleDomNode.classList.toggle(\"valid\", !!isValid);\n handleDomNode.classList.toggle(\"vue-flow__handle-valid\", !!isValid);\n }\n }, onPointerUp = function(event2) {\n if ((closestHandle || handleDomNode) && connection && isValid) {\n if (!onEdgeUpdate) {\n emits.connect(connection);\n } else {\n onEdgeUpdate(event2, connection);\n }\n }\n emits.connectEnd(event2);\n if (edgeUpdaterType) {\n onEdgeUpdateEnd == null ? void 0 : onEdgeUpdateEnd(event2);\n }\n resetRecentHandle(prevActiveHandle);\n cancelAnimationFrame(autoPanId);\n endConnection(event2);\n autoPanStarted = false;\n isValid = false;\n connection = null;\n handleDomNode = null;\n doc.removeEventListener(\"mousemove\", onPointerMove);\n doc.removeEventListener(\"mouseup\", onPointerUp);\n doc.removeEventListener(\"touchmove\", onPointerMove);\n doc.removeEventListener(\"touchend\", onPointerUp);\n };\n const node = findNode(toValue$1(nodeId));\n let isValidConnectionHandler = toValue$1(isValidConnection) || isValidConnectionProp.value || alwaysValid;\n if (!isValidConnectionHandler && node) {\n isValidConnectionHandler = (!isTarget ? node.isValidTargetPos : node.isValidSourcePos) || alwaysValid;\n }\n let closestHandle;\n let autoPanId = 0;\n const { x, y } = getEventPosition(event);\n const clickedHandle = doc == null ? void 0 : doc.elementFromPoint(x, y);\n const handleType = getHandleType(toValue$1(edgeUpdaterType), clickedHandle);\n const containerBounds = (_a = vueFlowRef.value) == null ? void 0 : _a.getBoundingClientRect();\n if (!containerBounds || !handleType) {\n return;\n }\n const fromHandleInternal = getHandle(toValue$1(nodeId), handleType, toValue$1(handleId), nodeLookup.value, connectionMode.value);\n if (!fromHandleInternal) {\n return;\n }\n let prevActiveHandle;\n let connectionPosition = getEventPosition(event, containerBounds);\n let autoPanStarted = false;\n const autoPan = () => {\n if (!autoPanOnConnect.value) {\n return;\n }\n const [xMovement, yMovement] = calcAutoPan(connectionPosition, containerBounds, autoPanSpeed.value);\n panBy({ x: xMovement, y: yMovement });\n autoPanId = requestAnimationFrame(autoPan);\n };\n const fromHandle = {\n ...fromHandleInternal,\n nodeId: toValue$1(nodeId),\n type: handleType,\n position: fromHandleInternal.position\n };\n const fromNodeInternal = nodeLookup.value.get(toValue$1(nodeId));\n const from = getHandlePosition(fromNodeInternal, fromHandle, Position.Left, true);\n const newConnection = {\n inProgress: true,\n isValid: null,\n from,\n fromHandle,\n fromPosition: fromHandle.position,\n fromNode: fromNodeInternal,\n to: connectionPosition,\n toHandle: null,\n toPosition: oppositePosition[fromHandle.position],\n toNode: null\n };\n startConnection(\n {\n nodeId: toValue$1(nodeId),\n id: toValue$1(handleId),\n type: handleType,\n position: (clickedHandle == null ? void 0 : clickedHandle.getAttribute(\"data-handlepos\")) || Position.Top,\n ...connectionPosition\n },\n {\n x: x - containerBounds.left,\n y: y - containerBounds.top\n }\n );\n emits.connectStart({ event, nodeId: toValue$1(nodeId), handleId: toValue$1(handleId), handleType });\n let previousConnection = newConnection;\n doc.addEventListener(\"mousemove\", onPointerMove);\n doc.addEventListener(\"mouseup\", onPointerUp);\n doc.addEventListener(\"touchmove\", onPointerMove);\n doc.addEventListener(\"touchend\", onPointerUp);\n }\n }\n function handleClick(event) {\n var _a, _b;\n if (!connectOnClick.value) {\n return;\n }\n const isTarget = toValue$1(type) === \"target\";\n if (!connectionClickStartHandle.value) {\n emits.clickConnectStart({ event, nodeId: toValue$1(nodeId), handleId: toValue$1(handleId) });\n startConnection(\n {\n nodeId: toValue$1(nodeId),\n type: toValue$1(type),\n id: toValue$1(handleId),\n position: Position.Top,\n ...getEventPosition(event)\n },\n void 0,\n true\n );\n return;\n }\n let isValidConnectionHandler = toValue$1(isValidConnection) || isValidConnectionProp.value || alwaysValid;\n const node = findNode(toValue$1(nodeId));\n if (!isValidConnectionHandler && node) {\n isValidConnectionHandler = (!isTarget ? node.isValidTargetPos : node.isValidSourcePos) || alwaysValid;\n }\n if (node && (typeof node.connectable === \"undefined\" ? nodesConnectable.value : node.connectable) === false) {\n return;\n }\n const doc = getHostForElement(event.target);\n const result = isValidHandle(\n event,\n {\n handle: {\n nodeId: toValue$1(nodeId),\n id: toValue$1(handleId),\n type: toValue$1(type),\n position: Position.Top,\n ...getEventPosition(event)\n },\n connectionMode: connectionMode.value,\n fromNodeId: connectionClickStartHandle.value.nodeId,\n fromHandleId: connectionClickStartHandle.value.id ?? null,\n fromType: connectionClickStartHandle.value.type,\n isValidConnection: isValidConnectionHandler,\n doc,\n lib: \"vue\",\n flowId,\n nodeLookup: nodeLookup.value\n },\n edges.value,\n nodes.value,\n findNode\n );\n const isOwnHandle = ((_a = result.connection) == null ? void 0 : _a.source) === ((_b = result.connection) == null ? void 0 : _b.target);\n if (result.isValid && result.connection && !isOwnHandle) {\n emits.connect(result.connection);\n }\n emits.clickConnectEnd(event);\n endConnection(event, true);\n }\n return {\n handlePointerDown,\n handleClick\n };\n}\nfunction useNodeId() {\n return inject(NodeId, \"\");\n}\nfunction useNode(id2) {\n const nodeId = id2 ?? useNodeId() ?? \"\";\n const nodeEl = inject(NodeRef, ref(null));\n const { findNode, edges, emits } = useVueFlow();\n const node = findNode(nodeId);\n if (!node) {\n emits.error(new VueFlowError(ErrorCode.NODE_NOT_FOUND, nodeId));\n }\n return {\n id: nodeId,\n nodeEl,\n node,\n parentNode: computed(() => findNode(node.parentNode)),\n connectedEdges: computed(() => getConnectedEdges([node], edges.value))\n };\n}\nfunction createNodeHooks() {\n return {\n doubleClick: createExtendedEventHook(),\n click: createExtendedEventHook(),\n mouseEnter: createExtendedEventHook(),\n mouseMove: createExtendedEventHook(),\n mouseLeave: createExtendedEventHook(),\n contextMenu: createExtendedEventHook(),\n dragStart: createExtendedEventHook(),\n drag: createExtendedEventHook(),\n dragStop: createExtendedEventHook()\n };\n}\nfunction useNodeHooks(node, emits) {\n const nodeHooks = createNodeHooks();\n nodeHooks.doubleClick.on((event) => {\n var _a, _b;\n emits.nodeDoubleClick(event);\n (_b = (_a = node.events) == null ? void 0 : _a.doubleClick) == null ? void 0 : _b.call(_a, event);\n });\n nodeHooks.click.on((event) => {\n var _a, _b;\n emits.nodeClick(event);\n (_b = (_a = node.events) == null ? void 0 : _a.click) == null ? void 0 : _b.call(_a, event);\n });\n nodeHooks.mouseEnter.on((event) => {\n var _a, _b;\n emits.nodeMouseEnter(event);\n (_b = (_a = node.events) == null ? void 0 : _a.mouseEnter) == null ? void 0 : _b.call(_a, event);\n });\n nodeHooks.mouseMove.on((event) => {\n var _a, _b;\n emits.nodeMouseMove(event);\n (_b = (_a = node.events) == null ? void 0 : _a.mouseMove) == null ? void 0 : _b.call(_a, event);\n });\n nodeHooks.mouseLeave.on((event) => {\n var _a, _b;\n emits.nodeMouseLeave(event);\n (_b = (_a = node.events) == null ? void 0 : _a.mouseLeave) == null ? void 0 : _b.call(_a, event);\n });\n nodeHooks.contextMenu.on((event) => {\n var _a, _b;\n emits.nodeContextMenu(event);\n (_b = (_a = node.events) == null ? void 0 : _a.contextMenu) == null ? void 0 : _b.call(_a, event);\n });\n nodeHooks.dragStart.on((event) => {\n var _a, _b;\n emits.nodeDragStart(event);\n (_b = (_a = node.events) == null ? void 0 : _a.dragStart) == null ? void 0 : _b.call(_a, event);\n });\n nodeHooks.drag.on((event) => {\n var _a, _b;\n emits.nodeDrag(event);\n (_b = (_a = node.events) == null ? void 0 : _a.drag) == null ? void 0 : _b.call(_a, event);\n });\n nodeHooks.dragStop.on((event) => {\n var _a, _b;\n emits.nodeDragStop(event);\n (_b = (_a = node.events) == null ? void 0 : _a.dragStop) == null ? void 0 : _b.call(_a, event);\n });\n return Object.entries(nodeHooks).reduce(\n (hooks, [key, value]) => {\n hooks.emit[key] = value.trigger;\n hooks.on[key] = value.on;\n return hooks;\n },\n { emit: {}, on: {} }\n );\n}\nfunction useUpdateNodePositions() {\n const { getSelectedNodes, nodeExtent, updateNodePositions, findNode, snapGrid, snapToGrid, nodesDraggable, emits } = useVueFlow();\n return (positionDiff, isShiftPressed = false) => {\n const xVelo = snapToGrid.value ? snapGrid.value[0] : 5;\n const yVelo = snapToGrid.value ? snapGrid.value[1] : 5;\n const factor = isShiftPressed ? 4 : 1;\n const positionDiffX = positionDiff.x * xVelo * factor;\n const positionDiffY = positionDiff.y * yVelo * factor;\n const nodeUpdates = [];\n for (const node of getSelectedNodes.value) {\n if (node.draggable || nodesDraggable && typeof node.draggable === \"undefined\") {\n const nextPosition = { x: node.computedPosition.x + positionDiffX, y: node.computedPosition.y + positionDiffY };\n const { computedPosition } = calcNextPosition(\n node,\n nextPosition,\n emits.error,\n nodeExtent.value,\n node.parentNode ? findNode(node.parentNode) : void 0\n );\n nodeUpdates.push({\n id: node.id,\n position: computedPosition,\n from: node.position,\n distance: { x: positionDiff.x, y: positionDiff.y },\n dimensions: node.dimensions\n });\n }\n }\n updateNodePositions(nodeUpdates, true, false);\n };\n}\nconst DEFAULT_PADDING = 0.1;\nconst defaultEase = (t) => ((t *= 2) <= 1 ? t * t * t : (t -= 2) * t * t + 2) / 2;\nfunction noop() {\n warn(\"Viewport not initialized yet.\");\n return Promise.resolve(false);\n}\nconst initialViewportHelper = {\n zoomIn: noop,\n zoomOut: noop,\n zoomTo: noop,\n fitView: noop,\n setCenter: noop,\n fitBounds: noop,\n project: (position) => position,\n screenToFlowCoordinate: (position) => position,\n flowToScreenCoordinate: (position) => position,\n setViewport: noop,\n setTransform: noop,\n getViewport: () => ({ x: 0, y: 0, zoom: 1 }),\n getTransform: () => ({ x: 0, y: 0, zoom: 1 }),\n viewportInitialized: false\n};\nfunction useViewportHelper(state) {\n function zoom2(scale, transitionOptions) {\n return new Promise((resolve) => {\n if (state.d3Selection && state.d3Zoom) {\n state.d3Zoom.interpolate((transitionOptions == null ? void 0 : transitionOptions.interpolate) === \"linear\" ? interpolate$1 : interpolateZoom).scaleBy(\n getD3Transition(state.d3Selection, transitionOptions == null ? void 0 : transitionOptions.duration, transitionOptions == null ? void 0 : transitionOptions.ease, () => {\n resolve(true);\n }),\n scale\n );\n } else {\n resolve(false);\n }\n });\n }\n function transformViewport(x, y, zoom22, transitionOptions) {\n return new Promise((resolve) => {\n var _a;\n const { x: clampedX, y: clampedY } = clampPosition({ x: -x, y: -y }, state.translateExtent);\n const nextTransform = identity.translate(-clampedX, -clampedY).scale(zoom22);\n if (state.d3Selection && state.d3Zoom) {\n (_a = state.d3Zoom) == null ? void 0 : _a.interpolate((transitionOptions == null ? void 0 : transitionOptions.interpolate) === \"linear\" ? interpolate$1 : interpolateZoom).transform(\n getD3Transition(state.d3Selection, transitionOptions == null ? void 0 : transitionOptions.duration, transitionOptions == null ? void 0 : transitionOptions.ease, () => {\n resolve(true);\n }),\n nextTransform\n );\n } else {\n resolve(false);\n }\n });\n }\n return computed(() => {\n const isInitialized = state.d3Zoom && state.d3Selection && state.dimensions.width && state.dimensions.height;\n if (!isInitialized) {\n return initialViewportHelper;\n }\n return {\n viewportInitialized: true,\n // todo: allow passing scale as option\n zoomIn: (options) => {\n return zoom2(1.2, options);\n },\n zoomOut: (options) => {\n return zoom2(1 / 1.2, options);\n },\n zoomTo: (zoomLevel, options) => {\n return new Promise((resolve) => {\n if (state.d3Selection && state.d3Zoom) {\n state.d3Zoom.interpolate((options == null ? void 0 : options.interpolate) === \"linear\" ? interpolate$1 : interpolateZoom).scaleTo(\n getD3Transition(state.d3Selection, options == null ? void 0 : options.duration, options == null ? void 0 : options.ease, () => {\n resolve(true);\n }),\n zoomLevel\n );\n } else {\n resolve(false);\n }\n });\n },\n setViewport: (transform, options) => {\n return transformViewport(transform.x, transform.y, transform.zoom, options);\n },\n setTransform: (transform, options) => {\n return transformViewport(transform.x, transform.y, transform.zoom, options);\n },\n getViewport: () => ({\n x: state.viewport.x,\n y: state.viewport.y,\n zoom: state.viewport.zoom\n }),\n getTransform: () => {\n return {\n x: state.viewport.x,\n y: state.viewport.y,\n zoom: state.viewport.zoom\n };\n },\n fitView: (options = {\n padding: DEFAULT_PADDING,\n includeHiddenNodes: false,\n duration: 0\n }) => {\n var _a, _b;\n const nodesToFit = [];\n for (const node of state.nodes) {\n const isVisible = node.dimensions.width && node.dimensions.height && ((options == null ? void 0 : options.includeHiddenNodes) || !node.hidden);\n if (isVisible) {\n if (!((_a = options.nodes) == null ? void 0 : _a.length) || ((_b = options.nodes) == null ? void 0 : _b.length) && options.nodes.includes(node.id)) {\n nodesToFit.push(node);\n }\n }\n }\n if (!nodesToFit.length) {\n return Promise.resolve(false);\n }\n const bounds = getRectOfNodes(nodesToFit);\n const { x, y, zoom: zoom22 } = getTransformForBounds(\n bounds,\n state.dimensions.width,\n state.dimensions.height,\n options.minZoom ?? state.minZoom,\n options.maxZoom ?? state.maxZoom,\n options.padding ?? DEFAULT_PADDING,\n options.offset\n );\n return transformViewport(x, y, zoom22, options);\n },\n setCenter: (x, y, options) => {\n const nextZoom = typeof (options == null ? void 0 : options.zoom) !== \"undefined\" ? options.zoom : state.maxZoom;\n const centerX = state.dimensions.width / 2 - x * nextZoom;\n const centerY = state.dimensions.height / 2 - y * nextZoom;\n return transformViewport(centerX, centerY, nextZoom, options);\n },\n fitBounds: (bounds, options = { padding: DEFAULT_PADDING }) => {\n const { x, y, zoom: zoom22 } = getTransformForBounds(\n bounds,\n state.dimensions.width,\n state.dimensions.height,\n state.minZoom,\n state.maxZoom,\n options.padding\n );\n return transformViewport(x, y, zoom22, options);\n },\n project: (position) => pointToRendererPoint(position, state.viewport, state.snapToGrid, state.snapGrid),\n screenToFlowCoordinate: (position) => {\n if (state.vueFlowRef) {\n const { x: domX, y: domY } = state.vueFlowRef.getBoundingClientRect();\n const correctedPosition = {\n x: position.x - domX,\n y: position.y - domY\n };\n return pointToRendererPoint(correctedPosition, state.viewport, state.snapToGrid, state.snapGrid);\n }\n return { x: 0, y: 0 };\n },\n flowToScreenCoordinate: (position) => {\n if (state.vueFlowRef) {\n const { x: domX, y: domY } = state.vueFlowRef.getBoundingClientRect();\n const correctedPosition = {\n x: position.x + domX,\n y: position.y + domY\n };\n return rendererPointToPoint(correctedPosition, state.viewport);\n }\n return { x: 0, y: 0 };\n }\n };\n });\n}\nfunction getD3Transition(selection2, duration = 0, ease = defaultEase, onEnd = () => {\n}) {\n const hasDuration = typeof duration === \"number\" && duration > 0;\n if (!hasDuration) {\n onEnd();\n }\n return hasDuration ? selection2.transition().duration(duration).ease(ease).on(\"end\", onEnd) : selection2;\n}\nfunction useWatchProps(models, props, store) {\n const scope = effectScope(true);\n scope.run(() => {\n const watchModelValue = () => {\n scope.run(() => {\n let pauseModel;\n let pauseStore;\n let immediateStore = !!(store.nodes.value.length || store.edges.value.length);\n pauseModel = watchPausable([models.modelValue, () => {\n var _a, _b;\n return (_b = (_a = models.modelValue) == null ? void 0 : _a.value) == null ? void 0 : _b.length;\n }], ([elements]) => {\n if (elements && Array.isArray(elements)) {\n pauseStore == null ? void 0 : pauseStore.pause();\n store.setElements(elements);\n if (!pauseStore && !immediateStore && elements.length) {\n immediateStore = true;\n } else {\n pauseStore == null ? void 0 : pauseStore.resume();\n }\n }\n });\n pauseStore = watchPausable(\n [store.nodes, store.edges, () => store.edges.value.length, () => store.nodes.value.length],\n ([nodes, edges]) => {\n var _a;\n if (((_a = models.modelValue) == null ? void 0 : _a.value) && Array.isArray(models.modelValue.value)) {\n pauseModel == null ? void 0 : pauseModel.pause();\n models.modelValue.value = [...nodes, ...edges];\n nextTick(() => {\n pauseModel == null ? void 0 : pauseModel.resume();\n });\n }\n },\n { immediate: immediateStore }\n );\n onScopeDispose(() => {\n pauseModel == null ? void 0 : pauseModel.stop();\n pauseStore == null ? void 0 : pauseStore.stop();\n });\n });\n };\n const watchNodesValue = () => {\n scope.run(() => {\n let pauseModel;\n let pauseStore;\n let immediateStore = !!store.nodes.value.length;\n pauseModel = watchPausable([models.nodes, () => {\n var _a, _b;\n return (_b = (_a = models.nodes) == null ? void 0 : _a.value) == null ? void 0 : _b.length;\n }], ([nodes]) => {\n if (nodes && Array.isArray(nodes)) {\n pauseStore == null ? void 0 : pauseStore.pause();\n store.setNodes(nodes);\n if (!pauseStore && !immediateStore && nodes.length) {\n immediateStore = true;\n } else {\n pauseStore == null ? void 0 : pauseStore.resume();\n }\n }\n });\n pauseStore = watchPausable(\n [store.nodes, () => store.nodes.value.length],\n ([nodes]) => {\n var _a;\n if (((_a = models.nodes) == null ? void 0 : _a.value) && Array.isArray(models.nodes.value)) {\n pauseModel == null ? void 0 : pauseModel.pause();\n models.nodes.value = [...nodes];\n nextTick(() => {\n pauseModel == null ? void 0 : pauseModel.resume();\n });\n }\n },\n { immediate: immediateStore }\n );\n onScopeDispose(() => {\n pauseModel == null ? void 0 : pauseModel.stop();\n pauseStore == null ? void 0 : pauseStore.stop();\n });\n });\n };\n const watchEdgesValue = () => {\n scope.run(() => {\n let pauseModel;\n let pauseStore;\n let immediateStore = !!store.edges.value.length;\n pauseModel = watchPausable([models.edges, () => {\n var _a, _b;\n return (_b = (_a = models.edges) == null ? void 0 : _a.value) == null ? void 0 : _b.length;\n }], ([edges]) => {\n if (edges && Array.isArray(edges)) {\n pauseStore == null ? void 0 : pauseStore.pause();\n store.setEdges(edges);\n if (!pauseStore && !immediateStore && edges.length) {\n immediateStore = true;\n } else {\n pauseStore == null ? void 0 : pauseStore.resume();\n }\n }\n });\n pauseStore = watchPausable(\n [store.edges, () => store.edges.value.length],\n ([edges]) => {\n var _a;\n if (((_a = models.edges) == null ? void 0 : _a.value) && Array.isArray(models.edges.value)) {\n pauseModel == null ? void 0 : pauseModel.pause();\n models.edges.value = [...edges];\n nextTick(() => {\n pauseModel == null ? void 0 : pauseModel.resume();\n });\n }\n },\n { immediate: immediateStore }\n );\n onScopeDispose(() => {\n pauseModel == null ? void 0 : pauseModel.stop();\n pauseStore == null ? void 0 : pauseStore.stop();\n });\n });\n };\n const watchMaxZoom = () => {\n scope.run(() => {\n watch(\n () => props.maxZoom,\n () => {\n if (props.maxZoom && isDef(props.maxZoom)) {\n store.setMaxZoom(props.maxZoom);\n }\n },\n {\n immediate: true\n }\n );\n });\n };\n const watchMinZoom = () => {\n scope.run(() => {\n watch(\n () => props.minZoom,\n () => {\n if (props.minZoom && isDef(props.minZoom)) {\n store.setMinZoom(props.minZoom);\n }\n },\n { immediate: true }\n );\n });\n };\n const watchTranslateExtent = () => {\n scope.run(() => {\n watch(\n () => props.translateExtent,\n () => {\n if (props.translateExtent && isDef(props.translateExtent)) {\n store.setTranslateExtent(props.translateExtent);\n }\n },\n {\n immediate: true\n }\n );\n });\n };\n const watchNodeExtent = () => {\n scope.run(() => {\n watch(\n () => props.nodeExtent,\n () => {\n if (props.nodeExtent && isDef(props.nodeExtent)) {\n store.setNodeExtent(props.nodeExtent);\n }\n },\n {\n immediate: true\n }\n );\n });\n };\n const watchApplyDefault = () => {\n scope.run(() => {\n watch(\n () => props.applyDefault,\n () => {\n if (isDef(props.applyDefault)) {\n store.applyDefault.value = props.applyDefault;\n }\n },\n {\n immediate: true\n }\n );\n });\n };\n const watchAutoConnect = () => {\n scope.run(() => {\n const autoConnector = async (params) => {\n let connection = params;\n if (typeof props.autoConnect === \"function\") {\n connection = await props.autoConnect(params);\n }\n if (connection !== false) {\n store.addEdges([connection]);\n }\n };\n watch(\n () => props.autoConnect,\n () => {\n if (isDef(props.autoConnect)) {\n store.autoConnect.value = props.autoConnect;\n }\n },\n { immediate: true }\n );\n watch(\n store.autoConnect,\n (autoConnectEnabled, _, onCleanup) => {\n if (autoConnectEnabled) {\n store.onConnect(autoConnector);\n } else {\n store.hooks.value.connect.off(autoConnector);\n }\n onCleanup(() => {\n store.hooks.value.connect.off(autoConnector);\n });\n },\n { immediate: true }\n );\n });\n };\n const watchRest = () => {\n const skip = [\n \"id\",\n \"modelValue\",\n \"translateExtent\",\n \"nodeExtent\",\n \"edges\",\n \"nodes\",\n \"maxZoom\",\n \"minZoom\",\n \"applyDefault\",\n \"autoConnect\"\n ];\n for (const key of Object.keys(props)) {\n const propKey = key;\n if (!skip.includes(propKey)) {\n const propValue = toRef(() => props[propKey]);\n const storeRef = store[propKey];\n if (isRef(storeRef)) {\n scope.run(() => {\n watch(\n propValue,\n (nextValue) => {\n if (isDef(nextValue)) {\n storeRef.value = nextValue;\n }\n },\n { immediate: true }\n );\n });\n }\n }\n }\n };\n const runAll = () => {\n watchModelValue();\n watchNodesValue();\n watchEdgesValue();\n watchMinZoom();\n watchMaxZoom();\n watchTranslateExtent();\n watchNodeExtent();\n watchApplyDefault();\n watchAutoConnect();\n watchRest();\n };\n runAll();\n });\n return () => scope.stop();\n}\nfunction useZoomPanHelper(vueFlowId) {\n const state = useVueFlow({ id: vueFlowId });\n const viewportHelper = useViewportHelper(toReactive(state));\n return {\n fitView: (params) => viewportHelper.value.fitView(params),\n zoomIn: (transitionOpts) => viewportHelper.value.zoomIn(transitionOpts),\n zoomOut: (transitionOpts) => viewportHelper.value.zoomOut(transitionOpts),\n zoomTo: (zoomLevel, transitionOpts) => viewportHelper.value.zoomTo(zoomLevel, transitionOpts),\n setViewport: (params, transitionOpts) => viewportHelper.value.setViewport(params, transitionOpts),\n setTransform: (params, transitionOpts) => viewportHelper.value.setTransform(params, transitionOpts),\n getViewport: () => viewportHelper.value.getViewport(),\n getTransform: () => viewportHelper.value.getTransform(),\n setCenter: (x, y, opts) => viewportHelper.value.setCenter(x, y, opts),\n fitBounds: (params, opts) => viewportHelper.value.fitBounds(params, opts),\n project: (params) => viewportHelper.value.project(params)\n };\n}\nfunction createHooks() {\n return {\n edgesChange: createExtendedEventHook(),\n nodesChange: createExtendedEventHook(),\n nodeDoubleClick: createExtendedEventHook(),\n nodeClick: createExtendedEventHook(),\n nodeMouseEnter: createExtendedEventHook(),\n nodeMouseMove: createExtendedEventHook(),\n nodeMouseLeave: createExtendedEventHook(),\n nodeContextMenu: createExtendedEventHook(),\n nodeDragStart: createExtendedEventHook(),\n nodeDrag: createExtendedEventHook(),\n nodeDragStop: createExtendedEventHook(),\n nodesInitialized: createExtendedEventHook(),\n miniMapNodeClick: createExtendedEventHook(),\n miniMapNodeDoubleClick: createExtendedEventHook(),\n miniMapNodeMouseEnter: createExtendedEventHook(),\n miniMapNodeMouseMove: createExtendedEventHook(),\n miniMapNodeMouseLeave: createExtendedEventHook(),\n connect: createExtendedEventHook(),\n connectStart: createExtendedEventHook(),\n connectEnd: createExtendedEventHook(),\n clickConnectStart: createExtendedEventHook(),\n clickConnectEnd: createExtendedEventHook(),\n paneReady: createExtendedEventHook(),\n init: createExtendedEventHook(),\n move: createExtendedEventHook(),\n moveStart: createExtendedEventHook(),\n moveEnd: createExtendedEventHook(),\n selectionDragStart: createExtendedEventHook(),\n selectionDrag: createExtendedEventHook(),\n selectionDragStop: createExtendedEventHook(),\n selectionContextMenu: createExtendedEventHook(),\n selectionStart: createExtendedEventHook(),\n selectionEnd: createExtendedEventHook(),\n viewportChangeStart: createExtendedEventHook(),\n viewportChange: createExtendedEventHook(),\n viewportChangeEnd: createExtendedEventHook(),\n paneScroll: createExtendedEventHook(),\n paneClick: createExtendedEventHook(),\n paneContextMenu: createExtendedEventHook(),\n paneMouseEnter: createExtendedEventHook(),\n paneMouseMove: createExtendedEventHook(),\n paneMouseLeave: createExtendedEventHook(),\n edgeContextMenu: createExtendedEventHook(),\n edgeMouseEnter: createExtendedEventHook(),\n edgeMouseMove: createExtendedEventHook(),\n edgeMouseLeave: createExtendedEventHook(),\n edgeDoubleClick: createExtendedEventHook(),\n edgeClick: createExtendedEventHook(),\n edgeUpdateStart: createExtendedEventHook(),\n edgeUpdate: createExtendedEventHook(),\n edgeUpdateEnd: createExtendedEventHook(),\n updateNodeInternals: createExtendedEventHook(),\n error: createExtendedEventHook((err) => warn(err.message))\n };\n}\nfunction useHooks(emit, hooks) {\n onBeforeMount(() => {\n for (const [key, value] of Object.entries(hooks.value)) {\n const listener = (data) => {\n emit(key, data);\n };\n value.fns.add(listener);\n tryOnScopeDispose(() => {\n value.off(listener);\n });\n }\n });\n}\nfunction useState() {\n return {\n vueFlowRef: null,\n viewportRef: null,\n nodes: [],\n edges: [],\n connectionLookup: /* @__PURE__ */ new Map(),\n nodeTypes: {},\n edgeTypes: {},\n initialized: false,\n dimensions: {\n width: 0,\n height: 0\n },\n viewport: { x: 0, y: 0, zoom: 1 },\n d3Zoom: null,\n d3Selection: null,\n d3ZoomHandler: null,\n minZoom: 0.5,\n maxZoom: 2,\n translateExtent: [\n [Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY],\n [Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY]\n ],\n nodeExtent: [\n [Number.NEGATIVE_INFINITY, Number.NEGATIVE_INFINITY],\n [Number.POSITIVE_INFINITY, Number.POSITIVE_INFINITY]\n ],\n selectionMode: SelectionMode.Full,\n paneDragging: false,\n preventScrolling: true,\n zoomOnScroll: true,\n zoomOnPinch: true,\n zoomOnDoubleClick: true,\n panOnScroll: false,\n panOnScrollSpeed: 0.5,\n panOnScrollMode: PanOnScrollMode.Free,\n paneClickDistance: 0,\n panOnDrag: true,\n edgeUpdaterRadius: 10,\n onlyRenderVisibleElements: false,\n defaultViewport: { x: 0, y: 0, zoom: 1 },\n nodesSelectionActive: false,\n userSelectionActive: false,\n userSelectionRect: null,\n defaultMarkerColor: \"#b1b1b7\",\n connectionLineStyle: {},\n connectionLineType: null,\n connectionLineOptions: {\n type: ConnectionLineType.Bezier,\n style: {}\n },\n connectionMode: ConnectionMode.Loose,\n connectionStartHandle: null,\n connectionEndHandle: null,\n connectionClickStartHandle: null,\n connectionPosition: { x: Number.NaN, y: Number.NaN },\n connectionRadius: 20,\n connectOnClick: true,\n connectionStatus: null,\n isValidConnection: null,\n snapGrid: [15, 15],\n snapToGrid: false,\n edgesUpdatable: false,\n edgesFocusable: true,\n nodesFocusable: true,\n nodesConnectable: true,\n nodesDraggable: true,\n nodeDragThreshold: 1,\n elementsSelectable: true,\n selectNodesOnDrag: true,\n multiSelectionActive: false,\n selectionKeyCode: \"Shift\",\n multiSelectionKeyCode: isMacOs() ? \"Meta\" : \"Control\",\n zoomActivationKeyCode: isMacOs() ? \"Meta\" : \"Control\",\n deleteKeyCode: \"Backspace\",\n panActivationKeyCode: \"Space\",\n hooks: createHooks(),\n applyDefault: true,\n autoConnect: false,\n fitViewOnInit: false,\n fitViewOnInitDone: false,\n noDragClassName: \"nodrag\",\n noWheelClassName: \"nowheel\",\n noPanClassName: \"nopan\",\n defaultEdgeOptions: void 0,\n elevateEdgesOnSelect: false,\n elevateNodesOnSelect: true,\n autoPanOnNodeDrag: true,\n autoPanOnConnect: true,\n autoPanSpeed: 15,\n disableKeyboardA11y: false,\n ariaLiveMessage: \"\"\n };\n}\nconst storeOptionsToSkip = [\n \"id\",\n \"vueFlowRef\",\n \"viewportRef\",\n \"initialized\",\n \"modelValue\",\n \"nodes\",\n \"edges\",\n \"maxZoom\",\n \"minZoom\",\n \"translateExtent\",\n \"hooks\",\n \"defaultEdgeOptions\"\n];\nfunction useActions(state, nodeLookup, edgeLookup) {\n const viewportHelper = useViewportHelper(state);\n const updateNodeInternals = (ids) => {\n const updateIds = ids ?? [];\n state.hooks.updateNodeInternals.trigger(updateIds);\n };\n const getIncomers$1 = (nodeOrId) => {\n return getIncomers(nodeOrId, state.nodes, state.edges);\n };\n const getOutgoers$1 = (nodeOrId) => {\n return getOutgoers(nodeOrId, state.nodes, state.edges);\n };\n const getConnectedEdges$1 = (nodesOrId) => {\n return getConnectedEdges(nodesOrId, state.edges);\n };\n const getHandleConnections = ({ id: id2, type, nodeId }) => {\n var _a;\n return Array.from(((_a = state.connectionLookup.get(`${nodeId}-${type}-${id2 ?? null}`)) == null ? void 0 : _a.values()) ?? []);\n };\n const findNode = (id2) => {\n if (!id2) {\n return;\n }\n return nodeLookup.value.get(id2);\n };\n const findEdge = (id2) => {\n if (!id2) {\n return;\n }\n return edgeLookup.value.get(id2);\n };\n const updateNodePositions = (dragItems, changed, dragging) => {\n var _a, _b;\n const changes = [];\n for (const node of dragItems) {\n const change = {\n id: node.id,\n type: \"position\",\n dragging,\n from: node.from\n };\n if (changed) {\n change.position = node.position;\n if (node.parentNode) {\n const parentNode = findNode(node.parentNode);\n change.position = {\n x: change.position.x - (((_a = parentNode == null ? void 0 : parentNode.computedPosition) == null ? void 0 : _a.x) ?? 0),\n y: change.position.y - (((_b = parentNode == null ? void 0 : parentNode.computedPosition) == null ? void 0 : _b.y) ?? 0)\n };\n }\n }\n changes.push(change);\n }\n if (changes == null ? void 0 : changes.length) {\n state.hooks.nodesChange.trigger(changes);\n }\n };\n const updateNodeDimensions = (updates) => {\n if (!state.vueFlowRef) {\n return;\n }\n const viewportNode = state.vueFlowRef.querySelector(\".vue-flow__transformationpane\");\n if (!viewportNode) {\n return;\n }\n const style = window.getComputedStyle(viewportNode);\n const { m22: zoom2 } = new window.DOMMatrixReadOnly(style.transform);\n const changes = [];\n for (const element of updates) {\n const update = element;\n const node = findNode(update.id);\n if (node) {\n const dimensions = getDimensions(update.nodeElement);\n const doUpdate = !!(dimensions.width && dimensions.height && (node.dimensions.width !== dimensions.width || node.dimensions.height !== dimensions.height || update.forceUpdate));\n if (doUpdate) {\n const nodeBounds = update.nodeElement.getBoundingClientRect();\n node.dimensions = dimensions;\n node.handleBounds.source = getHandleBounds(\"source\", update.nodeElement, nodeBounds, zoom2, node.id);\n node.handleBounds.target = getHandleBounds(\"target\", update.nodeElement, nodeBounds, zoom2, node.id);\n changes.push({\n id: node.id,\n type: \"dimensions\",\n dimensions\n });\n }\n }\n }\n if (!state.fitViewOnInitDone && state.fitViewOnInit) {\n viewportHelper.value.fitView().then(() => {\n state.fitViewOnInitDone = true;\n });\n }\n if (changes.length) {\n state.hooks.nodesChange.trigger(changes);\n }\n };\n const elementSelectionHandler = (elements, selected) => {\n const nodeIds = /* @__PURE__ */ new Set();\n const edgeIds = /* @__PURE__ */ new Set();\n for (const element of elements) {\n if (isNode(element)) {\n nodeIds.add(element.id);\n } else if (isEdge(element)) {\n edgeIds.add(element.id);\n }\n }\n const changedNodes = getSelectionChanges(nodeLookup.value, nodeIds, true);\n const changedEdges = getSelectionChanges(edgeLookup.value, edgeIds);\n if (state.multiSelectionActive) {\n for (const nodeId of nodeIds) {\n changedNodes.push(createSelectionChange(nodeId, selected));\n }\n for (const edgeId of edgeIds) {\n changedEdges.push(createSelectionChange(edgeId, selected));\n }\n }\n if (changedNodes.length) {\n state.hooks.nodesChange.trigger(changedNodes);\n }\n if (changedEdges.length) {\n state.hooks.edgesChange.trigger(changedEdges);\n }\n };\n const addSelectedNodes = (nodes) => {\n if (state.multiSelectionActive) {\n const nodeChanges = nodes.map((node) => createSelectionChange(node.id, true));\n state.hooks.nodesChange.trigger(nodeChanges);\n return;\n }\n state.hooks.nodesChange.trigger(getSelectionChanges(nodeLookup.value, new Set(nodes.map((n) => n.id)), true));\n state.hooks.edgesChange.trigger(getSelectionChanges(edgeLookup.value));\n };\n const addSelectedEdges = (edges) => {\n if (state.multiSelectionActive) {\n const changedEdges = edges.map((edge) => createSelectionChange(edge.id, true));\n state.hooks.edgesChange.trigger(changedEdges);\n return;\n }\n state.hooks.edgesChange.trigger(getSelectionChanges(edgeLookup.value, new Set(edges.map((e) => e.id))));\n state.hooks.nodesChange.trigger(getSelectionChanges(nodeLookup.value, /* @__PURE__ */ new Set(), true));\n };\n const addSelectedElements = (elements) => {\n elementSelectionHandler(elements, true);\n };\n const removeSelectedNodes = (nodes) => {\n const nodesToUnselect = nodes || state.nodes;\n const nodeChanges = nodesToUnselect.map((n) => {\n n.selected = false;\n return createSelectionChange(n.id, false);\n });\n state.hooks.nodesChange.trigger(nodeChanges);\n };\n const removeSelectedEdges = (edges) => {\n const edgesToUnselect = edges || state.edges;\n const edgeChanges = edgesToUnselect.map((e) => {\n e.selected = false;\n return createSelectionChange(e.id, false);\n });\n state.hooks.edgesChange.trigger(edgeChanges);\n };\n const removeSelectedElements = (elements) => {\n if (!elements || !elements.length) {\n return elementSelectionHandler([], false);\n }\n const changes = elements.reduce(\n (changes2, curr) => {\n const selectionChange = createSelectionChange(curr.id, false);\n if (isNode(curr)) {\n changes2.nodes.push(selectionChange);\n } else {\n changes2.edges.push(selectionChange);\n }\n return changes2;\n },\n { nodes: [], edges: [] }\n );\n if (changes.nodes.length) {\n state.hooks.nodesChange.trigger(changes.nodes);\n }\n if (changes.edges.length) {\n state.hooks.edgesChange.trigger(changes.edges);\n }\n };\n const setMinZoom = (minZoom) => {\n var _a;\n (_a = state.d3Zoom) == null ? void 0 : _a.scaleExtent([minZoom, state.maxZoom]);\n state.minZoom = minZoom;\n };\n const setMaxZoom = (maxZoom) => {\n var _a;\n (_a = state.d3Zoom) == null ? void 0 : _a.scaleExtent([state.minZoom, maxZoom]);\n state.maxZoom = maxZoom;\n };\n const setTranslateExtent = (translateExtent) => {\n var _a;\n (_a = state.d3Zoom) == null ? void 0 : _a.translateExtent(translateExtent);\n state.translateExtent = translateExtent;\n };\n const setNodeExtent = (nodeExtent) => {\n state.nodeExtent = nodeExtent;\n updateNodeInternals();\n };\n const setPaneClickDistance = (clickDistance) => {\n var _a;\n (_a = state.d3Zoom) == null ? void 0 : _a.clickDistance(clickDistance);\n };\n const setInteractive = (isInteractive) => {\n state.nodesDraggable = isInteractive;\n state.nodesConnectable = isInteractive;\n state.elementsSelectable = isInteractive;\n };\n const setNodes = (nodes) => {\n const nextNodes = nodes instanceof Function ? nodes(state.nodes) : nodes;\n if (!state.initialized && !nextNodes.length) {\n return;\n }\n state.nodes = createGraphNodes(nextNodes, findNode, state.hooks.error.trigger);\n };\n const setEdges = (edges) => {\n const nextEdges = edges instanceof Function ? edges(state.edges) : edges;\n if (!state.initialized && !nextEdges.length) {\n return;\n }\n const validEdges = createGraphEdges(\n nextEdges,\n state.isValidConnection,\n findNode,\n findEdge,\n state.hooks.error.trigger,\n state.defaultEdgeOptions,\n state.nodes,\n state.edges\n );\n updateConnectionLookup(state.connectionLookup, edgeLookup.value, validEdges);\n state.edges = validEdges;\n };\n const setElements = (elements) => {\n const nextElements = elements instanceof Function ? elements([...state.nodes, ...state.edges]) : elements;\n if (!state.initialized && !nextElements.length) {\n return;\n }\n setNodes(nextElements.filter(isNode));\n setEdges(nextElements.filter(isEdge));\n };\n const addNodes = (nodes) => {\n let nextNodes = nodes instanceof Function ? nodes(state.nodes) : nodes;\n nextNodes = Array.isArray(nextNodes) ? nextNodes : [nextNodes];\n const graphNodes = createGraphNodes(nextNodes, findNode, state.hooks.error.trigger);\n const changes = [];\n for (const node of graphNodes) {\n changes.push(createAdditionChange(node));\n }\n if (changes.length) {\n state.hooks.nodesChange.trigger(changes);\n }\n };\n const addEdges = (params) => {\n let nextEdges = params instanceof Function ? params(state.edges) : params;\n nextEdges = Array.isArray(nextEdges) ? nextEdges : [nextEdges];\n const validEdges = createGraphEdges(\n nextEdges,\n state.isValidConnection,\n findNode,\n findEdge,\n state.hooks.error.trigger,\n state.defaultEdgeOptions,\n state.nodes,\n state.edges\n );\n const changes = [];\n for (const edge of validEdges) {\n changes.push(createAdditionChange(edge));\n }\n if (changes.length) {\n state.hooks.edgesChange.trigger(changes);\n }\n };\n const removeNodes = (nodes, removeConnectedEdges = true, removeChildren = false) => {\n const nextNodes = nodes instanceof Function ? nodes(state.nodes) : nodes;\n const nodesToRemove = Array.isArray(nextNodes) ? nextNodes : [nextNodes];\n const nodeChanges = [];\n const edgeChanges = [];\n function createEdgeRemovalChanges(nodes2) {\n const connectedEdges = getConnectedEdges$1(nodes2);\n for (const edge of connectedEdges) {\n if (isDef(edge.deletable) ? edge.deletable : true) {\n edgeChanges.push(createEdgeRemoveChange(edge.id, edge.source, edge.target, edge.sourceHandle, edge.targetHandle));\n }\n }\n }\n function createChildrenRemovalChanges(id2) {\n const children2 = [];\n for (const node of state.nodes) {\n if (node.parentNode === id2) {\n children2.push(node);\n }\n }\n if (children2.length) {\n for (const child of children2) {\n nodeChanges.push(createNodeRemoveChange(child.id));\n }\n if (removeConnectedEdges) {\n createEdgeRemovalChanges(children2);\n }\n for (const child of children2) {\n createChildrenRemovalChanges(child.id);\n }\n }\n }\n for (const item of nodesToRemove) {\n const currNode = typeof item === \"string\" ? findNode(item) : item;\n if (!currNode) {\n continue;\n }\n if (isDef(currNode.deletable) && !currNode.deletable) {\n continue;\n }\n nodeChanges.push(createNodeRemoveChange(currNode.id));\n if (removeConnectedEdges) {\n createEdgeRemovalChanges([currNode]);\n }\n if (removeChildren) {\n createChildrenRemovalChanges(currNode.id);\n }\n }\n if (edgeChanges.length) {\n state.hooks.edgesChange.trigger(edgeChanges);\n }\n if (nodeChanges.length) {\n state.hooks.nodesChange.trigger(nodeChanges);\n }\n };\n const removeEdges = (edges) => {\n const nextEdges = edges instanceof Function ? edges(state.edges) : edges;\n const edgesToRemove = Array.isArray(nextEdges) ? nextEdges : [nextEdges];\n const changes = [];\n for (const item of edgesToRemove) {\n const currEdge = typeof item === \"string\" ? findEdge(item) : item;\n if (!currEdge) {\n continue;\n }\n if (isDef(currEdge.deletable) && !currEdge.deletable) {\n continue;\n }\n changes.push(\n createEdgeRemoveChange(\n typeof item === \"string\" ? item : item.id,\n currEdge.source,\n currEdge.target,\n currEdge.sourceHandle,\n currEdge.targetHandle\n )\n );\n }\n state.hooks.edgesChange.trigger(changes);\n };\n const updateEdge2 = (oldEdge, newConnection, shouldReplaceId = true) => {\n const prevEdge = findEdge(oldEdge.id);\n if (!prevEdge) {\n return false;\n }\n const prevEdgeIndex = state.edges.indexOf(prevEdge);\n const newEdge = updateEdgeAction(oldEdge, newConnection, prevEdge, shouldReplaceId, state.hooks.error.trigger);\n if (newEdge) {\n const [validEdge] = createGraphEdges(\n [newEdge],\n state.isValidConnection,\n findNode,\n findEdge,\n state.hooks.error.trigger,\n state.defaultEdgeOptions,\n state.nodes,\n state.edges\n );\n state.edges = state.edges.map((edge, index) => index === prevEdgeIndex ? validEdge : edge);\n updateConnectionLookup(state.connectionLookup, edgeLookup.value, [validEdge]);\n return validEdge;\n }\n return false;\n };\n const updateEdgeData = (id2, dataUpdate, options = { replace: false }) => {\n const edge = findEdge(id2);\n if (!edge) {\n return;\n }\n const nextData = typeof dataUpdate === \"function\" ? dataUpdate(edge) : dataUpdate;\n edge.data = options.replace ? nextData : { ...edge.data, ...nextData };\n };\n const applyNodeChanges2 = (changes) => {\n return applyChanges(changes, state.nodes);\n };\n const applyEdgeChanges2 = (changes) => {\n const changedEdges = applyChanges(changes, state.edges);\n updateConnectionLookup(state.connectionLookup, edgeLookup.value, changedEdges);\n return changedEdges;\n };\n const updateNode = (id2, nodeUpdate, options = { replace: false }) => {\n const node = findNode(id2);\n if (!node) {\n return;\n }\n const nextNode = typeof nodeUpdate === \"function\" ? nodeUpdate(node) : nodeUpdate;\n if (options.replace) {\n state.nodes.splice(state.nodes.indexOf(node), 1, nextNode);\n } else {\n Object.assign(node, nextNode);\n }\n };\n const updateNodeData = (id2, dataUpdate, options = { replace: false }) => {\n const node = findNode(id2);\n if (!node) {\n return;\n }\n const nextData = typeof dataUpdate === \"function\" ? dataUpdate(node) : dataUpdate;\n node.data = options.replace ? nextData : { ...node.data, ...nextData };\n };\n const startConnection = (startHandle, position, isClick = false) => {\n if (isClick) {\n state.connectionClickStartHandle = startHandle;\n } else {\n state.connectionStartHandle = startHandle;\n }\n state.connectionEndHandle = null;\n state.connectionStatus = null;\n if (position) {\n state.connectionPosition = position;\n }\n };\n const updateConnection = (position, result = null, status = null) => {\n if (state.connectionStartHandle) {\n state.connectionPosition = position;\n state.connectionEndHandle = result;\n state.connectionStatus = status;\n }\n };\n const endConnection = (event, isClick) => {\n state.connectionPosition = { x: Number.NaN, y: Number.NaN };\n state.connectionEndHandle = null;\n state.connectionStatus = null;\n if (isClick) {\n state.connectionClickStartHandle = null;\n } else {\n state.connectionStartHandle = null;\n }\n };\n const getNodeRect = (nodeOrRect) => {\n const isRectObj = isRect(nodeOrRect);\n const node = isRectObj ? null : isGraphNode(nodeOrRect) ? nodeOrRect : findNode(nodeOrRect.id);\n if (!isRectObj && !node) {\n return [null, null, isRectObj];\n }\n const nodeRect = isRectObj ? nodeOrRect : nodeToRect(node);\n return [nodeRect, node, isRectObj];\n };\n const getIntersectingNodes = (nodeOrRect, partially = true, nodes = state.nodes) => {\n const [nodeRect, node, isRect2] = getNodeRect(nodeOrRect);\n if (!nodeRect) {\n return [];\n }\n const intersections = [];\n for (const n of nodes || state.nodes) {\n if (!isRect2 && (n.id === node.id || !n.computedPosition)) {\n continue;\n }\n const currNodeRect = nodeToRect(n);\n const overlappingArea = getOverlappingArea(currNodeRect, nodeRect);\n const partiallyVisible = partially && overlappingArea > 0;\n if (partiallyVisible || overlappingArea >= Number(nodeRect.width) * Number(nodeRect.height)) {\n intersections.push(n);\n }\n }\n return intersections;\n };\n const isNodeIntersecting = (nodeOrRect, area, partially = true) => {\n const [nodeRect] = getNodeRect(nodeOrRect);\n if (!nodeRect) {\n return false;\n }\n const overlappingArea = getOverlappingArea(nodeRect, area);\n const partiallyVisible = partially && overlappingArea > 0;\n return partiallyVisible || overlappingArea >= Number(nodeRect.width) * Number(nodeRect.height);\n };\n const panBy = (delta) => {\n const { viewport, dimensions, d3Zoom, d3Selection, translateExtent } = state;\n if (!d3Zoom || !d3Selection || !delta.x && !delta.y) {\n return false;\n }\n const nextTransform = identity.translate(viewport.x + delta.x, viewport.y + delta.y).scale(viewport.zoom);\n const extent = [\n [0, 0],\n [dimensions.width, dimensions.height]\n ];\n const constrainedTransform = d3Zoom.constrain()(nextTransform, extent, translateExtent);\n const transformChanged = state.viewport.x !== constrainedTransform.x || state.viewport.y !== constrainedTransform.y || state.viewport.zoom !== constrainedTransform.k;\n d3Zoom.transform(d3Selection, constrainedTransform);\n return transformChanged;\n };\n const setState = (options) => {\n const opts = options instanceof Function ? options(state) : options;\n const exclude = [\n \"d3Zoom\",\n \"d3Selection\",\n \"d3ZoomHandler\",\n \"viewportRef\",\n \"vueFlowRef\",\n \"dimensions\",\n \"hooks\"\n ];\n if (isDef(opts.defaultEdgeOptions)) {\n state.defaultEdgeOptions = opts.defaultEdgeOptions;\n }\n const elements = opts.modelValue || opts.nodes || opts.edges ? [] : void 0;\n if (elements) {\n if (opts.modelValue) {\n elements.push(...opts.modelValue);\n }\n if (opts.nodes) {\n elements.push(...opts.nodes);\n }\n if (opts.edges) {\n elements.push(...opts.edges);\n }\n setElements(elements);\n }\n const setSkippedOptions = () => {\n if (isDef(opts.maxZoom)) {\n setMaxZoom(opts.maxZoom);\n }\n if (isDef(opts.minZoom)) {\n setMinZoom(opts.minZoom);\n }\n if (isDef(opts.translateExtent)) {\n setTranslateExtent(opts.translateExtent);\n }\n };\n for (const o of Object.keys(opts)) {\n const key = o;\n const option = opts[key];\n if (![...storeOptionsToSkip, ...exclude].includes(key) && isDef(option)) {\n state[key] = option;\n }\n }\n until(() => state.d3Zoom).not.toBeNull().then(setSkippedOptions);\n if (!state.initialized) {\n state.initialized = true;\n }\n };\n const toObject = () => {\n const nodes = [];\n const edges = [];\n for (const node of state.nodes) {\n const {\n computedPosition: _,\n handleBounds: __,\n selected: ___,\n dimensions: ____,\n isParent: _____,\n resizing: ______,\n dragging: _______,\n events: _________,\n ...rest\n } = node;\n nodes.push(rest);\n }\n for (const edge of state.edges) {\n const { selected: _, sourceNode: __, targetNode: ___, events: ____, ...rest } = edge;\n edges.push(rest);\n }\n return JSON.parse(\n JSON.stringify({\n nodes,\n edges,\n position: [state.viewport.x, state.viewport.y],\n zoom: state.viewport.zoom,\n viewport: state.viewport\n })\n );\n };\n const fromObject = (obj) => {\n return new Promise((resolve) => {\n const { nodes, edges, position, zoom: zoom2, viewport } = obj;\n if (nodes) {\n setNodes(nodes);\n }\n if (edges) {\n setEdges(edges);\n }\n if ((viewport == null ? void 0 : viewport.x) && (viewport == null ? void 0 : viewport.y) || position) {\n const x = (viewport == null ? void 0 : viewport.x) || position[0];\n const y = (viewport == null ? void 0 : viewport.y) || position[1];\n const nextZoom = (viewport == null ? void 0 : viewport.zoom) || zoom2 || state.viewport.zoom;\n return until(() => viewportHelper.value.viewportInitialized).toBe(true).then(() => {\n viewportHelper.value.setViewport({\n x,\n y,\n zoom: nextZoom\n }).then(() => {\n resolve(true);\n });\n });\n } else {\n resolve(true);\n }\n });\n };\n const $reset = () => {\n const resetState = useState();\n state.edges = [];\n state.nodes = [];\n if (state.d3Zoom && state.d3Selection) {\n const updatedTransform = identity.translate(resetState.defaultViewport.x ?? 0, resetState.defaultViewport.y ?? 0).scale(clamp(resetState.defaultViewport.zoom ?? 1, resetState.minZoom, resetState.maxZoom));\n const bbox = state.viewportRef.getBoundingClientRect();\n const extent = [\n [0, 0],\n [bbox.width, bbox.height]\n ];\n const constrainedTransform = state.d3Zoom.constrain()(updatedTransform, extent, resetState.translateExtent);\n state.d3Zoom.transform(state.d3Selection, constrainedTransform);\n }\n setState(resetState);\n };\n return {\n updateNodePositions,\n updateNodeDimensions,\n setElements,\n setNodes,\n setEdges,\n addNodes,\n addEdges,\n removeNodes,\n removeEdges,\n findNode,\n findEdge,\n updateEdge: updateEdge2,\n updateEdgeData,\n updateNode,\n updateNodeData,\n applyEdgeChanges: applyEdgeChanges2,\n applyNodeChanges: applyNodeChanges2,\n addSelectedElements,\n addSelectedNodes,\n addSelectedEdges,\n setMinZoom,\n setMaxZoom,\n setTranslateExtent,\n setNodeExtent,\n setPaneClickDistance,\n removeSelectedElements,\n removeSelectedNodes,\n removeSelectedEdges,\n startConnection,\n updateConnection,\n endConnection,\n setInteractive,\n setState,\n getIntersectingNodes,\n getIncomers: getIncomers$1,\n getOutgoers: getOutgoers$1,\n getConnectedEdges: getConnectedEdges$1,\n getHandleConnections,\n isNodeIntersecting,\n panBy,\n fitView: (params) => viewportHelper.value.fitView(params),\n zoomIn: (transitionOpts) => viewportHelper.value.zoomIn(transitionOpts),\n zoomOut: (transitionOpts) => viewportHelper.value.zoomOut(transitionOpts),\n zoomTo: (zoomLevel, transitionOpts) => viewportHelper.value.zoomTo(zoomLevel, transitionOpts),\n setViewport: (params, transitionOpts) => viewportHelper.value.setViewport(params, transitionOpts),\n setTransform: (params, transitionOpts) => viewportHelper.value.setTransform(params, transitionOpts),\n getViewport: () => viewportHelper.value.getViewport(),\n getTransform: () => viewportHelper.value.getTransform(),\n setCenter: (x, y, opts) => viewportHelper.value.setCenter(x, y, opts),\n fitBounds: (params, opts) => viewportHelper.value.fitBounds(params, opts),\n project: (params) => viewportHelper.value.project(params),\n screenToFlowCoordinate: (params) => viewportHelper.value.screenToFlowCoordinate(params),\n flowToScreenCoordinate: (params) => viewportHelper.value.flowToScreenCoordinate(params),\n toObject,\n fromObject,\n updateNodeInternals,\n viewportHelper,\n $reset,\n $destroy: () => {\n }\n };\n}\nconst _hoisted_1$9 = [\"data-id\", \"data-handleid\", \"data-nodeid\", \"data-handlepos\"];\nconst __default__$f = {\n name: \"Handle\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$f = /* @__PURE__ */ defineComponent({\n ...__default__$f,\n props: {\n id: { default: null },\n type: {},\n position: { default: () => Position.Top },\n isValidConnection: { type: Function },\n connectable: { type: [Boolean, Number, String, Function], default: void 0 },\n connectableStart: { type: Boolean, default: true },\n connectableEnd: { type: Boolean, default: true }\n },\n setup(__props, { expose: __expose }) {\n const props = createPropsRestProxy(__props, [\"position\", \"connectable\", \"connectableStart\", \"connectableEnd\", \"id\"]);\n const type = toRef(() => props.type ?? \"source\");\n const isValidConnection = toRef(() => props.isValidConnection ?? null);\n const {\n id: flowId,\n connectionStartHandle,\n connectionClickStartHandle,\n connectionEndHandle,\n vueFlowRef,\n nodesConnectable,\n noDragClassName,\n noPanClassName\n } = useVueFlow();\n const { id: nodeId, node, nodeEl, connectedEdges } = useNode();\n const handle = ref();\n const isConnectableStart = toRef(() => typeof __props.connectableStart !== \"undefined\" ? __props.connectableStart : true);\n const isConnectableEnd = toRef(() => typeof __props.connectableEnd !== \"undefined\" ? __props.connectableEnd : true);\n const isConnecting = toRef(\n () => {\n var _a, _b, _c, _d, _e, _f;\n return ((_a = connectionStartHandle.value) == null ? void 0 : _a.nodeId) === nodeId && ((_b = connectionStartHandle.value) == null ? void 0 : _b.id) === __props.id && ((_c = connectionStartHandle.value) == null ? void 0 : _c.type) === type.value || ((_d = connectionEndHandle.value) == null ? void 0 : _d.nodeId) === nodeId && ((_e = connectionEndHandle.value) == null ? void 0 : _e.id) === __props.id && ((_f = connectionEndHandle.value) == null ? void 0 : _f.type) === type.value;\n }\n );\n const isClickConnecting = toRef(\n () => {\n var _a, _b, _c;\n return ((_a = connectionClickStartHandle.value) == null ? void 0 : _a.nodeId) === nodeId && ((_b = connectionClickStartHandle.value) == null ? void 0 : _b.id) === __props.id && ((_c = connectionClickStartHandle.value) == null ? void 0 : _c.type) === type.value;\n }\n );\n const { handlePointerDown, handleClick } = useHandle({\n nodeId,\n handleId: __props.id,\n isValidConnection,\n type\n });\n const isConnectable = computed(() => {\n if (typeof __props.connectable === \"string\" && __props.connectable === \"single\") {\n return !connectedEdges.value.some((edge) => {\n const id2 = edge[`${type.value}Handle`];\n if (edge[type.value] !== nodeId) {\n return false;\n }\n return id2 ? id2 === __props.id : true;\n });\n }\n if (typeof __props.connectable === \"number\") {\n return connectedEdges.value.filter((edge) => {\n const id2 = edge[`${type.value}Handle`];\n if (edge[type.value] !== nodeId) {\n return false;\n }\n return id2 ? id2 === __props.id : true;\n }).length < __props.connectable;\n }\n if (typeof __props.connectable === \"function\") {\n return __props.connectable(node, connectedEdges.value);\n }\n return isDef(__props.connectable) ? __props.connectable : nodesConnectable.value;\n });\n onMounted(() => {\n var _a;\n if (!node.dimensions.width || !node.dimensions.height) {\n return;\n }\n const existingBounds = (_a = node.handleBounds[type.value]) == null ? void 0 : _a.find((b) => b.id === __props.id);\n if (!vueFlowRef.value || existingBounds) {\n return;\n }\n const viewportNode = vueFlowRef.value.querySelector(\".vue-flow__transformationpane\");\n if (!nodeEl.value || !handle.value || !viewportNode || !__props.id) {\n return;\n }\n const nodeBounds = nodeEl.value.getBoundingClientRect();\n const handleBounds = handle.value.getBoundingClientRect();\n const style = window.getComputedStyle(viewportNode);\n const { m22: zoom2 } = new window.DOMMatrixReadOnly(style.transform);\n const nextBounds = {\n id: __props.id,\n position: __props.position,\n x: (handleBounds.left - nodeBounds.left) / zoom2,\n y: (handleBounds.top - nodeBounds.top) / zoom2,\n type: type.value,\n nodeId,\n ...getDimensions(handle.value)\n };\n node.handleBounds[type.value] = [...node.handleBounds[type.value] ?? [], nextBounds];\n });\n function onPointerDown(event) {\n const isMouseTriggered = isMouseEvent(event);\n if (isConnectable.value && isConnectableStart.value && (isMouseTriggered && event.button === 0 || !isMouseTriggered)) {\n handlePointerDown(event);\n }\n }\n function onClick(event) {\n if (!nodeId || !connectionClickStartHandle.value && !isConnectableStart.value) {\n return;\n }\n if (isConnectable.value) {\n handleClick(event);\n }\n }\n __expose({\n handleClick,\n handlePointerDown,\n onClick,\n onPointerDown\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n ref_key: \"handle\",\n ref: handle,\n \"data-id\": `${unref(flowId)}-${unref(nodeId)}-${__props.id}-${type.value}`,\n \"data-handleid\": __props.id,\n \"data-nodeid\": unref(nodeId),\n \"data-handlepos\": _ctx.position,\n class: normalizeClass([\"vue-flow__handle\", [\n `vue-flow__handle-${_ctx.position}`,\n `vue-flow__handle-${__props.id}`,\n unref(noDragClassName),\n unref(noPanClassName),\n type.value,\n {\n connectable: isConnectable.value,\n connecting: isClickConnecting.value,\n connectablestart: isConnectableStart.value,\n connectableend: isConnectableEnd.value,\n connectionindicator: isConnectable.value && (isConnectableStart.value && !isConnecting.value || isConnectableEnd.value && isConnecting.value)\n }\n ]]),\n onMousedown: onPointerDown,\n onTouchstartPassive: onPointerDown,\n onClick\n }, [\n renderSlot(_ctx.$slots, \"default\", { id: _ctx.id })\n ], 42, _hoisted_1$9);\n };\n }\n});\nconst DefaultNode = function({\n sourcePosition = Position.Bottom,\n targetPosition = Position.Top,\n label: _label,\n connectable = true,\n isValidTargetPos,\n isValidSourcePos,\n data\n}) {\n const label = data.label ?? _label;\n return [\n h(_sfc_main$f, { type: \"target\", position: targetPosition, connectable, isValidConnection: isValidTargetPos }),\n typeof label !== \"string\" && label ? h(label) : h(Fragment, [label]),\n h(_sfc_main$f, { type: \"source\", position: sourcePosition, connectable, isValidConnection: isValidSourcePos })\n ];\n};\nDefaultNode.props = [\"sourcePosition\", \"targetPosition\", \"label\", \"isValidTargetPos\", \"isValidSourcePos\", \"connectable\", \"data\"];\nDefaultNode.inheritAttrs = false;\nDefaultNode.compatConfig = { MODE: 3 };\nconst DefaultNode$1 = DefaultNode;\nconst OutputNode = function({\n targetPosition = Position.Top,\n label: _label,\n connectable = true,\n isValidTargetPos,\n data\n}) {\n const label = data.label ?? _label;\n return [\n h(_sfc_main$f, { type: \"target\", position: targetPosition, connectable, isValidConnection: isValidTargetPos }),\n typeof label !== \"string\" && label ? h(label) : h(Fragment, [label])\n ];\n};\nOutputNode.props = [\"targetPosition\", \"label\", \"isValidTargetPos\", \"connectable\", \"data\"];\nOutputNode.inheritAttrs = false;\nOutputNode.compatConfig = { MODE: 3 };\nconst OutputNode$1 = OutputNode;\nconst InputNode = function({\n sourcePosition = Position.Bottom,\n label: _label,\n connectable = true,\n isValidSourcePos,\n data\n}) {\n const label = data.label ?? _label;\n return [\n typeof label !== \"string\" && label ? h(label) : h(Fragment, [label]),\n h(_sfc_main$f, { type: \"source\", position: sourcePosition, connectable, isValidConnection: isValidSourcePos })\n ];\n};\nInputNode.props = [\"sourcePosition\", \"label\", \"isValidSourcePos\", \"connectable\", \"data\"];\nInputNode.inheritAttrs = false;\nInputNode.compatConfig = { MODE: 3 };\nconst InputNode$1 = InputNode;\nconst _hoisted_1$8 = [\"transform\"];\nconst _hoisted_2$2 = [\"width\", \"height\", \"x\", \"y\", \"rx\", \"ry\"];\nconst _hoisted_3$1 = [\"y\"];\nconst __default__$e = {\n name: \"EdgeText\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$e = /* @__PURE__ */ defineComponent({\n ...__default__$e,\n props: {\n x: {},\n y: {},\n label: {},\n labelStyle: { default: () => ({}) },\n labelShowBg: { type: Boolean, default: true },\n labelBgStyle: { default: () => ({}) },\n labelBgPadding: { default: () => [2, 4] },\n labelBgBorderRadius: { default: 2 }\n },\n setup(__props) {\n const box = ref({ x: 0, y: 0, width: 0, height: 0 });\n const el = ref(null);\n const transform = computed(() => `translate(${__props.x - box.value.width / 2} ${__props.y - box.value.height / 2})`);\n onMounted(getBox);\n watch([() => __props.x, () => __props.y, el, () => __props.label], getBox);\n function getBox() {\n if (!el.value) {\n return;\n }\n const nextBox = el.value.getBBox();\n if (nextBox.width !== box.value.width || nextBox.height !== box.value.height) {\n box.value = nextBox;\n }\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"g\", {\n transform: transform.value,\n class: \"vue-flow__edge-textwrapper\"\n }, [\n _ctx.labelShowBg ? (openBlock(), createElementBlock(\"rect\", {\n key: 0,\n class: \"vue-flow__edge-textbg\",\n width: `${box.value.width + 2 * _ctx.labelBgPadding[0]}px`,\n height: `${box.value.height + 2 * _ctx.labelBgPadding[1]}px`,\n x: -_ctx.labelBgPadding[0],\n y: -_ctx.labelBgPadding[1],\n style: normalizeStyle(_ctx.labelBgStyle),\n rx: _ctx.labelBgBorderRadius,\n ry: _ctx.labelBgBorderRadius\n }, null, 12, _hoisted_2$2)) : createCommentVNode(\"\", true),\n createElementVNode(\"text\", mergeProps(_ctx.$attrs, {\n ref_key: \"el\",\n ref: el,\n class: \"vue-flow__edge-text\",\n y: box.value.height / 2,\n dy: \"0.3em\",\n style: _ctx.labelStyle\n }), [\n renderSlot(_ctx.$slots, \"default\", {}, () => [\n typeof _ctx.label !== \"string\" ? (openBlock(), createBlock(resolveDynamicComponent(_ctx.label), { key: 0 })) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [\n createTextVNode(toDisplayString(_ctx.label), 1)\n ], 64))\n ])\n ], 16, _hoisted_3$1)\n ], 8, _hoisted_1$8);\n };\n }\n});\nconst _hoisted_1$7 = [\"id\", \"d\", \"marker-end\", \"marker-start\"];\nconst _hoisted_2$1 = [\"d\", \"stroke-width\"];\nconst __default__$d = {\n name: \"BaseEdge\",\n inheritAttrs: false,\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$d = /* @__PURE__ */ defineComponent({\n ...__default__$d,\n props: {\n id: {},\n labelX: {},\n labelY: {},\n path: {},\n label: {},\n markerStart: {},\n markerEnd: {},\n interactionWidth: { default: 20 },\n labelStyle: {},\n labelShowBg: { type: Boolean },\n labelBgStyle: {},\n labelBgPadding: {},\n labelBgBorderRadius: {}\n },\n setup(__props, { expose: __expose }) {\n const pathEl = ref(null);\n const interactionEl = ref(null);\n const labelEl = ref(null);\n const attrs = useAttrs();\n __expose({\n pathEl,\n interactionEl,\n labelEl\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(Fragment, null, [\n createElementVNode(\"path\", mergeProps(unref(attrs), {\n id: _ctx.id,\n ref_key: \"pathEl\",\n ref: pathEl,\n d: _ctx.path,\n class: \"vue-flow__edge-path\",\n \"marker-end\": _ctx.markerEnd,\n \"marker-start\": _ctx.markerStart\n }), null, 16, _hoisted_1$7),\n _ctx.interactionWidth ? (openBlock(), createElementBlock(\"path\", {\n key: 0,\n ref_key: \"interactionEl\",\n ref: interactionEl,\n fill: \"none\",\n d: _ctx.path,\n \"stroke-width\": _ctx.interactionWidth,\n \"stroke-opacity\": 0,\n class: \"vue-flow__edge-interaction\"\n }, null, 8, _hoisted_2$1)) : createCommentVNode(\"\", true),\n _ctx.label && _ctx.labelX && _ctx.labelY ? (openBlock(), createBlock(_sfc_main$e, {\n key: 1,\n ref_key: \"labelEl\",\n ref: labelEl,\n x: _ctx.labelX,\n y: _ctx.labelY,\n label: _ctx.label,\n \"label-show-bg\": _ctx.labelShowBg,\n \"label-bg-style\": _ctx.labelBgStyle,\n \"label-bg-padding\": _ctx.labelBgPadding,\n \"label-bg-border-radius\": _ctx.labelBgBorderRadius,\n \"label-style\": _ctx.labelStyle\n }, null, 8, [\"x\", \"y\", \"label\", \"label-show-bg\", \"label-bg-style\", \"label-bg-padding\", \"label-bg-border-radius\", \"label-style\"])) : createCommentVNode(\"\", true)\n ], 64);\n };\n }\n});\nfunction getSimpleEdgeCenter({\n sourceX,\n sourceY,\n targetX,\n targetY\n}) {\n const xOffset = Math.abs(targetX - sourceX) / 2;\n const centerX = targetX < sourceX ? targetX + xOffset : targetX - xOffset;\n const yOffset = Math.abs(targetY - sourceY) / 2;\n const centerY = targetY < sourceY ? targetY + yOffset : targetY - yOffset;\n return [centerX, centerY, xOffset, yOffset];\n}\nfunction getBezierEdgeCenter({\n sourceX,\n sourceY,\n targetX,\n targetY,\n sourceControlX,\n sourceControlY,\n targetControlX,\n targetControlY\n}) {\n const centerX = sourceX * 0.125 + sourceControlX * 0.375 + targetControlX * 0.375 + targetX * 0.125;\n const centerY = sourceY * 0.125 + sourceControlY * 0.375 + targetControlY * 0.375 + targetY * 0.125;\n const offsetX = Math.abs(centerX - sourceX);\n const offsetY = Math.abs(centerY - sourceY);\n return [centerX, centerY, offsetX, offsetY];\n}\nfunction calculateControlOffset(distance2, curvature) {\n if (distance2 >= 0) {\n return 0.5 * distance2;\n } else {\n return curvature * 25 * Math.sqrt(-distance2);\n }\n}\nfunction getControlWithCurvature({ pos, x1, y1, x2, y2, c }) {\n let ctX, ctY;\n switch (pos) {\n case Position.Left:\n ctX = x1 - calculateControlOffset(x1 - x2, c);\n ctY = y1;\n break;\n case Position.Right:\n ctX = x1 + calculateControlOffset(x2 - x1, c);\n ctY = y1;\n break;\n case Position.Top:\n ctX = x1;\n ctY = y1 - calculateControlOffset(y1 - y2, c);\n break;\n case Position.Bottom:\n ctX = x1;\n ctY = y1 + calculateControlOffset(y2 - y1, c);\n break;\n }\n return [ctX, ctY];\n}\nfunction getBezierPath(bezierPathParams) {\n const {\n sourceX,\n sourceY,\n sourcePosition = Position.Bottom,\n targetX,\n targetY,\n targetPosition = Position.Top,\n curvature = 0.25\n } = bezierPathParams;\n const [sourceControlX, sourceControlY] = getControlWithCurvature({\n pos: sourcePosition,\n x1: sourceX,\n y1: sourceY,\n x2: targetX,\n y2: targetY,\n c: curvature\n });\n const [targetControlX, targetControlY] = getControlWithCurvature({\n pos: targetPosition,\n x1: targetX,\n y1: targetY,\n x2: sourceX,\n y2: sourceY,\n c: curvature\n });\n const [labelX, labelY, offsetX, offsetY] = getBezierEdgeCenter({\n sourceX,\n sourceY,\n targetX,\n targetY,\n sourceControlX,\n sourceControlY,\n targetControlX,\n targetControlY\n });\n return [\n `M${sourceX},${sourceY} C${sourceControlX},${sourceControlY} ${targetControlX},${targetControlY} ${targetX},${targetY}`,\n labelX,\n labelY,\n offsetX,\n offsetY\n ];\n}\nfunction getControl({ pos, x1, y1, x2, y2 }) {\n let ctX, ctY;\n switch (pos) {\n case Position.Left:\n case Position.Right:\n ctX = 0.5 * (x1 + x2);\n ctY = y1;\n break;\n case Position.Top:\n case Position.Bottom:\n ctX = x1;\n ctY = 0.5 * (y1 + y2);\n break;\n }\n return [ctX, ctY];\n}\nfunction getSimpleBezierPath(simpleBezierPathParams) {\n const {\n sourceX,\n sourceY,\n sourcePosition = Position.Bottom,\n targetX,\n targetY,\n targetPosition = Position.Top\n } = simpleBezierPathParams;\n const [sourceControlX, sourceControlY] = getControl({\n pos: sourcePosition,\n x1: sourceX,\n y1: sourceY,\n x2: targetX,\n y2: targetY\n });\n const [targetControlX, targetControlY] = getControl({\n pos: targetPosition,\n x1: targetX,\n y1: targetY,\n x2: sourceX,\n y2: sourceY\n });\n const [centerX, centerY, offsetX, offsetY] = getBezierEdgeCenter({\n sourceX,\n sourceY,\n targetX,\n targetY,\n sourceControlX,\n sourceControlY,\n targetControlX,\n targetControlY\n });\n return [\n `M${sourceX},${sourceY} C${sourceControlX},${sourceControlY} ${targetControlX},${targetControlY} ${targetX},${targetY}`,\n centerX,\n centerY,\n offsetX,\n offsetY\n ];\n}\nconst handleDirections = {\n [Position.Left]: { x: -1, y: 0 },\n [Position.Right]: { x: 1, y: 0 },\n [Position.Top]: { x: 0, y: -1 },\n [Position.Bottom]: { x: 0, y: 1 }\n};\nfunction getDirection({\n source,\n sourcePosition = Position.Bottom,\n target\n}) {\n if (sourcePosition === Position.Left || sourcePosition === Position.Right) {\n return source.x < target.x ? { x: 1, y: 0 } : { x: -1, y: 0 };\n }\n return source.y < target.y ? { x: 0, y: 1 } : { x: 0, y: -1 };\n}\nfunction distance(a, b) {\n return Math.sqrt((b.x - a.x) ** 2 + (b.y - a.y) ** 2);\n}\nfunction getPoints({\n source,\n sourcePosition = Position.Bottom,\n target,\n targetPosition = Position.Top,\n center,\n offset\n}) {\n const sourceDir = handleDirections[sourcePosition];\n const targetDir = handleDirections[targetPosition];\n const sourceGapped = { x: source.x + sourceDir.x * offset, y: source.y + sourceDir.y * offset };\n const targetGapped = { x: target.x + targetDir.x * offset, y: target.y + targetDir.y * offset };\n const dir = getDirection({\n source: sourceGapped,\n sourcePosition,\n target: targetGapped\n });\n const dirAccessor = dir.x !== 0 ? \"x\" : \"y\";\n const currDir = dir[dirAccessor];\n let points;\n let centerX, centerY;\n const sourceGapOffset = { x: 0, y: 0 };\n const targetGapOffset = { x: 0, y: 0 };\n const [defaultCenterX, defaultCenterY, defaultOffsetX, defaultOffsetY] = getSimpleEdgeCenter({\n sourceX: source.x,\n sourceY: source.y,\n targetX: target.x,\n targetY: target.y\n });\n if (sourceDir[dirAccessor] * targetDir[dirAccessor] === -1) {\n centerX = center.x ?? defaultCenterX;\n centerY = center.y ?? defaultCenterY;\n const verticalSplit = [\n { x: centerX, y: sourceGapped.y },\n { x: centerX, y: targetGapped.y }\n ];\n const horizontalSplit = [\n { x: sourceGapped.x, y: centerY },\n { x: targetGapped.x, y: centerY }\n ];\n if (sourceDir[dirAccessor] === currDir) {\n points = dirAccessor === \"x\" ? verticalSplit : horizontalSplit;\n } else {\n points = dirAccessor === \"x\" ? horizontalSplit : verticalSplit;\n }\n } else {\n const sourceTarget = [{ x: sourceGapped.x, y: targetGapped.y }];\n const targetSource = [{ x: targetGapped.x, y: sourceGapped.y }];\n if (dirAccessor === \"x\") {\n points = sourceDir.x === currDir ? targetSource : sourceTarget;\n } else {\n points = sourceDir.y === currDir ? sourceTarget : targetSource;\n }\n if (sourcePosition === targetPosition) {\n const diff = Math.abs(source[dirAccessor] - target[dirAccessor]);\n if (diff <= offset) {\n const gapOffset = Math.min(offset - 1, offset - diff);\n if (sourceDir[dirAccessor] === currDir) {\n sourceGapOffset[dirAccessor] = (sourceGapped[dirAccessor] > source[dirAccessor] ? -1 : 1) * gapOffset;\n } else {\n targetGapOffset[dirAccessor] = (targetGapped[dirAccessor] > target[dirAccessor] ? -1 : 1) * gapOffset;\n }\n }\n }\n if (sourcePosition !== targetPosition) {\n const dirAccessorOpposite = dirAccessor === \"x\" ? \"y\" : \"x\";\n const isSameDir = sourceDir[dirAccessor] === targetDir[dirAccessorOpposite];\n const sourceGtTargetOppo = sourceGapped[dirAccessorOpposite] > targetGapped[dirAccessorOpposite];\n const sourceLtTargetOppo = sourceGapped[dirAccessorOpposite] < targetGapped[dirAccessorOpposite];\n const flipSourceTarget = sourceDir[dirAccessor] === 1 && (!isSameDir && sourceGtTargetOppo || isSameDir && sourceLtTargetOppo) || sourceDir[dirAccessor] !== 1 && (!isSameDir && sourceLtTargetOppo || isSameDir && sourceGtTargetOppo);\n if (flipSourceTarget) {\n points = dirAccessor === \"x\" ? sourceTarget : targetSource;\n }\n }\n const sourceGapPoint = { x: sourceGapped.x + sourceGapOffset.x, y: sourceGapped.y + sourceGapOffset.y };\n const targetGapPoint = { x: targetGapped.x + targetGapOffset.x, y: targetGapped.y + targetGapOffset.y };\n const maxXDistance = Math.max(Math.abs(sourceGapPoint.x - points[0].x), Math.abs(targetGapPoint.x - points[0].x));\n const maxYDistance = Math.max(Math.abs(sourceGapPoint.y - points[0].y), Math.abs(targetGapPoint.y - points[0].y));\n if (maxXDistance >= maxYDistance) {\n centerX = (sourceGapPoint.x + targetGapPoint.x) / 2;\n centerY = points[0].y;\n } else {\n centerX = points[0].x;\n centerY = (sourceGapPoint.y + targetGapPoint.y) / 2;\n }\n }\n const pathPoints = [\n source,\n { x: sourceGapped.x + sourceGapOffset.x, y: sourceGapped.y + sourceGapOffset.y },\n ...points,\n { x: targetGapped.x + targetGapOffset.x, y: targetGapped.y + targetGapOffset.y },\n target\n ];\n return [pathPoints, centerX, centerY, defaultOffsetX, defaultOffsetY];\n}\nfunction getBend(a, b, c, size) {\n const bendSize = Math.min(distance(a, b) / 2, distance(b, c) / 2, size);\n const { x, y } = b;\n if (a.x === x && x === c.x || a.y === y && y === c.y) {\n return `L${x} ${y}`;\n }\n if (a.y === y) {\n const xDir2 = a.x < c.x ? -1 : 1;\n const yDir2 = a.y < c.y ? 1 : -1;\n return `L ${x + bendSize * xDir2},${y}Q ${x},${y} ${x},${y + bendSize * yDir2}`;\n }\n const xDir = a.x < c.x ? 1 : -1;\n const yDir = a.y < c.y ? -1 : 1;\n return `L ${x},${y + bendSize * yDir}Q ${x},${y} ${x + bendSize * xDir},${y}`;\n}\nfunction getSmoothStepPath(smoothStepPathParams) {\n const {\n sourceX,\n sourceY,\n sourcePosition = Position.Bottom,\n targetX,\n targetY,\n targetPosition = Position.Top,\n borderRadius = 5,\n centerX,\n centerY,\n offset = 20\n } = smoothStepPathParams;\n const [points, labelX, labelY, offsetX, offsetY] = getPoints({\n source: { x: sourceX, y: sourceY },\n sourcePosition,\n target: { x: targetX, y: targetY },\n targetPosition,\n center: { x: centerX, y: centerY },\n offset\n });\n const path = points.reduce((res, p, i) => {\n let segment;\n if (i > 0 && i < points.length - 1) {\n segment = getBend(points[i - 1], p, points[i + 1], borderRadius);\n } else {\n segment = `${i === 0 ? \"M\" : \"L\"}${p.x} ${p.y}`;\n }\n res += segment;\n return res;\n }, \"\");\n return [path, labelX, labelY, offsetX, offsetY];\n}\nfunction getStraightPath(straightEdgeParams) {\n const { sourceX, sourceY, targetX, targetY } = straightEdgeParams;\n const [centerX, centerY, offsetX, offsetY] = getSimpleEdgeCenter({\n sourceX,\n sourceY,\n targetX,\n targetY\n });\n return [`M ${sourceX},${sourceY}L ${targetX},${targetY}`, centerX, centerY, offsetX, offsetY];\n}\nconst StraightEdge = defineComponent({\n name: \"StraightEdge\",\n props: [\n \"label\",\n \"labelStyle\",\n \"labelShowBg\",\n \"labelBgStyle\",\n \"labelBgPadding\",\n \"labelBgBorderRadius\",\n \"sourceY\",\n \"sourceX\",\n \"targetX\",\n \"targetY\",\n \"markerEnd\",\n \"markerStart\",\n \"interactionWidth\"\n ],\n compatConfig: { MODE: 3 },\n setup(props, { attrs }) {\n return () => {\n const [path, labelX, labelY] = getStraightPath(props);\n return h(_sfc_main$d, {\n path,\n labelX,\n labelY,\n ...attrs,\n ...props\n });\n };\n }\n});\nconst StraightEdge$1 = StraightEdge;\nconst SmoothStepEdge = defineComponent({\n name: \"SmoothStepEdge\",\n props: [\n \"sourcePosition\",\n \"targetPosition\",\n \"label\",\n \"labelStyle\",\n \"labelShowBg\",\n \"labelBgStyle\",\n \"labelBgPadding\",\n \"labelBgBorderRadius\",\n \"sourceY\",\n \"sourceX\",\n \"targetX\",\n \"targetY\",\n \"borderRadius\",\n \"markerEnd\",\n \"markerStart\",\n \"interactionWidth\",\n \"offset\"\n ],\n compatConfig: { MODE: 3 },\n setup(props, { attrs }) {\n return () => {\n const [path, labelX, labelY] = getSmoothStepPath({\n ...props,\n sourcePosition: props.sourcePosition ?? Position.Bottom,\n targetPosition: props.targetPosition ?? Position.Top\n });\n return h(_sfc_main$d, {\n path,\n labelX,\n labelY,\n ...attrs,\n ...props\n });\n };\n }\n});\nconst SmoothStepEdge$1 = SmoothStepEdge;\nconst StepEdge = defineComponent({\n name: \"StepEdge\",\n props: [\n \"sourcePosition\",\n \"targetPosition\",\n \"label\",\n \"labelStyle\",\n \"labelShowBg\",\n \"labelBgStyle\",\n \"labelBgPadding\",\n \"labelBgBorderRadius\",\n \"sourceY\",\n \"sourceX\",\n \"targetX\",\n \"targetY\",\n \"markerEnd\",\n \"markerStart\",\n \"interactionWidth\"\n ],\n setup(props, { attrs }) {\n return () => h(SmoothStepEdge$1, { ...props, ...attrs, borderRadius: 0 });\n }\n});\nconst StepEdge$1 = StepEdge;\nconst BezierEdge = defineComponent({\n name: \"BezierEdge\",\n props: [\n \"sourcePosition\",\n \"targetPosition\",\n \"label\",\n \"labelStyle\",\n \"labelShowBg\",\n \"labelBgStyle\",\n \"labelBgPadding\",\n \"labelBgBorderRadius\",\n \"sourceY\",\n \"sourceX\",\n \"targetX\",\n \"targetY\",\n \"curvature\",\n \"markerEnd\",\n \"markerStart\",\n \"interactionWidth\"\n ],\n compatConfig: { MODE: 3 },\n setup(props, { attrs }) {\n return () => {\n const [path, labelX, labelY] = getBezierPath({\n ...props,\n sourcePosition: props.sourcePosition ?? Position.Bottom,\n targetPosition: props.targetPosition ?? Position.Top\n });\n return h(_sfc_main$d, {\n path,\n labelX,\n labelY,\n ...attrs,\n ...props\n });\n };\n }\n});\nconst BezierEdge$1 = BezierEdge;\nconst SimpleBezierEdge = defineComponent({\n name: \"SimpleBezierEdge\",\n props: [\n \"sourcePosition\",\n \"targetPosition\",\n \"label\",\n \"labelStyle\",\n \"labelShowBg\",\n \"labelBgStyle\",\n \"labelBgPadding\",\n \"labelBgBorderRadius\",\n \"sourceY\",\n \"sourceX\",\n \"targetX\",\n \"targetY\",\n \"markerEnd\",\n \"markerStart\",\n \"interactionWidth\"\n ],\n compatConfig: { MODE: 3 },\n setup(props, { attrs }) {\n return () => {\n const [path, labelX, labelY] = getSimpleBezierPath({\n ...props,\n sourcePosition: props.sourcePosition ?? Position.Bottom,\n targetPosition: props.targetPosition ?? Position.Top\n });\n return h(_sfc_main$d, {\n path,\n labelX,\n labelY,\n ...attrs,\n ...props\n });\n };\n }\n});\nconst SimpleBezierEdge$1 = SimpleBezierEdge;\nconst defaultNodeTypes = {\n input: InputNode$1,\n default: DefaultNode$1,\n output: OutputNode$1\n};\nconst defaultEdgeTypes = {\n default: BezierEdge$1,\n straight: StraightEdge$1,\n step: StepEdge$1,\n smoothstep: SmoothStepEdge$1,\n simplebezier: SimpleBezierEdge$1\n};\nfunction useGetters(state, nodeLookup, edgeLookup) {\n const getNode = computed(() => (id2) => nodeLookup.value.get(id2));\n const getEdge = computed(() => (id2) => edgeLookup.value.get(id2));\n const getEdgeTypes = computed(() => {\n const edgeTypes = {\n ...defaultEdgeTypes,\n ...state.edgeTypes\n };\n const keys = Object.keys(edgeTypes);\n for (const e of state.edges) {\n e.type && !keys.includes(e.type) && (edgeTypes[e.type] = e.type);\n }\n return edgeTypes;\n });\n const getNodeTypes = computed(() => {\n const nodeTypes = {\n ...defaultNodeTypes,\n ...state.nodeTypes\n };\n const keys = Object.keys(nodeTypes);\n for (const n of state.nodes) {\n n.type && !keys.includes(n.type) && (nodeTypes[n.type] = n.type);\n }\n return nodeTypes;\n });\n const getNodes = computed(() => {\n if (state.onlyRenderVisibleElements) {\n return getNodesInside(\n state.nodes,\n {\n x: 0,\n y: 0,\n width: state.dimensions.width,\n height: state.dimensions.height\n },\n state.viewport,\n true\n );\n }\n return state.nodes;\n });\n const getEdges = computed(() => {\n if (state.onlyRenderVisibleElements) {\n const visibleEdges = [];\n for (const edge of state.edges) {\n const source = nodeLookup.value.get(edge.source);\n const target = nodeLookup.value.get(edge.target);\n if (isEdgeVisible({\n sourcePos: source.computedPosition || { x: 0, y: 0 },\n targetPos: target.computedPosition || { x: 0, y: 0 },\n sourceWidth: source.dimensions.width,\n sourceHeight: source.dimensions.height,\n targetWidth: target.dimensions.width,\n targetHeight: target.dimensions.height,\n width: state.dimensions.width,\n height: state.dimensions.height,\n viewport: state.viewport\n })) {\n visibleEdges.push(edge);\n }\n }\n return visibleEdges;\n }\n return state.edges;\n });\n const getElements = computed(() => [...getNodes.value, ...getEdges.value]);\n const getSelectedNodes = computed(() => {\n const selectedNodes = [];\n for (const node of state.nodes) {\n if (node.selected) {\n selectedNodes.push(node);\n }\n }\n return selectedNodes;\n });\n const getSelectedEdges = computed(() => {\n const selectedEdges = [];\n for (const edge of state.edges) {\n if (edge.selected) {\n selectedEdges.push(edge);\n }\n }\n return selectedEdges;\n });\n const getSelectedElements = computed(() => [\n ...getSelectedNodes.value,\n ...getSelectedEdges.value\n ]);\n const getNodesInitialized = computed(() => {\n const initializedNodes = [];\n for (const node of state.nodes) {\n if (!!node.dimensions.width && !!node.dimensions.height && node.handleBounds !== void 0) {\n initializedNodes.push(node);\n }\n }\n return initializedNodes;\n });\n const areNodesInitialized = computed(\n () => getNodes.value.length > 0 && getNodesInitialized.value.length === getNodes.value.length\n );\n return {\n getNode,\n getEdge,\n getElements,\n getEdgeTypes,\n getNodeTypes,\n getEdges,\n getNodes,\n getSelectedElements,\n getSelectedNodes,\n getSelectedEdges,\n getNodesInitialized,\n areNodesInitialized\n };\n}\nclass Storage {\n constructor() {\n this.currentId = 0;\n this.flows = /* @__PURE__ */ new Map();\n }\n static getInstance() {\n var _a;\n const vueApp = (_a = getCurrentInstance()) == null ? void 0 : _a.appContext.app;\n const existingInstance = (vueApp == null ? void 0 : vueApp.config.globalProperties.$vueFlowStorage) ?? Storage.instance;\n Storage.instance = existingInstance ?? new Storage();\n if (vueApp) {\n vueApp.config.globalProperties.$vueFlowStorage = Storage.instance;\n }\n return Storage.instance;\n }\n set(id2, flow) {\n return this.flows.set(id2, flow);\n }\n get(id2) {\n return this.flows.get(id2);\n }\n remove(id2) {\n return this.flows.delete(id2);\n }\n create(id2, preloadedState) {\n const state = useState();\n const reactiveState = reactive(state);\n const hooksOn = {};\n for (const [n, h2] of Object.entries(reactiveState.hooks)) {\n const name = `on${n.charAt(0).toUpperCase() + n.slice(1)}`;\n hooksOn[name] = h2.on;\n }\n const emits = {};\n for (const [n, h2] of Object.entries(reactiveState.hooks)) {\n emits[n] = h2.trigger;\n }\n const nodeLookup = computed(() => {\n const nodesMap = /* @__PURE__ */ new Map();\n for (const node of reactiveState.nodes) {\n nodesMap.set(node.id, node);\n }\n return nodesMap;\n });\n const edgeLookup = computed(() => {\n const edgesMap = /* @__PURE__ */ new Map();\n for (const edge of reactiveState.edges) {\n edgesMap.set(edge.id, edge);\n }\n return edgesMap;\n });\n const getters = useGetters(reactiveState, nodeLookup, edgeLookup);\n const actions = useActions(reactiveState, nodeLookup, edgeLookup);\n actions.setState({ ...reactiveState, ...preloadedState });\n const flow = {\n ...hooksOn,\n ...getters,\n ...actions,\n ...toRefs(reactiveState),\n nodeLookup,\n edgeLookup,\n emits,\n id: id2,\n vueFlowVersion: \"1.45.0\",\n $destroy: () => {\n this.remove(id2);\n }\n };\n this.set(id2, flow);\n return flow;\n }\n getId() {\n return `vue-flow-${this.currentId++}`;\n }\n}\nfunction useVueFlow(idOrOpts) {\n const storage = Storage.getInstance();\n const scope = getCurrentScope();\n const isOptsObj = typeof idOrOpts === \"object\";\n const options = isOptsObj ? idOrOpts : { id: idOrOpts };\n const id2 = options.id;\n const vueFlowId = id2 ?? (scope == null ? void 0 : scope.vueFlowId);\n let vueFlow;\n if (scope) {\n const injectedState = inject(VueFlow, null);\n if (typeof injectedState !== \"undefined\" && injectedState !== null && (!vueFlowId || injectedState.id === vueFlowId)) {\n vueFlow = injectedState;\n }\n }\n if (!vueFlow) {\n if (vueFlowId) {\n vueFlow = storage.get(vueFlowId);\n }\n }\n if (!vueFlow || vueFlowId && vueFlow.id !== vueFlowId) {\n const name = id2 ?? storage.getId();\n const state = storage.create(name, options);\n vueFlow = state;\n const vfScope = scope ?? effectScope(true);\n vfScope.run(() => {\n watch(\n state.applyDefault,\n (shouldApplyDefault, __, onCleanup) => {\n const nodesChangeHandler = (changes) => {\n state.applyNodeChanges(changes);\n };\n const edgesChangeHandler = (changes) => {\n state.applyEdgeChanges(changes);\n };\n if (shouldApplyDefault) {\n state.onNodesChange(nodesChangeHandler);\n state.onEdgesChange(edgesChangeHandler);\n } else {\n state.hooks.value.nodesChange.off(nodesChangeHandler);\n state.hooks.value.edgesChange.off(edgesChangeHandler);\n }\n onCleanup(() => {\n state.hooks.value.nodesChange.off(nodesChangeHandler);\n state.hooks.value.edgesChange.off(edgesChangeHandler);\n });\n },\n { immediate: true }\n );\n tryOnScopeDispose(() => {\n if (vueFlow) {\n const storedInstance = storage.get(vueFlow.id);\n if (storedInstance) {\n storedInstance.$destroy();\n } else {\n warn(`No store instance found for id ${vueFlow.id} in storage.`);\n }\n }\n });\n });\n } else {\n if (isOptsObj) {\n vueFlow.setState(options);\n }\n }\n if (scope) {\n provide(VueFlow, vueFlow);\n scope.vueFlowId = vueFlow.id;\n }\n if (isOptsObj) {\n const instance = getCurrentInstance();\n if ((instance == null ? void 0 : instance.type.name) !== \"VueFlow\") {\n vueFlow.emits.error(new VueFlowError(ErrorCode.USEVUEFLOW_OPTIONS));\n }\n }\n return vueFlow;\n}\nfunction useResizeHandler(viewportEl) {\n const { emits, dimensions } = useVueFlow();\n let resizeObserver;\n onMounted(() => {\n const rendererNode = viewportEl.value;\n const updateDimensions = () => {\n if (!rendererNode) {\n return;\n }\n const size = getDimensions(rendererNode);\n if (size.width === 0 || size.height === 0) {\n emits.error(new VueFlowError(ErrorCode.MISSING_VIEWPORT_DIMENSIONS));\n }\n dimensions.value = { width: size.width || 500, height: size.height || 500 };\n };\n updateDimensions();\n window.addEventListener(\"resize\", updateDimensions);\n if (rendererNode) {\n resizeObserver = new ResizeObserver(() => updateDimensions());\n resizeObserver.observe(rendererNode);\n }\n onBeforeUnmount(() => {\n window.removeEventListener(\"resize\", updateDimensions);\n if (resizeObserver && rendererNode) {\n resizeObserver.unobserve(rendererNode);\n }\n });\n });\n}\nconst __default__$c = {\n name: \"UserSelection\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$c = /* @__PURE__ */ defineComponent({\n ...__default__$c,\n props: {\n userSelectionRect: {}\n },\n setup(__props) {\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: \"vue-flow__selection vue-flow__container\",\n style: normalizeStyle({\n width: `${_ctx.userSelectionRect.width}px`,\n height: `${_ctx.userSelectionRect.height}px`,\n transform: `translate(${_ctx.userSelectionRect.x}px, ${_ctx.userSelectionRect.y}px)`\n })\n }, null, 4);\n };\n }\n});\nconst _hoisted_1$6 = [\"tabIndex\"];\nconst __default__$b = {\n name: \"NodesSelection\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$b = /* @__PURE__ */ defineComponent({\n ...__default__$b,\n setup(__props) {\n const { emits, viewport, getSelectedNodes, noPanClassName, disableKeyboardA11y, userSelectionActive } = useVueFlow();\n const updatePositions = useUpdateNodePositions();\n const el = ref(null);\n const dragging = useDrag({\n el,\n onStart(args) {\n emits.selectionDragStart(args);\n },\n onDrag(args) {\n emits.selectionDrag(args);\n },\n onStop(args) {\n emits.selectionDragStop(args);\n }\n });\n onMounted(() => {\n var _a;\n if (!disableKeyboardA11y.value) {\n (_a = el.value) == null ? void 0 : _a.focus({ preventScroll: true });\n }\n });\n const selectedNodesBBox = computed(() => getRectOfNodes(getSelectedNodes.value));\n const innerStyle = computed(() => ({\n width: `${selectedNodesBBox.value.width}px`,\n height: `${selectedNodesBBox.value.height}px`,\n top: `${selectedNodesBBox.value.y}px`,\n left: `${selectedNodesBBox.value.x}px`\n }));\n function onContextMenu(event) {\n emits.selectionContextMenu({ event, nodes: getSelectedNodes.value });\n }\n function onKeyDown(event) {\n if (disableKeyboardA11y) {\n return;\n }\n if (arrowKeyDiffs[event.key]) {\n event.preventDefault();\n updatePositions(\n {\n x: arrowKeyDiffs[event.key].x,\n y: arrowKeyDiffs[event.key].y\n },\n event.shiftKey\n );\n }\n }\n return (_ctx, _cache) => {\n return !unref(userSelectionActive) && selectedNodesBBox.value.width && selectedNodesBBox.value.height ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass([\"vue-flow__nodesselection vue-flow__container\", unref(noPanClassName)]),\n style: normalizeStyle({ transform: `translate(${unref(viewport).x}px,${unref(viewport).y}px) scale(${unref(viewport).zoom})` })\n }, [\n createElementVNode(\"div\", {\n ref_key: \"el\",\n ref: el,\n class: normalizeClass([{ dragging: unref(dragging) }, \"vue-flow__nodesselection-rect\"]),\n style: normalizeStyle(innerStyle.value),\n tabIndex: unref(disableKeyboardA11y) ? void 0 : -1,\n onContextmenu: onContextMenu,\n onKeydown: onKeyDown\n }, null, 46, _hoisted_1$6)\n ], 6)) : createCommentVNode(\"\", true);\n };\n }\n});\nfunction getMousePosition(event, containerBounds) {\n return {\n x: event.clientX - containerBounds.left,\n y: event.clientY - containerBounds.top\n };\n}\nconst __default__$a = {\n name: \"Pane\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$a = /* @__PURE__ */ defineComponent({\n ...__default__$a,\n props: {\n isSelecting: { type: Boolean },\n selectionKeyPressed: { type: Boolean }\n },\n setup(__props) {\n const {\n vueFlowRef,\n nodes,\n viewport,\n emits,\n userSelectionActive,\n removeSelectedElements,\n userSelectionRect,\n elementsSelectable,\n nodesSelectionActive,\n getSelectedEdges,\n getSelectedNodes,\n removeNodes,\n removeEdges,\n selectionMode,\n deleteKeyCode,\n multiSelectionKeyCode,\n multiSelectionActive,\n edgeLookup,\n nodeLookup,\n connectionLookup,\n defaultEdgeOptions,\n connectionStartHandle\n } = useVueFlow();\n const container = ref(null);\n const selectedNodeIds = ref(/* @__PURE__ */ new Set());\n const selectedEdgeIds = ref(/* @__PURE__ */ new Set());\n const containerBounds = ref();\n const hasActiveSelection = toRef(() => elementsSelectable.value && (__props.isSelecting || userSelectionActive.value));\n const connectionInProgress = toRef(() => connectionStartHandle.value !== null);\n let selectionInProgress = false;\n let selectionStarted = false;\n const deleteKeyPressed = useKeyPress(deleteKeyCode, { actInsideInputWithModifier: false });\n const multiSelectKeyPressed = useKeyPress(multiSelectionKeyCode);\n watch(deleteKeyPressed, (isKeyPressed) => {\n if (!isKeyPressed) {\n return;\n }\n removeNodes(getSelectedNodes.value);\n removeEdges(getSelectedEdges.value);\n nodesSelectionActive.value = false;\n });\n watch(multiSelectKeyPressed, (isKeyPressed) => {\n multiSelectionActive.value = isKeyPressed;\n });\n function wrapHandler(handler, containerRef) {\n return (event) => {\n if (event.target !== containerRef) {\n return;\n }\n handler == null ? void 0 : handler(event);\n };\n }\n function onClick(event) {\n if (selectionInProgress || connectionInProgress.value) {\n selectionInProgress = false;\n return;\n }\n emits.paneClick(event);\n removeSelectedElements();\n nodesSelectionActive.value = false;\n }\n function onContextMenu(event) {\n event.preventDefault();\n event.stopPropagation();\n emits.paneContextMenu(event);\n }\n function onWheel(event) {\n emits.paneScroll(event);\n }\n function onPointerDown(event) {\n var _a, _b, _c;\n containerBounds.value = (_a = vueFlowRef.value) == null ? void 0 : _a.getBoundingClientRect();\n if (!elementsSelectable.value || !__props.isSelecting || event.button !== 0 || event.target !== container.value || !containerBounds.value) {\n return;\n }\n (_c = (_b = event.target) == null ? void 0 : _b.setPointerCapture) == null ? void 0 : _c.call(_b, event.pointerId);\n const { x, y } = getMousePosition(event, containerBounds.value);\n selectionStarted = true;\n selectionInProgress = false;\n removeSelectedElements();\n userSelectionRect.value = {\n width: 0,\n height: 0,\n startX: x,\n startY: y,\n x,\n y\n };\n emits.selectionStart(event);\n }\n function onPointerMove(event) {\n var _a;\n if (!containerBounds.value || !userSelectionRect.value) {\n return;\n }\n selectionInProgress = true;\n const { x: mouseX, y: mouseY } = getEventPosition(event, containerBounds.value);\n const { startX = 0, startY = 0 } = userSelectionRect.value;\n const nextUserSelectRect = {\n startX,\n startY,\n x: mouseX < startX ? mouseX : startX,\n y: mouseY < startY ? mouseY : startY,\n width: Math.abs(mouseX - startX),\n height: Math.abs(mouseY - startY)\n };\n const prevSelectedNodeIds = selectedNodeIds.value;\n const prevSelectedEdgeIds = selectedEdgeIds.value;\n selectedNodeIds.value = new Set(\n getNodesInside(nodes.value, nextUserSelectRect, viewport.value, selectionMode.value === SelectionMode.Partial, true).map(\n (node) => node.id\n )\n );\n selectedEdgeIds.value = /* @__PURE__ */ new Set();\n const edgesSelectable = ((_a = defaultEdgeOptions.value) == null ? void 0 : _a.selectable) ?? true;\n for (const nodeId of selectedNodeIds.value) {\n const connections = connectionLookup.value.get(nodeId);\n if (!connections) {\n continue;\n }\n for (const { edgeId } of connections.values()) {\n const edge = edgeLookup.value.get(edgeId);\n if (edge && (edge.selectable ?? edgesSelectable)) {\n selectedEdgeIds.value.add(edgeId);\n }\n }\n }\n if (!areSetsEqual(prevSelectedNodeIds, selectedNodeIds.value)) {\n const changes = getSelectionChanges(nodeLookup.value, selectedNodeIds.value, true);\n emits.nodesChange(changes);\n }\n if (!areSetsEqual(prevSelectedEdgeIds, selectedEdgeIds.value)) {\n const changes = getSelectionChanges(edgeLookup.value, selectedEdgeIds.value);\n emits.edgesChange(changes);\n }\n userSelectionRect.value = nextUserSelectRect;\n userSelectionActive.value = true;\n nodesSelectionActive.value = false;\n }\n function onPointerUp(event) {\n var _a;\n if (event.button !== 0 || !selectionStarted) {\n return;\n }\n (_a = event.target) == null ? void 0 : _a.releasePointerCapture(event.pointerId);\n if (!userSelectionActive.value && userSelectionRect.value && event.target === container.value) {\n onClick(event);\n }\n userSelectionActive.value = false;\n userSelectionRect.value = null;\n nodesSelectionActive.value = selectedNodeIds.value.size > 0;\n emits.selectionEnd(event);\n if (__props.selectionKeyPressed) {\n selectionInProgress = false;\n }\n selectionStarted = false;\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n ref_key: \"container\",\n ref: container,\n class: normalizeClass([\"vue-flow__pane vue-flow__container\", { selection: _ctx.isSelecting }]),\n onClick: _cache[0] || (_cache[0] = (event) => hasActiveSelection.value ? void 0 : wrapHandler(onClick, container.value)(event)),\n onContextmenu: _cache[1] || (_cache[1] = ($event) => wrapHandler(onContextMenu, container.value)($event)),\n onWheelPassive: _cache[2] || (_cache[2] = ($event) => wrapHandler(onWheel, container.value)($event)),\n onPointerenter: _cache[3] || (_cache[3] = (event) => hasActiveSelection.value ? void 0 : unref(emits).paneMouseEnter(event)),\n onPointerdown: _cache[4] || (_cache[4] = (event) => hasActiveSelection.value ? onPointerDown(event) : unref(emits).paneMouseMove(event)),\n onPointermove: _cache[5] || (_cache[5] = (event) => hasActiveSelection.value ? onPointerMove(event) : unref(emits).paneMouseMove(event)),\n onPointerup: _cache[6] || (_cache[6] = (event) => hasActiveSelection.value ? onPointerUp(event) : void 0),\n onPointerleave: _cache[7] || (_cache[7] = ($event) => unref(emits).paneMouseLeave($event))\n }, [\n renderSlot(_ctx.$slots, \"default\"),\n unref(userSelectionActive) && unref(userSelectionRect) ? (openBlock(), createBlock(_sfc_main$c, {\n key: 0,\n \"user-selection-rect\": unref(userSelectionRect)\n }, null, 8, [\"user-selection-rect\"])) : createCommentVNode(\"\", true),\n unref(nodesSelectionActive) && unref(getSelectedNodes).length ? (openBlock(), createBlock(_sfc_main$b, { key: 1 })) : createCommentVNode(\"\", true)\n ], 34);\n };\n }\n});\nconst __default__$9 = {\n name: \"Transform\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$9 = /* @__PURE__ */ defineComponent({\n ...__default__$9,\n setup(__props) {\n const { viewport, fitViewOnInit, fitViewOnInitDone } = useVueFlow();\n const isHidden = computed(() => {\n if (fitViewOnInit.value) {\n return !fitViewOnInitDone.value;\n }\n return false;\n });\n const transform = computed(() => `translate(${viewport.value.x}px,${viewport.value.y}px) scale(${viewport.value.zoom})`);\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: \"vue-flow__transformationpane vue-flow__container\",\n style: normalizeStyle({ transform: transform.value, opacity: isHidden.value ? 0 : void 0 })\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 4);\n };\n }\n});\nconst __default__$8 = {\n name: \"Viewport\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$8 = /* @__PURE__ */ defineComponent({\n ...__default__$8,\n setup(__props) {\n const {\n minZoom,\n maxZoom,\n defaultViewport,\n translateExtent,\n zoomActivationKeyCode,\n selectionKeyCode,\n panActivationKeyCode,\n panOnScroll,\n panOnScrollMode,\n panOnScrollSpeed,\n panOnDrag,\n zoomOnDoubleClick,\n zoomOnPinch,\n zoomOnScroll,\n preventScrolling,\n noWheelClassName,\n noPanClassName,\n emits,\n connectionStartHandle,\n userSelectionActive,\n paneDragging,\n d3Zoom: storeD3Zoom,\n d3Selection: storeD3Selection,\n d3ZoomHandler: storeD3ZoomHandler,\n viewport,\n viewportRef,\n paneClickDistance\n } = useVueFlow();\n useResizeHandler(viewportRef);\n const isZoomingOrPanning = shallowRef(false);\n const isPanScrolling = shallowRef(false);\n let panScrollTimeout = null;\n let zoomedWithRightMouseButton = false;\n let mouseButton = 0;\n let prevTransform = {\n x: 0,\n y: 0,\n zoom: 0\n };\n const panKeyPressed = useKeyPress(panActivationKeyCode);\n const selectionKeyPressed = useKeyPress(selectionKeyCode);\n const zoomKeyPressed = useKeyPress(zoomActivationKeyCode);\n const shouldPanOnDrag = toRef(\n () => (!selectionKeyPressed.value || selectionKeyPressed.value && selectionKeyCode.value === true) && (panKeyPressed.value || panOnDrag.value)\n );\n const shouldPanOnScroll = toRef(() => panKeyPressed.value || panOnScroll.value);\n const isSelecting = toRef(() => selectionKeyPressed.value || selectionKeyCode.value === true && shouldPanOnDrag.value !== true);\n onMounted(() => {\n if (!viewportRef.value) {\n warn(\"Viewport element is missing\");\n return;\n }\n const viewportElement = viewportRef.value;\n const bbox = viewportElement.getBoundingClientRect();\n const d3Zoom = zoom().clickDistance(paneClickDistance.value).scaleExtent([minZoom.value, maxZoom.value]).translateExtent(translateExtent.value);\n const d3Selection = select(viewportElement).call(d3Zoom);\n const d3ZoomHandler = d3Selection.on(\"wheel.zoom\");\n const updatedTransform = identity.translate(defaultViewport.value.x ?? 0, defaultViewport.value.y ?? 0).scale(clamp(defaultViewport.value.zoom ?? 1, minZoom.value, maxZoom.value));\n const extent = [\n [0, 0],\n [bbox.width, bbox.height]\n ];\n const constrainedTransform = d3Zoom.constrain()(updatedTransform, extent, translateExtent.value);\n d3Zoom.transform(d3Selection, constrainedTransform);\n d3Zoom.wheelDelta(wheelDelta);\n storeD3Zoom.value = d3Zoom;\n storeD3Selection.value = d3Selection;\n storeD3ZoomHandler.value = d3ZoomHandler;\n viewport.value = { x: constrainedTransform.x, y: constrainedTransform.y, zoom: constrainedTransform.k };\n d3Zoom.on(\"start\", (event) => {\n var _a;\n if (!event.sourceEvent) {\n return null;\n }\n mouseButton = event.sourceEvent.button;\n isZoomingOrPanning.value = true;\n const flowTransform = eventToFlowTransform(event.transform);\n if (((_a = event.sourceEvent) == null ? void 0 : _a.type) === \"mousedown\") {\n paneDragging.value = true;\n }\n prevTransform = flowTransform;\n emits.viewportChangeStart(flowTransform);\n emits.moveStart({ event, flowTransform });\n });\n d3Zoom.on(\"end\", (event) => {\n if (!event.sourceEvent) {\n return null;\n }\n isZoomingOrPanning.value = false;\n paneDragging.value = false;\n if (isRightClickPan(shouldPanOnDrag.value, mouseButton ?? 0) && !zoomedWithRightMouseButton) {\n emits.paneContextMenu(event.sourceEvent);\n }\n zoomedWithRightMouseButton = false;\n if (viewChanged(prevTransform, event.transform)) {\n const flowTransform = eventToFlowTransform(event.transform);\n prevTransform = flowTransform;\n emits.viewportChangeEnd(flowTransform);\n emits.moveEnd({ event, flowTransform });\n }\n });\n d3Zoom.filter((event) => {\n var _a;\n const zoomScroll = zoomKeyPressed.value || zoomOnScroll.value;\n const pinchZoom = zoomOnPinch.value && event.ctrlKey;\n const eventButton = event.button;\n if (eventButton === 1 && event.type === \"mousedown\" && (isWrappedWithClass(event, \"vue-flow__node\") || isWrappedWithClass(event, \"vue-flow__edge\"))) {\n return true;\n }\n if (!shouldPanOnDrag.value && !zoomScroll && !shouldPanOnScroll.value && !zoomOnDoubleClick.value && !zoomOnPinch.value) {\n return false;\n }\n if (userSelectionActive.value) {\n return false;\n }\n if (!zoomOnDoubleClick.value && event.type === \"dblclick\") {\n return false;\n }\n if (isWrappedWithClass(event, noWheelClassName.value) && event.type === \"wheel\") {\n return false;\n }\n if (isWrappedWithClass(event, noPanClassName.value) && (event.type !== \"wheel\" || shouldPanOnScroll.value && event.type === \"wheel\" && !zoomKeyPressed.value)) {\n return false;\n }\n if (!zoomOnPinch.value && event.ctrlKey && event.type === \"wheel\") {\n return false;\n }\n if (!zoomScroll && !shouldPanOnScroll.value && !pinchZoom && event.type === \"wheel\") {\n return false;\n }\n if (!zoomOnPinch && event.type === \"touchstart\" && ((_a = event.touches) == null ? void 0 : _a.length) > 1) {\n event.preventDefault();\n return false;\n }\n if (!shouldPanOnDrag.value && (event.type === \"mousedown\" || event.type === \"touchstart\")) {\n return false;\n }\n if (selectionKeyCode.value === true && Array.isArray(panOnDrag.value) && panOnDrag.value.includes(0) && eventButton === 0) {\n return false;\n }\n if (Array.isArray(panOnDrag.value) && !panOnDrag.value.includes(eventButton) && (event.type === \"mousedown\" || event.type === \"touchstart\")) {\n return false;\n }\n const buttonAllowed = Array.isArray(panOnDrag.value) && panOnDrag.value.includes(eventButton) || selectionKeyCode.value === true && Array.isArray(panOnDrag.value) && !panOnDrag.value.includes(0) || !eventButton || eventButton <= 1;\n return (!event.ctrlKey || panKeyPressed.value || event.type === \"wheel\") && buttonAllowed;\n });\n watch(\n [userSelectionActive, shouldPanOnDrag],\n () => {\n if (userSelectionActive.value && !isZoomingOrPanning.value) {\n d3Zoom.on(\"zoom\", null);\n } else if (!userSelectionActive.value) {\n d3Zoom.on(\"zoom\", (event) => {\n viewport.value = { x: event.transform.x, y: event.transform.y, zoom: event.transform.k };\n const flowTransform = eventToFlowTransform(event.transform);\n zoomedWithRightMouseButton = isRightClickPan(shouldPanOnDrag.value, mouseButton ?? 0);\n emits.viewportChange(flowTransform);\n emits.move({ event, flowTransform });\n });\n }\n },\n { immediate: true }\n );\n watch(\n [userSelectionActive, shouldPanOnScroll, panOnScrollMode, zoomKeyPressed, zoomOnPinch, preventScrolling, noWheelClassName],\n () => {\n if (shouldPanOnScroll.value && !zoomKeyPressed.value && !userSelectionActive.value) {\n d3Selection.on(\n \"wheel.zoom\",\n (event) => {\n if (isWrappedWithClass(event, noWheelClassName.value)) {\n return false;\n }\n const zoomScroll = zoomKeyPressed.value || zoomOnScroll.value;\n const pinchZoom = zoomOnPinch.value && event.ctrlKey;\n const scrollEventEnabled = !preventScrolling.value || shouldPanOnScroll.value || zoomScroll || pinchZoom;\n if (!scrollEventEnabled) {\n return false;\n }\n event.preventDefault();\n event.stopImmediatePropagation();\n const currentZoom = d3Selection.property(\"__zoom\").k || 1;\n const _isMacOs = isMacOs();\n if (!panKeyPressed.value && event.ctrlKey && zoomOnPinch.value && _isMacOs) {\n const point = pointer(event);\n const pinchDelta = wheelDelta(event);\n const zoom2 = currentZoom * 2 ** pinchDelta;\n d3Zoom.scaleTo(d3Selection, zoom2, point, event);\n return;\n }\n const deltaNormalize = event.deltaMode === 1 ? 20 : 1;\n let deltaX = panOnScrollMode.value === PanOnScrollMode.Vertical ? 0 : event.deltaX * deltaNormalize;\n let deltaY = panOnScrollMode.value === PanOnScrollMode.Horizontal ? 0 : event.deltaY * deltaNormalize;\n if (!_isMacOs && event.shiftKey && panOnScrollMode.value !== PanOnScrollMode.Vertical && !deltaX && deltaY) {\n deltaX = deltaY;\n deltaY = 0;\n }\n d3Zoom.translateBy(\n d3Selection,\n -(deltaX / currentZoom) * panOnScrollSpeed.value,\n -(deltaY / currentZoom) * panOnScrollSpeed.value\n );\n const nextViewport = eventToFlowTransform(d3Selection.property(\"__zoom\"));\n if (panScrollTimeout) {\n clearTimeout(panScrollTimeout);\n }\n if (!isPanScrolling.value) {\n isPanScrolling.value = true;\n emits.moveStart({ event, flowTransform: nextViewport });\n emits.viewportChangeStart(nextViewport);\n } else {\n emits.move({ event, flowTransform: nextViewport });\n emits.viewportChange(nextViewport);\n panScrollTimeout = setTimeout(() => {\n emits.moveEnd({ event, flowTransform: nextViewport });\n emits.viewportChangeEnd(nextViewport);\n isPanScrolling.value = false;\n }, 150);\n }\n },\n { passive: false }\n );\n } else if (typeof d3ZoomHandler !== \"undefined\") {\n d3Selection.on(\n \"wheel.zoom\",\n function(event, d) {\n const invalidEvent = !preventScrolling.value && event.type === \"wheel\" && !event.ctrlKey;\n const zoomScroll = zoomKeyPressed.value || zoomOnScroll.value;\n const pinchZoom = zoomOnPinch.value && event.ctrlKey;\n const scrollEventsDisabled = !zoomScroll && !panOnScroll.value && !pinchZoom && event.type === \"wheel\";\n if (scrollEventsDisabled || invalidEvent || isWrappedWithClass(event, noWheelClassName.value)) {\n return null;\n }\n event.preventDefault();\n d3ZoomHandler.call(this, event, d);\n },\n { passive: false }\n );\n }\n },\n { immediate: true }\n );\n });\n function isRightClickPan(pan, usedButton) {\n return usedButton === 2 && Array.isArray(pan) && pan.includes(2);\n }\n function wheelDelta(event) {\n const factor = event.ctrlKey && isMacOs() ? 10 : 1;\n return -event.deltaY * (event.deltaMode === 1 ? 0.05 : event.deltaMode ? 1 : 2e-3) * factor;\n }\n function viewChanged(prevViewport, eventTransform) {\n return prevViewport.x !== eventTransform.x && !Number.isNaN(eventTransform.x) || prevViewport.y !== eventTransform.y && !Number.isNaN(eventTransform.y) || prevViewport.zoom !== eventTransform.k && !Number.isNaN(eventTransform.k);\n }\n function eventToFlowTransform(eventTransform) {\n return {\n x: eventTransform.x,\n y: eventTransform.y,\n zoom: eventTransform.k\n };\n }\n function isWrappedWithClass(event, className) {\n return event.target.closest(`.${className}`);\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n ref_key: \"viewportRef\",\n ref: viewportRef,\n class: \"vue-flow__viewport vue-flow__container\"\n }, [\n createVNode(_sfc_main$a, {\n \"is-selecting\": isSelecting.value,\n \"selection-key-pressed\": unref(selectionKeyPressed),\n class: normalizeClass({\n connecting: !!unref(connectionStartHandle),\n dragging: unref(paneDragging),\n draggable: unref(panOnDrag) === true || Array.isArray(unref(panOnDrag)) && unref(panOnDrag).includes(0)\n })\n }, {\n default: withCtx(() => [\n createVNode(_sfc_main$9, null, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\")\n ]),\n _: 3\n })\n ]),\n _: 3\n }, 8, [\"is-selecting\", \"selection-key-pressed\", \"class\"])\n ], 512);\n };\n }\n});\nconst _hoisted_1$5 = [\"id\"];\nconst _hoisted_2 = [\"id\"];\nconst _hoisted_3 = [\"id\"];\nconst __default__$7 = {\n name: \"A11yDescriptions\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$7 = /* @__PURE__ */ defineComponent({\n ...__default__$7,\n setup(__props) {\n const { id: id2, disableKeyboardA11y, ariaLiveMessage } = useVueFlow();\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(Fragment, null, [\n createElementVNode(\"div\", {\n id: `${unref(ARIA_NODE_DESC_KEY)}-${unref(id2)}`,\n style: { \"display\": \"none\" }\n }, \" Press enter or space to select a node. \" + toDisplayString(!unref(disableKeyboardA11y) ? \"You can then use the arrow keys to move the node around.\" : \"\") + \" You can then use the arrow keys to move the node around, press delete to remove it and press escape to cancel. \", 9, _hoisted_1$5),\n createElementVNode(\"div\", {\n id: `${unref(ARIA_EDGE_DESC_KEY)}-${unref(id2)}`,\n style: { \"display\": \"none\" }\n }, \" Press enter or space to select an edge. You can then press delete to remove it or press escape to cancel. \", 8, _hoisted_2),\n !unref(disableKeyboardA11y) ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n id: `${unref(ARIA_LIVE_MESSAGE)}-${unref(id2)}`,\n \"aria-live\": \"assertive\",\n \"aria-atomic\": \"true\",\n style: { \"position\": \"absolute\", \"width\": \"1px\", \"height\": \"1px\", \"margin\": \"-1px\", \"border\": \"0\", \"padding\": \"0\", \"overflow\": \"hidden\", \"clip\": \"rect(0px, 0px, 0px, 0px)\", \"clip-path\": \"inset(100%)\" }\n }, toDisplayString(unref(ariaLiveMessage)), 9, _hoisted_3)) : createCommentVNode(\"\", true)\n ], 64);\n };\n }\n});\nfunction useOnInitHandler() {\n const vfInstance = useVueFlow();\n watch(\n () => vfInstance.viewportHelper.value.viewportInitialized,\n (isInitialized) => {\n if (isInitialized) {\n setTimeout(() => {\n vfInstance.emits.init(vfInstance);\n vfInstance.emits.paneReady(vfInstance);\n }, 1);\n }\n }\n );\n}\nfunction shiftX(x, shift, position) {\n if (position === Position.Left) {\n return x - shift;\n }\n if (position === Position.Right) {\n return x + shift;\n }\n return x;\n}\nfunction shiftY(y, shift, position) {\n if (position === Position.Top) {\n return y - shift;\n }\n if (position === Position.Bottom) {\n return y + shift;\n }\n return y;\n}\nconst EdgeAnchor = function({\n radius = 10,\n centerX = 0,\n centerY = 0,\n position = Position.Top,\n type\n}) {\n return h(\"circle\", {\n class: `vue-flow__edgeupdater vue-flow__edgeupdater-${type}`,\n cx: shiftX(centerX, radius, position),\n cy: shiftY(centerY, radius, position),\n r: radius,\n stroke: \"transparent\",\n fill: \"transparent\"\n });\n};\nEdgeAnchor.props = [\"radius\", \"centerX\", \"centerY\", \"position\", \"type\"];\nEdgeAnchor.compatConfig = { MODE: 3 };\nconst EdgeAnchor$1 = EdgeAnchor;\nconst EdgeWrapper = defineComponent({\n name: \"Edge\",\n compatConfig: { MODE: 3 },\n props: [\"id\"],\n setup(props) {\n const {\n id: vueFlowId,\n addSelectedEdges,\n connectionMode,\n edgeUpdaterRadius,\n emits,\n nodesSelectionActive,\n noPanClassName,\n getEdgeTypes,\n removeSelectedEdges,\n findEdge,\n findNode,\n isValidConnection,\n multiSelectionActive,\n disableKeyboardA11y,\n elementsSelectable,\n edgesUpdatable,\n edgesFocusable,\n hooks\n } = useVueFlow();\n const edge = computed(() => findEdge(props.id));\n const { emit, on } = useEdgeHooks(edge.value, emits);\n const slots = inject(Slots);\n const instance = getCurrentInstance();\n const mouseOver = ref(false);\n const updating = ref(false);\n const nodeId = ref(\"\");\n const handleId = ref(null);\n const edgeUpdaterType = ref(\"source\");\n const edgeEl = ref(null);\n const isSelectable = toRef(\n () => typeof edge.value.selectable === \"undefined\" ? elementsSelectable.value : edge.value.selectable\n );\n const isUpdatable = toRef(() => typeof edge.value.updatable === \"undefined\" ? edgesUpdatable.value : edge.value.updatable);\n const isFocusable = toRef(() => typeof edge.value.focusable === \"undefined\" ? edgesFocusable.value : edge.value.focusable);\n provide(EdgeId, props.id);\n provide(EdgeRef, edgeEl);\n const edgeClass = computed(() => edge.value.class instanceof Function ? edge.value.class(edge.value) : edge.value.class);\n const edgeStyle = computed(() => edge.value.style instanceof Function ? edge.value.style(edge.value) : edge.value.style);\n const edgeCmp = computed(() => {\n const name = edge.value.type || \"default\";\n const slot = slots == null ? void 0 : slots[`edge-${name}`];\n if (slot) {\n return slot;\n }\n let edgeType = edge.value.template ?? getEdgeTypes.value[name];\n if (typeof edgeType === \"string\") {\n if (instance) {\n const components = Object.keys(instance.appContext.components);\n if (components && components.includes(name)) {\n edgeType = resolveComponent(name, false);\n }\n }\n }\n if (edgeType && typeof edgeType !== \"string\") {\n return edgeType;\n }\n emits.error(new VueFlowError(ErrorCode.EDGE_TYPE_MISSING, edgeType));\n return false;\n });\n const { handlePointerDown } = useHandle({\n nodeId,\n handleId,\n type: edgeUpdaterType,\n isValidConnection,\n edgeUpdaterType,\n onEdgeUpdate,\n onEdgeUpdateEnd\n });\n return () => {\n const sourceNode = findNode(edge.value.source);\n const targetNode = findNode(edge.value.target);\n const pathOptions = \"pathOptions\" in edge.value ? edge.value.pathOptions : {};\n if (!sourceNode && !targetNode) {\n emits.error(new VueFlowError(ErrorCode.EDGE_SOURCE_TARGET_MISSING, edge.value.id, edge.value.source, edge.value.target));\n return null;\n }\n if (!sourceNode) {\n emits.error(new VueFlowError(ErrorCode.EDGE_SOURCE_MISSING, edge.value.id, edge.value.source));\n return null;\n }\n if (!targetNode) {\n emits.error(new VueFlowError(ErrorCode.EDGE_TARGET_MISSING, edge.value.id, edge.value.target));\n return null;\n }\n if (!edge.value || edge.value.hidden || sourceNode.hidden || targetNode.hidden) {\n return null;\n }\n let sourceNodeHandles;\n if (connectionMode.value === ConnectionMode.Strict) {\n sourceNodeHandles = sourceNode.handleBounds.source;\n } else {\n sourceNodeHandles = [...sourceNode.handleBounds.source || [], ...sourceNode.handleBounds.target || []];\n }\n const sourceHandle = getEdgeHandle(sourceNodeHandles, edge.value.sourceHandle);\n let targetNodeHandles;\n if (connectionMode.value === ConnectionMode.Strict) {\n targetNodeHandles = targetNode.handleBounds.target;\n } else {\n targetNodeHandles = [...targetNode.handleBounds.target || [], ...targetNode.handleBounds.source || []];\n }\n const targetHandle = getEdgeHandle(targetNodeHandles, edge.value.targetHandle);\n const sourcePosition = (sourceHandle == null ? void 0 : sourceHandle.position) || Position.Bottom;\n const targetPosition = (targetHandle == null ? void 0 : targetHandle.position) || Position.Top;\n const { x: sourceX, y: sourceY } = getHandlePosition(sourceNode, sourceHandle, sourcePosition);\n const { x: targetX, y: targetY } = getHandlePosition(targetNode, targetHandle, targetPosition);\n edge.value.sourceX = sourceX;\n edge.value.sourceY = sourceY;\n edge.value.targetX = targetX;\n edge.value.targetY = targetY;\n return h(\n \"g\",\n {\n \"ref\": edgeEl,\n \"key\": props.id,\n \"data-id\": props.id,\n \"class\": [\n \"vue-flow__edge\",\n `vue-flow__edge-${edgeCmp.value === false ? \"default\" : edge.value.type || \"default\"}`,\n noPanClassName.value,\n edgeClass.value,\n {\n updating: mouseOver.value,\n selected: edge.value.selected,\n animated: edge.value.animated,\n inactive: !isSelectable.value && !hooks.value.edgeClick.hasListeners()\n }\n ],\n \"tabIndex\": isFocusable.value ? 0 : void 0,\n \"aria-label\": edge.value.ariaLabel === null ? void 0 : edge.value.ariaLabel ?? `Edge from ${edge.value.source} to ${edge.value.target}`,\n \"aria-describedby\": isFocusable.value ? `${ARIA_EDGE_DESC_KEY}-${vueFlowId}` : void 0,\n \"aria-roledescription\": \"edge\",\n \"role\": isFocusable.value ? \"group\" : \"img\",\n ...edge.value.domAttributes,\n \"onClick\": onEdgeClick,\n \"onContextmenu\": onEdgeContextMenu,\n \"onDblclick\": onDoubleClick,\n \"onMouseenter\": onEdgeMouseEnter,\n \"onMousemove\": onEdgeMouseMove,\n \"onMouseleave\": onEdgeMouseLeave,\n \"onKeyDown\": isFocusable.value ? onKeyDown : void 0\n },\n [\n updating.value ? null : h(edgeCmp.value === false ? getEdgeTypes.value.default : edgeCmp.value, {\n id: props.id,\n sourceNode,\n targetNode,\n source: edge.value.source,\n target: edge.value.target,\n type: edge.value.type,\n updatable: isUpdatable.value,\n selected: edge.value.selected,\n animated: edge.value.animated,\n label: edge.value.label,\n labelStyle: edge.value.labelStyle,\n labelShowBg: edge.value.labelShowBg,\n labelBgStyle: edge.value.labelBgStyle,\n labelBgPadding: edge.value.labelBgPadding,\n labelBgBorderRadius: edge.value.labelBgBorderRadius,\n data: edge.value.data,\n events: { ...edge.value.events, ...on },\n style: edgeStyle.value,\n markerStart: `url('#${getMarkerId(edge.value.markerStart, vueFlowId)}')`,\n markerEnd: `url('#${getMarkerId(edge.value.markerEnd, vueFlowId)}')`,\n sourcePosition,\n targetPosition,\n sourceX,\n sourceY,\n targetX,\n targetY,\n sourceHandleId: edge.value.sourceHandle,\n targetHandleId: edge.value.targetHandle,\n interactionWidth: edge.value.interactionWidth,\n ...pathOptions\n }),\n [\n isUpdatable.value === \"source\" || isUpdatable.value === true ? [\n h(\n \"g\",\n {\n onMousedown: onEdgeUpdaterSourceMouseDown,\n onMouseenter: onEdgeUpdaterMouseEnter,\n onMouseout: onEdgeUpdaterMouseOut\n },\n h(EdgeAnchor$1, {\n \"position\": sourcePosition,\n \"centerX\": sourceX,\n \"centerY\": sourceY,\n \"radius\": edgeUpdaterRadius.value,\n \"type\": \"source\",\n \"data-type\": \"source\"\n })\n )\n ] : null,\n isUpdatable.value === \"target\" || isUpdatable.value === true ? [\n h(\n \"g\",\n {\n onMousedown: onEdgeUpdaterTargetMouseDown,\n onMouseenter: onEdgeUpdaterMouseEnter,\n onMouseout: onEdgeUpdaterMouseOut\n },\n h(EdgeAnchor$1, {\n \"position\": targetPosition,\n \"centerX\": targetX,\n \"centerY\": targetY,\n \"radius\": edgeUpdaterRadius.value,\n \"type\": \"target\",\n \"data-type\": \"target\"\n })\n )\n ] : null\n ]\n ]\n );\n };\n function onEdgeUpdaterMouseEnter() {\n mouseOver.value = true;\n }\n function onEdgeUpdaterMouseOut() {\n mouseOver.value = false;\n }\n function onEdgeUpdate(event, connection) {\n emit.update({ event, edge: edge.value, connection });\n }\n function onEdgeUpdateEnd(event) {\n emit.updateEnd({ event, edge: edge.value });\n updating.value = false;\n }\n function handleEdgeUpdater(event, isSourceHandle) {\n if (event.button !== 0) {\n return;\n }\n updating.value = true;\n nodeId.value = isSourceHandle ? edge.value.target : edge.value.source;\n handleId.value = (isSourceHandle ? edge.value.targetHandle : edge.value.sourceHandle) ?? null;\n edgeUpdaterType.value = isSourceHandle ? \"target\" : \"source\";\n emit.updateStart({ event, edge: edge.value });\n handlePointerDown(event);\n }\n function onEdgeClick(event) {\n var _a;\n const data = { event, edge: edge.value };\n if (isSelectable.value) {\n nodesSelectionActive.value = false;\n if (edge.value.selected && multiSelectionActive.value) {\n removeSelectedEdges([edge.value]);\n (_a = edgeEl.value) == null ? void 0 : _a.blur();\n } else {\n addSelectedEdges([edge.value]);\n }\n }\n emit.click(data);\n }\n function onEdgeContextMenu(event) {\n emit.contextMenu({ event, edge: edge.value });\n }\n function onDoubleClick(event) {\n emit.doubleClick({ event, edge: edge.value });\n }\n function onEdgeMouseEnter(event) {\n emit.mouseEnter({ event, edge: edge.value });\n }\n function onEdgeMouseMove(event) {\n emit.mouseMove({ event, edge: edge.value });\n }\n function onEdgeMouseLeave(event) {\n emit.mouseLeave({ event, edge: edge.value });\n }\n function onEdgeUpdaterSourceMouseDown(event) {\n handleEdgeUpdater(event, true);\n }\n function onEdgeUpdaterTargetMouseDown(event) {\n handleEdgeUpdater(event, false);\n }\n function onKeyDown(event) {\n var _a;\n if (!disableKeyboardA11y.value && elementSelectionKeys.includes(event.key) && isSelectable.value) {\n const unselect = event.key === \"Escape\";\n if (unselect) {\n (_a = edgeEl.value) == null ? void 0 : _a.blur();\n removeSelectedEdges([findEdge(props.id)]);\n } else {\n addSelectedEdges([findEdge(props.id)]);\n }\n }\n }\n }\n});\nconst EdgeWrapper$1 = EdgeWrapper;\nconst ConnectionLine = defineComponent({\n name: \"ConnectionLine\",\n compatConfig: { MODE: 3 },\n setup() {\n var _a;\n const {\n id: id2,\n connectionMode,\n connectionStartHandle,\n connectionEndHandle,\n connectionPosition,\n connectionLineType,\n connectionLineStyle,\n connectionLineOptions,\n connectionStatus,\n viewport,\n findNode\n } = useVueFlow();\n const connectionLineComponent = (_a = inject(Slots)) == null ? void 0 : _a[\"connection-line\"];\n const fromNode = computed(() => {\n var _a2;\n return findNode((_a2 = connectionStartHandle.value) == null ? void 0 : _a2.nodeId);\n });\n const toNode = computed(() => {\n var _a2;\n return findNode((_a2 = connectionEndHandle.value) == null ? void 0 : _a2.nodeId) ?? null;\n });\n const toXY = computed(() => {\n return {\n x: (connectionPosition.value.x - viewport.value.x) / viewport.value.zoom,\n y: (connectionPosition.value.y - viewport.value.y) / viewport.value.zoom\n };\n });\n const markerStart = computed(\n () => connectionLineOptions.value.markerStart ? `url(#${getMarkerId(connectionLineOptions.value.markerStart, id2)})` : \"\"\n );\n const markerEnd = computed(\n () => connectionLineOptions.value.markerEnd ? `url(#${getMarkerId(connectionLineOptions.value.markerEnd, id2)})` : \"\"\n );\n return () => {\n var _a2, _b, _c;\n if (!fromNode.value || !connectionStartHandle.value) {\n return null;\n }\n const startHandleId = connectionStartHandle.value.id;\n const handleType = connectionStartHandle.value.type;\n const fromHandleBounds = fromNode.value.handleBounds;\n let handleBounds = (fromHandleBounds == null ? void 0 : fromHandleBounds[handleType]) ?? [];\n if (connectionMode.value === ConnectionMode.Loose) {\n const oppositeBounds = (fromHandleBounds == null ? void 0 : fromHandleBounds[handleType === \"source\" ? \"target\" : \"source\"]) ?? [];\n handleBounds = [...handleBounds, ...oppositeBounds];\n }\n if (!handleBounds) {\n return null;\n }\n const fromHandle = (startHandleId ? handleBounds.find((d) => d.id === startHandleId) : handleBounds[0]) ?? null;\n const fromPosition = (fromHandle == null ? void 0 : fromHandle.position) ?? Position.Top;\n const { x: fromX, y: fromY } = getHandlePosition(fromNode.value, fromHandle, fromPosition);\n let toHandle = null;\n if (toNode.value) {\n if (connectionMode.value === ConnectionMode.Strict) {\n toHandle = ((_a2 = toNode.value.handleBounds[handleType === \"source\" ? \"target\" : \"source\"]) == null ? void 0 : _a2.find(\n (d) => {\n var _a3;\n return d.id === ((_a3 = connectionEndHandle.value) == null ? void 0 : _a3.id);\n }\n )) || null;\n } else {\n toHandle = ((_b = [...toNode.value.handleBounds.source ?? [], ...toNode.value.handleBounds.target ?? []]) == null ? void 0 : _b.find(\n (d) => {\n var _a3;\n return d.id === ((_a3 = connectionEndHandle.value) == null ? void 0 : _a3.id);\n }\n )) || null;\n }\n }\n const toPosition = ((_c = connectionEndHandle.value) == null ? void 0 : _c.position) ?? (fromPosition ? oppositePosition[fromPosition] : null);\n if (!fromPosition || !toPosition) {\n return null;\n }\n const type = connectionLineType.value ?? connectionLineOptions.value.type ?? ConnectionLineType.Bezier;\n let dAttr = \"\";\n const pathParams = {\n sourceX: fromX,\n sourceY: fromY,\n sourcePosition: fromPosition,\n targetX: toXY.value.x,\n targetY: toXY.value.y,\n targetPosition: toPosition\n };\n if (type === ConnectionLineType.Bezier) {\n [dAttr] = getBezierPath(pathParams);\n } else if (type === ConnectionLineType.Step) {\n [dAttr] = getSmoothStepPath({\n ...pathParams,\n borderRadius: 0\n });\n } else if (type === ConnectionLineType.SmoothStep) {\n [dAttr] = getSmoothStepPath(pathParams);\n } else if (type === ConnectionLineType.SimpleBezier) {\n [dAttr] = getSimpleBezierPath(pathParams);\n } else {\n dAttr = `M${fromX},${fromY} ${toXY.value.x},${toXY.value.y}`;\n }\n return h(\n \"svg\",\n { class: \"vue-flow__edges vue-flow__connectionline vue-flow__container\" },\n h(\n \"g\",\n { class: \"vue-flow__connection\" },\n connectionLineComponent ? h(connectionLineComponent, {\n sourceX: fromX,\n sourceY: fromY,\n sourcePosition: fromPosition,\n targetX: toXY.value.x,\n targetY: toXY.value.y,\n targetPosition: toPosition,\n sourceNode: fromNode.value,\n sourceHandle: fromHandle,\n targetNode: toNode.value,\n targetHandle: toHandle,\n markerEnd: markerEnd.value,\n markerStart: markerStart.value,\n connectionStatus: connectionStatus.value\n }) : h(\"path\", {\n \"d\": dAttr,\n \"class\": [connectionLineOptions.value.class, connectionStatus, \"vue-flow__connection-path\"],\n \"style\": {\n ...connectionLineStyle.value,\n ...connectionLineOptions.value.style\n },\n \"marker-end\": markerEnd.value,\n \"marker-start\": markerStart.value\n })\n )\n );\n };\n }\n});\nconst ConnectionLine$1 = ConnectionLine;\nconst _hoisted_1$4 = [\"id\", \"markerWidth\", \"markerHeight\", \"markerUnits\", \"orient\"];\nconst __default__$6 = {\n name: \"MarkerType\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$6 = /* @__PURE__ */ defineComponent({\n ...__default__$6,\n props: {\n id: {},\n type: {},\n color: { default: \"none\" },\n width: { default: 12.5 },\n height: { default: 12.5 },\n markerUnits: { default: \"strokeWidth\" },\n orient: { default: \"auto-start-reverse\" },\n strokeWidth: { default: 1 }\n },\n setup(__props) {\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"marker\", {\n id: _ctx.id,\n class: \"vue-flow__arrowhead\",\n viewBox: \"-10 -10 20 20\",\n refX: \"0\",\n refY: \"0\",\n markerWidth: `${_ctx.width}`,\n markerHeight: `${_ctx.height}`,\n markerUnits: _ctx.markerUnits,\n orient: _ctx.orient\n }, [\n _ctx.type === unref(MarkerType).ArrowClosed ? (openBlock(), createElementBlock(\"polyline\", {\n key: 0,\n style: normalizeStyle({\n stroke: _ctx.color,\n fill: _ctx.color,\n strokeWidth: _ctx.strokeWidth\n }),\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n points: \"-5,-4 0,0 -5,4 -5,-4\"\n }, null, 4)) : createCommentVNode(\"\", true),\n _ctx.type === unref(MarkerType).Arrow ? (openBlock(), createElementBlock(\"polyline\", {\n key: 1,\n style: normalizeStyle({\n stroke: _ctx.color,\n strokeWidth: _ctx.strokeWidth\n }),\n \"stroke-linecap\": \"round\",\n \"stroke-linejoin\": \"round\",\n fill: \"none\",\n points: \"-5,-4 0,0 -5,4\"\n }, null, 4)) : createCommentVNode(\"\", true)\n ], 8, _hoisted_1$4);\n };\n }\n});\nconst _hoisted_1$3 = {\n class: \"vue-flow__marker vue-flow__container\",\n \"aria-hidden\": \"true\"\n};\nconst __default__$5 = {\n name: \"MarkerDefinitions\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$5 = /* @__PURE__ */ defineComponent({\n ...__default__$5,\n setup(__props) {\n const { id: vueFlowId, edges, connectionLineOptions, defaultMarkerColor: defaultColor } = useVueFlow();\n const markers = computed(() => {\n const ids = /* @__PURE__ */ new Set();\n const markers2 = [];\n const createMarkers = (marker) => {\n if (marker) {\n const markerId = getMarkerId(marker, vueFlowId);\n if (!ids.has(markerId)) {\n if (typeof marker === \"object\") {\n markers2.push({ ...marker, id: markerId, color: marker.color || defaultColor.value });\n } else {\n markers2.push({ id: markerId, color: defaultColor.value, type: marker });\n }\n ids.add(markerId);\n }\n }\n };\n for (const marker of [connectionLineOptions.value.markerEnd, connectionLineOptions.value.markerStart]) {\n createMarkers(marker);\n }\n for (const edge of edges.value) {\n for (const marker of [edge.markerStart, edge.markerEnd]) {\n createMarkers(marker);\n }\n }\n return markers2.sort((a, b) => a.id.localeCompare(b.id));\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"svg\", _hoisted_1$3, [\n createElementVNode(\"defs\", null, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(markers.value, (marker) => {\n return openBlock(), createBlock(_sfc_main$6, {\n id: marker.id,\n key: marker.id,\n type: marker.type,\n color: marker.color,\n width: marker.width,\n height: marker.height,\n markerUnits: marker.markerUnits,\n \"stroke-width\": marker.strokeWidth,\n orient: marker.orient\n }, null, 8, [\"id\", \"type\", \"color\", \"width\", \"height\", \"markerUnits\", \"stroke-width\", \"orient\"]);\n }), 128))\n ])\n ]);\n };\n }\n});\nconst __default__$4 = {\n name: \"Edges\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$4 = /* @__PURE__ */ defineComponent({\n ...__default__$4,\n setup(__props) {\n const { findNode, getEdges, elevateEdgesOnSelect } = useVueFlow();\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(Fragment, null, [\n createVNode(_sfc_main$5),\n (openBlock(true), createElementBlock(Fragment, null, renderList(unref(getEdges), (edge) => {\n return openBlock(), createElementBlock(\"svg\", {\n key: edge.id,\n class: \"vue-flow__edges vue-flow__container\",\n style: normalizeStyle({ zIndex: unref(getEdgeZIndex)(edge, unref(findNode), unref(elevateEdgesOnSelect)) })\n }, [\n createVNode(unref(EdgeWrapper$1), {\n id: edge.id\n }, null, 8, [\"id\"])\n ], 4);\n }), 128)),\n createVNode(unref(ConnectionLine$1))\n ], 64);\n };\n }\n});\nconst NodeWrapper = defineComponent({\n name: \"Node\",\n compatConfig: { MODE: 3 },\n props: [\"id\", \"resizeObserver\"],\n setup(props) {\n const {\n id: vueFlowId,\n noPanClassName,\n selectNodesOnDrag,\n nodesSelectionActive,\n multiSelectionActive,\n emits,\n removeSelectedNodes,\n addSelectedNodes,\n updateNodeDimensions,\n onUpdateNodeInternals,\n getNodeTypes,\n nodeExtent,\n elevateNodesOnSelect,\n disableKeyboardA11y,\n ariaLiveMessage,\n snapToGrid,\n snapGrid,\n nodeDragThreshold,\n nodesDraggable,\n elementsSelectable,\n nodesConnectable,\n nodesFocusable,\n hooks\n } = useVueFlow();\n const nodeElement = ref(null);\n provide(NodeRef, nodeElement);\n provide(NodeId, props.id);\n const slots = inject(Slots);\n const instance = getCurrentInstance();\n const updateNodePositions = useUpdateNodePositions();\n const { node, parentNode } = useNode(props.id);\n const { emit, on } = useNodeHooks(node, emits);\n const isDraggable = toRef(() => typeof node.draggable === \"undefined\" ? nodesDraggable.value : node.draggable);\n const isSelectable = toRef(() => typeof node.selectable === \"undefined\" ? elementsSelectable.value : node.selectable);\n const isConnectable = toRef(() => typeof node.connectable === \"undefined\" ? nodesConnectable.value : node.connectable);\n const isFocusable = toRef(() => typeof node.focusable === \"undefined\" ? nodesFocusable.value : node.focusable);\n const hasPointerEvents = computed(\n () => isSelectable.value || isDraggable.value || hooks.value.nodeClick.hasListeners() || hooks.value.nodeDoubleClick.hasListeners() || hooks.value.nodeMouseEnter.hasListeners() || hooks.value.nodeMouseMove.hasListeners() || hooks.value.nodeMouseLeave.hasListeners()\n );\n const isInit = toRef(() => !!node.dimensions.width && !!node.dimensions.height);\n const nodeCmp = computed(() => {\n const name = node.type || \"default\";\n const slot = slots == null ? void 0 : slots[`node-${name}`];\n if (slot) {\n return slot;\n }\n let nodeType = node.template || getNodeTypes.value[name];\n if (typeof nodeType === \"string\") {\n if (instance) {\n const components = Object.keys(instance.appContext.components);\n if (components && components.includes(name)) {\n nodeType = resolveComponent(name, false);\n }\n }\n }\n if (nodeType && typeof nodeType !== \"string\") {\n return nodeType;\n }\n emits.error(new VueFlowError(ErrorCode.NODE_TYPE_MISSING, nodeType));\n return false;\n });\n const dragging = useDrag({\n id: props.id,\n el: nodeElement,\n disabled: () => !isDraggable.value,\n selectable: isSelectable,\n dragHandle: () => node.dragHandle,\n onStart(event) {\n emit.dragStart(event);\n },\n onDrag(event) {\n emit.drag(event);\n },\n onStop(event) {\n emit.dragStop(event);\n },\n onClick(event) {\n onSelectNode(event);\n }\n });\n const getClass = computed(() => node.class instanceof Function ? node.class(node) : node.class);\n const getStyle = computed(() => {\n const styles = (node.style instanceof Function ? node.style(node) : node.style) || {};\n const width = node.width instanceof Function ? node.width(node) : node.width;\n const height = node.height instanceof Function ? node.height(node) : node.height;\n if (!styles.width && width) {\n styles.width = typeof width === \"string\" ? width : `${width}px`;\n }\n if (!styles.height && height) {\n styles.height = typeof height === \"string\" ? height : `${height}px`;\n }\n return styles;\n });\n const zIndex = toRef(() => Number(node.zIndex ?? getStyle.value.zIndex ?? 0));\n onUpdateNodeInternals((updateIds) => {\n if (updateIds.includes(props.id) || !updateIds.length) {\n updateInternals();\n }\n });\n onMounted(() => {\n watch(\n () => node.hidden,\n (isHidden = false, _, onCleanup) => {\n if (!isHidden && nodeElement.value) {\n props.resizeObserver.observe(nodeElement.value);\n onCleanup(() => {\n if (nodeElement.value) {\n props.resizeObserver.unobserve(nodeElement.value);\n }\n });\n }\n },\n { immediate: true, flush: \"post\" }\n );\n });\n watch([() => node.type, () => node.sourcePosition, () => node.targetPosition], () => {\n nextTick(() => {\n updateNodeDimensions([{ id: props.id, nodeElement: nodeElement.value, forceUpdate: true }]);\n });\n });\n watch(\n [\n () => node.position.x,\n () => node.position.y,\n () => {\n var _a;\n return (_a = parentNode.value) == null ? void 0 : _a.computedPosition.x;\n },\n () => {\n var _a;\n return (_a = parentNode.value) == null ? void 0 : _a.computedPosition.y;\n },\n () => {\n var _a;\n return (_a = parentNode.value) == null ? void 0 : _a.computedPosition.z;\n },\n zIndex,\n () => node.selected,\n () => node.dimensions.height,\n () => node.dimensions.width,\n () => {\n var _a;\n return (_a = parentNode.value) == null ? void 0 : _a.dimensions.height;\n },\n () => {\n var _a;\n return (_a = parentNode.value) == null ? void 0 : _a.dimensions.width;\n }\n ],\n ([newX, newY, parentX, parentY, parentZ, nodeZIndex]) => {\n const xyzPos = {\n x: newX,\n y: newY,\n z: nodeZIndex + (elevateNodesOnSelect.value ? node.selected ? 1e3 : 0 : 0)\n };\n if (typeof parentX !== \"undefined\" && typeof parentY !== \"undefined\") {\n node.computedPosition = getXYZPos({ x: parentX, y: parentY, z: parentZ }, xyzPos);\n } else {\n node.computedPosition = xyzPos;\n }\n },\n { flush: \"post\", immediate: true }\n );\n watch([() => node.extent, nodeExtent], ([nodeExtent2, globalExtent], [oldNodeExtent, oldGlobalExtent]) => {\n if (nodeExtent2 !== oldNodeExtent || globalExtent !== oldGlobalExtent) {\n clampPosition2();\n }\n });\n if (node.extent === \"parent\" || typeof node.extent === \"object\" && \"range\" in node.extent && node.extent.range === \"parent\") {\n until(() => isInit).toBe(true).then(clampPosition2);\n } else {\n clampPosition2();\n }\n return () => {\n if (node.hidden) {\n return null;\n }\n return h(\n \"div\",\n {\n \"ref\": nodeElement,\n \"data-id\": node.id,\n \"class\": [\n \"vue-flow__node\",\n `vue-flow__node-${nodeCmp.value === false ? \"default\" : node.type || \"default\"}`,\n {\n [noPanClassName.value]: isDraggable.value,\n dragging: dragging == null ? void 0 : dragging.value,\n draggable: isDraggable.value,\n selected: node.selected,\n selectable: isSelectable.value,\n parent: node.isParent\n },\n getClass.value\n ],\n \"style\": {\n visibility: isInit.value ? \"visible\" : \"hidden\",\n zIndex: node.computedPosition.z ?? zIndex.value,\n transform: `translate(${node.computedPosition.x}px,${node.computedPosition.y}px)`,\n pointerEvents: hasPointerEvents.value ? \"all\" : \"none\",\n ...getStyle.value\n },\n \"tabIndex\": isFocusable.value ? 0 : void 0,\n \"role\": isFocusable.value ? \"group\" : void 0,\n \"aria-describedby\": disableKeyboardA11y.value ? void 0 : `${ARIA_NODE_DESC_KEY}-${vueFlowId}`,\n \"aria-label\": node.ariaLabel,\n \"aria-roledescription\": \"node\",\n ...node.domAttributes,\n \"onMouseenter\": onMouseEnter,\n \"onMousemove\": onMouseMove,\n \"onMouseleave\": onMouseLeave,\n \"onContextmenu\": onContextMenu,\n \"onClick\": onSelectNode,\n \"onDblclick\": onDoubleClick,\n \"onKeydown\": onKeyDown\n },\n [\n h(nodeCmp.value === false ? getNodeTypes.value.default : nodeCmp.value, {\n id: node.id,\n type: node.type,\n data: node.data,\n events: { ...node.events, ...on },\n selected: node.selected,\n resizing: node.resizing,\n dragging: dragging.value,\n connectable: isConnectable.value,\n position: node.computedPosition,\n dimensions: node.dimensions,\n isValidTargetPos: node.isValidTargetPos,\n isValidSourcePos: node.isValidSourcePos,\n parent: node.parentNode,\n parentNodeId: node.parentNode,\n zIndex: node.computedPosition.z ?? zIndex.value,\n targetPosition: node.targetPosition,\n sourcePosition: node.sourcePosition,\n label: node.label,\n dragHandle: node.dragHandle,\n onUpdateNodeInternals: updateInternals\n })\n ]\n );\n };\n function clampPosition2() {\n const nextPosition = node.computedPosition;\n const { computedPosition, position } = calcNextPosition(\n node,\n snapToGrid.value ? snapPosition(nextPosition, snapGrid.value) : nextPosition,\n emits.error,\n nodeExtent.value,\n parentNode.value\n );\n if (node.computedPosition.x !== computedPosition.x || node.computedPosition.y !== computedPosition.y) {\n node.computedPosition = { ...node.computedPosition, ...computedPosition };\n }\n if (node.position.x !== position.x || node.position.y !== position.y) {\n node.position = position;\n }\n }\n function updateInternals() {\n if (nodeElement.value) {\n updateNodeDimensions([{ id: props.id, nodeElement: nodeElement.value, forceUpdate: true }]);\n }\n }\n function onMouseEnter(event) {\n if (!(dragging == null ? void 0 : dragging.value)) {\n emit.mouseEnter({ event, node });\n }\n }\n function onMouseMove(event) {\n if (!(dragging == null ? void 0 : dragging.value)) {\n emit.mouseMove({ event, node });\n }\n }\n function onMouseLeave(event) {\n if (!(dragging == null ? void 0 : dragging.value)) {\n emit.mouseLeave({ event, node });\n }\n }\n function onContextMenu(event) {\n return emit.contextMenu({ event, node });\n }\n function onDoubleClick(event) {\n return emit.doubleClick({ event, node });\n }\n function onSelectNode(event) {\n if (isSelectable.value && (!selectNodesOnDrag.value || !isDraggable.value || nodeDragThreshold.value > 0)) {\n handleNodeClick(\n node,\n multiSelectionActive.value,\n addSelectedNodes,\n removeSelectedNodes,\n nodesSelectionActive,\n false,\n nodeElement.value\n );\n }\n emit.click({ event, node });\n }\n function onKeyDown(event) {\n if (isInputDOMNode(event) || disableKeyboardA11y.value) {\n return;\n }\n if (elementSelectionKeys.includes(event.key) && isSelectable.value) {\n const unselect = event.key === \"Escape\";\n handleNodeClick(\n node,\n multiSelectionActive.value,\n addSelectedNodes,\n removeSelectedNodes,\n nodesSelectionActive,\n unselect,\n nodeElement.value\n );\n } else if (isDraggable.value && node.selected && arrowKeyDiffs[event.key]) {\n event.preventDefault();\n ariaLiveMessage.value = `Moved selected node ${event.key.replace(\"Arrow\", \"\").toLowerCase()}. New position, x: ${~~node.position.x}, y: ${~~node.position.y}`;\n updateNodePositions(\n {\n x: arrowKeyDiffs[event.key].x,\n y: arrowKeyDiffs[event.key].y\n },\n event.shiftKey\n );\n }\n }\n }\n});\nconst NodeWrapper$1 = NodeWrapper;\nconst _hoisted_1$2 = {\n height: \"0\",\n width: \"0\"\n};\nconst __default__$3 = {\n name: \"EdgeLabelRenderer\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$3 = /* @__PURE__ */ defineComponent({\n ...__default__$3,\n setup(__props) {\n const { viewportRef } = useVueFlow();\n const teleportTarget = toRef(() => {\n var _a;\n return (_a = viewportRef.value) == null ? void 0 : _a.getElementsByClassName(\"vue-flow__edge-labels\")[0];\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"svg\", null, [\n (openBlock(), createElementBlock(\"foreignObject\", _hoisted_1$2, [\n (openBlock(), createBlock(Teleport, {\n to: teleportTarget.value,\n disabled: !teleportTarget.value\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 8, [\"to\", \"disabled\"]))\n ]))\n ]);\n };\n }\n});\nfunction useNodesInitialized(options = { includeHiddenNodes: false }) {\n const { nodes } = useVueFlow();\n return computed(() => {\n if (nodes.value.length === 0) {\n return false;\n }\n for (const node of nodes.value) {\n if (options.includeHiddenNodes || !node.hidden) {\n if ((node == null ? void 0 : node.handleBounds) === void 0 || node.dimensions.width === 0 || node.dimensions.height === 0) {\n return false;\n }\n }\n }\n return true;\n });\n}\nconst _hoisted_1$1 = { class: \"vue-flow__nodes vue-flow__container\" };\nconst __default__$2 = {\n name: \"Nodes\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$2 = /* @__PURE__ */ defineComponent({\n ...__default__$2,\n setup(__props) {\n const { getNodes, updateNodeDimensions, emits } = useVueFlow();\n const nodesInitialized = useNodesInitialized();\n const resizeObserver = ref();\n watch(\n nodesInitialized,\n (isInit) => {\n if (isInit) {\n nextTick(() => {\n emits.nodesInitialized(getNodes.value);\n });\n }\n },\n { immediate: true }\n );\n onMounted(() => {\n resizeObserver.value = new ResizeObserver((entries) => {\n const updates = entries.map((entry) => {\n const id2 = entry.target.getAttribute(\"data-id\");\n return {\n id: id2,\n nodeElement: entry.target,\n forceUpdate: true\n };\n });\n nextTick(() => updateNodeDimensions(updates));\n });\n });\n onBeforeUnmount(() => {\n var _a;\n return (_a = resizeObserver.value) == null ? void 0 : _a.disconnect();\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1$1, [\n resizeObserver.value ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(unref(getNodes), (node, __, ___, _cached) => {\n const _memo = [node.id];\n if (_cached && _cached.key === node.id && isMemoSame(_cached, _memo))\n return _cached;\n const _item = (openBlock(), createBlock(unref(NodeWrapper$1), {\n id: node.id,\n key: node.id,\n \"resize-observer\": resizeObserver.value\n }, null, 8, [\"id\", \"resize-observer\"]));\n _item.memo = _memo;\n return _item;\n }, _cache, 0), 128)) : createCommentVNode(\"\", true)\n ]);\n };\n }\n});\nfunction useStylesLoadedWarning() {\n const { emits } = useVueFlow();\n onMounted(() => {\n if (isDev()) {\n const pane = document.querySelector(\".vue-flow__pane\");\n if (pane && !(window.getComputedStyle(pane).zIndex === \"1\")) {\n emits.error(new VueFlowError(ErrorCode.MISSING_STYLES));\n }\n }\n });\n}\nconst _hoisted_1 = /* @__PURE__ */ createElementVNode(\"div\", { class: \"vue-flow__edge-labels\" }, null, -1);\nconst __default__$1 = {\n name: \"VueFlow\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main$1 = /* @__PURE__ */ defineComponent({\n ...__default__$1,\n props: {\n id: {},\n modelValue: {},\n nodes: {},\n edges: {},\n edgeTypes: {},\n nodeTypes: {},\n connectionMode: {},\n connectionLineType: {},\n connectionLineStyle: { default: void 0 },\n connectionLineOptions: { default: void 0 },\n connectionRadius: {},\n isValidConnection: { type: [Function, null], default: void 0 },\n deleteKeyCode: { default: void 0 },\n selectionKeyCode: { type: [Boolean, null], default: void 0 },\n multiSelectionKeyCode: { default: void 0 },\n zoomActivationKeyCode: { default: void 0 },\n panActivationKeyCode: { default: void 0 },\n snapToGrid: { type: Boolean, default: void 0 },\n snapGrid: {},\n onlyRenderVisibleElements: { type: Boolean, default: void 0 },\n edgesUpdatable: { type: [Boolean, String], default: void 0 },\n nodesDraggable: { type: Boolean, default: void 0 },\n nodesConnectable: { type: Boolean, default: void 0 },\n nodeDragThreshold: {},\n elementsSelectable: { type: Boolean, default: void 0 },\n selectNodesOnDrag: { type: Boolean, default: void 0 },\n panOnDrag: { type: [Boolean, Array], default: void 0 },\n minZoom: {},\n maxZoom: {},\n defaultViewport: {},\n translateExtent: {},\n nodeExtent: {},\n defaultMarkerColor: {},\n zoomOnScroll: { type: Boolean, default: void 0 },\n zoomOnPinch: { type: Boolean, default: void 0 },\n panOnScroll: { type: Boolean, default: void 0 },\n panOnScrollSpeed: {},\n panOnScrollMode: {},\n paneClickDistance: {},\n zoomOnDoubleClick: { type: Boolean, default: void 0 },\n preventScrolling: { type: Boolean, default: void 0 },\n selectionMode: {},\n edgeUpdaterRadius: {},\n fitViewOnInit: { type: Boolean, default: void 0 },\n connectOnClick: { type: Boolean, default: void 0 },\n applyDefault: { type: Boolean, default: void 0 },\n autoConnect: { type: [Boolean, Function], default: void 0 },\n noDragClassName: {},\n noWheelClassName: {},\n noPanClassName: {},\n defaultEdgeOptions: {},\n elevateEdgesOnSelect: { type: Boolean, default: void 0 },\n elevateNodesOnSelect: { type: Boolean, default: void 0 },\n disableKeyboardA11y: { type: Boolean, default: void 0 },\n edgesFocusable: { type: Boolean, default: void 0 },\n nodesFocusable: { type: Boolean, default: void 0 },\n autoPanOnConnect: { type: Boolean, default: void 0 },\n autoPanOnNodeDrag: { type: Boolean, default: void 0 },\n autoPanSpeed: {}\n },\n emits: [\"nodesChange\", \"edgesChange\", \"nodesInitialized\", \"paneReady\", \"init\", \"updateNodeInternals\", \"error\", \"connect\", \"connectStart\", \"connectEnd\", \"clickConnectStart\", \"clickConnectEnd\", \"moveStart\", \"move\", \"moveEnd\", \"selectionDragStart\", \"selectionDrag\", \"selectionDragStop\", \"selectionContextMenu\", \"selectionStart\", \"selectionEnd\", \"viewportChangeStart\", \"viewportChange\", \"viewportChangeEnd\", \"paneScroll\", \"paneClick\", \"paneContextMenu\", \"paneMouseEnter\", \"paneMouseMove\", \"paneMouseLeave\", \"edgeUpdate\", \"edgeContextMenu\", \"edgeMouseEnter\", \"edgeMouseMove\", \"edgeMouseLeave\", \"edgeDoubleClick\", \"edgeClick\", \"edgeUpdateStart\", \"edgeUpdateEnd\", \"nodeContextMenu\", \"nodeMouseEnter\", \"nodeMouseMove\", \"nodeMouseLeave\", \"nodeDoubleClick\", \"nodeClick\", \"nodeDragStart\", \"nodeDrag\", \"nodeDragStop\", \"miniMapNodeClick\", \"miniMapNodeDoubleClick\", \"miniMapNodeMouseEnter\", \"miniMapNodeMouseMove\", \"miniMapNodeMouseLeave\", \"update:modelValue\", \"update:nodes\", \"update:edges\"],\n setup(__props, { expose: __expose, emit }) {\n const props = __props;\n const slots = useSlots();\n const modelValue = useVModel(props, \"modelValue\", emit);\n const modelNodes = useVModel(props, \"nodes\", emit);\n const modelEdges = useVModel(props, \"edges\", emit);\n const instance = useVueFlow(props);\n const dispose = useWatchProps({ modelValue, nodes: modelNodes, edges: modelEdges }, props, instance);\n useHooks(emit, instance.hooks);\n useOnInitHandler();\n useStylesLoadedWarning();\n provide(Slots, slots);\n onUnmounted(() => {\n dispose();\n });\n __expose(instance);\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n ref: unref(instance).vueFlowRef,\n class: \"vue-flow\"\n }, [\n createVNode(_sfc_main$8, null, {\n default: withCtx(() => [\n createVNode(_sfc_main$4),\n _hoisted_1,\n createVNode(_sfc_main$2),\n renderSlot(_ctx.$slots, \"zoom-pane\")\n ]),\n _: 3\n }),\n renderSlot(_ctx.$slots, \"default\"),\n createVNode(_sfc_main$7)\n ], 512);\n };\n }\n});\nconst __default__ = {\n name: \"Panel\",\n compatConfig: { MODE: 3 }\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...__default__,\n props: {\n position: {}\n },\n setup(__props) {\n const props = __props;\n const { userSelectionActive } = useVueFlow();\n const positionClasses = computed(() => `${props.position}`.split(\"-\"));\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\"vue-flow__panel\", positionClasses.value]),\n style: normalizeStyle({ pointerEvents: unref(userSelectionActive) ? \"none\" : \"all\" })\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 6);\n };\n }\n});\nfunction useConnection() {\n const {\n connectionStartHandle: startHandle,\n connectionEndHandle: endHandle,\n connectionStatus: status,\n connectionPosition: position\n } = useVueFlow();\n return {\n startHandle,\n endHandle,\n status,\n position\n };\n}\nfunction useHandleConnections(params) {\n const { type, id: id2, nodeId, onConnect, onDisconnect } = params;\n const { connectionLookup } = useVueFlow();\n const _nodeId = useNodeId();\n const currentNodeId = toRef(() => toValue$1(nodeId) ?? _nodeId);\n const handleType = toRef(() => toValue$1(type));\n const handleId = toRef(() => toValue$1(id2) ?? null);\n const prevConnections = ref(null);\n const connections = ref();\n watch(\n () => connectionLookup.value.get(`${currentNodeId.value}-${handleType.value}-${handleId.value}`),\n (nextConnections) => {\n if (areConnectionMapsEqual(connections.value, nextConnections)) {\n return;\n }\n connections.value = nextConnections;\n },\n { immediate: true }\n );\n watch(\n [connections, () => typeof onConnect !== \"undefined\", () => typeof onDisconnect !== \"undefined\"],\n ([currentConnections = /* @__PURE__ */ new Map()]) => {\n if (prevConnections.value && prevConnections.value !== currentConnections) {\n handleConnectionChange(prevConnections.value, currentConnections, onDisconnect);\n handleConnectionChange(currentConnections, prevConnections.value, onConnect);\n }\n prevConnections.value = currentConnections;\n },\n { immediate: true }\n );\n return computed(() => {\n if (!connections.value) {\n return [];\n }\n return Array.from(connections.value.values());\n });\n}\nfunction useNodeConnections(params = {}) {\n const { handleType, handleId, nodeId, onConnect, onDisconnect } = params;\n const { connectionLookup } = useVueFlow();\n const _nodeId = useNodeId();\n const prevConnections = ref(null);\n const connections = ref();\n const lookupKey = computed(() => {\n const currNodeId = toValue$1(nodeId) ?? _nodeId;\n const currentHandleType = toValue$1(handleType);\n const currHandleId = toValue$1(handleId);\n let handleSuffix = \"\";\n if (currentHandleType) {\n handleSuffix = currHandleId ? `-${currentHandleType}-${currHandleId}` : `-${currentHandleType}`;\n }\n return `${currNodeId}${handleSuffix}`;\n });\n watch(\n () => connectionLookup.value.get(lookupKey.value),\n (nextConnections) => {\n if (areConnectionMapsEqual(connections.value, nextConnections)) {\n return;\n }\n connections.value = nextConnections;\n },\n { immediate: true }\n );\n watch(\n [connections, () => typeof onConnect !== \"undefined\", () => typeof onDisconnect !== \"undefined\"],\n ([currentConnections = /* @__PURE__ */ new Map()]) => {\n if (prevConnections.value && prevConnections.value !== currentConnections) {\n handleConnectionChange(prevConnections.value, currentConnections, onDisconnect);\n handleConnectionChange(currentConnections, prevConnections.value, onConnect);\n }\n prevConnections.value = currentConnections;\n },\n { immediate: true }\n );\n return computed(() => {\n if (!connections.value) {\n return [];\n }\n return Array.from(connections.value.values());\n });\n}\nfunction useNodesData(_nodeIds) {\n const { findNode } = useVueFlow();\n return computed({\n get() {\n const nodeIds = toValue$1(_nodeIds);\n if (!Array.isArray(nodeIds)) {\n const node = findNode(nodeIds);\n if (node) {\n return {\n id: node.id,\n type: node.type,\n data: node.data\n };\n }\n return null;\n }\n const data = [];\n for (const nodeId of nodeIds) {\n const node = findNode(nodeId);\n if (node) {\n data.push({\n id: node.id,\n type: node.type,\n data: node.data\n });\n }\n }\n return data;\n },\n set() {\n warn(\"You are trying to set node data via useNodesData. This is not supported.\");\n }\n });\n}\nfunction useEdgesData(_edgeIds) {\n const { findEdge } = useVueFlow();\n return computed({\n get() {\n const edgeIds = toValue$1(_edgeIds);\n if (!Array.isArray(edgeIds)) {\n const edge = findEdge(edgeIds);\n if (edge) {\n return {\n id: edge.id,\n type: edge.type,\n data: edge.data ?? null\n };\n }\n return null;\n }\n const data = [];\n for (const edgeId of edgeIds) {\n const edge = findEdge(edgeId);\n if (edge) {\n data.push({\n id: edge.id,\n type: edge.type,\n data: edge.data ?? null\n });\n }\n }\n return data;\n },\n set() {\n warn(\"You are trying to set edge data via useEdgesData. This is not supported.\");\n }\n });\n}\nexport {\n _sfc_main$d as BaseEdge,\n BezierEdge$1 as BezierEdge,\n ConnectionLineType,\n ConnectionMode,\n _sfc_main$3 as EdgeLabelRenderer,\n _sfc_main$e as EdgeText,\n ErrorCode,\n _sfc_main$f as Handle,\n MarkerType,\n NodeId as NodeIdInjection,\n PanOnScrollMode,\n _sfc_main as Panel,\n PanelPosition,\n Position,\n SelectionMode,\n SimpleBezierEdge$1 as SimpleBezierEdge,\n SmoothStepEdge$1 as SmoothStepEdge,\n StepEdge$1 as StepEdge,\n StraightEdge$1 as StraightEdge,\n _sfc_main$1 as VueFlow,\n VueFlowError,\n VueFlow as VueFlowInjection,\n addEdge,\n applyChanges,\n applyEdgeChanges,\n applyNodeChanges,\n clamp,\n connectionExists,\n defaultEdgeTypes,\n defaultNodeTypes,\n getBezierEdgeCenter,\n getBezierPath,\n getBoundsofRects,\n getConnectedEdges,\n getIncomers,\n getMarkerId,\n getNodesInside,\n getOutgoers,\n getRectOfNodes,\n getSimpleBezierPath,\n getSimpleEdgeCenter,\n getSmoothStepPath,\n getStraightPath,\n getTransformForBounds,\n rendererPointToPoint as graphPosToZoomedPos,\n isEdge,\n isErrorOfType,\n isGraphEdge,\n isGraphNode,\n isNode,\n pointToRendererPoint,\n rendererPointToPoint,\n updateEdge,\n useConnection,\n useEdge,\n useEdgesData,\n useGetPointerPosition,\n useHandle,\n useHandleConnections,\n useKeyPress,\n useNode,\n useNodeConnections,\n useNodeId,\n useNodesData,\n useNodesInitialized,\n useVueFlow,\n useZoomPanHelper\n};\n","<template>\n\t<path :id=\"id\" :style=\"style\" class=\"vue-flow__edge-path\" :d=\"path[0]\" :marker-end=\"markerEnd\" />\n\n\t<EdgeLabelRenderer>\n\t\t<div\n\t\t\t:style=\"{\n\t\t\t\tpointerEvents: 'all',\n\t\t\t\tposition: 'absolute',\n\t\t\t\ttransform: `translate(-50%, -50%) translate(${path[1]}px,${path[2]}px)`,\n\t\t\t}\"\n\t\t\tclass=\"nodrag nopan editable-edge-label\"\n\t\t\t@click=\"labelOnClick()\">\n\t\t\t<div class=\"vue-flow__edge-label\">{{ label }}</div>\n\t\t\t<div v-if=\"showInput\" class=\"label-input-wrapper\">\n\t\t\t\t<input\n\t\t\t\t\tref=\"labelInput\"\n\t\t\t\t\tclass=\"label-input\"\n\t\t\t\t\tv-model=\"newLabel\"\n\t\t\t\t\t@blur=\"showInput = false\"\n\t\t\t\t\t@keypress.enter=\"submitNewLabel\" />\n\t\t\t</div>\n\t\t</div>\n\t</EdgeLabelRenderer>\n</template>\n\n<script setup lang=\"ts\">\nimport { type EdgeProps, EdgeLabelRenderer, getBezierPath /* useVueFlow */ } from '@vue-flow/core'\nimport { computed, ref, nextTick, useTemplateRef } from 'vue'\n\nconst props = defineProps<EdgeProps>()\nconst emit = defineEmits(['change'])\n\n// TODO: Implement edge removal\n// const { removeEdges } = useVueFlow()\n\nconst inputRef = useTemplateRef<HTMLInputElement>('labelInput')\nconst newLabel = ref<EdgeProps['label']>('')\nconst showInput = ref(false)\nlet lastClick = 0\n\nconst labelOnClick = async () => {\n\tlet now = Date.now()\n\tif (now - lastClick < 500 && !showInput.value) {\n\t\tawait showLabelInput()\n\t}\n\tlastClick = now\n}\n\nconst showLabelInput = async () => {\n\tnewLabel.value = props.label\n\tshowInput.value = true\n\tawait nextTick()\n\tinputRef.value.focus()\n}\n\nconst submitNewLabel = () => {\n\tshowInput.value = false\n\temit('change', newLabel.value)\n}\n\nconst path = computed(() => getBezierPath(props))\n</script>\n\n<script lang=\"ts\">\nexport default {\n\tinheritAttrs: false,\n}\n</script>\n\n<style>\n.editable-edge-label {\n\tbackground-color: white;\n\tposition: relative;\n\tfont-size: 12px;\n}\n\n.label-input-wrapper {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n.label-input {\n\ttext-align: center;\n\twidth: 40ch;\n}\n</style>\n","<template>\n\t<div @click=\"nodeOnClick()\">\n\t\t<div>{{ label }}</div>\n\t\t<div v-if=\"showInput\" class=\"label-input-wrapper\">\n\t\t\t<input\n\t\t\t\tref=\"labelInput\"\n\t\t\t\tclass=\"label-input\"\n\t\t\t\tv-model=\"newLabel\"\n\t\t\t\t@blur=\"showInput = false\"\n\t\t\t\t@keypress.enter=\"submitNewLabel\" />\n\t\t</div>\n\t\t<Handle v-if=\"data.hasInput\" id=\"a\" type=\"target\" :position=\"targetPosition\" />\n\t\t<Handle v-if=\"data.hasOutput\" id=\"b\" type=\"source\" :position=\"sourcePosition\" />\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport { NodeProps, Handle } from '@vue-flow/core'\nimport { ref, nextTick, useTemplateRef } from 'vue'\n\nconst props = defineProps<NodeProps>()\nconst emit = defineEmits(['change'])\n\nconst inputRef = useTemplateRef<HTMLInputElement>('labelInput')\nconst newLabel = ref<NodeProps['label']>('')\nconst showInput = ref(false)\nlet lastClick = 0\n\nconst nodeOnClick = async () => {\n\tlet now = Date.now()\n\tif (now - lastClick < 500 && !showInput.value) {\n\t\tawait showLabelInput()\n\t}\n\tlastClick = now\n}\n\nconst showLabelInput = async () => {\n\tnewLabel.value = props.label\n\tshowInput.value = true\n\tawait nextTick()\n\tinputRef.value.focus()\n}\n\nconst submitNewLabel = () => {\n\tshowInput.value = false\n\temit('change', newLabel.value)\n}\n</script>\n\n<style>\n.label-input-wrapper {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n.label-input {\n\ttext-align: center;\n}\n</style>\n","<template>\n\t<div class=\"node-editor-wrapper\" :class=\"nodeContainerClass\" @mouseover=\"hover = true\" @mouseleave=\"hover = false\">\n\t\t<div class=\"chart-controls\">\n\t\t\t<div class=\"chart-controls-left\">\n\t\t\t\t<div><b>Selected Node:</b> {{ activeElementKey ? activeElementKey : 'none' }}</div>\n\t\t\t</div>\n\t\t\t<div class=\"chart-controls-right\">\n\t\t\t\t<div>\n\t\t\t\t\t<button class=\"button-default\" @click=\"addNode\">Add Node</button>\n\t\t\t\t</div>\n\t\t\t\t<div>\n\t\t\t\t\t<button class=\"button-default\" @click=\"fitView\">Center</button>\n\t\t\t\t</div>\n\t\t\t\t<div v-if=\"activeElementIndex > -1\">\n\t\t\t\t\t<button class=\"button-default\" @click=\"shiftInput\">Shift Input Position</button>\n\t\t\t\t</div>\n\t\t\t\t<div v-if=\"activeElementIndex > -1\">\n\t\t\t\t\t<button class=\"button-default\" @click=\"shiftOutput\">Shift Output Position</button>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</div>\n\n\t\t<VueFlow\n\t\t\tv-if=\"vueFlowElements && vueFlowElements.length\"\n\t\t\tclass=\"nowheel\"\n\t\t\t:prevent-scrolling=\"true\"\n\t\t\t:zoom-on-scroll=\"false\"\n\t\t\t:fit-view-on-init=\"true\"\n\t\t\tv-model=\"vueFlowElements\"\n\t\t\t@wheel.prevent=\"onWheel\">\n\t\t\t<template #node-editable=\"props\">\n\t\t\t\t<EditableNode v-bind=\"props\" @change=\"labelChanged($event, props.id)\" />\n\t\t\t</template>\n\t\t\t<template #edge-editable=\"props\">\n\t\t\t\t<EditableEdge v-bind=\"props\" @change=\"labelChanged($event, props.id)\" />\n\t\t\t</template>\n\t\t</VueFlow>\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport { type VueFlowStore, Position, VueFlow, useVueFlow, Connection, Node } from '@vue-flow/core'\nimport { type HTMLAttributes, ref, computed, defineEmits, onBeforeUnmount, onMounted } from 'vue'\n\nimport EditableEdge from './EditableEdge.vue'\nimport EditableNode from './EditableNode.vue'\nimport type { FlowElements } from '../types'\n\nconst { modelValue, nodeContainerClass } = defineProps<{\n\tmodelValue: FlowElements\n\tnodeContainerClass?: HTMLAttributes['class']\n}>()\nconst emit = defineEmits(['update:modelValue'])\n\nconst hover = ref(false)\nconst vueFlowElements = ref<FlowElements>([])\nconst vueFlowInstance = ref<VueFlowStore>()\n\nconst activeElementKey = ref('')\nconst activeElementIndex = computed(() => {\n\tvueFlowElements.value.forEach((element, index) => {\n\t\tif (element.id === activeElementKey.value) {\n\t\t\treturn index\n\t\t}\n\t})\n\n\treturn -1\n})\n\nconst elements = computed({\n\tget: () => {\n\t\tconst _elements = modelValue\n\n\t\t// Add data to each element\n\t\tfor (const _element of _elements) {\n\t\t\t_element.data = {}\n\t\t\tif (_element.type === 'input') {\n\t\t\t\t_element.data.hasInput = false\n\t\t\t\t_element.data.hasOutput = true\n\t\t\t} else if (_element.type === 'output') {\n\t\t\t\t_element.data.hasInput = true\n\t\t\t\t_element.data.hasOutput = false\n\t\t\t} else {\n\t\t\t\t_element.data.hasInput = true\n\t\t\t\t_element.data.hasOutput = true\n\t\t\t}\n\t\t\t_element.class = 'vue-flow__node-default'\n\t\t\t_element.type = 'editable'\n\t\t}\n\n\t\t// Add click event to each element\n\t\tfor (const _element of _elements) {\n\t\t\t_element.events = {\n\t\t\t\tclick: () => {\n\t\t\t\t\tactiveElementKey.value = _element.id\n\t\t\t\t},\n\t\t\t}\n\t\t}\n\n\t\treturn _elements\n\t},\n\tset: newValue => {\n\t\temit('update:modelValue', JSON.parse(JSON.stringify(newValue)))\n\t},\n})\nconst { onConnect, addEdges, onEdgeContextMenu, onPaneReady, removeEdges } = useVueFlow()\n\nonMounted(() => {\n\tdocument.removeEventListener('keypress', handleKeypress)\n\tdocument.addEventListener('keypress', handleKeypress)\n})\n\nonBeforeUnmount(() => {\n\tdocument.removeEventListener('keypress', handleKeypress)\n})\n\nonPaneReady(instance => {\n\tvueFlowInstance.value = instance\n})\n\nvueFlowElements.value = elements.value\n\n// Methods\nconst shiftTerminal = (currentTerminal: Position) => {\n\treturn {\n\t\t[Position.Top]: Position.Right,\n\t\t[Position.Right]: Position.Bottom,\n\t\t[Position.Bottom]: Position.Left,\n\t\t[Position.Left]: Position.Top,\n\t}[currentTerminal]\n}\n\nconst shiftOutput = () => {\n\tif (activeElementIndex.value > -1) {\n\t\tconst activeNode = vueFlowElements.value[activeElementIndex.value] as Node\n\t\tactiveNode.sourcePosition = shiftTerminal(activeNode.sourcePosition)\n\t}\n}\n\nconst shiftInput = () => {\n\tif (activeElementIndex.value > -1) {\n\t\tconst activeNode = vueFlowElements.value[activeElementIndex.value] as Node\n\t\tactiveNode.targetPosition = shiftTerminal(activeNode.targetPosition)\n\t}\n}\n\nconst onWheel = (event: WheelEvent) => {\n\twindow.scrollBy(0, event.deltaY)\n}\n\nconst handleKeypress = (event: KeyboardEvent) => {\n\tif (hover.value && event.ctrlKey == true) {\n\t\tif (event.key == '+' || event.key == '=') {\n\t\t\tvoid vueFlowInstance.value.zoomIn()\n\t\t}\n\t\tif (event.key == '-') {\n\t\t\tvoid vueFlowInstance.value.zoomOut()\n\t\t}\n\t}\n}\n\nconst fitView = async () => {\n\tawait vueFlowInstance.value.fitView()\n}\n\nconst addNode = () => {\n\tlet makeEdge = false\n\tlet newNodePosition = { x: Math.random() * 200, y: Math.random() * 200 }\n\tif (activeElementIndex.value > -1) {\n\t\tconst activeNode = vueFlowElements.value[activeElementIndex.value]\n\t\tif (activeNode.data.hasOutput) {\n\t\t\tnewNodePosition = { x: (activeNode as Node).position.x + 200, y: (activeNode as Node).position.y + 50 }\n\t\t\tmakeEdge = true\n\t\t}\n\t}\n\n\tconst id = vueFlowElements.value.length\n\tconst nodeId = `node-${id}`\n\tvueFlowElements.value.push({\n\t\tid: nodeId,\n\t\tlabel: 'Node ' + id,\n\t\tsourcePosition: Position.Right,\n\t\ttargetPosition: Position.Left,\n\t\tclass: 'vue-flow__node-default',\n\t\ttype: 'editable',\n\t\tdata: {\n\t\t\thasInput: true,\n\t\t\thasOutput: true,\n\t\t},\n\t\tevents: {\n\t\t\tclick: () => {\n\t\t\t\tactiveElementKey.value = nodeId\n\t\t\t},\n\t\t},\n\t\t// position: { x: Math.random() * vueFlowInstance.value.dimensions.width, y: Math.random() * vueFlowInstance.value.dimensions.height }\n\t\tposition: newNodePosition,\n\t})\n\n\tif (makeEdge) {\n\t\tlet edgeId = `edge-${id + 1}`\n\t\tvueFlowElements.value.push({\n\t\t\tid: edgeId,\n\t\t\tsource: activeElementKey.value,\n\t\t\ttarget: nodeId,\n\t\t\ttype: 'editable',\n\t\t\tlabel: `EDGE ${id + 1}`,\n\t\t\tanimated: true,\n\t\t\tevents: {\n\t\t\t\tclick: () => {\n\t\t\t\t\tactiveElementKey.value = edgeId\n\t\t\t\t},\n\t\t\t},\n\t\t})\n\t}\n}\n\nconst labelChanged = (e, id) => {\n\tfor (let j = 0; j < vueFlowElements.value.length; j++) {\n\t\tif (vueFlowElements.value[j].id == id) {\n\t\t\tvueFlowElements.value[j].label = e\n\t\t\tbreak\n\t\t}\n\t}\n}\n\nconst handleConnect = (connection: Connection) => {\n\tconst id = vueFlowElements.value.length\n\tconst newEdge = {\n\t\tid: `edge-${id}`,\n\t\tsource: connection.source,\n\t\ttarget: connection.target,\n\t\ttype: 'editable',\n\t\tlabel: `New Edge`,\n\t\tinteractionWidth: 400,\n\t\tanimated: true,\n\t\tevents: {\n\t\t\tclick: () => {\n\t\t\t\tactiveElementKey.value = newEdge.id\n\t\t\t},\n\t\t},\n\t}\n\taddEdges([newEdge])\n}\n\nonConnect(handleConnect)\n\nconst handleEdgeRemove = edgeId => {\n\tremoveEdges(edgeId)\n}\n\nonEdgeContextMenu(({ event, edge }) => {\n\thandleEdgeRemove(edge.id)\n})\n</script>\n\n<style>\n@import '@vue-flow/core/dist/style.css';\n@import '@vue-flow/core/dist/theme-default.css';\n\n.chart-controls-left,\n.chart-controls-right {\n\theight: 1.8em;\n\tdisplay: flex;\n\tflex-direction: row;\n\talign-items: center;\n\tpadding-top: 0.2em;\n}\n\n.chart-controls-right div {\n\tmargin-left: 5px;\n}\n\n.chart-controls {\n\tpadding-left: 20px;\n\tpadding-right: 20px;\n\theight: 1.8em;\n\tborder-bottom: 1px solid #ccc;\n\tdisplay: flex;\n\tflex-direction: row;\n\tjustify-content: space-between;\n}\n\n.chart-controls div {\n\tmargin-bottom: 5px;\n}\n\n.defaultContainerClass {\n\theight: 90vh;\n\twidth: 100%;\n\tborder: 1px solid #ccc;\n}\n\n.default-input-node.vue-flow__node-input,\n.default-output-node.vue-flow__node-output {\n\tborder-color: #000;\n}\n\n.default-input-node.vue-flow__node-input .vue-flow__handle,\n.default-output-node.vue-flow__node-output .vue-flow__handle {\n\tbackground-color: #000;\n}\n\n.default-input-node.vue-flow__node-input.selected,\n.default-output-node.vue-flow__node-output.selected {\n\tbox-shadow: 0 0 0 0.5px #000;\n}\n\nbutton.button-default {\n\tbackground-color: #ffffff;\n\tpadding: 1px 12px;\n\tborder-radius: 3px;\n\tborder: 1px solid #ccc;\n\tcursor: pointer;\n\twhite-space: nowrap;\n}\n\nbutton.button-default:hover {\n\tbackground-color: #f2f2f2;\n}\n\n.vue-flow {\n\tbackground-size: 40px 40px;\n\tbackground-image: linear-gradient(to right, #ccc 1px, transparent 1px),\n\t\tlinear-gradient(to bottom, #ccc 1px, transparent 1px);\n}\n\ninput.label-editor {\n\tposition: absolute;\n}\n\n.node-editor-wrapper {\n\tposition: relative;\n}\n</style>\n","<template>\n\t<div>\n\t\t<NodeEditor v-model=\"elements\" :node-container-class=\"nodeContainerClass\" />\n\t</div>\n</template>\n\n<script setup lang=\"ts\">\nimport { type Node, Position } from '@vue-flow/core'\nimport { type HTMLAttributes, computed } from 'vue'\n\nimport NodeEditor from './NodeEditor.vue'\nimport type { EditorStates, FlowElement, FlowElements, Layout } from '../types'\n\nconst emit = defineEmits(['update:modelValue'])\nconst states = defineModel<EditorStates>()\nconst { layout, nodeContainerClass } = defineProps<{\n\tlayout: Layout\n\tnodeContainerClass?: HTMLAttributes['class']\n}>()\n\nconst elements = computed<FlowElements>({\n\tget: () => {\n\t\tconst hasInputs = {}\n\t\tconst stateElements: FlowElements = []\n\t\tconst stateHash: Record<string, FlowElement> = {}\n\n\t\tif (!states.value) {\n\t\t\treturn stateElements\n\t\t}\n\n\t\tlet index = 0\n\t\tfor (const [key, value] of Object.entries(states.value)) {\n\t\t\tconst el: Node = {\n\t\t\t\tid: key,\n\t\t\t\tlabel: key,\n\t\t\t\tposition: layout[key]?.position || { x: 200 * index, y: 100 },\n\t\t\t\ttargetPosition: layout[key]?.targetPosition || Position.Left,\n\t\t\t\tsourcePosition: layout[key]?.sourcePosition || Position.Right,\n\t\t\t}\n\n\t\t\tif (value?.type === 'final') {\n\t\t\t\tel.type = 'output'\n\t\t\t\tel.class = 'default-output-node'\n\t\t\t}\n\n\t\t\tstateHash[key] = el\n\t\t}\n\n\t\tfor (const [key, value] of Object.entries(states.value)) {\n\t\t\tif (value?.on) {\n\t\t\t\tfor (const [edgeKey, edgeValue] of Object.entries(value.on)) {\n\t\t\t\t\t// NOTE: If the proxy array 'value.on' has more than one edge, 'edgeValue' will contain a proxy object\n\t\t\t\t\t// where 'target' can be accessed. Otherwise, 'edgeValue' will be available directly.\n\n\t\t\t\t\t// TODO: resolve type issues with xstate\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n\t\t\t\t\tconst target = edgeValue.target || edgeValue\n\t\t\t\t\tstateElements.push({\n\t\t\t\t\t\tid: `${key}-${target}`,\n\t\t\t\t\t\tsource: key,\n\t\t\t\t\t\ttarget: target,\n\t\t\t\t\t\tlabel: edgeKey,\n\t\t\t\t\t\tanimated: true,\n\t\t\t\t\t})\n\n\t\t\t\t\t// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\n\t\t\t\t\thasInputs[target] = true\n\t\t\t\t}\n\t\t\t}\n\t\t\tindex++\n\t\t}\n\n\t\tfor (const [key, value] of Object.entries(stateHash)) {\n\t\t\tif (!hasInputs[key]) {\n\t\t\t\tvalue['type'] = 'input'\n\t\t\t\tvalue['class'] = 'default-input-node'\n\t\t\t}\n\t\t\tstateElements.push(value)\n\t\t}\n\n\t\treturn stateElements\n\t},\n\n\tset: newValue => {\n\t\t// update modelValue when elements change\n\t\tonElementsChange(newValue)\n\n\t\t// TODO: emit('update:modelValue', modelValue)\n\t},\n})\nconst onElementsChange = (elements: FlowElements) => {\n\tconst edges: Record<string, Record<string, any>> = {}\n\tconst idToLabel: Record<string, string> = {}\n\tconst states: EditorStates = {}\n\n\tfor (const el of elements) {\n\t\tconst label = el.label as string\n\n\t\tif (el.type === 'input') {\n\t\t\t// it's an input node\n\t\t\tstates[label] = {\n\t\t\t\ton: {},\n\t\t\t}\n\t\t} else if (el.type === 'output') {\n\t\t\t// it's an output node\n\t\t\tstates[label] = {\n\t\t\t\ttype: 'final',\n\t\t\t}\n\t\t} else if (el.source && el.target) {\n\t\t\t// it's an edge\n\t\t\tedges[el.source] = edges[el.source] || {}\n\t\t\tedges[el.source][label] = {\n\t\t\t\ttarget: el.target,\n\t\t\t}\n\t\t} else {\n\t\t\t// it's a state\n\t\t\tstates[label] = {\n\t\t\t\ton: {},\n\t\t\t}\n\t\t}\n\t\tidToLabel[el.id] = label\n\t}\n\n\tfor (const [edgeKey, edgeValue] of Object.entries(edges)) {\n\t\t// add edges to states\n\t\tconst label = idToLabel[edgeKey]\n\t\tfor (const [key, value] of Object.entries(edgeValue)) {\n\t\t\tif (!states[label]) {\n\t\t\t\tstates[label] = { on: {} }\n\t\t\t}\n\t\t\tstates[label].on[key] = value\n\t\t}\n\t}\n\n\temit('update:modelValue', states)\n}\n</script>\n","import { App } from 'vue'\n\nimport NodeEditor from './components/NodeEditor.vue'\nimport StateEditor from './components/StateEditor.vue'\nexport type * from './types'\n\n/**\n * Install all Node Editor components\n * @param app - Vue app instance\n * @public\n */\nfunction install(app: App) {\n\tapp.component('NodeEditor', NodeEditor)\n\tapp.component('StateEditor', StateEditor)\n}\n\nexport { install, NodeEditor, StateEditor }\n"],"names":["tryOnScopeDispose","fn","getCurrentScope","onScopeDispose","toValue","r","unref","isClient","isDef$1","val","toString","isObject","noop$2","createFilterWrapper","filter2","wrapper","args","resolve","reject","bypassFilter","invoke","pausableFilter","extendFilter","isActive","ref","pause","resume","eventFilter","readonly","promiseTimeout","ms","throwOnTimeout","reason","watchWithFilter","source","cb","options","watchOptions","watch","watchPausable","toRefs","objectRef","isRef","toRefs$1","result","key","customRef","v","_a","copy","newObject","createUntil","isNot","toMatch","condition","flush","deep","timeout2","stop","promises","toBe","value","v1","v2","toBeTruthy","toBeNull","toBeUndefined","toBeNaN","toContains","array2","changed","changedTimes","n","count","until","unrefElement","elRef","plain","defaultWindow","useEventListener","target","events","listeners","cleanups","cleanup","register","el","event","listener","options2","stopWatch","optionsClone","createKeyPredicate$1","keyFilter","onKeyStroke","handler","eventName","passive","dedupe","predicate","e","cloneFnJSON","useVModel","props","emit","_b","_c","clone","defaultValue","shouldEmit","vm","getCurrentInstance","_emit","cloneFn","getValue","triggerEmit","initialValue","proxy","isUpdating","nextTick","computed","noop$1","dispatch","i","_","t","Dispatch","parseTypenames$1","typenames","types","name","typename","callback","T","get$1","set$1","type","that","c","xhtml","namespaces","namespace","prefix","creatorInherit","document2","uri","creatorFixed","fullname","creator","none","selector","selector2","selection_select","select2","groups","m","subgroups","j","group","subgroup","node","subnode","Selection$1","array","x","empty","selectorAll","arrayAll","selection_selectAll","parents","matcher","childMatcher","find","childFind","match","childFirst","selection_selectChild","filter","children","childrenFilter","selection_selectChildren","selection_filter","sparse","update","selection_enter","EnterNode","parent","datum2","child","next","constant$3","bindIndex","enter","exit","data","groupLength","dataLength","bindKey","nodeByKeyValue","keyValues","keyValue","datum","selection_data","bind","arraylike","enterGroup","updateGroup","exitGroup","i0","i1","previous","selection_exit","selection_join","onenter","onupdate","onexit","selection_merge","context","selection2","groups0","groups1","m0","m1","merges","group0","group1","merge","selection_order","selection_sort","compare","ascending","compareNode","a","b","sortgroups","sortgroup","selection_call","selection_nodes","selection_node","selection_size","size","selection_empty","selection_each","attrRemove$1","attrRemoveNS$1","attrConstant$1","attrConstantNS$1","attrFunction$1","attrFunctionNS$1","selection_attr","defaultView","styleRemove$1","styleConstant$1","priority","styleFunction$1","selection_style","styleValue","propertyRemove","propertyConstant","propertyFunction","selection_property","classArray","string","classList","ClassList","classedAdd","names","list","classedRemove","classedTrue","classedFalse","classedFunction","selection_classed","textRemove","textConstant$1","textFunction$1","selection_text","htmlRemove","htmlConstant","htmlFunction","selection_html","raise","selection_raise","lower","selection_lower","selection_append","create2","constantNull","selection_insert","before","remove","selection_remove","selection_cloneShallow","selection_cloneDeep","selection_clone","selection_datum","contextListener","parseTypenames","onRemove","on","o","onAdd","selection_on","dispatchEvent","params","window2","dispatchConstant","dispatchFunction","selection_dispatch","selection_iterator","root","selection","selection_selection","select","sourceEvent","sourceEvent2","pointer","svg","point","rect","nonpassive","nonpassivecapture","nopropagation$1","noevent$1","dragDisable","view","root2","yesdrag","noclick","constant$2","DragEvent","subject","identifier","active","y","dx","dy","dispatch2","defaultFilter$1","defaultContainer","defaultSubject","d","defaultTouchable$1","drag","container","touchable","gestures","mousedownx","mousedowny","mousemoving","touchending","clickDistance2","drag2","mousedowned","touchstarted","touchmoved","touchended","gesture","beforestart","mousemoved","mouseupped","touches","container2","touch","p","s","event2","touch2","p0","define","constructor","factory","prototype","extend","definition","Color","darker","brighter","reI","reN","reP","reHex","reRgbInteger","reRgbPercent","reRgbaInteger","reRgbaPercent","reHslPercent","reHslaPercent","named","color","channels","color_formatHex","color_formatHex8","color_formatHsl","color_formatRgb","hslConvert","format","l","rgbn","Rgb","rgba","hsla","g","rgbConvert","rgb","opacity","k","clampi","clampa","rgb_formatHex","rgb_formatHex8","rgb_formatRgb","hex","h2","Hsl","min","max","hsl","m2","hsl2rgb","clamph","clampt","constant$1","linear","exponential","gamma","nogamma","interpolateRgb","rgbGamma","color2","rgb$1","start2","end","numberArray","isNumberArray","genericArray","nb","na","interpolate$1","date","interpolateNumber","object","reA","reB","zero","one","interpolateString","bi","am","bm","bs","q","i2","degrees","identity$1","decompose","f","scaleX","scaleY","skewX","svgNode","parseCss","parseSvg","interpolateTransform","parse","pxComma","pxParen","degParen","pop","translate","xa","ya","xb","yb","rotate","scale","interpolateTransformCss","interpolateTransformSvg","epsilon2","cosh","sinh","tanh","interpolateZoom","zoomRho","rho","rho2","rho4","zoom2","p1","ux0","uy0","w0","ux1","uy1","w1","d2","S","d1","b0","b1","r0","r1","coshr0","u","_1","_2","_4","frame","timeout$1","interval","pokeDelay","taskHead","taskTail","clockLast","clockNow","clockSkew","clock","setFrame","now","clearNow","Timer","timer","delay","time","sleep","timerFlush","wake","nap","poke","now2","t0","t1","t2","timeout","elapsed","emptyOn","emptyTween","CREATED","SCHEDULED","STARTING","STARTED","RUNNING","ENDING","ENDED","schedule","id2","index","timing","schedules","create","init","schedule2","get","set","self","tween","tick","interrupt","empty2","selection_interrupt","tweenRemove","tween0","tween1","tweenFunction","transition_tween","tweenValue","transition","interpolate","attrRemove","attrRemoveNS","attrConstant","interpolate2","value1","string00","string1","interpolate0","string0","attrConstantNS","attrFunction","string10","attrFunctionNS","transition_attr","attrInterpolate","attrInterpolateNS","attrTweenNS","attrTween","transition_attrTween","delayFunction","delayConstant","transition_delay","durationFunction","durationConstant","transition_duration","easeConstant","transition_ease","easeVarying","transition_easeVarying","transition_filter","Transition","transition_merge","start","onFunction","on0","on1","sit","transition_on","removeFunction","transition_remove","transition_select","transition_selectAll","children2","inherit2","Selection","transition_selection","styleNull","styleRemove","styleConstant","styleFunction","styleMaybeRemove","listener0","remove2","transition_style","styleInterpolate","styleTween","transition_styleTween","textConstant","textFunction","transition_text","textInterpolate","textTween","transition_textTween","transition_transition","id0","id1","newId","transition_end","cancel","id","selection_prototype","cubicInOut","defaultTiming","inherit","selection_transition","constant","ZoomEvent","transform","Transform","location","identity","nopropagation","noevent","defaultFilter","defaultExtent","defaultTransform","defaultWheelDelta","defaultTouchable","defaultConstrain","extent","translateExtent","dx0","dx1","dy0","dy1","zoom","constrain","wheelDelta","scaleExtent","duration","touchstarting","touchfirst","touchDelay","wheelDelay","tapDistance","wheeled","dblclicked","collection","k0","k1","centroid","extent2","w","clean","Gesture","wheelidled","currentTarget","x0","y0","started","l0","l1","dp","dl","Position","Position2","SelectionMode","SelectionMode2","ConnectionLineType","ConnectionLineType2","ConnectionMode","ConnectionMode2","MarkerType","MarkerType2","PanOnScrollMode","PanOnScrollMode2","inputTags","defaultDoc","isInputDOMNode","hasAttribute","closest","wasModifierPressed","isKeyMatch","pressedKey","keyToMatch","pressedKeys","isKeyUp","keyCombination","isMatch","createKeyPredicate","keyOrCode","useKeyOrCode","code","keysToWatch","useKeyPress","toValue$1","isPressed","shallowRef","modifierPressed","currentFilter","createKeyFilterFn","nextKeyFilter","previousKeyFilter","reset","actInsideInputWithModifier","preventDefault","target2","isInteractiveElement","keyFilter2","ARIA_NODE_DESC_KEY","ARIA_EDGE_DESC_KEY","ARIA_LIVE_MESSAGE","elementSelectionKeys","arrowKeyDiffs","nodeToRect","getOverlappingArea","rectA","rectB","xOverlap","yOverlap","getDimensions","clamp","clampPosition","position","getHostForElement","element","doc","isEdge","isNode","isGraphNode","isNumeric","isRect","obj","parseNode","existingNode","parentNode","initialState","markRaw","isDef","parseEdge","edge","existingEdge","defaultEdgeOptions","getConnectedElements","nodeOrId","nodes","edges","dir","connectedIds","origin","getOutgoers","nodeOrId2","elements","nodeId","getIncomers","getEdgeId","sourceHandle","targetHandle","connectionExists","rendererPointToPoint","tx","ty","tScale","pointToRendererPoint","snapToGrid","snapGrid","snapPosition","getBoundsOfBoxes","box1","box2","rectToBox","width","height","boxToRect","x2","y2","getRectOfNodes","box","getNodesInside","viewport","partially","excludeNonSelectableNodes","paneRect","visibleNodes","dimensions","selectable","hidden","overlappingArea","notInitialized","partiallyVisible","area","getConnectedEdges","nodesOrId","nodeIds","getTransformForBounds","bounds","minZoom","maxZoom","padding","offset","xZoom","yZoom","clampedZoom","boundsCenterX","boundsCenterY","getXYZPos","parentPos","computedPosition","isParentSelected","findNode","getMarkerId","marker","vueFlowId","calcAutoPanVelocity","calcAutoPan","pos","speed","distance2","xMovement","yMovement","handleParentExpand","updateItem","extendWidth","extendHeight","parentStyles","currWidth","xDiff","yDiff","styleFunc","applyChanges","changes","addRemoveChanges","change","elementIds","currentChange","createSelectionChange","selected","createAdditionChange","item","createNodeRemoveChange","createEdgeRemoveChange","getSelectionChanges","items","selectedIds","mutateItem","willBeSelected","createExtendedEventHook","defaultHandler","fns","hasDefaultHandler","hasListeners","off","offFn","param","hasSelector","current","getDragItems","nodesDraggable","mousePos","dragItems","getEventHandlerParams","extendedDragItems","dragItem","getExtentPadding","getParentExtent","currentExtent","top","right","bottom","left","getExtent","triggerError","parentExtent","VueFlowError","ErrorCode","parentX","parentY","clampNodeExtent","calcNextPosition","nextPosition","nodeExtent","clampedPos","getHandlePosition","handle","fallbackPosition","center","getNodeDimensions","getEdgeHandle","handleId","isEdgeVisible","sourcePos","targetPos","sourceWidth","sourceHeight","targetWidth","targetHeight","edgeBox","viewBox","getEdgeZIndex","elevateEdgesOnSelect","hasZIndex","z","ErrorCode2","messages","parentId","isMouseEvent","isUseDragEvent","getEventPosition","isMouse","evtX","evtY","isMacOs","alwaysValid$1","resetRecentHandle","handleDomNode","getNodesWithinDistance","nodeLookup","ADDITIONAL_DISTANCE","getClosestHandle","connectionRadius","fromHandle","closestHandles","minDistance","closeNodes","allHandles","oppositeHandleType","isValidHandle","connectionMode","fromNodeId","fromHandleId","fromType","lib","flowId","isValidConnection","isTarget","handleBelow","handleToCheck","handleType","getHandleType","handleNodeId","connectable","connectableEnd","connection","isValid","edgeUpdaterType","getConnectionStatus","isInsideConnectionRadius","isHandleValid","connectionStatus","isConnectionValid","getHandle","withAbsolutePosition","handles","oppositePosition","productionEnvs","warn","message","isDev","getHandleBounds","nodeElement","nodeBounds","handleBounds","handleNodeClick","multiSelectionActive","addSelectedNodes","removeSelectedNodes","nodesSelectionActive","unselect","nodeEl","addEdgeToStore","edgeParams","updateEdgeAction","newConnection","prevEdge","shouldReplaceId","rest","createGraphNodes","parentNodes","nextNodes","parsed","addConnectionToLookup","connectionKey","connectionLookup","nodeMap","typeMap","handleMap","updateConnectionLookup","edgeLookup","sourceNode","targetNode","sourceKey","targetKey","areSetsEqual","createGraphEdges","nextEdges","findEdge","onError","validEdges","edgeOrConnection","VueFlow","NodeId","NodeRef","EdgeId","EdgeRef","Slots","useDrag","vueFlowRef","noDragClassName","nodeDragThreshold","autoPanOnNodeDrag","autoPanSpeed","panBy","selectNodesOnDrag","removeSelectedElements","updateNodePositions","emits","useVueFlow","onStart","onDrag","onStop","onClick","disabled","dragHandle","dragging","dragHandler","containerBounds","lastPos","mousePosition","dragEvent","dragStarted","autoPanId","autoPanStarted","getPointerPosition","useGetPointerPosition","updateNodes","hasChange","currentNode","nodes2","autoPan","nextPos","startDrag","pointerPos","eventStart","eventDrag","eventEnd","isClick","evt","isDisabled","onCleanup","unrefDragHandle","createEdgeHooks","useEdgeHooks","edgeHooks","hooks","xSnapped","ySnapped","alwaysValid","useHandle","onEdgeUpdate","onEdgeUpdateEnd","connectOnClick","connectionClickStartHandle","nodesConnectable","autoPanOnConnect","startConnection","updateConnection","endConnection","isValidConnectionProp","handlePointerDown","isMouseTriggered","onPointerMove","connectionPosition","closestHandle","isValidConnectionHandler","newConnection2","previousConnection","prevActiveHandle","onPointerUp","clickedHandle","fromHandleInternal","fromNodeInternal","handleClick","isOwnHandle","useNodeId","inject","useNode","createNodeHooks","useNodeHooks","nodeHooks","useUpdateNodePositions","getSelectedNodes","positionDiff","isShiftPressed","xVelo","yVelo","factor","positionDiffX","positionDiffY","nodeUpdates","DEFAULT_PADDING","defaultEase","noop","initialViewportHelper","useViewportHelper","state","transitionOptions","getD3Transition","transformViewport","zoom22","clampedX","clampedY","nextTransform","zoomLevel","nodesToFit","nextZoom","centerX","centerY","domX","domY","correctedPosition","ease","onEnd","hasDuration","useWatchProps","models","store","scope","effectScope","watchModelValue","pauseModel","pauseStore","immediateStore","watchNodesValue","watchEdgesValue","watchMaxZoom","watchMinZoom","watchTranslateExtent","watchNodeExtent","watchApplyDefault","watchAutoConnect","autoConnector","autoConnectEnabled","watchRest","skip","propKey","propValue","toRef","storeRef","nextValue","createHooks","err","useHooks","onBeforeMount","useState","storeOptionsToSkip","useActions","viewportHelper","updateNodeInternals","ids","updateIds","getIncomers$1","getOutgoers$1","getConnectedEdges$1","getHandleConnections","updateNodeDimensions","updates","viewportNode","style","elementSelectionHandler","edgeIds","changedNodes","changedEdges","edgeId","nodeChanges","addSelectedEdges","addSelectedElements","removeSelectedEdges","edgeChanges","changes2","curr","selectionChange","setMinZoom","setMaxZoom","setTranslateExtent","setNodeExtent","setPaneClickDistance","clickDistance","setInteractive","isInteractive","setNodes","setEdges","setElements","nextElements","addNodes","graphNodes","addEdges","removeNodes","removeConnectedEdges","removeChildren","nodesToRemove","createEdgeRemovalChanges","connectedEdges","createChildrenRemovalChanges","currNode","removeEdges","edgesToRemove","currEdge","updateEdge2","oldEdge","prevEdgeIndex","newEdge","validEdge","updateEdgeData","dataUpdate","nextData","applyNodeChanges2","applyEdgeChanges2","updateNode","nodeUpdate","nextNode","updateNodeData","startHandle","status","getNodeRect","nodeOrRect","isRectObj","getIntersectingNodes","nodeRect","isRect2","intersections","currNodeRect","isNodeIntersecting","delta","d3Zoom","d3Selection","constrainedTransform","transformChanged","setState","opts","exclude","setSkippedOptions","option","transitionOpts","__","___","____","_____","______","_______","_________","resetState","updatedTransform","bbox","_hoisted_1$9","__default__$f","_sfc_main$f","defineComponent","__props","__expose","createPropsRestProxy","connectionStartHandle","connectionEndHandle","noPanClassName","isConnectableStart","isConnectableEnd","isConnecting","_d","_e","_f","isClickConnecting","isConnectable","onMounted","existingBounds","nextBounds","onPointerDown","_ctx","_cache","openBlock","createElementBlock","normalizeClass","renderSlot","DefaultNode","sourcePosition","targetPosition","_label","isValidTargetPos","isValidSourcePos","label","h","Fragment","DefaultNode$1","OutputNode","OutputNode$1","InputNode","InputNode$1","_hoisted_1$8","_hoisted_2$2","_hoisted_3$1","__default__$e","_sfc_main$e","getBox","nextBox","normalizeStyle","createCommentVNode","createElementVNode","mergeProps","createBlock","resolveDynamicComponent","createTextVNode","toDisplayString","_hoisted_1$7","_hoisted_2$1","__default__$d","_sfc_main$d","pathEl","interactionEl","labelEl","attrs","useAttrs","getSimpleEdgeCenter","sourceX","sourceY","targetX","targetY","xOffset","yOffset","getBezierEdgeCenter","sourceControlX","sourceControlY","targetControlX","targetControlY","offsetX","offsetY","calculateControlOffset","curvature","getControlWithCurvature","x1","y1","ctX","ctY","getBezierPath","bezierPathParams","labelX","labelY","getControl","getSimpleBezierPath","simpleBezierPathParams","handleDirections","getDirection","distance","getPoints","sourceDir","targetDir","sourceGapped","targetGapped","dirAccessor","currDir","points","sourceGapOffset","targetGapOffset","defaultCenterX","defaultCenterY","defaultOffsetX","defaultOffsetY","verticalSplit","horizontalSplit","sourceTarget","targetSource","diff","gapOffset","dirAccessorOpposite","isSameDir","sourceGtTargetOppo","sourceLtTargetOppo","sourceGapPoint","targetGapPoint","maxXDistance","maxYDistance","getBend","bendSize","xDir2","yDir2","xDir","yDir","getSmoothStepPath","smoothStepPathParams","borderRadius","res","segment","getStraightPath","straightEdgeParams","StraightEdge","path","StraightEdge$1","SmoothStepEdge","SmoothStepEdge$1","StepEdge","StepEdge$1","BezierEdge","BezierEdge$1","SimpleBezierEdge","SimpleBezierEdge$1","defaultNodeTypes","defaultEdgeTypes","useGetters","getNode","getEdge","getEdgeTypes","edgeTypes","keys","getNodeTypes","nodeTypes","getNodes","getEdges","visibleEdges","getElements","selectedNodes","getSelectedEdges","selectedEdges","getSelectedElements","getNodesInitialized","initializedNodes","areNodesInitialized","Storage","vueApp","existingInstance","flow","preloadedState","reactiveState","reactive","hooksOn","nodesMap","edgesMap","getters","actions","idOrOpts","storage","isOptsObj","vueFlow","injectedState","shouldApplyDefault","nodesChangeHandler","edgesChangeHandler","storedInstance","provide","instance","useResizeHandler","viewportEl","resizeObserver","rendererNode","updateDimensions","onBeforeUnmount","__default__$c","_sfc_main$c","_hoisted_1$6","__default__$b","_sfc_main$b","disableKeyboardA11y","userSelectionActive","updatePositions","selectedNodesBBox","innerStyle","onContextMenu","onKeyDown","getMousePosition","__default__$a","_sfc_main$a","userSelectionRect","elementsSelectable","selectionMode","deleteKeyCode","multiSelectionKeyCode","selectedNodeIds","selectedEdgeIds","hasActiveSelection","connectionInProgress","selectionInProgress","selectionStarted","deleteKeyPressed","multiSelectKeyPressed","isKeyPressed","wrapHandler","containerRef","onWheel","mouseX","mouseY","startX","startY","nextUserSelectRect","prevSelectedNodeIds","prevSelectedEdgeIds","edgesSelectable","connections","$event","__default__$9","_sfc_main$9","fitViewOnInit","fitViewOnInitDone","isHidden","__default__$8","_sfc_main$8","defaultViewport","zoomActivationKeyCode","selectionKeyCode","panActivationKeyCode","panOnScroll","panOnScrollMode","panOnScrollSpeed","panOnDrag","zoomOnDoubleClick","zoomOnPinch","zoomOnScroll","preventScrolling","noWheelClassName","paneDragging","storeD3Zoom","storeD3Selection","storeD3ZoomHandler","viewportRef","paneClickDistance","isZoomingOrPanning","isPanScrolling","panScrollTimeout","zoomedWithRightMouseButton","mouseButton","prevTransform","panKeyPressed","selectionKeyPressed","zoomKeyPressed","shouldPanOnDrag","shouldPanOnScroll","isSelecting","viewportElement","d3ZoomHandler","flowTransform","eventToFlowTransform","isRightClickPan","viewChanged","zoomScroll","pinchZoom","eventButton","isWrappedWithClass","buttonAllowed","currentZoom","_isMacOs","pinchDelta","deltaNormalize","deltaX","deltaY","nextViewport","invalidEvent","pan","usedButton","prevViewport","eventTransform","className","createVNode","withCtx","_hoisted_1$5","_hoisted_2","_hoisted_3","__default__$7","_sfc_main$7","ariaLiveMessage","useOnInitHandler","vfInstance","isInitialized","shiftX","shift","shiftY","EdgeAnchor","radius","EdgeAnchor$1","EdgeWrapper","edgeUpdaterRadius","edgesUpdatable","edgesFocusable","slots","mouseOver","updating","edgeEl","isSelectable","isUpdatable","isFocusable","edgeClass","edgeStyle","edgeCmp","slot","edgeType","components","resolveComponent","pathOptions","sourceNodeHandles","targetNodeHandles","onEdgeClick","onEdgeContextMenu","onDoubleClick","onEdgeMouseEnter","onEdgeMouseMove","onEdgeMouseLeave","onEdgeUpdaterSourceMouseDown","onEdgeUpdaterMouseEnter","onEdgeUpdaterMouseOut","onEdgeUpdaterTargetMouseDown","handleEdgeUpdater","isSourceHandle","EdgeWrapper$1","ConnectionLine","connectionLineType","connectionLineStyle","connectionLineOptions","connectionLineComponent","fromNode","_a2","toNode","toXY","markerStart","markerEnd","startHandleId","fromHandleBounds","oppositeBounds","fromPosition","fromX","fromY","toHandle","_a3","toPosition","dAttr","pathParams","ConnectionLine$1","_hoisted_1$4","__default__$6","_sfc_main$6","_hoisted_1$3","__default__$5","_sfc_main$5","defaultColor","markers","markers2","createMarkers","markerId","renderList","__default__$4","_sfc_main$4","NodeWrapper","onUpdateNodeInternals","elevateNodesOnSelect","nodesFocusable","isDraggable","hasPointerEvents","isInit","nodeCmp","nodeType","onSelectNode","getClass","getStyle","styles","zIndex","updateInternals","newX","newY","parentZ","nodeZIndex","xyzPos","nodeExtent2","globalExtent","oldNodeExtent","oldGlobalExtent","clampPosition2","onMouseEnter","onMouseMove","onMouseLeave","NodeWrapper$1","_hoisted_1$2","__default__$3","_sfc_main$3","teleportTarget","Teleport","useNodesInitialized","_hoisted_1$1","__default__$2","_sfc_main$2","nodesInitialized","entries","entry","_cached","_memo","isMemoSame","_item","useStylesLoadedWarning","pane","_hoisted_1","__default__$1","_sfc_main$1","useSlots","modelValue","modelNodes","modelEdges","dispose","onUnmounted","__default__","__emit","inputRef","useTemplateRef","newLabel","showInput","lastClick","labelOnClick","showLabelInput","submitNewLabel","_createElementVNode","_createVNode","_unref","EdgeLabelRenderer","_normalizeStyle","_toDisplayString","_openBlock","_createElementBlock","nodeOnClick","_createBlock","Handle","hover","vueFlowElements","vueFlowInstance","activeElementKey","activeElementIndex","_elements","_element","newValue","onConnect","onPaneReady","handleKeypress","shiftTerminal","currentTerminal","shiftOutput","activeNode","shiftInput","fitView","addNode","makeEdge","newNodePosition","labelChanged","handleEdgeRemove","_normalizeClass","_hoisted_4","_hoisted_5","_withCtx","EditableNode","_mergeProps","EditableEdge","states","_useModel","hasInputs","stateElements","stateHash","edgeKey","edgeValue","onElementsChange","idToLabel","NodeEditor","install","app","StateEditor"],"mappings":"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","x_google_ignoreList":[0]}