@lingjingai/script-editor 0.1.20 → 0.1.22

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/style.css CHANGED
@@ -648,8 +648,22 @@
648
648
  .lj-se-assetcard-state-top { display: flex; align-items: center; justify-content: space-between; gap: 4px; }
649
649
  .lj-se-assetcard-state-name { font-size: 13px; font-weight: 600; }
650
650
  .lj-se-assetcard-state-desc { display: block; margin-top: 2px; font-size: 12px; color: var(--lj-se-muted-fg); min-height: 1.2em; }
651
- .lj-se-assetcard-state .lj-se-del { width: 24px; height: 24px; }
652
- .lj-se-assetcard-state .lj-se-del .lj-se-icon { width: 14px; height: 14px; }
651
+ .lj-se-assetcard-state-del { display: inline-flex; width: 24px; height: 24px; align-items: center; justify-content: center; border: 0; background: transparent; border-radius: 6px; color: var(--lj-se-muted-fg); cursor: pointer; }
652
+ .lj-se-assetcard-state-del:hover { background: color-mix(in oklab, var(--lj-se-destructive) 10%, transparent); color: var(--lj-se-destructive); }
653
+
654
+ /* ── Modal confirm ───────────────────────────────────────────────────── */
655
+ .lj-se-modal-backdrop { position: fixed; inset: 0; z-index: 1200; display: flex; align-items: center; justify-content: center; padding: 24px; background: oklch(0 0 0 / 0.28); }
656
+ .lj-se-modal { width: min(360px, 100%); border: 1px solid var(--lj-se-border); border-radius: 10px; background: var(--lj-se-popover); color: var(--lj-se-fg); box-shadow: 0 18px 50px -20px oklch(0 0 0 / 0.45), 0 6px 18px -8px oklch(0 0 0 / 0.24); padding: 14px; }
657
+ .lj-se-modal-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
658
+ .lj-se-modal-title { margin: 0; font-size: 14px; font-weight: 650; }
659
+ .lj-se-modal-x { display: inline-flex; width: 28px; height: 28px; align-items: center; justify-content: center; border: 0; background: transparent; border-radius: 6px; color: var(--lj-se-muted-fg); cursor: pointer; }
660
+ .lj-se-modal-x:hover { background: var(--lj-se-accent); color: var(--lj-se-fg); }
661
+ .lj-se-modal-body { margin: 10px 0 16px; font-size: 13px; line-height: 1.6; color: var(--lj-se-muted-fg); }
662
+ .lj-se-modal-actions { display: flex; justify-content: flex-end; gap: 8px; }
663
+ .lj-se-modal-btn { border: 1px solid var(--lj-se-border); background: var(--lj-se-card); color: var(--lj-se-fg); cursor: pointer; border-radius: 6px; padding: 6px 12px; font: inherit; font-size: 12px; }
664
+ .lj-se-modal-btn:hover { background: var(--lj-se-accent); }
665
+ .lj-se-modal-btn-danger { border-color: color-mix(in oklab, var(--lj-se-destructive) 35%, var(--lj-se-border)); background: var(--lj-se-destructive); color: white; }
666
+ .lj-se-modal-btn-danger:hover { background: color-mix(in oklab, var(--lj-se-destructive) 88%, black); }
653
667
 
654
668
  /* ── Reference grid (asset → scenes) ─────────────────────────────────── */
655
669
  .lj-se-refgrid { margin-top: 12px; display: flex; flex-wrap: wrap; gap: 6px 12px; }
@@ -661,12 +675,14 @@
661
675
  .lj-se-refgrid-scene.is-current { background: color-mix(in oklab, var(--lj-se-primary) 15%, transparent); color: var(--lj-se-primary); box-shadow: 0 0 0 1px color-mix(in oklab, var(--lj-se-primary) 40%, transparent) inset; }
662
676
 
663
677
  /* ── 状态泳道时间轴(state→scene 反查,横向滚动)──────────────────────── */
664
- .lj-se-sttl { margin-top: 12px; border: 1px solid var(--lj-se-border); border-radius: 8px; overflow-x: auto; overflow-y: hidden; }
678
+ .lj-se-sttl { position: relative; margin-top: 12px; border: 1px solid var(--lj-se-border); border-radius: 8px; overflow-x: auto; overflow-y: hidden; }
665
679
  .lj-se-sttl-axis,
666
680
  .lj-se-sttl-lane { display: flex; width: max-content; min-width: 100%; }
667
681
  .lj-se-sttl-axis { border-bottom: 1px solid var(--lj-se-border); }
668
682
  .lj-se-sttl-lane { border-bottom: 1px solid var(--lj-se-border); }
669
683
  .lj-se-sttl-lane:last-child { border-bottom: 0; }
