@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,4 +1,4 @@
|
|
|
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 Watermark](./edit-video/add-watermark.md)
|
|
4
4
|
|
|
@@ -6,254 +6,264 @@
|
|
|
6
6
|
|
|
7
7
|
Add text and image watermarks to video content for copyright protection, branding, and content attribution using CE.SDK's time-aware block system.
|
|
8
8
|
|
|
9
|
-

|
|
10
|
-
|
|
11
9
|
> **Reading time:** 10 minutes
|
|
12
10
|
>
|
|
13
11
|
> **Resources:**
|
|
14
12
|
>
|
|
15
13
|
> - [Download examples](https://github.com/imgly/cesdk-web-examples/archive/refs/tags/release-$UBQ_VERSION$.zip)
|
|
16
|
-
>
|
|
17
|
-
> - [
|
|
18
|
-
>
|
|
14
|
+
>
|
|
15
|
+
> - [View source on GitHub](https://github.com/imgly/cesdk-web-examples/tree/release-$UBQ_VERSION$/guides-create-video-add-watermark-server-js)
|
|
16
|
+
>
|
|
17
|
+
> - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-create-video-add-watermark-server-js)
|
|
19
18
|
|
|
20
19
|
Video watermarks in CE.SDK are design blocks positioned over video content. **Text watermarks** display copyright notices, URLs, or branding text, while **image watermarks** show logos or graphics. Both watermark types need their time-based properties configured to remain visible throughout video playback. The key difference from static image watermarking is setting the watermark's `duration` to match the video duration.
|
|
21
20
|
|
|
22
|
-
```typescript file=@cesdk_web_examples/guides-create-video-add-watermark-
|
|
23
|
-
import
|
|
21
|
+
```typescript file=@cesdk_web_examples/guides-create-video-add-watermark-server-js/server-js.ts reference-only
|
|
22
|
+
import CreativeEngine from '@cesdk/node';
|
|
23
|
+
import { config } from 'dotenv';
|
|
24
|
+
import { writeFileSync, mkdirSync, existsSync } from 'fs';
|
|
24
25
|
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
import packageJson from './package.json';
|
|
26
|
+
// Load environment variables
|
|
27
|
+
config();
|
|
28
28
|
|
|
29
29
|
/**
|
|
30
|
-
* CE.SDK
|
|
30
|
+
* CE.SDK Server Guide: Add Watermark to Video
|
|
31
31
|
*
|
|
32
32
|
* Demonstrates adding text and image watermarks to videos:
|
|
33
|
-
* - Creating text watermarks with styling
|
|
33
|
+
* - Creating text watermarks with styling and drop shadows
|
|
34
34
|
* - Creating image watermarks from logos
|
|
35
35
|
* - Positioning watermarks on the canvas
|
|
36
|
-
* - Setting watermark duration to match video
|
|
37
|
-
* - Adding drop shadows for visibility
|
|
36
|
+
* - Setting watermark duration to match video timeline
|
|
38
37
|
* - Configuring opacity and blend modes
|
|
38
|
+
* - Saving the watermarked scene for rendering
|
|
39
39
|
*/
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
engine.block.setDuration(logoWatermark, videoDuration);
|
|
157
|
-
engine.block.setTimeOffset(logoWatermark, 0);
|
|
158
|
-
|
|
159
|
-
// Add the logo watermark to the page
|
|
160
|
-
engine.block.appendChild(page, logoWatermark);
|
|
161
|
-
|
|
162
|
-
// Select the page to show the timeline
|
|
163
|
-
engine.block.setSelected(page, true);
|
|
164
|
-
|
|
165
|
-
// Zoom to fit the page and enable auto-fit for responsive resizing
|
|
166
|
-
await engine.scene.zoomToBlock(page, {
|
|
167
|
-
padding: { left: 40, top: 40, right: 40, bottom: 40 }
|
|
168
|
-
});
|
|
169
|
-
engine.scene.enableZoomAutoFit(page, 'Horizontal', 40, 40);
|
|
170
|
-
|
|
171
|
-
// Start playback automatically
|
|
172
|
-
try {
|
|
173
|
-
engine.block.setPlaying(page, true);
|
|
174
|
-
// eslint-disable-next-line no-console
|
|
175
|
-
console.log(
|
|
176
|
-
'Video watermark guide initialized. Playback started with text and logo watermarks visible.'
|
|
177
|
-
);
|
|
178
|
-
} catch (error) {
|
|
179
|
-
// eslint-disable-next-line no-console
|
|
180
|
-
console.log(
|
|
181
|
-
'Video watermark guide initialized. Click play button to start playback.'
|
|
182
|
-
);
|
|
183
|
-
}
|
|
40
|
+
|
|
41
|
+
// Initialize CE.SDK engine in headless mode
|
|
42
|
+
const engine = await CreativeEngine.init({
|
|
43
|
+
baseURL: process.env.IMGLY_LOCAL_ASSETS_URL
|
|
44
|
+
// license: process.env.CESDK_LICENSE, // Optional (trial mode available)
|
|
45
|
+
});
|
|
46
|
+
|
|
47
|
+
try {
|
|
48
|
+
// Create a video scene and load a sample video
|
|
49
|
+
const videoUrl = 'https://img.ly/static/ubq_video_samples/bbb.mp4';
|
|
50
|
+
await engine.scene.createFromVideo(videoUrl);
|
|
51
|
+
|
|
52
|
+
// Get the page and its properties
|
|
53
|
+
const page = engine.scene.getCurrentPage()!;
|
|
54
|
+
const pageWidth = engine.block.getWidth(page);
|
|
55
|
+
const pageHeight = engine.block.getHeight(page);
|
|
56
|
+
|
|
57
|
+
// Get the video duration from the page (set automatically from video)
|
|
58
|
+
const videoDuration = engine.block.getDuration(page);
|
|
59
|
+
console.log('Video duration:', videoDuration, 'seconds');
|
|
60
|
+
console.log('Page dimensions:', pageWidth, 'x', pageHeight);
|
|
61
|
+
|
|
62
|
+
// ===== TEXT WATERMARK =====
|
|
63
|
+
|
|
64
|
+
// Create a text block for the watermark
|
|
65
|
+
const textWatermark = engine.block.create('text');
|
|
66
|
+
|
|
67
|
+
// Use Auto sizing so the text block grows to fit its content
|
|
68
|
+
engine.block.setWidthMode(textWatermark, 'Auto');
|
|
69
|
+
engine.block.setHeightMode(textWatermark, 'Auto');
|
|
70
|
+
|
|
71
|
+
// Set the watermark text content
|
|
72
|
+
engine.block.replaceText(textWatermark, 'All rights reserved 2025');
|
|
73
|
+
|
|
74
|
+
// Position in bottom-left corner with padding
|
|
75
|
+
const textPadding = 20;
|
|
76
|
+
engine.block.setPositionX(textWatermark, textPadding);
|
|
77
|
+
engine.block.setPositionY(textWatermark, pageHeight - textPadding - 20);
|
|
78
|
+
|
|
79
|
+
// Style the text watermark
|
|
80
|
+
engine.block.setFloat(textWatermark, 'text/fontSize', 14);
|
|
81
|
+
engine.block.setTextColor(textWatermark, { r: 1, g: 1, b: 1, a: 1 }); // White text
|
|
82
|
+
|
|
83
|
+
// Set text alignment
|
|
84
|
+
engine.block.setEnum(textWatermark, 'text/horizontalAlignment', 'Left');
|
|
85
|
+
|
|
86
|
+
// Set opacity for subtle appearance
|
|
87
|
+
engine.block.setOpacity(textWatermark, 0.7);
|
|
88
|
+
|
|
89
|
+
// Add drop shadow for visibility across different backgrounds
|
|
90
|
+
engine.block.setDropShadowEnabled(textWatermark, true);
|
|
91
|
+
engine.block.setDropShadowColor(textWatermark, { r: 0, g: 0, b: 0, a: 0.8 });
|
|
92
|
+
engine.block.setDropShadowOffsetX(textWatermark, 2);
|
|
93
|
+
engine.block.setDropShadowOffsetY(textWatermark, 2);
|
|
94
|
+
engine.block.setDropShadowBlurRadiusX(textWatermark, 4);
|
|
95
|
+
engine.block.setDropShadowBlurRadiusY(textWatermark, 4);
|
|
96
|
+
|
|
97
|
+
// Set the text watermark duration to match the video
|
|
98
|
+
engine.block.setDuration(textWatermark, videoDuration);
|
|
99
|
+
engine.block.setTimeOffset(textWatermark, 0);
|
|
100
|
+
|
|
101
|
+
// Add the text watermark to the page
|
|
102
|
+
engine.block.appendChild(page, textWatermark);
|
|
103
|
+
|
|
104
|
+
console.log('Text watermark created and added to timeline');
|
|
105
|
+
|
|
106
|
+
// ===== IMAGE WATERMARK (LOGO) =====
|
|
107
|
+
|
|
108
|
+
// Create a graphic block for the logo watermark
|
|
109
|
+
const logoWatermark = engine.block.create('graphic');
|
|
110
|
+
|
|
111
|
+
// Create a rectangular shape for the logo
|
|
112
|
+
const rectShape = engine.block.createShape('rect');
|
|
113
|
+
engine.block.setShape(logoWatermark, rectShape);
|
|
114
|
+
|
|
115
|
+
// Create an image fill with the logo
|
|
116
|
+
const imageFill = engine.block.createFill('image');
|
|
117
|
+
engine.block.setString(
|
|
118
|
+
imageFill,
|
|
119
|
+
'fill/image/imageFileURI',
|
|
120
|
+
'https://img.ly/static/ubq_samples/imgly_logo.jpg'
|
|
121
|
+
);
|
|
122
|
+
engine.block.setFill(logoWatermark, imageFill);
|
|
123
|
+
|
|
124
|
+
// Set content fill mode to contain so the logo fits within bounds
|
|
125
|
+
engine.block.setContentFillMode(logoWatermark, 'Contain');
|
|
126
|
+
|
|
127
|
+
// Size and position the logo in the top-right corner
|
|
128
|
+
const logoSize = 80;
|
|
129
|
+
const logoPadding = 20;
|
|
130
|
+
engine.block.setWidth(logoWatermark, logoSize);
|
|
131
|
+
engine.block.setHeight(logoWatermark, logoSize);
|
|
132
|
+
engine.block.setPositionX(logoWatermark, pageWidth - logoSize - logoPadding);
|
|
133
|
+
engine.block.setPositionY(logoWatermark, logoPadding);
|
|
134
|
+
|
|
135
|
+
// Set opacity for the logo watermark
|
|
136
|
+
engine.block.setOpacity(logoWatermark, 0.6);
|
|
137
|
+
|
|
138
|
+
// Set blend mode for better integration with video content
|
|
139
|
+
engine.block.setBlendMode(logoWatermark, 'Normal');
|
|
140
|
+
|
|
141
|
+
// Set the logo watermark duration to match the video
|
|
142
|
+
engine.block.setDuration(logoWatermark, videoDuration);
|
|
143
|
+
engine.block.setTimeOffset(logoWatermark, 0);
|
|
144
|
+
|
|
145
|
+
// Add the logo watermark to the page
|
|
146
|
+
engine.block.appendChild(page, logoWatermark);
|
|
147
|
+
|
|
148
|
+
console.log('Logo watermark created and added to timeline');
|
|
149
|
+
|
|
150
|
+
// Save the watermarked scene
|
|
151
|
+
// Video export is not supported in Node.js, so we save the scene as JSON
|
|
152
|
+
// The saved scene can be rendered using CE.SDK Renderer
|
|
153
|
+
const outputDir = './output';
|
|
154
|
+
if (!existsSync(outputDir)) {
|
|
155
|
+
mkdirSync(outputDir, { recursive: true });
|
|
184
156
|
}
|
|
185
|
-
}
|
|
186
157
|
|
|
187
|
-
|
|
158
|
+
const sceneString = await engine.scene.saveToString();
|
|
159
|
+
writeFileSync(`${outputDir}/watermarked-video.scene`, sceneString);
|
|
160
|
+
|
|
161
|
+
console.log('');
|
|
162
|
+
console.log(
|
|
163
|
+
'Watermarked video scene saved to output/watermarked-video.scene'
|
|
164
|
+
);
|
|
165
|
+
console.log('');
|
|
166
|
+
console.log('Scene contains:');
|
|
167
|
+
console.log(' - Text watermark: "All rights reserved 2025" (bottom-left)');
|
|
168
|
+
console.log(' - Logo watermark: IMG.LY logo (top-right)');
|
|
169
|
+
console.log(' - Both watermarks span the full video duration');
|
|
170
|
+
console.log('');
|
|
171
|
+
console.log('To render the video, use CE.SDK Renderer:');
|
|
172
|
+
console.log(' https://img.ly/docs/cesdk/renderer/');
|
|
173
|
+
} finally {
|
|
174
|
+
// Always dispose of the engine to free resources
|
|
175
|
+
engine.dispose();
|
|
176
|
+
}
|
|
188
177
|
```
|
|
189
178
|
|
|
190
179
|
This guide covers how to create text and image watermarks programmatically, position them on the canvas, style them for visibility, and configure their duration to span the entire video.
|
|
191
180
|
|
|
192
|
-
|
|
181
|
+
<NodejsVideoExportNotice {...props} />
|
|
182
|
+
|
|
183
|
+
## Initializing the Engine
|
|
193
184
|
|
|
194
|
-
|
|
185
|
+
We initialize the CE.SDK engine in headless mode for server-side processing. The engine runs without a UI, making it suitable for automated watermarking workflows.
|
|
195
186
|
|
|
196
187
|
```typescript highlight-setup
|
|
197
|
-
//
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
188
|
+
// Initialize CE.SDK engine in headless mode
|
|
189
|
+
const engine = await CreativeEngine.init({
|
|
190
|
+
baseURL: process.env.IMGLY_LOCAL_ASSETS_URL
|
|
191
|
+
// license: process.env.CESDK_LICENSE, // Optional (trial mode available)
|
|
192
|
+
});
|
|
201
193
|
```
|
|
202
194
|
|
|
203
|
-
|
|
195
|
+
The engine initializes with default settings. In production, you would add your license key to remove trial watermarks from exports.
|
|
204
196
|
|
|
205
197
|
## Creating the Scene
|
|
206
198
|
|
|
207
199
|
We create a scene from a video URL. This automatically sets up the page dimensions and time-based properties based on the video.
|
|
208
200
|
|
|
209
201
|
```typescript highlight-create-video-scene
|
|
210
|
-
// Create a video scene
|
|
202
|
+
// Create a video scene and load a sample video
|
|
211
203
|
const videoUrl = 'https://img.ly/static/ubq_video_samples/bbb.mp4';
|
|
212
|
-
await
|
|
204
|
+
await engine.scene.createFromVideo(videoUrl);
|
|
213
205
|
```
|
|
214
206
|
|
|
215
207
|
The `createFromVideo` method loads the video, creates a scene, and sets the page dimensions to match the video's aspect ratio. The video becomes a fill block in the composition with its duration already set.
|
|
216
208
|
|
|
209
|
+
## Getting Page and Video Information
|
|
210
|
+
|
|
211
|
+
Before positioning watermarks, we retrieve the page dimensions and video duration for reference.
|
|
212
|
+
|
|
213
|
+
```typescript highlight-get-page-info
|
|
214
|
+
// Get the page and its properties
|
|
215
|
+
const page = engine.scene.getCurrentPage()!;
|
|
216
|
+
const pageWidth = engine.block.getWidth(page);
|
|
217
|
+
const pageHeight = engine.block.getHeight(page);
|
|
218
|
+
|
|
219
|
+
// Get the video duration from the page (set automatically from video)
|
|
220
|
+
const videoDuration = engine.block.getDuration(page);
|
|
221
|
+
console.log('Video duration:', videoDuration, 'seconds');
|
|
222
|
+
console.log('Page dimensions:', pageWidth, 'x', pageHeight);
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
We use `engine.block.getWidth()` and `engine.block.getHeight()` to get the page dimensions for positioning calculations. `engine.block.getDuration()` returns the video duration in seconds, which we'll use to ensure watermarks span the entire video.
|
|
226
|
+
|
|
217
227
|
## Creating a Text Watermark
|
|
218
228
|
|
|
219
229
|
Text watermarks display copyright notices, branding text, or URLs. We create a text block and position it on the canvas.
|
|
220
230
|
|
|
221
231
|
```typescript highlight-create-text-watermark
|
|
222
|
-
// Create a text
|
|
223
|
-
const textWatermark = engine.block.create('text');
|
|
232
|
+
// Create a text block for the watermark
|
|
233
|
+
const textWatermark = engine.block.create('text');
|
|
224
234
|
|
|
225
|
-
// Use Auto sizing so the text block grows to fit its content
|
|
226
|
-
engine.block.setWidthMode(textWatermark, 'Auto');
|
|
227
|
-
engine.block.setHeightMode(textWatermark, 'Auto');
|
|
235
|
+
// Use Auto sizing so the text block grows to fit its content
|
|
236
|
+
engine.block.setWidthMode(textWatermark, 'Auto');
|
|
237
|
+
engine.block.setHeightMode(textWatermark, 'Auto');
|
|
228
238
|
|
|
229
|
-
// Set the watermark text content
|
|
230
|
-
engine.block.replaceText(textWatermark, 'All rights reserved
|
|
239
|
+
// Set the watermark text content
|
|
240
|
+
engine.block.replaceText(textWatermark, 'All rights reserved 2025');
|
|
231
241
|
|
|
232
|
-
// Position in bottom-left corner with padding
|
|
233
|
-
const textPadding = 20;
|
|
234
|
-
engine.block.setPositionX(textWatermark, textPadding);
|
|
235
|
-
engine.block.setPositionY(textWatermark, pageHeight - textPadding - 20);
|
|
242
|
+
// Position in bottom-left corner with padding
|
|
243
|
+
const textPadding = 20;
|
|
244
|
+
engine.block.setPositionX(textWatermark, textPadding);
|
|
245
|
+
engine.block.setPositionY(textWatermark, pageHeight - textPadding - 20);
|
|
236
246
|
```
|
|
237
247
|
|
|
238
|
-
We create a text block with `block.create('text')` and configure it with auto-sizing using `setWidthMode(
|
|
248
|
+
We create a text block with `engine.block.create('text')` and configure it with auto-sizing using `engine.block.setWidthMode()` and `engine.block.setHeightMode()`. This lets the text block grow to fit its content. We set the text content using `engine.block.replaceText()` and position the watermark in the bottom-left corner with padding from the edges.
|
|
239
249
|
|
|
240
250
|
## Styling Text Watermarks
|
|
241
251
|
|
|
242
252
|
Style the text for readability across different video backgrounds.
|
|
243
253
|
|
|
244
254
|
```typescript highlight-style-text-watermark
|
|
245
|
-
// Style the text watermark
|
|
246
|
-
engine.block.setFloat(textWatermark, 'text/fontSize',
|
|
247
|
-
engine.block.setTextColor(textWatermark, { r: 1, g: 1, b: 1, a: 1 }); // White text
|
|
255
|
+
// Style the text watermark
|
|
256
|
+
engine.block.setFloat(textWatermark, 'text/fontSize', 14);
|
|
257
|
+
engine.block.setTextColor(textWatermark, { r: 1, g: 1, b: 1, a: 1 }); // White text
|
|
248
258
|
|
|
249
|
-
// Set text alignment
|
|
250
|
-
engine.block.setEnum(textWatermark, 'text/horizontalAlignment', 'Left');
|
|
259
|
+
// Set text alignment
|
|
260
|
+
engine.block.setEnum(textWatermark, 'text/horizontalAlignment', 'Left');
|
|
251
261
|
|
|
252
|
-
// Set
|
|
253
|
-
engine.block.setOpacity(textWatermark, 0.7);
|
|
262
|
+
// Set opacity for subtle appearance
|
|
263
|
+
engine.block.setOpacity(textWatermark, 0.7);
|
|
254
264
|
```
|
|
255
265
|
|
|
256
|
-
We set the font size using `setFloat()` with the `'text/fontSize'` property for a subtle watermark appearance. White text color ensures visibility, left alignment positions the text naturally, and 70% opacity creates a semi-transparent appearance that's visible but not distracting.
|
|
266
|
+
We set the font size using `engine.block.setFloat()` with the `'text/fontSize'` property for a subtle watermark appearance. White text color ensures visibility, left alignment positions the text naturally, and 70% opacity creates a semi-transparent appearance that's visible but not distracting.
|
|
257
267
|
|
|
258
268
|
## Adding Drop Shadow for Visibility
|
|
259
269
|
|
|
@@ -262,12 +272,7 @@ Drop shadows ensure text remains readable over both light and dark video backgro
|
|
|
262
272
|
```typescript highlight-text-drop-shadow
|
|
263
273
|
// Add drop shadow for visibility across different backgrounds
|
|
264
274
|
engine.block.setDropShadowEnabled(textWatermark, true);
|
|
265
|
-
engine.block.setDropShadowColor(textWatermark, {
|
|
266
|
-
r: 0,
|
|
267
|
-
g: 0,
|
|
268
|
-
b: 0,
|
|
269
|
-
a: 0.8
|
|
270
|
-
});
|
|
275
|
+
engine.block.setDropShadowColor(textWatermark, { r: 0, g: 0, b: 0, a: 0.8 });
|
|
271
276
|
engine.block.setDropShadowOffsetX(textWatermark, 2);
|
|
272
277
|
engine.block.setDropShadowOffsetY(textWatermark, 2);
|
|
273
278
|
engine.block.setDropShadowBlurRadiusX(textWatermark, 4);
|
|
@@ -281,39 +286,39 @@ We enable the drop shadow and configure its appearance. The black shadow color w
|
|
|
281
286
|
The watermark must persist throughout video playback. We set its duration to match the video duration.
|
|
282
287
|
|
|
283
288
|
```typescript highlight-text-timeline
|
|
284
|
-
// Set the text watermark duration to match the video
|
|
285
|
-
engine.block.setDuration(textWatermark, videoDuration);
|
|
286
|
-
engine.block.setTimeOffset(textWatermark, 0);
|
|
289
|
+
// Set the text watermark duration to match the video
|
|
290
|
+
engine.block.setDuration(textWatermark, videoDuration);
|
|
291
|
+
engine.block.setTimeOffset(textWatermark, 0);
|
|
287
292
|
|
|
288
|
-
// Add the text watermark to the page
|
|
289
|
-
engine.block.appendChild(page, textWatermark);
|
|
293
|
+
// Add the text watermark to the page
|
|
294
|
+
engine.block.appendChild(page, textWatermark);
|
|
290
295
|
```
|
|
291
296
|
|
|
292
|
-
`setDuration` controls how long the block appears in the composition. `setTimeOffset` of 0 ensures it starts at the beginning. We then append the watermark to the page, placing it above the video content.
|
|
297
|
+
`engine.block.setDuration()` controls how long the block appears in the composition. `engine.block.setTimeOffset()` of 0 ensures it starts at the beginning. We then append the watermark to the page, placing it above the video content.
|
|
293
298
|
|
|
294
299
|
## Creating an Image Watermark
|
|
295
300
|
|
|
296
301
|
Image watermarks display logos or graphics. We create a graphic block with an image fill.
|
|
297
302
|
|
|
298
303
|
```typescript highlight-create-image-watermark
|
|
299
|
-
// Create a graphic block for the logo watermark
|
|
300
|
-
const logoWatermark = engine.block.create('graphic');
|
|
301
|
-
|
|
302
|
-
// Create a rectangular shape for the logo
|
|
303
|
-
const rectShape = engine.block.createShape('rect');
|
|
304
|
-
engine.block.setShape(logoWatermark, rectShape);
|
|
305
|
-
|
|
306
|
-
// Create an image fill with the logo
|
|
307
|
-
const imageFill = engine.block.createFill('image');
|
|
308
|
-
engine.block.setString(
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
);
|
|
313
|
-
engine.block.setFill(logoWatermark, imageFill);
|
|
314
|
-
|
|
315
|
-
// Set content fill mode to contain so the logo fits within bounds
|
|
316
|
-
engine.block.setContentFillMode(logoWatermark, 'Contain');
|
|
304
|
+
// Create a graphic block for the logo watermark
|
|
305
|
+
const logoWatermark = engine.block.create('graphic');
|
|
306
|
+
|
|
307
|
+
// Create a rectangular shape for the logo
|
|
308
|
+
const rectShape = engine.block.createShape('rect');
|
|
309
|
+
engine.block.setShape(logoWatermark, rectShape);
|
|
310
|
+
|
|
311
|
+
// Create an image fill with the logo
|
|
312
|
+
const imageFill = engine.block.createFill('image');
|
|
313
|
+
engine.block.setString(
|
|
314
|
+
imageFill,
|
|
315
|
+
'fill/image/imageFileURI',
|
|
316
|
+
'https://img.ly/static/ubq_samples/imgly_logo.jpg'
|
|
317
|
+
);
|
|
318
|
+
engine.block.setFill(logoWatermark, imageFill);
|
|
319
|
+
|
|
320
|
+
// Set content fill mode to contain so the logo fits within bounds
|
|
321
|
+
engine.block.setContentFillMode(logoWatermark, 'Contain');
|
|
317
322
|
```
|
|
318
323
|
|
|
319
324
|
We create a graphic block, assign it a rectangular shape, and fill it with an image. The `fill/image/imageFileURI` property specifies the logo URL. We set the content fill mode to 'Contain' so the logo fits within its bounds without cropping. This pattern—graphic block with shape and fill—is standard for displaying images in CE.SDK.
|
|
@@ -339,11 +344,11 @@ We size the logo at 80x80 pixels—large enough to be recognizable but not domin
|
|
|
339
344
|
Control how the watermark integrates with the video.
|
|
340
345
|
|
|
341
346
|
```typescript highlight-image-opacity-blend
|
|
342
|
-
// Set opacity for the logo watermark
|
|
343
|
-
engine.block.setOpacity(logoWatermark, 0.6);
|
|
347
|
+
// Set opacity for the logo watermark
|
|
348
|
+
engine.block.setOpacity(logoWatermark, 0.6);
|
|
344
349
|
|
|
345
|
-
// Set blend mode for better integration with video content
|
|
346
|
-
engine.block.setBlendMode(logoWatermark, 'Normal');
|
|
350
|
+
// Set blend mode for better integration with video content
|
|
351
|
+
engine.block.setBlendMode(logoWatermark, 'Normal');
|
|
347
352
|
```
|
|
348
353
|
|
|
349
354
|
We set 60% opacity for a subtle but visible watermark. The blend mode 'Normal' displays the logo as-is. Other modes like 'Multiply' or 'Screen' create different visual effects depending on the logo and video content.
|
|
@@ -353,15 +358,58 @@ We set 60% opacity for a subtle but visible watermark. The blend mode 'Normal' d
|
|
|
353
358
|
Like text watermarks, image watermarks need duration configuration.
|
|
354
359
|
|
|
355
360
|
```typescript highlight-image-timeline
|
|
356
|
-
// Set the logo watermark duration to match the video
|
|
357
|
-
engine.block.setDuration(logoWatermark, videoDuration);
|
|
358
|
-
engine.block.setTimeOffset(logoWatermark, 0);
|
|
361
|
+
// Set the logo watermark duration to match the video
|
|
362
|
+
engine.block.setDuration(logoWatermark, videoDuration);
|
|
363
|
+
engine.block.setTimeOffset(logoWatermark, 0);
|
|
359
364
|
|
|
360
|
-
// Add the logo watermark to the page
|
|
361
|
-
engine.block.appendChild(page, logoWatermark);
|
|
365
|
+
// Add the logo watermark to the page
|
|
366
|
+
engine.block.appendChild(page, logoWatermark);
|
|
362
367
|
```
|
|
363
368
|
|
|
364
|
-
We set the same duration and time offset as the text watermark so both appear throughout the video. The `appendChild` call adds the logo to the page above existing content.
|
|
369
|
+
We set the same duration and time offset as the text watermark so both appear throughout the video. The `engine.block.appendChild()` call adds the logo to the page above existing content.
|
|
370
|
+
|
|
371
|
+
## Saving the Watermarked Scene
|
|
372
|
+
|
|
373
|
+
After adding watermarks, we save the scene for later rendering. Since video export is not supported in Node.js, we serialize the scene to a file.
|
|
374
|
+
|
|
375
|
+
```typescript highlight-save-scene
|
|
376
|
+
// Save the watermarked scene
|
|
377
|
+
// Video export is not supported in Node.js, so we save the scene as JSON
|
|
378
|
+
// The saved scene can be rendered using CE.SDK Renderer
|
|
379
|
+
const outputDir = './output';
|
|
380
|
+
if (!existsSync(outputDir)) {
|
|
381
|
+
mkdirSync(outputDir, { recursive: true });
|
|
382
|
+
}
|
|
383
|
+
|
|
384
|
+
const sceneString = await engine.scene.saveToString();
|
|
385
|
+
writeFileSync(`${outputDir}/watermarked-video.scene`, sceneString);
|
|
386
|
+
|
|
387
|
+
console.log('');
|
|
388
|
+
console.log(
|
|
389
|
+
'Watermarked video scene saved to output/watermarked-video.scene'
|
|
390
|
+
);
|
|
391
|
+
console.log('');
|
|
392
|
+
console.log('Scene contains:');
|
|
393
|
+
console.log(' - Text watermark: "All rights reserved 2025" (bottom-left)');
|
|
394
|
+
console.log(' - Logo watermark: IMG.LY logo (top-right)');
|
|
395
|
+
console.log(' - Both watermarks span the full video duration');
|
|
396
|
+
console.log('');
|
|
397
|
+
console.log('To render the video, use CE.SDK Renderer:');
|
|
398
|
+
console.log(' https://img.ly/docs/cesdk/renderer/');
|
|
399
|
+
```
|
|
400
|
+
|
|
401
|
+
The `engine.scene.saveToString()` method serializes the entire scene including the video, watermarks, and all configuration. This scene file can be loaded later in a browser environment for export, or processed using the CE.SDK Renderer for server-side video generation.
|
|
402
|
+
|
|
403
|
+
## Cleanup
|
|
404
|
+
|
|
405
|
+
Always dispose of the engine when finished to free system resources.
|
|
406
|
+
|
|
407
|
+
```typescript highlight-cleanup
|
|
408
|
+
// Always dispose of the engine to free resources
|
|
409
|
+
engine.dispose();
|
|
410
|
+
```
|
|
411
|
+
|
|
412
|
+
The `engine.dispose()` method releases all resources held by the engine. In server environments, proper cleanup is essential to prevent memory leaks during batch processing.
|
|
365
413
|
|
|
366
414
|
## Watermark Positioning Strategies
|
|
367
415
|
|
|
@@ -389,41 +437,47 @@ Calculate positions dynamically based on page dimensions to handle different vid
|
|
|
389
437
|
- Set time offset to 0 for watermarks that should appear from the start
|
|
390
438
|
- For time-based watermarks, calculate offsets based on video sections
|
|
391
439
|
|
|
392
|
-
###
|
|
440
|
+
### Batch Processing
|
|
393
441
|
|
|
394
|
-
-
|
|
395
|
-
-
|
|
396
|
-
-
|
|
442
|
+
- Reuse watermark configuration logic across multiple videos
|
|
443
|
+
- Process videos sequentially to manage memory usage
|
|
444
|
+
- Always dispose of the engine between sessions or implement proper resource management
|
|
397
445
|
|
|
398
446
|
## API Reference
|
|
399
447
|
|
|
400
|
-
| Method
|
|
401
|
-
|
|
402
|
-
| `
|
|
403
|
-
| `
|
|
404
|
-
| `
|
|
405
|
-
| `block.
|
|
406
|
-
| `block.
|
|
407
|
-
| `block.
|
|
408
|
-
| `block.
|
|
409
|
-
| `block.
|
|
410
|
-
| `block.
|
|
411
|
-
| `block.
|
|
412
|
-
| `block.
|
|
413
|
-
| `block.
|
|
414
|
-
| `block.
|
|
415
|
-
| `block.
|
|
416
|
-
| `block.
|
|
417
|
-
| `block.
|
|
418
|
-
| `block.
|
|
419
|
-
| `block.
|
|
420
|
-
| `block.
|
|
448
|
+
| Method | Description |
|
|
449
|
+
|--------|-------------|
|
|
450
|
+
| `engine.scene.createFromVideo(url)` | Create a video scene from a URL |
|
|
451
|
+
| `engine.scene.getCurrentPage()` | Get the current page block |
|
|
452
|
+
| `engine.scene.saveToString()` | Serialize the scene to a string |
|
|
453
|
+
| `engine.block.create('text')` | Create a text block for text watermarks |
|
|
454
|
+
| `engine.block.create('graphic')` | Create a graphic block for image watermarks |
|
|
455
|
+
| `engine.block.setWidthMode(id, mode)` | Set width sizing mode ('Auto', 'Absolute', 'Percent') |
|
|
456
|
+
| `engine.block.setHeightMode(id, mode)` | Set height sizing mode ('Auto', 'Absolute', 'Percent') |
|
|
457
|
+
| `engine.block.replaceText(id, text)` | Set text content for text blocks |
|
|
458
|
+
| `engine.block.setFloat(id, property, value)` | Set numeric properties like font size |
|
|
459
|
+
| `engine.block.createShape('rect')` | Create a rectangular shape for graphics |
|
|
460
|
+
| `engine.block.createFill('image')` | Create an image fill for logo watermarks |
|
|
461
|
+
| `engine.block.setString(id, property, value)` | Set string properties like image URI |
|
|
462
|
+
| `engine.block.setContentFillMode(id, mode)` | Set content fill mode ('Crop', 'Cover', 'Contain') |
|
|
463
|
+
| `engine.block.setDuration(id, duration)` | Set watermark duration |
|
|
464
|
+
| `engine.block.setTimeOffset(id, offset)` | Set watermark start time |
|
|
465
|
+
| `engine.block.setOpacity(id, opacity)` | Set watermark transparency (0.0-1.0) |
|
|
466
|
+
| `engine.block.setDropShadowEnabled(id, enabled)` | Enable/disable drop shadow |
|
|
467
|
+
| `engine.block.setDropShadowColor(id, color)` | Set shadow color |
|
|
468
|
+
| `engine.block.setDropShadowOffsetX/Y(id, offset)` | Set shadow position |
|
|
469
|
+
| `engine.block.setDropShadowBlurRadiusX/Y(id, radius)` | Set shadow blur |
|
|
470
|
+
| `engine.block.setBlendMode(id, mode)` | Set blend mode ('Normal', 'Multiply', etc.) |
|
|
471
|
+
| `engine.block.appendChild(parent, child)` | Add watermark to page |
|
|
472
|
+
| `engine.dispose()` | Release engine resources |
|
|
473
|
+
|
|
474
|
+
|
|
421
475
|
|
|
422
476
|
---
|
|
423
477
|
|
|
424
478
|
## More Resources
|
|
425
479
|
|
|
426
|
-
- **[
|
|
480
|
+
- **[Node.js Documentation Index](https://img.ly/docs/cesdk/node.md)** - Browse all Node.js documentation
|
|
427
481
|
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
428
|
-
- **[Web Documentation](./
|
|
429
|
-
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|
|
482
|
+
- **[Web Documentation](./node.md)** - Interactive documentation with examples
|
|
483
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|