From 20c5b505878f57fff6827423ad65eaaa5ceaa0bb Mon Sep 17 00:00:00 2001 From: Vadym Date: Wed, 28 Jun 2023 19:55:17 +0300 Subject: [PATCH 1/8] Fix remove class in body --- package-lock.json | 4 ++-- src/react-pure-modal.tsx | 11 +++++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index 8975c39..8ff412a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "react-pure-modal", - "version": "2.2.0", + "version": "2.2.3", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "react-pure-modal", - "version": "2.2.0", + "version": "2.2.3", "license": "ISC", "devDependencies": { "@babel/core": "7.22.1", diff --git a/src/react-pure-modal.tsx b/src/react-pure-modal.tsx index bd179c1..0351f12 100644 --- a/src/react-pure-modal.tsx +++ b/src/react-pure-modal.tsx @@ -1,4 +1,4 @@ -import React, { useState, useEffect, useCallback } from 'react'; +import React, { useState, useEffect, useCallback, useMemo } from 'react'; import { createPortal } from 'react-dom'; import PureModalContent from './pure-modal-content'; @@ -33,10 +33,17 @@ function PureModal(props: Props) { const [mouseOffsetY, setMouseOffsetY] = useState(0); const { isOpen, onClose } = props; + const isClassBody = useMemo(() => document.body.classList.contains('body-modal-fix'), [isOpen]); + + const removeClassBody = useCallback(() => { + document.body.classList.remove('body-modal-fix'); + }, []); useEffect(() => { if (isOpen) { open(); + } else if (isClassBody) { + removeClassBody(); } }, [isOpen]); @@ -64,7 +71,7 @@ function PureModal(props: Props) { function unsetModalContext() { document.removeEventListener('keydown', handleEsc); - document.body.classList.remove('body-modal-fix'); + removeClassBody(); setX(null); setY(null); setDeltaX(0); From 20753840c7637de648627df1b0dc97939b5c7e57 Mon Sep 17 00:00:00 2001 From: Vadym Date: Fri, 30 Jun 2023 15:36:35 +0300 Subject: [PATCH 2/8] Optimization codes --- src/react-pure-modal.tsx | 11 +++-------- 1 file changed, 3 insertions(+), 8 deletions(-) diff --git a/src/react-pure-modal.tsx b/src/react-pure-modal.tsx index 0351f12..931e536 100644 --- a/src/react-pure-modal.tsx +++ b/src/react-pure-modal.tsx @@ -33,17 +33,12 @@ function PureModal(props: Props) { const [mouseOffsetY, setMouseOffsetY] = useState(0); const { isOpen, onClose } = props; - const isClassBody = useMemo(() => document.body.classList.contains('body-modal-fix'), [isOpen]); - - const removeClassBody = useCallback(() => { - document.body.classList.remove('body-modal-fix'); - }, []); useEffect(() => { if (isOpen) { open(); - } else if (isClassBody) { - removeClassBody(); + } else if (document.body.classList.contains('body-modal-fix')) { + unsetModalContext(); } }, [isOpen]); @@ -71,7 +66,7 @@ function PureModal(props: Props) { function unsetModalContext() { document.removeEventListener('keydown', handleEsc); - removeClassBody(); + document.body.classList.remove('body-modal-fix'); setX(null); setY(null); setDeltaX(0); From 0f6b9da7054e10e69a35106e62f7d673171a21ed Mon Sep 17 00:00:00 2001 From: Vadym Date: Fri, 30 Jun 2023 15:37:05 +0300 Subject: [PATCH 3/8] Delete other code --- src/react-pure-modal.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/react-pure-modal.tsx b/src/react-pure-modal.tsx index 931e536..7e3c93a 100644 --- a/src/react-pure-modal.tsx +++ b/src/react-pure-modal.tsx @@ -1,4 +1,4 @@ -import React, { useState, useEffect, useCallback, useMemo } from 'react'; +import React, { useState, useEffect, useCallback } from 'react'; import { createPortal } from 'react-dom'; import PureModalContent from './pure-modal-content'; From 129e8bdbd976c2552b3a060e153d17edb3bd399d Mon Sep 17 00:00:00 2001 From: Vadym Date: Fri, 30 Jun 2023 15:40:07 +0300 Subject: [PATCH 4/8] customization code --- src/react-pure-modal.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/react-pure-modal.tsx b/src/react-pure-modal.tsx index 7e3c93a..6f7f3bb 100644 --- a/src/react-pure-modal.tsx +++ b/src/react-pure-modal.tsx @@ -37,7 +37,7 @@ function PureModal(props: Props) { useEffect(() => { if (isOpen) { open(); - } else if (document.body.classList.contains('body-modal-fix')) { + } else { unsetModalContext(); } }, [isOpen]); From e3b2630776570d912141123b75b4afe964380e4c Mon Sep 17 00:00:00 2001 From: Vadym Date: Fri, 30 Jun 2023 15:46:50 +0300 Subject: [PATCH 5/8] Fixed code for comments Max Mykhailenko --- src/react-pure-modal.tsx | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/react-pure-modal.tsx b/src/react-pure-modal.tsx index 6f7f3bb..989de08 100644 --- a/src/react-pure-modal.tsx +++ b/src/react-pure-modal.tsx @@ -1,4 +1,4 @@ -import React, { useState, useEffect, useCallback } from 'react'; +import React, { useState, useEffect, useCallback, useMemo } from 'react'; import { createPortal } from 'react-dom'; import PureModalContent from './pure-modal-content'; @@ -33,11 +33,16 @@ function PureModal(props: Props) { const [mouseOffsetY, setMouseOffsetY] = useState(0); const { isOpen, onClose } = props; + const isClassBody = () => document.body.classList.contains('body-modal-fix'); + + const removeClassBody = useCallback(() => { + document.body.classList.remove('body-modal-fix'); + }, []); useEffect(() => { if (isOpen) { open(); - } else { + } else if (isClassBody()) { unsetModalContext(); } }, [isOpen]); @@ -66,7 +71,7 @@ function PureModal(props: Props) { function unsetModalContext() { document.removeEventListener('keydown', handleEsc); - document.body.classList.remove('body-modal-fix'); + removeClassBody(); setX(null); setY(null); setDeltaX(0); From 653d013723d06924865336e756695bd9f1265610 Mon Sep 17 00:00:00 2001 From: Vadym Date: Fri, 30 Jun 2023 15:52:06 +0300 Subject: [PATCH 6/8] Delete other code --- src/react-pure-modal.tsx | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/react-pure-modal.tsx b/src/react-pure-modal.tsx index 989de08..307b385 100644 --- a/src/react-pure-modal.tsx +++ b/src/react-pure-modal.tsx @@ -1,4 +1,4 @@ -import React, { useState, useEffect, useCallback, useMemo } from 'react'; +import React, { useState, useEffect, useCallback } from 'react'; import { createPortal } from 'react-dom'; import PureModalContent from './pure-modal-content'; @@ -33,7 +33,6 @@ function PureModal(props: Props) { const [mouseOffsetY, setMouseOffsetY] = useState(0); const { isOpen, onClose } = props; - const isClassBody = () => document.body.classList.contains('body-modal-fix'); const removeClassBody = useCallback(() => { document.body.classList.remove('body-modal-fix'); @@ -42,7 +41,7 @@ function PureModal(props: Props) { useEffect(() => { if (isOpen) { open(); - } else if (isClassBody()) { + } else { unsetModalContext(); } }, [isOpen]); From 9478add108b36c42b4a84d5ddfe0abd3c0577614 Mon Sep 17 00:00:00 2001 From: Vadym Date: Tue, 4 Jul 2023 17:51:41 +0300 Subject: [PATCH 7/8] Build --- dist/react-pure-modal.min.js | 2 +- example/example.min.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dist/react-pure-modal.min.js b/dist/react-pure-modal.min.js index 4af63fa..22db5ed 100644 --- a/dist/react-pure-modal.min.js +++ b/dist/react-pure-modal.min.js @@ -1 +1 @@ -!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t(require("react"),require("react-dom"));else if("function"==typeof define&&define.amd)define(["react","react-dom"],t);else{var o="object"==typeof exports?t(require("react"),require("react-dom")):t(e.react,e["react-dom"]);for(var n in o)("object"==typeof exports?exports:e)[n]=o[n]}}(this,((e,t)=>(()=>{var o={494:()=>{},156:t=>{"use strict";t.exports=e},111:e=>{"use strict";e.exports=t}},n={};function a(e){var t=n[e];if(void 0!==t)return t.exports;var r=n[e]={exports:{}};return o[e](r,r.exports,a),r.exports}a.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},a.d=(e,t)=>{for(var o in t)a.o(t,o)&&!a.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};return(()=>{"use strict";a.r(r),a.d(r,{default:()=>l});var e=a(156),t=a.n(e),o=a(111);function n(e){const{children:o,replace:n,bodyClass:a,header:r,footer:c,onDragStart:s,onDragEnd:l,onClose:u,closeButton:i,closeButtonPosition:d}=e;return n?o:t().createElement("div",{className:"panel panel-default "+("bottom"===d?"additional-row":"")},t().createElement("div",{className:"panel-heading",onTouchStart:s,onMouseDown:s,onTouchEnd:l,onMouseUp:l},r&&t().createElement("h3",{className:"panel-title"},r)),t().createElement("div",{className:a},o),c&&t().createElement("div",{className:"panel-footer"},c),t().createElement("div",{className:"close",onClick:u,style:{position:"header"===d?"absolute":"static",margin:"bottom"===d?"10px auto":""}},i))}n.defaultProps={closeButton:"×",closeButtonPosition:"header",replace:!1,draggable:!1};const c=n;a(494);function s(n){let a=Math.random().toString();const[r,s]=(0,e.useState)(!1),[l,u]=(0,e.useState)(null),[i,d]=(0,e.useState)(null),[p,f]=(0,e.useState)(0),[m,g]=(0,e.useState)(0),[v,h]=(0,e.useState)(0),[b,y]=(0,e.useState)(0),{isOpen:E,onClose:S}=n;(0,e.useEffect)((()=>{E&&function(e){e&&(e.stopPropagation(),e.preventDefault());!function(){document.addEventListener("keydown",T),document.activeElement instanceof HTMLElement&&document.activeElement.blur();document.body.classList.add("body-modal-fix")}()}()}),[E]);const T=(0,e.useCallback)((e=>{const t=document.querySelectorAll(".pure-modal");if(t.length&&t[t.length-1].classList.contains(a))return!1;"Escape"===e.key&&document.activeElement&&x(e)}),[]);if(!E)return null;function x(e){e&&(e.stopPropagation(),e.preventDefault()),S&&S(e?{isPassive:!0}:{isPassive:!1}),document.removeEventListener("keydown",T),document.body.classList.remove("body-modal-fix"),u(null),d(null),f(0),g(0),h(0),y(0)}function P(e){return e instanceof TouchEvent&&e.changedTouches.length>0?{pageX:e.changedTouches[0].pageX,pageY:e.changedTouches[0].pageY}:e instanceof MouseEvent?{pageX:e.pageX,pageY:e.pageY}:{pageX:0,pageY:0}}function M(e){if(e instanceof TouchEvent&&e.changedTouches&&e.changedTouches.length>1)return j();e.preventDefault();const{pageX:t,pageY:o}=P(e);"number"==typeof l&&"number"==typeof i&&(f(t-l-v),g(o-i-b))}function j(){return s(!1)}const{children:D,replace:w=!1,className:B,header:N,footer:k,scrollable:C=!0,draggable:L=!1,width:X,closeButton:Y,closeButtonPosition:O,portal:q=!1}=n;let _=["pure-modal-backdrop"],$=["pure-modal",a],A=["panel-body"];B&&($=$.concat(B)),C?A=A.concat("scrollable"):(_=_.concat("scrollable"),$=$.concat("auto-height")),L&&(_=_.concat("backdrop-overflow-hidden"));const H=t().createElement("div",{className:_.join(" "),onMouseDown:function(e){if(e){if(!e.target.classList.contains("pure-modal-backdrop"))return;e.stopPropagation(),e.preventDefault()}x(e)},onTouchMove:r?M:void 0,onMouseMove:r?M:void 0},t().createElement("div",{className:$.join(" "),style:{transform:`translate(${p}px, ${m}px)`,transition:"none",width:X}},t().createElement(c,{replace:w,header:N,footer:k,onDragStart:L?function(e){if(e instanceof TouchEvent&&e.changedTouches&&e.changedTouches.length>1)return;e.preventDefault();const{pageX:t,pageY:o}=P(e),{top:n,left:a}=e.currentTarget.getBoundingClientRect();s(!0),u("number"==typeof l?l:a),d("number"==typeof i?i:n),h(t-a),y(o-n)}:void 0,onDragEnd:L?j:void 0,onClose:x,bodyClass:A.join(" "),closeButton:Y,closeButtonPosition:O},D)));return q?(0,o.createPortal)(H,document.body):H}const l=t().memo(s)})(),r})())); \ No newline at end of file +!function(e,t){if("object"==typeof exports&&"object"==typeof module)module.exports=t(require("react"),require("react-dom"));else if("function"==typeof define&&define.amd)define(["react","react-dom"],t);else{var o="object"==typeof exports?t(require("react"),require("react-dom")):t(e.react,e["react-dom"]);for(var n in o)("object"==typeof exports?exports:e)[n]=o[n]}}(this,((e,t)=>(()=>{var o={494:()=>{},156:t=>{"use strict";t.exports=e},111:e=>{"use strict";e.exports=t}},n={};function a(e){var t=n[e];if(void 0!==t)return t.exports;var r=n[e]={exports:{}};return o[e](r,r.exports,a),r.exports}a.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return a.d(t,{a:t}),t},a.d=(e,t)=>{for(var o in t)a.o(t,o)&&!a.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};return(()=>{"use strict";a.r(r),a.d(r,{default:()=>l});var e=a(156),t=a.n(e),o=a(111);function n(e){const{children:o,replace:n,bodyClass:a,header:r,footer:c,onDragStart:s,onDragEnd:l,onClose:u,closeButton:i,closeButtonPosition:d}=e;return n?o:t().createElement("div",{className:"panel panel-default "+("bottom"===d?"additional-row":"")},t().createElement("div",{className:"panel-heading",onTouchStart:s,onMouseDown:s,onTouchEnd:l,onMouseUp:l},r&&t().createElement("h3",{className:"panel-title"},r)),t().createElement("div",{className:a},o),c&&t().createElement("div",{className:"panel-footer"},c),t().createElement("div",{className:"close",onClick:u,style:{position:"header"===d?"absolute":"static",margin:"bottom"===d?"10px auto":""}},i))}n.defaultProps={closeButton:"×",closeButtonPosition:"header",replace:!1,draggable:!1};const c=n;a(494);function s(n){let a=Math.random().toString();const[r,s]=(0,e.useState)(!1),[l,u]=(0,e.useState)(null),[i,d]=(0,e.useState)(null),[p,f]=(0,e.useState)(0),[m,g]=(0,e.useState)(0),[v,h]=(0,e.useState)(0),[b,y]=(0,e.useState)(0),{isOpen:E,onClose:S}=n,T=(0,e.useCallback)((()=>{document.body.classList.remove("body-modal-fix")}),[]);(0,e.useEffect)((()=>{E?function(e){e&&(e.stopPropagation(),e.preventDefault());!function(){document.addEventListener("keydown",x),document.activeElement instanceof HTMLElement&&document.activeElement.blur();document.body.classList.add("body-modal-fix")}()}():P()}),[E]);const x=(0,e.useCallback)((e=>{const t=document.querySelectorAll(".pure-modal");if(t.length&&t[t.length-1].classList.contains(a))return!1;"Escape"===e.key&&document.activeElement&&M(e)}),[]);if(!E)return null;function P(){document.removeEventListener("keydown",x),T(),u(null),d(null),f(0),g(0),h(0),y(0)}function M(e){e&&(e.stopPropagation(),e.preventDefault()),S&&S(e?{isPassive:!0}:{isPassive:!1}),P()}function j(e){return e instanceof TouchEvent&&e.changedTouches.length>0?{pageX:e.changedTouches[0].pageX,pageY:e.changedTouches[0].pageY}:e instanceof MouseEvent?{pageX:e.pageX,pageY:e.pageY}:{pageX:0,pageY:0}}function D(e){if(e instanceof TouchEvent&&e.changedTouches&&e.changedTouches.length>1)return k();e.preventDefault();const{pageX:t,pageY:o}=j(e);"number"==typeof l&&"number"==typeof i&&(f(t-l-v),g(o-i-b))}function k(){return s(!1)}const{children:w,replace:B=!1,className:C,header:N,footer:L,scrollable:X=!0,draggable:Y=!1,width:O,closeButton:q,closeButtonPosition:_,portal:$=!1}=n;let A=["pure-modal-backdrop"],H=["pure-modal",a],R=["panel-body"];C&&(H=H.concat(C)),X?R=R.concat("scrollable"):(A=A.concat("scrollable"),H=H.concat("auto-height")),Y&&(A=A.concat("backdrop-overflow-hidden"));const U=t().createElement("div",{className:A.join(" "),onMouseDown:function(e){if(e){if(!e.target.classList.contains("pure-modal-backdrop"))return;e.stopPropagation(),e.preventDefault()}M(e)},onTouchMove:r?D:void 0,onMouseMove:r?D:void 0},t().createElement("div",{className:H.join(" "),style:{transform:`translate(${p}px, ${m}px)`,transition:"none",width:O}},t().createElement(c,{replace:B,header:N,footer:L,onDragStart:Y?function(e){if(e instanceof TouchEvent&&e.changedTouches&&e.changedTouches.length>1)return;e.preventDefault();const{pageX:t,pageY:o}=j(e),{top:n,left:a}=e.currentTarget.getBoundingClientRect();s(!0),u("number"==typeof l?l:a),d("number"==typeof i?i:n),h(t-a),y(o-n)}:void 0,onDragEnd:Y?k:void 0,onClose:M,bodyClass:R.join(" "),closeButton:q,closeButtonPosition:_},w)));return $?(0,o.createPortal)(U,document.body):U}const l=t().memo(s)})(),r})())); \ No newline at end of file diff --git a/example/example.min.js b/example/example.min.js index 5ee1189..4990bd5 100644 --- a/example/example.min.js +++ b/example/example.min.js @@ -1,2 +1,2 @@ /*! For license information please see example.min.js.LICENSE.txt */ -(()=>{var e={"./dist/react-pure-modal.min.js":function(e,t,n){var r,o;e.exports=(r=n("./node_modules/react/index.js"),o=n("./node_modules/react-dom/index.js"),(()=>{var e={494:()=>{},156:e=>{"use strict";e.exports=r},111:e=>{"use strict";e.exports=o}},t={};function n(r){var o=t[r];if(void 0!==o)return o.exports;var a=t[r]={exports:{}};return e[r](a,a.exports,n),a.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var a={};return(()=>{"use strict";n.r(a),n.d(a,{default:()=>u});var e=n(156),t=n.n(e),r=n(111);function o(e){const{children:n,replace:r,bodyClass:o,header:a,footer:i,onDragStart:l,onDragEnd:u,onClose:s,closeButton:c,closeButtonPosition:d}=e;return r?n:t().createElement("div",{className:"panel panel-default "+("bottom"===d?"additional-row":"")},t().createElement("div",{className:"panel-heading",onTouchStart:l,onMouseDown:l,onTouchEnd:u,onMouseUp:u},a&&t().createElement("h3",{className:"panel-title"},a)),t().createElement("div",{className:o},n),i&&t().createElement("div",{className:"panel-footer"},i),t().createElement("div",{className:"close",onClick:s,style:{position:"header"===d?"absolute":"static",margin:"bottom"===d?"10px auto":""}},c))}o.defaultProps={closeButton:"×",closeButtonPosition:"header",replace:!1,draggable:!1};const i=o;function l(n){let o=Math.random().toString();const[a,l]=(0,e.useState)(!1),[u,s]=(0,e.useState)(null),[c,d]=(0,e.useState)(null),[f,p]=(0,e.useState)(0),[m,h]=(0,e.useState)(0),[v,g]=(0,e.useState)(0),[y,b]=(0,e.useState)(0),{isOpen:w,onClose:k}=n;(0,e.useEffect)((()=>{w&&function(e){e&&(e.stopPropagation(),e.preventDefault()),document.addEventListener("keydown",x),document.activeElement instanceof HTMLElement&&document.activeElement.blur(),document.body.classList.add("body-modal-fix")}()}),[w]);const x=(0,e.useCallback)((e=>{const t=document.querySelectorAll(".pure-modal");if(t.length&&t[t.length-1].classList.contains(o))return!1;"Escape"===e.key&&document.activeElement&&T(e)}),[]);if(!w)return null;function T(e){e&&(e.stopPropagation(),e.preventDefault()),k&&k(e?{isPassive:!0}:{isPassive:!1}),document.removeEventListener("keydown",x),document.body.classList.remove("body-modal-fix"),s(null),d(null),p(0),h(0),g(0),b(0)}function C(e){return e instanceof TouchEvent&&e.changedTouches.length>0?{pageX:e.changedTouches[0].pageX,pageY:e.changedTouches[0].pageY}:e instanceof MouseEvent?{pageX:e.pageX,pageY:e.pageY}:{pageX:0,pageY:0}}function S(e){if(e instanceof TouchEvent&&e.changedTouches&&e.changedTouches.length>1)return E();e.preventDefault();const{pageX:t,pageY:n}=C(e);"number"==typeof u&&"number"==typeof c&&(p(t-u-v),h(n-c-y))}function E(){return l(!1)}const{children:R,replace:_=!1,className:P,header:A,footer:I,scrollable:D=!0,draggable:O=!1,width:N,closeButton:M,closeButtonPosition:z,portal:j=!1}=n;let U=["pure-modal-backdrop"],L=["pure-modal",o],B=["panel-body"];P&&(L=L.concat(P)),D?B=B.concat("scrollable"):(U=U.concat("scrollable"),L=L.concat("auto-height")),O&&(U=U.concat("backdrop-overflow-hidden"));const F=t().createElement("div",{className:U.join(" "),onMouseDown:function(e){if(e){if(!e.target.classList.contains("pure-modal-backdrop"))return;e.stopPropagation(),e.preventDefault()}T(e)},onTouchMove:a?S:void 0,onMouseMove:a?S:void 0},t().createElement("div",{className:L.join(" "),style:{transform:`translate(${f}px, ${m}px)`,transition:"none",width:N}},t().createElement(i,{replace:_,header:A,footer:I,onDragStart:O?function(e){if(e instanceof TouchEvent&&e.changedTouches&&e.changedTouches.length>1)return;e.preventDefault();const{pageX:t,pageY:n}=C(e),{top:r,left:o}=e.currentTarget.getBoundingClientRect();l(!0),s("number"==typeof u?u:o),d("number"==typeof c?c:r),g(t-o),b(n-r)}:void 0,onDragEnd:O?E:void 0,onClose:T,bodyClass:B.join(" "),closeButton:M,closeButtonPosition:z},R)));return j?(0,r.createPortal)(F,document.body):F}n(494);const u=t().memo(l)})(),a})())},"./example/content.ts":(e,t,n)=>{"use strict";n.r(t),n.d(t,{largeContent:()=>o,smallContent:()=>r});const r="\n

\n Ut bibendum dolor a mi ultrices venenatis ac a mi. Sed imperdiet ipsum sodales odio\n scelerisque, vel lobortis est rutrum. Sed sagittis iaculis lorem id mattis. Sed ultricies\n condimentum rhoncus. Phasellus rhoncus turpis nec odio egestas, quis pellentesque quam\n aliquam. In sodales erat iaculis libero molestie, vel commodo nisl congue. Maecenas\n scelerisque, ligula et elementum sagittis, felis dui semper tortor, eget euismod enim enim\n vitae ante. Nullam suscipit accumsan mi non blandit. Curabitur viverra risus sed feugiat\n aliquet. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac\n turpis egestas. Aliquam ipsum diam, pulvinar sit amet lectus at, congue vulputate eros.\n Donec id libero quam.\n

\n",o="\n

\n Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam fringilla ex a feugiat\n blandit. Sed tempor placerat dui et hendrerit. Nunc fringilla vel orci at lacinia. Duis\n vitae nulla sit amet justo faucibus ornare. Nunc nec lacinia dolor. Vestibulum egestas\n condimentum ante, id semper sem facilisis eu. Sed aliquam eget est eget finibus. Quisque\n vehicula massa et elit maximus, vel euismod erat lacinia. Morbi ut risus eget nunc feugiat\n cursus.\n

\n

\n Pellentesque quis metus eu urna feugiat auctor. Fusce accumsan mi nibh, porttitor lacinia\n est egestas vel. Maecenas nibh odio, volutpat quis tincidunt eget, lacinia a lorem. Etiam\n ullamcorper turpis a ultrices auctor. Cras quis tortor turpis. Class aptent taciti\n sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nullam porta\n sagittis congue. Maecenas volutpat lacus eu lectus dapibus, nec eleifend ipsum luctus.\n Etiam ac lobortis ligula, id porta lectus. Curabitur eget leo ut sapien ullamcorper\n sagittis.\n

\n

\n Suspendisse commodo nisl in neque tempus pellentesque. Nullam magna turpis, fringilla\n sollicitudin maximus non, consectetur ac quam. Ut sit amet tortor ornare, tincidunt ante\n non, tempor mauris. Proin vestibulum purus vel felis pellentesque varius. Sed eget\n volutpat dui. Curabitur quis nunc facilisis, euismod justo placerat, sagittis nunc.\n Phasellus sagittis felis urna, sed sodales odio auctor sit amet. Etiam id metus quis velit\n ullamcorper consequat. Fusce posuere ultricies felis, at vestibulum turpis egestas et.\n

\n

\n In hac habitasse platea dictumst. Quisque fringilla elit vel ante tristique, quis commodo\n turpis tincidunt. Phasellus mi sapien, lobortis sed blandit quis, suscipit ut odio.\n Vivamus venenatis arcu nulla, non molestie ipsum ullamcorper eu. Duis suscipit\n sollicitudin purus, eu consequat magna fringilla eget. Sed a varius dui. Donec at nisi\n tortor. Vivamus ultrices risus eu maximus fermentum. Curabitur et tempus turpis. Curabitur\n tincidunt porttitor imperdiet. Pellentesque hendrerit finibus mi, et rhoncus ex vestibulum\n nec. Integer fermentum quis elit eget faucibus.\n

\n"},"./node_modules/css-loader/dist/cjs.js!./dist/react-pure-modal.min.css":(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>a});var r=n("./node_modules/css-loader/dist/runtime/api.js"),o=n.n(r)()(!0);o.push([e.id,".body-modal-fix{height:100%;width:100%;overflow:hidden}.pure-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:rgba(0,0,0,.4);display:flex;flex-direction:column;justify-content:center;align-items:center}.backdrop-overflow-hidden{overflow:hidden!important}.pure-modal-backdrop .pure-modal{width:300px;max-width:100%;box-sizing:border-box;transition:all .2s ease-in-out;max-height:100%}.pure-modal.auto-height{position:static}.pure-modal-backdrop.scrollable{overflow-y:auto}.pure-modal-backdrop .panel{display:grid;grid-template-rows:repeat(3,min-content)}.pure-modal-backdrop:not(.scrollable) .panel{grid-template-rows:min-content minmax(0,1fr) min-content;max-height:-moz-available;max-height:-webkit-fill-available;max-height:fill-available;height:100%}.pure-modal>*>*{flex:0 0 auto}.pure-modal>*>.scrollable{overflow-x:hidden;overflow-scrolling:touch}@media (max-width:480px){.pure-modal-backdrop .pure-modal{width:100%}}.pure-modal .panel-body{background-color:#fff}.pure-modal .panel-heading{background:#f0f0f0}.pure-modal .panel-title{padding:12px 45px 12px 15px;margin:0}.pure-modal .close{right:10px;top:10px;z-index:1;background:hsla(0,0%,94.1%,.8);width:30px;color:#8c8c8c;transition:color .1s ease-in-out;height:30px;border-radius:15px;text-align:center;line-height:30px;cursor:pointer}.pure-modal .panel-heading .close:hover{color:#000}.pure-modal .panel-body{padding:15px}.pure-modal .panel-footer{padding:12px 45px 12px 15px;background:#f0f0f0}.pure-modal .panel-body,.pure-modal .panel-footer,.pure-modal .panel-title{word-break:break-all}.pure-modal-backdrop .additional-row,.pure-modal-backdrop:not(.scrollable) .additional-row{display:grid;grid-template-rows:min-content minmax(0,1fr) min-content min-content}","",{version:3,sources:["webpack://dist/react-pure-modal.min.css"],names:[],mappings:"AAAA,gBAAgB,WAAW,CAAC,UAAU,CAAC,eAAe,CAAC,qBAAqB,cAAc,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,+BAA+B,CAAC,YAAY,CAAC,qBAAqB,CAAC,sBAAsB,CAAC,kBAAkB,CAAC,0BAA0B,yBAAyB,CAAC,iCAAiC,WAAW,CAAC,cAAc,CAAC,qBAAqB,CAAC,8BAA8B,CAAC,eAAe,CAAC,wBAAwB,eAAe,CAAC,gCAAgC,eAAe,CAAC,4BAA4B,YAAY,CAAC,wCAAwC,CAAC,6CAA6C,wDAAwD,CAAC,yBAAyB,CAAC,iCAAiC,CAAC,yBAAyB,CAAC,WAAW,CAAC,gBAAgB,aAAa,CAAC,0BAA0B,iBAAiB,CAAC,wBAAwB,CAAC,yBAAyB,iCAAiC,UAAU,CAAC,CAAC,wBAAwB,qBAAqB,CAAC,2BAA2B,kBAAkB,CAAC,yBAAyB,2BAA2B,CAAC,QAAQ,CAAC,mBAAmB,UAAU,CAAC,QAAQ,CAAC,SAAS,CAAC,8BAA8B,CAAC,UAAU,CAAC,aAAa,CAAC,gCAAgC,CAAC,WAAW,CAAC,kBAAkB,CAAC,iBAAiB,CAAC,gBAAgB,CAAC,cAAc,CAAC,wCAAwC,UAAU,CAAC,wBAAwB,YAAY,CAAC,0BAA0B,2BAA2B,CAAC,kBAAkB,CAAC,2EAA2E,oBAAoB,CAAC,2FAA2F,YAAY,CAAC,oEAAoE",sourcesContent:[".body-modal-fix{height:100%;width:100%;overflow:hidden}.pure-modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:1040;background-color:rgba(0,0,0,.4);display:flex;flex-direction:column;justify-content:center;align-items:center}.backdrop-overflow-hidden{overflow:hidden!important}.pure-modal-backdrop .pure-modal{width:300px;max-width:100%;box-sizing:border-box;transition:all .2s ease-in-out;max-height:100%}.pure-modal.auto-height{position:static}.pure-modal-backdrop.scrollable{overflow-y:auto}.pure-modal-backdrop .panel{display:grid;grid-template-rows:repeat(3,min-content)}.pure-modal-backdrop:not(.scrollable) .panel{grid-template-rows:min-content minmax(0,1fr) min-content;max-height:-moz-available;max-height:-webkit-fill-available;max-height:fill-available;height:100%}.pure-modal>*>*{flex:0 0 auto}.pure-modal>*>.scrollable{overflow-x:hidden;overflow-scrolling:touch}@media (max-width:480px){.pure-modal-backdrop .pure-modal{width:100%}}.pure-modal .panel-body{background-color:#fff}.pure-modal .panel-heading{background:#f0f0f0}.pure-modal .panel-title{padding:12px 45px 12px 15px;margin:0}.pure-modal .close{right:10px;top:10px;z-index:1;background:hsla(0,0%,94.1%,.8);width:30px;color:#8c8c8c;transition:color .1s ease-in-out;height:30px;border-radius:15px;text-align:center;line-height:30px;cursor:pointer}.pure-modal .panel-heading .close:hover{color:#000}.pure-modal .panel-body{padding:15px}.pure-modal .panel-footer{padding:12px 45px 12px 15px;background:#f0f0f0}.pure-modal .panel-body,.pure-modal .panel-footer,.pure-modal .panel-title{word-break:break-all}.pure-modal-backdrop .additional-row,.pure-modal-backdrop:not(.scrollable) .additional-row{display:grid;grid-template-rows:min-content minmax(0,1fr) min-content min-content}"],sourceRoot:""}]);const a=o},"./node_modules/css-loader/dist/runtime/api.js":e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n=function(e,t){var n=e[1]||"",r=e[3];if(!r)return n;if(t&&"function"==typeof btoa){var o=(i=r,l=btoa(unescape(encodeURIComponent(JSON.stringify(i)))),u="sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(l),"/*# ".concat(u," */")),a=r.sources.map((function(e){return"/*# sourceURL=".concat(r.sourceRoot||"").concat(e," */")}));return[n].concat(a).concat([o]).join("\n")}var i,l,u;return[n].join("\n")}(t,e);return t[2]?"@media ".concat(t[2]," {").concat(n,"}"):n})).join("")},t.i=function(e,n,r){"string"==typeof e&&(e=[[null,e,""]]);var o={};if(r)for(var a=0;a{"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(e){return!1}}()?Object.assign:function(e,o){for(var a,i,l=function(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}(e),u=1;u{"use strict";var r=function(){},o=n("./node_modules/prop-types/lib/ReactPropTypesSecret.js"),a={},i=n("./node_modules/prop-types/lib/has.js");function l(e,t,n,l,u){for(var s in e)if(i(e,s)){var c;try{if("function"!=typeof e[s]){var d=Error((l||"React class")+": "+n+" type `"+s+"` is invalid; it must be a function, usually from the `prop-types` package, but received `"+typeof e[s]+"`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");throw d.name="Invariant Violation",d}c=e[s](t,s,l,n,null,o)}catch(e){c=e}if(!c||c instanceof Error||r((l||"React class")+": type specification of "+n+" `"+s+"` is invalid; the type checker function must return `null` or an `Error` but returned a "+typeof c+". You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument)."),c instanceof Error&&!(c.message in a)){a[c.message]=!0;var f=u?u():"";r("Failed "+n+" type: "+c.message+(null!=f?f:""))}}}r=function(e){var t="Warning: "+e;"undefined"!=typeof console&&console.error(t);try{throw new Error(t)}catch(e){}},l.resetWarningCache=function(){a={}},e.exports=l},"./node_modules/prop-types/lib/ReactPropTypesSecret.js":e=>{"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},"./node_modules/prop-types/lib/has.js":e=>{e.exports=Function.call.bind(Object.prototype.hasOwnProperty)},"./node_modules/react-dom/cjs/react-dom.development.js":(e,t,n)=>{"use strict";(function(){var e=n("./node_modules/react/index.js"),r=n("./node_modules/object-assign/index.js"),o=n("./node_modules/scheduler/index.js"),a=n("./node_modules/prop-types/checkPropTypes.js"),i=n("./node_modules/scheduler/tracing.js"),l=e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;function u(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r1?t-1:0),r=1;r0&&"string"==typeof n[n.length-1]&&0===n[n.length-1].indexOf("\n in"))){var r=l.ReactDebugCurrentFrame.getStackAddendum();""!==r&&(t+="%s",n=n.concat([r]))}var o=n.map((function(e){return""+e}));o.unshift("Warning: "+t),Function.prototype.apply.call(console[e],console,o);try{var a=0,i="Warning: "+t.replace(/%s/g,(function(){return n[a++]}));throw new Error(i)}catch(e){}}if(l.hasOwnProperty("ReactCurrentDispatcher")||(l.ReactCurrentDispatcher={current:null}),l.hasOwnProperty("ReactCurrentBatchConfig")||(l.ReactCurrentBatchConfig={suspense:null}),!e)throw Error("ReactDOM was loaded before React. Make sure you load the React package before loading ReactDOM.");var d=function(e,t,n,r,o,a,i,l,u){var s=Array.prototype.slice.call(arguments,3);try{t.apply(n,s)}catch(e){this.onError(e)}};if("undefined"!=typeof window&&"function"==typeof window.dispatchEvent&&"undefined"!=typeof document&&"function"==typeof document.createEvent){var f=document.createElement("react");d=function(e,t,n,r,o,a,i,l,u){if("undefined"==typeof document)throw Error("The `document` global was defined when React was initialized, but is not defined anymore. This can happen in a test environment if a component schedules an update from an asynchronous callback, but the test has already finished running. To solve this, you can either unmount the component at the end of your test (and ensure that any asynchronous operations get canceled in `componentWillUnmount`), or you can change the test itself to be asynchronous.");var s,c=document.createEvent("Event"),d=!0,p=window.event,m=Object.getOwnPropertyDescriptor(window,"event"),h=Array.prototype.slice.call(arguments,3);var v=!1,g=!1;function y(e){if(s=e.error,v=!0,null===s&&0===e.colno&&0===e.lineno&&(g=!0),e.defaultPrevented&&null!=s&&"object"==typeof s)try{s._suppressLogging=!0}catch(e){}}var b="react-"+(e||"invokeguardedcallback");window.addEventListener("error",y),f.addEventListener(b,(function e(){f.removeEventListener(b,e,!1),void 0!==window.event&&window.hasOwnProperty("event")&&(window.event=p),t.apply(n,h),d=!1}),!1),c.initEvent(b,!1,!1),f.dispatchEvent(c),m&&Object.defineProperty(window,"event",m),d&&(v?g&&(s=new Error("A cross-origin error was thrown. React doesn't have access to the actual error object in development. See https://fb.me/react-crossorigin-error for more information.")):s=new Error("An error was thrown inside one of your components, but React doesn't know what it was. This is likely due to browser flakiness. React does its best to preserve the \"Pause on exceptions\" behavior of the DevTools, which requires some DEV-mode only tricks. It's possible that these don't work in your browser. Try triggering the error in production mode, or switching to a modern browser. If you suspect that this is actually an issue with React, please file an issue."),this.onError(s)),window.removeEventListener("error",y)}}var p=d,m=!1,h=null,v=!1,g=null,y={onError:function(e){m=!0,h=e}};function b(e,t,n,r,o,a,i,l,u){m=!1,h=null,p.apply(y,arguments)}function w(){return m}function k(){if(m){var e=h;return m=!1,h=null,e}throw Error("clearCaughtError was called but no error was captured. This error is likely caused by a bug in React. Please file an issue.")}var x,T=null,C=null,S=null;function E(e,t,n){var r=e.type||"unknown-event";e.currentTarget=S(n),function(e,t,n,r,o,a,i,l,u){if(b.apply(this,arguments),m){var s=k();v||(v=!0,g=s)}}(r,t,void 0,e),e.currentTarget=null}x=function(e){var t=e._dispatchListeners,n=e._dispatchInstances,r=Array.isArray(t),o=r?t.length:t?1:0,a=Array.isArray(n),i=a?n.length:n?1:0;a===r&&i===o||s("EventPluginUtils: Invalid `event`.")};var R=0,_=1,P=2,A=3,I=4,D=5,O=6,N=7,M=8,z=9,j=10,U=11,L=12,B=13,F=14,W=15,V=16,H=17,q=18,$=19,Y=20,Q=21,K=22,X=null,G={};function J(){if(X)for(var e in G){var t=G[e],n=X.indexOf(e);if(!(n>-1))throw Error("EventPluginRegistry: Cannot inject event plugins that do not exist in the plugin ordering, `"+e+"`.");if(!te[n]){if(!t.extractEvents)throw Error("EventPluginRegistry: Event plugins must implement an `extractEvents` method, but `"+e+"` does not.");te[n]=t;var r=t.eventTypes;for(var o in r)if(!Z(r[o],t,o))throw Error("EventPluginRegistry: Failed to publish event `"+o+"` for plugin `"+e+"`.")}}}function Z(e,t,n){if(ne.hasOwnProperty(n))throw Error("EventPluginRegistry: More than one plugin attempted to publish the same event name, `"+n+"`.");ne[n]=e;var r=e.phasedRegistrationNames;if(r){for(var o in r){if(r.hasOwnProperty(o))ee(r[o],t,n)}return!0}return!!e.registrationName&&(ee(e.registrationName,t,n),!0)}function ee(e,t,n){if(re[e])throw Error("EventPluginRegistry: More than one plugin attempted to publish the same registration name, `"+e+"`.");re[e]=t,oe[e]=t.eventTypes[n].dependencies;var r=e.toLowerCase();ae[r]=e,"onDoubleClick"===e&&(ae.ondblclick=e)}var te=[],ne={},re={},oe={},ae={};function ie(e){var t=!1;for(var n in e)if(e.hasOwnProperty(n)){var r=e[n];if(!G.hasOwnProperty(n)||G[n]!==r){if(G[n])throw Error("EventPluginRegistry: Cannot inject two different event plugins using the same name, `"+n+"`.");G[n]=r,t=!0}}t&&J()}var le=!("undefined"==typeof window||void 0===window.document||void 0===window.document.createElement),ue=1,se=32,ce=64,de=null,fe=null,pe=null;function me(e){var t=C(e);if(t){if("function"!=typeof de)throw Error("setRestoreImplementation() needs to be called to handle a target for controlled events. This error is likely caused by a bug in React. Please file an issue.");var n=t.stateNode;if(n){var r=T(n);de(t.stateNode,t.type,r)}}}function he(e){fe?pe?pe.push(e):pe=[e]:fe=e}function ve(){if(fe){var e=fe,t=pe;if(fe=null,pe=null,me(e),t)for(var n=0;n2&&("o"===e[0]||"O"===e[0])&&("n"===e[1]||"N"===e[1]))}function qe(e,t,n,r){if(null!==n&&n.type===Ie)return!1;switch(typeof t){case"function":case"symbol":return!0;case"boolean":if(r)return!1;if(null!==n)return!n.acceptsBooleans;var o=e.toLowerCase().slice(0,5);return"data-"!==o&&"aria-"!==o;default:return!1}}function $e(e,t,n,r){if(null==t)return!0;if(qe(e,t,n,r))return!0;if(r)return!1;if(null!==n)switch(n.type){case De:return!t;case Oe:return!1===t;case Ne:return isNaN(t);case Me:return isNaN(t)||t<1}return!1}function Ye(e){return Ke.hasOwnProperty(e)?Ke[e]:null}function Qe(e,t,n,r,o,a){this.acceptsBooleans=2===t||t===De||t===Oe,this.attributeName=r,this.attributeNamespace=o,this.mustUseProperty=n,this.propertyName=e,this.type=t,this.sanitizeURL=a}var Ke={};["children","dangerouslySetInnerHTML","defaultValue","defaultChecked","innerHTML","suppressContentEditableWarning","suppressHydrationWarning","style"].forEach((function(e){Ke[e]=new Qe(e,Ie,!1,e,null,!1)})),[["acceptCharset","accept-charset"],["className","class"],["htmlFor","for"],["httpEquiv","http-equiv"]].forEach((function(e){var t=e[0],n=e[1];Ke[t]=new Qe(t,1,!1,n,null,!1)})),["contentEditable","draggable","spellCheck","value"].forEach((function(e){Ke[e]=new Qe(e,2,!1,e.toLowerCase(),null,!1)})),["autoReverse","externalResourcesRequired","focusable","preserveAlpha"].forEach((function(e){Ke[e]=new Qe(e,2,!1,e,null,!1)})),["allowFullScreen","async","autoFocus","autoPlay","controls","default","defer","disabled","disablePictureInPicture","formNoValidate","hidden","loop","noModule","noValidate","open","playsInline","readOnly","required","reversed","scoped","seamless","itemScope"].forEach((function(e){Ke[e]=new Qe(e,De,!1,e.toLowerCase(),null,!1)})),["checked","multiple","muted","selected"].forEach((function(e){Ke[e]=new Qe(e,De,!0,e,null,!1)})),["capture","download"].forEach((function(e){Ke[e]=new Qe(e,Oe,!1,e,null,!1)})),["cols","rows","size","span"].forEach((function(e){Ke[e]=new Qe(e,Me,!1,e,null,!1)})),["rowSpan","start"].forEach((function(e){Ke[e]=new Qe(e,Ne,!1,e.toLowerCase(),null,!1)}));var Xe=/[\-\:]([a-z])/g,Ge=function(e){return e[1].toUpperCase()};["accent-height","alignment-baseline","arabic-form","baseline-shift","cap-height","clip-path","clip-rule","color-interpolation","color-interpolation-filters","color-profile","color-rendering","dominant-baseline","enable-background","fill-opacity","fill-rule","flood-color","flood-opacity","font-family","font-size","font-size-adjust","font-stretch","font-style","font-variant","font-weight","glyph-name","glyph-orientation-horizontal","glyph-orientation-vertical","horiz-adv-x","horiz-origin-x","image-rendering","letter-spacing","lighting-color","marker-end","marker-mid","marker-start","overline-position","overline-thickness","paint-order","panose-1","pointer-events","rendering-intent","shape-rendering","stop-color","stop-opacity","strikethrough-position","strikethrough-thickness","stroke-dasharray","stroke-dashoffset","stroke-linecap","stroke-linejoin","stroke-miterlimit","stroke-opacity","stroke-width","text-anchor","text-decoration","text-rendering","underline-position","underline-thickness","unicode-bidi","unicode-range","units-per-em","v-alphabetic","v-hanging","v-ideographic","v-mathematical","vector-effect","vert-adv-y","vert-origin-x","vert-origin-y","word-spacing","writing-mode","xmlns:xlink","x-height"].forEach((function(e){var t=e.replace(Xe,Ge);Ke[t]=new Qe(t,1,!1,e,null,!1)})),["xlink:actuate","xlink:arcrole","xlink:role","xlink:show","xlink:title","xlink:type"].forEach((function(e){var t=e.replace(Xe,Ge);Ke[t]=new Qe(t,1,!1,e,"http://www.w3.org/1999/xlink",!1)})),["xml:base","xml:lang","xml:space"].forEach((function(e){var t=e.replace(Xe,Ge);Ke[t]=new Qe(t,1,!1,e,"http://www.w3.org/XML/1998/namespace",!1)})),["tabIndex","crossOrigin"].forEach((function(e){Ke[e]=new Qe(e,1,!1,e.toLowerCase(),null,!1)}));Ke.xlinkHref=new Qe("xlinkHref",1,!1,"xlink:href","http://www.w3.org/1999/xlink",!0),["src","href","action","formAction"].forEach((function(e){Ke[e]=new Qe(e,1,!1,e.toLowerCase(),null,!0)}));l.ReactDebugCurrentFrame;var Je=/^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*\:/i,Ze=!1;function et(e){!Ze&&Je.test(e)&&(Ze=!0,s("A future version of React will block javascript: URLs as a security precaution. Use event handlers instead if you can. If you need to generate unsafe HTML try using dangerouslySetInnerHTML instead. React was passed %s.",JSON.stringify(e)))}function tt(e,t,n,r){if(r.mustUseProperty)return e[r.propertyName];r.sanitizeURL&&et(""+n);var o=r.attributeName,a=null;if(r.type===Oe){if(e.hasAttribute(o)){var i=e.getAttribute(o);return""===i||($e(t,n,r,!1)?i:i===""+n?n:i)}}else if(e.hasAttribute(o)){if($e(t,n,r,!1))return e.getAttribute(o);if(r.type===De)return n;a=e.getAttribute(o)}return $e(t,n,r,!1)?null===a?n:a:a===""+n?n:a}function nt(e,t,n){if(Ve(t)){if(!e.hasAttribute(t))return void 0===n?void 0:null;var r=e.getAttribute(t);return r===""+n?n:r}}function rt(e,t,n,r){var o=Ye(t);if(!He(t,o,r))if($e(t,n,o,r)&&(n=null),r||null===o){if(Ve(t)){var a=t;null===n?e.removeAttribute(a):e.setAttribute(a,""+n)}}else if(o.mustUseProperty){var i=o.propertyName;if(null===n){var l=o.type;e[i]=l!==De&&""}else e[i]=n}else{var u=o.attributeName,s=o.attributeNamespace;if(null===n)e.removeAttribute(u);else{var c,d=o.type;d===De||d===Oe&&!0===n?c="":(c=""+n,o.sanitizeURL&&et(c.toString())),s?e.setAttributeNS(s,u,c):e.setAttribute(u,c)}}}var ot=/^(.*)[\\\/]/;var at="function"==typeof Symbol&&Symbol.for,it=at?Symbol.for("react.element"):60103,lt=at?Symbol.for("react.portal"):60106,ut=at?Symbol.for("react.fragment"):60107,st=at?Symbol.for("react.strict_mode"):60108,ct=at?Symbol.for("react.profiler"):60114,dt=at?Symbol.for("react.provider"):60109,ft=at?Symbol.for("react.context"):60110,pt=at?Symbol.for("react.concurrent_mode"):60111,mt=at?Symbol.for("react.forward_ref"):60112,ht=at?Symbol.for("react.suspense"):60113,vt=at?Symbol.for("react.suspense_list"):60120,gt=at?Symbol.for("react.memo"):60115,yt=at?Symbol.for("react.lazy"):60116,bt=at?Symbol.for("react.block"):60121,wt="function"==typeof Symbol&&Symbol.iterator,kt="@@iterator";function xt(e){if(null===e||"object"!=typeof e)return null;var t=wt&&e[wt]||e[kt];return"function"==typeof t?t:null}var Tt=-1,Ct=0,St=1,Et=2;function Rt(e){return e._status===St?e._result:null}function _t(e){if(null==e)return null;if("number"==typeof e.tag&&s("Received an unexpected object in getComponentName(). This is likely a bug in React. Please file an issue."),"function"==typeof e)return e.displayName||e.name||null;if("string"==typeof e)return e;switch(e){case ut:return"Fragment";case lt:return"Portal";case ct:return"Profiler";case st:return"StrictMode";case ht:return"Suspense";case vt:return"SuspenseList"}if("object"==typeof e)switch(e.$$typeof){case ft:return"Context.Consumer";case dt:return"Context.Provider";case mt:return n=e,r=e.render,o="ForwardRef",a=r.displayName||r.name||"",n.displayName||(""!==a?o+"("+a+")":o);case gt:return _t(e.type);case bt:return _t(e.render);case yt:var t=Rt(e);if(t)return _t(t)}var n,r,o,a;return null}var Pt=l.ReactDebugCurrentFrame;function At(e){switch(e.tag){case A:case I:case O:case N:case j:case z:return"";default:var t=e._debugOwner,n=e._debugSource,r=_t(e.type),o=null;return t&&(o=_t(t.type)),function(e,t,n){var r="";if(t){var o=t.fileName,a=o.replace(ot,"");if(/^index\./.test(a)){var i=o.match(ot);if(i){var l=i[1];l&&(a=l.replace(ot,"")+"/"+a)}}r=" (at "+a+":"+t.lineNumber+")"}else n&&(r=" (created by "+n+")");return"\n in "+(e||"Unknown")+r}(r,n,o)}}function It(e){var t="",n=e;do{t+=At(n),n=n.return}while(n);return t}var Dt=null,Ot=!1;function Nt(){if(null===Dt)return null;var e=Dt._debugOwner;return null!=e?_t(e.type):null}function Mt(){return null===Dt?"":It(Dt)}function zt(){Pt.getCurrentStack=null,Dt=null,Ot=!1}function jt(e){Pt.getCurrentStack=Mt,Dt=e,Ot=!1}function Ut(e){Ot=e}function Lt(e){return""+e}function Bt(e){switch(typeof e){case"boolean":case"number":case"object":case"string":case"undefined":return e;default:return""}}var Ft,Wt={checkPropTypes:null};Ft=l.ReactDebugCurrentFrame;var Vt={button:!0,checkbox:!0,image:!0,hidden:!0,radio:!0,reset:!0,submit:!0},Ht={value:function(e,t,n){return Vt[e.type]||e.onChange||e.readOnly||e.disabled||null==e[t]||ye?null:new Error("You provided a `value` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultValue`. Otherwise, set either `onChange` or `readOnly`.")},checked:function(e,t,n){return e.onChange||e.readOnly||e.disabled||null==e[t]||ye?null:new Error("You provided a `checked` prop to a form field without an `onChange` handler. This will render a read-only field. If the field should be mutable use `defaultChecked`. Otherwise, set either `onChange` or `readOnly`.")}};function qt(e){var t=e.type,n=e.nodeName;return n&&"input"===n.toLowerCase()&&("checkbox"===t||"radio"===t)}function $t(e){return e._valueTracker}function Yt(e){$t(e)||(e._valueTracker=function(e){var t=qt(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var o=n.get,a=n.set;Object.defineProperty(e,t,{configurable:!0,get:function(){return o.call(this)},set:function(e){r=""+e,a.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable});var i={getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){!function(e){e._valueTracker=null}(e),delete e[t]}};return i}}(e))}function Qt(e){if(!e)return!1;var t=$t(e);if(!t)return!0;var n=t.getValue(),r=function(e){var t="";return e?t=qt(e)?e.checked?"true":"false":e.value:t}(e);return r!==n&&(t.setValue(r),!0)}Wt.checkPropTypes=function(e,t){a(Ht,t,"prop",e,Ft.getStackAddendum)};var Kt=!1,Xt=!1,Gt=!1,Jt=!1;function Zt(e){return"checkbox"===e.type||"radio"===e.type?null!=e.checked:null!=e.value}function en(e,t){var n=e,o=t.checked;return r({},t,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=o?o:n._wrapperState.initialChecked})}function tn(e,t){Wt.checkPropTypes("input",t),void 0===t.checked||void 0===t.defaultChecked||Xt||(s("%s contains an input of type %s with both checked and defaultChecked props. Input elements must be either controlled or uncontrolled (specify either the checked prop, or the defaultChecked prop, but not both). Decide between using a controlled or uncontrolled input element and remove one of these props. More info: https://fb.me/react-controlled-components",Nt()||"A component",t.type),Xt=!0),void 0===t.value||void 0===t.defaultValue||Kt||(s("%s contains an input of type %s with both value and defaultValue props. Input elements must be either controlled or uncontrolled (specify either the value prop, or the defaultValue prop, but not both). Decide between using a controlled or uncontrolled input element and remove one of these props. More info: https://fb.me/react-controlled-components",Nt()||"A component",t.type),Kt=!0);var n=e,r=null==t.defaultValue?"":t.defaultValue;n._wrapperState={initialChecked:null!=t.checked?t.checked:t.defaultChecked,initialValue:Bt(null!=t.value?t.value:r),controlled:Zt(t)}}function nn(e,t){var n=e,r=t.checked;null!=r&&rt(n,"checked",r,!1)}function rn(e,t){var n=e,r=Zt(t);n._wrapperState.controlled||!r||Jt||(s("A component is changing an uncontrolled input of type %s to be controlled. Input elements should not switch from uncontrolled to controlled (or vice versa). Decide between using a controlled or uncontrolled input element for the lifetime of the component. More info: https://fb.me/react-controlled-components",t.type),Jt=!0),!n._wrapperState.controlled||r||Gt||(s("A component is changing a controlled input of type %s to be uncontrolled. Input elements should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled input element for the lifetime of the component. More info: https://fb.me/react-controlled-components",t.type),Gt=!0),nn(e,t);var o=Bt(t.value),a=t.type;if(null!=o)"number"===a?(0===o&&""===n.value||n.value!=o)&&(n.value=Lt(o)):n.value!==Lt(o)&&(n.value=Lt(o));else if("submit"===a||"reset"===a)return void n.removeAttribute("value");t.hasOwnProperty("value")?ln(n,t.type,o):t.hasOwnProperty("defaultValue")&&ln(n,t.type,Bt(t.defaultValue)),null==t.checked&&null!=t.defaultChecked&&(n.defaultChecked=!!t.defaultChecked)}function on(e,t,n){var r=e;if(t.hasOwnProperty("value")||t.hasOwnProperty("defaultValue")){var o=t.type;if(("submit"===o||"reset"===o)&&(void 0===t.value||null===t.value))return;var a=Lt(r._wrapperState.initialValue);n||a!==r.value&&(r.value=a),r.defaultValue=a}var i=r.name;""!==i&&(r.name=""),r.defaultChecked=!r.defaultChecked,r.defaultChecked=!!r._wrapperState.initialChecked,""!==i&&(r.name=i)}function an(e,t){var n=e;rn(n,t),function(e,t){var n=t.name;if("radio"===t.type&&null!=n){for(var r=e;r.parentNode;)r=r.parentNode;for(var o=r.querySelectorAll("input[name="+JSON.stringify(""+n)+'][type="radio"]'),a=0;a children.")))})),null==n.selected||sn||(s("Use the `defaultValue` or `value` props on must be a scalar value if `multiple` is false.%s",n,pn())}}}(t),n._wrapperState={wasMultiple:!!t.multiple},void 0===t.value||void 0===t.defaultValue||un||(s("Select elements must be either controlled or uncontrolled (specify either the value prop, or the defaultValue prop, but not both). Decide between using a controlled or uncontrolled select element and remove one of these props. More info: https://fb.me/react-controlled-components"),un=!0)}var yn=!1;function bn(e,t){var n=e;if(null!=t.dangerouslySetInnerHTML)throw Error("`dangerouslySetInnerHTML` does not make sense on