@pixerate/editor 0.103.0 → 0.105.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.
Files changed (34) hide show
  1. package/THIRD_PARTY_NOTICES.md +2 -0
  2. package/dist/{chunk-NQLQ2JOI.js → chunk-4X5MIVCE.js} +1155 -295
  3. package/dist/chunk-4X5MIVCE.js.map +1 -0
  4. package/dist/{chunk-VSMM7B3P.cjs → chunk-ZID226ZG.cjs} +1169 -309
  5. package/dist/chunk-ZID226ZG.cjs.map +1 -0
  6. package/dist/{compositor-CTMU-B1t.d.cts → compositor-Bc3PNP3C.d.cts} +1 -1
  7. package/dist/{compositor-B1ZrKR89.d.ts → compositor-BsYYllvR.d.ts} +1 -1
  8. package/dist/{export-X9rY79p0.d.cts → export-_m3Es4ru.d.cts} +19 -4
  9. package/dist/{export-BLpMyCYg.d.ts → export-iMrop3Jm.d.ts} +19 -4
  10. package/dist/image-editor/index.cjs +523 -539
  11. package/dist/image-editor/index.cjs.map +1 -1
  12. package/dist/image-editor/index.d.cts +16 -8
  13. package/dist/image-editor/index.d.ts +16 -8
  14. package/dist/image-editor/index.js +37 -53
  15. package/dist/image-editor/index.js.map +1 -1
  16. package/dist/{mixer-DGcH6HLu.d.cts → mixer-C1M1Nua_.d.cts} +1 -1
  17. package/dist/{mixer-DG_9Yu2W.d.ts → mixer-Cu5a9Bzd.d.ts} +1 -1
  18. package/dist/paint/index.d.cts +2 -2
  19. package/dist/paint/index.d.ts +2 -2
  20. package/dist/paint-editor/index.cjs +1531 -128
  21. package/dist/paint-editor/index.cjs.map +1 -1
  22. package/dist/paint-editor/index.d.cts +461 -14
  23. package/dist/paint-editor/index.d.ts +461 -14
  24. package/dist/paint-editor/index.js +1479 -76
  25. package/dist/paint-editor/index.js.map +1 -1
  26. package/dist/raster/index.d.cts +4 -4
  27. package/dist/raster/index.d.ts +4 -4
  28. package/dist/{surface-AfHCH7BR.d.cts → surface-BBJN9wxg.d.cts} +1 -1
  29. package/dist/{surface-AfHCH7BR.d.ts → surface-BBJN9wxg.d.ts} +1 -1
  30. package/package.json +1 -1
  31. package/skills/pixerate-image-editor/SKILL.md +14 -5
  32. package/skills/pixerate-paint-editor/SKILL.md +49 -8
  33. package/dist/chunk-NQLQ2JOI.js.map +0 -1
  34. package/dist/chunk-VSMM7B3P.cjs.map +0 -1
