astro-tractstack 2.0.17 → 2.0.19
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.js +18 -0
- package/package.json +1 -1
- package/templates/src/components/codehooks/FeaturedArticleSetup.tsx +1 -1
- package/templates/src/components/codehooks/ListContentSetup.tsx +1 -1
- package/templates/src/components/compositor/Compositor.tsx +1 -0
- package/templates/src/components/compositor/Node.tsx +41 -17
- package/templates/src/components/compositor/nodes/GhostInsertBlock.tsx +9 -6
- package/templates/src/components/compositor/nodes/GridLayout.tsx +124 -0
- package/templates/src/components/compositor/nodes/GridLayout_eraser.tsx +33 -0
- package/templates/src/components/compositor/nodes/Markdown.tsx +67 -37
- package/templates/src/components/compositor/nodes/Markdown_eraser.tsx +56 -0
- package/templates/src/components/compositor/preview/FeaturedArticlePreview.tsx +8 -2
- package/templates/src/components/edit/PanelSwitch.tsx +232 -75
- package/templates/src/components/edit/SettingsPanel.tsx +0 -1
- package/templates/src/components/edit/pane/AddPanePanel_codehook.tsx +3 -3
- package/templates/src/components/edit/pane/AddPanePanel_new.tsx +402 -167
- package/templates/src/components/edit/pane/AddPanePanel_reuse.tsx +2 -2
- package/templates/src/components/edit/pane/ConfigPanePanel.tsx +1 -7
- package/templates/src/components/edit/pane/PanePanel_impression.tsx +1 -1
- package/templates/src/components/edit/pane/RestylePaneModal.tsx +8 -5
- package/templates/src/components/edit/pane/steps/AiDesignStep.tsx +6 -6
- package/templates/src/components/edit/pane/steps/CopyInputStep.tsx +3 -3
- package/templates/src/components/edit/pane/steps/DesignLibraryStep.tsx +4 -4
- package/templates/src/components/edit/panels/StyleElementPanel.tsx +11 -4
- package/templates/src/components/edit/panels/StyleElementPanel_add.tsx +8 -8
- package/templates/src/components/edit/panels/StyleElementPanel_remove.tsx +14 -4
- package/templates/src/components/edit/panels/StyleElementPanel_update.tsx +16 -4
- package/templates/src/components/edit/panels/StyleImagePanel.tsx +7 -3
- package/templates/src/components/edit/panels/StyleImagePanel_add.tsx +9 -2
- package/templates/src/components/edit/panels/StyleImagePanel_remove.tsx +5 -2
- package/templates/src/components/edit/panels/StyleImagePanel_update.tsx +5 -2
- package/templates/src/components/edit/panels/StyleLiElementPanel.tsx +7 -3
- package/templates/src/components/edit/panels/StyleLiElementPanel_add.tsx +9 -2
- package/templates/src/components/edit/panels/StyleLiElementPanel_remove.tsx +5 -2
- package/templates/src/components/edit/panels/StyleLiElementPanel_update.tsx +5 -2
- package/templates/src/components/edit/panels/StyleParentPanel.tsx +530 -171
- package/templates/src/components/edit/panels/StyleParentPanel_add.tsx +77 -42
- package/templates/src/components/edit/panels/StyleParentPanel_deleteLayer.tsx +38 -22
- package/templates/src/components/edit/panels/StyleParentPanel_remove.tsx +171 -66
- package/templates/src/components/edit/panels/StyleParentPanel_update.tsx +166 -98
- package/templates/src/components/edit/panels/StyleWidgetPanel.tsx +7 -3
- package/templates/src/components/edit/panels/StyleWidgetPanel_add.tsx +9 -2
- package/templates/src/components/edit/panels/StyleWidgetPanel_remove.tsx +5 -2
- package/templates/src/components/edit/panels/StyleWidgetPanel_update.tsx +6 -2
- package/templates/src/components/edit/state/SaveModal.tsx +10 -2
- package/templates/src/components/edit/state/SaveToLibraryModal.tsx +6 -6
- package/templates/src/components/fields/PaneBreakShapeSelector.tsx +1 -1
- package/templates/src/components/widgets/ImpressionWrapper.tsx +4 -1
- package/templates/src/constants/prompts.json +23 -2
- package/templates/src/stores/nodes.ts +356 -212
- package/templates/src/stores/storykeep.ts +3 -1
- package/templates/src/types/compositorTypes.ts +56 -3
- package/templates/src/types/tractstack.ts +1 -0
- package/templates/src/utils/compositor/TemplateNodes.ts +8 -0
- package/templates/src/utils/compositor/aiPaneParser.ts +263 -83
- package/templates/src/utils/compositor/designLibraryHelper.ts +12 -9
- package/templates/src/utils/compositor/nodesHelper.ts +229 -0
- package/templates/src/utils/compositor/reduceNodesClassNames.ts +40 -1
- package/templates/src/utils/compositor/typeGuards.ts +7 -0
- package/templates/src/utils/etl/extractor.ts +1 -5
- package/templates/src/utils/etl/index.ts +1 -0
- package/templates/src/utils/etl/transformer.ts +70 -25
- package/utils/inject-files.ts +18 -0
|
@@ -2,7 +2,10 @@ import { useEffect } from 'react';
|
|
|
2
2
|
import { useStore } from '@nanostores/react';
|
|
3
3
|
import { settingsPanelStore } from '@/stores/storykeep';
|
|
4
4
|
import { getCtx } from '@/stores/nodes';
|
|
5
|
-
import {
|
|
5
|
+
import {
|
|
6
|
+
isGridLayoutNode,
|
|
7
|
+
isMarkdownPaneFragmentNode,
|
|
8
|
+
} from '@/utils/compositor/typeGuards';
|
|
6
9
|
import StyleBreakPanel from './panels/StyleBreakPanel';
|
|
7
10
|
import StyleParentPanel from './panels/StyleParentPanel';
|
|
8
11
|
import StyleParentAddPanel from './panels/StyleParentPanel_add';
|
|
@@ -36,6 +39,7 @@ import { getSettingsPanelTitle } from '@/utils/helpers';
|
|
|
36
39
|
import type { BrandConfig } from '@/types/tractstack';
|
|
37
40
|
import type {
|
|
38
41
|
FlatNode,
|
|
42
|
+
GridLayoutNode,
|
|
39
43
|
MarkdownPaneFragmentNode,
|
|
40
44
|
} from '@/types/compositorTypes';
|
|
41
45
|
|
|
@@ -81,9 +85,18 @@ const PanelSwitch = ({
|
|
|
81
85
|
const childNodes = childNodeIds
|
|
82
86
|
.map((id) => allNodes.get(id))
|
|
83
87
|
.filter((node): node is FlatNode => !!node);
|
|
84
|
-
const markdownNode =
|
|
88
|
+
const markdownNode =
|
|
89
|
+
clickedNode &&
|
|
90
|
+
signal.targetProperty &&
|
|
91
|
+
signal.targetProperty === 'gridClasses' &&
|
|
92
|
+
isMarkdownPaneFragmentNode(clickedNode)
|
|
93
|
+
? clickedNode
|
|
94
|
+
: childNodes.find(isMarkdownPaneFragmentNode);
|
|
95
|
+
const gridLayoutNode = childNodes.find(isGridLayoutNode);
|
|
85
96
|
|
|
86
97
|
if (markdownNode && !isMarkdownPaneFragmentNode(markdownNode)) return null;
|
|
98
|
+
if (gridLayoutNode && !isGridLayoutNode(gridLayoutNode)) return null;
|
|
99
|
+
const styleContextNode = markdownNode || gridLayoutNode;
|
|
87
100
|
|
|
88
101
|
switch (signal.action) {
|
|
89
102
|
case 'style-break':
|
|
@@ -107,39 +120,75 @@ const PanelSwitch = ({
|
|
|
107
120
|
config={config}
|
|
108
121
|
/>
|
|
109
122
|
);
|
|
123
|
+
else if (gridLayoutNode && paneNode)
|
|
124
|
+
return (
|
|
125
|
+
<StyleParentPanel
|
|
126
|
+
node={gridLayoutNode}
|
|
127
|
+
parentNode={paneNode}
|
|
128
|
+
layer={signal.layer || 0}
|
|
129
|
+
config={config}
|
|
130
|
+
/>
|
|
131
|
+
);
|
|
110
132
|
break;
|
|
111
133
|
|
|
112
|
-
case 'style-parent-add':
|
|
134
|
+
case 'style-parent-add': {
|
|
113
135
|
if (markdownNode)
|
|
114
136
|
return (
|
|
115
|
-
<StyleParentAddPanel
|
|
137
|
+
<StyleParentAddPanel
|
|
138
|
+
node={markdownNode}
|
|
139
|
+
layer={signal.layer || 0}
|
|
140
|
+
targetProperty={(signal as any).targetProperty}
|
|
141
|
+
/>
|
|
142
|
+
);
|
|
143
|
+
else if (gridLayoutNode)
|
|
144
|
+
return (
|
|
145
|
+
<StyleParentAddPanel
|
|
146
|
+
node={gridLayoutNode}
|
|
147
|
+
layer={signal.layer || 0}
|
|
148
|
+
targetProperty={(signal as any).targetProperty}
|
|
149
|
+
/>
|
|
116
150
|
);
|
|
117
151
|
break;
|
|
152
|
+
}
|
|
118
153
|
|
|
119
|
-
case 'style-parent-remove':
|
|
120
|
-
if (
|
|
154
|
+
case 'style-parent-remove': {
|
|
155
|
+
if (
|
|
156
|
+
clickedNode &&
|
|
157
|
+
(isMarkdownPaneFragmentNode(clickedNode) ||
|
|
158
|
+
isGridLayoutNode(clickedNode)) &&
|
|
159
|
+
signal.className
|
|
160
|
+
)
|
|
121
161
|
return (
|
|
122
162
|
<StyleParentRemovePanel
|
|
123
|
-
node={
|
|
163
|
+
node={clickedNode}
|
|
124
164
|
layer={signal.layer || 0}
|
|
125
165
|
className={signal.className}
|
|
166
|
+
targetProperty={(signal as any).targetProperty}
|
|
126
167
|
/>
|
|
127
168
|
);
|
|
128
169
|
break;
|
|
170
|
+
}
|
|
129
171
|
|
|
130
|
-
case 'style-parent-update':
|
|
131
|
-
if (
|
|
172
|
+
case 'style-parent-update': {
|
|
173
|
+
if (
|
|
174
|
+
clickedNode &&
|
|
175
|
+
(isMarkdownPaneFragmentNode(clickedNode) ||
|
|
176
|
+
isGridLayoutNode(clickedNode)) &&
|
|
177
|
+
signal.className
|
|
178
|
+
)
|
|
132
179
|
return (
|
|
133
180
|
<StyleParentUpdatePanel
|
|
134
|
-
node={
|
|
181
|
+
node={clickedNode}
|
|
135
182
|
layer={signal.layer || 0}
|
|
136
183
|
className={signal.className}
|
|
137
184
|
config={config}
|
|
185
|
+
targetProperty={(signal as any).targetProperty}
|
|
138
186
|
/>
|
|
139
187
|
);
|
|
140
188
|
break;
|
|
189
|
+
}
|
|
141
190
|
|
|
142
|
-
case 'style-parent-delete-layer':
|
|
191
|
+
case 'style-parent-delete-layer': {
|
|
143
192
|
if (markdownNode)
|
|
144
193
|
return (
|
|
145
194
|
<StyleParentDeleteLayerPanel
|
|
@@ -148,6 +197,7 @@ const PanelSwitch = ({
|
|
|
148
197
|
/>
|
|
149
198
|
);
|
|
150
199
|
break;
|
|
200
|
+
}
|
|
151
201
|
|
|
152
202
|
case 'style-link':
|
|
153
203
|
if (clickedNode) return <StyleLinkPanel node={clickedNode} />;
|
|
@@ -187,33 +237,35 @@ const PanelSwitch = ({
|
|
|
187
237
|
break;
|
|
188
238
|
|
|
189
239
|
case 'style-element':
|
|
190
|
-
if (clickedNode &&
|
|
240
|
+
if (clickedNode && styleContextNode)
|
|
191
241
|
return (
|
|
192
242
|
<StyleElementPanel
|
|
193
243
|
node={clickedNode}
|
|
194
|
-
parentNode={
|
|
244
|
+
parentNode={
|
|
245
|
+
styleContextNode as MarkdownPaneFragmentNode | GridLayoutNode
|
|
246
|
+
}
|
|
195
247
|
onTitleChange={onTitleChange}
|
|
196
248
|
/>
|
|
197
249
|
);
|
|
198
250
|
break;
|
|
199
251
|
|
|
200
252
|
case 'style-element-add':
|
|
201
|
-
if (clickedNode &&
|
|
253
|
+
if (clickedNode && styleContextNode)
|
|
202
254
|
return (
|
|
203
255
|
<StyleElementAddPanel
|
|
204
256
|
node={clickedNode}
|
|
205
|
-
parentNode={
|
|
257
|
+
parentNode={styleContextNode}
|
|
206
258
|
onTitleChange={onTitleChange}
|
|
207
259
|
/>
|
|
208
260
|
);
|
|
209
261
|
break;
|
|
210
262
|
|
|
211
263
|
case 'style-element-remove':
|
|
212
|
-
if (clickedNode &&
|
|
264
|
+
if (clickedNode && styleContextNode && signal.className)
|
|
213
265
|
return (
|
|
214
266
|
<StyleElementRemovePanel
|
|
215
267
|
node={clickedNode}
|
|
216
|
-
parentNode={
|
|
268
|
+
parentNode={styleContextNode}
|
|
217
269
|
className={signal.className}
|
|
218
270
|
onTitleChange={onTitleChange}
|
|
219
271
|
/>
|
|
@@ -221,11 +273,11 @@ const PanelSwitch = ({
|
|
|
221
273
|
break;
|
|
222
274
|
|
|
223
275
|
case 'style-element-update':
|
|
224
|
-
if (clickedNode &&
|
|
276
|
+
if (clickedNode && styleContextNode && signal.className)
|
|
225
277
|
return (
|
|
226
278
|
<StyleElementUpdatePanel
|
|
227
279
|
node={clickedNode}
|
|
228
|
-
parentNode={
|
|
280
|
+
parentNode={styleContextNode}
|
|
229
281
|
className={signal.className}
|
|
230
282
|
onTitleChange={onTitleChange}
|
|
231
283
|
config={config}
|
|
@@ -234,32 +286,58 @@ const PanelSwitch = ({
|
|
|
234
286
|
break;
|
|
235
287
|
|
|
236
288
|
case 'style-image': {
|
|
237
|
-
|
|
238
|
-
|
|
289
|
+
let imageNode: FlatNode | undefined;
|
|
290
|
+
let containerNode: FlatNode | undefined;
|
|
291
|
+
let outerContainerNode: FlatNode | undefined;
|
|
292
|
+
|
|
293
|
+
if (
|
|
294
|
+
clickedNode &&
|
|
295
|
+
(clickedNode.tagName === 'ul' || clickedNode.tagName === 'ol')
|
|
296
|
+
) {
|
|
297
|
+
outerContainerNode = clickedNode;
|
|
298
|
+
const liNodeIds = ctx.getChildNodeIDs(outerContainerNode.id);
|
|
299
|
+
if (liNodeIds.length > 0) {
|
|
300
|
+
containerNode = allNodes.get(liNodeIds[0]) as FlatNode;
|
|
301
|
+
if (containerNode) {
|
|
302
|
+
const imgNodeIds = ctx.getChildNodeIDs(containerNode.id);
|
|
303
|
+
if (imgNodeIds.length > 0) {
|
|
304
|
+
imageNode = allNodes.get(imgNodeIds[0]) as FlatNode;
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
}
|
|
308
|
+
} else if (clickedNode?.parentId) {
|
|
309
|
+
imageNode = clickedNode;
|
|
310
|
+
containerNode = allNodes.get(clickedNode.parentId) as FlatNode;
|
|
239
311
|
if (containerNode?.parentId) {
|
|
240
|
-
|
|
241
|
-
if (markdownNode && containerNode && outerContainerNode)
|
|
242
|
-
return (
|
|
243
|
-
<StyleImagePanel
|
|
244
|
-
node={clickedNode}
|
|
245
|
-
parentNode={markdownNode}
|
|
246
|
-
containerNode={containerNode as FlatNode}
|
|
247
|
-
outerContainerNode={outerContainerNode as FlatNode}
|
|
248
|
-
/>
|
|
249
|
-
);
|
|
312
|
+
outerContainerNode = allNodes.get(containerNode.parentId) as FlatNode;
|
|
250
313
|
}
|
|
251
314
|
}
|
|
315
|
+
if (
|
|
316
|
+
styleContextNode &&
|
|
317
|
+
imageNode &&
|
|
318
|
+
containerNode &&
|
|
319
|
+
outerContainerNode
|
|
320
|
+
) {
|
|
321
|
+
return (
|
|
322
|
+
<StyleImagePanel
|
|
323
|
+
node={imageNode}
|
|
324
|
+
parentNode={styleContextNode}
|
|
325
|
+
containerNode={containerNode}
|
|
326
|
+
outerContainerNode={outerContainerNode}
|
|
327
|
+
/>
|
|
328
|
+
);
|
|
329
|
+
}
|
|
252
330
|
break;
|
|
253
331
|
}
|
|
254
332
|
|
|
255
333
|
case 'style-img-add':
|
|
256
334
|
case 'style-img-container-add':
|
|
257
335
|
case 'style-img-outer-add':
|
|
258
|
-
if (clickedNode &&
|
|
336
|
+
if (clickedNode && styleContextNode && signal.childId)
|
|
259
337
|
return (
|
|
260
338
|
<StyleImageAddPanel
|
|
261
339
|
node={clickedNode}
|
|
262
|
-
parentNode={
|
|
340
|
+
parentNode={styleContextNode}
|
|
263
341
|
childId={signal.childId}
|
|
264
342
|
/>
|
|
265
343
|
);
|
|
@@ -268,11 +346,11 @@ const PanelSwitch = ({
|
|
|
268
346
|
case 'style-img-update':
|
|
269
347
|
case 'style-img-container-update':
|
|
270
348
|
case 'style-img-outer-update':
|
|
271
|
-
if (clickedNode &&
|
|
349
|
+
if (clickedNode && styleContextNode && signal.className && signal.childId)
|
|
272
350
|
return (
|
|
273
351
|
<StyleImageUpdatePanel
|
|
274
352
|
node={clickedNode}
|
|
275
|
-
parentNode={
|
|
353
|
+
parentNode={styleContextNode}
|
|
276
354
|
className={signal.className}
|
|
277
355
|
childId={signal.childId}
|
|
278
356
|
config={config}
|
|
@@ -281,36 +359,74 @@ const PanelSwitch = ({
|
|
|
281
359
|
break;
|
|
282
360
|
|
|
283
361
|
case 'style-img-remove':
|
|
362
|
+
if (clickedNode && styleContextNode && signal.className)
|
|
363
|
+
return (
|
|
364
|
+
<StyleImageRemovePanel
|
|
365
|
+
node={clickedNode}
|
|
366
|
+
parentNode={styleContextNode}
|
|
367
|
+
className={signal.className}
|
|
368
|
+
/>
|
|
369
|
+
);
|
|
370
|
+
break;
|
|
371
|
+
|
|
284
372
|
case 'style-img-container-remove':
|
|
285
373
|
case 'style-img-outer-remove':
|
|
286
|
-
if (clickedNode &&
|
|
374
|
+
if (clickedNode && styleContextNode && signal.className && signal.childId)
|
|
287
375
|
return (
|
|
288
376
|
<StyleImageRemovePanel
|
|
289
377
|
node={clickedNode}
|
|
290
|
-
parentNode={
|
|
378
|
+
parentNode={styleContextNode}
|
|
291
379
|
className={signal.className}
|
|
292
380
|
childId={signal.childId}
|
|
293
381
|
/>
|
|
294
382
|
);
|
|
295
383
|
break;
|
|
296
384
|
|
|
297
|
-
case 'style-widget':
|
|
298
|
-
|
|
299
|
-
|
|
385
|
+
case 'style-widget': {
|
|
386
|
+
let widgetNode: FlatNode | undefined;
|
|
387
|
+
let containerNode: FlatNode | undefined;
|
|
388
|
+
let outerContainerNode: FlatNode | undefined;
|
|
389
|
+
|
|
390
|
+
if (
|
|
391
|
+
clickedNode &&
|
|
392
|
+
(clickedNode.tagName === 'ul' || clickedNode.tagName === 'ol')
|
|
393
|
+
) {
|
|
394
|
+
outerContainerNode = clickedNode;
|
|
395
|
+
const liNodeIds = ctx.getChildNodeIDs(outerContainerNode.id);
|
|
396
|
+
if (liNodeIds.length > 0) {
|
|
397
|
+
containerNode = allNodes.get(liNodeIds[0]) as FlatNode;
|
|
398
|
+
if (containerNode) {
|
|
399
|
+
const codeNodeIds = ctx.getChildNodeIDs(containerNode.id);
|
|
400
|
+
if (codeNodeIds.length > 0) {
|
|
401
|
+
widgetNode = allNodes.get(codeNodeIds[0]) as FlatNode;
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
}
|
|
405
|
+
} else if (clickedNode?.parentId) {
|
|
406
|
+
widgetNode = clickedNode;
|
|
407
|
+
containerNode = allNodes.get(clickedNode.parentId) as FlatNode;
|
|
300
408
|
if (containerNode?.parentId) {
|
|
301
|
-
|
|
302
|
-
if (markdownNode && containerNode && outerContainerNode)
|
|
303
|
-
return (
|
|
304
|
-
<StyleWidgetPanel
|
|
305
|
-
node={clickedNode}
|
|
306
|
-
parentNode={markdownNode}
|
|
307
|
-
containerNode={containerNode as FlatNode}
|
|
308
|
-
outerContainerNode={outerContainerNode as FlatNode}
|
|
309
|
-
/>
|
|
310
|
-
);
|
|
409
|
+
outerContainerNode = allNodes.get(containerNode.parentId) as FlatNode;
|
|
311
410
|
}
|
|
312
411
|
}
|
|
412
|
+
|
|
413
|
+
if (
|
|
414
|
+
styleContextNode &&
|
|
415
|
+
widgetNode &&
|
|
416
|
+
containerNode &&
|
|
417
|
+
outerContainerNode
|
|
418
|
+
) {
|
|
419
|
+
return (
|
|
420
|
+
<StyleWidgetPanel
|
|
421
|
+
node={widgetNode}
|
|
422
|
+
parentNode={styleContextNode}
|
|
423
|
+
containerNode={containerNode}
|
|
424
|
+
outerContainerNode={outerContainerNode}
|
|
425
|
+
/>
|
|
426
|
+
);
|
|
427
|
+
}
|
|
313
428
|
break;
|
|
429
|
+
}
|
|
314
430
|
|
|
315
431
|
case 'style-code-config':
|
|
316
432
|
if (clickedNode)
|
|
@@ -320,24 +436,35 @@ const PanelSwitch = ({
|
|
|
320
436
|
case 'style-code-add':
|
|
321
437
|
case 'style-code-container-add':
|
|
322
438
|
case 'style-code-outer-add':
|
|
323
|
-
if (clickedNode &&
|
|
439
|
+
if (clickedNode && styleContextNode)
|
|
324
440
|
return (
|
|
325
441
|
<StyleWidgetAddPanel
|
|
326
442
|
node={clickedNode}
|
|
327
|
-
parentNode={
|
|
443
|
+
parentNode={styleContextNode}
|
|
328
444
|
childId={signal?.childId}
|
|
329
445
|
/>
|
|
330
446
|
);
|
|
331
447
|
break;
|
|
332
448
|
|
|
333
449
|
case 'style-code-update':
|
|
450
|
+
if (clickedNode && styleContextNode && signal.className)
|
|
451
|
+
return (
|
|
452
|
+
<StyleWidgetUpdatePanel
|
|
453
|
+
node={clickedNode}
|
|
454
|
+
parentNode={styleContextNode}
|
|
455
|
+
className={signal.className}
|
|
456
|
+
config={config}
|
|
457
|
+
/>
|
|
458
|
+
);
|
|
459
|
+
break;
|
|
460
|
+
|
|
334
461
|
case 'style-code-container-update':
|
|
335
462
|
case 'style-code-outer-update':
|
|
336
|
-
if (clickedNode &&
|
|
463
|
+
if (clickedNode && styleContextNode && signal.childId && signal.className)
|
|
337
464
|
return (
|
|
338
465
|
<StyleWidgetUpdatePanel
|
|
339
466
|
node={clickedNode}
|
|
340
|
-
parentNode={
|
|
467
|
+
parentNode={styleContextNode}
|
|
341
468
|
className={signal.className}
|
|
342
469
|
childId={signal.childId}
|
|
343
470
|
config={config}
|
|
@@ -346,13 +473,23 @@ const PanelSwitch = ({
|
|
|
346
473
|
break;
|
|
347
474
|
|
|
348
475
|
case 'style-code-remove':
|
|
476
|
+
if (clickedNode && styleContextNode && signal.className)
|
|
477
|
+
return (
|
|
478
|
+
<StyleWidgetRemovePanel
|
|
479
|
+
node={clickedNode}
|
|
480
|
+
parentNode={styleContextNode}
|
|
481
|
+
className={signal.className}
|
|
482
|
+
/>
|
|
483
|
+
);
|
|
484
|
+
break;
|
|
485
|
+
|
|
349
486
|
case 'style-code-container-remove':
|
|
350
487
|
case 'style-code-outer-remove':
|
|
351
|
-
if (clickedNode &&
|
|
488
|
+
if (clickedNode && styleContextNode && signal.childId && signal.className)
|
|
352
489
|
return (
|
|
353
490
|
<StyleWidgetRemovePanel
|
|
354
491
|
node={clickedNode}
|
|
355
|
-
parentNode={
|
|
492
|
+
parentNode={styleContextNode}
|
|
356
493
|
className={signal.className}
|
|
357
494
|
childId={signal.childId}
|
|
358
495
|
/>
|
|
@@ -363,14 +500,14 @@ const PanelSwitch = ({
|
|
|
363
500
|
if (clickedNode?.parentId) {
|
|
364
501
|
const outerContainerNode = allNodes.get(clickedNode.parentId);
|
|
365
502
|
if (
|
|
366
|
-
|
|
503
|
+
styleContextNode &&
|
|
367
504
|
outerContainerNode &&
|
|
368
505
|
signal.action === 'style-li-element'
|
|
369
506
|
)
|
|
370
507
|
return (
|
|
371
508
|
<StyleLiElementPanel
|
|
372
509
|
node={clickedNode}
|
|
373
|
-
parentNode={
|
|
510
|
+
parentNode={styleContextNode}
|
|
374
511
|
outerContainerNode={outerContainerNode as FlatNode}
|
|
375
512
|
/>
|
|
376
513
|
);
|
|
@@ -378,24 +515,43 @@ const PanelSwitch = ({
|
|
|
378
515
|
break;
|
|
379
516
|
|
|
380
517
|
case 'style-li-element-add':
|
|
518
|
+
if (clickedNode && styleContextNode)
|
|
519
|
+
return (
|
|
520
|
+
<StyleLiElementAddPanel
|
|
521
|
+
node={clickedNode}
|
|
522
|
+
parentNode={styleContextNode}
|
|
523
|
+
/>
|
|
524
|
+
);
|
|
525
|
+
break;
|
|
526
|
+
|
|
381
527
|
case 'style-li-container-add':
|
|
382
|
-
if (clickedNode &&
|
|
528
|
+
if (clickedNode && styleContextNode)
|
|
383
529
|
return (
|
|
384
530
|
<StyleLiElementAddPanel
|
|
385
531
|
node={clickedNode}
|
|
386
|
-
parentNode={
|
|
387
|
-
childId={signal.childId}
|
|
532
|
+
parentNode={styleContextNode}
|
|
388
533
|
/>
|
|
389
534
|
);
|
|
390
535
|
break;
|
|
391
536
|
|
|
392
537
|
case 'style-li-element-update':
|
|
538
|
+
if (clickedNode && styleContextNode && signal.className)
|
|
539
|
+
return (
|
|
540
|
+
<StyleLiElementUpdatePanel
|
|
541
|
+
node={clickedNode}
|
|
542
|
+
parentNode={styleContextNode}
|
|
543
|
+
className={signal.className}
|
|
544
|
+
config={config}
|
|
545
|
+
/>
|
|
546
|
+
);
|
|
547
|
+
break;
|
|
548
|
+
|
|
393
549
|
case 'style-li-container-update':
|
|
394
|
-
if (clickedNode &&
|
|
550
|
+
if (clickedNode && styleContextNode && signal.className && signal.childId)
|
|
395
551
|
return (
|
|
396
552
|
<StyleLiElementUpdatePanel
|
|
397
553
|
node={clickedNode}
|
|
398
|
-
parentNode={
|
|
554
|
+
parentNode={styleContextNode}
|
|
399
555
|
className={signal.className}
|
|
400
556
|
childId={signal.childId}
|
|
401
557
|
config={config}
|
|
@@ -404,12 +560,22 @@ const PanelSwitch = ({
|
|
|
404
560
|
break;
|
|
405
561
|
|
|
406
562
|
case 'style-li-element-remove':
|
|
563
|
+
if (clickedNode && styleContextNode && signal.className)
|
|
564
|
+
return (
|
|
565
|
+
<StyleLiElementRemovePanel
|
|
566
|
+
node={clickedNode}
|
|
567
|
+
parentNode={styleContextNode}
|
|
568
|
+
className={signal.className}
|
|
569
|
+
/>
|
|
570
|
+
);
|
|
571
|
+
break;
|
|
572
|
+
|
|
407
573
|
case 'style-li-container-remove':
|
|
408
|
-
if (clickedNode &&
|
|
574
|
+
if (clickedNode && styleContextNode && signal.className && signal.childId)
|
|
409
575
|
return (
|
|
410
576
|
<StyleLiElementRemovePanel
|
|
411
577
|
node={clickedNode}
|
|
412
|
-
parentNode={
|
|
578
|
+
parentNode={styleContextNode}
|
|
413
579
|
className={signal.className}
|
|
414
580
|
childId={signal.childId}
|
|
415
581
|
/>
|
|
@@ -429,16 +595,7 @@ const PanelSwitch = ({
|
|
|
429
595
|
default:
|
|
430
596
|
settingsPanelStore.set(null);
|
|
431
597
|
}
|
|
432
|
-
console.
|
|
433
|
-
`SettingsPanel miss`,
|
|
434
|
-
signal,
|
|
435
|
-
clickedNode,
|
|
436
|
-
paneId,
|
|
437
|
-
paneNode,
|
|
438
|
-
childNodeIds,
|
|
439
|
-
childNodes,
|
|
440
|
-
availableCodeHooks
|
|
441
|
-
);
|
|
598
|
+
console.warn(`SettingsPanel switch miss`, signal, clickedNode);
|
|
442
599
|
return null;
|
|
443
600
|
};
|
|
444
601
|
|
|
@@ -16,7 +16,6 @@ const SettingsPanel = ({ config, availableCodeHooks }: SettingsPanelProps) => {
|
|
|
16
16
|
const signal = useStore(settingsPanelStore);
|
|
17
17
|
const ctx = getCtx();
|
|
18
18
|
const { value: toolModeVal } = useStore(ctx.toolModeValStore);
|
|
19
|
-
|
|
20
19
|
const isLinkInsertSignal = signal?.action === 'style-link';
|
|
21
20
|
const shouldShow =
|
|
22
21
|
toolModeVal === 'styles' || (toolModeVal === 'text' && isLinkInsertSignal);
|
|
@@ -174,7 +174,7 @@ const AddPaneCodeHookPanel = ({
|
|
|
174
174
|
<style>{comboboxItemStyles}</style>
|
|
175
175
|
<div className="w-full rounded-md bg-white p-1.5">
|
|
176
176
|
<div className="flex flex-wrap items-center gap-2">
|
|
177
|
-
<div className="flex min-w-
|
|
177
|
+
<div className="flex min-w-48 flex-wrap items-center gap-2">
|
|
178
178
|
<button
|
|
179
179
|
onClick={() => setMode(PaneAddMode.DEFAULT)}
|
|
180
180
|
className="w-fit flex-none rounded bg-gray-100 px-3 py-1 text-sm text-gray-700 transition-colors hover:bg-gray-200 focus:bg-gray-200"
|
|
@@ -187,7 +187,7 @@ const AddPaneCodeHookPanel = ({
|
|
|
187
187
|
</div>
|
|
188
188
|
</div>
|
|
189
189
|
|
|
190
|
-
<div className="min-w-
|
|
190
|
+
<div className="min-w-72 flex-1">
|
|
191
191
|
<Combobox.Root
|
|
192
192
|
collection={collection}
|
|
193
193
|
value={selected ? [selected] : []}
|
|
@@ -247,7 +247,7 @@ const AddPaneCodeHookPanel = ({
|
|
|
247
247
|
</div>
|
|
248
248
|
|
|
249
249
|
{selected && (
|
|
250
|
-
<div className="flex min-w-
|
|
250
|
+
<div className="flex min-w-48 flex-wrap gap-2">
|
|
251
251
|
<button
|
|
252
252
|
onClick={handleUseCodeHook}
|
|
253
253
|
className="rounded bg-cyan-600 px-3 py-2 text-sm text-white transition-colors hover:bg-cyan-700 focus:bg-cyan-700"
|