@helsenorge/lightbox 13.6.0 → 13.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/lib/CHANGELOG.md CHANGED
@@ -1,3 +1,28 @@
1
+ ## [13.8.0](https://github.com/helsenorge/designsystem/branchCompare?baseVersion=GTv13.7.0&targetVersion=GTv13.8.0) (2026-02-24)
2
+
3
+
4
+ ### Features
5
+
6
+ * **expanderhierarchy:** expander har fått ref prop ([74783f1](https://github.com/helsenorge/designsystem/commit/74783f17d93334b39d7c07f7b17ed8bb2b38340c)), closes [#371787](https://github.com/helsenorge/designsystem/issues/371787)
7
+ * **label:** flytt afterLabelChildren til topp og knyttet til hovedlabel ([c7db421](https://github.com/helsenorge/designsystem/commit/c7db421b5196399c8d976567071e97056e92d286)), closes [#366134](https://github.com/helsenorge/designsystem/issues/366134)
8
+
9
+
10
+ ### Bug Fixes
11
+
12
+ * **helptriggericon:** bruk riktig svg for str xl på desktop og mobil ([d51ce49](https://github.com/helsenorge/designsystem/commit/d51ce49ae6e6b159bcb34e3f864e72fd5c027ded)), closes [#371659](https://github.com/helsenorge/designsystem/issues/371659)
13
+
14
+ ## [13.7.0](https://github.com/helsenorge/designsystem/branchCompare?baseVersion=GTv13.6.0&targetVersion=GTv13.7.0) (2026-02-16)
15
+
16
+
17
+ ### Features
18
+
19
+ * **lightbox:** lagt til språkhåndtering ([db207d6](https://github.com/helsenorge/designsystem/commit/db207d67b23816235e588f6bf82436799e6a39f4)), closes [#365604](https://github.com/helsenorge/designsystem/issues/365604)
20
+
21
+
22
+ ### Bug Fixes
23
+
24
+ * **uselementlist:** ekstra sjekk for å hindre mange rerenders av komponent ([3cbfcca](https://github.com/helsenorge/designsystem/commit/3cbfcca5569bf4cd308d4dd021a5e1726f21f58d)), closes [#367282](https://github.com/helsenorge/designsystem/issues/367282)
25
+
1
26
  ## [13.6.0](https://github.com/helsenorge/designsystem/branchCompare?baseVersion=GTv13.5.0&targetVersion=GTv13.6.0) (2026-02-11)
2
27
 
3
28
 
@@ -1,23 +1,24 @@
1
1
  import { default as React } from 'react';
2
+ import { HNDesignsystemLightBox } from '../../resources/Resources';
2
3
  export interface LightBoxProps {
3
- /** Aria label for the close button */
4
- ariaLabelCloseButton: string;
5
- /** Aria label for the text box button when its open */
6
- ariaLabelCloseTextBox: string;
7
- /** Aria label for the left arrow button */
4
+ /** @deprecated Aria label for the close button */
5
+ ariaLabelCloseButton?: string;
6
+ /** @deprecated Aria label for the text box button when its open */
7
+ ariaLabelCloseTextBox?: string;
8
+ /** @deprecated Aria label for the left arrow button */
8
9
  ariaLabelLeftArrow?: string;
9
- /** Aria label for the full modal describing what the modal contains */
10
- ariaLabelLightBox: string;
11
- /** Aria label for the right arrow button */
10
+ /** @deprecated Aria label for the full modal describing what the modal contains */
11
+ ariaLabelLightBox?: string;
12
+ /** @deprecated Aria label for the right arrow button */
12
13
  ariaLabelRightArrow?: string;
13
- /** Aria label for the text box button when its closed */
14
- ariaLabelOpenTextBox: string;
15
- /** Aria label for the zoom in button */
16
- ariaLabelZoomIn: string;
17
- /** Aria label for the zoom out button */
18
- ariaLabelZoomOut: string;
19
- /** Aria label for the slider input component */
20
- ariaLabelZoomSlider: string;
14
+ /** @deprecated Aria label for the text box button when its closed */
15
+ ariaLabelOpenTextBox?: string;
16
+ /** @deprecated Aria label for the zoom in button */
17
+ ariaLabelZoomIn?: string;
18
+ /** @deprecated Aria label for the zoom out button */
19
+ ariaLabelZoomOut?: string;
20
+ /** @deprecated Aria label for the slider input component */
21
+ ariaLabelZoomSlider?: string;
21
22
  /** If set the text box closes automatically after the given seconds */
22
23
  closeTextAfterSeconds?: number;
23
24
  /** Alt text for the image */
@@ -32,6 +33,8 @@ export interface LightBoxProps {
32
33
  onLeftArrowClick?: () => void;
33
34
  /** Function is called when user clicks the right arrow button. If not given the arrow will not show. */
34
35
  onRightArrowClick?: () => void;
36
+ /** Resources for component */
37
+ resources?: Partial<HNDesignsystemLightBox>;
35
38
  /** Sets the data-testid attribute. */
36
39
  testId?: string;
37
40
  }
@@ -8,10 +8,11 @@ import ChevronsUp from "@helsenorge/designsystem-react/components/Icons/Chevrons
8
8
  import Minus from "@helsenorge/designsystem-react/components/Icons/Minus";
9
9
  import PlusSmall from "@helsenorge/designsystem-react/components/Icons/PlusSmall";
10
10
  import X from "@helsenorge/designsystem-react/components/Icons/X";
11
- import { IconSize, KeyboardEventKey, ZIndex } from "@helsenorge/designsystem-react/constants";
11
+ import { IconSize, KeyboardEventKey, LanguageLocales, ZIndex } from "@helsenorge/designsystem-react/constants";
12
12
  import { useFocusTrap } from "@helsenorge/designsystem-react/hooks/useFocusTrap";
13
13
  import { useReturnFocusOnUnmount } from "@helsenorge/designsystem-react/hooks/useReturnFocusOnUnmount";
14
14
  import { useSize } from "@helsenorge/designsystem-react/hooks/useSize";
15
+ import { useLanguage } from "@helsenorge/designsystem-react/utils/language";
15
16
  import { disableBodyScroll, enableBodyScroll } from "@helsenorge/designsystem-react/utils/scroll";
16
17
  import { useKeyboardEvent } from "@helsenorge/designsystem-react";
17
18
  import styles from "./styles.module.scss";
@@ -1471,7 +1472,60 @@ var MiniSlider = (props) => {
1471
1472
  });
1472
1473
  };
1473
1474
  var MiniSlider_default = MiniSlider;
1474
- var LightBox = ({ ariaLabelCloseButton, ariaLabelLeftArrow, ariaLabelLightBox, ariaLabelRightArrow, ariaLabelCloseTextBox, ariaLabelOpenTextBox, ariaLabelZoomIn, ariaLabelZoomOut, ariaLabelZoomSlider, closeTextAfterSeconds, imageAlt, imageSrc, imageText, onClose, onLeftArrowClick, onRightArrowClick, testId }) => {
1475
+ var HN_Designsystem_LightBox_en_GB_default = {
1476
+ ariaLabelCloseButton: "Close lightbox",
1477
+ ariaLabelLeftArrow: "Previous picture",
1478
+ ariaLabelLightBox: "Image display",
1479
+ ariaLabelRightArrow: "Next image",
1480
+ ariaLabelCloseTextBox: "Close text box",
1481
+ ariaLabelOpenTextBox: "Open text box",
1482
+ ariaLabelZoomIn: "Zoom in",
1483
+ ariaLabelZoomOut: "Zoom out",
1484
+ ariaLabelZoomSlider: "Zoom"
1485
+ };
1486
+ var HN_Designsystem_LightBox_nb_NO_default = {
1487
+ ariaLabelCloseButton: "Lukk lightbox",
1488
+ ariaLabelLeftArrow: "Forrige bilde",
1489
+ ariaLabelLightBox: "Bildevisning",
1490
+ ariaLabelRightArrow: "Neste bilde",
1491
+ ariaLabelCloseTextBox: "Lukk tekstboks",
1492
+ ariaLabelOpenTextBox: "Åpne tekstboks",
1493
+ ariaLabelZoomIn: "Zoom inn",
1494
+ ariaLabelZoomOut: "Zoom ut",
1495
+ ariaLabelZoomSlider: "Zoom"
1496
+ };
1497
+ var HN_Designsystem_LightBox_nn_NO_default = {
1498
+ ariaLabelCloseButton: "Lukk lightbox",
1499
+ ariaLabelLeftArrow: "Førre bilete",
1500
+ ariaLabelLightBox: "Biletvisning",
1501
+ ariaLabelRightArrow: "Neste bilete",
1502
+ ariaLabelCloseTextBox: "Lukk tekstboks",
1503
+ ariaLabelOpenTextBox: "Opne tekstboks",
1504
+ ariaLabelZoomIn: "Zoom inn",
1505
+ ariaLabelZoomOut: "Zoom ut",
1506
+ ariaLabelZoomSlider: "Zoom"
1507
+ };
1508
+ var HN_Designsystem_LightBox_se_NO_default = {
1509
+ ariaLabelCloseButton: "Gidde lightboxa",
1510
+ ariaLabelLeftArrow: "Ovddit govva",
1511
+ ariaLabelLightBox: "Govvačájáhus",
1512
+ ariaLabelRightArrow: "Boahtte govva",
1513
+ ariaLabelCloseTextBox: "Gidde teakstaboksa",
1514
+ ariaLabelOpenTextBox: "Raba teakstaboksa",
1515
+ ariaLabelZoomIn: "Zoome stuoribun",
1516
+ ariaLabelZoomOut: "Zoome unnibun",
1517
+ ariaLabelZoomSlider: "Zoome"
1518
+ };
1519
+ const getResources = (language) => {
1520
+ switch (language) {
1521
+ case LanguageLocales.ENGLISH: return HN_Designsystem_LightBox_en_GB_default;
1522
+ case LanguageLocales.NORWEGIAN_NYNORSK: return HN_Designsystem_LightBox_nn_NO_default;
1523
+ case LanguageLocales.SAMI_NORTHERN: return HN_Designsystem_LightBox_se_NO_default;
1524
+ case LanguageLocales.NORWEGIAN:
1525
+ default: return HN_Designsystem_LightBox_nb_NO_default;
1526
+ }
1527
+ };
1528
+ var LightBox = ({ ariaLabelCloseButton: ariaLabelCloseButton$4, ariaLabelLeftArrow: ariaLabelLeftArrow$4, ariaLabelLightBox: ariaLabelLightBox$4, ariaLabelRightArrow: ariaLabelRightArrow$4, ariaLabelCloseTextBox: ariaLabelCloseTextBox$4, ariaLabelOpenTextBox: ariaLabelOpenTextBox$4, ariaLabelZoomIn: ariaLabelZoomIn$4, ariaLabelZoomOut: ariaLabelZoomOut$4, ariaLabelZoomSlider: ariaLabelZoomSlider$4, closeTextAfterSeconds, imageAlt, imageSrc, imageText, onClose, onLeftArrowClick, onRightArrowClick, resources, testId }) => {
1475
1529
  const [imageTextOpen, setImageTextOpen] = React.useState(true);
1476
1530
  const lightBoxRef = useRef(null);
1477
1531
  const textBoxRef = useRef(null);
@@ -1479,6 +1533,11 @@ var LightBox = ({ ariaLabelCloseButton, ariaLabelLeftArrow, ariaLabelLightBox, a
1479
1533
  const [zoom, setZoom] = useState(1);
1480
1534
  useFocusTrap(lightBoxRef, true);
1481
1535
  useReturnFocusOnUnmount(lightBoxRef);
1536
+ const { language } = useLanguage(LanguageLocales.NORWEGIAN);
1537
+ const mergedResources = {
1538
+ ...getResources(language),
1539
+ ...resources
1540
+ };
1482
1541
  useKeyboardEvent(lightBoxRef, onClose, [KeyboardEventKey.Escape]);
1483
1542
  const updateStates = (newZoom) => {
1484
1543
  if (zoom === newZoom) return;
@@ -1503,12 +1562,12 @@ var LightBox = ({ ariaLabelCloseButton, ariaLabelLeftArrow, ariaLabelLightBox, a
1503
1562
  role: "dialog",
1504
1563
  "aria-modal": true,
1505
1564
  tabIndex: -1,
1506
- "aria-label": ariaLabelLightBox,
1565
+ "aria-label": ariaLabelLightBox$4 || mergedResources.ariaLabelLightBox,
1507
1566
  ref: lightBoxRef,
1508
1567
  children: [
1509
1568
  /* @__PURE__ */ jsx("button", {
1510
1569
  onClick: onClose,
1511
- "aria-label": ariaLabelCloseButton,
1570
+ "aria-label": ariaLabelCloseButton$4 || mergedResources.ariaLabelCloseButton,
1512
1571
  "data-testid": "closeButton",
1513
1572
  className: classNames(styles.button, styles["close-button"]),
1514
1573
  style: { zIndex: ZIndex.LightBoxButtons },
@@ -1521,7 +1580,7 @@ var LightBox = ({ ariaLabelCloseButton, ariaLabelLeftArrow, ariaLabelLightBox, a
1521
1580
  onLeftArrowClick && /* @__PURE__ */ jsx("button", {
1522
1581
  className: classNames(styles.button, styles["arrow-button"], styles["arrow-button--left"]),
1523
1582
  onClick: onLeftArrowClick,
1524
- "aria-label": ariaLabelLeftArrow,
1583
+ "aria-label": ariaLabelLeftArrow$4 || mergedResources.ariaLabelLeftArrow,
1525
1584
  "data-testid": "leftArrow",
1526
1585
  style: { zIndex: ZIndex.LightBoxButtons },
1527
1586
  children: /* @__PURE__ */ jsx(Icon, {
@@ -1533,7 +1592,7 @@ var LightBox = ({ ariaLabelCloseButton, ariaLabelLeftArrow, ariaLabelLightBox, a
1533
1592
  onRightArrowClick && /* @__PURE__ */ jsx("button", {
1534
1593
  className: classNames(styles.button, styles["arrow-button"], styles["arrow-button--right"]),
1535
1594
  onClick: onRightArrowClick,
1536
- "aria-label": ariaLabelRightArrow,
1595
+ "aria-label": ariaLabelRightArrow$4 || mergedResources.ariaLabelRightArrow,
1537
1596
  "data-testid": "rightarrow",
1538
1597
  style: { zIndex: ZIndex.LightBoxButtons },
1539
1598
  children: /* @__PURE__ */ jsx(Icon, {
@@ -1553,7 +1612,7 @@ var LightBox = ({ ariaLabelCloseButton, ariaLabelLeftArrow, ariaLabelLightBox, a
1553
1612
  className: classNames(styles.button, styles["image-text-box__button"]),
1554
1613
  onClick: () => setImageTextOpen(!imageTextOpen),
1555
1614
  style: { zIndex: ZIndex.LightBoxButtons },
1556
- "aria-label": imageTextOpen ? ariaLabelCloseTextBox : ariaLabelOpenTextBox,
1615
+ "aria-label": imageTextOpen ? ariaLabelCloseTextBox$4 || mergedResources.ariaLabelCloseTextBox : ariaLabelOpenTextBox$4 || mergedResources.ariaLabelOpenTextBox,
1557
1616
  "aria-expanded": imageTextOpen,
1558
1617
  children: imageTextOpen ? /* @__PURE__ */ jsx(Icon, {
1559
1618
  svgIcon: ChevronsDown,
@@ -1586,9 +1645,9 @@ var LightBox = ({ ariaLabelCloseButton, ariaLabelLeftArrow, ariaLabelLightBox, a
1586
1645
  transform: setTransform$1,
1587
1646
  updateStates,
1588
1647
  zoom,
1589
- ariaLabelZoomIn,
1590
- ariaLabelZoomOut,
1591
- ariaLabelZoomSlider
1648
+ ariaLabelZoomIn: ariaLabelZoomIn$4 || mergedResources.ariaLabelZoomIn,
1649
+ ariaLabelZoomOut: ariaLabelZoomOut$4 || mergedResources.ariaLabelZoomOut,
1650
+ ariaLabelZoomSlider: ariaLabelZoomSlider$4 || mergedResources.ariaLabelZoomSlider
1592
1651
  }), /* @__PURE__ */ jsx(TransformComponent, {
1593
1652
  wrapperStyle: {
1594
1653
  zIndex: 1,
@@ -1608,7 +1667,7 @@ var LightBox = ({ ariaLabelCloseButton, ariaLabelLeftArrow, ariaLabelLightBox, a
1608
1667
  ]
1609
1668
  });
1610
1669
  };
1611
- var Controls = ({ transform, updateStates, zoom, ariaLabelZoomIn, ariaLabelZoomOut, ariaLabelZoomSlider }) => {
1670
+ var Controls = ({ transform, updateStates, zoom, ariaLabelZoomIn: ariaLabelZoomIn$4, ariaLabelZoomOut: ariaLabelZoomOut$4, ariaLabelZoomSlider: ariaLabelZoomSlider$4 }) => {
1612
1671
  useTransformComponent(({ state }) => {
1613
1672
  updateStates(state.scale);
1614
1673
  });
@@ -1645,7 +1704,7 @@ var Controls = ({ transform, updateStates, zoom, ariaLabelZoomIn, ariaLabelZoomO
1645
1704
  /* @__PURE__ */ jsx("button", {
1646
1705
  className: classNames(styles.button),
1647
1706
  onClick: () => zoomOut$1(),
1648
- "aria-label": ariaLabelZoomOut,
1707
+ "aria-label": ariaLabelZoomOut$4,
1649
1708
  children: /* @__PURE__ */ jsx(Icon, {
1650
1709
  svgIcon: Minus,
1651
1710
  color: "white",
@@ -1657,12 +1716,12 @@ var Controls = ({ transform, updateStates, zoom, ariaLabelZoomIn, ariaLabelZoomO
1657
1716
  maxValue: 4,
1658
1717
  onChange: adjustZoom,
1659
1718
  value: zoom,
1660
- ariaLabel: ariaLabelZoomSlider
1719
+ ariaLabel: ariaLabelZoomSlider$4
1661
1720
  }),
1662
1721
  /* @__PURE__ */ jsx("button", {
1663
1722
  className: classNames(styles.button),
1664
1723
  onClick: () => zoomIn$1(),
1665
- "aria-label": ariaLabelZoomIn,
1724
+ "aria-label": ariaLabelZoomIn$4,
1666
1725
  children: /* @__PURE__ */ jsx(Icon, {
1667
1726
  svgIcon: PlusSmall,
1668
1727
  color: "white",
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","names":["__assign","ZoomPanPinch","styles","LightBox: React.FC<LightBoxProps>","centerTimeout: number"],"sources":["../../../../../node_modules/react-zoom-pan-pinch/dist/index.esm.js","../../../src/components/LightBox/MiniSlider.tsx","../../../src/components/LightBox/LightBox.tsx","../../../src/components/LightBox/index.ts"],"sourcesContent":["import React, { useRef, useImperativeHandle, useEffect, useContext, useLayoutEffect, useState, useCallback, useMemo } from 'react';\n\n/**\n * Rounds number to given decimal\n * eg. roundNumber(2.34343, 1) => 2.3\n */\nvar roundNumber = function (num, decimal) {\n return Number(num.toFixed(decimal));\n};\n/**\n * Checks if value is number, if not it returns default value\n * 1# eg. checkIsNumber(2, 30) => 2\n * 2# eg. checkIsNumber(null, 30) => 30\n */\nvar checkIsNumber = function (num, defaultValue) {\n return typeof num === \"number\" ? num : defaultValue;\n};\n\nvar handleCallback = function (context, event, callback) {\n if (callback && typeof callback === \"function\") {\n callback(context, event);\n }\n};\n\n/* eslint-disable no-plusplus */\n/* eslint-disable no-param-reassign */\n/**\n * Functions should return denominator of the target value, which is the next animation step.\n * t is a value from 0 to 1, reflecting the percentage of animation status.\n */\nvar easeOut = function (t) {\n return -Math.cos(t * Math.PI) / 2 + 0.5;\n};\n// linear\nvar linear = function (t) {\n return t;\n};\n// accelerating from zero velocity\nvar easeInQuad = function (t) {\n return t * t;\n};\n// decelerating to zero velocity\nvar easeOutQuad = function (t) {\n return t * (2 - t);\n};\n// acceleration until halfway, then deceleration\nvar easeInOutQuad = function (t) {\n return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;\n};\n// accelerating from zero velocity\nvar easeInCubic = function (t) {\n return t * t * t;\n};\n// decelerating to zero velocity\nvar easeOutCubic = function (t) {\n return --t * t * t + 1;\n};\n// acceleration until halfway, then deceleration\nvar easeInOutCubic = function (t) {\n return t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1;\n};\n// accelerating from zero velocity\nvar easeInQuart = function (t) {\n return t * t * t * t;\n};\n// decelerating to zero velocity\nvar easeOutQuart = function (t) {\n return 1 - --t * t * t * t;\n};\n// acceleration until halfway, then deceleration\nvar easeInOutQuart = function (t) {\n return t < 0.5 ? 8 * t * t * t * t : 1 - 8 * --t * t * t * t;\n};\n// accelerating from zero velocity\nvar easeInQuint = function (t) {\n return t * t * t * t * t;\n};\n// decelerating to zero velocity\nvar easeOutQuint = function (t) {\n return 1 + --t * t * t * t * t;\n};\n// acceleration until halfway, then deceleration\nvar easeInOutQuint = function (t) {\n return t < 0.5 ? 16 * t * t * t * t * t : 1 + 16 * --t * t * t * t * t;\n};\nvar animations = {\n easeOut: easeOut,\n linear: linear,\n easeInQuad: easeInQuad,\n easeOutQuad: easeOutQuad,\n easeInOutQuad: easeInOutQuad,\n easeInCubic: easeInCubic,\n easeOutCubic: easeOutCubic,\n easeInOutCubic: easeInOutCubic,\n easeInQuart: easeInQuart,\n easeOutQuart: easeOutQuart,\n easeInOutQuart: easeInOutQuart,\n easeInQuint: easeInQuint,\n easeOutQuint: easeOutQuint,\n easeInOutQuint: easeInOutQuint,\n};\n\n/* eslint-disable no-param-reassign */\nvar handleCancelAnimationFrame = function (animation) {\n if (typeof animation === \"number\") {\n cancelAnimationFrame(animation);\n }\n};\nvar handleCancelAnimation = function (contextInstance) {\n if (!contextInstance.mounted)\n return;\n handleCancelAnimationFrame(contextInstance.animation);\n // Clear animation state\n contextInstance.animate = false;\n contextInstance.animation = null;\n contextInstance.velocity = null;\n};\nfunction handleSetupAnimation(contextInstance, animationName, animationTime, callback) {\n if (!contextInstance.mounted)\n return;\n var startTime = new Date().getTime();\n var lastStep = 1;\n // if another animation is active\n handleCancelAnimation(contextInstance);\n // new animation\n contextInstance.animation = function () {\n if (!contextInstance.mounted) {\n return handleCancelAnimationFrame(contextInstance.animation);\n }\n var frameTime = new Date().getTime() - startTime;\n var animationProgress = frameTime / animationTime;\n var animationType = animations[animationName];\n var step = animationType(animationProgress);\n if (frameTime >= animationTime) {\n callback(lastStep);\n contextInstance.animation = null;\n }\n else if (contextInstance.animation) {\n callback(step);\n requestAnimationFrame(contextInstance.animation);\n }\n };\n requestAnimationFrame(contextInstance.animation);\n}\nfunction isValidTargetState(targetState) {\n var scale = targetState.scale, positionX = targetState.positionX, positionY = targetState.positionY;\n if (Number.isNaN(scale) ||\n Number.isNaN(positionX) ||\n Number.isNaN(positionY)) {\n return false;\n }\n return true;\n}\nfunction animate(contextInstance, targetState, animationTime, animationName) {\n var isValid = isValidTargetState(targetState);\n if (!contextInstance.mounted || !isValid)\n return;\n var setTransformState = contextInstance.setTransformState;\n var _a = contextInstance.transformState, scale = _a.scale, positionX = _a.positionX, positionY = _a.positionY;\n var scaleDiff = targetState.scale - scale;\n var positionXDiff = targetState.positionX - positionX;\n var positionYDiff = targetState.positionY - positionY;\n if (animationTime === 0) {\n setTransformState(targetState.scale, targetState.positionX, targetState.positionY);\n }\n else {\n // animation start timestamp\n handleSetupAnimation(contextInstance, animationName, animationTime, function (step) {\n var newScale = scale + scaleDiff * step;\n var newPositionX = positionX + positionXDiff * step;\n var newPositionY = positionY + positionYDiff * step;\n setTransformState(newScale, newPositionX, newPositionY);\n });\n }\n}\n\n/* eslint-disable no-param-reassign */\nfunction getComponentsSizes(wrapperComponent, contentComponent, newScale) {\n var wrapperWidth = wrapperComponent.offsetWidth;\n var wrapperHeight = wrapperComponent.offsetHeight;\n var contentWidth = contentComponent.offsetWidth;\n var contentHeight = contentComponent.offsetHeight;\n var newContentWidth = contentWidth * newScale;\n var newContentHeight = contentHeight * newScale;\n var newDiffWidth = wrapperWidth - newContentWidth;\n var newDiffHeight = wrapperHeight - newContentHeight;\n return {\n wrapperWidth: wrapperWidth,\n wrapperHeight: wrapperHeight,\n newContentWidth: newContentWidth,\n newDiffWidth: newDiffWidth,\n newContentHeight: newContentHeight,\n newDiffHeight: newDiffHeight,\n };\n}\nvar getBounds = function (wrapperWidth, newContentWidth, diffWidth, wrapperHeight, newContentHeight, diffHeight, centerZoomedOut) {\n var scaleWidthFactor = wrapperWidth > newContentWidth\n ? diffWidth * (centerZoomedOut ? 1 : 0.5)\n : 0;\n var scaleHeightFactor = wrapperHeight > newContentHeight\n ? diffHeight * (centerZoomedOut ? 1 : 0.5)\n : 0;\n var minPositionX = wrapperWidth - newContentWidth - scaleWidthFactor;\n var maxPositionX = scaleWidthFactor;\n var minPositionY = wrapperHeight - newContentHeight - scaleHeightFactor;\n var maxPositionY = scaleHeightFactor;\n return { minPositionX: minPositionX, maxPositionX: maxPositionX, minPositionY: minPositionY, maxPositionY: maxPositionY };\n};\nvar calculateBounds = function (contextInstance, newScale) {\n var wrapperComponent = contextInstance.wrapperComponent, contentComponent = contextInstance.contentComponent;\n var centerZoomedOut = contextInstance.setup.centerZoomedOut;\n if (!wrapperComponent || !contentComponent) {\n throw new Error(\"Components are not mounted\");\n }\n var _a = getComponentsSizes(wrapperComponent, contentComponent, newScale), wrapperWidth = _a.wrapperWidth, wrapperHeight = _a.wrapperHeight, newContentWidth = _a.newContentWidth, newDiffWidth = _a.newDiffWidth, newContentHeight = _a.newContentHeight, newDiffHeight = _a.newDiffHeight;\n var bounds = getBounds(wrapperWidth, newContentWidth, newDiffWidth, wrapperHeight, newContentHeight, newDiffHeight, Boolean(centerZoomedOut));\n return bounds;\n};\n/**\n * Keeps value between given bounds, used for limiting view to given boundaries\n * 1# eg. boundLimiter(2, 0, 3, true) => 2\n * 2# eg. boundLimiter(4, 0, 3, true) => 3\n * 3# eg. boundLimiter(-2, 0, 3, true) => 0\n * 4# eg. boundLimiter(10, 0, 3, false) => 10\n */\nvar boundLimiter = function (value, minBound, maxBound, isActive) {\n if (!isActive)\n return roundNumber(value, 2);\n if (value < minBound)\n return roundNumber(minBound, 2);\n if (value > maxBound)\n return roundNumber(maxBound, 2);\n return roundNumber(value, 2);\n};\nvar handleCalculateBounds = function (contextInstance, newScale) {\n var bounds = calculateBounds(contextInstance, newScale);\n // Save bounds\n contextInstance.bounds = bounds;\n return bounds;\n};\nfunction getMouseBoundedPosition(positionX, positionY, bounds, limitToBounds, paddingValueX, paddingValueY, wrapperComponent) {\n var minPositionX = bounds.minPositionX, minPositionY = bounds.minPositionY, maxPositionX = bounds.maxPositionX, maxPositionY = bounds.maxPositionY;\n var paddingX = 0;\n var paddingY = 0;\n if (wrapperComponent) {\n paddingX = paddingValueX;\n paddingY = paddingValueY;\n }\n var x = boundLimiter(positionX, minPositionX - paddingX, maxPositionX + paddingX, limitToBounds);\n var y = boundLimiter(positionY, minPositionY - paddingY, maxPositionY + paddingY, limitToBounds);\n return { x: x, y: y };\n}\n\nfunction handleCalculateZoomPositions(contextInstance, mouseX, mouseY, newScale, bounds, limitToBounds) {\n var _a = contextInstance.transformState, scale = _a.scale, positionX = _a.positionX, positionY = _a.positionY;\n var scaleDifference = newScale - scale;\n if (typeof mouseX !== \"number\" || typeof mouseY !== \"number\") {\n console.error(\"Mouse X and Y position were not provided!\");\n return { x: positionX, y: positionY };\n }\n var calculatedPositionX = positionX - mouseX * scaleDifference;\n var calculatedPositionY = positionY - mouseY * scaleDifference;\n // do not limit to bounds when there is padding animation,\n // it causes animation strange behaviour\n var newPositions = getMouseBoundedPosition(calculatedPositionX, calculatedPositionY, bounds, limitToBounds, 0, 0, null);\n return newPositions;\n}\nfunction checkZoomBounds(zoom, minScale, maxScale, zoomPadding, enablePadding) {\n var scalePadding = enablePadding ? zoomPadding : 0;\n var minScaleWithPadding = minScale - scalePadding;\n if (!Number.isNaN(maxScale) && zoom >= maxScale)\n return maxScale;\n if (!Number.isNaN(minScale) && zoom <= minScaleWithPadding)\n return minScaleWithPadding;\n return zoom;\n}\n\nvar isPanningStartAllowed = function (contextInstance, event) {\n var excluded = contextInstance.setup.panning.excluded;\n var isInitialized = contextInstance.isInitialized, wrapperComponent = contextInstance.wrapperComponent;\n var target = event.target;\n var targetIsShadowDom = \"shadowRoot\" in target && \"composedPath\" in event;\n var isWrapperChild = targetIsShadowDom\n ? event.composedPath().some(function (el) {\n if (!(el instanceof Element)) {\n return false;\n }\n return wrapperComponent === null || wrapperComponent === void 0 ? void 0 : wrapperComponent.contains(el);\n })\n : wrapperComponent === null || wrapperComponent === void 0 ? void 0 : wrapperComponent.contains(target);\n var isAllowed = isInitialized && target && isWrapperChild;\n if (!isAllowed)\n return false;\n var isExcluded = isExcludedNode(target, excluded);\n if (isExcluded)\n return false;\n return true;\n};\nvar isPanningAllowed = function (contextInstance) {\n var isInitialized = contextInstance.isInitialized, isPanning = contextInstance.isPanning, setup = contextInstance.setup;\n var disabled = setup.panning.disabled;\n var isAllowed = isInitialized && isPanning && !disabled;\n if (!isAllowed)\n return false;\n return true;\n};\nvar handlePanningSetup = function (contextInstance, event) {\n var _a = contextInstance.transformState, positionX = _a.positionX, positionY = _a.positionY;\n contextInstance.isPanning = true;\n // Panning with mouse\n var x = event.clientX;\n var y = event.clientY;\n contextInstance.startCoords = { x: x - positionX, y: y - positionY };\n};\nvar handleTouchPanningSetup = function (contextInstance, event) {\n var touches = event.touches;\n var _a = contextInstance.transformState, positionX = _a.positionX, positionY = _a.positionY;\n contextInstance.isPanning = true;\n // Panning with touch\n var oneFingerTouch = touches.length === 1;\n if (oneFingerTouch) {\n var x = touches[0].clientX;\n var y = touches[0].clientY;\n contextInstance.startCoords = { x: x - positionX, y: y - positionY };\n }\n};\nfunction handlePanToBounds(contextInstance) {\n var _a = contextInstance.transformState, positionX = _a.positionX, positionY = _a.positionY, scale = _a.scale;\n var _b = contextInstance.setup, disabled = _b.disabled, limitToBounds = _b.limitToBounds, centerZoomedOut = _b.centerZoomedOut;\n var wrapperComponent = contextInstance.wrapperComponent;\n if (disabled || !wrapperComponent || !contextInstance.bounds)\n return;\n var _c = contextInstance.bounds, maxPositionX = _c.maxPositionX, minPositionX = _c.minPositionX, maxPositionY = _c.maxPositionY, minPositionY = _c.minPositionY;\n var xChanged = positionX > maxPositionX || positionX < minPositionX;\n var yChanged = positionY > maxPositionY || positionY < minPositionY;\n var mousePosX = positionX > maxPositionX\n ? wrapperComponent.offsetWidth\n : contextInstance.setup.minPositionX || 0;\n var mousePosY = positionY > maxPositionY\n ? wrapperComponent.offsetHeight\n : contextInstance.setup.minPositionY || 0;\n var _d = handleCalculateZoomPositions(contextInstance, mousePosX, mousePosY, scale, contextInstance.bounds, limitToBounds || centerZoomedOut), x = _d.x, y = _d.y;\n return {\n scale: scale,\n positionX: xChanged ? x : positionX,\n positionY: yChanged ? y : positionY,\n };\n}\nfunction handleNewPosition(contextInstance, newPositionX, newPositionY, paddingValueX, paddingValueY) {\n var limitToBounds = contextInstance.setup.limitToBounds;\n var wrapperComponent = contextInstance.wrapperComponent, bounds = contextInstance.bounds;\n var _a = contextInstance.transformState, scale = _a.scale, positionX = _a.positionX, positionY = _a.positionY;\n if (wrapperComponent === null ||\n bounds === null ||\n (newPositionX === positionX && newPositionY === positionY)) {\n return;\n }\n var _b = getMouseBoundedPosition(newPositionX, newPositionY, bounds, limitToBounds, paddingValueX, paddingValueY, wrapperComponent), x = _b.x, y = _b.y;\n contextInstance.setTransformState(scale, x, y);\n}\nvar getPanningClientPosition = function (contextInstance, clientX, clientY) {\n var startCoords = contextInstance.startCoords, transformState = contextInstance.transformState;\n var panning = contextInstance.setup.panning;\n var lockAxisX = panning.lockAxisX, lockAxisY = panning.lockAxisY;\n var positionX = transformState.positionX, positionY = transformState.positionY;\n if (!startCoords) {\n return { x: positionX, y: positionY };\n }\n var mouseX = clientX - startCoords.x;\n var mouseY = clientY - startCoords.y;\n var newPositionX = lockAxisX ? positionX : mouseX;\n var newPositionY = lockAxisY ? positionY : mouseY;\n return { x: newPositionX, y: newPositionY };\n};\nvar getPaddingValue = function (contextInstance, size) {\n var setup = contextInstance.setup, transformState = contextInstance.transformState;\n var scale = transformState.scale;\n var minScale = setup.minScale, disablePadding = setup.disablePadding;\n if (size > 0 && scale >= minScale && !disablePadding) {\n return size;\n }\n return 0;\n};\n\nvar isVelocityCalculationAllowed = function (contextInstance) {\n var mounted = contextInstance.mounted;\n var _a = contextInstance.setup, disabled = _a.disabled, velocityAnimation = _a.velocityAnimation;\n var scale = contextInstance.transformState.scale;\n var disabledVelocity = velocityAnimation.disabled;\n var isAllowed = !disabledVelocity || scale > 1 || !disabled || mounted;\n if (!isAllowed)\n return false;\n return true;\n};\nvar isVelocityAllowed = function (contextInstance) {\n var mounted = contextInstance.mounted, velocity = contextInstance.velocity, bounds = contextInstance.bounds;\n var _a = contextInstance.setup, disabled = _a.disabled, velocityAnimation = _a.velocityAnimation;\n var scale = contextInstance.transformState.scale;\n var disabledVelocity = velocityAnimation.disabled;\n var isAllowed = !disabledVelocity || scale > 1 || !disabled || mounted;\n if (!isAllowed)\n return false;\n if (!velocity || !bounds)\n return false;\n return true;\n};\nfunction getVelocityMoveTime(contextInstance, velocity) {\n var velocityAnimation = contextInstance.setup.velocityAnimation;\n var equalToMove = velocityAnimation.equalToMove, animationTime = velocityAnimation.animationTime, sensitivity = velocityAnimation.sensitivity;\n if (equalToMove) {\n return animationTime * velocity * sensitivity;\n }\n return animationTime;\n}\nfunction getVelocityPosition(newPosition, startPosition, currentPosition, isLocked, limitToBounds, minPosition, maxPosition, minTarget, maxTarget, step) {\n if (limitToBounds) {\n if (startPosition > maxPosition && currentPosition > maxPosition) {\n var calculatedPosition = maxPosition + (newPosition - maxPosition) * step;\n if (calculatedPosition > maxTarget)\n return maxTarget;\n if (calculatedPosition < maxPosition)\n return maxPosition;\n return calculatedPosition;\n }\n if (startPosition < minPosition && currentPosition < minPosition) {\n var calculatedPosition = minPosition + (newPosition - minPosition) * step;\n if (calculatedPosition < minTarget)\n return minTarget;\n if (calculatedPosition > minPosition)\n return minPosition;\n return calculatedPosition;\n }\n }\n if (isLocked)\n return startPosition;\n return boundLimiter(newPosition, minPosition, maxPosition, limitToBounds);\n}\n\nfunction getSizeMultiplier(wrapperComponent, equalToMove) {\n var defaultMultiplier = 1;\n if (equalToMove) {\n return Math.min(defaultMultiplier, wrapperComponent.offsetWidth / window.innerWidth);\n }\n return defaultMultiplier;\n}\nfunction handleCalculateVelocity(contextInstance, position) {\n var isAllowed = isVelocityCalculationAllowed(contextInstance);\n if (!isAllowed) {\n return;\n }\n var lastMousePosition = contextInstance.lastMousePosition, velocityTime = contextInstance.velocityTime, setup = contextInstance.setup;\n var wrapperComponent = contextInstance.wrapperComponent;\n var equalToMove = setup.velocityAnimation.equalToMove;\n var now = Date.now();\n if (lastMousePosition && velocityTime && wrapperComponent) {\n var sizeMultiplier = getSizeMultiplier(wrapperComponent, equalToMove);\n var distanceX = position.x - lastMousePosition.x;\n var distanceY = position.y - lastMousePosition.y;\n var velocityX = distanceX / sizeMultiplier;\n var velocityY = distanceY / sizeMultiplier;\n var interval = now - velocityTime;\n var speed = distanceX * distanceX + distanceY * distanceY;\n var velocity = Math.sqrt(speed) / interval;\n contextInstance.velocity = { velocityX: velocityX, velocityY: velocityY, total: velocity };\n }\n contextInstance.lastMousePosition = position;\n contextInstance.velocityTime = now;\n}\nfunction handleVelocityPanning(contextInstance) {\n var velocity = contextInstance.velocity, bounds = contextInstance.bounds, setup = contextInstance.setup, wrapperComponent = contextInstance.wrapperComponent;\n var isAllowed = isVelocityAllowed(contextInstance);\n if (!isAllowed || !velocity || !bounds || !wrapperComponent) {\n return;\n }\n var velocityX = velocity.velocityX, velocityY = velocity.velocityY, total = velocity.total;\n var maxPositionX = bounds.maxPositionX, minPositionX = bounds.minPositionX, maxPositionY = bounds.maxPositionY, minPositionY = bounds.minPositionY;\n var limitToBounds = setup.limitToBounds, alignmentAnimation = setup.alignmentAnimation;\n var zoomAnimation = setup.zoomAnimation, panning = setup.panning;\n var lockAxisY = panning.lockAxisY, lockAxisX = panning.lockAxisX;\n var animationType = zoomAnimation.animationType;\n var sizeX = alignmentAnimation.sizeX, sizeY = alignmentAnimation.sizeY, velocityAlignmentTime = alignmentAnimation.velocityAlignmentTime;\n var alignAnimationTime = velocityAlignmentTime;\n var moveAnimationTime = getVelocityMoveTime(contextInstance, total);\n var finalAnimationTime = Math.max(moveAnimationTime, alignAnimationTime);\n var paddingValueX = getPaddingValue(contextInstance, sizeX);\n var paddingValueY = getPaddingValue(contextInstance, sizeY);\n var paddingX = (paddingValueX * wrapperComponent.offsetWidth) / 100;\n var paddingY = (paddingValueY * wrapperComponent.offsetHeight) / 100;\n var maxTargetX = maxPositionX + paddingX;\n var minTargetX = minPositionX - paddingX;\n var maxTargetY = maxPositionY + paddingY;\n var minTargetY = minPositionY - paddingY;\n var startState = contextInstance.transformState;\n var startTime = new Date().getTime();\n handleSetupAnimation(contextInstance, animationType, finalAnimationTime, function (step) {\n var _a = contextInstance.transformState, scale = _a.scale, positionX = _a.positionX, positionY = _a.positionY;\n var frameTime = new Date().getTime() - startTime;\n var animationProgress = frameTime / alignAnimationTime;\n var alignAnimation = animations[alignmentAnimation.animationType];\n var alignStep = 1 - alignAnimation(Math.min(1, animationProgress));\n var customStep = 1 - step;\n var newPositionX = positionX + velocityX * customStep;\n var newPositionY = positionY + velocityY * customStep;\n var currentPositionX = getVelocityPosition(newPositionX, startState.positionX, positionX, lockAxisX, limitToBounds, minPositionX, maxPositionX, minTargetX, maxTargetX, alignStep);\n var currentPositionY = getVelocityPosition(newPositionY, startState.positionY, positionY, lockAxisY, limitToBounds, minPositionY, maxPositionY, minTargetY, maxTargetY, alignStep);\n if (positionX !== newPositionX || positionY !== newPositionY) {\n contextInstance.setTransformState(scale, currentPositionX, currentPositionY);\n }\n });\n}\n\nfunction handlePanningStart(contextInstance, event) {\n var scale = contextInstance.transformState.scale;\n handleCancelAnimation(contextInstance);\n handleCalculateBounds(contextInstance, scale);\n if (window.TouchEvent !== undefined && event instanceof TouchEvent) {\n handleTouchPanningSetup(contextInstance, event);\n }\n else {\n handlePanningSetup(contextInstance, event);\n }\n}\nfunction handleAlignToBounds(contextInstance, customAnimationTime) {\n var scale = contextInstance.transformState.scale;\n var _a = contextInstance.setup, minScale = _a.minScale, alignmentAnimation = _a.alignmentAnimation;\n var disabled = alignmentAnimation.disabled, sizeX = alignmentAnimation.sizeX, sizeY = alignmentAnimation.sizeY, animationTime = alignmentAnimation.animationTime, animationType = alignmentAnimation.animationType;\n var isDisabled = disabled || scale < minScale || (!sizeX && !sizeY);\n if (isDisabled)\n return;\n var targetState = handlePanToBounds(contextInstance);\n if (targetState) {\n animate(contextInstance, targetState, customAnimationTime !== null && customAnimationTime !== void 0 ? customAnimationTime : animationTime, animationType);\n }\n}\nfunction handlePanning(contextInstance, clientX, clientY) {\n var startCoords = contextInstance.startCoords, setup = contextInstance.setup;\n var _a = setup.alignmentAnimation, sizeX = _a.sizeX, sizeY = _a.sizeY;\n if (!startCoords)\n return;\n var _b = getPanningClientPosition(contextInstance, clientX, clientY), x = _b.x, y = _b.y;\n var paddingValueX = getPaddingValue(contextInstance, sizeX);\n var paddingValueY = getPaddingValue(contextInstance, sizeY);\n handleCalculateVelocity(contextInstance, { x: x, y: y });\n handleNewPosition(contextInstance, x, y, paddingValueX, paddingValueY);\n}\nfunction handlePanningEnd(contextInstance) {\n if (contextInstance.isPanning) {\n var velocityDisabled = contextInstance.setup.panning.velocityDisabled;\n var velocity = contextInstance.velocity, wrapperComponent = contextInstance.wrapperComponent, contentComponent = contextInstance.contentComponent;\n contextInstance.isPanning = false;\n contextInstance.animate = false;\n contextInstance.animation = null;\n var wrapperRect = wrapperComponent === null || wrapperComponent === void 0 ? void 0 : wrapperComponent.getBoundingClientRect();\n var contentRect = contentComponent === null || contentComponent === void 0 ? void 0 : contentComponent.getBoundingClientRect();\n var wrapperWidth = (wrapperRect === null || wrapperRect === void 0 ? void 0 : wrapperRect.width) || 0;\n var wrapperHeight = (wrapperRect === null || wrapperRect === void 0 ? void 0 : wrapperRect.height) || 0;\n var contentWidth = (contentRect === null || contentRect === void 0 ? void 0 : contentRect.width) || 0;\n var contentHeight = (contentRect === null || contentRect === void 0 ? void 0 : contentRect.height) || 0;\n var isZoomed = wrapperWidth < contentWidth || wrapperHeight < contentHeight;\n var shouldAnimate = !velocityDisabled && velocity && (velocity === null || velocity === void 0 ? void 0 : velocity.total) > 0.1 && isZoomed;\n if (shouldAnimate) {\n handleVelocityPanning(contextInstance);\n }\n else {\n handleAlignToBounds(contextInstance);\n }\n }\n}\n\nfunction handleZoomToPoint(contextInstance, scale, mouseX, mouseY) {\n var _a = contextInstance.setup, minScale = _a.minScale, maxScale = _a.maxScale, limitToBounds = _a.limitToBounds;\n var newScale = checkZoomBounds(roundNumber(scale, 2), minScale, maxScale, 0, false);\n var bounds = handleCalculateBounds(contextInstance, newScale);\n var _b = handleCalculateZoomPositions(contextInstance, mouseX, mouseY, newScale, bounds, limitToBounds), x = _b.x, y = _b.y;\n return { scale: newScale, positionX: x, positionY: y };\n}\nfunction handleAlignToScaleBounds(contextInstance, mousePositionX, mousePositionY) {\n var scale = contextInstance.transformState.scale;\n var wrapperComponent = contextInstance.wrapperComponent;\n var _a = contextInstance.setup, minScale = _a.minScale, limitToBounds = _a.limitToBounds, zoomAnimation = _a.zoomAnimation;\n var disabled = zoomAnimation.disabled, animationTime = zoomAnimation.animationTime, animationType = zoomAnimation.animationType;\n var isDisabled = disabled || scale >= minScale;\n if (scale >= 1 || limitToBounds) {\n // fire fit to bounds animation\n handleAlignToBounds(contextInstance);\n }\n if (isDisabled || !wrapperComponent || !contextInstance.mounted)\n return;\n var mouseX = mousePositionX || wrapperComponent.offsetWidth / 2;\n var mouseY = mousePositionY || wrapperComponent.offsetHeight / 2;\n var targetState = handleZoomToPoint(contextInstance, minScale, mouseX, mouseY);\n if (targetState) {\n animate(contextInstance, targetState, animationTime, animationType);\n }\n}\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\nvar initialState = {\n previousScale: 1,\n scale: 1,\n positionX: 0,\n positionY: 0,\n};\nvar initialSetup = {\n disabled: false,\n minPositionX: null,\n maxPositionX: null,\n minPositionY: null,\n maxPositionY: null,\n minScale: 1,\n maxScale: 8,\n limitToBounds: true,\n centerZoomedOut: false,\n centerOnInit: false,\n disablePadding: false,\n smooth: true,\n wheel: {\n step: 0.2,\n disabled: false,\n smoothStep: 0.001,\n wheelDisabled: false,\n touchPadDisabled: false,\n activationKeys: [],\n excluded: [],\n },\n panning: {\n disabled: false,\n velocityDisabled: false,\n lockAxisX: false,\n lockAxisY: false,\n allowLeftClickPan: true,\n allowMiddleClickPan: true,\n allowRightClickPan: true,\n wheelPanning: false,\n activationKeys: [],\n excluded: [],\n },\n pinch: {\n step: 5,\n disabled: false,\n excluded: [],\n },\n doubleClick: {\n disabled: false,\n step: 0.7,\n mode: \"zoomIn\",\n animationType: \"easeOut\",\n animationTime: 200,\n excluded: [],\n },\n zoomAnimation: {\n disabled: false,\n size: 0.4,\n animationTime: 200,\n animationType: \"easeOut\",\n },\n alignmentAnimation: {\n disabled: false,\n sizeX: 100,\n sizeY: 100,\n animationTime: 200,\n velocityAlignmentTime: 400,\n animationType: \"easeOut\",\n },\n velocityAnimation: {\n disabled: false,\n sensitivity: 1,\n animationTime: 400,\n animationType: \"easeOut\",\n equalToMove: true,\n },\n};\nvar baseClasses = {\n wrapperClass: \"react-transform-wrapper\",\n contentClass: \"react-transform-component\",\n};\n\nvar createState = function (props) {\n var _a, _b, _c, _d;\n return {\n previousScale: (_a = props.initialScale) !== null && _a !== void 0 ? _a : initialState.scale,\n scale: (_b = props.initialScale) !== null && _b !== void 0 ? _b : initialState.scale,\n positionX: (_c = props.initialPositionX) !== null && _c !== void 0 ? _c : initialState.positionX,\n positionY: (_d = props.initialPositionY) !== null && _d !== void 0 ? _d : initialState.positionY,\n };\n};\nvar createSetup = function (props) {\n var newSetup = __assign({}, initialSetup);\n Object.keys(props).forEach(function (key) {\n var validValue = typeof props[key] !== \"undefined\";\n var validParameter = typeof initialSetup[key] !== \"undefined\";\n if (validParameter && validValue) {\n var dataType = Object.prototype.toString.call(initialSetup[key]);\n var isObject = dataType === \"[object Object]\";\n var isArray = dataType === \"[object Array]\";\n if (isObject) {\n newSetup[key] = __assign(__assign({}, initialSetup[key]), props[key]);\n }\n else if (isArray) {\n newSetup[key] = __spreadArray(__spreadArray([], initialSetup[key], true), props[key], true);\n }\n else {\n newSetup[key] = props[key];\n }\n }\n });\n return newSetup;\n};\n\nvar handleCalculateButtonZoom = function (contextInstance, delta, step) {\n var scale = contextInstance.transformState.scale;\n var wrapperComponent = contextInstance.wrapperComponent, setup = contextInstance.setup;\n var maxScale = setup.maxScale, minScale = setup.minScale, zoomAnimation = setup.zoomAnimation, smooth = setup.smooth;\n var size = zoomAnimation.size;\n if (!wrapperComponent) {\n throw new Error(\"Wrapper is not mounted\");\n }\n var targetScale = smooth\n ? scale * Math.exp(delta * step)\n : scale + delta * step;\n var newScale = checkZoomBounds(roundNumber(targetScale, 3), minScale, maxScale, size, false);\n return newScale;\n};\nfunction handleZoomToViewCenter(contextInstance, delta, step, animationTime, animationType) {\n var wrapperComponent = contextInstance.wrapperComponent;\n var _a = contextInstance.transformState, scale = _a.scale, positionX = _a.positionX, positionY = _a.positionY;\n if (!wrapperComponent)\n return console.error(\"No WrapperComponent found\");\n var wrapperWidth = wrapperComponent.offsetWidth;\n var wrapperHeight = wrapperComponent.offsetHeight;\n var mouseX = (wrapperWidth / 2 - positionX) / scale;\n var mouseY = (wrapperHeight / 2 - positionY) / scale;\n var newScale = handleCalculateButtonZoom(contextInstance, delta, step);\n var targetState = handleZoomToPoint(contextInstance, newScale, mouseX, mouseY);\n if (!targetState) {\n return console.error(\"Error during zoom event. New transformation state was not calculated.\");\n }\n animate(contextInstance, targetState, animationTime, animationType);\n}\nfunction resetTransformations(contextInstance, animationTime, animationType, onResetTransformation) {\n var setup = contextInstance.setup, wrapperComponent = contextInstance.wrapperComponent;\n var limitToBounds = setup.limitToBounds;\n var initialTransformation = createState(contextInstance.props);\n var _a = contextInstance.transformState, scale = _a.scale, positionX = _a.positionX, positionY = _a.positionY;\n if (!wrapperComponent)\n return;\n var newBounds = calculateBounds(contextInstance, initialTransformation.scale);\n var boundedPositions = getMouseBoundedPosition(initialTransformation.positionX, initialTransformation.positionY, newBounds, limitToBounds, 0, 0, wrapperComponent);\n var newState = {\n scale: initialTransformation.scale,\n positionX: boundedPositions.x,\n positionY: boundedPositions.y,\n };\n if (scale === initialTransformation.scale &&\n positionX === initialTransformation.positionX &&\n positionY === initialTransformation.positionY) {\n return;\n }\n onResetTransformation === null || onResetTransformation === void 0 ? void 0 : onResetTransformation();\n animate(contextInstance, newState, animationTime, animationType);\n}\nfunction getOffset(element, wrapper, content, state) {\n var offset = element.getBoundingClientRect();\n var wrapperOffset = wrapper.getBoundingClientRect();\n var contentOffset = content.getBoundingClientRect();\n var xOff = wrapperOffset.x * state.scale;\n var yOff = wrapperOffset.y * state.scale;\n return {\n x: (offset.x - contentOffset.x + xOff) / state.scale,\n y: (offset.y - contentOffset.y + yOff) / state.scale,\n };\n}\nfunction calculateZoomToNode(contextInstance, node, customZoom) {\n var wrapperComponent = contextInstance.wrapperComponent, contentComponent = contextInstance.contentComponent, transformState = contextInstance.transformState;\n var _a = contextInstance.setup, limitToBounds = _a.limitToBounds, minScale = _a.minScale, maxScale = _a.maxScale;\n if (!wrapperComponent || !contentComponent)\n return transformState;\n var wrapperRect = wrapperComponent.getBoundingClientRect();\n var nodeRect = node.getBoundingClientRect();\n var nodeOffset = getOffset(node, wrapperComponent, contentComponent, transformState);\n var nodeLeft = nodeOffset.x;\n var nodeTop = nodeOffset.y;\n var nodeWidth = nodeRect.width / transformState.scale;\n var nodeHeight = nodeRect.height / transformState.scale;\n var scaleX = wrapperComponent.offsetWidth / nodeWidth;\n var scaleY = wrapperComponent.offsetHeight / nodeHeight;\n var newScale = checkZoomBounds(customZoom || Math.min(scaleX, scaleY), minScale, maxScale, 0, false);\n var offsetX = (wrapperRect.width - nodeWidth * newScale) / 2;\n var offsetY = (wrapperRect.height - nodeHeight * newScale) / 2;\n var newPositionX = (wrapperRect.left - nodeLeft) * newScale + offsetX;\n var newPositionY = (wrapperRect.top - nodeTop) * newScale + offsetY;\n var bounds = calculateBounds(contextInstance, newScale);\n var _b = getMouseBoundedPosition(newPositionX, newPositionY, bounds, limitToBounds, 0, 0, wrapperComponent), x = _b.x, y = _b.y;\n return { positionX: x, positionY: y, scale: newScale };\n}\n\nvar zoomIn = function (contextInstance) {\n return function (step, animationTime, animationType) {\n if (step === void 0) { step = 0.5; }\n if (animationTime === void 0) { animationTime = 300; }\n if (animationType === void 0) { animationType = \"easeOut\"; }\n handleZoomToViewCenter(contextInstance, 1, step, animationTime, animationType);\n };\n};\nvar zoomOut = function (contextInstance) {\n return function (step, animationTime, animationType) {\n if (step === void 0) { step = 0.5; }\n if (animationTime === void 0) { animationTime = 300; }\n if (animationType === void 0) { animationType = \"easeOut\"; }\n handleZoomToViewCenter(contextInstance, -1, step, animationTime, animationType);\n };\n};\nvar setTransform = function (contextInstance) {\n return function (newPositionX, newPositionY, newScale, animationTime, animationType) {\n if (animationTime === void 0) { animationTime = 300; }\n if (animationType === void 0) { animationType = \"easeOut\"; }\n var _a = contextInstance.transformState, positionX = _a.positionX, positionY = _a.positionY, scale = _a.scale;\n var wrapperComponent = contextInstance.wrapperComponent, contentComponent = contextInstance.contentComponent;\n var disabled = contextInstance.setup.disabled;\n if (disabled || !wrapperComponent || !contentComponent)\n return;\n var targetState = {\n positionX: Number.isNaN(newPositionX) ? positionX : newPositionX,\n positionY: Number.isNaN(newPositionY) ? positionY : newPositionY,\n scale: Number.isNaN(newScale) ? scale : newScale,\n };\n animate(contextInstance, targetState, animationTime, animationType);\n };\n};\nvar resetTransform = function (contextInstance) {\n return function (animationTime, animationType) {\n if (animationTime === void 0) { animationTime = 200; }\n if (animationType === void 0) { animationType = \"easeOut\"; }\n resetTransformations(contextInstance, animationTime, animationType);\n };\n};\nvar centerView = function (contextInstance) {\n return function (scale, animationTime, animationType) {\n if (animationTime === void 0) { animationTime = 200; }\n if (animationType === void 0) { animationType = \"easeOut\"; }\n var transformState = contextInstance.transformState, wrapperComponent = contextInstance.wrapperComponent, contentComponent = contextInstance.contentComponent;\n if (wrapperComponent && contentComponent) {\n var targetState = getCenterPosition(scale || transformState.scale, wrapperComponent, contentComponent);\n animate(contextInstance, targetState, animationTime, animationType);\n }\n };\n};\nvar zoomToElement = function (contextInstance) {\n return function (node, scale, animationTime, animationType) {\n if (animationTime === void 0) { animationTime = 600; }\n if (animationType === void 0) { animationType = \"easeOut\"; }\n handleCancelAnimation(contextInstance);\n var wrapperComponent = contextInstance.wrapperComponent;\n var target = typeof node === \"string\" ? document.getElementById(node) : node;\n if (wrapperComponent && target && wrapperComponent.contains(target)) {\n var targetState = calculateZoomToNode(contextInstance, target, scale);\n animate(contextInstance, targetState, animationTime, animationType);\n }\n };\n};\n\nvar getControls = function (contextInstance) {\n return {\n instance: contextInstance,\n zoomIn: zoomIn(contextInstance),\n zoomOut: zoomOut(contextInstance),\n setTransform: setTransform(contextInstance),\n resetTransform: resetTransform(contextInstance),\n centerView: centerView(contextInstance),\n zoomToElement: zoomToElement(contextInstance),\n };\n};\nvar getState = function (contextInstance) {\n return {\n instance: contextInstance,\n state: contextInstance.transformState,\n };\n};\nvar getContext = function (contextInstance) {\n var ref = {};\n Object.assign(ref, getState(contextInstance));\n Object.assign(ref, getControls(contextInstance));\n return ref;\n};\n\n// We want to make event listeners non-passive, and to do so have to check\n// that browsers support EventListenerOptions in the first place.\n// https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\nvar passiveSupported = false;\nfunction makePassiveEventOption() {\n try {\n var options = {\n get passive() {\n // This function will be called when the browser\n // attempts to access the passive property.\n passiveSupported = true;\n return false;\n },\n };\n return options;\n }\n catch (err) {\n passiveSupported = false;\n return passiveSupported;\n }\n}\n\nvar matchPrefix = \".\".concat(baseClasses.wrapperClass);\nvar isExcludedNode = function (node, excluded) {\n return excluded.some(function (exclude) {\n return node.matches(\"\".concat(matchPrefix, \" \").concat(exclude, \", \").concat(matchPrefix, \" .\").concat(exclude, \", \").concat(matchPrefix, \" \").concat(exclude, \" *, \").concat(matchPrefix, \" .\").concat(exclude, \" *\"));\n });\n};\nvar cancelTimeout = function (timeout) {\n if (timeout) {\n clearTimeout(timeout);\n }\n};\n\nvar getTransformStyles = function (x, y, scale) {\n // Standard translate prevents blurry svg on the safari\n return \"translate(\".concat(x, \"px, \").concat(y, \"px) scale(\").concat(scale, \")\");\n};\nvar getMatrixTransformStyles = function (x, y, scale) {\n // The shorthand for matrix does not work for Safari hence the need to explicitly use matrix3d\n // Refer to https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/matrix\n var a = scale;\n var b = 0;\n var c = 0;\n var d = scale;\n var tx = x;\n var ty = y;\n return \"matrix3d(\".concat(a, \", \").concat(b, \", 0, 0, \").concat(c, \", \").concat(d, \", 0, 0, 0, 0, 1, 0, \").concat(tx, \", \").concat(ty, \", 0, 1)\");\n};\nvar getCenterPosition = function (scale, wrapperComponent, contentComponent) {\n var contentWidth = contentComponent.offsetWidth * scale;\n var contentHeight = contentComponent.offsetHeight * scale;\n var centerPositionX = (wrapperComponent.offsetWidth - contentWidth) / 2;\n var centerPositionY = (wrapperComponent.offsetHeight - contentHeight) / 2;\n return {\n scale: scale,\n positionX: centerPositionX,\n positionY: centerPositionY,\n };\n};\n\nfunction mergeRefs(refs) {\n return function (value) {\n refs.forEach(function (ref) {\n if (typeof ref === \"function\") {\n ref(value);\n }\n else if (ref != null) {\n ref.current = value;\n }\n });\n };\n}\n\nvar isWheelAllowed = function (contextInstance, event) {\n var _a = contextInstance.setup.wheel, disabled = _a.disabled, wheelDisabled = _a.wheelDisabled, touchPadDisabled = _a.touchPadDisabled, excluded = _a.excluded;\n var isInitialized = contextInstance.isInitialized, isPanning = contextInstance.isPanning;\n var target = event.target;\n var isAllowed = isInitialized && !isPanning && !disabled && target;\n if (!isAllowed)\n return false;\n // Event ctrlKey detects if touchpad action is executing wheel or pinch gesture\n if (wheelDisabled && !event.ctrlKey)\n return false;\n if (touchPadDisabled && event.ctrlKey)\n return false;\n var isExcluded = isExcludedNode(target, excluded);\n if (isExcluded)\n return false;\n return true;\n};\nvar getDeltaY = function (event) {\n if (event) {\n return event.deltaY < 0 ? 1 : -1;\n }\n return 0;\n};\nfunction getDelta(event, customDelta) {\n var deltaY = getDeltaY(event);\n var delta = checkIsNumber(customDelta, deltaY);\n return delta;\n}\nfunction getMousePosition(event, contentComponent, scale) {\n var contentRect = contentComponent.getBoundingClientRect();\n var mouseX = 0;\n var mouseY = 0;\n if (\"clientX\" in event) {\n // mouse position x, y over wrapper component\n mouseX = (event.clientX - contentRect.left) / scale;\n mouseY = (event.clientY - contentRect.top) / scale;\n }\n else {\n var touch = event.touches[0];\n mouseX = (touch.clientX - contentRect.left) / scale;\n mouseY = (touch.clientY - contentRect.top) / scale;\n }\n if (Number.isNaN(mouseX) || Number.isNaN(mouseY))\n console.error(\"No mouse or touch offset found\");\n return {\n x: mouseX,\n y: mouseY,\n };\n}\nvar handleCalculateWheelZoom = function (contextInstance, delta, step, disable, getTarget) {\n var scale = contextInstance.transformState.scale;\n var wrapperComponent = contextInstance.wrapperComponent, setup = contextInstance.setup;\n var maxScale = setup.maxScale, minScale = setup.minScale, zoomAnimation = setup.zoomAnimation, disablePadding = setup.disablePadding;\n var size = zoomAnimation.size, disabled = zoomAnimation.disabled;\n if (!wrapperComponent) {\n throw new Error(\"Wrapper is not mounted\");\n }\n var targetScale = scale + delta * step;\n if (getTarget)\n return targetScale;\n var paddingEnabled = disable ? false : !disabled;\n var newScale = checkZoomBounds(roundNumber(targetScale, 3), minScale, maxScale, size, paddingEnabled && !disablePadding);\n return newScale;\n};\nvar handleWheelZoomStop = function (contextInstance, event) {\n var previousWheelEvent = contextInstance.previousWheelEvent;\n var scale = contextInstance.transformState.scale;\n var _a = contextInstance.setup, maxScale = _a.maxScale, minScale = _a.minScale;\n if (!previousWheelEvent)\n return false;\n if (scale < maxScale || scale > minScale)\n return true;\n if (Math.sign(previousWheelEvent.deltaY) !== Math.sign(event.deltaY))\n return true;\n if (previousWheelEvent.deltaY > 0 && previousWheelEvent.deltaY < event.deltaY)\n return true;\n if (previousWheelEvent.deltaY < 0 && previousWheelEvent.deltaY > event.deltaY)\n return true;\n if (Math.sign(previousWheelEvent.deltaY) !== Math.sign(event.deltaY))\n return true;\n return false;\n};\n\nvar isPinchStartAllowed = function (contextInstance, event) {\n var _a = contextInstance.setup.pinch, disabled = _a.disabled, excluded = _a.excluded;\n var isInitialized = contextInstance.isInitialized;\n var target = event.target;\n var isAllowed = isInitialized && !disabled && target;\n if (!isAllowed)\n return false;\n var isExcluded = isExcludedNode(target, excluded);\n if (isExcluded)\n return false;\n return true;\n};\nvar isPinchAllowed = function (contextInstance) {\n var disabled = contextInstance.setup.pinch.disabled;\n var isInitialized = contextInstance.isInitialized, pinchStartDistance = contextInstance.pinchStartDistance;\n var isAllowed = isInitialized && !disabled && pinchStartDistance;\n if (!isAllowed)\n return false;\n return true;\n};\nvar calculateTouchMidPoint = function (event, scale, contentComponent) {\n var contentRect = contentComponent.getBoundingClientRect();\n var touches = event.touches;\n var firstPointX = roundNumber(touches[0].clientX - contentRect.left, 5);\n var firstPointY = roundNumber(touches[0].clientY - contentRect.top, 5);\n var secondPointX = roundNumber(touches[1].clientX - contentRect.left, 5);\n var secondPointY = roundNumber(touches[1].clientY - contentRect.top, 5);\n return {\n x: (firstPointX + secondPointX) / 2 / scale,\n y: (firstPointY + secondPointY) / 2 / scale,\n };\n};\nvar getTouchDistance = function (event) {\n return Math.sqrt(Math.pow((event.touches[0].pageX - event.touches[1].pageX), 2) +\n Math.pow((event.touches[0].pageY - event.touches[1].pageY), 2));\n};\nvar calculatePinchZoom = function (contextInstance, currentDistance) {\n var pinchStartScale = contextInstance.pinchStartScale, pinchStartDistance = contextInstance.pinchStartDistance, setup = contextInstance.setup;\n var maxScale = setup.maxScale, minScale = setup.minScale, zoomAnimation = setup.zoomAnimation, disablePadding = setup.disablePadding;\n var size = zoomAnimation.size, disabled = zoomAnimation.disabled;\n if (!pinchStartScale || pinchStartDistance === null || !currentDistance) {\n throw new Error(\"Pinch touches distance was not provided\");\n }\n if (currentDistance < 0) {\n return contextInstance.transformState.scale;\n }\n var touchProportion = currentDistance / pinchStartDistance;\n var scaleDifference = touchProportion * pinchStartScale;\n return checkZoomBounds(roundNumber(scaleDifference, 2), minScale, maxScale, size, !disabled && !disablePadding);\n};\n\nvar wheelStopEventTime = 160;\nvar wheelAnimationTime = 100;\nvar handleWheelStart = function (contextInstance, event) {\n var _a = contextInstance.props, onWheelStart = _a.onWheelStart, onZoomStart = _a.onZoomStart;\n if (!contextInstance.wheelStopEventTimer) {\n handleCancelAnimation(contextInstance);\n handleCallback(getContext(contextInstance), event, onWheelStart);\n handleCallback(getContext(contextInstance), event, onZoomStart);\n }\n};\nvar handleWheelZoom = function (contextInstance, event) {\n var _a = contextInstance.props, onWheel = _a.onWheel, onZoom = _a.onZoom;\n var contentComponent = contextInstance.contentComponent, setup = contextInstance.setup, transformState = contextInstance.transformState;\n var scale = transformState.scale;\n var limitToBounds = setup.limitToBounds, centerZoomedOut = setup.centerZoomedOut, zoomAnimation = setup.zoomAnimation, wheel = setup.wheel, disablePadding = setup.disablePadding, smooth = setup.smooth;\n var size = zoomAnimation.size, disabled = zoomAnimation.disabled;\n var step = wheel.step, smoothStep = wheel.smoothStep;\n if (!contentComponent) {\n throw new Error(\"Component not mounted\");\n }\n event.preventDefault();\n event.stopPropagation();\n var delta = getDelta(event, null);\n var zoomStep = smooth ? smoothStep * Math.abs(event.deltaY) : step;\n var newScale = handleCalculateWheelZoom(contextInstance, delta, zoomStep, !event.ctrlKey);\n // if scale not change\n if (scale === newScale)\n return;\n var bounds = handleCalculateBounds(contextInstance, newScale);\n var mousePosition = getMousePosition(event, contentComponent, scale);\n var isPaddingDisabled = disabled || size === 0 || centerZoomedOut || disablePadding;\n var isLimitedToBounds = limitToBounds && isPaddingDisabled;\n var _b = handleCalculateZoomPositions(contextInstance, mousePosition.x, mousePosition.y, newScale, bounds, isLimitedToBounds), x = _b.x, y = _b.y;\n contextInstance.previousWheelEvent = event;\n contextInstance.setTransformState(newScale, x, y);\n handleCallback(getContext(contextInstance), event, onWheel);\n handleCallback(getContext(contextInstance), event, onZoom);\n};\nvar handleWheelStop = function (contextInstance, event) {\n var _a = contextInstance.props, onWheelStop = _a.onWheelStop, onZoomStop = _a.onZoomStop;\n // fire animation\n cancelTimeout(contextInstance.wheelAnimationTimer);\n contextInstance.wheelAnimationTimer = setTimeout(function () {\n if (!contextInstance.mounted)\n return;\n handleAlignToScaleBounds(contextInstance, event.x, event.y);\n contextInstance.wheelAnimationTimer = null;\n }, wheelAnimationTime);\n // Wheel stop event\n var hasStoppedZooming = handleWheelZoomStop(contextInstance, event);\n if (hasStoppedZooming) {\n cancelTimeout(contextInstance.wheelStopEventTimer);\n contextInstance.wheelStopEventTimer = setTimeout(function () {\n if (!contextInstance.mounted)\n return;\n contextInstance.wheelStopEventTimer = null;\n handleCallback(getContext(contextInstance), event, onWheelStop);\n handleCallback(getContext(contextInstance), event, onZoomStop);\n }, wheelStopEventTime);\n }\n};\n\nvar getTouchCenter = function (event) {\n var totalX = 0;\n var totalY = 0;\n // Sum up the positions of all touches\n for (var i = 0; i < 2; i += 1) {\n totalX += event.touches[i].clientX;\n totalY += event.touches[i].clientY;\n }\n // Calculate the average position\n var x = totalX / 2;\n var y = totalY / 2;\n return { x: x, y: y };\n};\nvar handlePinchStart = function (contextInstance, event) {\n var distance = getTouchDistance(event);\n contextInstance.pinchStartDistance = distance;\n contextInstance.lastDistance = distance;\n contextInstance.pinchStartScale = contextInstance.transformState.scale;\n contextInstance.isPanning = false;\n var center = getTouchCenter(event);\n contextInstance.pinchLastCenterX = center.x;\n contextInstance.pinchLastCenterY = center.y;\n handleCancelAnimation(contextInstance);\n};\nvar handlePinchZoom = function (contextInstance, event) {\n var contentComponent = contextInstance.contentComponent, pinchStartDistance = contextInstance.pinchStartDistance, wrapperComponent = contextInstance.wrapperComponent;\n var scale = contextInstance.transformState.scale;\n var _a = contextInstance.setup, limitToBounds = _a.limitToBounds, centerZoomedOut = _a.centerZoomedOut, zoomAnimation = _a.zoomAnimation, alignmentAnimation = _a.alignmentAnimation;\n var disabled = zoomAnimation.disabled, size = zoomAnimation.size;\n // if one finger starts from outside of wrapper\n if (pinchStartDistance === null || !contentComponent)\n return;\n var midPoint = calculateTouchMidPoint(event, scale, contentComponent);\n // if touches goes off of the wrapper element\n if (!Number.isFinite(midPoint.x) || !Number.isFinite(midPoint.y))\n return;\n var currentDistance = getTouchDistance(event);\n var newScale = calculatePinchZoom(contextInstance, currentDistance);\n var center = getTouchCenter(event);\n // pan should be scale invariant.\n var panX = center.x - (contextInstance.pinchLastCenterX || 0);\n var panY = center.y - (contextInstance.pinchLastCenterY || 0);\n if (newScale === scale && panX === 0 && panY === 0)\n return;\n contextInstance.pinchLastCenterX = center.x;\n contextInstance.pinchLastCenterY = center.y;\n var bounds = handleCalculateBounds(contextInstance, newScale);\n var isPaddingDisabled = disabled || size === 0 || centerZoomedOut;\n var isLimitedToBounds = limitToBounds && isPaddingDisabled;\n var _b = handleCalculateZoomPositions(contextInstance, midPoint.x, midPoint.y, newScale, bounds, isLimitedToBounds), x = _b.x, y = _b.y;\n contextInstance.pinchMidpoint = midPoint;\n contextInstance.lastDistance = currentDistance;\n var sizeX = alignmentAnimation.sizeX, sizeY = alignmentAnimation.sizeY;\n var paddingValueX = getPaddingValue(contextInstance, sizeX);\n var paddingValueY = getPaddingValue(contextInstance, sizeY);\n var newPositionX = x + panX;\n var newPositionY = y + panY;\n var _c = getMouseBoundedPosition(newPositionX, newPositionY, bounds, limitToBounds, paddingValueX, paddingValueY, wrapperComponent), finalX = _c.x, finalY = _c.y;\n contextInstance.setTransformState(newScale, finalX, finalY);\n};\nvar handlePinchStop = function (contextInstance) {\n var pinchMidpoint = contextInstance.pinchMidpoint;\n contextInstance.velocity = null;\n contextInstance.lastDistance = null;\n contextInstance.pinchMidpoint = null;\n contextInstance.pinchStartScale = null;\n contextInstance.pinchStartDistance = null;\n handleAlignToScaleBounds(contextInstance, pinchMidpoint === null || pinchMidpoint === void 0 ? void 0 : pinchMidpoint.x, pinchMidpoint === null || pinchMidpoint === void 0 ? void 0 : pinchMidpoint.y);\n};\n\nvar handleDoubleClickStop = function (contextInstance, event) {\n var onZoomStop = contextInstance.props.onZoomStop;\n var animationTime = contextInstance.setup.doubleClick.animationTime;\n cancelTimeout(contextInstance.doubleClickStopEventTimer);\n contextInstance.doubleClickStopEventTimer = setTimeout(function () {\n contextInstance.doubleClickStopEventTimer = null;\n handleCallback(getContext(contextInstance), event, onZoomStop);\n }, animationTime);\n};\nvar handleDoubleClickResetMode = function (contextInstance, event) {\n var _a = contextInstance.props, onZoomStart = _a.onZoomStart, onZoom = _a.onZoom;\n var _b = contextInstance.setup.doubleClick, animationTime = _b.animationTime, animationType = _b.animationType;\n handleCallback(getContext(contextInstance), event, onZoomStart);\n resetTransformations(contextInstance, animationTime, animationType, function () {\n return handleCallback(getContext(contextInstance), event, onZoom);\n });\n handleDoubleClickStop(contextInstance, event);\n};\nfunction getDoubleClickScale(mode, scale) {\n if (mode === \"toggle\") {\n return scale === 1 ? 1 : -1;\n }\n return mode === \"zoomOut\" ? -1 : 1;\n}\nfunction handleDoubleClick(contextInstance, event) {\n var setup = contextInstance.setup, doubleClickStopEventTimer = contextInstance.doubleClickStopEventTimer, transformState = contextInstance.transformState, contentComponent = contextInstance.contentComponent;\n var scale = transformState.scale;\n var _a = contextInstance.props, onZoomStart = _a.onZoomStart, onZoom = _a.onZoom;\n var _b = setup.doubleClick, disabled = _b.disabled, mode = _b.mode, step = _b.step, animationTime = _b.animationTime, animationType = _b.animationType;\n if (disabled)\n return;\n if (doubleClickStopEventTimer)\n return;\n if (mode === \"reset\") {\n return handleDoubleClickResetMode(contextInstance, event);\n }\n if (!contentComponent)\n return console.error(\"No ContentComponent found\");\n var delta = getDoubleClickScale(mode, contextInstance.transformState.scale);\n var newScale = handleCalculateButtonZoom(contextInstance, delta, step);\n // stop execution when scale didn't change\n if (scale === newScale)\n return;\n handleCallback(getContext(contextInstance), event, onZoomStart);\n var mousePosition = getMousePosition(event, contentComponent, scale);\n var targetState = handleZoomToPoint(contextInstance, newScale, mousePosition.x, mousePosition.y);\n if (!targetState) {\n return console.error(\"Error during zoom event. New transformation state was not calculated.\");\n }\n handleCallback(getContext(contextInstance), event, onZoom);\n animate(contextInstance, targetState, animationTime, animationType);\n handleDoubleClickStop(contextInstance, event);\n}\nvar isDoubleClickAllowed = function (contextInstance, event) {\n var isInitialized = contextInstance.isInitialized, setup = contextInstance.setup, wrapperComponent = contextInstance.wrapperComponent;\n var _a = setup.doubleClick, disabled = _a.disabled, excluded = _a.excluded;\n var target = event.target;\n var isWrapperChild = wrapperComponent === null || wrapperComponent === void 0 ? void 0 : wrapperComponent.contains(target);\n var isAllowed = isInitialized && target && isWrapperChild && !disabled;\n if (!isAllowed)\n return false;\n var isExcluded = isExcludedNode(target, excluded);\n if (isExcluded)\n return false;\n return true;\n};\n\nvar ZoomPanPinch = /** @class */ (function () {\n function ZoomPanPinch(props) {\n var _this = this;\n this.mounted = true;\n this.pinchLastCenterX = null;\n this.pinchLastCenterY = null;\n this.onChangeCallbacks = new Set();\n this.onInitCallbacks = new Set();\n // Components\n this.wrapperComponent = null;\n this.contentComponent = null;\n // Initialization\n this.isInitialized = false;\n this.bounds = null;\n // wheel helpers\n this.previousWheelEvent = null;\n this.wheelStopEventTimer = null;\n this.wheelAnimationTimer = null;\n // panning helpers\n this.isPanning = false;\n this.isWheelPanning = false;\n this.startCoords = null;\n this.lastTouch = null;\n // pinch helpers\n this.distance = null;\n this.lastDistance = null;\n this.pinchStartDistance = null;\n this.pinchStartScale = null;\n this.pinchMidpoint = null;\n // double click helpers\n this.doubleClickStopEventTimer = null;\n // velocity helpers\n this.velocity = null;\n this.velocityTime = null;\n this.lastMousePosition = null;\n // animations helpers\n this.animate = false;\n this.animation = null;\n this.maxBounds = null;\n // key press\n this.pressedKeys = {};\n this.mount = function () {\n _this.initializeWindowEvents();\n };\n this.unmount = function () {\n _this.cleanupWindowEvents();\n };\n this.update = function (newProps) {\n _this.props = newProps;\n handleCalculateBounds(_this, _this.transformState.scale);\n _this.setup = createSetup(newProps);\n };\n this.initializeWindowEvents = function () {\n var _a, _b;\n var passive = makePassiveEventOption();\n var currentDocument = (_a = _this.wrapperComponent) === null || _a === void 0 ? void 0 : _a.ownerDocument;\n var currentWindow = currentDocument === null || currentDocument === void 0 ? void 0 : currentDocument.defaultView;\n (_b = _this.wrapperComponent) === null || _b === void 0 ? void 0 : _b.addEventListener(\"wheel\", _this.onWheelPanning, passive);\n // Panning on window to allow panning when mouse is out of component wrapper\n currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.addEventListener(\"mousedown\", _this.onPanningStart, passive);\n currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.addEventListener(\"mousemove\", _this.onPanning, passive);\n currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.addEventListener(\"mouseup\", _this.onPanningStop, passive);\n currentDocument === null || currentDocument === void 0 ? void 0 : currentDocument.addEventListener(\"mouseleave\", _this.clearPanning, passive);\n currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.addEventListener(\"keyup\", _this.setKeyUnPressed, passive);\n currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.addEventListener(\"keydown\", _this.setKeyPressed, passive);\n };\n this.cleanupWindowEvents = function () {\n var _a, _b;\n var passive = makePassiveEventOption();\n var currentDocument = (_a = _this.wrapperComponent) === null || _a === void 0 ? void 0 : _a.ownerDocument;\n var currentWindow = currentDocument === null || currentDocument === void 0 ? void 0 : currentDocument.defaultView;\n currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.removeEventListener(\"mousedown\", _this.onPanningStart, passive);\n currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.removeEventListener(\"mousemove\", _this.onPanning, passive);\n currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.removeEventListener(\"mouseup\", _this.onPanningStop, passive);\n currentDocument === null || currentDocument === void 0 ? void 0 : currentDocument.removeEventListener(\"mouseleave\", _this.clearPanning, passive);\n currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.removeEventListener(\"keyup\", _this.setKeyUnPressed, passive);\n currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.removeEventListener(\"keydown\", _this.setKeyPressed, passive);\n document.removeEventListener(\"mouseleave\", _this.clearPanning, passive);\n handleCancelAnimation(_this);\n (_b = _this.observer) === null || _b === void 0 ? void 0 : _b.disconnect();\n };\n this.handleInitializeWrapperEvents = function (wrapper) {\n // Zooming events on wrapper\n var passive = makePassiveEventOption();\n wrapper.addEventListener(\"wheel\", _this.onWheelZoom, passive);\n wrapper.addEventListener(\"dblclick\", _this.onDoubleClick, passive);\n wrapper.addEventListener(\"touchstart\", _this.onTouchPanningStart, passive);\n wrapper.addEventListener(\"touchmove\", _this.onTouchPanning, passive);\n wrapper.addEventListener(\"touchend\", _this.onTouchPanningStop, passive);\n };\n this.handleInitialize = function (wrapper, contentComponent) {\n var isCentered = false;\n var centerOnInit = _this.setup.centerOnInit;\n var hasTarget = function (entries, target) {\n // eslint-disable-next-line no-restricted-syntax\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var entry = entries_1[_i];\n if (entry.target === target) {\n return true;\n }\n }\n return false;\n };\n _this.applyTransformation();\n _this.onInitCallbacks.forEach(function (callback) {\n callback(getContext(_this));\n });\n _this.observer = new ResizeObserver(function (entries) {\n if (hasTarget(entries, wrapper) || hasTarget(entries, contentComponent)) {\n if (centerOnInit && !isCentered) {\n var currentWidth = contentComponent.offsetWidth;\n var currentHeight = contentComponent.offsetHeight;\n if (currentWidth > 0 || currentHeight > 0) {\n isCentered = true;\n _this.setCenter();\n }\n }\n else {\n handleCancelAnimation(_this);\n handleCalculateBounds(_this, _this.transformState.scale);\n handleAlignToBounds(_this, 0);\n }\n }\n });\n // Start observing the target node for configured mutations\n _this.observer.observe(wrapper);\n _this.observer.observe(contentComponent);\n };\n /// ///////\n // Zoom\n /// ///////\n this.onWheelZoom = function (event) {\n var disabled = _this.setup.disabled;\n if (disabled)\n return;\n var isAllowed = isWheelAllowed(_this, event);\n if (!isAllowed)\n return;\n var keysPressed = _this.isPressingKeys(_this.setup.wheel.activationKeys);\n if (!keysPressed)\n return;\n handleWheelStart(_this, event);\n handleWheelZoom(_this, event);\n handleWheelStop(_this, event);\n };\n /// ///////\n // Pan\n /// ///////\n this.onWheelPanning = function (event) {\n var _a = _this.setup, disabled = _a.disabled, wheel = _a.wheel, panning = _a.panning;\n if (!_this.wrapperComponent ||\n !_this.contentComponent ||\n disabled ||\n !wheel.wheelDisabled ||\n panning.disabled ||\n !panning.wheelPanning ||\n event.ctrlKey) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n var _b = _this.transformState, positionX = _b.positionX, positionY = _b.positionY;\n var mouseX = positionX - event.deltaX;\n var mouseY = positionY - event.deltaY;\n var newPositionX = panning.lockAxisX ? positionX : mouseX;\n var newPositionY = panning.lockAxisY ? positionY : mouseY;\n var _c = _this.setup.alignmentAnimation, sizeX = _c.sizeX, sizeY = _c.sizeY;\n var paddingValueX = getPaddingValue(_this, sizeX);\n var paddingValueY = getPaddingValue(_this, sizeY);\n if (newPositionX === positionX && newPositionY === positionY)\n return;\n handleNewPosition(_this, newPositionX, newPositionY, paddingValueX, paddingValueY);\n };\n this.onPanningStart = function (event) {\n var disabled = _this.setup.disabled;\n var onPanningStart = _this.props.onPanningStart;\n if (disabled)\n return;\n var isAllowed = isPanningStartAllowed(_this, event);\n if (!isAllowed)\n return;\n var keysPressed = _this.isPressingKeys(_this.setup.panning.activationKeys);\n if (!keysPressed)\n return;\n if (event.button === 0 && !_this.setup.panning.allowLeftClickPan)\n return;\n if (event.button === 1 && !_this.setup.panning.allowMiddleClickPan)\n return;\n if (event.button === 2 && !_this.setup.panning.allowRightClickPan)\n return;\n event.preventDefault();\n event.stopPropagation();\n handleCancelAnimation(_this);\n handlePanningStart(_this, event);\n handleCallback(getContext(_this), event, onPanningStart);\n };\n this.onPanning = function (event) {\n var disabled = _this.setup.disabled;\n var onPanning = _this.props.onPanning;\n if (disabled)\n return;\n var isAllowed = isPanningAllowed(_this);\n if (!isAllowed)\n return;\n var keysPressed = _this.isPressingKeys(_this.setup.panning.activationKeys);\n if (!keysPressed)\n return;\n event.preventDefault();\n event.stopPropagation();\n handlePanning(_this, event.clientX, event.clientY);\n handleCallback(getContext(_this), event, onPanning);\n };\n this.onPanningStop = function (event) {\n var onPanningStop = _this.props.onPanningStop;\n if (_this.isPanning) {\n handlePanningEnd(_this);\n handleCallback(getContext(_this), event, onPanningStop);\n }\n };\n /// ///////\n // Pinch\n /// ///////\n this.onPinchStart = function (event) {\n var disabled = _this.setup.disabled;\n var _a = _this.props, onPinchingStart = _a.onPinchingStart, onZoomStart = _a.onZoomStart;\n if (disabled)\n return;\n var isAllowed = isPinchStartAllowed(_this, event);\n if (!isAllowed)\n return;\n handlePinchStart(_this, event);\n handleCancelAnimation(_this);\n handleCallback(getContext(_this), event, onPinchingStart);\n handleCallback(getContext(_this), event, onZoomStart);\n };\n this.onPinch = function (event) {\n var disabled = _this.setup.disabled;\n var _a = _this.props, onPinching = _a.onPinching, onZoom = _a.onZoom;\n if (disabled)\n return;\n var isAllowed = isPinchAllowed(_this);\n if (!isAllowed)\n return;\n event.preventDefault();\n event.stopPropagation();\n handlePinchZoom(_this, event);\n handleCallback(getContext(_this), event, onPinching);\n handleCallback(getContext(_this), event, onZoom);\n };\n this.onPinchStop = function (event) {\n var _a = _this.props, onPinchingStop = _a.onPinchingStop, onZoomStop = _a.onZoomStop;\n if (_this.pinchStartScale) {\n handlePinchStop(_this);\n handleCallback(getContext(_this), event, onPinchingStop);\n handleCallback(getContext(_this), event, onZoomStop);\n }\n };\n /// ///////\n // Touch\n /// ///////\n this.onTouchPanningStart = function (event) {\n var disabled = _this.setup.disabled;\n var onPanningStart = _this.props.onPanningStart;\n if (disabled)\n return;\n var isAllowed = isPanningStartAllowed(_this, event);\n if (!isAllowed)\n return;\n var isDoubleTap = _this.lastTouch &&\n +new Date() - _this.lastTouch < 200 &&\n event.touches.length === 1;\n if (!isDoubleTap) {\n _this.lastTouch = +new Date();\n handleCancelAnimation(_this);\n var touches = event.touches;\n var isPanningAction = touches.length === 1;\n var isPinchAction = touches.length === 2;\n if (isPanningAction) {\n handleCancelAnimation(_this);\n handlePanningStart(_this, event);\n handleCallback(getContext(_this), event, onPanningStart);\n }\n if (isPinchAction) {\n _this.onPinchStart(event);\n }\n }\n };\n this.onTouchPanning = function (event) {\n var disabled = _this.setup.disabled;\n var onPanning = _this.props.onPanning;\n if (_this.isPanning && event.touches.length === 1) {\n if (disabled)\n return;\n var isAllowed = isPanningAllowed(_this);\n if (!isAllowed)\n return;\n event.preventDefault();\n event.stopPropagation();\n var touch = event.touches[0];\n handlePanning(_this, touch.clientX, touch.clientY);\n handleCallback(getContext(_this), event, onPanning);\n }\n else if (event.touches.length > 1) {\n _this.onPinch(event);\n }\n };\n this.onTouchPanningStop = function (event) {\n _this.onPanningStop(event);\n _this.onPinchStop(event);\n };\n /// ///////\n // Double Click\n /// ///////\n this.onDoubleClick = function (event) {\n var disabled = _this.setup.disabled;\n if (disabled)\n return;\n var isAllowed = isDoubleClickAllowed(_this, event);\n if (!isAllowed)\n return;\n handleDoubleClick(_this, event);\n };\n /// ///////\n // Helpers\n /// ///////\n this.clearPanning = function (event) {\n if (_this.isPanning) {\n _this.onPanningStop(event);\n }\n };\n this.setKeyPressed = function (e) {\n _this.pressedKeys[e.key] = true;\n };\n this.setKeyUnPressed = function (e) {\n _this.pressedKeys[e.key] = false;\n };\n this.isPressingKeys = function (keys) {\n if (!keys.length) {\n return true;\n }\n return Boolean(keys.find(function (key) { return _this.pressedKeys[key]; }));\n };\n this.setTransformState = function (scale, positionX, positionY) {\n var onTransformed = _this.props.onTransformed;\n if (!Number.isNaN(scale) &&\n !Number.isNaN(positionX) &&\n !Number.isNaN(positionY)) {\n if (scale !== _this.transformState.scale) {\n _this.transformState.previousScale = _this.transformState.scale;\n _this.transformState.scale = scale;\n }\n _this.transformState.positionX = positionX;\n _this.transformState.positionY = positionY;\n _this.applyTransformation();\n var ctx_1 = getContext(_this);\n _this.onChangeCallbacks.forEach(function (callback) { return callback(ctx_1); });\n handleCallback(ctx_1, { scale: scale, positionX: positionX, positionY: positionY }, onTransformed);\n }\n else {\n console.error(\"Detected NaN set state values\");\n }\n };\n this.setCenter = function () {\n if (_this.wrapperComponent && _this.contentComponent) {\n var targetState = getCenterPosition(_this.transformState.scale, _this.wrapperComponent, _this.contentComponent);\n _this.setTransformState(targetState.scale, targetState.positionX, targetState.positionY);\n }\n };\n this.handleTransformStyles = function (x, y, scale) {\n if (_this.props.customTransform) {\n return _this.props.customTransform(x, y, scale);\n }\n return getTransformStyles(x, y, scale);\n };\n this.applyTransformation = function () {\n if (!_this.mounted || !_this.contentComponent)\n return;\n var _a = _this.transformState, scale = _a.scale, positionX = _a.positionX, positionY = _a.positionY;\n var transform = _this.handleTransformStyles(positionX, positionY, scale);\n _this.contentComponent.style.transform = transform;\n };\n this.getContext = function () {\n return getContext(_this);\n };\n /**\n * Hooks\n */\n this.onChange = function (callback) {\n if (!_this.onChangeCallbacks.has(callback)) {\n _this.onChangeCallbacks.add(callback);\n }\n return function () {\n _this.onChangeCallbacks.delete(callback);\n };\n };\n this.onInit = function (callback) {\n if (!_this.onInitCallbacks.has(callback)) {\n _this.onInitCallbacks.add(callback);\n }\n return function () {\n _this.onInitCallbacks.delete(callback);\n };\n };\n /**\n * Initialization\n */\n this.init = function (wrapperComponent, contentComponent) {\n _this.cleanupWindowEvents();\n _this.wrapperComponent = wrapperComponent;\n _this.contentComponent = contentComponent;\n handleCalculateBounds(_this, _this.transformState.scale);\n _this.handleInitializeWrapperEvents(wrapperComponent);\n _this.handleInitialize(wrapperComponent, contentComponent);\n _this.initializeWindowEvents();\n _this.isInitialized = true;\n var ctx = getContext(_this);\n handleCallback(ctx, undefined, _this.props.onInit);\n };\n this.props = props;\n this.setup = createSetup(this.props);\n this.transformState = createState(this.props);\n }\n return ZoomPanPinch;\n}());\n\nvar Context = React.createContext(null);\nvar getContent = function (children, ctx) {\n if (typeof children === \"function\") {\n return children(ctx);\n }\n return children;\n};\nvar TransformWrapper = React.forwardRef(function (props, ref) {\n var instance = useRef(new ZoomPanPinch(props)).current;\n var content = getContent(props.children, getControls(instance));\n useImperativeHandle(ref, function () { return getControls(instance); }, [instance]);\n useEffect(function () {\n instance.update(props);\n }, [instance, props]);\n return React.createElement(Context.Provider, { value: instance }, content);\n});\n\nvar KeepScale = React.forwardRef(function (props, ref) {\n var localRef = useRef(null);\n var instance = useContext(Context);\n useEffect(function () {\n return instance.onChange(function (ctx) {\n if (localRef.current) {\n var positionX = 0;\n var positionY = 0;\n localRef.current.style.transform = instance.handleTransformStyles(positionX, positionY, 1 / ctx.instance.transformState.scale);\n }\n });\n }, [instance]);\n return React.createElement(\"div\", __assign({}, props, { ref: mergeRefs([localRef, ref]) }));\n});\n\nvar initialElementRect = {\n width: 0,\n height: 0,\n y: 0,\n x: 0,\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n};\nvar useResize = function (ref, onResize, dependencies) {\n var resizeObserverRef = useRef();\n var rectRef = useRef(initialElementRect);\n var didUnmount = useRef(false);\n useLayoutEffect(function () {\n var _a;\n didUnmount.current = false;\n if (!(\"ResizeObserver\" in window)) {\n return;\n }\n if (ref) {\n resizeObserverRef.current = new ResizeObserver(function (entries) {\n var newSize = ref.getBoundingClientRect();\n if (!Array.isArray(entries) ||\n !entries.length ||\n didUnmount.current ||\n (newSize.width === rectRef.current.width &&\n newSize.height === rectRef.current.height))\n return;\n onResize(newSize, ref);\n rectRef.current = newSize;\n });\n (_a = resizeObserverRef.current) === null || _a === void 0 ? void 0 : _a.observe(ref);\n }\n return function () {\n var _a;\n didUnmount.current = true;\n if (ref) {\n (_a = resizeObserverRef.current) === null || _a === void 0 ? void 0 : _a.unobserve(ref);\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, __spreadArray([onResize, ref], dependencies, true));\n};\n\nvar previewStyles = {\n position: \"absolute\",\n zIndex: 2,\n top: \"0px\",\n left: \"0px\",\n boxSizing: \"border-box\",\n border: \"3px solid red\",\n transformOrigin: \"0% 0%\",\n boxShadow: \"rgba(0,0,0,0.2) 0 0 0 10000000px\",\n};\nvar MiniMap = function (_a) {\n var _b = _a.width, width = _b === void 0 ? 200 : _b, _c = _a.height, height = _c === void 0 ? 200 : _c, _d = _a.borderColor, borderColor = _d === void 0 ? \"red\" : _d, children = _a.children, rest = __rest(_a, [\"width\", \"height\", \"borderColor\", \"children\"]);\n var _e = useState(false), initialized = _e[0], setInitialized = _e[1];\n var instance = useTransformContext();\n var miniMapInstance = useRef(null);\n var mainRef = useRef(null);\n var wrapperRef = useRef(null);\n var previewRef = useRef(null);\n var getViewportSize = useCallback(function () {\n if (instance.wrapperComponent) {\n var rect = instance.wrapperComponent.getBoundingClientRect();\n return {\n width: rect.width,\n height: rect.height,\n };\n }\n return {\n width: 0,\n height: 0,\n };\n }, [instance.wrapperComponent]);\n var getContentSize = useCallback(function () {\n if (instance.contentComponent) {\n var rect = instance.contentComponent.getBoundingClientRect();\n return {\n width: rect.width / instance.transformState.scale,\n height: rect.height / instance.transformState.scale,\n };\n }\n return {\n width: 0,\n height: 0,\n };\n }, [instance.contentComponent, instance.transformState.scale]);\n var computeMiniMapScale = useCallback(function () {\n var contentSize = getContentSize();\n var scaleX = width / contentSize.width;\n var scaleY = height / contentSize.height;\n var scale = scaleY > scaleX ? scaleX : scaleY;\n return scale;\n }, [getContentSize, height, width]);\n var computeMiniMapSize = function () {\n var contentSize = getContentSize();\n var scaleX = width / contentSize.width;\n var scaleY = height / contentSize.height;\n if (scaleY > scaleX) {\n return { width: width, height: contentSize.height * scaleX };\n }\n return { width: contentSize.width * scaleY, height: height };\n };\n var computeMiniMapStyle = function () {\n var scale = computeMiniMapScale();\n var style = {\n transform: \"scale(\".concat(scale || 1, \")\"),\n transformOrigin: \"0% 0%\",\n position: \"absolute\",\n boxSizing: \"border-box\",\n zIndex: 1,\n overflow: \"hidden\",\n };\n Object.keys(style).forEach(function (key) {\n if (wrapperRef.current) {\n wrapperRef.current.style[key] = style[key];\n }\n });\n };\n var transformMiniMap = function () {\n computeMiniMapStyle();\n var miniSize = computeMiniMapSize();\n var wrapSize = getContentSize();\n if (wrapperRef.current) {\n wrapperRef.current.style.width = \"\".concat(wrapSize.width, \"px\");\n wrapperRef.current.style.height = \"\".concat(wrapSize.height, \"px\");\n }\n if (mainRef.current) {\n mainRef.current.style.width = \"\".concat(miniSize.width, \"px\");\n mainRef.current.style.height = \"\".concat(miniSize.height, \"px\");\n }\n if (previewRef.current) {\n var size = getViewportSize();\n var scale = computeMiniMapScale();\n var previewScale = scale * (1 / instance.transformState.scale);\n var transform = instance.handleTransformStyles(-instance.transformState.positionX * previewScale, -instance.transformState.positionY * previewScale, 1);\n previewRef.current.style.transform = transform;\n previewRef.current.style.width = \"\".concat(size.width * previewScale, \"px\");\n previewRef.current.style.height = \"\".concat(size.height * previewScale, \"px\");\n }\n };\n var initialize = function () {\n transformMiniMap();\n };\n useTransformEffect(function () {\n transformMiniMap();\n });\n useTransformInit(function () {\n initialize();\n setInitialized(true);\n });\n useResize(instance.contentComponent, initialize, [initialized]);\n useEffect(function () {\n return instance.onChange(function (zpp) {\n var scale = computeMiniMapScale();\n if (miniMapInstance.current) {\n miniMapInstance.current.instance.transformState.scale =\n zpp.instance.transformState.scale;\n miniMapInstance.current.instance.transformState.positionX =\n zpp.instance.transformState.positionX * scale;\n miniMapInstance.current.instance.transformState.positionY =\n zpp.instance.transformState.positionY * scale;\n }\n });\n }, [computeMiniMapScale, instance, miniMapInstance]);\n var wrapperStyle = useMemo(function () {\n return {\n position: \"relative\",\n zIndex: 2,\n overflow: \"hidden\",\n };\n }, []);\n return (React.createElement(\"div\", __assign({}, rest, { ref: mainRef, style: wrapperStyle, className: \"rzpp-mini-map \".concat(rest.className || \"\") }),\n React.createElement(\"div\", __assign({}, rest, { ref: wrapperRef, className: \"rzpp-wrapper\" }), children),\n React.createElement(\"div\", { className: \"rzpp-preview\", ref: previewRef, style: __assign(__assign({}, previewStyles), { borderColor: borderColor }) })));\n};\n\nfunction styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar css_248z = \".transform-component-module_wrapper__SPB86 {\\n position: relative;\\n width: -moz-fit-content;\\n width: fit-content;\\n height: -moz-fit-content;\\n height: fit-content;\\n overflow: hidden;\\n -webkit-touch-callout: none; /* iOS Safari */\\n -webkit-user-select: none; /* Safari */\\n -khtml-user-select: none; /* Konqueror HTML */\\n -moz-user-select: none; /* Firefox */\\n -ms-user-select: none; /* Internet Explorer/Edge */\\n user-select: none;\\n margin: 0;\\n padding: 0;\\n transform: translate3d(0, 0, 0);\\n}\\n.transform-component-module_content__FBWxo {\\n display: flex;\\n flex-wrap: wrap;\\n width: -moz-fit-content;\\n width: fit-content;\\n height: -moz-fit-content;\\n height: fit-content;\\n margin: 0;\\n padding: 0;\\n transform-origin: 0% 0%;\\n}\\n.transform-component-module_content__FBWxo img {\\n pointer-events: none;\\n}\\n\";\nvar styles = {\"wrapper\":\"transform-component-module_wrapper__SPB86\",\"content\":\"transform-component-module_content__FBWxo\"};\nstyleInject(css_248z);\n\nvar TransformComponent = function (_a) {\n var children = _a.children, _b = _a.wrapperClass, wrapperClass = _b === void 0 ? \"\" : _b, _c = _a.contentClass, contentClass = _c === void 0 ? \"\" : _c, wrapperStyle = _a.wrapperStyle, contentStyle = _a.contentStyle, _d = _a.wrapperProps, wrapperProps = _d === void 0 ? {} : _d, _e = _a.contentProps, contentProps = _e === void 0 ? {} : _e;\n var _f = useContext(Context), init = _f.init, cleanupWindowEvents = _f.cleanupWindowEvents;\n var wrapperRef = useRef(null);\n var contentRef = useRef(null);\n useEffect(function () {\n var wrapper = wrapperRef.current;\n var content = contentRef.current;\n if (wrapper !== null && content !== null && init) {\n init === null || init === void 0 ? void 0 : init(wrapper, content);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return function () {\n cleanupWindowEvents === null || cleanupWindowEvents === void 0 ? void 0 : cleanupWindowEvents();\n };\n }, []);\n return (React.createElement(\"div\", __assign({}, wrapperProps, { ref: wrapperRef, className: \"\".concat(baseClasses.wrapperClass, \" \").concat(styles.wrapper, \" \").concat(wrapperClass), style: wrapperStyle }),\n React.createElement(\"div\", __assign({}, contentProps, { ref: contentRef, className: \"\".concat(baseClasses.contentClass, \" \").concat(styles.content, \" \").concat(contentClass), style: contentStyle }), children)));\n};\n\nvar useTransformContext = function () {\n var libraryContext = useContext(Context);\n if (!libraryContext) {\n throw new Error(\"Transform context must be placed inside TransformWrapper\");\n }\n return libraryContext;\n};\n\nvar useControls = function () {\n var libraryContext = useTransformContext();\n return getControls(libraryContext);\n};\n\nvar useTransformInit = function (callback) {\n var libraryContext = useTransformContext();\n useEffect(function () {\n var unmountCallback;\n var unmount;\n if (libraryContext.contentComponent && libraryContext.wrapperComponent) {\n unmountCallback = callback(getState(libraryContext));\n }\n else {\n unmount = libraryContext.onInit(function (ref) {\n unmountCallback = callback(getState(ref.instance));\n });\n }\n return function () {\n unmount === null || unmount === void 0 ? void 0 : unmount();\n unmountCallback === null || unmountCallback === void 0 ? void 0 : unmountCallback();\n };\n }, []);\n};\n\nvar useTransformEffect = function (callback) {\n var libraryContext = useTransformContext();\n useEffect(function () {\n var unmountCallback;\n var unmount = libraryContext.onChange(function (ref) {\n unmountCallback = callback(getState(ref.instance));\n });\n return function () {\n unmount();\n unmountCallback === null || unmountCallback === void 0 ? void 0 : unmountCallback();\n };\n }, [callback, libraryContext]);\n};\n\nfunction useTransformComponent(callback) {\n var libraryContext = useTransformContext();\n var _a = useState(callback(getState(libraryContext))), transformRender = _a[0], setTransformRender = _a[1];\n useEffect(function () {\n var mounted = true;\n var unmount = libraryContext.onChange(function (ref) {\n if (mounted) {\n setTransformRender(callback(getState(ref.instance)));\n }\n });\n return function () {\n unmount();\n mounted = false;\n };\n }, [callback, libraryContext]);\n return transformRender;\n}\n\nexport { Context, KeepScale, MiniMap, TransformComponent, TransformWrapper, getCenterPosition, getMatrixTransformStyles, getTransformStyles, useControls, useTransformComponent, useTransformContext, useTransformEffect, useTransformInit };\n//# sourceMappingURL=index.esm.js.map\n","import React, { ChangeEvent } from 'react';\n\nimport styles from './styles.module.scss';\n\ninterface MiniSliderProps {\n value: number;\n minValue: number;\n maxValue: number;\n onChange: (newValue: number) => void;\n ariaLabel: string;\n}\n\nconst MiniSlider = (props: MiniSliderProps): React.JSX.Element => {\n const handleOnChange = (event: ChangeEvent<HTMLInputElement>): void => {\n event.preventDefault();\n const newValue = parseFloat(event.target.value);\n props.onChange(newValue);\n };\n\n const ariaValueText = `${Math.round(props.value * 100)}%`;\n\n return (\n <div className={styles.slider} aria-live=\"polite\">\n <div key={props.value} className={styles.slider__announcements}>\n {ariaValueText}\n </div>\n <input\n onChange={handleOnChange}\n type=\"range\"\n min={props.minValue}\n max={props.maxValue}\n value={props.value}\n aria-valuenow={props.value}\n aria-valuemin={props.minValue}\n aria-valuemax={props.maxValue}\n aria-valuetext={ariaValueText}\n aria-label={props.ariaLabel}\n step={0.1}\n />\n </div>\n );\n};\n\nexport default MiniSlider;\n","import React, { useEffect, useRef, useState } from 'react';\n\nimport classNames from 'classnames';\nimport { TransformWrapper, TransformComponent, useTransformComponent, useControls } from 'react-zoom-pan-pinch';\n\nimport Icon from '@helsenorge/designsystem-react/components/Icon';\nimport ChevronLeft from '@helsenorge/designsystem-react/components/Icons/ChevronLeft';\nimport ChevronRight from '@helsenorge/designsystem-react/components/Icons/ChevronRight';\nimport ChevronsDown from '@helsenorge/designsystem-react/components/Icons/ChevronsDown';\nimport ChevronsUp from '@helsenorge/designsystem-react/components/Icons/ChevronsUp';\nimport Minus from '@helsenorge/designsystem-react/components/Icons/Minus';\nimport PlusSmall from '@helsenorge/designsystem-react/components/Icons/PlusSmall';\nimport X from '@helsenorge/designsystem-react/components/Icons/X';\nimport { IconSize, KeyboardEventKey, ZIndex } from '@helsenorge/designsystem-react/constants';\nimport { useFocusTrap } from '@helsenorge/designsystem-react/hooks/useFocusTrap';\nimport { useReturnFocusOnUnmount } from '@helsenorge/designsystem-react/hooks/useReturnFocusOnUnmount';\nimport { useSize } from '@helsenorge/designsystem-react/hooks/useSize';\nimport { disableBodyScroll, enableBodyScroll } from '@helsenorge/designsystem-react/utils/scroll';\n\nimport { useKeyboardEvent } from '@helsenorge/designsystem-react';\n\nimport MiniSlider from './MiniSlider';\n\nimport styles from './styles.module.scss';\n\nexport interface LightBoxProps {\n /** Aria label for the close button */\n ariaLabelCloseButton: string;\n /** Aria label for the text box button when its open */\n ariaLabelCloseTextBox: string;\n /** Aria label for the left arrow button */\n ariaLabelLeftArrow?: string;\n /** Aria label for the full modal describing what the modal contains */\n ariaLabelLightBox: string;\n /** Aria label for the right arrow button */\n ariaLabelRightArrow?: string;\n /** Aria label for the text box button when its closed */\n ariaLabelOpenTextBox: string;\n /** Aria label for the zoom in button */\n ariaLabelZoomIn: string;\n /** Aria label for the zoom out button */\n ariaLabelZoomOut: string;\n /** Aria label for the slider input component */\n ariaLabelZoomSlider: string;\n /** If set the text box closes automatically after the given seconds */\n closeTextAfterSeconds?: number;\n /** Alt text for the image */\n imageAlt: string;\n /** Source of the image that will be shown */\n imageSrc: string;\n /** The text for the image that shows in the textbox */\n imageText?: string | React.ReactNode;\n /** Function is called when user clicks the close button */\n onClose: () => void;\n /** Function is called when user clicks the left arrow button. If not given the arrow will not show. */\n onLeftArrowClick?: () => void;\n /** Function is called when user clicks the right arrow button. If not given the arrow will not show. */\n onRightArrowClick?: () => void;\n /** Sets the data-testid attribute. */\n testId?: string;\n}\n\nconst LightBox: React.FC<LightBoxProps> = ({\n ariaLabelCloseButton,\n ariaLabelLeftArrow,\n ariaLabelLightBox,\n ariaLabelRightArrow,\n ariaLabelCloseTextBox,\n ariaLabelOpenTextBox,\n ariaLabelZoomIn,\n ariaLabelZoomOut,\n ariaLabelZoomSlider,\n closeTextAfterSeconds,\n imageAlt,\n imageSrc,\n imageText,\n onClose,\n onLeftArrowClick,\n onRightArrowClick,\n testId,\n}) => {\n const [imageTextOpen, setImageTextOpen] = React.useState(true);\n const lightBoxRef = useRef<HTMLDivElement>(null);\n const textBoxRef = useRef<HTMLParagraphElement>(null);\n const { height: textBoxHeight = 0 } = useSize(textBoxRef) || {};\n const [zoom, setZoom] = useState(1.0);\n useFocusTrap(lightBoxRef, true);\n useReturnFocusOnUnmount(lightBoxRef);\n\n useKeyboardEvent(lightBoxRef, onClose, [KeyboardEventKey.Escape]);\n\n const updateStates = (newZoom: number): void => {\n if (zoom === newZoom) return;\n setZoom(newZoom);\n };\n\n useEffect(() => {\n if (!closeTextAfterSeconds) return;\n const timer = setTimeout(() => {\n setImageTextOpen(false);\n }, closeTextAfterSeconds * 1000);\n return (): void => {\n clearTimeout(timer);\n };\n }, []);\n\n useEffect(() => {\n lightBoxRef.current?.focus();\n }, []);\n\n return (\n <div\n data-testid={testId}\n className={styles.lightBox}\n style={{ zIndex: ZIndex.OverlayScreen }}\n role=\"dialog\"\n aria-modal={true}\n tabIndex={-1}\n aria-label={ariaLabelLightBox}\n ref={lightBoxRef}\n >\n <button\n onClick={onClose}\n aria-label={ariaLabelCloseButton}\n data-testid=\"closeButton\"\n className={classNames(styles.button, styles['close-button'])}\n style={{ zIndex: ZIndex.LightBoxButtons }}\n >\n <Icon svgIcon={X} color=\"white\" size={IconSize.XSmall} />\n </button>\n {onLeftArrowClick && (\n <button\n className={classNames(styles.button, styles['arrow-button'], styles['arrow-button--left'])}\n onClick={onLeftArrowClick}\n aria-label={ariaLabelLeftArrow}\n data-testid=\"leftArrow\"\n style={{ zIndex: ZIndex.LightBoxButtons }}\n >\n <Icon svgIcon={ChevronLeft} color=\"white\" size={IconSize.XSmall} />\n </button>\n )}\n {onRightArrowClick && (\n <button\n className={classNames(styles.button, styles['arrow-button'], styles['arrow-button--right'])}\n onClick={onRightArrowClick}\n aria-label={ariaLabelRightArrow}\n data-testid=\"rightarrow\"\n style={{ zIndex: ZIndex.LightBoxButtons }}\n >\n <Icon svgIcon={ChevronRight} color=\"white\" size={IconSize.XSmall} />\n </button>\n )}\n {imageText && (\n <div\n className={styles['image-text-box']}\n style={{ bottom: imageTextOpen ? '0' : '-' + textBoxHeight + 'px', transition: '0.5s', zIndex: ZIndex.LightBoxButtons }}\n >\n <button\n className={classNames(styles.button, styles['image-text-box__button'])}\n onClick={() => setImageTextOpen(!imageTextOpen)}\n style={{ zIndex: ZIndex.LightBoxButtons }}\n aria-label={imageTextOpen ? ariaLabelCloseTextBox : ariaLabelOpenTextBox}\n aria-expanded={imageTextOpen}\n >\n {imageTextOpen ? (\n <Icon svgIcon={ChevronsDown} color=\"white\" size={IconSize.XSmall} />\n ) : (\n <Icon svgIcon={ChevronsUp} color=\"white\" size={IconSize.XSmall} />\n )}\n </button>\n <div>\n {typeof imageText === 'string' ? (\n <p ref={textBoxRef} className={styles['image-text-box__text']}>\n {imageText}\n </p>\n ) : (\n <div ref={textBoxRef} className={styles['image-text-box__text']}>\n {imageText}\n </div>\n )}\n <div className={styles['image-text-box__overflow-border']}></div>\n </div>\n </div>\n )}\n <TransformWrapper smooth={false} initialScale={1} maxScale={4} doubleClick={{ mode: 'toggle', step: 4 }}>\n {({ setTransform }) => (\n <>\n <Controls\n transform={setTransform}\n updateStates={updateStates}\n zoom={zoom}\n ariaLabelZoomIn={ariaLabelZoomIn}\n ariaLabelZoomOut={ariaLabelZoomOut}\n ariaLabelZoomSlider={ariaLabelZoomSlider}\n />\n <TransformComponent\n wrapperStyle={{\n zIndex: 1,\n width: '100%',\n height: '100%',\n }}\n contentStyle={{\n width: '100%',\n height: '100%',\n }}\n >\n <img src={imageSrc} alt={imageAlt} />\n </TransformComponent>\n </>\n )}\n </TransformWrapper>\n </div>\n );\n};\n\nconst Controls = ({\n transform,\n updateStates,\n zoom,\n ariaLabelZoomIn,\n ariaLabelZoomOut,\n ariaLabelZoomSlider,\n}: {\n transform: (newPositionX: number, newPositionY: number, newScale: number, animationTime?: number | undefined) => void;\n updateStates: (newZoom: number) => void;\n zoom: number;\n ariaLabelZoomIn: string;\n ariaLabelZoomOut: string;\n ariaLabelZoomSlider: string;\n}): React.JSX.Element => {\n useTransformComponent(({ state }) => {\n updateStates(state.scale);\n });\n const { zoomIn, zoomOut, centerView } = useControls();\n let centerTimeout: number;\n\n const calculateZoomCenter = (newScale: number): number[] => {\n const element = document.getElementsByClassName('react-transform-component')[0];\n const style = window.getComputedStyle(element);\n const matrix = new WebKitCSSMatrix(style.transform);\n const ratio = (newScale - zoom) / zoom + 1;\n const x = (matrix.m41 - (window.innerWidth / 2) * (1 - zoom / newScale)) * ratio;\n const y = (matrix.m42 - (window.innerHeight / 2) * (1 - zoom / newScale)) * ratio;\n return [x, y];\n };\n const adjustZoom = (newScale: number | undefined): void => {\n if (newScale === undefined || newScale === zoom) return;\n if (newScale < 1) newScale = 1;\n if (newScale > 4) newScale = 4;\n const [x, y] = calculateZoomCenter(newScale);\n transform(x, y, newScale, 1);\n\n if (centerTimeout) {\n clearTimeout(centerTimeout);\n }\n\n // Starter sentrering timeout hvis det zoomes ut\n if (newScale - zoom < 0) {\n centerTimeout = window.setTimeout(() => {\n centerView();\n }, 160);\n }\n };\n\n useEffect(() => {\n disableBodyScroll();\n return (): void => {\n enableBodyScroll();\n };\n }, []);\n\n return (\n <div className={classNames(styles['zoom-buttons'])} style={{ zIndex: ZIndex.LightBoxButtons }}>\n <button className={classNames(styles.button)} onClick={() => zoomOut()} aria-label={ariaLabelZoomOut}>\n <Icon svgIcon={Minus} color=\"white\" size={IconSize.XSmall} />\n </button>\n <MiniSlider minValue={1} maxValue={4} onChange={adjustZoom} value={zoom} ariaLabel={ariaLabelZoomSlider} />\n <button className={classNames(styles.button)} onClick={() => zoomIn()} aria-label={ariaLabelZoomIn}>\n <Icon svgIcon={PlusSmall} color=\"white\" size={IconSize.XSmall} />\n </button>\n </div>\n );\n};\n\nexport default LightBox;\n","import LightBox from './LightBox';\nexport * from './LightBox';\nexport default LightBox;\n"],"x_google_ignoreList":[0],"mappings":"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"}
1
+ {"version":3,"file":"index.js","names":["__assign","ZoomPanPinch","styles","LightBox: React.FC<LightBoxProps>","mergedResources: HNDesignsystemLightBox","centerTimeout: number"],"sources":["../../../../../node_modules/react-zoom-pan-pinch/dist/index.esm.js","../../../src/components/LightBox/MiniSlider.tsx","../../../src/resources/HN.Designsystem.LightBox.en-GB.json","../../../src/resources/HN.Designsystem.LightBox.nb-NO.json","../../../src/resources/HN.Designsystem.LightBox.nn-NO.json","../../../src/resources/HN.Designsystem.LightBox.se-NO.json","../../../src/components/LightBox/resourceHelper.ts","../../../src/components/LightBox/LightBox.tsx","../../../src/components/LightBox/index.ts"],"sourcesContent":["import React, { useRef, useImperativeHandle, useEffect, useContext, useLayoutEffect, useState, useCallback, useMemo } from 'react';\n\n/**\n * Rounds number to given decimal\n * eg. roundNumber(2.34343, 1) => 2.3\n */\nvar roundNumber = function (num, decimal) {\n return Number(num.toFixed(decimal));\n};\n/**\n * Checks if value is number, if not it returns default value\n * 1# eg. checkIsNumber(2, 30) => 2\n * 2# eg. checkIsNumber(null, 30) => 30\n */\nvar checkIsNumber = function (num, defaultValue) {\n return typeof num === \"number\" ? num : defaultValue;\n};\n\nvar handleCallback = function (context, event, callback) {\n if (callback && typeof callback === \"function\") {\n callback(context, event);\n }\n};\n\n/* eslint-disable no-plusplus */\n/* eslint-disable no-param-reassign */\n/**\n * Functions should return denominator of the target value, which is the next animation step.\n * t is a value from 0 to 1, reflecting the percentage of animation status.\n */\nvar easeOut = function (t) {\n return -Math.cos(t * Math.PI) / 2 + 0.5;\n};\n// linear\nvar linear = function (t) {\n return t;\n};\n// accelerating from zero velocity\nvar easeInQuad = function (t) {\n return t * t;\n};\n// decelerating to zero velocity\nvar easeOutQuad = function (t) {\n return t * (2 - t);\n};\n// acceleration until halfway, then deceleration\nvar easeInOutQuad = function (t) {\n return t < 0.5 ? 2 * t * t : -1 + (4 - 2 * t) * t;\n};\n// accelerating from zero velocity\nvar easeInCubic = function (t) {\n return t * t * t;\n};\n// decelerating to zero velocity\nvar easeOutCubic = function (t) {\n return --t * t * t + 1;\n};\n// acceleration until halfway, then deceleration\nvar easeInOutCubic = function (t) {\n return t < 0.5 ? 4 * t * t * t : (t - 1) * (2 * t - 2) * (2 * t - 2) + 1;\n};\n// accelerating from zero velocity\nvar easeInQuart = function (t) {\n return t * t * t * t;\n};\n// decelerating to zero velocity\nvar easeOutQuart = function (t) {\n return 1 - --t * t * t * t;\n};\n// acceleration until halfway, then deceleration\nvar easeInOutQuart = function (t) {\n return t < 0.5 ? 8 * t * t * t * t : 1 - 8 * --t * t * t * t;\n};\n// accelerating from zero velocity\nvar easeInQuint = function (t) {\n return t * t * t * t * t;\n};\n// decelerating to zero velocity\nvar easeOutQuint = function (t) {\n return 1 + --t * t * t * t * t;\n};\n// acceleration until halfway, then deceleration\nvar easeInOutQuint = function (t) {\n return t < 0.5 ? 16 * t * t * t * t * t : 1 + 16 * --t * t * t * t * t;\n};\nvar animations = {\n easeOut: easeOut,\n linear: linear,\n easeInQuad: easeInQuad,\n easeOutQuad: easeOutQuad,\n easeInOutQuad: easeInOutQuad,\n easeInCubic: easeInCubic,\n easeOutCubic: easeOutCubic,\n easeInOutCubic: easeInOutCubic,\n easeInQuart: easeInQuart,\n easeOutQuart: easeOutQuart,\n easeInOutQuart: easeInOutQuart,\n easeInQuint: easeInQuint,\n easeOutQuint: easeOutQuint,\n easeInOutQuint: easeInOutQuint,\n};\n\n/* eslint-disable no-param-reassign */\nvar handleCancelAnimationFrame = function (animation) {\n if (typeof animation === \"number\") {\n cancelAnimationFrame(animation);\n }\n};\nvar handleCancelAnimation = function (contextInstance) {\n if (!contextInstance.mounted)\n return;\n handleCancelAnimationFrame(contextInstance.animation);\n // Clear animation state\n contextInstance.animate = false;\n contextInstance.animation = null;\n contextInstance.velocity = null;\n};\nfunction handleSetupAnimation(contextInstance, animationName, animationTime, callback) {\n if (!contextInstance.mounted)\n return;\n var startTime = new Date().getTime();\n var lastStep = 1;\n // if another animation is active\n handleCancelAnimation(contextInstance);\n // new animation\n contextInstance.animation = function () {\n if (!contextInstance.mounted) {\n return handleCancelAnimationFrame(contextInstance.animation);\n }\n var frameTime = new Date().getTime() - startTime;\n var animationProgress = frameTime / animationTime;\n var animationType = animations[animationName];\n var step = animationType(animationProgress);\n if (frameTime >= animationTime) {\n callback(lastStep);\n contextInstance.animation = null;\n }\n else if (contextInstance.animation) {\n callback(step);\n requestAnimationFrame(contextInstance.animation);\n }\n };\n requestAnimationFrame(contextInstance.animation);\n}\nfunction isValidTargetState(targetState) {\n var scale = targetState.scale, positionX = targetState.positionX, positionY = targetState.positionY;\n if (Number.isNaN(scale) ||\n Number.isNaN(positionX) ||\n Number.isNaN(positionY)) {\n return false;\n }\n return true;\n}\nfunction animate(contextInstance, targetState, animationTime, animationName) {\n var isValid = isValidTargetState(targetState);\n if (!contextInstance.mounted || !isValid)\n return;\n var setTransformState = contextInstance.setTransformState;\n var _a = contextInstance.transformState, scale = _a.scale, positionX = _a.positionX, positionY = _a.positionY;\n var scaleDiff = targetState.scale - scale;\n var positionXDiff = targetState.positionX - positionX;\n var positionYDiff = targetState.positionY - positionY;\n if (animationTime === 0) {\n setTransformState(targetState.scale, targetState.positionX, targetState.positionY);\n }\n else {\n // animation start timestamp\n handleSetupAnimation(contextInstance, animationName, animationTime, function (step) {\n var newScale = scale + scaleDiff * step;\n var newPositionX = positionX + positionXDiff * step;\n var newPositionY = positionY + positionYDiff * step;\n setTransformState(newScale, newPositionX, newPositionY);\n });\n }\n}\n\n/* eslint-disable no-param-reassign */\nfunction getComponentsSizes(wrapperComponent, contentComponent, newScale) {\n var wrapperWidth = wrapperComponent.offsetWidth;\n var wrapperHeight = wrapperComponent.offsetHeight;\n var contentWidth = contentComponent.offsetWidth;\n var contentHeight = contentComponent.offsetHeight;\n var newContentWidth = contentWidth * newScale;\n var newContentHeight = contentHeight * newScale;\n var newDiffWidth = wrapperWidth - newContentWidth;\n var newDiffHeight = wrapperHeight - newContentHeight;\n return {\n wrapperWidth: wrapperWidth,\n wrapperHeight: wrapperHeight,\n newContentWidth: newContentWidth,\n newDiffWidth: newDiffWidth,\n newContentHeight: newContentHeight,\n newDiffHeight: newDiffHeight,\n };\n}\nvar getBounds = function (wrapperWidth, newContentWidth, diffWidth, wrapperHeight, newContentHeight, diffHeight, centerZoomedOut) {\n var scaleWidthFactor = wrapperWidth > newContentWidth\n ? diffWidth * (centerZoomedOut ? 1 : 0.5)\n : 0;\n var scaleHeightFactor = wrapperHeight > newContentHeight\n ? diffHeight * (centerZoomedOut ? 1 : 0.5)\n : 0;\n var minPositionX = wrapperWidth - newContentWidth - scaleWidthFactor;\n var maxPositionX = scaleWidthFactor;\n var minPositionY = wrapperHeight - newContentHeight - scaleHeightFactor;\n var maxPositionY = scaleHeightFactor;\n return { minPositionX: minPositionX, maxPositionX: maxPositionX, minPositionY: minPositionY, maxPositionY: maxPositionY };\n};\nvar calculateBounds = function (contextInstance, newScale) {\n var wrapperComponent = contextInstance.wrapperComponent, contentComponent = contextInstance.contentComponent;\n var centerZoomedOut = contextInstance.setup.centerZoomedOut;\n if (!wrapperComponent || !contentComponent) {\n throw new Error(\"Components are not mounted\");\n }\n var _a = getComponentsSizes(wrapperComponent, contentComponent, newScale), wrapperWidth = _a.wrapperWidth, wrapperHeight = _a.wrapperHeight, newContentWidth = _a.newContentWidth, newDiffWidth = _a.newDiffWidth, newContentHeight = _a.newContentHeight, newDiffHeight = _a.newDiffHeight;\n var bounds = getBounds(wrapperWidth, newContentWidth, newDiffWidth, wrapperHeight, newContentHeight, newDiffHeight, Boolean(centerZoomedOut));\n return bounds;\n};\n/**\n * Keeps value between given bounds, used for limiting view to given boundaries\n * 1# eg. boundLimiter(2, 0, 3, true) => 2\n * 2# eg. boundLimiter(4, 0, 3, true) => 3\n * 3# eg. boundLimiter(-2, 0, 3, true) => 0\n * 4# eg. boundLimiter(10, 0, 3, false) => 10\n */\nvar boundLimiter = function (value, minBound, maxBound, isActive) {\n if (!isActive)\n return roundNumber(value, 2);\n if (value < minBound)\n return roundNumber(minBound, 2);\n if (value > maxBound)\n return roundNumber(maxBound, 2);\n return roundNumber(value, 2);\n};\nvar handleCalculateBounds = function (contextInstance, newScale) {\n var bounds = calculateBounds(contextInstance, newScale);\n // Save bounds\n contextInstance.bounds = bounds;\n return bounds;\n};\nfunction getMouseBoundedPosition(positionX, positionY, bounds, limitToBounds, paddingValueX, paddingValueY, wrapperComponent) {\n var minPositionX = bounds.minPositionX, minPositionY = bounds.minPositionY, maxPositionX = bounds.maxPositionX, maxPositionY = bounds.maxPositionY;\n var paddingX = 0;\n var paddingY = 0;\n if (wrapperComponent) {\n paddingX = paddingValueX;\n paddingY = paddingValueY;\n }\n var x = boundLimiter(positionX, minPositionX - paddingX, maxPositionX + paddingX, limitToBounds);\n var y = boundLimiter(positionY, minPositionY - paddingY, maxPositionY + paddingY, limitToBounds);\n return { x: x, y: y };\n}\n\nfunction handleCalculateZoomPositions(contextInstance, mouseX, mouseY, newScale, bounds, limitToBounds) {\n var _a = contextInstance.transformState, scale = _a.scale, positionX = _a.positionX, positionY = _a.positionY;\n var scaleDifference = newScale - scale;\n if (typeof mouseX !== \"number\" || typeof mouseY !== \"number\") {\n console.error(\"Mouse X and Y position were not provided!\");\n return { x: positionX, y: positionY };\n }\n var calculatedPositionX = positionX - mouseX * scaleDifference;\n var calculatedPositionY = positionY - mouseY * scaleDifference;\n // do not limit to bounds when there is padding animation,\n // it causes animation strange behaviour\n var newPositions = getMouseBoundedPosition(calculatedPositionX, calculatedPositionY, bounds, limitToBounds, 0, 0, null);\n return newPositions;\n}\nfunction checkZoomBounds(zoom, minScale, maxScale, zoomPadding, enablePadding) {\n var scalePadding = enablePadding ? zoomPadding : 0;\n var minScaleWithPadding = minScale - scalePadding;\n if (!Number.isNaN(maxScale) && zoom >= maxScale)\n return maxScale;\n if (!Number.isNaN(minScale) && zoom <= minScaleWithPadding)\n return minScaleWithPadding;\n return zoom;\n}\n\nvar isPanningStartAllowed = function (contextInstance, event) {\n var excluded = contextInstance.setup.panning.excluded;\n var isInitialized = contextInstance.isInitialized, wrapperComponent = contextInstance.wrapperComponent;\n var target = event.target;\n var targetIsShadowDom = \"shadowRoot\" in target && \"composedPath\" in event;\n var isWrapperChild = targetIsShadowDom\n ? event.composedPath().some(function (el) {\n if (!(el instanceof Element)) {\n return false;\n }\n return wrapperComponent === null || wrapperComponent === void 0 ? void 0 : wrapperComponent.contains(el);\n })\n : wrapperComponent === null || wrapperComponent === void 0 ? void 0 : wrapperComponent.contains(target);\n var isAllowed = isInitialized && target && isWrapperChild;\n if (!isAllowed)\n return false;\n var isExcluded = isExcludedNode(target, excluded);\n if (isExcluded)\n return false;\n return true;\n};\nvar isPanningAllowed = function (contextInstance) {\n var isInitialized = contextInstance.isInitialized, isPanning = contextInstance.isPanning, setup = contextInstance.setup;\n var disabled = setup.panning.disabled;\n var isAllowed = isInitialized && isPanning && !disabled;\n if (!isAllowed)\n return false;\n return true;\n};\nvar handlePanningSetup = function (contextInstance, event) {\n var _a = contextInstance.transformState, positionX = _a.positionX, positionY = _a.positionY;\n contextInstance.isPanning = true;\n // Panning with mouse\n var x = event.clientX;\n var y = event.clientY;\n contextInstance.startCoords = { x: x - positionX, y: y - positionY };\n};\nvar handleTouchPanningSetup = function (contextInstance, event) {\n var touches = event.touches;\n var _a = contextInstance.transformState, positionX = _a.positionX, positionY = _a.positionY;\n contextInstance.isPanning = true;\n // Panning with touch\n var oneFingerTouch = touches.length === 1;\n if (oneFingerTouch) {\n var x = touches[0].clientX;\n var y = touches[0].clientY;\n contextInstance.startCoords = { x: x - positionX, y: y - positionY };\n }\n};\nfunction handlePanToBounds(contextInstance) {\n var _a = contextInstance.transformState, positionX = _a.positionX, positionY = _a.positionY, scale = _a.scale;\n var _b = contextInstance.setup, disabled = _b.disabled, limitToBounds = _b.limitToBounds, centerZoomedOut = _b.centerZoomedOut;\n var wrapperComponent = contextInstance.wrapperComponent;\n if (disabled || !wrapperComponent || !contextInstance.bounds)\n return;\n var _c = contextInstance.bounds, maxPositionX = _c.maxPositionX, minPositionX = _c.minPositionX, maxPositionY = _c.maxPositionY, minPositionY = _c.minPositionY;\n var xChanged = positionX > maxPositionX || positionX < minPositionX;\n var yChanged = positionY > maxPositionY || positionY < minPositionY;\n var mousePosX = positionX > maxPositionX\n ? wrapperComponent.offsetWidth\n : contextInstance.setup.minPositionX || 0;\n var mousePosY = positionY > maxPositionY\n ? wrapperComponent.offsetHeight\n : contextInstance.setup.minPositionY || 0;\n var _d = handleCalculateZoomPositions(contextInstance, mousePosX, mousePosY, scale, contextInstance.bounds, limitToBounds || centerZoomedOut), x = _d.x, y = _d.y;\n return {\n scale: scale,\n positionX: xChanged ? x : positionX,\n positionY: yChanged ? y : positionY,\n };\n}\nfunction handleNewPosition(contextInstance, newPositionX, newPositionY, paddingValueX, paddingValueY) {\n var limitToBounds = contextInstance.setup.limitToBounds;\n var wrapperComponent = contextInstance.wrapperComponent, bounds = contextInstance.bounds;\n var _a = contextInstance.transformState, scale = _a.scale, positionX = _a.positionX, positionY = _a.positionY;\n if (wrapperComponent === null ||\n bounds === null ||\n (newPositionX === positionX && newPositionY === positionY)) {\n return;\n }\n var _b = getMouseBoundedPosition(newPositionX, newPositionY, bounds, limitToBounds, paddingValueX, paddingValueY, wrapperComponent), x = _b.x, y = _b.y;\n contextInstance.setTransformState(scale, x, y);\n}\nvar getPanningClientPosition = function (contextInstance, clientX, clientY) {\n var startCoords = contextInstance.startCoords, transformState = contextInstance.transformState;\n var panning = contextInstance.setup.panning;\n var lockAxisX = panning.lockAxisX, lockAxisY = panning.lockAxisY;\n var positionX = transformState.positionX, positionY = transformState.positionY;\n if (!startCoords) {\n return { x: positionX, y: positionY };\n }\n var mouseX = clientX - startCoords.x;\n var mouseY = clientY - startCoords.y;\n var newPositionX = lockAxisX ? positionX : mouseX;\n var newPositionY = lockAxisY ? positionY : mouseY;\n return { x: newPositionX, y: newPositionY };\n};\nvar getPaddingValue = function (contextInstance, size) {\n var setup = contextInstance.setup, transformState = contextInstance.transformState;\n var scale = transformState.scale;\n var minScale = setup.minScale, disablePadding = setup.disablePadding;\n if (size > 0 && scale >= minScale && !disablePadding) {\n return size;\n }\n return 0;\n};\n\nvar isVelocityCalculationAllowed = function (contextInstance) {\n var mounted = contextInstance.mounted;\n var _a = contextInstance.setup, disabled = _a.disabled, velocityAnimation = _a.velocityAnimation;\n var scale = contextInstance.transformState.scale;\n var disabledVelocity = velocityAnimation.disabled;\n var isAllowed = !disabledVelocity || scale > 1 || !disabled || mounted;\n if (!isAllowed)\n return false;\n return true;\n};\nvar isVelocityAllowed = function (contextInstance) {\n var mounted = contextInstance.mounted, velocity = contextInstance.velocity, bounds = contextInstance.bounds;\n var _a = contextInstance.setup, disabled = _a.disabled, velocityAnimation = _a.velocityAnimation;\n var scale = contextInstance.transformState.scale;\n var disabledVelocity = velocityAnimation.disabled;\n var isAllowed = !disabledVelocity || scale > 1 || !disabled || mounted;\n if (!isAllowed)\n return false;\n if (!velocity || !bounds)\n return false;\n return true;\n};\nfunction getVelocityMoveTime(contextInstance, velocity) {\n var velocityAnimation = contextInstance.setup.velocityAnimation;\n var equalToMove = velocityAnimation.equalToMove, animationTime = velocityAnimation.animationTime, sensitivity = velocityAnimation.sensitivity;\n if (equalToMove) {\n return animationTime * velocity * sensitivity;\n }\n return animationTime;\n}\nfunction getVelocityPosition(newPosition, startPosition, currentPosition, isLocked, limitToBounds, minPosition, maxPosition, minTarget, maxTarget, step) {\n if (limitToBounds) {\n if (startPosition > maxPosition && currentPosition > maxPosition) {\n var calculatedPosition = maxPosition + (newPosition - maxPosition) * step;\n if (calculatedPosition > maxTarget)\n return maxTarget;\n if (calculatedPosition < maxPosition)\n return maxPosition;\n return calculatedPosition;\n }\n if (startPosition < minPosition && currentPosition < minPosition) {\n var calculatedPosition = minPosition + (newPosition - minPosition) * step;\n if (calculatedPosition < minTarget)\n return minTarget;\n if (calculatedPosition > minPosition)\n return minPosition;\n return calculatedPosition;\n }\n }\n if (isLocked)\n return startPosition;\n return boundLimiter(newPosition, minPosition, maxPosition, limitToBounds);\n}\n\nfunction getSizeMultiplier(wrapperComponent, equalToMove) {\n var defaultMultiplier = 1;\n if (equalToMove) {\n return Math.min(defaultMultiplier, wrapperComponent.offsetWidth / window.innerWidth);\n }\n return defaultMultiplier;\n}\nfunction handleCalculateVelocity(contextInstance, position) {\n var isAllowed = isVelocityCalculationAllowed(contextInstance);\n if (!isAllowed) {\n return;\n }\n var lastMousePosition = contextInstance.lastMousePosition, velocityTime = contextInstance.velocityTime, setup = contextInstance.setup;\n var wrapperComponent = contextInstance.wrapperComponent;\n var equalToMove = setup.velocityAnimation.equalToMove;\n var now = Date.now();\n if (lastMousePosition && velocityTime && wrapperComponent) {\n var sizeMultiplier = getSizeMultiplier(wrapperComponent, equalToMove);\n var distanceX = position.x - lastMousePosition.x;\n var distanceY = position.y - lastMousePosition.y;\n var velocityX = distanceX / sizeMultiplier;\n var velocityY = distanceY / sizeMultiplier;\n var interval = now - velocityTime;\n var speed = distanceX * distanceX + distanceY * distanceY;\n var velocity = Math.sqrt(speed) / interval;\n contextInstance.velocity = { velocityX: velocityX, velocityY: velocityY, total: velocity };\n }\n contextInstance.lastMousePosition = position;\n contextInstance.velocityTime = now;\n}\nfunction handleVelocityPanning(contextInstance) {\n var velocity = contextInstance.velocity, bounds = contextInstance.bounds, setup = contextInstance.setup, wrapperComponent = contextInstance.wrapperComponent;\n var isAllowed = isVelocityAllowed(contextInstance);\n if (!isAllowed || !velocity || !bounds || !wrapperComponent) {\n return;\n }\n var velocityX = velocity.velocityX, velocityY = velocity.velocityY, total = velocity.total;\n var maxPositionX = bounds.maxPositionX, minPositionX = bounds.minPositionX, maxPositionY = bounds.maxPositionY, minPositionY = bounds.minPositionY;\n var limitToBounds = setup.limitToBounds, alignmentAnimation = setup.alignmentAnimation;\n var zoomAnimation = setup.zoomAnimation, panning = setup.panning;\n var lockAxisY = panning.lockAxisY, lockAxisX = panning.lockAxisX;\n var animationType = zoomAnimation.animationType;\n var sizeX = alignmentAnimation.sizeX, sizeY = alignmentAnimation.sizeY, velocityAlignmentTime = alignmentAnimation.velocityAlignmentTime;\n var alignAnimationTime = velocityAlignmentTime;\n var moveAnimationTime = getVelocityMoveTime(contextInstance, total);\n var finalAnimationTime = Math.max(moveAnimationTime, alignAnimationTime);\n var paddingValueX = getPaddingValue(contextInstance, sizeX);\n var paddingValueY = getPaddingValue(contextInstance, sizeY);\n var paddingX = (paddingValueX * wrapperComponent.offsetWidth) / 100;\n var paddingY = (paddingValueY * wrapperComponent.offsetHeight) / 100;\n var maxTargetX = maxPositionX + paddingX;\n var minTargetX = minPositionX - paddingX;\n var maxTargetY = maxPositionY + paddingY;\n var minTargetY = minPositionY - paddingY;\n var startState = contextInstance.transformState;\n var startTime = new Date().getTime();\n handleSetupAnimation(contextInstance, animationType, finalAnimationTime, function (step) {\n var _a = contextInstance.transformState, scale = _a.scale, positionX = _a.positionX, positionY = _a.positionY;\n var frameTime = new Date().getTime() - startTime;\n var animationProgress = frameTime / alignAnimationTime;\n var alignAnimation = animations[alignmentAnimation.animationType];\n var alignStep = 1 - alignAnimation(Math.min(1, animationProgress));\n var customStep = 1 - step;\n var newPositionX = positionX + velocityX * customStep;\n var newPositionY = positionY + velocityY * customStep;\n var currentPositionX = getVelocityPosition(newPositionX, startState.positionX, positionX, lockAxisX, limitToBounds, minPositionX, maxPositionX, minTargetX, maxTargetX, alignStep);\n var currentPositionY = getVelocityPosition(newPositionY, startState.positionY, positionY, lockAxisY, limitToBounds, minPositionY, maxPositionY, minTargetY, maxTargetY, alignStep);\n if (positionX !== newPositionX || positionY !== newPositionY) {\n contextInstance.setTransformState(scale, currentPositionX, currentPositionY);\n }\n });\n}\n\nfunction handlePanningStart(contextInstance, event) {\n var scale = contextInstance.transformState.scale;\n handleCancelAnimation(contextInstance);\n handleCalculateBounds(contextInstance, scale);\n if (window.TouchEvent !== undefined && event instanceof TouchEvent) {\n handleTouchPanningSetup(contextInstance, event);\n }\n else {\n handlePanningSetup(contextInstance, event);\n }\n}\nfunction handleAlignToBounds(contextInstance, customAnimationTime) {\n var scale = contextInstance.transformState.scale;\n var _a = contextInstance.setup, minScale = _a.minScale, alignmentAnimation = _a.alignmentAnimation;\n var disabled = alignmentAnimation.disabled, sizeX = alignmentAnimation.sizeX, sizeY = alignmentAnimation.sizeY, animationTime = alignmentAnimation.animationTime, animationType = alignmentAnimation.animationType;\n var isDisabled = disabled || scale < minScale || (!sizeX && !sizeY);\n if (isDisabled)\n return;\n var targetState = handlePanToBounds(contextInstance);\n if (targetState) {\n animate(contextInstance, targetState, customAnimationTime !== null && customAnimationTime !== void 0 ? customAnimationTime : animationTime, animationType);\n }\n}\nfunction handlePanning(contextInstance, clientX, clientY) {\n var startCoords = contextInstance.startCoords, setup = contextInstance.setup;\n var _a = setup.alignmentAnimation, sizeX = _a.sizeX, sizeY = _a.sizeY;\n if (!startCoords)\n return;\n var _b = getPanningClientPosition(contextInstance, clientX, clientY), x = _b.x, y = _b.y;\n var paddingValueX = getPaddingValue(contextInstance, sizeX);\n var paddingValueY = getPaddingValue(contextInstance, sizeY);\n handleCalculateVelocity(contextInstance, { x: x, y: y });\n handleNewPosition(contextInstance, x, y, paddingValueX, paddingValueY);\n}\nfunction handlePanningEnd(contextInstance) {\n if (contextInstance.isPanning) {\n var velocityDisabled = contextInstance.setup.panning.velocityDisabled;\n var velocity = contextInstance.velocity, wrapperComponent = contextInstance.wrapperComponent, contentComponent = contextInstance.contentComponent;\n contextInstance.isPanning = false;\n contextInstance.animate = false;\n contextInstance.animation = null;\n var wrapperRect = wrapperComponent === null || wrapperComponent === void 0 ? void 0 : wrapperComponent.getBoundingClientRect();\n var contentRect = contentComponent === null || contentComponent === void 0 ? void 0 : contentComponent.getBoundingClientRect();\n var wrapperWidth = (wrapperRect === null || wrapperRect === void 0 ? void 0 : wrapperRect.width) || 0;\n var wrapperHeight = (wrapperRect === null || wrapperRect === void 0 ? void 0 : wrapperRect.height) || 0;\n var contentWidth = (contentRect === null || contentRect === void 0 ? void 0 : contentRect.width) || 0;\n var contentHeight = (contentRect === null || contentRect === void 0 ? void 0 : contentRect.height) || 0;\n var isZoomed = wrapperWidth < contentWidth || wrapperHeight < contentHeight;\n var shouldAnimate = !velocityDisabled && velocity && (velocity === null || velocity === void 0 ? void 0 : velocity.total) > 0.1 && isZoomed;\n if (shouldAnimate) {\n handleVelocityPanning(contextInstance);\n }\n else {\n handleAlignToBounds(contextInstance);\n }\n }\n}\n\nfunction handleZoomToPoint(contextInstance, scale, mouseX, mouseY) {\n var _a = contextInstance.setup, minScale = _a.minScale, maxScale = _a.maxScale, limitToBounds = _a.limitToBounds;\n var newScale = checkZoomBounds(roundNumber(scale, 2), minScale, maxScale, 0, false);\n var bounds = handleCalculateBounds(contextInstance, newScale);\n var _b = handleCalculateZoomPositions(contextInstance, mouseX, mouseY, newScale, bounds, limitToBounds), x = _b.x, y = _b.y;\n return { scale: newScale, positionX: x, positionY: y };\n}\nfunction handleAlignToScaleBounds(contextInstance, mousePositionX, mousePositionY) {\n var scale = contextInstance.transformState.scale;\n var wrapperComponent = contextInstance.wrapperComponent;\n var _a = contextInstance.setup, minScale = _a.minScale, limitToBounds = _a.limitToBounds, zoomAnimation = _a.zoomAnimation;\n var disabled = zoomAnimation.disabled, animationTime = zoomAnimation.animationTime, animationType = zoomAnimation.animationType;\n var isDisabled = disabled || scale >= minScale;\n if (scale >= 1 || limitToBounds) {\n // fire fit to bounds animation\n handleAlignToBounds(contextInstance);\n }\n if (isDisabled || !wrapperComponent || !contextInstance.mounted)\n return;\n var mouseX = mousePositionX || wrapperComponent.offsetWidth / 2;\n var mouseY = mousePositionY || wrapperComponent.offsetHeight / 2;\n var targetState = handleZoomToPoint(contextInstance, minScale, mouseX, mouseY);\n if (targetState) {\n animate(contextInstance, targetState, animationTime, animationType);\n }\n}\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\ntypeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\n\nvar initialState = {\n previousScale: 1,\n scale: 1,\n positionX: 0,\n positionY: 0,\n};\nvar initialSetup = {\n disabled: false,\n minPositionX: null,\n maxPositionX: null,\n minPositionY: null,\n maxPositionY: null,\n minScale: 1,\n maxScale: 8,\n limitToBounds: true,\n centerZoomedOut: false,\n centerOnInit: false,\n disablePadding: false,\n smooth: true,\n wheel: {\n step: 0.2,\n disabled: false,\n smoothStep: 0.001,\n wheelDisabled: false,\n touchPadDisabled: false,\n activationKeys: [],\n excluded: [],\n },\n panning: {\n disabled: false,\n velocityDisabled: false,\n lockAxisX: false,\n lockAxisY: false,\n allowLeftClickPan: true,\n allowMiddleClickPan: true,\n allowRightClickPan: true,\n wheelPanning: false,\n activationKeys: [],\n excluded: [],\n },\n pinch: {\n step: 5,\n disabled: false,\n excluded: [],\n },\n doubleClick: {\n disabled: false,\n step: 0.7,\n mode: \"zoomIn\",\n animationType: \"easeOut\",\n animationTime: 200,\n excluded: [],\n },\n zoomAnimation: {\n disabled: false,\n size: 0.4,\n animationTime: 200,\n animationType: \"easeOut\",\n },\n alignmentAnimation: {\n disabled: false,\n sizeX: 100,\n sizeY: 100,\n animationTime: 200,\n velocityAlignmentTime: 400,\n animationType: \"easeOut\",\n },\n velocityAnimation: {\n disabled: false,\n sensitivity: 1,\n animationTime: 400,\n animationType: \"easeOut\",\n equalToMove: true,\n },\n};\nvar baseClasses = {\n wrapperClass: \"react-transform-wrapper\",\n contentClass: \"react-transform-component\",\n};\n\nvar createState = function (props) {\n var _a, _b, _c, _d;\n return {\n previousScale: (_a = props.initialScale) !== null && _a !== void 0 ? _a : initialState.scale,\n scale: (_b = props.initialScale) !== null && _b !== void 0 ? _b : initialState.scale,\n positionX: (_c = props.initialPositionX) !== null && _c !== void 0 ? _c : initialState.positionX,\n positionY: (_d = props.initialPositionY) !== null && _d !== void 0 ? _d : initialState.positionY,\n };\n};\nvar createSetup = function (props) {\n var newSetup = __assign({}, initialSetup);\n Object.keys(props).forEach(function (key) {\n var validValue = typeof props[key] !== \"undefined\";\n var validParameter = typeof initialSetup[key] !== \"undefined\";\n if (validParameter && validValue) {\n var dataType = Object.prototype.toString.call(initialSetup[key]);\n var isObject = dataType === \"[object Object]\";\n var isArray = dataType === \"[object Array]\";\n if (isObject) {\n newSetup[key] = __assign(__assign({}, initialSetup[key]), props[key]);\n }\n else if (isArray) {\n newSetup[key] = __spreadArray(__spreadArray([], initialSetup[key], true), props[key], true);\n }\n else {\n newSetup[key] = props[key];\n }\n }\n });\n return newSetup;\n};\n\nvar handleCalculateButtonZoom = function (contextInstance, delta, step) {\n var scale = contextInstance.transformState.scale;\n var wrapperComponent = contextInstance.wrapperComponent, setup = contextInstance.setup;\n var maxScale = setup.maxScale, minScale = setup.minScale, zoomAnimation = setup.zoomAnimation, smooth = setup.smooth;\n var size = zoomAnimation.size;\n if (!wrapperComponent) {\n throw new Error(\"Wrapper is not mounted\");\n }\n var targetScale = smooth\n ? scale * Math.exp(delta * step)\n : scale + delta * step;\n var newScale = checkZoomBounds(roundNumber(targetScale, 3), minScale, maxScale, size, false);\n return newScale;\n};\nfunction handleZoomToViewCenter(contextInstance, delta, step, animationTime, animationType) {\n var wrapperComponent = contextInstance.wrapperComponent;\n var _a = contextInstance.transformState, scale = _a.scale, positionX = _a.positionX, positionY = _a.positionY;\n if (!wrapperComponent)\n return console.error(\"No WrapperComponent found\");\n var wrapperWidth = wrapperComponent.offsetWidth;\n var wrapperHeight = wrapperComponent.offsetHeight;\n var mouseX = (wrapperWidth / 2 - positionX) / scale;\n var mouseY = (wrapperHeight / 2 - positionY) / scale;\n var newScale = handleCalculateButtonZoom(contextInstance, delta, step);\n var targetState = handleZoomToPoint(contextInstance, newScale, mouseX, mouseY);\n if (!targetState) {\n return console.error(\"Error during zoom event. New transformation state was not calculated.\");\n }\n animate(contextInstance, targetState, animationTime, animationType);\n}\nfunction resetTransformations(contextInstance, animationTime, animationType, onResetTransformation) {\n var setup = contextInstance.setup, wrapperComponent = contextInstance.wrapperComponent;\n var limitToBounds = setup.limitToBounds;\n var initialTransformation = createState(contextInstance.props);\n var _a = contextInstance.transformState, scale = _a.scale, positionX = _a.positionX, positionY = _a.positionY;\n if (!wrapperComponent)\n return;\n var newBounds = calculateBounds(contextInstance, initialTransformation.scale);\n var boundedPositions = getMouseBoundedPosition(initialTransformation.positionX, initialTransformation.positionY, newBounds, limitToBounds, 0, 0, wrapperComponent);\n var newState = {\n scale: initialTransformation.scale,\n positionX: boundedPositions.x,\n positionY: boundedPositions.y,\n };\n if (scale === initialTransformation.scale &&\n positionX === initialTransformation.positionX &&\n positionY === initialTransformation.positionY) {\n return;\n }\n onResetTransformation === null || onResetTransformation === void 0 ? void 0 : onResetTransformation();\n animate(contextInstance, newState, animationTime, animationType);\n}\nfunction getOffset(element, wrapper, content, state) {\n var offset = element.getBoundingClientRect();\n var wrapperOffset = wrapper.getBoundingClientRect();\n var contentOffset = content.getBoundingClientRect();\n var xOff = wrapperOffset.x * state.scale;\n var yOff = wrapperOffset.y * state.scale;\n return {\n x: (offset.x - contentOffset.x + xOff) / state.scale,\n y: (offset.y - contentOffset.y + yOff) / state.scale,\n };\n}\nfunction calculateZoomToNode(contextInstance, node, customZoom) {\n var wrapperComponent = contextInstance.wrapperComponent, contentComponent = contextInstance.contentComponent, transformState = contextInstance.transformState;\n var _a = contextInstance.setup, limitToBounds = _a.limitToBounds, minScale = _a.minScale, maxScale = _a.maxScale;\n if (!wrapperComponent || !contentComponent)\n return transformState;\n var wrapperRect = wrapperComponent.getBoundingClientRect();\n var nodeRect = node.getBoundingClientRect();\n var nodeOffset = getOffset(node, wrapperComponent, contentComponent, transformState);\n var nodeLeft = nodeOffset.x;\n var nodeTop = nodeOffset.y;\n var nodeWidth = nodeRect.width / transformState.scale;\n var nodeHeight = nodeRect.height / transformState.scale;\n var scaleX = wrapperComponent.offsetWidth / nodeWidth;\n var scaleY = wrapperComponent.offsetHeight / nodeHeight;\n var newScale = checkZoomBounds(customZoom || Math.min(scaleX, scaleY), minScale, maxScale, 0, false);\n var offsetX = (wrapperRect.width - nodeWidth * newScale) / 2;\n var offsetY = (wrapperRect.height - nodeHeight * newScale) / 2;\n var newPositionX = (wrapperRect.left - nodeLeft) * newScale + offsetX;\n var newPositionY = (wrapperRect.top - nodeTop) * newScale + offsetY;\n var bounds = calculateBounds(contextInstance, newScale);\n var _b = getMouseBoundedPosition(newPositionX, newPositionY, bounds, limitToBounds, 0, 0, wrapperComponent), x = _b.x, y = _b.y;\n return { positionX: x, positionY: y, scale: newScale };\n}\n\nvar zoomIn = function (contextInstance) {\n return function (step, animationTime, animationType) {\n if (step === void 0) { step = 0.5; }\n if (animationTime === void 0) { animationTime = 300; }\n if (animationType === void 0) { animationType = \"easeOut\"; }\n handleZoomToViewCenter(contextInstance, 1, step, animationTime, animationType);\n };\n};\nvar zoomOut = function (contextInstance) {\n return function (step, animationTime, animationType) {\n if (step === void 0) { step = 0.5; }\n if (animationTime === void 0) { animationTime = 300; }\n if (animationType === void 0) { animationType = \"easeOut\"; }\n handleZoomToViewCenter(contextInstance, -1, step, animationTime, animationType);\n };\n};\nvar setTransform = function (contextInstance) {\n return function (newPositionX, newPositionY, newScale, animationTime, animationType) {\n if (animationTime === void 0) { animationTime = 300; }\n if (animationType === void 0) { animationType = \"easeOut\"; }\n var _a = contextInstance.transformState, positionX = _a.positionX, positionY = _a.positionY, scale = _a.scale;\n var wrapperComponent = contextInstance.wrapperComponent, contentComponent = contextInstance.contentComponent;\n var disabled = contextInstance.setup.disabled;\n if (disabled || !wrapperComponent || !contentComponent)\n return;\n var targetState = {\n positionX: Number.isNaN(newPositionX) ? positionX : newPositionX,\n positionY: Number.isNaN(newPositionY) ? positionY : newPositionY,\n scale: Number.isNaN(newScale) ? scale : newScale,\n };\n animate(contextInstance, targetState, animationTime, animationType);\n };\n};\nvar resetTransform = function (contextInstance) {\n return function (animationTime, animationType) {\n if (animationTime === void 0) { animationTime = 200; }\n if (animationType === void 0) { animationType = \"easeOut\"; }\n resetTransformations(contextInstance, animationTime, animationType);\n };\n};\nvar centerView = function (contextInstance) {\n return function (scale, animationTime, animationType) {\n if (animationTime === void 0) { animationTime = 200; }\n if (animationType === void 0) { animationType = \"easeOut\"; }\n var transformState = contextInstance.transformState, wrapperComponent = contextInstance.wrapperComponent, contentComponent = contextInstance.contentComponent;\n if (wrapperComponent && contentComponent) {\n var targetState = getCenterPosition(scale || transformState.scale, wrapperComponent, contentComponent);\n animate(contextInstance, targetState, animationTime, animationType);\n }\n };\n};\nvar zoomToElement = function (contextInstance) {\n return function (node, scale, animationTime, animationType) {\n if (animationTime === void 0) { animationTime = 600; }\n if (animationType === void 0) { animationType = \"easeOut\"; }\n handleCancelAnimation(contextInstance);\n var wrapperComponent = contextInstance.wrapperComponent;\n var target = typeof node === \"string\" ? document.getElementById(node) : node;\n if (wrapperComponent && target && wrapperComponent.contains(target)) {\n var targetState = calculateZoomToNode(contextInstance, target, scale);\n animate(contextInstance, targetState, animationTime, animationType);\n }\n };\n};\n\nvar getControls = function (contextInstance) {\n return {\n instance: contextInstance,\n zoomIn: zoomIn(contextInstance),\n zoomOut: zoomOut(contextInstance),\n setTransform: setTransform(contextInstance),\n resetTransform: resetTransform(contextInstance),\n centerView: centerView(contextInstance),\n zoomToElement: zoomToElement(contextInstance),\n };\n};\nvar getState = function (contextInstance) {\n return {\n instance: contextInstance,\n state: contextInstance.transformState,\n };\n};\nvar getContext = function (contextInstance) {\n var ref = {};\n Object.assign(ref, getState(contextInstance));\n Object.assign(ref, getControls(contextInstance));\n return ref;\n};\n\n// We want to make event listeners non-passive, and to do so have to check\n// that browsers support EventListenerOptions in the first place.\n// https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support\nvar passiveSupported = false;\nfunction makePassiveEventOption() {\n try {\n var options = {\n get passive() {\n // This function will be called when the browser\n // attempts to access the passive property.\n passiveSupported = true;\n return false;\n },\n };\n return options;\n }\n catch (err) {\n passiveSupported = false;\n return passiveSupported;\n }\n}\n\nvar matchPrefix = \".\".concat(baseClasses.wrapperClass);\nvar isExcludedNode = function (node, excluded) {\n return excluded.some(function (exclude) {\n return node.matches(\"\".concat(matchPrefix, \" \").concat(exclude, \", \").concat(matchPrefix, \" .\").concat(exclude, \", \").concat(matchPrefix, \" \").concat(exclude, \" *, \").concat(matchPrefix, \" .\").concat(exclude, \" *\"));\n });\n};\nvar cancelTimeout = function (timeout) {\n if (timeout) {\n clearTimeout(timeout);\n }\n};\n\nvar getTransformStyles = function (x, y, scale) {\n // Standard translate prevents blurry svg on the safari\n return \"translate(\".concat(x, \"px, \").concat(y, \"px) scale(\").concat(scale, \")\");\n};\nvar getMatrixTransformStyles = function (x, y, scale) {\n // The shorthand for matrix does not work for Safari hence the need to explicitly use matrix3d\n // Refer to https://developer.mozilla.org/en-US/docs/Web/CSS/transform-function/matrix\n var a = scale;\n var b = 0;\n var c = 0;\n var d = scale;\n var tx = x;\n var ty = y;\n return \"matrix3d(\".concat(a, \", \").concat(b, \", 0, 0, \").concat(c, \", \").concat(d, \", 0, 0, 0, 0, 1, 0, \").concat(tx, \", \").concat(ty, \", 0, 1)\");\n};\nvar getCenterPosition = function (scale, wrapperComponent, contentComponent) {\n var contentWidth = contentComponent.offsetWidth * scale;\n var contentHeight = contentComponent.offsetHeight * scale;\n var centerPositionX = (wrapperComponent.offsetWidth - contentWidth) / 2;\n var centerPositionY = (wrapperComponent.offsetHeight - contentHeight) / 2;\n return {\n scale: scale,\n positionX: centerPositionX,\n positionY: centerPositionY,\n };\n};\n\nfunction mergeRefs(refs) {\n return function (value) {\n refs.forEach(function (ref) {\n if (typeof ref === \"function\") {\n ref(value);\n }\n else if (ref != null) {\n ref.current = value;\n }\n });\n };\n}\n\nvar isWheelAllowed = function (contextInstance, event) {\n var _a = contextInstance.setup.wheel, disabled = _a.disabled, wheelDisabled = _a.wheelDisabled, touchPadDisabled = _a.touchPadDisabled, excluded = _a.excluded;\n var isInitialized = contextInstance.isInitialized, isPanning = contextInstance.isPanning;\n var target = event.target;\n var isAllowed = isInitialized && !isPanning && !disabled && target;\n if (!isAllowed)\n return false;\n // Event ctrlKey detects if touchpad action is executing wheel or pinch gesture\n if (wheelDisabled && !event.ctrlKey)\n return false;\n if (touchPadDisabled && event.ctrlKey)\n return false;\n var isExcluded = isExcludedNode(target, excluded);\n if (isExcluded)\n return false;\n return true;\n};\nvar getDeltaY = function (event) {\n if (event) {\n return event.deltaY < 0 ? 1 : -1;\n }\n return 0;\n};\nfunction getDelta(event, customDelta) {\n var deltaY = getDeltaY(event);\n var delta = checkIsNumber(customDelta, deltaY);\n return delta;\n}\nfunction getMousePosition(event, contentComponent, scale) {\n var contentRect = contentComponent.getBoundingClientRect();\n var mouseX = 0;\n var mouseY = 0;\n if (\"clientX\" in event) {\n // mouse position x, y over wrapper component\n mouseX = (event.clientX - contentRect.left) / scale;\n mouseY = (event.clientY - contentRect.top) / scale;\n }\n else {\n var touch = event.touches[0];\n mouseX = (touch.clientX - contentRect.left) / scale;\n mouseY = (touch.clientY - contentRect.top) / scale;\n }\n if (Number.isNaN(mouseX) || Number.isNaN(mouseY))\n console.error(\"No mouse or touch offset found\");\n return {\n x: mouseX,\n y: mouseY,\n };\n}\nvar handleCalculateWheelZoom = function (contextInstance, delta, step, disable, getTarget) {\n var scale = contextInstance.transformState.scale;\n var wrapperComponent = contextInstance.wrapperComponent, setup = contextInstance.setup;\n var maxScale = setup.maxScale, minScale = setup.minScale, zoomAnimation = setup.zoomAnimation, disablePadding = setup.disablePadding;\n var size = zoomAnimation.size, disabled = zoomAnimation.disabled;\n if (!wrapperComponent) {\n throw new Error(\"Wrapper is not mounted\");\n }\n var targetScale = scale + delta * step;\n if (getTarget)\n return targetScale;\n var paddingEnabled = disable ? false : !disabled;\n var newScale = checkZoomBounds(roundNumber(targetScale, 3), minScale, maxScale, size, paddingEnabled && !disablePadding);\n return newScale;\n};\nvar handleWheelZoomStop = function (contextInstance, event) {\n var previousWheelEvent = contextInstance.previousWheelEvent;\n var scale = contextInstance.transformState.scale;\n var _a = contextInstance.setup, maxScale = _a.maxScale, minScale = _a.minScale;\n if (!previousWheelEvent)\n return false;\n if (scale < maxScale || scale > minScale)\n return true;\n if (Math.sign(previousWheelEvent.deltaY) !== Math.sign(event.deltaY))\n return true;\n if (previousWheelEvent.deltaY > 0 && previousWheelEvent.deltaY < event.deltaY)\n return true;\n if (previousWheelEvent.deltaY < 0 && previousWheelEvent.deltaY > event.deltaY)\n return true;\n if (Math.sign(previousWheelEvent.deltaY) !== Math.sign(event.deltaY))\n return true;\n return false;\n};\n\nvar isPinchStartAllowed = function (contextInstance, event) {\n var _a = contextInstance.setup.pinch, disabled = _a.disabled, excluded = _a.excluded;\n var isInitialized = contextInstance.isInitialized;\n var target = event.target;\n var isAllowed = isInitialized && !disabled && target;\n if (!isAllowed)\n return false;\n var isExcluded = isExcludedNode(target, excluded);\n if (isExcluded)\n return false;\n return true;\n};\nvar isPinchAllowed = function (contextInstance) {\n var disabled = contextInstance.setup.pinch.disabled;\n var isInitialized = contextInstance.isInitialized, pinchStartDistance = contextInstance.pinchStartDistance;\n var isAllowed = isInitialized && !disabled && pinchStartDistance;\n if (!isAllowed)\n return false;\n return true;\n};\nvar calculateTouchMidPoint = function (event, scale, contentComponent) {\n var contentRect = contentComponent.getBoundingClientRect();\n var touches = event.touches;\n var firstPointX = roundNumber(touches[0].clientX - contentRect.left, 5);\n var firstPointY = roundNumber(touches[0].clientY - contentRect.top, 5);\n var secondPointX = roundNumber(touches[1].clientX - contentRect.left, 5);\n var secondPointY = roundNumber(touches[1].clientY - contentRect.top, 5);\n return {\n x: (firstPointX + secondPointX) / 2 / scale,\n y: (firstPointY + secondPointY) / 2 / scale,\n };\n};\nvar getTouchDistance = function (event) {\n return Math.sqrt(Math.pow((event.touches[0].pageX - event.touches[1].pageX), 2) +\n Math.pow((event.touches[0].pageY - event.touches[1].pageY), 2));\n};\nvar calculatePinchZoom = function (contextInstance, currentDistance) {\n var pinchStartScale = contextInstance.pinchStartScale, pinchStartDistance = contextInstance.pinchStartDistance, setup = contextInstance.setup;\n var maxScale = setup.maxScale, minScale = setup.minScale, zoomAnimation = setup.zoomAnimation, disablePadding = setup.disablePadding;\n var size = zoomAnimation.size, disabled = zoomAnimation.disabled;\n if (!pinchStartScale || pinchStartDistance === null || !currentDistance) {\n throw new Error(\"Pinch touches distance was not provided\");\n }\n if (currentDistance < 0) {\n return contextInstance.transformState.scale;\n }\n var touchProportion = currentDistance / pinchStartDistance;\n var scaleDifference = touchProportion * pinchStartScale;\n return checkZoomBounds(roundNumber(scaleDifference, 2), minScale, maxScale, size, !disabled && !disablePadding);\n};\n\nvar wheelStopEventTime = 160;\nvar wheelAnimationTime = 100;\nvar handleWheelStart = function (contextInstance, event) {\n var _a = contextInstance.props, onWheelStart = _a.onWheelStart, onZoomStart = _a.onZoomStart;\n if (!contextInstance.wheelStopEventTimer) {\n handleCancelAnimation(contextInstance);\n handleCallback(getContext(contextInstance), event, onWheelStart);\n handleCallback(getContext(contextInstance), event, onZoomStart);\n }\n};\nvar handleWheelZoom = function (contextInstance, event) {\n var _a = contextInstance.props, onWheel = _a.onWheel, onZoom = _a.onZoom;\n var contentComponent = contextInstance.contentComponent, setup = contextInstance.setup, transformState = contextInstance.transformState;\n var scale = transformState.scale;\n var limitToBounds = setup.limitToBounds, centerZoomedOut = setup.centerZoomedOut, zoomAnimation = setup.zoomAnimation, wheel = setup.wheel, disablePadding = setup.disablePadding, smooth = setup.smooth;\n var size = zoomAnimation.size, disabled = zoomAnimation.disabled;\n var step = wheel.step, smoothStep = wheel.smoothStep;\n if (!contentComponent) {\n throw new Error(\"Component not mounted\");\n }\n event.preventDefault();\n event.stopPropagation();\n var delta = getDelta(event, null);\n var zoomStep = smooth ? smoothStep * Math.abs(event.deltaY) : step;\n var newScale = handleCalculateWheelZoom(contextInstance, delta, zoomStep, !event.ctrlKey);\n // if scale not change\n if (scale === newScale)\n return;\n var bounds = handleCalculateBounds(contextInstance, newScale);\n var mousePosition = getMousePosition(event, contentComponent, scale);\n var isPaddingDisabled = disabled || size === 0 || centerZoomedOut || disablePadding;\n var isLimitedToBounds = limitToBounds && isPaddingDisabled;\n var _b = handleCalculateZoomPositions(contextInstance, mousePosition.x, mousePosition.y, newScale, bounds, isLimitedToBounds), x = _b.x, y = _b.y;\n contextInstance.previousWheelEvent = event;\n contextInstance.setTransformState(newScale, x, y);\n handleCallback(getContext(contextInstance), event, onWheel);\n handleCallback(getContext(contextInstance), event, onZoom);\n};\nvar handleWheelStop = function (contextInstance, event) {\n var _a = contextInstance.props, onWheelStop = _a.onWheelStop, onZoomStop = _a.onZoomStop;\n // fire animation\n cancelTimeout(contextInstance.wheelAnimationTimer);\n contextInstance.wheelAnimationTimer = setTimeout(function () {\n if (!contextInstance.mounted)\n return;\n handleAlignToScaleBounds(contextInstance, event.x, event.y);\n contextInstance.wheelAnimationTimer = null;\n }, wheelAnimationTime);\n // Wheel stop event\n var hasStoppedZooming = handleWheelZoomStop(contextInstance, event);\n if (hasStoppedZooming) {\n cancelTimeout(contextInstance.wheelStopEventTimer);\n contextInstance.wheelStopEventTimer = setTimeout(function () {\n if (!contextInstance.mounted)\n return;\n contextInstance.wheelStopEventTimer = null;\n handleCallback(getContext(contextInstance), event, onWheelStop);\n handleCallback(getContext(contextInstance), event, onZoomStop);\n }, wheelStopEventTime);\n }\n};\n\nvar getTouchCenter = function (event) {\n var totalX = 0;\n var totalY = 0;\n // Sum up the positions of all touches\n for (var i = 0; i < 2; i += 1) {\n totalX += event.touches[i].clientX;\n totalY += event.touches[i].clientY;\n }\n // Calculate the average position\n var x = totalX / 2;\n var y = totalY / 2;\n return { x: x, y: y };\n};\nvar handlePinchStart = function (contextInstance, event) {\n var distance = getTouchDistance(event);\n contextInstance.pinchStartDistance = distance;\n contextInstance.lastDistance = distance;\n contextInstance.pinchStartScale = contextInstance.transformState.scale;\n contextInstance.isPanning = false;\n var center = getTouchCenter(event);\n contextInstance.pinchLastCenterX = center.x;\n contextInstance.pinchLastCenterY = center.y;\n handleCancelAnimation(contextInstance);\n};\nvar handlePinchZoom = function (contextInstance, event) {\n var contentComponent = contextInstance.contentComponent, pinchStartDistance = contextInstance.pinchStartDistance, wrapperComponent = contextInstance.wrapperComponent;\n var scale = contextInstance.transformState.scale;\n var _a = contextInstance.setup, limitToBounds = _a.limitToBounds, centerZoomedOut = _a.centerZoomedOut, zoomAnimation = _a.zoomAnimation, alignmentAnimation = _a.alignmentAnimation;\n var disabled = zoomAnimation.disabled, size = zoomAnimation.size;\n // if one finger starts from outside of wrapper\n if (pinchStartDistance === null || !contentComponent)\n return;\n var midPoint = calculateTouchMidPoint(event, scale, contentComponent);\n // if touches goes off of the wrapper element\n if (!Number.isFinite(midPoint.x) || !Number.isFinite(midPoint.y))\n return;\n var currentDistance = getTouchDistance(event);\n var newScale = calculatePinchZoom(contextInstance, currentDistance);\n var center = getTouchCenter(event);\n // pan should be scale invariant.\n var panX = center.x - (contextInstance.pinchLastCenterX || 0);\n var panY = center.y - (contextInstance.pinchLastCenterY || 0);\n if (newScale === scale && panX === 0 && panY === 0)\n return;\n contextInstance.pinchLastCenterX = center.x;\n contextInstance.pinchLastCenterY = center.y;\n var bounds = handleCalculateBounds(contextInstance, newScale);\n var isPaddingDisabled = disabled || size === 0 || centerZoomedOut;\n var isLimitedToBounds = limitToBounds && isPaddingDisabled;\n var _b = handleCalculateZoomPositions(contextInstance, midPoint.x, midPoint.y, newScale, bounds, isLimitedToBounds), x = _b.x, y = _b.y;\n contextInstance.pinchMidpoint = midPoint;\n contextInstance.lastDistance = currentDistance;\n var sizeX = alignmentAnimation.sizeX, sizeY = alignmentAnimation.sizeY;\n var paddingValueX = getPaddingValue(contextInstance, sizeX);\n var paddingValueY = getPaddingValue(contextInstance, sizeY);\n var newPositionX = x + panX;\n var newPositionY = y + panY;\n var _c = getMouseBoundedPosition(newPositionX, newPositionY, bounds, limitToBounds, paddingValueX, paddingValueY, wrapperComponent), finalX = _c.x, finalY = _c.y;\n contextInstance.setTransformState(newScale, finalX, finalY);\n};\nvar handlePinchStop = function (contextInstance) {\n var pinchMidpoint = contextInstance.pinchMidpoint;\n contextInstance.velocity = null;\n contextInstance.lastDistance = null;\n contextInstance.pinchMidpoint = null;\n contextInstance.pinchStartScale = null;\n contextInstance.pinchStartDistance = null;\n handleAlignToScaleBounds(contextInstance, pinchMidpoint === null || pinchMidpoint === void 0 ? void 0 : pinchMidpoint.x, pinchMidpoint === null || pinchMidpoint === void 0 ? void 0 : pinchMidpoint.y);\n};\n\nvar handleDoubleClickStop = function (contextInstance, event) {\n var onZoomStop = contextInstance.props.onZoomStop;\n var animationTime = contextInstance.setup.doubleClick.animationTime;\n cancelTimeout(contextInstance.doubleClickStopEventTimer);\n contextInstance.doubleClickStopEventTimer = setTimeout(function () {\n contextInstance.doubleClickStopEventTimer = null;\n handleCallback(getContext(contextInstance), event, onZoomStop);\n }, animationTime);\n};\nvar handleDoubleClickResetMode = function (contextInstance, event) {\n var _a = contextInstance.props, onZoomStart = _a.onZoomStart, onZoom = _a.onZoom;\n var _b = contextInstance.setup.doubleClick, animationTime = _b.animationTime, animationType = _b.animationType;\n handleCallback(getContext(contextInstance), event, onZoomStart);\n resetTransformations(contextInstance, animationTime, animationType, function () {\n return handleCallback(getContext(contextInstance), event, onZoom);\n });\n handleDoubleClickStop(contextInstance, event);\n};\nfunction getDoubleClickScale(mode, scale) {\n if (mode === \"toggle\") {\n return scale === 1 ? 1 : -1;\n }\n return mode === \"zoomOut\" ? -1 : 1;\n}\nfunction handleDoubleClick(contextInstance, event) {\n var setup = contextInstance.setup, doubleClickStopEventTimer = contextInstance.doubleClickStopEventTimer, transformState = contextInstance.transformState, contentComponent = contextInstance.contentComponent;\n var scale = transformState.scale;\n var _a = contextInstance.props, onZoomStart = _a.onZoomStart, onZoom = _a.onZoom;\n var _b = setup.doubleClick, disabled = _b.disabled, mode = _b.mode, step = _b.step, animationTime = _b.animationTime, animationType = _b.animationType;\n if (disabled)\n return;\n if (doubleClickStopEventTimer)\n return;\n if (mode === \"reset\") {\n return handleDoubleClickResetMode(contextInstance, event);\n }\n if (!contentComponent)\n return console.error(\"No ContentComponent found\");\n var delta = getDoubleClickScale(mode, contextInstance.transformState.scale);\n var newScale = handleCalculateButtonZoom(contextInstance, delta, step);\n // stop execution when scale didn't change\n if (scale === newScale)\n return;\n handleCallback(getContext(contextInstance), event, onZoomStart);\n var mousePosition = getMousePosition(event, contentComponent, scale);\n var targetState = handleZoomToPoint(contextInstance, newScale, mousePosition.x, mousePosition.y);\n if (!targetState) {\n return console.error(\"Error during zoom event. New transformation state was not calculated.\");\n }\n handleCallback(getContext(contextInstance), event, onZoom);\n animate(contextInstance, targetState, animationTime, animationType);\n handleDoubleClickStop(contextInstance, event);\n}\nvar isDoubleClickAllowed = function (contextInstance, event) {\n var isInitialized = contextInstance.isInitialized, setup = contextInstance.setup, wrapperComponent = contextInstance.wrapperComponent;\n var _a = setup.doubleClick, disabled = _a.disabled, excluded = _a.excluded;\n var target = event.target;\n var isWrapperChild = wrapperComponent === null || wrapperComponent === void 0 ? void 0 : wrapperComponent.contains(target);\n var isAllowed = isInitialized && target && isWrapperChild && !disabled;\n if (!isAllowed)\n return false;\n var isExcluded = isExcludedNode(target, excluded);\n if (isExcluded)\n return false;\n return true;\n};\n\nvar ZoomPanPinch = /** @class */ (function () {\n function ZoomPanPinch(props) {\n var _this = this;\n this.mounted = true;\n this.pinchLastCenterX = null;\n this.pinchLastCenterY = null;\n this.onChangeCallbacks = new Set();\n this.onInitCallbacks = new Set();\n // Components\n this.wrapperComponent = null;\n this.contentComponent = null;\n // Initialization\n this.isInitialized = false;\n this.bounds = null;\n // wheel helpers\n this.previousWheelEvent = null;\n this.wheelStopEventTimer = null;\n this.wheelAnimationTimer = null;\n // panning helpers\n this.isPanning = false;\n this.isWheelPanning = false;\n this.startCoords = null;\n this.lastTouch = null;\n // pinch helpers\n this.distance = null;\n this.lastDistance = null;\n this.pinchStartDistance = null;\n this.pinchStartScale = null;\n this.pinchMidpoint = null;\n // double click helpers\n this.doubleClickStopEventTimer = null;\n // velocity helpers\n this.velocity = null;\n this.velocityTime = null;\n this.lastMousePosition = null;\n // animations helpers\n this.animate = false;\n this.animation = null;\n this.maxBounds = null;\n // key press\n this.pressedKeys = {};\n this.mount = function () {\n _this.initializeWindowEvents();\n };\n this.unmount = function () {\n _this.cleanupWindowEvents();\n };\n this.update = function (newProps) {\n _this.props = newProps;\n handleCalculateBounds(_this, _this.transformState.scale);\n _this.setup = createSetup(newProps);\n };\n this.initializeWindowEvents = function () {\n var _a, _b;\n var passive = makePassiveEventOption();\n var currentDocument = (_a = _this.wrapperComponent) === null || _a === void 0 ? void 0 : _a.ownerDocument;\n var currentWindow = currentDocument === null || currentDocument === void 0 ? void 0 : currentDocument.defaultView;\n (_b = _this.wrapperComponent) === null || _b === void 0 ? void 0 : _b.addEventListener(\"wheel\", _this.onWheelPanning, passive);\n // Panning on window to allow panning when mouse is out of component wrapper\n currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.addEventListener(\"mousedown\", _this.onPanningStart, passive);\n currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.addEventListener(\"mousemove\", _this.onPanning, passive);\n currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.addEventListener(\"mouseup\", _this.onPanningStop, passive);\n currentDocument === null || currentDocument === void 0 ? void 0 : currentDocument.addEventListener(\"mouseleave\", _this.clearPanning, passive);\n currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.addEventListener(\"keyup\", _this.setKeyUnPressed, passive);\n currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.addEventListener(\"keydown\", _this.setKeyPressed, passive);\n };\n this.cleanupWindowEvents = function () {\n var _a, _b;\n var passive = makePassiveEventOption();\n var currentDocument = (_a = _this.wrapperComponent) === null || _a === void 0 ? void 0 : _a.ownerDocument;\n var currentWindow = currentDocument === null || currentDocument === void 0 ? void 0 : currentDocument.defaultView;\n currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.removeEventListener(\"mousedown\", _this.onPanningStart, passive);\n currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.removeEventListener(\"mousemove\", _this.onPanning, passive);\n currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.removeEventListener(\"mouseup\", _this.onPanningStop, passive);\n currentDocument === null || currentDocument === void 0 ? void 0 : currentDocument.removeEventListener(\"mouseleave\", _this.clearPanning, passive);\n currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.removeEventListener(\"keyup\", _this.setKeyUnPressed, passive);\n currentWindow === null || currentWindow === void 0 ? void 0 : currentWindow.removeEventListener(\"keydown\", _this.setKeyPressed, passive);\n document.removeEventListener(\"mouseleave\", _this.clearPanning, passive);\n handleCancelAnimation(_this);\n (_b = _this.observer) === null || _b === void 0 ? void 0 : _b.disconnect();\n };\n this.handleInitializeWrapperEvents = function (wrapper) {\n // Zooming events on wrapper\n var passive = makePassiveEventOption();\n wrapper.addEventListener(\"wheel\", _this.onWheelZoom, passive);\n wrapper.addEventListener(\"dblclick\", _this.onDoubleClick, passive);\n wrapper.addEventListener(\"touchstart\", _this.onTouchPanningStart, passive);\n wrapper.addEventListener(\"touchmove\", _this.onTouchPanning, passive);\n wrapper.addEventListener(\"touchend\", _this.onTouchPanningStop, passive);\n };\n this.handleInitialize = function (wrapper, contentComponent) {\n var isCentered = false;\n var centerOnInit = _this.setup.centerOnInit;\n var hasTarget = function (entries, target) {\n // eslint-disable-next-line no-restricted-syntax\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var entry = entries_1[_i];\n if (entry.target === target) {\n return true;\n }\n }\n return false;\n };\n _this.applyTransformation();\n _this.onInitCallbacks.forEach(function (callback) {\n callback(getContext(_this));\n });\n _this.observer = new ResizeObserver(function (entries) {\n if (hasTarget(entries, wrapper) || hasTarget(entries, contentComponent)) {\n if (centerOnInit && !isCentered) {\n var currentWidth = contentComponent.offsetWidth;\n var currentHeight = contentComponent.offsetHeight;\n if (currentWidth > 0 || currentHeight > 0) {\n isCentered = true;\n _this.setCenter();\n }\n }\n else {\n handleCancelAnimation(_this);\n handleCalculateBounds(_this, _this.transformState.scale);\n handleAlignToBounds(_this, 0);\n }\n }\n });\n // Start observing the target node for configured mutations\n _this.observer.observe(wrapper);\n _this.observer.observe(contentComponent);\n };\n /// ///////\n // Zoom\n /// ///////\n this.onWheelZoom = function (event) {\n var disabled = _this.setup.disabled;\n if (disabled)\n return;\n var isAllowed = isWheelAllowed(_this, event);\n if (!isAllowed)\n return;\n var keysPressed = _this.isPressingKeys(_this.setup.wheel.activationKeys);\n if (!keysPressed)\n return;\n handleWheelStart(_this, event);\n handleWheelZoom(_this, event);\n handleWheelStop(_this, event);\n };\n /// ///////\n // Pan\n /// ///////\n this.onWheelPanning = function (event) {\n var _a = _this.setup, disabled = _a.disabled, wheel = _a.wheel, panning = _a.panning;\n if (!_this.wrapperComponent ||\n !_this.contentComponent ||\n disabled ||\n !wheel.wheelDisabled ||\n panning.disabled ||\n !panning.wheelPanning ||\n event.ctrlKey) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n var _b = _this.transformState, positionX = _b.positionX, positionY = _b.positionY;\n var mouseX = positionX - event.deltaX;\n var mouseY = positionY - event.deltaY;\n var newPositionX = panning.lockAxisX ? positionX : mouseX;\n var newPositionY = panning.lockAxisY ? positionY : mouseY;\n var _c = _this.setup.alignmentAnimation, sizeX = _c.sizeX, sizeY = _c.sizeY;\n var paddingValueX = getPaddingValue(_this, sizeX);\n var paddingValueY = getPaddingValue(_this, sizeY);\n if (newPositionX === positionX && newPositionY === positionY)\n return;\n handleNewPosition(_this, newPositionX, newPositionY, paddingValueX, paddingValueY);\n };\n this.onPanningStart = function (event) {\n var disabled = _this.setup.disabled;\n var onPanningStart = _this.props.onPanningStart;\n if (disabled)\n return;\n var isAllowed = isPanningStartAllowed(_this, event);\n if (!isAllowed)\n return;\n var keysPressed = _this.isPressingKeys(_this.setup.panning.activationKeys);\n if (!keysPressed)\n return;\n if (event.button === 0 && !_this.setup.panning.allowLeftClickPan)\n return;\n if (event.button === 1 && !_this.setup.panning.allowMiddleClickPan)\n return;\n if (event.button === 2 && !_this.setup.panning.allowRightClickPan)\n return;\n event.preventDefault();\n event.stopPropagation();\n handleCancelAnimation(_this);\n handlePanningStart(_this, event);\n handleCallback(getContext(_this), event, onPanningStart);\n };\n this.onPanning = function (event) {\n var disabled = _this.setup.disabled;\n var onPanning = _this.props.onPanning;\n if (disabled)\n return;\n var isAllowed = isPanningAllowed(_this);\n if (!isAllowed)\n return;\n var keysPressed = _this.isPressingKeys(_this.setup.panning.activationKeys);\n if (!keysPressed)\n return;\n event.preventDefault();\n event.stopPropagation();\n handlePanning(_this, event.clientX, event.clientY);\n handleCallback(getContext(_this), event, onPanning);\n };\n this.onPanningStop = function (event) {\n var onPanningStop = _this.props.onPanningStop;\n if (_this.isPanning) {\n handlePanningEnd(_this);\n handleCallback(getContext(_this), event, onPanningStop);\n }\n };\n /// ///////\n // Pinch\n /// ///////\n this.onPinchStart = function (event) {\n var disabled = _this.setup.disabled;\n var _a = _this.props, onPinchingStart = _a.onPinchingStart, onZoomStart = _a.onZoomStart;\n if (disabled)\n return;\n var isAllowed = isPinchStartAllowed(_this, event);\n if (!isAllowed)\n return;\n handlePinchStart(_this, event);\n handleCancelAnimation(_this);\n handleCallback(getContext(_this), event, onPinchingStart);\n handleCallback(getContext(_this), event, onZoomStart);\n };\n this.onPinch = function (event) {\n var disabled = _this.setup.disabled;\n var _a = _this.props, onPinching = _a.onPinching, onZoom = _a.onZoom;\n if (disabled)\n return;\n var isAllowed = isPinchAllowed(_this);\n if (!isAllowed)\n return;\n event.preventDefault();\n event.stopPropagation();\n handlePinchZoom(_this, event);\n handleCallback(getContext(_this), event, onPinching);\n handleCallback(getContext(_this), event, onZoom);\n };\n this.onPinchStop = function (event) {\n var _a = _this.props, onPinchingStop = _a.onPinchingStop, onZoomStop = _a.onZoomStop;\n if (_this.pinchStartScale) {\n handlePinchStop(_this);\n handleCallback(getContext(_this), event, onPinchingStop);\n handleCallback(getContext(_this), event, onZoomStop);\n }\n };\n /// ///////\n // Touch\n /// ///////\n this.onTouchPanningStart = function (event) {\n var disabled = _this.setup.disabled;\n var onPanningStart = _this.props.onPanningStart;\n if (disabled)\n return;\n var isAllowed = isPanningStartAllowed(_this, event);\n if (!isAllowed)\n return;\n var isDoubleTap = _this.lastTouch &&\n +new Date() - _this.lastTouch < 200 &&\n event.touches.length === 1;\n if (!isDoubleTap) {\n _this.lastTouch = +new Date();\n handleCancelAnimation(_this);\n var touches = event.touches;\n var isPanningAction = touches.length === 1;\n var isPinchAction = touches.length === 2;\n if (isPanningAction) {\n handleCancelAnimation(_this);\n handlePanningStart(_this, event);\n handleCallback(getContext(_this), event, onPanningStart);\n }\n if (isPinchAction) {\n _this.onPinchStart(event);\n }\n }\n };\n this.onTouchPanning = function (event) {\n var disabled = _this.setup.disabled;\n var onPanning = _this.props.onPanning;\n if (_this.isPanning && event.touches.length === 1) {\n if (disabled)\n return;\n var isAllowed = isPanningAllowed(_this);\n if (!isAllowed)\n return;\n event.preventDefault();\n event.stopPropagation();\n var touch = event.touches[0];\n handlePanning(_this, touch.clientX, touch.clientY);\n handleCallback(getContext(_this), event, onPanning);\n }\n else if (event.touches.length > 1) {\n _this.onPinch(event);\n }\n };\n this.onTouchPanningStop = function (event) {\n _this.onPanningStop(event);\n _this.onPinchStop(event);\n };\n /// ///////\n // Double Click\n /// ///////\n this.onDoubleClick = function (event) {\n var disabled = _this.setup.disabled;\n if (disabled)\n return;\n var isAllowed = isDoubleClickAllowed(_this, event);\n if (!isAllowed)\n return;\n handleDoubleClick(_this, event);\n };\n /// ///////\n // Helpers\n /// ///////\n this.clearPanning = function (event) {\n if (_this.isPanning) {\n _this.onPanningStop(event);\n }\n };\n this.setKeyPressed = function (e) {\n _this.pressedKeys[e.key] = true;\n };\n this.setKeyUnPressed = function (e) {\n _this.pressedKeys[e.key] = false;\n };\n this.isPressingKeys = function (keys) {\n if (!keys.length) {\n return true;\n }\n return Boolean(keys.find(function (key) { return _this.pressedKeys[key]; }));\n };\n this.setTransformState = function (scale, positionX, positionY) {\n var onTransformed = _this.props.onTransformed;\n if (!Number.isNaN(scale) &&\n !Number.isNaN(positionX) &&\n !Number.isNaN(positionY)) {\n if (scale !== _this.transformState.scale) {\n _this.transformState.previousScale = _this.transformState.scale;\n _this.transformState.scale = scale;\n }\n _this.transformState.positionX = positionX;\n _this.transformState.positionY = positionY;\n _this.applyTransformation();\n var ctx_1 = getContext(_this);\n _this.onChangeCallbacks.forEach(function (callback) { return callback(ctx_1); });\n handleCallback(ctx_1, { scale: scale, positionX: positionX, positionY: positionY }, onTransformed);\n }\n else {\n console.error(\"Detected NaN set state values\");\n }\n };\n this.setCenter = function () {\n if (_this.wrapperComponent && _this.contentComponent) {\n var targetState = getCenterPosition(_this.transformState.scale, _this.wrapperComponent, _this.contentComponent);\n _this.setTransformState(targetState.scale, targetState.positionX, targetState.positionY);\n }\n };\n this.handleTransformStyles = function (x, y, scale) {\n if (_this.props.customTransform) {\n return _this.props.customTransform(x, y, scale);\n }\n return getTransformStyles(x, y, scale);\n };\n this.applyTransformation = function () {\n if (!_this.mounted || !_this.contentComponent)\n return;\n var _a = _this.transformState, scale = _a.scale, positionX = _a.positionX, positionY = _a.positionY;\n var transform = _this.handleTransformStyles(positionX, positionY, scale);\n _this.contentComponent.style.transform = transform;\n };\n this.getContext = function () {\n return getContext(_this);\n };\n /**\n * Hooks\n */\n this.onChange = function (callback) {\n if (!_this.onChangeCallbacks.has(callback)) {\n _this.onChangeCallbacks.add(callback);\n }\n return function () {\n _this.onChangeCallbacks.delete(callback);\n };\n };\n this.onInit = function (callback) {\n if (!_this.onInitCallbacks.has(callback)) {\n _this.onInitCallbacks.add(callback);\n }\n return function () {\n _this.onInitCallbacks.delete(callback);\n };\n };\n /**\n * Initialization\n */\n this.init = function (wrapperComponent, contentComponent) {\n _this.cleanupWindowEvents();\n _this.wrapperComponent = wrapperComponent;\n _this.contentComponent = contentComponent;\n handleCalculateBounds(_this, _this.transformState.scale);\n _this.handleInitializeWrapperEvents(wrapperComponent);\n _this.handleInitialize(wrapperComponent, contentComponent);\n _this.initializeWindowEvents();\n _this.isInitialized = true;\n var ctx = getContext(_this);\n handleCallback(ctx, undefined, _this.props.onInit);\n };\n this.props = props;\n this.setup = createSetup(this.props);\n this.transformState = createState(this.props);\n }\n return ZoomPanPinch;\n}());\n\nvar Context = React.createContext(null);\nvar getContent = function (children, ctx) {\n if (typeof children === \"function\") {\n return children(ctx);\n }\n return children;\n};\nvar TransformWrapper = React.forwardRef(function (props, ref) {\n var instance = useRef(new ZoomPanPinch(props)).current;\n var content = getContent(props.children, getControls(instance));\n useImperativeHandle(ref, function () { return getControls(instance); }, [instance]);\n useEffect(function () {\n instance.update(props);\n }, [instance, props]);\n return React.createElement(Context.Provider, { value: instance }, content);\n});\n\nvar KeepScale = React.forwardRef(function (props, ref) {\n var localRef = useRef(null);\n var instance = useContext(Context);\n useEffect(function () {\n return instance.onChange(function (ctx) {\n if (localRef.current) {\n var positionX = 0;\n var positionY = 0;\n localRef.current.style.transform = instance.handleTransformStyles(positionX, positionY, 1 / ctx.instance.transformState.scale);\n }\n });\n }, [instance]);\n return React.createElement(\"div\", __assign({}, props, { ref: mergeRefs([localRef, ref]) }));\n});\n\nvar initialElementRect = {\n width: 0,\n height: 0,\n y: 0,\n x: 0,\n top: 0,\n bottom: 0,\n left: 0,\n right: 0,\n};\nvar useResize = function (ref, onResize, dependencies) {\n var resizeObserverRef = useRef();\n var rectRef = useRef(initialElementRect);\n var didUnmount = useRef(false);\n useLayoutEffect(function () {\n var _a;\n didUnmount.current = false;\n if (!(\"ResizeObserver\" in window)) {\n return;\n }\n if (ref) {\n resizeObserverRef.current = new ResizeObserver(function (entries) {\n var newSize = ref.getBoundingClientRect();\n if (!Array.isArray(entries) ||\n !entries.length ||\n didUnmount.current ||\n (newSize.width === rectRef.current.width &&\n newSize.height === rectRef.current.height))\n return;\n onResize(newSize, ref);\n rectRef.current = newSize;\n });\n (_a = resizeObserverRef.current) === null || _a === void 0 ? void 0 : _a.observe(ref);\n }\n return function () {\n var _a;\n didUnmount.current = true;\n if (ref) {\n (_a = resizeObserverRef.current) === null || _a === void 0 ? void 0 : _a.unobserve(ref);\n }\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, __spreadArray([onResize, ref], dependencies, true));\n};\n\nvar previewStyles = {\n position: \"absolute\",\n zIndex: 2,\n top: \"0px\",\n left: \"0px\",\n boxSizing: \"border-box\",\n border: \"3px solid red\",\n transformOrigin: \"0% 0%\",\n boxShadow: \"rgba(0,0,0,0.2) 0 0 0 10000000px\",\n};\nvar MiniMap = function (_a) {\n var _b = _a.width, width = _b === void 0 ? 200 : _b, _c = _a.height, height = _c === void 0 ? 200 : _c, _d = _a.borderColor, borderColor = _d === void 0 ? \"red\" : _d, children = _a.children, rest = __rest(_a, [\"width\", \"height\", \"borderColor\", \"children\"]);\n var _e = useState(false), initialized = _e[0], setInitialized = _e[1];\n var instance = useTransformContext();\n var miniMapInstance = useRef(null);\n var mainRef = useRef(null);\n var wrapperRef = useRef(null);\n var previewRef = useRef(null);\n var getViewportSize = useCallback(function () {\n if (instance.wrapperComponent) {\n var rect = instance.wrapperComponent.getBoundingClientRect();\n return {\n width: rect.width,\n height: rect.height,\n };\n }\n return {\n width: 0,\n height: 0,\n };\n }, [instance.wrapperComponent]);\n var getContentSize = useCallback(function () {\n if (instance.contentComponent) {\n var rect = instance.contentComponent.getBoundingClientRect();\n return {\n width: rect.width / instance.transformState.scale,\n height: rect.height / instance.transformState.scale,\n };\n }\n return {\n width: 0,\n height: 0,\n };\n }, [instance.contentComponent, instance.transformState.scale]);\n var computeMiniMapScale = useCallback(function () {\n var contentSize = getContentSize();\n var scaleX = width / contentSize.width;\n var scaleY = height / contentSize.height;\n var scale = scaleY > scaleX ? scaleX : scaleY;\n return scale;\n }, [getContentSize, height, width]);\n var computeMiniMapSize = function () {\n var contentSize = getContentSize();\n var scaleX = width / contentSize.width;\n var scaleY = height / contentSize.height;\n if (scaleY > scaleX) {\n return { width: width, height: contentSize.height * scaleX };\n }\n return { width: contentSize.width * scaleY, height: height };\n };\n var computeMiniMapStyle = function () {\n var scale = computeMiniMapScale();\n var style = {\n transform: \"scale(\".concat(scale || 1, \")\"),\n transformOrigin: \"0% 0%\",\n position: \"absolute\",\n boxSizing: \"border-box\",\n zIndex: 1,\n overflow: \"hidden\",\n };\n Object.keys(style).forEach(function (key) {\n if (wrapperRef.current) {\n wrapperRef.current.style[key] = style[key];\n }\n });\n };\n var transformMiniMap = function () {\n computeMiniMapStyle();\n var miniSize = computeMiniMapSize();\n var wrapSize = getContentSize();\n if (wrapperRef.current) {\n wrapperRef.current.style.width = \"\".concat(wrapSize.width, \"px\");\n wrapperRef.current.style.height = \"\".concat(wrapSize.height, \"px\");\n }\n if (mainRef.current) {\n mainRef.current.style.width = \"\".concat(miniSize.width, \"px\");\n mainRef.current.style.height = \"\".concat(miniSize.height, \"px\");\n }\n if (previewRef.current) {\n var size = getViewportSize();\n var scale = computeMiniMapScale();\n var previewScale = scale * (1 / instance.transformState.scale);\n var transform = instance.handleTransformStyles(-instance.transformState.positionX * previewScale, -instance.transformState.positionY * previewScale, 1);\n previewRef.current.style.transform = transform;\n previewRef.current.style.width = \"\".concat(size.width * previewScale, \"px\");\n previewRef.current.style.height = \"\".concat(size.height * previewScale, \"px\");\n }\n };\n var initialize = function () {\n transformMiniMap();\n };\n useTransformEffect(function () {\n transformMiniMap();\n });\n useTransformInit(function () {\n initialize();\n setInitialized(true);\n });\n useResize(instance.contentComponent, initialize, [initialized]);\n useEffect(function () {\n return instance.onChange(function (zpp) {\n var scale = computeMiniMapScale();\n if (miniMapInstance.current) {\n miniMapInstance.current.instance.transformState.scale =\n zpp.instance.transformState.scale;\n miniMapInstance.current.instance.transformState.positionX =\n zpp.instance.transformState.positionX * scale;\n miniMapInstance.current.instance.transformState.positionY =\n zpp.instance.transformState.positionY * scale;\n }\n });\n }, [computeMiniMapScale, instance, miniMapInstance]);\n var wrapperStyle = useMemo(function () {\n return {\n position: \"relative\",\n zIndex: 2,\n overflow: \"hidden\",\n };\n }, []);\n return (React.createElement(\"div\", __assign({}, rest, { ref: mainRef, style: wrapperStyle, className: \"rzpp-mini-map \".concat(rest.className || \"\") }),\n React.createElement(\"div\", __assign({}, rest, { ref: wrapperRef, className: \"rzpp-wrapper\" }), children),\n React.createElement(\"div\", { className: \"rzpp-preview\", ref: previewRef, style: __assign(__assign({}, previewStyles), { borderColor: borderColor }) })));\n};\n\nfunction styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nvar css_248z = \".transform-component-module_wrapper__SPB86 {\\n position: relative;\\n width: -moz-fit-content;\\n width: fit-content;\\n height: -moz-fit-content;\\n height: fit-content;\\n overflow: hidden;\\n -webkit-touch-callout: none; /* iOS Safari */\\n -webkit-user-select: none; /* Safari */\\n -khtml-user-select: none; /* Konqueror HTML */\\n -moz-user-select: none; /* Firefox */\\n -ms-user-select: none; /* Internet Explorer/Edge */\\n user-select: none;\\n margin: 0;\\n padding: 0;\\n transform: translate3d(0, 0, 0);\\n}\\n.transform-component-module_content__FBWxo {\\n display: flex;\\n flex-wrap: wrap;\\n width: -moz-fit-content;\\n width: fit-content;\\n height: -moz-fit-content;\\n height: fit-content;\\n margin: 0;\\n padding: 0;\\n transform-origin: 0% 0%;\\n}\\n.transform-component-module_content__FBWxo img {\\n pointer-events: none;\\n}\\n\";\nvar styles = {\"wrapper\":\"transform-component-module_wrapper__SPB86\",\"content\":\"transform-component-module_content__FBWxo\"};\nstyleInject(css_248z);\n\nvar TransformComponent = function (_a) {\n var children = _a.children, _b = _a.wrapperClass, wrapperClass = _b === void 0 ? \"\" : _b, _c = _a.contentClass, contentClass = _c === void 0 ? \"\" : _c, wrapperStyle = _a.wrapperStyle, contentStyle = _a.contentStyle, _d = _a.wrapperProps, wrapperProps = _d === void 0 ? {} : _d, _e = _a.contentProps, contentProps = _e === void 0 ? {} : _e;\n var _f = useContext(Context), init = _f.init, cleanupWindowEvents = _f.cleanupWindowEvents;\n var wrapperRef = useRef(null);\n var contentRef = useRef(null);\n useEffect(function () {\n var wrapper = wrapperRef.current;\n var content = contentRef.current;\n if (wrapper !== null && content !== null && init) {\n init === null || init === void 0 ? void 0 : init(wrapper, content);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n return function () {\n cleanupWindowEvents === null || cleanupWindowEvents === void 0 ? void 0 : cleanupWindowEvents();\n };\n }, []);\n return (React.createElement(\"div\", __assign({}, wrapperProps, { ref: wrapperRef, className: \"\".concat(baseClasses.wrapperClass, \" \").concat(styles.wrapper, \" \").concat(wrapperClass), style: wrapperStyle }),\n React.createElement(\"div\", __assign({}, contentProps, { ref: contentRef, className: \"\".concat(baseClasses.contentClass, \" \").concat(styles.content, \" \").concat(contentClass), style: contentStyle }), children)));\n};\n\nvar useTransformContext = function () {\n var libraryContext = useContext(Context);\n if (!libraryContext) {\n throw new Error(\"Transform context must be placed inside TransformWrapper\");\n }\n return libraryContext;\n};\n\nvar useControls = function () {\n var libraryContext = useTransformContext();\n return getControls(libraryContext);\n};\n\nvar useTransformInit = function (callback) {\n var libraryContext = useTransformContext();\n useEffect(function () {\n var unmountCallback;\n var unmount;\n if (libraryContext.contentComponent && libraryContext.wrapperComponent) {\n unmountCallback = callback(getState(libraryContext));\n }\n else {\n unmount = libraryContext.onInit(function (ref) {\n unmountCallback = callback(getState(ref.instance));\n });\n }\n return function () {\n unmount === null || unmount === void 0 ? void 0 : unmount();\n unmountCallback === null || unmountCallback === void 0 ? void 0 : unmountCallback();\n };\n }, []);\n};\n\nvar useTransformEffect = function (callback) {\n var libraryContext = useTransformContext();\n useEffect(function () {\n var unmountCallback;\n var unmount = libraryContext.onChange(function (ref) {\n unmountCallback = callback(getState(ref.instance));\n });\n return function () {\n unmount();\n unmountCallback === null || unmountCallback === void 0 ? void 0 : unmountCallback();\n };\n }, [callback, libraryContext]);\n};\n\nfunction useTransformComponent(callback) {\n var libraryContext = useTransformContext();\n var _a = useState(callback(getState(libraryContext))), transformRender = _a[0], setTransformRender = _a[1];\n useEffect(function () {\n var mounted = true;\n var unmount = libraryContext.onChange(function (ref) {\n if (mounted) {\n setTransformRender(callback(getState(ref.instance)));\n }\n });\n return function () {\n unmount();\n mounted = false;\n };\n }, [callback, libraryContext]);\n return transformRender;\n}\n\nexport { Context, KeepScale, MiniMap, TransformComponent, TransformWrapper, getCenterPosition, getMatrixTransformStyles, getTransformStyles, useControls, useTransformComponent, useTransformContext, useTransformEffect, useTransformInit };\n//# sourceMappingURL=index.esm.js.map\n","import React, { ChangeEvent } from 'react';\n\nimport styles from './styles.module.scss';\n\ninterface MiniSliderProps {\n value: number;\n minValue: number;\n maxValue: number;\n onChange: (newValue: number) => void;\n ariaLabel: string;\n}\n\nconst MiniSlider = (props: MiniSliderProps): React.JSX.Element => {\n const handleOnChange = (event: ChangeEvent<HTMLInputElement>): void => {\n event.preventDefault();\n const newValue = parseFloat(event.target.value);\n props.onChange(newValue);\n };\n\n const ariaValueText = `${Math.round(props.value * 100)}%`;\n\n return (\n <div className={styles.slider} aria-live=\"polite\">\n <div key={props.value} className={styles.slider__announcements}>\n {ariaValueText}\n </div>\n <input\n onChange={handleOnChange}\n type=\"range\"\n min={props.minValue}\n max={props.maxValue}\n value={props.value}\n aria-valuenow={props.value}\n aria-valuemin={props.minValue}\n aria-valuemax={props.maxValue}\n aria-valuetext={ariaValueText}\n aria-label={props.ariaLabel}\n step={0.1}\n />\n </div>\n );\n};\n\nexport default MiniSlider;\n","{\n \"ariaLabelCloseButton\": \"Close lightbox\",\n \"ariaLabelLeftArrow\": \"Previous picture\",\n \"ariaLabelLightBox\": \"Image display\",\n \"ariaLabelRightArrow\": \"Next image\",\n \"ariaLabelCloseTextBox\": \"Close text box\",\n \"ariaLabelOpenTextBox\": \"Open text box\",\n \"ariaLabelZoomIn\": \"Zoom in\",\n \"ariaLabelZoomOut\": \"Zoom out\",\n \"ariaLabelZoomSlider\": \"Zoom\"\n}\n","{\n \"ariaLabelCloseButton\": \"Lukk lightbox\",\n \"ariaLabelLeftArrow\": \"Forrige bilde\",\n \"ariaLabelLightBox\": \"Bildevisning\",\n \"ariaLabelRightArrow\": \"Neste bilde\",\n \"ariaLabelCloseTextBox\": \"Lukk tekstboks\",\n \"ariaLabelOpenTextBox\": \"Åpne tekstboks\",\n \"ariaLabelZoomIn\": \"Zoom inn\",\n \"ariaLabelZoomOut\": \"Zoom ut\",\n \"ariaLabelZoomSlider\": \"Zoom\"\n}\n","{\n \"ariaLabelCloseButton\": \"Lukk lightbox\",\n \"ariaLabelLeftArrow\": \"Førre bilete\",\n \"ariaLabelLightBox\": \"Biletvisning\",\n \"ariaLabelRightArrow\": \"Neste bilete\",\n \"ariaLabelCloseTextBox\": \"Lukk tekstboks\",\n \"ariaLabelOpenTextBox\": \"Opne tekstboks\",\n \"ariaLabelZoomIn\": \"Zoom inn\",\n \"ariaLabelZoomOut\": \"Zoom ut\",\n \"ariaLabelZoomSlider\": \"Zoom\"\n}\n","{\n \"ariaLabelCloseButton\": \"Gidde lightboxa\",\n \"ariaLabelLeftArrow\": \"Ovddit govva\",\n \"ariaLabelLightBox\": \"Govvačájáhus\",\n \"ariaLabelRightArrow\": \"Boahtte govva\",\n \"ariaLabelCloseTextBox\": \"Gidde teakstaboksa\",\n \"ariaLabelOpenTextBox\": \"Raba teakstaboksa\",\n \"ariaLabelZoomIn\": \"Zoome stuoribun\",\n \"ariaLabelZoomOut\": \"Zoome unnibun\",\n \"ariaLabelZoomSlider\": \"Zoome\"\n}\n","import { LanguageLocales } from '@helsenorge/designsystem-react/constants';\n\nimport enGB from '../../resources/HN.Designsystem.LightBox.en-GB.json';\nimport nbNO from '../../resources/HN.Designsystem.LightBox.nb-NO.json';\nimport nnNO from '../../resources/HN.Designsystem.LightBox.nn-NO.json';\nimport seNO from '../../resources/HN.Designsystem.LightBox.se-NO.json';\nimport { HNDesignsystemLightBox } from '../../resources/Resources';\n\nexport const getResources = (language: LanguageLocales): HNDesignsystemLightBox => {\n switch (language) {\n case LanguageLocales.ENGLISH:\n return enGB;\n case LanguageLocales.NORWEGIAN_NYNORSK:\n return nnNO;\n case LanguageLocales.SAMI_NORTHERN:\n return seNO;\n case LanguageLocales.NORWEGIAN:\n default:\n return nbNO;\n }\n};\n","import React, { useEffect, useRef, useState } from 'react';\n\nimport classNames from 'classnames';\nimport { TransformWrapper, TransformComponent, useTransformComponent, useControls } from 'react-zoom-pan-pinch';\n\nimport Icon from '@helsenorge/designsystem-react/components/Icon';\nimport ChevronLeft from '@helsenorge/designsystem-react/components/Icons/ChevronLeft';\nimport ChevronRight from '@helsenorge/designsystem-react/components/Icons/ChevronRight';\nimport ChevronsDown from '@helsenorge/designsystem-react/components/Icons/ChevronsDown';\nimport ChevronsUp from '@helsenorge/designsystem-react/components/Icons/ChevronsUp';\nimport Minus from '@helsenorge/designsystem-react/components/Icons/Minus';\nimport PlusSmall from '@helsenorge/designsystem-react/components/Icons/PlusSmall';\nimport X from '@helsenorge/designsystem-react/components/Icons/X';\nimport { IconSize, KeyboardEventKey, LanguageLocales, ZIndex } from '@helsenorge/designsystem-react/constants';\nimport { useFocusTrap } from '@helsenorge/designsystem-react/hooks/useFocusTrap';\nimport { useReturnFocusOnUnmount } from '@helsenorge/designsystem-react/hooks/useReturnFocusOnUnmount';\nimport { useSize } from '@helsenorge/designsystem-react/hooks/useSize';\nimport { useLanguage } from '@helsenorge/designsystem-react/utils/language';\nimport { disableBodyScroll, enableBodyScroll } from '@helsenorge/designsystem-react/utils/scroll';\n\nimport { useKeyboardEvent } from '@helsenorge/designsystem-react';\n\nimport MiniSlider from './MiniSlider';\nimport { getResources } from './resourceHelper';\nimport { HNDesignsystemLightBox } from '../../resources/Resources';\n\nimport styles from './styles.module.scss';\n\nexport interface LightBoxProps {\n /** @deprecated Aria label for the close button */\n ariaLabelCloseButton?: string;\n /** @deprecated Aria label for the text box button when its open */\n ariaLabelCloseTextBox?: string;\n /** @deprecated Aria label for the left arrow button */\n ariaLabelLeftArrow?: string;\n /** @deprecated Aria label for the full modal describing what the modal contains */\n ariaLabelLightBox?: string;\n /** @deprecated Aria label for the right arrow button */\n ariaLabelRightArrow?: string;\n /** @deprecated Aria label for the text box button when its closed */\n ariaLabelOpenTextBox?: string;\n /** @deprecated Aria label for the zoom in button */\n ariaLabelZoomIn?: string;\n /** @deprecated Aria label for the zoom out button */\n ariaLabelZoomOut?: string;\n /** @deprecated Aria label for the slider input component */\n ariaLabelZoomSlider?: string;\n /** If set the text box closes automatically after the given seconds */\n closeTextAfterSeconds?: number;\n /** Alt text for the image */\n imageAlt: string;\n /** Source of the image that will be shown */\n imageSrc: string;\n /** The text for the image that shows in the textbox */\n imageText?: string | React.ReactNode;\n /** Function is called when user clicks the close button */\n onClose: () => void;\n /** Function is called when user clicks the left arrow button. If not given the arrow will not show. */\n onLeftArrowClick?: () => void;\n /** Function is called when user clicks the right arrow button. If not given the arrow will not show. */\n onRightArrowClick?: () => void;\n /** Resources for component */\n resources?: Partial<HNDesignsystemLightBox>;\n /** Sets the data-testid attribute. */\n testId?: string;\n}\n\nconst LightBox: React.FC<LightBoxProps> = ({\n ariaLabelCloseButton,\n ariaLabelLeftArrow,\n ariaLabelLightBox,\n ariaLabelRightArrow,\n ariaLabelCloseTextBox,\n ariaLabelOpenTextBox,\n ariaLabelZoomIn,\n ariaLabelZoomOut,\n ariaLabelZoomSlider,\n closeTextAfterSeconds,\n imageAlt,\n imageSrc,\n imageText,\n onClose,\n onLeftArrowClick,\n onRightArrowClick,\n resources,\n testId,\n}) => {\n const [imageTextOpen, setImageTextOpen] = React.useState(true);\n const lightBoxRef = useRef<HTMLDivElement>(null);\n const textBoxRef = useRef<HTMLParagraphElement>(null);\n const { height: textBoxHeight = 0 } = useSize(textBoxRef) || {};\n const [zoom, setZoom] = useState(1.0);\n useFocusTrap(lightBoxRef, true);\n useReturnFocusOnUnmount(lightBoxRef);\n\n const { language } = useLanguage<LanguageLocales>(LanguageLocales.NORWEGIAN);\n const defaultResources = getResources(language);\n const mergedResources: HNDesignsystemLightBox = {\n ...defaultResources,\n ...resources,\n };\n\n useKeyboardEvent(lightBoxRef, onClose, [KeyboardEventKey.Escape]);\n\n const updateStates = (newZoom: number): void => {\n if (zoom === newZoom) return;\n setZoom(newZoom);\n };\n\n useEffect(() => {\n if (!closeTextAfterSeconds) return;\n const timer = setTimeout(() => {\n setImageTextOpen(false);\n }, closeTextAfterSeconds * 1000);\n return (): void => {\n clearTimeout(timer);\n };\n }, []);\n\n useEffect(() => {\n lightBoxRef.current?.focus();\n }, []);\n\n return (\n <div\n data-testid={testId}\n className={styles.lightBox}\n style={{ zIndex: ZIndex.OverlayScreen }}\n role=\"dialog\"\n aria-modal={true}\n tabIndex={-1}\n aria-label={ariaLabelLightBox || mergedResources.ariaLabelLightBox}\n ref={lightBoxRef}\n >\n <button\n onClick={onClose}\n aria-label={ariaLabelCloseButton || mergedResources.ariaLabelCloseButton}\n data-testid=\"closeButton\"\n className={classNames(styles.button, styles['close-button'])}\n style={{ zIndex: ZIndex.LightBoxButtons }}\n >\n <Icon svgIcon={X} color=\"white\" size={IconSize.XSmall} />\n </button>\n {onLeftArrowClick && (\n <button\n className={classNames(styles.button, styles['arrow-button'], styles['arrow-button--left'])}\n onClick={onLeftArrowClick}\n aria-label={ariaLabelLeftArrow || mergedResources.ariaLabelLeftArrow}\n data-testid=\"leftArrow\"\n style={{ zIndex: ZIndex.LightBoxButtons }}\n >\n <Icon svgIcon={ChevronLeft} color=\"white\" size={IconSize.XSmall} />\n </button>\n )}\n {onRightArrowClick && (\n <button\n className={classNames(styles.button, styles['arrow-button'], styles['arrow-button--right'])}\n onClick={onRightArrowClick}\n aria-label={ariaLabelRightArrow || mergedResources.ariaLabelRightArrow}\n data-testid=\"rightarrow\"\n style={{ zIndex: ZIndex.LightBoxButtons }}\n >\n <Icon svgIcon={ChevronRight} color=\"white\" size={IconSize.XSmall} />\n </button>\n )}\n {imageText && (\n <div\n className={styles['image-text-box']}\n style={{ bottom: imageTextOpen ? '0' : '-' + textBoxHeight + 'px', transition: '0.5s', zIndex: ZIndex.LightBoxButtons }}\n >\n <button\n className={classNames(styles.button, styles['image-text-box__button'])}\n onClick={() => setImageTextOpen(!imageTextOpen)}\n style={{ zIndex: ZIndex.LightBoxButtons }}\n aria-label={\n imageTextOpen\n ? ariaLabelCloseTextBox || mergedResources.ariaLabelCloseTextBox\n : ariaLabelOpenTextBox || mergedResources.ariaLabelOpenTextBox\n }\n aria-expanded={imageTextOpen}\n >\n {imageTextOpen ? (\n <Icon svgIcon={ChevronsDown} color=\"white\" size={IconSize.XSmall} />\n ) : (\n <Icon svgIcon={ChevronsUp} color=\"white\" size={IconSize.XSmall} />\n )}\n </button>\n <div>\n {typeof imageText === 'string' ? (\n <p ref={textBoxRef} className={styles['image-text-box__text']}>\n {imageText}\n </p>\n ) : (\n <div ref={textBoxRef} className={styles['image-text-box__text']}>\n {imageText}\n </div>\n )}\n <div className={styles['image-text-box__overflow-border']}></div>\n </div>\n </div>\n )}\n <TransformWrapper smooth={false} initialScale={1} maxScale={4} doubleClick={{ mode: 'toggle', step: 4 }}>\n {({ setTransform }) => (\n <>\n <Controls\n transform={setTransform}\n updateStates={updateStates}\n zoom={zoom}\n ariaLabelZoomIn={ariaLabelZoomIn || mergedResources.ariaLabelZoomIn}\n ariaLabelZoomOut={ariaLabelZoomOut || mergedResources.ariaLabelZoomOut}\n ariaLabelZoomSlider={ariaLabelZoomSlider || mergedResources.ariaLabelZoomSlider}\n />\n <TransformComponent\n wrapperStyle={{\n zIndex: 1,\n width: '100%',\n height: '100%',\n }}\n contentStyle={{\n width: '100%',\n height: '100%',\n }}\n >\n <img src={imageSrc} alt={imageAlt} />\n </TransformComponent>\n </>\n )}\n </TransformWrapper>\n </div>\n );\n};\n\nconst Controls = ({\n transform,\n updateStates,\n zoom,\n ariaLabelZoomIn,\n ariaLabelZoomOut,\n ariaLabelZoomSlider,\n}: {\n transform: (newPositionX: number, newPositionY: number, newScale: number, animationTime?: number | undefined) => void;\n updateStates: (newZoom: number) => void;\n zoom: number;\n ariaLabelZoomIn: string;\n ariaLabelZoomOut: string;\n ariaLabelZoomSlider: string;\n}): React.JSX.Element => {\n useTransformComponent(({ state }) => {\n updateStates(state.scale);\n });\n const { zoomIn, zoomOut, centerView } = useControls();\n let centerTimeout: number;\n\n const calculateZoomCenter = (newScale: number): number[] => {\n const element = document.getElementsByClassName('react-transform-component')[0];\n const style = window.getComputedStyle(element);\n const matrix = new WebKitCSSMatrix(style.transform);\n const ratio = (newScale - zoom) / zoom + 1;\n const x = (matrix.m41 - (window.innerWidth / 2) * (1 - zoom / newScale)) * ratio;\n const y = (matrix.m42 - (window.innerHeight / 2) * (1 - zoom / newScale)) * ratio;\n return [x, y];\n };\n const adjustZoom = (newScale: number | undefined): void => {\n if (newScale === undefined || newScale === zoom) return;\n if (newScale < 1) newScale = 1;\n if (newScale > 4) newScale = 4;\n const [x, y] = calculateZoomCenter(newScale);\n transform(x, y, newScale, 1);\n\n if (centerTimeout) {\n clearTimeout(centerTimeout);\n }\n\n // Starter sentrering timeout hvis det zoomes ut\n if (newScale - zoom < 0) {\n centerTimeout = window.setTimeout(() => {\n centerView();\n }, 160);\n }\n };\n\n useEffect(() => {\n disableBodyScroll();\n return (): void => {\n enableBodyScroll();\n };\n }, []);\n\n return (\n <div className={classNames(styles['zoom-buttons'])} style={{ zIndex: ZIndex.LightBoxButtons }}>\n <button className={classNames(styles.button)} onClick={() => zoomOut()} aria-label={ariaLabelZoomOut}>\n <Icon svgIcon={Minus} color=\"white\" size={IconSize.XSmall} />\n </button>\n <MiniSlider minValue={1} maxValue={4} onChange={adjustZoom} value={zoom} ariaLabel={ariaLabelZoomSlider} />\n <button className={classNames(styles.button)} onClick={() => zoomIn()} aria-label={ariaLabelZoomIn}>\n <Icon svgIcon={PlusSmall} color=\"white\" size={IconSize.XSmall} />\n </button>\n </div>\n );\n};\n\nexport default LightBox;\n","import LightBox from './LightBox';\nexport * from './LightBox';\nexport default LightBox;\n"],"x_google_ignoreList":[0],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { LanguageLocales } from '@helsenorge/designsystem-react/constants';
2
+ import { HNDesignsystemLightBox } from '../../resources/Resources';
3
+ export declare const getResources: (language: LanguageLocales) => HNDesignsystemLightBox;
File without changes
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@helsenorge/lightbox",
3
3
  "sideEffects": false,
4
4
  "private": false,
5
- "version": "13.6.0",
5
+ "version": "13.8.0",
6
6
  "description": "The official Helsenorge lightbox.",
7
7
  "repository": {
8
8
  "type": "git",