evomeme 0.1.7 → 0.1.9

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.
@@ -431,118 +431,6 @@ textarea {
431
431
  font-weight: 600;
432
432
  }
433
433
 
434
- .insp-frame-box {
435
- border: 1px solid var(--line);
436
- border-radius: 10px;
437
- padding: 8px;
438
- background: rgba(10, 12, 16, 0.45);
439
- max-height: 260px;
440
- overflow: auto;
441
- }
442
-
443
- .insp-frame-hint {
444
- margin: 0 0 8px;
445
- font-size: 11px;
446
- color: var(--muted);
447
- }
448
-
449
- .insp-frame-grid {
450
- display: grid;
451
- grid-template-columns: repeat(auto-fill, minmax(52px, 1fr));
452
- gap: 6px;
453
- }
454
-
455
- .insp-frame {
456
- position: relative;
457
- min-width: 0;
458
- padding: 3px;
459
- border-radius: 7px;
460
- border: 1px solid var(--line);
461
- background: var(--bg-1);
462
- cursor: grab;
463
- user-select: none;
464
- }
465
-
466
- .insp-frame:active {
467
- cursor: grabbing;
468
- }
469
-
470
- .insp-frame.is-dragging {
471
- opacity: 0.4;
472
- }
473
-
474
- .insp-frame.is-drop-target {
475
- border-color: var(--accent);
476
- box-shadow: 0 0 0 1px rgba(61, 214, 198, 0.35);
477
- }
478
-
479
- .insp-frame-index {
480
- position: absolute;
481
- z-index: 1;
482
- left: 5px;
483
- top: 5px;
484
- min-width: 14px;
485
- height: 14px;
486
- padding: 0 3px;
487
- border-radius: 4px;
488
- background: rgba(18, 21, 26, 0.82);
489
- color: var(--text);
490
- font-size: 9px;
491
- font-family: 'JetBrains Mono', monospace;
492
- line-height: 14px;
493
- text-align: center;
494
- pointer-events: none;
495
- }
496
-
497
- .insp-frame-del {
498
- position: absolute;
499
- z-index: 2;
500
- right: 2px;
501
- top: 2px;
502
- width: 16px;
503
- height: 16px;
504
- padding: 0;
505
- border: 1px solid var(--line);
506
- border-radius: 4px;
507
- background: rgba(18, 21, 26, 0.88);
508
- color: var(--muted);
509
- font-size: 11px;
510
- line-height: 1;
511
- cursor: pointer;
512
- }
513
-
514
- .insp-frame-del:hover {
515
- color: var(--danger);
516
- border-color: rgba(255, 107, 122, 0.45);
517
- }
518
-
519
- .insp-frame-thumb {
520
- width: 100%;
521
- aspect-ratio: 1;
522
- display: flex;
523
- align-items: center;
524
- justify-content: center;
525
- border-radius: 4px;
526
- overflow: hidden;
527
- background:
528
- linear-gradient(45deg, #2a3140 25%, transparent 25%),
529
- linear-gradient(-45deg, #2a3140 25%, transparent 25%),
530
- linear-gradient(45deg, transparent 75%, #2a3140 75%),
531
- linear-gradient(-45deg, transparent 75%, #2a3140 75%);
532
- background-size: 10px 10px;
533
- background-position: 0 0, 0 5px, 5px -5px, -5px 0;
534
- pointer-events: none;
535
- }
536
-
537
- .insp-frame-thumb img {
538
- max-width: 100%;
539
- max-height: 100%;
540
- width: auto;
541
- height: auto;
542
- object-fit: contain;
543
- display: block;
544
- }
545
-
546
434
  .insp-list {
547
435
  display: flex;
548
436
  flex-direction: column;
@@ -769,6 +657,58 @@ textarea {
769
657
  box-shadow: 0 0 0 1px rgba(61, 214, 198, 0.35), var(--shadow);
770
658
  }
771
659
 
660
+ .canvas-resize-handle {
661
+ position: absolute;
662
+ z-index: 20;
663
+ width: 18px;
664
+ height: 18px;
665
+ padding: 0;
666
+ border: 0;
667
+ outline: 0;
668
+ background: transparent;
669
+ box-shadow: none;
670
+ pointer-events: auto;
671
+ touch-action: none;
672
+ }
673
+
674
+ .canvas-resize-handle[data-corner='nw'] {
675
+ top: 0;
676
+ left: 0;
677
+ cursor: nwse-resize;
678
+ }
679
+
680
+ .canvas-resize-handle[data-corner='ne'] {
681
+ top: 0;
682
+ right: 0;
683
+ cursor: nesw-resize;
684
+ }
685
+
686
+ .canvas-resize-handle[data-corner='sw'] {
687
+ bottom: 27px;
688
+ left: 0;
689
+ cursor: nesw-resize;
690
+ }
691
+
692
+ .canvas-resize-handle[data-corner='se'] {
693
+ right: 0;
694
+ bottom: 27px;
695
+ cursor: nwse-resize;
696
+ }
697
+
698
+ .canvas-viewport.is-resizing[data-resize-corner='nw'],
699
+ .canvas-viewport.is-resizing[data-resize-corner='nw'] *,
700
+ .canvas-viewport.is-resizing[data-resize-corner='se'],
701
+ .canvas-viewport.is-resizing[data-resize-corner='se'] * {
702
+ cursor: nwse-resize !important;
703
+ }
704
+
705
+ .canvas-viewport.is-resizing[data-resize-corner='ne'],
706
+ .canvas-viewport.is-resizing[data-resize-corner='ne'] *,
707
+ .canvas-viewport.is-resizing[data-resize-corner='sw'],
708
+ .canvas-viewport.is-resizing[data-resize-corner='sw'] * {
709
+ cursor: nesw-resize !important;
710
+ }
711
+
772
712
  .canvas-node.is-image {
773
713
  background: transparent;
774
714
  }
@@ -782,6 +722,303 @@ textarea {
782
722
  background: transparent;
783
723
  }
784
724
 
725
+ .frame-sheet-preview {
726
+ position: relative;
727
+ display: block;
728
+ width: 100%;
729
+ overflow: hidden;
730
+ border-radius: 10px 10px 0 0;
731
+ background: transparent;
732
+ pointer-events: none;
733
+ }
734
+
735
+ .frame-sheet-preview img[data-role='frame-sheet-image'] {
736
+ position: absolute;
737
+ left: 0;
738
+ top: 0;
739
+ display: block;
740
+ max-width: none;
741
+ max-height: none;
742
+ object-fit: fill;
743
+ transform-origin: top left;
744
+ pointer-events: none;
745
+ will-change: transform;
746
+ }
747
+
748
+ .canvas-node.is-frame-editor {
749
+ overflow: hidden;
750
+ border-color: rgba(61, 214, 198, 0.28);
751
+ background: linear-gradient(165deg, rgba(28, 34, 42, 0.98), rgba(16, 19, 24, 0.98));
752
+ }
753
+
754
+ .frame-editor-head {
755
+ display: flex;
756
+ align-items: center;
757
+ justify-content: space-between;
758
+ gap: 12px;
759
+ padding: 12px 14px;
760
+ border-bottom: 1px solid var(--line);
761
+ cursor: grab;
762
+ }
763
+
764
+ .frame-editor-head span {
765
+ color: var(--muted);
766
+ font-size: 11px;
767
+ font-family: 'JetBrains Mono', monospace;
768
+ }
769
+
770
+ .frame-editor-toolbar,
771
+ .frame-editor-footer {
772
+ display: flex;
773
+ align-items: center;
774
+ gap: 8px;
775
+ padding: 10px 12px;
776
+ }
777
+
778
+ .frame-editor-toolbar label {
779
+ display: flex;
780
+ align-items: center;
781
+ gap: 6px;
782
+ color: var(--muted);
783
+ font-size: 11px;
784
+ }
785
+
786
+ .frame-editor-toolbar .frame-editor-fps-field {
787
+ margin-left: auto;
788
+ }
789
+
790
+ .frame-editor-toolbar input {
791
+ width: 76px;
792
+ padding: 6px 7px;
793
+ border: 1px solid var(--line);
794
+ border-radius: 7px;
795
+ background: rgba(10, 12, 16, 0.72);
796
+ color: var(--text);
797
+ }
798
+
799
+ .frame-editor-toolbar .frame-editor-dimension-field input {
800
+ width: 58px;
801
+ }
802
+
803
+ .frame-editor-workspace {
804
+ display: grid;
805
+ grid-template-columns: minmax(0, 1fr) 250px;
806
+ min-height: 300px;
807
+ border-block: 1px solid rgba(255, 255, 255, 0.05);
808
+ background: rgba(7, 9, 12, 0.42);
809
+ }
810
+
811
+ .frame-editor-grid-scroll {
812
+ max-height: 380px;
813
+ min-height: 300px;
814
+ display: flex;
815
+ padding: 16px;
816
+ overflow: auto;
817
+ }
818
+
819
+ .frame-editor-grid {
820
+ display: grid;
821
+ gap: 7px;
822
+ width: max-content;
823
+ min-width: max-content;
824
+ margin: auto;
825
+ }
826
+
827
+ .frame-editor-preview {
828
+ display: flex;
829
+ min-width: 0;
830
+ flex-direction: column;
831
+ padding: 16px;
832
+ border-left: 1px solid rgba(255, 255, 255, 0.08);
833
+ background: rgba(11, 14, 18, 0.48);
834
+ }
835
+
836
+ .frame-editor-preview-head {
837
+ display: flex;
838
+ align-items: center;
839
+ justify-content: space-between;
840
+ gap: 10px;
841
+ margin-bottom: 12px;
842
+ }
843
+
844
+ .frame-editor-preview-head strong {
845
+ font-size: 12px;
846
+ }
847
+
848
+ .frame-editor-preview-head span,
849
+ .frame-editor-preview-hint {
850
+ color: var(--muted);
851
+ font-size: 10px;
852
+ font-family: 'JetBrains Mono', monospace;
853
+ }
854
+
855
+ .frame-editor-preview-viewport {
856
+ display: flex;
857
+ min-height: 220px;
858
+ flex: 1;
859
+ align-items: center;
860
+ justify-content: center;
861
+ }
862
+
863
+ .frame-editor-preview-stage {
864
+ position: relative;
865
+ width: 100%;
866
+ aspect-ratio: 1;
867
+ overflow: hidden;
868
+ border: 1px solid rgba(255, 255, 255, 0.13);
869
+ border-radius: 10px;
870
+ background:
871
+ linear-gradient(45deg, #262c35 25%, transparent 25%),
872
+ linear-gradient(-45deg, #262c35 25%, transparent 25%),
873
+ linear-gradient(45deg, transparent 75%, #262c35 75%),
874
+ linear-gradient(-45deg, transparent 75%, #262c35 75%);
875
+ background-color: #171b21;
876
+ background-size: 16px 16px;
877
+ background-position: 0 0, 0 8px, 8px -8px, -8px 0;
878
+ }
879
+
880
+ .frame-editor-preview-frame {
881
+ background: transparent;
882
+ }
883
+
884
+ .frame-editor-preview-empty {
885
+ position: absolute;
886
+ inset: 0;
887
+ display: flex;
888
+ align-items: center;
889
+ justify-content: center;
890
+ color: var(--muted);
891
+ font-size: 11px;
892
+ }
893
+
894
+ .frame-editor-preview-hint {
895
+ margin-top: 12px;
896
+ text-align: center;
897
+ }
898
+
899
+ body.is-ref-dragging .frame-editor-grid {
900
+ outline: 1px dashed rgba(61, 214, 198, 0.65);
901
+ outline-offset: 5px;
902
+ }
903
+
904
+ .frame-editor-cell {
905
+ position: relative;
906
+ width: 72px;
907
+ height: 72px;
908
+ overflow: hidden;
909
+ border: 1px solid rgba(255, 255, 255, 0.12);
910
+ border-radius: 8px;
911
+ background: rgba(255, 255, 255, 0.035);
912
+ }
913
+
914
+ .frame-editor-cell.has-frame {
915
+ cursor: grab;
916
+ }
917
+
918
+ .frame-editor-cell.is-empty {
919
+ display: flex;
920
+ align-items: center;
921
+ justify-content: center;
922
+ border-style: dashed;
923
+ }
924
+
925
+ .frame-editor-cell.is-drop {
926
+ border-color: var(--accent);
927
+ box-shadow: inset 0 0 0 1px rgba(61, 214, 198, 0.48);
928
+ }
929
+
930
+ .frame-editor-cell.is-dragging {
931
+ opacity: 0.4;
932
+ }
933
+
934
+ .frame-editor-thumb {
935
+ position: absolute;
936
+ inset: 0;
937
+ overflow: hidden;
938
+ background:
939
+ linear-gradient(45deg, #262c35 25%, transparent 25%),
940
+ linear-gradient(-45deg, #262c35 25%, transparent 25%),
941
+ linear-gradient(45deg, transparent 75%, #262c35 75%),
942
+ linear-gradient(-45deg, transparent 75%, #262c35 75%);
943
+ background-size: 12px 12px;
944
+ background-position: 0 0, 0 6px, 6px -6px, -6px 0;
945
+ }
946
+
947
+ .frame-editor-thumb img {
948
+ display: block;
949
+ width: 100%;
950
+ height: 100%;
951
+ object-fit: contain;
952
+ pointer-events: none;
953
+ }
954
+
955
+ .frame-editor-thumb.is-source-cell img {
956
+ position: absolute;
957
+ left: 0;
958
+ top: 0;
959
+ max-width: none;
960
+ max-height: none;
961
+ object-fit: fill;
962
+ transform-origin: top left;
963
+ }
964
+
965
+ .frame-editor-order {
966
+ position: absolute;
967
+ left: 4px;
968
+ top: 4px;
969
+ min-width: 17px;
970
+ height: 17px;
971
+ padding-inline: 3px;
972
+ border-radius: 5px;
973
+ background: rgba(7, 9, 12, 0.8);
974
+ color: var(--text);
975
+ font-size: 9px;
976
+ line-height: 17px;
977
+ text-align: center;
978
+ pointer-events: none;
979
+ }
980
+
981
+ .frame-editor-remove {
982
+ position: absolute;
983
+ right: 3px;
984
+ top: 3px;
985
+ width: 19px;
986
+ height: 19px;
987
+ padding: 0;
988
+ border: 1px solid rgba(255, 255, 255, 0.18);
989
+ border-radius: 5px;
990
+ background: rgba(7, 9, 12, 0.82);
991
+ color: var(--muted);
992
+ line-height: 16px;
993
+ cursor: pointer;
994
+ }
995
+
996
+ .frame-editor-remove:hover {
997
+ border-color: rgba(255, 107, 122, 0.55);
998
+ color: var(--danger);
999
+ }
1000
+
1001
+ .frame-editor-empty-label {
1002
+ color: rgba(255, 255, 255, 0.28);
1003
+ font-size: 10px;
1004
+ pointer-events: none;
1005
+ }
1006
+
1007
+ .frame-editor-hint {
1008
+ min-height: 16px;
1009
+ margin: 9px 12px 0;
1010
+ color: var(--muted);
1011
+ font-size: 11px;
1012
+ }
1013
+
1014
+ .frame-editor-hint.is-error {
1015
+ color: var(--danger);
1016
+ }
1017
+
1018
+ .frame-editor-footer {
1019
+ justify-content: flex-end;
1020
+ }
1021
+
785
1022
  .canvas-node-caption {
786
1023
  padding: 6px 8px;
787
1024
  font-size: 11px;
@@ -1419,21 +1656,6 @@ textarea {
1419
1656
  cursor: not-allowed;
1420
1657
  }
1421
1658
 
1422
- .canvas-node.is-sequence .seq-badge {
1423
- position: absolute;
1424
- left: 8px;
1425
- top: 8px;
1426
- z-index: 2;
1427
- padding: 3px 8px;
1428
- border-radius: 999px;
1429
- background: rgba(18, 21, 26, 0.88);
1430
- border: 1px solid rgba(61, 214, 198, 0.45);
1431
- color: var(--accent);
1432
- font-size: 11px;
1433
- font-weight: 600;
1434
- pointer-events: none;
1435
- }
1436
-
1437
1659
  .ctx-menu {
1438
1660
  position: fixed;
1439
1661
  z-index: 50;
@@ -1930,201 +2152,6 @@ textarea {
1930
2152
  .split-anchor-btn[data-anchor^='bottom'],
1931
2153
  .split-anchor-btn[data-anchor='bottom'] { --anchor-y: 85%; }
1932
2154
 
1933
- .trim-player {
1934
- display: flex;
1935
- flex-direction: column;
1936
- gap: 10px;
1937
- }
1938
-
1939
- .trim-stage {
1940
- width: 100%;
1941
- border-radius: 10px;
1942
- overflow: hidden;
1943
- border: 1px solid var(--line);
1944
- background: #000;
1945
- line-height: 0;
1946
- }
1947
-
1948
- .trim-stage video {
1949
- display: block;
1950
- width: 100%;
1951
- height: auto;
1952
- max-height: min(42vh, 360px);
1953
- object-fit: contain;
1954
- background: #000;
1955
- }
1956
-
1957
- .trim-bar {
1958
- display: flex;
1959
- align-items: center;
1960
- gap: 10px;
1961
- }
1962
-
1963
- .trim-play-btn {
1964
- width: 36px;
1965
- height: 36px;
1966
- border-radius: 8px;
1967
- border: 1px solid rgba(61, 214, 198, 0.45);
1968
- background: rgba(61, 214, 198, 0.12);
1969
- color: var(--text);
1970
- cursor: pointer;
1971
- font-size: 14px;
1972
- line-height: 1;
1973
- padding: 0;
1974
- flex: 0 0 auto;
1975
- }
1976
-
1977
- .trim-play-btn:hover {
1978
- background: rgba(61, 214, 198, 0.22);
1979
- }
1980
-
1981
- .trim-clock {
1982
- display: inline-flex;
1983
- align-items: center;
1984
- gap: 4px;
1985
- font-size: 12px;
1986
- color: var(--muted);
1987
- font-family: 'JetBrains Mono', monospace;
1988
- }
1989
-
1990
- .trim-clock strong {
1991
- color: var(--text);
1992
- font-weight: 500;
1993
- }
1994
-
1995
- .trim-times {
1996
- display: flex;
1997
- justify-content: space-between;
1998
- gap: 8px;
1999
- font-size: 12px;
2000
- color: var(--muted);
2001
- }
2002
-
2003
- .trim-times strong {
2004
- color: var(--text);
2005
- font-family: 'JetBrains Mono', monospace;
2006
- font-weight: 500;
2007
- }
2008
-
2009
- .trim-timeline {
2010
- min-width: 0;
2011
- padding: 14px 0 10px;
2012
- }
2013
-
2014
- .trim-track {
2015
- position: relative;
2016
- height: 14px;
2017
- border-radius: 999px;
2018
- background: rgba(255, 255, 255, 0.12);
2019
- touch-action: none;
2020
- user-select: none;
2021
- }
2022
-
2023
- .trim-range {
2024
- position: absolute;
2025
- top: 0;
2026
- bottom: 0;
2027
- left: 0;
2028
- width: 100%;
2029
- border-radius: 999px;
2030
- background: rgba(61, 214, 198, 0.35);
2031
- pointer-events: none;
2032
- z-index: 1;
2033
- }
2034
-
2035
- .trim-scrub-input {
2036
- position: absolute;
2037
- inset: 0;
2038
- width: 100%;
2039
- height: 100%;
2040
- margin: 0;
2041
- padding: 0;
2042
- background: transparent;
2043
- appearance: none;
2044
- -webkit-appearance: none;
2045
- cursor: pointer;
2046
- z-index: 2;
2047
- }
2048
-
2049
- .trim-scrub-input:focus {
2050
- outline: none;
2051
- }
2052
-
2053
- .trim-scrub-input::-webkit-slider-runnable-track {
2054
- height: 14px;
2055
- background: transparent;
2056
- border: none;
2057
- }
2058
-
2059
- .trim-scrub-input::-webkit-slider-thumb {
2060
- -webkit-appearance: none;
2061
- appearance: none;
2062
- width: 16px;
2063
- height: 16px;
2064
- margin-top: -1px;
2065
- border-radius: 50%;
2066
- border: 2px solid #fff;
2067
- background: #fff;
2068
- box-shadow: 0 1px 4px rgba(0, 0, 0, 0.45);
2069
- cursor: grab;
2070
- position: relative;
2071
- z-index: 5;
2072
- }
2073
-
2074
- .trim-scrub-input:active::-webkit-slider-thumb {
2075
- cursor: grabbing;
2076
- }
2077
-
2078
- .trim-scrub-input::-moz-range-track {
2079
- height: 14px;
2080
- background: transparent;
2081
- border: none;
2082
- }
2083
-
2084
- .trim-scrub-input::-moz-range-thumb {
2085
- width: 14px;
2086
- height: 14px;
2087
- border-radius: 50%;
2088
- border: 2px solid #fff;
2089
- background: #fff;
2090
- box-shadow: 0 1px 4px rgba(0, 0, 0, 0.45);
2091
- cursor: grab;
2092
- }
2093
-
2094
- .trim-handle {
2095
- position: absolute;
2096
- top: 50%;
2097
- width: 12px;
2098
- height: 26px;
2099
- margin: 0;
2100
- padding: 0;
2101
- border: 2px solid rgba(61, 214, 198, 0.95);
2102
- border-radius: 4px;
2103
- background: rgba(18, 21, 26, 0.95);
2104
- transform: translate(-50%, -50%);
2105
- cursor: ew-resize;
2106
- z-index: 4;
2107
- touch-action: none;
2108
- user-select: none;
2109
- box-sizing: border-box;
2110
- }
2111
-
2112
- .trim-handle::after {
2113
- content: '';
2114
- position: absolute;
2115
- left: 50%;
2116
- top: 5px;
2117
- bottom: 5px;
2118
- width: 2px;
2119
- transform: translateX(-50%);
2120
- background: rgba(61, 214, 198, 0.75);
2121
- }
2122
-
2123
- .trim-handle:hover,
2124
- .trim-handle:focus-visible {
2125
- filter: brightness(1.1);
2126
- }
2127
-
2128
2155
  .modal-hint {
2129
2156
  margin: 0;
2130
2157
  font-size: 13px;
@@ -2209,62 +2236,6 @@ textarea {
2209
2236
  flex: 1;
2210
2237
  }
2211
2238
 
2212
- .seq-check {
2213
- color: var(--text);
2214
- }
2215
-
2216
- .seq-frames {
2217
- display: flex;
2218
- flex-direction: column;
2219
- gap: 6px;
2220
- }
2221
-
2222
- .seq-frame-row {
2223
- display: grid;
2224
- grid-template-columns: 44px 1fr auto;
2225
- gap: 8px;
2226
- align-items: center;
2227
- padding: 6px;
2228
- border-radius: 8px;
2229
- border: 1px solid var(--line);
2230
- background: var(--bg-1);
2231
- }
2232
-
2233
- .seq-frame-row img {
2234
- width: 44px;
2235
- height: 44px;
2236
- object-fit: cover;
2237
- border-radius: 6px;
2238
- }
2239
-
2240
- .seq-frame-row .seq-frame-name {
2241
- font-size: 11px;
2242
- color: var(--muted);
2243
- font-family: 'JetBrains Mono', monospace;
2244
- overflow: hidden;
2245
- text-overflow: ellipsis;
2246
- white-space: nowrap;
2247
- }
2248
-
2249
- .seq-frame-actions {
2250
- display: flex;
2251
- gap: 4px;
2252
- }
2253
-
2254
- .seq-frame-actions button {
2255
- border: 1px solid var(--line);
2256
- background: transparent;
2257
- color: var(--text);
2258
- border-radius: 6px;
2259
- width: 28px;
2260
- height: 28px;
2261
- cursor: pointer;
2262
- }
2263
-
2264
- .seq-frame-actions button:hover {
2265
- border-color: rgba(61, 214, 198, 0.45);
2266
- }
2267
-
2268
2239
  @media (max-width: 960px) {
2269
2240
  .app {
2270
2241
  display: block;