684
+ .lj-se-sttl-lane.is-drop { background: color-mix(in oklab, var(--lj-se-primary) 8%, transparent); }
685
+ .lj-se-sttl-lane.is-drop .lj-se-sttl-lane-head { background: color-mix(in oklab, var(--lj-se-primary) 10%, var(--lj-se-card)); }
670
686
  /* sticky left column: state names stay pinned while the track scrolls */
671
687
  .lj-se-sttl-axis-lab,
672
688
  .lj-se-sttl-lane-head { position: sticky; left: 0; z-index: 2; flex: none; width: 116px; box-sizing: border-box; border-right: 1px solid var(--lj-se-border); }
@@ -678,10 +694,17 @@
678
694
  .lj-se-sttl-axis-eps { display: flex; flex: none; background: color-mix(in oklab, var(--lj-se-muted) 45%, transparent); }
679
695
  .lj-se-sttl-ep { flex: none; box-sizing: border-box; text-align: center; padding: 6px 2px; font-family: "JetBrains Mono", ui-monospace, monospace; font-size: 10.5px; font-weight: 600; color: var(--lj-se-fg); border-left: 1px solid var(--lj-se-border); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
680
696
  .lj-se-sttl-track { position: relative; flex: none; min-height: 36px; }
697
+ .lj-se-sttl.is-editable .lj-se-sttl-track,
698
+ .lj-se-sttl.is-editable .lj-se-sttl-node { touch-action: none; user-select: none; }
681
699
  .lj-se-sttl-col { position: absolute; top: 0; bottom: 0; border-left: 1px solid color-mix(in oklab, var(--lj-se-border) 55%, transparent); }
682
700
  .lj-se-sttl-flow { position: absolute; top: 50%; height: 2px; transform: translateY(-50%); background: color-mix(in oklab, var(--cue) 35%, transparent); }
683
701
  .lj-se-sttl-node { position: absolute; top: 50%; transform: translate(-50%, -50%); width: 21px; height: 21px; border: 0; border-radius: 6px; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; font-family: "JetBrains Mono", ui-monospace, monospace; font-size: 10px; font-weight: 600; color: var(--cue); background: color-mix(in oklab, var(--cue) 18%, transparent); box-shadow: 0 0 0 1px color-mix(in oklab, var(--cue) 45%, transparent) inset; }
684
702
  .lj-se-sttl-node:hover { background: color-mix(in oklab, var(--cue) 32%, transparent); }
703
+ .lj-se-sttl-node.is-selected { box-shadow: 0 0 0 1px var(--lj-se-card) inset, 0 0 0 2px var(--lj-se-primary); }
704
+ .lj-se-sttl-node.is-dragging { opacity: 0.55; cursor: grabbing; }
705
+ .lj-se-sttl.is-dragging .lj-se-sttl-node { cursor: grabbing; }
706
+ .lj-se-sttl-select-box { position: absolute; z-index: 4; pointer-events: none; border: 1px solid var(--lj-se-primary); border-radius: 4px; background: color-mix(in oklab, var(--lj-se-primary) 12%, transparent); }
707
+ .lj-se-sttl-drag-ghost { position: fixed; z-index: 1100; pointer-events: none; transform: translate(-50%, -50%); min-width: 24px; height: 24px; padding: 0 8px; border-radius: 7px; display: inline-flex; align-items: center; justify-content: center; font-family: "JetBrains Mono", ui-monospace, monospace; font-size: 11px; font-weight: 700; color: var(--lj-se-primary); background: var(--lj-se-popover); border: 1px solid color-mix(in oklab, var(--lj-se-primary) 55%, transparent); box-shadow: 0 8px 20px -10px oklch(0 0 0 / 0.35); }
685
708
 
686
709
  /* ── 场内容悬浮预览卡(hover 时随节点弹出,只读剧本格式)─────────────── */
687
710
  .lj-se-spv { position: fixed; z-index: 1000; box-sizing: border-box; display: flex; flex-direction: column; border: 1px solid var(--lj-se-border); border-radius: 10px; background: var(--lj-se-popover); color: var(--lj-se-fg); box-shadow: 0 10px 30px -8px oklch(0 0 0 / 0.28), 0 2px 8px -2px oklch(0 0 0 / 0.18); overflow: hidden; }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lingjingai/script-editor",
3
- "version": "0.1.20",
3
+ "version": "0.1.22",
4
4
  "description": "Pure, business-decoupled screenplay (剧本) editor: value:ScriptProject + onEdit(patch); dual-format (standard/asian), virtualized single-stream, click-to-edit; bundled CSS, business injected via adapters.",
5
5
  "license": "MIT",
6
6
  "type": "module",