Big News: Socket raises $60M Series C at a $1B valuation to secure software supply chains for AI-driven development.Announcement
Sign In

@projectstorm/react-workspaces-behavior-panel-dropzone

Package Overview
Dependencies
Maintainers
1
Versions
23
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

@projectstorm/react-workspaces-behavior-panel-dropzone - npm Package Compare versions

Comparing version
2.3.0
to
2.3.1
+1
-1
dist/index.umd.js.map

@@ -1,1 +0,1 @@

{"version":3,"file":"index.umd.js","mappings":"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","sources":["webpack://@projectstorm/react-workspaces-behavior-panel-dropzone/webpack/universalModuleDefinition","webpack://@projectstorm/react-workspaces-behavior-panel-dropzone/webpack/bootstrap","webpack://@projectstorm/react-workspaces-behavior-panel-dropzone/webpack/runtime/compat get default export","webpack://@projectstorm/react-workspaces-behavior-panel-dropzone/webpack/runtime/define property getters","webpack://@projectstorm/react-workspaces-behavior-panel-dropzone/webpack/runtime/hasOwnProperty shorthand","webpack://@projectstorm/react-workspaces-behavior-panel-dropzone/webpack/runtime/make namespace object","webpack://@projectstorm/react-workspaces-behavior-panel-dropzone/external commonjs \"react\"","webpack://@projectstorm/react-workspaces-behavior-panel-dropzone/external commonjs \"@projectstorm/react-workspaces-core\"","webpack://@projectstorm/react-workspaces-behavior-panel-dropzone/external commonjs \"lodash\"","webpack://@projectstorm/react-workspaces-behavior-panel-dropzone/external commonjs \"@emotion/styled\"","webpack://@projectstorm/react-workspaces-behavior-panel-dropzone/../src/DropZoneAlignmentButtonWidget.tsx","webpack://@projectstorm/react-workspaces-behavior-panel-dropzone/../src/DropZoneTransformWidget.tsx","webpack://@projectstorm/react-workspaces-behavior-panel-dropzone/../src/DropZoneLayerPanelWidget.tsx","webpack://@projectstorm/react-workspaces-behavior-panel-dropzone/../src/DropZoneLayer.tsx","webpack://@projectstorm/react-workspaces-behavior-panel-dropzone/external commonjs \"@fortawesome/react-fontawesome\"","webpack://@projectstorm/react-workspaces-behavior-panel-dropzone/../src/DropZoneLayerButtonWidget.tsx","webpack://@projectstorm/react-workspaces-behavior-panel-dropzone/external commonjs \"@fortawesome/fontawesome-svg-core\"","webpack://@projectstorm/react-workspaces-behavior-panel-dropzone/external commonjs \"@fortawesome/free-solid-svg-icons\"","webpack://@projectstorm/react-workspaces-behavior-panel-dropzone/../src/index.tsx"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"@projectstorm/react-workspaces-behavior-panel-dropzone\"] = factory();\n\telse\n\t\troot[\"@projectstorm/react-workspaces-behavior-panel-dropzone\"] = factory();\n})(self, () => {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@projectstorm/react-workspaces-core\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"lodash\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@emotion/styled\");","import * as React from 'react';\nimport { useRef, useState } from 'react';\nimport styled from '@emotion/styled';\nimport * as _ from 'lodash';\nimport {\n Alignment,\n useDroppableModel,\n useMouseDragEvents,\n WorkspaceEngine,\n WorkspaceModel\n} from '@projectstorm/react-workspaces-core';\n\nexport interface DropZoneAlignmentTheme {\n thickness?: number;\n thicknessIdle?: number;\n lengthIdle?: number;\n background?: string;\n backgroundEntered?: string;\n}\n\nconst DefaultDropZoneAlignmentTheme: DropZoneAlignmentTheme = {\n thickness: 30,\n thicknessIdle: 13,\n lengthIdle: 60,\n background: '#0096ff',\n backgroundEntered: 'orange'\n};\n\nexport interface DropZoneAlignmentButtonWidgetProps {\n alignment: Alignment;\n engine: WorkspaceEngine;\n model: WorkspaceModel;\n handleDrop: (model: WorkspaceModel) => any;\n theme?: DropZoneAlignmentTheme;\n}\n\nexport const DropZoneAlignmentButtonWidget: React.FC<DropZoneAlignmentButtonWidgetProps> = (props) => {\n const [entered, setEntered] = useState(false);\n const ref = useRef<HTMLDivElement>();\n const theme = _.merge({}, DefaultDropZoneAlignmentTheme, props.theme || {});\n useMouseDragEvents({\n forwardRef: ref,\n mouseEnter: () => {\n setEntered(true);\n },\n mouseExit: () => {\n setEntered(false);\n }\n });\n useDroppableModel({\n forwardRef: ref,\n engine: props.engine,\n onDrop: props.handleDrop\n });\n\n const vertical = props.alignment === Alignment.LEFT || props.alignment === Alignment.RIGHT;\n\n let width = theme.thicknessIdle;\n let height = theme.lengthIdle;\n if (!vertical) {\n width = theme.lengthIdle;\n height = theme.thicknessIdle;\n }\n\n return (\n <S.SplitContainer\n thickness={theme.thickness}\n ref={ref}\n vertical={vertical}\n alignment={props.alignment}\n hover={entered}\n >\n <S.SplitContainerIcon theme={theme} hover={entered} width={width} height={height} />\n </S.SplitContainer>\n );\n};\n\nnamespace S {\n export const SplitContainer = styled.div<{\n alignment: Alignment;\n hover: boolean;\n vertical: boolean;\n thickness: number;\n }>`\n ${(p) => p.alignment}: 0;\n position: absolute;\n width: ${(p) => (p.vertical ? `${p.thickness}px` : '100%')};\n height: ${(p) => (!p.vertical ? `${p.thickness}px` : '100%')};\n pointer-events: all;\n display: flex;\n align-items: center;\n justify-content: center;\n `;\n\n export const SplitContainerIcon = styled.div<{\n width: number;\n height: number;\n hover: boolean;\n theme: DropZoneAlignmentTheme;\n }>`\n border-radius: 2px;\n background: ${(p) => (p.hover ? p.theme.backgroundEntered : p.theme.background)};\n transition: background 0.3s, width ease-out 0.3s, height ease-out 0.3s;\n transition-delay: 0.1s;\n pointer-events: none;\n\n width: ${(p) => (p.hover ? '100%' : `${p.width}px`)};\n height: ${(p) => (p.hover ? '100%' : `${p.height}px`)};\n `;\n}\n","import * as React from 'react';\nimport styled from '@emotion/styled';\nimport { useDroppableModel, useMouseDragEvents, WorkspaceEngine } from '@projectstorm/react-workspaces-core';\nimport { useRef, useState } from 'react';\nimport { TransformZone } from './DropZoneLayerPanelWidget';\nimport { WorkspaceModel } from '@projectstorm/react-workspaces-core';\nimport { DropZoneLayerButtonTheme } from './DropZoneLayerButtonWidget';\n\nexport interface DropZoneTransformWidgetProps {\n engine: WorkspaceEngine;\n zone: TransformZone;\n model: WorkspaceModel;\n theme: Partial<DropZoneLayerButtonTheme>;\n}\n\nexport const DropZoneTransformWidget: React.FC<DropZoneTransformWidgetProps> = (props) => {\n const [entered, setEntered] = useState(false);\n const ref = useRef<HTMLDivElement>();\n useMouseDragEvents({\n forwardRef: ref,\n mouseEnter: () => {\n setEntered(true);\n },\n mouseExit: () => {\n setEntered(false);\n }\n });\n useDroppableModel({\n forwardRef: ref,\n engine: props.engine,\n onDrop: (model) => {\n props.zone.transform({\n model,\n zoneModel: props.model,\n engine: props.engine\n });\n }\n });\n return <S.Container ref={ref}>{props.zone.render({ entered, theme: props.theme })}</S.Container>;\n};\nnamespace S {\n export const Container = styled.div``;\n}\n","import * as React from 'react';\nimport * as _ from 'lodash';\nimport { useRef, useState } from 'react';\nimport styled from '@emotion/styled';\nimport {\n Alignment,\n DimensionTrackingWidget,\n UseMouseDragEventsRootWidget,\n WorkspaceEngine,\n WorkspaceModel\n} from '@projectstorm/react-workspaces-core';\nimport { DropZoneAlignmentButtonWidget, DropZoneAlignmentTheme } from './DropZoneAlignmentButtonWidget';\nimport { DropZoneTransformWidget } from './DropZoneTransformWidget';\nimport { DropZoneLayerButtonTheme } from './DropZoneLayerButtonWidget';\n\nexport interface TransformZoneEvent {\n model: WorkspaceModel;\n zoneModel: WorkspaceModel;\n engine: WorkspaceEngine;\n}\n\nexport interface TransformZone {\n transform: (event: TransformZoneEvent) => any;\n render: (options: { entered: boolean; theme: Partial<DropZoneLayerButtonTheme> }) => any;\n key: string;\n}\n\nexport interface SplitZone {\n alignment: Alignment;\n handleDrop: (model: WorkspaceModel, engine: WorkspaceEngine) => any;\n}\n\nexport interface DropZonePanelDirective {\n splitZones: SplitZone[];\n transformZones: TransformZone[];\n}\n\nexport interface DropZoneLayerPanelTheme {\n border?: number;\n borderColor?: string;\n borderColorEntered?: string;\n background?: string;\n backgroundEntered?: string;\n borderRadius?: number;\n blur?: number;\n splitButtonTheme?: DropZoneAlignmentTheme;\n transformButtonTheme?: Partial<DropZoneLayerButtonTheme>;\n}\n\nexport const DefaultDropZoneLayerPanelTheme: DropZoneLayerPanelTheme = {\n border: 2,\n blur: 0,\n borderColor: 'transparent',\n borderColorEntered: '#0096ff',\n background: 'transparent',\n borderRadius: 10,\n backgroundEntered: 'rgba(0, 0, 0, 0.4)'\n};\n\n// !------------------------------------------\n\nexport interface DropZoneLayerPanelWidgetProps {\n model: WorkspaceModel;\n engine: WorkspaceEngine;\n directive: DropZonePanelDirective;\n debug: boolean;\n theme?: DropZoneLayerPanelTheme;\n}\n\nexport const DropZoneLayerPanelWidget: React.FC<DropZoneLayerPanelWidgetProps> = (props) => {\n const ref = useRef<HTMLDivElement>();\n const [show, setShow] = useState(false);\n const theme = _.merge({}, DefaultDropZoneLayerPanelTheme, props.theme || {});\n\n return (\n <UseMouseDragEventsRootWidget\n forwardRef={ref}\n mouseEnter={() => {\n setShow(true);\n }}\n mouseExit={() => {\n setShow(false);\n }}\n >\n <S.DimensionTracking theme={theme} entered={show} dimension={props.model.r_dimensions}>\n <S.Inside ref={ref}>\n <S.Layer visible={show}>\n {props.directive.splitZones.map((d) => {\n return (\n <DropZoneAlignmentButtonWidget\n key={d.alignment}\n model={props.model}\n engine={props.engine}\n alignment={d.alignment}\n handleDrop={(model) => {\n d.handleDrop(model, props.engine);\n }}\n theme={theme.splitButtonTheme}\n />\n );\n })}\n </S.Layer>\n <S.Layer2 visible={show}>\n <S.ButtonBar>\n {props.directive.transformZones.map((zone) => {\n return (\n <DropZoneTransformWidget\n theme={theme.transformButtonTheme}\n model={props.model}\n zone={zone}\n engine={props.engine}\n key={zone.key}\n />\n );\n })}\n </S.ButtonBar>\n {props.debug ? <S.Debug>{props.model.id.substring(0, 7)}</S.Debug> : null}\n </S.Layer2>\n </S.Inside>\n </S.DimensionTracking>\n </UseMouseDragEventsRootWidget>\n );\n};\n\nnamespace S {\n export const DimensionTracking = styled(DimensionTrackingWidget)<{\n entered: boolean;\n theme: DropZoneLayerPanelTheme;\n }>`\n border-radius: ${(p) => p.theme.borderRadius}px;\n box-sizing: border-box;\n background: ${(p) => (p.entered ? p.theme.backgroundEntered : p.theme.background)};\n border: solid ${(p) => p.theme.border}px ${(p) => (p.entered ? p.theme.borderColorEntered : p.theme.borderColor)};\n transition: border 0.5s, background 0.5s;\n pointer-events: all;\n ${(p) => (p.theme.blur ? ` backdrop-filter: blur(${p.theme.blur}px)` : ``)};\n `;\n\n export const Debug = styled.span`\n font-size: 10px;\n color: white;\n `;\n\n export const ButtonBar = styled.div`\n display: flex;\n justify-content: center;\n flex-wrap: wrap;\n `;\n\n export const Layer = styled.div<{ visible: boolean }>`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n pointer-events: none;\n opacity: ${(p) => (p.visible ? 1 : 0)};\n transition: opacity 0.3s;\n `;\n\n export const Layer2 = styled.div<{ visible: boolean }>`\n position: absolute;\n box-sizing: border-box;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-wrap: wrap;\n padding: 20px;\n pointer-events: none;\n opacity: ${(p) => (p.visible ? 1 : 0)};\n transition: opacity 0.3s;\n `;\n\n export const Inside = styled.div`\n box-sizing: border-box;\n position: relative;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n `;\n}\n","import * as React from 'react';\nimport { Layer, WorkspaceEngine, WorkspaceModel } from '@projectstorm/react-workspaces-core';\nimport { DropZoneLayerPanelTheme, DropZoneLayerPanelWidget, DropZonePanelDirective } from './DropZoneLayerPanelWidget';\n\nexport interface DropZoneLayerOptions {\n getDropZoneForModel: (model: WorkspaceModel) => DropZonePanelDirective | null;\n theme?: DropZoneLayerPanelTheme;\n modelID: string;\n debugModels: boolean;\n}\n\nexport class DropZoneLayer extends Layer {\n constructor(private options2: DropZoneLayerOptions) {\n super({\n mouseEvents: false\n });\n }\n\n renderLayer(event): JSX.Element {\n return (\n <DropZoneLayerWidget\n debugModels={this.options2.debugModels}\n engine={event.engine}\n draggingModel={this.options2.modelID}\n getDropZoneForModel={this.options2.getDropZoneForModel}\n theme={this.options2.theme}\n />\n );\n }\n}\n\n//!--------------- widget ----------------\n\nexport interface DropZoneLayerWidgetProps {\n engine: WorkspaceEngine;\n getDropZoneForModel: (model: WorkspaceModel) => DropZonePanelDirective | null;\n draggingModel: string;\n debugModels: boolean;\n theme?: DropZoneLayerPanelTheme;\n}\n\nexport const DropZoneLayerWidget: React.FC<DropZoneLayerWidgetProps> = (props) => {\n const draggingModelFlattened =\n props.engine.rootModel\n .flatten()\n .find((m) => m.id === props.draggingModel)\n ?.flatten() || [];\n\n return (\n <>\n {props.engine.rootModel\n .flatten()\n .filter((m) => m.r_visible)\n .filter((m) => {\n // filter out the dragging model and its children (cant add parent to children)\n return !draggingModelFlattened.find((child) => child.id === m.id);\n })\n // dont show a drop zone for the same model\n // .filter((m) => m.id !== props.draggingModel.id)\n .map((m) => {\n const directive = props.getDropZoneForModel(m);\n\n if (!directive) {\n return null;\n }\n\n return (\n <DropZoneLayerPanelWidget\n debug={props.debugModels}\n directive={directive}\n engine={props.engine}\n model={m}\n theme={props.theme}\n key={m.id}\n />\n );\n })}\n </>\n );\n};\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@fortawesome/react-fontawesome\");","import * as React from 'react';\nimport styled from '@emotion/styled';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { IconProp } from '@fortawesome/fontawesome-svg-core';\nimport * as _ from 'lodash';\n\nexport interface DropZoneLayerButtonTheme {\n icon?: {\n color?: string;\n size?: number;\n };\n text?: {\n color?: string;\n size?: number;\n };\n borderSize?: number;\n borderRadius?: number;\n borderColor?: string;\n borderColorEntered?: string;\n background?: string;\n backgroundEntered?: string;\n}\n\nexport const DefaultDropZoneLayerButtonTheme: DropZoneLayerButtonTheme = {\n background: 'transparent',\n backgroundEntered: 'rgba(255, 165, 0, 0.56)',\n borderColor: '#0096ff',\n borderColorEntered: 'orange',\n borderSize: 2,\n borderRadius: 5,\n icon: {\n color: 'white',\n size: 22\n },\n text: {\n color: 'white',\n size: 11\n }\n};\n\nexport interface DropZoneLayerButtonWidgetProps {\n icon: IconProp;\n text: string;\n entered: boolean;\n theme?: DropZoneLayerButtonTheme;\n}\n\nexport const DropZoneLayerButtonWidget: React.FC<DropZoneLayerButtonWidgetProps> = (props) => {\n const theme = _.merge({}, DefaultDropZoneLayerButtonTheme, props.theme || {});\n return (\n <S.Container theme={theme} entered={props.entered}>\n <S.Icon theme={theme} icon={props.icon} />\n <S.Text theme={theme}>{props.text}</S.Text>\n </S.Container>\n );\n};\n\nnamespace S {\n export const Icon = styled(FontAwesomeIcon)<{ theme: DropZoneLayerButtonTheme }>`\n font-size: ${(p) => p.theme.icon.size}px;\n color: ${(p) => p.theme.icon.color};\n pointer-events: none;\n `;\n\n export const Text = styled.div<{ theme: DropZoneLayerButtonTheme }>`\n font-size: ${(p) => p.theme.text.size}px;\n color: ${(p) => p.theme.text.color};\n padding-top: 5px;\n pointer-events: none;\n `;\n\n export const Container = styled.div<{ entered: boolean; theme: DropZoneLayerButtonTheme }>`\n border: solid 2px ${(p) => (p.entered ? p.theme.borderColorEntered : p.theme.borderColor)};\n box-sizing: border-box;\n background: ${(p) => (p.entered ? p.theme.backgroundEntered : p.theme.background)};\n transition: border 0.3s, background 0.3s;\n pointer-events: all;\n width: 60px;\n height: 60px;\n margin: 2px;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n border-radius: 5px;\n `;\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@fortawesome/fontawesome-svg-core\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@fortawesome/free-solid-svg-icons\");","import * as React from 'react';\nimport {\n Alignment,\n WorkspaceCollectionModel,\n WorkspaceEngine,\n WorkspaceModel,\n WorkspaceNodeModel\n} from '@projectstorm/react-workspaces-core';\nimport { DropZoneLayer } from './DropZoneLayer';\nimport { DropZoneLayerPanelTheme, DropZonePanelDirective, TransformZone } from './DropZoneLayerPanelWidget';\nimport { DropZoneLayerButtonWidget } from './DropZoneLayerButtonWidget';\nimport { library } from '@fortawesome/fontawesome-svg-core';\nimport { faCopy } from '@fortawesome/free-solid-svg-icons';\n\nlibrary.add(faCopy);\n\nexport interface DraggingItemBehaviorOptions {\n getDropZoneForModel: (model: WorkspaceModel) => DropZonePanelDirective | null;\n engine: WorkspaceEngine;\n debug?: boolean;\n getTheme?: () => DropZoneLayerPanelTheme;\n}\n\nexport const draggingItemBehavior = (options: DraggingItemBehaviorOptions) => {\n let layer: DropZoneLayer = null;\n const { engine } = options;\n engine.registerListener({\n modelDragStart: () => {\n if (layer) {\n return;\n }\n layer = new DropZoneLayer({\n modelID: engine.draggingID,\n getDropZoneForModel: options.getDropZoneForModel,\n debugModels: options.debug,\n theme: options.getTheme?.()\n });\n engine.layerManager.addLayer(layer);\n },\n modelDragEnd: () => {\n layer?.remove();\n layer = null;\n }\n });\n};\n\nexport const ReplaceZone: TransformZone = {\n key: 'REPLACE',\n render: ({ entered, theme }) => {\n return <DropZoneLayerButtonWidget theme={theme} entered={entered} text=\"Replace\" icon=\"copy\" />;\n },\n transform: ({ model, zoneModel, engine }) => {\n (zoneModel.parent as WorkspaceCollectionModel).replaceModel(zoneModel, model);\n engine.normalize();\n }\n};\n\nexport interface GetDirectiveForWorkspaceNodeOptions {\n node: WorkspaceModel;\n transformZones?: TransformZone[];\n generateParentNode?: () => WorkspaceNodeModel;\n}\n\nexport const getDirectiveForWorkspaceNode = (\n options: GetDirectiveForWorkspaceNodeOptions\n): DropZonePanelDirective | null => {\n const { node, transformZones, generateParentNode } = options;\n if (!(node instanceof WorkspaceCollectionModel) && node.parent instanceof WorkspaceNodeModel) {\n return {\n transformZones: [ReplaceZone, ...(transformZones || [])],\n splitZones: [\n {\n alignment: node.parent.vertical ? Alignment.LEFT : Alignment.TOP,\n handleDrop: (model, engine) => {\n const parent = node.parent as WorkspaceNodeModel;\n const m = generateParentNode?.() || new WorkspaceNodeModel();\n m.setVertical(!parent.vertical);\n m.setExpand(model.expandHorizontal, model.expandHorizontal);\n m.addModel(model);\n parent.replaceModel(node, m);\n m.addModel(node);\n engine.normalize();\n }\n },\n {\n alignment: node.parent.vertical ? Alignment.RIGHT : Alignment.BOTTOM,\n handleDrop: (model, engine) => {\n const parent = node.parent as WorkspaceNodeModel;\n const m = generateParentNode?.() || new WorkspaceNodeModel();\n m.setVertical(!parent.vertical);\n m.setExpand(model.expandHorizontal, model.expandHorizontal);\n m.addModel(model);\n parent.replaceModel(node, m);\n m.addModel(node, 0);\n engine.normalize();\n }\n }\n ]\n };\n }\n};\n\nexport * from './DropZoneLayerPanelWidget';\nexport * from './DropZoneLayerButtonWidget';\nexport * from './DropZoneTransformWidget';\nexport * from './DropZoneAlignmentButtonWidget';\nexport * from './DropZoneLayer';\n"],"names":["root","factory","exports","module","define","amd","self","__webpack_require__","getter","__esModule","d","a","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","require","DefaultDropZoneAlignmentTheme","thickness","thicknessIdle","lengthIdle","background","backgroundEntered","DropZoneAlignmentButtonWidget","props","entered","setEntered","useState","ref","useRef","theme","_","useMouseDragEvents","forwardRef","mouseEnter","mouseExit","useDroppableModel","engine","onDrop","handleDrop","vertical","alignment","Alignment","width","height","S","SplitContainer","hover","SplitContainerIcon","styled","p","DropZoneTransformWidget","model","zone","transform","zoneModel","Container","render","DefaultDropZoneLayerPanelTheme","border","blur","borderColor","borderColorEntered","borderRadius","DropZoneLayerPanelWidget","show","setShow","UseMouseDragEventsRootWidget","DimensionTracking","dimension","r_dimensions","Inside","Layer","visible","directive","splitZones","map","splitButtonTheme","Layer2","ButtonBar","transformZones","transformButtonTheme","debug","Debug","id","substring","DimensionTrackingWidget","DropZoneLayer","constructor","options2","super","mouseEvents","renderLayer","event","DropZoneLayerWidget","debugModels","this","draggingModel","modelID","getDropZoneForModel","draggingModelFlattened","rootModel","flatten","find","m","filter","r_visible","child","DefaultDropZoneLayerButtonTheme","borderSize","icon","color","size","text","DropZoneLayerButtonWidget","Icon","Text","FontAwesomeIcon","library","faCopy","draggingItemBehavior","options","layer","registerListener","modelDragStart","draggingID","getTheme","layerManager","addLayer","modelDragEnd","remove","ReplaceZone","parent","replaceModel","normalize","getDirectiveForWorkspaceNode","node","generateParentNode","WorkspaceCollectionModel","WorkspaceNodeModel","setVertical","setExpand","expandHorizontal","addModel"],"sourceRoot":""}
{"version":3,"file":"index.umd.js","mappings":"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","sources":["webpack://@projectstorm/react-workspaces-behavior-panel-dropzone/webpack/universalModuleDefinition","webpack://@projectstorm/react-workspaces-behavior-panel-dropzone/webpack/bootstrap","webpack://@projectstorm/react-workspaces-behavior-panel-dropzone/webpack/runtime/compat get default export","webpack://@projectstorm/react-workspaces-behavior-panel-dropzone/webpack/runtime/define property getters","webpack://@projectstorm/react-workspaces-behavior-panel-dropzone/webpack/runtime/hasOwnProperty shorthand","webpack://@projectstorm/react-workspaces-behavior-panel-dropzone/webpack/runtime/make namespace object","webpack://@projectstorm/react-workspaces-behavior-panel-dropzone/external commonjs \"react\"","webpack://@projectstorm/react-workspaces-behavior-panel-dropzone/external commonjs \"@projectstorm/react-workspaces-core\"","webpack://@projectstorm/react-workspaces-behavior-panel-dropzone/external commonjs \"lodash\"","webpack://@projectstorm/react-workspaces-behavior-panel-dropzone/external commonjs \"@emotion/styled\"","webpack://@projectstorm/react-workspaces-behavior-panel-dropzone/../src/DropZoneAlignmentButtonWidget.tsx","webpack://@projectstorm/react-workspaces-behavior-panel-dropzone/../src/DropZoneTransformWidget.tsx","webpack://@projectstorm/react-workspaces-behavior-panel-dropzone/../src/DropZoneLayerPanelWidget.tsx","webpack://@projectstorm/react-workspaces-behavior-panel-dropzone/../src/DropZoneLayer.tsx","webpack://@projectstorm/react-workspaces-behavior-panel-dropzone/external commonjs \"@fortawesome/react-fontawesome\"","webpack://@projectstorm/react-workspaces-behavior-panel-dropzone/../src/DropZoneLayerButtonWidget.tsx","webpack://@projectstorm/react-workspaces-behavior-panel-dropzone/external commonjs \"@fortawesome/fontawesome-svg-core\"","webpack://@projectstorm/react-workspaces-behavior-panel-dropzone/external commonjs \"@fortawesome/free-solid-svg-icons\"","webpack://@projectstorm/react-workspaces-behavior-panel-dropzone/../src/index.tsx"],"sourcesContent":["(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"@projectstorm/react-workspaces-behavior-panel-dropzone\"] = factory();\n\telse\n\t\troot[\"@projectstorm/react-workspaces-behavior-panel-dropzone\"] = factory();\n})(self, () => {\nreturn ","// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@projectstorm/react-workspaces-core\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"lodash\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@emotion/styled\");","import * as React from 'react';\nimport { useRef, useState } from 'react';\nimport styled from '@emotion/styled';\nimport * as _ from 'lodash';\nimport {\n Alignment,\n useDroppableModel,\n useMouseDragEvents,\n WorkspaceEngine,\n WorkspaceModel\n} from '@projectstorm/react-workspaces-core';\n\nexport interface DropZoneAlignmentTheme {\n thickness?: number;\n thicknessIdle?: number;\n lengthIdle?: number;\n background?: string;\n backgroundEntered?: string;\n}\n\nconst DefaultDropZoneAlignmentTheme: DropZoneAlignmentTheme = {\n thickness: 30,\n thicknessIdle: 13,\n lengthIdle: 60,\n background: '#0096ff',\n backgroundEntered: 'orange'\n};\n\nexport interface DropZoneAlignmentButtonWidgetProps {\n alignment: Alignment;\n engine: WorkspaceEngine;\n model: WorkspaceModel;\n handleDrop: (model: WorkspaceModel) => any;\n theme?: DropZoneAlignmentTheme;\n}\n\nexport const DropZoneAlignmentButtonWidget: React.FC<DropZoneAlignmentButtonWidgetProps> = (props) => {\n const [entered, setEntered] = useState(false);\n const ref = useRef<HTMLDivElement>();\n const theme = _.merge({}, DefaultDropZoneAlignmentTheme, props.theme || {});\n useMouseDragEvents({\n forwardRef: ref,\n mouseEnter: () => {\n setEntered(true);\n },\n mouseExit: () => {\n setEntered(false);\n }\n });\n useDroppableModel({\n forwardRef: ref,\n engine: props.engine,\n onDrop: props.handleDrop\n });\n\n const vertical = props.alignment === Alignment.LEFT || props.alignment === Alignment.RIGHT;\n\n let width = theme.thicknessIdle;\n let height = theme.lengthIdle;\n if (!vertical) {\n width = theme.lengthIdle;\n height = theme.thicknessIdle;\n }\n\n return (\n <S.SplitContainer\n thickness={theme.thickness}\n ref={ref}\n vertical={vertical}\n alignment={props.alignment}\n hover={entered}\n >\n <S.SplitContainerIcon theme={theme} hover={entered} width={width} height={height} />\n </S.SplitContainer>\n );\n};\n\nnamespace S {\n export const SplitContainer = styled.div<{\n alignment: Alignment;\n hover: boolean;\n vertical: boolean;\n thickness: number;\n }>`\n ${(p) => p.alignment}: 0;\n position: absolute;\n width: ${(p) => (p.vertical ? `${p.thickness}px` : '100%')};\n height: ${(p) => (!p.vertical ? `${p.thickness}px` : '100%')};\n pointer-events: all;\n display: flex;\n align-items: center;\n justify-content: center;\n `;\n\n export const SplitContainerIcon = styled.div<{\n width: number;\n height: number;\n hover: boolean;\n theme: DropZoneAlignmentTheme;\n }>`\n border-radius: 2px;\n background: ${(p) => (p.hover ? p.theme.backgroundEntered : p.theme.background)};\n transition: background 0.3s, width ease-out 0.3s, height ease-out 0.3s;\n transition-delay: 0.1s;\n pointer-events: none;\n\n width: ${(p) => (p.hover ? '100%' : `${p.width}px`)};\n height: ${(p) => (p.hover ? '100%' : `${p.height}px`)};\n `;\n}\n","import * as React from 'react';\nimport styled from '@emotion/styled';\nimport { useDroppableModel, useMouseDragEvents, WorkspaceEngine } from '@projectstorm/react-workspaces-core';\nimport { useRef, useState } from 'react';\nimport { TransformZone } from './DropZoneLayerPanelWidget';\nimport { WorkspaceModel } from '@projectstorm/react-workspaces-core';\nimport { DropZoneLayerButtonTheme } from './DropZoneLayerButtonWidget';\n\nexport interface DropZoneTransformWidgetProps {\n engine: WorkspaceEngine;\n zone: TransformZone;\n model: WorkspaceModel;\n theme: Partial<DropZoneLayerButtonTheme>;\n}\n\nexport const DropZoneTransformWidget: React.FC<DropZoneTransformWidgetProps> = (props) => {\n const [entered, setEntered] = useState(false);\n const ref = useRef<HTMLDivElement>();\n useMouseDragEvents({\n forwardRef: ref,\n mouseEnter: () => {\n setEntered(true);\n },\n mouseExit: () => {\n setEntered(false);\n }\n });\n useDroppableModel({\n forwardRef: ref,\n engine: props.engine,\n onDrop: (model) => {\n props.zone.transform({\n model,\n zoneModel: props.model,\n engine: props.engine\n });\n }\n });\n return <S.Container ref={ref}>{props.zone.render({ entered, theme: props.theme })}</S.Container>;\n};\nnamespace S {\n export const Container = styled.div``;\n}\n","import * as React from 'react';\nimport * as _ from 'lodash';\nimport { useRef, useState } from 'react';\nimport styled from '@emotion/styled';\nimport {\n Alignment,\n DimensionTrackingWidget,\n UseMouseDragEventsRootWidget,\n WorkspaceEngine,\n WorkspaceModel\n} from '@projectstorm/react-workspaces-core';\nimport { DropZoneAlignmentButtonWidget, DropZoneAlignmentTheme } from './DropZoneAlignmentButtonWidget';\nimport { DropZoneTransformWidget } from './DropZoneTransformWidget';\nimport { DropZoneLayerButtonTheme } from './DropZoneLayerButtonWidget';\n\nexport interface TransformZoneEvent {\n model: WorkspaceModel;\n zoneModel: WorkspaceModel;\n engine: WorkspaceEngine;\n}\n\nexport interface TransformZone {\n transform: (event: TransformZoneEvent) => any;\n render: (options: { entered: boolean; theme: Partial<DropZoneLayerButtonTheme> }) => any;\n key: string;\n}\n\nexport interface SplitZone {\n alignment: Alignment;\n handleDrop: (model: WorkspaceModel, engine: WorkspaceEngine) => any;\n}\n\nexport interface DropZonePanelDirective {\n splitZones: SplitZone[];\n transformZones: TransformZone[];\n}\n\nexport interface DropZoneLayerPanelTheme {\n border?: number;\n borderColor?: string;\n borderColorEntered?: string;\n background?: string;\n backgroundEntered?: string;\n borderRadius?: number;\n blur?: number;\n splitButtonTheme?: DropZoneAlignmentTheme;\n transformButtonTheme?: Partial<DropZoneLayerButtonTheme>;\n}\n\nexport const DefaultDropZoneLayerPanelTheme: DropZoneLayerPanelTheme = {\n border: 2,\n blur: 0,\n borderColor: 'transparent',\n borderColorEntered: '#0096ff',\n background: 'transparent',\n borderRadius: 10,\n backgroundEntered: 'rgba(0, 0, 0, 0.4)'\n};\n\n// !------------------------------------------\n\nexport interface DropZoneLayerPanelWidgetProps {\n model: WorkspaceModel;\n engine: WorkspaceEngine;\n directive: DropZonePanelDirective;\n debug: boolean;\n theme?: DropZoneLayerPanelTheme;\n}\n\nexport const DropZoneLayerPanelWidget: React.FC<DropZoneLayerPanelWidgetProps> = (props) => {\n const ref = useRef<HTMLDivElement>();\n const [show, setShow] = useState(false);\n const theme = _.merge({}, DefaultDropZoneLayerPanelTheme, props.theme || {});\n\n return (\n <UseMouseDragEventsRootWidget\n forwardRef={ref}\n mouseEnter={() => {\n setShow(true);\n }}\n mouseExit={() => {\n setShow(false);\n }}\n >\n <S.DimensionTracking theme={theme} entered={show} dimension={props.model.r_dimensions}>\n <S.Inside ref={ref}>\n <S.Layer visible={show}>\n {props.directive.splitZones.map((d) => {\n return (\n <DropZoneAlignmentButtonWidget\n key={d.alignment}\n model={props.model}\n engine={props.engine}\n alignment={d.alignment}\n handleDrop={(model) => {\n d.handleDrop(model, props.engine);\n }}\n theme={theme.splitButtonTheme}\n />\n );\n })}\n </S.Layer>\n <S.Layer2 visible={show}>\n <S.ButtonBar>\n {props.directive.transformZones.map((zone) => {\n return (\n <DropZoneTransformWidget\n theme={theme.transformButtonTheme}\n model={props.model}\n zone={zone}\n engine={props.engine}\n key={zone.key}\n />\n );\n })}\n </S.ButtonBar>\n {props.debug ? <S.Debug>{props.model.id.substring(0, 7)}</S.Debug> : null}\n </S.Layer2>\n </S.Inside>\n </S.DimensionTracking>\n </UseMouseDragEventsRootWidget>\n );\n};\n\nnamespace S {\n export const DimensionTracking = styled(DimensionTrackingWidget)<{\n entered: boolean;\n theme: DropZoneLayerPanelTheme;\n }>`\n border-radius: ${(p) => p.theme.borderRadius}px;\n box-sizing: border-box;\n background: ${(p) => (p.entered ? p.theme.backgroundEntered : p.theme.background)};\n border: solid ${(p) => p.theme.border}px ${(p) => (p.entered ? p.theme.borderColorEntered : p.theme.borderColor)};\n transition: border 0.5s, background 0.5s;\n pointer-events: all;\n ${(p) => (p.theme.blur ? ` backdrop-filter: blur(${p.theme.blur}px)` : ``)};\n `;\n\n export const Debug = styled.span`\n font-size: 10px;\n color: white;\n `;\n\n export const ButtonBar = styled.div`\n display: flex;\n justify-content: center;\n flex-wrap: wrap;\n `;\n\n export const Layer = styled.div<{ visible: boolean }>`\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n pointer-events: none;\n opacity: ${(p) => (p.visible ? 1 : 0)};\n transition: opacity 0.3s;\n `;\n\n export const Layer2 = styled.div<{ visible: boolean }>`\n position: absolute;\n box-sizing: border-box;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-wrap: wrap;\n padding: 20px;\n pointer-events: none;\n opacity: ${(p) => (p.visible ? 1 : 0)};\n transition: opacity 0.3s;\n `;\n\n export const Inside = styled.div`\n box-sizing: border-box;\n position: relative;\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n `;\n}\n","import * as React from 'react';\nimport { Layer, WorkspaceEngine, WorkspaceModel } from '@projectstorm/react-workspaces-core';\nimport { DropZoneLayerPanelTheme, DropZoneLayerPanelWidget, DropZonePanelDirective } from './DropZoneLayerPanelWidget';\n\nexport interface DropZoneLayerOptions {\n getDropZoneForModel: (model: WorkspaceModel) => DropZonePanelDirective | null;\n theme?: DropZoneLayerPanelTheme;\n modelID: string;\n debugModels: boolean;\n}\n\nexport class DropZoneLayer extends Layer {\n constructor(private options2: DropZoneLayerOptions) {\n super({\n mouseEvents: false\n });\n }\n\n renderLayer(event): JSX.Element {\n return (\n <DropZoneLayerWidget\n debugModels={this.options2.debugModels}\n engine={event.engine}\n draggingModel={this.options2.modelID}\n getDropZoneForModel={this.options2.getDropZoneForModel}\n theme={this.options2.theme}\n />\n );\n }\n}\n\n//!--------------- widget ----------------\n\nexport interface DropZoneLayerWidgetProps {\n engine: WorkspaceEngine;\n getDropZoneForModel: (model: WorkspaceModel) => DropZonePanelDirective | null;\n draggingModel: string;\n debugModels: boolean;\n theme?: DropZoneLayerPanelTheme;\n}\n\nexport const DropZoneLayerWidget: React.FC<DropZoneLayerWidgetProps> = (props) => {\n const draggingModelFlattened =\n props.engine.rootModel\n .flatten()\n .find((m) => m.id === props.draggingModel)\n ?.flatten() || [];\n\n return (\n <>\n {props.engine.rootModel\n .flatten()\n .filter((m) => m.r_visible)\n .filter((m) => {\n // filter out the dragging model and its children (cant add parent to children)\n return !draggingModelFlattened.find((child) => child.id === m.id);\n })\n // dont show a drop zone for the same model\n // .filter((m) => m.id !== props.draggingModel.id)\n .map((m) => {\n const directive = props.getDropZoneForModel(m);\n\n if (!directive) {\n return null;\n }\n\n return (\n <DropZoneLayerPanelWidget\n debug={props.debugModels}\n directive={directive}\n engine={props.engine}\n model={m}\n theme={props.theme}\n key={m.id}\n />\n );\n })}\n </>\n );\n};\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@fortawesome/react-fontawesome\");","import * as React from 'react';\nimport styled from '@emotion/styled';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { IconProp } from '@fortawesome/fontawesome-svg-core';\nimport * as _ from 'lodash';\n\nexport interface DropZoneLayerButtonTheme {\n icon?: {\n color?: string;\n size?: number;\n };\n text?: {\n color?: string;\n size?: number;\n };\n borderSize?: number;\n borderRadius?: number;\n borderColor?: string;\n borderColorEntered?: string;\n background?: string;\n backgroundEntered?: string;\n}\n\nexport const DefaultDropZoneLayerButtonTheme: DropZoneLayerButtonTheme = {\n background: 'transparent',\n backgroundEntered: 'rgba(255, 165, 0, 0.56)',\n borderColor: '#0096ff',\n borderColorEntered: 'orange',\n borderSize: 2,\n borderRadius: 5,\n icon: {\n color: 'white',\n size: 22\n },\n text: {\n color: 'white',\n size: 11\n }\n};\n\nexport interface DropZoneLayerButtonWidgetProps {\n icon: IconProp;\n text: string;\n entered: boolean;\n theme?: DropZoneLayerButtonTheme;\n}\n\nexport const DropZoneLayerButtonWidget: React.FC<DropZoneLayerButtonWidgetProps> = (props) => {\n const theme = _.merge({}, DefaultDropZoneLayerButtonTheme, props.theme || {});\n return (\n <S.Container theme={theme} entered={props.entered}>\n <S.Icon theme={theme} icon={props.icon} />\n <S.Text theme={theme}>{props.text}</S.Text>\n </S.Container>\n );\n};\n\nnamespace S {\n export const Icon = styled(FontAwesomeIcon)<{ theme: DropZoneLayerButtonTheme }>`\n font-size: ${(p) => p.theme.icon.size}px;\n color: ${(p) => p.theme.icon.color};\n pointer-events: none;\n `;\n\n export const Text = styled.div<{ theme: DropZoneLayerButtonTheme }>`\n font-size: ${(p) => p.theme.text.size}px;\n color: ${(p) => p.theme.text.color};\n padding-top: 5px;\n pointer-events: none;\n `;\n\n export const Container = styled.div<{ entered: boolean; theme: DropZoneLayerButtonTheme }>`\n border: solid 2px ${(p) => (p.entered ? p.theme.borderColorEntered : p.theme.borderColor)};\n box-sizing: border-box;\n background: ${(p) => (p.entered ? p.theme.backgroundEntered : p.theme.background)};\n transition: border 0.3s, background 0.3s;\n pointer-events: all;\n width: 60px;\n height: 60px;\n margin: 2px;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n border-radius: 5px;\n `;\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@fortawesome/fontawesome-svg-core\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@fortawesome/free-solid-svg-icons\");","import * as React from 'react';\nimport {\n Alignment,\n WorkspaceCollectionModel,\n WorkspaceEngine,\n WorkspaceModel,\n WorkspaceNodeModel\n} from '@projectstorm/react-workspaces-core';\nimport { DropZoneLayer } from './DropZoneLayer';\nimport { DropZoneLayerPanelTheme, DropZonePanelDirective, TransformZone } from './DropZoneLayerPanelWidget';\nimport { DropZoneLayerButtonWidget } from './DropZoneLayerButtonWidget';\nimport { library } from '@fortawesome/fontawesome-svg-core';\nimport { faCopy } from '@fortawesome/free-solid-svg-icons';\n\nlibrary.add(faCopy);\n\nexport interface DraggingItemBehaviorOptions {\n getDropZoneForModel: (model: WorkspaceModel) => DropZonePanelDirective | null;\n engine: WorkspaceEngine;\n debug?: boolean;\n getTheme?: () => DropZoneLayerPanelTheme;\n}\n\nexport const draggingItemBehavior = (options: DraggingItemBehaviorOptions) => {\n let layer: DropZoneLayer = null;\n const { engine } = options;\n engine.registerListener({\n modelDragStart: () => {\n if (layer) {\n return;\n }\n layer = new DropZoneLayer({\n modelID: engine.draggingID,\n getDropZoneForModel: options.getDropZoneForModel,\n debugModels: options.debug,\n theme: options.getTheme?.()\n });\n engine.layerManager.addLayer(layer);\n },\n modelDragEnd: () => {\n layer?.remove();\n layer = null;\n }\n });\n};\n\nexport const ReplaceZone: TransformZone = {\n key: 'REPLACE',\n render: ({ entered, theme }) => {\n return <DropZoneLayerButtonWidget theme={theme} entered={entered} text=\"Replace\" icon=\"copy\" />;\n },\n transform: ({ model, zoneModel, engine }) => {\n (zoneModel.parent as WorkspaceCollectionModel).replaceModel(zoneModel, model);\n engine.normalize();\n }\n};\n\nexport interface GetDirectiveForWorkspaceNodeOptions {\n node: WorkspaceModel;\n transformZones?: TransformZone[];\n generateParentNode?: () => WorkspaceNodeModel;\n}\n\nexport const getDirectiveForWorkspaceNode = (\n options: GetDirectiveForWorkspaceNodeOptions\n): DropZonePanelDirective | null => {\n const { node, transformZones, generateParentNode } = options;\n if (!(node instanceof WorkspaceCollectionModel) && node.parent instanceof WorkspaceNodeModel) {\n return {\n transformZones: [ReplaceZone, ...(transformZones || [])],\n splitZones: [\n {\n alignment: node.parent.vertical ? Alignment.LEFT : Alignment.TOP,\n handleDrop: (model, engine) => {\n const parent = node.parent as WorkspaceNodeModel;\n const m = generateParentNode?.() || new WorkspaceNodeModel();\n m.setVertical(!parent.vertical);\n m.setExpand(model.expandHorizontal, model.expandHorizontal);\n m.addModel(model);\n parent.replaceModel(node, m);\n m.addModel(node);\n engine.normalize();\n }\n },\n {\n alignment: node.parent.vertical ? Alignment.RIGHT : Alignment.BOTTOM,\n handleDrop: (model, engine) => {\n const parent = node.parent as WorkspaceNodeModel;\n const m = generateParentNode?.() || new WorkspaceNodeModel();\n m.setVertical(!parent.vertical);\n m.setExpand(model.expandHorizontal, model.expandHorizontal);\n m.addModel(model);\n parent.replaceModel(node, m);\n m.addModel(node, 0);\n engine.normalize();\n }\n }\n ]\n };\n }\n};\n\nexport * from './DropZoneLayerPanelWidget';\nexport * from './DropZoneLayerButtonWidget';\nexport * from './DropZoneTransformWidget';\nexport * from './DropZoneAlignmentButtonWidget';\nexport * from './DropZoneLayer';\n"],"names":["root","factory","exports","module","define","amd","self","__webpack_require__","getter","__esModule","d","a","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","Symbol","toStringTag","value","require","DefaultDropZoneAlignmentTheme","thickness","thicknessIdle","lengthIdle","background","backgroundEntered","DropZoneAlignmentButtonWidget","props","entered","setEntered","useState","ref","useRef","theme","_","useMouseDragEvents","forwardRef","mouseEnter","mouseExit","useDroppableModel","engine","onDrop","handleDrop","vertical","alignment","Alignment","width","height","React","S","SplitContainer","hover","SplitContainerIcon","styled","p","DropZoneTransformWidget","model","zone","transform","zoneModel","Container","render","DefaultDropZoneLayerPanelTheme","border","blur","borderColor","borderColorEntered","borderRadius","DropZoneLayerPanelWidget","show","setShow","UseMouseDragEventsRootWidget","DimensionTracking","dimension","r_dimensions","Inside","Layer","visible","directive","splitZones","map","splitButtonTheme","Layer2","ButtonBar","transformZones","transformButtonTheme","debug","Debug","id","substring","DimensionTrackingWidget","DropZoneLayer","constructor","options2","super","mouseEvents","renderLayer","event","DropZoneLayerWidget","debugModels","this","draggingModel","modelID","getDropZoneForModel","draggingModelFlattened","_a","rootModel","flatten","find","m","filter","r_visible","child","DefaultDropZoneLayerButtonTheme","borderSize","icon","color","size","text","DropZoneLayerButtonWidget","Icon","Text","FontAwesomeIcon","library","faCopy","draggingItemBehavior","options","layer","registerListener","modelDragStart","draggingID","getTheme","layerManager","addLayer","modelDragEnd","remove","ReplaceZone","_ref","_ref2","parent","replaceModel","normalize","getDirectiveForWorkspaceNode","node","generateParentNode","WorkspaceCollectionModel","WorkspaceNodeModel","setVertical","setExpand","expandHorizontal","addModel"],"sourceRoot":""}
{
"name": "@projectstorm/react-workspaces-behavior-panel-dropzone",
"version": "2.3.0",
"version": "2.3.1",
"main": "./dist/index.umd.js",

@@ -11,13 +11,13 @@ "module": "./dist/index.jsx",

"dependencies": {
"@fortawesome/free-solid-svg-icons": "^6.2.1",
"@fortawesome/free-solid-svg-icons": "^6.4.0",
"@fortawesome/react-fontawesome": "^0.2.0",
"@fortawesome/fontawesome-svg-core": "^6.2.1",
"@fortawesome/fontawesome-svg-core": "^6.4.0",
"react": "^18.2.0",
"lodash": "^4.17.21",
"@emotion/styled": "^11.10.5",
"@projectstorm/react-workspaces-core": "2.5.1"
"@emotion/styled": "^11.11.0",
"@projectstorm/react-workspaces-core": "2.6.0"
},
"devDependencies": {
"@types/lodash": "^4.14.191",
"@types/react": "^18.0.27"
"@types/lodash": "^4.14.194",
"@types/react": "^18.2.6"
},

@@ -24,0 +24,0 @@ "scripts": {

Sorry, the diff of this file is not supported yet