{"version":3,"file":"react-archer.cjs","sources":["../src/utils/useIsomorphicLayoutEffect.ts","../src/ArcherContainer/ArcherContainer.context.ts","../src/utils/encodeId.ts","../node_modules/react-fast-compare/index.js","../src/utils/useDeepCompareEffect.ts","../src/ArcherElement/ArcherElement.helpers.ts","../src/ArcherElement/ArcherElement.tsx","../node_modules/react-compiler-runtime/dist/index.js","../src/geometry/Vector2.ts","../src/geometry/rectHelper.ts","../src/SvgArrow/SvgArrow.helper.ts","../src/SvgArrow/SvgArrow.tsx","../src/ArcherContainer/ArcherContainer.helpers.tsx","../src/ArcherContainer/components/SvgArrows.tsx","../src/ArcherContainer/ArcherContainer.constants.ts","../src/ArcherContainer/components/Markers.tsx","../node_modules/resize-observer-polyfill/dist/ResizeObserver.es.js","../src/ArcherContainer/ArcherContainer.hooks.ts","../src/ArcherContainer/ArcherContainer.tsx"],"sourcesContent":["import { useLayoutEffect, useEffect } from 'react';\n\n/**\n * Ignores useLayoutEffect for server-side rendering. It's fine, since the\n * server can't draw the arrows.\n * https://medium.com/@alexandereardon/uselayouteffect-and-ssr-192986cdcf7a\n */\nexport const useIsomorphicLayoutEffect =\n  typeof window !== 'undefined' ? useLayoutEffect : useEffect;\n","import React from 'react';\nimport { SourceToTargetType } from '../types';\n\nexport type ArcherContainerContextType = {\n  registerChild: (id: string, element: HTMLElement) => void;\n  registerTransitions: (id: string, sourceToTarget: SourceToTargetType[]) => void;\n  unregisterChild: (id: string) => void;\n  unregisterTransitions: (id: string) => void;\n};\n\nexport const ArcherContainerContext = React.createContext<ArcherContainerContextType | null>(null);\nexport const ArcherContainerContextProvider = ArcherContainerContext.Provider;\n","export const encodeId = (id: string): string => encodeURI(id).replace(/%/g, '_');\n","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n  // START: fast-deep-equal es6/index.js 3.1.3\n  if (a === b) return true;\n\n  if (a && b && typeof a == 'object' && typeof b == 'object') {\n    if (a.constructor !== b.constructor) return false;\n\n    var length, i, keys;\n    if (Array.isArray(a)) {\n      length = a.length;\n      if (length != b.length) return false;\n      for (i = length; i-- !== 0;)\n        if (!equal(a[i], b[i])) return false;\n      return true;\n    }\n\n    // START: Modifications:\n    // 1. Extra `has<Type> &&` helpers in initial condition allow es6 code\n    //    to co-exist with es5.\n    // 2. Replace `for of` with es5 compliant iteration using `for`.\n    //    Basically, take:\n    //\n    //    ```js\n    //    for (i of a.entries())\n    //      if (!b.has(i[0])) return false;\n    //    ```\n    //\n    //    ... and convert to:\n    //\n    //    ```js\n    //    it = a.entries();\n    //    while (!(i = it.next()).done)\n    //      if (!b.has(i.value[0])) return false;\n    //    ```\n    //\n    //    **Note**: `i` access switches to `i.value`.\n    var it;\n    if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n      if (a.size !== b.size) return false;\n      it = a.entries();\n      while (!(i = it.next()).done)\n        if (!b.has(i.value[0])) return false;\n      it = a.entries();\n      while (!(i = it.next()).done)\n        if (!equal(i.value[1], b.get(i.value[0]))) return false;\n      return true;\n    }\n\n    if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n      if (a.size !== b.size) return false;\n      it = a.entries();\n      while (!(i = it.next()).done)\n        if (!b.has(i.value[0])) return false;\n      return true;\n    }\n    // END: Modifications\n\n    if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n      length = a.length;\n      if (length != b.length) return false;\n      for (i = length; i-- !== 0;)\n        if (a[i] !== b[i]) return false;\n      return true;\n    }\n\n    if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n    // START: Modifications:\n    // Apply guards for `Object.create(null)` handling. See:\n    // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n    // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n    if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n    if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n    // END: Modifications\n\n    keys = Object.keys(a);\n    length = keys.length;\n    if (length !== Object.keys(b).length) return false;\n\n    for (i = length; i-- !== 0;)\n      if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n    // END: fast-deep-equal\n\n    // START: react-fast-compare\n    // custom handling for DOM elements\n    if (hasElementType && a instanceof Element) return false;\n\n    // custom handling for React/Preact\n    for (i = length; i-- !== 0;) {\n      if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n        // React-specific: avoid traversing React elements' _owner\n        // Preact-specific: avoid traversing Preact elements' __v and __o\n        //    __v = $_original / $_vnode\n        //    __o = $_owner\n        // These properties contain circular references and are not needed when\n        // comparing the actual elements (and not their owners)\n        // .$$typeof and ._store on just reasonable markers of elements\n\n        continue;\n      }\n\n      // all other properties should be traversed as usual\n      if (!equal(a[keys[i]], b[keys[i]])) return false;\n    }\n    // END: react-fast-compare\n\n    // START: fast-deep-equal\n    return true;\n  }\n\n  return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n  try {\n    return equal(a, b);\n  } catch (error) {\n    if (((error.message || '').match(/stack|recursion/i))) {\n      // warn on circular references, don't crash\n      // browsers give this different errors name and messages:\n      // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n      // firefox: \"InternalError\", too much recursion\"\n      // edge: \"Error\", \"Out of stack space\"\n      console.warn('react-fast-compare cannot handle circular refs');\n      return false;\n    }\n    // some other error. we should definitely know about these\n    throw error;\n  }\n};\n","import { useEffect, useRef, type EffectCallback } from 'react';\nimport isEqual from 'react-fast-compare';\n\n// https://stackoverflow.com/questions/54095994/react-useeffect-comparing-objects\nfunction useDeepCompareMemoize<T>(value: T): T | undefined {\n  const ref = useRef<T | undefined>(undefined);\n  // it can be done by using useMemo as well\n  // but useRef is rather cleaner and easier\n\n  if (!isEqual(value, ref.current)) {\n    ref.current = value;\n  }\n\n  return ref.current;\n}\n\nexport function useDeepCompareEffect<T extends EffectCallback, U extends any[]>(\n  callback: T,\n  dependencies: U,\n) {\n  // it should not be needed to put the function of the useEffect as a dependency of the useEffect itself\n  // eslint-disable-next-line react-hooks/exhaustive-deps\n  useEffect(callback, dependencies.map(useDeepCompareMemoize));\n}\n","import { ArcherContainerContextType } from '../ArcherContainer/ArcherContainer.context';\nimport { RelationType, SourceToTargetType } from '../types';\nimport { encodeId } from '../utils/encodeId';\n\nexport function assertContextExists(\n  context: ArcherContainerContextType | null,\n): asserts context is ArcherContainerContextType {\n  if (!context) {\n    throw new Error(\n      `Could not find ArcherContainerContext in <ArcherElement>. Please wrap the component in a <ArcherContainer>.`,\n    );\n  }\n}\n\nexport const generateSourceToTarget = (\n  id: string,\n  relations: Array<RelationType>,\n): Array<SourceToTargetType> => {\n  return relations.map(\n    ({\n      targetId,\n      sourceAnchor,\n      targetAnchor,\n      label,\n      className,\n      style,\n      order = 0,\n      domAttributes,\n      cursor,\n      hitSlop,\n    }: RelationType) => ({\n      source: {\n        id: encodeId(id),\n        anchor: sourceAnchor,\n      },\n      target: {\n        id: encodeId(targetId),\n        anchor: targetAnchor,\n      },\n      className,\n      label,\n      style,\n      order,\n      domAttributes,\n      cursor,\n      hitSlop,\n    }),\n  );\n};\n","import React, { useCallback, useContext, useMemo, useRef } from 'react';\nimport { useIsomorphicLayoutEffect } from '../utils/useIsomorphicLayoutEffect';\nimport { ArcherContainerContext } from '../ArcherContainer/ArcherContainer.context';\nimport { RelationType } from '../types';\nimport { encodeId } from '../utils/encodeId';\nimport { useDeepCompareEffect } from '../utils/useDeepCompareEffect';\nimport { generateSourceToTarget, assertContextExists } from './ArcherElement.helpers';\n\ntype ArcherElementProps = {\n  /**\n   * The id that will identify the Archer Element.\n   */\n  id: string;\n  relations?: Array<RelationType>;\n  children: React.ReactElement<React.ComponentProps<any>, any>;\n};\n\nconst ArcherElement = ({ id, relations = [], children }: ArcherElementProps) => {\n  const encodedId = useMemo(() => encodeId(id), [id]);\n  const context = useContext(ArcherContainerContext);\n  const ref = useRef<HTMLElement | undefined>(undefined);\n\n  const registerTransitions = useCallback(\n    (newRelations: Array<RelationType>) => {\n      const newSourceToTarget = generateSourceToTarget(encodedId, newRelations);\n\n      assertContextExists(context);\n\n      context.registerTransitions(encodedId, newSourceToTarget);\n    },\n    [context, encodedId],\n  );\n\n  const unregisterTransitions = useCallback(() => {\n    assertContextExists(context);\n\n    context.unregisterTransitions(encodedId);\n  }, [context, encodedId]);\n\n  const registerChild = useCallback(\n    (newRef: HTMLElement | undefined) => {\n      if (!newRef) return;\n\n      assertContextExists(context);\n\n      context.registerChild(encodedId, newRef);\n    },\n    [encodedId, context],\n  );\n\n  const unregisterChild = useCallback(() => {\n    assertContextExists(context);\n\n    context.unregisterChild(encodedId);\n  }, [context, encodedId]);\n\n  useIsomorphicLayoutEffect(() => {\n    registerChild(ref.current);\n\n    return () => unregisterChild();\n  }, [registerChild, unregisterChild]);\n\n  useDeepCompareEffect(() => {\n    registerTransitions(relations);\n\n    return () => unregisterTransitions();\n  }, [registerTransitions, relations, unregisterTransitions]);\n\n  // Check that we only have one child to ArcherElement\n  React.Children.only(children);\n  // Now, we'll render this child by getting its ref. The ref will be used to compute the element's position.\n  // I'm pretty sure there's a cleaner way to get the ref of the child... feel free to suggest it!\n  const child = children;\n  return React.cloneElement(child, { ...child.props, ref });\n};\n\nexport default ArcherElement;\n","/**\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @lightSyntaxTransform\n * @noflow\n * @nolint\n * @preventMunge\n * @preserve-invariant-messages\n */\n\n\"use no memo\";\n\"use strict\";\nvar __create = Object.create;\nvar __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __getOwnPropNames = Object.getOwnPropertyNames;\nvar __getProtoOf = Object.getPrototypeOf;\nvar __hasOwnProp = Object.prototype.hasOwnProperty;\nvar __export = (target, all) => {\n  for (var name in all)\n    __defProp(target, name, { get: all[name], enumerable: true });\n};\nvar __copyProps = (to, from, except, desc) => {\n  if (from && typeof from === \"object\" || typeof from === \"function\") {\n    for (let key of __getOwnPropNames(from))\n      if (!__hasOwnProp.call(to, key) && key !== except)\n        __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });\n  }\n  return to;\n};\nvar __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(\n  // If the importer is in node compatibility mode or this is not an ESM\n  // file that has been converted to a CommonJS file using a Babel-\n  // compatible transform (i.e. \"__esModule\" has not been set), then set\n  // \"default\" to the CommonJS \"module.exports\" for node compatibility.\n  isNodeMode || !mod || !mod.__esModule ? __defProp(target, \"default\", { value: mod, enumerable: true }) : target,\n  mod\n));\nvar __toCommonJS = (mod) => __copyProps(__defProp({}, \"__esModule\", { value: true }), mod);\n\n// src/index.ts\nvar index_exports = {};\n__export(index_exports, {\n  $dispatcherGuard: () => $dispatcherGuard,\n  $makeReadOnly: () => $makeReadOnly,\n  $reset: () => $reset,\n  $structuralCheck: () => $structuralCheck,\n  c: () => c,\n  clearRenderCounterRegistry: () => clearRenderCounterRegistry,\n  renderCounterRegistry: () => renderCounterRegistry,\n  useRenderCounter: () => useRenderCounter\n});\nmodule.exports = __toCommonJS(index_exports);\nvar React = __toESM(require(\"react\"));\nvar { useRef, useEffect, isValidElement } = React;\nvar _a;\nvar ReactSecretInternals = (\n  //@ts-ignore\n  (_a = React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE) != null ? _a : React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED\n);\nvar $empty = Symbol.for(\"react.memo_cache_sentinel\");\nvar _a2;\nvar c = (\n  // @ts-expect-error\n  typeof ((_a2 = React.__COMPILER_RUNTIME) == null ? void 0 : _a2.c) === \"function\" ? (\n    // @ts-expect-error\n    React.__COMPILER_RUNTIME.c\n  ) : function c2(size) {\n    return React.useMemo(() => {\n      const $ = new Array(size);\n      for (let ii = 0; ii < size; ii++) {\n        $[ii] = $empty;\n      }\n      $[$empty] = true;\n      return $;\n    }, []);\n  }\n);\nvar LazyGuardDispatcher = {};\n[\n  \"readContext\",\n  \"useCallback\",\n  \"useContext\",\n  \"useEffect\",\n  \"useImperativeHandle\",\n  \"useInsertionEffect\",\n  \"useLayoutEffect\",\n  \"useMemo\",\n  \"useReducer\",\n  \"useRef\",\n  \"useState\",\n  \"useDebugValue\",\n  \"useDeferredValue\",\n  \"useTransition\",\n  \"useMutableSource\",\n  \"useSyncExternalStore\",\n  \"useId\",\n  \"unstable_isNewReconciler\",\n  \"getCacheSignal\",\n  \"getCacheForType\",\n  \"useCacheRefresh\"\n].forEach((name) => {\n  LazyGuardDispatcher[name] = () => {\n    throw new Error(\n      `[React] Unexpected React hook call (${name}) from a React compiled function. Check that all hooks are called directly and named according to convention ('use[A-Z]') `\n    );\n  };\n});\nvar originalDispatcher = null;\nLazyGuardDispatcher[\"useMemoCache\"] = (count) => {\n  if (originalDispatcher == null) {\n    throw new Error(\n      \"React Compiler internal invariant violation: unexpected null dispatcher\"\n    );\n  } else {\n    return originalDispatcher.useMemoCache(count);\n  }\n};\nfunction setCurrent(newDispatcher) {\n  ReactSecretInternals.ReactCurrentDispatcher.current = newDispatcher;\n  return ReactSecretInternals.ReactCurrentDispatcher.current;\n}\nvar guardFrames = [];\nfunction $dispatcherGuard(kind) {\n  const curr = ReactSecretInternals.ReactCurrentDispatcher.current;\n  if (kind === 0 /* PushGuardContext */) {\n    guardFrames.push(curr);\n    if (guardFrames.length === 1) {\n      originalDispatcher = curr;\n    }\n    if (curr === LazyGuardDispatcher) {\n      throw new Error(\n        `[React] Unexpected call to custom hook or component from a React compiled function. Check that (1) all hooks are called directly and named according to convention ('use[A-Z]') and (2) components are returned as JSX instead of being directly invoked.`\n      );\n    }\n    setCurrent(LazyGuardDispatcher);\n  } else if (kind === 1 /* PopGuardContext */) {\n    const lastFrame = guardFrames.pop();\n    if (lastFrame == null) {\n      throw new Error(\n        \"React Compiler internal error: unexpected null in guard stack\"\n      );\n    }\n    if (guardFrames.length === 0) {\n      originalDispatcher = null;\n    }\n    setCurrent(lastFrame);\n  } else if (kind === 2 /* PushExpectHook */) {\n    guardFrames.push(curr);\n    setCurrent(originalDispatcher);\n  } else if (kind === 3 /* PopExpectHook */) {\n    const lastFrame = guardFrames.pop();\n    if (lastFrame == null) {\n      throw new Error(\n        \"React Compiler internal error: unexpected null in guard stack\"\n      );\n    }\n    setCurrent(lastFrame);\n  } else {\n    throw new Error(\"React Compiler internal error: unreachable block\" + kind);\n  }\n}\nfunction $reset($) {\n  for (let ii = 0; ii < $.length; ii++) {\n    $[ii] = $empty;\n  }\n}\nfunction $makeReadOnly() {\n  throw new Error(\"TODO: implement $makeReadOnly in react-compiler-runtime\");\n}\nvar renderCounterRegistry = /* @__PURE__ */ new Map();\nfunction clearRenderCounterRegistry() {\n  for (const counters of renderCounterRegistry.values()) {\n    counters.forEach((counter) => {\n      counter.count = 0;\n    });\n  }\n}\nfunction registerRenderCounter(name, val) {\n  let counters = renderCounterRegistry.get(name);\n  if (counters == null) {\n    counters = /* @__PURE__ */ new Set();\n    renderCounterRegistry.set(name, counters);\n  }\n  counters.add(val);\n}\nfunction removeRenderCounter(name, val) {\n  const counters = renderCounterRegistry.get(name);\n  if (counters == null) {\n    return;\n  }\n  counters.delete(val);\n}\nfunction useRenderCounter(name) {\n  const val = useRef(null);\n  if (val.current != null) {\n    val.current.count += 1;\n  }\n  useEffect(() => {\n    if (val.current == null) {\n      const counter = { count: 0 };\n      registerRenderCounter(name, counter);\n      val.current = counter;\n    }\n    return () => {\n      if (val.current !== null) {\n        removeRenderCounter(name, val.current);\n      }\n    };\n  });\n}\nvar seenErrors = /* @__PURE__ */ new Set();\nfunction $structuralCheck(oldValue, newValue, variableName, fnName, kind, loc) {\n  function error(l, r, path, depth) {\n    const str = `${fnName}:${loc} [${kind}] ${variableName}${path} changed from ${l} to ${r} at depth ${depth}`;\n    if (seenErrors.has(str)) {\n      return;\n    }\n    seenErrors.add(str);\n    console.error(str);\n  }\n  const depthLimit = 2;\n  function recur(oldValue2, newValue2, path, depth) {\n    if (depth > depthLimit) {\n      return;\n    } else if (oldValue2 === newValue2) {\n      return;\n    } else if (typeof oldValue2 !== typeof newValue2) {\n      error(`type ${typeof oldValue2}`, `type ${typeof newValue2}`, path, depth);\n    } else if (typeof oldValue2 === \"object\") {\n      const oldArray = Array.isArray(oldValue2);\n      const newArray = Array.isArray(newValue2);\n      if (oldValue2 === null && newValue2 !== null) {\n        error(\"null\", `type ${typeof newValue2}`, path, depth);\n      } else if (newValue2 === null) {\n        error(`type ${typeof oldValue2}`, \"null\", path, depth);\n      } else if (oldValue2 instanceof Map) {\n        if (!(newValue2 instanceof Map)) {\n          error(`Map instance`, `other value`, path, depth);\n        } else if (oldValue2.size !== newValue2.size) {\n          error(\n            `Map instance with size ${oldValue2.size}`,\n            `Map instance with size ${newValue2.size}`,\n            path,\n            depth\n          );\n        } else {\n          for (const [k, v] of oldValue2) {\n            if (!newValue2.has(k)) {\n              error(\n                `Map instance with key ${k}`,\n                `Map instance without key ${k}`,\n                path,\n                depth\n              );\n            } else {\n              recur(v, newValue2.get(k), `${path}.get(${k})`, depth + 1);\n            }\n          }\n        }\n      } else if (newValue2 instanceof Map) {\n        error(\"other value\", `Map instance`, path, depth);\n      } else if (oldValue2 instanceof Set) {\n        if (!(newValue2 instanceof Set)) {\n          error(`Set instance`, `other value`, path, depth);\n        } else if (oldValue2.size !== newValue2.size) {\n          error(\n            `Set instance with size ${oldValue2.size}`,\n            `Set instance with size ${newValue2.size}`,\n            path,\n            depth\n          );\n        } else {\n          for (const v of newValue2) {\n            if (!oldValue2.has(v)) {\n              error(\n                `Set instance without element ${v}`,\n                `Set instance with element ${v}`,\n                path,\n                depth\n              );\n            }\n          }\n        }\n      } else if (newValue2 instanceof Set) {\n        error(\"other value\", `Set instance`, path, depth);\n      } else if (oldArray || newArray) {\n        if (oldArray !== newArray) {\n          error(\n            `type ${oldArray ? \"array\" : \"object\"}`,\n            `type ${newArray ? \"array\" : \"object\"}`,\n            path,\n            depth\n          );\n        } else if (oldValue2.length !== newValue2.length) {\n          error(\n            `array with length ${oldValue2.length}`,\n            `array with length ${newValue2.length}`,\n            path,\n            depth\n          );\n        } else {\n          for (let ii = 0; ii < oldValue2.length; ii++) {\n            recur(oldValue2[ii], newValue2[ii], `${path}[${ii}]`, depth + 1);\n          }\n        }\n      } else if (isValidElement(oldValue2) || isValidElement(newValue2)) {\n        if (isValidElement(oldValue2) !== isValidElement(newValue2)) {\n          error(\n            `type ${isValidElement(oldValue2) ? \"React element\" : \"object\"}`,\n            `type ${isValidElement(newValue2) ? \"React element\" : \"object\"}`,\n            path,\n            depth\n          );\n        } else if (oldValue2.type !== newValue2.type) {\n          error(\n            `React element of type ${oldValue2.type}`,\n            `React element of type ${newValue2.type}`,\n            path,\n            depth\n          );\n        } else {\n          recur(\n            oldValue2.props,\n            newValue2.props,\n            `[props of ${path}]`,\n            depth + 1\n          );\n        }\n      } else {\n        for (const key in newValue2) {\n          if (!(key in oldValue2)) {\n            error(\n              `object without key ${key}`,\n              `object with key ${key}`,\n              path,\n              depth\n            );\n          }\n        }\n        for (const key in oldValue2) {\n          if (!(key in newValue2)) {\n            error(\n              `object with key ${key}`,\n              `object without key ${key}`,\n              path,\n              depth\n            );\n          } else {\n            recur(oldValue2[key], newValue2[key], `${path}.${key}`, depth + 1);\n          }\n        }\n      }\n    } else if (typeof oldValue2 === \"function\") {\n      return;\n    } else if (isNaN(oldValue2) || isNaN(newValue2)) {\n      if (isNaN(oldValue2) !== isNaN(newValue2)) {\n        error(\n          `${isNaN(oldValue2) ? \"NaN\" : \"non-NaN value\"}`,\n          `${isNaN(newValue2) ? \"NaN\" : \"non-NaN value\"}`,\n          path,\n          depth\n        );\n      }\n    } else if (oldValue2 !== newValue2) {\n      error(oldValue2, newValue2, path, depth);\n    }\n  }\n  recur(oldValue, newValue, \"\", 0);\n}\n// Annotate the CommonJS export names for ESM import in node:\n0 && (module.exports = {\n  $dispatcherGuard,\n  $makeReadOnly,\n  $reset,\n  $structuralCheck,\n  c,\n  clearRenderCounterRegistry,\n  renderCounterRegistry,\n  useRenderCounter\n});\n//# sourceMappingURL=index.js.map","class Vector2 {\n  x: number;\n  y: number;\n\n  constructor(x: number, y: number) {\n    this.x = x;\n    this.y = y;\n  }\n\n  add(vector: Vector2) {\n    return new Vector2(this.x + vector.x, this.y + vector.y);\n  }\n\n  substract(vector: Vector2) {\n    return new Vector2(this.x - vector.x, this.y - vector.y);\n  }\n}\n\nexport default Vector2;\n","import Vector2 from './Vector2';\nimport { AnchorPositionType } from '../types';\n\nfunction rectToPoint(rect: DOMRect): Vector2 {\n  return new Vector2(rect.left, rect.top);\n}\n\nfunction computeCoordinatesFromAnchorPosition(\n  anchorPosition: AnchorPositionType,\n  rect: DOMRect,\n): Vector2 | null {\n  switch (anchorPosition) {\n    case 'top':\n      return rectToPoint(rect).add(new Vector2(rect.width / 2, 0));\n\n    case 'bottom':\n      return rectToPoint(rect).add(new Vector2(rect.width / 2, rect.height));\n\n    case 'left':\n      return rectToPoint(rect).add(new Vector2(0, rect.height / 2));\n\n    case 'right':\n      return rectToPoint(rect).add(new Vector2(rect.width, rect.height / 2));\n\n    case 'middle':\n      return rectToPoint(rect).add(new Vector2(rect.width / 2, rect.height / 2));\n\n    default:\n      console.error('[React Archer] Invalid anchor position was provided. Not drawing the arrow.');\n      return null;\n  }\n}\n\nconst getRectFromElement = (\n  element: HTMLElement | null | undefined,\n): DOMRect | null | undefined => {\n  if (!element) return null;\n  return element.getBoundingClientRect();\n};\n\nexport const getPointFromElement = (element: HTMLDivElement | null | undefined): Vector2 | null => {\n  const rectp = getRectFromElement(element);\n\n  if (!rectp) {\n    return null;\n  }\n\n  return rectToPoint(rectp);\n};\n\nexport const getPointCoordinatesFromAnchorPosition = (\n  position: AnchorPositionType,\n  parentCoordinates: Vector2,\n  rect: DOMRect | null | undefined,\n): Vector2 | null => {\n  if (!rect) {\n    return null;\n  }\n\n  const absolutePosition = computeCoordinatesFromAnchorPosition(position, rect);\n\n  if (!absolutePosition) {\n    return null;\n  }\n\n  return absolutePosition.substract(parentCoordinates);\n};\n","import { AnchorPositionType } from '../types';\n\nexport function computeArrowDirectionVector(anchorOrientation: AnchorPositionType) {\n  switch (anchorOrientation) {\n    case 'left':\n      return {\n        arrowX: -1,\n        arrowY: 0,\n      };\n\n    case 'right':\n      return {\n        arrowX: 1,\n        arrowY: 0,\n      };\n\n    case 'top':\n      return {\n        arrowX: 0,\n        arrowY: -1,\n      };\n\n    case 'bottom':\n      return {\n        arrowX: 0,\n        arrowY: 1,\n      };\n\n    default:\n      return {\n        arrowX: 0,\n        arrowY: 0,\n      };\n  }\n}\n","import React, { DOMAttributes } from 'react';\nimport { Property } from 'csstype';\nimport Vector2 from '../geometry/Vector2';\nimport { AnchorPositionType, ValidLineStyles } from '../types';\nimport { computeArrowDirectionVector } from './SvgArrow.helper';\n\ntype Props = {\n  className?: string;\n  startingPoint: Vector2;\n  startingAnchorOrientation: AnchorPositionType;\n  endingPoint: Vector2;\n  endingAnchorOrientation: AnchorPositionType;\n  strokeColor: string;\n  strokeWidth: number;\n  strokeDasharray?: string;\n  arrowLabel?: React.ReactNode | null | undefined;\n  arrowMarkerId: string;\n  lineStyle: ValidLineStyles;\n  offset?: number;\n  enableStartMarker?: boolean;\n  disableEndMarker?: boolean;\n  endShape: Record<string, any>;\n  domAttributes?: DOMAttributes<SVGElement>;\n  hitSlop?: number;\n  cursor?: Property.Cursor;\n};\n\nexport function computeArrowPointAccordingToArrowHead(\n  xArrowHeadPoint: number,\n  yArrowHeadPoint: number,\n  arrowLength: number,\n  strokeWidth: number,\n  endingAnchorOrientation: AnchorPositionType,\n  lineStyle?: ValidLineStyles,\n  xArrowStart?: number,\n  yArrowStart?: number,\n) {\n  let { arrowX, arrowY } = computeArrowDirectionVector(endingAnchorOrientation);\n\n  if (lineStyle === 'straight' && xArrowStart !== undefined && yArrowStart !== undefined) {\n    const angle = Math.atan2(yArrowStart - yArrowHeadPoint, xArrowStart - xArrowHeadPoint);\n    arrowX = Math.cos(angle);\n    arrowY = Math.sin(angle);\n  }\n\n  const xPoint = xArrowHeadPoint + (arrowX * arrowLength * strokeWidth) / 2;\n  const yPoint = yArrowHeadPoint + (arrowY * arrowLength * strokeWidth) / 2;\n  return {\n    xPoint,\n    yPoint,\n  };\n}\n\nexport function computeStartingAnchorPosition(\n  xStart: number,\n  yStart: number,\n  xEnd: number,\n  yEnd: number,\n  startingAnchorOrientation: AnchorPositionType,\n): {\n  xAnchor1: number;\n  yAnchor1: number;\n} {\n  if (startingAnchorOrientation === 'top' || startingAnchorOrientation === 'bottom') {\n    return {\n      xAnchor1: xStart,\n      yAnchor1: yStart + (yEnd - yStart) / 2,\n    };\n  }\n\n  if (startingAnchorOrientation === 'left' || startingAnchorOrientation === 'right') {\n    return {\n      xAnchor1: xStart + (xEnd - xStart) / 2,\n      yAnchor1: yStart,\n    };\n  }\n\n  return {\n    xAnchor1: xStart,\n    yAnchor1: yStart,\n  };\n}\n\nexport function computeEndingAnchorPosition(\n  xStart: number,\n  yStart: number,\n  xEnd: number,\n  yEnd: number,\n  endingAnchorOrientation: AnchorPositionType,\n): {\n  xAnchor2: number;\n  yAnchor2: number;\n} {\n  if (endingAnchorOrientation === 'top' || endingAnchorOrientation === 'bottom') {\n    return {\n      xAnchor2: xEnd,\n      yAnchor2: yEnd - (yEnd - yStart) / 2,\n    };\n  }\n\n  if (endingAnchorOrientation === 'left' || endingAnchorOrientation === 'right') {\n    return {\n      xAnchor2: xEnd - (xEnd - xStart) / 2,\n      yAnchor2: yEnd,\n    };\n  }\n\n  return {\n    xAnchor2: xEnd,\n    yAnchor2: yEnd,\n  };\n}\n\nexport function computeLabelDimensions(\n  xStart: number,\n  yStart: number,\n  xEnd: number,\n  yEnd: number,\n): {\n  xLabel: number;\n  yLabel: number;\n  labelWidth: number;\n  labelHeight: number;\n} {\n  const labelWidth = Math.max(Math.abs(xEnd - xStart), 1);\n  const labelHeight = Math.max(Math.abs(yEnd - yStart), 1);\n  const xLabel = xEnd > xStart ? xStart : xEnd;\n  const yLabel = yEnd > yStart ? yStart : yEnd;\n  return {\n    xLabel,\n    yLabel,\n    labelWidth,\n    labelHeight,\n  };\n}\n\nfunction computePathString({\n  xStart,\n  yStart,\n  xAnchor1,\n  yAnchor1,\n  xAnchor2,\n  yAnchor2,\n  xEnd,\n  yEnd,\n  lineStyle,\n  offset,\n}: {\n  xStart: number;\n  yStart: number;\n  xAnchor1: number;\n  yAnchor1: number;\n  xAnchor2: number;\n  yAnchor2: number;\n  xEnd: number;\n  yEnd: number;\n  lineStyle: string;\n  offset?: number;\n}): string {\n  if (offset && offset !== 0) {\n    const angle =\n      lineStyle === 'straight'\n        ? Math.atan2(yEnd - yStart, xEnd - xStart)\n        : Math.atan2(yAnchor1 - yStart, xAnchor1 - xStart);\n    const xOffset = offset * Math.cos(angle);\n    const yOffset = offset * Math.sin(angle);\n\n    if (lineStyle !== 'straight') {\n      xStart = xStart + xOffset;\n      yStart = yStart + yOffset;\n    }\n\n    xEnd = xEnd - xOffset;\n    yEnd = yEnd - yOffset;\n  }\n\n  let linePath = `M${xStart},${yStart} `;\n\n  if (['curve', 'angle'].includes(lineStyle)) {\n    linePath += `${\n      lineStyle === 'curve' ? 'C' : ''\n    }${xAnchor1},${yAnchor1} ${xAnchor2},${yAnchor2} `;\n  }\n\n  linePath += `${xEnd},${yEnd}`;\n  return linePath;\n}\n\nconst SvgArrow = ({\n  className,\n  startingPoint,\n  startingAnchorOrientation,\n  endingPoint,\n  endingAnchorOrientation,\n  strokeColor,\n  strokeWidth,\n  strokeDasharray,\n  arrowLabel,\n  arrowMarkerId,\n  lineStyle,\n  offset,\n  enableStartMarker,\n  disableEndMarker,\n  endShape,\n  domAttributes,\n  hitSlop = 10,\n  cursor = 'pointer',\n}: Props) => {\n  const actualArrowLength = endShape.circle\n    ? endShape.circle.radius * 2\n    : endShape.arrow.arrowLength * 2;\n\n  // Starting point with arrow\n  const { xPoint: xStart, yPoint: yStart } = computeArrowPointAccordingToArrowHead(\n    startingPoint.x,\n    startingPoint.y,\n    enableStartMarker ? actualArrowLength : 0,\n    strokeWidth,\n    startingAnchorOrientation,\n    lineStyle,\n    endingPoint.x,\n    endingPoint.y,\n  );\n\n  // Ending point with arrow\n  const { xPoint: xEnd, yPoint: yEnd } = computeArrowPointAccordingToArrowHead(\n    endingPoint.x,\n    endingPoint.y,\n    disableEndMarker ? 0 : actualArrowLength,\n    strokeWidth,\n    endingAnchorOrientation,\n    lineStyle,\n    startingPoint.x,\n    startingPoint.y,\n  );\n\n  // Starting position\n  const { xAnchor1, yAnchor1 } = computeStartingAnchorPosition(\n    xStart,\n    yStart,\n    xEnd,\n    yEnd,\n    startingAnchorOrientation,\n  );\n\n  // Ending position\n  const { xAnchor2, yAnchor2 } = computeEndingAnchorPosition(\n    xStart,\n    yStart,\n    xEnd,\n    yEnd,\n    endingAnchorOrientation,\n  );\n\n  const pathString = computePathString({\n    xStart,\n    yStart,\n    xAnchor1,\n    yAnchor1,\n    xAnchor2,\n    yAnchor2,\n    xEnd,\n    yEnd,\n    lineStyle,\n    offset,\n  });\n\n  const { xLabel, yLabel, labelWidth, labelHeight } = computeLabelDimensions(\n    xStart,\n    yStart,\n    xEnd,\n    yEnd,\n  );\n\n  const markerUrl = `url(#${arrowMarkerId})`;\n\n  return (\n    <g className={className}>\n      <path\n        d={pathString}\n        style={{\n          fill: 'none',\n          stroke: strokeColor,\n          strokeWidth,\n          strokeDasharray,\n        }}\n        markerStart={enableStartMarker ? markerUrl : undefined}\n        markerEnd={disableEndMarker ? undefined : markerUrl}\n      />\n\n      {/* This a thicker fake path to grab DOM events - makes clicking on the arrow more usable */}\n      {domAttributes && (\n        <path\n          d={pathString}\n          style={{\n            fill: 'none',\n            stroke: 'rgba(0, 0, 0, 0)',\n            strokeWidth: hitSlop,\n            cursor: domAttributes ? cursor : 'initial',\n            pointerEvents: 'all',\n          }}\n          {...domAttributes}\n        />\n      )}\n\n      {arrowLabel && (\n        <foreignObject\n          x={xLabel}\n          y={yLabel}\n          width={labelWidth}\n          height={labelHeight}\n          style={{\n            overflow: 'visible',\n            pointerEvents: 'none',\n          }}\n        >\n          <div\n            style={{\n              position: 'absolute',\n              left: '50%',\n              top: '50%',\n              transform: 'translateX(-50%) translateY(-50%)',\n              pointerEvents: 'all',\n            }}\n          >\n            <div>{arrowLabel}</div>\n          </div>\n        </foreignObject>\n      )}\n    </g>\n  );\n};\n\nexport default SvgArrow;\n","import {\n  ValidShapeTypes,\n  LineType,\n  SourceToTargetType,\n  ShapeType,\n  EntityRelationType,\n} from '../types';\nimport { SourceToTargetsArrayType } from './ArcherContainer.types';\n\nconst possibleShapes: Array<ValidShapeTypes> = ['arrow', 'circle'];\n\nexport const getEndShapeFromStyle = (shapeObj: LineType) => {\n  if (!shapeObj.endShape) {\n    return possibleShapes[0];\n  }\n\n  return (\n    (Object.keys(shapeObj.endShape) as ValidShapeTypes[]).filter((key) =>\n      possibleShapes.includes(key),\n    )[0] || possibleShapes[0]\n  );\n};\n\nexport const getSourceToTargets = (\n  sourceToTargetsMap: Record<string, SourceToTargetsArrayType>,\n): SourceToTargetType[] => {\n  // Object.values is unavailable in IE11\n  const jaggedSourceToTargets = Object.keys(sourceToTargetsMap).map(\n    (key: string) => sourceToTargetsMap[key],\n  );\n  // Flatten\n  return ([] as SourceToTargetType[]).concat\n    .apply([], jaggedSourceToTargets)\n    .sort((a, b) => a.order - b.order);\n};\n\nexport const createShapeObj = (style: LineType, endShape: ShapeType) => {\n  const chosenEndShape = getEndShapeFromStyle(style);\n  const shapeObjMap = {\n    arrow: () => ({\n      arrow: {\n        ...endShape?.arrow,\n        ...style.endShape?.arrow,\n      },\n    }),\n    circle: () => ({\n      circle: {\n        ...endShape?.circle,\n        ...style.endShape?.circle,\n      },\n    }),\n  };\n  return shapeObjMap[chosenEndShape]();\n};\n\n/** Generates an id for an arrow marker\n * Useful to have one marker per arrow so that each arrow\n * can have a different color!\n * */\nexport const getMarkerId = (\n  uniqueId: string,\n  source: EntityRelationType,\n  target: EntityRelationType,\n): string => {\n  return `${uniqueId}${source.id}${target.id}`;\n};\n","import React from 'react';\nimport { Property } from 'csstype';\nimport Vector2 from '../../geometry/Vector2';\nimport { getPointCoordinatesFromAnchorPosition } from '../../geometry/rectHelper';\nimport SvgArrow from '../../SvgArrow/SvgArrow';\nimport { SourceToTargetType } from '../../types';\nimport { createShapeObj, getMarkerId, getSourceToTargets } from '../ArcherContainer.helpers';\nimport { ArcherContainerProps, SourceToTargetsArrayType } from '../ArcherContainer.types';\nimport { ElementRects } from '../ArcherContainer.hooks';\n\ninterface CommonProps {\n  startMarker: ArcherContainerProps['startMarker'];\n  endMarker: ArcherContainerProps['endMarker'];\n  endShape: NonNullable<ArcherContainerProps['endShape']>;\n  strokeColor: NonNullable<ArcherContainerProps['strokeColor']>;\n  strokeWidth: NonNullable<ArcherContainerProps['strokeWidth']>;\n  strokeDasharray: ArcherContainerProps['strokeDasharray'];\n  noCurves: ArcherContainerProps['noCurves'];\n  lineStyle: ArcherContainerProps['lineStyle'];\n  offset: ArcherContainerProps['offset'];\n  uniqueId: string;\n  rects: ElementRects;\n  hitSlop?: number;\n  cursor?: Property.Cursor;\n}\n\nconst AdaptedArrow = (\n  props: Omit<SourceToTargetType, 'order'> &\n    CommonProps & {\n      parentCoordinates: Vector2;\n    },\n) => {\n  const style = props.style || {};\n  const newStartMarker = style.startMarker || props.startMarker;\n  const newEndMarker = style.endMarker ?? props.endMarker ?? true;\n\n  const newEndShape = createShapeObj(style, props.endShape);\n\n  const domAttributes = props.domAttributes;\n  const cursor = props.cursor;\n  const hitSlop = props.hitSlop;\n  const newStrokeColor = style.strokeColor || props.strokeColor;\n  const newStrokeWidth = style.strokeWidth || props.strokeWidth;\n  const newStrokeDasharray = style.strokeDasharray || props.strokeDasharray;\n  const newNoCurves = !!(style.noCurves || props.noCurves);\n  const newLineStyle = style.lineStyle || props.lineStyle || (newNoCurves ? 'angle' : 'curve');\n  const newOffset = props.offset || 0;\n  const startingAnchorOrientation = props.source.anchor;\n\n  const startingPoint = getPointCoordinatesFromAnchorPosition(\n    props.source.anchor,\n    props.parentCoordinates,\n    props.rects[props.source.id],\n  );\n\n  const endingAnchorOrientation = props.target.anchor;\n\n  const endingPoint = getPointCoordinatesFromAnchorPosition(\n    props.target.anchor,\n    props.parentCoordinates,\n    props.rects[props.target.id],\n  );\n\n  if (!startingPoint) {\n    console.warn('[React Archer] Could not find starting point of element! Not drawing the arrow.');\n    return null;\n  }\n\n  if (!endingPoint) {\n    console.warn('[React Archer] Could not find target element! Not drawing the arrow.');\n    return null;\n  }\n\n  return (\n    <SvgArrow\n      className={props.className}\n      startingPoint={startingPoint}\n      startingAnchorOrientation={startingAnchorOrientation}\n      endingPoint={endingPoint}\n      endingAnchorOrientation={endingAnchorOrientation}\n      strokeColor={newStrokeColor}\n      strokeWidth={newStrokeWidth}\n      strokeDasharray={newStrokeDasharray}\n      arrowLabel={props.label}\n      arrowMarkerId={getMarkerId(props.uniqueId, props.source, props.target)}\n      lineStyle={newLineStyle}\n      offset={newOffset}\n      enableStartMarker={!!newStartMarker}\n      disableEndMarker={!newEndMarker}\n      endShape={newEndShape}\n      domAttributes={domAttributes}\n      hitSlop={hitSlop}\n      cursor={cursor}\n    />\n  );\n};\n\nexport const SvgArrows = (\n  props: {\n    parentCoordinates: Vector2 | null;\n    sourceToTargetsMap: Record<string, SourceToTargetsArrayType>;\n  } & CommonProps,\n) => {\n  const parentCoordinates = props.parentCoordinates;\n\n  if (!parentCoordinates) {\n    // This happens when the parent has not been measured yet\n    return null;\n  }\n\n  return (\n    <>\n      {getSourceToTargets(props.sourceToTargetsMap).map((currentRelation) => (\n        <AdaptedArrow\n          key={JSON.stringify({\n            source: currentRelation.source,\n            target: currentRelation.target,\n          })}\n          source={currentRelation.source}\n          target={currentRelation.target}\n          className={currentRelation.className}\n          label={currentRelation.label}\n          style={currentRelation.style || {}}\n          domAttributes={currentRelation.domAttributes}\n          hitSlop={currentRelation.hitSlop}\n          cursor={currentRelation.cursor}\n          startMarker={props.startMarker}\n          endMarker={props.endMarker}\n          endShape={props.endShape}\n          strokeColor={props.strokeColor}\n          strokeWidth={props.strokeWidth}\n          strokeDasharray={props.strokeDasharray}\n          noCurves={props.noCurves}\n          lineStyle={props.lineStyle}\n          offset={props.offset}\n          parentCoordinates={parentCoordinates}\n          rects={props.rects}\n          uniqueId={props.uniqueId}\n        />\n      ))}\n    </>\n  );\n};\n","export const endShapeDefaultProp = {\n  arrow: {\n    arrowLength: 10,\n    arrowThickness: 6,\n  },\n  circle: {\n    radius: 2,\n    fillColor: '#f00',\n    strokeColor: '#0ff',\n    strokeWidth: 1,\n  },\n};\n","import React from 'react';\nimport { LineType, ShapeType, SourceToTargetType } from '../../types';\nimport { endShapeDefaultProp } from '../ArcherContainer.constants';\nimport { getEndShapeFromStyle, getSourceToTargets, getMarkerId } from '../ArcherContainer.helpers';\nimport { SourceToTargetsArrayType } from '../ArcherContainer.types';\n\nconst circleMarker = (style: LineType, endShape: ShapeType) => () => {\n  // TODO idea to merge params: we could use a deep merge function that keeps the first non-undefined values obtained\n\n  const radius =\n    style.endShape?.circle?.radius || endShape.circle?.radius || endShapeDefaultProp.circle.radius;\n\n  const strokeWidth =\n    style.endShape?.circle?.strokeWidth ||\n    endShape.circle?.strokeWidth ||\n    endShapeDefaultProp.circle.strokeWidth;\n\n  const strokeColor =\n    style.endShape?.circle?.strokeColor ||\n    endShape.circle?.strokeColor ||\n    endShapeDefaultProp.circle.strokeColor;\n\n  const fillColor =\n    style.endShape?.circle?.fillColor ||\n    endShape.circle?.fillColor ||\n    endShapeDefaultProp.circle.fillColor;\n\n  return {\n    markerWidth: radius * 4,\n    markerHeight: radius * 4,\n    refX: radius * 2 + strokeWidth,\n    refY: radius * 2,\n    path: (\n      <circle\n        cx={radius * 2}\n        cy={radius * 2}\n        r={radius}\n        fill={fillColor}\n        stroke={strokeColor}\n        strokeWidth={strokeWidth}\n      />\n    ),\n  };\n};\n\nconst arrowMarker = (style: LineType, endShape: ShapeType, strokeColor: string) => () => {\n  const newStrokeColor = style.strokeColor || strokeColor;\n  const newArrowLength =\n    style.endShape?.arrow?.arrowLength ??\n    endShape?.arrow?.arrowLength ??\n    endShapeDefaultProp.arrow.arrowLength;\n  const newArrowThickness =\n    style.endShape?.arrow?.arrowThickness ||\n    endShape?.arrow?.arrowThickness ||\n    endShapeDefaultProp.arrow.arrowThickness;\n  const arrowPath = `M0,0 L0,${newArrowThickness} L${newArrowLength},${newArrowThickness / 2} z`;\n\n  return {\n    markerWidth: newArrowLength,\n    markerHeight: newArrowThickness,\n    refX: 0,\n    refY: newArrowThickness / 2,\n    path: <path d={arrowPath} fill={newStrokeColor} />,\n  };\n};\n\nconst buildShape = ({\n  style,\n  strokeColor,\n  endShape,\n}: {\n  style: LineType;\n  strokeColor: string;\n  endShape: ShapeType;\n}): {\n  markerHeight: number;\n  markerWidth: number;\n  path: React.ReactNode;\n  refX: number;\n  refY: number;\n} => {\n  const chosenEndShape = getEndShapeFromStyle(style);\n\n  const shapeMap = {\n    circle: circleMarker(style, endShape),\n    arrow: arrowMarker(style, endShape, strokeColor),\n  };\n  return shapeMap[chosenEndShape]();\n};\n\n/** Generates all the markers\n * We want one marker per arrow so that each arrow can have\n * a different color or size\n * */\nexport const ArrowMarkers = ({\n  sourceToTargetsMap,\n  endShape,\n  strokeColor,\n  uniqueId,\n}: {\n  sourceToTargetsMap: Record<string, SourceToTargetsArrayType>;\n  endShape: ShapeType;\n  strokeColor: string;\n  uniqueId: string;\n}) => {\n  return (\n    <>\n      {getSourceToTargets(sourceToTargetsMap).map(\n        ({ source, target, style = {} }: SourceToTargetType) => {\n          const { markerHeight, markerWidth, path, refX, refY } = buildShape({\n            style,\n            endShape,\n            strokeColor,\n          });\n\n          return (\n            <marker\n              id={getMarkerId(uniqueId, source, target)}\n              key={getMarkerId(uniqueId, source, target)}\n              markerWidth={markerWidth}\n              markerHeight={markerHeight}\n              refX={refX}\n              refY={refY}\n              orient=\"auto-start-reverse\"\n              markerUnits=\"strokeWidth\"\n            >\n              {path}\n            </marker>\n          );\n        },\n      )}\n    </>\n  );\n};\n","/**\r\n * A collection of shims that provide minimal functionality of the ES6 collections.\r\n *\r\n * These implementations are not meant to be used outside of the ResizeObserver\r\n * modules as they cover only a limited range of use cases.\r\n */\r\n/* eslint-disable require-jsdoc, valid-jsdoc */\r\nvar MapShim = (function () {\r\n    if (typeof Map !== 'undefined') {\r\n        return Map;\r\n    }\r\n    /**\r\n     * Returns index in provided array that matches the specified key.\r\n     *\r\n     * @param {Array<Array>} arr\r\n     * @param {*} key\r\n     * @returns {number}\r\n     */\r\n    function getIndex(arr, key) {\r\n        var result = -1;\r\n        arr.some(function (entry, index) {\r\n            if (entry[0] === key) {\r\n                result = index;\r\n                return true;\r\n            }\r\n            return false;\r\n        });\r\n        return result;\r\n    }\r\n    return /** @class */ (function () {\r\n        function class_1() {\r\n            this.__entries__ = [];\r\n        }\r\n        Object.defineProperty(class_1.prototype, \"size\", {\r\n            /**\r\n             * @returns {boolean}\r\n             */\r\n            get: function () {\r\n                return this.__entries__.length;\r\n            },\r\n            enumerable: true,\r\n            configurable: true\r\n        });\r\n        /**\r\n         * @param {*} key\r\n         * @returns {*}\r\n         */\r\n        class_1.prototype.get = function (key) {\r\n            var index = getIndex(this.__entries__, key);\r\n            var entry = this.__entries__[index];\r\n            return entry && entry[1];\r\n        };\r\n        /**\r\n         * @param {*} key\r\n         * @param {*} value\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.set = function (key, value) {\r\n            var index = getIndex(this.__entries__, key);\r\n            if (~index) {\r\n                this.__entries__[index][1] = value;\r\n            }\r\n            else {\r\n                this.__entries__.push([key, value]);\r\n            }\r\n        };\r\n        /**\r\n         * @param {*} key\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.delete = function (key) {\r\n            var entries = this.__entries__;\r\n            var index = getIndex(entries, key);\r\n            if (~index) {\r\n                entries.splice(index, 1);\r\n            }\r\n        };\r\n        /**\r\n         * @param {*} key\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.has = function (key) {\r\n            return !!~getIndex(this.__entries__, key);\r\n        };\r\n        /**\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.clear = function () {\r\n            this.__entries__.splice(0);\r\n        };\r\n        /**\r\n         * @param {Function} callback\r\n         * @param {*} [ctx=null]\r\n         * @returns {void}\r\n         */\r\n        class_1.prototype.forEach = function (callback, ctx) {\r\n            if (ctx === void 0) { ctx = null; }\r\n            for (var _i = 0, _a = this.__entries__; _i < _a.length; _i++) {\r\n                var entry = _a[_i];\r\n                callback.call(ctx, entry[1], entry[0]);\r\n            }\r\n        };\r\n        return class_1;\r\n    }());\r\n})();\n\n/**\r\n * Detects whether window and document objects are available in current environment.\r\n */\r\nvar isBrowser = typeof window !== 'undefined' && typeof document !== 'undefined' && window.document === document;\n\n// Returns global object of a current environment.\r\nvar global$1 = (function () {\r\n    if (typeof global !== 'undefined' && global.Math === Math) {\r\n        return global;\r\n    }\r\n    if (typeof self !== 'undefined' && self.Math === Math) {\r\n        return self;\r\n    }\r\n    if (typeof window !== 'undefined' && window.Math === Math) {\r\n        return window;\r\n    }\r\n    // eslint-disable-next-line no-new-func\r\n    return Function('return this')();\r\n})();\n\n/**\r\n * A shim for the requestAnimationFrame which falls back to the setTimeout if\r\n * first one is not supported.\r\n *\r\n * @returns {number} Requests' identifier.\r\n */\r\nvar requestAnimationFrame$1 = (function () {\r\n    if (typeof requestAnimationFrame === 'function') {\r\n        // It's required to use a bounded function because IE sometimes throws\r\n        // an \"Invalid calling object\" error if rAF is invoked without the global\r\n        // object on the left hand side.\r\n        return requestAnimationFrame.bind(global$1);\r\n    }\r\n    return function (callback) { return setTimeout(function () { return callback(Date.now()); }, 1000 / 60); };\r\n})();\n\n// Defines minimum timeout before adding a trailing call.\r\nvar trailingTimeout = 2;\r\n/**\r\n * Creates a wrapper function which ensures that provided callback will be\r\n * invoked only once during the specified delay period.\r\n *\r\n * @param {Function} callback - Function to be invoked after the delay period.\r\n * @param {number} delay - Delay after which to invoke callback.\r\n * @returns {Function}\r\n */\r\nfunction throttle (callback, delay) {\r\n    var leadingCall = false, trailingCall = false, lastCallTime = 0;\r\n    /**\r\n     * Invokes the original callback function and schedules new invocation if\r\n     * the \"proxy\" was called during current request.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    function resolvePending() {\r\n        if (leadingCall) {\r\n            leadingCall = false;\r\n            callback();\r\n        }\r\n        if (trailingCall) {\r\n            proxy();\r\n        }\r\n    }\r\n    /**\r\n     * Callback invoked after the specified delay. It will further postpone\r\n     * invocation of the original function delegating it to the\r\n     * requestAnimationFrame.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    function timeoutCallback() {\r\n        requestAnimationFrame$1(resolvePending);\r\n    }\r\n    /**\r\n     * Schedules invocation of the original function.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    function proxy() {\r\n        var timeStamp = Date.now();\r\n        if (leadingCall) {\r\n            // Reject immediately following calls.\r\n            if (timeStamp - lastCallTime < trailingTimeout) {\r\n                return;\r\n            }\r\n            // Schedule new call to be in invoked when the pending one is resolved.\r\n            // This is important for \"transitions\" which never actually start\r\n            // immediately so there is a chance that we might miss one if change\r\n            // happens amids the pending invocation.\r\n            trailingCall = true;\r\n        }\r\n        else {\r\n            leadingCall = true;\r\n            trailingCall = false;\r\n            setTimeout(timeoutCallback, delay);\r\n        }\r\n        lastCallTime = timeStamp;\r\n    }\r\n    return proxy;\r\n}\n\n// Minimum delay before invoking the update of observers.\r\nvar REFRESH_DELAY = 20;\r\n// A list of substrings of CSS properties used to find transition events that\r\n// might affect dimensions of observed elements.\r\nvar transitionKeys = ['top', 'right', 'bottom', 'left', 'width', 'height', 'size', 'weight'];\r\n// Check if MutationObserver is available.\r\nvar mutationObserverSupported = typeof MutationObserver !== 'undefined';\r\n/**\r\n * Singleton controller class which handles updates of ResizeObserver instances.\r\n */\r\nvar ResizeObserverController = /** @class */ (function () {\r\n    /**\r\n     * Creates a new instance of ResizeObserverController.\r\n     *\r\n     * @private\r\n     */\r\n    function ResizeObserverController() {\r\n        /**\r\n         * Indicates whether DOM listeners have been added.\r\n         *\r\n         * @private {boolean}\r\n         */\r\n        this.connected_ = false;\r\n        /**\r\n         * Tells that controller has subscribed for Mutation Events.\r\n         *\r\n         * @private {boolean}\r\n         */\r\n        this.mutationEventsAdded_ = false;\r\n        /**\r\n         * Keeps reference to the instance of MutationObserver.\r\n         *\r\n         * @private {MutationObserver}\r\n         */\r\n        this.mutationsObserver_ = null;\r\n        /**\r\n         * A list of connected observers.\r\n         *\r\n         * @private {Array<ResizeObserverSPI>}\r\n         */\r\n        this.observers_ = [];\r\n        this.onTransitionEnd_ = this.onTransitionEnd_.bind(this);\r\n        this.refresh = throttle(this.refresh.bind(this), REFRESH_DELAY);\r\n    }\r\n    /**\r\n     * Adds observer to observers list.\r\n     *\r\n     * @param {ResizeObserverSPI} observer - Observer to be added.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.addObserver = function (observer) {\r\n        if (!~this.observers_.indexOf(observer)) {\r\n            this.observers_.push(observer);\r\n        }\r\n        // Add listeners if they haven't been added yet.\r\n        if (!this.connected_) {\r\n            this.connect_();\r\n        }\r\n    };\r\n    /**\r\n     * Removes observer from observers list.\r\n     *\r\n     * @param {ResizeObserverSPI} observer - Observer to be removed.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.removeObserver = function (observer) {\r\n        var observers = this.observers_;\r\n        var index = observers.indexOf(observer);\r\n        // Remove observer if it's present in registry.\r\n        if (~index) {\r\n            observers.splice(index, 1);\r\n        }\r\n        // Remove listeners if controller has no connected observers.\r\n        if (!observers.length && this.connected_) {\r\n            this.disconnect_();\r\n        }\r\n    };\r\n    /**\r\n     * Invokes the update of observers. It will continue running updates insofar\r\n     * it detects changes.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.refresh = function () {\r\n        var changesDetected = this.updateObservers_();\r\n        // Continue running updates if changes have been detected as there might\r\n        // be future ones caused by CSS transitions.\r\n        if (changesDetected) {\r\n            this.refresh();\r\n        }\r\n    };\r\n    /**\r\n     * Updates every observer from observers list and notifies them of queued\r\n     * entries.\r\n     *\r\n     * @private\r\n     * @returns {boolean} Returns \"true\" if any observer has detected changes in\r\n     *      dimensions of it's elements.\r\n     */\r\n    ResizeObserverController.prototype.updateObservers_ = function () {\r\n        // Collect observers that have active observations.\r\n        var activeObservers = this.observers_.filter(function (observer) {\r\n            return observer.gatherActive(), observer.hasActive();\r\n        });\r\n        // Deliver notifications in a separate cycle in order to avoid any\r\n        // collisions between observers, e.g. when multiple instances of\r\n        // ResizeObserver are tracking the same element and the callback of one\r\n        // of them changes content dimensions of the observed target. Sometimes\r\n        // this may result in notifications being blocked for the rest of observers.\r\n        activeObservers.forEach(function (observer) { return observer.broadcastActive(); });\r\n        return activeObservers.length > 0;\r\n    };\r\n    /**\r\n     * Initializes DOM listeners.\r\n     *\r\n     * @private\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.connect_ = function () {\r\n        // Do nothing if running in a non-browser environment or if listeners\r\n        // have been already added.\r\n        if (!isBrowser || this.connected_) {\r\n            return;\r\n        }\r\n        // Subscription to the \"Transitionend\" event is used as a workaround for\r\n        // delayed transitions. This way it's possible to capture at least the\r\n        // final state of an element.\r\n        document.addEventListener('transitionend', this.onTransitionEnd_);\r\n        window.addEventListener('resize', this.refresh);\r\n        if (mutationObserverSupported) {\r\n            this.mutationsObserver_ = new MutationObserver(this.refresh);\r\n            this.mutationsObserver_.observe(document, {\r\n                attributes: true,\r\n                childList: true,\r\n                characterData: true,\r\n                subtree: true\r\n            });\r\n        }\r\n        else {\r\n            document.addEventListener('DOMSubtreeModified', this.refresh);\r\n            this.mutationEventsAdded_ = true;\r\n        }\r\n        this.connected_ = true;\r\n    };\r\n    /**\r\n     * Removes DOM listeners.\r\n     *\r\n     * @private\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.disconnect_ = function () {\r\n        // Do nothing if running in a non-browser environment or if listeners\r\n        // have been already removed.\r\n        if (!isBrowser || !this.connected_) {\r\n            return;\r\n        }\r\n        document.removeEventListener('transitionend', this.onTransitionEnd_);\r\n        window.removeEventListener('resize', this.refresh);\r\n        if (this.mutationsObserver_) {\r\n            this.mutationsObserver_.disconnect();\r\n        }\r\n        if (this.mutationEventsAdded_) {\r\n            document.removeEventListener('DOMSubtreeModified', this.refresh);\r\n        }\r\n        this.mutationsObserver_ = null;\r\n        this.mutationEventsAdded_ = false;\r\n        this.connected_ = false;\r\n    };\r\n    /**\r\n     * \"Transitionend\" event handler.\r\n     *\r\n     * @private\r\n     * @param {TransitionEvent} event\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverController.prototype.onTransitionEnd_ = function (_a) {\r\n        var _b = _a.propertyName, propertyName = _b === void 0 ? '' : _b;\r\n        // Detect whether transition may affect dimensions of an element.\r\n        var isReflowProperty = transitionKeys.some(function (key) {\r\n            return !!~propertyName.indexOf(key);\r\n        });\r\n        if (isReflowProperty) {\r\n            this.refresh();\r\n        }\r\n    };\r\n    /**\r\n     * Returns instance of the ResizeObserverController.\r\n     *\r\n     * @returns {ResizeObserverController}\r\n     */\r\n    ResizeObserverController.getInstance = function () {\r\n        if (!this.instance_) {\r\n            this.instance_ = new ResizeObserverController();\r\n        }\r\n        return this.instance_;\r\n    };\r\n    /**\r\n     * Holds reference to the controller's instance.\r\n     *\r\n     * @private {ResizeObserverController}\r\n     */\r\n    ResizeObserverController.instance_ = null;\r\n    return ResizeObserverController;\r\n}());\n\n/**\r\n * Defines non-writable/enumerable properties of the provided target object.\r\n *\r\n * @param {Object} target - Object for which to define properties.\r\n * @param {Object} props - Properties to be defined.\r\n * @returns {Object} Target object.\r\n */\r\nvar defineConfigurable = (function (target, props) {\r\n    for (var _i = 0, _a = Object.keys(props); _i < _a.length; _i++) {\r\n        var key = _a[_i];\r\n        Object.defineProperty(target, key, {\r\n            value: props[key],\r\n            enumerable: false,\r\n            writable: false,\r\n            configurable: true\r\n        });\r\n    }\r\n    return target;\r\n});\n\n/**\r\n * Returns the global object associated with provided element.\r\n *\r\n * @param {Object} target\r\n * @returns {Object}\r\n */\r\nvar getWindowOf = (function (target) {\r\n    // Assume that the element is an instance of Node, which means that it\r\n    // has the \"ownerDocument\" property from which we can retrieve a\r\n    // corresponding global object.\r\n    var ownerGlobal = target && target.ownerDocument && target.ownerDocument.defaultView;\r\n    // Return the local global object if it's not possible extract one from\r\n    // provided element.\r\n    return ownerGlobal || global$1;\r\n});\n\n// Placeholder of an empty content rectangle.\r\nvar emptyRect = createRectInit(0, 0, 0, 0);\r\n/**\r\n * Converts provided string to a number.\r\n *\r\n * @param {number|string} value\r\n * @returns {number}\r\n */\r\nfunction toFloat(value) {\r\n    return parseFloat(value) || 0;\r\n}\r\n/**\r\n * Extracts borders size from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @param {...string} positions - Borders positions (top, right, ...)\r\n * @returns {number}\r\n */\r\nfunction getBordersSize(styles) {\r\n    var positions = [];\r\n    for (var _i = 1; _i < arguments.length; _i++) {\r\n        positions[_i - 1] = arguments[_i];\r\n    }\r\n    return positions.reduce(function (size, position) {\r\n        var value = styles['border-' + position + '-width'];\r\n        return size + toFloat(value);\r\n    }, 0);\r\n}\r\n/**\r\n * Extracts paddings sizes from provided styles.\r\n *\r\n * @param {CSSStyleDeclaration} styles\r\n * @returns {Object} Paddings box.\r\n */\r\nfunction getPaddings(styles) {\r\n    var positions = ['top', 'right', 'bottom', 'left'];\r\n    var paddings = {};\r\n    for (var _i = 0, positions_1 = positions; _i < positions_1.length; _i++) {\r\n        var position = positions_1[_i];\r\n        var value = styles['padding-' + position];\r\n        paddings[position] = toFloat(value);\r\n    }\r\n    return paddings;\r\n}\r\n/**\r\n * Calculates content rectangle of provided SVG element.\r\n *\r\n * @param {SVGGraphicsElement} target - Element content rectangle of which needs\r\n *      to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getSVGContentRect(target) {\r\n    var bbox = target.getBBox();\r\n    return createRectInit(0, 0, bbox.width, bbox.height);\r\n}\r\n/**\r\n * Calculates content rectangle of provided HTMLElement.\r\n *\r\n * @param {HTMLElement} target - Element for which to calculate the content rectangle.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getHTMLElementContentRect(target) {\r\n    // Client width & height properties can't be\r\n    // used exclusively as they provide rounded values.\r\n    var clientWidth = target.clientWidth, clientHeight = target.clientHeight;\r\n    // By this condition we can catch all non-replaced inline, hidden and\r\n    // detached elements. Though elements with width & height properties less\r\n    // than 0.5 will be discarded as well.\r\n    //\r\n    // Without it we would need to implement separate methods for each of\r\n    // those cases and it's not possible to perform a precise and performance\r\n    // effective test for hidden elements. E.g. even jQuery's ':visible' filter\r\n    // gives wrong results for elements with width & height less than 0.5.\r\n    if (!clientWidth && !clientHeight) {\r\n        return emptyRect;\r\n    }\r\n    var styles = getWindowOf(target).getComputedStyle(target);\r\n    var paddings = getPaddings(styles);\r\n    var horizPad = paddings.left + paddings.right;\r\n    var vertPad = paddings.top + paddings.bottom;\r\n    // Computed styles of width & height are being used because they are the\r\n    // only dimensions available to JS that contain non-rounded values. It could\r\n    // be possible to utilize the getBoundingClientRect if only it's data wasn't\r\n    // affected by CSS transformations let alone paddings, borders and scroll bars.\r\n    var width = toFloat(styles.width), height = toFloat(styles.height);\r\n    // Width & height include paddings and borders when the 'border-box' box\r\n    // model is applied (except for IE).\r\n    if (styles.boxSizing === 'border-box') {\r\n        // Following conditions are required to handle Internet Explorer which\r\n        // doesn't include paddings and borders to computed CSS dimensions.\r\n        //\r\n        // We can say that if CSS dimensions + paddings are equal to the \"client\"\r\n        // properties then it's either IE, and thus we don't need to subtract\r\n        // anything, or an element merely doesn't have paddings/borders styles.\r\n        if (Math.round(width + horizPad) !== clientWidth) {\r\n            width -= getBordersSize(styles, 'left', 'right') + horizPad;\r\n        }\r\n        if (Math.round(height + vertPad) !== clientHeight) {\r\n            height -= getBordersSize(styles, 'top', 'bottom') + vertPad;\r\n        }\r\n    }\r\n    // Following steps can't be applied to the document's root element as its\r\n    // client[Width/Height] properties represent viewport area of the window.\r\n    // Besides, it's as well not necessary as the <html> itself neither has\r\n    // rendered scroll bars nor it can be clipped.\r\n    if (!isDocumentElement(target)) {\r\n        // In some browsers (only in Firefox, actually) CSS width & height\r\n        // include scroll bars size which can be removed at this step as scroll\r\n        // bars are the only difference between rounded dimensions + paddings\r\n        // and \"client\" properties, though that is not always true in Chrome.\r\n        var vertScrollbar = Math.round(width + horizPad) - clientWidth;\r\n        var horizScrollbar = Math.round(height + vertPad) - clientHeight;\r\n        // Chrome has a rather weird rounding of \"client\" properties.\r\n        // E.g. for an element with content width of 314.2px it sometimes gives\r\n        // the client width of 315px and for the width of 314.7px it may give\r\n        // 314px. And it doesn't happen all the time. So just ignore this delta\r\n        // as a non-relevant.\r\n        if (Math.abs(vertScrollbar) !== 1) {\r\n            width -= vertScrollbar;\r\n        }\r\n        if (Math.abs(horizScrollbar) !== 1) {\r\n            height -= horizScrollbar;\r\n        }\r\n    }\r\n    return createRectInit(paddings.left, paddings.top, width, height);\r\n}\r\n/**\r\n * Checks whether provided element is an instance of the SVGGraphicsElement.\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nvar isSVGGraphicsElement = (function () {\r\n    // Some browsers, namely IE and Edge, don't have the SVGGraphicsElement\r\n    // interface.\r\n    if (typeof SVGGraphicsElement !== 'undefined') {\r\n        return function (target) { return target instanceof getWindowOf(target).SVGGraphicsElement; };\r\n    }\r\n    // If it's so, then check that element is at least an instance of the\r\n    // SVGElement and that it has the \"getBBox\" method.\r\n    // eslint-disable-next-line no-extra-parens\r\n    return function (target) { return (target instanceof getWindowOf(target).SVGElement &&\r\n        typeof target.getBBox === 'function'); };\r\n})();\r\n/**\r\n * Checks whether provided element is a document element (<html>).\r\n *\r\n * @param {Element} target - Element to be checked.\r\n * @returns {boolean}\r\n */\r\nfunction isDocumentElement(target) {\r\n    return target === getWindowOf(target).document.documentElement;\r\n}\r\n/**\r\n * Calculates an appropriate content rectangle for provided html or svg element.\r\n *\r\n * @param {Element} target - Element content rectangle of which needs to be calculated.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction getContentRect(target) {\r\n    if (!isBrowser) {\r\n        return emptyRect;\r\n    }\r\n    if (isSVGGraphicsElement(target)) {\r\n        return getSVGContentRect(target);\r\n    }\r\n    return getHTMLElementContentRect(target);\r\n}\r\n/**\r\n * Creates rectangle with an interface of the DOMRectReadOnly.\r\n * Spec: https://drafts.fxtf.org/geometry/#domrectreadonly\r\n *\r\n * @param {DOMRectInit} rectInit - Object with rectangle's x/y coordinates and dimensions.\r\n * @returns {DOMRectReadOnly}\r\n */\r\nfunction createReadOnlyRect(_a) {\r\n    var x = _a.x, y = _a.y, width = _a.width, height = _a.height;\r\n    // If DOMRectReadOnly is available use it as a prototype for the rectangle.\r\n    var Constr = typeof DOMRectReadOnly !== 'undefined' ? DOMRectReadOnly : Object;\r\n    var rect = Object.create(Constr.prototype);\r\n    // Rectangle's properties are not writable and non-enumerable.\r\n    defineConfigurable(rect, {\r\n        x: x, y: y, width: width, height: height,\r\n        top: y,\r\n        right: x + width,\r\n        bottom: height + y,\r\n        left: x\r\n    });\r\n    return rect;\r\n}\r\n/**\r\n * Creates DOMRectInit object based on the provided dimensions and the x/y coordinates.\r\n * Spec: https://drafts.fxtf.org/geometry/#dictdef-domrectinit\r\n *\r\n * @param {number} x - X coordinate.\r\n * @param {number} y - Y coordinate.\r\n * @param {number} width - Rectangle's width.\r\n * @param {number} height - Rectangle's height.\r\n * @returns {DOMRectInit}\r\n */\r\nfunction createRectInit(x, y, width, height) {\r\n    return { x: x, y: y, width: width, height: height };\r\n}\n\n/**\r\n * Class that is responsible for computations of the content rectangle of\r\n * provided DOM element and for keeping track of it's changes.\r\n */\r\nvar ResizeObservation = /** @class */ (function () {\r\n    /**\r\n     * Creates an instance of ResizeObservation.\r\n     *\r\n     * @param {Element} target - Element to be observed.\r\n     */\r\n    function ResizeObservation(target) {\r\n        /**\r\n         * Broadcasted width of content rectangle.\r\n         *\r\n         * @type {number}\r\n         */\r\n        this.broadcastWidth = 0;\r\n        /**\r\n         * Broadcasted height of content rectangle.\r\n         *\r\n         * @type {number}\r\n         */\r\n        this.broadcastHeight = 0;\r\n        /**\r\n         * Reference to the last observed content rectangle.\r\n         *\r\n         * @private {DOMRectInit}\r\n         */\r\n        this.contentRect_ = createRectInit(0, 0, 0, 0);\r\n        this.target = target;\r\n    }\r\n    /**\r\n     * Updates content rectangle and tells whether it's width or height properties\r\n     * have changed since the last broadcast.\r\n     *\r\n     * @returns {boolean}\r\n     */\r\n    ResizeObservation.prototype.isActive = function () {\r\n        var rect = getContentRect(this.target);\r\n        this.contentRect_ = rect;\r\n        return (rect.width !== this.broadcastWidth ||\r\n            rect.height !== this.broadcastHeight);\r\n    };\r\n    /**\r\n     * Updates 'broadcastWidth' and 'broadcastHeight' properties with a data\r\n     * from the corresponding properties of the last observed content rectangle.\r\n     *\r\n     * @returns {DOMRectInit} Last observed content rectangle.\r\n     */\r\n    ResizeObservation.prototype.broadcastRect = function () {\r\n        var rect = this.contentRect_;\r\n        this.broadcastWidth = rect.width;\r\n        this.broadcastHeight = rect.height;\r\n        return rect;\r\n    };\r\n    return ResizeObservation;\r\n}());\n\nvar ResizeObserverEntry = /** @class */ (function () {\r\n    /**\r\n     * Creates an instance of ResizeObserverEntry.\r\n     *\r\n     * @param {Element} target - Element that is being observed.\r\n     * @param {DOMRectInit} rectInit - Data of the element's content rectangle.\r\n     */\r\n    function ResizeObserverEntry(target, rectInit) {\r\n        var contentRect = createReadOnlyRect(rectInit);\r\n        // According to the specification following properties are not writable\r\n        // and are also not enumerable in the native implementation.\r\n        //\r\n        // Property accessors are not being used as they'd require to define a\r\n        // private WeakMap storage which may cause memory leaks in browsers that\r\n        // don't support this type of collections.\r\n        defineConfigurable(this, { target: target, contentRect: contentRect });\r\n    }\r\n    return ResizeObserverEntry;\r\n}());\n\nvar ResizeObserverSPI = /** @class */ (function () {\r\n    /**\r\n     * Creates a new instance of ResizeObserver.\r\n     *\r\n     * @param {ResizeObserverCallback} callback - Callback function that is invoked\r\n     *      when one of the observed elements changes it's content dimensions.\r\n     * @param {ResizeObserverController} controller - Controller instance which\r\n     *      is responsible for the updates of observer.\r\n     * @param {ResizeObserver} callbackCtx - Reference to the public\r\n     *      ResizeObserver instance which will be passed to callback function.\r\n     */\r\n    function ResizeObserverSPI(callback, controller, callbackCtx) {\r\n        /**\r\n         * Collection of resize observations that have detected changes in dimensions\r\n         * of elements.\r\n         *\r\n         * @private {Array<ResizeObservation>}\r\n         */\r\n        this.activeObservations_ = [];\r\n        /**\r\n         * Registry of the ResizeObservation instances.\r\n         *\r\n         * @private {Map<Element, ResizeObservation>}\r\n         */\r\n        this.observations_ = new MapShim();\r\n        if (typeof callback !== 'function') {\r\n            throw new TypeError('The callback provided as parameter 1 is not a function.');\r\n        }\r\n        this.callback_ = callback;\r\n        this.controller_ = controller;\r\n        this.callbackCtx_ = callbackCtx;\r\n    }\r\n    /**\r\n     * Starts observing provided element.\r\n     *\r\n     * @param {Element} target - Element to be observed.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.observe = function (target) {\r\n        if (!arguments.length) {\r\n            throw new TypeError('1 argument required, but only 0 present.');\r\n        }\r\n        // Do nothing if current environment doesn't have the Element interface.\r\n        if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n            return;\r\n        }\r\n        if (!(target instanceof getWindowOf(target).Element)) {\r\n            throw new TypeError('parameter 1 is not of type \"Element\".');\r\n        }\r\n        var observations = this.observations_;\r\n        // Do nothing if element is already being observed.\r\n        if (observations.has(target)) {\r\n            return;\r\n        }\r\n        observations.set(target, new ResizeObservation(target));\r\n        this.controller_.addObserver(this);\r\n        // Force the update of observations.\r\n        this.controller_.refresh();\r\n    };\r\n    /**\r\n     * Stops observing provided element.\r\n     *\r\n     * @param {Element} target - Element to stop observing.\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.unobserve = function (target) {\r\n        if (!arguments.length) {\r\n            throw new TypeError('1 argument required, but only 0 present.');\r\n        }\r\n        // Do nothing if current environment doesn't have the Element interface.\r\n        if (typeof Element === 'undefined' || !(Element instanceof Object)) {\r\n            return;\r\n        }\r\n        if (!(target instanceof getWindowOf(target).Element)) {\r\n            throw new TypeError('parameter 1 is not of type \"Element\".');\r\n        }\r\n        var observations = this.observations_;\r\n        // Do nothing if element is not being observed.\r\n        if (!observations.has(target)) {\r\n            return;\r\n        }\r\n        observations.delete(target);\r\n        if (!observations.size) {\r\n            this.controller_.removeObserver(this);\r\n        }\r\n    };\r\n    /**\r\n     * Stops observing all elements.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.disconnect = function () {\r\n        this.clearActive();\r\n        this.observations_.clear();\r\n        this.controller_.removeObserver(this);\r\n    };\r\n    /**\r\n     * Collects observation instances the associated element of which has changed\r\n     * it's content rectangle.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.gatherActive = function () {\r\n        var _this = this;\r\n        this.clearActive();\r\n        this.observations_.forEach(function (observation) {\r\n            if (observation.isActive()) {\r\n                _this.activeObservations_.push(observation);\r\n            }\r\n        });\r\n    };\r\n    /**\r\n     * Invokes initial callback function with a list of ResizeObserverEntry\r\n     * instances collected from active resize observations.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.broadcastActive = function () {\r\n        // Do nothing if observer doesn't have active observations.\r\n        if (!this.hasActive()) {\r\n            return;\r\n        }\r\n        var ctx = this.callbackCtx_;\r\n        // Create ResizeObserverEntry instance for every active observation.\r\n        var entries = this.activeObservations_.map(function (observation) {\r\n            return new ResizeObserverEntry(observation.target, observation.broadcastRect());\r\n        });\r\n        this.callback_.call(ctx, entries, ctx);\r\n        this.clearActive();\r\n    };\r\n    /**\r\n     * Clears the collection of active observations.\r\n     *\r\n     * @returns {void}\r\n     */\r\n    ResizeObserverSPI.prototype.clearActive = function () {\r\n        this.activeObservations_.splice(0);\r\n    };\r\n    /**\r\n     * Tells whether observer has active observations.\r\n     *\r\n     * @returns {boolean}\r\n     */\r\n    ResizeObserverSPI.prototype.hasActive = function () {\r\n        return this.activeObservations_.length > 0;\r\n    };\r\n    return ResizeObserverSPI;\r\n}());\n\n// Registry of internal observers. If WeakMap is not available use current shim\r\n// for the Map collection as it has all required methods and because WeakMap\r\n// can't be fully polyfilled anyway.\r\nvar observers = typeof WeakMap !== 'undefined' ? new WeakMap() : new MapShim();\r\n/**\r\n * ResizeObserver API. Encapsulates the ResizeObserver SPI implementation\r\n * exposing only those methods and properties that are defined in the spec.\r\n */\r\nvar ResizeObserver = /** @class */ (function () {\r\n    /**\r\n     * Creates a new instance of ResizeObserver.\r\n     *\r\n     * @param {ResizeObserverCallback} callback - Callback that is invoked when\r\n     *      dimensions of the observed elements change.\r\n     */\r\n    function ResizeObserver(callback) {\r\n        if (!(this instanceof ResizeObserver)) {\r\n            throw new TypeError('Cannot call a class as a function.');\r\n        }\r\n        if (!arguments.length) {\r\n            throw new TypeError('1 argument required, but only 0 present.');\r\n        }\r\n        var controller = ResizeObserverController.getInstance();\r\n        var observer = new ResizeObserverSPI(callback, controller, this);\r\n        observers.set(this, observer);\r\n    }\r\n    return ResizeObserver;\r\n}());\r\n// Expose public methods of ResizeObserver.\r\n[\r\n    'observe',\r\n    'unobserve',\r\n    'disconnect'\r\n].forEach(function (method) {\r\n    ResizeObserver.prototype[method] = function () {\r\n        var _a;\r\n        return (_a = observers.get(this))[method].apply(_a, arguments);\r\n    };\r\n});\n\nvar index = (function () {\r\n    // Export existing implementation if available.\r\n    if (typeof global$1.ResizeObserver !== 'undefined') {\r\n        return global$1.ResizeObserver;\r\n    }\r\n    return ResizeObserver;\r\n})();\n\nexport default index;\n","import { useCallback, useEffect, useLayoutEffect, useState } from 'react';\nimport ResizeObserver from 'resize-observer-polyfill';\nimport Vector2 from '../geometry/Vector2';\nimport { getPointFromElement } from '../geometry/rectHelper';\nimport { SourceToTargetsArrayType } from './ArcherContainer.types';\n\nexport type ElementRects = Record<string, DOMRect>;\n\nexport type ArcherMeasurements = {\n  parentCoordinates: Vector2 | null;\n  rects: ElementRects;\n};\n\n/**\n * Measures the parent and every registered element after layout, storing the\n * result in state. Keeping the measurements in state (rather than reading the\n * DOM during render) makes the render pure, so it follows the Rules of React\n * and can be optimized by the React Compiler.\n *\n * Returns the latest measurements and a `refreshScreen` callback that forces a\n * re-measure (used by the resize listener, the element observer and the public\n * imperative handle).\n */\nexport function useArcherMeasurements(\n  parentRef: React.RefObject<HTMLDivElement | null>,\n  refs: Record<string, HTMLElement>,\n  sourceToTargetsMap: Record<string, SourceToTargetsArrayType>,\n): { measurements: ArcherMeasurements; refreshScreen: () => void } {\n  const [measurements, setMeasurements] = useState<ArcherMeasurements>({\n    parentCoordinates: null,\n    rects: {},\n  });\n  const [version, setVersion] = useState(0);\n\n  const refreshScreen = useCallback(() => setVersion((previous) => previous + 1), []);\n\n  useLayoutEffect(() => {\n    const parentCoordinates = getPointFromElement(parentRef.current);\n    const rects: ElementRects = {};\n\n    Object.keys(refs).forEach((elementId) => {\n      const rect = refs[elementId]?.getBoundingClientRect();\n\n      if (rect) {\n        rects[elementId] = rect;\n      }\n    });\n\n    setMeasurements({ parentCoordinates, rects });\n    // Re-measure when the registered elements or their relations change, when a\n    // window/element resize bumps `version`, and on the initial layout pass.\n  }, [parentRef, refs, sourceToTargetsMap, version]);\n\n  return { measurements, refreshScreen };\n}\n\n/** Observe registered elements for size changes and refresh on any change. */\nexport const useObserveElements = (\n  refs: Record<string, HTMLElement>,\n  refreshScreen: () => void,\n) => {\n  useEffect(() => {\n    const observer = new ResizeObserver(() => {\n      refreshScreen();\n    });\n\n    Object.keys(refs).forEach((elementId) => {\n      observer.observe(refs[elementId]);\n    });\n\n    return () => {\n      observer.disconnect();\n    };\n  }, [refs, refreshScreen]);\n};\n\n/** Subscribe/unsubscribe to the resize window event */\nexport function useResizeListener(refreshScreen: () => void) {\n  useEffect(() => {\n    if (window) window.addEventListener('resize', refreshScreen);\n\n    return () => {\n      if (window) window.removeEventListener('resize', refreshScreen);\n    };\n  }, [refreshScreen]);\n}\n","import React, { useCallback, useImperativeHandle, useMemo, useRef, useState } from 'react';\nimport { SourceToTargetType } from '../types';\nimport { ArcherContainerContext, ArcherContainerContextProvider } from './ArcherContainer.context';\nimport {\n  SourceToTargetsArrayType,\n  ArcherContainerProps,\n  ArcherContainerHandle,\n} from './ArcherContainer.types';\nimport { SvgArrows } from './components/SvgArrows';\nimport { endShapeDefaultProp } from './ArcherContainer.constants';\nimport { ArrowMarkers } from './components/Markers';\nimport {\n  useArcherMeasurements,\n  useObserveElements,\n  useResizeListener,\n} from './ArcherContainer.hooks';\n\nconst defaultSvgContainerStyle = {\n  position: 'absolute',\n  width: '100%',\n  height: '100%',\n  top: 0,\n  left: 0,\n  pointerEvents: 'none',\n};\n\nconst ArcherContainer = React.forwardRef<ArcherContainerHandle, ArcherContainerProps>(\n  (\n    {\n      endShape = endShapeDefaultProp,\n      strokeColor = '#f00',\n      strokeWidth = 2,\n      svgContainerStyle = {},\n      noCurves,\n      children,\n      className,\n      endMarker,\n      lineStyle,\n      offset,\n      startMarker,\n      strokeDasharray,\n      style,\n    }: ArcherContainerProps,\n    archerContainerRef,\n  ) => {\n    const [refs, setRefs] = useState<Record<string, HTMLElement>>({});\n    const [sourceToTargetsMap, setSourceToTargetsMap] = useState<\n      Record<string, SourceToTargetsArrayType>\n    >({});\n\n    const parent = useRef<HTMLDivElement>(null);\n\n    const uniqueId = useRef<string>(`arrow${Math.random().toString().slice(2)}`).current;\n\n    // Measurements live in state (computed in a layout effect), so render is\n    // pure. refreshScreen forces a re-measure — see useArcherMeasurements.\n    const { measurements, refreshScreen } = useArcherMeasurements(parent, refs, sourceToTargetsMap);\n\n    useImperativeHandle(\n      archerContainerRef,\n      (): ArcherContainerHandle => ({\n        refreshScreen,\n        arrowMarkerUniquePrefix: uniqueId,\n      }),\n    );\n\n    const _registerTransitions = useCallback(\n      (elementId: string, newSourceToTargets: SourceToTargetType[]): void => {\n        setSourceToTargetsMap((previousValue) => ({\n          ...previousValue,\n          [elementId]: newSourceToTargets,\n        }));\n      },\n      [],\n    );\n\n    const _unregisterTransitions = useCallback((elementId: string): void => {\n      setSourceToTargetsMap((previousValue) => {\n        const sourceToTargetsMapCopy = { ...previousValue };\n        delete sourceToTargetsMapCopy[elementId];\n        return sourceToTargetsMapCopy;\n      });\n    }, []);\n\n    const _registerChild = useCallback((id: string, ref: HTMLElement): void => {\n      setRefs((currentRefs) => {\n        if (currentRefs[id] === ref) {\n          return currentRefs;\n        }\n\n        return {\n          ...currentRefs,\n          [id]: ref,\n        };\n      });\n    }, []);\n\n    const _unregisterChild = useCallback((id: string): void => {\n      setRefs((currentRefs) => {\n        const newRefs = { ...currentRefs };\n        delete newRefs[id];\n        return newRefs;\n      });\n    }, []);\n\n    const _svgContainerStyle = useMemo(\n      (): Record<string, any> => ({\n        ...defaultSvgContainerStyle,\n        ...svgContainerStyle,\n      }),\n      [svgContainerStyle],\n    );\n\n    let newChildren: React.ReactNode | null | undefined;\n\n    if (typeof children === 'function') {\n      newChildren = children(ArcherContainerContext);\n    } else {\n      newChildren = children;\n    }\n\n    useResizeListener(refreshScreen);\n\n    useObserveElements(refs, refreshScreen);\n\n    const contextValue = useMemo(\n      () => ({\n        registerTransitions: _registerTransitions,\n        unregisterTransitions: _unregisterTransitions,\n        registerChild: _registerChild,\n        unregisterChild: _unregisterChild,\n      }),\n      [_registerTransitions, _unregisterTransitions, _registerChild, _unregisterChild],\n    );\n\n    return (\n      <ArcherContainerContextProvider value={contextValue}>\n        <div style={{ ...style, position: 'relative' }} className={className}>\n          <svg style={_svgContainerStyle}>\n            <defs>\n              <ArrowMarkers\n                endShape={endShape}\n                sourceToTargetsMap={sourceToTargetsMap}\n                strokeColor={strokeColor}\n                uniqueId={uniqueId}\n              />\n            </defs>\n            <SvgArrows\n              startMarker={startMarker}\n              endMarker={endMarker}\n              endShape={endShape}\n              strokeColor={strokeColor}\n              strokeWidth={strokeWidth}\n              strokeDasharray={strokeDasharray}\n              noCurves={noCurves}\n              lineStyle={lineStyle}\n              offset={offset}\n              parentCoordinates={measurements.parentCoordinates}\n              rects={measurements.rects}\n              uniqueId={uniqueId}\n              sourceToTargetsMap={sourceToTargetsMap}\n            />\n          </svg>\n\n          <div\n            style={{\n              height: '100%',\n            }}\n            ref={parent}\n          >\n            {newChildren}\n          </div>\n        </div>\n      </ArcherContainerContextProvider>\n    );\n  },\n);\n\nexport default ArcherContainer;\n"],"names":["useIsomorphicLayoutEffect","window","useLayoutEffect","useEffect","ArcherContainerContext","React","createContext","ArcherContainerContextProvider","Provider","encodeId","id","encodeURI","replace","hasElementType","hasMap","hasSet","hasArrayBuffer","equal","a","b","length","i","keys","it","reactFastCompare","error","useDeepCompareMemoize","value","ref","useRef","undefined","isEqual","current","useDeepCompareEffect","callback","dependencies","map","assertContextExists","context","Error","generateSourceToTarget","relations","targetId","sourceAnchor","targetAnchor","label","className","style","order","domAttributes","cursor","hitSlop","source","anchor","target","ArcherElement","children","encodedId","useMemo","useContext","registerTransitions","useCallback","newRelations","newSourceToTarget","unregisterTransitions","registerChild","newRef","unregisterChild","Children","only","child","cloneElement","props","__create","__defProp","__getOwnPropDesc","__getOwnPropNames","__getProtoOf","__hasOwnProp","__export","all","name","__copyProps","to","from","except","desc","key","__toESM","mod","isNodeMode","__toCommonJS","index_exports","$dispatcherGuard","$makeReadOnly","$reset","$structuralCheck","c","clearRenderCounterRegistry","renderCounterRegistry","useRenderCounter","dist","require$$0","isValidElement","_a","ReactSecretInternals","$empty","_a2","size","$","ii","LazyGuardDispatcher","originalDispatcher","count","setCurrent","newDispatcher","guardFrames","kind","curr","lastFrame","counters","counter","registerRenderCounter","val","removeRenderCounter","seenErrors","oldValue","newValue","variableName","fnName","loc","l","r","path","depth","str","depthLimit","recur","oldValue2","newValue2","oldArray","newArray","k","v","Vector2","constructor","x","y","add","vector","substract","rectToPoint","rect","left","top","computeCoordinatesFromAnchorPosition","anchorPosition","width","height","console","getRectFromElement","element","getBoundingClientRect","getPointFromElement","rectp","getPointCoordinatesFromAnchorPosition","position","parentCoordinates","absolutePosition","computeArrowDirectionVector","anchorOrientation","arrowX","arrowY","computeArrowPointAccordingToArrowHead","xArrowHeadPoint","yArrowHeadPoint","arrowLength","strokeWidth","endingAnchorOrientation","lineStyle","xArrowStart","yArrowStart","angle","Math","atan2","cos","sin","xPoint","yPoint","computeStartingAnchorPosition","xStart","yStart","xEnd","yEnd","startingAnchorOrientation","xAnchor1","yAnchor1","computeEndingAnchorPosition","xAnchor2","yAnchor2","computeLabelDimensions","labelWidth","max","abs","labelHeight","xLabel","yLabel","computePathString","offset","xOffset","yOffset","linePath","includes","SvgArrow","t0","_c","startingPoint","endingPoint","strokeColor","strokeDasharray","arrowLabel","arrowMarkerId","enableStartMarker","disableEndMarker","endShape","t1","t2","actualArrowLength","circle","radius","arrow","pathString","t3","markerUrl","t4","fill","stroke","t5","t6","t7","jsx","t8","pointerEvents","t9","overflow","transform","t10","possibleShapes","getEndShapeFromStyle","shapeObj","Object","filter","getSourceToTargets","sourceToTargetsMap","jaggedSourceToTargets","concat","apply","sort","createShapeObj","chosenEndShape","getMarkerId","uniqueId","AdaptedArrow","newStartMarker","startMarker","newEndMarker","endMarker","newEndShape","newStrokeColor","newStrokeWidth","newStrokeDasharray","newNoCurves","noCurves","newLineStyle","newOffset","rects","warn","t11","SvgArrows","currentRelation","JSON","stringify","endShapeDefaultProp","arrowThickness","fillColor","circleMarker","markerWidth","markerHeight","refX","refY","arrowMarker","newArrowLength","newArrowThickness","arrowPath","buildShape","ArrowMarkers","MapShim","getIndex","arr","result","entry","index","class_1","entries","ctx","_i","isBrowser","global$1","requestAnimationFrame$1","trailingTimeout","throttle","delay","leadingCall","trailingCall","lastCallTime","resolvePending","proxy","timeoutCallback","timeStamp","REFRESH_DELAY","transitionKeys","mutationObserverSupported","ResizeObserverController","observer","observers","changesDetected","activeObservers","_b","propertyName","isReflowProperty","defineConfigurable","getWindowOf","ownerGlobal","emptyRect","createRectInit","toFloat","getBordersSize","styles","positions","getPaddings","paddings","positions_1","getSVGContentRect","bbox","getHTMLElementContentRect","clientWidth","clientHeight","horizPad","vertPad","isDocumentElement","vertScrollbar","horizScrollbar","isSVGGraphicsElement","getContentRect","createReadOnlyRect","Constr","ResizeObservation","ResizeObserverEntry","rectInit","contentRect","ResizeObserverSPI","controller","callbackCtx","observations","_this","observation","ResizeObserver","method","useArcherMeasurements","parentRef","refs","Symbol","for","measurements","setMeasurements","useState","version","setVersion","_temp","refreshScreen","forEach","elementId","previous","useObserveElements","observe","disconnect","useResizeListener","addEventListener","removeEventListener","defaultSvgContainerStyle","ArcherContainer","forwardRef","svgContainerStyle","archerContainerRef","setRefs","setSourceToTargetsMap","parent","random","toString","slice","useImperativeHandle","arrowMarkerUniquePrefix","_registerTransitions","newSourceToTargets","previousValue","_unregisterTransitions","sourceToTargetsMapCopy","_registerChild","currentRefs","_unregisterChild","newRefs","_svgContainerStyle","newChildren","contextValue","jsxs"],"mappings":"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","x_google_ignoreList":[3,7,16]}