@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,32 +1,33 @@
|
|
|
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 Images](./edit-image.md) > [Add Watermark](./edit-image/add-watermark.md)
|
|
4
4
|
|
|
5
5
|
---
|
|
6
6
|
|
|
7
|
-
Add text and image watermarks to designs programmatically using CE.SDK's block API.
|
|
8
|
-
|
|
9
|
-

|
|
7
|
+
Add text and image watermarks to designs programmatically using CE.SDK's block API in a headless Node.js environment.
|
|
10
8
|
|
|
11
9
|
> **Reading time:** 8 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-edit-image-add-watermark-server-js)
|
|
16
|
+
>
|
|
17
|
+
> - [Open in StackBlitz](https://stackblitz.com/github/imgly/cesdk-web-examples/tree/v$UBQ_VERSION$/guides-edit-image-add-watermark-server-js)
|
|
19
18
|
|
|
20
19
|
Watermarks protect intellectual property, indicate ownership, add branding, or mark content as drafts. CE.SDK supports two types of watermarks: **text watermarks** created from text blocks for copyright notices and brand names, and **image watermarks** created from graphic blocks with image fills for logos and symbols.
|
|
21
20
|
|
|
22
|
-
```typescript file=@cesdk_web_examples/guides-edit-image-add-watermark-
|
|
23
|
-
import
|
|
21
|
+
```typescript file=@cesdk_web_examples/guides-edit-image-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
|
-
|
|
26
|
+
// Load environment variables
|
|
27
|
+
config();
|
|
27
28
|
|
|
28
29
|
/**
|
|
29
|
-
* CE.SDK
|
|
30
|
+
* CE.SDK Server Guide: Add Watermark
|
|
30
31
|
*
|
|
31
32
|
* Demonstrates adding text and image watermarks to designs:
|
|
32
33
|
* - Creating text watermarks with custom styling
|
|
@@ -35,212 +36,175 @@ import packageJson from './package.json';
|
|
|
35
36
|
* - Applying drop shadows for visibility
|
|
36
37
|
* - Exporting watermarked designs
|
|
37
38
|
*/
|
|
38
|
-
class Example implements EditorPlugin {
|
|
39
|
-
name = packageJson.name;
|
|
40
39
|
|
|
41
|
-
|
|
40
|
+
// Initialize CE.SDK engine in headless mode
|
|
41
|
+
const engine = await CreativeEngine.init({
|
|
42
|
+
baseURL: process.env.IMGLY_LOCAL_ASSETS_URL
|
|
43
|
+
// license: process.env.CESDK_LICENSE, // Optional (trial mode available)
|
|
44
|
+
});
|
|
42
45
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
46
|
+
try {
|
|
47
|
+
// Create a scene with custom page dimensions
|
|
48
|
+
const scene = engine.scene.create();
|
|
49
|
+
const page = engine.block.create('page');
|
|
50
|
+
engine.block.setWidth(page, 800);
|
|
51
|
+
engine.block.setHeight(page, 600);
|
|
52
|
+
engine.block.appendChild(scene, page);
|
|
47
53
|
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
const page = engine.block.create('page');
|
|
54
|
-
engine.block.setWidth(page, 800);
|
|
55
|
-
engine.block.setHeight(page, 600);
|
|
56
|
-
engine.block.appendChild(scene, page);
|
|
54
|
+
const pageWidth = engine.block.getWidth(page);
|
|
55
|
+
const pageHeight = engine.block.getHeight(page);
|
|
56
|
+
|
|
57
|
+
// Create a gradient background for the page
|
|
58
|
+
const gradientFill = engine.block.createFill('gradient/linear');
|
|
57
59
|
|
|
58
|
-
|
|
59
|
-
|
|
60
|
+
// Set a modern purple-to-cyan gradient
|
|
61
|
+
engine.block.setGradientColorStops(gradientFill, 'fill/gradient/colors', [
|
|
62
|
+
{ color: { r: 0.39, g: 0.4, b: 0.95, a: 1 }, stop: 0 }, // Indigo
|
|
63
|
+
{ color: { r: 0.02, g: 0.71, b: 0.83, a: 1 }, stop: 1 } // Cyan
|
|
64
|
+
]);
|
|
65
|
+
|
|
66
|
+
// Set diagonal gradient direction (top-left to bottom-right)
|
|
67
|
+
engine.block.setFloat(gradientFill, 'fill/gradient/linear/startPointX', 0);
|
|
68
|
+
engine.block.setFloat(gradientFill, 'fill/gradient/linear/startPointY', 0);
|
|
69
|
+
engine.block.setFloat(gradientFill, 'fill/gradient/linear/endPointX', 1);
|
|
70
|
+
engine.block.setFloat(gradientFill, 'fill/gradient/linear/endPointY', 1);
|
|
71
|
+
|
|
72
|
+
// Apply gradient to page
|
|
73
|
+
engine.block.setFill(page, gradientFill);
|
|
74
|
+
|
|
75
|
+
// Create a centered title text
|
|
76
|
+
const titleText = engine.block.create('text');
|
|
77
|
+
engine.block.setString(titleText, 'text/text', 'Add Watermark');
|
|
78
|
+
engine.block.setEnum(titleText, 'text/horizontalAlignment', 'Center');
|
|
79
|
+
engine.block.appendChild(page, titleText);
|
|
80
|
+
|
|
81
|
+
// Style the title
|
|
82
|
+
engine.block.setTextFontSize(titleText, 14);
|
|
83
|
+
engine.block.setTextColor(titleText, { r: 1, g: 1, b: 1, a: 1 });
|
|
84
|
+
engine.block.setWidthMode(titleText, 'Auto');
|
|
85
|
+
engine.block.setHeightMode(titleText, 'Auto');
|
|
86
|
+
|
|
87
|
+
// Center the title on the page
|
|
88
|
+
const titleWidth = engine.block.getFrameWidth(titleText);
|
|
89
|
+
const titleHeight = engine.block.getFrameHeight(titleText);
|
|
90
|
+
engine.block.setPositionX(titleText, (pageWidth - titleWidth) / 2);
|
|
91
|
+
engine.block.setPositionY(titleText, (pageHeight - titleHeight) / 2);
|
|
92
|
+
|
|
93
|
+
// Create a text block for the watermark
|
|
94
|
+
const textWatermark = engine.block.create('text');
|
|
95
|
+
|
|
96
|
+
// Set the watermark text content
|
|
97
|
+
engine.block.setString(textWatermark, 'text/text', '© 2024 img.ly');
|
|
98
|
+
|
|
99
|
+
// Left-align the text for the watermark
|
|
100
|
+
engine.block.setEnum(textWatermark, 'text/horizontalAlignment', 'Left');
|
|
101
|
+
|
|
102
|
+
// Add the text block to the page
|
|
103
|
+
engine.block.appendChild(page, textWatermark);
|
|
104
|
+
|
|
105
|
+
// Set font size for the watermark
|
|
106
|
+
engine.block.setTextFontSize(textWatermark, 4);
|
|
107
|
+
|
|
108
|
+
// Set text color to white for contrast
|
|
109
|
+
engine.block.setTextColor(textWatermark, { r: 1, g: 1, b: 1, a: 1 });
|
|
110
|
+
|
|
111
|
+
// Set opacity to make it semi-transparent
|
|
112
|
+
engine.block.setOpacity(textWatermark, 0.8);
|
|
113
|
+
|
|
114
|
+
// Set width mode to auto so text fits its content
|
|
115
|
+
engine.block.setWidthMode(textWatermark, 'Auto');
|
|
116
|
+
engine.block.setHeightMode(textWatermark, 'Auto');
|
|
117
|
+
|
|
118
|
+
// Create a graphic block for the logo watermark
|
|
119
|
+
const logoWatermark = engine.block.create('graphic');
|
|
120
|
+
|
|
121
|
+
// Create a rect shape for the logo
|
|
122
|
+
const rectShape = engine.block.createShape('rect');
|
|
123
|
+
engine.block.setShape(logoWatermark, rectShape);
|
|
124
|
+
|
|
125
|
+
// Create an image fill with a logo
|
|
126
|
+
const imageFill = engine.block.createFill('image');
|
|
127
|
+
engine.block.setString(
|
|
128
|
+
imageFill,
|
|
129
|
+
'fill/image/imageFileURI',
|
|
130
|
+
'https://img.ly/static/ubq_samples/imgly_logo.jpg'
|
|
131
|
+
);
|
|
132
|
+
|
|
133
|
+
// Apply the fill to the graphic block
|
|
134
|
+
engine.block.setFill(logoWatermark, imageFill);
|
|
135
|
+
|
|
136
|
+
// Set content fill mode to contain the image within bounds
|
|
137
|
+
engine.block.setContentFillMode(logoWatermark, 'Contain');
|
|
138
|
+
|
|
139
|
+
// Add to page
|
|
140
|
+
engine.block.appendChild(page, logoWatermark);
|
|
141
|
+
|
|
142
|
+
// Size the logo watermark
|
|
143
|
+
const logoWidth = 80;
|
|
144
|
+
const logoHeight = 50;
|
|
145
|
+
engine.block.setWidth(logoWatermark, logoWidth);
|
|
146
|
+
engine.block.setHeight(logoWatermark, logoHeight);
|
|
147
|
+
|
|
148
|
+
// Set opacity for the logo watermark
|
|
149
|
+
engine.block.setOpacity(logoWatermark, 0.8);
|
|
150
|
+
|
|
151
|
+
// Position padding from edges
|
|
152
|
+
const padding = 15;
|
|
153
|
+
|
|
154
|
+
// Position text watermark at bottom-left
|
|
155
|
+
engine.block.setPositionX(textWatermark, padding);
|
|
156
|
+
engine.block.setPositionY(textWatermark, pageHeight - padding - 20);
|
|
157
|
+
|
|
158
|
+
// Position logo watermark at top-right
|
|
159
|
+
engine.block.setPositionX(logoWatermark, pageWidth - padding - logoWidth);
|
|
160
|
+
engine.block.setPositionY(logoWatermark, padding);
|
|
161
|
+
|
|
162
|
+
// Add drop shadow to text watermark for better visibility
|
|
163
|
+
engine.block.setDropShadowEnabled(textWatermark, true);
|
|
164
|
+
engine.block.setDropShadowOffsetX(textWatermark, 1);
|
|
165
|
+
engine.block.setDropShadowOffsetY(textWatermark, 1);
|
|
166
|
+
engine.block.setDropShadowBlurRadiusX(textWatermark, 2);
|
|
167
|
+
engine.block.setDropShadowBlurRadiusY(textWatermark, 2);
|
|
168
|
+
engine.block.setDropShadowColor(textWatermark, { r: 0, g: 0, b: 0, a: 0.5 });
|
|
169
|
+
|
|
170
|
+
// Add drop shadow to logo watermark
|
|
171
|
+
engine.block.setDropShadowEnabled(logoWatermark, true);
|
|
172
|
+
engine.block.setDropShadowOffsetX(logoWatermark, 1);
|
|
173
|
+
engine.block.setDropShadowOffsetY(logoWatermark, 1);
|
|
174
|
+
engine.block.setDropShadowBlurRadiusX(logoWatermark, 2);
|
|
175
|
+
engine.block.setDropShadowBlurRadiusY(logoWatermark, 2);
|
|
176
|
+
engine.block.setDropShadowColor(logoWatermark, { r: 0, g: 0, b: 0, a: 0.5 });
|
|
177
|
+
|
|
178
|
+
// Export the watermarked design
|
|
179
|
+
const outputDir = './output';
|
|
180
|
+
if (!existsSync(outputDir)) {
|
|
181
|
+
mkdirSync(outputDir, { recursive: true });
|
|
182
|
+
}
|
|
60
183
|
|
|
61
|
-
|
|
62
|
-
|
|
184
|
+
const blob = await engine.block.export(page, { mimeType: 'image/png' });
|
|
185
|
+
const buffer = Buffer.from(await blob.arrayBuffer());
|
|
186
|
+
writeFileSync(`${outputDir}/watermarked-design.png`, buffer);
|
|
63
187
|
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
// Set diagonal gradient direction (top-left to bottom-right)
|
|
71
|
-
engine.block.setFloat(gradientFill, 'fill/gradient/linear/startPointX', 0);
|
|
72
|
-
engine.block.setFloat(gradientFill, 'fill/gradient/linear/startPointY', 0);
|
|
73
|
-
engine.block.setFloat(gradientFill, 'fill/gradient/linear/endPointX', 1);
|
|
74
|
-
engine.block.setFloat(gradientFill, 'fill/gradient/linear/endPointY', 1);
|
|
75
|
-
|
|
76
|
-
// Apply gradient to page
|
|
77
|
-
engine.block.setFill(page, gradientFill);
|
|
78
|
-
|
|
79
|
-
// Create a centered title text
|
|
80
|
-
const titleText = engine.block.create('text');
|
|
81
|
-
engine.block.setString(titleText, 'text/text', 'Add Watermark');
|
|
82
|
-
engine.block.setEnum(titleText, 'text/horizontalAlignment', 'Center');
|
|
83
|
-
engine.block.appendChild(page, titleText);
|
|
84
|
-
|
|
85
|
-
// Style the title
|
|
86
|
-
engine.block.setTextFontSize(titleText, 14);
|
|
87
|
-
engine.block.setTextColor(titleText, { r: 1, g: 1, b: 1, a: 1 });
|
|
88
|
-
engine.block.setWidthMode(titleText, 'Auto');
|
|
89
|
-
engine.block.setHeightMode(titleText, 'Auto');
|
|
90
|
-
|
|
91
|
-
// Center the title on the page
|
|
92
|
-
const titleWidth = engine.block.getFrameWidth(titleText);
|
|
93
|
-
const titleHeight = engine.block.getFrameHeight(titleText);
|
|
94
|
-
engine.block.setPositionX(titleText, (pageWidth - titleWidth) / 2);
|
|
95
|
-
engine.block.setPositionY(titleText, (pageHeight - titleHeight) / 2);
|
|
96
|
-
|
|
97
|
-
// Create a text block for the watermark
|
|
98
|
-
const textWatermark = engine.block.create('text');
|
|
99
|
-
|
|
100
|
-
// Set the watermark text content
|
|
101
|
-
engine.block.setString(textWatermark, 'text/text', '© 2024 img.ly');
|
|
102
|
-
|
|
103
|
-
// Left-align the text for the watermark
|
|
104
|
-
engine.block.setEnum(textWatermark, 'text/horizontalAlignment', 'Left');
|
|
105
|
-
|
|
106
|
-
// Add the text block to the page
|
|
107
|
-
engine.block.appendChild(page, textWatermark);
|
|
108
|
-
|
|
109
|
-
// Set font size for the watermark
|
|
110
|
-
engine.block.setTextFontSize(textWatermark, 4);
|
|
111
|
-
|
|
112
|
-
// Set text color to white for contrast
|
|
113
|
-
engine.block.setTextColor(textWatermark, { r: 1, g: 1, b: 1, a: 1 });
|
|
114
|
-
|
|
115
|
-
// Set opacity to make it semi-transparent
|
|
116
|
-
engine.block.setOpacity(textWatermark, 0.8);
|
|
117
|
-
|
|
118
|
-
// Set width mode to auto so text fits its content
|
|
119
|
-
engine.block.setWidthMode(textWatermark, 'Auto');
|
|
120
|
-
engine.block.setHeightMode(textWatermark, 'Auto');
|
|
121
|
-
|
|
122
|
-
// Create a graphic block for the logo watermark
|
|
123
|
-
const logoWatermark = engine.block.create('graphic');
|
|
124
|
-
|
|
125
|
-
// Create a rect shape for the logo
|
|
126
|
-
const rectShape = engine.block.createShape('rect');
|
|
127
|
-
engine.block.setShape(logoWatermark, rectShape);
|
|
128
|
-
|
|
129
|
-
// Create an image fill with a logo
|
|
130
|
-
const imageFill = engine.block.createFill('image');
|
|
131
|
-
engine.block.setString(
|
|
132
|
-
imageFill,
|
|
133
|
-
'fill/image/imageFileURI',
|
|
134
|
-
'https://img.ly/static/ubq_samples/imgly_logo.jpg'
|
|
135
|
-
);
|
|
136
|
-
|
|
137
|
-
// Apply the fill to the graphic block
|
|
138
|
-
engine.block.setFill(logoWatermark, imageFill);
|
|
139
|
-
|
|
140
|
-
// Set content fill mode to contain the image within bounds
|
|
141
|
-
engine.block.setContentFillMode(logoWatermark, 'Contain');
|
|
142
|
-
|
|
143
|
-
// Add to page
|
|
144
|
-
engine.block.appendChild(page, logoWatermark);
|
|
145
|
-
|
|
146
|
-
// Size the logo watermark
|
|
147
|
-
const logoWidth = 80;
|
|
148
|
-
const logoHeight = 50;
|
|
149
|
-
engine.block.setWidth(logoWatermark, logoWidth);
|
|
150
|
-
engine.block.setHeight(logoWatermark, logoHeight);
|
|
151
|
-
|
|
152
|
-
// Set opacity for the logo watermark
|
|
153
|
-
engine.block.setOpacity(logoWatermark, 0.8);
|
|
154
|
-
|
|
155
|
-
// Position padding from edges
|
|
156
|
-
const padding = 15;
|
|
157
|
-
|
|
158
|
-
// Position text watermark at bottom-left
|
|
159
|
-
engine.block.setPositionX(textWatermark, padding);
|
|
160
|
-
engine.block.setPositionY(textWatermark, pageHeight - padding - 20);
|
|
161
|
-
|
|
162
|
-
// Position logo watermark at top-right
|
|
163
|
-
engine.block.setPositionX(logoWatermark, pageWidth - padding - logoWidth);
|
|
164
|
-
engine.block.setPositionY(logoWatermark, padding);
|
|
165
|
-
|
|
166
|
-
// Add drop shadow to text watermark for better visibility
|
|
167
|
-
engine.block.setDropShadowEnabled(textWatermark, true);
|
|
168
|
-
engine.block.setDropShadowOffsetX(textWatermark, 1);
|
|
169
|
-
engine.block.setDropShadowOffsetY(textWatermark, 1);
|
|
170
|
-
engine.block.setDropShadowBlurRadiusX(textWatermark, 2);
|
|
171
|
-
engine.block.setDropShadowBlurRadiusY(textWatermark, 2);
|
|
172
|
-
engine.block.setDropShadowColor(textWatermark, {
|
|
173
|
-
r: 0,
|
|
174
|
-
g: 0,
|
|
175
|
-
b: 0,
|
|
176
|
-
a: 0.5
|
|
177
|
-
});
|
|
178
|
-
|
|
179
|
-
// Add drop shadow to logo watermark
|
|
180
|
-
engine.block.setDropShadowEnabled(logoWatermark, true);
|
|
181
|
-
engine.block.setDropShadowOffsetX(logoWatermark, 1);
|
|
182
|
-
engine.block.setDropShadowOffsetY(logoWatermark, 1);
|
|
183
|
-
engine.block.setDropShadowBlurRadiusX(logoWatermark, 2);
|
|
184
|
-
engine.block.setDropShadowBlurRadiusY(logoWatermark, 2);
|
|
185
|
-
engine.block.setDropShadowColor(logoWatermark, {
|
|
186
|
-
r: 0,
|
|
187
|
-
g: 0,
|
|
188
|
-
b: 0,
|
|
189
|
-
a: 0.5
|
|
190
|
-
});
|
|
191
|
-
|
|
192
|
-
// Add export button to the navigation bar
|
|
193
|
-
cesdk.ui.insertOrderComponent(
|
|
194
|
-
{ in: 'ly.img.navigation.bar', position: 'end' },
|
|
195
|
-
{
|
|
196
|
-
id: 'ly.img.actions.navigationBar',
|
|
197
|
-
children: [
|
|
198
|
-
{
|
|
199
|
-
id: 'ly.img.action.navigationBar',
|
|
200
|
-
key: 'export-watermarked',
|
|
201
|
-
label: 'Export',
|
|
202
|
-
icon: '@imgly/Download',
|
|
203
|
-
onClick: async () => {
|
|
204
|
-
// Export the watermarked design
|
|
205
|
-
const blob = await engine.block.export(page, {
|
|
206
|
-
mimeType: 'image/png'
|
|
207
|
-
});
|
|
208
|
-
|
|
209
|
-
// Download the watermarked image
|
|
210
|
-
await cesdk.utils.downloadFile(blob, 'image/png');
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
]
|
|
214
|
-
}
|
|
215
|
-
);
|
|
216
|
-
|
|
217
|
-
// Zoom to fit the page in view with padding and enable auto-fit
|
|
218
|
-
await engine.scene.zoomToBlock(page, { padding: 40 });
|
|
219
|
-
engine.scene.enableZoomAutoFit(page, 'Both', 40, 40, 40, 40);
|
|
220
|
-
}
|
|
188
|
+
// eslint-disable-next-line no-console
|
|
189
|
+
console.log('✓ Exported watermarked design to output/watermarked-design.png');
|
|
190
|
+
} finally {
|
|
191
|
+
// Always dispose the engine to free resources
|
|
192
|
+
engine.dispose();
|
|
221
193
|
}
|
|
222
|
-
|
|
223
|
-
export default Example;
|
|
224
194
|
```
|
|
225
195
|
|
|
226
196
|
This guide covers how to create text and logo watermarks, position them on a design, style them for visibility, and export the watermarked result.
|
|
227
197
|
|
|
228
198
|
## Setup and Prerequisites
|
|
229
199
|
|
|
230
|
-
We start by initializing CE.SDK
|
|
200
|
+
We start by initializing CE.SDK in headless mode and creating a scene with a custom page size. The page provides the canvas where we'll add our watermarks.
|
|
231
201
|
|
|
232
202
|
```typescript highlight=highlight-setup
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
engine.block.setWidth(page, 800);
|
|
239
|
-
engine.block.setHeight(page, 600);
|
|
240
|
-
engine.block.appendChild(scene, page);
|
|
241
|
-
|
|
242
|
-
const pageWidth = engine.block.getWidth(page);
|
|
243
|
-
const pageHeight = engine.block.getHeight(page);
|
|
203
|
+
// Initialize CE.SDK engine in headless mode
|
|
204
|
+
const engine = await CreativeEngine.init({
|
|
205
|
+
baseURL: process.env.IMGLY_LOCAL_ASSETS_URL
|
|
206
|
+
// license: process.env.CESDK_LICENSE, // Optional (trial mode available)
|
|
207
|
+
});
|
|
244
208
|
```
|
|
245
209
|
|
|
246
210
|
We use `engine.scene.create('VerticalStack', {...})` to create a scene with custom page dimensions. The page dimensions are retrieved for positioning calculations later.
|
|
@@ -250,17 +214,17 @@ We use `engine.scene.create('VerticalStack', {...})` to create a scene with cust
|
|
|
250
214
|
Text watermarks display copyright notices, URLs, or brand names. We create a text block, set its content, and add it to the page.
|
|
251
215
|
|
|
252
216
|
```typescript highlight=highlight-create-text-watermark
|
|
253
|
-
// Create a text block for the watermark
|
|
254
|
-
const textWatermark = engine.block.create('text');
|
|
217
|
+
// Create a text block for the watermark
|
|
218
|
+
const textWatermark = engine.block.create('text');
|
|
255
219
|
|
|
256
|
-
// Set the watermark text content
|
|
257
|
-
engine.block.setString(textWatermark, 'text/text', '© 2024 img.ly');
|
|
220
|
+
// Set the watermark text content
|
|
221
|
+
engine.block.setString(textWatermark, 'text/text', '© 2024 img.ly');
|
|
258
222
|
|
|
259
|
-
// Left-align the text for the watermark
|
|
260
|
-
engine.block.setEnum(textWatermark, 'text/horizontalAlignment', 'Left');
|
|
223
|
+
// Left-align the text for the watermark
|
|
224
|
+
engine.block.setEnum(textWatermark, 'text/horizontalAlignment', 'Left');
|
|
261
225
|
|
|
262
|
-
// Add the text block to the page
|
|
263
|
-
engine.block.appendChild(page, textWatermark);
|
|
226
|
+
// Add the text block to the page
|
|
227
|
+
engine.block.appendChild(page, textWatermark);
|
|
264
228
|
```
|
|
265
229
|
|
|
266
230
|
The `engine.block.create('text')` method creates a new text block. We set the text content using `engine.block.setString()` with the `'text/text'` property.
|
|
@@ -270,18 +234,18 @@ The `engine.block.create('text')` method creates a new text block. We set the te
|
|
|
270
234
|
We configure the font size, color, and opacity to make the watermark visible but unobtrusive.
|
|
271
235
|
|
|
272
236
|
```typescript highlight=highlight-style-text-watermark
|
|
273
|
-
// Set font size for the watermark
|
|
274
|
-
engine.block.setTextFontSize(textWatermark, 4);
|
|
237
|
+
// Set font size for the watermark
|
|
238
|
+
engine.block.setTextFontSize(textWatermark, 4);
|
|
275
239
|
|
|
276
|
-
// Set text color to white for contrast
|
|
277
|
-
engine.block.setTextColor(textWatermark, { r: 1, g: 1, b: 1, a: 1 });
|
|
240
|
+
// Set text color to white for contrast
|
|
241
|
+
engine.block.setTextColor(textWatermark, { r: 1, g: 1, b: 1, a: 1 });
|
|
278
242
|
|
|
279
|
-
// Set opacity to make it semi-transparent
|
|
280
|
-
engine.block.setOpacity(textWatermark, 0.8);
|
|
243
|
+
// Set opacity to make it semi-transparent
|
|
244
|
+
engine.block.setOpacity(textWatermark, 0.8);
|
|
281
245
|
|
|
282
|
-
// Set width mode to auto so text fits its content
|
|
283
|
-
engine.block.setWidthMode(textWatermark, 'Auto');
|
|
284
|
-
engine.block.setHeightMode(textWatermark, 'Auto');
|
|
246
|
+
// Set width mode to auto so text fits its content
|
|
247
|
+
engine.block.setWidthMode(textWatermark, 'Auto');
|
|
248
|
+
engine.block.setHeightMode(textWatermark, 'Auto');
|
|
285
249
|
```
|
|
286
250
|
|
|
287
251
|
Key styling options:
|
|
@@ -296,16 +260,16 @@ Key styling options:
|
|
|
296
260
|
We calculate the watermark positions based on the page dimensions and place the logo and text side-by-side at the bottom center of the page.
|
|
297
261
|
|
|
298
262
|
```typescript highlight=highlight-position-text-watermark
|
|
299
|
-
// Position padding from edges
|
|
300
|
-
const padding = 15;
|
|
263
|
+
// Position padding from edges
|
|
264
|
+
const padding = 15;
|
|
301
265
|
|
|
302
|
-
// Position text watermark at bottom-left
|
|
303
|
-
engine.block.setPositionX(textWatermark, padding);
|
|
304
|
-
engine.block.setPositionY(textWatermark, pageHeight - padding - 20);
|
|
266
|
+
// Position text watermark at bottom-left
|
|
267
|
+
engine.block.setPositionX(textWatermark, padding);
|
|
268
|
+
engine.block.setPositionY(textWatermark, pageHeight - padding - 20);
|
|
305
269
|
|
|
306
|
-
// Position logo watermark at top-right
|
|
307
|
-
engine.block.setPositionX(logoWatermark, pageWidth - padding - logoWidth);
|
|
308
|
-
engine.block.setPositionY(logoWatermark, padding);
|
|
270
|
+
// Position logo watermark at top-right
|
|
271
|
+
engine.block.setPositionX(logoWatermark, pageWidth - padding - logoWidth);
|
|
272
|
+
engine.block.setPositionY(logoWatermark, padding);
|
|
309
273
|
```
|
|
310
274
|
|
|
311
275
|
We retrieve the rendered frame dimensions using `engine.block.getFrameWidth()` and `engine.block.getFrameHeight()`, calculate the total width of both watermarks with spacing, then center them horizontally. The vertical position places them near the bottom with padding from the edge.
|
|
@@ -315,29 +279,29 @@ We retrieve the rendered frame dimensions using `engine.block.getFrameWidth()` a
|
|
|
315
279
|
Logo watermarks use graphic blocks with image fills to display brand symbols or company logos.
|
|
316
280
|
|
|
317
281
|
```typescript highlight=highlight-create-logo-watermark
|
|
318
|
-
// Create a graphic block for the logo watermark
|
|
319
|
-
const logoWatermark = engine.block.create('graphic');
|
|
282
|
+
// Create a graphic block for the logo watermark
|
|
283
|
+
const logoWatermark = engine.block.create('graphic');
|
|
320
284
|
|
|
321
|
-
// Create a rect shape for the logo
|
|
322
|
-
const rectShape = engine.block.createShape('rect');
|
|
323
|
-
engine.block.setShape(logoWatermark, rectShape);
|
|
285
|
+
// Create a rect shape for the logo
|
|
286
|
+
const rectShape = engine.block.createShape('rect');
|
|
287
|
+
engine.block.setShape(logoWatermark, rectShape);
|
|
324
288
|
|
|
325
|
-
// Create an image fill with a logo
|
|
326
|
-
const imageFill = engine.block.createFill('image');
|
|
327
|
-
engine.block.setString(
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
);
|
|
289
|
+
// Create an image fill with a logo
|
|
290
|
+
const imageFill = engine.block.createFill('image');
|
|
291
|
+
engine.block.setString(
|
|
292
|
+
imageFill,
|
|
293
|
+
'fill/image/imageFileURI',
|
|
294
|
+
'https://img.ly/static/ubq_samples/imgly_logo.jpg'
|
|
295
|
+
);
|
|
332
296
|
|
|
333
|
-
// Apply the fill to the graphic block
|
|
334
|
-
engine.block.setFill(logoWatermark, imageFill);
|
|
297
|
+
// Apply the fill to the graphic block
|
|
298
|
+
engine.block.setFill(logoWatermark, imageFill);
|
|
335
299
|
|
|
336
|
-
// Set content fill mode to contain the image within bounds
|
|
337
|
-
engine.block.setContentFillMode(logoWatermark, 'Contain');
|
|
300
|
+
// Set content fill mode to contain the image within bounds
|
|
301
|
+
engine.block.setContentFillMode(logoWatermark, 'Contain');
|
|
338
302
|
|
|
339
|
-
// Add to page
|
|
340
|
-
engine.block.appendChild(page, logoWatermark);
|
|
303
|
+
// Add to page
|
|
304
|
+
engine.block.appendChild(page, logoWatermark);
|
|
341
305
|
```
|
|
342
306
|
|
|
343
307
|
We create a graphic block, assign a rect shape, then create an image fill with the logo URI. The fill is applied to the graphic block before adding it to the page.
|
|
@@ -347,14 +311,14 @@ We create a graphic block, assign a rect shape, then create an image fill with t
|
|
|
347
311
|
We set fixed dimensions for the logo and apply opacity to match the text watermark.
|
|
348
312
|
|
|
349
313
|
```typescript highlight=highlight-size-logo-watermark
|
|
350
|
-
// Size the logo watermark
|
|
351
|
-
const logoWidth = 80;
|
|
352
|
-
const logoHeight = 50;
|
|
353
|
-
engine.block.setWidth(logoWatermark, logoWidth);
|
|
354
|
-
engine.block.setHeight(logoWatermark, logoHeight);
|
|
355
|
-
|
|
356
|
-
// Set opacity for the logo watermark
|
|
357
|
-
engine.block.setOpacity(logoWatermark, 0.8);
|
|
314
|
+
// Size the logo watermark
|
|
315
|
+
const logoWidth = 80;
|
|
316
|
+
const logoHeight = 50;
|
|
317
|
+
engine.block.setWidth(logoWatermark, logoWidth);
|
|
318
|
+
engine.block.setHeight(logoWatermark, logoHeight);
|
|
319
|
+
|
|
320
|
+
// Set opacity for the logo watermark
|
|
321
|
+
engine.block.setOpacity(logoWatermark, 0.8);
|
|
358
322
|
```
|
|
359
323
|
|
|
360
324
|
A good rule is to size logos to 10-20% of the page width. This keeps them visible without dominating the design.
|
|
@@ -364,31 +328,21 @@ A good rule is to size logos to 10-20% of the page width. This keeps them visibl
|
|
|
364
328
|
Drop shadows improve watermark readability against varied backgrounds by adding contrast.
|
|
365
329
|
|
|
366
330
|
```typescript highlight=highlight-add-drop-shadow
|
|
367
|
-
// Add drop shadow to text watermark for better visibility
|
|
368
|
-
engine.block.setDropShadowEnabled(textWatermark, true);
|
|
369
|
-
engine.block.setDropShadowOffsetX(textWatermark, 1);
|
|
370
|
-
engine.block.setDropShadowOffsetY(textWatermark, 1);
|
|
371
|
-
engine.block.setDropShadowBlurRadiusX(textWatermark, 2);
|
|
372
|
-
engine.block.setDropShadowBlurRadiusY(textWatermark, 2);
|
|
373
|
-
engine.block.setDropShadowColor(textWatermark, {
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
engine.block.
|
|
382
|
-
engine.block.setDropShadowOffsetX(logoWatermark, 1);
|
|
383
|
-
engine.block.setDropShadowOffsetY(logoWatermark, 1);
|
|
384
|
-
engine.block.setDropShadowBlurRadiusX(logoWatermark, 2);
|
|
385
|
-
engine.block.setDropShadowBlurRadiusY(logoWatermark, 2);
|
|
386
|
-
engine.block.setDropShadowColor(logoWatermark, {
|
|
387
|
-
r: 0,
|
|
388
|
-
g: 0,
|
|
389
|
-
b: 0,
|
|
390
|
-
a: 0.5
|
|
391
|
-
});
|
|
331
|
+
// Add drop shadow to text watermark for better visibility
|
|
332
|
+
engine.block.setDropShadowEnabled(textWatermark, true);
|
|
333
|
+
engine.block.setDropShadowOffsetX(textWatermark, 1);
|
|
334
|
+
engine.block.setDropShadowOffsetY(textWatermark, 1);
|
|
335
|
+
engine.block.setDropShadowBlurRadiusX(textWatermark, 2);
|
|
336
|
+
engine.block.setDropShadowBlurRadiusY(textWatermark, 2);
|
|
337
|
+
engine.block.setDropShadowColor(textWatermark, { r: 0, g: 0, b: 0, a: 0.5 });
|
|
338
|
+
|
|
339
|
+
// Add drop shadow to logo watermark
|
|
340
|
+
engine.block.setDropShadowEnabled(logoWatermark, true);
|
|
341
|
+
engine.block.setDropShadowOffsetX(logoWatermark, 1);
|
|
342
|
+
engine.block.setDropShadowOffsetY(logoWatermark, 1);
|
|
343
|
+
engine.block.setDropShadowBlurRadiusX(logoWatermark, 2);
|
|
344
|
+
engine.block.setDropShadowBlurRadiusY(logoWatermark, 2);
|
|
345
|
+
engine.block.setDropShadowColor(logoWatermark, { r: 0, g: 0, b: 0, a: 0.5 });
|
|
392
346
|
```
|
|
393
347
|
|
|
394
348
|
Drop shadow parameters:
|
|
@@ -399,36 +353,35 @@ Drop shadow parameters:
|
|
|
399
353
|
|
|
400
354
|
## Exporting Watermarked Images
|
|
401
355
|
|
|
402
|
-
After adding watermarks, we
|
|
356
|
+
After adding watermarks, we export the complete page as an image file.
|
|
403
357
|
|
|
404
358
|
```typescript highlight=highlight-export-watermarked
|
|
405
|
-
//
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
id: 'ly.img.actions.navigationBar',
|
|
410
|
-
children: [
|
|
411
|
-
{
|
|
412
|
-
id: 'ly.img.action.navigationBar',
|
|
413
|
-
key: 'export-watermarked',
|
|
414
|
-
label: 'Export',
|
|
415
|
-
icon: '@imgly/Download',
|
|
416
|
-
onClick: async () => {
|
|
417
|
-
// Export the watermarked design
|
|
418
|
-
const blob = await engine.block.export(page, {
|
|
419
|
-
mimeType: 'image/png'
|
|
420
|
-
});
|
|
421
|
-
|
|
422
|
-
// Download the watermarked image
|
|
423
|
-
await cesdk.utils.downloadFile(blob, 'image/png');
|
|
424
|
-
}
|
|
425
|
-
}
|
|
426
|
-
]
|
|
359
|
+
// Export the watermarked design
|
|
360
|
+
const outputDir = './output';
|
|
361
|
+
if (!existsSync(outputDir)) {
|
|
362
|
+
mkdirSync(outputDir, { recursive: true });
|
|
427
363
|
}
|
|
428
|
-
|
|
364
|
+
|
|
365
|
+
const blob = await engine.block.export(page, { mimeType: 'image/png' });
|
|
366
|
+
const buffer = Buffer.from(await blob.arrayBuffer());
|
|
367
|
+
writeFileSync(`${outputDir}/watermarked-design.png`, buffer);
|
|
368
|
+
|
|
369
|
+
// eslint-disable-next-line no-console
|
|
370
|
+
console.log('✓ Exported watermarked design to output/watermarked-design.png');
|
|
429
371
|
```
|
|
430
372
|
|
|
431
|
-
|
|
373
|
+
The `engine.block.export()` method returns a blob that can be downloaded or saved to disk. Supported formats include PNG, JPEG, and WebP.
|
|
374
|
+
|
|
375
|
+
## Cleanup
|
|
376
|
+
|
|
377
|
+
We must dispose the engine to free system resources when processing is complete.
|
|
378
|
+
|
|
379
|
+
```typescript highlight=highlight-cleanup
|
|
380
|
+
// Always dispose the engine to free resources
|
|
381
|
+
engine.dispose();
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
Always use a try-finally block to ensure the engine is disposed even if errors occur during processing.
|
|
432
385
|
|
|
433
386
|
## Troubleshooting
|
|
434
387
|
|
|
@@ -457,29 +410,27 @@ We use `cesdk.ui.insertOrderComponent()` to add a custom button to the editor's
|
|
|
457
410
|
|
|
458
411
|
## API Reference
|
|
459
412
|
|
|
460
|
-
| Method
|
|
461
|
-
|
|
462
|
-
| `engine.block.create(type)`
|
|
463
|
-
| `engine.block.createShape(type)`
|
|
464
|
-
| `engine.block.createFill(type)`
|
|
465
|
-
| `engine.block.setString(id, property, value)`
|
|
466
|
-
| `engine.block.setTextFontSize(id, size)`
|
|
467
|
-
| `engine.block.setTextColor(id, color)`
|
|
468
|
-
| `engine.block.setOpacity(id, opacity)`
|
|
469
|
-
| `engine.block.setPositionX(id, value)`
|
|
470
|
-
| `engine.block.setPositionY(id, value)`
|
|
471
|
-
| `engine.block.setWidth(id, value)`
|
|
472
|
-
| `engine.block.setHeight(id, value)`
|
|
473
|
-
| `engine.block.getFrameWidth(id)`
|
|
474
|
-
| `engine.block.getFrameHeight(id)`
|
|
475
|
-
| `engine.block.setDropShadowEnabled(id, enabled)`
|
|
476
|
-
| `engine.block.setDropShadowOffsetX(id, offset)`
|
|
477
|
-
| `engine.block.setDropShadowOffsetY(id, offset)`
|
|
478
|
-
| `engine.block.setDropShadowBlurRadiusX(id, radius)` | Set shadow blur
|
|
479
|
-
| `engine.block.setDropShadowColor(id, color)`
|
|
480
|
-
| `engine.block.export(id, options)`
|
|
481
|
-
| `cesdk.ui.insertOrderComponent(options, component)` | Add custom button to navigation bar |
|
|
482
|
-
| `cesdk.utils.downloadFile(blob, mimeType)` | Download blob as file |
|
|
413
|
+
| Method | Purpose |
|
|
414
|
+
|--------|---------|
|
|
415
|
+
| `engine.block.create(type)` | Create text or graphic blocks |
|
|
416
|
+
| `engine.block.createShape(type)` | Create shapes for graphic blocks |
|
|
417
|
+
| `engine.block.createFill(type)` | Create image fills for logos |
|
|
418
|
+
| `engine.block.setString(id, property, value)` | Set text content or image URI |
|
|
419
|
+
| `engine.block.setTextFontSize(id, size)` | Set text font size |
|
|
420
|
+
| `engine.block.setTextColor(id, color)` | Set text color |
|
|
421
|
+
| `engine.block.setOpacity(id, opacity)` | Set block transparency |
|
|
422
|
+
| `engine.block.setPositionX(id, value)` | Set horizontal position |
|
|
423
|
+
| `engine.block.setPositionY(id, value)` | Set vertical position |
|
|
424
|
+
| `engine.block.setWidth(id, value)` | Set block width |
|
|
425
|
+
| `engine.block.setHeight(id, value)` | Set block height |
|
|
426
|
+
| `engine.block.getFrameWidth(id)` | Get rendered frame width |
|
|
427
|
+
| `engine.block.getFrameHeight(id)` | Get rendered frame height |
|
|
428
|
+
| `engine.block.setDropShadowEnabled(id, enabled)` | Enable drop shadow |
|
|
429
|
+
| `engine.block.setDropShadowOffsetX(id, offset)` | Set shadow X offset |
|
|
430
|
+
| `engine.block.setDropShadowOffsetY(id, offset)` | Set shadow Y offset |
|
|
431
|
+
| `engine.block.setDropShadowBlurRadiusX(id, radius)` | Set shadow blur |
|
|
432
|
+
| `engine.block.setDropShadowColor(id, color)` | Set shadow color |
|
|
433
|
+
| `engine.block.export(id, options)` | Export block to blob |
|
|
483
434
|
|
|
484
435
|
## Next Steps
|
|
485
436
|
|
|
@@ -487,11 +438,13 @@ We use `cesdk.ui.insertOrderComponent()` to add a custom button to the editor's
|
|
|
487
438
|
- [Export Overview](./export-save-publish/export/overview.md) — Export options and formats for watermarked images
|
|
488
439
|
- [Crop Images](./edit-image/transform/crop.md) — Transform images before watermarking
|
|
489
440
|
|
|
441
|
+
|
|
442
|
+
|
|
490
443
|
---
|
|
491
444
|
|
|
492
445
|
## More Resources
|
|
493
446
|
|
|
494
|
-
- **[
|
|
447
|
+
- **[Node.js Documentation Index](https://img.ly/docs/cesdk/node.md)** - Browse all Node.js documentation
|
|
495
448
|
- **[Complete Documentation](./llms-full.txt.md)** - Full documentation in one file (for LLMs)
|
|
496
|
-
- **[Web Documentation](./
|
|
497
|
-
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|
|
449
|
+
- **[Web Documentation](./node.md)** - Interactive documentation with examples
|
|
450
|
+
- **[Support](mailto:support@img.ly)** - Contact IMG.LY support
|