@nice2dev/ui-graphics 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +84 -0
- package/LICENSE +21 -0
- package/README.md +339 -0
- package/dist/cjs/animation/AnimatedPerson.js +153 -0
- package/dist/cjs/animation/AnimatedPerson.js.map +1 -0
- package/dist/cjs/animation/AnimationEditor.js +106 -0
- package/dist/cjs/animation/AnimationEditor.js.map +1 -0
- package/dist/cjs/animation/Audience.js +59 -0
- package/dist/cjs/animation/Audience.js.map +1 -0
- package/dist/cjs/animation/BodyRenderer.js +33 -0
- package/dist/cjs/animation/BodyRenderer.js.map +1 -0
- package/dist/cjs/animation/animationHelper.js +272 -0
- package/dist/cjs/animation/animationHelper.js.map +1 -0
- package/dist/cjs/animation/characterTypes.js +75 -0
- package/dist/cjs/animation/characterTypes.js.map +1 -0
- package/dist/cjs/animation/choreoDSL.js +190 -0
- package/dist/cjs/animation/choreoDSL.js.map +1 -0
- package/dist/cjs/animation/choreography.js +41 -0
- package/dist/cjs/animation/choreography.js.map +1 -0
- package/dist/cjs/animation/karaokeIntegration.js +98 -0
- package/dist/cjs/animation/karaokeIntegration.js.map +1 -0
- package/dist/cjs/animation/lottieExport.js +128 -0
- package/dist/cjs/animation/lottieExport.js.map +1 -0
- package/dist/cjs/animation/motionPath.js +196 -0
- package/dist/cjs/animation/motionPath.js.map +1 -0
- package/dist/cjs/animation/physics.js +201 -0
- package/dist/cjs/animation/physics.js.map +1 -0
- package/dist/cjs/animation/rig/RigPlayer.js +63 -0
- package/dist/cjs/animation/rig/RigPlayer.js.map +1 -0
- package/dist/cjs/animation/rig/RiggedBody.js +30 -0
- package/dist/cjs/animation/rig/RiggedBody.js.map +1 -0
- package/dist/cjs/animation/rig/choreoRigBridge.js +63 -0
- package/dist/cjs/animation/rig/choreoRigBridge.js.map +1 -0
- package/dist/cjs/animation/rig/ik.js +22 -0
- package/dist/cjs/animation/rig/ik.js.map +1 -0
- package/dist/cjs/animation/rig/poseOps.js +49 -0
- package/dist/cjs/animation/rig/poseOps.js.map +1 -0
- package/dist/cjs/animation/rig/presets.js +60 -0
- package/dist/cjs/animation/rig/presets.js.map +1 -0
- package/dist/cjs/animation/rig/rigMath.js +41 -0
- package/dist/cjs/animation/rig/rigMath.js.map +1 -0
- package/dist/cjs/animation/rig/rigTypes.js +44 -0
- package/dist/cjs/animation/rig/rigTypes.js.map +1 -0
- package/dist/cjs/animation/shapes/arms.js +15 -0
- package/dist/cjs/animation/shapes/arms.js.map +1 -0
- package/dist/cjs/animation/shapes/eyes.js +52 -0
- package/dist/cjs/animation/shapes/eyes.js.map +1 -0
- package/dist/cjs/animation/shapes/hair.js +55 -0
- package/dist/cjs/animation/shapes/hair.js.map +1 -0
- package/dist/cjs/animation/shapes/heads.js +62 -0
- package/dist/cjs/animation/shapes/heads.js.map +1 -0
- package/dist/cjs/animation/shapes/headwear.js +44 -0
- package/dist/cjs/animation/shapes/headwear.js.map +1 -0
- package/dist/cjs/animation/shapes/legs.js +15 -0
- package/dist/cjs/animation/shapes/legs.js.map +1 -0
- package/dist/cjs/animation/shapes/mouths.js +53 -0
- package/dist/cjs/animation/shapes/mouths.js.map +1 -0
- package/dist/cjs/animation/shapes/noses.js +31 -0
- package/dist/cjs/animation/shapes/noses.js.map +1 -0
- package/dist/cjs/animation/shapes/outfits.js +43 -0
- package/dist/cjs/animation/shapes/outfits.js.map +1 -0
- package/dist/cjs/animation/shapes/torsos.js +13 -0
- package/dist/cjs/animation/shapes/torsos.js.map +1 -0
- package/dist/cjs/animation/spineExport.js +132 -0
- package/dist/cjs/animation/spineExport.js.map +1 -0
- package/dist/cjs/core/LocalUI.js +54 -0
- package/dist/cjs/core/LocalUI.js.map +1 -0
- package/dist/cjs/core/collaboration.js +259 -0
- package/dist/cjs/core/collaboration.js.map +1 -0
- package/dist/cjs/core/colorBlindness.js +97 -0
- package/dist/cjs/core/colorBlindness.js.map +1 -0
- package/dist/cjs/core/dragDrop.js +168 -0
- package/dist/cjs/core/dragDrop.js.map +1 -0
- package/dist/cjs/core/fixes.js +185 -0
- package/dist/cjs/core/fixes.js.map +1 -0
- package/dist/cjs/core/gridGuides.js +245 -0
- package/dist/cjs/core/gridGuides.js.map +1 -0
- package/dist/cjs/core/historyVisual.js +124 -0
- package/dist/cjs/core/historyVisual.js.map +1 -0
- package/dist/cjs/core/i18n.js +16 -0
- package/dist/cjs/core/i18n.js.map +1 -0
- package/dist/cjs/core/integrations.js +261 -0
- package/dist/cjs/core/integrations.js.map +1 -0
- package/dist/cjs/core/minimap.js +142 -0
- package/dist/cjs/core/minimap.js.map +1 -0
- package/dist/cjs/core/plugins.js +129 -0
- package/dist/cjs/core/plugins.js.map +1 -0
- package/dist/cjs/core/rtl.js +102 -0
- package/dist/cjs/core/rtl.js.map +1 -0
- package/dist/cjs/core/shortcuts.js +205 -0
- package/dist/cjs/core/shortcuts.js.map +1 -0
- package/dist/cjs/core/theme.js +171 -0
- package/dist/cjs/core/theme.js.map +1 -0
- package/dist/cjs/font/NiceFontEditor.js +193 -0
- package/dist/cjs/font/NiceFontEditor.js.map +1 -0
- package/dist/cjs/game/GameAsset2dEditor.js +371 -0
- package/dist/cjs/game/GameAsset2dEditor.js.map +1 -0
- package/dist/cjs/game/GameAsset2dEditor.module.css.js +6 -0
- package/dist/cjs/game/GameAsset2dEditor.module.css.js.map +1 -0
- package/dist/cjs/game/gameAssetTypes.js +20 -0
- package/dist/cjs/game/gameAssetTypes.js.map +1 -0
- package/dist/cjs/game/gameAssetUtils.js +475 -0
- package/dist/cjs/game/gameAssetUtils.js.map +1 -0
- package/dist/cjs/game/useGameAssetEditor.js +761 -0
- package/dist/cjs/game/useGameAssetEditor.js.map +1 -0
- package/dist/cjs/icon/NiceIconEditor.js +249 -0
- package/dist/cjs/icon/NiceIconEditor.js.map +1 -0
- package/dist/cjs/index.js +264 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/nice2dev-ui/dist/index.js +32070 -0
- package/dist/cjs/nice2dev-ui/dist/index.js.map +1 -0
- package/dist/cjs/nice2dev-ui-graphics.css +1 -0
- package/dist/cjs/photo/FilterThumb.js +29 -0
- package/dist/cjs/photo/FilterThumb.js.map +1 -0
- package/dist/cjs/photo/PhotoEditor.js +20 -0
- package/dist/cjs/photo/PhotoEditor.js.map +1 -0
- package/dist/cjs/photo/PhotoEditor.module.css.js +6 -0
- package/dist/cjs/photo/PhotoEditor.module.css.js.map +1 -0
- package/dist/cjs/photo/PhotoEditorCanvas.js +59 -0
- package/dist/cjs/photo/PhotoEditorCanvas.js.map +1 -0
- package/dist/cjs/photo/PhotoEditorLeftPanel.js +174 -0
- package/dist/cjs/photo/PhotoEditorLeftPanel.js.map +1 -0
- package/dist/cjs/photo/PhotoEditorToolbar.js +15 -0
- package/dist/cjs/photo/PhotoEditorToolbar.js.map +1 -0
- package/dist/cjs/photo/photoEditorActions.js +80 -0
- package/dist/cjs/photo/photoEditorActions.js.map +1 -0
- package/dist/cjs/photo/photoEditorTypes.js +40 -0
- package/dist/cjs/photo/photoEditorTypes.js.map +1 -0
- package/dist/cjs/photo/photoFilters.js +880 -0
- package/dist/cjs/photo/photoFilters.js.map +1 -0
- package/dist/cjs/photo/photoOverlays.js +651 -0
- package/dist/cjs/photo/photoOverlays.js.map +1 -0
- package/dist/cjs/photo/photoSelection.js +547 -0
- package/dist/cjs/photo/photoSelection.js.map +1 -0
- package/dist/cjs/photo/usePhotoEditor.js +640 -0
- package/dist/cjs/photo/usePhotoEditor.js.map +1 -0
- package/dist/cjs/pixel/HSVPicker.js +173 -0
- package/dist/cjs/pixel/HSVPicker.js.map +1 -0
- package/dist/cjs/pixel/PixelEditor.js +28 -0
- package/dist/cjs/pixel/PixelEditor.js.map +1 -0
- package/dist/cjs/pixel/PixelEditor.module.css.js +6 -0
- package/dist/cjs/pixel/PixelEditor.module.css.js.map +1 -0
- package/dist/cjs/pixel/PixelEditorCanvas.js +15 -0
- package/dist/cjs/pixel/PixelEditorCanvas.js.map +1 -0
- package/dist/cjs/pixel/PixelEditorMenuBar.js +11 -0
- package/dist/cjs/pixel/PixelEditorMenuBar.js.map +1 -0
- package/dist/cjs/pixel/PixelEditorRightPanel.js +15 -0
- package/dist/cjs/pixel/PixelEditorRightPanel.js.map +1 -0
- package/dist/cjs/pixel/PixelEditorStatusBar.js +15 -0
- package/dist/cjs/pixel/PixelEditorStatusBar.js.map +1 -0
- package/dist/cjs/pixel/PixelEditorTimeline.js +11 -0
- package/dist/cjs/pixel/PixelEditorTimeline.js.map +1 -0
- package/dist/cjs/pixel/PixelEditorToolbar.js +16 -0
- package/dist/cjs/pixel/PixelEditorToolbar.js.map +1 -0
- package/dist/cjs/pixel/asepriteFormat.js +512 -0
- package/dist/cjs/pixel/asepriteFormat.js.map +1 -0
- package/dist/cjs/pixel/pixelEditorExports.js +471 -0
- package/dist/cjs/pixel/pixelEditorExports.js.map +1 -0
- package/dist/cjs/pixel/pixelEditorTypes.js +102 -0
- package/dist/cjs/pixel/pixelEditorTypes.js.map +1 -0
- package/dist/cjs/pixel/pixelEditorUtils.js +664 -0
- package/dist/cjs/pixel/pixelEditorUtils.js.map +1 -0
- package/dist/cjs/pixel/usePixelEditor.js +1112 -0
- package/dist/cjs/pixel/usePixelEditor.js.map +1 -0
- package/dist/cjs/texture/Nice3DTexturePainter.js +236 -0
- package/dist/cjs/texture/Nice3DTexturePainter.js.map +1 -0
- package/dist/cjs/ui/NiceUIDesigner.js +191 -0
- package/dist/cjs/ui/NiceUIDesigner.js.map +1 -0
- package/dist/cjs/vector/VectorEditor.js +31 -0
- package/dist/cjs/vector/VectorEditor.js.map +1 -0
- package/dist/cjs/vector/VectorEditor.module.css.js +6 -0
- package/dist/cjs/vector/VectorEditor.module.css.js.map +1 -0
- package/dist/cjs/vector/VectorEditorMenuBar.js +16 -0
- package/dist/cjs/vector/VectorEditorMenuBar.js.map +1 -0
- package/dist/cjs/vector/VectorEditorRightPanel.js +126 -0
- package/dist/cjs/vector/VectorEditorRightPanel.js.map +1 -0
- package/dist/cjs/vector/VectorEditorShapeRenderer.js +55 -0
- package/dist/cjs/vector/VectorEditorShapeRenderer.js.map +1 -0
- package/dist/cjs/vector/VectorEditorStatusBar.js +14 -0
- package/dist/cjs/vector/VectorEditorStatusBar.js.map +1 -0
- package/dist/cjs/vector/useVectorEditor.js +613 -0
- package/dist/cjs/vector/useVectorEditor.js.map +1 -0
- package/dist/cjs/vector/vectorBooleanOps.js +511 -0
- package/dist/cjs/vector/vectorBooleanOps.js.map +1 -0
- package/dist/cjs/vector/vectorEditorExport.js +159 -0
- package/dist/cjs/vector/vectorEditorExport.js.map +1 -0
- package/dist/cjs/vector/vectorEditorImport.js +150 -0
- package/dist/cjs/vector/vectorEditorImport.js.map +1 -0
- package/dist/cjs/vector/vectorEditorTypes.js +72 -0
- package/dist/cjs/vector/vectorEditorTypes.js.map +1 -0
- package/dist/cjs/vector/vectorGradients.js +201 -0
- package/dist/cjs/vector/vectorGradients.js.map +1 -0
- package/dist/esm/animation/AnimatedPerson.js +151 -0
- package/dist/esm/animation/AnimatedPerson.js.map +1 -0
- package/dist/esm/animation/AnimationEditor.js +104 -0
- package/dist/esm/animation/AnimationEditor.js.map +1 -0
- package/dist/esm/animation/Audience.js +57 -0
- package/dist/esm/animation/Audience.js.map +1 -0
- package/dist/esm/animation/BodyRenderer.js +28 -0
- package/dist/esm/animation/BodyRenderer.js.map +1 -0
- package/dist/esm/animation/animationHelper.js +268 -0
- package/dist/esm/animation/animationHelper.js.map +1 -0
- package/dist/esm/animation/characterTypes.js +70 -0
- package/dist/esm/animation/characterTypes.js.map +1 -0
- package/dist/esm/animation/choreoDSL.js +182 -0
- package/dist/esm/animation/choreoDSL.js.map +1 -0
- package/dist/esm/animation/choreography.js +36 -0
- package/dist/esm/animation/choreography.js.map +1 -0
- package/dist/esm/animation/karaokeIntegration.js +91 -0
- package/dist/esm/animation/karaokeIntegration.js.map +1 -0
- package/dist/esm/animation/lottieExport.js +123 -0
- package/dist/esm/animation/lottieExport.js.map +1 -0
- package/dist/esm/animation/motionPath.js +185 -0
- package/dist/esm/animation/motionPath.js.map +1 -0
- package/dist/esm/animation/physics.js +192 -0
- package/dist/esm/animation/physics.js.map +1 -0
- package/dist/esm/animation/rig/RigPlayer.js +61 -0
- package/dist/esm/animation/rig/RigPlayer.js.map +1 -0
- package/dist/esm/animation/rig/RiggedBody.js +28 -0
- package/dist/esm/animation/rig/RiggedBody.js.map +1 -0
- package/dist/esm/animation/rig/choreoRigBridge.js +60 -0
- package/dist/esm/animation/rig/choreoRigBridge.js.map +1 -0
- package/dist/esm/animation/rig/ik.js +20 -0
- package/dist/esm/animation/rig/ik.js.map +1 -0
- package/dist/esm/animation/rig/poseOps.js +45 -0
- package/dist/esm/animation/rig/poseOps.js.map +1 -0
- package/dist/esm/animation/rig/presets.js +53 -0
- package/dist/esm/animation/rig/presets.js.map +1 -0
- package/dist/esm/animation/rig/rigMath.js +37 -0
- package/dist/esm/animation/rig/rigMath.js.map +1 -0
- package/dist/esm/animation/rig/rigTypes.js +40 -0
- package/dist/esm/animation/rig/rigTypes.js.map +1 -0
- package/dist/esm/animation/shapes/arms.js +13 -0
- package/dist/esm/animation/shapes/arms.js.map +1 -0
- package/dist/esm/animation/shapes/eyes.js +45 -0
- package/dist/esm/animation/shapes/eyes.js.map +1 -0
- package/dist/esm/animation/shapes/hair.js +46 -0
- package/dist/esm/animation/shapes/hair.js.map +1 -0
- package/dist/esm/animation/shapes/heads.js +52 -0
- package/dist/esm/animation/shapes/heads.js.map +1 -0
- package/dist/esm/animation/shapes/headwear.js +36 -0
- package/dist/esm/animation/shapes/headwear.js.map +1 -0
- package/dist/esm/animation/shapes/legs.js +13 -0
- package/dist/esm/animation/shapes/legs.js.map +1 -0
- package/dist/esm/animation/shapes/mouths.js +45 -0
- package/dist/esm/animation/shapes/mouths.js.map +1 -0
- package/dist/esm/animation/shapes/noses.js +23 -0
- package/dist/esm/animation/shapes/noses.js.map +1 -0
- package/dist/esm/animation/shapes/outfits.js +37 -0
- package/dist/esm/animation/shapes/outfits.js.map +1 -0
- package/dist/esm/animation/shapes/torsos.js +11 -0
- package/dist/esm/animation/shapes/torsos.js.map +1 -0
- package/dist/esm/animation/spineExport.js +128 -0
- package/dist/esm/animation/spineExport.js.map +1 -0
- package/dist/esm/core/LocalUI.js +50 -0
- package/dist/esm/core/LocalUI.js.map +1 -0
- package/dist/esm/core/collaboration.js +252 -0
- package/dist/esm/core/collaboration.js.map +1 -0
- package/dist/esm/core/colorBlindness.js +90 -0
- package/dist/esm/core/colorBlindness.js.map +1 -0
- package/dist/esm/core/dragDrop.js +165 -0
- package/dist/esm/core/dragDrop.js.map +1 -0
- package/dist/esm/core/fixes.js +179 -0
- package/dist/esm/core/fixes.js.map +1 -0
- package/dist/esm/core/gridGuides.js +232 -0
- package/dist/esm/core/gridGuides.js.map +1 -0
- package/dist/esm/core/historyVisual.js +121 -0
- package/dist/esm/core/historyVisual.js.map +1 -0
- package/dist/esm/core/i18n.js +13 -0
- package/dist/esm/core/i18n.js.map +1 -0
- package/dist/esm/core/integrations.js +254 -0
- package/dist/esm/core/integrations.js.map +1 -0
- package/dist/esm/core/minimap.js +139 -0
- package/dist/esm/core/minimap.js.map +1 -0
- package/dist/esm/core/plugins.js +124 -0
- package/dist/esm/core/plugins.js.map +1 -0
- package/dist/esm/core/rtl.js +95 -0
- package/dist/esm/core/rtl.js.map +1 -0
- package/dist/esm/core/shortcuts.js +200 -0
- package/dist/esm/core/shortcuts.js.map +1 -0
- package/dist/esm/core/theme.js +162 -0
- package/dist/esm/core/theme.js.map +1 -0
- package/dist/esm/font/NiceFontEditor.js +189 -0
- package/dist/esm/font/NiceFontEditor.js.map +1 -0
- package/dist/esm/game/GameAsset2dEditor.js +369 -0
- package/dist/esm/game/GameAsset2dEditor.js.map +1 -0
- package/dist/esm/game/GameAsset2dEditor.module.css.js +4 -0
- package/dist/esm/game/GameAsset2dEditor.module.css.js.map +1 -0
- package/dist/esm/game/gameAssetTypes.js +18 -0
- package/dist/esm/game/gameAssetTypes.js.map +1 -0
- package/dist/esm/game/gameAssetUtils.js +456 -0
- package/dist/esm/game/gameAssetUtils.js.map +1 -0
- package/dist/esm/game/useGameAssetEditor.js +759 -0
- package/dist/esm/game/useGameAssetEditor.js.map +1 -0
- package/dist/esm/icon/NiceIconEditor.js +246 -0
- package/dist/esm/icon/NiceIconEditor.js.map +1 -0
- package/dist/esm/index.js +59 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/nice2dev-ui/dist/index.js +31720 -0
- package/dist/esm/nice2dev-ui/dist/index.js.map +1 -0
- package/dist/esm/nice2dev-ui-graphics.css +1 -0
- package/dist/esm/photo/FilterThumb.js +27 -0
- package/dist/esm/photo/FilterThumb.js.map +1 -0
- package/dist/esm/photo/PhotoEditor.js +18 -0
- package/dist/esm/photo/PhotoEditor.js.map +1 -0
- package/dist/esm/photo/PhotoEditor.module.css.js +4 -0
- package/dist/esm/photo/PhotoEditor.module.css.js.map +1 -0
- package/dist/esm/photo/PhotoEditorCanvas.js +57 -0
- package/dist/esm/photo/PhotoEditorCanvas.js.map +1 -0
- package/dist/esm/photo/PhotoEditorLeftPanel.js +172 -0
- package/dist/esm/photo/PhotoEditorLeftPanel.js.map +1 -0
- package/dist/esm/photo/PhotoEditorToolbar.js +13 -0
- package/dist/esm/photo/PhotoEditorToolbar.js.map +1 -0
- package/dist/esm/photo/photoEditorActions.js +75 -0
- package/dist/esm/photo/photoEditorActions.js.map +1 -0
- package/dist/esm/photo/photoEditorTypes.js +36 -0
- package/dist/esm/photo/photoEditorTypes.js.map +1 -0
- package/dist/esm/photo/photoFilters.js +871 -0
- package/dist/esm/photo/photoFilters.js.map +1 -0
- package/dist/esm/photo/photoOverlays.js +636 -0
- package/dist/esm/photo/photoOverlays.js.map +1 -0
- package/dist/esm/photo/photoSelection.js +535 -0
- package/dist/esm/photo/photoSelection.js.map +1 -0
- package/dist/esm/photo/usePhotoEditor.js +638 -0
- package/dist/esm/photo/usePhotoEditor.js.map +1 -0
- package/dist/esm/pixel/HSVPicker.js +171 -0
- package/dist/esm/pixel/HSVPicker.js.map +1 -0
- package/dist/esm/pixel/PixelEditor.js +26 -0
- package/dist/esm/pixel/PixelEditor.js.map +1 -0
- package/dist/esm/pixel/PixelEditor.module.css.js +4 -0
- package/dist/esm/pixel/PixelEditor.module.css.js.map +1 -0
- package/dist/esm/pixel/PixelEditorCanvas.js +13 -0
- package/dist/esm/pixel/PixelEditorCanvas.js.map +1 -0
- package/dist/esm/pixel/PixelEditorMenuBar.js +9 -0
- package/dist/esm/pixel/PixelEditorMenuBar.js.map +1 -0
- package/dist/esm/pixel/PixelEditorRightPanel.js +13 -0
- package/dist/esm/pixel/PixelEditorRightPanel.js.map +1 -0
- package/dist/esm/pixel/PixelEditorStatusBar.js +13 -0
- package/dist/esm/pixel/PixelEditorStatusBar.js.map +1 -0
- package/dist/esm/pixel/PixelEditorTimeline.js +9 -0
- package/dist/esm/pixel/PixelEditorTimeline.js.map +1 -0
- package/dist/esm/pixel/PixelEditorToolbar.js +14 -0
- package/dist/esm/pixel/PixelEditorToolbar.js.map +1 -0
- package/dist/esm/pixel/asepriteFormat.js +505 -0
- package/dist/esm/pixel/asepriteFormat.js.map +1 -0
- package/dist/esm/pixel/pixelEditorExports.js +461 -0
- package/dist/esm/pixel/pixelEditorExports.js.map +1 -0
- package/dist/esm/pixel/pixelEditorTypes.js +90 -0
- package/dist/esm/pixel/pixelEditorTypes.js.map +1 -0
- package/dist/esm/pixel/pixelEditorUtils.js +631 -0
- package/dist/esm/pixel/pixelEditorUtils.js.map +1 -0
- package/dist/esm/pixel/usePixelEditor.js +1110 -0
- package/dist/esm/pixel/usePixelEditor.js.map +1 -0
- package/dist/esm/texture/Nice3DTexturePainter.js +233 -0
- package/dist/esm/texture/Nice3DTexturePainter.js.map +1 -0
- package/dist/esm/ui/NiceUIDesigner.js +187 -0
- package/dist/esm/ui/NiceUIDesigner.js.map +1 -0
- package/dist/esm/vector/VectorEditor.js +29 -0
- package/dist/esm/vector/VectorEditor.js.map +1 -0
- package/dist/esm/vector/VectorEditor.module.css.js +4 -0
- package/dist/esm/vector/VectorEditor.module.css.js.map +1 -0
- package/dist/esm/vector/VectorEditorMenuBar.js +14 -0
- package/dist/esm/vector/VectorEditorMenuBar.js.map +1 -0
- package/dist/esm/vector/VectorEditorRightPanel.js +124 -0
- package/dist/esm/vector/VectorEditorRightPanel.js.map +1 -0
- package/dist/esm/vector/VectorEditorShapeRenderer.js +53 -0
- package/dist/esm/vector/VectorEditorShapeRenderer.js.map +1 -0
- package/dist/esm/vector/VectorEditorStatusBar.js +12 -0
- package/dist/esm/vector/VectorEditorStatusBar.js.map +1 -0
- package/dist/esm/vector/useVectorEditor.js +611 -0
- package/dist/esm/vector/useVectorEditor.js.map +1 -0
- package/dist/esm/vector/vectorBooleanOps.js +507 -0
- package/dist/esm/vector/vectorBooleanOps.js.map +1 -0
- package/dist/esm/vector/vectorEditorExport.js +152 -0
- package/dist/esm/vector/vectorEditorExport.js.map +1 -0
- package/dist/esm/vector/vectorEditorImport.js +148 -0
- package/dist/esm/vector/vectorEditorImport.js.map +1 -0
- package/dist/esm/vector/vectorEditorTypes.js +63 -0
- package/dist/esm/vector/vectorEditorTypes.js.map +1 -0
- package/dist/esm/vector/vectorGradients.js +193 -0
- package/dist/esm/vector/vectorGradients.js.map +1 -0
- package/dist/types/__benchmarks__/bench.d.ts +13 -0
- package/dist/types/__tests__/setup.d.ts +4 -0
- package/dist/types/animation/AnimatedPerson.d.ts +14 -0
- package/dist/types/animation/AnimationEditor.d.ts +20 -0
- package/dist/types/animation/Audience.d.ts +11 -0
- package/dist/types/animation/BodyRenderer.d.ts +12 -0
- package/dist/types/animation/animationHelper.d.ts +28 -0
- package/dist/types/animation/characterTypes.d.ts +37 -0
- package/dist/types/animation/choreoDSL.d.ts +88 -0
- package/dist/types/animation/choreography.d.ts +8 -0
- package/dist/types/animation/karaokeIntegration.d.ts +31 -0
- package/dist/types/animation/lottieExport.d.ts +77 -0
- package/dist/types/animation/motionPath.d.ts +60 -0
- package/dist/types/animation/physics.d.ts +73 -0
- package/dist/types/animation/rig/RigPlayer.d.ts +32 -0
- package/dist/types/animation/rig/RiggedBody.d.ts +19 -0
- package/dist/types/animation/rig/choreoRigBridge.d.ts +9 -0
- package/dist/types/animation/rig/ik.d.ts +8 -0
- package/dist/types/animation/rig/poseOps.d.ts +14 -0
- package/dist/types/animation/rig/presets.d.ts +13 -0
- package/dist/types/animation/rig/rigMath.d.ts +7 -0
- package/dist/types/animation/rig/rigTypes.d.ts +38 -0
- package/dist/types/animation/shapes/arms.d.ts +10 -0
- package/dist/types/animation/shapes/eyes.d.ts +17 -0
- package/dist/types/animation/shapes/hair.d.ts +17 -0
- package/dist/types/animation/shapes/heads.d.ts +18 -0
- package/dist/types/animation/shapes/headwear.d.ts +16 -0
- package/dist/types/animation/shapes/legs.d.ts +10 -0
- package/dist/types/animation/shapes/mouths.d.ts +17 -0
- package/dist/types/animation/shapes/noses.d.ts +17 -0
- package/dist/types/animation/shapes/outfits.d.ts +14 -0
- package/dist/types/animation/shapes/torsos.d.ts +9 -0
- package/dist/types/animation/spineExport.d.ts +66 -0
- package/dist/types/core/LocalUI.d.ts +21 -0
- package/dist/types/core/collaboration.d.ts +164 -0
- package/dist/types/core/colorBlindness.d.ts +24 -0
- package/dist/types/core/dragDrop.d.ts +46 -0
- package/dist/types/core/fixes.d.ts +80 -0
- package/dist/types/core/gridGuides.d.ts +70 -0
- package/dist/types/core/historyVisual.d.ts +915 -0
- package/dist/types/core/i18n.d.ts +27 -0
- package/dist/types/core/integrations.d.ts +103 -0
- package/dist/types/core/minimap.d.ts +49 -0
- package/dist/types/core/plugins.d.ts +111 -0
- package/dist/types/core/rtl.d.ts +32 -0
- package/dist/types/core/shortcuts.d.ts +150 -0
- package/dist/types/core/theme.d.ts +78 -0
- package/dist/types/core/useGamepad.d.ts +64 -0
- package/dist/types/core/usePointerPressure.d.ts +88 -0
- package/dist/types/font/NiceFontEditor.d.ts +62 -0
- package/dist/types/game/AnimationPreviewPlayer.d.ts +29 -0
- package/dist/types/game/CollisionEditor.d.ts +101 -0
- package/dist/types/game/GameAsset2dEditor.d.ts +17 -0
- package/dist/types/game/GameAssetExportPanel.d.ts +20 -0
- package/dist/types/game/IsometricEditor.d.ts +22 -0
- package/dist/types/game/IsometricTilePanel.d.ts +18 -0
- package/dist/types/game/gameAssetExport.d.ts +160 -0
- package/dist/types/game/gameAssetTypes.d.ts +238 -0
- package/dist/types/game/gameAssetUtils.d.ts +23 -0
- package/dist/types/game/index.d.ts +8 -0
- package/dist/types/game/isometricTiles.d.ts +250 -0
- package/dist/types/game/useAnimationPreview.d.ts +63 -0
- package/dist/types/game/useCollisionEditor.d.ts +96 -0
- package/dist/types/game/useGameAssetEditor.d.ts +79 -0
- package/dist/types/game/useGameAssetExport.d.ts +82 -0
- package/dist/types/icon/NiceIconEditor.d.ts +79 -0
- package/dist/types/index.d.ts +85 -0
- package/dist/types/photo/BatchProcessingPanel.d.ts +13 -0
- package/dist/types/photo/FaceDetectionPanel.d.ts +18 -0
- package/dist/types/photo/FilterThumb.d.ts +14 -0
- package/dist/types/photo/PerspectiveCorrectionPanel.d.ts +17 -0
- package/dist/types/photo/PhotoEditor.d.ts +2 -0
- package/dist/types/photo/PhotoEditorCanvas.d.ts +14 -0
- package/dist/types/photo/PhotoEditorLeftPanel.d.ts +13 -0
- package/dist/types/photo/PhotoEditorToolbar.d.ts +13 -0
- package/dist/types/photo/RawFilePanel.d.ts +14 -0
- package/dist/types/photo/StyleTransferPanel.d.ts +15 -0
- package/dist/types/photo/aiStyleTransfer.d.ts +58 -0
- package/dist/types/photo/batchProcessing.d.ts +95 -0
- package/dist/types/photo/faceDetection.d.ts +103 -0
- package/dist/types/photo/index.d.ts +17 -0
- package/dist/types/photo/perspectiveCorrection.d.ts +134 -0
- package/dist/types/photo/photoEditorActions.d.ts +40 -0
- package/dist/types/photo/photoEditorTypes.d.ts +34 -0
- package/dist/types/photo/photoFilters.d.ts +55 -0
- package/dist/types/photo/photoOverlays.d.ts +126 -0
- package/dist/types/photo/photoSelection.d.ts +56 -0
- package/dist/types/photo/rawFileSupport.d.ts +124 -0
- package/dist/types/photo/usePhotoEditor.d.ts +123 -0
- package/dist/types/pixel/HSVPicker.d.ts +11 -0
- package/dist/types/pixel/PaletteExtractorPanel.d.ts +16 -0
- package/dist/types/pixel/PixelEditor.d.ts +17 -0
- package/dist/types/pixel/PixelEditorCanvas.d.ts +10 -0
- package/dist/types/pixel/PixelEditorMenuBar.d.ts +11 -0
- package/dist/types/pixel/PixelEditorRightPanel.d.ts +11 -0
- package/dist/types/pixel/PixelEditorStatusBar.d.ts +11 -0
- package/dist/types/pixel/PixelEditorTimeline.d.ts +11 -0
- package/dist/types/pixel/PixelEditorToolbar.d.ts +11 -0
- package/dist/types/pixel/TileMapPanel.d.ts +14 -0
- package/dist/types/pixel/asepriteFormat.d.ts +62 -0
- package/dist/types/pixel/paletteExtractor.d.ts +73 -0
- package/dist/types/pixel/pixelEditorExports.d.ts +31 -0
- package/dist/types/pixel/pixelEditorTypes.d.ts +51 -0
- package/dist/types/pixel/pixelEditorUtils.d.ts +136 -0
- package/dist/types/pixel/tileMapMode.d.ts +122 -0
- package/dist/types/pixel/usePixelEditor.d.ts +114 -0
- package/dist/types/texture/Nice3DTexturePainter.d.ts +55 -0
- package/dist/types/ui/NiceUIDesigner.d.ts +43 -0
- package/dist/types/vector/PathSimplificationPanel.d.ts +15 -0
- package/dist/types/vector/PdfExportPanel.d.ts +20 -0
- package/dist/types/vector/TextOnPathPanel.d.ts +26 -0
- package/dist/types/vector/VectorEditor.d.ts +32 -0
- package/dist/types/vector/VectorEditorMenuBar.d.ts +8 -0
- package/dist/types/vector/VectorEditorRightPanel.d.ts +7 -0
- package/dist/types/vector/VectorEditorShapeRenderer.d.ts +9 -0
- package/dist/types/vector/VectorEditorStatusBar.d.ts +9 -0
- package/dist/types/vector/VectorFilterPanel.d.ts +19 -0
- package/dist/types/vector/VectorPatternPanel.d.ts +21 -0
- package/dist/types/vector/pathSimplification.d.ts +135 -0
- package/dist/types/vector/pdfExport.d.ts +65 -0
- package/dist/types/vector/textOnPath.d.ts +145 -0
- package/dist/types/vector/useVectorEditor.d.ts +90 -0
- package/dist/types/vector/vectorBooleanOps.d.ts +22 -0
- package/dist/types/vector/vectorEditorExport.d.ts +8 -0
- package/dist/types/vector/vectorEditorImport.d.ts +7 -0
- package/dist/types/vector/vectorEditorTypes.d.ts +47 -0
- package/dist/types/vector/vectorGradients.d.ts +64 -0
- package/dist/types/vector/vectorPatternFills.d.ts +101 -0
- package/dist/types/vector/vectorSvgFilters.d.ts +134 -0
- package/package.json +93 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.PixelEditor-module_root__3gidG{background:var(--editor-bg-deep);color:var(--gray-200);display:flex;flex-direction:column;font-family:Segoe UI,Consolas,monospace;font-size:12px;height:100%;overflow:hidden;user-select:none}.PixelEditor-module_menuBar__8JFld{align-items:center;background:var(--editor-bg-deeper);border-bottom:1px solid var(--editor-bg-dark);display:flex;flex-shrink:0;gap:0;height:28px;padding:0 4px}.PixelEditor-module_menuBtn__w-GQC{background:none;border:none;border-radius:3px;color:var(--editor-text-light);cursor:pointer;font-size:11px;padding:4px 10px}.PixelEditor-module_menuBtn__w-GQC:hover{background:var(--editor-bg-dark);color:var(--color-white)}.PixelEditor-module_menuSep__pNZsR{background:var(--gray-850);height:16px;margin:0 4px;width:1px}.PixelEditor-module_toolbar__paCGq{background:var(--editor-panel);border-right:1px solid var(--editor-bg-dark);display:flex;flex-direction:column;flex-shrink:0;gap:2px;overflow-y:auto;padding:4px 2px;width:38px}.PixelEditor-module_toolBtn__wD1Kj{align-items:center;background:none;border:1px solid transparent;border-radius:4px;color:var(--editor-text-muted);cursor:pointer;display:flex;font-size:16px;height:32px;justify-content:center;transition:all .1s;width:32px}.PixelEditor-module_toolBtn__wD1Kj:hover{background:var(--editor-bg-dark);color:var(--gray-300)}.PixelEditor-module_toolBtnActive__R51U0{background:var(--editor-bg-mid)!important;border-color:var(--editor-accent)!important;color:var(--color-white)!important}.PixelEditor-module_mainArea__Z0x6l{display:flex;flex:1;min-height:0}.PixelEditor-module_canvasContainer__8z2AY{background:var(--editor-bg-deepest);cursor:crosshair;flex:1;overflow:hidden;position:relative}.PixelEditor-module_canvasContainer__8z2AY canvas{image-rendering:pixelated;position:absolute}.PixelEditor-module_rightPanel__ZjrCh{background:var(--editor-bg-deep);border-left:1px solid var(--editor-bg-dark);display:flex;flex-direction:column;flex-shrink:0;overflow-y:auto;width:220px}.PixelEditor-module_panelSection__3l225{border-bottom:1px solid var(--editor-bg-dark);padding:6px 8px}.PixelEditor-module_panelTitle__vYyeO{align-items:center;color:var(--editor-text-secondary);display:flex;font-size:10px;justify-content:space-between;letter-spacing:.5px;margin-bottom:4px;text-transform:uppercase}.PixelEditor-module_panelTitle__vYyeO button{background:none;border:none;color:var(--editor-text-secondary);cursor:pointer;font-size:14px;line-height:1;padding:0 2px}.PixelEditor-module_panelTitle__vYyeO button:hover{color:var(--gray-500)}.PixelEditor-module_layerItem__J-gtn{align-items:center;border-radius:3px;cursor:pointer;display:flex;font-size:11px;gap:4px;padding:3px 4px}.PixelEditor-module_layerItem__J-gtn:hover{background:hsla(0,0%,100%,.04)}.PixelEditor-module_layerItemActive__yPt29{background:var(--editor-surface)!important;border:1px solid var(--accent-blue-dark)}.PixelEditor-module_layerVis__Uj7n2{align-items:center;cursor:pointer;display:flex;flex-shrink:0;font-size:10px;height:16px;justify-content:center;opacity:.6;width:16px}.PixelEditor-module_layerVis__Uj7n2:hover{opacity:1}.PixelEditor-module_layerName__HovwJ{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.PixelEditor-module_layerOpacity__qmWvu{color:var(--gray-600);font-size:10px;text-align:right;width:36px}.PixelEditor-module_paletteGrid__knY-n{display:grid;gap:2px;grid-template-columns:repeat(8,1fr)}.PixelEditor-module_paletteSwatch__MUbha{aspect-ratio:1;border:1px solid hsla(0,0%,100%,.08);border-radius:2px;cursor:pointer;transition:transform .1s}.PixelEditor-module_paletteSwatch__MUbha:hover{transform:scale(1.15);z-index:1}.PixelEditor-module_paletteSwatchActive__wDR4T{border-color:var(--color-white)!important;box-shadow:0 0 0 1px var(--editor-accent)}.PixelEditor-module_colorPickers__sQlBN{align-items:center;display:flex;gap:6px;margin-top:6px}.PixelEditor-module_colorSample__GN7Rd{border:2px solid hsla(0,0%,100%,.2);border-radius:4px;height:28px;width:28px}.PixelEditor-module_bottomPanel__rviLF{background:var(--editor-bg-deeper);border-top:1px solid var(--editor-bg-dark);display:flex;flex-direction:column;flex-shrink:0;height:80px}.PixelEditor-module_timelineControls__Laroq{align-items:center;border-bottom:1px solid #224;display:flex;font-size:11px;gap:6px;padding:2px 8px}.PixelEditor-module_timelineControls__Laroq button{background:var(--editor-bg-dark);border:none;border-radius:3px;color:var(--gray-500);cursor:pointer;font-size:11px;padding:2px 8px}.PixelEditor-module_timelineControls__Laroq button:hover{background:var(--editor-bg-mid);color:var(--color-white)}.PixelEditor-module_timelineControls__Laroq label{color:var(--gray-700)}.PixelEditor-module_timelineControls__Laroq input[type=number]{background:var(--gray-950);border:1px solid var(--gray-850);border-radius:3px;color:var(--gray-200);font-size:11px;padding:1px 4px;text-align:center;width:40px}.PixelEditor-module_timelineControls__Laroq input[type=checkbox]{accent-color:var(--editor-accent)}.PixelEditor-module_timelineFrames__dw06F{align-items:stretch;display:flex;flex:1;gap:2px;overflow-x:auto;padding:4px 8px}.PixelEditor-module_frameThumb__2E9mG{align-items:center;background:var(--gray-900);border:2px solid transparent;border-radius:4px;cursor:pointer;display:flex;flex-direction:column;justify-content:center;min-width:44px;overflow:hidden;position:relative;width:44px}.PixelEditor-module_frameThumb__2E9mG canvas{height:36px;image-rendering:pixelated;object-fit:contain;width:36px}.PixelEditor-module_frameThumb__2E9mG:hover{border-color:var(--gray-800)}.PixelEditor-module_frameThumbActive__Z0eK4{background:var(--editor-surface);border-color:var(--editor-accent)!important}.PixelEditor-module_frameNum__PoGQC{bottom:1px;color:var(--gray-700);font-size:8px;position:absolute;right:3px}.PixelEditor-module_statusBar__QnphD{align-items:center;background:var(--gray-950);border-top:1px solid var(--gray-900);color:var(--gray-700);display:flex;flex-shrink:0;font-size:10px;gap:12px;height:20px;padding:2px 8px}.PixelEditor-module_dialogOverlay__IgyFy{align-items:center;background:rgba(0,0,0,.6);display:flex;inset:0;justify-content:center;position:absolute;z-index:100}.PixelEditor-module_dialog__OnkAG{background:var(--editor-panel);border:1px solid var(--editor-bg-mid);border-radius:8px;box-shadow:0 8px 32px rgba(0,0,0,.5);min-width:300px;padding:20px}.PixelEditor-module_dialog__OnkAG h3{color:var(--gray-300);font-size:14px;margin:0 0 12px}.PixelEditor-module_dialog__OnkAG label{color:var(--gray-600);display:block;font-size:11px;margin:8px 0 2px}.PixelEditor-module_dialog__OnkAG input,.PixelEditor-module_dialog__OnkAG select{background:var(--gray-950);border:1px solid var(--gray-850);border-radius:4px;color:var(--gray-200);font-size:12px;padding:4px 8px;width:100%}.PixelEditor-module_dialogActions__fOa7a{display:flex;gap:8px;justify-content:flex-end;margin-top:16px}.PixelEditor-module_dialogActions__fOa7a button{border:none;border-radius:4px;cursor:pointer;font-size:12px;padding:4px 16px}.PixelEditor-module_btnPrimary__FYlTy{background:var(--editor-accent);color:var(--color-white)}.PixelEditor-module_btnPrimary__FYlTy:hover{background:#67d}.PixelEditor-module_btnSecondary__qLfyJ{background:var(--gray-850);color:var(--gray-500)}.PixelEditor-module_btnSecondary__qLfyJ:hover{background:var(--gray-800);color:var(--gray-200)}.PixelEditor-module_brushSlider__UxQ38{align-items:center;border-bottom:1px solid var(--editor-bg-dark);display:flex;gap:4px;padding:4px 8px}.PixelEditor-module_brushSlider__UxQ38 label{color:var(--gray-700);font-size:10px}.PixelEditor-module_brushSlider__UxQ38 input[type=range]{accent-color:var(--editor-accent);flex:1;height:4px}.PixelEditor-module_brushSlider__UxQ38 span{color:var(--gray-500);font-size:10px;min-width:16px;text-align:center}.PixelEditor-module_toolSep__YIu-E{background:var(--gray-850);height:1px;margin:4px 2px;width:28px}.PixelEditor-module_toolGroup__xA2lN{display:flex;flex-direction:column;gap:1px;padding:2px 0}.PixelEditor-module_miniBtn__tg5N0{align-items:center;background:hsla(0,0%,100%,.04);border:1px solid transparent;border-radius:3px;color:var(--editor-text-muted);cursor:pointer;display:flex;font-size:10px;height:20px;justify-content:center;transition:all .1s;width:32px}.PixelEditor-module_miniBtn__tg5N0:hover{background:var(--editor-bg-dark);color:var(--gray-300)}.PixelEditor-module_miniBtnActive__gpveu{background:var(--editor-bg-mid)!important;border-color:var(--editor-accent)!important;color:var(--color-white)!important}.PixelEditor-module_colorSwatches__jFuRX{align-items:center;border-top:1px solid var(--gray-850);display:flex;flex-direction:column;gap:4px;margin-top:4px;padding:6px 0}.PixelEditor-module_brushShapes__2bBfl{display:flex;flex-wrap:wrap;gap:2px;padding:2px 0}.PixelEditor-module_pressureToggles__AITuh{display:flex;flex-direction:column;gap:2px;padding:4px 0}.PixelEditor-module_checkLabel__-d-TA{align-items:center;color:var(--gray-550);cursor:pointer;display:flex;font-size:10px;gap:4px}.PixelEditor-module_checkLabel__-d-TA input[type=checkbox]{accent-color:var(--editor-accent);height:12px;width:12px}.PixelEditor-module_hsvPicker__0ERIh{display:flex;flex-direction:column;gap:4px;padding:4px 0}.PixelEditor-module_hsvRow__M3fhN{align-items:center;display:flex;gap:4px}.PixelEditor-module_hsvLabel__O2MkX{color:var(--gray-700);font-size:9px;min-width:16px;text-align:right}.PixelEditor-module_hsvSlider__KKMMJ{accent-color:var(--editor-accent);cursor:pointer;flex:1;height:6px;min-width:0}.PixelEditor-module_hsvVal__MgQ8W{color:var(--gray-500);font-size:9px;min-width:28px;text-align:right}.PixelEditor-module_hsvNumInput__Wn4kG{text-align:center;width:36px}.PixelEditor-module_hsvHexInput__MU5Ms,.PixelEditor-module_hsvNumInput__Wn4kG{background:var(--gray-950);border:1px solid var(--gray-850);border-radius:3px;color:var(--gray-200);font-size:10px;padding:1px 4px}.PixelEditor-module_hsvHexInput__MU5Ms{flex:1}.PixelEditor-module_layerLock__xeWnc{align-items:center;cursor:pointer;display:flex;flex-shrink:0;font-size:10px;height:16px;justify-content:center;opacity:.6;width:16px}.PixelEditor-module_layerLock__xeWnc:hover{opacity:1}.PixelEditor-module_layerNameInput__ZiOKv{background:var(--gray-950);border:1px solid var(--editor-accent);border-radius:2px;color:var(--gray-100);flex:1;font-size:11px;min-width:0;outline:none;padding:0 4px}.PixelEditor-module_layerControls__MrpXo{align-items:center;border-top:1px solid hsla(0,0%,100%,.05);display:flex;gap:4px;margin-top:4px;padding:4px 4px 2px}.PixelEditor-module_blendSelect__QCwns{background:var(--gray-950);border:1px solid var(--gray-850);border-radius:3px;color:var(--gray-300);cursor:pointer;flex:1;font-size:10px;padding:1px 4px}.PixelEditor-module_layerOpSlider__Vw-qs{accent-color:var(--editor-accent);cursor:pointer;height:4px;width:60px}.VectorEditor-module_root__rtRWo{background:var(--editor-bg-deep);color:var(--gray-200);display:flex;flex-direction:column;font-family:Segoe UI,Consolas,monospace;font-size:12px;height:100%;overflow:hidden;user-select:none}.VectorEditor-module_menuBar__o25XM{align-items:center;background:var(--editor-bg-deeper);border-bottom:1px solid var(--editor-bg-dark);display:flex;flex-shrink:0;gap:0;height:28px;padding:0 4px}.VectorEditor-module_menuBtn__aP4vp{background:none;border:none;border-radius:3px;color:var(--editor-text-light);cursor:pointer;font-size:11px;padding:4px 10px}.VectorEditor-module_menuBtn__aP4vp:hover{background:var(--editor-bg-dark);color:var(--color-white)}.VectorEditor-module_menuSep__3-kTv{background:var(--gray-850);height:16px;margin:0 4px;width:1px}.VectorEditor-module_menuLabel__Bsm0e{align-items:center;color:var(--gray-600);cursor:pointer;display:flex;font-size:10px;gap:2px;padding:0 4px}.VectorEditor-module_toolbar__fakYL{background:var(--editor-panel);border-right:1px solid var(--editor-bg-dark);display:flex;flex-direction:column;flex-shrink:0;gap:2px;padding:4px 2px;width:38px}.VectorEditor-module_toolBtn__Zh7D3{align-items:center;background:none;border:1px solid transparent;border-radius:4px;color:var(--editor-text-muted);cursor:pointer;display:flex;font-size:16px;height:32px;justify-content:center;transition:all .1s;width:32px}.VectorEditor-module_toolBtn__Zh7D3:hover{background:var(--editor-bg-dark);color:var(--gray-300)}.VectorEditor-module_toolBtnActive__0xZlr{background:var(--editor-bg-mid)!important;border-color:var(--editor-accent)!important;color:var(--color-white)!important}.VectorEditor-module_mainArea__3o89F{display:flex;flex:1;min-height:0}.VectorEditor-module_canvasContainer__hOUAx{background:var(--editor-bg-deepest);flex:1;overflow:hidden;position:relative}.VectorEditor-module_canvasContainer__hOUAx svg{height:100%;inset:0;position:absolute;width:100%}.VectorEditor-module_rightPanel__3hzcS{background:var(--editor-bg-deep);border-left:1px solid var(--editor-bg-dark);display:flex;flex-direction:column;flex-shrink:0;overflow-y:auto;width:220px}.VectorEditor-module_panelSection__uteDQ{border-bottom:1px solid var(--editor-bg-dark);padding:6px 8px}.VectorEditor-module_panelTitle__WBUxr{align-items:center;color:var(--editor-text-secondary);display:flex;font-size:10px;justify-content:space-between;letter-spacing:.5px;margin-bottom:4px;text-transform:uppercase}.VectorEditor-module_panelTitle__WBUxr button{background:none;border:none;color:var(--editor-text-secondary);cursor:pointer;font-size:14px;line-height:1;padding:0 2px}.VectorEditor-module_panelTitle__WBUxr button:hover{color:var(--gray-500)}.VectorEditor-module_shapeItem__bu2E2{align-items:center;border-radius:3px;cursor:pointer;display:flex;font-size:11px;gap:6px;padding:3px 4px}.VectorEditor-module_shapeItem__bu2E2:hover{background:hsla(0,0%,100%,.04)}.VectorEditor-module_shapeItemActive__E2lK7{background:var(--editor-surface)!important;border:1px solid var(--accent-blue-dark)}.VectorEditor-module_shapeIcon__M4j6X{flex-shrink:0;font-size:14px;opacity:.7}.VectorEditor-module_shapeName__2QctO{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.VectorEditor-module_propRow__Alc4S{align-items:center;display:flex;gap:6px;margin-bottom:4px}.VectorEditor-module_propLabel__J0lxK{color:var(--gray-600);font-size:10px;min-width:40px}.VectorEditor-module_propInput__3my2d{background:var(--gray-950);border:1px solid var(--gray-850);border-radius:3px;color:var(--gray-200);flex:1;font-size:11px;padding:2px 4px}.VectorEditor-module_propColorSwatch__JL97Z{border:1px solid hsla(0,0%,100%,.15);border-radius:3px;cursor:pointer;height:24px;position:relative;width:24px}.VectorEditor-module_propColorSwatch__JL97Z input{cursor:pointer;height:100%;inset:0;opacity:0;position:absolute;width:100%}.VectorEditor-module_statusBar__jMwan{align-items:center;background:var(--gray-950);border-top:1px solid var(--gray-900);color:var(--gray-700);display:flex;flex-shrink:0;font-size:10px;gap:12px;height:20px;padding:2px 8px}.VectorEditor-module_dialogOverlay__NLiCg{align-items:center;background:rgba(0,0,0,.6);display:flex;inset:0;justify-content:center;position:absolute;z-index:100}.VectorEditor-module_dialog__NDNK2{background:var(--editor-panel);border:1px solid var(--editor-bg-mid);border-radius:8px;box-shadow:0 8px 32px rgba(0,0,0,.5);max-width:500px;min-width:300px;padding:20px}.VectorEditor-module_dialog__NDNK2 h3{color:var(--gray-300);font-size:14px;margin:0 0 12px}.VectorEditor-module_dialog__NDNK2 label{color:var(--gray-600);display:block;font-size:11px;margin:8px 0 2px}.VectorEditor-module_dialog__NDNK2 input,.VectorEditor-module_dialog__NDNK2 select,.VectorEditor-module_dialog__NDNK2 textarea{background:var(--gray-950);border:1px solid var(--gray-850);border-radius:4px;color:var(--gray-200);font-size:12px;padding:4px 8px;width:100%}.VectorEditor-module_dialog__NDNK2 textarea{font-family:monospace;min-height:120px;resize:vertical}.VectorEditor-module_dialogActions__0Sy4X{display:flex;gap:8px;justify-content:flex-end;margin-top:16px}.VectorEditor-module_dialogActions__0Sy4X button{border:none;border-radius:4px;cursor:pointer;font-size:12px;padding:4px 16px}.VectorEditor-module_btnPrimary__f9AaS{background:var(--editor-accent);color:var(--color-white)}.VectorEditor-module_btnPrimary__f9AaS:hover{background:#67d}.VectorEditor-module_btnSecondary__wDps2{background:var(--gray-850);color:var(--gray-500)}.VectorEditor-module_btnSecondary__wDps2:hover{background:var(--gray-800);color:var(--gray-200)}.VectorEditor-module_handleGroup__sMkQj circle{fill:var(--editor-accent);stroke:var(--color-white);stroke-width:1;cursor:pointer}.VectorEditor-module_handleGroup__sMkQj circle:hover{fill:#78e}.PhotoEditor-module_wrapper__jrHYj{background:#1a1a1e;border-radius:12px;color:#eee;display:flex;flex-direction:column;font-family:Segoe UI,sans-serif;font-size:13px;max-height:85vh;overflow:hidden;width:100%}.PhotoEditor-module_loadingWrap__QUTon{align-items:center;color:#aaa;display:flex;justify-content:center;min-height:400px;width:100%}.PhotoEditor-module_mainContent__TCVxf{display:flex;flex:1;min-height:0;overflow:hidden}.PhotoEditor-module_toolbar__RY-Ty{align-items:center;background:#222226;border-bottom:1px solid #333;display:flex;justify-content:space-between;padding:8px 14px}.PhotoEditor-module_toolbarGroup__PXw0-{display:flex;gap:6.5px}.PhotoEditor-module_toolbarDivider__o3kFV{background:#444;margin:0 4px;width:1px}.PhotoEditor-module_toolbarTitle__P1o18{font-size:14px;font-weight:700}.PhotoEditor-module_leftPanel__DnHLU{background:#222226;border-right:1px solid #333;display:flex;flex-direction:column;min-width:280px;overflow:hidden;width:280px}.PhotoEditor-module_tabBar__DZ3MG{border-bottom:1px solid #333;display:flex;flex-wrap:wrap}.PhotoEditor-module_tabButton__BLi97{align-items:center;background:transparent;border:none;border-bottom:2px solid transparent;color:#888;cursor:pointer;display:flex;flex:1 0 auto;flex-direction:column;font-size:10px;font-weight:600;gap:1px;min-width:34px;padding:8px 0;transition:all .15s}.PhotoEditor-module_tabButtonActive__KlQG0{background:#2a2a30}.PhotoEditor-module_tabIcon__-Mq19{font-size:14px}.PhotoEditor-module_panelContent__l5i5t{flex:1;overflow-y:auto;padding:10px 12px}.PhotoEditor-module_sectionTitle__tMvCm{font-size:12px;font-weight:600;margin-bottom:6px}.PhotoEditor-module_sectionTitleMb8__PQ-lV{margin-bottom:8px}.PhotoEditor-module_sectionInfo__bWxW5{color:#aaa;font-size:11px}.PhotoEditor-module_sectionInfoMb__Hk6V-{margin-bottom:10px}.PhotoEditor-module_pillRow__DGJUb{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:10px}.PhotoEditor-module_pillRowMb8__AQrth{margin-bottom:8px}.PhotoEditor-module_pillRowGap3__Y46Vu{display:flex;flex-wrap:wrap;gap:3px;margin-bottom:8px}.PhotoEditor-module_pill__wTFac{background:transparent;border:1px solid #444;border-radius:12px;color:#aaa;cursor:pointer;font-size:11px;font-weight:600;padding:3px 10px}.PhotoEditor-module_pillActive__AfdZR{color:#fff}.PhotoEditor-module_pillCrop__Nsisp{border-radius:6px;padding:4px 12px}.PhotoEditor-module_pillCropActive__p6csO{color:#fff}.PhotoEditor-module_pillEmoji__I42DJ{border-radius:10px;padding:2px 8px}.PhotoEditor-module_pillEmojiActive__0-EM7{color:#fff}.PhotoEditor-module_filterGrid__-29PS{display:grid;gap:6px;grid-template-columns:repeat(3,1fr)}.PhotoEditor-module_emojiGrid__whqqK{display:grid;gap:2px;grid-template-columns:repeat(6,1fr);max-height:260px;overflow-y:auto}.PhotoEditor-module_shapeGrid__TawIy{margin-bottom:16px}.PhotoEditor-module_frameGrid__R09dd,.PhotoEditor-module_shapeGrid__TawIy{display:grid;gap:4px;grid-template-columns:repeat(5,1fr)}.PhotoEditor-module_sliderRow__jsWDQ{align-items:center;display:flex;gap:6px;margin-bottom:8px}.PhotoEditor-module_sliderLabel__zOZ49{color:#aaa;font-size:11px}.PhotoEditor-module_sliderLabelSelf__EwYKU{align-self:center;margin-right:4px}.PhotoEditor-module_sliderValue__qFuTw{font-size:11px;font-weight:600;min-width:28px}.PhotoEditor-module_sliderValueSm__U7FrJ{font-size:10px;min-width:28px}.PhotoEditor-module_adjustColumn__y---T{display:flex;flex-direction:column;gap:8px}.PhotoEditor-module_adjustHeader__6s9zV{display:flex;font-size:11px;justify-content:space-between;margin-bottom:2px}.PhotoEditor-module_adjustIcon__d56rY{text-align:center;width:14px}.PhotoEditor-module_adjustValue__aUUmg{cursor:pointer;font-weight:600;min-width:30px;text-align:right}.PhotoEditor-module_intensitySection__dhe5h{margin-top:12px;padding:8px 0}.PhotoEditor-module_intensityHeader__-KKu6{display:flex;font-size:11px;justify-content:space-between;margin-bottom:4px}.PhotoEditor-module_colorInput__xkF1h{border:none;cursor:pointer;height:28px;padding:0;width:28px}.PhotoEditor-module_colorInputLg__W2KrK{border:none;cursor:pointer;height:30px;padding:0;width:32px}.PhotoEditor-module_colorInputDraw__KYcdG{border:none;cursor:pointer;height:28px;padding:0;width:32px}.PhotoEditor-module_overlayToolbar__hfspp{border-bottom:1px solid #333;display:flex;flex-wrap:wrap;gap:4px;margin-bottom:8px;padding:6px 0}.PhotoEditor-module_overlayToolbarLabel__mc4pU{align-self:center;color:#aaa;font-size:11px;margin-right:4px}.PhotoEditor-module_overlayToolbarBtn__AdTmZ{font-size:11px;padding:2px 6px}.PhotoEditor-module_overlaySection__IIl4r{border-top:1px solid #333;margin-top:12px;padding-top:8px}.PhotoEditor-module_overlaySectionTitle__FRx3e{color:#aaa;font-size:11px;font-weight:600;margin-bottom:4px}.PhotoEditor-module_overlayItem__DGUCN{align-items:center;background:transparent;border-radius:4px;color:#ccc;cursor:pointer;display:flex;font-size:11px;gap:6px;margin-bottom:2px;padding:3px 6px}.PhotoEditor-module_overlayIcon__G0pFk{text-align:center;width:18px}.PhotoEditor-module_overlayName__JVh64{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.PhotoEditor-module_overlayDeleteBtn__Ontxv{background:none;border:none;color:#f55;cursor:pointer;font-size:11px;padding:0}.PhotoEditor-module_emojiBtn__jxG9m{background:transparent;border:none;border-radius:6px;cursor:pointer;font-size:22px;line-height:1;padding:4px 0}.PhotoEditor-module_shapeBtn__xZdSV{font-size:20px}.PhotoEditor-module_frameBtn__coMkZ,.PhotoEditor-module_shapeBtn__xZdSV{background:transparent;border:1px solid #444;border-radius:6px;color:#eee;cursor:pointer;line-height:1;padding:6px 0}.PhotoEditor-module_frameBtn__coMkZ{font-size:18px}.PhotoEditor-module_removeFrameBtn__oCuua{background:transparent;border:1px solid #444;border-radius:6px;color:#f55;cursor:pointer;font-size:14px;padding:6px 0}.PhotoEditor-module_textFormatBtn__7Z9RJ{min-width:32px}.PhotoEditor-module_textFormatBtnSm__3ptcG{min-width:28px}.PhotoEditor-module_drawActionBtn__teYz4{flex:1}.PhotoEditor-module_textArea__sBGlB{background:#2a2a30;border:1px solid #444;border-radius:6px;color:#eee;font-size:13px;margin-bottom:8px;resize:none}.PhotoEditor-module_textAreaSm__6xZnY{font-size:12px;margin-bottom:0}.PhotoEditor-module_textBtnRow__AcEnd{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:8px}.PhotoEditor-module_textGapRow__Dq2uz{display:flex;gap:4px;margin-top:6px}.PhotoEditor-module_editSelectedSection__bgNEh{border-top:1px solid #333;margin-top:12px;padding-top:8px}.PhotoEditor-module_editSelectedLabel__u2rmS{color:#aaa;font-size:11px;margin-bottom:4px}.PhotoEditor-module_shapeColorRow__ip5--{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:8px}.PhotoEditor-module_shapeColorLabel__nVcbU{align-self:center;color:#aaa;font-size:11px;margin-right:2px}.PhotoEditor-module_shapeColorLabelMl__KiM2d{margin-left:4px}.PhotoEditor-module_shapeFillToggle__BXJ8C{font-size:10px;padding:2px 6px}.PhotoEditor-module_frameColorRow__KRAHz{display:flex;gap:4px;margin-bottom:8px}.PhotoEditor-module_frameThicknessWrap__lXCoC{align-items:center;display:flex;flex:1;gap:4px}.PhotoEditor-module_frameThicknessValue__SAEuc{font-size:10px}.PhotoEditor-module_drawPreview__WPbiv{display:flex;justify-content:center;margin-bottom:12px}.PhotoEditor-module_drawActionRow__CUSWS{display:flex;gap:4px}.PhotoEditor-module_quickColorRow__DTy5E{align-items:center;display:flex;gap:6px;margin-bottom:8px}.PhotoEditor-module_quickColorSwatch__ZjgoA{border:1px solid #555;border-radius:3px;cursor:pointer;height:18px;width:18px}.PhotoEditor-module_transformRow__LKRjS{display:flex;gap:6px;margin-bottom:16px}.PhotoEditor-module_transformZoomRow__h2NlB{align-items:center;display:flex;gap:8px}.PhotoEditor-module_transformZoomValue__LXa51{font-size:11px;font-weight:600;min-width:40px}.PhotoEditor-module_transformInfo__zXP9l{background:#2a2a30;border-radius:8px;color:#aaa;font-size:11px;margin-top:16px;padding:10px}.PhotoEditor-module_canvasViewport__OMBIL{align-items:center;background:#111115;display:flex;flex:1;justify-content:center;overflow:auto;padding:20px;position:relative}.PhotoEditor-module_zoomWrap__JjfiJ{max-height:100%;max-width:100%;position:relative;transform-origin:center center;transition:transform .15s ease}.PhotoEditor-module_compareWrap__-J5ku{cursor:ew-resize;display:inline-block;position:relative}.PhotoEditor-module_canvasOriginal__Apf91{max-width:100%}.PhotoEditor-module_canvasEdited__Eroz7,.PhotoEditor-module_canvasOriginal__Apf91{display:block;max-height:60vh;object-fit:contain}.PhotoEditor-module_compareClip__5qG2I{bottom:0;left:0;overflow:hidden;position:absolute;top:0}.PhotoEditor-module_compareSlider__OIIIK{bottom:0;position:absolute;top:0;transform:translateX(-50%);width:3px}.PhotoEditor-module_compareSliderKnob__VohI9{align-items:center;border-radius:50%;box-shadow:0 2px 8px rgba(0,0,0,.4);display:flex;height:28px;justify-content:center;left:50%;position:absolute;top:50%;transform:translate(-50%,-50%);width:28px}.PhotoEditor-module_compareSliderIcon__pXcct{color:#fff;font-size:12px}.PhotoEditor-module_compareLabelOriginal__GaBoj{background:rgba(0,0,0,.6);left:8px}.PhotoEditor-module_compareLabelEdited__Fr836,.PhotoEditor-module_compareLabelOriginal__GaBoj{border-radius:4px;color:#fff;font-size:11px;font-weight:600;padding:2px 8px;position:absolute;top:8px}.PhotoEditor-module_compareLabelEdited__Fr836{right:8px}.PhotoEditor-module_regularWrap__8umPV{display:inline-block;position:relative}.PhotoEditor-module_canvasRegular__wxapL{border-radius:6px;box-shadow:0 4px 20px rgba(0,0,0,.4);display:block;max-height:60vh;max-width:100%;object-fit:contain}.PhotoEditor-module_cropOverlay__MJk1Y{inset:0;pointer-events:none;position:absolute;z-index:2}.PhotoEditor-module_cropDarkBg__m3axV{background:rgba(0,0,0,.55);inset:0;position:absolute}.PhotoEditor-module_cropGridContainer__NfHdT{inset:0;position:absolute}.PhotoEditor-module_cropSizeLabel__fV2mF{background:rgba(0,0,0,.75);border-radius:3px;bottom:-24px;color:#fff;font-size:10px;left:50%;padding:2px 8px;position:absolute;transform:translateX(-50%);white-space:nowrap}.PhotoEditor-module_cropInfo__Z1SCE{color:#aaa;font-size:11px;margin-bottom:10px}.PhotoEditor-module_cropAspectLabel__dieL-{font-size:12px;font-weight:600;margin-bottom:6px}.PhotoEditor-module_cropAspectRow__scRj3{display:flex;flex-wrap:wrap;gap:4px}.PhotoEditor-module_accentBtn__tgaEx{color:#fff;font-weight:600;width:100%}.GameAsset2dEditor-module_root__WVJBM{background:#1a1a2e;color:#e0e0e0;display:flex;flex-direction:column;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:13px;height:100%;min-height:600px;user-select:none}.GameAsset2dEditor-module_menuBar__WaEaU{align-items:center;background:#16213e;border-bottom:1px solid #0f3460;display:flex;gap:8px;padding:6px 12px}.GameAsset2dEditor-module_menuBar__WaEaU h3{color:#ffd369;font-size:14px;font-weight:600;margin:0}.GameAsset2dEditor-module_menuGroup__EOreB{display:flex;gap:2px}.GameAsset2dEditor-module_menuBtn__JYWXn{align-items:center;background:transparent;border:none;border-radius:4px;color:#b0b0b0;cursor:pointer;display:flex;font-size:12px;gap:4px;padding:4px 8px;transition:all .15s}.GameAsset2dEditor-module_menuBtn__JYWXn:hover{background:hsla(0,0%,100%,.1);color:#fff}.GameAsset2dEditor-module_menuBtn__JYWXn:disabled{cursor:not-allowed;opacity:.4}.GameAsset2dEditor-module_spacer__fPVeq{flex:1}.GameAsset2dEditor-module_modeTabs__iKh7C{background:#1f2940;border-bottom:1px solid #0f3460;display:flex;gap:2px;padding:4px 12px}.GameAsset2dEditor-module_modeTab__C12zt{background:transparent;border:none;border-radius:4px 4px 0 0;color:#8892a8;cursor:pointer;font-size:12px;font-weight:500;padding:6px 16px;transition:all .15s}.GameAsset2dEditor-module_modeTab__C12zt:hover{background:hsla(0,0%,100%,.05);color:#c0c8d8}.GameAsset2dEditor-module_modeTab__C12zt.GameAsset2dEditor-module_active__DUroI{background:#1a1a2e;color:#ffd369}.GameAsset2dEditor-module_mainArea__jwDUa{display:flex;flex:1;overflow:hidden}.GameAsset2dEditor-module_leftPanel__xxAg5{background:#16213e;border-right:1px solid #0f3460;display:flex;flex-direction:column;overflow:hidden;width:220px}.GameAsset2dEditor-module_centerArea__xr-Hn{display:flex;flex:1;flex-direction:column;overflow:hidden}.GameAsset2dEditor-module_rightPanel__YoNuc{background:#16213e;border-left:1px solid #0f3460;display:flex;flex-direction:column;overflow:hidden;width:260px}.GameAsset2dEditor-module_toolbar__hEC9S{align-items:center;background:#1f2940;border-bottom:1px solid #0f3460;display:flex;gap:8px;padding:6px 12px}.GameAsset2dEditor-module_toolGroup__Zbn47{background:rgba(0,0,0,.2);border-radius:4px;display:flex;gap:2px;padding:2px}.GameAsset2dEditor-module_toolBtn__5U7Rw{align-items:center;background:transparent;border:none;border-radius:3px;color:#8892a8;cursor:pointer;display:flex;font-size:14px;height:28px;justify-content:center;transition:all .15s;width:28px}.GameAsset2dEditor-module_toolBtn__5U7Rw:hover{background:hsla(0,0%,100%,.1);color:#fff}.GameAsset2dEditor-module_toolBtn__5U7Rw.GameAsset2dEditor-module_active__DUroI{background:#0f3460;color:#ffd369}.GameAsset2dEditor-module_toolBtn__5U7Rw:disabled{cursor:not-allowed;opacity:.3}.GameAsset2dEditor-module_viewport__vEKEv{background:#0a0a14;flex:1;overflow:hidden;position:relative}.GameAsset2dEditor-module_viewportCanvas__FJ5qA{image-rendering:pixelated;image-rendering:crisp-edges;left:50%;position:absolute;top:50%}.GameAsset2dEditor-module_gridOverlay__K8B97{bottom:0;left:0;pointer-events:none;position:absolute;right:0;top:0}.GameAsset2dEditor-module_panelHeader__xm2As{align-items:center;background:#0f3460;color:#8892a8;display:flex;font-size:11px;font-weight:600;justify-content:space-between;letter-spacing:.5px;padding:8px 12px;text-transform:uppercase}.GameAsset2dEditor-module_panelContent__dvOGq{flex:1;overflow-y:auto;padding:8px}.GameAsset2dEditor-module_panelSection__RQQDr{margin-bottom:16px}.GameAsset2dEditor-module_panelLabel__Ks-Wa{color:#8892a8;display:block;font-size:11px;letter-spacing:.5px;margin-bottom:6px;text-transform:uppercase}.GameAsset2dEditor-module_panelInput__cxNiG{background:#0a0a14;border:1px solid #2a3a5e;border-radius:4px;color:#e0e0e0;font-size:12px;padding:6px 8px;width:100%}.GameAsset2dEditor-module_panelInput__cxNiG:focus{border-color:#ffd369;outline:none}.GameAsset2dEditor-module_tilePalette__OpzmV{display:grid;gap:4px;grid-template-columns:repeat(auto-fill,minmax(40px,1fr));padding:8px}.GameAsset2dEditor-module_tileItem__uWNS9{aspect-ratio:1;background:#0a0a14;border:2px solid transparent;border-radius:4px;cursor:pointer;overflow:hidden;transition:all .15s}.GameAsset2dEditor-module_tileItem__uWNS9:hover{border-color:#4a5a7e}.GameAsset2dEditor-module_tileItem__uWNS9.GameAsset2dEditor-module_selected__216IN{border-color:#ffd369}.GameAsset2dEditor-module_tileItem__uWNS9 img{height:100%;image-rendering:pixelated;object-fit:contain;width:100%}.GameAsset2dEditor-module_layersList__anFaG{display:flex;flex-direction:column;gap:2px}.GameAsset2dEditor-module_layerItem__XSGlu{align-items:center;background:#1f2940;border-radius:4px;cursor:pointer;display:flex;gap:8px;padding:6px 8px;transition:all .15s}.GameAsset2dEditor-module_layerItem__XSGlu:hover{background:#2a3a5e}.GameAsset2dEditor-module_layerItem__XSGlu.GameAsset2dEditor-module_selected__216IN{background:#0f3460;border-left:3px solid #ffd369}.GameAsset2dEditor-module_layerVisibility__RpHjV{align-items:center;background:transparent;border:none;border-radius:3px;color:#8892a8;cursor:pointer;display:flex;height:20px;justify-content:center;width:20px}.GameAsset2dEditor-module_layerVisibility__RpHjV:hover{background:hsla(0,0%,100%,.1)}.GameAsset2dEditor-module_layerVisibility__RpHjV.GameAsset2dEditor-module_hidden__mukOG{opacity:.4}.GameAsset2dEditor-module_layerName__WBxq5{color:#c0c8d8;flex:1;font-size:12px}.GameAsset2dEditor-module_layerOpacity__FpzL-{color:#8892a8;font-size:10px;text-align:right;width:40px}.GameAsset2dEditor-module_framesList__vg1oO{display:grid;gap:8px;grid-template-columns:repeat(auto-fill,minmax(60px,1fr));padding:8px}.GameAsset2dEditor-module_frameItem__fkEfb{aspect-ratio:1;background:#0a0a14;border:2px solid transparent;border-radius:4px;cursor:pointer;overflow:hidden;position:relative;transition:all .15s}.GameAsset2dEditor-module_frameItem__fkEfb:hover{border-color:#4a5a7e}.GameAsset2dEditor-module_frameItem__fkEfb.GameAsset2dEditor-module_selected__216IN{border-color:#ffd369}.GameAsset2dEditor-module_frameItem__fkEfb canvas{height:100%;image-rendering:pixelated;object-fit:contain;width:100%}.GameAsset2dEditor-module_frameLabel__5IGW8{background:rgba(0,0,0,.7);bottom:0;color:#b0b0b0;font-size:9px;left:0;padding:2px 4px;position:absolute;right:0;text-align:center}.GameAsset2dEditor-module_timeline__dPJk6{background:#16213e;border-top:1px solid #0f3460;padding:8px}.GameAsset2dEditor-module_timelineTrack__mr20w{background:#0a0a14;border-radius:4px;display:flex;gap:4px;overflow-x:auto;padding:4px}.GameAsset2dEditor-module_timelineFrame__AQyGe{background:#1f2940;border:2px solid transparent;border-radius:4px;cursor:pointer;flex-shrink:0;height:48px;overflow:hidden;width:48px}.GameAsset2dEditor-module_timelineFrame__AQyGe:hover{border-color:#4a5a7e}.GameAsset2dEditor-module_timelineFrame__AQyGe.GameAsset2dEditor-module_current__3sAfL{border-color:#ffd369}.GameAsset2dEditor-module_stateGraph__qAWlU{background:#0a0a14;flex:1;overflow:hidden;position:relative}.GameAsset2dEditor-module_stateNode__W9Z-g{background:#1f2940;border:2px solid #2a3a5e;border-radius:8px;cursor:move;min-width:120px;padding:8px 12px;position:absolute;transition:border-color .15s}.GameAsset2dEditor-module_stateNode__W9Z-g:hover{border-color:#4a5a7e}.GameAsset2dEditor-module_stateNode__W9Z-g.GameAsset2dEditor-module_selected__216IN{border-color:#ffd369}.GameAsset2dEditor-module_stateNode__W9Z-g.GameAsset2dEditor-module_entry__cmA9n{border-color:#4ade80}.GameAsset2dEditor-module_stateNodeName__TK5vs{color:#e0e0e0;font-size:12px;font-weight:500;text-align:center}.GameAsset2dEditor-module_stateNodeAnim__VGwnV{color:#8892a8;font-size:10px;margin-top:4px;text-align:center}.GameAsset2dEditor-module_transition__FBbno{stroke:#4a5a7e;stroke-width:2;fill:none;marker-end:url(#arrowhead)}.GameAsset2dEditor-module_transition__FBbno:hover{stroke:#ffd369}.GameAsset2dEditor-module_effectsList__vHq4I{display:flex;flex-direction:column;gap:8px}.GameAsset2dEditor-module_effectItem__6-1li{background:#1f2940;border-radius:6px;overflow:hidden}.GameAsset2dEditor-module_effectHeader__cgVN-{align-items:center;cursor:pointer;display:flex;gap:8px;padding:8px}.GameAsset2dEditor-module_effectToggle__lKE36{background:#0a0a14;border:1px solid #2a3a5e;border-radius:3px;cursor:pointer;height:18px;width:18px}.GameAsset2dEditor-module_effectToggle__lKE36.GameAsset2dEditor-module_enabled__wgDzp{background:#ffd369;border-color:#ffd369}.GameAsset2dEditor-module_effectName__NQCWj{color:#c0c8d8;flex:1;font-size:12px}.GameAsset2dEditor-module_effectRemove__TSSdI{align-items:center;background:transparent;border:none;border-radius:3px;color:#8892a8;cursor:pointer;display:flex;height:20px;justify-content:center;width:20px}.GameAsset2dEditor-module_effectRemove__TSSdI:hover{background:#ef4444;color:#fff}.GameAsset2dEditor-module_effectParams__UqTBd{background:rgba(0,0,0,.2);padding:8px}.GameAsset2dEditor-module_effectParam__hEsVY{align-items:center;display:flex;gap:8px;margin-bottom:8px}.GameAsset2dEditor-module_effectParam__hEsVY:last-child{margin-bottom:0}.GameAsset2dEditor-module_effectParamLabel__u0Qoc{color:#8892a8;flex:0 0 80px;font-size:11px}.GameAsset2dEditor-module_effectParamInput__aqxdv{background:#0a0a14;border:1px solid #2a3a5e;border-radius:3px;color:#e0e0e0;flex:1;font-size:11px;height:24px;padding:0 8px}.GameAsset2dEditor-module_statusBar__eOrNe{align-items:center;background:#0f3460;color:#8892a8;display:flex;font-size:11px;gap:16px;padding:4px 12px}.GameAsset2dEditor-module_statusItem__kKLHF{align-items:center;display:flex;gap:4px}.GameAsset2dEditor-module_zoomControl__4YD9G{align-items:center;display:flex;gap:4px;margin-left:auto}.GameAsset2dEditor-module_zoomBtn__hxYik{align-items:center;background:transparent;border:none;border-radius:3px;color:#8892a8;cursor:pointer;display:flex;height:20px;justify-content:center;width:20px}.GameAsset2dEditor-module_zoomBtn__hxYik:hover{background:hsla(0,0%,100%,.1);color:#fff}.GameAsset2dEditor-module_dialogOverlay__dZYwO{align-items:center;background:rgba(0,0,0,.6);bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}.GameAsset2dEditor-module_dialog__mfLFL{background:#16213e;border-radius:8px;box-shadow:0 8px 32px rgba(0,0,0,.4);max-width:500px;min-width:300px;padding:24px}.GameAsset2dEditor-module_dialog__mfLFL h3{color:#ffd369;font-size:16px;margin:0 0 16px}.GameAsset2dEditor-module_dialogActions__vhDXe{display:flex;gap:8px;justify-content:flex-end;margin-top:20px}.GameAsset2dEditor-module_btnPrimary__Gzc25{background:#ffd369;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;font-size:12px;font-weight:600;padding:8px 16px;transition:all .15s}.GameAsset2dEditor-module_btnPrimary__Gzc25:hover{background:#ffe599}.GameAsset2dEditor-module_btnSecondary__G5nK5{background:transparent;border:1px solid #4a5a7e;border-radius:4px;color:#c0c8d8;cursor:pointer;font-size:12px;padding:8px 16px;transition:all .15s}.GameAsset2dEditor-module_btnSecondary__G5nK5:hover{background:hsla(0,0%,100%,.05);border-color:#6a7a9e}.GameAsset2dEditor-module_panelContent__dvOGq::-webkit-scrollbar{width:6px}.GameAsset2dEditor-module_panelContent__dvOGq::-webkit-scrollbar-track{background:#0a0a14}.GameAsset2dEditor-module_panelContent__dvOGq::-webkit-scrollbar-thumb{background:#2a3a5e;border-radius:3px}.GameAsset2dEditor-module_panelContent__dvOGq::-webkit-scrollbar-thumb:hover{background:#4a5a7e}.GameAsset2dEditor-module_dropZone__Z7sYz{border:2px dashed #4a5a7e;border-radius:8px;color:#8892a8;cursor:pointer;padding:24px;text-align:center;transition:all .15s}.GameAsset2dEditor-module_dropZone__Z7sYz:hover{border-color:#ffd369;color:#c0c8d8}.GameAsset2dEditor-module_dropZone__Z7sYz.GameAsset2dEditor-module_active__DUroI{background:rgba(255,211,105,.1);border-color:#ffd369}.GameAsset2dEditor-module_emptyState__3wryk{align-items:center;color:#8892a8;display:flex;flex-direction:column;justify-content:center;padding:32px;text-align:center}.GameAsset2dEditor-module_emptyState__3wryk svg{height:48px;margin-bottom:12px;opacity:.5;width:48px}.GameAsset2dEditor-module_emptyStateText__Q5V1a{font-size:12px;margin-bottom:12px}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import React, { useState, useRef, useEffect } from 'react';
|
|
3
|
+
import cs from './PhotoEditor.module.css.js';
|
|
4
|
+
|
|
5
|
+
const FilterThumb = React.memo(({ filter, selected, accent, onSelect, generateThumbnail }) => {
|
|
6
|
+
const [thumb, setThumb] = useState("");
|
|
7
|
+
const canvasRef = useRef(null);
|
|
8
|
+
const mounted = useRef(true);
|
|
9
|
+
useEffect(() => {
|
|
10
|
+
mounted.current = true;
|
|
11
|
+
const canvas = document.createElement("canvas");
|
|
12
|
+
canvasRef.current = canvas;
|
|
13
|
+
generateThumbnail(canvas, filter);
|
|
14
|
+
if (mounted.current && canvas.width > 0) {
|
|
15
|
+
setThumb(canvas.toDataURL("image/png"));
|
|
16
|
+
}
|
|
17
|
+
return () => { mounted.current = false; };
|
|
18
|
+
}, [filter, generateThumbnail]);
|
|
19
|
+
return (jsxs("button", { onClick: onSelect, className: selected ? cs.filterThumbSelected : cs.filterThumb, style: {
|
|
20
|
+
borderColor: selected ? accent : undefined,
|
|
21
|
+
boxShadow: selected ? `0 0 0 2px ${accent}` : undefined,
|
|
22
|
+
}, title: filter.name, children: [thumb ? (jsx("img", { src: thumb, alt: filter.name, className: cs.filterThumbImg })) : (jsx("div", { className: cs.filterThumbPlaceholder })), jsx("span", { className: cs.filterThumbLabel, children: filter.name })] }));
|
|
23
|
+
});
|
|
24
|
+
FilterThumb.displayName = "FilterThumb";
|
|
25
|
+
|
|
26
|
+
export { FilterThumb as default };
|
|
27
|
+
//# sourceMappingURL=FilterThumb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FilterThumb.js","sources":["../../../src/photo/FilterThumb.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":";;;;AAgBA,MAAM,WAAW,GAAoB,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,iBAAiB,EAAE,KAAI;IAC5G,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAS,EAAE,CAAC;AAC9C,IAAA,MAAM,SAAS,GAAG,MAAM,CAA2B,IAAI,CAAC;AACxD,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC;IAE5B,SAAS,CAAC,MAAK;AACb,QAAA,OAAO,CAAC,OAAO,GAAG,IAAI;QACtB,MAAM,MAAM,GAAG,QAAQ,CAAC,aAAa,CAAC,QAAQ,CAAC;AAC/C,QAAA,SAAS,CAAC,OAAO,GAAG,MAAM;AAC1B,QAAA,iBAAiB,CAAC,MAAM,EAAE,MAAM,CAAC;QACjC,IAAI,OAAO,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE;YACvC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;QACzC;QACA,OAAO,MAAK,EAAG,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC;AAC3C,IAAA,CAAC,EAAE,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAE/B,QACEA,iBACE,OAAO,EAAE,QAAQ,EACjB,SAAS,EAAE,QAAQ,GAAG,EAAE,CAAC,mBAAmB,GAAG,EAAE,CAAC,WAAW,EAC7D,KAAK,EAAE;YACL,WAAW,EAAE,QAAQ,GAAG,MAAM,GAAG,SAAS;YAC1C,SAAS,EAAE,QAAQ,GAAG,CAAA,UAAA,EAAa,MAAM,CAAA,CAAE,GAAG,SAAS;SACxD,EACD,KAAK,EAAE,MAAM,CAAC,IAAI,aAEjB,KAAK,IACJC,GAAA,CAAA,KAAA,EAAA,EAAK,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,cAAc,GAAI,KAEnEA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,EAAE,CAAC,sBAAsB,EAAA,CAAI,CAC9C,EACDA,cAAM,SAAS,EAAE,EAAE,CAAC,gBAAgB,EAAA,QAAA,EAAG,MAAM,CAAC,IAAI,EAAA,CAAQ,CAAA,EAAA,CACnD;AAEb,CAAC;AAED,WAAW,CAAC,WAAW,GAAG,aAAa;;;;"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
+
import { usePhotoEditor } from './usePhotoEditor.js';
|
|
3
|
+
import PhotoEditorToolbar from './PhotoEditorToolbar.js';
|
|
4
|
+
import PhotoEditorLeftPanel from './PhotoEditorLeftPanel.js';
|
|
5
|
+
import PhotoEditorCanvas from './PhotoEditorCanvas.js';
|
|
6
|
+
import cs from './PhotoEditor.module.css.js';
|
|
7
|
+
|
|
8
|
+
// ── Component ──
|
|
9
|
+
function PhotoEditor(props) {
|
|
10
|
+
const api = usePhotoEditor(props);
|
|
11
|
+
if (api.loading || !api.image) {
|
|
12
|
+
return (jsx("div", { className: cs.loadingWrap, children: jsx("i", { className: "fa fa-spinner fa-spin fa-2x" }) }));
|
|
13
|
+
}
|
|
14
|
+
return (jsxs("div", { className: cs.wrapper, children: [jsx(PhotoEditorToolbar, { api: api }), jsxs("div", { className: cs.mainContent, children: [jsx(PhotoEditorLeftPanel, { api: api }), jsx(PhotoEditorCanvas, { api: api })] })] }));
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export { PhotoEditor as default };
|
|
18
|
+
//# sourceMappingURL=PhotoEditor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PhotoEditor.js","sources":["../../../src/photo/PhotoEditor.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":";;;;;;;AAaA;AAEc,SAAU,WAAW,CAAC,KAAuB,EAAA;AACvD,IAAA,MAAM,GAAG,GAAG,cAAc,CAAC,KAAK,CAAC;IAEjC,IAAI,GAAG,CAAC,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE;AAC3B,QAAA,QACIA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,EAAE,CAAC,WAAW,EAAA,QAAA,EAC1BA,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,6BAA6B,EAAA,CAAG,EAAA,CAC3C;IAEd;AAEA,IAAA,QACIC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,EAAE,CAAC,OAAO,EAAA,QAAA,EAAA,CACtBD,GAAA,CAAC,kBAAkB,EAAA,EAAC,GAAG,EAAE,GAAG,GAAI,EAChCC,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,EAAE,CAAC,WAAW,aAC1BD,GAAA,CAAC,oBAAoB,IAAC,GAAG,EAAE,GAAG,EAAA,CAAI,EAClCA,IAAC,iBAAiB,EAAA,EAAC,GAAG,EAAE,GAAG,GAAI,CAAA,EAAA,CAC7B,CAAA,EAAA,CACJ;AAEd;;;;"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
var cs = {"wrapper":"PhotoEditor-module_wrapper__jrHYj","loadingWrap":"PhotoEditor-module_loadingWrap__QUTon","mainContent":"PhotoEditor-module_mainContent__TCVxf","toolbar":"PhotoEditor-module_toolbar__RY-Ty","toolbarGroup":"PhotoEditor-module_toolbarGroup__PXw0-","toolbarDivider":"PhotoEditor-module_toolbarDivider__o3kFV","toolbarTitle":"PhotoEditor-module_toolbarTitle__P1o18","leftPanel":"PhotoEditor-module_leftPanel__DnHLU","tabBar":"PhotoEditor-module_tabBar__DZ3MG","tabButton":"PhotoEditor-module_tabButton__BLi97","tabButtonActive":"PhotoEditor-module_tabButtonActive__KlQG0 PhotoEditor-module_tabButton__BLi97","panelContent":"PhotoEditor-module_panelContent__l5i5t","sectionTitle":"PhotoEditor-module_sectionTitle__tMvCm","sectionTitleMb8":"PhotoEditor-module_sectionTitleMb8__PQ-lV PhotoEditor-module_sectionTitle__tMvCm","sectionInfoMb":"PhotoEditor-module_sectionInfoMb__Hk6V- PhotoEditor-module_sectionInfo__bWxW5","pillRow":"PhotoEditor-module_pillRow__DGJUb","pillRowGap3":"PhotoEditor-module_pillRowGap3__Y46Vu","pill":"PhotoEditor-module_pill__wTFac","pillActive":"PhotoEditor-module_pillActive__AfdZR PhotoEditor-module_pill__wTFac","pillCrop":"PhotoEditor-module_pillCrop__Nsisp PhotoEditor-module_pill__wTFac","pillCropActive":"PhotoEditor-module_pillCropActive__p6csO PhotoEditor-module_pillCrop__Nsisp PhotoEditor-module_pill__wTFac","pillEmoji":"PhotoEditor-module_pillEmoji__I42DJ PhotoEditor-module_pill__wTFac","pillEmojiActive":"PhotoEditor-module_pillEmojiActive__0-EM7 PhotoEditor-module_pillEmoji__I42DJ PhotoEditor-module_pill__wTFac","filterGrid":"PhotoEditor-module_filterGrid__-29PS","emojiGrid":"PhotoEditor-module_emojiGrid__whqqK","shapeGrid":"PhotoEditor-module_shapeGrid__TawIy","frameGrid":"PhotoEditor-module_frameGrid__R09dd","sliderRow":"PhotoEditor-module_sliderRow__jsWDQ","sliderLabel":"PhotoEditor-module_sliderLabel__zOZ49","sliderValue":"PhotoEditor-module_sliderValue__qFuTw","sliderValueSm":"PhotoEditor-module_sliderValueSm__U7FrJ","adjustColumn":"PhotoEditor-module_adjustColumn__y---T","adjustHeader":"PhotoEditor-module_adjustHeader__6s9zV","adjustValue":"PhotoEditor-module_adjustValue__aUUmg","intensitySection":"PhotoEditor-module_intensitySection__dhe5h","intensityHeader":"PhotoEditor-module_intensityHeader__-KKu6","colorInput":"PhotoEditor-module_colorInput__xkF1h","colorInputLg":"PhotoEditor-module_colorInputLg__W2KrK","colorInputDraw":"PhotoEditor-module_colorInputDraw__KYcdG","overlayToolbar":"PhotoEditor-module_overlayToolbar__hfspp","overlayToolbarLabel":"PhotoEditor-module_overlayToolbarLabel__mc4pU","overlayToolbarBtn":"PhotoEditor-module_overlayToolbarBtn__AdTmZ","overlaySection":"PhotoEditor-module_overlaySection__IIl4r","overlaySectionTitle":"PhotoEditor-module_overlaySectionTitle__FRx3e","overlayItem":"PhotoEditor-module_overlayItem__DGUCN","overlayIcon":"PhotoEditor-module_overlayIcon__G0pFk","overlayName":"PhotoEditor-module_overlayName__JVh64","overlayDeleteBtn":"PhotoEditor-module_overlayDeleteBtn__Ontxv","emojiBtn":"PhotoEditor-module_emojiBtn__jxG9m","shapeBtn":"PhotoEditor-module_shapeBtn__xZdSV","frameBtn":"PhotoEditor-module_frameBtn__coMkZ","removeFrameBtn":"PhotoEditor-module_removeFrameBtn__oCuua","textFormatBtn":"PhotoEditor-module_textFormatBtn__7Z9RJ","textFormatBtnSm":"PhotoEditor-module_textFormatBtnSm__3ptcG","drawActionBtn":"PhotoEditor-module_drawActionBtn__teYz4","textArea":"PhotoEditor-module_textArea__sBGlB","textAreaSm":"PhotoEditor-module_textAreaSm__6xZnY PhotoEditor-module_textArea__sBGlB","textBtnRow":"PhotoEditor-module_textBtnRow__AcEnd","textGapRow":"PhotoEditor-module_textGapRow__Dq2uz","editSelectedSection":"PhotoEditor-module_editSelectedSection__bgNEh","editSelectedLabel":"PhotoEditor-module_editSelectedLabel__u2rmS","shapeColorRow":"PhotoEditor-module_shapeColorRow__ip5--","shapeColorLabel":"PhotoEditor-module_shapeColorLabel__nVcbU","shapeColorLabelMl":"PhotoEditor-module_shapeColorLabelMl__KiM2d PhotoEditor-module_shapeColorLabel__nVcbU","shapeFillToggle":"PhotoEditor-module_shapeFillToggle__BXJ8C","frameColorRow":"PhotoEditor-module_frameColorRow__KRAHz","frameThicknessWrap":"PhotoEditor-module_frameThicknessWrap__lXCoC","frameThicknessValue":"PhotoEditor-module_frameThicknessValue__SAEuc","drawPreview":"PhotoEditor-module_drawPreview__WPbiv","drawActionRow":"PhotoEditor-module_drawActionRow__CUSWS","quickColorRow":"PhotoEditor-module_quickColorRow__DTy5E","quickColorSwatch":"PhotoEditor-module_quickColorSwatch__ZjgoA","transformRow":"PhotoEditor-module_transformRow__LKRjS","transformZoomRow":"PhotoEditor-module_transformZoomRow__h2NlB","transformZoomValue":"PhotoEditor-module_transformZoomValue__LXa51","transformInfo":"PhotoEditor-module_transformInfo__zXP9l","canvasViewport":"PhotoEditor-module_canvasViewport__OMBIL","zoomWrap":"PhotoEditor-module_zoomWrap__JjfiJ","compareWrap":"PhotoEditor-module_compareWrap__-J5ku","canvasOriginal":"PhotoEditor-module_canvasOriginal__Apf91","canvasEdited":"PhotoEditor-module_canvasEdited__Eroz7","compareClip":"PhotoEditor-module_compareClip__5qG2I","compareSlider":"PhotoEditor-module_compareSlider__OIIIK","compareSliderKnob":"PhotoEditor-module_compareSliderKnob__VohI9","compareSliderIcon":"PhotoEditor-module_compareSliderIcon__pXcct","compareLabelOriginal":"PhotoEditor-module_compareLabelOriginal__GaBoj","compareLabelEdited":"PhotoEditor-module_compareLabelEdited__Fr836","regularWrap":"PhotoEditor-module_regularWrap__8umPV","canvasRegular":"PhotoEditor-module_canvasRegular__wxapL","cropOverlay":"PhotoEditor-module_cropOverlay__MJk1Y","cropDarkBg":"PhotoEditor-module_cropDarkBg__m3axV","cropGridContainer":"PhotoEditor-module_cropGridContainer__NfHdT","cropSizeLabel":"PhotoEditor-module_cropSizeLabel__fV2mF","cropInfo":"PhotoEditor-module_cropInfo__Z1SCE","cropAspectLabel":"PhotoEditor-module_cropAspectLabel__dieL-","cropAspectRow":"PhotoEditor-module_cropAspectRow__scRj3","accentBtn":"PhotoEditor-module_accentBtn__tgaEx"};
|
|
2
|
+
|
|
3
|
+
export { cs as default };
|
|
4
|
+
//# sourceMappingURL=PhotoEditor.module.css.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PhotoEditor.module.css.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { jsx, jsxs } from 'react/jsx-runtime';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import cs from './PhotoEditor.module.css.js';
|
|
4
|
+
|
|
5
|
+
// ── Crop Overlay (rule-of-thirds + 8 handles + size indicator) ──
|
|
6
|
+
const CropOverlay = ({ api }) => {
|
|
7
|
+
const { cropMode, cropRect, mainCanvasRef, accent, handleCropMouseDown } = api;
|
|
8
|
+
if (!cropMode || !cropRect || !mainCanvasRef.current)
|
|
9
|
+
return null;
|
|
10
|
+
const canvasEl = mainCanvasRef.current;
|
|
11
|
+
const cw = canvasEl.width;
|
|
12
|
+
const ch = canvasEl.height;
|
|
13
|
+
const left = (cropRect.x / cw) * 100;
|
|
14
|
+
const top = (cropRect.y / ch) * 100;
|
|
15
|
+
const width = (cropRect.w / cw) * 100;
|
|
16
|
+
const height = (cropRect.h / ch) * 100;
|
|
17
|
+
const handleStyle = (cursor) => ({
|
|
18
|
+
position: "absolute", width: 14, height: 14,
|
|
19
|
+
background: accent, border: "2px solid #fff",
|
|
20
|
+
borderRadius: 3, cursor, zIndex: 3,
|
|
21
|
+
});
|
|
22
|
+
return (jsxs("div", { className: cs.cropOverlay, children: [jsx("div", { className: cs.cropDarkBg }), jsxs("div", { style: {
|
|
23
|
+
position: "absolute",
|
|
24
|
+
left: `${left}%`, top: `${top}%`,
|
|
25
|
+
width: `${width}%`, height: `${height}%`,
|
|
26
|
+
background: "transparent",
|
|
27
|
+
boxShadow: "0 0 0 9999px rgba(0,0,0,0.55)",
|
|
28
|
+
border: `2px solid ${accent}`,
|
|
29
|
+
pointerEvents: "auto",
|
|
30
|
+
cursor: "move",
|
|
31
|
+
}, onMouseDown: (e) => handleCropMouseDown(e, "move"), children: [jsxs("div", { className: cs.cropGridContainer, children: [[1, 2].map(i => (jsx("div", { style: {
|
|
32
|
+
position: "absolute", left: 0, right: 0,
|
|
33
|
+
top: `${(i / 3) * 100}%`, height: 1,
|
|
34
|
+
background: "rgba(255,255,255,0.3)",
|
|
35
|
+
} }, `h${i}`))), [1, 2].map(i => (jsx("div", { style: {
|
|
36
|
+
position: "absolute", top: 0, bottom: 0,
|
|
37
|
+
left: `${(i / 3) * 100}%`, width: 1,
|
|
38
|
+
background: "rgba(255,255,255,0.3)",
|
|
39
|
+
} }, `v${i}`)))] }), jsx("div", { style: { ...handleStyle("nw-resize"), top: -7, left: -7 }, onMouseDown: e => handleCropMouseDown(e, "nw") }), jsx("div", { style: { ...handleStyle("ne-resize"), top: -7, right: -7 }, onMouseDown: e => handleCropMouseDown(e, "ne") }), jsx("div", { style: { ...handleStyle("sw-resize"), bottom: -7, left: -7 }, onMouseDown: e => handleCropMouseDown(e, "sw") }), jsx("div", { style: { ...handleStyle("se-resize"), bottom: -7, right: -7 }, onMouseDown: e => handleCropMouseDown(e, "se") }), jsx("div", { style: { ...handleStyle("n-resize"), top: -7, left: "50%", transform: "translateX(-50%)" }, onMouseDown: e => handleCropMouseDown(e, "n") }), jsx("div", { style: { ...handleStyle("s-resize"), bottom: -7, left: "50%", transform: "translateX(-50%)" }, onMouseDown: e => handleCropMouseDown(e, "s") }), jsx("div", { style: { ...handleStyle("w-resize"), top: "50%", left: -7, transform: "translateY(-50%)" }, onMouseDown: e => handleCropMouseDown(e, "w") }), jsx("div", { style: { ...handleStyle("e-resize"), top: "50%", right: -7, transform: "translateY(-50%)" }, onMouseDown: e => handleCropMouseDown(e, "e") }), jsxs("div", { className: cs.cropSizeLabel, children: [Math.round(cropRect.w), " \u00D7 ", Math.round(cropRect.h)] })] })] }));
|
|
40
|
+
};
|
|
41
|
+
// ── Canvas Viewport ──
|
|
42
|
+
const PhotoEditorCanvas = React.memo(({ api }) => {
|
|
43
|
+
const { containerRef, activeTab, zoom, accent, showCompare, comparePosition, setCompareDragging, mainCanvasRef, compareCanvasRef, handleCanvasMouseDown, handleCanvasMouseMove, handleCanvasMouseUp, } = api;
|
|
44
|
+
return (jsx("div", { ref: containerRef, className: cs.canvasViewport, style: { cursor: activeTab === "draw" ? "crosshair" : undefined }, onMouseDown: handleCanvasMouseDown, onMouseMove: handleCanvasMouseMove, onMouseUp: handleCanvasMouseUp, onMouseLeave: handleCanvasMouseUp, children: jsx("div", { className: cs.zoomWrap, style: { transform: `scale(${zoom})` }, children: showCompare ? (
|
|
45
|
+
// ── Before / After comparison ──
|
|
46
|
+
jsxs("div", { className: cs.compareWrap, onMouseDown: () => setCompareDragging(true), children: [jsx("canvas", { ref: compareCanvasRef, className: cs.canvasOriginal, role: "img", "aria-label": "Photo editor original preview canvas" }), jsx("div", { className: cs.compareClip, style: { width: `${comparePosition}%` }, children: jsx("canvas", { ref: mainCanvasRef, className: cs.canvasEdited, role: "img", "aria-label": "Photo editor edited preview canvas" }) }), jsx("div", { className: cs.compareSlider, style: {
|
|
47
|
+
left: `${comparePosition}%`,
|
|
48
|
+
background: accent,
|
|
49
|
+
boxShadow: `0 0 8px ${accent}`,
|
|
50
|
+
}, children: jsx("div", { className: cs.compareSliderKnob, style: { background: accent }, children: jsx("i", { className: `fa fa-arrows-h ${cs.compareSliderIcon}` }) }) }), jsx("div", { className: cs.compareLabelOriginal, children: "Original" }), jsx("div", { className: cs.compareLabelEdited, style: { background: `${accent}cc` }, children: "Edited" })] })) : (
|
|
51
|
+
// ── Regular canvas view ──
|
|
52
|
+
jsxs("div", { className: cs.regularWrap, children: [jsx("canvas", { ref: mainCanvasRef, className: cs.canvasRegular, role: "img", "aria-label": "Photo editor canvas" }), jsx(CropOverlay, { api: api })] })) }) }));
|
|
53
|
+
});
|
|
54
|
+
PhotoEditorCanvas.displayName = "PhotoEditorCanvas";
|
|
55
|
+
|
|
56
|
+
export { PhotoEditorCanvas as default };
|
|
57
|
+
//# sourceMappingURL=PhotoEditorCanvas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PhotoEditorCanvas.js","sources":["../../../src/photo/PhotoEditorCanvas.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":"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"}
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { RangeInput, Button, TextArea } from '../core/LocalUI.js';
|
|
4
|
+
import { DEFAULT_ADJUSTMENTS } from './photoFilters.js';
|
|
5
|
+
import { EMOJI_CATALOG, SHAPE_CATALOG, FRAME_CATALOG } from './photoOverlays.js';
|
|
6
|
+
import { TAB_DEFS, ADJUSTMENT_SLIDERS, ASPECT_RATIOS } from './photoEditorTypes.js';
|
|
7
|
+
import FilterThumb from './FilterThumb.js';
|
|
8
|
+
import cs from './PhotoEditor.module.css.js';
|
|
9
|
+
|
|
10
|
+
// ── Overlay Toolbar (extracted from the original inline function) ──
|
|
11
|
+
const OverlayToolbar = ({ api }) => {
|
|
12
|
+
var _a, _b, _c, _d, _e;
|
|
13
|
+
const { selectedOverlay, accent, t, updateOverlay, pushHistory, moveOverlayBack, moveOverlayForward, deleteOverlay } = api;
|
|
14
|
+
if (!selectedOverlay)
|
|
15
|
+
return null;
|
|
16
|
+
return (jsxs("div", { className: cs.overlayToolbar, children: [jsxs("span", { className: cs.overlayToolbarLabel, children: [jsx("i", { className: "fa fa-object-group me-1" }), "Warstwa"] }), jsx(RangeInput, { min: 0, max: 100, value: ((_a = selectedOverlay.opacity) !== null && _a !== void 0 ? _a : 1) * 100, onChange: e => updateOverlay(selectedOverlay.id, { opacity: Number(e.target.value) / 100 }), onMouseUp: pushHistory, accentColor: accent, style: { maxWidth: 70 }, title: t("photoEditor.opacity", "Opacity") }), jsxs("span", { className: cs.sliderValueSm, style: { color: accent }, children: [Math.round(((_b = selectedOverlay.opacity) !== null && _b !== void 0 ? _b : 1) * 100), "%"] }), selectedOverlay.type !== "drawing" && selectedOverlay.type !== "frame" && (jsxs(Fragment, { children: [jsx(RangeInput, { min: 20, max: 500, value: ((_c = selectedOverlay.scaleX) !== null && _c !== void 0 ? _c : 1) * 100, onChange: e => {
|
|
17
|
+
const s = Number(e.target.value) / 100;
|
|
18
|
+
updateOverlay(selectedOverlay.id, { scaleX: s, scaleY: s });
|
|
19
|
+
}, onMouseUp: pushHistory, accentColor: accent, style: { maxWidth: 60 }, title: "Skala" }), jsxs("span", { className: cs.sliderValueSm, style: { color: "#aaa" }, children: [Math.round(((_d = selectedOverlay.scaleX) !== null && _d !== void 0 ? _d : 1) * 100), "%"] })] })), selectedOverlay.type !== "drawing" && selectedOverlay.type !== "frame" && (jsx(RangeInput, { min: -180, max: 180, value: (_e = selectedOverlay.rotation) !== null && _e !== void 0 ? _e : 0, onChange: e => updateOverlay(selectedOverlay.id, { rotation: Number(e.target.value) }), onMouseUp: pushHistory, accentColor: accent, style: { maxWidth: 60 }, title: t("photoEditor.rotation", "Rotation") })), jsx(Button, { variant: "dark", size: "sm", onClick: () => moveOverlayBack(selectedOverlay.id), title: t("photoEditor.moveBack", "Move back"), className: cs.overlayToolbarBtn, children: jsx("i", { className: "fa fa-arrow-down" }) }), jsx(Button, { variant: "dark", size: "sm", onClick: () => moveOverlayForward(selectedOverlay.id), title: t("photoEditor.moveForward", "Move forward"), className: cs.overlayToolbarBtn, children: jsx("i", { className: "fa fa-arrow-up" }) }), jsx(Button, { variant: "outline-danger", size: "sm", onClick: () => deleteOverlay(selectedOverlay.id), className: cs.overlayToolbarBtn, children: jsx("i", { className: "fa fa-trash" }) })] }));
|
|
20
|
+
};
|
|
21
|
+
// ── Left Panel ──
|
|
22
|
+
const PhotoEditorLeftPanel = React.memo(({ api }) => {
|
|
23
|
+
var _a;
|
|
24
|
+
const { t, accent, accentDim, activeTab, setActiveTab, setCropMode,
|
|
25
|
+
// Filters
|
|
26
|
+
selectedFilter, setSelectedFilter, filterIntensity, setFilterIntensity, filterCategory, setFilterCategory, filteredList, generateThumbnail, pushHistory,
|
|
27
|
+
// Adjustments
|
|
28
|
+
adjustments, handleAdjChange, handleAdjChangeEnd,
|
|
29
|
+
// Crop
|
|
30
|
+
image, cropRect, setCropRect, cropAspect, setCropAspect,
|
|
31
|
+
// Transform
|
|
32
|
+
rotation, setRotation, flipH, setFlipH, flipV, setFlipV, zoom, setZoom,
|
|
33
|
+
// Overlays
|
|
34
|
+
overlays, setOverlays, selectedOverlayId, setSelectedOverlayId, addOverlay, deleteOverlay, mainCanvasRef,
|
|
35
|
+
// Stickers / Emoji
|
|
36
|
+
emojiCat, setEmojiCat,
|
|
37
|
+
// Text
|
|
38
|
+
textDraft, setTextDraft, textColor, setTextColor, textBold, setTextBold, textItalic, setTextItalic, textOutline, setTextOutline, textFontSize, setTextFontSize, textBg, setTextBg, selectedOverlay, updateOverlay,
|
|
39
|
+
// Shapes
|
|
40
|
+
shapeStroke, setShapeStroke, shapeFill, setShapeFill, shapeStrokeW, setShapeStrokeW,
|
|
41
|
+
// Frame
|
|
42
|
+
frameColor, setFrameColor, frameThick, setFrameThick,
|
|
43
|
+
// Drawing
|
|
44
|
+
drawColor, setDrawColor, drawWidth, setDrawWidth, drawingOverlayRef,
|
|
45
|
+
// Creators
|
|
46
|
+
createEmojiOverlay, createTextOverlay, createShapeOverlay, createFrameOverlay, } = api;
|
|
47
|
+
return (jsxs("div", { className: cs.leftPanel, children: [jsx("div", { className: cs.tabBar, children: TAB_DEFS.map(tab => (jsxs("button", { onClick: () => {
|
|
48
|
+
setActiveTab(tab.key);
|
|
49
|
+
if (tab.key === "crop")
|
|
50
|
+
setCropMode(true);
|
|
51
|
+
else
|
|
52
|
+
setCropMode(false);
|
|
53
|
+
}, title: tab.label, className: activeTab === tab.key ? cs.tabButtonActive : cs.tabButton, style: {
|
|
54
|
+
color: activeTab === tab.key ? accent : undefined,
|
|
55
|
+
borderBottomColor: activeTab === tab.key ? accent : undefined,
|
|
56
|
+
}, children: [jsx("i", { className: `fa ${tab.icon}`, style: { fontSize: 14 } }), tab.label] }, tab.key))) }), jsxs("div", { className: cs.panelContent, children: [activeTab === "filters" && (jsxs(Fragment, { children: [jsx("div", { className: cs.pillRow, children: [
|
|
57
|
+
{ key: "all", label: "All" },
|
|
58
|
+
{ key: "color", label: "Color" },
|
|
59
|
+
{ key: "light", label: "Light" },
|
|
60
|
+
{ key: "vintage", label: "Vintage" },
|
|
61
|
+
{ key: "artistic", label: "Artistic" },
|
|
62
|
+
{ key: "fun", label: "Fun" },
|
|
63
|
+
].map(cat => (jsx("button", { onClick: () => setFilterCategory(cat.key), className: filterCategory === cat.key ? cs.pillActive : cs.pill, style: {
|
|
64
|
+
borderColor: filterCategory === cat.key ? accent : undefined,
|
|
65
|
+
background: filterCategory === cat.key ? accentDim : undefined,
|
|
66
|
+
}, children: cat.label }, cat.key))) }), jsx("div", { className: cs.filterGrid, children: filteredList.map(filter => (jsx(FilterThumb, { filter: filter, selected: selectedFilter === filter.id, accent: accent, onSelect: () => {
|
|
67
|
+
setSelectedFilter(filter.id);
|
|
68
|
+
pushHistory();
|
|
69
|
+
}, generateThumbnail: generateThumbnail }, filter.id))) }), selectedFilter !== "none" && (jsxs("div", { className: cs.intensitySection, children: [jsxs("div", { className: cs.intensityHeader, children: [jsxs("span", { className: cs.sliderLabel, children: [jsx("i", { className: "fa fa-tachometer me-1" }), "Intensity"] }), jsxs("span", { className: cs.sliderValue, style: { color: accent }, children: [Math.round(filterIntensity * 100), "%"] })] }), jsx(RangeInput, { min: 0, max: 100, value: filterIntensity * 100, onChange: e => setFilterIntensity(Number(e.target.value) / 100), onMouseUp: () => pushHistory(), accentColor: accent })] }))] })), activeTab === "adjust" && (jsxs("div", { className: cs.adjustColumn, children: [ADJUSTMENT_SLIDERS.map(sl => (jsxs("div", { children: [jsxs("div", { className: cs.adjustHeader, children: [jsxs("span", { className: cs.sliderLabel, children: [jsx("i", { className: `fa ${sl.icon} me-1`, style: { width: 14, textAlign: "center" } }), sl.label] }), jsx("span", { className: cs.adjustValue, style: { color: adjustments[sl.key] !== 0 ? accent : "#666" }, onClick: () => handleAdjChange(sl.key, sl.key === "blur" ? 0 : 0), title: "Reset", children: adjustments[sl.key] })] }), jsx(RangeInput, { min: sl.min, max: sl.max, value: adjustments[sl.key], onChange: e => handleAdjChange(sl.key, Number(e.target.value)), onMouseUp: handleAdjChangeEnd, accentColor: accent })] }, sl.key))), jsxs(Button, { variant: "outline-secondary", size: "sm", className: "mt-2", onClick: () => {
|
|
70
|
+
handleAdjChange("brightness", 0);
|
|
71
|
+
const defaults = { ...DEFAULT_ADJUSTMENTS };
|
|
72
|
+
for (const key of Object.keys(defaults)) {
|
|
73
|
+
handleAdjChange(key, defaults[key]);
|
|
74
|
+
}
|
|
75
|
+
pushHistory();
|
|
76
|
+
}, children: [jsx("i", { className: "fa fa-refresh me-1" }), "Resetuj korekty"] })] })), activeTab === "crop" && (jsxs("div", { children: [jsxs("div", { className: cs.cropInfo, children: [jsx("i", { className: "fa fa-info-circle me-1" }), "Drag corners or edges to crop the photo."] }), jsx("div", { className: cs.cropAspectLabel, children: "Aspect ratio" }), jsx("div", { className: cs.cropAspectRow, children: ASPECT_RATIOS.map(ar => (jsx("button", { onClick: () => {
|
|
77
|
+
setCropAspect(ar.value);
|
|
78
|
+
if (ar.value && cropRect && image) {
|
|
79
|
+
let newW = cropRect.w;
|
|
80
|
+
let newH = cropRect.w / ar.value;
|
|
81
|
+
if (newH > image.naturalHeight) {
|
|
82
|
+
newH = image.naturalHeight;
|
|
83
|
+
newW = newH * ar.value;
|
|
84
|
+
}
|
|
85
|
+
setCropRect({
|
|
86
|
+
x: Math.max(0, cropRect.x),
|
|
87
|
+
y: Math.max(0, cropRect.y),
|
|
88
|
+
w: Math.min(newW, image.naturalWidth),
|
|
89
|
+
h: Math.min(newH, image.naturalHeight),
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
}, className: cropAspect === ar.value ? cs.pillCropActive : cs.pillCrop, style: {
|
|
93
|
+
borderColor: cropAspect === ar.value ? accent : undefined,
|
|
94
|
+
background: cropAspect === ar.value ? accentDim : undefined,
|
|
95
|
+
}, children: ar.label }, ar.label))) }), jsxs(Button, { variant: "outline-secondary", size: "sm", className: "mt-3", onClick: () => {
|
|
96
|
+
if (image) {
|
|
97
|
+
setCropRect({ x: 0, y: 0, w: image.naturalWidth, h: image.naturalHeight });
|
|
98
|
+
setCropAspect(null);
|
|
99
|
+
pushHistory();
|
|
100
|
+
}
|
|
101
|
+
}, children: [jsx("i", { className: "fa fa-expand me-1" }), "Resetuj kadrowanie"] })] })), activeTab === "transform" && (jsxs("div", { children: [jsx("div", { className: cs.sectionTitleMb8, children: "Rotation" }), jsxs("div", { className: cs.transformRow, children: [jsxs(Button, { variant: "dark", size: "sm", onClick: () => { setRotation((rotation - 90 + 360) % 360); pushHistory(); }, children: [jsx("i", { className: "fa fa-rotate-left me-1" }), " -90\u00B0"] }), jsxs(Button, { variant: "dark", size: "sm", onClick: () => { setRotation((rotation + 90) % 360); pushHistory(); }, children: [jsx("i", { className: "fa fa-rotate-right me-1" }), " +90\u00B0"] }), jsx(Button, { variant: "dark", size: "sm", onClick: () => { setRotation(0); pushHistory(); }, children: "0\u00B0" })] }), jsx("div", { className: cs.sectionTitleMb8, children: "Flip" }), jsxs("div", { className: cs.transformRow, children: [jsxs(Button, { variant: flipH ? "outline-info" : "dark", size: "sm", onClick: () => { setFlipH(!flipH); pushHistory(); }, children: [jsx("i", { className: "fa fa-arrows-h me-1" }), " Horizontal"] }), jsxs(Button, { variant: flipV ? "outline-info" : "dark", size: "sm", onClick: () => { setFlipV(!flipV); pushHistory(); }, children: [jsx("i", { className: "fa fa-arrows-v me-1" }), " Vertical"] })] }), jsx("div", { className: cs.sectionTitleMb8, children: "Preview zoom" }), jsxs("div", { className: cs.transformZoomRow, children: [jsx(RangeInput, { min: 50, max: 300, value: zoom * 100, onChange: e => setZoom(Number(e.target.value) / 100), accentColor: accent }), jsxs("span", { className: cs.transformZoomValue, style: { color: accent }, children: [Math.round(zoom * 100), "%"] })] }), jsxs("div", { className: cs.transformInfo, children: [jsxs("div", { children: [jsx("strong", { children: "Rotation:" }), " ", rotation, "\u00B0"] }), jsxs("div", { children: [jsx("strong", { children: "Flip H:" }), " ", flipH ? "Yes" : "No"] }), jsxs("div", { children: [jsx("strong", { children: "Flip V:" }), " ", flipV ? "Yes" : "No"] }), cropRect && (jsxs("div", { children: [jsx("strong", { children: "Crop:" }), " ", Math.round(cropRect.w), " \u00D7 ", Math.round(cropRect.h), " (", "x:", Math.round(cropRect.x), ", y:", Math.round(cropRect.y), ")"] }))] })] })), activeTab === "stickers" && (jsxs("div", { children: [jsx(OverlayToolbar, { api: api }), jsxs("div", { className: cs.sectionTitle, children: [jsx("i", { className: "fa fa-smile-o me-1" }), " Stickers / Emoji"] }), jsx("div", { className: cs.pillRowGap3, children: EMOJI_CATALOG.map(cat => (jsxs("button", { onClick: () => setEmojiCat(cat.id), className: emojiCat === cat.id ? cs.pillEmojiActive : cs.pillEmoji, style: {
|
|
102
|
+
borderColor: emojiCat === cat.id ? accent : undefined,
|
|
103
|
+
background: emojiCat === cat.id ? accentDim : undefined,
|
|
104
|
+
}, children: [cat.icon, " ", cat.label] }, cat.id))) }), jsx("div", { className: cs.emojiGrid, children: (_a = EMOJI_CATALOG.find(c => c.id === emojiCat)) === null || _a === void 0 ? void 0 : _a.emojis.map((em, idx) => (jsx("button", { onClick: () => {
|
|
105
|
+
var _a, _b, _c, _d;
|
|
106
|
+
const cw = (_b = (_a = mainCanvasRef.current) === null || _a === void 0 ? void 0 : _a.width) !== null && _b !== void 0 ? _b : 400;
|
|
107
|
+
const ch = (_d = (_c = mainCanvasRef.current) === null || _c === void 0 ? void 0 : _c.height) !== null && _d !== void 0 ? _d : 400;
|
|
108
|
+
addOverlay(createEmojiOverlay(em, cw, ch));
|
|
109
|
+
}, className: cs.emojiBtn, title: em, children: em }, idx))) }), overlays.length > 0 && (jsxs("div", { className: cs.overlaySection, children: [jsxs("div", { className: cs.overlaySectionTitle, children: ["Warstwy (", overlays.length, ")"] }), overlays.map(ov => (jsxs("div", { onClick: () => setSelectedOverlayId(ov.id), className: cs.overlayItem, style: { background: selectedOverlayId === ov.id ? accentDim : undefined }, children: [jsx("span", { className: cs.overlayIcon, children: ov.type === "emoji" ? ov.emoji
|
|
110
|
+
: ov.type === "text" ? "T"
|
|
111
|
+
: ov.type === "shape" ? "◆"
|
|
112
|
+
: ov.type === "drawing" ? "✏"
|
|
113
|
+
: "▢" }), jsx("span", { className: cs.overlayName, children: ov.type === "text" ? ov.text.slice(0, 20)
|
|
114
|
+
: ov.type === "emoji" ? "Emoji"
|
|
115
|
+
: ov.type === "shape" ? ov.shapeKind
|
|
116
|
+
: ov.type === "drawing" ? `Rysunek (${ov.strokes.length})`
|
|
117
|
+
: ov.type === "frame" ? ov.frameStyle
|
|
118
|
+
: "" }), jsx("button", { onClick: e => { e.stopPropagation(); deleteOverlay(ov.id); }, className: cs.overlayDeleteBtn, children: "\u2715" })] }, ov.id)))] }))] })), activeTab === "text" && (jsxs("div", { children: [jsx(OverlayToolbar, { api: api }), jsxs("div", { className: cs.sectionTitleMb8, children: [jsx("i", { className: "fa fa-font me-1" }), " ", t("photoEditor.addCaption", "Add caption")] }), jsx(TextArea, { rows: 2, value: textDraft, onChange: e => setTextDraft(e.target.value), placeholder: "Wpisz tekst...", className: cs.textArea }), jsxs("div", { className: cs.textBtnRow, children: [jsx(Button, { variant: textBold ? "light" : "dark", size: "sm", onClick: () => setTextBold(!textBold), title: "Bold", className: cs.textFormatBtn, style: { fontWeight: 700 }, children: "B" }), jsx(Button, { variant: textItalic ? "light" : "dark", size: "sm", onClick: () => setTextItalic(!textItalic), title: "Italic", className: cs.textFormatBtn, style: { fontStyle: "italic" }, children: "I" }), jsx(Button, { variant: textOutline ? "light" : "dark", size: "sm", onClick: () => setTextOutline(!textOutline), title: "Kontur", className: cs.textFormatBtn, children: "O" }), jsx(Button, { variant: textBg ? "light" : "dark", size: "sm", onClick: () => setTextBg(!textBg), title: t("photoEditor.background", "Background"), className: cs.textFormatBtn, children: jsx("i", { className: "fa fa-square" }) }), jsx("input", { type: "color", value: textColor, onChange: e => setTextColor(e.target.value), className: cs.colorInputLg, title: "Kolor tekstu" })] }), jsxs("div", { className: cs.sliderRow, children: [jsx("span", { className: cs.sliderLabel, children: "Rozmiar:" }), jsx(RangeInput, { min: 12, max: 120, value: textFontSize, onChange: e => setTextFontSize(Number(e.target.value)), accentColor: accent, style: { flex: 1 } }), jsxs("span", { className: cs.sliderValue, style: { color: accent }, children: [textFontSize, "px"] })] }), jsxs(Button, { size: "sm", className: cs.accentBtn, style: { background: accent, borderColor: accent }, disabled: !textDraft.trim(), onClick: () => {
|
|
119
|
+
const ov = createTextOverlay(textDraft);
|
|
120
|
+
ov.color = textColor;
|
|
121
|
+
ov.bold = textBold;
|
|
122
|
+
ov.italic = textItalic;
|
|
123
|
+
ov.fontSize = textFontSize;
|
|
124
|
+
ov.outlineColor = textOutline ? "#000000" : null;
|
|
125
|
+
ov.outlineWidth = textOutline ? 2 : 0;
|
|
126
|
+
ov.background = textBg ? "rgba(0,0,0,0.5)" : null;
|
|
127
|
+
addOverlay(ov);
|
|
128
|
+
}, children: [jsx("i", { className: "fa fa-plus me-1" }), " ", t("photoEditor.addText", "Add text")] }), (selectedOverlay === null || selectedOverlay === void 0 ? void 0 : selectedOverlay.type) === "text" && (jsxs("div", { className: cs.editSelectedSection, children: [jsx("div", { className: cs.editSelectedLabel, children: t("photoEditor.editSelectedText", "Edit selected text:") }), jsx(TextArea, { rows: 2, value: selectedOverlay.text, onChange: e => updateOverlay(selectedOverlay.id, { text: e.target.value }), onBlur: pushHistory, className: cs.textAreaSm }), jsxs("div", { className: cs.textGapRow, children: [jsx("input", { type: "color", value: selectedOverlay.color, onChange: e => { updateOverlay(selectedOverlay.id, { color: e.target.value }); }, onBlur: pushHistory, className: cs.colorInput, "aria-label": t("photoEditor.textColor", "Text overlay color") }), jsx(Button, { variant: selectedOverlay.bold ? "light" : "dark", size: "sm", onClick: () => { updateOverlay(selectedOverlay.id, { bold: !selectedOverlay.bold }); pushHistory(); }, className: cs.textFormatBtnSm, style: { fontWeight: 700 }, children: "B" }), jsx(Button, { variant: selectedOverlay.italic ? "light" : "dark", size: "sm", onClick: () => { updateOverlay(selectedOverlay.id, { italic: !selectedOverlay.italic }); pushHistory(); }, className: cs.textFormatBtnSm, style: { fontStyle: "italic" }, children: "I" })] })] }))] })), activeTab === "shapes" && (jsxs("div", { children: [jsx(OverlayToolbar, { api: api }), jsxs("div", { className: cs.sectionTitle, children: [jsx("i", { className: "fa fa-star me-1" }), " Shapes"] }), jsxs("div", { className: cs.shapeColorRow, children: [jsx("span", { className: cs.shapeColorLabel, children: "Stroke:" }), jsx("input", { type: "color", value: shapeStroke, onChange: e => setShapeStroke(e.target.value), className: cs.colorInput, title: "Stroke color" }), jsx("span", { className: cs.shapeColorLabelMl, children: "Fill:" }), jsx("input", { type: "color", value: shapeFill || "#ffffff", onChange: e => setShapeFill(e.target.value), className: cs.colorInput, title: t("photoEditor.fillColor", "Fill color") }), jsx(Button, { variant: shapeFill ? "light" : "dark", size: "sm", onClick: () => setShapeFill(shapeFill ? "" : "#ffffff"), className: cs.shapeFillToggle, children: shapeFill ? "Off" : "On" })] }), jsxs("div", { className: cs.sliderRow, children: [jsx("span", { className: cs.sliderLabel, children: "Width:" }), jsx(RangeInput, { min: 1, max: 20, value: shapeStrokeW, onChange: e => setShapeStrokeW(Number(e.target.value)), accentColor: accent, style: { flex: 1 } }), jsxs("span", { className: cs.sliderValue, style: { color: accent }, children: [shapeStrokeW, "px"] })] }), jsx("div", { className: cs.shapeGrid, children: SHAPE_CATALOG.map(sh => (jsx("button", { title: sh.label, onClick: () => {
|
|
129
|
+
const ov = createShapeOverlay(sh.id);
|
|
130
|
+
ov.strokeColor = shapeStroke;
|
|
131
|
+
ov.fillColor = shapeFill || null;
|
|
132
|
+
ov.strokeWidth = shapeStrokeW;
|
|
133
|
+
addOverlay(ov);
|
|
134
|
+
}, className: cs.shapeBtn, children: sh.icon }, sh.id))) }), jsxs("div", { className: cs.sectionTitle, children: [jsx("i", { className: "fa fa-picture-o me-1" }), " Ramki"] }), jsxs("div", { className: cs.frameColorRow, children: [jsx("input", { type: "color", value: frameColor, onChange: e => setFrameColor(e.target.value), className: cs.colorInput, "aria-label": t("photoEditor.frameColor", "Frame color") }), jsxs("div", { className: cs.frameThicknessWrap, children: [jsx("span", { className: cs.sliderLabel, children: "Grub.:" }), jsx(RangeInput, { min: 1, max: 10, value: frameThick, onChange: e => setFrameThick(Number(e.target.value)), accentColor: accent, style: { flex: 1 } }), jsx("span", { className: cs.frameThicknessValue, style: { color: accent }, children: frameThick })] })] }), jsxs("div", { className: cs.frameGrid, children: [FRAME_CATALOG.map(fr => (jsx("button", { title: fr.label, onClick: () => {
|
|
135
|
+
setOverlays((prev) => prev.filter(o => o.type !== "frame"));
|
|
136
|
+
const ov = createFrameOverlay(fr.id, frameColor);
|
|
137
|
+
ov.thickness = frameThick / 100;
|
|
138
|
+
addOverlay(ov);
|
|
139
|
+
}, className: cs.frameBtn, children: fr.icon }, fr.id))), jsx("button", { title: t("photoEditor.removeFrame", "Remove frame"), onClick: () => { setOverlays((prev) => prev.filter(o => o.type !== "frame")); pushHistory(); }, className: cs.removeFrameBtn, children: "\u2715" })] })] })), activeTab === "draw" && (jsxs("div", { children: [jsx(OverlayToolbar, { api: api }), jsxs("div", { className: cs.sectionTitleMb8, children: [jsx("i", { className: "fa fa-paint-brush me-1" }), " Freehand drawing"] }), jsxs("div", { className: cs.sectionInfoMb, children: [jsx("i", { className: "fa fa-info-circle me-1" }), "Draw directly on the photo by holding the left mouse button."] }), jsxs("div", { className: cs.quickColorRow, children: [jsx("span", { className: cs.sliderLabel, children: "Color:" }), jsx("input", { type: "color", value: drawColor, onChange: e => setDrawColor(e.target.value), className: cs.colorInputDraw, "aria-label": t("photoEditor.drawColor", "Drawing color") }), ["#ff0000", "#ff8800", "#ffff00", "#00cc00", "#0088ff", "#8800ff", "#ff00ff", "#ffffff", "#000000"].map(c => (jsx("div", { onClick: () => setDrawColor(c), className: cs.quickColorSwatch, style: {
|
|
140
|
+
background: c,
|
|
141
|
+
border: drawColor === c ? `2px solid ${accent}` : undefined,
|
|
142
|
+
} }, c)))] }), jsxs("div", { className: cs.sliderRow, style: { marginBottom: 12 }, children: [jsx("span", { className: cs.sliderLabel, children: "Width:" }), jsx(RangeInput, { min: 1, max: 30, value: drawWidth, onChange: e => setDrawWidth(Number(e.target.value)), accentColor: accent, style: { flex: 1 } }), jsxs("span", { className: cs.sliderValue, style: { color: accent }, children: [drawWidth, "px"] })] }), jsx("div", { className: cs.drawPreview, children: jsx("div", { style: {
|
|
143
|
+
width: Math.max(drawWidth, 4), height: Math.max(drawWidth, 4),
|
|
144
|
+
borderRadius: "50%", background: drawColor,
|
|
145
|
+
border: "1px solid #555",
|
|
146
|
+
} }) }), jsxs("div", { className: cs.drawActionRow, children: [jsxs(Button, { variant: "outline-warning", size: "sm", onClick: () => {
|
|
147
|
+
if (drawingOverlayRef.current) {
|
|
148
|
+
const id = drawingOverlayRef.current.id;
|
|
149
|
+
setOverlays((prev) => prev.map(o => {
|
|
150
|
+
if (o.id === id && o.type === "drawing") {
|
|
151
|
+
const d = o;
|
|
152
|
+
if (d.strokes.length <= 1)
|
|
153
|
+
return o;
|
|
154
|
+
return { ...d, strokes: d.strokes.slice(0, -1) };
|
|
155
|
+
}
|
|
156
|
+
return o;
|
|
157
|
+
}));
|
|
158
|
+
pushHistory();
|
|
159
|
+
}
|
|
160
|
+
}, className: cs.drawActionBtn, children: [jsx("i", { className: "fa fa-undo me-1" }), " Undo stroke"] }), jsxs(Button, { variant: "outline-danger", size: "sm", onClick: () => {
|
|
161
|
+
if (drawingOverlayRef.current) {
|
|
162
|
+
deleteOverlay(drawingOverlayRef.current.id);
|
|
163
|
+
drawingOverlayRef.current = null;
|
|
164
|
+
}
|
|
165
|
+
}, className: cs.drawActionBtn, children: [jsx("i", { className: "fa fa-trash me-1" }), " Clear"] })] }), jsxs(Button, { variant: "dark", size: "sm", className: "mt-2 w-100", onClick: () => {
|
|
166
|
+
drawingOverlayRef.current = null;
|
|
167
|
+
}, children: [jsx("i", { className: "fa fa-plus me-1" }), " New drawing layer"] })] }))] })] }));
|
|
168
|
+
});
|
|
169
|
+
PhotoEditorLeftPanel.displayName = "PhotoEditorLeftPanel";
|
|
170
|
+
|
|
171
|
+
export { PhotoEditorLeftPanel as default };
|
|
172
|
+
//# sourceMappingURL=PhotoEditorLeftPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PhotoEditorLeftPanel.js","sources":["../../../src/photo/PhotoEditorLeftPanel.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx","_Fragment"],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { jsxs, jsx } from 'react/jsx-runtime';
|
|
2
|
+
import React from 'react';
|
|
3
|
+
import { Button } from '../core/LocalUI.js';
|
|
4
|
+
import cs from './PhotoEditor.module.css.js';
|
|
5
|
+
|
|
6
|
+
const PhotoEditorToolbar = React.memo(({ api }) => {
|
|
7
|
+
const { t, accent, historyIdx, historyLength, undo, redo, handleReset, showCompare, setShowCompare, handleDownload, handleCopyToClipboard, handleShareNative, onCancel, handleSave, } = api;
|
|
8
|
+
return (jsxs("div", { className: cs.toolbar, children: [jsxs("div", { className: cs.toolbarGroup, children: [jsx(Button, { variant: "dark", size: "sm", onClick: undo, disabled: historyIdx <= 0, title: "Cofnij (Ctrl+Z)", children: jsx("i", { className: "fa fa-undo" }) }), jsx(Button, { variant: "dark", size: "sm", onClick: redo, disabled: historyIdx >= historyLength - 1, title: t("photoEditor.redo", "Redo (Ctrl+Y)"), children: jsx("i", { className: "fa fa-repeat" }) }), jsx(Button, { variant: "dark", size: "sm", onClick: handleReset, title: "Reset", children: jsx("i", { className: "fa fa-refresh" }) }), jsx("div", { className: cs.toolbarDivider }), jsx(Button, { variant: showCompare ? "outline-info" : "dark", size: "sm", onClick: () => setShowCompare(!showCompare), title: t("photoEditor.compareOriginal", "Compare with original"), children: jsx("i", { className: "fa fa-columns" }) }), jsx("div", { className: cs.toolbarDivider }), jsx(Button, { variant: "dark", size: "sm", onClick: handleDownload, title: "Download", children: jsx("i", { className: "fa fa-download" }) }), jsx(Button, { variant: "dark", size: "sm", onClick: handleCopyToClipboard, title: "Copy to clipboard", children: jsx("i", { className: "fa fa-clipboard" }) }), jsx(Button, { variant: "dark", size: "sm", onClick: handleShareNative, title: t("common.share", "Share"), children: jsx("i", { className: "fa fa-share-alt" }) })] }), jsxs("div", { className: cs.toolbarTitle, style: { color: accent }, children: [jsx("i", { className: "fa fa-magic me-2" }), t("photoEditor.title", "Photo Editor")] }), jsxs("div", { className: cs.toolbarGroup, children: [jsxs(Button, { variant: "outline-secondary", size: "sm", onClick: onCancel, children: [jsx("i", { className: "fa fa-times me-1" }), " ", t("common.cancel", "Cancel")] }), jsxs(Button, { size: "sm", style: { background: accent, borderColor: accent, color: "#fff", fontWeight: 600 }, onClick: handleSave, children: [jsx("i", { className: "fa fa-check me-1" }), " ", t("photoEditor.apply", "Apply")] })] })] }));
|
|
9
|
+
});
|
|
10
|
+
PhotoEditorToolbar.displayName = "PhotoEditorToolbar";
|
|
11
|
+
|
|
12
|
+
export { PhotoEditorToolbar as default };
|
|
13
|
+
//# sourceMappingURL=PhotoEditorToolbar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PhotoEditorToolbar.js","sources":["../../../src/photo/PhotoEditorToolbar.tsx"],"sourcesContent":[null],"names":["_jsxs","_jsx"],"mappings":";;;;;AAgBA,MAAM,kBAAkB,GAAoB,KAAK,CAAC,IAAI,CAAC,CAAC,EAAE,GAAG,EAAE,KAAI;AAC/D,IAAA,MAAM,EACF,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,aAAa,EACpC,IAAI,EAAE,IAAI,EAAE,WAAW,EACvB,WAAW,EAAE,cAAc,EAC3B,cAAc,EAAE,qBAAqB,EAAE,iBAAiB,EACxD,QAAQ,EAAE,UAAU,GACvB,GAAG,GAAG;AAEP,IAAA,QACIA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,EAAE,CAAC,OAAO,EAAA,QAAA,EAAA,CACtBA,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,EAAE,CAAC,YAAY,EAAA,QAAA,EAAA,CAC3BC,IAAC,MAAM,EAAA,EAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,IAAI,CAAC,EAAE,KAAK,EAAC,iBAAiB,EAAA,QAAA,EAC9FA,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,YAAY,EAAA,CAAG,EAAA,CACvB,EACTA,GAAA,CAAC,MAAM,IAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,IAAI,aAAa,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,kBAAkB,EAAE,eAAe,CAAC,EAAA,QAAA,EACpIA,WAAG,SAAS,EAAC,cAAc,EAAA,CAAG,EAAA,CACzB,EACTA,GAAA,CAAC,MAAM,IAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAE,WAAW,EAAE,KAAK,EAAC,OAAO,EAAA,QAAA,EAChEA,WAAG,SAAS,EAAC,eAAe,EAAA,CAAG,EAAA,CAC1B,EACTA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,EAAE,CAAC,cAAc,EAAA,CAAI,EACrCA,IAAC,MAAM,EAAA,EACH,OAAO,EAAE,WAAW,GAAG,cAAc,GAAG,MAAM,EAC9C,IAAI,EAAC,IAAI,EACT,OAAO,EAAE,MAAM,cAAc,CAAC,CAAC,WAAW,CAAC,EAC3C,KAAK,EAAE,CAAC,CAAC,6BAA6B,EAAE,uBAAuB,CAAC,YAEhEA,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,eAAe,EAAA,CAAG,GAC1B,EACTA,GAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,EAAE,CAAC,cAAc,EAAA,CAAI,EACrCA,GAAA,CAAC,MAAM,IAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAE,cAAc,EAAE,KAAK,EAAC,UAAU,EAAA,QAAA,EACtEA,WAAG,SAAS,EAAC,gBAAgB,EAAA,CAAG,EAAA,CAC3B,EACTA,GAAA,CAAC,MAAM,IAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAE,qBAAqB,EAAE,KAAK,EAAC,mBAAmB,EAAA,QAAA,EACtFA,WAAG,SAAS,EAAC,iBAAiB,EAAA,CAAG,EAAA,CAC5B,EACTA,GAAA,CAAC,MAAM,IAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAE,iBAAiB,EAAE,KAAK,EAAE,CAAC,CAAC,cAAc,EAAE,OAAO,CAAC,EAAA,QAAA,EAC1FA,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,iBAAiB,GAAG,EAAA,CAC5B,CAAA,EAAA,CACP,EAEND,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,EAAE,CAAC,YAAY,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,aACrDC,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,kBAAkB,EAAA,CAAG,EACjC,CAAC,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAA,EAAA,CACrC,EAEND,IAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,EAAE,CAAC,YAAY,EAAA,QAAA,EAAA,CAC3BA,IAAA,CAAC,MAAM,EAAA,EAAC,OAAO,EAAC,mBAAmB,EAAC,IAAI,EAAC,IAAI,EAAC,OAAO,EAAE,QAAQ,EAAA,QAAA,EAAA,CAC3DC,GAAA,CAAA,GAAA,EAAA,EAAG,SAAS,EAAC,kBAAkB,GAAG,EAAA,GAAA,EAAE,CAAC,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAA,EAAA,CAC3D,EACTD,IAAA,CAAC,MAAM,EAAA,EACH,IAAI,EAAC,IAAI,EACT,KAAK,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,EAAE,EAClF,OAAO,EAAE,UAAU,EAAA,QAAA,EAAA,CAEnBC,WAAG,SAAS,EAAC,kBAAkB,EAAA,CAAG,EAAA,GAAA,EAAE,CAAC,CAAC,mBAAmB,EAAE,OAAO,CAAC,IAC9D,CAAA,EAAA,CACP,CAAA,EAAA,CACJ;AAEd,CAAC;AAED,kBAAkB,CAAC,WAAW,GAAG,oBAAoB;;;;"}
|