@imgly/plugin-cutout-library-web 0.0.2 → 0.0.3-rc.1
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/dist/index.mjs +1 -185
- package/dist/index.mjs.map +3 -3
- package/package.json +1 -1
package/dist/index.mjs
CHANGED
|
@@ -1,186 +1,2 @@
|
|
|
1
|
-
//
|
|
2
|
-
var CANVAS_MENU_COMPONENT_ID = `${"@imgly/plugin-cutout-library-web"}.canvasMenu`;
|
|
3
|
-
var CANVAS_MENU_COMPONENT_BUTTON_ID = `${CANVAS_MENU_COMPONENT_ID}.button`;
|
|
4
|
-
var ASSET_SOURCE_ID = "ly.img.cutout";
|
|
5
|
-
var ENTRY_ID = `${ASSET_SOURCE_ID}.entry`;
|
|
6
|
-
|
|
7
|
-
// src/components.ts
|
|
8
|
-
function registerComponents(cesdk) {
|
|
9
|
-
cesdk.ui.unstable_setCanvasMenuOrder([
|
|
10
|
-
CANVAS_MENU_COMPONENT_ID,
|
|
11
|
-
...cesdk.ui.unstable_getCanvasMenuOrder()
|
|
12
|
-
]);
|
|
13
|
-
const CANVAS_MENU_COMPONENT_BUTTON_I18N_ID = `${CANVAS_MENU_COMPONENT_BUTTON_ID}.label`;
|
|
14
|
-
cesdk.setTranslations({
|
|
15
|
-
en: {
|
|
16
|
-
[CANVAS_MENU_COMPONENT_BUTTON_I18N_ID]: "Cutout"
|
|
17
|
-
}
|
|
18
|
-
});
|
|
19
|
-
cesdk.ui.unstable_registerComponent(
|
|
20
|
-
CANVAS_MENU_COMPONENT_ID,
|
|
21
|
-
({ builder: { Button }, engine }) => {
|
|
22
|
-
const allowedTypes = [
|
|
23
|
-
"//ly.img.ubq/graphic",
|
|
24
|
-
"//ly.img.ubq/text"
|
|
25
|
-
];
|
|
26
|
-
const selectedBlockIds = engine.block.findAllSelected();
|
|
27
|
-
if (selectedBlockIds.length !== 1 || !allowedTypes.includes(engine.block.getType(selectedBlockIds[0]))) {
|
|
28
|
-
return null;
|
|
29
|
-
}
|
|
30
|
-
Button(CANVAS_MENU_COMPONENT_BUTTON_ID, {
|
|
31
|
-
label: CANVAS_MENU_COMPONENT_BUTTON_I18N_ID,
|
|
32
|
-
icon: `${DEFAULT_ASSET_BASE_URI}/dock-light.svg`,
|
|
33
|
-
onClick: () => {
|
|
34
|
-
generateCutoutFromSelection(cesdk);
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
);
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
// src/loadAssetSourceFromContentJSON.ts
|
|
42
|
-
async function loadAssetSourceFromContentJSON(engine, content, baseURL = "", applyAsset) {
|
|
43
|
-
const { assets, id: sourceId } = content;
|
|
44
|
-
engine.asset.addLocalSource(sourceId, void 0, applyAsset);
|
|
45
|
-
assets.forEach((asset) => {
|
|
46
|
-
if (asset.meta) {
|
|
47
|
-
Object.entries(asset.meta).forEach(([key, value]) => {
|
|
48
|
-
const stringValue = value.toString();
|
|
49
|
-
if (stringValue.includes("{{base_url}}")) {
|
|
50
|
-
const updated = stringValue.replace("{{base_url}}", baseURL);
|
|
51
|
-
if (asset.meta) {
|
|
52
|
-
asset.meta[key] = updated;
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
if (asset.payload?.sourceSet) {
|
|
58
|
-
asset.payload.sourceSet.forEach((sourceSet) => {
|
|
59
|
-
sourceSet.uri = sourceSet.uri.replace("{{base_url}}", baseURL);
|
|
60
|
-
});
|
|
61
|
-
}
|
|
62
|
-
engine.asset.addAssetToSource(sourceId, asset);
|
|
63
|
-
});
|
|
64
|
-
}
|
|
65
|
-
var loadAssetSourceFromContentJSON_default = loadAssetSourceFromContentJSON;
|
|
66
|
-
|
|
67
|
-
// src/plugin.ts
|
|
68
|
-
function CutoutPlugin({
|
|
69
|
-
assetBaseUri,
|
|
70
|
-
addCanvasMenuButton
|
|
71
|
-
}) {
|
|
72
|
-
return {
|
|
73
|
-
initializeUserInterface: ({ cesdk }) => {
|
|
74
|
-
addCutoutAssetSource(cesdk, { assetBaseUri });
|
|
75
|
-
if (addCanvasMenuButton)
|
|
76
|
-
registerComponents(cesdk);
|
|
77
|
-
cesdk.setTranslations({
|
|
78
|
-
en: {
|
|
79
|
-
[`libraries.${ENTRY_ID}.label`]: "Cutouts"
|
|
80
|
-
}
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
};
|
|
84
|
-
}
|
|
85
|
-
function GetCutoutLibraryInsertEntry(config = DEFAULT_PLUGIN_CONFIGURATION) {
|
|
86
|
-
const { assetBaseUri } = getPluginConfiguration(config);
|
|
87
|
-
return {
|
|
88
|
-
id: ENTRY_ID,
|
|
89
|
-
sourceIds: [ASSET_SOURCE_ID],
|
|
90
|
-
icon: ({ theme }) => `${assetBaseUri}/dock-${theme}.svg`,
|
|
91
|
-
gridColumns: 2,
|
|
92
|
-
gridItemHeight: "square",
|
|
93
|
-
cardLabel: (asset) => asset.label,
|
|
94
|
-
cardLabelPosition: () => "below"
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
async function addCutoutAssetSource(cesdk, {
|
|
98
|
-
assetBaseUri
|
|
99
|
-
}) {
|
|
100
|
-
const contentJSON = await fetch(
|
|
101
|
-
`${assetBaseUri}/${ASSET_SOURCE_ID}/content.json`
|
|
102
|
-
).then((res) => res.json());
|
|
103
|
-
loadAssetSourceFromContentJSON_default(
|
|
104
|
-
cesdk.engine,
|
|
105
|
-
contentJSON,
|
|
106
|
-
`${assetBaseUri}/${ASSET_SOURCE_ID}/assets`,
|
|
107
|
-
async (asset) => {
|
|
108
|
-
if (asset.id === "cutout-selection") {
|
|
109
|
-
return generateCutoutFromSelection(cesdk);
|
|
110
|
-
}
|
|
111
|
-
if (!asset.meta || !asset.meta.vectorPath2) {
|
|
112
|
-
return;
|
|
113
|
-
}
|
|
114
|
-
asset.meta.vectorPath = asset.meta.vectorPath2;
|
|
115
|
-
const blockId = await cesdk.engine.asset.defaultApplyAsset(asset);
|
|
116
|
-
return blockId;
|
|
117
|
-
}
|
|
118
|
-
);
|
|
119
|
-
}
|
|
120
|
-
function generateCutoutFromSelection(cesdk) {
|
|
121
|
-
const pageId = cesdk.engine.scene.getCurrentPage();
|
|
122
|
-
if (pageId == null) {
|
|
123
|
-
cesdk.ui.showNotification({
|
|
124
|
-
message: "No page block available to add the cutout from selection",
|
|
125
|
-
type: "error"
|
|
126
|
-
});
|
|
127
|
-
return void 0;
|
|
128
|
-
}
|
|
129
|
-
const pageChildren = cesdk.engine.block.getChildren(pageId);
|
|
130
|
-
const selectedBlockIds = cesdk.engine.block.findAllSelected().filter((selectedBlockId) => {
|
|
131
|
-
return pageChildren.includes(selectedBlockId);
|
|
132
|
-
});
|
|
133
|
-
if (selectedBlockIds.length > 0) {
|
|
134
|
-
const hasCutoutsSelected = selectedBlockIds.some((selectedBlockId) => {
|
|
135
|
-
return cesdk.engine.block.getType(selectedBlockId) === "//ly.img.ubq/cutout";
|
|
136
|
-
});
|
|
137
|
-
if (hasCutoutsSelected) {
|
|
138
|
-
cesdk.ui.showNotification({
|
|
139
|
-
message: "Cutout blocks cannot be cutout from selection",
|
|
140
|
-
type: "error"
|
|
141
|
-
});
|
|
142
|
-
return void 0;
|
|
143
|
-
}
|
|
144
|
-
const blockId = cesdk.engine.block.createCutoutFromBlocks(selectedBlockIds);
|
|
145
|
-
cesdk.engine.block.appendChild(pageId, blockId);
|
|
146
|
-
cesdk.engine.block.setAlwaysOnTop(blockId, true);
|
|
147
|
-
cesdk.engine.block.select(blockId);
|
|
148
|
-
cesdk.engine.editor.addUndoStep();
|
|
149
|
-
return blockId;
|
|
150
|
-
} else {
|
|
151
|
-
cesdk.ui.showNotification({
|
|
152
|
-
message: "No selected blocks available to cutout from selection",
|
|
153
|
-
type: "error"
|
|
154
|
-
});
|
|
155
|
-
return void 0;
|
|
156
|
-
}
|
|
157
|
-
}
|
|
158
|
-
var plugin_default = CutoutPlugin;
|
|
159
|
-
|
|
160
|
-
// src/index.ts
|
|
161
|
-
var DEFAULT_ASSET_BASE_URI = `https://staticimgly.com/${"@imgly/plugin-cutout-library-web".replace(
|
|
162
|
-
"@",
|
|
163
|
-
""
|
|
164
|
-
)}/${"0.0.2"}/dist/assets`;
|
|
165
|
-
var DEFAULT_PLUGIN_CONFIGURATION = {
|
|
166
|
-
assetBaseUri: DEFAULT_ASSET_BASE_URI,
|
|
167
|
-
addCanvasMenuButton: true
|
|
168
|
-
};
|
|
169
|
-
function getPluginConfiguration(config) {
|
|
170
|
-
return { ...DEFAULT_PLUGIN_CONFIGURATION, ...config };
|
|
171
|
-
}
|
|
172
|
-
var Plugin = (config = DEFAULT_PLUGIN_CONFIGURATION) => ({
|
|
173
|
-
name: "@imgly/plugin-cutout-library-web",
|
|
174
|
-
version: "0.0.2",
|
|
175
|
-
...plugin_default({ ...DEFAULT_PLUGIN_CONFIGURATION, ...config })
|
|
176
|
-
});
|
|
177
|
-
var src_default = Plugin;
|
|
178
|
-
export {
|
|
179
|
-
DEFAULT_ASSET_BASE_URI,
|
|
180
|
-
DEFAULT_PLUGIN_CONFIGURATION,
|
|
181
|
-
GetCutoutLibraryInsertEntry,
|
|
182
|
-
src_default as default,
|
|
183
|
-
generateCutoutFromSelection,
|
|
184
|
-
getPluginConfiguration
|
|
185
|
-
};
|
|
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};
|
|
186
2
|
//# sourceMappingURL=index.mjs.map
|
package/dist/index.mjs.map
CHANGED
|
@@ -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\n const allowedTypes: ObjectTypeLonghand[] = [\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: `${DEFAULT_ASSET_BASE_URI}/dock
|
|
5
|
-
"mappings": "
|
|
6
|
-
"names": []
|
|
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": "AACO,IAAMA,EAA2B,8CAC3BC,EAAkC,GAAGD,CAAwB,UAEnE,IAAME,EAAkB,gBAClBC,EAAW,GAAGD,CAAe,SCGnC,SAASE,EAAmBC,EAA0B,CAC3DA,EAAM,GAAG,4BAA4B,CACnCC,EACA,GAAGD,EAAM,GAAG,4BAA4B,CAC1C,CAAC,EAED,IAAME,EAAuC,GAAGC,CAA+B,SAE/EH,EAAM,gBAAgB,CACpB,GAAI,CACF,CAACE,CAAoC,EAAG,QAC1C,CACF,CAAC,EAEDF,EAAM,GAAG,2BACPC,EACA,CAAC,CAAE,QAAS,CAAE,OAAAG,CAAO,EAAG,OAAAC,CAAO,IAAM,CAEnC,IAAMC,EAAqC,CACzC,qBACA,uBACA,mBACF,EACMC,EAAmBF,EAAO,MAAM,gBAAgB,EACtD,GACEE,EAAiB,SAAW,GAC5B,CAACD,EAAa,SAASD,EAAO,MAAM,QAAQE,EAAiB,CAAC,CAAC,CAAC,EAEhE,OAAO,KAETH,EAAOD,EAAiC,CACtC,MAAOD,EACP,KAAM,CAAC,CAAE,MAAAM,CAAM,IAAM,GAAGC,CAAsB,SAASD,CAAK,OAC5D,QAAS,IAAM,CACbE,EAA4BV,CAAK,CACnC,CACF,CAAC,CACH,CACF,CACF,CC7CA,eAAeW,EACbC,EACAC,EACAC,EAAU,GACVC,EACA,CACA,GAAM,CAAE,OAAAC,EAAQ,GAAIC,CAAS,EAAIJ,EAEjCD,EAAO,MAAM,eAAeK,EAAU,OAAWF,CAAU,EAC3DC,EAAO,QAASE,GAAU,CACpBA,EAAM,MACR,OAAO,QAAQA,EAAM,IAAI,EAAE,QAAQ,CAAC,CAACC,EAAKC,CAAK,IAAkB,CAC/D,IAAMC,EAAsBD,EAAM,SAAS,EAC3C,GAAIC,EAAY,SAAS,cAAc,EAAG,CACxC,IAAMC,EAAUD,EAAY,QAAQ,eAAgBP,CAAO,EACvDI,EAAM,OACRA,EAAM,KAAKC,CAAG,EAAIG,EAEtB,CACF,CAAC,EAGCJ,EAAM,SAAS,WACjBA,EAAM,QAAQ,UAAU,QAASK,GAAc,CAC7CA,EAAU,IAAMA,EAAU,IAAI,QAAQ,eAAgBT,CAAO,CAC/D,CAAC,EAGHF,EAAO,MAAM,iBAAiBK,EAAUC,CAAK,CAC/C,CAAC,CACH,CAOA,IAAOM,EAAQb,EC5BR,SAASc,EAAa,CAC3B,aAAAC,EACA,oBAAAC,CACF,EAAsC,CACpC,MAAO,CACL,wBAAyB,CAAC,CAAE,MAAAC,CAAM,IAAM,CACtCC,EAAqBD,EAAO,CAAE,aAAAF,CAAa,CAAC,EACxCC,GAAqBG,EAAmBF,CAAK,EACjDA,EAAM,gBAAgB,CACpB,GAAI,CACF,CAAC,aAAaG,CAAQ,QAAQ,EAAG,SACnC,CACF,CAAC,CACH,CACF,CACF,CAEO,SAASC,EACdC,EAAuCC,EACvC,CACA,GAAM,CAAE,aAAAR,CAAa,EAAIS,EAAuBF,CAAM,EACtD,MAAO,CACL,GAAIF,EACJ,UAAW,CAACK,CAAe,EAC3B,KAAM,CAAC,CAAE,MAAAC,CAAM,IAAyB,GAAGX,CAAY,SAASW,CAAK,OACrE,YAAa,EACb,eAAgB,SAChB,UAAYC,GAAeA,EAAM,MACjC,kBAAmB,IAAM,OAC3B,CACF,CAEA,eAAeT,EACbD,EACA,CACE,aAAAF,CACF,EAGA,CACA,IAAMa,EAAc,MAAM,MACxB,GAAGb,CAAY,IAAIU,CAAe,eACpC,EAAE,KAAMI,GAAQA,EAAI,KAAK,CAAC,EAE1BC,EACEb,EAAM,OACNW,EACA,GAAGb,CAAY,IAAIU,CAAe,UAClC,MAAOE,GACDA,EAAM,KAAO,mBACRI,EAA4Bd,CAAK,EAEtC,CAACU,EAAM,MAAQ,CAACA,EAAM,KAAK,YAC7B,QAIFA,EAAM,KAAK,WAAaA,EAAM,KAAK,YACnB,MAAMV,EAAM,OAAO,MAAM,kBAAkBU,CAAK,EAGpE,CACF,CAEO,SAASI,EAA4Bd,EAA0B,CACpE,IAAMe,EAAmBf,EAAM,OAAO,MAAM,gBAAgB,EAE5D,GAAIe,EAAiB,SAAW,EAAG,CACjCf,EAAM,GAAG,iBAAiB,CACxB,QAAS,gBACT,KAAM,OACR,CAAC,EACD,MACF,CAMA,GAL2Be,EAAiB,KAAMC,GAE9ChB,EAAM,OAAO,MAAM,QAAQgB,CAAe,IAAM,qBAEnD,EACuB,CACtBhB,EAAM,GAAG,iBAAiB,CACxB,QAAS,gDACT,KAAM,OACR,CAAC,EACD,MACF,CAEA,IAAMiB,EAAqBF,EAAiB,IAAKG,GAC/CC,EAAgBnB,EAAM,OAAQkB,CAAK,CACrC,EACME,EAA2B,MAAM,KAAK,IAAI,IAAIH,CAAkB,CAAC,EAEvE,GAAIG,EAAyB,OAAS,EAAG,CACvCpB,EAAM,GAAG,iBAAiB,CACxB,QACE,qFACF,KAAM,OACR,CAAC,EACD,MACF,CACA,IAAMqB,EAASD,EAAyB,CAAC,EAEnCE,EAAUtB,EAAM,OAAO,MAAM,uBAAuBe,CAAgB,EAC1E,OAAAf,EAAM,OAAO,MAAM,YAAYqB,EAAQC,CAAO,EAC9CtB,EAAM,OAAO,MAAM,eAAesB,EAAS,EAAI,EAC/CtB,EAAM,OAAO,MAAM,OAAOsB,CAAO,EACjCtB,EAAM,OAAO,OAAO,YAAY,EACzBsB,CACT,CAEA,SAASH,EAAgBI,EAAwBL,EAAe,CAE9D,IAAIM,EAAeN,EACnB,KACEM,GACAD,EAAO,MAAM,QAAQC,CAAY,IAAM,qBACvC,CACA,IAAMC,EAAcF,EAAO,MAAM,UAAUC,CAAY,EACvD,GAAI,CAACC,GAAeA,IAAgBD,EAClC,OAAOA,EAETA,EAAeC,CACjB,CACA,OAAOD,CACT,CAEA,IAAOE,EAAQ7B,ECpIR,IAAM8B,EAAyB,2BAA2B,mCAAY,QAC3E,IACA,EACF,CAAC,0BAEYC,EAA+B,CAC1C,aAAcD,EACd,oBAAqB,EACvB,EAOO,SAASE,EACdC,EACqB,CACrB,MAAO,CAAE,GAAGF,EAA8B,GAAGE,CAAO,CACtD,CAEA,IAAMC,EAAS,CACbD,EAAuCF,KACnC,CACJ,KAAM,mCACN,QAAS,aACT,GAAGI,EAAO,CAAE,GAAGJ,EAA8B,GAAGE,CAAO,CAAC,CAC1D,GAEOG,EAAQF",
|
|
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"]
|
|
7
7
|
}
|