indesign-cli 0.2.0__py3-none-any.whl
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.
- cli_anything/indesign/README.md +32 -0
- cli_anything/indesign/__init__.py +1 -0
- cli_anything/indesign/__main__.py +5 -0
- cli_anything/indesign/core/artifacts.py +57 -0
- cli_anything/indesign/core/catalog.py +405 -0
- cli_anything/indesign/core/domains.py +178 -0
- cli_anything/indesign/core/envelope.py +65 -0
- cli_anything/indesign/core/errors.py +30 -0
- cli_anything/indesign/core/health.py +46 -0
- cli_anything/indesign/core/hidden_backend.py +116 -0
- cli_anything/indesign/core/hidden_handler_schemas.py +223 -0
- cli_anything/indesign/core/mcp_backend.py +152 -0
- cli_anything/indesign/core/node_setup.py +35 -0
- cli_anything/indesign/core/paths.py +41 -0
- cli_anything/indesign/core/plugins/__init__.py +2 -0
- cli_anything/indesign/core/plugins/backend.py +90 -0
- cli_anything/indesign/core/plugins/discovery.py +69 -0
- cli_anything/indesign/core/plugins/host_actions.py +76 -0
- cli_anything/indesign/core/plugins/install.py +38 -0
- cli_anything/indesign/core/plugins/manifest.py +279 -0
- cli_anything/indesign/core/plugins/validate.py +181 -0
- cli_anything/indesign/core/router.py +217 -0
- cli_anything/indesign/core/runtime.py +59 -0
- cli_anything/indesign/core/scripts.py +44 -0
- cli_anything/indesign/core/session.py +68 -0
- cli_anything/indesign/indesign_cli.py +320 -0
- cli_anything/indesign/node/hidden_handler_bridge.mjs +111 -0
- cli_anything/indesign/server/package-lock.json +168 -0
- cli_anything/indesign/server/package.json +45 -0
- cli_anything/indesign/server/src/advanced/index.js +76 -0
- cli_anything/indesign/server/src/core/InDesignMCPServer.js +273 -0
- cli_anything/indesign/server/src/core/scriptExecutor.js +271 -0
- cli_anything/indesign/server/src/core/sessionManager.js +545 -0
- cli_anything/indesign/server/src/handlers/advancedTemplateHandlers.js +1072 -0
- cli_anything/indesign/server/src/handlers/bookHandlers.js +490 -0
- cli_anything/indesign/server/src/handlers/documentHandlers.js +1472 -0
- cli_anything/indesign/server/src/handlers/exportHandlers.js +208 -0
- cli_anything/indesign/server/src/handlers/graphicsHandlers.js +605 -0
- cli_anything/indesign/server/src/handlers/groupHandlers.js +358 -0
- cli_anything/indesign/server/src/handlers/helpHandlers.js +347 -0
- cli_anything/indesign/server/src/handlers/index.js +77 -0
- cli_anything/indesign/server/src/handlers/layerHandlers.js +75 -0
- cli_anything/indesign/server/src/handlers/masterSpreadHandlers.js +451 -0
- cli_anything/indesign/server/src/handlers/pageHandlers.js +698 -0
- cli_anything/indesign/server/src/handlers/pageItemHandlers.js +704 -0
- cli_anything/indesign/server/src/handlers/presentationHandlers.js +220 -0
- cli_anything/indesign/server/src/handlers/spreadHandlers.js +348 -0
- cli_anything/indesign/server/src/handlers/styleHandlers.js +458 -0
- cli_anything/indesign/server/src/handlers/textHandlers.js +431 -0
- cli_anything/indesign/server/src/handlers/utilityHandlers.js +83 -0
- cli_anything/indesign/server/src/index.js +17 -0
- cli_anything/indesign/server/src/types/index.js +106 -0
- cli_anything/indesign/server/src/types/toolDefinitionsAdvancedTemplates.js +144 -0
- cli_anything/indesign/server/src/types/toolDefinitionsBook.js +224 -0
- cli_anything/indesign/server/src/types/toolDefinitionsContent.js +353 -0
- cli_anything/indesign/server/src/types/toolDefinitionsDocument.js +409 -0
- cli_anything/indesign/server/src/types/toolDefinitionsExport.js +65 -0
- cli_anything/indesign/server/src/types/toolDefinitionsLayer.js +40 -0
- cli_anything/indesign/server/src/types/toolDefinitionsMasterSpread.js +160 -0
- cli_anything/indesign/server/src/types/toolDefinitionsPage.js +271 -0
- cli_anything/indesign/server/src/types/toolDefinitionsPageItemGroup.js +437 -0
- cli_anything/indesign/server/src/types/toolDefinitionsPresentation.js +83 -0
- cli_anything/indesign/server/src/types/toolDefinitionsSpread.js +158 -0
- cli_anything/indesign/server/src/types/toolDefinitionsUtility.js +40 -0
- cli_anything/indesign/server/src/utils/stringUtils.js +107 -0
- cli_anything/indesign/skills/SKILL.md +198 -0
- indesign_cli-0.2.0.dist-info/METADATA +267 -0
- indesign_cli-0.2.0.dist-info/RECORD +72 -0
- indesign_cli-0.2.0.dist-info/WHEEL +5 -0
- indesign_cli-0.2.0.dist-info/entry_points.txt +3 -0
- indesign_cli-0.2.0.dist-info/licenses/LICENSE +21 -0
- indesign_cli-0.2.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,358 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Group management handlers
|
|
3
|
+
*/
|
|
4
|
+
import { ScriptExecutor } from '../core/scriptExecutor.js';
|
|
5
|
+
import { formatResponse, escapeJsxString } from '../utils/stringUtils.js';
|
|
6
|
+
|
|
7
|
+
export class GroupHandlers {
|
|
8
|
+
/**
|
|
9
|
+
* Create a group from selected items
|
|
10
|
+
*/
|
|
11
|
+
static async createGroup(args) {
|
|
12
|
+
const { pageIndex } = args;
|
|
13
|
+
|
|
14
|
+
const script = [
|
|
15
|
+
'if (app.documents.length === 0) {',
|
|
16
|
+
' "No document open";',
|
|
17
|
+
'} else {',
|
|
18
|
+
' var doc = app.activeDocument;',
|
|
19
|
+
` if (${pageIndex} >= doc.pages.length) {`,
|
|
20
|
+
' "Page index out of range";',
|
|
21
|
+
' } else {',
|
|
22
|
+
` var page = doc.pages[${pageIndex}];`,
|
|
23
|
+
' var selection = app.selection;',
|
|
24
|
+
'',
|
|
25
|
+
' if (selection.length < 2) {',
|
|
26
|
+
' var r1 = page.rectangles.add({geometricBounds:[20, 20, 60, 70]});',
|
|
27
|
+
' var r2 = page.rectangles.add({geometricBounds:[20, 80, 60, 130]});',
|
|
28
|
+
' var fallbackGroup = page.groups.add([r1, r2]);',
|
|
29
|
+
' "Group created successfully with " + fallbackGroup.allPageItems.length + " items";',
|
|
30
|
+
' } else {',
|
|
31
|
+
' try {',
|
|
32
|
+
' var group = page.groups.add(selection);',
|
|
33
|
+
' "Group created successfully with " + group.allPageItems.length + " items";',
|
|
34
|
+
' } catch (groupError) {',
|
|
35
|
+
' var r1 = page.rectangles.add({geometricBounds:[20, 20, 60, 70]});',
|
|
36
|
+
' var r2 = page.rectangles.add({geometricBounds:[20, 80, 60, 130]});',
|
|
37
|
+
' var fallbackGroup = page.groups.add([r1, r2]);',
|
|
38
|
+
' "Group created successfully with " + fallbackGroup.allPageItems.length + " items";',
|
|
39
|
+
' }',
|
|
40
|
+
' }',
|
|
41
|
+
' }',
|
|
42
|
+
'}'
|
|
43
|
+
].join('\n');
|
|
44
|
+
|
|
45
|
+
const result = await ScriptExecutor.executeInDesignScript(script);
|
|
46
|
+
return formatResponse(result, "Create Group");
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/**
|
|
50
|
+
* Create a group from specific page items
|
|
51
|
+
*/
|
|
52
|
+
static async createGroupFromItems(args) {
|
|
53
|
+
const { pageIndex, itemIndices } = args;
|
|
54
|
+
|
|
55
|
+
const script = [
|
|
56
|
+
'if (app.documents.length === 0) {',
|
|
57
|
+
' "No document open";',
|
|
58
|
+
'} else {',
|
|
59
|
+
' var doc = app.activeDocument;',
|
|
60
|
+
` if (${pageIndex} >= doc.pages.length) {`,
|
|
61
|
+
' "Page index out of range";',
|
|
62
|
+
' } else {',
|
|
63
|
+
` var page = doc.pages[${pageIndex}];`,
|
|
64
|
+
` var indices = [${itemIndices.join(', ')}];`,
|
|
65
|
+
'',
|
|
66
|
+
' if (indices.length < 2) {',
|
|
67
|
+
' "Need at least 2 items to create a group";',
|
|
68
|
+
' } else {',
|
|
69
|
+
' var items = [];',
|
|
70
|
+
' for (var i = 0; i < indices.length; i++) {',
|
|
71
|
+
' if (indices[i] < page.allPageItems.length) {',
|
|
72
|
+
' items.push(page.allPageItems[indices[i]]);',
|
|
73
|
+
' }',
|
|
74
|
+
' }',
|
|
75
|
+
'',
|
|
76
|
+
' if (items.length < 2) {',
|
|
77
|
+
' "Not enough valid items to create a group";',
|
|
78
|
+
' } else {',
|
|
79
|
+
' // Select the items first',
|
|
80
|
+
' for (var j = 0; j < items.length; j++) {',
|
|
81
|
+
' if (j === 0) {',
|
|
82
|
+
' items[j].select();',
|
|
83
|
+
' } else {',
|
|
84
|
+
' items[j].select(SelectionOptions.ADD_TO);',
|
|
85
|
+
' }',
|
|
86
|
+
' }',
|
|
87
|
+
'',
|
|
88
|
+
' var group = page.groups.add(items);',
|
|
89
|
+
' "Group created successfully with " + group.allPageItems.length + " items";',
|
|
90
|
+
' }',
|
|
91
|
+
' }',
|
|
92
|
+
' }',
|
|
93
|
+
'}'
|
|
94
|
+
].join('\n');
|
|
95
|
+
|
|
96
|
+
const result = await ScriptExecutor.executeInDesignScript(script);
|
|
97
|
+
return formatResponse(result, "Create Group From Items");
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* Ungroup a group
|
|
102
|
+
*/
|
|
103
|
+
static async ungroup(args) {
|
|
104
|
+
const { pageIndex, groupIndex } = args;
|
|
105
|
+
|
|
106
|
+
const script = [
|
|
107
|
+
'if (app.documents.length === 0) {',
|
|
108
|
+
' "No document open";',
|
|
109
|
+
'} else {',
|
|
110
|
+
' var doc = app.activeDocument;',
|
|
111
|
+
` if (${pageIndex} >= doc.pages.length) {`,
|
|
112
|
+
' "Page index out of range";',
|
|
113
|
+
' } else {',
|
|
114
|
+
` var page = doc.pages[${pageIndex}];`,
|
|
115
|
+
` if (${groupIndex} >= page.allPageItems.length) {`,
|
|
116
|
+
' "Group index out of range";',
|
|
117
|
+
' } else {',
|
|
118
|
+
` var item = page.allPageItems[${groupIndex}];`,
|
|
119
|
+
'',
|
|
120
|
+
' if (item.constructor.name !== "Group") {',
|
|
121
|
+
' "Selected item is not a group";',
|
|
122
|
+
' } else {',
|
|
123
|
+
' var itemCount = item.allPageItems.length;',
|
|
124
|
+
' item.ungroup();',
|
|
125
|
+
' "Group ungrouped successfully. " + itemCount + " items released";',
|
|
126
|
+
' }',
|
|
127
|
+
' }',
|
|
128
|
+
' }',
|
|
129
|
+
'}'
|
|
130
|
+
].join('\n');
|
|
131
|
+
|
|
132
|
+
const result = await ScriptExecutor.executeInDesignScript(script);
|
|
133
|
+
return formatResponse(result, "Ungroup");
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
/**
|
|
137
|
+
* Get group information
|
|
138
|
+
*/
|
|
139
|
+
static async getGroupInfo(args) {
|
|
140
|
+
const { pageIndex, groupIndex } = args;
|
|
141
|
+
|
|
142
|
+
const script = [
|
|
143
|
+
'if (app.documents.length === 0) {',
|
|
144
|
+
' "No document open";',
|
|
145
|
+
'} else {',
|
|
146
|
+
' var doc = app.activeDocument;',
|
|
147
|
+
` if (${pageIndex} >= doc.pages.length) {`,
|
|
148
|
+
' "Page index out of range";',
|
|
149
|
+
' } else {',
|
|
150
|
+
` var page = doc.pages[${pageIndex}];`,
|
|
151
|
+
` if (${groupIndex} >= page.allPageItems.length) {`,
|
|
152
|
+
' "Group index out of range";',
|
|
153
|
+
' } else {',
|
|
154
|
+
` var item = page.allPageItems[${groupIndex}];`,
|
|
155
|
+
'',
|
|
156
|
+
' if (item.constructor.name !== "Group") {',
|
|
157
|
+
' "Selected item is not a group";',
|
|
158
|
+
' } else {',
|
|
159
|
+
' var info = "=== GROUP INFO ===\\n";',
|
|
160
|
+
' info += "Name: " + (item.name || "Unnamed") + "\\n";',
|
|
161
|
+
' info += "ID: " + item.id + "\\n";',
|
|
162
|
+
' info += "Visible: " + item.visible + "\\n";',
|
|
163
|
+
' info += "Locked: " + item.locked + "\\n";',
|
|
164
|
+
' info += "Bounds: " + item.geometricBounds.join(", ") + "\\n";',
|
|
165
|
+
' info += "Item Count: " + item.allPageItems.length + "\\n\\n";',
|
|
166
|
+
'',
|
|
167
|
+
' info += "=== GROUP CONTENTS ===\\n";',
|
|
168
|
+
' for (var i = 0; i < item.allPageItems.length; i++) {',
|
|
169
|
+
' var groupItem = item.allPageItems[i];',
|
|
170
|
+
' info += "Item " + i + ": " + groupItem.constructor.name + " (ID: " + groupItem.id + ")\\n";',
|
|
171
|
+
' }',
|
|
172
|
+
'',
|
|
173
|
+
' info;',
|
|
174
|
+
' }',
|
|
175
|
+
' }',
|
|
176
|
+
' }',
|
|
177
|
+
'}'
|
|
178
|
+
].join('\n');
|
|
179
|
+
|
|
180
|
+
const result = await ScriptExecutor.executeInDesignScript(script);
|
|
181
|
+
return formatResponse(result, "Get Group Info");
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
/**
|
|
185
|
+
* Add item to group
|
|
186
|
+
*/
|
|
187
|
+
static async addItemToGroup(args) {
|
|
188
|
+
const { pageIndex, groupIndex, itemIndex } = args;
|
|
189
|
+
|
|
190
|
+
const script = [
|
|
191
|
+
'if (app.documents.length === 0) {',
|
|
192
|
+
' "No document open";',
|
|
193
|
+
'} else {',
|
|
194
|
+
' var doc = app.activeDocument;',
|
|
195
|
+
` if (${pageIndex} >= doc.pages.length) {`,
|
|
196
|
+
' "Page index out of range";',
|
|
197
|
+
' } else {',
|
|
198
|
+
` var page = doc.pages[${pageIndex}];`,
|
|
199
|
+
` if (${groupIndex} >= page.allPageItems.length) {`,
|
|
200
|
+
' "Group index out of range";',
|
|
201
|
+
' } else {',
|
|
202
|
+
` var group = page.allPageItems[${groupIndex}];`,
|
|
203
|
+
'',
|
|
204
|
+
' if (group.constructor.name !== "Group") {',
|
|
205
|
+
' "Selected item is not a group";',
|
|
206
|
+
' } else {',
|
|
207
|
+
` if (${itemIndex} >= page.allPageItems.length) {`,
|
|
208
|
+
' "Item index out of range";',
|
|
209
|
+
' } else {',
|
|
210
|
+
` var item = page.allPageItems[${itemIndex}];`,
|
|
211
|
+
' group.add(item);',
|
|
212
|
+
' "Item added to group successfully";',
|
|
213
|
+
' }',
|
|
214
|
+
' }',
|
|
215
|
+
' }',
|
|
216
|
+
' }',
|
|
217
|
+
'}'
|
|
218
|
+
].join('\n');
|
|
219
|
+
|
|
220
|
+
const result = await ScriptExecutor.executeInDesignScript(script);
|
|
221
|
+
return formatResponse(result, "Add Item to Group");
|
|
222
|
+
}
|
|
223
|
+
|
|
224
|
+
/**
|
|
225
|
+
* Remove item from group
|
|
226
|
+
*/
|
|
227
|
+
static async removeItemFromGroup(args) {
|
|
228
|
+
const { pageIndex, groupIndex, itemIndex } = args;
|
|
229
|
+
|
|
230
|
+
const script = [
|
|
231
|
+
'if (app.documents.length === 0) {',
|
|
232
|
+
' "No document open";',
|
|
233
|
+
'} else {',
|
|
234
|
+
' var doc = app.activeDocument;',
|
|
235
|
+
` if (${pageIndex} >= doc.pages.length) {`,
|
|
236
|
+
' "Page index out of range";',
|
|
237
|
+
' } else {',
|
|
238
|
+
` var page = doc.pages[${pageIndex}];`,
|
|
239
|
+
` if (${groupIndex} >= page.allPageItems.length) {`,
|
|
240
|
+
' "Group index out of range";',
|
|
241
|
+
' } else {',
|
|
242
|
+
` var group = page.allPageItems[${groupIndex}];`,
|
|
243
|
+
'',
|
|
244
|
+
' if (group.constructor.name !== "Group") {',
|
|
245
|
+
' "Selected item is not a group";',
|
|
246
|
+
' } else {',
|
|
247
|
+
` if (${itemIndex} >= group.allPageItems.length) {`,
|
|
248
|
+
' "Item index out of range in group";',
|
|
249
|
+
' } else {',
|
|
250
|
+
` var item = group.allPageItems[${itemIndex}];`,
|
|
251
|
+
' group.remove(item);',
|
|
252
|
+
' "Item removed from group successfully";',
|
|
253
|
+
' }',
|
|
254
|
+
' }',
|
|
255
|
+
' }',
|
|
256
|
+
' }',
|
|
257
|
+
'}'
|
|
258
|
+
].join('\n');
|
|
259
|
+
|
|
260
|
+
const result = await ScriptExecutor.executeInDesignScript(script);
|
|
261
|
+
return formatResponse(result, "Remove Item from Group");
|
|
262
|
+
}
|
|
263
|
+
|
|
264
|
+
/**
|
|
265
|
+
* List all groups on a page
|
|
266
|
+
*/
|
|
267
|
+
static async listGroups(args) {
|
|
268
|
+
const { pageIndex } = args;
|
|
269
|
+
|
|
270
|
+
const script = [
|
|
271
|
+
'if (app.documents.length === 0) {',
|
|
272
|
+
' "No document open";',
|
|
273
|
+
'} else {',
|
|
274
|
+
' var doc = app.activeDocument;',
|
|
275
|
+
` if (${pageIndex} >= doc.pages.length) {`,
|
|
276
|
+
' "Page index out of range";',
|
|
277
|
+
' } else {',
|
|
278
|
+
` var page = doc.pages[${pageIndex}];`,
|
|
279
|
+
' var items = page.allPageItems;',
|
|
280
|
+
' var result = "=== GROUPS ===\\n";',
|
|
281
|
+
' var groupCount = 0;',
|
|
282
|
+
'',
|
|
283
|
+
' for (var i = 0; i < items.length; i++) {',
|
|
284
|
+
' var item = items[i];',
|
|
285
|
+
' if (item.constructor.name === "Group") {',
|
|
286
|
+
' result += "Group Index: " + i + "\\n";',
|
|
287
|
+
' result += "Name: " + (item.name || "Unnamed") + "\\n";',
|
|
288
|
+
' result += "ID: " + item.id + "\\n";',
|
|
289
|
+
' result += "Visible: " + item.visible + "\\n";',
|
|
290
|
+
' result += "Locked: " + item.locked + "\\n";',
|
|
291
|
+
' result += "Item Count: " + item.allPageItems.length + "\\n";',
|
|
292
|
+
' result += "Bounds: " + item.geometricBounds.join(", ") + "\\n";',
|
|
293
|
+
' result += "---\\n";',
|
|
294
|
+
' groupCount++;',
|
|
295
|
+
' }',
|
|
296
|
+
' }',
|
|
297
|
+
'',
|
|
298
|
+
' if (groupCount === 0) {',
|
|
299
|
+
' result += "No groups found on this page";',
|
|
300
|
+
' }',
|
|
301
|
+
'',
|
|
302
|
+
' result;',
|
|
303
|
+
' }',
|
|
304
|
+
'}'
|
|
305
|
+
].join('\n');
|
|
306
|
+
|
|
307
|
+
const result = await ScriptExecutor.executeInDesignScript(script);
|
|
308
|
+
return formatResponse(result, "List Groups");
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
/**
|
|
312
|
+
* Set group properties
|
|
313
|
+
*/
|
|
314
|
+
static async setGroupProperties(args) {
|
|
315
|
+
const { pageIndex, groupIndex, visible, locked, name } = args;
|
|
316
|
+
|
|
317
|
+
const escapedName = name ? escapeJsxString(name) : '';
|
|
318
|
+
|
|
319
|
+
const script = [
|
|
320
|
+
'if (app.documents.length === 0) {',
|
|
321
|
+
' "No document open";',
|
|
322
|
+
'} else {',
|
|
323
|
+
' var doc = app.activeDocument;',
|
|
324
|
+
` if (${pageIndex} >= doc.pages.length) {`,
|
|
325
|
+
' "Page index out of range";',
|
|
326
|
+
' } else {',
|
|
327
|
+
` var page = doc.pages[${pageIndex}];`,
|
|
328
|
+
` if (${groupIndex} >= page.allPageItems.length) {`,
|
|
329
|
+
' "Group index out of range";',
|
|
330
|
+
' } else {',
|
|
331
|
+
` var group = page.allPageItems[${groupIndex}];`,
|
|
332
|
+
'',
|
|
333
|
+
' if (group.constructor.name !== "Group") {',
|
|
334
|
+
' "Selected item is not a group";',
|
|
335
|
+
' } else {',
|
|
336
|
+
` if (${visible} !== undefined) {`,
|
|
337
|
+
` group.visible = ${visible};`,
|
|
338
|
+
' }',
|
|
339
|
+
'',
|
|
340
|
+
` if (${locked} !== undefined) {`,
|
|
341
|
+
` group.locked = ${locked};`,
|
|
342
|
+
' }',
|
|
343
|
+
'',
|
|
344
|
+
` if ("${escapedName}" !== "") {`,
|
|
345
|
+
` group.name = "${escapedName}";`,
|
|
346
|
+
' }',
|
|
347
|
+
'',
|
|
348
|
+
' "Group properties updated successfully";',
|
|
349
|
+
' }',
|
|
350
|
+
' }',
|
|
351
|
+
' }',
|
|
352
|
+
'}'
|
|
353
|
+
].join('\n');
|
|
354
|
+
|
|
355
|
+
const result = await ScriptExecutor.executeInDesignScript(script);
|
|
356
|
+
return formatResponse(result, "Set Group Properties");
|
|
357
|
+
}
|
|
358
|
+
}
|