@imgly/plugin-cutout-library-web 0.0.3-rc.1 → 0.1.0

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 CHANGED
@@ -32,7 +32,7 @@ await cesdk.addDefaultAssetSources(),
32
32
  await cesdk.addDemoAssetSources({ sceneMode: 'Design' }),
33
33
  await cesdk.unstable_addPlugin(
34
34
  CutoutLibraryPlugin({
35
- addCanvasMenuButton: true
35
+ ui: { locations: ['canvasMenu'] }
36
36
  })
37
37
  );
38
38
 
@@ -5,7 +5,7 @@
5
5
  {
6
6
  "id": "cutout-selection",
7
7
  "label": {
8
- "en": "Generate from selection",
8
+ "en": "Generate from Selection",
9
9
  "de": "Auswahl ausschneiden"
10
10
  },
11
11
  "meta": {
@@ -17,19 +17,19 @@
17
17
  },
18
18
  {
19
19
  "id": "cutout-rectangle",
20
- "label": { "en": "Cutout rectangle", "de": "Rechteck ausschneiden" },
20
+ "label": { "en": "Cutout Rectangle", "de": "Rechteck ausschneiden" },
21
21
  "meta": {
22
22
  "thumbUri": "{{base_url}}/cutout-rectangle/thumbnail.png",
23
- "vectorPath2": "M0 0 H50 V50 H0 Z",
23
+ "vectorPath": "M0 0 H50 V50 H0 Z",
24
24
  "blockType": "//ly.img.ubq/cutout"
25
25
  }
26
26
  },
27
27
  {
28
28
  "id": "cutout-circle",
29
- "label": { "en": "Cutout circle", "de": "Kreis ausschneiden" },
29
+ "label": { "en": "Cutout Circle", "de": "Kreis ausschneiden" },
30
30
  "meta": {
31
31
  "thumbUri": "{{base_url}}/cutout-circle/thumbnail.png",
32
- "vectorPath2": "M 0,25 a 25,25 0 1,1 50,0 a 25,25 0 1,1 -50,0 Z",
32
+ "vectorPath": "M 0,25 a 25,25 0 1,1 50,0 a 25,25 0 1,1 -50,0 Z",
33
33
  "blockType": "//ly.img.ubq/cutout"
34
34
  }
35
35
  }
@@ -1,6 +1,20 @@
1
1
  export declare const VERSION: string;
2
2
  export declare const CANVAS_MENU_COMPONENT_ID: string;
3
3
  export declare const CANVAS_MENU_COMPONENT_BUTTON_ID: string;
4
+ export declare const CANVAS_MENU_COMPONENT_BUTTON_LABEL: string;
4
5
  export declare const FEATURE_ID: string;
5
6
  export declare const ASSET_SOURCE_ID = "ly.img.cutout";
6
7
  export declare const ENTRY_ID = "ly.img.cutout.entry";
8
+ export declare const NOTIFICATION_SELECT_CUTOUT_BLOCK_ID: string;
9
+ export declare const NOTIFICATION_CUTOUT_BLOCK_SELECTED_ID: string;
10
+ export declare const NOTIFICATION_DIFFERENT_PAGES_ID: string;
11
+ export declare const I18N: {
12
+ readonly en: {
13
+ readonly [x: string]: "Cutouts" | "Please select a block to cutout" | "Cutout blocks cannot be cutout from selection" | "Selected Blocks are from different pages. Please select blocks from the same page." | "Cutout";
14
+ readonly "libraries.ly.img.cutout.entry.label": "Cutouts";
15
+ };
16
+ readonly de: {
17
+ readonly [x: string]: "Schnittlinien" | "Bitte wählen Sie einen Block zum Ausschneiden aus" | "Schnittlinienblöcke können nicht ausgeschnitten werden" | "Ausgewählte Blöcke stammen aus verschiedenen Seiten. Bitte wählen Sie Blöcke von derselben Seite aus." | "Ausschneiden";
18
+ readonly "libraries.ly.img.cutout.entry.label": "Schnittlinien";
19
+ };
20
+ };
package/dist/index.d.ts CHANGED
@@ -1,12 +1,13 @@
1
- import { GetCutoutLibraryInsertEntry, generateCutoutFromSelection } from './plugin';
1
+ import { UILocations, generateCutoutFromSelection, getCutoutLibraryInsertEntry } from './plugin';
2
2
  export declare const DEFAULT_ASSET_BASE_URI: string;
3
3
  export declare const DEFAULT_PLUGIN_CONFIGURATION: {
4
4
  assetBaseUri: string;
5
- addCanvasMenuButton: boolean;
6
5
  };
7
6
  export interface PluginConfiguration {
8
7
  assetBaseUri: string;
9
- addCanvasMenuButton: boolean;
8
+ ui?: {
9
+ locations: UILocations[];
10
+ };
10
11
  }
11
12
  export declare function getPluginConfiguration(config: Partial<PluginConfiguration>): PluginConfiguration;
12
13
  declare const Plugin: (config?: Partial<PluginConfiguration>) => {
@@ -17,4 +18,4 @@ declare const Plugin: (config?: Partial<PluginConfiguration>) => {
17
18
  version: string;
18
19
  };
19
20
  export default Plugin;
20
- export { GetCutoutLibraryInsertEntry, generateCutoutFromSelection };
21
+ export { generateCutoutFromSelection, getCutoutLibraryInsertEntry };
package/dist/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- var c="@imgly/plugin-cutout-library-web.canvasMenu",f=`${c}.button`;var s="ly.img.cutout",d=`${s}.entry`;function C(e){e.ui.unstable_setCanvasMenuOrder([c,...e.ui.unstable_getCanvasMenuOrder()]);let o=`${f}.label`;e.setTranslations({en:{[o]:"Cutout"}}),e.ui.unstable_registerComponent(c,({builder:{Button:t},engine:n})=>{let a=["//ly.img.ubq/group","//ly.img.ubq/graphic","//ly.img.ubq/text"],u=n.block.findAllSelected();if(u.length!==1||!a.includes(n.block.getType(u[0])))return null;t(f,{label:o,icon:({theme:r})=>`${p}/dock-${r}.svg`,onClick:()=>{g(e)}})})}async function b(e,o,t="",n){let{assets:a,id:u}=o;e.asset.addLocalSource(u,void 0,n),a.forEach(r=>{r.meta&&Object.entries(r.meta).forEach(([i,_])=>{let m=_.toString();if(m.includes("{{base_url}}")){let I=m.replace("{{base_url}}",t);r.meta&&(r.meta[i]=I)}}),r.payload?.sourceSet&&r.payload.sourceSet.forEach(i=>{i.uri=i.uri.replace("{{base_url}}",t)}),e.asset.addAssetToSource(u,r)})}var N=b;function P({assetBaseUri:e,addCanvasMenuButton:o}){return{initializeUserInterface:({cesdk:t})=>{y(t,{assetBaseUri:e}),o&&C(t),t.setTranslations({en:{[`libraries.${d}.label`]:"Cutouts"}})}}}function A(e=l){let{assetBaseUri:o}=S(e);return{id:d,sourceIds:[s],icon:({theme:t})=>`${o}/dock-${t}.svg`,gridColumns:2,gridItemHeight:"square",cardLabel:t=>t.label,cardLabelPosition:()=>"below"}}async function y(e,{assetBaseUri:o}){let t=await fetch(`${o}/${s}/content.json`).then(n=>n.json());N(e.engine,t,`${o}/${s}/assets`,async n=>n.id==="cutout-selection"?g(e):!n.meta||!n.meta.vectorPath2?void 0:(n.meta.vectorPath=n.meta.vectorPath2,await e.engine.asset.defaultApplyAsset(n)))}function g(e){let o=e.engine.block.findAllSelected();if(o.length===0){e.ui.showNotification({message:"Please Select",type:"error"});return}if(o.some(i=>e.engine.block.getType(i)==="//ly.img.ubq/cutout")){e.ui.showNotification({message:"Cutout blocks cannot be cutout from selection",type:"error"});return}let n=o.map(i=>O(e.engine,i)),a=Array.from(new Set(n));if(a.length>1){e.ui.showNotification({message:"Selected Blocks are from different pages. Please select blocks from the same page.",type:"error"});return}let u=a[0],r=e.engine.block.createCutoutFromBlocks(o);return e.engine.block.appendChild(u,r),e.engine.block.setAlwaysOnTop(r,!0),e.engine.block.select(r),e.engine.editor.addUndoStep(),r}function O(e,o){let t=o;for(;t&&e.block.getType(t)!=="//ly.img.ubq/page";){let n=e.block.getParent(t);if(!n||n===t)return t;t=n}return t}var E=P;var p=`https://staticimgly.com/${"@imgly/plugin-cutout-library-web".replace("@","")}/0.0.3-rc.1/dist/assets`,l={assetBaseUri:p,addCanvasMenuButton:!0};function S(e){return{...l,...e}}var T=(e=l)=>({name:"@imgly/plugin-cutout-library-web",version:"0.0.3-rc.1",...E({...l,...e})}),w=T;export{p as DEFAULT_ASSET_BASE_URI,l as DEFAULT_PLUGIN_CONFIGURATION,A as GetCutoutLibraryInsertEntry,w as default,g as generateCutoutFromSelection,S as getPluginConfiguration};
1
+ var u="@imgly/plugin-cutout-library-web.canvasMenu",p=`${u}.button`,g=`${p}.label`;var c="ly.img.cutout",N=`${c}.entry`,I="@imgly/plugin-cutout-library-web.notifications.selectCutoutBlock",f="@imgly/plugin-cutout-library-web.notifications.cutoutBlockSelected",C="@imgly/plugin-cutout-library-web.notifications.differentPages",m={en:{[`libraries.${N}.label`]:"Cutouts",[I]:"Please select a block to cutout",[f]:"Cutout blocks cannot be cutout from selection",[C]:"Selected Blocks are from different pages. Please select blocks from the same page.",[g]:"Cutout"},de:{[`libraries.${N}.label`]:"Schnittlinien",[I]:"Bitte w\xE4hlen Sie einen Block zum Ausschneiden aus",[f]:"Schnittlinienbl\xF6cke k\xF6nnen nicht ausgeschnitten werden",[C]:"Ausgew\xE4hlte Bl\xF6cke stammen aus verschiedenen Seiten. Bitte w\xE4hlen Sie Bl\xF6cke von derselben Seite aus.",[g]:"Ausschneiden"}};function S(e){e.ui.unstable_registerComponent(u,({builder:{Button:n},engine:t})=>{let o=["//ly.img.ubq/group","//ly.img.ubq/graphic","//ly.img.ubq/text"],r=t.block.findAllSelected();if(r.length!==1||!o.includes(t.block.getType(r[0])))return null;n(p,{label:g,icon:({theme:a})=>`${E}/dock-${a}.svg`,onClick:()=>{_(e)}})})}async function P(e,n,t="",o){let{assets:r,id:a}=n;e.asset.addLocalSource(a,void 0,o),r.forEach(i=>{i.meta&&Object.entries(i.meta).forEach(([s,U])=>{let d=U.toString();if(d.includes("{{base_url}}")){let b=d.replace("{{base_url}}",t);i.meta&&(i.meta[s]=b)}}),i.payload?.sourceSet&&i.payload.sourceSet.forEach(s=>{s.uri=s.uri.replace("{{base_url}}",t)}),e.asset.addAssetToSource(a,i)})}var T=P;function y({assetBaseUri:e,ui:n}){return{initializeUserInterface:({cesdk:t})=>{h(t,{assetBaseUri:e}),S(t),n?.locations.includes("canvasMenu")&&t.ui.unstable_setCanvasMenuOrder([u,...t.ui.unstable_getCanvasMenuOrder()]),t.setTranslations(m)}}}function L(e=l){let{assetBaseUri:n}=O(e);return{id:N,sourceIds:[c],icon:({theme:t})=>`${n}/dock-${t}.svg`,gridColumns:2,gridItemHeight:"square",cardLabel:t=>t.label,cardLabelPosition:()=>"below",cardBackgroundPreferences:[{path:"meta.thumbUri",type:"image"}]}}async function h(e,{assetBaseUri:n}){let t=await fetch(`${n}/${c}/content.json`).then(o=>o.json());T(e.engine,t,`${n}/${c}/assets`,async o=>o.id==="cutout-selection"?_(e):await e.engine.asset.defaultApplyAsset(o))}function _(e){let n=e.engine.block.findAllSelected();if(n.length===0){e.ui.showNotification({message:I,type:"error"});return}if(n.some(s=>e.engine.block.getType(s)==="//ly.img.ubq/cutout")){e.ui.showNotification({message:f,type:"error"});return}let o=n.map(s=>B(e.engine,s)),r=Array.from(new Set(o));if(r.length>1){e.ui.showNotification({message:C,type:"error"});return}let a=r[0],i=e.engine.block.createCutoutFromBlocks(n);return e.engine.block.appendChild(a,i),e.engine.block.setAlwaysOnTop(i,!0),e.engine.block.select(i),e.engine.editor.addUndoStep(),i}function B(e,n){let t=n;for(;t&&e.block.getType(t)!=="//ly.img.ubq/page";){let o=e.block.getParent(t);if(!o||o===t)return t;t=o}return t}var A=y;var E=`https://staticimgly.com/${"@imgly/plugin-cutout-library-web".replace("@","")}/0.1.0/dist/assets`,l={assetBaseUri:E};function O(e){return{...l,...e}}var D=(e=l)=>({name:"@imgly/plugin-cutout-library-web",version:"0.1.0",...A({...l,...e})}),z=D;export{E as DEFAULT_ASSET_BASE_URI,l as DEFAULT_PLUGIN_CONFIGURATION,z as default,_ as generateCutoutFromSelection,L as getCutoutLibraryInsertEntry,O as getPluginConfiguration};
2
2
  //# sourceMappingURL=index.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../src/constants.ts", "../src/components.ts", "../src/loadAssetSourceFromContentJSON.ts", "../src/plugin.ts", "../src/index.ts"],
4
- "sourcesContent": ["export const VERSION = PLUGIN_VERSION;\nexport const CANVAS_MENU_COMPONENT_ID = `${PLUGIN_NAME}.canvasMenu`;\nexport const CANVAS_MENU_COMPONENT_BUTTON_ID = `${CANVAS_MENU_COMPONENT_ID}.button`;\nexport const FEATURE_ID = `${PLUGIN_NAME}.feature`;\nexport const ASSET_SOURCE_ID = 'ly.img.cutout';\nexport const ENTRY_ID = `${ASSET_SOURCE_ID}.entry`;\n", "import CreativeEditorSDK, { ObjectTypeLonghand } from '@cesdk/cesdk-js';\nimport { DEFAULT_ASSET_BASE_URI } from '.';\nimport {\n CANVAS_MENU_COMPONENT_BUTTON_ID,\n CANVAS_MENU_COMPONENT_ID\n} from './constants';\nimport { generateCutoutFromSelection } from './plugin';\n\nexport function registerComponents(cesdk: CreativeEditorSDK) {\n cesdk.ui.unstable_setCanvasMenuOrder([\n CANVAS_MENU_COMPONENT_ID,\n ...cesdk.ui.unstable_getCanvasMenuOrder()\n ]);\n // }\n const CANVAS_MENU_COMPONENT_BUTTON_I18N_ID = `${CANVAS_MENU_COMPONENT_BUTTON_ID}.label`;\n\n cesdk.setTranslations({\n en: {\n [CANVAS_MENU_COMPONENT_BUTTON_I18N_ID]: 'Cutout'\n }\n });\n\n cesdk.ui.unstable_registerComponent(\n CANVAS_MENU_COMPONENT_ID,\n ({ builder: { Button }, engine }) => {\n // only show canvas menu button for type=graphic, type=text, type=group\n const allowedTypes: ObjectTypeLonghand[] = [\n '//ly.img.ubq/group',\n '//ly.img.ubq/graphic',\n '//ly.img.ubq/text'\n ] as const;\n const selectedBlockIds = engine.block.findAllSelected();\n if (\n selectedBlockIds.length !== 1 ||\n !allowedTypes.includes(engine.block.getType(selectedBlockIds[0]))\n ) {\n return null;\n }\n Button(CANVAS_MENU_COMPONENT_BUTTON_ID, {\n label: CANVAS_MENU_COMPONENT_BUTTON_I18N_ID,\n icon: ({ theme }) => `${DEFAULT_ASSET_BASE_URI}/dock-${theme}.svg`,\n onClick: () => {\n generateCutoutFromSelection(cesdk);\n }\n });\n }\n );\n}\n", "import { AssetDefinition, AssetResult, CreativeEngine } from '@cesdk/cesdk-js';\n\nasync function loadAssetSourceFromContentJSON(\n engine: CreativeEngine,\n content: ContentJSON,\n baseURL = '',\n applyAsset?: ((asset: AssetResult) => Promise<number | undefined>) | undefined\n) {\n const { assets, id: sourceId } = content;\n\n engine.asset.addLocalSource(sourceId, undefined, applyAsset);\n assets.forEach((asset) => {\n if (asset.meta) {\n Object.entries(asset.meta).forEach(([key, value]: [any, any]) => {\n const stringValue: string = value.toString();\n if (stringValue.includes('{{base_url}}')) {\n const updated = stringValue.replace('{{base_url}}', baseURL);\n if (asset.meta) {\n asset.meta[key] = updated;\n }\n }\n });\n }\n\n if (asset.payload?.sourceSet) {\n asset.payload.sourceSet.forEach((sourceSet) => {\n sourceSet.uri = sourceSet.uri.replace('{{base_url}}', baseURL);\n });\n }\n\n engine.asset.addAssetToSource(sourceId, asset);\n });\n}\nexport type ContentJSON = {\n version: string;\n id: string;\n assets: AssetDefinition[];\n};\n\nexport default loadAssetSourceFromContentJSON;\n", "import type CreativeEditorSDK from '@cesdk/cesdk-js';\nimport { CreativeEngine, type EditorPlugin } from '@cesdk/cesdk-js';\nimport {\n DEFAULT_PLUGIN_CONFIGURATION,\n PluginConfiguration,\n getPluginConfiguration\n} from '.';\nimport { registerComponents } from './components';\nimport { ASSET_SOURCE_ID, ENTRY_ID } from './constants';\nimport loadAssetSourceFromContentJSON from './loadAssetSourceFromContentJSON';\n\nexport function CutoutPlugin({\n assetBaseUri,\n addCanvasMenuButton\n}: PluginConfiguration): EditorPlugin {\n return {\n initializeUserInterface: ({ cesdk }) => {\n addCutoutAssetSource(cesdk, { assetBaseUri });\n if (addCanvasMenuButton) registerComponents(cesdk);\n cesdk.setTranslations({\n en: {\n [`libraries.${ENTRY_ID}.label`]: 'Cutouts'\n }\n });\n }\n };\n}\n\nexport function GetCutoutLibraryInsertEntry(\n config: Partial<PluginConfiguration> = DEFAULT_PLUGIN_CONFIGURATION\n) {\n const { assetBaseUri } = getPluginConfiguration(config);\n return {\n id: ENTRY_ID,\n sourceIds: [ASSET_SOURCE_ID],\n icon: ({ theme }: { theme: string }) => `${assetBaseUri}/dock-${theme}.svg`,\n gridColumns: 2,\n gridItemHeight: 'square' as const,\n cardLabel: (asset: any) => asset.label,\n cardLabelPosition: () => 'below' as const\n };\n}\n\nasync function addCutoutAssetSource(\n cesdk: CreativeEditorSDK,\n {\n assetBaseUri\n }: {\n assetBaseUri: string;\n }\n) {\n const contentJSON = await fetch(\n `${assetBaseUri}/${ASSET_SOURCE_ID}/content.json`\n ).then((res) => res.json());\n\n loadAssetSourceFromContentJSON(\n cesdk.engine,\n contentJSON,\n `${assetBaseUri}/${ASSET_SOURCE_ID}/assets`,\n async (asset) => {\n if (asset.id === 'cutout-selection') {\n return generateCutoutFromSelection(cesdk);\n }\n if (!asset.meta || !asset.meta.vectorPath2) {\n return;\n }\n // Workaround to enable proper thumbnails for predefined cutouts\n // @ts-ignore\n asset.meta.vectorPath = asset.meta.vectorPath2;\n const blockId = await cesdk.engine.asset.defaultApplyAsset(asset);\n return blockId;\n }\n );\n}\n\nexport function generateCutoutFromSelection(cesdk: CreativeEditorSDK) {\n const selectedBlockIds = cesdk.engine.block.findAllSelected();\n\n if (selectedBlockIds.length === 0) {\n cesdk.ui.showNotification({\n message: 'Please Select',\n type: 'error'\n });\n return undefined;\n }\n const hasCutoutsSelected = selectedBlockIds.some((selectedBlockId) => {\n return (\n cesdk.engine.block.getType(selectedBlockId) === '//ly.img.ubq/cutout'\n );\n });\n if (hasCutoutsSelected) {\n cesdk.ui.showNotification({\n message: 'Cutout blocks cannot be cutout from selection',\n type: 'error'\n });\n return undefined;\n }\n\n const parentPageBlockIds = selectedBlockIds.map((block) =>\n getParentPageId(cesdk.engine, block)\n );\n const uniqueParentPageBlockIds = Array.from(new Set(parentPageBlockIds));\n // throw error if blocks are from different pages\n if (uniqueParentPageBlockIds.length > 1) {\n cesdk.ui.showNotification({\n message:\n 'Selected Blocks are from different pages. Please select blocks from the same page.',\n type: 'error'\n });\n return undefined;\n }\n const pageId = uniqueParentPageBlockIds[0];\n\n const blockId = cesdk.engine.block.createCutoutFromBlocks(selectedBlockIds);\n cesdk.engine.block.appendChild(pageId, blockId);\n cesdk.engine.block.setAlwaysOnTop(blockId, true);\n cesdk.engine.block.select(blockId);\n cesdk.engine.editor.addUndoStep();\n return blockId;\n}\n\nfunction getParentPageId(engine: CreativeEngine, block: number) {\n // traverse up the block tree to find the page\n let currentBlock = block;\n while (\n currentBlock &&\n engine.block.getType(currentBlock) !== '//ly.img.ubq/page'\n ) {\n const parentBlock = engine.block.getParent(currentBlock);\n if (!parentBlock || parentBlock === currentBlock) {\n return currentBlock;\n }\n currentBlock = parentBlock;\n }\n return currentBlock;\n}\n\nexport default CutoutPlugin;\n", "import plugin, {\n GetCutoutLibraryInsertEntry,\n generateCutoutFromSelection\n} from './plugin';\n\nexport const DEFAULT_ASSET_BASE_URI = `https://staticimgly.com/${PLUGIN_NAME.replace(\n '@',\n ''\n)}/${PLUGIN_VERSION}/dist/assets`;\n\nexport const DEFAULT_PLUGIN_CONFIGURATION = {\n assetBaseUri: DEFAULT_ASSET_BASE_URI,\n addCanvasMenuButton: true\n};\n\nexport interface PluginConfiguration {\n assetBaseUri: string;\n addCanvasMenuButton: boolean;\n}\n\nexport function getPluginConfiguration(\n config: Partial<PluginConfiguration>\n): PluginConfiguration {\n return { ...DEFAULT_PLUGIN_CONFIGURATION, ...config };\n}\n\nconst Plugin = (\n config: Partial<PluginConfiguration> = DEFAULT_PLUGIN_CONFIGURATION\n) => ({\n name: PLUGIN_NAME,\n version: PLUGIN_VERSION,\n ...plugin({ ...DEFAULT_PLUGIN_CONFIGURATION, ...config })\n});\n\nexport default Plugin;\n\nexport { GetCutoutLibraryInsertEntry, generateCutoutFromSelection };\n"],
5
- "mappings": "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",
6
- "names": ["CANVAS_MENU_COMPONENT_ID", "CANVAS_MENU_COMPONENT_BUTTON_ID", "ASSET_SOURCE_ID", "ENTRY_ID", "registerComponents", "cesdk", "CANVAS_MENU_COMPONENT_ID", "CANVAS_MENU_COMPONENT_BUTTON_I18N_ID", "CANVAS_MENU_COMPONENT_BUTTON_ID", "Button", "engine", "allowedTypes", "selectedBlockIds", "theme", "DEFAULT_ASSET_BASE_URI", "generateCutoutFromSelection", "loadAssetSourceFromContentJSON", "engine", "content", "baseURL", "applyAsset", "assets", "sourceId", "asset", "key", "value", "stringValue", "updated", "sourceSet", "loadAssetSourceFromContentJSON_default", "CutoutPlugin", "assetBaseUri", "addCanvasMenuButton", "cesdk", "addCutoutAssetSource", "registerComponents", "ENTRY_ID", "GetCutoutLibraryInsertEntry", "config", "DEFAULT_PLUGIN_CONFIGURATION", "getPluginConfiguration", "ASSET_SOURCE_ID", "theme", "asset", "contentJSON", "res", "loadAssetSourceFromContentJSON_default", "generateCutoutFromSelection", "selectedBlockIds", "selectedBlockId", "parentPageBlockIds", "block", "getParentPageId", "uniqueParentPageBlockIds", "pageId", "blockId", "engine", "currentBlock", "parentBlock", "plugin_default", "DEFAULT_ASSET_BASE_URI", "DEFAULT_PLUGIN_CONFIGURATION", "getPluginConfiguration", "config", "Plugin", "plugin_default", "src_default"]
4
+ "sourcesContent": ["export const VERSION = PLUGIN_VERSION;\nexport const CANVAS_MENU_COMPONENT_ID = `${PLUGIN_NAME}.canvasMenu`;\nexport const CANVAS_MENU_COMPONENT_BUTTON_ID = `${CANVAS_MENU_COMPONENT_ID}.button`;\nexport const CANVAS_MENU_COMPONENT_BUTTON_LABEL = `${CANVAS_MENU_COMPONENT_BUTTON_ID}.label`;\n\nexport const FEATURE_ID = `${PLUGIN_NAME}.feature`;\nexport const ASSET_SOURCE_ID = 'ly.img.cutout';\nexport const ENTRY_ID = `${ASSET_SOURCE_ID}.entry`;\n\nexport const NOTIFICATION_SELECT_CUTOUT_BLOCK_ID = `${PLUGIN_NAME}.notifications.selectCutoutBlock`;\nexport const NOTIFICATION_CUTOUT_BLOCK_SELECTED_ID = `${PLUGIN_NAME}.notifications.cutoutBlockSelected`;\nexport const NOTIFICATION_DIFFERENT_PAGES_ID = `${PLUGIN_NAME}.notifications.differentPages`;\n\nexport const I18N = {\n en: {\n [`libraries.${ENTRY_ID}.label`]: 'Cutouts',\n [NOTIFICATION_SELECT_CUTOUT_BLOCK_ID]: 'Please select a block to cutout',\n [NOTIFICATION_CUTOUT_BLOCK_SELECTED_ID]:\n 'Cutout blocks cannot be cutout from selection',\n [NOTIFICATION_DIFFERENT_PAGES_ID]:\n 'Selected Blocks are from different pages. Please select blocks from the same page.',\n [CANVAS_MENU_COMPONENT_BUTTON_LABEL]: 'Cutout'\n },\n de: {\n [`libraries.${ENTRY_ID}.label`]: 'Schnittlinien',\n [NOTIFICATION_SELECT_CUTOUT_BLOCK_ID]:\n 'Bitte w\u00E4hlen Sie einen Block zum Ausschneiden aus',\n [NOTIFICATION_CUTOUT_BLOCK_SELECTED_ID]:\n 'Schnittlinienbl\u00F6cke k\u00F6nnen nicht ausgeschnitten werden',\n [NOTIFICATION_DIFFERENT_PAGES_ID]:\n 'Ausgew\u00E4hlte Bl\u00F6cke stammen aus verschiedenen Seiten. Bitte w\u00E4hlen Sie Bl\u00F6cke von derselben Seite aus.',\n [CANVAS_MENU_COMPONENT_BUTTON_LABEL]: 'Ausschneiden'\n }\n} as const;\n", "import CreativeEditorSDK, { ObjectTypeLonghand } from '@cesdk/cesdk-js';\nimport { DEFAULT_ASSET_BASE_URI } from '.';\nimport {\n CANVAS_MENU_COMPONENT_BUTTON_ID,\n CANVAS_MENU_COMPONENT_BUTTON_LABEL,\n CANVAS_MENU_COMPONENT_ID\n} from './constants';\nimport { generateCutoutFromSelection } from './plugin';\n\nexport function registerComponents(cesdk: CreativeEditorSDK) {\n cesdk.ui.unstable_registerComponent(\n CANVAS_MENU_COMPONENT_ID,\n ({ builder: { Button }, engine }) => {\n // only show canvas menu button for type=graphic, type=text, type=group\n const allowedTypes: ObjectTypeLonghand[] = [\n '//ly.img.ubq/group',\n '//ly.img.ubq/graphic',\n '//ly.img.ubq/text'\n ] as const;\n const selectedBlockIds = engine.block.findAllSelected();\n if (\n selectedBlockIds.length !== 1 ||\n !allowedTypes.includes(engine.block.getType(selectedBlockIds[0]))\n ) {\n return null;\n }\n Button(CANVAS_MENU_COMPONENT_BUTTON_ID, {\n label: CANVAS_MENU_COMPONENT_BUTTON_LABEL,\n icon: ({ theme }) => `${DEFAULT_ASSET_BASE_URI}/dock-${theme}.svg`,\n onClick: () => {\n generateCutoutFromSelection(cesdk);\n }\n });\n }\n );\n}\n", "import { AssetDefinition, AssetResult, CreativeEngine } from '@cesdk/cesdk-js';\n\nasync function loadAssetSourceFromContentJSON(\n engine: CreativeEngine,\n content: ContentJSON,\n baseURL = '',\n applyAsset?: ((asset: AssetResult) => Promise<number | undefined>) | undefined\n) {\n const { assets, id: sourceId } = content;\n\n engine.asset.addLocalSource(sourceId, undefined, applyAsset);\n assets.forEach((asset) => {\n if (asset.meta) {\n Object.entries(asset.meta).forEach(([key, value]: [any, any]) => {\n const stringValue: string = value.toString();\n if (stringValue.includes('{{base_url}}')) {\n const updated = stringValue.replace('{{base_url}}', baseURL);\n if (asset.meta) {\n asset.meta[key] = updated;\n }\n }\n });\n }\n\n if (asset.payload?.sourceSet) {\n asset.payload.sourceSet.forEach((sourceSet) => {\n sourceSet.uri = sourceSet.uri.replace('{{base_url}}', baseURL);\n });\n }\n\n engine.asset.addAssetToSource(sourceId, asset);\n });\n}\nexport type ContentJSON = {\n version: string;\n id: string;\n assets: AssetDefinition[];\n};\n\nexport default loadAssetSourceFromContentJSON;\n", "import type CreativeEditorSDK from '@cesdk/cesdk-js';\nimport {\n CreativeEngine,\n UserInterfaceElements,\n type EditorPlugin\n} from '@cesdk/cesdk-js';\nimport {\n DEFAULT_PLUGIN_CONFIGURATION,\n PluginConfiguration,\n getPluginConfiguration\n} from '.';\nimport { registerComponents } from './components';\nimport {\n ASSET_SOURCE_ID,\n CANVAS_MENU_COMPONENT_ID,\n ENTRY_ID,\n I18N,\n NOTIFICATION_CUTOUT_BLOCK_SELECTED_ID,\n NOTIFICATION_DIFFERENT_PAGES_ID,\n NOTIFICATION_SELECT_CUTOUT_BLOCK_ID\n} from './constants';\nimport loadAssetSourceFromContentJSON from './loadAssetSourceFromContentJSON';\n\nexport type UILocations = 'canvasMenu';\n\nexport interface UserInterfaceConfiguration {\n locations?: UILocations[];\n}\n\nexport function CutoutPlugin({\n assetBaseUri,\n ui\n}: PluginConfiguration): EditorPlugin {\n return {\n initializeUserInterface: ({ cesdk }) => {\n addCutoutAssetSource(cesdk, { assetBaseUri });\n registerComponents(cesdk);\n if (ui?.locations.includes('canvasMenu')) {\n cesdk.ui.unstable_setCanvasMenuOrder([\n CANVAS_MENU_COMPONENT_ID,\n ...cesdk.ui.unstable_getCanvasMenuOrder()\n ]);\n }\n cesdk.setTranslations(I18N);\n }\n };\n}\n\nexport function getCutoutLibraryInsertEntry(\n config: Partial<PluginConfiguration> = DEFAULT_PLUGIN_CONFIGURATION\n): UserInterfaceElements.AssetLibraryEntry {\n const { assetBaseUri } = getPluginConfiguration(config);\n return {\n id: ENTRY_ID,\n sourceIds: [ASSET_SOURCE_ID],\n icon: ({ theme }: { theme: string }) => `${assetBaseUri}/dock-${theme}.svg`,\n gridColumns: 2,\n gridItemHeight: 'square' as const,\n cardLabel: (asset: any) => asset.label,\n cardLabelPosition: () => 'below' as const,\n cardBackgroundPreferences: [{ path: 'meta.thumbUri', type: 'image' }]\n };\n}\n\nasync function addCutoutAssetSource(\n cesdk: CreativeEditorSDK,\n {\n assetBaseUri\n }: {\n assetBaseUri: string;\n }\n) {\n const contentJSON = await fetch(\n `${assetBaseUri}/${ASSET_SOURCE_ID}/content.json`\n ).then((res) => res.json());\n\n loadAssetSourceFromContentJSON(\n cesdk.engine,\n contentJSON,\n `${assetBaseUri}/${ASSET_SOURCE_ID}/assets`,\n async (asset) => {\n if (asset.id === 'cutout-selection') {\n return generateCutoutFromSelection(cesdk);\n }\n const blockId = await cesdk.engine.asset.defaultApplyAsset(asset);\n return blockId;\n }\n );\n}\n\nexport function generateCutoutFromSelection(cesdk: CreativeEditorSDK) {\n const selectedBlockIds = cesdk.engine.block.findAllSelected();\n\n if (selectedBlockIds.length === 0) {\n cesdk.ui.showNotification({\n message: NOTIFICATION_SELECT_CUTOUT_BLOCK_ID,\n type: 'error'\n });\n return undefined;\n }\n const hasCutoutsSelected = selectedBlockIds.some((selectedBlockId) => {\n return (\n cesdk.engine.block.getType(selectedBlockId) === '//ly.img.ubq/cutout'\n );\n });\n if (hasCutoutsSelected) {\n cesdk.ui.showNotification({\n message: NOTIFICATION_CUTOUT_BLOCK_SELECTED_ID,\n type: 'error'\n });\n return undefined;\n }\n\n const parentPageBlockIds = selectedBlockIds.map((block) =>\n getParentPageId(cesdk.engine, block)\n );\n const uniqueParentPageBlockIds = Array.from(new Set(parentPageBlockIds));\n // throw error if blocks are from different pages\n if (uniqueParentPageBlockIds.length > 1) {\n cesdk.ui.showNotification({\n message: NOTIFICATION_DIFFERENT_PAGES_ID,\n type: 'error'\n });\n return undefined;\n }\n const pageId = uniqueParentPageBlockIds[0];\n\n const blockId = cesdk.engine.block.createCutoutFromBlocks(selectedBlockIds);\n cesdk.engine.block.appendChild(pageId, blockId);\n cesdk.engine.block.setAlwaysOnTop(blockId, true);\n cesdk.engine.block.select(blockId);\n cesdk.engine.editor.addUndoStep();\n return blockId;\n}\n\nfunction getParentPageId(engine: CreativeEngine, block: number) {\n // traverse up the block tree to find the page\n let currentBlock = block;\n while (\n currentBlock &&\n engine.block.getType(currentBlock) !== '//ly.img.ubq/page'\n ) {\n const parentBlock = engine.block.getParent(currentBlock);\n if (!parentBlock || parentBlock === currentBlock) {\n return currentBlock;\n }\n currentBlock = parentBlock;\n }\n return currentBlock;\n}\n\nexport default CutoutPlugin;\n", "import plugin, {\n UILocations,\n generateCutoutFromSelection,\n getCutoutLibraryInsertEntry\n} from './plugin';\n\nexport const DEFAULT_ASSET_BASE_URI = `https://staticimgly.com/${PLUGIN_NAME.replace(\n '@',\n ''\n)}/${PLUGIN_VERSION}/dist/assets`;\n\nexport const DEFAULT_PLUGIN_CONFIGURATION = {\n assetBaseUri: DEFAULT_ASSET_BASE_URI\n};\n\nexport interface PluginConfiguration {\n assetBaseUri: string;\n ui?: {\n locations: UILocations[];\n };\n}\n\nexport function getPluginConfiguration(\n config: Partial<PluginConfiguration>\n): PluginConfiguration {\n return { ...DEFAULT_PLUGIN_CONFIGURATION, ...config };\n}\n\nconst Plugin = (\n config: Partial<PluginConfiguration> = DEFAULT_PLUGIN_CONFIGURATION\n) => ({\n name: PLUGIN_NAME,\n version: PLUGIN_VERSION,\n ...plugin({ ...DEFAULT_PLUGIN_CONFIGURATION, ...config })\n});\n\nexport default Plugin;\n\nexport { generateCutoutFromSelection, getCutoutLibraryInsertEntry };\n"],
5
+ "mappings": "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",
6
+ "names": ["CANVAS_MENU_COMPONENT_ID", "CANVAS_MENU_COMPONENT_BUTTON_ID", "CANVAS_MENU_COMPONENT_BUTTON_LABEL", "ASSET_SOURCE_ID", "ENTRY_ID", "NOTIFICATION_SELECT_CUTOUT_BLOCK_ID", "NOTIFICATION_CUTOUT_BLOCK_SELECTED_ID", "NOTIFICATION_DIFFERENT_PAGES_ID", "I18N", "CANVAS_MENU_COMPONENT_BUTTON_LABEL", "registerComponents", "cesdk", "CANVAS_MENU_COMPONENT_ID", "Button", "engine", "allowedTypes", "selectedBlockIds", "CANVAS_MENU_COMPONENT_BUTTON_ID", "CANVAS_MENU_COMPONENT_BUTTON_LABEL", "theme", "DEFAULT_ASSET_BASE_URI", "generateCutoutFromSelection", "loadAssetSourceFromContentJSON", "engine", "content", "baseURL", "applyAsset", "assets", "sourceId", "asset", "key", "value", "stringValue", "updated", "sourceSet", "loadAssetSourceFromContentJSON_default", "CutoutPlugin", "assetBaseUri", "ui", "cesdk", "addCutoutAssetSource", "registerComponents", "CANVAS_MENU_COMPONENT_ID", "I18N", "getCutoutLibraryInsertEntry", "config", "DEFAULT_PLUGIN_CONFIGURATION", "getPluginConfiguration", "ENTRY_ID", "ASSET_SOURCE_ID", "theme", "asset", "contentJSON", "res", "loadAssetSourceFromContentJSON_default", "generateCutoutFromSelection", "selectedBlockIds", "NOTIFICATION_SELECT_CUTOUT_BLOCK_ID", "selectedBlockId", "NOTIFICATION_CUTOUT_BLOCK_SELECTED_ID", "parentPageBlockIds", "block", "getParentPageId", "uniqueParentPageBlockIds", "NOTIFICATION_DIFFERENT_PAGES_ID", "pageId", "blockId", "engine", "currentBlock", "parentBlock", "plugin_default", "DEFAULT_ASSET_BASE_URI", "DEFAULT_PLUGIN_CONFIGURATION", "getPluginConfiguration", "config", "Plugin", "plugin_default", "src_default"]
7
7
  }
package/dist/plugin.d.ts CHANGED
@@ -1,17 +1,11 @@
1
1
  import type CreativeEditorSDK from '@cesdk/cesdk-js';
2
- import { type EditorPlugin } from '@cesdk/cesdk-js';
2
+ import { UserInterfaceElements, type EditorPlugin } from '@cesdk/cesdk-js';
3
3
  import { PluginConfiguration } from '.';
4
- export declare function CutoutPlugin({ assetBaseUri, addCanvasMenuButton }: PluginConfiguration): EditorPlugin;
5
- export declare function GetCutoutLibraryInsertEntry(config?: Partial<PluginConfiguration>): {
6
- id: string;
7
- sourceIds: string[];
8
- icon: ({ theme }: {
9
- theme: string;
10
- }) => string;
11
- gridColumns: number;
12
- gridItemHeight: "square";
13
- cardLabel: (asset: any) => any;
14
- cardLabelPosition: () => "below";
15
- };
4
+ export type UILocations = 'canvasMenu';
5
+ export interface UserInterfaceConfiguration {
6
+ locations?: UILocations[];
7
+ }
8
+ export declare function CutoutPlugin({ assetBaseUri, ui }: PluginConfiguration): EditorPlugin;
9
+ export declare function getCutoutLibraryInsertEntry(config?: Partial<PluginConfiguration>): UserInterfaceElements.AssetLibraryEntry;
16
10
  export declare function generateCutoutFromSelection(cesdk: CreativeEditorSDK): number | undefined;
17
11
  export default CutoutPlugin;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@imgly/plugin-cutout-library-web",
3
- "version": "0.0.3-rc.1",
3
+ "version": "0.1.0",
4
4
  "description": "Cutout Library plugin for the CE.SDK editor",
5
5
  "keywords": [
6
6
  "CE.SDK",