@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,464 +1,229 @@
|
|
|
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 Compositions](./create-composition.md) > [Position and Align](./insert-media/position-and-align.md)
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
Position, align, and distribute design elements precisely using CE.SDK's
|
|
8
|
-
layout APIs
|
|
8
|
+
layout APIs in headless server environments.
|
|
9
9
|
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
> **Reading time:** 8 minutes
|
|
10
|
+
> **Reading time:** 6 minutes
|
|
13
11
|
>
|
|
14
12
|
> **Resources:**
|
|
15
13
|
>
|
|
16
14
|
> - [Download examples](https://github.com/imgly/cesdk-web-examples/archive/refs/tags/release-$UBQ_VERSION$.zip)
|
|
17
|
-
>
|
|
18
|
-
> - [
|
|
19
|
-
>
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
import {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
EffectsAssetSource,
|
|
32
|
-
FiltersAssetSource,
|
|
33
|
-
PagePresetsAssetSource,
|
|
34
|
-
StickerAssetSource,
|
|
35
|
-
TextAssetSource,
|
|
36
|
-
TextComponentAssetSource,
|
|
37
|
-
TypefaceAssetSource,
|
|
38
|
-
UploadAssetSources,
|
|
39
|
-
VectorShapeAssetSource
|
|
40
|
-
} from '@cesdk/cesdk-js/plugins';
|
|
41
|
-
import { DesignEditorConfig } from './design-editor/plugin';
|
|
42
|
-
import packageJson from './package.json';
|
|
15
|
+
>
|
|
16
|
+
> - [View source on GitHub](https://github.com/imgly/cesdk-web-examples/tree/release-$UBQ_VERSION$/guides-create-composition-position-and-align-server-js)
|
|
17
|
+
>
|
|
18
|
+
> - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-create-composition-position-and-align-server-js)
|
|
19
|
+
|
|
20
|
+
CE.SDK positions blocks relative to their parent container with the origin at the top left. You can set positions using absolute values (design units) or as percentages of the parent's dimensions. For multi-element layouts, alignment and distribution APIs arrange blocks precisely without manual calculations.
|
|
21
|
+
|
|
22
|
+
```typescript file=@cesdk_web_examples/guides-create-composition-position-and-align-server-js/server-js.ts reference-only
|
|
23
|
+
import CreativeEngine from '@cesdk/node';
|
|
24
|
+
import { config } from 'dotenv';
|
|
25
|
+
import { writeFileSync, mkdirSync, existsSync } from 'fs';
|
|
26
|
+
|
|
27
|
+
// Load environment variables
|
|
28
|
+
config();
|
|
43
29
|
|
|
44
30
|
/**
|
|
45
|
-
* CE.SDK
|
|
31
|
+
* CE.SDK Server Guide: Positioning and Alignment
|
|
46
32
|
*
|
|
47
33
|
* Demonstrates positioning, aligning, and distributing design elements:
|
|
48
34
|
* - Setting block positions with absolute and percentage modes
|
|
49
35
|
* - Aligning multiple blocks horizontally and vertically
|
|
50
36
|
* - Aligning a single block within its parent
|
|
51
37
|
* - Distributing blocks with even spacing
|
|
52
|
-
* -
|
|
38
|
+
* - Exporting results
|
|
53
39
|
*/
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
40
|
+
|
|
41
|
+
// Initialize CE.SDK engine in headless mode
|
|
42
|
+
const engine = await CreativeEngine.init({
|
|
43
|
+
baseURL: process.env.IMGLY_LOCAL_ASSETS_URL
|
|
44
|
+
// license: process.env.CESDK_LICENSE, // Optional (trial mode available)
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
try {
|
|
48
|
+
// Create a design scene with specific page dimensions
|
|
49
|
+
engine.scene.create('VerticalStack', {
|
|
50
|
+
page: { size: { width: 800, height: 600 } }
|
|
51
|
+
});
|
|
52
|
+
const page = engine.block.findByType('page')[0];
|
|
53
|
+
|
|
54
|
+
// Sample image URL for demonstrations
|
|
55
|
+
const imageUri = 'https://img.ly/static/ubq_samples/sample_1.jpg';
|
|
56
|
+
const blockSize = { width: 150, height: 100 };
|
|
57
|
+
|
|
58
|
+
// Create an image block and position it using absolute coordinates
|
|
59
|
+
const block1 = await engine.block.addImage(imageUri, { size: blockSize });
|
|
60
|
+
engine.block.appendChild(page, block1);
|
|
61
|
+
|
|
62
|
+
// Set position using absolute coordinates (in design units)
|
|
63
|
+
engine.block.setPositionX(block1, 50);
|
|
64
|
+
engine.block.setPositionY(block1, 50);
|
|
65
|
+
|
|
66
|
+
// Query the current position
|
|
67
|
+
const x1 = engine.block.getPositionX(block1);
|
|
68
|
+
const y1 = engine.block.getPositionY(block1);
|
|
69
|
+
console.log(`Block 1 absolute position: (${x1}, ${y1})`);
|
|
70
|
+
|
|
71
|
+
// Create another block and position it using percentage mode
|
|
72
|
+
const block2 = await engine.block.addImage(imageUri, { size: blockSize });
|
|
73
|
+
engine.block.appendChild(page, block2);
|
|
74
|
+
|
|
75
|
+
// Set position mode to Percent and use percentage values
|
|
76
|
+
engine.block.setPositionXMode(block2, 'Percent');
|
|
77
|
+
engine.block.setPositionYMode(block2, 'Percent');
|
|
78
|
+
engine.block.setPositionX(block2, 0.5); // 50% from left
|
|
79
|
+
engine.block.setPositionY(block2, 0.1); // 10% from top
|
|
80
|
+
|
|
81
|
+
// Query the position mode
|
|
82
|
+
const xMode = engine.block.getPositionXMode(block2);
|
|
83
|
+
const yMode = engine.block.getPositionYMode(block2);
|
|
84
|
+
console.log(`Block 2 position modes: X=${xMode}, Y=${yMode}`);
|
|
85
|
+
|
|
86
|
+
// Create a third block and use the convenience method
|
|
87
|
+
const block3 = await engine.block.addImage(imageUri, { size: blockSize });
|
|
88
|
+
engine.block.appendChild(page, block3);
|
|
89
|
+
|
|
90
|
+
// Set both X and Y at once with a specific position mode
|
|
91
|
+
engine.block.setPosition(block3, 0.75, 0.1, { positionMode: 'Percent' });
|
|
92
|
+
console.log(
|
|
93
|
+
'Block 3 set to 75% horizontal, 10% vertical using setPosition()'
|
|
94
|
+
);
|
|
95
|
+
|
|
96
|
+
// ===== ALIGNMENT DEMONSTRATION =====
|
|
97
|
+
console.log('\n--- Alignment Demo ---');
|
|
98
|
+
|
|
99
|
+
// Create multiple blocks for alignment demonstration
|
|
100
|
+
const alignBlocks: number[] = [];
|
|
101
|
+
const alignPositions = [
|
|
102
|
+
{ x: 100, y: 200 },
|
|
103
|
+
{ x: 250, y: 250 },
|
|
104
|
+
{ x: 180, y: 300 },
|
|
105
|
+
{ x: 350, y: 275 }
|
|
106
|
+
];
|
|
107
|
+
|
|
108
|
+
for (const pos of alignPositions) {
|
|
109
|
+
const block = await engine.block.addImage(imageUri, {
|
|
110
|
+
size: { width: 100, height: 80 }
|
|
97
111
|
});
|
|
112
|
+
engine.block.appendChild(page, block);
|
|
113
|
+
engine.block.setPositionX(block, pos.x);
|
|
114
|
+
engine.block.setPositionY(block, pos.y);
|
|
115
|
+
alignBlocks.push(block);
|
|
116
|
+
}
|
|
98
117
|
|
|
99
|
-
|
|
100
|
-
|
|
118
|
+
// Check if blocks can be aligned
|
|
119
|
+
const canAlign = engine.block.isAlignable(alignBlocks);
|
|
120
|
+
console.log('Can align blocks:', canAlign);
|
|
101
121
|
|
|
102
|
-
|
|
103
|
-
|
|
122
|
+
if (canAlign) {
|
|
123
|
+
// Align blocks horizontally to the left edge of their bounding box
|
|
124
|
+
engine.block.alignHorizontally(alignBlocks, 'Left');
|
|
125
|
+
console.log('Blocks aligned to left edge');
|
|
104
126
|
}
|
|
105
127
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
128
|
+
// Create a single block to demonstrate aligning within parent
|
|
129
|
+
const singleBlock = await engine.block.addImage(imageUri, {
|
|
130
|
+
size: { width: 120, height: 80 }
|
|
131
|
+
});
|
|
132
|
+
engine.block.appendChild(page, singleBlock);
|
|
133
|
+
|
|
134
|
+
// Position initially off-center
|
|
135
|
+
engine.block.setPositionX(singleBlock, 500);
|
|
136
|
+
engine.block.setPositionY(singleBlock, 450);
|
|
137
|
+
|
|
138
|
+
// Align single block to center of parent (page)
|
|
139
|
+
if (engine.block.isAlignable([singleBlock])) {
|
|
140
|
+
engine.block.alignHorizontally([singleBlock], 'Center');
|
|
141
|
+
engine.block.alignVertically([singleBlock], 'Bottom');
|
|
142
|
+
console.log('Single block centered horizontally and aligned to bottom');
|
|
143
|
+
}
|
|
121
144
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
builder.Button('align-demo', {
|
|
125
|
-
label: 'Align',
|
|
126
|
-
variant: 'regular',
|
|
127
|
-
isActive: this.currentDemo === 'align',
|
|
128
|
-
onClick: async () => {
|
|
129
|
-
this.currentDemo = 'align';
|
|
130
|
-
await this.clearAndRun(cesdk, () => this.runAlignDemo(cesdk));
|
|
131
|
-
}
|
|
132
|
-
});
|
|
133
|
-
});
|
|
145
|
+
// ===== DISTRIBUTION DEMONSTRATION =====
|
|
146
|
+
console.log('\n--- Distribution Demo ---');
|
|
134
147
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
label: 'Distribute',
|
|
139
|
-
variant: 'regular',
|
|
140
|
-
isActive: this.currentDemo === 'distribute',
|
|
141
|
-
onClick: async () => {
|
|
142
|
-
this.currentDemo = 'distribute';
|
|
143
|
-
await this.clearAndRun(cesdk, () => this.runDistributeDemo(cesdk));
|
|
144
|
-
}
|
|
145
|
-
});
|
|
146
|
-
});
|
|
148
|
+
// Create blocks for distribution demonstration
|
|
149
|
+
const distributeBlocks: number[] = [];
|
|
150
|
+
const xPositions = [480, 530, 650, 750];
|
|
147
151
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
label: 'Snapping',
|
|
152
|
-
variant: 'regular',
|
|
153
|
-
isActive: this.currentDemo === 'snapping',
|
|
154
|
-
onClick: async () => {
|
|
155
|
-
this.currentDemo = 'snapping';
|
|
156
|
-
await this.clearAndRun(cesdk, () => this.runSnappingDemo(cesdk));
|
|
157
|
-
}
|
|
158
|
-
});
|
|
152
|
+
for (let i = 0; i < xPositions.length; i++) {
|
|
153
|
+
const block = await engine.block.addImage(imageUri, {
|
|
154
|
+
size: { width: 60, height: 50 }
|
|
159
155
|
});
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
'position-demo-btn'
|
|
165
|
-
);
|
|
166
|
-
cesdk.ui.insertOrderComponent(
|
|
167
|
-
{ in: 'ly.img.navigation.bar', position: 'end' },
|
|
168
|
-
'align-demo-btn'
|
|
169
|
-
);
|
|
170
|
-
cesdk.ui.insertOrderComponent(
|
|
171
|
-
{ in: 'ly.img.navigation.bar', position: 'end' },
|
|
172
|
-
'distribute-demo-btn'
|
|
173
|
-
);
|
|
174
|
-
cesdk.ui.insertOrderComponent(
|
|
175
|
-
{ in: 'ly.img.navigation.bar', position: 'end' },
|
|
176
|
-
'snapping-demo-btn'
|
|
177
|
-
);
|
|
156
|
+
engine.block.appendChild(page, block);
|
|
157
|
+
engine.block.setPositionX(block, xPositions[i]);
|
|
158
|
+
engine.block.setPositionY(block, 200); // Same Y for horizontal distribution
|
|
159
|
+
distributeBlocks.push(block);
|
|
178
160
|
}
|
|
179
161
|
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
) {
|
|
184
|
-
const engine = cesdk.engine;
|
|
185
|
-
const page = engine.block.findByType('page')[0];
|
|
186
|
-
|
|
187
|
-
// Remove all children from the page
|
|
188
|
-
const children = engine.block.getChildren(page);
|
|
189
|
-
children.forEach((child) => {
|
|
190
|
-
engine.block.destroy(child);
|
|
191
|
-
});
|
|
162
|
+
// Check if blocks can be distributed
|
|
163
|
+
const canDistribute = engine.block.isDistributable(distributeBlocks);
|
|
164
|
+
console.log('Can distribute blocks:', canDistribute);
|
|
192
165
|
|
|
193
|
-
|
|
194
|
-
|
|
166
|
+
if (canDistribute) {
|
|
167
|
+
// Distribute blocks horizontally with even spacing
|
|
168
|
+
engine.block.distributeHorizontally(distributeBlocks);
|
|
169
|
+
console.log('Blocks distributed horizontally with even spacing');
|
|
195
170
|
}
|
|
196
171
|
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
const engine = cesdk.engine;
|
|
201
|
-
const page = engine.block.findByType('page')[0];
|
|
202
|
-
const pageWidth = engine.block.getWidth(page);
|
|
203
|
-
const pageHeight = engine.block.getHeight(page);
|
|
204
|
-
|
|
205
|
-
// Create image blocks to demonstrate positioning
|
|
206
|
-
const imageUri = 'https://img.ly/static/ubq_samples/sample_1.jpg';
|
|
207
|
-
const blockSize = { width: 150, height: 100 };
|
|
208
|
-
|
|
209
|
-
// Block 1: Absolute positioning at specific coordinates
|
|
210
|
-
const block1 = await engine.block.addImage(imageUri, { size: blockSize });
|
|
211
|
-
engine.block.appendChild(page, block1);
|
|
212
|
-
|
|
213
|
-
// Set position using absolute coordinates (in design units)
|
|
214
|
-
engine.block.setPositionX(block1, 50);
|
|
215
|
-
engine.block.setPositionY(block1, 50);
|
|
216
|
-
|
|
217
|
-
// Query the current position
|
|
218
|
-
const x1 = engine.block.getPositionX(block1);
|
|
219
|
-
const y1 = engine.block.getPositionY(block1);
|
|
220
|
-
// eslint-disable-next-line no-console
|
|
221
|
-
console.log(`Block 1 position: (${x1}, ${y1})`);
|
|
222
|
-
|
|
223
|
-
// Block 2: Percentage-based positioning (relative to parent)
|
|
224
|
-
const block2 = await engine.block.addImage(imageUri, { size: blockSize });
|
|
225
|
-
engine.block.appendChild(page, block2);
|
|
226
|
-
|
|
227
|
-
// Set position mode to Percent and use percentage values
|
|
228
|
-
engine.block.setPositionXMode(block2, 'Percent');
|
|
229
|
-
engine.block.setPositionYMode(block2, 'Percent');
|
|
230
|
-
engine.block.setPositionX(block2, 0.5); // 50% from left
|
|
231
|
-
engine.block.setPositionY(block2, 0.5); // 50% from top
|
|
232
|
-
|
|
233
|
-
// Query the position mode
|
|
234
|
-
const xMode = engine.block.getPositionXMode(block2);
|
|
235
|
-
const yMode = engine.block.getPositionYMode(block2);
|
|
236
|
-
// eslint-disable-next-line no-console
|
|
237
|
-
console.log(`Block 2 position modes: X=${xMode}, Y=${yMode}`);
|
|
238
|
-
|
|
239
|
-
// Block 3: Using the convenience method setPosition()
|
|
240
|
-
const block3 = await engine.block.addImage(imageUri, { size: blockSize });
|
|
241
|
-
engine.block.appendChild(page, block3);
|
|
242
|
-
|
|
243
|
-
// Set both X and Y at once with a specific position mode
|
|
244
|
-
engine.block.setPosition(block3, 0.75, 0.25, { positionMode: 'Percent' });
|
|
245
|
-
|
|
246
|
-
// eslint-disable-next-line no-console
|
|
247
|
-
console.log(
|
|
248
|
-
`Block 3 set to 75% horizontal, 25% vertical using setPosition()`
|
|
249
|
-
);
|
|
250
|
-
|
|
251
|
-
// Block 4: Bottom right corner using absolute positioning
|
|
252
|
-
const block4 = await engine.block.addImage(imageUri, { size: blockSize });
|
|
253
|
-
engine.block.appendChild(page, block4);
|
|
254
|
-
engine.block.setPositionX(block4, pageWidth - blockSize.width - 50);
|
|
255
|
-
engine.block.setPositionY(block4, pageHeight - blockSize.height - 50);
|
|
256
|
-
|
|
257
|
-
// eslint-disable-next-line no-console
|
|
258
|
-
console.log(
|
|
259
|
-
'Position demo initialized. Blocks placed at various positions.'
|
|
260
|
-
);
|
|
261
|
-
}
|
|
172
|
+
// Create another set of blocks for vertical distribution
|
|
173
|
+
const verticalBlocks: number[] = [];
|
|
174
|
+
const yPositions = [280, 350, 420, 520];
|
|
262
175
|
|
|
263
|
-
|
|
264
|
-
const
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
// Create multiple blocks for alignment demonstration
|
|
268
|
-
const imageUri = 'https://img.ly/static/ubq_samples/sample_1.jpg';
|
|
269
|
-
const blockSize = { width: 100, height: 80 };
|
|
270
|
-
|
|
271
|
-
// Create 4 blocks at random-ish positions
|
|
272
|
-
const blocks: number[] = [];
|
|
273
|
-
const positions = [
|
|
274
|
-
{ x: 100, y: 100 },
|
|
275
|
-
{ x: 250, y: 150 },
|
|
276
|
-
{ x: 180, y: 250 },
|
|
277
|
-
{ x: 350, y: 200 }
|
|
278
|
-
];
|
|
279
|
-
|
|
280
|
-
for (const pos of positions) {
|
|
281
|
-
const block = await engine.block.addImage(imageUri, { size: blockSize });
|
|
282
|
-
engine.block.appendChild(page, block);
|
|
283
|
-
engine.block.setPositionX(block, pos.x);
|
|
284
|
-
engine.block.setPositionY(block, pos.y);
|
|
285
|
-
blocks.push(block);
|
|
286
|
-
}
|
|
287
|
-
|
|
288
|
-
// Check if blocks can be aligned
|
|
289
|
-
const canAlign = engine.block.isAlignable(blocks);
|
|
290
|
-
// eslint-disable-next-line no-console
|
|
291
|
-
console.log('Can align blocks:', canAlign);
|
|
292
|
-
|
|
293
|
-
if (canAlign) {
|
|
294
|
-
// Align blocks horizontally to the left edge of their bounding box
|
|
295
|
-
engine.block.alignHorizontally(blocks, 'Left');
|
|
296
|
-
// eslint-disable-next-line no-console
|
|
297
|
-
console.log('Blocks aligned to left edge');
|
|
298
|
-
}
|
|
299
|
-
|
|
300
|
-
// Create a single block to demonstrate aligning within parent
|
|
301
|
-
const singleBlock = await engine.block.addImage(imageUri, {
|
|
302
|
-
size: { width: 150, height: 100 }
|
|
176
|
+
for (let i = 0; i < yPositions.length; i++) {
|
|
177
|
+
const block = await engine.block.addImage(imageUri, {
|
|
178
|
+
size: { width: 60, height: 50 }
|
|
303
179
|
});
|
|
304
|
-
engine.block.appendChild(page,
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
engine.block.setPositionY(singleBlock, 300);
|
|
309
|
-
|
|
310
|
-
// Align single block to center of parent (page)
|
|
311
|
-
if (engine.block.isAlignable([singleBlock])) {
|
|
312
|
-
engine.block.alignHorizontally([singleBlock], 'Center');
|
|
313
|
-
engine.block.alignVertically([singleBlock], 'Center');
|
|
314
|
-
// eslint-disable-next-line no-console
|
|
315
|
-
console.log('Single block centered within parent');
|
|
316
|
-
}
|
|
317
|
-
|
|
318
|
-
// eslint-disable-next-line no-console
|
|
319
|
-
console.log(
|
|
320
|
-
'Align demo initialized. Left group aligned left, single block centered.'
|
|
321
|
-
);
|
|
180
|
+
engine.block.appendChild(page, block);
|
|
181
|
+
engine.block.setPositionX(block, 700);
|
|
182
|
+
engine.block.setPositionY(block, yPositions[i]);
|
|
183
|
+
verticalBlocks.push(block);
|
|
322
184
|
}
|
|
323
185
|
|
|
324
|
-
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
const engine = cesdk.engine;
|
|
328
|
-
const page = engine.block.findByType('page')[0];
|
|
329
|
-
|
|
330
|
-
// Create multiple blocks for distribution demonstration
|
|
331
|
-
const imageUri = 'https://img.ly/static/ubq_samples/sample_1.jpg';
|
|
332
|
-
const blockSize = { width: 100, height: 80 };
|
|
333
|
-
|
|
334
|
-
// Create 4 blocks at uneven horizontal positions
|
|
335
|
-
const blocks: number[] = [];
|
|
336
|
-
const xPositions = [50, 180, 400, 650];
|
|
337
|
-
|
|
338
|
-
for (let i = 0; i < xPositions.length; i++) {
|
|
339
|
-
const block = await engine.block.addImage(imageUri, { size: blockSize });
|
|
340
|
-
engine.block.appendChild(page, block);
|
|
341
|
-
engine.block.setPositionX(block, xPositions[i]);
|
|
342
|
-
engine.block.setPositionY(block, 200); // Same Y for horizontal distribution
|
|
343
|
-
blocks.push(block);
|
|
344
|
-
}
|
|
345
|
-
|
|
346
|
-
// Check if blocks can be distributed
|
|
347
|
-
const canDistribute = engine.block.isDistributable(blocks);
|
|
348
|
-
// eslint-disable-next-line no-console
|
|
349
|
-
console.log('Can distribute blocks:', canDistribute);
|
|
350
|
-
|
|
351
|
-
if (canDistribute) {
|
|
352
|
-
// Distribute blocks horizontally with even spacing
|
|
353
|
-
engine.block.distributeHorizontally(blocks);
|
|
354
|
-
// eslint-disable-next-line no-console
|
|
355
|
-
console.log('Blocks distributed horizontally with even spacing');
|
|
356
|
-
}
|
|
357
|
-
|
|
358
|
-
// Create another set of blocks for vertical distribution
|
|
359
|
-
const verticalBlocks: number[] = [];
|
|
360
|
-
const yPositions = [50, 150, 350, 500];
|
|
361
|
-
|
|
362
|
-
for (let i = 0; i < yPositions.length; i++) {
|
|
363
|
-
const block = await engine.block.addImage(imageUri, { size: blockSize });
|
|
364
|
-
engine.block.appendChild(page, block);
|
|
365
|
-
engine.block.setPositionX(block, 600); // Same X for vertical distribution
|
|
366
|
-
engine.block.setPositionY(block, yPositions[i]);
|
|
367
|
-
verticalBlocks.push(block);
|
|
368
|
-
}
|
|
369
|
-
|
|
370
|
-
if (engine.block.isDistributable(verticalBlocks)) {
|
|
371
|
-
engine.block.distributeVertically(verticalBlocks);
|
|
372
|
-
// eslint-disable-next-line no-console
|
|
373
|
-
console.log('Vertical blocks distributed with even spacing');
|
|
374
|
-
}
|
|
375
|
-
|
|
376
|
-
// eslint-disable-next-line no-console
|
|
377
|
-
console.log(
|
|
378
|
-
'Distribute demo initialized. Left group horizontal, right group vertical.'
|
|
379
|
-
);
|
|
186
|
+
if (engine.block.isDistributable(verticalBlocks)) {
|
|
187
|
+
engine.block.distributeVertically(verticalBlocks);
|
|
188
|
+
console.log('Vertical blocks distributed with even spacing');
|
|
380
189
|
}
|
|
381
190
|
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
)
|
|
385
|
-
|
|
386
|
-
const page = engine.block.findByType('page')[0];
|
|
387
|
-
|
|
388
|
-
// Create some blocks to demonstrate snapping
|
|
389
|
-
const imageUri = 'https://img.ly/static/ubq_samples/sample_1.jpg';
|
|
191
|
+
// ===== SUMMARY =====
|
|
192
|
+
console.log('\n--- Summary ---');
|
|
193
|
+
const allGraphics = engine.block.findByType('graphic');
|
|
194
|
+
console.log(`Total blocks created: ${allGraphics.length}`);
|
|
390
195
|
|
|
391
|
-
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
});
|
|
395
|
-
engine.block.appendChild(page, refBlock1);
|
|
396
|
-
engine.block.setPositionX(refBlock1, 100);
|
|
397
|
-
engine.block.setPositionY(refBlock1, 100);
|
|
398
|
-
|
|
399
|
-
const refBlock2 = await engine.block.addImage(imageUri, {
|
|
400
|
-
size: { width: 150, height: 100 }
|
|
401
|
-
});
|
|
402
|
-
engine.block.appendChild(page, refBlock2);
|
|
403
|
-
engine.block.setPositionX(refBlock2, 100);
|
|
404
|
-
engine.block.setPositionY(refBlock2, 350);
|
|
196
|
+
// Export the scene to PNG
|
|
197
|
+
const blob = await engine.block.export(page, { mimeType: 'image/png' });
|
|
198
|
+
const buffer = Buffer.from(await blob.arrayBuffer());
|
|
405
199
|
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
engine.block.appendChild(page, dragBlock);
|
|
411
|
-
engine.block.setPositionX(dragBlock, 400);
|
|
412
|
-
engine.block.setPositionY(dragBlock, 225);
|
|
413
|
-
|
|
414
|
-
// Configure position snapping threshold (pixels)
|
|
415
|
-
// Higher values = snapping activates from further away
|
|
416
|
-
engine.editor.setSettingFloat('positionSnappingThreshold', 10);
|
|
417
|
-
|
|
418
|
-
// Configure rotation snapping threshold (degrees)
|
|
419
|
-
engine.editor.setSettingFloat('rotationSnappingThreshold', 5);
|
|
420
|
-
// eslint-disable-next-line no-console
|
|
421
|
-
console.log('Snapping thresholds configured: position=10px, rotation=5deg');
|
|
422
|
-
|
|
423
|
-
// Customize snapping guide colors
|
|
424
|
-
engine.editor.setSettingColor('snappingGuideColor', {
|
|
425
|
-
r: 0.2,
|
|
426
|
-
g: 0.6,
|
|
427
|
-
b: 1.0,
|
|
428
|
-
a: 1.0
|
|
429
|
-
});
|
|
200
|
+
// Ensure output directory exists
|
|
201
|
+
if (!existsSync('output')) {
|
|
202
|
+
mkdirSync('output');
|
|
203
|
+
}
|
|
430
204
|
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
205
|
+
// Save to file
|
|
206
|
+
writeFileSync('output/position-and-align.png', buffer);
|
|
207
|
+
console.log('\nExported to output/position-and-align.png');
|
|
208
|
+
} finally {
|
|
209
|
+
engine.dispose();
|
|
210
|
+
}
|
|
211
|
+
```
|
|
437
212
|
|
|
438
|
-
|
|
439
|
-
r: 0.5,
|
|
440
|
-
g: 0.5,
|
|
441
|
-
b: 0.5,
|
|
442
|
-
a: 0.5
|
|
443
|
-
});
|
|
444
|
-
// eslint-disable-next-line no-console
|
|
445
|
-
console.log('Snapping guide colors configured');
|
|
213
|
+
This guide covers how to set block positions using different modes, align blocks horizontally and vertically, and distribute blocks with even spacing in a headless Node.js environment.
|
|
446
214
|
|
|
447
|
-
|
|
448
|
-
engine.block.setSelected(dragBlock, true);
|
|
215
|
+
## Setup
|
|
449
216
|
|
|
450
|
-
|
|
451
|
-
console.log(
|
|
452
|
-
'Snapping demo initialized. Drag the selected block to see snapping guides.'
|
|
453
|
-
);
|
|
454
|
-
}
|
|
455
|
-
}
|
|
217
|
+
Initialize the CE.SDK engine in headless mode for server-side processing.
|
|
456
218
|
|
|
457
|
-
|
|
219
|
+
```typescript highlight-setup
|
|
220
|
+
// Initialize CE.SDK engine in headless mode
|
|
221
|
+
const engine = await CreativeEngine.init({
|
|
222
|
+
baseURL: process.env.IMGLY_LOCAL_ASSETS_URL
|
|
223
|
+
// license: process.env.CESDK_LICENSE, // Optional (trial mode available)
|
|
224
|
+
});
|
|
458
225
|
```
|
|
459
226
|
|
|
460
|
-
This guide covers how to set block positions using different modes, align blocks horizontally and vertically, distribute blocks with even spacing, and configure snapping for interactive editing.
|
|
461
|
-
|
|
462
227
|
## Coordinate System
|
|
463
228
|
|
|
464
229
|
CE.SDK uses a coordinate system where the origin (0, 0) is at the top-left corner of the parent container. The X axis extends to the right and the Y axis extends downward. All positions are relative to the block's parent.
|
|
@@ -470,15 +235,18 @@ CE.SDK uses a coordinate system where the origin (0, 0) is at the top-left corne
|
|
|
470
235
|
We can position blocks using absolute coordinates in design units. This is useful when you need precise control over element placement.
|
|
471
236
|
|
|
472
237
|
```typescript highlight-absolute-position
|
|
473
|
-
//
|
|
474
|
-
engine.block.
|
|
475
|
-
engine.block.
|
|
476
|
-
|
|
477
|
-
//
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
238
|
+
// Create an image block and position it using absolute coordinates
|
|
239
|
+
const block1 = await engine.block.addImage(imageUri, { size: blockSize });
|
|
240
|
+
engine.block.appendChild(page, block1);
|
|
241
|
+
|
|
242
|
+
// Set position using absolute coordinates (in design units)
|
|
243
|
+
engine.block.setPositionX(block1, 50);
|
|
244
|
+
engine.block.setPositionY(block1, 50);
|
|
245
|
+
|
|
246
|
+
// Query the current position
|
|
247
|
+
const x1 = engine.block.getPositionX(block1);
|
|
248
|
+
const y1 = engine.block.getPositionY(block1);
|
|
249
|
+
console.log(`Block 1 absolute position: (${x1}, ${y1})`);
|
|
482
250
|
```
|
|
483
251
|
|
|
484
252
|
The `engine.block.setPositionX()` and `engine.block.setPositionY()` methods set the block's position relative to its parent. Use `engine.block.getPositionX()` and `engine.block.getPositionY()` to query the current position.
|
|
@@ -488,21 +256,20 @@ The `engine.block.setPositionX()` and `engine.block.setPositionY()` methods set
|
|
|
488
256
|
Positions can also be set as percentages of the parent's dimensions. This approach is useful for responsive layouts that adapt to different container sizes.
|
|
489
257
|
|
|
490
258
|
```typescript highlight-percent-position
|
|
491
|
-
//
|
|
492
|
-
const block2 = await engine.block.addImage(imageUri, { size: blockSize });
|
|
493
|
-
engine.block.appendChild(page, block2);
|
|
494
|
-
|
|
495
|
-
// Set position mode to Percent and use percentage values
|
|
496
|
-
engine.block.setPositionXMode(block2, 'Percent');
|
|
497
|
-
engine.block.setPositionYMode(block2, 'Percent');
|
|
498
|
-
engine.block.setPositionX(block2, 0.5); // 50% from left
|
|
499
|
-
engine.block.setPositionY(block2, 0.
|
|
500
|
-
|
|
501
|
-
// Query the position mode
|
|
502
|
-
const xMode = engine.block.getPositionXMode(block2);
|
|
503
|
-
const yMode = engine.block.getPositionYMode(block2);
|
|
504
|
-
|
|
505
|
-
console.log(`Block 2 position modes: X=${xMode}, Y=${yMode}`);
|
|
259
|
+
// Create another block and position it using percentage mode
|
|
260
|
+
const block2 = await engine.block.addImage(imageUri, { size: blockSize });
|
|
261
|
+
engine.block.appendChild(page, block2);
|
|
262
|
+
|
|
263
|
+
// Set position mode to Percent and use percentage values
|
|
264
|
+
engine.block.setPositionXMode(block2, 'Percent');
|
|
265
|
+
engine.block.setPositionYMode(block2, 'Percent');
|
|
266
|
+
engine.block.setPositionX(block2, 0.5); // 50% from left
|
|
267
|
+
engine.block.setPositionY(block2, 0.1); // 10% from top
|
|
268
|
+
|
|
269
|
+
// Query the position mode
|
|
270
|
+
const xMode = engine.block.getPositionXMode(block2);
|
|
271
|
+
const yMode = engine.block.getPositionYMode(block2);
|
|
272
|
+
console.log(`Block 2 position modes: X=${xMode}, Y=${yMode}`);
|
|
506
273
|
```
|
|
507
274
|
|
|
508
275
|
Position modes are set using `engine.block.setPositionXMode()` and `engine.block.setPositionYMode()`. When set to `'Percent'`, position values represent a fraction of the parent's size (0.5 = 50%). Query the current mode with `engine.block.getPositionXMode()` and `engine.block.getPositionYMode()`.
|
|
@@ -512,15 +279,15 @@ Position modes are set using `engine.block.setPositionXMode()` and `engine.block
|
|
|
512
279
|
CE.SDK provides a convenience method that sets both coordinates at once, optionally with a position mode.
|
|
513
280
|
|
|
514
281
|
```typescript highlight-setPosition-convenience
|
|
515
|
-
//
|
|
516
|
-
const block3 = await engine.block.addImage(imageUri, { size: blockSize });
|
|
517
|
-
engine.block.appendChild(page, block3);
|
|
518
|
-
|
|
519
|
-
// Set both X and Y at once with a specific position mode
|
|
520
|
-
engine.block.setPosition(block3, 0.75, 0.
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
282
|
+
// Create a third block and use the convenience method
|
|
283
|
+
const block3 = await engine.block.addImage(imageUri, { size: blockSize });
|
|
284
|
+
engine.block.appendChild(page, block3);
|
|
285
|
+
|
|
286
|
+
// Set both X and Y at once with a specific position mode
|
|
287
|
+
engine.block.setPosition(block3, 0.75, 0.1, { positionMode: 'Percent' });
|
|
288
|
+
console.log(
|
|
289
|
+
'Block 3 set to 75% horizontal, 10% vertical using setPosition()'
|
|
290
|
+
);
|
|
524
291
|
```
|
|
525
292
|
|
|
526
293
|
The `engine.block.setPosition()` method accepts X and Y values along with an optional `positionMode` parameter. This simplifies code when setting both coordinates simultaneously.
|
|
@@ -533,8 +300,7 @@ Multiple blocks can be aligned within their combined bounding box. This is usefu
|
|
|
533
300
|
|
|
534
301
|
```typescript highlight-check-alignable
|
|
535
302
|
// Check if blocks can be aligned
|
|
536
|
-
const canAlign = engine.block.isAlignable(
|
|
537
|
-
// eslint-disable-next-line no-console
|
|
303
|
+
const canAlign = engine.block.isAlignable(alignBlocks);
|
|
538
304
|
console.log('Can align blocks:', canAlign);
|
|
539
305
|
```
|
|
540
306
|
|
|
@@ -542,8 +308,7 @@ Before aligning, we check if the blocks can be aligned using `engine.block.isAli
|
|
|
542
308
|
|
|
543
309
|
```typescript highlight-align-horizontal
|
|
544
310
|
// Align blocks horizontally to the left edge of their bounding box
|
|
545
|
-
engine.block.alignHorizontally(
|
|
546
|
-
// eslint-disable-next-line no-console
|
|
311
|
+
engine.block.alignHorizontally(alignBlocks, 'Left');
|
|
547
312
|
console.log('Blocks aligned to left edge');
|
|
548
313
|
```
|
|
549
314
|
|
|
@@ -554,23 +319,22 @@ The `engine.block.alignHorizontally()` method accepts an array of block IDs and
|
|
|
554
319
|
When you pass a single block to the alignment methods, it aligns within its parent container rather than a group bounding box.
|
|
555
320
|
|
|
556
321
|
```typescript highlight-align-single-block
|
|
557
|
-
// Create a single block to demonstrate aligning within parent
|
|
558
|
-
const singleBlock = await engine.block.addImage(imageUri, {
|
|
559
|
-
|
|
560
|
-
});
|
|
561
|
-
engine.block.appendChild(page, singleBlock);
|
|
562
|
-
|
|
563
|
-
// Position initially off-center
|
|
564
|
-
engine.block.setPositionX(singleBlock, 500);
|
|
565
|
-
engine.block.setPositionY(singleBlock,
|
|
566
|
-
|
|
567
|
-
// Align single block to center of parent (page)
|
|
568
|
-
if (engine.block.isAlignable([singleBlock])) {
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
}
|
|
322
|
+
// Create a single block to demonstrate aligning within parent
|
|
323
|
+
const singleBlock = await engine.block.addImage(imageUri, {
|
|
324
|
+
size: { width: 120, height: 80 }
|
|
325
|
+
});
|
|
326
|
+
engine.block.appendChild(page, singleBlock);
|
|
327
|
+
|
|
328
|
+
// Position initially off-center
|
|
329
|
+
engine.block.setPositionX(singleBlock, 500);
|
|
330
|
+
engine.block.setPositionY(singleBlock, 450);
|
|
331
|
+
|
|
332
|
+
// Align single block to center of parent (page)
|
|
333
|
+
if (engine.block.isAlignable([singleBlock])) {
|
|
334
|
+
engine.block.alignHorizontally([singleBlock], 'Center');
|
|
335
|
+
engine.block.alignVertically([singleBlock], 'Bottom');
|
|
336
|
+
console.log('Single block centered horizontally and aligned to bottom');
|
|
337
|
+
}
|
|
574
338
|
```
|
|
575
339
|
|
|
576
340
|
This approach is useful for centering elements on a page or positioning them at specific edges of the container.
|
|
@@ -581,8 +345,7 @@ Distribution spaces blocks evenly within their bounding box. This is ideal for c
|
|
|
581
345
|
|
|
582
346
|
```typescript highlight-check-distributable
|
|
583
347
|
// Check if blocks can be distributed
|
|
584
|
-
const canDistribute = engine.block.isDistributable(
|
|
585
|
-
// eslint-disable-next-line no-console
|
|
348
|
+
const canDistribute = engine.block.isDistributable(distributeBlocks);
|
|
586
349
|
console.log('Can distribute blocks:', canDistribute);
|
|
587
350
|
```
|
|
588
351
|
|
|
@@ -590,84 +353,54 @@ The `engine.block.isDistributable()` method verifies that the blocks can be dist
|
|
|
590
353
|
|
|
591
354
|
```typescript highlight-distribute-horizontal
|
|
592
355
|
// Distribute blocks horizontally with even spacing
|
|
593
|
-
engine.block.distributeHorizontally(
|
|
594
|
-
// eslint-disable-next-line no-console
|
|
356
|
+
engine.block.distributeHorizontally(distributeBlocks);
|
|
595
357
|
console.log('Blocks distributed horizontally with even spacing');
|
|
596
358
|
```
|
|
597
359
|
|
|
598
360
|
The `engine.block.distributeHorizontally()` method arranges blocks so the horizontal space between them is equal. The first and last blocks remain in place while the middle blocks are repositioned.
|
|
599
361
|
|
|
600
362
|
```typescript highlight-distribute-vertical
|
|
601
|
-
// Create another set of blocks for vertical distribution
|
|
602
|
-
const verticalBlocks: number[] = [];
|
|
603
|
-
const yPositions = [
|
|
604
|
-
|
|
605
|
-
for (let i = 0; i < yPositions.length; i++) {
|
|
606
|
-
const block = await engine.block.addImage(imageUri, { size: blockSize });
|
|
607
|
-
engine.block.appendChild(page, block);
|
|
608
|
-
engine.block.setPositionX(block, 600); // Same X for vertical distribution
|
|
609
|
-
engine.block.setPositionY(block, yPositions[i]);
|
|
610
|
-
verticalBlocks.push(block);
|
|
611
|
-
}
|
|
363
|
+
// Create another set of blocks for vertical distribution
|
|
364
|
+
const verticalBlocks: number[] = [];
|
|
365
|
+
const yPositions = [280, 350, 420, 520];
|
|
612
366
|
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
367
|
+
for (let i = 0; i < yPositions.length; i++) {
|
|
368
|
+
const block = await engine.block.addImage(imageUri, {
|
|
369
|
+
size: { width: 60, height: 50 }
|
|
370
|
+
});
|
|
371
|
+
engine.block.appendChild(page, block);
|
|
372
|
+
engine.block.setPositionX(block, 700);
|
|
373
|
+
engine.block.setPositionY(block, yPositions[i]);
|
|
374
|
+
verticalBlocks.push(block);
|
|
375
|
+
}
|
|
376
|
+
|
|
377
|
+
if (engine.block.isDistributable(verticalBlocks)) {
|
|
378
|
+
engine.block.distributeVertically(verticalBlocks);
|
|
379
|
+
console.log('Vertical blocks distributed with even spacing');
|
|
380
|
+
}
|
|
618
381
|
```
|
|
619
382
|
|
|
620
383
|
Similarly, `engine.block.distributeVertically()` distributes blocks with equal vertical spacing.
|
|
621
384
|
|
|
622
|
-
##
|
|
623
|
-
|
|
624
|
-
Snapping provides visual guides when dragging elements in the editor, helping users align blocks precisely. Configure the snapping sensitivity and appearance using editor settings.
|
|
625
|
-
|
|
626
|
-
### Setting Snapping Thresholds
|
|
627
|
-
|
|
628
|
-
```typescript highlight-configure-snapping-threshold
|
|
629
|
-
// Configure position snapping threshold (pixels)
|
|
630
|
-
// Higher values = snapping activates from further away
|
|
631
|
-
engine.editor.setSettingFloat('positionSnappingThreshold', 10);
|
|
632
|
-
|
|
633
|
-
// Configure rotation snapping threshold (degrees)
|
|
634
|
-
engine.editor.setSettingFloat('rotationSnappingThreshold', 5);
|
|
635
|
-
// eslint-disable-next-line no-console
|
|
636
|
-
console.log('Snapping thresholds configured: position=10px, rotation=5deg');
|
|
637
|
-
```
|
|
638
|
-
|
|
639
|
-
The `positionSnappingThreshold` setting controls how close (in pixels) a block must be to a snap target before snapping activates. Higher values make snapping more "sticky". The `rotationSnappingThreshold` setting controls rotation snapping sensitivity in radians.
|
|
385
|
+
## Exporting Results
|
|
640
386
|
|
|
641
|
-
|
|
387
|
+
After positioning and aligning your blocks, export the result to a file.
|
|
642
388
|
|
|
643
|
-
```typescript highlight-
|
|
644
|
-
//
|
|
645
|
-
engine.
|
|
646
|
-
|
|
647
|
-
g: 0.6,
|
|
648
|
-
b: 1.0,
|
|
649
|
-
a: 1.0
|
|
650
|
-
});
|
|
389
|
+
```typescript highlight-export
|
|
390
|
+
// Export the scene to PNG
|
|
391
|
+
const blob = await engine.block.export(page, { mimeType: 'image/png' });
|
|
392
|
+
const buffer = Buffer.from(await blob.arrayBuffer());
|
|
651
393
|
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
a: 1.0
|
|
657
|
-
});
|
|
394
|
+
// Ensure output directory exists
|
|
395
|
+
if (!existsSync('output')) {
|
|
396
|
+
mkdirSync('output');
|
|
397
|
+
}
|
|
658
398
|
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
b: 0.5,
|
|
663
|
-
a: 0.5
|
|
664
|
-
});
|
|
665
|
-
// eslint-disable-next-line no-console
|
|
666
|
-
console.log('Snapping guide colors configured');
|
|
399
|
+
// Save to file
|
|
400
|
+
writeFileSync('output/position-and-align.png', buffer);
|
|
401
|
+
console.log('\nExported to output/position-and-align.png');
|
|
667
402
|
```
|
|
668
403
|
|
|
669
|
-
Customize the appearance of snapping guides using color settings. The `snappingGuideColor` controls position snapping lines, `rotationSnappingGuideColor` controls rotation guides, and `ruleOfThirdsLineColor` controls composition guide lines.
|
|
670
|
-
|
|
671
404
|
## Troubleshooting
|
|
672
405
|
|
|
673
406
|
### Position Not Updating
|
|
@@ -696,25 +429,23 @@ If `engine.block.distributeHorizontally()` or `engine.block.distributeVertically
|
|
|
696
429
|
|
|
697
430
|
## API Reference
|
|
698
431
|
|
|
699
|
-
| Method
|
|
700
|
-
|
|
|
701
|
-
| `engine.block.getPositionX(id)`
|
|
702
|
-
| `engine.block.getPositionY(id)`
|
|
703
|
-
| `engine.block.setPositionX(id, value)`
|
|
704
|
-
| `engine.block.setPositionY(id, value)`
|
|
705
|
-
| `engine.block.getPositionXMode(id)`
|
|
706
|
-
| `engine.block.getPositionYMode(id)`
|
|
707
|
-
| `engine.block.setPositionXMode(id, mode)`
|
|
708
|
-
| `engine.block.setPositionYMode(id, mode)`
|
|
709
|
-
| `engine.block.setPosition(id, x, y, options)`
|
|
710
|
-
| `engine.block.isAlignable(ids)`
|
|
711
|
-
| `engine.block.alignHorizontally(ids, alignment)`
|
|
712
|
-
| `engine.block.alignVertically(ids, alignment)`
|
|
713
|
-
| `engine.block.isDistributable(ids)`
|
|
714
|
-
| `engine.block.distributeHorizontally(ids)`
|
|
715
|
-
| `engine.block.distributeVertically(ids)`
|
|
716
|
-
| `engine.editor.setSettingFloat(keypath, value)` | Set float settings (snapping thresholds) |
|
|
717
|
-
| `engine.editor.setSettingColor(keypath, color)` | Set color settings (snapping guide colors) |
|
|
432
|
+
| Method | Description |
|
|
433
|
+
| --------------------------------------------------- | ---------------------------------------------- |
|
|
434
|
+
| `engine.block.getPositionX(id)` | Get block's X position |
|
|
435
|
+
| `engine.block.getPositionY(id)` | Get block's Y position |
|
|
436
|
+
| `engine.block.setPositionX(id, value)` | Set block's X position |
|
|
437
|
+
| `engine.block.setPositionY(id, value)` | Set block's Y position |
|
|
438
|
+
| `engine.block.getPositionXMode(id)` | Get X position mode (Absolute/Percent) |
|
|
439
|
+
| `engine.block.getPositionYMode(id)` | Get Y position mode (Absolute/Percent) |
|
|
440
|
+
| `engine.block.setPositionXMode(id, mode)` | Set X position mode |
|
|
441
|
+
| `engine.block.setPositionYMode(id, mode)` | Set Y position mode |
|
|
442
|
+
| `engine.block.setPosition(id, x, y, options)` | Set both coordinates with optional mode |
|
|
443
|
+
| `engine.block.isAlignable(ids)` | Check if blocks can be aligned |
|
|
444
|
+
| `engine.block.alignHorizontally(ids, alignment)` | Align blocks horizontally (Left/Right/Center) |
|
|
445
|
+
| `engine.block.alignVertically(ids, alignment)` | Align blocks vertically (Top/Bottom/Center) |
|
|
446
|
+
| `engine.block.isDistributable(ids)` | Check if blocks can be distributed |
|
|
447
|
+
| `engine.block.distributeHorizontally(ids)` | Distribute blocks horizontally with even spacing |
|
|
448
|
+
| `engine.block.distributeVertically(ids)` | Distribute blocks vertically with even spacing |
|
|
718
449
|
|
|
719
450
|
## Next Steps
|
|
720
451
|
|
|
@@ -724,11 +455,13 @@ Now that you understand positioning and alignment, explore related layout featur
|
|
|
724
455
|
- [Grouping](./create-composition/group-and-ungroup.md) - Group related elements together
|
|
725
456
|
- [Multi-Page Layouts](./create-composition/multi-page.md) - Create multi-page designs with multiple pages in a single scene
|
|
726
457
|
|
|
458
|
+
|
|
459
|
+
|
|
727
460
|
---
|
|
728
461
|
|
|
729
462
|
## More Resources
|
|
730
463
|
|
|
731
|
-
- **[
|
|
464
|
+
- **[Node.js Documentation Index](https://img.ly/docs/cesdk/node.md)** - Browse all Node.js documentation
|
|
732
465
|
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
733
|
-
- **[Web Documentation](./
|
|
734
|
-
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|
|
466
|
+
- **[Web Documentation](./node.md)** - Interactive documentation with examples
|
|
467
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|