@imgly/codesign-mcp 0.1.5 → 0.1.6
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/README.md +51 -1
- package/assets/docs/guide/SKILL.md +45 -53
- package/assets/docs/guide/animation/create/base.md +234 -243
- package/assets/docs/guide/animation/create/text.md +250 -231
- package/assets/docs/guide/animation/create.md +197 -231
- package/assets/docs/guide/animation/edit.md +196 -271
- package/assets/docs/guide/animation/types.md +182 -185
- package/assets/docs/guide/animation.md +9 -6
- package/assets/docs/guide/api/AssetAPI.md +7 -53
- package/assets/docs/guide/api/BlockAPI.md +725 -648
- package/assets/docs/guide/api/CreativeEngine.md +7 -16
- package/assets/docs/guide/api/EditorAPI.md +32 -93
- package/assets/docs/guide/api/EventAPI.md +1 -2
- package/assets/docs/guide/api/SceneAPI.md +47 -98
- package/assets/docs/guide/api/VariableAPI.md +1 -4
- package/assets/docs/guide/api/node/classes/assetapi.md +1090 -0
- package/assets/docs/guide/api/node/classes/blockapi.md +12965 -0
- package/assets/docs/guide/api/node/classes/creativeengine.md +319 -0
- package/assets/docs/guide/api/node/classes/editorapi.md +3417 -0
- package/assets/docs/guide/api/node/classes/engineactions.md +319 -0
- package/assets/docs/guide/api/node/classes/eventapi.md +56 -0
- package/assets/docs/guide/api/node/classes/sceneapi.md +1370 -0
- package/assets/docs/guide/api/node/classes/variableapi.md +143 -0
- package/assets/docs/guide/api/node/enumerations/compressionformat.md +23 -0
- package/assets/docs/guide/api/node/enumerations/compressionlevel.md +24 -0
- package/assets/docs/guide/api/node/functions/iscmykcolor.md +30 -0
- package/assets/docs/guide/api/node/functions/isrgbacolor.md +30 -0
- package/assets/docs/guide/api/node/functions/isspotcolor.md +30 -0
- package/assets/docs/guide/api/node/interfaces/addvideooptions.md +31 -0
- package/assets/docs/guide/api/node/interfaces/applyassetoptions.md +31 -0
- package/assets/docs/guide/api/node/interfaces/asset.md +30 -0
- package/assets/docs/guide/api/node/interfaces/assetbooleanproperty.md +25 -0
- package/assets/docs/guide/api/node/interfaces/assetcmykcolor.md +26 -0
- package/assets/docs/guide/api/node/interfaces/assetcolorproperty.md +25 -0
- package/assets/docs/guide/api/node/interfaces/assetcontentaspectratio.md +23 -0
- package/assets/docs/guide/api/node/interfaces/assetdefinition.md +31 -0
- package/assets/docs/guide/api/node/interfaces/assetenumproperty.md +26 -0
- package/assets/docs/guide/api/node/interfaces/assetfixedaspectratio.md +24 -0
- package/assets/docs/guide/api/node/interfaces/assetfixedsize.md +25 -0
- package/assets/docs/guide/api/node/interfaces/assetfreeaspectratio.md +22 -0
- package/assets/docs/guide/api/node/interfaces/assetnumberproperty.md +28 -0
- package/assets/docs/guide/api/node/interfaces/assetpayload.md +27 -0
- package/assets/docs/guide/api/node/interfaces/assetquerydata.md +32 -0
- package/assets/docs/guide/api/node/interfaces/assetresult.md +46 -0
- package/assets/docs/guide/api/node/interfaces/assetrgbcolor.md +25 -0
- package/assets/docs/guide/api/node/interfaces/assetsource.md +111 -0
- package/assets/docs/guide/api/node/interfaces/assetspotcolor.md +25 -0
- package/assets/docs/guide/api/node/interfaces/assetsqueryresult.md +31 -0
- package/assets/docs/guide/api/node/interfaces/assetstringproperty.md +25 -0
- package/assets/docs/guide/api/node/interfaces/assetstylepreset.md +39 -0
- package/assets/docs/guide/api/node/interfaces/assetstylepresetanimation.md +23 -0
- package/assets/docs/guide/api/node/interfaces/audiotrackinfo.md +32 -0
- package/assets/docs/guide/api/node/interfaces/blockevent.md +26 -0
- package/assets/docs/guide/api/node/interfaces/blockstateerror.md +26 -0
- package/assets/docs/guide/api/node/interfaces/blockstatepending.md +26 -0
- package/assets/docs/guide/api/node/interfaces/blockstateready.md +25 -0
- package/assets/docs/guide/api/node/interfaces/buffer.md +26 -0
- package/assets/docs/guide/api/node/interfaces/characterinkbox.md +29 -0
- package/assets/docs/guide/api/node/interfaces/cmykcolor.md +34 -0
- package/assets/docs/guide/api/node/interfaces/completeassetresult.md +46 -0
- package/assets/docs/guide/api/node/interfaces/configuration.md +38 -0
- package/assets/docs/guide/api/node/interfaces/dominantcolor.md +25 -0
- package/assets/docs/guide/api/node/interfaces/dominantcolorsoptions.md +23 -0
- package/assets/docs/guide/api/node/interfaces/engineactioninfo.md +24 -0
- package/assets/docs/guide/api/node/interfaces/engineactionsregistry.md +18 -0
- package/assets/docs/guide/api/node/interfaces/engineplugin.md +30 -0
- package/assets/docs/guide/api/node/interfaces/font.md +27 -0
- package/assets/docs/guide/api/node/interfaces/fontmetrics.md +32 -0
- package/assets/docs/guide/api/node/interfaces/gradientcolorstop.md +28 -0
- package/assets/docs/guide/api/node/interfaces/logger.md +39 -0
- package/assets/docs/guide/api/node/interfaces/pageduration.md +23 -0
- package/assets/docs/guide/api/node/interfaces/range.md +23 -0
- package/assets/docs/guide/api/node/interfaces/rgbacolor.md +32 -0
- package/assets/docs/guide/api/node/interfaces/rgbcolor.md +30 -0
- package/assets/docs/guide/api/node/interfaces/settings.md +126 -0
- package/assets/docs/guide/api/node/interfaces/size2.md +21 -0
- package/assets/docs/guide/api/node/interfaces/source.md +24 -0
- package/assets/docs/guide/api/node/interfaces/spotcolor.md +30 -0
- package/assets/docs/guide/api/node/interfaces/textdecorationconfig.md +31 -0
- package/assets/docs/guide/api/node/interfaces/textfontsizeoptions.md +24 -0
- package/assets/docs/guide/api/node/interfaces/textruninfo.md +33 -0
- package/assets/docs/guide/api/node/interfaces/transientresource.md +26 -0
- package/assets/docs/guide/api/node/interfaces/typeface.md +23 -0
- package/assets/docs/guide/api/node/interfaces/vec2.md +21 -0
- package/assets/docs/guide/api/node/interfaces/vec3.md +22 -0
- package/assets/docs/guide/api/node/type-aliases/addimageoptions.md +36 -0
- package/assets/docs/guide/api/node/type-aliases/animationbaselinedirection.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/animationblockswipetextdirection.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/animationeasing.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/animationentry.md +28 -0
- package/assets/docs/guide/api/node/type-aliases/animationgrowdirection.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/animationjumploopdirection.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/animationkenburnsdirection.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/animationmergetextdirection.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/animationoptions.md +28 -0
- package/assets/docs/guide/api/node/type-aliases/animationspindirection.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/animationspinloopdirection.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/animationtype.md +24 -0
- package/assets/docs/guide/api/node/type-aliases/animationtypelonghand.md +21 -0
- package/assets/docs/guide/api/node/type-aliases/animationtypeshorthand.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/animationtypewritertextwritingstyle.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/animationwipedirection.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/applicationmimetype.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/assetcolor.md +23 -0
- package/assets/docs/guide/api/node/type-aliases/assetfilter.md +47 -0
- package/assets/docs/guide/api/node/type-aliases/assetgroups.md +25 -0
- package/assets/docs/guide/api/node/type-aliases/assetmetadata.md +42 -0
- package/assets/docs/guide/api/node/type-aliases/assetproperty.md +25 -0
- package/assets/docs/guide/api/node/type-aliases/assetpropertyfilter.md +41 -0
- package/assets/docs/guide/api/node/type-aliases/assetpropertypath.md +26 -0
- package/assets/docs/guide/api/node/type-aliases/assetstylepresetanimationproperties.md +34 -0
- package/assets/docs/guide/api/node/type-aliases/assetstylepresetproperties.md +29 -0
- package/assets/docs/guide/api/node/type-aliases/assetstylepresetpropertyvalue.md +29 -0
- package/assets/docs/guide/api/node/type-aliases/assetstylepresetscalableproperty.md +28 -0
- package/assets/docs/guide/api/node/type-aliases/assettransformpreset.md +24 -0
- package/assets/docs/guide/api/node/type-aliases/asyncuriresolver.md +36 -0
- package/assets/docs/guide/api/node/type-aliases/audioexportoptions.md +43 -0
- package/assets/docs/guide/api/node/type-aliases/audiofromvideooptions.md +27 -0
- package/assets/docs/guide/api/node/type-aliases/audiomimetype.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/blendmode.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/blockenumtype.md +63 -0
- package/assets/docs/guide/api/node/type-aliases/blockstate.md +26 -0
- package/assets/docs/guide/api/node/type-aliases/blurtype.md +24 -0
- package/assets/docs/guide/api/node/type-aliases/blurtypelonghand.md +21 -0
- package/assets/docs/guide/api/node/type-aliases/blurtypeshorthand.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/booleanoperation.md +27 -0
- package/assets/docs/guide/api/node/type-aliases/boolpropertyname.md +79 -0
- package/assets/docs/guide/api/node/type-aliases/cameraclampingovershootmode.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/captionhorizontalalignment.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/captionverticalalignment.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/cmyk.md +23 -0
- package/assets/docs/guide/api/node/type-aliases/color.md +23 -0
- package/assets/docs/guide/api/node/type-aliases/colorpickercolormode.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/colorpropertyname.md +31 -0
- package/assets/docs/guide/api/node/type-aliases/colorspace.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/contentfillmode.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/controlgizmomovehandlevisibility.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/controlgizmoresizehandlesvisibility.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/controlgizmorotatehandlesvisibility.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/controlgizmoscalehandlesvisibility.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/createsceneoptions.md +30 -0
- package/assets/docs/guide/api/node/type-aliases/cutoutoperation.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/cutouttype.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/defaultassetsourceid.md +37 -0
- package/assets/docs/guide/api/node/type-aliases/demoassetsourceid.md +33 -0
- package/assets/docs/guide/api/node/type-aliases/designblockid.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/designblocktype.md +24 -0
- package/assets/docs/guide/api/node/type-aliases/designblocktypelonghand.md +21 -0
- package/assets/docs/guide/api/node/type-aliases/designblocktypeshorthand.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/designunit.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/doubleclickselectionmode.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/doublepropertyname.md +26 -0
- package/assets/docs/guide/api/node/type-aliases/dropshadowoptions.md +32 -0
- package/assets/docs/guide/api/node/type-aliases/editmode.md +27 -0
- package/assets/docs/guide/api/node/type-aliases/effecttype.md +24 -0
- package/assets/docs/guide/api/node/type-aliases/effecttypelonghand.md +21 -0
- package/assets/docs/guide/api/node/type-aliases/effecttypeshorthand.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/engineactionid.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/enginecustomactionfunction.md +30 -0
- package/assets/docs/guide/api/node/type-aliases/engineplugincontext.md +30 -0
- package/assets/docs/guide/api/node/type-aliases/enumpropertyname.md +59 -0
- package/assets/docs/guide/api/node/type-aliases/enumvalues.md +59 -0
- package/assets/docs/guide/api/node/type-aliases/exportoptions.md +57 -0
- package/assets/docs/guide/api/node/type-aliases/fillpixelstreamorientation.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/filltype.md +24 -0
- package/assets/docs/guide/api/node/type-aliases/filltypelonghand.md +21 -0
- package/assets/docs/guide/api/node/type-aliases/filltypeshorthand.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/floatpropertyname.md +184 -0
- package/assets/docs/guide/api/node/type-aliases/fontsizeunit.md +23 -0
- package/assets/docs/guide/api/node/type-aliases/fontstyle.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/fontweight.md +30 -0
- package/assets/docs/guide/api/node/type-aliases/gradientstoprgba.md +23 -0
- package/assets/docs/guide/api/node/type-aliases/heightmode.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/hexcolorstring.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/historyid.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/historyupdate.md +25 -0
- package/assets/docs/guide/api/node/type-aliases/horizontalblockalignment.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/horizontalcontentfillalignment.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/horizontaltextalignment.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/imagemimetype.md +25 -0
- package/assets/docs/guide/api/node/type-aliases/intpropertyname.md +26 -0
- package/assets/docs/guide/api/node/type-aliases/liststyle.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/locale.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/loglevel.md +24 -0
- package/assets/docs/guide/api/node/type-aliases/mimetype.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/objecttype.md +24 -0
- package/assets/docs/guide/api/node/type-aliases/objecttypelonghand.md +27 -0
- package/assets/docs/guide/api/node/type-aliases/objecttypeshorthand.md +27 -0
- package/assets/docs/guide/api/node/type-aliases/optionalprefix.md +24 -0
- package/assets/docs/guide/api/node/type-aliases/pageguidessource.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/palettecolor.md +24 -0
- package/assets/docs/guide/api/node/type-aliases/positionmode.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/positionxmode.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/positionymode.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/propertytype.md +31 -0
- package/assets/docs/guide/api/node/type-aliases/rgba.md +23 -0
- package/assets/docs/guide/api/node/type-aliases/rolestring.md +23 -0
- package/assets/docs/guide/api/node/type-aliases/scenefontsizeunit.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/scenelayout.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/scenemode.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/scope.md +50 -0
- package/assets/docs/guide/api/node/type-aliases/settingboolpropertyname.md +62 -0
- package/assets/docs/guide/api/node/type-aliases/settingcolorpropertyname.md +38 -0
- package/assets/docs/guide/api/node/type-aliases/settingenumpropertyname.md +29 -0
- package/assets/docs/guide/api/node/type-aliases/settingenumtype.md +33 -0
- package/assets/docs/guide/api/node/type-aliases/settingenumvalues.md +29 -0
- package/assets/docs/guide/api/node/type-aliases/settingfloatpropertyname.md +25 -0
- package/assets/docs/guide/api/node/type-aliases/settingintpropertyname.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/settingkey.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/settingsbool.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/settingscolor.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/settingscolorrgba.md +24 -0
- package/assets/docs/guide/api/node/type-aliases/settingsenum.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/settingsfloat.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/settingsint.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/settingsstring.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/settingstringpropertyname.md +28 -0
- package/assets/docs/guide/api/node/type-aliases/settingtype.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/settingvaluetype.md +26 -0
- package/assets/docs/guide/api/node/type-aliases/shapetype.md +24 -0
- package/assets/docs/guide/api/node/type-aliases/shapetypelonghand.md +21 -0
- package/assets/docs/guide/api/node/type-aliases/shapetypeshorthand.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/shapevectorpathfillrule.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/sizemode.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/sortingorder.md +21 -0
- package/assets/docs/guide/api/node/type-aliases/sourcesetpropertyname.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/splitoptions.md +28 -0
- package/assets/docs/guide/api/node/type-aliases/stringpropertyname.md +43 -0
- package/assets/docs/guide/api/node/type-aliases/strokecap.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/strokecornergeometry.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/strokedashendcap.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/strokedashstartcap.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/strokeendcap.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/strokeposition.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/strokestartcap.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/strokestyle.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/syncuriresolver.md +31 -0
- package/assets/docs/guide/api/node/type-aliases/textanimationwritingstyle.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/textcase.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/textdecorationline.md +27 -0
- package/assets/docs/guide/api/node/type-aliases/textdecorationstyle.md +26 -0
- package/assets/docs/guide/api/node/type-aliases/textverticalalignment.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/timelinetrackvisibility.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/touchpinchaction.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/touchrotateaction.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/typefacedefinition.md +41 -0
- package/assets/docs/guide/api/node/type-aliases/verticalblockalignment.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/verticalcontentfillalignment.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/videoexportoptions.md +54 -0
- package/assets/docs/guide/api/node/type-aliases/videomimetype.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/widthmode.md +18 -0
- package/assets/docs/guide/api/node/type-aliases/xywh.md +23 -0
- package/assets/docs/guide/api/node/type-aliases/zoomautofitaxis.md +20 -0
- package/assets/docs/guide/api/node/type-aliases/zoomoptions.md +27 -0
- package/assets/docs/guide/api/node/variables/animation_types.md +21 -0
- package/assets/docs/guide/api/node/variables/animationbaselinedirectionvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/animationblockswipetextdirectionvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/animationeasingvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/animationgrowdirectionvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/animationjumploopdirectionvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/animationkenburnsdirectionvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/animationmergetextdirectionvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/animationspindirectionvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/animationspinloopdirectionvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/animationtypewritertextwritingstylevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/animationwipedirectionvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/blendmodevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/blur_types.md +21 -0
- package/assets/docs/guide/api/node/variables/cameraclampingovershootmodevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/captionhorizontalalignmentvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/captionverticalalignmentvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/colorpickercolormodevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/contentfillmodevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/controlgizmomovehandlevisibilityvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/controlgizmoresizehandlesvisibilityvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/controlgizmorotatehandlesvisibilityvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/controlgizmoscalehandlesvisibilityvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/cutouttypevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/design_block_types.md +21 -0
- package/assets/docs/guide/api/node/variables/doubleclickselectionmodevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/effect_types.md +21 -0
- package/assets/docs/guide/api/node/variables/fill_types.md +21 -0
- package/assets/docs/guide/api/node/variables/fillpixelstreamorientationvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/heightmodevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/horizontalcontentfillalignmentvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/loglevel.md +37 -0
- package/assets/docs/guide/api/node/variables/mimetype.md +41 -0
- package/assets/docs/guide/api/node/variables/pageguidessourcevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/positionxmodevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/positionymodevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/scenedesignunitvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/scenefontsizeunitvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/scenelayoutvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/scenemodevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/shape_types.md +21 -0
- package/assets/docs/guide/api/node/variables/shapevectorpathfillrulevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/strokecapvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/strokecornergeometryvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/strokedashendcapvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/strokedashstartcapvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/strokeendcapvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/strokepositionvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/strokestartcapvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/strokestylevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/textanimationwritingstylevalues.md +18 -0
- package/assets/docs/guide/api/node/variables/texthorizontalalignmentvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/textverticalalignmentvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/timelinetrackvisibilityvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/touchpinchactionvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/touchrotateactionvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/verticalcontentfillalignmentvalues.md +18 -0
- package/assets/docs/guide/api/node/variables/widthmodevalues.md +18 -0
- package/assets/docs/guide/api/types.md +5 -9
- package/assets/docs/guide/api-reference/overview.md +7 -7
- package/assets/docs/guide/automation/auto-resize.md +263 -300
- package/assets/docs/guide/automation/data-merge.md +246 -275
- package/assets/docs/guide/automation/design-generation.md +102 -31
- package/assets/docs/guide/automation/multi-image-generation.md +758 -0
- package/assets/docs/guide/automation/overview.md +21 -4
- package/assets/docs/guide/automation.md +10 -5
- package/assets/docs/guide/capabilities.md +6 -4
- package/assets/docs/guide/colors/adjust.md +247 -249
- package/assets/docs/guide/colors/apply.md +127 -138
- package/assets/docs/guide/colors/basics.md +126 -150
- package/assets/docs/guide/colors/conversion.md +171 -177
- package/assets/docs/guide/colors/create-color-palette.md +244 -245
- package/assets/docs/guide/colors/extract-colors.md +144 -0
- package/assets/docs/guide/colors/for-print/cmyk.md +292 -352
- package/assets/docs/guide/colors/for-print/spot.md +521 -578
- package/assets/docs/guide/colors/for-print.md +9 -4
- package/assets/docs/guide/colors/for-screen/p3.md +12 -10
- package/assets/docs/guide/colors/for-screen/srgb.md +107 -133
- package/assets/docs/guide/colors/for-screen.md +9 -4
- package/assets/docs/guide/colors/overview.md +6 -4
- package/assets/docs/guide/colors/replace.md +381 -419
- package/assets/docs/guide/colors.md +9 -4
- package/assets/docs/guide/compatibility.md +7 -5
- package/assets/docs/guide/concepts/architecture.md +17 -15
- package/assets/docs/guide/concepts/assets.md +152 -140
- package/assets/docs/guide/concepts/blocks.md +227 -323
- package/assets/docs/guide/concepts/buffers.md +147 -276
- package/assets/docs/guide/concepts/design-units.md +95 -145
- package/assets/docs/guide/concepts/editing-workflow.md +69 -183
- package/assets/docs/guide/concepts/events.md +80 -122
- package/assets/docs/guide/concepts/headless-mode.md +237 -0
- package/assets/docs/guide/concepts/pages.md +137 -127
- package/assets/docs/guide/concepts/resources.md +156 -217
- package/assets/docs/guide/concepts/scenes.md +191 -210
- package/assets/docs/guide/concepts/templating.md +118 -74
- package/assets/docs/guide/concepts/terminology.md +49 -47
- package/assets/docs/guide/concepts/undo-and-history.md +229 -303
- package/assets/docs/guide/concepts.md +9 -7
- package/assets/docs/guide/configuration.md +252 -380
- package/assets/docs/guide/conversion/overview.md +33 -4
- package/assets/docs/guide/conversion/to-base64.md +127 -167
- package/assets/docs/guide/conversion/to-pdf.md +24 -474
- package/assets/docs/guide/conversion/to-png.md +168 -211
- package/assets/docs/guide/conversion.md +9 -4
- package/assets/docs/guide/create-audio/audio/add-music.md +301 -327
- package/assets/docs/guide/create-audio/audio/add-sound-effects.md +475 -359
- package/assets/docs/guide/create-audio/audio/loop.md +232 -272
- package/assets/docs/guide/create-composition/add-background.md +237 -239
- package/assets/docs/guide/create-composition/blend-modes.md +118 -209
- package/assets/docs/guide/create-composition/collage.md +538 -320
- package/assets/docs/guide/create-composition/group-and-ungroup.md +216 -261
- package/assets/docs/guide/create-composition/layer-management.md +219 -257
- package/assets/docs/guide/create-composition/layout.md +513 -315
- package/assets/docs/guide/create-composition/lock-design.md +90 -109
- package/assets/docs/guide/create-composition/multi-page.md +133 -113
- package/assets/docs/guide/create-composition/overview.md +16 -4
- package/assets/docs/guide/create-composition/programmatic.md +288 -344
- package/assets/docs/guide/create-composition.md +10 -5
- package/assets/docs/guide/create-templates/add-dynamic-content/placeholders.md +443 -569
- package/assets/docs/guide/create-templates/add-dynamic-content/set-editing-constraints.md +567 -470
- package/assets/docs/guide/create-templates/add-dynamic-content/text-variables.md +179 -516
- package/assets/docs/guide/create-templates/add-dynamic-content.md +226 -224
- package/assets/docs/guide/create-templates/add-to-template-library.md +183 -193
- package/assets/docs/guide/create-templates/edit-or-remove.md +297 -303
- package/assets/docs/guide/create-templates/from-scratch.md +207 -268
- package/assets/docs/guide/create-templates/import/from-scene-file.md +158 -236
- package/assets/docs/guide/create-templates/import.md +145 -161
- package/assets/docs/guide/create-templates/lock.md +42 -295
- package/assets/docs/guide/create-templates/overview.md +33 -4
- package/assets/docs/guide/create-templates.md +9 -5
- package/assets/docs/guide/create-video/audio/adjust-speed.md +157 -207
- package/assets/docs/guide/create-video/audio/adjust-volume.md +116 -227
- package/assets/docs/guide/create-video/control.md +352 -193
- package/assets/docs/guide/create-video/limitations.md +175 -280
- package/assets/docs/guide/create-video.md +11 -10
- package/assets/docs/guide/edit-image/add-watermark.md +283 -330
- package/assets/docs/guide/edit-image/overview.md +29 -4
- package/assets/docs/guide/edit-image/remove-bg.md +283 -337
- package/assets/docs/guide/edit-image/replace-colors.md +424 -502
- package/assets/docs/guide/edit-image/transform/crop.md +463 -402
- package/assets/docs/guide/edit-image/transform/flip.md +353 -0
- package/assets/docs/guide/edit-image/transform/move.md +143 -100
- package/assets/docs/guide/edit-image/transform/resize.md +118 -88
- package/assets/docs/guide/edit-image/transform/rotate.md +132 -165
- package/assets/docs/guide/edit-image/transform/scale.md +230 -228
- package/assets/docs/guide/edit-image/transform.md +10 -5
- package/assets/docs/guide/edit-image.md +11 -7
- package/assets/docs/guide/edit-video/add-captions.md +344 -421
- package/assets/docs/guide/edit-video/add-watermark.md +312 -258
- package/assets/docs/guide/edit-video/join-and-arrange.md +237 -371
- package/assets/docs/guide/edit-video/redaction.md +419 -385
- package/assets/docs/guide/edit-video/split.md +243 -493
- package/assets/docs/guide/edit-video/transform/crop.md +21 -352
- package/assets/docs/guide/edit-video/transform/flip.md +102 -76
- package/assets/docs/guide/edit-video/transform/move.md +258 -310
- package/assets/docs/guide/edit-video/transform/resize.md +264 -428
- package/assets/docs/guide/edit-video/transform/rotate.md +265 -228
- package/assets/docs/guide/edit-video/transform/scale.md +320 -417
- package/assets/docs/guide/edit-video/transform.md +10 -6
- package/assets/docs/guide/edit-video/trim.md +448 -494
- package/assets/docs/guide/engine-interface.md +51 -62
- package/assets/docs/guide/export-save-publish/create-thumbnail.md +148 -184
- package/assets/docs/guide/export-save-publish/export/compress.md +161 -559
- package/assets/docs/guide/export-save-publish/export/overview.md +224 -373
- package/assets/docs/guide/export-save-publish/export/partial-export.md +386 -577
- package/assets/docs/guide/export-save-publish/export/size-limits.md +215 -310
- package/assets/docs/guide/export-save-publish/export/to-jpeg.md +132 -213
- package/assets/docs/guide/export-save-publish/export/to-pdf.md +139 -267
- package/assets/docs/guide/export-save-publish/export/to-png.md +121 -165
- package/assets/docs/guide/export-save-publish/export/to-raw-data.md +187 -234
- package/assets/docs/guide/export-save-publish/export/to-webp.md +160 -190
- package/assets/docs/guide/export-save-publish/export/with-color-mask.md +359 -203
- package/assets/docs/guide/export-save-publish/export.md +14 -11
- package/assets/docs/guide/export-save-publish/for-printing.md +141 -237
- package/assets/docs/guide/export-save-publish/for-social-media.md +124 -261
- package/assets/docs/guide/export-save-publish/pre-export-validation.md +436 -522
- package/assets/docs/guide/export-save-publish/save.md +167 -226
- package/assets/docs/guide/export-save-publish/store-custom-metadata.md +97 -162
- package/assets/docs/guide/file-format-support.md +9 -9
- package/assets/docs/guide/fills/color.md +370 -347
- package/assets/docs/guide/fills/image.md +167 -196
- package/assets/docs/guide/fills/overview.md +6 -4
- package/assets/docs/guide/fills/video.md +286 -438
- package/assets/docs/guide/fills.md +12 -8
- package/assets/docs/guide/filters-and-effects/apply.md +598 -664
- package/assets/docs/guide/filters-and-effects/blur.md +261 -159
- package/assets/docs/guide/filters-and-effects/chroma-key-green-screen.md +194 -293
- package/assets/docs/guide/filters-and-effects/create-custom-filters.md +548 -466
- package/assets/docs/guide/filters-and-effects/create-custom-lut-filter.md +176 -244
- package/assets/docs/guide/filters-and-effects/distortion.md +317 -384
- package/assets/docs/guide/filters-and-effects/duotone.md +221 -217
- package/assets/docs/guide/filters-and-effects/gradients.md +670 -813
- package/assets/docs/guide/filters-and-effects/overview.md +7 -7
- package/assets/docs/guide/filters-and-effects/support.md +97 -132
- package/assets/docs/guide/filters-and-effects.md +11 -6
- package/assets/docs/guide/get-started/agent-skills.md +20 -18
- package/assets/docs/guide/get-started/build-with-ai.md +7 -4
- package/assets/docs/guide/get-started/bun.md +219 -0
- package/assets/docs/guide/get-started/deno.md +161 -0
- package/assets/docs/guide/get-started/mcp-server.md +6 -4
- package/assets/docs/guide/get-started/overview.md +11 -6
- package/assets/docs/guide/get-started/vanilla-aws-lambda.md +506 -0
- package/assets/docs/guide/get-started/vanilla-clone-github-project.md +124 -0
- package/assets/docs/guide/get-started/vanilla.md +235 -0
- package/assets/docs/guide/guides/export-save-publish/export/audio.md +80 -66
- package/assets/docs/guide/guides.md +10 -9
- package/assets/docs/guide/import-media/asset-panel/refresh-assets.md +259 -288
- package/assets/docs/guide/import-media/concepts.md +20 -38
- package/assets/docs/guide/import-media/content-json-schema.md +145 -125
- package/assets/docs/guide/import-media/default-assets.md +113 -161
- package/assets/docs/guide/import-media/edit-or-remove-assets.md +391 -395
- package/assets/docs/guide/import-media/file-format-support.md +78 -61
- package/assets/docs/guide/import-media/from-remote-source/asset-versioning.md +273 -244
- package/assets/docs/guide/import-media/from-remote-source/remote-asset.md +152 -222
- package/assets/docs/guide/import-media/from-remote-source.md +9 -11
- package/assets/docs/guide/import-media/overview.md +5 -5
- package/assets/docs/guide/import-media/retrieve-mimetype.md +216 -108
- package/assets/docs/guide/import-media/size-limits.md +6 -4
- package/assets/docs/guide/import-media/source-sets.md +190 -251
- package/assets/docs/guide/import-media.md +10 -8
- package/assets/docs/guide/insert-media/audio.md +202 -195
- package/assets/docs/guide/insert-media/images.md +190 -188
- package/assets/docs/guide/insert-media/position-and-align.md +284 -551
- package/assets/docs/guide/insert-media/shapes-or-stickers.md +402 -418
- package/assets/docs/guide/insert-media/videos.md +236 -203
- package/assets/docs/guide/insert-media.md +10 -5
- package/assets/docs/guide/key-capabilities.md +36 -4
- package/assets/docs/guide/key-concepts.md +6 -4
- package/assets/docs/guide/licensing.md +6 -4
- package/assets/docs/guide/llms-txt.md +11 -7
- package/assets/docs/guide/open-the-editor/blank-canvas.md +102 -63
- package/assets/docs/guide/open-the-editor/from-image.md +157 -127
- package/assets/docs/guide/open-the-editor/from-template.md +131 -92
- package/assets/docs/guide/open-the-editor/from-video.md +204 -212
- package/assets/docs/guide/open-the-editor/import-design/from-archive.md +310 -360
- package/assets/docs/guide/open-the-editor/import-design/from-indesign.md +716 -513
- package/assets/docs/guide/open-the-editor/import-design/from-photoshop.md +667 -695
- package/assets/docs/guide/open-the-editor/import-design.md +228 -266
- package/assets/docs/guide/open-the-editor/load-scene.md +72 -68
- package/assets/docs/guide/open-the-editor/overview.md +6 -4
- package/assets/docs/guide/open-the-editor/uri-resolver.md +160 -251
- package/assets/docs/guide/open-the-editor.md +11 -9
- package/assets/docs/guide/outlines/overview.md +12 -4
- package/assets/docs/guide/outlines/shadows-and-glows.md +105 -410
- package/assets/docs/guide/outlines/strokes.md +218 -166
- package/assets/docs/guide/outlines.md +9 -4
- package/assets/docs/guide/overview.md +14 -6
- package/assets/docs/guide/performance.md +220 -113
- package/assets/docs/guide/plugins/print-ready-pdf.md +273 -368
- package/assets/docs/guide/plugins.md +10 -16
- package/assets/docs/guide/rules/asset-handling.md +7 -18
- package/assets/docs/guide/rules/common-pitfalls.md +25 -42
- package/assets/docs/guide/rules/content-fill-mode.md +4 -4
- package/assets/docs/guide/rules/enforce-brand-guidelines.md +398 -567
- package/assets/docs/guide/rules/lock-content.md +188 -231
- package/assets/docs/guide/rules/moderate-content.md +580 -571
- package/assets/docs/guide/rules/overview.md +345 -380
- package/assets/docs/guide/rules/silent-init-errors.md +4 -1
- package/assets/docs/guide/rules/verify-properties-before-use.md +2 -11
- package/assets/docs/guide/rules.md +10 -5
- package/assets/docs/guide/security.md +7 -5
- package/assets/docs/guide/serve-assets.md +57 -284
- package/assets/docs/guide/settings.md +96 -74
- package/assets/docs/guide/shapes.md +10 -5
- package/assets/docs/guide/stickers-and-shapes/combine.md +397 -583
- package/assets/docs/guide/stickers-and-shapes/create-cutout.md +181 -268
- package/assets/docs/guide/stickers-and-shapes/create-edit/create-shapes.md +418 -431
- package/assets/docs/guide/stickers-and-shapes/create-edit/create-stickers.md +147 -226
- package/assets/docs/guide/stickers-and-shapes/create-edit/edit-shapes.md +138 -123
- package/assets/docs/guide/stickers-and-shapes/insert-qr-code.md +151 -149
- package/assets/docs/guide/stickers.md +9 -4
- package/assets/docs/guide/text/add.md +470 -482
- package/assets/docs/guide/text/adjust-spacing.md +179 -214
- package/assets/docs/guide/text/auto-size.md +210 -271
- package/assets/docs/guide/text/edit.md +294 -309
- package/assets/docs/guide/text/effects.md +154 -190
- package/assets/docs/guide/text/emojis.md +199 -232
- package/assets/docs/guide/text/language-support.md +369 -382
- package/assets/docs/guide/text/overview.md +41 -4
- package/assets/docs/guide/text/styling.md +239 -273
- package/assets/docs/guide/text/text-designs.md +405 -544
- package/assets/docs/guide/text.md +10 -9
- package/assets/docs/guide/to-v1-19.md +12 -10
- package/assets/docs/guide/upgrade.md +8 -9
- package/assets/docs/guide/use-templates/apply-template.md +174 -163
- package/assets/docs/guide/use-templates/generate.md +171 -152
- package/assets/docs/guide/use-templates/overview.md +32 -4
- package/assets/docs/guide/use-templates/programmatic.md +266 -301
- package/assets/docs/guide/use-templates/replace-content.md +181 -171
- package/assets/docs/guide/what-is-cesdk.md +71 -282
- package/assets/docs/handbook/SKILL.md +24 -0
- package/dist/assets/inline.generated.d.ts.map +1 -1
- package/dist/assets/inline.generated.js +544 -406
- package/dist/assets/inline.generated.js.map +1 -1
- package/dist/assets/load-browser.d.ts +1 -1
- package/dist/assets/load-browser.js +1 -1
- package/dist/assets/load-browser.js.map +1 -1
- package/dist/assets/load-node.d.ts +1 -1
- package/dist/assets/load-node.js +1 -1
- package/dist/assets/load-node.js.map +1 -1
- package/dist/cli/http.d.ts.map +1 -1
- package/dist/cli/http.js +4 -28
- package/dist/cli/http.js.map +1 -1
- package/dist/cli/redirect-console.d.ts +1 -1
- package/dist/cli/redirect-console.d.ts.map +1 -1
- package/dist/cli/redirect-console.js +12 -3
- package/dist/cli/redirect-console.js.map +1 -1
- package/dist/cli/resolve-license.d.ts.map +1 -1
- package/dist/cli/resolve-license.js +8 -6
- package/dist/cli/resolve-license.js.map +1 -1
- package/dist/cli/stdio.d.ts +9 -0
- package/dist/cli/stdio.d.ts.map +1 -1
- package/dist/cli/stdio.js +48 -4
- package/dist/cli/stdio.js.map +1 -1
- package/dist/cli.js +10 -1
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +11 -2
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +20 -1
- package/dist/config.js.map +1 -1
- package/dist/diagnostics/bundle.d.ts +10 -0
- package/dist/diagnostics/bundle.d.ts.map +1 -0
- package/dist/diagnostics/bundle.js +148 -0
- package/dist/diagnostics/bundle.js.map +1 -0
- package/dist/diagnostics/compose.d.ts +3 -0
- package/dist/diagnostics/compose.d.ts.map +1 -0
- package/dist/diagnostics/compose.js +15 -0
- package/dist/diagnostics/compose.js.map +1 -0
- package/dist/diagnostics/events.d.ts +34 -0
- package/dist/diagnostics/events.d.ts.map +1 -0
- package/dist/diagnostics/events.js +3 -0
- package/dist/diagnostics/events.js.map +1 -0
- package/dist/diagnostics/file-sink.d.ts +38 -0
- package/dist/diagnostics/file-sink.d.ts.map +1 -0
- package/dist/diagnostics/file-sink.js +157 -0
- package/dist/diagnostics/file-sink.js.map +1 -0
- package/dist/diagnostics/redact.d.ts +7 -0
- package/dist/diagnostics/redact.d.ts.map +1 -0
- package/dist/diagnostics/redact.js +43 -0
- package/dist/diagnostics/redact.js.map +1 -0
- package/dist/diagnostics/tool-call-adapter.d.ts +4 -0
- package/dist/diagnostics/tool-call-adapter.d.ts.map +1 -0
- package/dist/diagnostics/tool-call-adapter.js +21 -0
- package/dist/diagnostics/tool-call-adapter.js.map +1 -0
- package/dist/engine/cesdk-adapter.d.ts +5 -1
- package/dist/engine/cesdk-adapter.d.ts.map +1 -1
- package/dist/engine/cesdk-adapter.js +9 -2
- package/dist/engine/cesdk-adapter.js.map +1 -1
- package/dist/engine/index.d.ts +1 -0
- package/dist/engine/index.d.ts.map +1 -1
- package/dist/engine/index.js +4 -0
- package/dist/engine/index.js.map +1 -1
- package/dist/engine/scene-resource-schemes.d.ts +2 -0
- package/dist/engine/scene-resource-schemes.d.ts.map +1 -0
- package/dist/engine/scene-resource-schemes.js +20 -0
- package/dist/engine/scene-resource-schemes.js.map +1 -0
- package/dist/http/server.d.ts +0 -6
- package/dist/http/server.d.ts.map +1 -1
- package/dist/http/server.js +1 -2
- package/dist/http/server.js.map +1 -1
- package/dist/server.d.ts +0 -4
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +4 -60
- package/dist/server.js.map +1 -1
- package/dist/test/scripts/changelog-add.d.ts +8 -0
- package/dist/test/scripts/changelog-add.d.ts.map +1 -0
- package/dist/test/scripts/changelog-add.js +50 -0
- package/dist/test/scripts/changelog-add.js.map +1 -0
- package/dist/test/scripts/changelog-collate.d.ts +38 -0
- package/dist/test/scripts/changelog-collate.d.ts.map +1 -0
- package/dist/test/scripts/changelog-collate.js +171 -0
- package/dist/test/scripts/changelog-collate.js.map +1 -0
- package/dist/test/test/changelog.test.d.ts +2 -0
- package/dist/test/test/changelog.test.d.ts.map +1 -0
- package/dist/test/test/changelog.test.js +293 -0
- package/dist/test/test/changelog.test.js.map +1 -0
- package/dist/test/test/cli/dispatcher.test.js +10 -3
- package/dist/test/test/cli/dispatcher.test.js.map +1 -1
- package/dist/test/test/cli/redirect-console.test.js +31 -0
- package/dist/test/test/cli/redirect-console.test.js.map +1 -1
- package/dist/test/test/cli/resolve-license.test.js +10 -1
- package/dist/test/test/cli/resolve-license.test.js.map +1 -1
- package/dist/test/test/cli/stdio-diagnostics.test.d.ts +2 -0
- package/dist/test/test/cli/stdio-diagnostics.test.d.ts.map +1 -0
- package/dist/test/test/cli/stdio-diagnostics.test.js +31 -0
- package/dist/test/test/cli/stdio-diagnostics.test.js.map +1 -0
- package/dist/test/test/config.test.js +17 -13
- package/dist/test/test/config.test.js.map +1 -1
- package/dist/test/test/diagnostics/bundle.test.d.ts +2 -0
- package/dist/test/test/diagnostics/bundle.test.d.ts.map +1 -0
- package/dist/test/test/diagnostics/bundle.test.js +53 -0
- package/dist/test/test/diagnostics/bundle.test.js.map +1 -0
- package/dist/test/test/diagnostics/compose.test.d.ts +2 -0
- package/dist/test/test/diagnostics/compose.test.d.ts.map +1 -0
- package/dist/test/test/diagnostics/compose.test.js +31 -0
- package/dist/test/test/diagnostics/compose.test.js.map +1 -0
- package/dist/test/test/diagnostics/file-sink.test.d.ts +2 -0
- package/dist/test/test/diagnostics/file-sink.test.d.ts.map +1 -0
- package/dist/test/test/diagnostics/file-sink.test.js +113 -0
- package/dist/test/test/diagnostics/file-sink.test.js.map +1 -0
- package/dist/test/test/diagnostics/redact.test.d.ts +2 -0
- package/dist/test/test/diagnostics/redact.test.d.ts.map +1 -0
- package/dist/test/test/diagnostics/redact.test.js +59 -0
- package/dist/test/test/diagnostics/redact.test.js.map +1 -0
- package/dist/test/test/diagnostics/tool-call-adapter.test.d.ts +2 -0
- package/dist/test/test/diagnostics/tool-call-adapter.test.d.ts.map +1 -0
- package/dist/test/test/diagnostics/tool-call-adapter.test.js +34 -0
- package/dist/test/test/diagnostics/tool-call-adapter.test.js.map +1 -0
- package/dist/test/test/engine/cesdk-adapter.test.d.ts +2 -0
- package/dist/test/test/engine/cesdk-adapter.test.d.ts.map +1 -0
- package/dist/test/test/engine/cesdk-adapter.test.js +32 -0
- package/dist/test/test/engine/cesdk-adapter.test.js.map +1 -0
- package/dist/test/test/handbook-contract.test.js +6 -2
- package/dist/test/test/handbook-contract.test.js.map +1 -1
- package/dist/test/test/http/server.test.js +0 -36
- package/dist/test/test/http/server.test.js.map +1 -1
- package/dist/test/test/http/workspace-auth.test.js +0 -1
- package/dist/test/test/http/workspace-auth.test.js.map +1 -1
- package/dist/test/test/server.test.js +0 -40
- package/dist/test/test/server.test.js.map +1 -1
- package/dist/test/test/tools/edit-harness.d.ts +14 -0
- package/dist/test/test/tools/edit-harness.d.ts.map +1 -0
- package/dist/test/test/tools/edit-harness.js +30 -0
- package/dist/test/test/tools/edit-harness.js.map +1 -0
- package/dist/test/test/tools/edit.telemetry.test.d.ts +2 -0
- package/dist/test/test/tools/edit.telemetry.test.d.ts.map +1 -0
- package/dist/test/test/tools/edit.telemetry.test.js +46 -0
- package/dist/test/test/tools/edit.telemetry.test.js.map +1 -0
- package/dist/test/test/tools/export-harness.d.ts +13 -0
- package/dist/test/test/tools/export-harness.d.ts.map +1 -0
- package/dist/test/test/tools/export-harness.js +27 -0
- package/dist/test/test/tools/export-harness.js.map +1 -0
- package/dist/test/test/tools/export.telemetry.test.d.ts +2 -0
- package/dist/test/test/tools/export.telemetry.test.d.ts.map +1 -0
- package/dist/test/test/tools/export.telemetry.test.js +65 -0
- package/dist/test/test/tools/export.telemetry.test.js.map +1 -0
- package/dist/test/test/tools/import.test.d.ts +2 -0
- package/dist/test/test/tools/import.test.d.ts.map +1 -0
- package/dist/test/test/tools/import.test.js +122 -0
- package/dist/test/test/tools/import.test.js.map +1 -0
- package/dist/test/test/tools/index.test.js +78 -16
- package/dist/test/test/tools/index.test.js.map +1 -1
- package/dist/test/test/tools/load.integration.test.d.ts +2 -0
- package/dist/test/test/tools/load.integration.test.d.ts.map +1 -0
- package/dist/test/test/tools/load.integration.test.js +165 -0
- package/dist/test/test/tools/load.integration.test.js.map +1 -0
- package/dist/test/test/tools/load.test.d.ts +2 -0
- package/dist/test/test/tools/load.test.d.ts.map +1 -0
- package/dist/test/test/tools/load.test.js +387 -0
- package/dist/test/test/tools/load.test.js.map +1 -0
- package/dist/test/test/tools/preview-harness.d.ts +9 -0
- package/dist/test/test/tools/preview-harness.d.ts.map +1 -0
- package/dist/test/test/tools/preview-harness.js +23 -0
- package/dist/test/test/tools/preview-harness.js.map +1 -0
- package/dist/test/test/tools/preview.telemetry.test.d.ts +2 -0
- package/dist/test/test/tools/preview.telemetry.test.d.ts.map +1 -0
- package/dist/test/test/tools/preview.telemetry.test.js +36 -0
- package/dist/test/test/tools/preview.telemetry.test.js.map +1 -0
- package/dist/test/test/tools/schema-best-practices.d.ts +13 -0
- package/dist/test/test/tools/schema-best-practices.d.ts.map +1 -0
- package/dist/test/test/tools/schema-best-practices.js +169 -0
- package/dist/test/test/tools/schema-best-practices.js.map +1 -0
- package/dist/test/test/tools/schema-best-practices.test.d.ts +3 -0
- package/dist/test/test/tools/schema-best-practices.test.d.ts.map +1 -0
- package/dist/test/test/tools/schema-best-practices.test.js +194 -0
- package/dist/test/test/tools/schema-best-practices.test.js.map +1 -0
- package/dist/test/test/tools/spans.test.d.ts +2 -0
- package/dist/test/test/tools/spans.test.d.ts.map +1 -0
- package/dist/test/test/tools/spans.test.js +84 -0
- package/dist/test/test/tools/spans.test.js.map +1 -0
- package/dist/test/test/viewer/cesdk-cdn.test.d.ts +2 -0
- package/dist/test/test/viewer/cesdk-cdn.test.d.ts.map +1 -0
- package/dist/test/test/viewer/cesdk-cdn.test.js +19 -0
- package/dist/test/test/viewer/cesdk-cdn.test.js.map +1 -0
- package/dist/test/test/viewer/config-route.test.d.ts +2 -0
- package/dist/test/test/viewer/config-route.test.d.ts.map +1 -0
- package/dist/test/test/viewer/config-route.test.js +28 -0
- package/dist/test/test/viewer/config-route.test.js.map +1 -0
- package/dist/test/test/viewer/spa-version.test.d.ts +2 -0
- package/dist/test/test/viewer/spa-version.test.d.ts.map +1 -0
- package/dist/test/test/viewer/spa-version.test.js +14 -0
- package/dist/test/test/viewer/spa-version.test.js.map +1 -0
- package/dist/test/test/workspace/content-hash.test.d.ts +2 -0
- package/dist/test/test/workspace/content-hash.test.d.ts.map +1 -0
- package/dist/test/test/workspace/content-hash.test.js +17 -0
- package/dist/test/test/workspace/content-hash.test.js.map +1 -0
- package/dist/test/tsconfig.test.tsbuildinfo +1 -1
- package/dist/test/vitest.config.js +1 -1
- package/dist/test/vitest.config.js.map +1 -1
- package/dist/tools/asset-generate.d.ts.map +1 -1
- package/dist/tools/asset-generate.js +1 -8
- package/dist/tools/asset-generate.js.map +1 -1
- package/dist/tools/edit.d.ts +3 -0
- package/dist/tools/edit.d.ts.map +1 -1
- package/dist/tools/edit.js +145 -96
- package/dist/tools/edit.js.map +1 -1
- package/dist/tools/export.d.ts +3 -0
- package/dist/tools/export.d.ts.map +1 -1
- package/dist/tools/export.js +146 -108
- package/dist/tools/export.js.map +1 -1
- package/dist/tools/import.d.ts +12 -0
- package/dist/tools/import.d.ts.map +1 -0
- package/dist/tools/import.js +144 -0
- package/dist/tools/import.js.map +1 -0
- package/dist/tools/index.d.ts +3 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +44 -4
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/load.d.ts +26 -0
- package/dist/tools/load.d.ts.map +1 -0
- package/dist/tools/load.js +400 -0
- package/dist/tools/load.js.map +1 -0
- package/dist/tools/preview.d.ts +3 -0
- package/dist/tools/preview.d.ts.map +1 -1
- package/dist/tools/preview.js +79 -44
- package/dist/tools/preview.js.map +1 -1
- package/dist/tools/result.d.ts +1 -1
- package/dist/tools/result.js +2 -2
- package/dist/tools/result.js.map +1 -1
- package/dist/tools/spans.d.ts +45 -0
- package/dist/tools/spans.d.ts.map +1 -0
- package/dist/tools/spans.js +77 -0
- package/dist/tools/spans.js.map +1 -0
- package/dist/tools/telemetry-wrapper.d.ts +4 -0
- package/dist/tools/telemetry-wrapper.d.ts.map +1 -0
- package/dist/tools/telemetry-wrapper.js +43 -0
- package/dist/tools/telemetry-wrapper.js.map +1 -0
- package/dist/viewer/cesdk-cdn.d.ts +16 -0
- package/dist/viewer/cesdk-cdn.d.ts.map +1 -0
- package/dist/viewer/cesdk-cdn.js +30 -0
- package/dist/viewer/cesdk-cdn.js.map +1 -0
- package/dist/viewer/router.d.ts +6 -0
- package/dist/viewer/router.d.ts.map +1 -1
- package/dist/viewer/router.js +4 -1
- package/dist/viewer/router.js.map +1 -1
- package/dist/viewer/spa-assets.generated.d.ts.map +1 -1
- package/dist/viewer/spa-assets.generated.js +2 -3
- package/dist/viewer/spa-assets.generated.js.map +1 -1
- package/dist/workspace/content-hash.d.ts +2 -0
- package/dist/workspace/content-hash.d.ts.map +1 -0
- package/dist/workspace/content-hash.js +15 -0
- package/dist/workspace/content-hash.js.map +1 -0
- package/package.json +18 -9
- package/assets/docs/guide/actions.md +0 -1038
- package/assets/docs/guide/animation/overview.md +0 -22
- package/assets/docs/guide/automation/batch-processing.md +0 -474
- package/assets/docs/guide/browser-support.md +0 -38
- package/assets/docs/guide/concepts/edit-modes.md +0 -431
- package/assets/docs/guide/concepts/headless-mode/browser.md +0 -291
- package/assets/docs/guide/create-audio/audio.md +0 -336
- package/assets/docs/guide/create-video/overview.md +0 -224
- package/assets/docs/guide/create-video/timeline-editor.md +0 -622
- package/assets/docs/guide/create-video/update-caption-presets.md +0 -676
- package/assets/docs/guide/edit-image/vectorize.md +0 -204
- package/assets/docs/guide/export-save-publish/export/to-html5.md +0 -474
- package/assets/docs/guide/export-save-publish/export/to-mp4.md +0 -364
- package/assets/docs/guide/get-started/vanilla-js/quickstart.md +0 -175
- package/assets/docs/guide/grid-and-rulers.md +0 -222
- package/assets/docs/guide/guides/text/rendering-internals.md +0 -796
- package/assets/docs/guide/import-media/asset-library.md +0 -23
- package/assets/docs/guide/import-media/asset-panel/basics.md +0 -324
- package/assets/docs/guide/import-media/asset-panel/customize.md +0 -478
- package/assets/docs/guide/import-media/asset-panel/thumbnails.md +0 -633
- package/assets/docs/guide/import-media/capture-from-camera/record-video.md +0 -137
- package/assets/docs/guide/import-media/capture-from-camera.md +0 -20
- package/assets/docs/guide/import-media/from-local-source/user-upload.md +0 -438
- package/assets/docs/guide/import-media/from-local-source.md +0 -20
- package/assets/docs/guide/import-media/from-remote-source/getty-images.md +0 -627
- package/assets/docs/guide/import-media/from-remote-source/imgly-premium-assets.md +0 -625
- package/assets/docs/guide/import-media/from-remote-source/pexels.md +0 -692
- package/assets/docs/guide/import-media/from-remote-source/soundstripe.md +0 -497
- package/assets/docs/guide/import-media/from-remote-source/third-party.md +0 -51
- package/assets/docs/guide/import-media/from-remote-source/unsplash.md +0 -914
- package/assets/docs/guide/import-media/from-remote-source/your-server.md +0 -764
- package/assets/docs/guide/open-the-editor/from-htmlcanvas.md +0 -228
- package/assets/docs/guide/open-the-editor/set-zoom-level.md +0 -303
- package/assets/docs/guide/plugins/asset-sources.md +0 -553
- package/assets/docs/guide/starterkits/3d-mockup-editor.md +0 -748
- package/assets/docs/guide/starterkits/advanced-editor.md +0 -698
- package/assets/docs/guide/starterkits/advanced-video-editor.md +0 -696
- package/assets/docs/guide/starterkits/ai-editor.md +0 -749
- package/assets/docs/guide/starterkits/airtable-image-editor.md +0 -672
- package/assets/docs/guide/starterkits/apparel-ui.md +0 -188
- package/assets/docs/guide/starterkits/assets.md +0 -27
- package/assets/docs/guide/starterkits/auto-resize.md +0 -586
- package/assets/docs/guide/starterkits/automated-video-generation.md +0 -692
- package/assets/docs/guide/starterkits/background-removal-editor.md +0 -480
- package/assets/docs/guide/starterkits/content-moderation.md +0 -863
- package/assets/docs/guide/starterkits/creative-automation.md +0 -28
- package/assets/docs/guide/starterkits/custom-built-uis.md +0 -26
- package/assets/docs/guide/starterkits/customization.md +0 -29
- package/assets/docs/guide/starterkits/cutout-lines-editor.md +0 -470
- package/assets/docs/guide/starterkits/data-merge.md +0 -850
- package/assets/docs/guide/starterkits/design-editor.md +0 -698
- package/assets/docs/guide/starterkits/design-generation.md +0 -719
- package/assets/docs/guide/starterkits/design-validation.md +0 -808
- package/assets/docs/guide/starterkits/editor-ui-configurations.md +0 -14
- package/assets/docs/guide/starterkits/export-options.md +0 -724
- package/assets/docs/guide/starterkits/export-using-renderer.md +0 -708
- package/assets/docs/guide/starterkits/extensibility.md +0 -28
- package/assets/docs/guide/starterkits/force-crop-editor.md +0 -675
- package/assets/docs/guide/starterkits/form-based-template-adoption.md +0 -522
- package/assets/docs/guide/starterkits/getty-images-editor.md +0 -700
- package/assets/docs/guide/starterkits/html5-ads-exporter.md +0 -719
- package/assets/docs/guide/starterkits/indesign-template-import.md +0 -580
- package/assets/docs/guide/starterkits/layouts-editor.md +0 -724
- package/assets/docs/guide/starterkits/mobile-ui.md +0 -185
- package/assets/docs/guide/starterkits/mockup-editor.md +0 -745
- package/assets/docs/guide/starterkits/multi-image-generation.md +0 -542
- package/assets/docs/guide/starterkits/page-sizes-editor.md +0 -657
- package/assets/docs/guide/starterkits/pexels-image-editor.md +0 -665
- package/assets/docs/guide/starterkits/photo-editor.md +0 -755
- package/assets/docs/guide/starterkits/photo-ui.md +0 -186
- package/assets/docs/guide/starterkits/photobook-ui.md +0 -188
- package/assets/docs/guide/starterkits/placeholders.md +0 -678
- package/assets/docs/guide/starterkits/player.md +0 -405
- package/assets/docs/guide/starterkits/plugins.md +0 -25
- package/assets/docs/guide/starterkits/postcard-editor.md +0 -202
- package/assets/docs/guide/starterkits/pptx-template-import.md +0 -581
- package/assets/docs/guide/starterkits/print-ready-pdf-editor.md +0 -746
- package/assets/docs/guide/starterkits/product-editor.md +0 -773
- package/assets/docs/guide/starterkits/psd-template-import.md +0 -580
- package/assets/docs/guide/starterkits/qr-code-editor.md +0 -470
- package/assets/docs/guide/starterkits/single-page-editor.md +0 -661
- package/assets/docs/guide/starterkits/start-with-image.md +0 -684
- package/assets/docs/guide/starterkits/start-with-video.md +0 -651
- package/assets/docs/guide/starterkits/t-shirt-designer.md +0 -742
- package/assets/docs/guide/starterkits/templating.md +0 -23
- package/assets/docs/guide/starterkits/theming.md +0 -662
- package/assets/docs/guide/starterkits/translation-internationalization.md +0 -662
- package/assets/docs/guide/starterkits/unsplash-editor.md +0 -839
- package/assets/docs/guide/starterkits/vectorizer-editor.md +0 -466
- package/assets/docs/guide/starterkits/version-history.md +0 -745
- package/assets/docs/guide/starterkits/video-animations.md +0 -853
- package/assets/docs/guide/starterkits/video-captions.md +0 -884
- package/assets/docs/guide/starterkits/video-editing.md +0 -25
- package/assets/docs/guide/starterkits/video-editor.md +0 -696
- package/assets/docs/guide/starterkits/video-export-options.md +0 -676
- package/assets/docs/guide/starterkits/viewer.md +0 -400
- package/assets/docs/guide/starterkits.md +0 -41
- package/assets/docs/guide/stickers-and-shapes/create-edit/vector-edit.md +0 -362
- package/assets/docs/guide/text/custom-fonts.md +0 -401
- package/assets/docs/guide/text/decorations.md +0 -330
- package/assets/docs/guide/text/enumerations.md +0 -258
- package/assets/docs/guide/to-v1-10.md +0 -131
- package/assets/docs/guide/to-v1-13.md +0 -165
- package/assets/docs/guide/to-v1-32.md +0 -110
- package/assets/docs/guide/to-v1-69.md +0 -468
- package/assets/docs/guide/to-v1-72.md +0 -193
- package/assets/docs/guide/use-templates/library.md +0 -450
- package/assets/docs/guide/user-interface/ai-integration/audio-generation.md +0 -428
- package/assets/docs/guide/user-interface/ai-integration/auto-captions.md +0 -337
- package/assets/docs/guide/user-interface/ai-integration/custom-provider.md +0 -853
- package/assets/docs/guide/user-interface/ai-integration/gateway-provider.md +0 -1045
- package/assets/docs/guide/user-interface/ai-integration/image-generation.md +0 -641
- package/assets/docs/guide/user-interface/ai-integration/integrate.md +0 -966
- package/assets/docs/guide/user-interface/ai-integration/proxy-server.md +0 -99
- package/assets/docs/guide/user-interface/ai-integration/text-generation.md +0 -498
- package/assets/docs/guide/user-interface/ai-integration/video-generation.md +0 -493
- package/assets/docs/guide/user-interface/ai-integration.md +0 -30
- package/assets/docs/guide/user-interface/appearance/change-ui-font.md +0 -316
- package/assets/docs/guide/user-interface/appearance/custom-labels.md +0 -509
- package/assets/docs/guide/user-interface/appearance/icons.md +0 -373
- package/assets/docs/guide/user-interface/appearance/theming.md +0 -665
- package/assets/docs/guide/user-interface/appearance.md +0 -23
- package/assets/docs/guide/user-interface/build-your-own-ui.md +0 -620
- package/assets/docs/guide/user-interface/customization/canvas-menu.md +0 -412
- package/assets/docs/guide/user-interface/customization/canvas.md +0 -281
- package/assets/docs/guide/user-interface/customization/color-palette.md +0 -413
- package/assets/docs/guide/user-interface/customization/crop-presets.md +0 -384
- package/assets/docs/guide/user-interface/customization/disable-or-enable.md +0 -676
- package/assets/docs/guide/user-interface/customization/dock.md +0 -399
- package/assets/docs/guide/user-interface/customization/force-crop.md +0 -289
- package/assets/docs/guide/user-interface/customization/inspector-bar.md +0 -371
- package/assets/docs/guide/user-interface/customization/navigation-bar.md +0 -516
- package/assets/docs/guide/user-interface/customization/page-format.md +0 -436
- package/assets/docs/guide/user-interface/customization/panel.md +0 -605
- package/assets/docs/guide/user-interface/customization/quick-start/add-action-buttons.md +0 -531
- package/assets/docs/guide/user-interface/customization/quick-start/add-dock-buttons.md +0 -358
- package/assets/docs/guide/user-interface/customization/quick-start/create-custom-components.md +0 -374
- package/assets/docs/guide/user-interface/customization/quick-start/reorder-components.md +0 -323
- package/assets/docs/guide/user-interface/customization/quick-start/show-hide-components.md +0 -294
- package/assets/docs/guide/user-interface/customization/quick-start.md +0 -12
- package/assets/docs/guide/user-interface/customization/reference/component-order-api.md +0 -519
- package/assets/docs/guide/user-interface/customization/reference/component-reference.md +0 -333
- package/assets/docs/guide/user-interface/customization/reference.md +0 -12
- package/assets/docs/guide/user-interface/customization.md +0 -39
- package/assets/docs/guide/user-interface/localization.md +0 -633
- package/assets/docs/guide/user-interface/overview.md +0 -167
- package/assets/docs/guide/user-interface/ui-extensions/add-custom-feature.md +0 -411
- package/assets/docs/guide/user-interface/ui-extensions/asset-library.md +0 -721
- package/assets/docs/guide/user-interface/ui-extensions/create-custom-panel.md +0 -331
- package/assets/docs/guide/user-interface/ui-extensions/customize-behaviour.md +0 -553
- package/assets/docs/guide/user-interface/ui-extensions/notifications-and-dialogs.md +0 -672
- package/assets/docs/guide/user-interface/ui-extensions/quick-actions.md +0 -415
- package/assets/docs/guide/user-interface/ui-extensions/register-new-component.md +0 -521
- package/assets/docs/guide/user-interface/ui-extensions.md +0 -26
- package/assets/docs/guide/user-interface.md +0 -25
- package/assets/prompts/evals-assetGenerate.md +0 -12
- package/assets/prompts/evals-brutalistCore.md +0 -34
- package/assets/prompts/evals-danskCatalogue.md +0 -31
- package/assets/prompts/evals-exportRoundTrip.md +0 -12
- package/assets/prompts/evals-inspectPriorCode.md +0 -16
- package/assets/prompts/evals-listProjectFiles.md +0 -6
- package/assets/prompts/evals-readAndExplainScript.md +0 -6
- package/assets/prompts/evals-resumeAcrossRestart.md +0 -15
- package/assets/prompts/evals-rewindRecovery.md +0 -10
- package/assets/prompts/evals-searchAcrossFiles.md +0 -6
- package/assets/prompts/evals-weddingCard.md +0 -20
- package/assets/prompts/explain.md +0 -6
- package/assets/prompts/review.md +0 -6
- package/dist/frontmatter.d.ts +0 -15
- package/dist/frontmatter.d.ts.map +0 -1
- package/dist/frontmatter.js +0 -46
- package/dist/frontmatter.js.map +0 -1
- package/dist/test/test/frontmatter.test.d.ts +0 -2
- package/dist/test/test/frontmatter.test.d.ts.map +0 -1
- package/dist/test/test/frontmatter.test.js +0 -55
- package/dist/test/test/frontmatter.test.js.map +0 -1
|
@@ -1,451 +1,488 @@
|
|
|
1
|
-
> This is one page of the CE.SDK
|
|
1
|
+
> This is one page of the CE.SDK Node.js documentation. For a complete overview, see the [Node.js Documentation Index](https://img.ly/docs/cesdk/node.md). For all docs in one file, see [llms-full.txt](./llms-full.txt.md).
|
|
2
2
|
|
|
3
3
|
**Navigation:** [Guides](./guides.md) > [Create and Edit Images](./edit-image.md) > [Transform](./edit-image/transform.md) > [Crop](./edit-image/transform/crop.md)
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
system.
|
|
10
|
-
|
|
11
|
-

|
|
7
|
+
Frame subjects, remove unwanted elements, and prepare images for specific
|
|
8
|
+
formats using CE.SDK's comprehensive crop system.
|
|
12
9
|
|
|
13
10
|
> **Reading time:** 10 minutes
|
|
14
11
|
>
|
|
15
12
|
> **Resources:**
|
|
16
13
|
>
|
|
17
14
|
> - [Download examples](https://github.com/imgly/cesdk-web-examples/archive/refs/tags/release-$UBQ_VERSION$.zip)
|
|
18
|
-
>
|
|
19
|
-
> - [
|
|
20
|
-
>
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
import {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
await cesdk.addPlugin(new DesignEditorConfig());
|
|
55
|
-
|
|
56
|
-
// Add asset source plugins
|
|
57
|
-
await cesdk.addPlugin(new BlurAssetSource());
|
|
58
|
-
await cesdk.addPlugin(new ColorPaletteAssetSource());
|
|
59
|
-
await cesdk.addPlugin(new CropPresetsAssetSource());
|
|
60
|
-
await cesdk.addPlugin(
|
|
61
|
-
new UploadAssetSources({ include: ['ly.img.image.upload'] })
|
|
62
|
-
);
|
|
63
|
-
await cesdk.addPlugin(
|
|
64
|
-
new DemoAssetSources({
|
|
65
|
-
include: [
|
|
66
|
-
'ly.img.templates.blank.*',
|
|
67
|
-
'ly.img.templates.presentation.*',
|
|
68
|
-
'ly.img.templates.print.*',
|
|
69
|
-
'ly.img.templates.social.*',
|
|
70
|
-
'ly.img.image.*'
|
|
71
|
-
]
|
|
72
|
-
})
|
|
73
|
-
);
|
|
74
|
-
await cesdk.addPlugin(new EffectsAssetSource());
|
|
75
|
-
await cesdk.addPlugin(new FiltersAssetSource());
|
|
76
|
-
await cesdk.addPlugin(new PagePresetsAssetSource());
|
|
77
|
-
await cesdk.addPlugin(new StickerAssetSource());
|
|
78
|
-
await cesdk.addPlugin(new TextAssetSource());
|
|
79
|
-
await cesdk.addPlugin(new TextComponentAssetSource());
|
|
80
|
-
await cesdk.addPlugin(new TypefaceAssetSource());
|
|
81
|
-
await cesdk.addPlugin(new VectorShapeAssetSource());
|
|
82
|
-
|
|
83
|
-
await cesdk.actions.run('scene.create', {
|
|
84
|
-
page: { width: 800, height: 600, unit: 'Pixel' }
|
|
85
|
-
});
|
|
86
|
-
|
|
87
|
-
const engine = cesdk.engine;
|
|
88
|
-
|
|
89
|
-
// Get the page from the scene
|
|
90
|
-
const pages = engine.block.findByType('page');
|
|
91
|
-
const page = pages[0];
|
|
92
|
-
|
|
93
|
-
// Add an image using the convenience API
|
|
94
|
-
const imageUri = 'https://img.ly/static/ubq_samples/sample_1.jpg';
|
|
95
|
-
const imageBlock = await engine.block.addImage(imageUri, {
|
|
96
|
-
size: { width: 300, height: 200 }
|
|
97
|
-
});
|
|
98
|
-
engine.block.appendChild(page, imageBlock);
|
|
99
|
-
engine.block.setPositionX(imageBlock, 50);
|
|
100
|
-
engine.block.setPositionY(imageBlock, 50);
|
|
101
|
-
|
|
102
|
-
// Verify the block supports cropping before applying crop operations
|
|
103
|
-
const supportsCrop = engine.block.supportsCrop(imageBlock);
|
|
104
|
-
console.log('Block supports crop:', supportsCrop);
|
|
105
|
-
|
|
106
|
-
// Check if the block supports content fill modes
|
|
107
|
-
const supportsFillMode = engine.block.supportsContentFillMode(imageBlock);
|
|
108
|
-
console.log('Supports content fill mode:', supportsFillMode);
|
|
109
|
-
|
|
110
|
-
// Get the current content fill mode
|
|
111
|
-
const currentMode = engine.block.getContentFillMode(imageBlock);
|
|
112
|
-
console.log('Current fill mode:', currentMode);
|
|
113
|
-
|
|
114
|
-
// Set content fill mode - options are 'Crop', 'Cover', 'Contain'
|
|
115
|
-
// 'Cover' automatically scales and positions to fill the entire frame
|
|
116
|
-
engine.block.setContentFillMode(imageBlock, 'Cover');
|
|
117
|
-
|
|
118
|
-
// Create another image block to demonstrate crop scaling
|
|
119
|
-
const scaleBlock = await engine.block.addImage(imageUri, {
|
|
120
|
-
size: { width: 200, height: 200 }
|
|
121
|
-
});
|
|
122
|
-
engine.block.appendChild(page, scaleBlock);
|
|
123
|
-
engine.block.setPositionX(scaleBlock, 400);
|
|
124
|
-
engine.block.setPositionY(scaleBlock, 50);
|
|
125
|
-
|
|
126
|
-
// Set content fill mode to 'Crop' for manual control
|
|
127
|
-
engine.block.setContentFillMode(scaleBlock, 'Crop');
|
|
128
|
-
|
|
129
|
-
// Scale the content within the crop frame
|
|
130
|
-
// Values > 1 zoom in, values < 1 zoom out
|
|
131
|
-
engine.block.setCropScaleX(scaleBlock, 1.5);
|
|
132
|
-
engine.block.setCropScaleY(scaleBlock, 1.5);
|
|
133
|
-
|
|
134
|
-
// Or use uniform scaling from center
|
|
135
|
-
engine.block.setCropScaleRatio(scaleBlock, 1.2);
|
|
136
|
-
|
|
137
|
-
// Get the current scale values
|
|
138
|
-
const scaleX = engine.block.getCropScaleX(scaleBlock);
|
|
139
|
-
const scaleY = engine.block.getCropScaleY(scaleBlock);
|
|
140
|
-
const scaleRatio = engine.block.getCropScaleRatio(scaleBlock);
|
|
141
|
-
console.log('Crop scale:', { scaleX, scaleY, scaleRatio });
|
|
142
|
-
|
|
143
|
-
// Pan the content within the crop frame using translation
|
|
144
|
-
// Values are in percentage of the crop frame dimensions
|
|
145
|
-
engine.block.setCropTranslationX(scaleBlock, 0.1); // Move 10% right
|
|
146
|
-
engine.block.setCropTranslationY(scaleBlock, -0.1); // Move 10% up
|
|
147
|
-
|
|
148
|
-
// Get the current translation values
|
|
149
|
-
const translationX = engine.block.getCropTranslationX(scaleBlock);
|
|
150
|
-
const translationY = engine.block.getCropTranslationY(scaleBlock);
|
|
151
|
-
console.log('Crop translation:', { translationX, translationY });
|
|
152
|
-
|
|
153
|
-
// Ensure content covers the entire frame without gaps
|
|
154
|
-
// The minScaleRatio parameter sets the minimum scale allowed
|
|
155
|
-
const adjustedRatio = engine.block.adjustCropToFillFrame(scaleBlock, 1.0);
|
|
156
|
-
console.log('Adjusted scale ratio:', adjustedRatio);
|
|
157
|
-
|
|
158
|
-
// Create an image block to demonstrate crop rotation
|
|
159
|
-
const rotateBlock = await engine.block.addImage(imageUri, {
|
|
160
|
-
size: { width: 200, height: 200 }
|
|
161
|
-
});
|
|
162
|
-
engine.block.appendChild(page, rotateBlock);
|
|
163
|
-
engine.block.setPositionX(rotateBlock, 50);
|
|
164
|
-
engine.block.setPositionY(rotateBlock, 300);
|
|
165
|
-
engine.block.setContentFillMode(rotateBlock, 'Crop');
|
|
166
|
-
|
|
167
|
-
// Rotate the content within the crop frame (in radians)
|
|
168
|
-
// Math.PI / 4 = 45 degrees
|
|
169
|
-
engine.block.setCropRotation(rotateBlock, Math.PI / 12);
|
|
170
|
-
|
|
171
|
-
// Get the current rotation
|
|
172
|
-
const rotation = engine.block.getCropRotation(rotateBlock);
|
|
173
|
-
console.log('Crop rotation (radians):', rotation);
|
|
174
|
-
|
|
175
|
-
// Ensure content still fills the frame after rotation
|
|
176
|
-
engine.block.adjustCropToFillFrame(rotateBlock, 1.0);
|
|
177
|
-
|
|
178
|
-
// Create an image block to demonstrate flipping
|
|
179
|
-
const flipBlock = await engine.block.addImage(imageUri, {
|
|
180
|
-
size: { width: 200, height: 200 }
|
|
181
|
-
});
|
|
182
|
-
engine.block.appendChild(page, flipBlock);
|
|
183
|
-
engine.block.setPositionX(flipBlock, 300);
|
|
184
|
-
engine.block.setPositionY(flipBlock, 300);
|
|
185
|
-
engine.block.setContentFillMode(flipBlock, 'Crop');
|
|
186
|
-
|
|
187
|
-
// Flip the content horizontally
|
|
188
|
-
engine.block.flipCropHorizontal(flipBlock);
|
|
189
|
-
|
|
190
|
-
// Create an image block to demonstrate aspect ratio locking
|
|
191
|
-
const lockBlock = await engine.block.addImage(imageUri, {
|
|
192
|
-
size: { width: 200, height: 200 }
|
|
193
|
-
});
|
|
194
|
-
engine.block.appendChild(page, lockBlock);
|
|
195
|
-
engine.block.setPositionX(lockBlock, 550);
|
|
196
|
-
engine.block.setPositionY(lockBlock, 300);
|
|
197
|
-
engine.block.setContentFillMode(lockBlock, 'Crop');
|
|
198
|
-
|
|
199
|
-
// Lock the crop aspect ratio - when locked, crop handles maintain
|
|
200
|
-
// the current aspect ratio during resize operations
|
|
201
|
-
engine.block.setCropAspectRatioLocked(lockBlock, true);
|
|
202
|
-
|
|
203
|
-
// Check if aspect ratio is locked
|
|
204
|
-
const isLocked = engine.block.isCropAspectRatioLocked(lockBlock);
|
|
205
|
-
console.log('Aspect ratio locked:', isLocked);
|
|
206
|
-
|
|
207
|
-
// Reset crop to default state (sets content fill mode to 'Cover')
|
|
208
|
-
engine.block.resetCrop(lockBlock);
|
|
209
|
-
|
|
210
|
-
// Select the first image block to show it in the UI
|
|
211
|
-
engine.block.select(imageBlock);
|
|
212
|
-
|
|
213
|
-
// Zoom to page for better visibility
|
|
214
|
-
cesdk.engine.scene.zoomToBlock(page, {
|
|
215
|
-
padding: { left: 0.5, top: 0.5, right: 0.5, bottom: 0.9 }
|
|
216
|
-
});
|
|
217
|
-
}
|
|
218
|
-
}
|
|
15
|
+
>
|
|
16
|
+
> - [View source on GitHub](https://github.com/imgly/cesdk-web-examples/tree/release-$UBQ_VERSION$/guides-edit-image-transform-crop-server-js)
|
|
17
|
+
>
|
|
18
|
+
> - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-edit-image-transform-crop-server-js)
|
|
19
|
+
|
|
20
|
+
Image cropping selects a region inside an image and discards everything outside that frame. Unlike resizing which changes overall dimensions, cropping lets you focus on specific areas of interest. CE.SDK provides a crop system that works through scale, translation, and rotation to define the visible region of content within a block frame.
|
|
21
|
+
|
|
22
|
+
```typescript file=@cesdk_web_examples/guides-edit-image-transform-crop-server-js/server-js.ts reference-only
|
|
23
|
+
import CreativeEngine from '@cesdk/node';
|
|
24
|
+
import { config } from 'dotenv';
|
|
25
|
+
import { writeFileSync } from 'fs';
|
|
26
|
+
|
|
27
|
+
// Load environment variables
|
|
28
|
+
config();
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* CE.SDK Server Guide: Crop Images
|
|
32
|
+
*
|
|
33
|
+
* Demonstrates cropping images programmatically:
|
|
34
|
+
* - Checking crop support
|
|
35
|
+
* - Cropping to fixed dimensions
|
|
36
|
+
* - Content fill modes (Crop, Cover, Contain)
|
|
37
|
+
* - Scaling and positioning content
|
|
38
|
+
* - Cropping to aspect ratio
|
|
39
|
+
* - Rotating and flipping content
|
|
40
|
+
* - Locking aspect ratio
|
|
41
|
+
* - Exporting cropped images
|
|
42
|
+
*/
|
|
43
|
+
|
|
44
|
+
// Initialize CE.SDK engine in headless mode
|
|
45
|
+
const engine = await CreativeEngine.init({
|
|
46
|
+
baseURL: process.env.IMGLY_LOCAL_ASSETS_URL
|
|
47
|
+
// license: process.env.CESDK_LICENSE, // Optional (trial mode available)
|
|
48
|
+
});
|
|
219
49
|
|
|
220
|
-
|
|
50
|
+
try {
|
|
51
|
+
// Create a design scene with specific page dimensions
|
|
52
|
+
const scene = engine.scene.create();
|
|
53
|
+
const page = engine.block.create('page');
|
|
54
|
+
engine.block.setWidth(page, 800);
|
|
55
|
+
engine.block.setHeight(page, 600);
|
|
56
|
+
engine.block.appendChild(scene, page);
|
|
57
|
+
|
|
58
|
+
// Sample image URL for demonstrations
|
|
59
|
+
const imageUri = 'https://img.ly/static/ubq_samples/sample_1.jpg';
|
|
60
|
+
|
|
61
|
+
// Add an image block using the convenience addImage API
|
|
62
|
+
const imageBlock = await engine.block.addImage(imageUri, {
|
|
63
|
+
size: { width: 300, height: 200 }
|
|
64
|
+
});
|
|
65
|
+
engine.block.appendChild(page, imageBlock);
|
|
66
|
+
engine.block.setPositionX(imageBlock, 50);
|
|
67
|
+
engine.block.setPositionY(imageBlock, 50);
|
|
68
|
+
|
|
69
|
+
// Verify the block supports crop operations before applying them
|
|
70
|
+
const supportsCrop = engine.block.supportsCrop(imageBlock);
|
|
71
|
+
console.log('Block supports crop:', supportsCrop); // true
|
|
72
|
+
|
|
73
|
+
// Content fill modes control how images fit within their frame
|
|
74
|
+
// Check if the block supports content fill modes
|
|
75
|
+
const supportsFillMode = engine.block.supportsContentFillMode(imageBlock);
|
|
76
|
+
console.log('Supports content fill mode:', supportsFillMode);
|
|
77
|
+
|
|
78
|
+
// Get the current content fill mode
|
|
79
|
+
const currentMode = engine.block.getContentFillMode(imageBlock);
|
|
80
|
+
console.log('Current fill mode:', currentMode);
|
|
81
|
+
|
|
82
|
+
// Set content fill mode - options are 'Crop', 'Cover', 'Contain'
|
|
83
|
+
// 'Cover' automatically scales and positions to fill the entire frame
|
|
84
|
+
engine.block.setContentFillMode(imageBlock, 'Cover');
|
|
85
|
+
|
|
86
|
+
// Alignment only applies in 'Cover' and 'Contain' fill modes — it controls
|
|
87
|
+
// which part of the content stays visible (Cover) or where the letterboxed
|
|
88
|
+
// content sits (Contain). It is ignored in 'Crop' mode.
|
|
89
|
+
// Pin the content to the top-left corner instead of the default center
|
|
90
|
+
engine.block.setContentFillHorizontalAlignment(imageBlock, 'Left');
|
|
91
|
+
engine.block.setContentFillVerticalAlignment(imageBlock, 'Top');
|
|
92
|
+
|
|
93
|
+
// Read the current alignment values
|
|
94
|
+
const horizontalAlignment =
|
|
95
|
+
engine.block.getContentFillHorizontalAlignment(imageBlock);
|
|
96
|
+
const verticalAlignment =
|
|
97
|
+
engine.block.getContentFillVerticalAlignment(imageBlock);
|
|
98
|
+
console.log('Content fill alignment:', {
|
|
99
|
+
horizontalAlignment,
|
|
100
|
+
verticalAlignment
|
|
101
|
+
});
|
|
102
|
+
|
|
103
|
+
// Create another image block to demonstrate crop scaling
|
|
104
|
+
const scaleBlock = await engine.block.addImage(imageUri, {
|
|
105
|
+
size: { width: 200, height: 200 }
|
|
106
|
+
});
|
|
107
|
+
engine.block.appendChild(page, scaleBlock);
|
|
108
|
+
engine.block.setPositionX(scaleBlock, 400);
|
|
109
|
+
engine.block.setPositionY(scaleBlock, 50);
|
|
110
|
+
|
|
111
|
+
// Set content fill mode to 'Crop' for manual control
|
|
112
|
+
engine.block.setContentFillMode(scaleBlock, 'Crop');
|
|
113
|
+
|
|
114
|
+
// Scale the content within the crop frame
|
|
115
|
+
// Values > 1 zoom in, values < 1 zoom out
|
|
116
|
+
engine.block.setCropScaleX(scaleBlock, 1.5);
|
|
117
|
+
engine.block.setCropScaleY(scaleBlock, 1.5);
|
|
118
|
+
|
|
119
|
+
// Or use uniform scaling from center
|
|
120
|
+
engine.block.setCropScaleRatio(scaleBlock, 1.2);
|
|
121
|
+
|
|
122
|
+
// Get the current scale values
|
|
123
|
+
const scaleX = engine.block.getCropScaleX(scaleBlock);
|
|
124
|
+
const scaleY = engine.block.getCropScaleY(scaleBlock);
|
|
125
|
+
const scaleRatio = engine.block.getCropScaleRatio(scaleBlock);
|
|
126
|
+
console.log('Crop scale:', { scaleX, scaleY, scaleRatio });
|
|
127
|
+
|
|
128
|
+
// Pan the content within the crop frame using translation
|
|
129
|
+
// Values are in percentage of the crop frame dimensions
|
|
130
|
+
engine.block.setCropTranslationX(scaleBlock, 0.1); // Move 10% right
|
|
131
|
+
engine.block.setCropTranslationY(scaleBlock, -0.1); // Move 10% up
|
|
132
|
+
|
|
133
|
+
// Get the current translation values
|
|
134
|
+
const translationX = engine.block.getCropTranslationX(scaleBlock);
|
|
135
|
+
const translationY = engine.block.getCropTranslationY(scaleBlock);
|
|
136
|
+
console.log('Crop translation:', { translationX, translationY });
|
|
137
|
+
|
|
138
|
+
// Ensure content covers the entire frame without gaps
|
|
139
|
+
// The minScaleRatio parameter sets the minimum scale allowed
|
|
140
|
+
const adjustedRatio = engine.block.adjustCropToFillFrame(scaleBlock, 1.0);
|
|
141
|
+
console.log('Adjusted scale ratio:', adjustedRatio);
|
|
142
|
+
|
|
143
|
+
// Create an image block to demonstrate crop rotation
|
|
144
|
+
const rotateBlock = await engine.block.addImage(imageUri, {
|
|
145
|
+
size: { width: 200, height: 200 }
|
|
146
|
+
});
|
|
147
|
+
engine.block.appendChild(page, rotateBlock);
|
|
148
|
+
engine.block.setPositionX(rotateBlock, 50);
|
|
149
|
+
engine.block.setPositionY(rotateBlock, 300);
|
|
150
|
+
engine.block.setContentFillMode(rotateBlock, 'Crop');
|
|
151
|
+
|
|
152
|
+
// Rotate the content within the crop frame (in radians)
|
|
153
|
+
// Math.PI / 4 = 45 degrees
|
|
154
|
+
engine.block.setCropRotation(rotateBlock, Math.PI / 4);
|
|
155
|
+
|
|
156
|
+
// Get the current rotation
|
|
157
|
+
const rotation = engine.block.getCropRotation(rotateBlock);
|
|
158
|
+
console.log('Crop rotation (radians):', rotation);
|
|
159
|
+
|
|
160
|
+
// Ensure content still fills the frame after rotation
|
|
161
|
+
engine.block.adjustCropToFillFrame(rotateBlock, 1.0);
|
|
162
|
+
|
|
163
|
+
// Create an image block to demonstrate flipping
|
|
164
|
+
const flipBlock = await engine.block.addImage(imageUri, {
|
|
165
|
+
size: { width: 200, height: 200 }
|
|
166
|
+
});
|
|
167
|
+
engine.block.appendChild(page, flipBlock);
|
|
168
|
+
engine.block.setPositionX(flipBlock, 300);
|
|
169
|
+
engine.block.setPositionY(flipBlock, 300);
|
|
170
|
+
engine.block.setContentFillMode(flipBlock, 'Crop');
|
|
171
|
+
|
|
172
|
+
// Flip the content horizontally
|
|
173
|
+
engine.block.flipCropHorizontal(flipBlock);
|
|
174
|
+
|
|
175
|
+
// Or flip vertically
|
|
176
|
+
// engine.block.flipCropVertical(flipBlock);
|
|
177
|
+
|
|
178
|
+
// Create an image block to demonstrate aspect ratio locking
|
|
179
|
+
const lockBlock = await engine.block.addImage(imageUri, {
|
|
180
|
+
size: { width: 200, height: 200 }
|
|
181
|
+
});
|
|
182
|
+
engine.block.appendChild(page, lockBlock);
|
|
183
|
+
engine.block.setPositionX(lockBlock, 550);
|
|
184
|
+
engine.block.setPositionY(lockBlock, 300);
|
|
185
|
+
engine.block.setContentFillMode(lockBlock, 'Crop');
|
|
186
|
+
|
|
187
|
+
// Lock the crop aspect ratio - when locked, crop handles maintain
|
|
188
|
+
// the current aspect ratio during resize operations
|
|
189
|
+
engine.block.setCropAspectRatioLocked(lockBlock, true);
|
|
190
|
+
|
|
191
|
+
// Check if aspect ratio is locked
|
|
192
|
+
const isLocked = engine.block.isCropAspectRatioLocked(lockBlock);
|
|
193
|
+
console.log('Aspect ratio locked:', isLocked);
|
|
194
|
+
|
|
195
|
+
// Reset crop to default state (sets content fill mode to 'Cover')
|
|
196
|
+
engine.block.resetCrop(lockBlock);
|
|
197
|
+
|
|
198
|
+
// Export the result as PNG
|
|
199
|
+
const blob = await engine.block.export(page, { mimeType: 'image/png' });
|
|
200
|
+
const buffer = Buffer.from(await blob.arrayBuffer());
|
|
201
|
+
writeFileSync('crop-images-output.png', buffer);
|
|
202
|
+
console.log('Successfully exported crop-images-output.png');
|
|
203
|
+
} catch (error) {
|
|
204
|
+
console.error('Error:', error);
|
|
205
|
+
throw error;
|
|
206
|
+
} finally {
|
|
207
|
+
// Always dispose the engine to free resources
|
|
208
|
+
engine.dispose();
|
|
209
|
+
}
|
|
221
210
|
```
|
|
222
211
|
|
|
223
|
-
This guide covers
|
|
212
|
+
This guide covers how to crop images programmatically using the block API, including content fill modes, scaling, positioning, rotation, and aspect ratio locking.
|
|
224
213
|
|
|
225
|
-
##
|
|
226
|
-
|
|
227
|
-
The CE.SDK default UI provides an interactive crop tool that allows users to visually adjust crop areas with real-time feedback.
|
|
214
|
+
## Programmatic Cropping
|
|
228
215
|
|
|
229
|
-
###
|
|
216
|
+
### Initialize CE.SDK
|
|
230
217
|
|
|
231
|
-
|
|
218
|
+
For applications that need to crop images programmatically—whether for automation, batch processing, or dynamic user experiences—we start by setting up CE.SDK with the proper configuration.
|
|
232
219
|
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
220
|
+
```typescript highlight-setup
|
|
221
|
+
// Initialize CE.SDK engine in headless mode
|
|
222
|
+
const engine = await CreativeEngine.init({
|
|
223
|
+
baseURL: process.env.IMGLY_LOCAL_ASSETS_URL
|
|
224
|
+
// license: process.env.CESDK_LICENSE, // Optional (trial mode available)
|
|
225
|
+
});
|
|
226
|
+
```
|
|
238
227
|
|
|
239
|
-
|
|
228
|
+
This initializes the CE.SDK engine in headless mode, giving you full API access to the crop system without UI dependencies.
|
|
240
229
|
|
|
241
|
-
###
|
|
230
|
+
### Create a Scene with an Image
|
|
242
231
|
|
|
243
|
-
|
|
232
|
+
Before cropping, we need a scene with an image block. The example creates a page with specific dimensions and adds an image using the convenience `addImage()` API.
|
|
244
233
|
|
|
245
|
-
```typescript
|
|
246
|
-
//
|
|
247
|
-
|
|
234
|
+
```typescript highlight-create-scene
|
|
235
|
+
// Create a design scene with specific page dimensions
|
|
236
|
+
const scene = engine.scene.create();
|
|
237
|
+
const page = engine.block.create('page');
|
|
238
|
+
engine.block.setWidth(page, 800);
|
|
239
|
+
engine.block.setHeight(page, 600);
|
|
240
|
+
engine.block.appendChild(scene, page);
|
|
248
241
|
|
|
249
|
-
//
|
|
250
|
-
|
|
242
|
+
// Sample image URL for demonstrations
|
|
243
|
+
const imageUri = 'https://img.ly/static/ubq_samples/sample_1.jpg';
|
|
251
244
|
|
|
252
|
-
//
|
|
253
|
-
|
|
245
|
+
// Add an image block using the convenience addImage API
|
|
246
|
+
const imageBlock = await engine.block.addImage(imageUri, {
|
|
247
|
+
size: { width: 300, height: 200 }
|
|
248
|
+
});
|
|
249
|
+
engine.block.appendChild(page, imageBlock);
|
|
250
|
+
engine.block.setPositionX(imageBlock, 50);
|
|
251
|
+
engine.block.setPositionY(imageBlock, 50);
|
|
254
252
|
```
|
|
255
253
|
|
|
256
|
-
###
|
|
254
|
+
### Check Crop Support
|
|
257
255
|
|
|
258
|
-
|
|
256
|
+
Before applying crop operations to a block, verify it supports cropping. Not all block types can be cropped—for example, scene blocks do not support crop operations.
|
|
259
257
|
|
|
260
|
-
```typescript
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
'4:5', // Instagram Portrait
|
|
265
|
-
'16:9', // Widescreen
|
|
266
|
-
'Custom:3:2' // Custom ratios
|
|
267
|
-
];
|
|
268
|
-
cesdk.editor.setSettingString('ui/crop/aspectRatios', aspectRatios.join(','));
|
|
258
|
+
```typescript highlight-supportsCrop
|
|
259
|
+
// Verify the block supports crop operations before applying them
|
|
260
|
+
const supportsCrop = engine.block.supportsCrop(imageBlock);
|
|
261
|
+
console.log('Block supports crop:', supportsCrop); // true
|
|
269
262
|
```
|
|
270
263
|
|
|
271
|
-
|
|
264
|
+
Crop support is available for:
|
|
272
265
|
|
|
273
|
-
|
|
266
|
+
- **Graphic blocks** with image fills
|
|
267
|
+
- **Graphic blocks** with video fills
|
|
268
|
+
- **Shape blocks** with fills
|
|
274
269
|
|
|
275
|
-
|
|
270
|
+
Always verify support before applying crop operations to avoid errors.
|
|
276
271
|
|
|
277
|
-
###
|
|
272
|
+
### Content Fill Modes
|
|
278
273
|
|
|
279
|
-
|
|
274
|
+
CE.SDK provides three content fill modes that control how images fit within their frame. These modes determine whether you have manual control or automatic behavior.
|
|
280
275
|
|
|
281
|
-
```typescript highlight-
|
|
282
|
-
//
|
|
283
|
-
|
|
284
|
-
|
|
276
|
+
```typescript highlight-contentFillMode
|
|
277
|
+
// Content fill modes control how images fit within their frame
|
|
278
|
+
// Check if the block supports content fill modes
|
|
279
|
+
const supportsFillMode = engine.block.supportsContentFillMode(imageBlock);
|
|
280
|
+
console.log('Supports content fill mode:', supportsFillMode);
|
|
281
|
+
|
|
282
|
+
// Get the current content fill mode
|
|
283
|
+
const currentMode = engine.block.getContentFillMode(imageBlock);
|
|
284
|
+
console.log('Current fill mode:', currentMode);
|
|
285
|
+
|
|
286
|
+
// Set content fill mode - options are 'Crop', 'Cover', 'Contain'
|
|
287
|
+
// 'Cover' automatically scales and positions to fill the entire frame
|
|
288
|
+
engine.block.setContentFillMode(imageBlock, 'Cover');
|
|
285
289
|
```
|
|
286
290
|
|
|
287
|
-
|
|
291
|
+
The available fill modes are:
|
|
288
292
|
|
|
289
|
-
|
|
293
|
+
- **Crop** - Manual control over the exact crop region using scale and translation
|
|
294
|
+
- **Cover** - Automatically scales and positions content to cover the entire frame (no gaps)
|
|
295
|
+
- **Contain** - Automatically scales and positions content to fit within the frame (may show gaps)
|
|
290
296
|
|
|
291
|
-
|
|
292
|
-
// Check if the block supports content fill modes
|
|
293
|
-
const supportsFillMode = engine.block.supportsContentFillMode(imageBlock);
|
|
294
|
-
console.log('Supports content fill mode:', supportsFillMode);
|
|
297
|
+
Use `Crop` mode when you need precise control over which part of the image is visible. Use `Cover` for automatic framing that fills the entire space.
|
|
295
298
|
|
|
296
|
-
|
|
297
|
-
const currentMode = engine.block.getContentFillMode(imageBlock);
|
|
298
|
-
console.log('Current fill mode:', currentMode);
|
|
299
|
+
### Align Content Fill
|
|
299
300
|
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
301
|
+
In `Cover` and `Contain` modes, content is centered inside the block by default. Use the alignment APIs to pin content to a specific edge instead — for example, to keep the top-left of an image visible regardless of the image's aspect ratio.
|
|
302
|
+
|
|
303
|
+
```typescript highlight-content-fill-alignment
|
|
304
|
+
// Alignment only applies in 'Cover' and 'Contain' fill modes — it controls
|
|
305
|
+
// which part of the content stays visible (Cover) or where the letterboxed
|
|
306
|
+
// content sits (Contain). It is ignored in 'Crop' mode.
|
|
307
|
+
// Pin the content to the top-left corner instead of the default center
|
|
308
|
+
engine.block.setContentFillHorizontalAlignment(imageBlock, 'Left');
|
|
309
|
+
engine.block.setContentFillVerticalAlignment(imageBlock, 'Top');
|
|
310
|
+
|
|
311
|
+
// Read the current alignment values
|
|
312
|
+
const horizontalAlignment =
|
|
313
|
+
engine.block.getContentFillHorizontalAlignment(imageBlock);
|
|
314
|
+
const verticalAlignment =
|
|
315
|
+
engine.block.getContentFillVerticalAlignment(imageBlock);
|
|
316
|
+
console.log('Content fill alignment:', {
|
|
317
|
+
horizontalAlignment,
|
|
318
|
+
verticalAlignment
|
|
319
|
+
});
|
|
303
320
|
```
|
|
304
321
|
|
|
305
|
-
The
|
|
322
|
+
The horizontal options are `'Left'`, `'Center'` (default), and `'Right'`. The vertical options are `'Top'`, `'Center'` (default), and `'Bottom'`. In `Cover` mode the alignment controls which part of the oversized content stays visible; in `Contain` mode it controls where the letterboxed content sits. The alignment is ignored in `Crop` mode, where translation is set explicitly.
|
|
306
323
|
|
|
307
|
-
|
|
308
|
-
- **Cover** - Automatically scale and position content to fill the entire frame (no empty areas)
|
|
309
|
-
- **Contain** - Automatically scale and position content to fit entirely within the frame (may show background)
|
|
324
|
+
### Scale Content
|
|
310
325
|
|
|
311
|
-
|
|
326
|
+
When using `Crop` fill mode, you can scale the content within the crop frame to zoom in or out. Values greater than 1 zoom in, while values less than 1 zoom out.
|
|
312
327
|
|
|
313
|
-
|
|
328
|
+
```typescript highlight-cropScale
|
|
329
|
+
// Create another image block to demonstrate crop scaling
|
|
330
|
+
const scaleBlock = await engine.block.addImage(imageUri, {
|
|
331
|
+
size: { width: 200, height: 200 }
|
|
332
|
+
});
|
|
333
|
+
engine.block.appendChild(page, scaleBlock);
|
|
334
|
+
engine.block.setPositionX(scaleBlock, 400);
|
|
335
|
+
engine.block.setPositionY(scaleBlock, 50);
|
|
314
336
|
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
engine.block.
|
|
321
|
-
engine.block.
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
329
|
-
engine.block.
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
// Or use uniform scaling from center
|
|
333
|
-
engine.block.setCropScaleRatio(scaleBlock, 1.2);
|
|
334
|
-
|
|
335
|
-
// Get the current scale values
|
|
336
|
-
const scaleX = engine.block.getCropScaleX(scaleBlock);
|
|
337
|
-
const scaleY = engine.block.getCropScaleY(scaleBlock);
|
|
338
|
-
const scaleRatio = engine.block.getCropScaleRatio(scaleBlock);
|
|
339
|
-
console.log('Crop scale:', { scaleX, scaleY, scaleRatio });
|
|
337
|
+
// Set content fill mode to 'Crop' for manual control
|
|
338
|
+
engine.block.setContentFillMode(scaleBlock, 'Crop');
|
|
339
|
+
|
|
340
|
+
// Scale the content within the crop frame
|
|
341
|
+
// Values > 1 zoom in, values < 1 zoom out
|
|
342
|
+
engine.block.setCropScaleX(scaleBlock, 1.5);
|
|
343
|
+
engine.block.setCropScaleY(scaleBlock, 1.5);
|
|
344
|
+
|
|
345
|
+
// Or use uniform scaling from center
|
|
346
|
+
engine.block.setCropScaleRatio(scaleBlock, 1.2);
|
|
347
|
+
|
|
348
|
+
// Get the current scale values
|
|
349
|
+
const scaleX = engine.block.getCropScaleX(scaleBlock);
|
|
350
|
+
const scaleY = engine.block.getCropScaleY(scaleBlock);
|
|
351
|
+
const scaleRatio = engine.block.getCropScaleRatio(scaleBlock);
|
|
352
|
+
console.log('Crop scale:', { scaleX, scaleY, scaleRatio });
|
|
340
353
|
```
|
|
341
354
|
|
|
342
|
-
|
|
355
|
+
CE.SDK provides two scaling approaches:
|
|
343
356
|
|
|
344
|
-
|
|
357
|
+
- **Non-uniform scaling** - `setCropScaleX()` and `setCropScaleY()` for independent horizontal and vertical scaling
|
|
358
|
+
- **Uniform scaling** - `setCropScaleRatio()` for proportional scaling from the center of the crop frame
|
|
345
359
|
|
|
346
|
-
|
|
360
|
+
Uniform scaling maintains the image's aspect ratio, while non-uniform scaling can stretch or compress the image.
|
|
347
361
|
|
|
348
|
-
|
|
349
|
-
// Pan the content within the crop frame using translation
|
|
350
|
-
// Values are in percentage of the crop frame dimensions
|
|
351
|
-
engine.block.setCropTranslationX(scaleBlock, 0.1); // Move 10% right
|
|
352
|
-
engine.block.setCropTranslationY(scaleBlock, -0.1); // Move 10% up
|
|
362
|
+
### Position Content
|
|
353
363
|
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
364
|
+
Pan the content within the crop frame using translation. Translation values represent the offset as a percentage of the crop frame dimensions.
|
|
365
|
+
|
|
366
|
+
```typescript highlight-cropTranslation
|
|
367
|
+
// Pan the content within the crop frame using translation
|
|
368
|
+
// Values are in percentage of the crop frame dimensions
|
|
369
|
+
engine.block.setCropTranslationX(scaleBlock, 0.1); // Move 10% right
|
|
370
|
+
engine.block.setCropTranslationY(scaleBlock, -0.1); // Move 10% up
|
|
371
|
+
|
|
372
|
+
// Get the current translation values
|
|
373
|
+
const translationX = engine.block.getCropTranslationX(scaleBlock);
|
|
374
|
+
const translationY = engine.block.getCropTranslationY(scaleBlock);
|
|
375
|
+
console.log('Crop translation:', { translationX, translationY });
|
|
358
376
|
```
|
|
359
377
|
|
|
360
|
-
|
|
378
|
+
Translation values:
|
|
361
379
|
|
|
362
|
-
|
|
380
|
+
- Positive X values move content to the right
|
|
381
|
+
- Negative X values move content to the left
|
|
382
|
+
- Positive Y values move content down
|
|
383
|
+
- Negative Y values move content up
|
|
363
384
|
|
|
364
|
-
|
|
385
|
+
After adjusting scale and translation, use `adjustCropToFillFrame()` to ensure content covers the entire frame without gaps.
|
|
365
386
|
|
|
366
|
-
```typescript highlight-
|
|
387
|
+
```typescript highlight-adjustCropToFillFrame
|
|
367
388
|
// Ensure content covers the entire frame without gaps
|
|
368
389
|
// The minScaleRatio parameter sets the minimum scale allowed
|
|
369
390
|
const adjustedRatio = engine.block.adjustCropToFillFrame(scaleBlock, 1.0);
|
|
370
391
|
console.log('Adjusted scale ratio:', adjustedRatio);
|
|
371
392
|
```
|
|
372
393
|
|
|
373
|
-
|
|
394
|
+
The `minScaleRatio` parameter sets the minimum scale allowed—the method returns the actual scale ratio applied.
|
|
374
395
|
|
|
375
|
-
### Rotate
|
|
396
|
+
### Rotate Content
|
|
376
397
|
|
|
377
|
-
Rotate the
|
|
398
|
+
Rotate the content within the crop frame using radians. This rotates the image independently of the block's overall rotation.
|
|
378
399
|
|
|
379
|
-
```typescript highlight-
|
|
380
|
-
// Create an image block to demonstrate crop rotation
|
|
381
|
-
const rotateBlock = await engine.block.addImage(imageUri, {
|
|
382
|
-
|
|
383
|
-
});
|
|
384
|
-
engine.block.appendChild(page, rotateBlock);
|
|
385
|
-
engine.block.setPositionX(rotateBlock, 50);
|
|
386
|
-
engine.block.setPositionY(rotateBlock, 300);
|
|
387
|
-
engine.block.setContentFillMode(rotateBlock, 'Crop');
|
|
400
|
+
```typescript highlight-cropRotation
|
|
401
|
+
// Create an image block to demonstrate crop rotation
|
|
402
|
+
const rotateBlock = await engine.block.addImage(imageUri, {
|
|
403
|
+
size: { width: 200, height: 200 }
|
|
404
|
+
});
|
|
405
|
+
engine.block.appendChild(page, rotateBlock);
|
|
406
|
+
engine.block.setPositionX(rotateBlock, 50);
|
|
407
|
+
engine.block.setPositionY(rotateBlock, 300);
|
|
408
|
+
engine.block.setContentFillMode(rotateBlock, 'Crop');
|
|
388
409
|
|
|
389
|
-
// Rotate the content within the crop frame (in radians)
|
|
390
|
-
// Math.PI / 4 = 45 degrees
|
|
391
|
-
engine.block.setCropRotation(rotateBlock, Math.PI /
|
|
410
|
+
// Rotate the content within the crop frame (in radians)
|
|
411
|
+
// Math.PI / 4 = 45 degrees
|
|
412
|
+
engine.block.setCropRotation(rotateBlock, Math.PI / 4);
|
|
392
413
|
|
|
393
|
-
// Get the current rotation
|
|
394
|
-
const rotation = engine.block.getCropRotation(rotateBlock);
|
|
395
|
-
console.log('Crop rotation (radians):', rotation);
|
|
414
|
+
// Get the current rotation
|
|
415
|
+
const rotation = engine.block.getCropRotation(rotateBlock);
|
|
416
|
+
console.log('Crop rotation (radians):', rotation);
|
|
396
417
|
|
|
397
|
-
// Ensure content still fills the frame after rotation
|
|
398
|
-
engine.block.adjustCropToFillFrame(rotateBlock, 1.0);
|
|
418
|
+
// Ensure content still fills the frame after rotation
|
|
419
|
+
engine.block.adjustCropToFillFrame(rotateBlock, 1.0);
|
|
399
420
|
```
|
|
400
421
|
|
|
401
|
-
After
|
|
422
|
+
After rotating content, call `adjustCropToFillFrame()` to ensure the rotated content still covers the entire frame.
|
|
402
423
|
|
|
403
|
-
|
|
424
|
+
The difference between crop rotation and block rotation:
|
|
404
425
|
|
|
405
|
-
|
|
426
|
+
- **Crop rotation** - Rotates the content inside the frame while the frame stays fixed
|
|
427
|
+
- **Block rotation** - Rotates the entire block including its frame
|
|
406
428
|
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
engine.block.
|
|
414
|
-
|
|
415
|
-
|
|
429
|
+
### Flip Content
|
|
430
|
+
|
|
431
|
+
Flip the content horizontally or vertically to create mirror effects.
|
|
432
|
+
|
|
433
|
+
```typescript highlight-flipCrop
|
|
434
|
+
// Create an image block to demonstrate flipping
|
|
435
|
+
const flipBlock = await engine.block.addImage(imageUri, {
|
|
436
|
+
size: { width: 200, height: 200 }
|
|
437
|
+
});
|
|
438
|
+
engine.block.appendChild(page, flipBlock);
|
|
439
|
+
engine.block.setPositionX(flipBlock, 300);
|
|
440
|
+
engine.block.setPositionY(flipBlock, 300);
|
|
441
|
+
engine.block.setContentFillMode(flipBlock, 'Crop');
|
|
416
442
|
|
|
417
|
-
// Flip the content horizontally
|
|
418
|
-
engine.block.flipCropHorizontal(flipBlock);
|
|
443
|
+
// Flip the content horizontally
|
|
444
|
+
engine.block.flipCropHorizontal(flipBlock);
|
|
445
|
+
|
|
446
|
+
// Or flip vertically
|
|
447
|
+
// engine.block.flipCropVertical(flipBlock);
|
|
419
448
|
```
|
|
420
449
|
|
|
421
|
-
|
|
450
|
+
Flipping affects only the content within the frame, not the frame itself.
|
|
422
451
|
|
|
423
|
-
Lock
|
|
452
|
+
### Lock Aspect Ratio
|
|
424
453
|
|
|
425
|
-
|
|
426
|
-
|
|
427
|
-
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
engine.block.
|
|
433
|
-
engine.block.
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
454
|
+
When building interactive crop interfaces, you can lock the aspect ratio to maintain proportions during resize operations.
|
|
455
|
+
|
|
456
|
+
```typescript highlight-lockAspectRatio
|
|
457
|
+
// Create an image block to demonstrate aspect ratio locking
|
|
458
|
+
const lockBlock = await engine.block.addImage(imageUri, {
|
|
459
|
+
size: { width: 200, height: 200 }
|
|
460
|
+
});
|
|
461
|
+
engine.block.appendChild(page, lockBlock);
|
|
462
|
+
engine.block.setPositionX(lockBlock, 550);
|
|
463
|
+
engine.block.setPositionY(lockBlock, 300);
|
|
464
|
+
engine.block.setContentFillMode(lockBlock, 'Crop');
|
|
465
|
+
|
|
466
|
+
// Lock the crop aspect ratio - when locked, crop handles maintain
|
|
467
|
+
// the current aspect ratio during resize operations
|
|
468
|
+
engine.block.setCropAspectRatioLocked(lockBlock, true);
|
|
469
|
+
|
|
470
|
+
// Check if aspect ratio is locked
|
|
471
|
+
const isLocked = engine.block.isCropAspectRatioLocked(lockBlock);
|
|
472
|
+
console.log('Aspect ratio locked:', isLocked);
|
|
442
473
|
```
|
|
443
474
|
|
|
475
|
+
When locked, crop handles maintain the current aspect ratio. This is useful for:
|
|
476
|
+
|
|
477
|
+
- Preparing images for specific formats (social media, print)
|
|
478
|
+
- Maintaining consistent proportions across multiple images
|
|
479
|
+
- Preventing accidental distortion during editing
|
|
480
|
+
|
|
444
481
|
### Reset Crop
|
|
445
482
|
|
|
446
|
-
|
|
483
|
+
To restore default crop settings, use `resetCrop()`. This sets the content fill mode to `Cover` and adjusts crop values so the content covers the block.
|
|
447
484
|
|
|
448
|
-
```typescript highlight-
|
|
485
|
+
```typescript highlight-resetCrop
|
|
449
486
|
// Reset crop to default state (sets content fill mode to 'Cover')
|
|
450
487
|
engine.block.resetCrop(lockBlock);
|
|
451
488
|
```
|
|
@@ -454,11 +491,11 @@ engine.block.resetCrop(lockBlock);
|
|
|
454
491
|
|
|
455
492
|
Crop transforms use normalized values:
|
|
456
493
|
|
|
457
|
-
| Property
|
|
458
|
-
|
|
459
|
-
| Scale
|
|
460
|
-
| Translation | Float (-1.0 to 1.0) | Percentage of frame dimensions
|
|
461
|
-
| Rotation
|
|
494
|
+
| Property | Value Type | Description |
|
|
495
|
+
|----------|------------|-------------|
|
|
496
|
+
| Scale | Float (0.0+) | 1.0 is original size, 2.0 is double, 0.5 is half |
|
|
497
|
+
| Translation | Float (-1.0 to 1.0) | Percentage of frame dimensions |
|
|
498
|
+
| Rotation | Float (radians) | Math.PI = 180°, Math.PI/2 = 90° |
|
|
462
499
|
|
|
463
500
|
All crop values are independent of canvas zoom level.
|
|
464
501
|
|
|
@@ -476,48 +513,72 @@ engine.block.setRotation(imageBlock, Math.PI / 6);
|
|
|
476
513
|
engine.block.setWidth(imageBlock, 400);
|
|
477
514
|
```
|
|
478
515
|
|
|
516
|
+
## Export Results
|
|
517
|
+
|
|
518
|
+
After applying crop transformations, export the processed content to a file.
|
|
519
|
+
|
|
520
|
+
```typescript highlight-export
|
|
521
|
+
// Export the result as PNG
|
|
522
|
+
const blob = await engine.block.export(page, { mimeType: 'image/png' });
|
|
523
|
+
const buffer = Buffer.from(await blob.arrayBuffer());
|
|
524
|
+
writeFileSync('crop-images-output.png', buffer);
|
|
525
|
+
console.log('Successfully exported crop-images-output.png');
|
|
526
|
+
```
|
|
527
|
+
|
|
528
|
+
Always dispose of the engine instance when processing is complete to free resources.
|
|
529
|
+
|
|
530
|
+
```typescript highlight-cleanup
|
|
531
|
+
// Always dispose the engine to free resources
|
|
532
|
+
engine.dispose();
|
|
533
|
+
```
|
|
534
|
+
|
|
479
535
|
## Troubleshooting
|
|
480
536
|
|
|
481
|
-
| Issue
|
|
482
|
-
|
|
483
|
-
| Crop functions throw error
|
|
484
|
-
| Black bars after scaling
|
|
485
|
-
| Content not filling frame
|
|
486
|
-
| Unexpected crop behavior
|
|
487
|
-
| Crop handles not visible in UI | Enable with `cesdk.editor.setSettingBool('controlGizmo/showCropHandles', true)` |
|
|
537
|
+
| Issue | Cause / Fix |
|
|
538
|
+
|-------|-------------|
|
|
539
|
+
| Crop functions throw error | Verify block supports crop with `supportsCrop()` |
|
|
540
|
+
| Black bars after scaling | Call `adjustCropToFillFrame()` or increase scale ratio |
|
|
541
|
+
| Content not filling frame | Check content fill mode - use 'Cover' for automatic fill |
|
|
542
|
+
| Unexpected crop behavior | Ensure content fill mode is set to 'Crop' for manual control |
|
|
488
543
|
|
|
489
544
|
## API Reference
|
|
490
545
|
|
|
491
|
-
| Method
|
|
492
|
-
|
|
493
|
-
| `block.supportsCrop(id)`
|
|
494
|
-
| `block.
|
|
495
|
-
| `block.
|
|
496
|
-
| `block.
|
|
497
|
-
| `block.
|
|
498
|
-
| `block.
|
|
499
|
-
| `block.
|
|
500
|
-
| `block.
|
|
501
|
-
| `block.
|
|
502
|
-
| `block.
|
|
503
|
-
| `block.
|
|
504
|
-
| `block.
|
|
505
|
-
| `block.
|
|
506
|
-
| `block.
|
|
507
|
-
| `block.
|
|
508
|
-
| `block.
|
|
509
|
-
| `block.
|
|
510
|
-
| `block.
|
|
511
|
-
| `block.
|
|
512
|
-
| `block.
|
|
513
|
-
| `block.
|
|
514
|
-
| `block.
|
|
546
|
+
| Method | Description |
|
|
547
|
+
|--------|-------------|
|
|
548
|
+
| `block.supportsCrop(id)` | Check if a block supports cropping |
|
|
549
|
+
| `block.setCropScaleX(id, scaleX)` | Set horizontal crop scale |
|
|
550
|
+
| `block.setCropScaleY(id, scaleY)` | Set vertical crop scale |
|
|
551
|
+
| `block.setCropScaleRatio(id, ratio)` | Set uniform crop scale from center |
|
|
552
|
+
| `block.setCropRotation(id, rotation)` | Set crop rotation in radians |
|
|
553
|
+
| `block.setCropTranslationX(id, x)` | Set horizontal crop translation |
|
|
554
|
+
| `block.setCropTranslationY(id, y)` | Set vertical crop translation |
|
|
555
|
+
| `block.adjustCropToFillFrame(id, minRatio)` | Adjust crop to fill frame |
|
|
556
|
+
| `block.flipCropHorizontal(id)` | Flip content horizontally |
|
|
557
|
+
| `block.flipCropVertical(id)` | Flip content vertically |
|
|
558
|
+
| `block.isCropAspectRatioLocked(id)` | Check if aspect ratio is locked |
|
|
559
|
+
| `block.setCropAspectRatioLocked(id, locked)` | Lock/unlock aspect ratio |
|
|
560
|
+
| `block.resetCrop(id)` | Reset crop to default state |
|
|
561
|
+
| `block.supportsContentFillMode(id)` | Check if block supports fill modes |
|
|
562
|
+
| `block.setContentFillMode(id, mode)` | Set content fill mode |
|
|
563
|
+
| `block.getContentFillMode(id)` | Get current content fill mode |
|
|
564
|
+
| `block.setContentFillHorizontalAlignment(id, alignment)` | Align fill horizontally (Left, Center, Right) in Cover/Contain modes |
|
|
565
|
+
| `block.getContentFillHorizontalAlignment(id)` | Get horizontal fill alignment |
|
|
566
|
+
| `block.setContentFillVerticalAlignment(id, alignment)` | Align fill vertically (Top, Center, Bottom) in Cover/Contain modes |
|
|
567
|
+
| `block.getContentFillVerticalAlignment(id)` | Get vertical fill alignment |
|
|
568
|
+
| `block.getCropScaleX(id)` | Get horizontal crop scale |
|
|
569
|
+
| `block.getCropScaleY(id)` | Get vertical crop scale |
|
|
570
|
+
| `block.getCropScaleRatio(id)` | Get uniform crop scale ratio |
|
|
571
|
+
| `block.getCropRotation(id)` | Get crop rotation in radians |
|
|
572
|
+
| `block.getCropTranslationX(id)` | Get horizontal crop translation |
|
|
573
|
+
| `block.getCropTranslationY(id)` | Get vertical crop translation |
|
|
574
|
+
|
|
575
|
+
|
|
515
576
|
|
|
516
577
|
---
|
|
517
578
|
|
|
518
579
|
## More Resources
|
|
519
580
|
|
|
520
|
-
- **[
|
|
581
|
+
- **[Node.js Documentation Index](https://img.ly/docs/cesdk/node.md)** - Browse all Node.js documentation
|
|
521
582
|
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
522
|
-
- **[Web Documentation](./
|
|
523
|
-
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|
|
583
|
+
- **[Web Documentation](./node.md)** - Interactive documentation with examples
|
|
584
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|