@lee-jisoo/n8n-nodes-mediafx 1.6.0 → 1.6.2
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/fonts/DejaVuSans.ttf +0 -0
- package/dist/fonts/Inter-Regular.ttf +0 -0
- package/dist/fonts/NanumGothic-Regular.ttf +0 -0
- package/dist/fonts/NotoSansKR-Regular.ttf +0 -0
- package/dist/fonts/Pretendard-Regular.otf +0 -0
- package/dist/fonts/Roboto-Regular.ttf +0 -0
- package/dist/nodes/MediaFX/MediaFX.node.d.ts +12 -0
- package/dist/nodes/MediaFX/MediaFX.node.js +559 -0
- package/dist/nodes/MediaFX/mediafx.png +0 -0
- package/dist/nodes/MediaFX/operations/addSubtitle.d.ts +2 -0
- package/dist/nodes/MediaFX/operations/addSubtitle.js +202 -0
- package/dist/nodes/MediaFX/operations/addText.d.ts +2 -0
- package/dist/nodes/MediaFX/operations/addText.js +108 -0
- package/dist/nodes/MediaFX/operations/extractAudio.d.ts +2 -0
- package/dist/nodes/MediaFX/operations/extractAudio.js +57 -0
- package/dist/nodes/MediaFX/operations/imageToVideo.d.ts +5 -0
- package/dist/nodes/MediaFX/operations/imageToVideo.js +65 -0
- package/dist/nodes/MediaFX/operations/index.d.ts +13 -0
- package/dist/nodes/MediaFX/operations/index.js +29 -0
- package/dist/nodes/MediaFX/operations/merge.d.ts +2 -0
- package/dist/nodes/MediaFX/operations/merge.js +121 -0
- package/dist/nodes/MediaFX/operations/mixAudio.d.ts +2 -0
- package/dist/nodes/MediaFX/operations/mixAudio.js +141 -0
- package/dist/nodes/MediaFX/operations/multiVideoTransition.d.ts +2 -0
- package/dist/nodes/MediaFX/operations/multiVideoTransition.js +245 -0
- package/dist/nodes/MediaFX/operations/overlayVideo.d.ts +16 -0
- package/dist/nodes/MediaFX/operations/overlayVideo.js +240 -0
- package/dist/nodes/MediaFX/operations/separateAudio.d.ts +17 -0
- package/dist/nodes/MediaFX/operations/separateAudio.js +78 -0
- package/dist/nodes/MediaFX/operations/singleVideoFade.d.ts +2 -0
- package/dist/nodes/MediaFX/operations/singleVideoFade.js +60 -0
- package/dist/nodes/MediaFX/operations/speed.d.ts +12 -0
- package/dist/nodes/MediaFX/operations/speed.js +110 -0
- package/dist/nodes/MediaFX/operations/stampImage.d.ts +2 -0
- package/dist/nodes/MediaFX/operations/stampImage.js +146 -0
- package/dist/nodes/MediaFX/operations/trim.d.ts +2 -0
- package/dist/nodes/MediaFX/operations/trim.js +49 -0
- package/dist/nodes/MediaFX/properties/audio.properties.d.ts +2 -0
- package/dist/nodes/MediaFX/properties/audio.properties.js +394 -0
- package/dist/nodes/MediaFX/properties/font.properties.d.ts +2 -0
- package/dist/nodes/MediaFX/properties/font.properties.js +186 -0
- package/dist/nodes/MediaFX/properties/image.properties.d.ts +2 -0
- package/dist/nodes/MediaFX/properties/image.properties.js +333 -0
- package/dist/nodes/MediaFX/properties/resources.properties.d.ts +2 -0
- package/dist/nodes/MediaFX/properties/resources.properties.js +34 -0
- package/dist/nodes/MediaFX/properties/subtitle.properties.d.ts +2 -0
- package/dist/nodes/MediaFX/properties/subtitle.properties.js +361 -0
- package/dist/nodes/MediaFX/properties/video.properties.d.ts +2 -0
- package/dist/nodes/MediaFX/properties/video.properties.js +1135 -0
- package/dist/nodes/MediaFX/utils/ffmpegVersion.d.ts +14 -0
- package/dist/nodes/MediaFX/utils/ffmpegVersion.js +97 -0
- package/dist/nodes/MediaFX/utils.d.ts +43 -0
- package/dist/nodes/MediaFX/utils.js +410 -0
- package/package.json +1 -1
|
@@ -0,0 +1,394 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.audioProperties = void 0;
|
|
4
|
+
exports.audioProperties = [
|
|
5
|
+
// ====================================================================
|
|
6
|
+
// OPERATION SELECTOR
|
|
7
|
+
// ====================================================================
|
|
8
|
+
{
|
|
9
|
+
displayName: 'Operation',
|
|
10
|
+
name: 'operation',
|
|
11
|
+
type: 'options',
|
|
12
|
+
noDataExpression: true,
|
|
13
|
+
displayOptions: {
|
|
14
|
+
show: {
|
|
15
|
+
resource: ['audio'],
|
|
16
|
+
},
|
|
17
|
+
},
|
|
18
|
+
options: [
|
|
19
|
+
{
|
|
20
|
+
name: 'Extract',
|
|
21
|
+
value: 'extract',
|
|
22
|
+
description: 'Extract audio from a video file',
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
name: 'Mix',
|
|
26
|
+
value: 'mixAudio',
|
|
27
|
+
description: 'Mix a primary video/audio source with a secondary audio source',
|
|
28
|
+
},
|
|
29
|
+
],
|
|
30
|
+
default: 'extract',
|
|
31
|
+
},
|
|
32
|
+
// ====================================================================
|
|
33
|
+
// EXTRACT AUDIO FIELDS
|
|
34
|
+
// ====================================================================
|
|
35
|
+
{
|
|
36
|
+
displayName: 'Source Video',
|
|
37
|
+
name: 'source',
|
|
38
|
+
type: 'collection',
|
|
39
|
+
placeholder: 'Add Video Source',
|
|
40
|
+
default: {},
|
|
41
|
+
displayOptions: {
|
|
42
|
+
show: {
|
|
43
|
+
resource: ['audio'],
|
|
44
|
+
operation: ['extract'],
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
options: [
|
|
48
|
+
{
|
|
49
|
+
displayName: 'Source Type',
|
|
50
|
+
name: 'sourceType',
|
|
51
|
+
type: 'options',
|
|
52
|
+
options: [
|
|
53
|
+
{ name: 'URL', value: 'url' },
|
|
54
|
+
{ name: 'Binary Data', value: 'binary' },
|
|
55
|
+
],
|
|
56
|
+
default: 'url',
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
displayName: 'Value',
|
|
60
|
+
name: 'value',
|
|
61
|
+
type: 'string',
|
|
62
|
+
default: '',
|
|
63
|
+
placeholder: 'https://example.com/video.mp4',
|
|
64
|
+
displayOptions: { show: { sourceType: ['url'] } },
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
displayName: 'Binary Property',
|
|
68
|
+
name: 'binaryProperty',
|
|
69
|
+
type: 'string',
|
|
70
|
+
default: 'data',
|
|
71
|
+
displayOptions: { show: { sourceType: ['binary'] } },
|
|
72
|
+
},
|
|
73
|
+
],
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
displayName: 'Output Format',
|
|
77
|
+
name: 'audioOutputFormat',
|
|
78
|
+
type: 'options',
|
|
79
|
+
displayOptions: {
|
|
80
|
+
show: {
|
|
81
|
+
resource: ['audio'],
|
|
82
|
+
operation: ['extract'],
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
options: [
|
|
86
|
+
{ name: 'MP3', value: 'mp3' },
|
|
87
|
+
{ name: 'WAV', value: 'wav' },
|
|
88
|
+
{ name: 'AAC', value: 'aac' },
|
|
89
|
+
{ name: 'FLAC', value: 'flac' },
|
|
90
|
+
],
|
|
91
|
+
default: 'mp3',
|
|
92
|
+
description: 'Format for the extracted audio file',
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
displayName: 'Advanced Options',
|
|
96
|
+
name: 'advancedOptions',
|
|
97
|
+
type: 'collection',
|
|
98
|
+
placeholder: 'Add Option',
|
|
99
|
+
displayOptions: {
|
|
100
|
+
show: {
|
|
101
|
+
resource: ['audio'],
|
|
102
|
+
operation: ['extract'],
|
|
103
|
+
},
|
|
104
|
+
},
|
|
105
|
+
default: {},
|
|
106
|
+
options: [
|
|
107
|
+
{
|
|
108
|
+
displayName: 'Audio Codec',
|
|
109
|
+
name: 'audioCodec',
|
|
110
|
+
type: 'string',
|
|
111
|
+
default: 'copy',
|
|
112
|
+
placeholder: 'libmp3lame',
|
|
113
|
+
description: "Specify audio codec, or 'copy' to keep original",
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
displayName: 'Audio Bitrate (e.g., 192k)',
|
|
117
|
+
name: 'audioBitrate',
|
|
118
|
+
type: 'string',
|
|
119
|
+
default: '192k',
|
|
120
|
+
},
|
|
121
|
+
],
|
|
122
|
+
},
|
|
123
|
+
// ====================================================================
|
|
124
|
+
// MIX AUDIO FIELDS
|
|
125
|
+
// ====================================================================
|
|
126
|
+
{
|
|
127
|
+
displayName: 'Primary Source Type',
|
|
128
|
+
name: 'mixVideoSourceType',
|
|
129
|
+
type: 'options',
|
|
130
|
+
options: [
|
|
131
|
+
{ name: 'URL', value: 'url' },
|
|
132
|
+
{ name: 'Binary Data', value: 'binary' },
|
|
133
|
+
],
|
|
134
|
+
default: 'url',
|
|
135
|
+
displayOptions: {
|
|
136
|
+
show: {
|
|
137
|
+
resource: ['audio'],
|
|
138
|
+
operation: ['mixAudio'],
|
|
139
|
+
},
|
|
140
|
+
},
|
|
141
|
+
description: 'Type of primary source input',
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
displayName: 'Primary Source URL',
|
|
145
|
+
name: 'mixVideoSourceUrl',
|
|
146
|
+
type: 'string',
|
|
147
|
+
default: '',
|
|
148
|
+
placeholder: 'https://example.com/video.mp4',
|
|
149
|
+
displayOptions: {
|
|
150
|
+
show: {
|
|
151
|
+
resource: ['audio'],
|
|
152
|
+
operation: ['mixAudio'],
|
|
153
|
+
mixVideoSourceType: ['url'],
|
|
154
|
+
},
|
|
155
|
+
},
|
|
156
|
+
description: 'URL of the primary video or audio source',
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
displayName: 'Primary Source Binary Property',
|
|
160
|
+
name: 'mixVideoSourceBinary',
|
|
161
|
+
type: 'string',
|
|
162
|
+
default: 'data',
|
|
163
|
+
displayOptions: {
|
|
164
|
+
show: {
|
|
165
|
+
resource: ['audio'],
|
|
166
|
+
operation: ['mixAudio'],
|
|
167
|
+
mixVideoSourceType: ['binary'],
|
|
168
|
+
},
|
|
169
|
+
},
|
|
170
|
+
description: 'Binary property name containing the primary source data',
|
|
171
|
+
},
|
|
172
|
+
{
|
|
173
|
+
displayName: 'Secondary Audio Source Type',
|
|
174
|
+
name: 'mixAudioSourceType',
|
|
175
|
+
type: 'options',
|
|
176
|
+
options: [
|
|
177
|
+
{ name: 'URL', value: 'url' },
|
|
178
|
+
{ name: 'Binary Data', value: 'binary' },
|
|
179
|
+
],
|
|
180
|
+
default: 'url',
|
|
181
|
+
displayOptions: {
|
|
182
|
+
show: {
|
|
183
|
+
resource: ['audio'],
|
|
184
|
+
operation: ['mixAudio'],
|
|
185
|
+
},
|
|
186
|
+
},
|
|
187
|
+
description: 'Type of secondary audio source input',
|
|
188
|
+
},
|
|
189
|
+
{
|
|
190
|
+
displayName: 'Secondary Audio Source URL',
|
|
191
|
+
name: 'mixAudioSourceUrl',
|
|
192
|
+
type: 'string',
|
|
193
|
+
default: '',
|
|
194
|
+
placeholder: 'https://example.com/audio.mp3',
|
|
195
|
+
displayOptions: {
|
|
196
|
+
show: {
|
|
197
|
+
resource: ['audio'],
|
|
198
|
+
operation: ['mixAudio'],
|
|
199
|
+
mixAudioSourceType: ['url'],
|
|
200
|
+
},
|
|
201
|
+
},
|
|
202
|
+
description: 'URL of the secondary audio source to mix in',
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
displayName: 'Secondary Audio Source Binary Property',
|
|
206
|
+
name: 'mixAudioSourceBinary',
|
|
207
|
+
type: 'string',
|
|
208
|
+
default: 'data',
|
|
209
|
+
displayOptions: {
|
|
210
|
+
show: {
|
|
211
|
+
resource: ['audio'],
|
|
212
|
+
operation: ['mixAudio'],
|
|
213
|
+
mixAudioSourceType: ['binary'],
|
|
214
|
+
},
|
|
215
|
+
},
|
|
216
|
+
description: 'Binary property name containing the secondary audio source data',
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
displayName: 'Primary Source Volume',
|
|
220
|
+
name: 'videoVolume',
|
|
221
|
+
type: 'number',
|
|
222
|
+
typeOptions: { minValue: 0, maxValue: 10, numberStep: 0.1 },
|
|
223
|
+
default: 1.0,
|
|
224
|
+
displayOptions: {
|
|
225
|
+
show: {
|
|
226
|
+
resource: ['audio'],
|
|
227
|
+
operation: ['mixAudio'],
|
|
228
|
+
},
|
|
229
|
+
},
|
|
230
|
+
description: 'Volume for primary video/audio source (1.0 = original, 0.5 = half, 0 = mute)',
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
displayName: 'Secondary Audio Volume',
|
|
234
|
+
name: 'audioVolume',
|
|
235
|
+
type: 'number',
|
|
236
|
+
typeOptions: { minValue: 0, maxValue: 10, numberStep: 0.1 },
|
|
237
|
+
default: 1.0,
|
|
238
|
+
displayOptions: {
|
|
239
|
+
show: {
|
|
240
|
+
resource: ['audio'],
|
|
241
|
+
operation: ['mixAudio'],
|
|
242
|
+
},
|
|
243
|
+
},
|
|
244
|
+
description: 'Volume for secondary audio source (1.0 = original, 0.5 = half, 0 = mute)',
|
|
245
|
+
},
|
|
246
|
+
// Enable Partial Mix (first field to determine other fields visibility)
|
|
247
|
+
{
|
|
248
|
+
displayName: 'Enable Partial Mix',
|
|
249
|
+
name: 'enablePartialMix',
|
|
250
|
+
type: 'boolean',
|
|
251
|
+
default: false,
|
|
252
|
+
displayOptions: {
|
|
253
|
+
show: {
|
|
254
|
+
resource: ['audio'],
|
|
255
|
+
operation: ['mixAudio'],
|
|
256
|
+
},
|
|
257
|
+
},
|
|
258
|
+
description: 'Enable partial mixing to insert audio at specific time range',
|
|
259
|
+
},
|
|
260
|
+
// Output Length (shown when partial mix is disabled)
|
|
261
|
+
{
|
|
262
|
+
displayName: 'Output Length (Full Mix)',
|
|
263
|
+
name: 'matchLength',
|
|
264
|
+
type: 'options',
|
|
265
|
+
displayOptions: {
|
|
266
|
+
show: {
|
|
267
|
+
resource: ['audio'],
|
|
268
|
+
operation: ['mixAudio'],
|
|
269
|
+
enablePartialMix: [false],
|
|
270
|
+
},
|
|
271
|
+
},
|
|
272
|
+
options: [
|
|
273
|
+
{ name: 'Shortest', value: 'shortest' },
|
|
274
|
+
{ name: 'Longest', value: 'longest' },
|
|
275
|
+
{ name: 'From Primary Source', value: 'first' },
|
|
276
|
+
],
|
|
277
|
+
default: 'shortest',
|
|
278
|
+
},
|
|
279
|
+
// Partial Mix Options (shown when partial mix is enabled)
|
|
280
|
+
{
|
|
281
|
+
displayName: 'Start Time (seconds)',
|
|
282
|
+
name: 'startTime',
|
|
283
|
+
type: 'number',
|
|
284
|
+
default: 0,
|
|
285
|
+
required: true,
|
|
286
|
+
displayOptions: {
|
|
287
|
+
show: {
|
|
288
|
+
resource: ['audio'],
|
|
289
|
+
operation: ['mixAudio'],
|
|
290
|
+
enablePartialMix: [true],
|
|
291
|
+
},
|
|
292
|
+
},
|
|
293
|
+
},
|
|
294
|
+
{
|
|
295
|
+
displayName: 'Mix Duration (seconds)',
|
|
296
|
+
name: 'duration',
|
|
297
|
+
type: 'number',
|
|
298
|
+
default: '',
|
|
299
|
+
required: false,
|
|
300
|
+
displayOptions: {
|
|
301
|
+
show: {
|
|
302
|
+
resource: ['audio'],
|
|
303
|
+
operation: ['mixAudio'],
|
|
304
|
+
enablePartialMix: [true],
|
|
305
|
+
},
|
|
306
|
+
},
|
|
307
|
+
description: 'Duration to mix audio. Leave empty to use full audio length.',
|
|
308
|
+
},
|
|
309
|
+
{
|
|
310
|
+
displayName: 'Loop Audio if Shorter',
|
|
311
|
+
name: 'loop',
|
|
312
|
+
type: 'boolean',
|
|
313
|
+
default: false,
|
|
314
|
+
displayOptions: {
|
|
315
|
+
show: {
|
|
316
|
+
resource: ['audio'],
|
|
317
|
+
operation: ['mixAudio'],
|
|
318
|
+
enablePartialMix: [true],
|
|
319
|
+
},
|
|
320
|
+
},
|
|
321
|
+
description: 'If audio is shorter than Mix Duration: Loop=true repeats audio to fill duration, Loop=false inserts audio as-is (ends early). If audio is longer: always trims to exact duration.',
|
|
322
|
+
},
|
|
323
|
+
// Fade Effects (independent of partial mix)
|
|
324
|
+
{
|
|
325
|
+
displayName: 'Enable Fade In',
|
|
326
|
+
name: 'enableFadeIn',
|
|
327
|
+
type: 'boolean',
|
|
328
|
+
default: false,
|
|
329
|
+
displayOptions: {
|
|
330
|
+
show: {
|
|
331
|
+
resource: ['audio'],
|
|
332
|
+
operation: ['mixAudio'],
|
|
333
|
+
},
|
|
334
|
+
},
|
|
335
|
+
description: 'Apply fade in effect to the secondary audio',
|
|
336
|
+
},
|
|
337
|
+
{
|
|
338
|
+
displayName: 'Fade In Duration (seconds)',
|
|
339
|
+
name: 'fadeInDuration',
|
|
340
|
+
type: 'number',
|
|
341
|
+
default: 1,
|
|
342
|
+
displayOptions: {
|
|
343
|
+
show: {
|
|
344
|
+
resource: ['audio'],
|
|
345
|
+
operation: ['mixAudio'],
|
|
346
|
+
enableFadeIn: [true],
|
|
347
|
+
},
|
|
348
|
+
},
|
|
349
|
+
description: 'Duration of fade in effect in seconds',
|
|
350
|
+
},
|
|
351
|
+
{
|
|
352
|
+
displayName: 'Enable Fade Out',
|
|
353
|
+
name: 'enableFadeOut',
|
|
354
|
+
type: 'boolean',
|
|
355
|
+
default: false,
|
|
356
|
+
displayOptions: {
|
|
357
|
+
show: {
|
|
358
|
+
resource: ['audio'],
|
|
359
|
+
operation: ['mixAudio'],
|
|
360
|
+
},
|
|
361
|
+
},
|
|
362
|
+
description: 'Apply fade out effect to the secondary audio',
|
|
363
|
+
},
|
|
364
|
+
{
|
|
365
|
+
displayName: 'Fade Out Duration (seconds)',
|
|
366
|
+
name: 'fadeOutDuration',
|
|
367
|
+
type: 'number',
|
|
368
|
+
default: 1,
|
|
369
|
+
displayOptions: {
|
|
370
|
+
show: {
|
|
371
|
+
resource: ['audio'],
|
|
372
|
+
operation: ['mixAudio'],
|
|
373
|
+
enableFadeOut: [true],
|
|
374
|
+
},
|
|
375
|
+
},
|
|
376
|
+
description: 'Duration of fade out effect in seconds',
|
|
377
|
+
},
|
|
378
|
+
// ===================
|
|
379
|
+
// OUTPUT FIELD NAME
|
|
380
|
+
// ===================
|
|
381
|
+
{
|
|
382
|
+
displayName: 'Output Field Name',
|
|
383
|
+
name: 'outputFieldName',
|
|
384
|
+
type: 'string',
|
|
385
|
+
displayOptions: {
|
|
386
|
+
show: {
|
|
387
|
+
resource: ['audio'],
|
|
388
|
+
},
|
|
389
|
+
},
|
|
390
|
+
default: 'data',
|
|
391
|
+
description: 'Name of the binary property where the output audio will be stored',
|
|
392
|
+
placeholder: 'data',
|
|
393
|
+
},
|
|
394
|
+
];
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.fontProperties = void 0;
|
|
4
|
+
exports.fontProperties = [
|
|
5
|
+
{
|
|
6
|
+
displayName: 'Operation',
|
|
7
|
+
name: 'operation',
|
|
8
|
+
type: 'options',
|
|
9
|
+
noDataExpression: true,
|
|
10
|
+
displayOptions: {
|
|
11
|
+
show: {
|
|
12
|
+
resource: ['font'],
|
|
13
|
+
},
|
|
14
|
+
},
|
|
15
|
+
options: [
|
|
16
|
+
{
|
|
17
|
+
name: 'List',
|
|
18
|
+
value: 'list',
|
|
19
|
+
description: 'Get all available fonts',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
name: 'Upload',
|
|
23
|
+
value: 'upload',
|
|
24
|
+
description: 'Upload a new font file',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
name: 'Delete',
|
|
28
|
+
value: 'delete',
|
|
29
|
+
description: 'Delete a user font',
|
|
30
|
+
},
|
|
31
|
+
],
|
|
32
|
+
default: 'list',
|
|
33
|
+
},
|
|
34
|
+
// Font Upload Fields
|
|
35
|
+
{
|
|
36
|
+
displayName: 'Font Source',
|
|
37
|
+
name: 'fontSource',
|
|
38
|
+
type: 'options',
|
|
39
|
+
displayOptions: {
|
|
40
|
+
show: {
|
|
41
|
+
resource: ['font'],
|
|
42
|
+
operation: ['upload'],
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
options: [
|
|
46
|
+
{
|
|
47
|
+
name: 'Binary Data',
|
|
48
|
+
value: 'binary',
|
|
49
|
+
description: 'Upload from binary data in workflow',
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
name: 'File Path',
|
|
53
|
+
value: 'filepath',
|
|
54
|
+
description: 'Upload from local file path',
|
|
55
|
+
},
|
|
56
|
+
],
|
|
57
|
+
default: 'binary',
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
displayName: 'Binary Property',
|
|
61
|
+
name: 'binaryProperty',
|
|
62
|
+
type: 'string',
|
|
63
|
+
displayOptions: {
|
|
64
|
+
show: {
|
|
65
|
+
resource: ['font'],
|
|
66
|
+
operation: ['upload'],
|
|
67
|
+
fontSource: ['binary'],
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
default: 'data',
|
|
71
|
+
description: 'Name of the binary property containing font data',
|
|
72
|
+
},
|
|
73
|
+
{
|
|
74
|
+
displayName: 'File Path',
|
|
75
|
+
name: 'filePath',
|
|
76
|
+
type: 'string',
|
|
77
|
+
displayOptions: {
|
|
78
|
+
show: {
|
|
79
|
+
resource: ['font'],
|
|
80
|
+
operation: ['upload'],
|
|
81
|
+
fontSource: ['filepath'],
|
|
82
|
+
},
|
|
83
|
+
},
|
|
84
|
+
default: '',
|
|
85
|
+
placeholder: '/path/to/font.ttf',
|
|
86
|
+
description: 'Local file path to font file',
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
displayName: 'Font Key',
|
|
90
|
+
name: 'fontKeyUpload',
|
|
91
|
+
type: 'string',
|
|
92
|
+
displayOptions: {
|
|
93
|
+
show: {
|
|
94
|
+
resource: ['font'],
|
|
95
|
+
operation: ['upload'],
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
default: '',
|
|
99
|
+
placeholder: 'my-custom-font',
|
|
100
|
+
description: 'Unique identifier for the font (3-50 chars, alphanumeric, hyphens, underscores)',
|
|
101
|
+
required: true,
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
displayName: 'Font Name',
|
|
105
|
+
name: 'fontName',
|
|
106
|
+
type: 'string',
|
|
107
|
+
displayOptions: {
|
|
108
|
+
show: {
|
|
109
|
+
resource: ['font'],
|
|
110
|
+
operation: ['upload'],
|
|
111
|
+
},
|
|
112
|
+
},
|
|
113
|
+
default: '',
|
|
114
|
+
placeholder: 'My Custom Font',
|
|
115
|
+
description: 'Display name for the font',
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
displayName: 'Description',
|
|
119
|
+
name: 'description',
|
|
120
|
+
type: 'string',
|
|
121
|
+
displayOptions: {
|
|
122
|
+
show: {
|
|
123
|
+
resource: ['font'],
|
|
124
|
+
operation: ['upload'],
|
|
125
|
+
},
|
|
126
|
+
},
|
|
127
|
+
default: '',
|
|
128
|
+
placeholder: 'Custom font for special projects',
|
|
129
|
+
description: 'Optional description for the font',
|
|
130
|
+
},
|
|
131
|
+
// Font Key for other operations
|
|
132
|
+
{
|
|
133
|
+
displayName: 'Font Key',
|
|
134
|
+
name: 'fontKey',
|
|
135
|
+
type: 'options',
|
|
136
|
+
typeOptions: {
|
|
137
|
+
loadOptionsMethod: 'getUserFonts',
|
|
138
|
+
},
|
|
139
|
+
displayOptions: {
|
|
140
|
+
show: {
|
|
141
|
+
resource: ['font'],
|
|
142
|
+
operation: ['delete'],
|
|
143
|
+
},
|
|
144
|
+
},
|
|
145
|
+
default: '',
|
|
146
|
+
description: 'Font to operate on',
|
|
147
|
+
required: true,
|
|
148
|
+
},
|
|
149
|
+
// Filter Options for List
|
|
150
|
+
{
|
|
151
|
+
displayName: 'Filter Options',
|
|
152
|
+
name: 'filterOptions',
|
|
153
|
+
type: 'collection',
|
|
154
|
+
placeholder: 'Add Filter',
|
|
155
|
+
displayOptions: {
|
|
156
|
+
show: {
|
|
157
|
+
resource: ['font'],
|
|
158
|
+
operation: ['list'],
|
|
159
|
+
},
|
|
160
|
+
},
|
|
161
|
+
default: {},
|
|
162
|
+
options: [
|
|
163
|
+
{
|
|
164
|
+
displayName: 'Font Type',
|
|
165
|
+
name: 'fontType',
|
|
166
|
+
type: 'options',
|
|
167
|
+
options: [
|
|
168
|
+
{ name: 'All Fonts', value: 'all' },
|
|
169
|
+
{ name: 'Korean Fonts', value: 'korean' },
|
|
170
|
+
{ name: 'Global Fonts', value: 'global' },
|
|
171
|
+
{ name: 'User Fonts', value: 'user' },
|
|
172
|
+
{ name: 'Fallback Fonts', value: 'fallback' },
|
|
173
|
+
],
|
|
174
|
+
default: 'all',
|
|
175
|
+
description: 'Filter fonts by type',
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
displayName: 'Include Details',
|
|
179
|
+
name: 'includeDetails',
|
|
180
|
+
type: 'boolean',
|
|
181
|
+
default: true,
|
|
182
|
+
description: 'Include detailed font information',
|
|
183
|
+
},
|
|
184
|
+
],
|
|
185
|
+
},
|
|
186
|
+
];
|