@@ -1,15 +1,15 @@
1
- import { a as ImageAdjustments, D as DepthMaskOptions, b as SerializedImageEditorState, A as AdjustmentKind, c as AdjustmentLayer, d as AdjustmentParamsMap, e as AdjustmentLayerMask, f as AdjustmentLayerOf, C as CurvePoint, H as HueRange, L as LevelsChannel, g as ImageEditorController, h as SelectionMask, i as SelectionMode, j as ColorDistance, R as RefineEdgeParams, k as ImagePoint, l as ImageLayer, m as CropBox, n as RasterMask, o as Annotation, p as AdjustmentLayerNode, q as AnnotationLayer, r as LayerFilter, s as PixelLayer, t as DevelopFilter, u as ImageTransform, v as ImageHistogram, w as ImageProjection, x as CompositorSources, y as LayerCompositor, z as SmartFilterStack, B as SmartFilter, E as SmartObjectLayer, F as SmartContents, G as SmartDocument, J as SmartPlacement, K as FreeTransformGeometry, M as LayerPlacement, N as FreeTransformMode, O as FreeTransformResult, Q as FreeTransformSession, T as FreeTransformInit, U as TransformAnchor } from '../export-X9rY79p0.cjs';
2
- export { V as AIResultOptions, W as AdjustmentLayerBase, X as AdjustmentLayerInit, Y as AdjustmentLayerUpdate, Z as AnnotationPlacement, _ as AnnotationType, $ as ArrowAnnotation, a0 as AspectRatio, a1 as BaseAnnotation, a2 as BlackWhiteParams, a3 as BlurFilter, a4 as CircleAnnotation, a5 as ColorBalanceParams, a6 as ColorBalanceTone, a7 as ColorRangeOptions, a8 as ColorRangeSample, a9 as CreateAnnotationPayload, aa as CropHandle, ab as CurvesParams, ac as DEFAULT_ADJUSTMENTS, ad as DEFAULT_DEPTH_MASK, ae as DEFAULT_REFINE_EDGE_PARAMS, af as DEFAULT_TRANSFORM, ag as DeserializeContext, ah as DevelopSettings, ai as EMPTY_DISTANCE, aj as ExportOptions, ak as FREE_TRANSFORM_CONTENTS, al as FREE_TRANSFORM_MODES, am as FillOptions, an as FreeTransformContent, ao as FreeTransformHost, ap as FreeTransformPreview, aq as GUIDED_FILTER_EPS, ar as GroupLayer, as as HISTOGRAM_BINS, at as HistogramChannel, au as HistoryEntryHandle, av as HueSaturationParams, aw as IMAGE_EDITOR_SCHEMA_VERSION, ax as ImageAnnotation, ay as ImageDimensions, az as ImageEditorAIHooks, I as ImageEditorAssetStore, aA as ImageEditorFit, aB as ImageEditorOptions, aC as ImageEditorRenderer, aD as ImageEditorState, aE as ImageEditorTool, aF as ImageLayerType, aG as InpaintHook, aH as InpaintOptions, aI as InvertParams, aJ as LAYERED_SCHEMA_VERSION, aK as LayerBase, aL as LayerBlendMode, aM as LayerFilterKind, aN as LayerLocation, aO as LayerMaskProps, aP as LayerOperationError, aQ as LayerProperties, aR as LayerSourcesHost, aS as LayerTarget, aT as LegacySerializedImageEditorState, aU as LevelsParams, aV as LineAnnotation, aW as MagicWandOptions, aX as MixerStrokeInit, aY as PSD_BLEND_KEYS, aZ as PaintOptions, a_ as PaintStrokeResult, a$ as PaintStrokeSession, b0 as PenAnnotation, b1 as PhotoFilterParams, b2 as PixelBuffer, b3 as PixelLayerInit, b4 as PosterizeParams, b5 as PsdChannel, b6 as PsdExportInput, P as PsdExportResult, b7 as PsdFile, b8 as PsdHeader, b9 as PsdImportOptions, ba as PsdImportResult, bb as PsdLayerMask, bc as PsdLayerRecord, bd as PsdLayerSummary, be as PsdRect, bf as PsdResource, bg as PsdSmartFilter, bh as PsdTaggedBlock, bi as PsdTreeNode, bj as RectAnnotation, bk as RemoveBackgroundHook, bl as RemoveBackgroundOptions, bm as RenderOptions, bn as SELECTION_MODES, bo as SELECTION_MODIFY_OPS, bp as SampleOptions, bq as SelectionChannel, br as SelectionCommandOptions, bs as SelectionModifyOp, bt as SerializeContext, bu as SerializedAdjustmentLayer, bv as SerializedAnnotationLayer, bw as SerializedGroupLayer, S as SerializedLayer, bx as SerializedLayerEffects, by as SerializedLayeredImageEditorState, bz as SerializedPattern, bA as SerializedPixelLayer, bB as SerializedRasterMask, bC as SerializedSelection, bD as SerializedSmartContents, bE as SerializedSmartFilter, bF as SerializedSmartObjectLayer, bG as ShapeSelectionOptions, bH as SmartFilterKind, bI as SmartObjectInfo, bJ as SmartPsdData, bK as StrokeInit, bL as StrokeTool, bM as TONE_RANGE_PRESETS, bN as TRANSFORM_ANCHORS, bO as TextAnnotation, bP as ThresholdParams, bQ as ToneRangePreset, bR as TransformParams, bS as TransformReadout, bT as VibranceParams, bU as ViewportMetrics, bV as addLayerEffect, bW as addLayerFilter, bX as adjustmentNodeAsLayer, bY as anchorPoint, bZ as applyImageProjectionToContext, b_ as applyParams, b$ as blurFilter, c0 as borderCoverage, c1 as boxMean, c2 as boxPointOf, c3 as buildLayerMaskPlanes, c4 as calculateCropDrag, c5 as canvasToImagePoint, c6 as clampCropToImage, c7 as colorRange, c8 as combineSelections, c9 as computeHistogram, ca as computeSelectionBounds, cb as contractCoverage, cc as cornersFromMatrix, cd as coverageToByte, ce as createSelectionMask, cf as decodeLayerChannel, cg as decodeLayerMask, ch as decodeMergedImage, ci as decodePngDataUrl, cj as decodeSelectionRle, ck as depthMaskAlpha, cl as describeTransform, cm as deserializeEffects, cn as deserializeLayer, co as deserializeLayers, cp as deserializePatterns, cq as deserializeSelection, cr as developFilter, cs as distanceTransform, ct as duplicateLayer, cu as edgeWidth, cv as ellipsePoints, cw as ellipseSelection, cx as encodeSelectionRle, cy as encodeSurface, cz as expandCoverage, cA as exportPsd, cB as featherCoverage, cC as flipCorners, cD as fullSelection, cE as geometryHomography, cF as getAnnotationBounds, cG as getCropCursor, cH as getRotatedSize, cI as getViewportMetrics, cJ as getViewportProjection, cK as globalImageCache, cL as greyMorphology, cM as groupLayers, cN as guidePlanes, cO as guidedFilterColor, cP as hasSurface, cQ as hasWarp, cR as hashMaskContent, cS as histogramPath, cT as hitTestAnnotation, cU as hitTestCrop, cV as hueRange, cW as identityTransform, cX as imageToCanvasPoint, cY as importPsd, cZ as invertSelection, c_ as isActiveFilter, c$ as isIdentityTransform, d0 as isQuarterTurnSwapped, d1 as isSelectionEmpty, d2 as isSelectionMode, d3 as isSpatialFilter, d4 as isTransformAnchor, d5 as isValidWarp, d6 as layerEffectsOf, d7 as layerMaskCoverage, d8 as layerMaskFromSelection, d9 as layerMaskKey, da as layerName, db as layerTree, dc as layerTypeLabel, dd as magicWand, de as mapCropHandle, df as matrixFromCorners, dg as matrixFromParams, dh as migrateSerializedImageEditorState, di as migrateToLayeredState, dj as modifySelection, dk as moveLayer, dl as newLayerId, dm as normalizeAngle, dn as normalizeFilter, dp as normalizeLayerMask, dq as normalizeRect, dr as normalizeRefineEdgeParams, ds as normalizeStoredAdjustments, dt as offsetLayer, du as parseBlend, dv as parseColor, dw as parseSelectionMode, dx as pixelLayerBounds, dy as pixelLayers, dz as placeLayer, dA as polygonCoverage, dB as polygonSelection, dC as presetWarp, dD as previewStep, dE as projectImagePoint, dF as projectImageRect, dG as projectMaskCoverage, dH as psdToLayers, dI as readPsd, dJ as rectSelection, dK as referencePoint, dL as refineCoverage, dM as refineEdgeHalo, dN as refineSelection, dO as removeLayer, dP as removeLayerEffect, dQ as removeLayerFilter, dR as requireLayer, dS as requireUnlocked, dT as resizePixels, dU as resizeSelection, dV as resolveExternalAssets, dW as runLayerFilters, dX as selectionArea, dY as selectionFromCoverage, dZ as selectionFromPixels, d_ as selectionToCoverage, d$ as selectionToPixels, e0 as selectionValueAt, e1 as serializeContents, e2 as serializeEffects, e3 as serializeLayer, e4 as serializeLayers, e5 as serializeLayersExternal, e6 as serializePatterns, e7 as serializeSelection, e8 as setLayerEffects, e9 as setLayerEffectsEnabled, ea as setLayerMask, eb as setLayerProperties, ec as shiftCoverage, ed as smartObjectLayers, ee as smoothCoverage, ef as srgb8ToLab, eg as toHex, eh as toneRange, ei as transformHomography, ej as transformMap, ek as transformedBox, el as transformedPoint, em as ungroupLayer, en as unionRect, eo as unprojectCanvasPoint, ep as updateLayerEffect, eq as updateLayerFilter, er as updateLayerMaskProps, es as withNewIds, et as writePsd } from '../export-X9rY79p0.cjs';
1
+ import { a as ImageAdjustments, D as DepthMaskOptions, b as SerializedImageEditorState, A as AdjustmentKind, c as AdjustmentLayer, d as AdjustmentParamsMap, e as AdjustmentLayerMask, f as AdjustmentLayerOf, C as CurvePoint, H as HueRange, L as LevelsChannel, g as ImageEditorController, h as SelectionMask, i as SelectionMode, j as ColorDistance, R as RefineEdgeParams, k as ImagePoint, l as ImageLayer, m as CropBox, n as RasterMask, o as Annotation, p as AdjustmentLayerNode, q as AnnotationLayer, r as LayerFilter, s as PixelLayer, t as DevelopFilter, u as ImageTransform, v as ImageHistogram, w as ImageProjection, x as CompositorSources, y as LayerCompositor, z as SmartFilterStack, B as SmartFilter, E as SmartObjectLayer, F as SmartContents, G as SmartDocument, J as SmartPlacement, K as FreeTransformGeometry, M as LayerPlacement, N as FreeTransformMode, O as FreeTransformResult, Q as FreeTransformSession, T as FreeTransformInit, U as TransformAnchor } from '../export-_m3Es4ru.cjs';
2
+ export { V as AIResultOptions, W as AdjustmentLayerBase, X as AdjustmentLayerInit, Y as AdjustmentLayerUpdate, Z as AnnotationPlacement, _ as AnnotationType, $ as ArrowAnnotation, a0 as AspectRatio, a1 as BaseAnnotation, a2 as BlackWhiteParams, a3 as BlurFilter, a4 as CircleAnnotation, a5 as ColorBalanceParams, a6 as ColorBalanceTone, a7 as ColorRangeOptions, a8 as ColorRangeSample, a9 as CreateAnnotationPayload, aa as CropHandle, ab as CurvesParams, ac as DEFAULT_ADJUSTMENTS, ad as DEFAULT_DEPTH_MASK, ae as DEFAULT_REFINE_EDGE_PARAMS, af as DEFAULT_TRANSFORM, ag as DeserializeContext, ah as DevelopSettings, ai as EMPTY_DISTANCE, aj as ExportOptions, ak as FREE_TRANSFORM_CONTENTS, al as FREE_TRANSFORM_MODES, am as FillOptions, an as FreeTransformContent, ao as FreeTransformHost, ap as FreeTransformPreview, aq as GUIDED_FILTER_EPS, ar as GroupLayer, as as HISTOGRAM_BINS, at as HistogramChannel, au as HistoryEntryHandle, av as HueSaturationParams, aw as IMAGE_EDITOR_SCHEMA_VERSION, ax as ImageAnnotation, ay as ImageDimensions, az as ImageEditorAIHooks, I as ImageEditorAssetStore, aA as ImageEditorFit, aB as ImageEditorOptions, aC as ImageEditorRenderer, aD as ImageEditorState, aE as ImageEditorTool, aF as ImageLayerType, aG as InpaintHook, aH as InpaintOptions, aI as InvertParams, aJ as LAYERED_SCHEMA_VERSION, aK as LayerBase, aL as LayerBlendMode, aM as LayerFilterKind, aN as LayerLocation, aO as LayerMaskProps, aP as LayerOperationError, aQ as LayerProperties, aR as LayerSourcesHost, aS as LayerTarget, aT as LegacySerializedImageEditorState, aU as LevelsParams, aV as LineAnnotation, aW as MagicWandOptions, aX as MixerStrokeInit, aY as PSD_BLEND_KEYS, aZ as PaintOptions, a_ as PaintStrokeResult, a$ as PaintStrokeSession, b0 as PenAnnotation, b1 as PhotoFilterParams, b2 as PixelBuffer, b3 as PixelLayerInit, b4 as PosterizeParams, b5 as PsdChannel, b6 as PsdExportInput, P as PsdExportResult, b7 as PsdFile, b8 as PsdHeader, b9 as PsdImportOptions, ba as PsdImportResult, bb as PsdLayerMask, bc as PsdLayerRecord, bd as PsdLayerSummary, be as PsdRect, bf as PsdResource, bg as PsdSmartFilter, bh as PsdTaggedBlock, bi as PsdTreeNode, bj as RectAnnotation, bk as RemoveBackgroundHook, bl as RemoveBackgroundOptions, bm as RenderOptions, bn as SELECTION_MODES, bo as SELECTION_MODIFY_OPS, bp as SampleOptions, bq as SelectionChannel, br as SelectionCommandOptions, bs as SelectionModifyOp, bt as SerializeContext, bu as SerializedAdjustmentLayer, bv as SerializedAnnotationLayer, bw as SerializedGroupLayer, S as SerializedLayer, bx as SerializedLayerEffects, by as SerializedLayeredImageEditorState, bz as SerializedPattern, bA as SerializedPixelLayer, bB as SerializedRasterMask, bC as SerializedSelection, bD as SerializedSmartContents, bE as SerializedSmartFilter, bF as SerializedSmartObjectLayer, bG as ShapeSelectionOptions, bH as SmartFilterKind, bI as SmartObjectInfo, bJ as SmartPsdData, bK as StrokeInit, bL as StrokeTool, bM as TONE_RANGE_PRESETS, bN as TRANSFORM_ANCHORS, bO as TextAnnotation, bP as ThresholdParams, bQ as ToneRangePreset, bR as TransformParams, bS as TransformReadout, bT as VibranceParams, bU as ViewportMetrics, bV as addLayerEffect, bW as addLayerFilter, bX as adjustmentNodeAsLayer, bY as anchorPoint, bZ as applyImageProjectionToContext, b_ as applyParams, b$ as blurFilter, c0 as borderCoverage, c1 as boxMean, c2 as boxPointOf, c3 as buildLayerMaskPlanes, c4 as calculateCropDrag, c5 as canvasToImagePoint, c6 as clampCropToImage, c7 as colorRange, c8 as combineSelections, c9 as computeHistogram, ca as computeSelectionBounds, cb as contractCoverage, cc as cornersFromMatrix, cd as coverageToByte, ce as createSelectionMask, cf as decodeLayerChannel, cg as decodeLayerMask, ch as decodeMergedImage, ci as decodePngDataUrl, cj as decodeSelectionRle, ck as depthMaskAlpha, cl as describeTransform, cm as deserializeEffects, cn as deserializeLayer, co as deserializeLayers, cp as deserializePatterns, cq as deserializeSelection, cr as developFilter, cs as distanceTransform, ct as duplicateLayer, cu as edgeWidth, cv as ellipsePoints, cw as ellipseSelection, cx as encodeSelectionRle, cy as encodeSurface, cz as expandCoverage, cA as exportPsd, cB as featherCoverage, cC as flipCorners, cD as fullSelection, cE as geometryHomography, cF as getAnnotationBounds, cG as getCropCursor, cH as getRotatedSize, cI as getViewportMetrics, cJ as getViewportProjection, cK as globalImageCache, cL as greyMorphology, cM as groupLayers, cN as guidePlanes, cO as guidedFilterColor, cP as hasSurface, cQ as hasWarp, cR as hashMaskContent, cS as histogramPath, cT as hitTestAnnotation, cU as hitTestCrop, cV as hueRange, cW as identityTransform, cX as imageToCanvasPoint, cY as importPsd, cZ as invertSelection, c_ as isActiveFilter, c$ as isIdentityTransform, d0 as isQuarterTurnSwapped, d1 as isSelectionEmpty, d2 as isSelectionMode, d3 as isSpatialFilter, d4 as isTransformAnchor, d5 as isValidWarp, d6 as layerEffectsOf, d7 as layerMaskCoverage, d8 as layerMaskFromSelection, d9 as layerMaskKey, da as layerName, db as layerTree, dc as layerTypeLabel, dd as magicWand, de as mapCropHandle, df as matrixFromCorners, dg as matrixFromParams, dh as migrateSerializedImageEditorState, di as migrateToLayeredState, dj as modifySelection, dk as moveLayer, dl as newLayerId, dm as normalizeAngle, dn as normalizeFilter, dp as normalizeLayerMask, dq as normalizeRect, dr as normalizeRefineEdgeParams, ds as normalizeStoredAdjustments, dt as offsetLayer, du as parseBlend, dv as parseColor, dw as parseSelectionMode, dx as pixelLayerBounds, dy as pixelLayers, dz as placeLayer, dA as polygonCoverage, dB as polygonSelection, dC as presetWarp, dD as previewStep, dE as projectImagePoint, dF as projectImageRect, dG as projectMaskCoverage, dH as psdToLayers, dI as readPsd, dJ as rectSelection, dK as referencePoint, dL as refineCoverage, dM as refineEdgeHalo, dN as refineSelection, dO as removeLayer, dP as removeLayerEffect, dQ as removeLayerFilter, dR as requireLayer, dS as requireUnlocked, dT as resizePixels, dU as resizeSelection, dV as resolveExternalAssets, dW as runLayerFilters, dX as selectionArea, dY as selectionFromCoverage, dZ as selectionFromPixels, d_ as selectionToCoverage, d$ as selectionToPixels, e0 as selectionValueAt, e1 as serializeContents, e2 as serializeEffects, e3 as serializeLayer, e4 as serializeLayers, e5 as serializeLayersExternal, e6 as serializePatterns, e7 as serializeSelection, e8 as setLayerEffects, e9 as setLayerEffectsEnabled, ea as setLayerMask, eb as setLayerProperties, ec as shiftCoverage, ed as smartObjectLayers, ee as smoothCoverage, ef as srgb8ToLab, eg as toHex, eh as toneRange, ei as transformHomography, ej as transformMap, ek as transformedBox, el as transformedPoint, em as ungroupLayer, en as unionRect, eo as unprojectCanvasPoint, ep as updateLayerEffect, eq as updateLayerFilter, er as updateLayerMaskProps, es as withNewIds, et as writePsd } from '../export-_m3Es4ru.cjs';
3
3
  import { b as LoadReport, J as JsonObject, f as MigrationStep } from '../migrate-iTlm3a8h.cjs';
