@lingjingai/script-editor 0.1.1 → 0.1.13

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
@@ -399,6 +399,26 @@
399
399
  .lj-se-scenediff-accept { font-weight: 500; color: var(--lj-se-fg); background: var(--lj-se-bg); box-shadow: inset 0 0 0 1px var(--lj-se-border); }
400
400
  .lj-se-scenediff-accept:hover { background: var(--lj-se-muted); }
401
401
 
402
+ /* ── action-level diff: row tint + per-line ✓/✗ + removed "ghost" rows ─────── */
403
+ /* unified diff: the NEW line (added / modified-after) gets a green block; the
404
+ OLD line (removed / modified-before) a red block with strike-through. A
405
+ modified hunk stacks red-old over green-new, like a code diff. */
406
+ .lj-se-action-slot.is-diff-added > .lj-se-row,
407
+ .lj-se-action-slot.is-diff-modified > .lj-se-row { background: color-mix(in oklab, oklch(0.62 0.15 150) 13%, transparent); border-radius: 6px; }
408
+ .lj-se-diff-old { border-radius: 6px; margin-bottom: 3px; background: color-mix(in oklab, var(--lj-se-destructive) 9%, transparent); }
409
+ .lj-se-diff-old > .lj-se-row { opacity: 0.7; }
410
+ .lj-se-diff-old .lj-se-editable { color: var(--lj-se-muted-fg); text-decoration: line-through; text-decoration-color: color-mix(in oklab, var(--lj-se-destructive) 55%, transparent); }
411
+ .lj-se-ghost-row { position: relative; }
412
+ .lj-se-ghost-empty { padding: 4px 12px; color: var(--lj-se-muted-fg); font-style: italic; }
413
+ .lj-se-actiondiff-ctrl { position: absolute; top: 4px; right: 4px; z-index: 2; display: inline-flex; gap: 2px; opacity: 0; transition: opacity 0.12s ease; }
414
+ .lj-se-action-slot:hover > .lj-se-actiondiff-ctrl,
415
+ .lj-se-ghost-row > .lj-se-actiondiff-ctrl { opacity: 1; }
416
+ .lj-se-actiondiff-ctrl > button { display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 22px; border: 0; border-radius: 6px; cursor: pointer; background: var(--lj-se-bg); box-shadow: inset 0 0 0 1px var(--lj-se-border); }
417
+ .lj-se-actiondiff-reject { color: var(--lj-se-muted-fg); }
418
+ .lj-se-actiondiff-reject:hover { color: var(--lj-se-destructive); background: color-mix(in oklab, var(--lj-se-destructive) 12%, transparent); }
419
+ .lj-se-actiondiff-accept { color: oklch(0.5 0.15 150); }
420
+ .lj-se-actiondiff-accept:hover { background: color-mix(in oklab, oklch(0.62 0.15 150) 16%, transparent); }
421
+
402
422
  /* ── Worldview view ──────────────────────────────────────────────────── */
403
423
  .lj-se-worldview { height: 100%; overflow-y: auto; padding: 24px; }
404
424
  .lj-se-worldview, .lj-se-entity { max-width: 760px; margin: 0 auto; width: 100%; }
@@ -636,7 +656,7 @@
636
656
  .lj-se-epbanner { display: flex; flex-direction: column; align-items: center; gap: 6px; padding: 8px 0 12px; color: var(--lj-se-paper-fg); text-align: center; }
637
657
  .lj-se-epbanner-kicker { font-size: 11px; letter-spacing: 0.5em; text-indent: 0.5em; color: color-mix(in oklab, var(--lj-se-paper-fg) 45%, transparent); }
638
658
  .lj-se-epbanner-script { margin: 0; font-size: 23px; font-weight: 700; letter-spacing: 0.04em; }
639
- .lj-se-epbanner-ep { margin: 2px 0 0; font-size: 18px; font-weight: 600; }
659
+ .lj-se-epbanner-ep { margin: 2px 0 0; font-size: 22px; font-weight: 600; }
640
660
  .lj-se-epbanner-divider { margin-top: 8px; height: 1px; width: 96px; background: currentColor; opacity: 0.15; }
641
661
  .lj-se-epbanner .lj-se-editable { display: inline-block; }
642
662
 
@@ -657,7 +677,7 @@
657
677
  .lj-se-row { padding: 3px 8px; }
658
678
 
659
679
  /* the margin handle (per row) */
660
- .lj-se-handle-pop { position: absolute; left: -34px; top: 1px; display: inline-flex; }
680
+ .lj-se-handle-pop { position: absolute; left: -34px; top: 50%; transform: translateY(-50%); display: inline-flex; }
661
681
  .lj-se-handle {
662
682
  position: relative; display: inline-flex; align-items: center; justify-content: center;
663
683
  width: 22px; height: 24px; padding: 0; border: 0; background: transparent; cursor: pointer;
@@ -675,6 +695,9 @@
675
695
  }
676
696
  .lj-se-handle:hover::before, .lj-se-handle.is-open::before { opacity: 1; transform: translate(-50%, -50%) scale(1); }
677
697
  .lj-se-handle-grip { width: 14px; height: 14px; }
698
+ /* hovering the left grip tints the whole row block it controls (plain content
699
+ hover stays un-tinted by design). */
700
+ .lj-se-row:has(.lj-se-handle:hover) { background: color-mix(in oklab, var(--lj-se-paper-fg) 6%, transparent); }
678
701
 
679
702
  /* the scene number as the scene's control hub */
680
703
  .lj-se-scenenum-pop { position: relative; display: inline-flex; }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lingjingai/script-editor",
3
- "version": "0.1.1",
3
+ "version": "0.1.13",
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",