@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,396 +1,594 @@
|
|
|
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) > [Design a Layout](./create-composition/layout.md)
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
Create
|
|
8
|
-
|
|
9
|
-

|
|
7
|
+
Create automatic stack layouts in CE.SDK that arrange pages vertically or horizontally with consistent spacing. Build structured compositions like collages, catalogs, or carousels without manually positioning each element.
|
|
10
8
|
|
|
11
9
|
> **Reading time:** 10 minutes
|
|
12
10
|
>
|
|
13
11
|
> **Resources:**
|
|
14
12
|
>
|
|
15
13
|
> - [Download examples](https://github.com/imgly/cesdk-web-examples/archive/refs/tags/release-$UBQ_VERSION$.zip)
|
|
16
|
-
>
|
|
17
|
-
> - [
|
|
18
|
-
>
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
import
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
await cesdk.addPlugin(new DesignEditorConfig());
|
|
50
|
-
// Add asset source plugins
|
|
51
|
-
await cesdk.addPlugin(new BlurAssetSource());
|
|
52
|
-
await cesdk.addPlugin(new ColorPaletteAssetSource());
|
|
53
|
-
await cesdk.addPlugin(new CropPresetsAssetSource());
|
|
54
|
-
await cesdk.addPlugin(
|
|
55
|
-
new UploadAssetSources({ include: ['ly.img.image.upload'] })
|
|
56
|
-
);
|
|
57
|
-
await cesdk.addPlugin(
|
|
58
|
-
new DemoAssetSources({
|
|
59
|
-
include: [
|
|
60
|
-
'ly.img.templates.blank.*',
|
|
61
|
-
'ly.img.templates.presentation.*',
|
|
62
|
-
'ly.img.templates.print.*',
|
|
63
|
-
'ly.img.templates.social.*',
|
|
64
|
-
'ly.img.image.*'
|
|
65
|
-
]
|
|
66
|
-
})
|
|
67
|
-
);
|
|
68
|
-
await cesdk.addPlugin(new EffectsAssetSource());
|
|
69
|
-
await cesdk.addPlugin(new FiltersAssetSource());
|
|
70
|
-
await cesdk.addPlugin(new PagePresetsAssetSource());
|
|
71
|
-
await cesdk.addPlugin(new StickerAssetSource());
|
|
72
|
-
await cesdk.addPlugin(new TextAssetSource());
|
|
73
|
-
await cesdk.addPlugin(new TextComponentAssetSource());
|
|
74
|
-
await cesdk.addPlugin(new TypefaceAssetSource());
|
|
75
|
-
await cesdk.addPlugin(new VectorShapeAssetSource());
|
|
76
|
-
|
|
77
|
-
const engine = cesdk.engine;
|
|
78
|
-
|
|
79
|
-
// Create a scene with vertical stack layout
|
|
80
|
-
// Pages arrange top-to-bottom automatically
|
|
81
|
-
engine.scene.create('VerticalStack');
|
|
82
|
-
|
|
83
|
-
// Get the stack container created with the scene
|
|
84
|
-
const [stack] = engine.block.findByType('stack');
|
|
85
|
-
|
|
86
|
-
// Create two pages that will stack vertically
|
|
87
|
-
const page1 = engine.block.create('page');
|
|
88
|
-
engine.block.setWidth(page1, 400);
|
|
89
|
-
engine.block.setHeight(page1, 300);
|
|
90
|
-
engine.block.appendChild(stack, page1);
|
|
91
|
-
|
|
92
|
-
const page2 = engine.block.create('page');
|
|
93
|
-
engine.block.setWidth(page2, 400);
|
|
94
|
-
engine.block.setHeight(page2, 300);
|
|
95
|
-
engine.block.appendChild(stack, page2);
|
|
96
|
-
|
|
97
|
-
// Configure spacing between stacked pages
|
|
98
|
-
engine.block.setFloat(stack, 'stack/spacing', 20);
|
|
99
|
-
engine.block.setBool(stack, 'stack/spacingInScreenspace', true);
|
|
100
|
-
|
|
101
|
-
// Add image content to page 1
|
|
102
|
-
const imageUri = 'https://img.ly/static/ubq_samples/sample_1.jpg';
|
|
103
|
-
const block1 = await engine.block.addImage(imageUri, {
|
|
104
|
-
size: { width: 350, height: 250 }
|
|
105
|
-
});
|
|
106
|
-
engine.block.setPositionX(block1, 25);
|
|
107
|
-
engine.block.setPositionY(block1, 25);
|
|
108
|
-
engine.block.appendChild(page1, block1);
|
|
109
|
-
|
|
110
|
-
// Add a colored rectangle to page 2
|
|
111
|
-
const block2 = engine.block.create('graphic');
|
|
112
|
-
const shape2 = engine.block.createShape('rect');
|
|
113
|
-
engine.block.setShape(block2, shape2);
|
|
114
|
-
engine.block.setWidth(block2, 350);
|
|
115
|
-
engine.block.setHeight(block2, 250);
|
|
116
|
-
engine.block.setPositionX(block2, 25);
|
|
117
|
-
engine.block.setPositionY(block2, 25);
|
|
118
|
-
const fill2 = engine.block.createFill('color');
|
|
119
|
-
engine.block.setColor(fill2, 'fill/color/value', {
|
|
120
|
-
r: 0.3,
|
|
121
|
-
g: 0.6,
|
|
122
|
-
b: 0.9,
|
|
123
|
-
a: 1.0
|
|
124
|
-
});
|
|
125
|
-
engine.block.setFill(block2, fill2);
|
|
126
|
-
engine.block.appendChild(page2, block2);
|
|
127
|
-
|
|
128
|
-
// Switch to horizontal stack layout
|
|
129
|
-
// Pages now arrange left-to-right
|
|
130
|
-
engine.scene.setLayout('HorizontalStack');
|
|
131
|
-
|
|
132
|
-
// Verify the layout type
|
|
133
|
-
const currentLayout = engine.scene.getLayout();
|
|
134
|
-
console.log('Current layout:', currentLayout);
|
|
135
|
-
|
|
136
|
-
// Add a new page to the existing stack
|
|
137
|
-
// The page automatically appears at the end
|
|
138
|
-
const page3 = engine.block.create('page');
|
|
139
|
-
engine.block.setWidth(page3, 400);
|
|
140
|
-
engine.block.setHeight(page3, 300);
|
|
141
|
-
engine.block.appendChild(stack, page3);
|
|
142
|
-
|
|
143
|
-
// Add content to the new page
|
|
144
|
-
const block3 = engine.block.create('graphic');
|
|
145
|
-
const shape3 = engine.block.createShape('rect');
|
|
146
|
-
engine.block.setShape(block3, shape3);
|
|
147
|
-
engine.block.setWidth(block3, 350);
|
|
148
|
-
engine.block.setHeight(block3, 250);
|
|
149
|
-
engine.block.setPositionX(block3, 25);
|
|
150
|
-
engine.block.setPositionY(block3, 25);
|
|
151
|
-
const fill3 = engine.block.createFill('color');
|
|
152
|
-
engine.block.setColor(fill3, 'fill/color/value', {
|
|
153
|
-
r: 0.9,
|
|
154
|
-
g: 0.5,
|
|
155
|
-
b: 0.3,
|
|
156
|
-
a: 1.0
|
|
157
|
-
});
|
|
158
|
-
engine.block.setFill(block3, fill3);
|
|
159
|
-
engine.block.appendChild(page3, block3);
|
|
14
|
+
>
|
|
15
|
+
> - [View source on GitHub](https://github.com/imgly/cesdk-web-examples/tree/release-$UBQ_VERSION$/guides-create-composition-layout-server-js)
|
|
16
|
+
>
|
|
17
|
+
> - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-create-composition-layout-server-js)
|
|
18
|
+
|
|
19
|
+
CE.SDK provides stack layouts that automatically arrange pages with consistent spacing. Vertical stacks arrange pages top-to-bottom, horizontal stacks arrange left-to-right. This eliminates manual positioning for compositions like photo collages, product catalogs, social media carousels, and magazine layouts.
|
|
20
|
+
|
|
21
|
+
```typescript file=@cesdk_web_examples/guides-create-composition-layout-server-js/server-js.ts reference-only
|
|
22
|
+
import CreativeEngine from '@cesdk/node';
|
|
23
|
+
import { config } from 'dotenv';
|
|
24
|
+
import { writeFileSync, mkdirSync, existsSync } from 'fs';
|
|
25
|
+
|
|
26
|
+
// Load environment variables
|
|
27
|
+
config();
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* CE.SDK Server Guide: Design a Layout
|
|
31
|
+
*
|
|
32
|
+
* Demonstrates:
|
|
33
|
+
* - Creating vertical stack layouts (top-to-bottom arrangement)
|
|
34
|
+
* - Creating horizontal stack layouts (left-to-right arrangement)
|
|
35
|
+
* - Adding blocks to stacks for automatic positioning
|
|
36
|
+
* - Configuring spacing between stacked blocks
|
|
37
|
+
* - Reordering blocks within stacks
|
|
38
|
+
* - Switching between stack and free layouts
|
|
39
|
+
* - Building a practical photo collage example
|
|
40
|
+
*/
|
|
41
|
+
|
|
42
|
+
// Initialize CE.SDK engine in headless mode
|
|
43
|
+
const engine = await CreativeEngine.init({
|
|
44
|
+
baseURL: process.env.IMGLY_LOCAL_ASSETS_URL
|
|
45
|
+
// license: process.env.CESDK_LICENSE, // Optional (trial mode available)
|
|
46
|
+
});
|
|
160
47
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
48
|
+
try {
|
|
49
|
+
// ===== VERTICAL STACK LAYOUT =====
|
|
50
|
+
console.log('--- Vertical Stack Layout ---');
|
|
51
|
+
|
|
52
|
+
// Create a scene with vertical stack layout
|
|
53
|
+
// Pages and blocks will arrange top-to-bottom automatically
|
|
54
|
+
const verticalScene = engine.scene.create('VerticalStack');
|
|
55
|
+
console.log('Created VerticalStack scene:', verticalScene);
|
|
56
|
+
|
|
57
|
+
// Get the stack container to add pages
|
|
58
|
+
const [stack] = engine.block.findByType('stack');
|
|
59
|
+
|
|
60
|
+
// Create first page
|
|
61
|
+
const page1 = engine.block.create('page');
|
|
62
|
+
engine.block.setWidth(page1, 400);
|
|
63
|
+
engine.block.setHeight(page1, 300);
|
|
64
|
+
engine.block.appendChild(stack, page1);
|
|
65
|
+
|
|
66
|
+
// Create second page - appears below page1
|
|
67
|
+
const page2 = engine.block.create('page');
|
|
68
|
+
engine.block.setWidth(page2, 400);
|
|
69
|
+
engine.block.setHeight(page2, 300);
|
|
70
|
+
engine.block.appendChild(stack, page2);
|
|
71
|
+
|
|
72
|
+
// Configure spacing between stacked pages (in screen space pixels)
|
|
73
|
+
engine.block.setFloat(stack, 'stack/spacing', 20);
|
|
74
|
+
engine.block.setBool(stack, 'stack/spacingInScreenspace', true);
|
|
75
|
+
|
|
76
|
+
const spacing = engine.block.getFloat(stack, 'stack/spacing');
|
|
77
|
+
console.log(`Stack spacing: ${spacing}px`);
|
|
78
|
+
|
|
79
|
+
// ===== HORIZONTAL STACK LAYOUT =====
|
|
80
|
+
console.log('\n--- Horizontal Stack Layout ---');
|
|
81
|
+
|
|
82
|
+
// Switch to horizontal stack layout
|
|
83
|
+
// Pages will now arrange left-to-right
|
|
84
|
+
engine.scene.setLayout('HorizontalStack');
|
|
85
|
+
console.log('Changed to HorizontalStack layout');
|
|
86
|
+
|
|
87
|
+
// Verify the layout change
|
|
88
|
+
const currentLayout = engine.scene.getLayout();
|
|
89
|
+
console.log('Current layout:', currentLayout);
|
|
90
|
+
|
|
91
|
+
// Pages are automatically rearranged horizontally
|
|
92
|
+
// Useful for carousels, timelines, or horizontal galleries
|
|
93
|
+
|
|
94
|
+
// ===== ADD BLOCKS TO PAGES =====
|
|
95
|
+
console.log('\n--- Adding Blocks to Pages ---');
|
|
96
|
+
|
|
97
|
+
// Add graphic blocks to each page
|
|
98
|
+
// Blocks must have a shape and fill to be visible
|
|
99
|
+
|
|
100
|
+
// Sample image URL for demonstrations
|
|
101
|
+
const imageUri = 'https://img.ly/static/ubq_samples/sample_1.jpg';
|
|
102
|
+
|
|
103
|
+
// Add an image block to page 1
|
|
104
|
+
const block1 = await engine.block.addImage(imageUri, {
|
|
105
|
+
size: { width: 350, height: 250 }
|
|
106
|
+
});
|
|
107
|
+
engine.block.setPositionX(block1, 25);
|
|
108
|
+
engine.block.setPositionY(block1, 25);
|
|
109
|
+
engine.block.appendChild(page1, block1);
|
|
110
|
+
console.log('Added image block to page 1');
|
|
111
|
+
|
|
112
|
+
// Add a colored rectangle to page 2
|
|
113
|
+
const block2 = engine.block.create('graphic');
|
|
114
|
+
const shape2 = engine.block.createShape('rect');
|
|
115
|
+
engine.block.setShape(block2, shape2);
|
|
116
|
+
engine.block.setWidth(block2, 350);
|
|
117
|
+
engine.block.setHeight(block2, 250);
|
|
118
|
+
engine.block.setPositionX(block2, 25);
|
|
119
|
+
engine.block.setPositionY(block2, 25);
|
|
120
|
+
const fill2 = engine.block.createFill('color');
|
|
121
|
+
engine.block.setColor(fill2, 'fill/color/value', {
|
|
122
|
+
r: 0.3,
|
|
123
|
+
g: 0.6,
|
|
124
|
+
b: 0.9,
|
|
125
|
+
a: 1.0
|
|
126
|
+
});
|
|
127
|
+
engine.block.setFill(block2, fill2);
|
|
128
|
+
engine.block.appendChild(page2, block2);
|
|
129
|
+
console.log('Added colored block to page 2');
|
|
130
|
+
|
|
131
|
+
// ===== ADD NEW PAGE TO EXISTING STACK =====
|
|
132
|
+
console.log('\n--- Adding Page to Existing Stack ---');
|
|
133
|
+
|
|
134
|
+
// Add a new page to the existing stack layout
|
|
135
|
+
// The page automatically appears at the end of the stack
|
|
136
|
+
const page3 = engine.block.create('page');
|
|
137
|
+
engine.block.setWidth(page3, 400);
|
|
138
|
+
engine.block.setHeight(page3, 300);
|
|
139
|
+
engine.block.appendChild(stack, page3);
|
|
140
|
+
console.log('Added page 3 to stack');
|
|
141
|
+
|
|
142
|
+
// Add content to page 3
|
|
143
|
+
const block3 = engine.block.create('graphic');
|
|
144
|
+
const shape3 = engine.block.createShape('rect');
|
|
145
|
+
engine.block.setShape(block3, shape3);
|
|
146
|
+
engine.block.setWidth(block3, 350);
|
|
147
|
+
engine.block.setHeight(block3, 250);
|
|
148
|
+
engine.block.setPositionX(block3, 25);
|
|
149
|
+
engine.block.setPositionY(block3, 25);
|
|
150
|
+
const fill3 = engine.block.createFill('color');
|
|
151
|
+
engine.block.setColor(fill3, 'fill/color/value', {
|
|
152
|
+
r: 0.9,
|
|
153
|
+
g: 0.5,
|
|
154
|
+
b: 0.3,
|
|
155
|
+
a: 1.0
|
|
156
|
+
});
|
|
157
|
+
engine.block.setFill(block3, fill3);
|
|
158
|
+
engine.block.appendChild(page3, block3);
|
|
159
|
+
|
|
160
|
+
// Count pages in stack
|
|
161
|
+
const pages = engine.block.getChildren(stack);
|
|
162
|
+
console.log(`Stack now has ${pages.length} pages`);
|
|
163
|
+
|
|
164
|
+
// ===== REORDER PAGES IN STACK =====
|
|
165
|
+
console.log('\n--- Reordering Pages ---');
|
|
166
|
+
|
|
167
|
+
// Reorder pages using insertChild
|
|
168
|
+
// Move page3 to the first position (index 0)
|
|
169
|
+
engine.block.insertChild(stack, page3, 0);
|
|
170
|
+
console.log('Moved page 3 to first position');
|
|
171
|
+
|
|
172
|
+
// Verify the new order by listing children
|
|
173
|
+
const reorderedPages = engine.block.getChildren(stack);
|
|
174
|
+
console.log('Page order after reordering:', reorderedPages);
|
|
175
|
+
|
|
176
|
+
// ===== CHANGE STACK SPACING =====
|
|
177
|
+
console.log('\n--- Changing Stack Spacing ---');
|
|
178
|
+
|
|
179
|
+
// Update spacing between stacked pages
|
|
180
|
+
engine.block.setFloat(stack, 'stack/spacing', 40);
|
|
181
|
+
const newSpacing = engine.block.getFloat(stack, 'stack/spacing');
|
|
182
|
+
console.log(`Updated stack spacing to: ${newSpacing}px`);
|
|
183
|
+
|
|
184
|
+
// Spacing updates immediately - pages reposition automatically
|
|
185
|
+
|
|
186
|
+
// ===== SWITCH TO FREE LAYOUT =====
|
|
187
|
+
console.log('\n--- Switching to Free Layout ---');
|
|
188
|
+
|
|
189
|
+
// Check current layout type
|
|
190
|
+
const layoutBefore = engine.scene.getLayout();
|
|
191
|
+
console.log('Current layout:', layoutBefore);
|
|
192
|
+
|
|
193
|
+
// Convert to free layout for manual positioning
|
|
194
|
+
engine.scene.setLayout('Free');
|
|
195
|
+
console.log('Switched to Free layout');
|
|
196
|
+
|
|
197
|
+
// In free layout, pages keep their positions but stop auto-arranging
|
|
198
|
+
// Now you can position pages manually
|
|
199
|
+
const [firstPage] = engine.block.findByType('page');
|
|
200
|
+
engine.block.setPositionX(firstPage, 50);
|
|
201
|
+
engine.block.setPositionY(firstPage, 50);
|
|
202
|
+
console.log('Manually positioned first page');
|
|
203
|
+
|
|
204
|
+
// Verify layout change
|
|
205
|
+
const layoutAfter = engine.scene.getLayout();
|
|
206
|
+
console.log('Layout after switch:', layoutAfter);
|
|
207
|
+
|
|
208
|
+
// ===== PHOTO COLLAGE EXAMPLE =====
|
|
209
|
+
console.log('\n--- Photo Collage Example ---');
|
|
210
|
+
|
|
211
|
+
// Create a new vertical stack scene for a photo collage
|
|
212
|
+
engine.scene.create('VerticalStack', {
|
|
213
|
+
page: { size: { width: 600, height: 200 } }
|
|
214
|
+
});
|
|
215
|
+
|
|
216
|
+
// Get the new stack
|
|
217
|
+
const [collageStack] = engine.block.findByType('stack');
|
|
218
|
+
|
|
219
|
+
// Set tight spacing for collage effect
|
|
220
|
+
engine.block.setFloat(collageStack, 'stack/spacing', 10);
|
|
221
|
+
engine.block.setBool(collageStack, 'stack/spacingInScreenspace', true);
|
|
222
|
+
|
|
223
|
+
// Get the first page created with the scene
|
|
224
|
+
const [collagePage1] = engine.block.findByType('page');
|
|
225
|
+
|
|
226
|
+
// Create additional pages for the collage
|
|
227
|
+
const collagePage2 = engine.block.create('page');
|
|
228
|
+
engine.block.setWidth(collagePage2, 600);
|
|
229
|
+
engine.block.setHeight(collagePage2, 200);
|
|
230
|
+
engine.block.appendChild(collageStack, collagePage2);
|
|
231
|
+
|
|
232
|
+
const collagePage3 = engine.block.create('page');
|
|
233
|
+
engine.block.setWidth(collagePage3, 600);
|
|
234
|
+
engine.block.setHeight(collagePage3, 200);
|
|
235
|
+
engine.block.appendChild(collageStack, collagePage3);
|
|
236
|
+
|
|
237
|
+
// Add images to each collage page
|
|
238
|
+
const imageUrls = [
|
|
239
|
+
'https://img.ly/static/ubq_samples/sample_1.jpg',
|
|
240
|
+
'https://img.ly/static/ubq_samples/sample_2.jpg',
|
|
241
|
+
'https://img.ly/static/ubq_samples/sample_3.jpg'
|
|
242
|
+
];
|
|
243
|
+
|
|
244
|
+
const collagePages = [collagePage1, collagePage2, collagePage3];
|
|
245
|
+
|
|
246
|
+
for (let i = 0; i < collagePages.length; i++) {
|
|
247
|
+
const photoBlock = await engine.block.addImage(imageUrls[i], {
|
|
248
|
+
size: { width: 580, height: 180 }
|
|
249
|
+
});
|
|
250
|
+
engine.block.setPositionX(photoBlock, 10);
|
|
251
|
+
engine.block.setPositionY(photoBlock, 10);
|
|
252
|
+
engine.block.appendChild(collagePages[i], photoBlock);
|
|
253
|
+
}
|
|
164
254
|
|
|
165
|
-
|
|
166
|
-
const pageOrder = engine.block.getChildren(stack);
|
|
167
|
-
console.log('Page order after reordering:', pageOrder);
|
|
255
|
+
console.log('Created photo collage with 3 images');
|
|
168
256
|
|
|
169
|
-
|
|
170
|
-
|
|
257
|
+
// Export the collage result to PNG
|
|
258
|
+
const outputDir = './output';
|
|
259
|
+
if (!existsSync(outputDir)) {
|
|
260
|
+
mkdirSync(outputDir, { recursive: true });
|
|
261
|
+
}
|
|
171
262
|
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
263
|
+
const blob = await engine.block.export(collagePage1, {
|
|
264
|
+
mimeType: 'image/png'
|
|
265
|
+
});
|
|
266
|
+
const buffer = Buffer.from(await blob.arrayBuffer());
|
|
267
|
+
writeFileSync(`${outputDir}/layout-collage.png`, buffer);
|
|
175
268
|
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
269
|
+
console.log('\nExported collage to output/layout-collage.png');
|
|
270
|
+
} finally {
|
|
271
|
+
// Always dispose the engine to free resources
|
|
272
|
+
engine.dispose();
|
|
179
273
|
}
|
|
180
|
-
|
|
181
|
-
export default Example;
|
|
182
274
|
```
|
|
183
275
|
|
|
184
|
-
This guide covers how to
|
|
276
|
+
This guide covers how to create vertical and horizontal stack layouts, add pages to stacks, configure spacing, reorder pages, and switch between automatic and manual positioning modes.
|
|
277
|
+
|
|
278
|
+
## Setting Up the Engine
|
|
279
|
+
|
|
280
|
+
We initialize the headless CE.SDK engine for server-side layout operations.
|
|
185
281
|
|
|
186
|
-
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
282
|
+
```typescript highlight=highlight-setup
|
|
283
|
+
// Initialize CE.SDK engine in headless mode
|
|
284
|
+
const engine = await CreativeEngine.init({
|
|
285
|
+
baseURL: process.env.IMGLY_LOCAL_ASSETS_URL
|
|
286
|
+
// license: process.env.CESDK_LICENSE, // Optional (trial mode available)
|
|
287
|
+
});
|
|
288
|
+
```
|
|
191
289
|
|
|
192
290
|
## Create a Vertical Stack Layout
|
|
193
291
|
|
|
194
|
-
Vertical
|
|
292
|
+
Vertical stack layouts arrange pages from top to bottom. When you add pages to the stack, they automatically position below each other with the configured spacing.
|
|
195
293
|
|
|
196
294
|
```typescript highlight=highlight-vertical-stack
|
|
197
|
-
// Create a scene with vertical stack layout
|
|
198
|
-
// Pages arrange top-to-bottom automatically
|
|
199
|
-
engine.scene.create('VerticalStack');
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
engine.block.
|
|
207
|
-
engine.block.
|
|
208
|
-
engine.block.
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
engine.block.
|
|
213
|
-
engine.block.
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
295
|
+
// Create a scene with vertical stack layout
|
|
296
|
+
// Pages and blocks will arrange top-to-bottom automatically
|
|
297
|
+
const verticalScene = engine.scene.create('VerticalStack');
|
|
298
|
+
console.log('Created VerticalStack scene:', verticalScene);
|
|
299
|
+
|
|
300
|
+
// Get the stack container to add pages
|
|
301
|
+
const [stack] = engine.block.findByType('stack');
|
|
302
|
+
|
|
303
|
+
// Create first page
|
|
304
|
+
const page1 = engine.block.create('page');
|
|
305
|
+
engine.block.setWidth(page1, 400);
|
|
306
|
+
engine.block.setHeight(page1, 300);
|
|
307
|
+
engine.block.appendChild(stack, page1);
|
|
308
|
+
|
|
309
|
+
// Create second page - appears below page1
|
|
310
|
+
const page2 = engine.block.create('page');
|
|
311
|
+
engine.block.setWidth(page2, 400);
|
|
312
|
+
engine.block.setHeight(page2, 300);
|
|
313
|
+
engine.block.appendChild(stack, page2);
|
|
314
|
+
|
|
315
|
+
// Configure spacing between stacked pages (in screen space pixels)
|
|
316
|
+
engine.block.setFloat(stack, 'stack/spacing', 20);
|
|
317
|
+
engine.block.setBool(stack, 'stack/spacingInScreenspace', true);
|
|
318
|
+
|
|
319
|
+
const spacing = engine.block.getFloat(stack, 'stack/spacing');
|
|
320
|
+
console.log(`Stack spacing: ${spacing}px`);
|
|
218
321
|
```
|
|
219
322
|
|
|
220
|
-
|
|
323
|
+
Pages added with `appendChild` appear at the bottom of the stack. The `stack/spacing` property controls the gap between pages, and `stack/spacingInScreenspace` determines whether spacing is in screen pixels or design units.
|
|
221
324
|
|
|
222
|
-
##
|
|
325
|
+
## Create a Horizontal Stack Layout
|
|
223
326
|
|
|
224
|
-
|
|
327
|
+
Horizontal stack layouts arrange pages from left to right. Switch between layout types using `engine.scene.setLayout()`.
|
|
225
328
|
|
|
226
|
-
```typescript highlight=highlight-
|
|
227
|
-
//
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
});
|
|
232
|
-
engine.block.setPositionX(block1, 25);
|
|
233
|
-
engine.block.setPositionY(block1, 25);
|
|
234
|
-
engine.block.appendChild(page1, block1);
|
|
235
|
-
|
|
236
|
-
// Add a colored rectangle to page 2
|
|
237
|
-
const block2 = engine.block.create('graphic');
|
|
238
|
-
const shape2 = engine.block.createShape('rect');
|
|
239
|
-
engine.block.setShape(block2, shape2);
|
|
240
|
-
engine.block.setWidth(block2, 350);
|
|
241
|
-
engine.block.setHeight(block2, 250);
|
|
242
|
-
engine.block.setPositionX(block2, 25);
|
|
243
|
-
engine.block.setPositionY(block2, 25);
|
|
244
|
-
const fill2 = engine.block.createFill('color');
|
|
245
|
-
engine.block.setColor(fill2, 'fill/color/value', {
|
|
246
|
-
r: 0.3,
|
|
247
|
-
g: 0.6,
|
|
248
|
-
b: 0.9,
|
|
249
|
-
a: 1.0
|
|
250
|
-
});
|
|
251
|
-
engine.block.setFill(block2, fill2);
|
|
252
|
-
engine.block.appendChild(page2, block2);
|
|
253
|
-
```
|
|
329
|
+
```typescript highlight=highlight-horizontal-stack
|
|
330
|
+
// Switch to horizontal stack layout
|
|
331
|
+
// Pages will now arrange left-to-right
|
|
332
|
+
engine.scene.setLayout('HorizontalStack');
|
|
333
|
+
console.log('Changed to HorizontalStack layout');
|
|
254
334
|
|
|
255
|
-
|
|
335
|
+
// Verify the layout change
|
|
336
|
+
const currentLayout = engine.scene.getLayout();
|
|
337
|
+
console.log('Current layout:', currentLayout);
|
|
256
338
|
|
|
257
|
-
|
|
339
|
+
// Pages are automatically rearranged horizontally
|
|
340
|
+
// Useful for carousels, timelines, or horizontal galleries
|
|
341
|
+
```
|
|
258
342
|
|
|
259
|
-
|
|
343
|
+
Horizontal layouts are useful for carousels, timelines, or horizontal galleries. The same spacing configuration applies—pages automatically reposition when you change the layout type.
|
|
260
344
|
|
|
261
|
-
|
|
262
|
-
// Switch to horizontal stack layout
|
|
263
|
-
// Pages now arrange left-to-right
|
|
264
|
-
engine.scene.setLayout('HorizontalStack');
|
|
345
|
+
## Add Blocks to Pages
|
|
265
346
|
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
347
|
+
Once you have pages in your stack, add graphic blocks to display content. Each block needs a shape and fill to be visible.
|
|
348
|
+
|
|
349
|
+
```typescript highlight=highlight-add-blocks
|
|
350
|
+
// Add graphic blocks to each page
|
|
351
|
+
// Blocks must have a shape and fill to be visible
|
|
352
|
+
|
|
353
|
+
// Sample image URL for demonstrations
|
|
354
|
+
const imageUri = 'https://img.ly/static/ubq_samples/sample_1.jpg';
|
|
355
|
+
|
|
356
|
+
// Add an image block to page 1
|
|
357
|
+
const block1 = await engine.block.addImage(imageUri, {
|
|
358
|
+
size: { width: 350, height: 250 }
|
|
359
|
+
});
|
|
360
|
+
engine.block.setPositionX(block1, 25);
|
|
361
|
+
engine.block.setPositionY(block1, 25);
|
|
362
|
+
engine.block.appendChild(page1, block1);
|
|
363
|
+
console.log('Added image block to page 1');
|
|
364
|
+
|
|
365
|
+
// Add a colored rectangle to page 2
|
|
366
|
+
const block2 = engine.block.create('graphic');
|
|
367
|
+
const shape2 = engine.block.createShape('rect');
|
|
368
|
+
engine.block.setShape(block2, shape2);
|
|
369
|
+
engine.block.setWidth(block2, 350);
|
|
370
|
+
engine.block.setHeight(block2, 250);
|
|
371
|
+
engine.block.setPositionX(block2, 25);
|
|
372
|
+
engine.block.setPositionY(block2, 25);
|
|
373
|
+
const fill2 = engine.block.createFill('color');
|
|
374
|
+
engine.block.setColor(fill2, 'fill/color/value', {
|
|
375
|
+
r: 0.3,
|
|
376
|
+
g: 0.6,
|
|
377
|
+
b: 0.9,
|
|
378
|
+
a: 1.0
|
|
379
|
+
});
|
|
380
|
+
engine.block.setFill(block2, fill2);
|
|
381
|
+
engine.block.appendChild(page2, block2);
|
|
382
|
+
console.log('Added colored block to page 2');
|
|
269
383
|
```
|
|
270
384
|
|
|
271
|
-
|
|
385
|
+
Position blocks within their parent page using `setPositionX()` and `setPositionY()`. The block's position is relative to the page's top-left corner.
|
|
272
386
|
|
|
273
|
-
## Add Pages to Existing
|
|
387
|
+
## Add Pages to an Existing Stack
|
|
274
388
|
|
|
275
|
-
|
|
389
|
+
After creating a composition, you can add more pages to the stack. New pages automatically appear at the end.
|
|
276
390
|
|
|
277
391
|
```typescript highlight=highlight-add-page
|
|
278
|
-
// Add a new page to the existing stack
|
|
279
|
-
// The page automatically appears at the end
|
|
280
|
-
const page3 = engine.block.create('page');
|
|
281
|
-
engine.block.setWidth(page3, 400);
|
|
282
|
-
engine.block.setHeight(page3, 300);
|
|
283
|
-
engine.block.appendChild(stack, page3);
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
const
|
|
288
|
-
engine.block.
|
|
289
|
-
engine.block.
|
|
290
|
-
engine.block.
|
|
291
|
-
engine.block.
|
|
292
|
-
engine.block.
|
|
293
|
-
|
|
294
|
-
engine.block.
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
engine.block.
|
|
392
|
+
// Add a new page to the existing stack layout
|
|
393
|
+
// The page automatically appears at the end of the stack
|
|
394
|
+
const page3 = engine.block.create('page');
|
|
395
|
+
engine.block.setWidth(page3, 400);
|
|
396
|
+
engine.block.setHeight(page3, 300);
|
|
397
|
+
engine.block.appendChild(stack, page3);
|
|
398
|
+
console.log('Added page 3 to stack');
|
|
399
|
+
|
|
400
|
+
// Add content to page 3
|
|
401
|
+
const block3 = engine.block.create('graphic');
|
|
402
|
+
const shape3 = engine.block.createShape('rect');
|
|
403
|
+
engine.block.setShape(block3, shape3);
|
|
404
|
+
engine.block.setWidth(block3, 350);
|
|
405
|
+
engine.block.setHeight(block3, 250);
|
|
406
|
+
engine.block.setPositionX(block3, 25);
|
|
407
|
+
engine.block.setPositionY(block3, 25);
|
|
408
|
+
const fill3 = engine.block.createFill('color');
|
|
409
|
+
engine.block.setColor(fill3, 'fill/color/value', {
|
|
410
|
+
r: 0.9,
|
|
411
|
+
g: 0.5,
|
|
412
|
+
b: 0.3,
|
|
413
|
+
a: 1.0
|
|
414
|
+
});
|
|
415
|
+
engine.block.setFill(block3, fill3);
|
|
416
|
+
engine.block.appendChild(page3, block3);
|
|
417
|
+
|
|
418
|
+
// Count pages in stack
|
|
419
|
+
const pages = engine.block.getChildren(stack);
|
|
420
|
+
console.log(`Stack now has ${pages.length} pages`);
|
|
302
421
|
```
|
|
303
422
|
|
|
304
|
-
|
|
423
|
+
Use `getChildren()` to see all pages in the stack. The insertion order determines the visual order in the layout.
|
|
305
424
|
|
|
306
|
-
## Reorder Pages
|
|
425
|
+
## Reorder Pages in the Stack
|
|
307
426
|
|
|
308
|
-
Change
|
|
427
|
+
Change the position of pages using `insertChild()`. This lets you move pages to any position in the stack.
|
|
309
428
|
|
|
310
429
|
```typescript highlight=highlight-reorder
|
|
311
|
-
// Reorder pages using insertChild
|
|
312
|
-
// Move page3 to the first position
|
|
313
|
-
engine.block.insertChild(stack, page3, 0);
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
430
|
+
// Reorder pages using insertChild
|
|
431
|
+
// Move page3 to the first position (index 0)
|
|
432
|
+
engine.block.insertChild(stack, page3, 0);
|
|
433
|
+
console.log('Moved page 3 to first position');
|
|
434
|
+
|
|
435
|
+
// Verify the new order by listing children
|
|
436
|
+
const reorderedPages = engine.block.getChildren(stack);
|
|
437
|
+
console.log('Page order after reordering:', reorderedPages);
|
|
318
438
|
```
|
|
319
439
|
|
|
320
|
-
|
|
440
|
+
The second parameter specifies the target index. Index 0 places the page first, and higher indices move it further down (or right in horizontal layouts).
|
|
321
441
|
|
|
322
442
|
## Change Stack Spacing
|
|
323
443
|
|
|
324
|
-
Adjust spacing between pages
|
|
444
|
+
Adjust the spacing between pages at any time. Changes apply immediately and pages reposition automatically.
|
|
325
445
|
|
|
326
446
|
```typescript highlight=highlight-spacing
|
|
327
|
-
// Update spacing between stacked pages
|
|
328
|
-
engine.block.setFloat(stack, 'stack/spacing', 40);
|
|
447
|
+
// Update spacing between stacked pages
|
|
448
|
+
engine.block.setFloat(stack, 'stack/spacing', 40);
|
|
449
|
+
const newSpacing = engine.block.getFloat(stack, 'stack/spacing');
|
|
450
|
+
console.log(`Updated stack spacing to: ${newSpacing}px`);
|
|
329
451
|
|
|
330
|
-
//
|
|
331
|
-
const updatedSpacing = engine.block.getFloat(stack, 'stack/spacing');
|
|
332
|
-
console.log('Updated spacing:', updatedSpacing);
|
|
452
|
+
// Spacing updates immediately - pages reposition automatically
|
|
333
453
|
```
|
|
334
454
|
|
|
335
|
-
|
|
455
|
+
Use `getFloat()` to read the current spacing value. Larger spacing creates more separation between pages; zero spacing creates a seamless grid.
|
|
336
456
|
|
|
337
457
|
## Switch to Free Layout
|
|
338
458
|
|
|
339
|
-
For manual
|
|
459
|
+
Stack layouts automatically position pages. For manual control, switch to Free layout.
|
|
460
|
+
|
|
461
|
+
```typescript highlight=highlight-free-layout
|
|
462
|
+
// Check current layout type
|
|
463
|
+
const layoutBefore = engine.scene.getLayout();
|
|
464
|
+
console.log('Current layout:', layoutBefore);
|
|
340
465
|
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
466
|
+
// Convert to free layout for manual positioning
|
|
467
|
+
engine.scene.setLayout('Free');
|
|
468
|
+
console.log('Switched to Free layout');
|
|
344
469
|
|
|
345
|
-
//
|
|
346
|
-
|
|
470
|
+
// In free layout, pages keep their positions but stop auto-arranging
|
|
471
|
+
// Now you can position pages manually
|
|
472
|
+
const [firstPage] = engine.block.findByType('page');
|
|
473
|
+
engine.block.setPositionX(firstPage, 50);
|
|
474
|
+
engine.block.setPositionY(firstPage, 50);
|
|
475
|
+
console.log('Manually positioned first page');
|
|
347
476
|
|
|
348
|
-
//
|
|
349
|
-
const
|
|
350
|
-
|
|
351
|
-
engine.block.setPositionY(page, 200);
|
|
477
|
+
// Verify layout change
|
|
478
|
+
const layoutAfter = engine.scene.getLayout();
|
|
479
|
+
console.log('Layout after switch:', layoutAfter);
|
|
352
480
|
```
|
|
353
481
|
|
|
354
|
-
Free layout
|
|
482
|
+
In Free layout, pages keep their current positions but stop auto-arranging. You can then use `setPositionX()` and `setPositionY()` to position pages manually.
|
|
483
|
+
|
|
484
|
+
## Build a Photo Collage
|
|
485
|
+
|
|
486
|
+
This practical example creates a vertical photo collage with three images and tight spacing.
|
|
487
|
+
|
|
488
|
+
```typescript highlight=highlight-collage
|
|
489
|
+
// Create a new vertical stack scene for a photo collage
|
|
490
|
+
engine.scene.create('VerticalStack', {
|
|
491
|
+
page: { size: { width: 600, height: 200 } }
|
|
492
|
+
});
|
|
493
|
+
|
|
494
|
+
// Get the new stack
|
|
495
|
+
const [collageStack] = engine.block.findByType('stack');
|
|
496
|
+
|
|
497
|
+
// Set tight spacing for collage effect
|
|
498
|
+
engine.block.setFloat(collageStack, 'stack/spacing', 10);
|
|
499
|
+
engine.block.setBool(collageStack, 'stack/spacingInScreenspace', true);
|
|
500
|
+
|
|
501
|
+
// Get the first page created with the scene
|
|
502
|
+
const [collagePage1] = engine.block.findByType('page');
|
|
503
|
+
|
|
504
|
+
// Create additional pages for the collage
|
|
505
|
+
const collagePage2 = engine.block.create('page');
|
|
506
|
+
engine.block.setWidth(collagePage2, 600);
|
|
507
|
+
engine.block.setHeight(collagePage2, 200);
|
|
508
|
+
engine.block.appendChild(collageStack, collagePage2);
|
|
509
|
+
|
|
510
|
+
const collagePage3 = engine.block.create('page');
|
|
511
|
+
engine.block.setWidth(collagePage3, 600);
|
|
512
|
+
engine.block.setHeight(collagePage3, 200);
|
|
513
|
+
engine.block.appendChild(collageStack, collagePage3);
|
|
514
|
+
|
|
515
|
+
// Add images to each collage page
|
|
516
|
+
const imageUrls = [
|
|
517
|
+
'https://img.ly/static/ubq_samples/sample_1.jpg',
|
|
518
|
+
'https://img.ly/static/ubq_samples/sample_2.jpg',
|
|
519
|
+
'https://img.ly/static/ubq_samples/sample_3.jpg'
|
|
520
|
+
];
|
|
521
|
+
|
|
522
|
+
const collagePages = [collagePage1, collagePage2, collagePage3];
|
|
523
|
+
|
|
524
|
+
for (let i = 0; i < collagePages.length; i++) {
|
|
525
|
+
const photoBlock = await engine.block.addImage(imageUrls[i], {
|
|
526
|
+
size: { width: 580, height: 180 }
|
|
527
|
+
});
|
|
528
|
+
engine.block.setPositionX(photoBlock, 10);
|
|
529
|
+
engine.block.setPositionY(photoBlock, 10);
|
|
530
|
+
engine.block.appendChild(collagePages[i], photoBlock);
|
|
531
|
+
}
|
|
532
|
+
|
|
533
|
+
console.log('Created photo collage with 3 images');
|
|
534
|
+
```
|
|
535
|
+
|
|
536
|
+
The collage uses a vertical stack with 10px spacing. Each page contains an image that fills most of the page area, creating a cohesive photo strip effect.
|
|
537
|
+
|
|
538
|
+
## Exporting the Result
|
|
539
|
+
|
|
540
|
+
After building the layout, export pages as images to verify the composition.
|
|
541
|
+
|
|
542
|
+
```typescript highlight=highlight-export
|
|
543
|
+
// Export the collage result to PNG
|
|
544
|
+
const outputDir = './output';
|
|
545
|
+
if (!existsSync(outputDir)) {
|
|
546
|
+
mkdirSync(outputDir, { recursive: true });
|
|
547
|
+
}
|
|
548
|
+
|
|
549
|
+
const blob = await engine.block.export(collagePage1, {
|
|
550
|
+
mimeType: 'image/png'
|
|
551
|
+
});
|
|
552
|
+
const buffer = Buffer.from(await blob.arrayBuffer());
|
|
553
|
+
writeFileSync(`${outputDir}/layout-collage.png`, buffer);
|
|
554
|
+
|
|
555
|
+
console.log('\nExported collage to output/layout-collage.png');
|
|
556
|
+
```
|
|
355
557
|
|
|
356
558
|
## Troubleshooting
|
|
357
559
|
|
|
358
|
-
**Pages not arranging automatically
|
|
560
|
+
**Pages not arranging automatically**: Verify the scene layout type is `VerticalStack` or `HorizontalStack` using `engine.scene.getLayout()`.
|
|
359
561
|
|
|
360
|
-
**Spacing not applying
|
|
562
|
+
**Spacing not applying**: Check the spacing value with `engine.block.getFloat(stack, 'stack/spacing')`. Ensure you're setting spacing on the stack block, not the scene.
|
|
361
563
|
|
|
362
|
-
**Pages overlapping
|
|
564
|
+
**Pages overlapping**: Ensure pages are direct children of the stack block. Use `engine.block.findByType('stack')` to get the correct parent.
|
|
363
565
|
|
|
364
|
-
**Can't position manually
|
|
566
|
+
**Can't position pages manually**: Stack layouts override manual positions. Switch to `Free` layout with `engine.scene.setLayout('Free')`.
|
|
365
567
|
|
|
366
|
-
**Wrong
|
|
568
|
+
**Wrong page order**: Child order determines visual position. Use `insertChild(stack, page, index)` to move pages to specific positions.
|
|
367
569
|
|
|
368
570
|
## API Reference
|
|
369
571
|
|
|
370
|
-
| Method
|
|
371
|
-
|
|
|
372
|
-
| `engine.scene.create(layout)`
|
|
373
|
-
| `engine.scene.
|
|
374
|
-
| `engine.scene.
|
|
375
|
-
| `engine.block.findByType('stack')`
|
|
376
|
-
| `engine.block.setFloat(id, 'stack/spacing', value)` | Set spacing between stacked pages
|
|
377
|
-
| `engine.block.getFloat(id, 'stack/spacing')`
|
|
378
|
-
| `engine.block.
|
|
379
|
-
| `engine.block.
|
|
380
|
-
| `engine.block.
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
- [Auto-resize](./automation/auto-resize.md) — Make blocks fit parent containers
|
|
385
|
-
- [Manual Positioning](./edit-image/transform/move.md) — Position blocks in free layouts
|
|
386
|
-
- [Layer Hierarchies](./create-composition/layer-management.md) — Organize blocks in hierarchical structures
|
|
387
|
-
- [Create a Collage](./create-composition/collage.md) — Build photo collages with templates
|
|
572
|
+
| Method | Description |
|
|
573
|
+
| --- | --- |
|
|
574
|
+
| `engine.scene.create(layout, options)` | Create a scene with specified layout type |
|
|
575
|
+
| `engine.scene.getLayout()` | Get the current scene layout type |
|
|
576
|
+
| `engine.scene.setLayout(layout)` | Change the scene layout type |
|
|
577
|
+
| `engine.block.findByType('stack')` | Find the stack container block |
|
|
578
|
+
| `engine.block.setFloat(id, 'stack/spacing', value)` | Set spacing between stacked pages |
|
|
579
|
+
| `engine.block.getFloat(id, 'stack/spacing')` | Get current spacing value |
|
|
580
|
+
| `engine.block.setBool(id, 'stack/spacingInScreenspace', value)` | Set whether spacing is in screen pixels |
|
|
581
|
+
| `engine.block.appendChild(parent, child)` | Add page to stack (positions automatically) |
|
|
582
|
+
| `engine.block.insertChild(parent, child, index)` | Insert page at specific position in stack |
|
|
583
|
+
| `engine.block.getChildren(id)` | Get all child pages of a stack |
|
|
584
|
+
|
|
585
|
+
|
|
388
586
|
|
|
389
587
|
---
|
|
390
588
|
|
|
391
589
|
## More Resources
|
|
392
590
|
|
|
393
|
-
- **[
|
|
591
|
+
- **[Node.js Documentation Index](https://img.ly/docs/cesdk/node.md)** - Browse all Node.js documentation
|
|
394
592
|
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
395
|
-
- **[Web Documentation](./
|
|
396
|
-
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|
|
593
|
+
- **[Web Documentation](./node.md)** - Interactive documentation with examples
|
|
594
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|