4
- import { B as BlendMode, P as PixelSurface, R as RasterRect } from '../surface-AfHCH7BR.cjs';
5
- export { c as BLEND_MODES, d as BlendModeInfo, M as MaskSurface, e as Rgb, f as Rgba, S as SurfaceDraft, g as TILE, h as TILE_SHIFT, b as Tile, T as TileKey, a as TiledSurface, i as blendChannel, j as blendImageData, k as blendLum, l as blendPixel, m as blendRgb, n as canvasCompositeOperation, o as collectTiles, p as contentBounds, q as emptySurface, r as fillRect, s as finishTile, t as isBlendMode, u as isSeparableBlendMode, v as mixPigment8, w as mixPigmentRgb, x as normalizeBlendMode, y as packRgba, z as readPixel, A as readRegion, C as setLum, D as solidSurface, E as surfaceBytes, F as surfaceFromPixels, G as surfacesEqual, H as tileCoord, I as tileKey, J as tileRect, K as tilesInRect, L as translateSurface, N as uniformTile, O as writeRegion } from '../surface-AfHCH7BR.cjs';
4
+ import { B as BlendMode, P as PixelSurface, R as RasterRect } from '../surface-BBJN9wxg.cjs';
5
+ export { b as BLEND_MODES, d as BlendModeInfo, M as MaskSurface, e as Rgb, f as Rgba, S as SurfaceDraft, g as TILE, h as TILE_SHIFT, c as Tile, T as TileKey, a as TiledSurface, j as blendChannel, k as blendImageData, l as blendLum, m as blendPixel, n as blendRgb, o as canvasCompositeOperation, p as collectTiles, q as contentBounds, r as emptySurface, s as fillRect, t as finishTile, i as isBlendMode, u as isSeparableBlendMode, v as mixPigment8, w as mixPigmentRgb, x as normalizeBlendMode, y as packRgba, z as readPixel, A as readRegion, C as setLum, D as solidSurface, E as surfaceBytes, F as surfaceFromPixels, G as surfacesEqual, H as tileCoord, I as tileKey, J as tileRect, K as tilesInRect, L as translateSurface, N as uniformTile, O as writeRegion } from '../surface-BBJN9wxg.cjs';
6
6
  import { a as AgentToolProvider, A as AgentTool } from '../registry-BqA1AZt0.cjs';
7
- import { j as LayerEffects, l as LayerEffectKind, i as LayerEffect, E as EffectPattern, I as Interpolation } from '../compositor-CTMU-B1t.cjs';
8
- export { B as BevelContour, m as BevelEmbossEffect, n as BevelStyle, o as BevelTechnique, p as BevelTexture, q as ColorOverlayEffect, r as CompositeCallOptions, s as CompositeStats, k as CompositorOptions, t as ContourPoint, D as DEFAULT_GLOBAL_LIGHT, u as DropShadowEffect, v as EffectContour, w as EffectFill, x as EffectGradient, y as EffectPatternRef, g as GlobalLight, z as GlowTechnique, A as GradientColorStop, F as GradientOpacityStop, H as GradientOverlayEffect, J as GradientStyle, K as INTERPOLATIONS, M as InnerGlowEffect, N as InnerShadowEffect, O as LAYER_EFFECT_KINDS, P as LayerEffectError, L as LayerLocks, Q as MAX_EFFECT_REACH, S as MAX_TRANSFORM_PIXELS, T as OuterGlowEffect, U as PatternOverlayEffect, V as PatternPlacement, W as PatternTile, X as ResampleOptions, Y as SatinEffect, Z as StrokeEffect, _ as StrokePosition, $ as TransformTooLargeError, a0 as blendTile, a1 as builtinPattern, a2 as builtinPatternIds, a3 as changedTiles, a4 as compositeSurfaceOver, a5 as defaultEffectGradient, a6 as defaultLayerEffect, a7 as effectColorHex, a8 as effectReach, a9 as effectsFingerprint, aa as effectsMargin, ab as effectsScale, ac as findLayer, ad as flattenLayers, ae as hasActiveEffects, af as hashNoise, ag as insertLayer, ah as isInterpolation, ai as isLayerEffectKind, aj as isLayerLocked, ak as keysWeight, al as layerEffectFields, am as layerEffectLabel, an as mapLayer, ao as mergeLayerEffect, ap as newEffectId, aq as normalizeLayerEffects, ar as parseEffectColor, as as reduceSurface, at as scaleLayerEffect, au as transformSurface, av as transformedBounds, aw as validateEffectGradient, ax as validateLayerEffect, ay as validateLayerEffects, az as warpSurface } from '../compositor-CTMU-B1t.cjs';
7
+ import { j as LayerEffects, l as LayerEffectKind, i as LayerEffect, E as EffectPattern, I as Interpolation } from '../compositor-Bc3PNP3C.cjs';
8
+ export { B as BevelContour, m as BevelEmbossEffect, n as BevelStyle, o as BevelTechnique, p as BevelTexture, q as ColorOverlayEffect, r as CompositeCallOptions, s as CompositeStats, k as CompositorOptions, t as ContourPoint, D as DEFAULT_GLOBAL_LIGHT, u as DropShadowEffect, v as EffectContour, w as EffectFill, x as EffectGradient, y as EffectPatternRef, g as GlobalLight, z as GlowTechnique, A as GradientColorStop, F as GradientOpacityStop, H as GradientOverlayEffect, J as GradientStyle, K as INTERPOLATIONS, M as InnerGlowEffect, N as InnerShadowEffect, O as LAYER_EFFECT_KINDS, P as LayerEffectError, L as LayerLocks, Q as MAX_EFFECT_REACH, S as MAX_TRANSFORM_PIXELS, T as OuterGlowEffect, U as PatternOverlayEffect, V as PatternPlacement, W as PatternTile, X as ResampleOptions, Y as SatinEffect, Z as StrokeEffect, _ as StrokePosition, $ as TransformTooLargeError, a0 as blendTile, a1 as builtinPattern, a2 as builtinPatternIds, a3 as changedTiles, a4 as compositeSurfaceOver, a5 as defaultEffectGradient, a6 as defaultLayerEffect, a7 as effectColorHex, a8 as effectReach, a9 as effectsFingerprint, aa as effectsMargin, ab as effectsScale, ac as findLayer, ad as flattenLayers, ae as hasActiveEffects, af as hashNoise, ag as insertLayer, ah as isInterpolation, ai as isLayerEffectKind, aj as isLayerLocked, ak as keysWeight, al as layerEffectFields, am as layerEffectLabel, an as mapLayer, ao as mergeLayerEffect, ap as newEffectId, aq as normalizeLayerEffects, ar as parseEffectColor, as as reduceSurface, at as scaleLayerEffect, au as transformSurface, av as transformedBounds, aw as validateEffectGradient, ax as validateLayerEffect, ay as validateLayerEffects, az as warpSurface } from '../compositor-Bc3PNP3C.cjs';
9
9
  import { b as CaptureSurface } from '../capture-DFEMFmVt.cjs';
