@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,259 +1,211 @@
|
|
|
1
|
-
> This is one page of the CE.SDK
|
|
1
|
+
> This is one page of the CE.SDK Node.js documentation. For a complete overview, see the [Node.js Documentation Index](https://img.ly/docs/cesdk/node.md). For all docs in one file, see [llms-full.txt](./llms-full.txt.md).
|
|
2
2
|
|
|
3
3
|
**Navigation:** [Guides](./guides.md) > [Create and Edit Videos](./create-video.md) > [Add Captions](./edit-video/add-captions.md)
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
Add synchronized captions to video projects using CE.SDK's caption system, with support for importing subtitle files, styling
|
|
7
|
+
Add synchronized captions to video projects using CE.SDK's caption system in headless mode, with support for importing subtitle files, styling programmatically, and saving scenes with captions.
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
> **Reading time:** 15 minutes
|
|
9
|
+
> **Reading time:** 10 minutes
|
|
12
10
|
>
|
|
13
11
|
> **Resources:**
|
|
14
12
|
>
|
|
15
13
|
> - [Download examples](https://github.com/imgly/cesdk-web-examples/archive/refs/tags/release-$UBQ_VERSION$.zip)
|
|
16
|
-
>
|
|
17
|
-
> - [
|
|
18
|
-
>
|
|
14
|
+
>
|
|
15
|
+
> - [View source on GitHub](https://github.com/imgly/cesdk-web-examples/tree/release-$UBQ_VERSION$/guides-create-video-add-captions-server-js)
|
|
16
|
+
>
|
|
17
|
+
> - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-create-video-add-captions-server-js)
|
|
19
18
|
|
|
20
19
|
Captions in CE.SDK follow a hierarchy: **Page → CaptionTrack → Caption blocks**. Each caption has text, timing (time offset and duration), and styling properties. Captions appear and disappear based on their timing, synchronized with video playback.
|
|
21
20
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
import
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
FiltersAssetSource,
|
|
33
|
-
PagePresetsAssetSource,
|
|
34
|
-
StickerAssetSource,
|
|
35
|
-
TextAssetSource,
|
|
36
|
-
TextComponentAssetSource,
|
|
37
|
-
TypefaceAssetSource,
|
|
38
|
-
UploadAssetSources,
|
|
39
|
-
VectorShapeAssetSource
|
|
40
|
-
} from '@cesdk/cesdk-js/plugins';
|
|
41
|
-
import { VideoEditorConfig } from './video-editor/plugin';
|
|
42
|
-
import packageJson from './package.json';
|
|
21
|
+
<NodejsVideoExportNotice {...props} />
|
|
22
|
+
|
|
23
|
+
```typescript file=@cesdk_web_examples/guides-create-video-add-captions-server-js/server-js.ts reference-only
|
|
24
|
+
import CreativeEngine from '@cesdk/node';
|
|
25
|
+
import { config } from 'dotenv';
|
|
26
|
+
import { mkdir, writeFile } from 'fs/promises';
|
|
27
|
+
import { join } from 'path';
|
|
28
|
+
|
|
29
|
+
// Load environment variables
|
|
30
|
+
config();
|
|
43
31
|
|
|
44
32
|
/**
|
|
45
|
-
* CE.SDK
|
|
33
|
+
* CE.SDK Server Guide: Add Captions
|
|
46
34
|
*
|
|
47
35
|
* Demonstrates adding synchronized captions to video projects:
|
|
48
36
|
* - Importing captions from SRT/VTT files
|
|
49
|
-
* - Creating
|
|
50
|
-
* -
|
|
51
|
-
* -
|
|
52
|
-
* - Adding animations to captions
|
|
37
|
+
* - Creating captions programmatically
|
|
38
|
+
* - Styling captions with typography and background
|
|
39
|
+
* - Saving scenes with captions for later rendering
|
|
53
40
|
*/
|
|
54
|
-
class Example implements EditorPlugin {
|
|
55
|
-
name = packageJson.name;
|
|
56
|
-
|
|
57
|
-
version = packageJson.version;
|
|
58
|
-
|
|
59
|
-
async initialize({ cesdk }: EditorPluginContext): Promise<void> {
|
|
60
|
-
if (!cesdk) {
|
|
61
|
-
throw new Error('CE.SDK instance is required for this plugin');
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
await cesdk.addPlugin(new VideoEditorConfig());
|
|
65
|
-
|
|
66
|
-
// Add asset source plugins
|
|
67
|
-
await cesdk.addPlugin(new BlurAssetSource());
|
|
68
|
-
await cesdk.addPlugin(new CaptionPresetsAssetSource());
|
|
69
|
-
await cesdk.addPlugin(new ColorPaletteAssetSource());
|
|
70
|
-
await cesdk.addPlugin(new CropPresetsAssetSource());
|
|
71
|
-
await cesdk.addPlugin(
|
|
72
|
-
new UploadAssetSources({
|
|
73
|
-
include: [
|
|
74
|
-
'ly.img.image.upload',
|
|
75
|
-
'ly.img.video.upload',
|
|
76
|
-
'ly.img.audio.upload'
|
|
77
|
-
]
|
|
78
|
-
})
|
|
79
|
-
);
|
|
80
|
-
await cesdk.addPlugin(
|
|
81
|
-
new DemoAssetSources({
|
|
82
|
-
include: [
|
|
83
|
-
'ly.img.templates.video.*',
|
|
84
|
-
'ly.img.image.*',
|
|
85
|
-
'ly.img.audio.*',
|
|
86
|
-
'ly.img.video.*'
|
|
87
|
-
]
|
|
88
|
-
})
|
|
89
|
-
);
|
|
90
|
-
await cesdk.addPlugin(new EffectsAssetSource());
|
|
91
|
-
await cesdk.addPlugin(new FiltersAssetSource());
|
|
92
|
-
await cesdk.addPlugin(
|
|
93
|
-
new PagePresetsAssetSource({
|
|
94
|
-
include: [
|
|
95
|
-
'ly.img.page.presets.instagram.*',
|
|
96
|
-
'ly.img.page.presets.facebook.*',
|
|
97
|
-
'ly.img.page.presets.x.*',
|
|
98
|
-
'ly.img.page.presets.linkedin.*',
|
|
99
|
-
'ly.img.page.presets.pinterest.*',
|
|
100
|
-
'ly.img.page.presets.tiktok.*',
|
|
101
|
-
'ly.img.page.presets.youtube.*',
|
|
102
|
-
'ly.img.page.presets.video.*'
|
|
103
|
-
]
|
|
104
|
-
})
|
|
105
|
-
);
|
|
106
|
-
await cesdk.addPlugin(new StickerAssetSource());
|
|
107
|
-
await cesdk.addPlugin(new TextAssetSource());
|
|
108
|
-
await cesdk.addPlugin(new TextComponentAssetSource());
|
|
109
|
-
await cesdk.addPlugin(new TypefaceAssetSource());
|
|
110
|
-
await cesdk.addPlugin(new VectorShapeAssetSource());
|
|
111
|
-
|
|
112
|
-
await cesdk.actions.run('scene.create', {
|
|
113
|
-
layout: 'DepthStack',
|
|
114
|
-
page: { width: 1920, height: 1080, unit: 'Pixel' }
|
|
115
|
-
});
|
|
116
41
|
|
|
117
|
-
|
|
118
|
-
|
|
42
|
+
// Initialize CE.SDK engine in headless mode
|
|
43
|
+
const engine = await CreativeEngine.init({
|
|
44
|
+
baseURL: process.env.IMGLY_LOCAL_ASSETS_URL
|
|
45
|
+
// license: process.env.CESDK_LICENSE, // Optional (trial mode available)
|
|
46
|
+
});
|
|
47
|
+
|
|
48
|
+
try {
|
|
49
|
+
// Create a scene with a page
|
|
50
|
+
const scene = engine.scene.create('DepthStack');
|
|
51
|
+
const page = engine.block.create('page');
|
|
52
|
+
engine.block.setWidth(page, 1920);
|
|
53
|
+
engine.block.setHeight(page, 1080);
|
|
54
|
+
engine.block.appendChild(scene, page);
|
|
55
|
+
|
|
56
|
+
// Set page duration to accommodate video content
|
|
57
|
+
engine.block.setDuration(page, 10);
|
|
58
|
+
|
|
59
|
+
// Add a video clip as the base content
|
|
60
|
+
const videoUrl =
|
|
61
|
+
'https://cdn.img.ly/assets/demo/v3/ly.img.video/videos/pexels-drone-footage-of-a-surfer-barrelling-a-wave-12715991.mp4';
|
|
62
|
+
|
|
63
|
+
const track = engine.block.create('track');
|
|
64
|
+
engine.block.appendChild(page, track);
|
|
65
|
+
|
|
66
|
+
const videoClip = await engine.block.addVideo(videoUrl, 1920, 1080, {
|
|
67
|
+
timeline: { duration: 10, timeOffset: 0 }
|
|
68
|
+
});
|
|
69
|
+
engine.block.appendChild(track, videoClip);
|
|
70
|
+
engine.block.fillParent(track);
|
|
71
|
+
|
|
72
|
+
// Import captions from SRT file
|
|
73
|
+
// createCaptionsFromURI parses SRT/VTT and creates caption blocks with timing
|
|
74
|
+
const captionSrtUrl = 'https://img.ly/static/examples/captions.srt';
|
|
75
|
+
const captionBlocks = await engine.block.createCaptionsFromURI(captionSrtUrl);
|
|
76
|
+
|
|
77
|
+
console.log(`Imported ${captionBlocks.length} captions from SRT file`);
|
|
78
|
+
|
|
79
|
+
// Create a caption track and add captions to it
|
|
80
|
+
// Caption tracks organize captions in the timeline
|
|
81
|
+
const captionTrack = engine.block.create('//ly.img.ubq/captionTrack');
|
|
82
|
+
engine.block.appendChild(page, captionTrack);
|
|
83
|
+
|
|
84
|
+
// Add each caption block to the track
|
|
85
|
+
for (const captionId of captionBlocks) {
|
|
86
|
+
engine.block.appendChild(captionTrack, captionId);
|
|
87
|
+
}
|
|
119
88
|
|
|
120
|
-
|
|
89
|
+
console.log(`Caption track created with ${captionBlocks.length} captions`);
|
|
121
90
|
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
91
|
+
// Read caption properties (text, timing)
|
|
92
|
+
if (captionBlocks.length > 0) {
|
|
93
|
+
const firstCaption = captionBlocks[0];
|
|
125
94
|
|
|
126
|
-
const
|
|
127
|
-
engine.block.
|
|
95
|
+
const text = engine.block.getString(firstCaption, 'caption/text');
|
|
96
|
+
const offset = engine.block.getTimeOffset(firstCaption);
|
|
97
|
+
const duration = engine.block.getDuration(firstCaption);
|
|
128
98
|
|
|
129
|
-
|
|
130
|
-
|
|
99
|
+
console.log(`First caption: "${text}"`);
|
|
100
|
+
console.log(` Time: ${offset}s - ${offset + duration}s`);
|
|
101
|
+
}
|
|
102
|
+
|
|
103
|
+
// Style all captions with consistent formatting
|
|
104
|
+
for (const captionId of captionBlocks) {
|
|
105
|
+
// Set font size
|
|
106
|
+
engine.block.setFloat(captionId, 'caption/fontSize', 48);
|
|
107
|
+
|
|
108
|
+
// Center alignment
|
|
109
|
+
engine.block.setEnum(captionId, 'caption/horizontalAlignment', 'Center');
|
|
110
|
+
engine.block.setEnum(captionId, 'caption/verticalAlignment', 'Bottom');
|
|
111
|
+
|
|
112
|
+
// Enable background for readability
|
|
113
|
+
engine.block.setBool(captionId, 'backgroundColor/enabled', true);
|
|
114
|
+
engine.block.setColor(captionId, 'backgroundColor/color', {
|
|
115
|
+
r: 0,
|
|
116
|
+
g: 0,
|
|
117
|
+
b: 0,
|
|
118
|
+
a: 0.7
|
|
131
119
|
});
|
|
132
|
-
engine.block.appendChild(track, videoClip);
|
|
133
|
-
engine.block.fillParent(track);
|
|
134
|
-
|
|
135
|
-
// Import captions from SRT file
|
|
136
|
-
// createCaptionsFromURI parses SRT/VTT and creates caption blocks with timing
|
|
137
|
-
const captionSrtUrl = 'https://img.ly/static/examples/captions.srt';
|
|
138
|
-
const captionBlocks =
|
|
139
|
-
await engine.block.createCaptionsFromURI(captionSrtUrl);
|
|
140
|
-
|
|
141
|
-
// eslint-disable-next-line no-console
|
|
142
|
-
console.log(`Imported ${captionBlocks.length} captions from SRT file`);
|
|
143
|
-
|
|
144
|
-
// Adjust caption timing to start at the beginning of the video
|
|
145
|
-
// The SRT file may have different timing, so we reset to start at 0
|
|
146
|
-
let currentOffset = 0;
|
|
147
|
-
for (const captionId of captionBlocks) {
|
|
148
|
-
const duration = engine.block.getDuration(captionId);
|
|
149
|
-
engine.block.setTimeOffset(captionId, currentOffset);
|
|
150
|
-
currentOffset += duration;
|
|
151
|
-
}
|
|
152
|
-
|
|
153
|
-
// Create a caption track and add captions to it
|
|
154
|
-
// Caption tracks organize captions in the timeline
|
|
155
|
-
const captionTrack = engine.block.create('//ly.img.ubq/captionTrack');
|
|
156
|
-
engine.block.appendChild(page, captionTrack);
|
|
157
|
-
|
|
158
|
-
// Add each caption block to the track
|
|
159
|
-
for (const captionId of captionBlocks) {
|
|
160
|
-
engine.block.appendChild(captionTrack, captionId);
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
// eslint-disable-next-line no-console
|
|
164
|
-
console.log(`Caption track created with ${captionBlocks.length} captions`);
|
|
165
|
-
|
|
166
|
-
// Apply a caption preset for consistent styling
|
|
167
|
-
// Caption presets provide pre-configured styles (fonts, colors, backgrounds)
|
|
168
|
-
const captionPresetsSourceId = 'ly.img.caption.presets';
|
|
169
|
-
const comicPresetId = '//ly.img.caption.presets/comic';
|
|
170
|
-
|
|
171
|
-
// Fetch the preset asset
|
|
172
|
-
const comicPreset = await engine.asset.fetchAsset(
|
|
173
|
-
captionPresetsSourceId,
|
|
174
|
-
comicPresetId
|
|
175
|
-
);
|
|
176
|
-
|
|
177
|
-
// Apply preset to the first caption (styling syncs across all captions)
|
|
178
|
-
if (comicPreset && captionBlocks.length > 0) {
|
|
179
|
-
await engine.asset.applyToBlock(
|
|
180
|
-
captionPresetsSourceId,
|
|
181
|
-
comicPreset,
|
|
182
|
-
captionBlocks[0]
|
|
183
|
-
);
|
|
184
|
-
// eslint-disable-next-line no-console
|
|
185
|
-
console.log('Applied comic preset to captions');
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
// Position captions at the bottom of the video frame
|
|
189
|
-
// Caption position and size sync across all captions, so we only set it once
|
|
190
|
-
if (captionBlocks.length > 0) {
|
|
191
|
-
const firstCaption = captionBlocks[0];
|
|
192
|
-
|
|
193
|
-
// Use percentage-based positioning for responsive layout
|
|
194
|
-
engine.block.setPositionXMode(firstCaption, 'Percent');
|
|
195
|
-
engine.block.setPositionYMode(firstCaption, 'Percent');
|
|
196
|
-
engine.block.setWidthMode(firstCaption, 'Percent');
|
|
197
|
-
engine.block.setHeightMode(firstCaption, 'Percent');
|
|
198
|
-
|
|
199
|
-
// Position at bottom center with padding
|
|
200
|
-
engine.block.setPositionX(firstCaption, 0.05); // 5% from left
|
|
201
|
-
engine.block.setPositionY(firstCaption, 0.8); // 80% from top (near bottom)
|
|
202
|
-
engine.block.setWidth(firstCaption, 0.9); // 90% width
|
|
203
|
-
engine.block.setHeight(firstCaption, 0.15); // 15% height
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
// Modify a specific caption's text and timing
|
|
207
|
-
if (captionBlocks.length > 0) {
|
|
208
|
-
const firstCaption = captionBlocks[0];
|
|
209
|
-
|
|
210
|
-
// Get current text
|
|
211
|
-
const currentText = engine.block.getString(firstCaption, 'caption/text');
|
|
212
|
-
// eslint-disable-next-line no-console
|
|
213
|
-
console.log('First caption text:', currentText);
|
|
214
|
-
|
|
215
|
-
// Get timing info
|
|
216
|
-
const offset = engine.block.getTimeOffset(firstCaption);
|
|
217
|
-
const duration = engine.block.getDuration(firstCaption);
|
|
218
|
-
// eslint-disable-next-line no-console
|
|
219
|
-
console.log(`First caption: offset=${offset}s, duration=${duration}s`);
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
// Add fade-in animation to the first caption
|
|
223
|
-
if (captionBlocks.length > 0) {
|
|
224
|
-
const firstCaption = captionBlocks[0];
|
|
225
|
-
|
|
226
|
-
// Create and apply entry animation
|
|
227
|
-
const fadeIn = engine.block.createAnimation('fade');
|
|
228
|
-
engine.block.setDuration(fadeIn, 0.3);
|
|
229
|
-
engine.block.setInAnimation(firstCaption, fadeIn);
|
|
230
|
-
|
|
231
|
-
// eslint-disable-next-line no-console
|
|
232
|
-
console.log('Added fade-in animation to first caption');
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
// Select the first caption to show it in the inspector
|
|
236
|
-
if (captionBlocks.length > 0) {
|
|
237
|
-
engine.block.select(captionBlocks[0]);
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
// Seek to show the first caption at 1 second
|
|
241
|
-
engine.block.setPlaybackTime(page, 1);
|
|
242
|
-
|
|
243
|
-
// Open the caption inspector panel
|
|
244
|
-
cesdk.ui.openPanel('//ly.img.panel/inspector/caption');
|
|
245
|
-
|
|
246
|
-
// eslint-disable-next-line no-console
|
|
247
|
-
console.log(
|
|
248
|
-
'Add Captions guide initialized. Captions imported and styled.'
|
|
249
|
-
);
|
|
250
120
|
}
|
|
251
|
-
}
|
|
252
121
|
|
|
253
|
-
|
|
122
|
+
console.log('Applied styling to all captions');
|
|
123
|
+
|
|
124
|
+
// Position captions at the bottom of the video frame
|
|
125
|
+
// Caption position and size sync across all captions, so we only set it once
|
|
126
|
+
if (captionBlocks.length > 0) {
|
|
127
|
+
const firstCaption = captionBlocks[0];
|
|
128
|
+
|
|
129
|
+
// Use percentage-based positioning for responsive layout
|
|
130
|
+
engine.block.setPositionXMode(firstCaption, 'Percent');
|
|
131
|
+
engine.block.setPositionYMode(firstCaption, 'Percent');
|
|
132
|
+
engine.block.setWidthMode(firstCaption, 'Percent');
|
|
133
|
+
engine.block.setHeightMode(firstCaption, 'Percent');
|
|
134
|
+
|
|
135
|
+
// Position at bottom center with padding
|
|
136
|
+
engine.block.setPositionX(firstCaption, 0.05); // 5% from left
|
|
137
|
+
engine.block.setPositionY(firstCaption, 0.8); // 80% from top (near bottom)
|
|
138
|
+
engine.block.setWidth(firstCaption, 0.9); // 90% width
|
|
139
|
+
engine.block.setHeight(firstCaption, 0.15); // 15% height
|
|
140
|
+
|
|
141
|
+
console.log('Positioned captions at bottom of frame');
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
// Create a caption programmatically (in addition to imported ones)
|
|
145
|
+
const manualCaption = engine.block.create('//ly.img.ubq/caption');
|
|
146
|
+
engine.block.appendChild(captionTrack, manualCaption);
|
|
147
|
+
|
|
148
|
+
// Set caption text
|
|
149
|
+
engine.block.setString(manualCaption, 'caption/text', 'Manual caption added');
|
|
150
|
+
|
|
151
|
+
// Set timing - appears at 8 seconds for 2 seconds
|
|
152
|
+
engine.block.setTimeOffset(manualCaption, 8);
|
|
153
|
+
engine.block.setDuration(manualCaption, 2);
|
|
154
|
+
|
|
155
|
+
// Apply same styling
|
|
156
|
+
engine.block.setFloat(manualCaption, 'caption/fontSize', 48);
|
|
157
|
+
engine.block.setEnum(manualCaption, 'caption/horizontalAlignment', 'Center');
|
|
158
|
+
engine.block.setEnum(manualCaption, 'caption/verticalAlignment', 'Bottom');
|
|
159
|
+
engine.block.setBool(manualCaption, 'backgroundColor/enabled', true);
|
|
160
|
+
engine.block.setColor(manualCaption, 'backgroundColor/color', {
|
|
161
|
+
r: 0,
|
|
162
|
+
g: 0,
|
|
163
|
+
b: 0,
|
|
164
|
+
a: 0.7
|
|
165
|
+
});
|
|
166
|
+
|
|
167
|
+
console.log('Created manual caption at 8s');
|
|
168
|
+
|
|
169
|
+
// Add entry animation to captions
|
|
170
|
+
for (const captionId of captionBlocks) {
|
|
171
|
+
const fadeIn = engine.block.createAnimation('fade');
|
|
172
|
+
engine.block.setDuration(fadeIn, 0.2);
|
|
173
|
+
engine.block.setInAnimation(captionId, fadeIn);
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
console.log('Added fade-in animations to captions');
|
|
177
|
+
|
|
178
|
+
// Save scene to file for later rendering
|
|
179
|
+
// The scene preserves all caption data, styling, and animations
|
|
180
|
+
const sceneString = await engine.scene.saveToString();
|
|
181
|
+
|
|
182
|
+
// Save to output directory
|
|
183
|
+
const outputDir = join(process.cwd(), 'output');
|
|
184
|
+
await mkdir(outputDir, { recursive: true });
|
|
185
|
+
|
|
186
|
+
const outputPath = join(outputDir, 'video-with-captions.scene');
|
|
187
|
+
await writeFile(outputPath, sceneString);
|
|
188
|
+
|
|
189
|
+
console.log(`Scene saved: ${outputPath}`);
|
|
190
|
+
|
|
191
|
+
console.log('');
|
|
192
|
+
console.log('Add Captions guide complete.');
|
|
193
|
+
console.log('Scene created with:');
|
|
194
|
+
console.log(` - ${captionBlocks.length} imported captions`);
|
|
195
|
+
console.log(' - 1 manually created caption');
|
|
196
|
+
console.log(' - Consistent styling across all captions');
|
|
197
|
+
console.log(' - Fade-in animations');
|
|
198
|
+
console.log('');
|
|
199
|
+
console.log(
|
|
200
|
+
'Use CE.SDK Renderer to export this scene as a video with burned-in captions.'
|
|
201
|
+
);
|
|
202
|
+
} finally {
|
|
203
|
+
// Always dispose of the engine to free resources
|
|
204
|
+
engine.dispose();
|
|
205
|
+
}
|
|
254
206
|
```
|
|
255
207
|
|
|
256
|
-
This guide covers how to import captions from SRT/VTT files, style them using
|
|
208
|
+
This guide covers how to import captions from SRT/VTT files, style them using custom properties, create captions programmatically, and save scenes with captions in a headless Node.js environment.
|
|
257
209
|
|
|
258
210
|
## Understanding Caption Structure
|
|
259
211
|
|
|
@@ -267,6 +219,38 @@ When you import captions from a subtitle file, CE.SDK automatically creates the
|
|
|
267
219
|
|
|
268
220
|
Each caption has two timing properties: **time offset** (when the caption appears) and **duration** (how long it stays visible). These values are in seconds and synchronize with the video playback. A caption with a time offset of 2.0 and duration of 3.0 appears at the 2-second mark and disappears at the 5-second mark.
|
|
269
221
|
|
|
222
|
+
## Initialize CE.SDK
|
|
223
|
+
|
|
224
|
+
For headless video processing with captions, we initialize CE.SDK's Node.js engine. This provides full API access without browser dependencies, ideal for server-side automation and batch processing.
|
|
225
|
+
|
|
226
|
+
```typescript highlight-setup
|
|
227
|
+
// Initialize CE.SDK engine in headless mode
|
|
228
|
+
const engine = await CreativeEngine.init({
|
|
229
|
+
baseURL: process.env.IMGLY_LOCAL_ASSETS_URL
|
|
230
|
+
// license: process.env.CESDK_LICENSE, // Optional (trial mode available)
|
|
231
|
+
});
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
The headless engine gives you complete control over caption operations, perfect for automated workflows, background processing, and server-side video preparation.
|
|
235
|
+
|
|
236
|
+
## Creating the Scene
|
|
237
|
+
|
|
238
|
+
Create a scene with page configuration. The `page` option creates a page with the specified dimensions.
|
|
239
|
+
|
|
240
|
+
```typescript highlight-create-scene
|
|
241
|
+
// Create a scene with a page
|
|
242
|
+
const scene = engine.scene.create('DepthStack');
|
|
243
|
+
const page = engine.block.create('page');
|
|
244
|
+
engine.block.setWidth(page, 1920);
|
|
245
|
+
engine.block.setHeight(page, 1080);
|
|
246
|
+
engine.block.appendChild(scene, page);
|
|
247
|
+
|
|
248
|
+
// Set page duration to accommodate video content
|
|
249
|
+
engine.block.setDuration(page, 10);
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
Set the page duration to accommodate your video content. The dimensions define the output video resolution.
|
|
253
|
+
|
|
270
254
|
## Importing Captions from Subtitle Files
|
|
271
255
|
|
|
272
256
|
### Using createCaptionsFromURI
|
|
@@ -274,64 +258,55 @@ Each caption has two timing properties: **time offset** (when the caption appear
|
|
|
274
258
|
The fastest way to add captions is importing from an SRT or VTT subtitle file. CE.SDK parses the file and creates caption blocks with timing already configured.
|
|
275
259
|
|
|
276
260
|
```typescript highlight-import-captions
|
|
277
|
-
// Import captions from SRT file
|
|
278
|
-
// createCaptionsFromURI parses SRT/VTT and creates caption blocks with timing
|
|
279
|
-
const captionSrtUrl = 'https://img.ly/static/examples/captions.srt';
|
|
280
|
-
const captionBlocks = await engine.block.createCaptionsFromURI(captionSrtUrl);
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
console.log(`Imported ${captionBlocks.length} captions from SRT file`);
|
|
284
|
-
|
|
285
|
-
// Adjust caption timing to start at the beginning of the video
|
|
286
|
-
// The SRT file may have different timing, so we reset to start at 0
|
|
287
|
-
let currentOffset = 0;
|
|
288
|
-
for (const captionId of captionBlocks) {
|
|
289
|
-
const duration = engine.block.getDuration(captionId);
|
|
290
|
-
engine.block.setTimeOffset(captionId, currentOffset);
|
|
291
|
-
currentOffset += duration;
|
|
292
|
-
}
|
|
261
|
+
// Import captions from SRT file
|
|
262
|
+
// createCaptionsFromURI parses SRT/VTT and creates caption blocks with timing
|
|
263
|
+
const captionSrtUrl = 'https://img.ly/static/examples/captions.srt';
|
|
264
|
+
const captionBlocks = await engine.block.createCaptionsFromURI(captionSrtUrl);
|
|
265
|
+
|
|
266
|
+
console.log(`Imported ${captionBlocks.length} captions from SRT file`);
|
|
293
267
|
```
|
|
294
268
|
|
|
295
269
|
The `createCaptionsFromURI` method downloads the subtitle file, parses the timing and text, and creates a caption track with all captions positioned correctly. It returns an array of caption block IDs for the imported captions.
|
|
296
270
|
|
|
297
271
|
### Creating the Caption Track
|
|
298
272
|
|
|
299
|
-
After importing captions, create a caption track to organize them in the composition.
|
|
273
|
+
After importing captions, create a caption track to organize them in the composition.
|
|
300
274
|
|
|
301
275
|
```typescript highlight-create-caption-track
|
|
302
|
-
// Create a caption track and add captions to it
|
|
303
|
-
// Caption tracks organize captions in the timeline
|
|
304
|
-
const captionTrack = engine.block.create('//ly.img.ubq/captionTrack');
|
|
305
|
-
engine.block.appendChild(page, captionTrack);
|
|
306
|
-
|
|
307
|
-
// Add each caption block to the track
|
|
308
|
-
for (const captionId of captionBlocks) {
|
|
309
|
-
|
|
310
|
-
}
|
|
276
|
+
// Create a caption track and add captions to it
|
|
277
|
+
// Caption tracks organize captions in the timeline
|
|
278
|
+
const captionTrack = engine.block.create('//ly.img.ubq/captionTrack');
|
|
279
|
+
engine.block.appendChild(page, captionTrack);
|
|
280
|
+
|
|
281
|
+
// Add each caption block to the track
|
|
282
|
+
for (const captionId of captionBlocks) {
|
|
283
|
+
engine.block.appendChild(captionTrack, captionId);
|
|
284
|
+
}
|
|
311
285
|
|
|
312
|
-
|
|
313
|
-
console.log(`Caption track created with ${captionBlocks.length} captions`);
|
|
286
|
+
console.log(`Caption track created with ${captionBlocks.length} captions`);
|
|
314
287
|
```
|
|
315
288
|
|
|
316
289
|
Create a caption track with `engine.block.create('//ly.img.ubq/captionTrack')` and append it to the page. Then add each caption block to the track using `appendChild`.
|
|
317
290
|
|
|
318
|
-
##
|
|
319
|
-
|
|
320
|
-
### Caption Panel
|
|
321
|
-
|
|
322
|
-
CE.SDK provides a caption panel in the inspector for visual caption management. When you select a caption, the panel shows timing controls, text editing, and styling options. Users can drag caption edges in the timeline to adjust timing or double-click to edit text.
|
|
323
|
-
|
|
324
|
-
### Importing via UI
|
|
291
|
+
## Reading Caption Properties
|
|
325
292
|
|
|
326
|
-
|
|
293
|
+
Retrieve caption properties for processing, validation, or logging.
|
|
327
294
|
|
|
328
|
-
|
|
295
|
+
```typescript highlight-read-caption-properties
|
|
296
|
+
// Read caption properties (text, timing)
|
|
297
|
+
if (captionBlocks.length > 0) {
|
|
298
|
+
const firstCaption = captionBlocks[0];
|
|
329
299
|
|
|
330
|
-
|
|
300
|
+
const text = engine.block.getString(firstCaption, 'caption/text');
|
|
301
|
+
const offset = engine.block.getTimeOffset(firstCaption);
|
|
302
|
+
const duration = engine.block.getDuration(firstCaption);
|
|
331
303
|
|
|
332
|
-
|
|
304
|
+
console.log(`First caption: "${text}"`);
|
|
305
|
+
console.log(` Time: ${offset}s - ${offset + duration}s`);
|
|
306
|
+
}
|
|
307
|
+
```
|
|
333
308
|
|
|
334
|
-
|
|
309
|
+
Use `getString` for text, `getTimeOffset` for start time, and `getDuration` for display length. These values are useful for validation or synchronization workflows.
|
|
335
310
|
|
|
336
311
|
## Creating Captions Programmatically
|
|
337
312
|
|
|
@@ -348,77 +323,65 @@ engine.block.appendChild(page, captionTrack);
|
|
|
348
323
|
|
|
349
324
|
Create individual captions with text and timing.
|
|
350
325
|
|
|
351
|
-
```typescript
|
|
352
|
-
|
|
353
|
-
engine.block.
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
engine.block.
|
|
326
|
+
```typescript highlight-create-caption-manually
|
|
327
|
+
// Create a caption programmatically (in addition to imported ones)
|
|
328
|
+
const manualCaption = engine.block.create('//ly.img.ubq/caption');
|
|
329
|
+
engine.block.appendChild(captionTrack, manualCaption);
|
|
330
|
+
|
|
331
|
+
// Set caption text
|
|
332
|
+
engine.block.setString(manualCaption, 'caption/text', 'Manual caption added');
|
|
333
|
+
|
|
334
|
+
// Set timing - appears at 8 seconds for 2 seconds
|
|
335
|
+
engine.block.setTimeOffset(manualCaption, 8);
|
|
336
|
+
engine.block.setDuration(manualCaption, 2);
|
|
337
|
+
|
|
338
|
+
// Apply same styling
|
|
339
|
+
engine.block.setFloat(manualCaption, 'caption/fontSize', 48);
|
|
340
|
+
engine.block.setEnum(manualCaption, 'caption/horizontalAlignment', 'Center');
|
|
341
|
+
engine.block.setEnum(manualCaption, 'caption/verticalAlignment', 'Bottom');
|
|
342
|
+
engine.block.setBool(manualCaption, 'backgroundColor/enabled', true);
|
|
343
|
+
engine.block.setColor(manualCaption, 'backgroundColor/color', {
|
|
344
|
+
r: 0,
|
|
345
|
+
g: 0,
|
|
346
|
+
b: 0,
|
|
347
|
+
a: 0.7
|
|
348
|
+
});
|
|
349
|
+
|
|
350
|
+
console.log('Created manual caption at 8s');
|
|
361
351
|
```
|
|
362
352
|
|
|
363
353
|
Set the caption text using `setString` with the `caption/text` property. Position the caption in time using `setTimeOffset` (when it appears) and `setDuration` (how long it shows).
|
|
364
354
|
|
|
365
355
|
## Styling Captions
|
|
366
356
|
|
|
367
|
-
###
|
|
357
|
+
### Typography
|
|
368
358
|
|
|
369
|
-
|
|
359
|
+
Control caption appearance with typography properties.
|
|
370
360
|
|
|
371
|
-
```typescript highlight-
|
|
372
|
-
//
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
361
|
+
```typescript highlight-style-captions
|
|
362
|
+
// Style all captions with consistent formatting
|
|
363
|
+
for (const captionId of captionBlocks) {
|
|
364
|
+
// Set font size
|
|
365
|
+
engine.block.setFloat(captionId, 'caption/fontSize', 48);
|
|
376
366
|
|
|
377
|
-
//
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
comicPresetId
|
|
381
|
-
);
|
|
367
|
+
// Center alignment
|
|
368
|
+
engine.block.setEnum(captionId, 'caption/horizontalAlignment', 'Center');
|
|
369
|
+
engine.block.setEnum(captionId, 'caption/verticalAlignment', 'Bottom');
|
|
382
370
|
|
|
383
|
-
//
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
}
|
|
393
|
-
```
|
|
394
|
-
|
|
395
|
-
Fetch a preset using `engine.asset.fetchAsset` and apply it with `engine.asset.applyToBlock`. Caption styling automatically syncs across all captions, so applying a preset to one caption styles them all.
|
|
396
|
-
|
|
397
|
-
### Positioning Captions
|
|
398
|
-
|
|
399
|
-
Position captions at the bottom of the video frame using percentage-based positioning for responsive layout.
|
|
400
|
-
|
|
401
|
-
```typescript highlight-position-captions
|
|
402
|
-
// Position captions at the bottom of the video frame
|
|
403
|
-
// Caption position and size sync across all captions, so we only set it once
|
|
404
|
-
if (captionBlocks.length > 0) {
|
|
405
|
-
const firstCaption = captionBlocks[0];
|
|
406
|
-
|
|
407
|
-
// Use percentage-based positioning for responsive layout
|
|
408
|
-
engine.block.setPositionXMode(firstCaption, 'Percent');
|
|
409
|
-
engine.block.setPositionYMode(firstCaption, 'Percent');
|
|
410
|
-
engine.block.setWidthMode(firstCaption, 'Percent');
|
|
411
|
-
engine.block.setHeightMode(firstCaption, 'Percent');
|
|
371
|
+
// Enable background for readability
|
|
372
|
+
engine.block.setBool(captionId, 'backgroundColor/enabled', true);
|
|
373
|
+
engine.block.setColor(captionId, 'backgroundColor/color', {
|
|
374
|
+
r: 0,
|
|
375
|
+
g: 0,
|
|
376
|
+
b: 0,
|
|
377
|
+
a: 0.7
|
|
378
|
+
});
|
|
379
|
+
}
|
|
412
380
|
|
|
413
|
-
|
|
414
|
-
engine.block.setPositionX(firstCaption, 0.05); // 5% from left
|
|
415
|
-
engine.block.setPositionY(firstCaption, 0.8); // 80% from top (near bottom)
|
|
416
|
-
engine.block.setWidth(firstCaption, 0.9); // 90% width
|
|
417
|
-
engine.block.setHeight(firstCaption, 0.15); // 15% height
|
|
418
|
-
}
|
|
381
|
+
console.log('Applied styling to all captions');
|
|
419
382
|
```
|
|
420
383
|
|
|
421
|
-
Use
|
|
384
|
+
Use `setFloat` for numeric values like `caption/fontSize`, `caption/letterSpacing`, and `caption/lineHeight`. Set alignment with `setEnum` for `caption/horizontalAlignment` (Left, Center, Right) and `caption/verticalAlignment` (Top, Center, Bottom).
|
|
422
385
|
|
|
423
386
|
### Background
|
|
424
387
|
|
|
@@ -436,34 +399,6 @@ engine.block.setFloat(captionId, 'caption/maxAutomaticFontSize', 72);
|
|
|
436
399
|
|
|
437
400
|
This prevents text from overflowing while maintaining readability.
|
|
438
401
|
|
|
439
|
-
## Applying Presets Programmatically
|
|
440
|
-
|
|
441
|
-
### Finding Available Presets
|
|
442
|
-
|
|
443
|
-
Query available caption presets from the asset library.
|
|
444
|
-
|
|
445
|
-
```typescript
|
|
446
|
-
const presetsResult = await engine.asset.findAssets('ly.img.caption.presets', {
|
|
447
|
-
page: 0,
|
|
448
|
-
perPage: 100
|
|
449
|
-
});
|
|
450
|
-
|
|
451
|
-
const presets = presetsResult.assets;
|
|
452
|
-
```
|
|
453
|
-
|
|
454
|
-
The `findAssets` method returns preset metadata including IDs and preview thumbnails.
|
|
455
|
-
|
|
456
|
-
### Applying a Preset
|
|
457
|
-
|
|
458
|
-
Apply a preset to a caption using `applyToBlock`.
|
|
459
|
-
|
|
460
|
-
```typescript
|
|
461
|
-
const preset = presets[0];
|
|
462
|
-
await engine.asset.applyToBlock('ly.img.caption.presets', preset, captionId);
|
|
463
|
-
```
|
|
464
|
-
|
|
465
|
-
The preset applies all styling properties at once—font, colors, background, and any animations defined in the preset.
|
|
466
|
-
|
|
467
402
|
## Caption Animations
|
|
468
403
|
|
|
469
404
|
### Adding Entry Animations
|
|
@@ -471,18 +406,14 @@ The preset applies all styling properties at once—font, colors, background, an
|
|
|
471
406
|
Make captions more engaging by adding entry animations.
|
|
472
407
|
|
|
473
408
|
```typescript highlight-add-animation
|
|
474
|
-
// Add
|
|
475
|
-
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
engine.block.setDuration(fadeIn, 0.3);
|
|
481
|
-
engine.block.setInAnimation(firstCaption, fadeIn);
|
|
409
|
+
// Add entry animation to captions
|
|
410
|
+
for (const captionId of captionBlocks) {
|
|
411
|
+
const fadeIn = engine.block.createAnimation('fade');
|
|
412
|
+
engine.block.setDuration(fadeIn, 0.2);
|
|
413
|
+
engine.block.setInAnimation(captionId, fadeIn);
|
|
414
|
+
}
|
|
482
415
|
|
|
483
|
-
|
|
484
|
-
console.log('Added fade-in animation to first caption');
|
|
485
|
-
}
|
|
416
|
+
console.log('Added fade-in animations to captions');
|
|
486
417
|
```
|
|
487
418
|
|
|
488
419
|
Create an animation using `createAnimation` with types like 'fade', 'slide', or 'scale'. Set the animation duration and apply it with `setInAnimation`.
|
|
@@ -498,92 +429,84 @@ CE.SDK supports several animation types for captions:
|
|
|
498
429
|
|
|
499
430
|
Set loop animations with `setLoopAnimation` for continuous effects, or exit animations with `setOutAnimation` for departure transitions.
|
|
500
431
|
|
|
501
|
-
##
|
|
432
|
+
## Saving the Scene
|
|
502
433
|
|
|
503
|
-
|
|
434
|
+
After adding captions, save the scene to a `.scene` file for later use or rendering with the CE.SDK Renderer service.
|
|
504
435
|
|
|
505
|
-
|
|
436
|
+
```typescript highlight-save-scene
|
|
437
|
+
// Save scene to file for later rendering
|
|
438
|
+
// The scene preserves all caption data, styling, and animations
|
|
439
|
+
const sceneString = await engine.scene.saveToString();
|
|
506
440
|
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
const firstCaption = captionBlocks[0];
|
|
441
|
+
// Save to output directory
|
|
442
|
+
const outputDir = join(process.cwd(), 'output');
|
|
443
|
+
await mkdir(outputDir, { recursive: true });
|
|
511
444
|
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
// eslint-disable-next-line no-console
|
|
515
|
-
console.log('First caption text:', currentText);
|
|
445
|
+
const outputPath = join(outputDir, 'video-with-captions.scene');
|
|
446
|
+
await writeFile(outputPath, sceneString);
|
|
516
447
|
|
|
517
|
-
|
|
518
|
-
const offset = engine.block.getTimeOffset(firstCaption);
|
|
519
|
-
const duration = engine.block.getDuration(firstCaption);
|
|
520
|
-
// eslint-disable-next-line no-console
|
|
521
|
-
console.log(`First caption: offset=${offset}s, duration=${duration}s`);
|
|
522
|
-
}
|
|
448
|
+
console.log(`Scene saved: ${outputPath}`);
|
|
523
449
|
```
|
|
524
450
|
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
## Exporting Videos with Captions
|
|
451
|
+
The scene file preserves all caption data including text, timing, styling, and animations. You can load this scene later for further editing or send it to the CE.SDK Renderer for video export.
|
|
528
452
|
|
|
529
|
-
|
|
453
|
+
## Resource Cleanup
|
|
530
454
|
|
|
531
|
-
|
|
455
|
+
Always dispose of the engine when processing is complete to free resources.
|
|
532
456
|
|
|
533
|
-
```typescript
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
});
|
|
457
|
+
```typescript highlight-cleanup
|
|
458
|
+
// Always dispose of the engine to free resources
|
|
459
|
+
engine.dispose();
|
|
537
460
|
```
|
|
538
461
|
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
> **Note:** For accessibility, consider also providing separate subtitle files (SRT/VTT) alongside burned-in captions. This allows viewers to customize caption appearance in their video player.
|
|
462
|
+
Use a try/finally pattern to ensure cleanup happens even if an error occurs during processing.
|
|
542
463
|
|
|
543
464
|
## Troubleshooting
|
|
544
465
|
|
|
545
|
-
| Issue
|
|
546
|
-
|
|
|
466
|
+
| Issue | Cause | Solution |
|
|
467
|
+
| --- | --- | --- |
|
|
547
468
|
| Captions not visible | Not in caption track hierarchy | Check `getParent()`: page → captionTrack → caption |
|
|
548
|
-
| Wrong timing
|
|
549
|
-
| Import fails
|
|
550
|
-
| Styling not applying | Property path wrong
|
|
469
|
+
| Wrong timing | Time offset/duration incorrect | Verify `getTimeOffset()` and `getDuration()` |
|
|
470
|
+
| Import fails | Unsupported format | Use valid SRT or VTT file |
|
|
471
|
+
| Styling not applying | Property path wrong | Use `caption/` prefix for caption properties |
|
|
551
472
|
|
|
552
473
|
### Captions Not Appearing
|
|
553
474
|
|
|
554
|
-
If captions don't
|
|
475
|
+
If captions don't appear in the exported video, verify the caption hierarchy. Each caption must be a child of a caption track, which must be a child of the page. Use `getParent()` to trace the hierarchy.
|
|
555
476
|
|
|
556
|
-
Also check that
|
|
477
|
+
Also check that caption timing falls within the page duration. Captions outside the page's time range won't appear in the export.
|
|
557
478
|
|
|
558
479
|
### Import Errors
|
|
559
480
|
|
|
560
|
-
If `createCaptionsFromURI` fails, verify the URL is accessible and returns valid SRT or VTT content. Common issues include
|
|
481
|
+
If `createCaptionsFromURI` fails, verify the URL is accessible from your server and returns valid SRT or VTT content. Common issues include network restrictions and malformed subtitle files. Test the URL with curl to confirm accessibility.
|
|
561
482
|
|
|
562
483
|
## API Reference
|
|
563
484
|
|
|
564
|
-
| Method
|
|
565
|
-
|
|
|
566
|
-
| `engine.
|
|
567
|
-
| `engine.block.
|
|
568
|
-
| `engine.block.create('//ly.img.ubq/
|
|
569
|
-
| `engine.block.
|
|
570
|
-
| `engine.block.
|
|
571
|
-
| `engine.block.
|
|
572
|
-
| `engine.block.
|
|
573
|
-
| `engine.block.
|
|
574
|
-
| `engine.block.
|
|
575
|
-
| `engine.block.
|
|
576
|
-
| `engine.block.
|
|
577
|
-
| `engine.block.
|
|
578
|
-
| `engine.block.
|
|
579
|
-
| `engine.
|
|
580
|
-
| `engine.
|
|
485
|
+
| Method | Purpose |
|
|
486
|
+
| --- | --- |
|
|
487
|
+
| `engine.scene.create()` | Create a scene |
|
|
488
|
+
| `engine.block.createCaptionsFromURI(uri)` | Import captions from SRT/VTT file |
|
|
489
|
+
| `engine.block.create('//ly.img.ubq/captionTrack')` | Create caption track container |
|
|
490
|
+
| `engine.block.create('//ly.img.ubq/caption')` | Create caption block |
|
|
491
|
+
| `engine.block.setString(id, property, value)` | Set caption text |
|
|
492
|
+
| `engine.block.setTimeOffset(id, offset)` | Set caption start time |
|
|
493
|
+
| `engine.block.setDuration(id, duration)` | Set caption display duration |
|
|
494
|
+
| `engine.block.setFloat(id, property, value)` | Set font size, spacing |
|
|
495
|
+
| `engine.block.setEnum(id, property, value)` | Set alignment |
|
|
496
|
+
| `engine.block.setBool(id, property, value)` | Enable background |
|
|
497
|
+
| `engine.block.setColor(id, property, value)` | Set colors |
|
|
498
|
+
| `engine.block.createAnimation(type)` | Create animation |
|
|
499
|
+
| `engine.block.setInAnimation(id, animation)` | Set entry animation |
|
|
500
|
+
| `engine.scene.saveToString()` | Save scene to string |
|
|
501
|
+
| `engine.dispose()` | Clean up engine resources |
|
|
502
|
+
|
|
503
|
+
|
|
581
504
|
|
|
582
505
|
---
|
|
583
506
|
|
|
584
507
|
## More Resources
|
|
585
508
|
|
|
586
|
-
- **[
|
|
509
|
+
- **[Node.js Documentation Index](https://img.ly/docs/cesdk/node.md)** - Browse all Node.js documentation
|
|
587
510
|
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
588
|
-
- **[Web Documentation](./
|
|
589
|
-
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|
|
511
|
+
- **[Web Documentation](./node.md)** - Interactive documentation with examples
|
|
512
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|