{"version":3,"file":"viselect.mjs","sources":["../../../node_modules/.pnpm/preact@10.25.4/node_modules/preact/jsx-runtime/dist/jsxRuntime.module.js","../src/SelectionArea.tsx"],"sourcesContent":["import{options as r,Fragment as e}from\"preact\";export{Fragment}from\"preact\";var t=/[\"&<]/;function n(r){if(0===r.length||!1===t.test(r))return r;for(var e=0,n=0,o=\"\",f=\"\";n<r.length;n++){switch(r.charCodeAt(n)){case 34:f=\"&quot;\";break;case 38:f=\"&amp;\";break;case 60:f=\"&lt;\";break;default:continue}n!==e&&(o+=r.slice(e,n)),o+=f,e=n+1}return n!==e&&(o+=r.slice(e,n)),o}var o=/acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord|itera/i,f=0,i=Array.isArray;function u(e,t,n,o,i,u){t||(t={});var a,c,p=t;if(\"ref\"in p)for(c in p={},t)\"ref\"==c?a=t[c]:p[c]=t[c];var l={type:e,props:p,key:n,ref:a,__k:null,__:null,__b:0,__e:null,__c:null,constructor:void 0,__v:--f,__i:-1,__u:0,__source:i,__self:u};if(\"function\"==typeof e&&(a=e.defaultProps))for(c in a)void 0===p[c]&&(p[c]=a[c]);return r.vnode&&r.vnode(l),l}function a(r){var t=u(e,{tpl:r,exprs:[].slice.call(arguments,1)});return t.key=t.__v,t}var c={},p=/[A-Z]/g;function l(e,t){if(r.attr){var f=r.attr(e,t);if(\"string\"==typeof f)return f}if(\"ref\"===e||\"key\"===e)return\"\";if(\"style\"===e&&\"object\"==typeof t){var i=\"\";for(var u in t){var a=t[u];if(null!=a&&\"\"!==a){var l=\"-\"==u[0]?u:c[u]||(c[u]=u.replace(p,\"-$&\").toLowerCase()),s=\";\";\"number\"!=typeof a||l.startsWith(\"--\")||o.test(l)||(s=\"px;\"),i=i+l+\":\"+a+s}}return e+'=\"'+i+'\"'}return null==t||!1===t||\"function\"==typeof t||\"object\"==typeof t?\"\":!0===t?e:e+'=\"'+n(t)+'\"'}function s(r){if(null==r||\"boolean\"==typeof r||\"function\"==typeof r)return null;if(\"object\"==typeof r){if(void 0===r.constructor)return r;if(i(r)){for(var e=0;e<r.length;e++)r[e]=s(r[e]);return r}}return n(\"\"+r)}export{u as jsx,l as jsxAttr,u as jsxDEV,s as jsxEscape,a as jsxTemplate,u as jsxs};\n//# sourceMappingURL=jsxRuntime.module.js.map\n","import VanillaSelectionArea from '@viselect/vanilla';\nimport {SelectionEvents, PartialSelectionOptions} from '@viselect/vanilla';\nimport {createContext, createRef, FunctionalComponent, JSX} from 'preact';\nimport {useEffect, useContext, useState} from 'preact/hooks';\n\nexport interface SelectionAreaProps extends PartialSelectionOptions, JSX.HTMLAttributes<HTMLDivElement> {\n    id?: string;\n    className?: string;\n    onBeforeStart?: SelectionEvents['beforestart'];\n    onBeforeDrag?: SelectionEvents['beforedrag'];\n    onStart?: SelectionEvents['start'];\n    onMove?: SelectionEvents['move'];\n    onStop?: SelectionEvents['stop'];\n}\n\nconst SelectionContext = createContext<VanillaSelectionArea  | undefined>(undefined);\n\nexport const useSelection = () => useContext(SelectionContext);\n\nexport const SelectionArea: FunctionalComponent<SelectionAreaProps> = props => {\n    const [selectionState, setSelection] = useState<VanillaSelectionArea | undefined>(undefined);\n    const root = createRef<HTMLDivElement>();\n\n    useEffect(() => {\n        /* eslint-disable @typescript-eslint/no-unused-vars */\n        const {onBeforeStart, onBeforeDrag, onStart, onMove, onStop, ...opt} = props;\n        const areaBoundaries = root.current as HTMLElement;\n\n        const selection = new VanillaSelectionArea({\n            boundaries: areaBoundaries,\n            ...opt\n        });\n\n        selection.on('beforestart', evt => props.onBeforeStart?.(evt));\n        selection.on('beforedrag', evt => props.onBeforeDrag?.(evt));\n        selection.on('start', evt => props.onStart?.(evt));\n        selection.on('move', evt => props.onMove?.(evt));\n        selection.on('stop', evt => props.onStop?.(evt));\n\n        setSelection(selection);\n\n        return () => {\n            selection.destroy();\n            setSelection(undefined);\n        };\n    }, []);\n\n    return (\n        <SelectionContext.Provider value={selectionState}>\n            {props.boundaries ? (\n                props.children\n            ) : (\n                <div ref={root} className={props.className} id={props.id}>\n                    {props.children}\n                </div>\n            )}\n        </SelectionContext.Provider>\n    );\n};\n"],"names":["f","u","t","n","o","i","a","c","p","l","r","SelectionContext","createContext","useSelection","useContext","SelectionArea","props","selectionState","setSelection","useState","root","createRef","useEffect","onBeforeStart","onBeforeDrag","onStart","onMove","onStop","opt","areaBoundaries","selection","VanillaSelectionArea","evt","_a","jsx"],"mappings":";;;;;AAAqX,IAAuEA,IAAE;AAAkB,SAASC,EAAE,GAAEC,GAAEC,GAAEC,GAAEC,GAAEJ,GAAE;AAAC,EAAAC,MAAIA,IAAE,CAAA;AAAI,MAAII,GAAEC,GAAEC,IAAEN;AAAE,MAAG,SAAQM,EAAE,MAAID,KAAKC,IAAE,IAAGN,EAAE,CAAOK,KAAP,QAASD,IAAEJ,EAAEK,CAAC,IAAEC,EAAED,CAAC,IAAEL,EAAEK,CAAC;AAAE,MAAIE,IAAE,EAAC,MAAK,GAAE,OAAMD,GAAE,KAAIL,GAAE,KAAIG,GAAE,KAAI,MAAK,IAAG,MAAK,KAAI,GAAE,KAAI,MAAK,KAAI,MAAK,aAAY,QAAO,KAAI,EAAEN,GAAE,KAAI,IAAG,KAAI,GAAE,UAASK,GAAE,QAAOJ,EAAC;AAAE,MAAe,OAAO,KAAnB,eAAuBK,IAAE,EAAE,cAAc,MAAIC,KAAKD,EAAE,CAASE,EAAED,CAAC,MAAZ,WAAgBC,EAAED,CAAC,IAAED,EAAEC,CAAC;AAAG,SAAOG,EAAE,SAAOA,EAAE,MAAMD,CAAC,GAAEA;AAAC;ACe3yB,MAAME,IAAmBC,EAAiD,MAAS,GAEtEC,IAAe,MAAMC,EAAWH,CAAgB,GAEhDI,IAAyD,CAASC,MAAA;AAC3E,QAAM,CAACC,GAAgBC,CAAY,IAAIC,EAA2C,MAAS,GACrFC,IAAOC,EAA0B;AAEvC,SAAAC,EAAU,MAAM;AAEN,UAAA,EAAC,eAAAC,GAAe,cAAAC,GAAc,SAAAC,GAAS,QAAAC,GAAQ,QAAAC,GAAQ,GAAGC,MAAOZ,GACjEa,IAAiBT,EAAK,SAEtBU,IAAY,IAAIC,EAAqB;AAAA,MACvC,YAAYF;AAAA,MACZ,GAAGD;AAAA,IAAA,CACN;AAED,WAAAE,EAAU,GAAG,eAAe,CAAAE,MAAA;;AAAO,cAAAC,IAAAjB,EAAM,kBAAN,gBAAAiB,EAAA,KAAAjB,GAAsBgB;AAAA,KAAI,GAC7DF,EAAU,GAAG,cAAc,CAAAE,MAAA;;AAAO,cAAAC,IAAAjB,EAAM,iBAAN,gBAAAiB,EAAA,KAAAjB,GAAqBgB;AAAA,KAAI,GAC3DF,EAAU,GAAG,SAAS,CAAAE,MAAA;;AAAO,cAAAC,IAAAjB,EAAM,YAAN,gBAAAiB,EAAA,KAAAjB,GAAgBgB;AAAA,KAAI,GACjDF,EAAU,GAAG,QAAQ,CAAAE,MAAA;;AAAO,cAAAC,IAAAjB,EAAM,WAAN,gBAAAiB,EAAA,KAAAjB,GAAegB;AAAA,KAAI,GAC/CF,EAAU,GAAG,QAAQ,CAAAE,MAAA;;AAAO,cAAAC,IAAAjB,EAAM,WAAN,gBAAAiB,EAAA,KAAAjB,GAAegB;AAAA,KAAI,GAE/Cd,EAAaY,CAAS,GAEf,MAAM;AACT,MAAAA,EAAU,QAAQ,GAClBZ,EAAa,MAAS;AAAA,IAC1B;AAAA,EACJ,GAAG,EAAE,GAGDgB,gBAAAA,EAACvB,EAAiB,UAAjB,EAA0B,OAAOM,GAC7B,UAAAD,EAAM,aACHA,EAAM,WAENkB,gBAAAA,EAAC,SAAI,KAAKd,GAAM,WAAWJ,EAAM,WAAW,IAAIA,EAAM,IACjD,UAAMA,EAAA,SAAA,CACX,EAER,CAAA;AAER;","x_google_ignoreList":[0]}