10
10
  export { DIRECT_GAUSSIAN_MAX_SIGMA, DecodedPng, EffectRect, ZlibError, adler32, base64ToBytes, bytesToBase64, curveLut, decodePng, deflate, deflateRaw, encodePng, gaussianBlur, inflate, inflateRaw, isPng, parseDataUrl, pngDataUrl, renderLayerEffects } from '../raster/index.cjs';
11
- import { a as MixerLoad, M as MixerSettings } from '../mixer-DGcH6HLu.cjs';
12
- export { B as BrushSettings, C as CoverageMap, g as DEFAULT_BRUSH, h as DEFAULT_MIXER, D as Dab, i as DabWalker, E as EMPTY_MIXER_LOAD, b as MAX_BRUSH_SIZE, j as MIXER_DRAIN, k as MIXER_PICKUP_RATE, l as MIXING_MODELS, e as MixerStroke, d as MixerTarget, m as MixingModel, f as StrokeApply, c as StrokeCoverage, S as StrokePoint, n as applyStrokeToTile, o as cleanMixer, p as coverageTileCoord, q as dabCoverage, r as dabRect, s as loadMixer, t as normalizeBrush, u as normalizeMixer, v as rasterizeDab, w as smoothPoints, x as tipFalloff, y as tipReach, z as tipShape, A as walkDabs } from '../mixer-DGcH6HLu.cjs';
11
+ import { a as MixerLoad, M as MixerSettings } from '../mixer-C1M1Nua_.cjs';
12
+ export { B as BrushSettings, C as CoverageMap, g as DEFAULT_BRUSH, h as DEFAULT_MIXER, D as Dab, i as DabWalker, E as EMPTY_MIXER_LOAD, b as MAX_BRUSH_SIZE, j as MIXER_DRAIN, k as MIXER_PICKUP_RATE, l as MIXING_MODELS, e as MixerStroke, d as MixerTarget, m as MixingModel, f as StrokeApply, c as StrokeCoverage, S as StrokePoint, n as applyStrokeToTile, o as cleanMixer, p as coverageTileCoord, q as dabCoverage, r as dabRect, s as loadMixer, t as normalizeBrush, u as normalizeMixer, v as rasterizeDab, w as smoothPoints, x as tipFalloff, y as tipReach, z as tipShape, A as walkDabs } from '../mixer-C1M1Nua_.cjs';
13
13
  export { PIGMENT_BANDS, PIGMENT_LAMBDA_MIN, PIGMENT_LAMBDA_STEP, PIGMENT_WAVELENGTHS, Pigment, PigmentOptions, PigmentRgb, createPigment, createPigmentTools, lerpPigment, lerpPigmentInto, mixPigments, reflectanceToRgb, rgbToReflectance, setPigmentColor } from '../paint/index.cjs';
14
14
  import { W as WarpStyle, a as WarpMesh, V as Vec2, Q as Quad } from '../types-CwMPoRMU.cjs';
15
15
  export { A as AffineMatrix, H as Homography } from '../types-CwMPoRMU.cjs';
@@ -1383,6 +1383,14 @@ declare function writeAdjustmentBlock<K extends AdjustmentKind>(kind: K, params:
1383
1383
  data: Uint8Array;
1384
1384
  };
1385
1385
 
