@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,463 +1,301 @@
|
|
|
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) > [Export Media Assets](./export-save-publish/export.md) > [Partial Export](./export-save-publish/export/partial-export.md)
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
7
|
Export individual design elements, grouped blocks, or specific pages from your
|
|
8
|
-
scene
|
|
9
|
-
|
|
8
|
+
scene server-side using CE.SDK's headless Node.js engine for automated workflows,
|
|
9
|
+
batch processing, and backend integrations.
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
> **Reading time:** 10 minutes
|
|
11
|
+
> **Reading time:** 15 minutes
|
|
14
12
|
>
|
|
15
13
|
> **Resources:**
|
|
16
14
|
>
|
|
17
15
|
> - [Download examples](https://github.com/imgly/cesdk-web-examples/archive/refs/tags/release-$UBQ_VERSION$.zip)
|
|
18
|
-
>
|
|
19
|
-
> - [
|
|
20
|
-
>
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
import
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
CropPresetsAssetSource,
|
|
30
|
-
DemoAssetSources,
|
|
31
|
-
EffectsAssetSource,
|
|
32
|
-
FiltersAssetSource,
|
|
33
|
-
PagePresetsAssetSource,
|
|
34
|
-
StickerAssetSource,
|
|
35
|
-
TextAssetSource,
|
|
36
|
-
TextComponentAssetSource,
|
|
37
|
-
TypefaceAssetSource,
|
|
38
|
-
UploadAssetSources,
|
|
39
|
-
VectorShapeAssetSource
|
|
40
|
-
} from '@cesdk/cesdk-js/plugins';
|
|
41
|
-
import { DesignEditorConfig } from './design-editor/plugin';
|
|
42
|
-
import packageJson from './package.json';
|
|
16
|
+
>
|
|
17
|
+
> - [View source on GitHub](https://github.com/imgly/cesdk-web-examples/tree/release-$UBQ_VERSION$/guides-export-save-publish-export-partial-export-server-js)
|
|
18
|
+
>
|
|
19
|
+
> - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-export-save-publish-export-partial-export-server-js)
|
|
20
|
+
|
|
21
|
+
Server-side partial export enables fine-grained control over output generation in headless environments. Export individual images, text blocks, shapes, grouped elements, or specific pages programmatically for asset generation pipelines, automated report creation, or serverless functions. This guide demonstrates how to implement partial exports using CE.SDK's Node.js engine (`@cesdk/node`).
|
|
22
|
+
|
|
23
|
+
```typescript file=@cesdk_web_examples/guides-export-save-publish-export-partial-export-server-js/server-js.ts reference-only
|
|
24
|
+
import CreativeEngine from '@cesdk/node';
|
|
25
|
+
import { config } from 'dotenv';
|
|
26
|
+
import { writeFileSync, mkdirSync, existsSync } from 'fs';
|
|
43
27
|
import { calculateGridLayout } from './utils';
|
|
44
28
|
|
|
29
|
+
// Load environment variables
|
|
30
|
+
config();
|
|
31
|
+
|
|
45
32
|
/**
|
|
46
|
-
* CE.SDK
|
|
33
|
+
* CE.SDK Server Guide: Partial Export
|
|
47
34
|
*
|
|
48
|
-
*
|
|
35
|
+
* Demonstrates exporting specific blocks, groups, and pages programmatically:
|
|
49
36
|
* - Exporting individual design blocks
|
|
50
37
|
* - Exporting grouped elements
|
|
51
|
-
* - Exporting
|
|
38
|
+
* - Exporting specific pages
|
|
39
|
+
* - Export format selection and options
|
|
52
40
|
* - Understanding block hierarchy in exports
|
|
53
41
|
*/
|
|
54
|
-
class Example implements EditorPlugin {
|
|
55
|
-
name = packageJson.name;
|
|
56
42
|
|
|
57
|
-
|
|
43
|
+
// Initialize CE.SDK engine in headless mode
|
|
44
|
+
const engine = await CreativeEngine.init({
|
|
45
|
+
baseURL: process.env.IMGLY_LOCAL_ASSETS_URL,
|
|
46
|
+
});
|
|
58
47
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
}
|
|
48
|
+
try {
|
|
49
|
+
// Create a design scene with specific page dimensions
|
|
50
|
+
engine.scene.create('VerticalStack', {
|
|
51
|
+
page: { size: { width: 1200, height: 900 } },
|
|
52
|
+
});
|
|
63
53
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
await cesdk.addPlugin(new CropPresetsAssetSource());
|
|
69
|
-
await cesdk.addPlugin(
|
|
70
|
-
new UploadAssetSources({ include: ['ly.img.image.upload'] })
|
|
71
|
-
);
|
|
72
|
-
await cesdk.addPlugin(
|
|
73
|
-
new DemoAssetSources({
|
|
74
|
-
include: [
|
|
75
|
-
'ly.img.templates.blank.*',
|
|
76
|
-
'ly.img.templates.presentation.*',
|
|
77
|
-
'ly.img.templates.print.*',
|
|
78
|
-
'ly.img.templates.social.*',
|
|
79
|
-
'ly.img.image.*'
|
|
80
|
-
]
|
|
81
|
-
})
|
|
82
|
-
);
|
|
83
|
-
await cesdk.addPlugin(new EffectsAssetSource());
|
|
84
|
-
await cesdk.addPlugin(new FiltersAssetSource());
|
|
85
|
-
await cesdk.addPlugin(new PagePresetsAssetSource());
|
|
86
|
-
await cesdk.addPlugin(new StickerAssetSource());
|
|
87
|
-
await cesdk.addPlugin(new TextAssetSource());
|
|
88
|
-
await cesdk.addPlugin(new TextComponentAssetSource());
|
|
89
|
-
await cesdk.addPlugin(new TypefaceAssetSource());
|
|
90
|
-
await cesdk.addPlugin(new VectorShapeAssetSource());
|
|
91
|
-
|
|
92
|
-
// Create a design scene using CE.SDK cesdk method
|
|
93
|
-
await cesdk.actions.run('scene.create', {
|
|
94
|
-
page: { width: 800, height: 600, unit: 'Pixel' }
|
|
95
|
-
});
|
|
54
|
+
const page = engine.block.findByType('page')[0];
|
|
55
|
+
if (!page) {
|
|
56
|
+
throw new Error('No page found');
|
|
57
|
+
}
|
|
96
58
|
|
|
97
|
-
|
|
59
|
+
const pageWidth = engine.block.getWidth(page);
|
|
60
|
+
const pageHeight = engine.block.getHeight(page);
|
|
98
61
|
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
if (!page) {
|
|
103
|
-
throw new Error('No page found');
|
|
104
|
-
}
|
|
62
|
+
// Calculate responsive grid layout for 6 examples
|
|
63
|
+
const layout = calculateGridLayout(pageWidth, pageHeight, 6);
|
|
64
|
+
const { blockWidth, blockHeight, getPosition } = layout;
|
|
105
65
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
r: 0.95,
|
|
110
|
-
g: 0.95,
|
|
111
|
-
b: 0.95,
|
|
112
|
-
a: 1.0
|
|
113
|
-
});
|
|
66
|
+
// Sample image URI for demonstrations
|
|
67
|
+
const imageUri = 'https://img.ly/static/ubq_samples/sample_1.jpg';
|
|
68
|
+
const blockSize = { width: blockWidth, height: blockHeight };
|
|
114
69
|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
70
|
+
// Create first image block
|
|
71
|
+
const imageBlock1 = await engine.block.addImage(imageUri, {
|
|
72
|
+
size: blockSize,
|
|
73
|
+
});
|
|
74
|
+
engine.block.appendChild(page, imageBlock1);
|
|
120
75
|
|
|
121
|
-
|
|
122
|
-
|
|
76
|
+
// Export the block as PNG
|
|
77
|
+
const individualBlob = await engine.block.export(imageBlock1, {
|
|
78
|
+
mimeType: 'image/png',
|
|
79
|
+
pngCompressionLevel: 5,
|
|
80
|
+
});
|
|
123
81
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
engine.block.appendChild(page, imageBlock1);
|
|
82
|
+
// Save individual block export
|
|
83
|
+
const outputDir = './output';
|
|
84
|
+
if (!existsSync(outputDir)) {
|
|
85
|
+
mkdirSync(outputDir, { recursive: true });
|
|
86
|
+
}
|
|
130
87
|
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
});
|
|
136
|
-
engine.block.appendChild(page, imageBlock2);
|
|
137
|
-
|
|
138
|
-
// Create a shape block
|
|
139
|
-
const shapeBlock = engine.block.create('//ly.img.ubq/graphic');
|
|
140
|
-
const shape = engine.block.createShape('star');
|
|
141
|
-
engine.block.setShape(shapeBlock, shape);
|
|
142
|
-
engine.block.setWidth(shapeBlock, blockWidth);
|
|
143
|
-
engine.block.setHeight(shapeBlock, blockHeight);
|
|
144
|
-
|
|
145
|
-
// Add a color fill to the shape
|
|
146
|
-
const shapeFill = engine.block.createFill('color');
|
|
147
|
-
engine.block.setFill(shapeBlock, shapeFill);
|
|
148
|
-
engine.block.setColor(shapeFill, 'fill/color/value', {
|
|
149
|
-
r: 1.0,
|
|
150
|
-
g: 0.7,
|
|
151
|
-
b: 0.0,
|
|
152
|
-
a: 1.0
|
|
153
|
-
});
|
|
154
|
-
engine.block.appendChild(page, shapeBlock);
|
|
155
|
-
|
|
156
|
-
// Create two shapes for grouping demonstration
|
|
157
|
-
const groupShape1 = engine.block.create('//ly.img.ubq/graphic');
|
|
158
|
-
const rect = engine.block.createShape('rect');
|
|
159
|
-
engine.block.setShape(groupShape1, rect);
|
|
160
|
-
engine.block.setWidth(groupShape1, blockWidth * 0.4);
|
|
161
|
-
engine.block.setHeight(groupShape1, blockHeight * 0.4);
|
|
162
|
-
const groupFill1 = engine.block.createFill('color');
|
|
163
|
-
engine.block.setFill(groupShape1, groupFill1);
|
|
164
|
-
engine.block.setColor(groupFill1, 'fill/color/value', {
|
|
165
|
-
r: 0.3,
|
|
166
|
-
g: 0.6,
|
|
167
|
-
b: 0.9,
|
|
168
|
-
a: 1.0
|
|
169
|
-
});
|
|
170
|
-
engine.block.appendChild(page, groupShape1);
|
|
171
|
-
|
|
172
|
-
const groupShape2 = engine.block.create('//ly.img.ubq/graphic');
|
|
173
|
-
const ellipse = engine.block.createShape('ellipse');
|
|
174
|
-
engine.block.setShape(groupShape2, ellipse);
|
|
175
|
-
engine.block.setWidth(groupShape2, blockWidth * 0.4);
|
|
176
|
-
engine.block.setHeight(groupShape2, blockHeight * 0.4);
|
|
177
|
-
const groupFill2 = engine.block.createFill('color');
|
|
178
|
-
engine.block.setFill(groupShape2, groupFill2);
|
|
179
|
-
engine.block.setColor(groupFill2, 'fill/color/value', {
|
|
180
|
-
r: 0.9,
|
|
181
|
-
g: 0.3,
|
|
182
|
-
b: 0.5,
|
|
183
|
-
a: 1.0
|
|
184
|
-
});
|
|
185
|
-
engine.block.appendChild(page, groupShape2);
|
|
186
|
-
|
|
187
|
-
// Group the two shapes together
|
|
188
|
-
const group = engine.block.group([groupShape1, groupShape2]);
|
|
189
|
-
|
|
190
|
-
// Position all blocks in grid layout for visualization
|
|
191
|
-
const allBlocks = [
|
|
192
|
-
imageBlock1,
|
|
193
|
-
imageBlock2,
|
|
194
|
-
shapeBlock,
|
|
195
|
-
group,
|
|
196
|
-
groupShape1 // Note: groupShape1 is inside group, positioning group will position children
|
|
197
|
-
];
|
|
198
|
-
|
|
199
|
-
allBlocks.forEach((block, index) => {
|
|
200
|
-
if (index < 6) {
|
|
201
|
-
// Only position first 6 blocks (group contains 2)
|
|
202
|
-
const pos = getPosition(index);
|
|
203
|
-
engine.block.setPositionX(block, pos.x);
|
|
204
|
-
engine.block.setPositionY(block, pos.y);
|
|
205
|
-
}
|
|
206
|
-
});
|
|
88
|
+
const individualBuffer = Buffer.from(await individualBlob.arrayBuffer());
|
|
89
|
+
writeFileSync(`${outputDir}/individual-block.png`, individualBuffer);
|
|
90
|
+
// eslint-disable-next-line no-console
|
|
91
|
+
console.log('✓ Exported individual block to output/individual-block.png');
|
|
207
92
|
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
engine.block.setPositionX(groupShape2, 60);
|
|
215
|
-
engine.block.setPositionY(groupShape2, 60);
|
|
216
|
-
|
|
217
|
-
// Helper function: Download blob and show notification
|
|
218
|
-
const downloadWithNotification = async (
|
|
219
|
-
blob: Blob,
|
|
220
|
-
filename: string,
|
|
221
|
-
mimeType: string,
|
|
222
|
-
exportType: string
|
|
223
|
-
) => {
|
|
224
|
-
await cesdk.utils.downloadFile(blob, mimeType as any);
|
|
225
|
-
|
|
226
|
-
// Show notification after successful download
|
|
227
|
-
cesdk.ui.showNotification({
|
|
228
|
-
message: `Export "${exportType}" completed`,
|
|
229
|
-
type: 'info',
|
|
230
|
-
duration: 'infinite'
|
|
231
|
-
});
|
|
232
|
-
};
|
|
233
|
-
|
|
234
|
-
// Override exportDesign action to export selected block or page
|
|
235
|
-
cesdk.actions.register('exportDesign', async () => {
|
|
236
|
-
// eslint-disable-next-line no-console
|
|
237
|
-
console.log('🚀 Export action triggered');
|
|
238
|
-
|
|
239
|
-
const selectedBlocks = engine.block.findAllSelected();
|
|
240
|
-
// eslint-disable-next-line no-console
|
|
241
|
-
console.log(`📦 Selected blocks: ${selectedBlocks.length}`);
|
|
242
|
-
|
|
243
|
-
let blockToExport: number;
|
|
244
|
-
if (selectedBlocks.length > 0) {
|
|
245
|
-
// Export first selected block (or group them if multiple)
|
|
246
|
-
blockToExport =
|
|
247
|
-
selectedBlocks.length === 1
|
|
248
|
-
? selectedBlocks[0]
|
|
249
|
-
: engine.block.group(selectedBlocks);
|
|
250
|
-
// eslint-disable-next-line no-console
|
|
251
|
-
console.log(
|
|
252
|
-
`✅ Exporting selected block(s): ${
|
|
253
|
-
selectedBlocks.length === 1 ? 'single block' : 'grouped blocks'
|
|
254
|
-
}`
|
|
255
|
-
);
|
|
256
|
-
} else {
|
|
257
|
-
// No selection - export current page
|
|
258
|
-
const pages = engine.block.findByType('page');
|
|
259
|
-
blockToExport = pages[0];
|
|
260
|
-
// eslint-disable-next-line no-console
|
|
261
|
-
console.log('📄 No selection - exporting current page');
|
|
262
|
-
}
|
|
263
|
-
|
|
264
|
-
// eslint-disable-next-line no-console
|
|
265
|
-
console.log(`📸 Exporting block ID: ${blockToExport}`);
|
|
266
|
-
|
|
267
|
-
// Export the block with high compression
|
|
268
|
-
const blob = await engine.block.export(blockToExport, {
|
|
269
|
-
mimeType: 'image/png',
|
|
270
|
-
pngCompressionLevel: 9 // Maximum compression for smaller file size
|
|
271
|
-
});
|
|
272
|
-
|
|
273
|
-
// eslint-disable-next-line no-console
|
|
274
|
-
console.log(
|
|
275
|
-
`✨ Export complete - size: ${(blob.size / 1024).toFixed(2)} KB`
|
|
276
|
-
);
|
|
277
|
-
|
|
278
|
-
// Download the blob
|
|
279
|
-
await downloadWithNotification(blob, 'export.png', 'image/png', 'Design');
|
|
280
|
-
|
|
281
|
-
// eslint-disable-next-line no-console
|
|
282
|
-
console.log('💾 Download complete');
|
|
283
|
-
});
|
|
93
|
+
// Create second image block with different styling
|
|
94
|
+
const imageBlock2 = await engine.block.addImage(imageUri, {
|
|
95
|
+
size: blockSize,
|
|
96
|
+
cornerRadius: 20,
|
|
97
|
+
});
|
|
98
|
+
engine.block.appendChild(page, imageBlock2);
|
|
284
99
|
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
title: 'Exporting Block',
|
|
293
|
-
message: 'Processing export...',
|
|
294
|
-
progress: 'indeterminate'
|
|
295
|
-
});
|
|
296
|
-
|
|
297
|
-
// Find a specific block to export
|
|
298
|
-
const blockToExport = imageBlock1;
|
|
299
|
-
|
|
300
|
-
// Export the block as PNG with high compression and target size
|
|
301
|
-
const individualBlob = await engine.block.export(blockToExport, {
|
|
302
|
-
mimeType: 'image/png',
|
|
303
|
-
pngCompressionLevel: 9, // Maximum compression for smaller file size
|
|
304
|
-
targetWidth: 800, // Limit export resolution for faster exports
|
|
305
|
-
targetHeight: 600
|
|
306
|
-
});
|
|
307
|
-
|
|
308
|
-
// eslint-disable-next-line no-console
|
|
309
|
-
console.log(
|
|
310
|
-
`✅ Individual block exported - size: ${(
|
|
311
|
-
individualBlob.size / 1024
|
|
312
|
-
).toFixed(2)} KB`
|
|
313
|
-
);
|
|
314
|
-
|
|
315
|
-
// Close the export dialog
|
|
316
|
-
exportDialog.close();
|
|
317
|
-
|
|
318
|
-
// Download the exported block
|
|
319
|
-
await downloadWithNotification(
|
|
320
|
-
individualBlob,
|
|
321
|
-
'block-export.png',
|
|
322
|
-
'image/png',
|
|
323
|
-
'Block'
|
|
324
|
-
);
|
|
325
|
-
};
|
|
326
|
-
|
|
327
|
-
// Helper function: Create and export a group
|
|
328
|
-
const exportGroupExample = async () => {
|
|
329
|
-
// eslint-disable-next-line no-console
|
|
330
|
-
console.log('🚀 Starting group export...');
|
|
331
|
-
|
|
332
|
-
// Show loading dialog before export
|
|
333
|
-
const exportDialog = cesdk.utils.showLoadingDialog({
|
|
334
|
-
title: 'Exporting Group',
|
|
335
|
-
message: 'Processing export...',
|
|
336
|
-
progress: 'indeterminate'
|
|
337
|
-
});
|
|
338
|
-
|
|
339
|
-
// Group the blocks together (shapes already created above)
|
|
340
|
-
const exportGroup = engine.block.group([groupShape1, groupShape2]);
|
|
341
|
-
|
|
342
|
-
// Export the group (includes all children) with high compression and target size
|
|
343
|
-
const groupBlob = await engine.block.export(exportGroup, {
|
|
344
|
-
mimeType: 'image/png',
|
|
345
|
-
pngCompressionLevel: 9, // Maximum compression for smaller file size
|
|
346
|
-
targetWidth: 800, // Limit export resolution for faster exports
|
|
347
|
-
targetHeight: 600
|
|
348
|
-
});
|
|
349
|
-
|
|
350
|
-
// eslint-disable-next-line no-console
|
|
351
|
-
console.log(
|
|
352
|
-
`✅ Group exported - size: ${(groupBlob.size / 1024).toFixed(2)} KB`
|
|
353
|
-
);
|
|
354
|
-
|
|
355
|
-
// Close the export dialog
|
|
356
|
-
exportDialog.close();
|
|
357
|
-
|
|
358
|
-
// Download the exported group
|
|
359
|
-
await downloadWithNotification(
|
|
360
|
-
groupBlob,
|
|
361
|
-
'group-export.png',
|
|
362
|
-
'image/png',
|
|
363
|
-
'Group'
|
|
364
|
-
);
|
|
365
|
-
};
|
|
366
|
-
|
|
367
|
-
// Helper function: Export current page
|
|
368
|
-
const exportCurrentPage = async () => {
|
|
369
|
-
// Check export limits before exporting
|
|
370
|
-
const maxExportSize = engine.editor.getMaxExportSize();
|
|
371
|
-
const availableMemory = engine.editor.getAvailableMemory();
|
|
372
|
-
|
|
373
|
-
// eslint-disable-next-line no-console
|
|
374
|
-
console.log('🚀 Starting page export...');
|
|
375
|
-
// eslint-disable-next-line no-console
|
|
376
|
-
console.log(
|
|
377
|
-
`📊 Export limits - Max size: ${maxExportSize}px, Available memory: ${availableMemory} bytes`
|
|
378
|
-
);
|
|
379
|
-
|
|
380
|
-
// Show loading dialog before export
|
|
381
|
-
const exportDialog = cesdk.utils.showLoadingDialog({
|
|
382
|
-
title: 'Exporting Page',
|
|
383
|
-
message: 'Processing export...',
|
|
384
|
-
progress: 'indeterminate'
|
|
385
|
-
});
|
|
386
|
-
|
|
387
|
-
// Export the entire page with high compression and target size
|
|
388
|
-
const pageBlob = await engine.block.export(page, {
|
|
389
|
-
mimeType: 'image/png',
|
|
390
|
-
pngCompressionLevel: 9, // Maximum compression for smaller file size
|
|
391
|
-
targetWidth: 800, // Limit export resolution for faster exports
|
|
392
|
-
targetHeight: 600
|
|
393
|
-
});
|
|
394
|
-
|
|
395
|
-
// eslint-disable-next-line no-console
|
|
396
|
-
console.log(
|
|
397
|
-
`✅ Page exported - size: ${(pageBlob.size / 1024).toFixed(2)} KB`
|
|
398
|
-
);
|
|
399
|
-
|
|
400
|
-
// Close the export dialog
|
|
401
|
-
exportDialog.close();
|
|
402
|
-
|
|
403
|
-
// Download the exported page
|
|
404
|
-
await downloadWithNotification(
|
|
405
|
-
pageBlob,
|
|
406
|
-
'page-export.png',
|
|
407
|
-
'image/png',
|
|
408
|
-
'Page'
|
|
409
|
-
);
|
|
410
|
-
};
|
|
411
|
-
|
|
412
|
-
// Configure navigation bar layout
|
|
413
|
-
cesdk.ui.setComponentOrder({ in: 'ly.img.navigation.bar' }, [
|
|
414
|
-
'ly.img.undoRedo.navigationBar',
|
|
415
|
-
'ly.img.spacer',
|
|
416
|
-
{
|
|
417
|
-
id: 'ly.img.action.navigationBar',
|
|
418
|
-
onClick: async () => await exportCurrentPage(),
|
|
419
|
-
key: 'export-page',
|
|
420
|
-
label: 'Export Page',
|
|
421
|
-
icon: '@imgly/Save',
|
|
422
|
-
variant: 'plain',
|
|
423
|
-
color: 'accent'
|
|
424
|
-
},
|
|
425
|
-
{
|
|
426
|
-
id: 'ly.img.action.navigationBar',
|
|
427
|
-
onClick: async () => await exportGroupExample(),
|
|
428
|
-
key: 'export-group',
|
|
429
|
-
label: 'Export Group',
|
|
430
|
-
icon: '@imgly/Group',
|
|
431
|
-
color: 'accent'
|
|
432
|
-
},
|
|
433
|
-
{
|
|
434
|
-
id: 'ly.img.action.navigationBar',
|
|
435
|
-
onClick: async () => await exportIndividualBlock(),
|
|
436
|
-
key: 'export-block',
|
|
437
|
-
label: 'Export Block',
|
|
438
|
-
icon: '@imgly/Image',
|
|
439
|
-
variant: 'plain',
|
|
440
|
-
color: 'accent'
|
|
441
|
-
}
|
|
442
|
-
]);
|
|
443
|
-
|
|
444
|
-
// Show notification to guide users
|
|
445
|
-
cesdk.ui.showNotification({
|
|
446
|
-
message:
|
|
447
|
-
'Use the export buttons on the right to try different export options (Export Page, Export Group, Export Block)',
|
|
448
|
-
type: 'info',
|
|
449
|
-
duration: 'infinite'
|
|
450
|
-
});
|
|
100
|
+
// Export as PNG with high compression
|
|
101
|
+
const pngBlob = await engine.block.export(imageBlock2, {
|
|
102
|
+
mimeType: 'image/png',
|
|
103
|
+
pngCompressionLevel: 9, // Maximum compression
|
|
104
|
+
});
|
|
105
|
+
const pngBuffer = Buffer.from(await pngBlob.arrayBuffer());
|
|
106
|
+
writeFileSync(`${outputDir}/export-png.png`, pngBuffer);
|
|
451
107
|
|
|
452
|
-
|
|
453
|
-
|
|
108
|
+
// Export as JPEG with quality setting
|
|
109
|
+
const jpegBlob = await engine.block.export(imageBlock2, {
|
|
110
|
+
mimeType: 'image/jpeg',
|
|
111
|
+
jpegQuality: 0.95, // High quality
|
|
112
|
+
});
|
|
113
|
+
const jpegBuffer = Buffer.from(await jpegBlob.arrayBuffer());
|
|
114
|
+
writeFileSync(`${outputDir}/export-jpeg.jpg`, jpegBuffer);
|
|
115
|
+
|
|
116
|
+
// Export as WEBP
|
|
117
|
+
const webpBlob = await engine.block.export(imageBlock2, {
|
|
118
|
+
mimeType: 'image/webp',
|
|
119
|
+
webpQuality: 0.9,
|
|
120
|
+
});
|
|
121
|
+
const webpBuffer = Buffer.from(await webpBlob.arrayBuffer());
|
|
122
|
+
writeFileSync(`${outputDir}/export-webp.webp`, webpBuffer);
|
|
123
|
+
// eslint-disable-next-line no-console
|
|
124
|
+
console.log('✓ Exported different formats (PNG, JPEG, WEBP)');
|
|
125
|
+
|
|
126
|
+
// Create two shapes for grouping demonstration
|
|
127
|
+
const groupShape1 = engine.block.create('//ly.img.ubq/graphic');
|
|
128
|
+
const rect = engine.block.createShape('rect');
|
|
129
|
+
engine.block.setShape(groupShape1, rect);
|
|
130
|
+
engine.block.setWidth(groupShape1, blockWidth * 0.4);
|
|
131
|
+
engine.block.setHeight(groupShape1, blockHeight * 0.4);
|
|
132
|
+
const groupFill1 = engine.block.createFill('color');
|
|
133
|
+
engine.block.setFill(groupShape1, groupFill1);
|
|
134
|
+
engine.block.setColor(groupFill1, 'fill/color/value', {
|
|
135
|
+
r: 0.3,
|
|
136
|
+
g: 0.6,
|
|
137
|
+
b: 0.9,
|
|
138
|
+
a: 1.0,
|
|
139
|
+
});
|
|
140
|
+
engine.block.appendChild(page, groupShape1);
|
|
141
|
+
|
|
142
|
+
const groupShape2 = engine.block.create('//ly.img.ubq/graphic');
|
|
143
|
+
const ellipse = engine.block.createShape('ellipse');
|
|
144
|
+
engine.block.setShape(groupShape2, ellipse);
|
|
145
|
+
engine.block.setWidth(groupShape2, blockWidth * 0.4);
|
|
146
|
+
engine.block.setHeight(groupShape2, blockHeight * 0.4);
|
|
147
|
+
const groupFill2 = engine.block.createFill('color');
|
|
148
|
+
engine.block.setFill(groupShape2, groupFill2);
|
|
149
|
+
engine.block.setColor(groupFill2, 'fill/color/value', {
|
|
150
|
+
r: 0.9,
|
|
151
|
+
g: 0.3,
|
|
152
|
+
b: 0.5,
|
|
153
|
+
a: 1.0,
|
|
154
|
+
});
|
|
155
|
+
engine.block.appendChild(page, groupShape2);
|
|
156
|
+
|
|
157
|
+
// Group the blocks together
|
|
158
|
+
const exportGroup = engine.block.group([groupShape1, groupShape2]);
|
|
159
|
+
|
|
160
|
+
// Export the group (includes all children)
|
|
161
|
+
const groupBlob = await engine.block.export(exportGroup, {
|
|
162
|
+
mimeType: 'image/png',
|
|
163
|
+
});
|
|
164
|
+
const groupBuffer = Buffer.from(await groupBlob.arrayBuffer());
|
|
165
|
+
writeFileSync(`${outputDir}/group-export.png`, groupBuffer);
|
|
166
|
+
// eslint-disable-next-line no-console
|
|
167
|
+
console.log('✓ Exported grouped elements to output/group-export.png');
|
|
168
|
+
|
|
169
|
+
// Create shape block for resizing demonstration
|
|
170
|
+
const shapeBlock = engine.block.create('//ly.img.ubq/graphic');
|
|
171
|
+
const shape = engine.block.createShape('star');
|
|
172
|
+
engine.block.setShape(shapeBlock, shape);
|
|
173
|
+
engine.block.setWidth(shapeBlock, blockWidth);
|
|
174
|
+
engine.block.setHeight(shapeBlock, blockHeight);
|
|
175
|
+
|
|
176
|
+
// Add a color fill to the shape
|
|
177
|
+
const shapeFill = engine.block.createFill('color');
|
|
178
|
+
engine.block.setFill(shapeBlock, shapeFill);
|
|
179
|
+
engine.block.setColor(shapeFill, 'fill/color/value', {
|
|
180
|
+
r: 1.0,
|
|
181
|
+
g: 0.7,
|
|
182
|
+
b: 0.0,
|
|
183
|
+
a: 1.0,
|
|
184
|
+
});
|
|
185
|
+
engine.block.appendChild(page, shapeBlock);
|
|
186
|
+
|
|
187
|
+
// Export with specific target dimensions
|
|
188
|
+
const resizedBlob = await engine.block.export(shapeBlock, {
|
|
189
|
+
mimeType: 'image/png',
|
|
190
|
+
targetWidth: 400,
|
|
191
|
+
targetHeight: 400, // Aspect ratio is preserved
|
|
192
|
+
});
|
|
193
|
+
const resizedBuffer = Buffer.from(await resizedBlob.arrayBuffer());
|
|
194
|
+
writeFileSync(`${outputDir}/resized-export.png`, resizedBuffer);
|
|
195
|
+
// eslint-disable-next-line no-console
|
|
196
|
+
console.log('✓ Exported resized block to output/resized-export.png');
|
|
197
|
+
|
|
198
|
+
// Export the entire page
|
|
199
|
+
const pageBlob = await engine.block.export(page, {
|
|
200
|
+
mimeType: 'image/png',
|
|
201
|
+
pngCompressionLevel: 5,
|
|
202
|
+
});
|
|
203
|
+
const pageBuffer = Buffer.from(await pageBlob.arrayBuffer());
|
|
204
|
+
writeFileSync(`${outputDir}/page-export.png`, pageBuffer);
|
|
205
|
+
// eslint-disable-next-line no-console
|
|
206
|
+
console.log('✓ Exported current page to output/page-export.png');
|
|
207
|
+
|
|
208
|
+
// Export all pages individually (for multi-page documents)
|
|
209
|
+
const pages = engine.scene.getPages();
|
|
210
|
+
for (let i = 0; i < pages.length; i++) {
|
|
211
|
+
const pageBlob = await engine.block.export(pages[i], {
|
|
212
|
+
mimeType: 'image/png',
|
|
213
|
+
});
|
|
214
|
+
const pageBuffer = Buffer.from(await pageBlob.arrayBuffer());
|
|
215
|
+
writeFileSync(`${outputDir}/page-${i + 1}.png`, pageBuffer);
|
|
454
216
|
}
|
|
455
|
-
|
|
217
|
+
// eslint-disable-next-line no-console
|
|
218
|
+
console.log(`✓ Exported ${pages.length} page(s) individually`);
|
|
456
219
|
|
|
457
|
-
|
|
220
|
+
// Export as PDF to preserve vector information
|
|
221
|
+
const pdfBlob = await engine.block.export(page, {
|
|
222
|
+
mimeType: 'application/pdf',
|
|
223
|
+
});
|
|
224
|
+
const pdfBuffer = Buffer.from(await pdfBlob.arrayBuffer());
|
|
225
|
+
writeFileSync(`${outputDir}/export.pdf`, pdfBuffer);
|
|
226
|
+
// eslint-disable-next-line no-console
|
|
227
|
+
console.log('✓ Exported page as PDF to output/export.pdf');
|
|
228
|
+
|
|
229
|
+
// Get maximum export size
|
|
230
|
+
const maxExportSize = engine.editor.getMaxExportSize();
|
|
231
|
+
// eslint-disable-next-line no-console
|
|
232
|
+
console.log('Maximum export size:', maxExportSize, 'pixels');
|
|
233
|
+
|
|
234
|
+
// Get available memory
|
|
235
|
+
const availableMemory = engine.editor.getAvailableMemory();
|
|
236
|
+
// eslint-disable-next-line no-console
|
|
237
|
+
console.log('Available memory:', availableMemory, 'bytes');
|
|
238
|
+
|
|
239
|
+
// Position all blocks in grid layout for the first page
|
|
240
|
+
const blocks = [
|
|
241
|
+
imageBlock1,
|
|
242
|
+
imageBlock2,
|
|
243
|
+
exportGroup,
|
|
244
|
+
shapeBlock,
|
|
245
|
+
groupShape1,
|
|
246
|
+
groupShape2,
|
|
247
|
+
];
|
|
248
|
+
blocks.forEach((block, index) => {
|
|
249
|
+
if (index < 4) {
|
|
250
|
+
// Position first 4 blocks (group contains 2)
|
|
251
|
+
const pos = getPosition(index);
|
|
252
|
+
engine.block.setPositionX(block, pos.x);
|
|
253
|
+
engine.block.setPositionY(block, pos.y);
|
|
254
|
+
}
|
|
255
|
+
});
|
|
256
|
+
|
|
257
|
+
// Position grouped shapes relative to group
|
|
258
|
+
const groupPos = getPosition(2);
|
|
259
|
+
engine.block.setPositionX(exportGroup, groupPos.x);
|
|
260
|
+
engine.block.setPositionY(exportGroup, groupPos.y);
|
|
261
|
+
engine.block.setPositionX(groupShape1, 10);
|
|
262
|
+
engine.block.setPositionY(groupShape1, 10);
|
|
263
|
+
engine.block.setPositionX(groupShape2, 60);
|
|
264
|
+
engine.block.setPositionY(groupShape2, 60);
|
|
265
|
+
|
|
266
|
+
// Export the complete scene for reference
|
|
267
|
+
const completeBlob = await engine.block.export(page, {
|
|
268
|
+
mimeType: 'image/png',
|
|
269
|
+
});
|
|
270
|
+
const completeBuffer = Buffer.from(await completeBlob.arrayBuffer());
|
|
271
|
+
writeFileSync(`${outputDir}/partial-export-result.png`, completeBuffer);
|
|
272
|
+
|
|
273
|
+
// eslint-disable-next-line no-console
|
|
274
|
+
console.log(
|
|
275
|
+
'\n✓ Exported complete result to output/partial-export-result.png'
|
|
276
|
+
);
|
|
277
|
+
// eslint-disable-next-line no-console
|
|
278
|
+
console.log('✓ Partial export examples completed successfully');
|
|
279
|
+
} finally {
|
|
280
|
+
// Always dispose the engine to free resources
|
|
281
|
+
engine.dispose();
|
|
282
|
+
}
|
|
458
283
|
```
|
|
459
284
|
|
|
460
|
-
This guide covers
|
|
285
|
+
This guide covers exporting individual blocks, grouped elements, and pages in Node.js environments, saving outputs to the file system or cloud storage.
|
|
286
|
+
|
|
287
|
+
## Server-side vs Browser Differences
|
|
288
|
+
|
|
289
|
+
### Engine Initialization
|
|
290
|
+
|
|
291
|
+
Server-side uses the `@cesdk/node` package and `CreativeEngine.init()` instead of browser's `@cesdk/cesdk-js` and `CreativeEditorSDK.create()`. The Node.js engine runs headlessly without UI components.
|
|
292
|
+
|
|
293
|
+
```typescript highlight-initialize-engine
|
|
294
|
+
// Initialize CE.SDK engine in headless mode
|
|
295
|
+
const engine = await CreativeEngine.init({
|
|
296
|
+
baseURL: process.env.IMGLY_LOCAL_ASSETS_URL,
|
|
297
|
+
});
|
|
298
|
+
```
|
|
461
299
|
|
|
462
300
|
## Understanding Block Hierarchy and Export
|
|
463
301
|
|
|
@@ -467,228 +305,199 @@ CE.SDK organizes content in a tree structure: Scene → Pages → Groups → Ind
|
|
|
467
305
|
|
|
468
306
|
Exporting a page exports every element on that page. Exporting a group exports all blocks within that group. Exporting an individual block (like an image or text) exports only that specific element.
|
|
469
307
|
|
|
470
|
-
This hierarchical behavior
|
|
471
|
-
|
|
472
|
-
### Export Behavior
|
|
473
|
-
|
|
474
|
-
The export API applies several transformations to ensure consistent output. If the exported block itself is rotated, it will be exported without that rotation—the content appears upright in the output file. Any margin set on the block is included in the export bounds. Outside strokes are included for most block types, though pages handle strokes differently.
|
|
308
|
+
This hierarchical behavior lets you control export scope by choosing which level of the hierarchy to target. Export an image block for a single asset. Export a parent group for a complete layout section.
|
|
475
309
|
|
|
476
310
|
> **Note:** Only blocks that belong to the scene hierarchy can be exported. Orphaned blocks
|
|
477
311
|
> (created but not added to the page) cannot be exported until they're attached
|
|
478
312
|
> to the scene tree.
|
|
479
313
|
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
### Finding Blocks to Export
|
|
314
|
+
### Export Behavior
|
|
483
315
|
|
|
484
|
-
|
|
316
|
+
The export API applies several transformations to ensure consistent output. If the exported block itself is rotated, it will be exported without that rotation—the content appears upright in the output file. Any margin set on the block is included in the export bounds. Outside strokes are included for most block types.
|
|
485
317
|
|
|
486
|
-
|
|
318
|
+
## Exporting Individual Blocks
|
|
487
319
|
|
|
488
320
|
### Basic Block Export
|
|
489
321
|
|
|
490
|
-
|
|
322
|
+
Once we have a scene, we can export individual blocks. Find blocks using `findByType()`, then export them with specific format options.
|
|
491
323
|
|
|
492
324
|
```typescript highlight-export-individual-block
|
|
493
|
-
//
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
title: 'Exporting Block',
|
|
499
|
-
message: 'Processing export...',
|
|
500
|
-
progress: 'indeterminate'
|
|
501
|
-
});
|
|
325
|
+
// Create first image block
|
|
326
|
+
const imageBlock1 = await engine.block.addImage(imageUri, {
|
|
327
|
+
size: blockSize,
|
|
328
|
+
});
|
|
329
|
+
engine.block.appendChild(page, imageBlock1);
|
|
502
330
|
|
|
503
|
-
//
|
|
504
|
-
const
|
|
331
|
+
// Export the block as PNG
|
|
332
|
+
const individualBlob = await engine.block.export(imageBlock1, {
|
|
333
|
+
mimeType: 'image/png',
|
|
334
|
+
pngCompressionLevel: 5,
|
|
335
|
+
});
|
|
505
336
|
|
|
506
|
-
//
|
|
507
|
-
const
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
targetHeight: 600
|
|
512
|
-
});
|
|
337
|
+
// Save individual block export
|
|
338
|
+
const outputDir = './output';
|
|
339
|
+
if (!existsSync(outputDir)) {
|
|
340
|
+
mkdirSync(outputDir, { recursive: true });
|
|
341
|
+
}
|
|
513
342
|
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
)} KB`
|
|
519
|
-
);
|
|
520
|
-
|
|
521
|
-
// Close the export dialog
|
|
522
|
-
exportDialog.close();
|
|
343
|
+
const individualBuffer = Buffer.from(await individualBlob.arrayBuffer());
|
|
344
|
+
writeFileSync(`${outputDir}/individual-block.png`, individualBuffer);
|
|
345
|
+
// eslint-disable-next-line no-console
|
|
346
|
+
console.log('✓ Exported individual block to output/individual-block.png');
|
|
523
347
|
```
|
|
524
348
|
|
|
525
|
-
The `mimeType` determines the output format. CE.SDK supports PNG, JPEG, WEBP, and PDF
|
|
349
|
+
The `mimeType` determines the output format. CE.SDK supports PNG, JPEG, WEBP, and PDF. Each format has specific options—PNG uses `pngCompressionLevel` (0-9), JPEG uses `jpegQuality` (0-1), and WEBP uses `webpQuality` (0-1).
|
|
526
350
|
|
|
527
|
-
|
|
351
|
+
PNG supports transparency for UI elements and logos. JPEG suits photographs without transparency needs (replaces transparent areas with solid background). WEBP offers better compression for web delivery. PDF preserves vector data for print workflows. PNG compression (0-9) balances size and encoding speed. JPEG quality (0-1) controls artifacts and file size. WEBP quality (0-1) achieves smallest files with good visual fidelity.
|
|
528
352
|
|
|
529
|
-
|
|
353
|
+
## Exporting with Different Options
|
|
530
354
|
|
|
531
|
-
|
|
355
|
+
### Resizing Exports
|
|
532
356
|
|
|
533
|
-
|
|
357
|
+
Control output dimensions using `targetWidth` and `targetHeight`. The engine maintains the block's aspect ratio while fitting within your specified dimensions. Specify one dimension to auto-calculate the other while preserving aspect ratio. Specify both to fit content within bounds (one dimension may be smaller to maintain proportions). Useful for thumbnails, responsive sizes, or platform constraints.
|
|
534
358
|
|
|
535
|
-
|
|
359
|
+
### Checking Export Constraints
|
|
536
360
|
|
|
537
|
-
|
|
538
|
-
// eslint-disable-next-line no-console
|
|
539
|
-
console.log('🚀 Starting group export...');
|
|
361
|
+
Server environments may have memory limits or maximum texture size constraints. Query these limits before attempting large exports. `getMaxExportSize()` returns maximum dimension in pixels (exceeding causes errors). `getAvailableMemory()` returns available memory in bytes for estimating large export viability. Critical for serverless functions (AWS Lambda: 128 MB to 10 GB limits) to prevent termination.
|
|
540
362
|
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
message: 'Processing export...',
|
|
545
|
-
progress: 'indeterminate'
|
|
546
|
-
});
|
|
363
|
+
## Exporting Pages
|
|
364
|
+
|
|
365
|
+
### Single Page Export
|
|
547
366
|
|
|
548
|
-
|
|
549
|
-
const exportGroup = engine.block.group([groupShape1, groupShape2]);
|
|
367
|
+
Exporting a page captures all content on that page as a single output. The page dimensions determine the export size.
|
|
550
368
|
|
|
551
|
-
|
|
552
|
-
|
|
369
|
+
```typescript highlight-export-current-page
|
|
370
|
+
// Export the entire page
|
|
371
|
+
const pageBlob = await engine.block.export(page, {
|
|
553
372
|
mimeType: 'image/png',
|
|
554
|
-
pngCompressionLevel:
|
|
555
|
-
targetWidth: 800, // Limit export resolution for faster exports
|
|
556
|
-
targetHeight: 600
|
|
373
|
+
pngCompressionLevel: 5,
|
|
557
374
|
});
|
|
558
|
-
|
|
375
|
+
const pageBuffer = Buffer.from(await pageBlob.arrayBuffer());
|
|
376
|
+
writeFileSync(`${outputDir}/page-export.png`, pageBuffer);
|
|
559
377
|
// eslint-disable-next-line no-console
|
|
560
|
-
console.log(
|
|
561
|
-
`✅ Group exported - size: ${(groupBlob.size / 1024).toFixed(2)} KB`
|
|
562
|
-
);
|
|
563
|
-
|
|
564
|
-
// Close the export dialog
|
|
565
|
-
exportDialog.close();
|
|
378
|
+
console.log('✓ Exported current page to output/page-export.png');
|
|
566
379
|
```
|
|
567
380
|
|
|
568
|
-
|
|
381
|
+
Page exports include all child elements—graphics, text, shapes, and groups. The page background fill is also included. This is useful for generating preview images of multi-page documents or exporting individual pages from a template.
|
|
569
382
|
|
|
570
|
-
###
|
|
383
|
+
### Multi-page Document Export
|
|
571
384
|
|
|
572
|
-
|
|
385
|
+
For documents with multiple pages, export each page individually to create separate output files.
|
|
573
386
|
|
|
574
|
-
```typescript
|
|
575
|
-
//
|
|
576
|
-
const
|
|
577
|
-
|
|
578
|
-
|
|
579
|
-
|
|
580
|
-
} else if (selectedBlocks.length === 1) {
|
|
581
|
-
// Export single block directly
|
|
582
|
-
const blob = await engine.block.export(selectedBlocks[0], {
|
|
583
|
-
mimeType: 'image/png'
|
|
584
|
-
});
|
|
585
|
-
} else {
|
|
586
|
-
// Group and export multiple selected blocks
|
|
587
|
-
const group = engine.block.group(selectedBlocks);
|
|
588
|
-
const blob = await engine.block.export(group, {
|
|
589
|
-
mimeType: 'image/png'
|
|
387
|
+
```typescript highlight-export-multiple-pages
|
|
388
|
+
// Export all pages individually (for multi-page documents)
|
|
389
|
+
const pages = engine.scene.getPages();
|
|
390
|
+
for (let i = 0; i < pages.length; i++) {
|
|
391
|
+
const pageBlob = await engine.block.export(pages[i], {
|
|
392
|
+
mimeType: 'image/png',
|
|
590
393
|
});
|
|
394
|
+
const pageBuffer = Buffer.from(await pageBlob.arrayBuffer());
|
|
395
|
+
writeFileSync(`${outputDir}/page-${i + 1}.png`, pageBuffer);
|
|
591
396
|
}
|
|
397
|
+
// eslint-disable-next-line no-console
|
|
398
|
+
console.log(`✓ Exported ${pages.length} page(s) individually`);
|
|
592
399
|
```
|
|
593
400
|
|
|
594
|
-
|
|
401
|
+
The `getPages()` method returns all pages in scene order. Export each page with sequential numbering for easy identification. This pattern works for generating page previews, creating print-ready files for each page, or splitting multi-page documents into individual images.
|
|
595
402
|
|
|
596
|
-
|
|
403
|
+
For print workflows, consider exporting pages as PDF to preserve vector information and text quality. For web previews, PNG or WEBP provides good quality at manageable file sizes.
|
|
597
404
|
|
|
598
|
-
|
|
405
|
+
## PDF Exports
|
|
599
406
|
|
|
600
|
-
|
|
601
|
-
// Check export limits before exporting
|
|
602
|
-
const maxExportSize = engine.editor.getMaxExportSize();
|
|
603
|
-
const availableMemory = engine.editor.getAvailableMemory();
|
|
407
|
+
### Vector Format Output
|
|
604
408
|
|
|
605
|
-
|
|
606
|
-
console.log('🚀 Starting page export...');
|
|
607
|
-
// eslint-disable-next-line no-console
|
|
608
|
-
console.log(
|
|
609
|
-
`📊 Export limits - Max size: ${maxExportSize}px, Available memory: ${availableMemory} bytes`
|
|
610
|
-
);
|
|
611
|
-
|
|
612
|
-
// Show loading dialog before export
|
|
613
|
-
const exportDialog = cesdk.utils.showLoadingDialog({
|
|
614
|
-
title: 'Exporting Page',
|
|
615
|
-
message: 'Processing export...',
|
|
616
|
-
progress: 'indeterminate'
|
|
617
|
-
});
|
|
409
|
+
PDF exports preserve vector information, making them ideal for print workflows, scalable graphics, or archival purposes.
|
|
618
410
|
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
targetWidth: 800, // Limit export resolution for faster exports
|
|
624
|
-
targetHeight: 600
|
|
411
|
+
```typescript highlight-export-as-pdf
|
|
412
|
+
// Export as PDF to preserve vector information
|
|
413
|
+
const pdfBlob = await engine.block.export(page, {
|
|
414
|
+
mimeType: 'application/pdf',
|
|
625
415
|
});
|
|
626
|
-
|
|
416
|
+
const pdfBuffer = Buffer.from(await pdfBlob.arrayBuffer());
|
|
417
|
+
writeFileSync(`${outputDir}/export.pdf`, pdfBuffer);
|
|
627
418
|
// eslint-disable-next-line no-console
|
|
628
|
-
console.log(
|
|
629
|
-
|
|
630
|
-
// Close the export dialog
|
|
631
|
-
exportDialog.close();
|
|
419
|
+
console.log('✓ Exported page as PDF to output/export.pdf');
|
|
632
420
|
```
|
|
633
421
|
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
## Export Options and Configuration
|
|
422
|
+
PDF preserves vector paths, text selectability, and transparency. Produces smaller files than high-resolution PNG for vector-heavy content. Preferred for professional printing (scalability, text editability). Use PNG or WEBP for fixed-dimension web delivery.
|
|
637
423
|
|
|
638
|
-
|
|
424
|
+
## Practical Use Cases
|
|
639
425
|
|
|
640
|
-
|
|
426
|
+
### Asset Generation Pipeline
|
|
641
427
|
|
|
642
|
-
|
|
428
|
+
Generate social media assets from templates by loading a template, modifying text/images programmatically, and exporting different sizes.
|
|
643
429
|
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
For PNG, `pngCompressionLevel` ranges from 0 (no compression, fastest) to 9 (maximum compression, slowest). Higher compression takes longer but produces smaller files without affecting image quality—PNG is lossless.
|
|
430
|
+
```typescript
|
|
431
|
+
const engine = await CreativeEngine.init(config);
|
|
432
|
+
await engine.scene.loadFromURL('https://example.com/template.scene');
|
|
649
433
|
|
|
650
|
-
|
|
434
|
+
// Customize content
|
|
435
|
+
const textBlocks = engine.block.findByType('//ly.img.ubq/text');
|
|
436
|
+
engine.block.setString(textBlocks[0], 'text/text', 'Custom Headline');
|
|
651
437
|
|
|
652
|
-
|
|
438
|
+
// Export multiple sizes
|
|
439
|
+
const page = engine.block.findByType('page')[0];
|
|
653
440
|
|
|
654
|
-
|
|
441
|
+
const instagram = await engine.block.export(page, {
|
|
442
|
+
mimeType: 'image/png',
|
|
443
|
+
targetWidth: 1080,
|
|
444
|
+
targetHeight: 1080
|
|
445
|
+
});
|
|
655
446
|
|
|
656
|
-
|
|
447
|
+
const facebook = await engine.block.export(page, {
|
|
448
|
+
mimeType: 'image/png',
|
|
449
|
+
targetWidth: 1200,
|
|
450
|
+
targetHeight: 630
|
|
451
|
+
});
|
|
657
452
|
|
|
658
|
-
|
|
453
|
+
const twitter = await engine.block.export(page, {
|
|
454
|
+
mimeType: 'image/png',
|
|
455
|
+
targetWidth: 1200,
|
|
456
|
+
targetHeight: 675
|
|
457
|
+
});
|
|
458
|
+
```
|
|
659
459
|
|
|
660
|
-
|
|
460
|
+
This workflow is ideal for automated social media content generation, email campaign graphics, or personalized marketing materials.
|
|
661
461
|
|
|
662
|
-
|
|
462
|
+
### Thumbnail Generation
|
|
663
463
|
|
|
664
|
-
|
|
464
|
+
Generate thumbnails for preview grids by exporting pages or blocks with small target dimensions.
|
|
665
465
|
|
|
666
|
-
|
|
466
|
+
```typescript
|
|
467
|
+
const pages = engine.scene.getPages();
|
|
468
|
+
|
|
469
|
+
for (const page of pages) {
|
|
470
|
+
const thumbnail = await engine.block.export(page, {
|
|
471
|
+
mimeType: 'image/webp',
|
|
472
|
+
webpQuality: 0.8,
|
|
473
|
+
targetWidth: 300,
|
|
474
|
+
targetHeight: 300
|
|
475
|
+
});
|
|
667
476
|
|
|
668
|
-
|
|
477
|
+
// Save or upload thumbnail
|
|
478
|
+
}
|
|
479
|
+
```
|
|
669
480
|
|
|
670
|
-
|
|
481
|
+
Small dimensions and lower quality settings (0.7-0.8) produce small file sizes suitable for fast loading in preview galleries.
|
|
671
482
|
|
|
672
|
-
|
|
483
|
+
## API Reference
|
|
673
484
|
|
|
674
|
-
|
|
485
|
+
| Method | Description |
|
|
486
|
+
| --- | --- |
|
|
487
|
+
| `engine.block.export()` | Export a block with specified format and quality options |
|
|
488
|
+
| `engine.block.findByType()` | Find blocks by type identifier |
|
|
489
|
+
| `engine.block.group()` | Group multiple blocks into a single logical unit |
|
|
490
|
+
| `engine.scene.getPages()` | Get all pages in the current scene |
|
|
491
|
+
| `engine.editor.getMaxExportSize()` | Get maximum export dimension in pixels |
|
|
492
|
+
| `engine.editor.getAvailableMemory()` | Get available engine memory in bytes |
|
|
675
493
|
|
|
676
|
-
## API Reference
|
|
677
494
|
|
|
678
|
-
| Method | Description |
|
|
679
|
-
| ------------------------------------ | -------------------------------------------------------- |
|
|
680
|
-
| `engine.block.export()` | Export a block with specified format and quality options |
|
|
681
|
-
| `engine.block.findByType()` | Find blocks by type identifier |
|
|
682
|
-
| `engine.block.group()` | Group multiple blocks into a single logical unit |
|
|
683
|
-
| `engine.scene.getPages()` | Get all pages in the current scene |
|
|
684
|
-
| `engine.editor.getMaxExportSize()` | Get maximum export dimension in pixels |
|
|
685
|
-
| `engine.editor.getAvailableMemory()` | Get available engine memory in bytes |
|
|
686
495
|
|
|
687
496
|
---
|
|
688
497
|
|
|
689
498
|
## More Resources
|
|
690
499
|
|
|
691
|
-
- **[
|
|
500
|
+
- **[Node.js Documentation Index](https://img.ly/docs/cesdk/node.md)** - Browse all Node.js documentation
|
|
692
501
|
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
693
|
-
- **[Web Documentation](./
|
|
694
|
-
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|
|
502
|
+
- **[Web Documentation](./node.md)** - Interactive documentation with examples
|
|
503
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|