1386
+ /**
1387
+ * Layer effects ↔ PSD: the object-based effects descriptor (`lfx2`, `lfxs` on groups, `lmfx` with
1388
+ * several instances per kind) both ways, and the legacy `lrFX` block on read. Key names follow the
1389
+ * descriptors Photoshop writes (documented by reverse-engineering in psd-tools and ag-psd, MIT).
1390
+ *
1391
+ * Reading reports what it could not represent exactly (`notes`), so import warns only for that.
1392
+ */
1393
+
1386
1394
  interface ParsedLayerEffects {
1387
1395
  effects: LayerEffects;
1388
1396
  /** What could not be held exactly (empty when the mapping is exact). */
@@ -1,15 +1,15 @@
1
- import { a as ImageAdjustments, D as DepthMaskOptions, b as SerializedImageEditorState, A as AdjustmentKind, c as AdjustmentLayer, d as AdjustmentParamsMap, e as AdjustmentLayerMask, f as AdjustmentLayerOf, C as CurvePoint, H as HueRange, L as LevelsChannel, g as ImageEditorController, h as SelectionMask, i as SelectionMode, j as ColorDistance, R as RefineEdgeParams, k as ImagePoint, l as ImageLayer, m as CropBox, n as RasterMask, o as Annotation, p as AdjustmentLayerNode, q as AnnotationLayer, r as LayerFilter, s as PixelLayer, t as DevelopFilter, u as ImageTransform, v as ImageHistogram, w as ImageProjection, x as CompositorSources, y as LayerCompositor, z as SmartFilterStack, B as SmartFilter, E as SmartObjectLayer, F as SmartContents, G as SmartDocument, J as SmartPlacement, K as FreeTransformGeometry, M as LayerPlacement, N as FreeTransformMode, O as FreeTransformResult, Q as FreeTransformSession, T as FreeTransformInit, U as TransformAnchor } from '../export-BLpMyCYg.js';
2
- export { V as AIResultOptions, W as AdjustmentLayerBase, X as AdjustmentLayerInit, Y as AdjustmentLayerUpdate, Z as AnnotationPlacement, _ as AnnotationType, $ as ArrowAnnotation, a0 as AspectRatio, a1 as BaseAnnotation, a2 as BlackWhiteParams, a3 as BlurFilter, a4 as CircleAnnotation, a5 as ColorBalanceParams, a6 as ColorBalanceTone, a7 as ColorRangeOptions, a8 as ColorRangeSample, a9 as CreateAnnotationPayload, aa as CropHandle, ab as CurvesParams, ac as DEFAULT_ADJUSTMENTS, ad as DEFAULT_DEPTH_MASK, ae as DEFAULT_REFINE_EDGE_PARAMS, af as DEFAULT_TRANSFORM, ag as DeserializeContext, ah as DevelopSettings, ai as EMPTY_DISTANCE, aj as ExportOptions, ak as FREE_TRANSFORM_CONTENTS, al as FREE_TRANSFORM_MODES, am as FillOptions, an as FreeTransformContent, ao as FreeTransformHost, ap as FreeTransformPreview, aq as GUIDED_FILTER_EPS, ar as GroupLayer, as as HISTOGRAM_BINS, at as HistogramChannel, au as HistoryEntryHandle, av as HueSaturationParams, aw as IMAGE_EDITOR_SCHEMA_VERSION, ax as ImageAnnotation, ay as ImageDimensions, az as ImageEditorAIHooks, I as ImageEditorAssetStore, aA as ImageEditorFit, aB as ImageEditorOptions, aC as ImageEditorRenderer, aD as ImageEditorState, aE as ImageEditorTool, aF as ImageLayerType, aG as InpaintHook, aH as InpaintOptions, aI as InvertParams, aJ as LAYERED_SCHEMA_VERSION, aK as LayerBase, aL as LayerBlendMode, aM as LayerFilterKind, aN as LayerLocation, aO as LayerMaskProps, aP as LayerOperationError, aQ as LayerProperties, aR as LayerSourcesHost, aS as LayerTarget, aT as LegacySerializedImageEditorState, aU as LevelsParams, aV as LineAnnotation, aW as MagicWandOptions, aX as MixerStrokeInit, aY as PSD_BLEND_KEYS, aZ as PaintOptions, a_ as PaintStrokeResult, a$ as PaintStrokeSession, b0 as PenAnnotation, b1 as PhotoFilterParams, b2 as PixelBuffer, b3 as PixelLayerInit, b4 as PosterizeParams, b5 as PsdChannel, b6 as PsdExportInput, P as PsdExportResult, b7 as PsdFile, b8 as PsdHeader, b9 as PsdImportOptions, ba as PsdImportResult, bb as PsdLayerMask, bc as PsdLayerRecord, bd as PsdLayerSummary, be as PsdRect, bf as PsdResource, bg as PsdSmartFilter, bh as PsdTaggedBlock, bi as PsdTreeNode, bj as RectAnnotation, bk as RemoveBackgroundHook, bl as RemoveBackgroundOptions, bm as RenderOptions, bn as SELECTION_MODES, bo as SELECTION_MODIFY_OPS, bp as SampleOptions, bq as SelectionChannel, br as SelectionCommandOptions, bs as SelectionModifyOp, bt as SerializeContext, bu as SerializedAdjustmentLayer, bv as SerializedAnnotationLayer, bw as SerializedGroupLayer, S as SerializedLayer, bx as SerializedLayerEffects, by as SerializedLayeredImageEditorState, bz as SerializedPattern, bA as SerializedPixelLayer, bB as SerializedRasterMask, bC as SerializedSelection, bD as SerializedSmartContents, bE as SerializedSmartFilter, bF as SerializedSmartObjectLayer, bG as ShapeSelectionOptions, bH as SmartFilterKind, bI as SmartObjectInfo, bJ as SmartPsdData, bK as StrokeInit, bL as StrokeTool, bM as TONE_RANGE_PRESETS, bN as TRANSFORM_ANCHORS, bO as TextAnnotation, bP as ThresholdParams, bQ as ToneRangePreset, bR as TransformParams, bS as TransformReadout, bT as VibranceParams, bU as ViewportMetrics, bV as addLayerEffect, bW as addLayerFilter, bX as adjustmentNodeAsLayer, bY as anchorPoint, bZ as applyImageProjectionToContext, b_ as applyParams, b$ as blurFilter, c0 as borderCoverage, c1 as boxMean, c2 as boxPointOf, c3 as buildLayerMaskPlanes, c4 as calculateCropDrag, c5 as canvasToImagePoint, c6 as clampCropToImage, c7 as colorRange, c8 as combineSelections, c9 as computeHistogram, ca as computeSelectionBounds, cb as contractCoverage, cc as cornersFromMatrix, cd as coverageToByte, ce as createSelectionMask, cf as decodeLayerChannel, cg as decodeLayerMask, ch as decodeMergedImage, ci as decodePngDataUrl, cj as decodeSelectionRle, ck as depthMaskAlpha, cl as describeTransform, cm as deserializeEffects, cn as deserializeLayer, co as deserializeLayers, cp as deserializePatterns, cq as deserializeSelection, cr as developFilter, cs as distanceTransform, ct as duplicateLayer, cu as edgeWidth, cv as ellipsePoints, cw as ellipseSelection, cx as encodeSelectionRle, cy as encodeSurface, cz as expandCoverage, cA as exportPsd, cB as featherCoverage, cC as flipCorners, cD as fullSelection, cE as geometryHomography, cF as getAnnotationBounds, cG as getCropCursor, cH as getRotatedSize, cI as getViewportMetrics, cJ as getViewportProjection, cK as globalImageCache, cL as greyMorphology, cM as groupLayers, cN as guidePlanes, cO as guidedFilterColor, cP as hasSurface, cQ as hasWarp, cR as hashMaskContent, cS as histogramPath, cT as hitTestAnnotation, cU as hitTestCrop, cV as hueRange, cW as identityTransform, cX as imageToCanvasPoint, cY as importPsd, cZ as invertSelection, c_ as isActiveFilter, c$ as isIdentityTransform, d0 as isQuarterTurnSwapped, d1 as isSelectionEmpty, d2 as isSelectionMode, d3 as isSpatialFilter, d4 as isTransformAnchor, d5 as isValidWarp, d6 as layerEffectsOf, d7 as layerMaskCoverage, d8 as layerMaskFromSelection, d9 as layerMaskKey, da as layerName, db as layerTree, dc as layerTypeLabel, dd as magicWand, de as mapCropHandle, df as matrixFromCorners, dg as matrixFromParams, dh as migrateSerializedImageEditorState, di as migrateToLayeredState, dj as modifySelection, dk as moveLayer, dl as newLayerId, dm as normalizeAngle, dn as normalizeFilter, dp as normalizeLayerMask, dq as normalizeRect, dr as normalizeRefineEdgeParams, ds as normalizeStoredAdjustments, dt as offsetLayer, du as parseBlend, dv as parseColor, dw as parseSelectionMode, dx as pixelLayerBounds, dy as pixelLayers, dz as placeLayer, dA as polygonCoverage, dB as polygonSelection, dC as presetWarp, dD as previewStep, dE as projectImagePoint, dF as projectImageRect, dG as projectMaskCoverage, dH as psdToLayers, dI as readPsd, dJ as rectSelection, dK as referencePoint, dL as refineCoverage, dM as refineEdgeHalo, dN as refineSelection, dO as removeLayer, dP as removeLayerEffect, dQ as removeLayerFilter, dR as requireLayer, dS as requireUnlocked, dT as resizePixels, dU as resizeSelection, dV as resolveExternalAssets, dW as runLayerFilters, dX as selectionArea, dY as selectionFromCoverage, dZ as selectionFromPixels, d_ as selectionToCoverage, d$ as selectionToPixels, e0 as selectionValueAt, e1 as serializeContents, e2 as serializeEffects, e3 as serializeLayer, e4 as serializeLayers, e5 as serializeLayersExternal, e6 as serializePatterns, e7 as serializeSelection, e8 as setLayerEffects, e9 as setLayerEffectsEnabled, ea as setLayerMask, eb as setLayerProperties, ec as shiftCoverage, ed as smartObjectLayers, ee as smoothCoverage, ef as srgb8ToLab, eg as toHex, eh as toneRange, ei as transformHomography, ej as transformMap, ek as transformedBox, el as transformedPoint, em as ungroupLayer, en as unionRect, eo as unprojectCanvasPoint, ep as updateLayerEffect, eq as updateLayerFilter, er as updateLayerMaskProps, es as withNewIds, et as writePsd } from '../export-BLpMyCYg.js';
1
+ import { a as ImageAdjustments, D as DepthMaskOptions, b as SerializedImageEditorState, A as AdjustmentKind, c as AdjustmentLayer, d as AdjustmentParamsMap, e as AdjustmentLayerMask, f as AdjustmentLayerOf, C as CurvePoint, H as HueRange, L as LevelsChannel, g as ImageEditorController, h as SelectionMask, i as SelectionMode, j as ColorDistance, R as RefineEdgeParams, k as ImagePoint, l as ImageLayer, m as CropBox, n as RasterMask, o as Annotation, p as AdjustmentLayerNode, q as AnnotationLayer, r as LayerFilter, s as PixelLayer, t as DevelopFilter, u as ImageTransform, v as ImageHistogram, w as ImageProjection, x as CompositorSources, y as LayerCompositor, z as SmartFilterStack, B as SmartFilter, E as SmartObjectLayer, F as SmartContents, G as SmartDocument, J as SmartPlacement, K as FreeTransformGeometry, M as LayerPlacement, N as FreeTransformMode, O as FreeTransformResult, Q as FreeTransformSession, T as FreeTransformInit, U as TransformAnchor } from '../export-iMrop3Jm.js';
2
+ export { V as AIResultOptions, W as AdjustmentLayerBase, X as AdjustmentLayerInit, Y as AdjustmentLayerUpdate, Z as AnnotationPlacement, _ as AnnotationType, $ as ArrowAnnotation, a0 as AspectRatio, a1 as BaseAnnotation, a2 as BlackWhiteParams, a3 as BlurFilter, a4 as CircleAnnotation, a5 as ColorBalanceParams, a6 as ColorBalanceTone, a7 as ColorRangeOptions, a8 as ColorRangeSample, a9 as CreateAnnotationPayload, aa as CropHandle, ab as CurvesParams, ac as DEFAULT_ADJUSTMENTS, ad as DEFAULT_DEPTH_MASK, ae as DEFAULT_REFINE_EDGE_PARAMS, af as DEFAULT_TRANSFORM, ag as DeserializeContext, ah as DevelopSettings, ai as EMPTY_DISTANCE, aj as ExportOptions, ak as FREE_TRANSFORM_CONTENTS, al as FREE_TRANSFORM_MODES, am as FillOptions, an as FreeTransformContent, ao as FreeTransformHost, ap as FreeTransformPreview, aq as GUIDED_FILTER_EPS, ar as GroupLayer, as as HISTOGRAM_BINS, at as HistogramChannel, au as HistoryEntryHandle, av as HueSaturationParams, aw as IMAGE_EDITOR_SCHEMA_VERSION, ax as ImageAnnotation, ay as ImageDimensions, az as ImageEditorAIHooks, I as ImageEditorAssetStore, aA as ImageEditorFit, aB as ImageEditorOptions, aC as ImageEditorRenderer, aD as ImageEditorState, aE as ImageEditorTool, aF as ImageLayerType, aG as InpaintHook, aH as InpaintOptions, aI as InvertParams, aJ as LAYERED_SCHEMA_VERSION, aK as LayerBase, aL as LayerBlendMode, aM as LayerFilterKind, aN as LayerLocation, aO as LayerMaskProps, aP as LayerOperationError, aQ as LayerProperties, aR as LayerSourcesHost, aS as LayerTarget, aT as LegacySerializedImageEditorState, aU as LevelsParams, aV as LineAnnotation, aW as MagicWandOptions, aX as MixerStrokeInit, aY as PSD_BLEND_KEYS, aZ as PaintOptions, a_ as PaintStrokeResult, a$ as PaintStrokeSession, b0 as PenAnnotation, b1 as PhotoFilterParams, b2 as PixelBuffer, b3 as PixelLayerInit, b4 as PosterizeParams, b5 as PsdChannel, b6 as PsdExportInput, P as PsdExportResult, b7 as PsdFile, b8 as PsdHeader, b9 as PsdImportOptions, ba as PsdImportResult, bb as PsdLayerMask, bc as PsdLayerRecord, bd as PsdLayerSummary, be as PsdRect, bf as PsdResource, bg as PsdSmartFilter, bh as PsdTaggedBlock, bi as PsdTreeNode, bj as RectAnnotation, bk as RemoveBackgroundHook, bl as RemoveBackgroundOptions, bm as RenderOptions, bn as SELECTION_MODES, bo as SELECTION_MODIFY_OPS, bp as SampleOptions, bq as SelectionChannel, br as SelectionCommandOptions, bs as SelectionModifyOp, bt as SerializeContext, bu as SerializedAdjustmentLayer, bv as SerializedAnnotationLayer, bw as SerializedGroupLayer, S as SerializedLayer, bx as SerializedLayerEffects, by as SerializedLayeredImageEditorState, bz as SerializedPattern, bA as SerializedPixelLayer, bB as SerializedRasterMask, bC as SerializedSelection, bD as SerializedSmartContents, bE as SerializedSmartFilter, bF as SerializedSmartObjectLayer, bG as ShapeSelectionOptions, bH as SmartFilterKind, bI as SmartObjectInfo, bJ as SmartPsdData, bK as StrokeInit, bL as StrokeTool, bM as TONE_RANGE_PRESETS, bN as TRANSFORM_ANCHORS, bO as TextAnnotation, bP as ThresholdParams, bQ as ToneRangePreset, bR as TransformParams, bS as TransformReadout, bT as VibranceParams, bU as ViewportMetrics, bV as addLayerEffect, bW as addLayerFilter, bX as adjustmentNodeAsLayer, bY as anchorPoint, bZ as applyImageProjectionToContext, b_ as applyParams, b$ as blurFilter, c0 as borderCoverage, c1 as boxMean, c2 as boxPointOf, c3 as buildLayerMaskPlanes, c4 as calculateCropDrag, c5 as canvasToImagePoint, c6 as clampCropToImage, c7 as colorRange, c8 as combineSelections, c9 as computeHistogram, ca as computeSelectionBounds, cb as contractCoverage, cc as cornersFromMatrix, cd as coverageToByte, ce as createSelectionMask, cf as decodeLayerChannel, cg as decodeLayerMask, ch as decodeMergedImage, ci as decodePngDataUrl, cj as decodeSelectionRle, ck as depthMaskAlpha, cl as describeTransform, cm as deserializeEffects, cn as deserializeLayer, co as deserializeLayers, cp as deserializePatterns, cq as deserializeSelection, cr as developFilter, cs as distanceTransform, ct as duplicateLayer, cu as edgeWidth, cv as ellipsePoints, cw as ellipseSelection, cx as encodeSelectionRle, cy as encodeSurface, cz as expandCoverage, cA as exportPsd, cB as featherCoverage, cC as flipCorners, cD as fullSelection, cE as geometryHomography, cF as getAnnotationBounds, cG as getCropCursor, cH as getRotatedSize, cI as getViewportMetrics, cJ as getViewportProjection, cK as globalImageCache, cL as greyMorphology, cM as groupLayers, cN as guidePlanes, cO as guidedFilterColor, cP as hasSurface, cQ as hasWarp, cR as hashMaskContent, cS as histogramPath, cT as hitTestAnnotation, cU as hitTestCrop, cV as hueRange, cW as identityTransform, cX as imageToCanvasPoint, cY as importPsd, cZ as invertSelection, c_ as isActiveFilter, c$ as isIdentityTransform, d0 as isQuarterTurnSwapped, d1 as isSelectionEmpty, d2 as isSelectionMode, d3 as isSpatialFilter, d4 as isTransformAnchor, d5 as isValidWarp, d6 as layerEffectsOf, d7 as layerMaskCoverage, d8 as layerMaskFromSelection, d9 as layerMaskKey, da as layerName, db as layerTree, dc as layerTypeLabel, dd as magicWand, de as mapCropHandle, df as matrixFromCorners, dg as matrixFromParams, dh as migrateSerializedImageEditorState, di as migrateToLayeredState, dj as modifySelection, dk as moveLayer, dl as newLayerId, dm as normalizeAngle, dn as normalizeFilter, dp as normalizeLayerMask, dq as normalizeRect, dr as normalizeRefineEdgeParams, ds as normalizeStoredAdjustments, dt as offsetLayer, du as parseBlend, dv as parseColor, dw as parseSelectionMode, dx as pixelLayerBounds, dy as pixelLayers, dz as placeLayer, dA as polygonCoverage, dB as polygonSelection, dC as presetWarp, dD as previewStep, dE as projectImagePoint, dF as projectImageRect, dG as projectMaskCoverage, dH as psdToLayers, dI as readPsd, dJ as rectSelection, dK as referencePoint, dL as refineCoverage, dM as refineEdgeHalo, dN as refineSelection, dO as removeLayer, dP as removeLayerEffect, dQ as removeLayerFilter, dR as requireLayer, dS as requireUnlocked, dT as resizePixels, dU as resizeSelection, dV as resolveExternalAssets, dW as runLayerFilters, dX as selectionArea, dY as selectionFromCoverage, dZ as selectionFromPixels, d_ as selectionToCoverage, d$ as selectionToPixels, e0 as selectionValueAt, e1 as serializeContents, e2 as serializeEffects, e3 as serializeLayer, e4 as serializeLayers, e5 as serializeLayersExternal, e6 as serializePatterns, e7 as serializeSelection, e8 as setLayerEffects, e9 as setLayerEffectsEnabled, ea as setLayerMask, eb as setLayerProperties, ec as shiftCoverage, ed as smartObjectLayers, ee as smoothCoverage, ef as srgb8ToLab, eg as toHex, eh as toneRange, ei as transformHomography, ej as transformMap, ek as transformedBox, el as transformedPoint, em as ungroupLayer, en as unionRect, eo as unprojectCanvasPoint, ep as updateLayerEffect, eq as updateLayerFilter, er as updateLayerMaskProps, es as withNewIds, et as writePsd } from '../export-iMrop3Jm.js';
3
3
  import { b as LoadReport, J as JsonObject, f as MigrationStep } from '../migrate-iTlm3a8h.js';
4
- import { B as BlendMode, P as PixelSurface, R as RasterRect } from '../surface-AfHCH7BR.js';
5
- export { c as BLEND_MODES, d as BlendModeInfo, M as MaskSurface, e as Rgb, f as Rgba, S as SurfaceDraft, g as TILE, h as TILE_SHIFT, b as Tile, T as TileKey, a as TiledSurface, i as blendChannel, j as blendImageData, k as blendLum, l as blendPixel, m as blendRgb, n as canvasCompositeOperation, o as collectTiles, p as contentBounds, q as emptySurface, r as fillRect, s as finishTile, t as isBlendMode, u as isSeparableBlendMode, v as mixPigment8, w as mixPigmentRgb, x as normalizeBlendMode, y as packRgba, z as readPixel, A as readRegion, C as setLum, D as solidSurface, E as surfaceBytes, F as surfaceFromPixels, G as surfacesEqual, H as tileCoord, I as tileKey, J as tileRect, K as tilesInRect, L as translateSurface, N as uniformTile, O as writeRegion } from '../surface-AfHCH7BR.js';
4
+ import { B as BlendMode, P as PixelSurface, R as RasterRect } from '../surface-BBJN9wxg.js';
5
+ export { b as BLEND_MODES, d as BlendModeInfo, M as MaskSurface, e as Rgb, f as Rgba, S as SurfaceDraft, g as TILE, h as TILE_SHIFT, c as Tile, T as TileKey, a as TiledSurface, j as blendChannel, k as blendImageData, l as blendLum, m as blendPixel, n as blendRgb, o as canvasCompositeOperation, p as collectTiles, q as contentBounds, r as emptySurface, s as fillRect, t as finishTile, i as isBlendMode, u as isSeparableBlendMode, v as mixPigment8, w as mixPigmentRgb, x as normalizeBlendMode, y as packRgba, z as readPixel, A as readRegion, C as setLum, D as solidSurface, E as surfaceBytes, F as surfaceFromPixels, G as surfacesEqual, H as tileCoord, I as tileKey, J as tileRect, K as tilesInRect, L as translateSurface, N as uniformTile, O as writeRegion } from '../surface-BBJN9wxg.js';
6
6
  import { a as AgentToolProvider, A as AgentTool } from '../registry-D-4fit9C.js';
7
- import { j as LayerEffects, l as LayerEffectKind, i as LayerEffect, E as EffectPattern, I as Interpolation } from '../compositor-B1ZrKR89.js';
8
- export { B as BevelContour, m as BevelEmbossEffect, n as BevelStyle, o as BevelTechnique, p as BevelTexture, q as ColorOverlayEffect, r as CompositeCallOptions, s as CompositeStats, k as CompositorOptions, t as ContourPoint, D as DEFAULT_GLOBAL_LIGHT, u as DropShadowEffect, v as EffectContour, w as EffectFill, x as EffectGradient, y as EffectPatternRef, g as GlobalLight, z as GlowTechnique, A as GradientColorStop, F as GradientOpacityStop, H as GradientOverlayEffect, J as GradientStyle, K as INTERPOLATIONS, M as InnerGlowEffect, N as InnerShadowEffect, O as LAYER_EFFECT_KINDS, P as LayerEffectError, L as LayerLocks, Q as MAX_EFFECT_REACH, S as MAX_TRANSFORM_PIXELS, T as OuterGlowEffect, U as PatternOverlayEffect, V as PatternPlacement, W as PatternTile, X as ResampleOptions, Y as SatinEffect, Z as StrokeEffect, _ as StrokePosition, $ as TransformTooLargeError, a0 as blendTile, a1 as builtinPattern, a2 as builtinPatternIds, a3 as changedTiles, a4 as compositeSurfaceOver, a5 as defaultEffectGradient, a6 as defaultLayerEffect, a7 as effectColorHex, a8 as effectReach, a9 as effectsFingerprint, aa as effectsMargin, ab as effectsScale, ac as findLayer, ad as flattenLayers, ae as hasActiveEffects, af as hashNoise, ag as insertLayer, ah as isInterpolation, ai as isLayerEffectKind, aj as isLayerLocked, ak as keysWeight, al as layerEffectFields, am as layerEffectLabel, an as mapLayer, ao as mergeLayerEffect, ap as newEffectId, aq as normalizeLayerEffects, ar as parseEffectColor, as as reduceSurface, at as scaleLayerEffect, au as transformSurface, av as transformedBounds, aw as validateEffectGradient, ax as validateLayerEffect, ay as validateLayerEffects, az as warpSurface } from '../compositor-B1ZrKR89.js';
7
+ import { j as LayerEffects, l as LayerEffectKind, i as LayerEffect, E as EffectPattern, I as Interpolation } from '../compositor-BsYYllvR.js';
8
+ export { B as BevelContour, m as BevelEmbossEffect, n as BevelStyle, o as BevelTechnique, p as BevelTexture, q as ColorOverlayEffect, r as CompositeCallOptions, s as CompositeStats, k as CompositorOptions, t as ContourPoint, D as DEFAULT_GLOBAL_LIGHT, u as DropShadowEffect, v as EffectContour, w as EffectFill, x as EffectGradient, y as EffectPatternRef, g as GlobalLight, z as GlowTechnique, A as GradientColorStop, F as GradientOpacityStop, H as GradientOverlayEffect, J as GradientStyle, K as INTERPOLATIONS, M as InnerGlowEffect, N as InnerShadowEffect, O as LAYER_EFFECT_KINDS, P as LayerEffectError, L as LayerLocks, Q as MAX_EFFECT_REACH, S as MAX_TRANSFORM_PIXELS, T as OuterGlowEffect, U as PatternOverlayEffect, V as PatternPlacement, W as PatternTile, X as ResampleOptions, Y as SatinEffect, Z as StrokeEffect, _ as StrokePosition, $ as TransformTooLargeError, a0 as blendTile, a1 as builtinPattern, a2 as builtinPatternIds, a3 as changedTiles, a4 as compositeSurfaceOver, a5 as defaultEffectGradient, a6 as defaultLayerEffect, a7 as effectColorHex, a8 as effectReach, a9 as effectsFingerprint, aa as effectsMargin, ab as effectsScale, ac as findLayer, ad as flattenLayers, ae as hasActiveEffects, af as hashNoise, ag as insertLayer, ah as isInterpolation, ai as isLayerEffectKind, aj as isLayerLocked, ak as keysWeight, al as layerEffectFields, am as layerEffectLabel, an as mapLayer, ao as mergeLayerEffect, ap as newEffectId, aq as normalizeLayerEffects, ar as parseEffectColor, as as reduceSurface, at as scaleLayerEffect, au as transformSurface, av as transformedBounds, aw as validateEffectGradient, ax as validateLayerEffect, ay as validateLayerEffects, az as warpSurface } from '../compositor-BsYYllvR.js';
9
9
  import { b as CaptureSurface } from '../capture-wwNGaW05.js';
10
10
  export { DIRECT_GAUSSIAN_MAX_SIGMA, DecodedPng, EffectRect, ZlibError, adler32, base64ToBytes, bytesToBase64, curveLut, decodePng, deflate, deflateRaw, encodePng, gaussianBlur, inflate, inflateRaw, isPng, parseDataUrl, pngDataUrl, renderLayerEffects } from '../raster/index.js';
11
- import { a as MixerLoad, M as MixerSettings } from '../mixer-DG_9Yu2W.js';
12
- export { B as BrushSettings, C as CoverageMap, g as DEFAULT_BRUSH, h as DEFAULT_MIXER, D as Dab, i as DabWalker, E as EMPTY_MIXER_LOAD, b as MAX_BRUSH_SIZE, j as MIXER_DRAIN, k as MIXER_PICKUP_RATE, l as MIXING_MODELS, e as MixerStroke, d as MixerTarget, m as MixingModel, f as StrokeApply, c as StrokeCoverage, S as StrokePoint, n as applyStrokeToTile, o as cleanMixer, p as coverageTileCoord, q as dabCoverage, r as dabRect, s as loadMixer, t as normalizeBrush, u as normalizeMixer, v as rasterizeDab, w as smoothPoints, x as tipFalloff, y as tipReach, z as tipShape, A as walkDabs } from '../mixer-DG_9Yu2W.js';
11
+ import { a as MixerLoad, M as MixerSettings } from '../mixer-Cu5a9Bzd.js';
12
+ export { B as BrushSettings, C as CoverageMap, g as DEFAULT_BRUSH, h as DEFAULT_MIXER, D as Dab, i as DabWalker, E as EMPTY_MIXER_LOAD, b as MAX_BRUSH_SIZE, j as MIXER_DRAIN, k as MIXER_PICKUP_RATE, l as MIXING_MODELS, e as MixerStroke, d as MixerTarget, m as MixingModel, f as StrokeApply, c as StrokeCoverage, S as StrokePoint, n as applyStrokeToTile, o as cleanMixer, p as coverageTileCoord, q as dabCoverage, r as dabRect, s as loadMixer, t as normalizeBrush, u as normalizeMixer, v as rasterizeDab, w as smoothPoints, x as tipFalloff, y as tipReach, z as tipShape, A as walkDabs } from '../mixer-Cu5a9Bzd.js';
13
13
  export { PIGMENT_BANDS, PIGMENT_LAMBDA_MIN, PIGMENT_LAMBDA_STEP, PIGMENT_WAVELENGTHS, Pigment, PigmentOptions, PigmentRgb, createPigment, createPigmentTools, lerpPigment, lerpPigmentInto, mixPigments, reflectanceToRgb, rgbToReflectance, setPigmentColor } from '../paint/index.js';
14
14
  import { W as WarpStyle, a as WarpMesh, V as Vec2, Q as Quad } from '../types-CwMPoRMU.js';
15
15
  export { A as AffineMatrix, H as Homography } from '../types-CwMPoRMU.js';
@@ -1383,6 +1383,14 @@ declare function writeAdjustmentBlock<K extends AdjustmentKind>(kind: K, params:
1383
1383
  data: Uint8Array;
1384
1384
  };
1385
1385
 
1386
+ /**
1387
+ * Layer effects ↔ PSD: the object-based effects descriptor (`lfx2`, `lfxs` on groups, `lmfx` with
1388
+ * several instances per kind) both ways, and the legacy `lrFX` block on read. Key names follow the
1389
+ * descriptors Photoshop writes (documented by reverse-engineering in psd-tools and ag-psd, MIT).
1390
+ *
1391
+ * Reading reports what it could not represent exactly (`notes`), so import warns only for that.
1392
+ */
1393
+
1386
1394
  interface ParsedLayerEffects {
1387
1395
  effects: LayerEffects;
1388
1396
  /** What could not be held exactly (empty when the mapping is exact). */
@@ -10,6 +10,7 @@ import {
10
10
  ADJUSTMENT_KINDS,
11
11
  ADJUSTMENT_LUT_SIZE,
12
12
  AS_SHOT_KELVIN,
13
+ BROWSER_IMAGE_TYPES,
13
14
  D50,
14
15
  D65,
15
16
  DEFAULT_ADJUSTMENTS_VALUES,
@@ -244,6 +245,7 @@ import {
244
245
  setSmartFiltersEnabled,
245
246
  setSmartPlacement,
246
247
  shiftCoverage,
248
+ smartContentsFile,
247
249
  smartObjectLayers,
248
250
  smoothCoverage,
249
251
  srgbToLinear,
@@ -277,7 +279,7 @@ import {
277
279
  writePsd,
278
280
  xyToTempTint,
279
281
  xyToUv
280
- } from "../chunk-NQLQ2JOI.js";
282
+ } from "../chunk-4X5MIVCE.js";
281
283
  import {
282
284
  DEFAULT_GLOBAL_LIGHT,
283
285
  DIRECT_GAUSSIAN_MAX_SIGMA,
@@ -2992,39 +2994,6 @@ var FreeTransformSession = class {
2992
2994
  };
2993
2995
 
2994
2996
  // src/image-editor/controller.ts
2995
- function prepareNestedForPsd(layers) {
2996
- const out = [];
2997
- for (const l of layers) {
2998
- if (l.type === "annotation") continue;
2999
- let next = l;
3000
- if (l.type === "group") next = { ...l, children: prepareNestedForPsd(l.children) };
3001
- else if (l.type === "smart") next = rasterizeSmartObject([l], l.id).layer;
3002
- else if (l.type === "pixel" && l.filters?.length) {
3003
- const p = { ...l };
3004
- if (l.filters.some(isActiveFilter)) {
3005
- const b = l.surface.bounds;
3006
- if (b) {
3007
- const r = { x: b.x + l.offset.x - 64, y: b.y + l.offset.y - 64, width: b.width + 128, height: b.height + 128 };
3008
- const plain3 = { ...l, visible: true, opacity: 1, blend: "normal" };
3009
- delete plain3.mask;
3010
- delete plain3.clipped;
3011
- delete plain3.effects;
3012
- delete plain3.fillOpacity;
3013
- const data = new LayerCompositor().composite([plain3], r, { width: r.x + r.width, height: r.y + r.height });
3014
- p.surface = surfaceFromPixels({ width: r.width, height: r.height, data }, 4, r.x - l.offset.x, r.y - l.offset.y);
3015
- }
3016
- }
3017
- delete p.filters;
3018
- next = p;
3019
- }
3020
- if (next.mask?.source) {
3021
- next = { ...next };
3022
- delete next.mask;
3023
- }
3024
- out.push(next);
3025
- }
3026
- return out;
3027
- }
3028
2997
  var IMAGE_EDITOR_SCHEMA_VERSION = LAYERED_SCHEMA_VERSION;
3029
2998
  function paintCoverageInto(base, coverage, apply, rects) {
3030
2999
  const tiles = new Map(base.tiles);
@@ -3650,6 +3619,17 @@ var ImageEditorController = class {
3650
3619
  }
3651
3620
  return b ? { x: b.x + layer.offset.x, y: b.y + layer.offset.y, width: b.width, height: b.height } : null;
3652
3621
  }
3622
+ /**
3623
+ * A tight base64 PNG data URL of a pixel or smart layer's content, or `null` for an unknown or
3624
+ * non-pixel layer, or when the layer is completely transparent.
3625
+ */
3626
+ getLayerDataURL(id) {
3627
+ const layer = this.getLayer(id);
3628
+ if (!layer || layer.type !== "pixel" && layer.type !== "smart") return null;
3629
+ const surface = this.surfaceOf(layer);
3630
+ const enc = encodeSurface(surface);
3631
+ return enc ? enc.url : null;
3632
+ }
3653
3633
  /**
3654
3634
  * Composites the layer stack in document space without a canvas (annotation layers need one
3655
3635
  * and are left out): `rect` (default: the canvas) as RGBA, straight alpha. Crop, rotation and
@@ -4392,20 +4372,13 @@ var ImageEditorController = class {
4392
4372
  const c = layer.contents;
4393
4373
  const base = c.name.replace(/\.\w+$/, "") || "Contents";
4394
4374
  if (c.file) {
4395
- const mime = { psd: "image/vnd.adobe.photoshop", psb: "image/vnd.adobe.photoshop", png: "image/png", jpg: "image/jpeg", jpeg: "image/jpeg", tif: "image/tiff", tiff: "image/tiff", gif: "image/gif" };
4375
+ const mime = { psd: "image/vnd.adobe.photoshop", psb: "image/vnd.adobe.photoshop", pdf: "application/pdf", ...BROWSER_IMAGE_TYPES };
4396
4376
  const ext = c.file.type.toLowerCase();
4397
4377
  return { name: /\.\w+$/.test(c.name) ? c.name : `${base}.${ext}`, mimeType: mime[ext] ?? "application/octet-stream", bytes: c.file.bytes };
4398
4378
  }
4399
4379
  if (!isContentsDecoded(c)) throw new LayerOperationError(`The contents of "${layer.name || id}" are not available here.`);
4400
- if (c.kind === "raster") {
4401
- const data = readRegion(contentsSurface(c), { x: 0, y: 0, width: c.width, height: c.height });
4402
- return { name: `${base}.png`, mimeType: "image/png", bytes: encodePng(c.width, c.height, data) };
4403
- }
4404
- const doc = c.document;
4405
- const merged = readRegion(contentsSurface(c), { x: 0, y: 0, width: c.width, height: c.height });
4406
- const prepared = prepareNestedForPsd(doc.layers);
4407
- const res = exportPsd({ width: c.width, height: c.height, layers: prepared, merged, patterns: doc.patterns, globalLight: doc.globalLight });
4408
- return { name: `${base}.${res.psb ? "psb" : "psd"}`, mimeType: "image/vnd.adobe.photoshop", bytes: res.bytes };
4380
+ const f = smartContentsFile(c);
4381
+ return { name: f.name, mimeType: f.name.endsWith(".png") ? "image/png" : "image/vnd.adobe.photoshop", bytes: f.bytes };
4409
4382
  }
4410
4383
  /**
4411
4384
  * Layer › Smart Objects › New Smart Object via Copy (`linked: false`: independent contents) or a
@@ -4485,11 +4458,13 @@ var ImageEditorController = class {
4485
4458
  */
4486
4459
  async prepareSmartObjects() {
4487
4460
  const pending = /* @__PURE__ */ new Map();
4488
- for (const l of flattenLayers(this.state.layers)) if (l.type === "smart" && !isContentsDecoded(l.contents) && l.contents.file) pending.set(l.contents.id, l.contents);
4461
+ for (const l of flattenLayers(this.state.layers)) {
4462
+ if (l.type === "smart" && !isContentsDecoded(l.contents) && l.contents.file && BROWSER_IMAGE_TYPES[l.contents.file.type]) pending.set(l.contents.id, l.contents);
4463
+ }
4489
4464
  const left = [];
4490
4465
  for (const [cid, c] of pending) {
4491
4466
  try {
4492
- const url = `data:${c.file.type === "png" ? "image/png" : c.file.type === "gif" ? "image/gif" : c.file.type === "tif" || c.file.type === "tiff" ? "image/tiff" : "image/jpeg"};base64,${bytesToBase64(c.file.bytes)}`;
4467
+ const url = `data:${BROWSER_IMAGE_TYPES[c.file.type]};base64,${bytesToBase64(c.file.bytes)}`;
4493
4468
  const px2 = await this.decodeImage(url);
4494
4469
  const decoded = { ...c, kind: "raster", raster: rasterContents(px2, c.name, cid).raster, width: px2.width, height: px2.height };
4495
4470
  const swap = (layers) => {
@@ -4841,6 +4816,15 @@ var ImageEditorController = class {
4841
4816
  byKey.set(key, thumb);
4842
4817
  return thumb;
4843
4818
  }
4819
+ /**
4820
+ * A small PNG data URL preview of a pixel or smart layer over the canvas (or of its mask with `mask: true`),
4821
+ * longest side `maxSide` px; `null` for layers without pixels.
4822
+ */
4823
+ getLayerThumbnailDataURL(id, options = {}) {
4824
+ const thumb = this.getLayerThumbnail(id, options);
4825
+ if (!thumb) return null;
4826
+ return pngDataUrl(thumb.width, thumb.height, thumb.data, 4);
4827
+ }
4844
4828
  // --- Painting ---
4845
4829
  /** Brush settings, colours and tool options of the paint tools (view state, no undo). */
4846
4830
  setPaintOptions(options) {
@@ -6057,11 +6041,11 @@ var ImageEditorController = class {
6057
6041
  return out2;
6058
6042
  }
6059
6043
  if (layer.type === "smart") {
6060
- add2("Smart objects were written as pixel layers (their rendered pixels)", layer.name);
6061
- const px2 = rasterizeSmartObject([layer], layer.id).layer;
6062
- const mask2 = bakeMask(px2);
6063
- if (mask2) px2.mask = mask2;
6064
- return px2;
6044
+ const out2 = { ...layer };
6045
+ const mask2 = bakeMask(layer);
6046
+ if (mask2) out2.mask = mask2;
6047
+ else delete out2.mask;
6048
+ return out2;
6065
6049
  }
6066
6050
  let out = { ...layer };
6067
6051
  if (layer.source === "document") {
@@ -8747,7 +8731,7 @@ function createImagePsdTools(controller) {
8747
8731
  const open = {
8748
8732
  name: "import_psd",
8749
8733
  title: "Open a PSD as the document",
8750
- description: "Opens a PSD / PSB as the document, replacing the current layers, crop and rotation (one undo step; undo brings the previous document back). Pixel, group and adjustment layers, masks, blend modes, opacity, fill, clipping, visibility, locks, layer effects (with the patterns and global light of the file) map directly; type, smart-object, fill and shape layers come in as their pixels; unsupported adjustments are left out. Returns the new layer tree with ids, the size and the warnings (each names the affected layers).",
8734
+ description: "Opens a PSD / PSB as the document, replacing the current layers, crop and rotation (one undo step; undo brings the previous document back). Pixel, group and adjustment layers, masks, blend modes, opacity, fill, clipping, visibility, locks, layer effects (with the patterns and global light of the file) map directly; smart objects come in as smart objects (embedded contents, placement and warp, smart filters: Box Blur is drawn, other Photoshop filters are kept but not drawn, filter mask; linked contents as their stored pixels); type, fill and shape layers come in as their pixels; unsupported adjustments are left out. Returns the new layer tree with ids, the size and the warnings (each names the affected layers).",
8751
8735
  inputSchema: { type: "object", properties: { data: DATA }, required: ["data"], additionalProperties: false },
8752
8736
  annotations: { title: "Open a PSD as the document", ...DESTRUCTIVE4 },
8753
8737
  handler: ({ data }) => {
@@ -8766,7 +8750,7 @@ function createImagePsdTools(controller) {
8766
8750
  const save = {
8767
8751
  name: "export_psd",
8768
8752
  title: "Export the document as a PSD",
8769
- description: "Writes the document as an 8-bit RGB PSD (a PSB above 30000 px) with real layers, groups, adjustment layers, masks and layer effects (an effects block opened from a PSD is written back unchanged while its effects are; the patterns effects use are embedded), in the source frame (crop and rotation are not applied). Layer filters and depth masks are baked, annotation layers are rasterized (in a browser; elsewhere left out), and the merged image is the editor's composite. Changes nothing. Returns the file as base64, its size in bytes, whether it is a PSB, and warnings for everything that was changed or left out.",
8753
+ description: "Writes the document as an 8-bit RGB PSD (a PSB above 30000 px) with real layers, groups, adjustment layers, masks and layer effects (an effects block opened from a PSD is written back unchanged while its effects are; the patterns effects use are embedded), in the source frame (crop and rotation are not applied). Smart objects are written as Photoshop smart objects (contents embedded once per linked set, placement, warp, smart filters and filter mask; a Develop smart filter has no Photoshop filter and is left out of the list). Layer filters and depth masks are baked, annotation layers are rasterized (in a browser; elsewhere left out), and the merged image is the editor's composite. Changes nothing. Returns the file as base64, its size in bytes, whether it is a PSB, and warnings for everything that was changed or left out.",
8770
8754
  inputSchema: { type: "object", properties: {}, additionalProperties: false },
8771
8755
  annotations: { title: "Export the document as a PSD", ...READ5 },
8772
8756
  handler: async () => {