@tmagic/editor 1.5.2 → 1.5.4

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.
Files changed (89) hide show
  1. package/dist/style.css +366 -6
  2. package/dist/tmagic-editor.js +1749 -829
  3. package/dist/tmagic-editor.umd.cjs +1764 -843
  4. package/package.json +7 -7
  5. package/src/components/CodeBlockEditor.vue +3 -3
  6. package/src/components/CodeParams.vue +2 -2
  7. package/src/components/ContentMenu.vue +13 -13
  8. package/src/components/FloatingBox.vue +9 -9
  9. package/src/components/Resizer.vue +2 -2
  10. package/src/components/ScrollBar.vue +6 -7
  11. package/src/components/ScrollViewer.vue +6 -6
  12. package/src/components/SplitView.vue +3 -3
  13. package/src/fields/DataSourceInput.vue +3 -3
  14. package/src/fields/DataSourceMethods.vue +4 -4
  15. package/src/fields/DisplayConds.vue +2 -1
  16. package/src/fields/StyleSetter/Index.vue +69 -0
  17. package/src/fields/StyleSetter/components/BackgroundPosition.vue +71 -0
  18. package/src/fields/StyleSetter/components/Border.vue +104 -0
  19. package/src/fields/StyleSetter/components/Box.vue +73 -0
  20. package/src/fields/StyleSetter/components/Position.vue +54 -0
  21. package/src/fields/StyleSetter/icons/background-position/LeftBottom.vue +7 -0
  22. package/src/fields/StyleSetter/icons/background-position/LeftCenter.vue +7 -0
  23. package/src/fields/StyleSetter/icons/background-position/LeftTop.vue +12 -0
  24. package/src/fields/StyleSetter/icons/background-position/index.ts +3 -0
  25. package/src/fields/StyleSetter/icons/background-repeat/NoRepeat.vue +8 -0
  26. package/src/fields/StyleSetter/icons/background-repeat/Repeat.vue +31 -0
  27. package/src/fields/StyleSetter/icons/background-repeat/RepeatX.vue +8 -0
  28. package/src/fields/StyleSetter/icons/background-repeat/RepeatY.vue +8 -0
  29. package/src/fields/StyleSetter/icons/background-repeat/index.ts +4 -0
  30. package/src/fields/StyleSetter/icons/display/Block.vue +7 -0
  31. package/src/fields/StyleSetter/icons/display/Flex.vue +7 -0
  32. package/src/fields/StyleSetter/icons/display/Inline.vue +7 -0
  33. package/src/fields/StyleSetter/icons/display/InlineBlock.vue +7 -0
  34. package/src/fields/StyleSetter/icons/display/None.vue +7 -0
  35. package/src/fields/StyleSetter/icons/display/index.ts +5 -0
  36. package/src/fields/StyleSetter/icons/flex-direction/Column.vue +7 -0
  37. package/src/fields/StyleSetter/icons/flex-direction/ColumnReverse.vue +7 -0
  38. package/src/fields/StyleSetter/icons/flex-direction/Row.vue +7 -0
  39. package/src/fields/StyleSetter/icons/flex-direction/RowReverse.vue +7 -0
  40. package/src/fields/StyleSetter/icons/flex-direction/index.ts +4 -0
  41. package/src/fields/StyleSetter/icons/justify-content/Center.vue +5 -0
  42. package/src/fields/StyleSetter/icons/justify-content/FlexEnd.vue +5 -0
  43. package/src/fields/StyleSetter/icons/justify-content/FlexStart.vue +5 -0
  44. package/src/fields/StyleSetter/icons/justify-content/SpaceAround.vue +7 -0
  45. package/src/fields/StyleSetter/icons/justify-content/SpaceBetween.vue +5 -0
  46. package/src/fields/StyleSetter/icons/justify-content/index.ts +5 -0
  47. package/src/fields/StyleSetter/icons/text-align/Center.vue +7 -0
  48. package/src/fields/StyleSetter/icons/text-align/Left.vue +7 -0
  49. package/src/fields/StyleSetter/icons/text-align/Right.vue +7 -0
  50. package/src/fields/StyleSetter/icons/text-align/index.ts +3 -0
  51. package/src/fields/StyleSetter/pro/Background.vue +78 -0
  52. package/src/fields/StyleSetter/pro/Border.vue +35 -0
  53. package/src/fields/StyleSetter/pro/Font.vue +90 -0
  54. package/src/fields/StyleSetter/pro/Layout.vue +164 -0
  55. package/src/fields/StyleSetter/pro/Position.vue +48 -0
  56. package/src/fields/StyleSetter/pro/index.ts +5 -0
  57. package/src/hooks/use-code-block-edit.ts +5 -5
  58. package/src/index.ts +3 -0
  59. package/src/initService.ts +104 -66
  60. package/src/layouts/CodeEditor.vue +6 -6
  61. package/src/layouts/Framework.vue +5 -5
  62. package/src/layouts/NavMenu.vue +6 -3
  63. package/src/layouts/page-bar/PageBar.vue +13 -13
  64. package/src/layouts/page-bar/PageBarScrollContainer.vue +12 -11
  65. package/src/layouts/props-panel/FormPanel.vue +7 -7
  66. package/src/layouts/props-panel/PropsPanel.vue +36 -4
  67. package/src/layouts/sidebar/code-block/CodeBlockListPanel.vue +3 -3
  68. package/src/layouts/sidebar/layer/LayerMenu.vue +2 -2
  69. package/src/layouts/sidebar/layer/LayerPanel.vue +5 -4
  70. package/src/layouts/sidebar/layer/use-click.ts +4 -6
  71. package/src/layouts/workspace/viewer/NodeListMenu.vue +5 -5
  72. package/src/layouts/workspace/viewer/Stage.vue +13 -13
  73. package/src/layouts/workspace/viewer/StageOverlay.vue +2 -2
  74. package/src/layouts/workspace/viewer/ViewerMenu.vue +3 -3
  75. package/src/services/componentList.ts +2 -2
  76. package/src/services/dep.ts +8 -2
  77. package/src/services/editor.ts +2 -2
  78. package/src/services/stageOverlay.ts +2 -2
  79. package/src/services/ui.ts +2 -2
  80. package/src/theme/props-panel.scss +13 -0
  81. package/src/theme/resizer.scss +2 -2
  82. package/src/theme/style-setter/background.scss +113 -0
  83. package/src/theme/style-setter/border.scss +53 -0
  84. package/src/theme/style-setter/index.scss +28 -0
  85. package/src/theme/style-setter/layout.scss +199 -0
  86. package/src/theme/theme.scss +1 -0
  87. package/src/utils/idle-task.ts +26 -10
  88. package/src/utils/props.ts +52 -297
  89. package/types/index.d.ts +432 -170
package/dist/style.css CHANGED
@@ -346,10 +346,6 @@ fieldset.m-fieldset .m-form-tip {
346
346
  .m-fields-table .el-form-item {
347
347
  margin-bottom: 0;
348
348
  }
349
- .m-fields-table .m-table-delete-icon {
350
- color: #f56c6c;
351
- cursor: pointer;
352
- }
353
349
 
354
350
  .m-select {
355
351
  width: 100%;
@@ -720,8 +716,8 @@ fieldset.m-fieldset .m-form-tip {
720
716
  }
721
717
 
722
718
  .m-editor-resizer {
723
- border-left: 1px solid transparent;
724
- border-right: 1px solid transparent;
719
+ border-left: 2px solid transparent;
720
+ border-right: 2px solid transparent;
725
721
  width: 8px;
726
722
  margin: 0 -5px;
727
723
  height: 100%;
@@ -951,6 +947,10 @@ fieldset.m-fieldset .m-form-tip {
951
947
  align-items: center;
952
948
  border-bottom: 2px solid #d9dbdd;
953
949
  }
950
+ .m-editor-props-panel .m-editor-props-style-panel .tmagic-design-form {
951
+ padding-right: 10px;
952
+ padding-left: 10px;
953
+ }
954
954
  .m-editor-props-panel .m-editor-props-panel-src-icon {
955
955
  position: absolute;
956
956
  right: 15px;
@@ -969,6 +969,13 @@ fieldset.m-fieldset .m-form-tip {
969
969
  top: 0;
970
970
  z-index: 10;
971
971
  }
972
+ .m-editor-props-panel .m-editor-resizer {
973
+ position: absolute;
974
+ display: block;
975
+ top: 0;
976
+ right: var(--props-style-panel-width);
977
+ z-index: 13;
978
+ }
972
979
  .m-editor-props-panel.small .el-form-item__label {
973
980
  font-size: 12px;
974
981
  }
@@ -1464,6 +1471,359 @@ fieldset.m-fieldset .m-form-tip {
1464
1471
  flex: 2;
1465
1472
  }
1466
1473
 
1474
+ .border-box-container {
1475
+ display: flex;
1476
+ }
1477
+ .border-box-container .border-icon-container {
1478
+ display: flex;
1479
+ flex-direction: column;
1480
+ justify-content: center;
1481
+ width: 88px;
1482
+ }
1483
+ .border-box-container .border-icon-container-row {
1484
+ display: flex;
1485
+ justify-content: center;
1486
+ align-items: center;
1487
+ }
1488
+ .border-box-container .border-icon-container-row + .border-icon-container-row {
1489
+ margin-top: 8px;
1490
+ }
1491
+ .border-box-container .border-icon-container .border-icon {
1492
+ box-sizing: border-box;
1493
+ width: 16px;
1494
+ height: 16px;
1495
+ border-width: 1px;
1496
+ border-color: #111;
1497
+ border-style: solid;
1498
+ cursor: pointer;
1499
+ }
1500
+ .border-box-container .border-icon-container .border-icon + .border-icon {
1501
+ margin-left: 8px;
1502
+ }
1503
+ .border-box-container .border-icon-container .border-icon.active {
1504
+ border-width: 1px;
1505
+ border-color: var(--el-color-primary);
1506
+ }
1507
+ .border-box-container .border-icon-container .border-icon.border-icon-top {
1508
+ border-top-width: 2px;
1509
+ border-style: solid dashed dashed dashed;
1510
+ }
1511
+ .border-box-container .border-icon-container .border-icon.border-icon-right {
1512
+ border-right-width: 2px;
1513
+ border-style: dashed solid dashed dashed;
1514
+ }
1515
+ .border-box-container .border-icon-container .border-icon.border-icon-bottom {
1516
+ border-bottom-width: 2px;
1517
+ border-style: dashed dashed solid dashed;
1518
+ }
1519
+ .border-box-container .border-icon-container .border-icon.border-icon-left {
1520
+ border-left-width: 2px;
1521
+ border-style: dashed dashed dashed solid;
1522
+ }
1523
+ .border-box-container .border-value-container {
1524
+ margin-left: 16px;
1525
+ flex: 1;
1526
+ }
1527
+
1528
+ .layout-box-container {
1529
+ position: relative;
1530
+ width: 100%;
1531
+ height: 150px;
1532
+ }
1533
+ .layout-box-container .help-txt {
1534
+ float: left;
1535
+ margin-left: -10px;
1536
+ transform: scale(0.75);
1537
+ }
1538
+ .layout-box-container .outer-top-border,
1539
+ .layout-box-container .inner-top-border,
1540
+ .layout-box-container .outer-right-border,
1541
+ .layout-box-container .inner-right-border,
1542
+ .layout-box-container .outer-bottom-border,
1543
+ .layout-box-container .inner-bottom-border,
1544
+ .layout-box-container .outer-left-border,
1545
+ .layout-box-container .inner-left-border {
1546
+ position: absolute;
1547
+ transition: all 0.3s ease;
1548
+ }
1549
+ .layout-box-container .outer-top-border .next-input,
1550
+ .layout-box-container .inner-top-border .next-input,
1551
+ .layout-box-container .outer-right-border .next-input,
1552
+ .layout-box-container .inner-right-border .next-input,
1553
+ .layout-box-container .outer-bottom-border .next-input,
1554
+ .layout-box-container .inner-bottom-border .next-input,
1555
+ .layout-box-container .outer-left-border .next-input,
1556
+ .layout-box-container .inner-left-border .next-input {
1557
+ position: absolute;
1558
+ height: 20px;
1559
+ }
1560
+ .layout-box-container .outer-top-border .next-input input,
1561
+ .layout-box-container .inner-top-border .next-input input,
1562
+ .layout-box-container .outer-right-border .next-input input,
1563
+ .layout-box-container .inner-right-border .next-input input,
1564
+ .layout-box-container .outer-bottom-border .next-input input,
1565
+ .layout-box-container .inner-bottom-border .next-input input,
1566
+ .layout-box-container .outer-left-border .next-input input,
1567
+ .layout-box-container .inner-left-border .next-input input {
1568
+ padding: 0;
1569
+ width: 100%;
1570
+ border: none;
1571
+ outline: none;
1572
+ margin: 0;
1573
+ font-weight: 400;
1574
+ vertical-align: top;
1575
+ background-color: transparent;
1576
+ color: #333;
1577
+ text-align: center;
1578
+ line-height: 20px;
1579
+ height: 20px;
1580
+ }
1581
+ .layout-box-container .outer-top-border,
1582
+ .layout-box-container .inner-top-border {
1583
+ height: 0;
1584
+ border-left: 20px solid transparent;
1585
+ border-right: 20px solid transparent;
1586
+ border-top: 20px solid #d6e4ff;
1587
+ }
1588
+ .layout-box-container .outer-top-border .next-input,
1589
+ .layout-box-container .inner-top-border .next-input {
1590
+ left: 0;
1591
+ right: 0;
1592
+ top: -20px;
1593
+ }
1594
+ .layout-box-container .outer-top-border {
1595
+ top: 0;
1596
+ left: 0;
1597
+ right: 0;
1598
+ }
1599
+ .layout-box-container .inner-top-border {
1600
+ top: 25px;
1601
+ left: 25px;
1602
+ right: 25px;
1603
+ }
1604
+ .layout-box-container .outer-top-border:hover,
1605
+ .layout-box-container .inner-top-border:hover {
1606
+ border-top: 20px solid #bfd4fb;
1607
+ }
1608
+ .layout-box-container .outer-right-border,
1609
+ .layout-box-container .inner-right-border {
1610
+ width: 0;
1611
+ border-top: 20px solid transparent;
1612
+ border-bottom: 20px solid transparent;
1613
+ border-right: 20px solid #d6e4ff;
1614
+ }
1615
+ .layout-box-container .outer-right-border .next-input,
1616
+ .layout-box-container .inner-right-border .next-input {
1617
+ top: 0;
1618
+ bottom: 0;
1619
+ right: -20px;
1620
+ width: 20px;
1621
+ margin: auto;
1622
+ }
1623
+ .layout-box-container .outer-right-border .next-input input,
1624
+ .layout-box-container .inner-right-border .next-input input {
1625
+ position: absolute;
1626
+ top: 0;
1627
+ bottom: 0;
1628
+ left: 0;
1629
+ margin: auto;
1630
+ width: 20px;
1631
+ }
1632
+ .layout-box-container .outer-right-border {
1633
+ top: 5px;
1634
+ bottom: 5px;
1635
+ right: 0;
1636
+ }
1637
+ .layout-box-container .inner-right-border {
1638
+ top: 30px;
1639
+ bottom: 30px;
1640
+ right: 25px;
1641
+ }
1642
+ .layout-box-container .outer-right-border:hover,
1643
+ .layout-box-container .inner-right-border:hover {
1644
+ border-right: 20px solid #bfd4fb;
1645
+ }
1646
+ .layout-box-container .outer-bottom-border,
1647
+ .layout-box-container .inner-bottom-border {
1648
+ height: 0;
1649
+ border-left: 20px solid transparent;
1650
+ border-right: 20px solid transparent;
1651
+ border-bottom: 20px solid #d6e4ff;
1652
+ }
1653
+ .layout-box-container .outer-bottom-border .next-input,
1654
+ .layout-box-container .inner-bottom-border .next-input {
1655
+ position: absolute;
1656
+ left: 0;
1657
+ right: 0;
1658
+ bottom: -20px;
1659
+ }
1660
+ .layout-box-container .outer-bottom-border {
1661
+ bottom: 0;
1662
+ left: 0;
1663
+ right: 0;
1664
+ }
1665
+ .layout-box-container .inner-bottom-border {
1666
+ bottom: 25px;
1667
+ left: 25px;
1668
+ right: 25px;
1669
+ }
1670
+ .layout-box-container .outer-bottom-border:hover,
1671
+ .layout-box-container .inner-bottom-border:hover {
1672
+ border-bottom: 20px solid #bfd4fb;
1673
+ }
1674
+ .layout-box-container .outer-left-border,
1675
+ .layout-box-container .inner-left-border {
1676
+ width: 0;
1677
+ border-top: 20px solid transparent;
1678
+ border-bottom: 20px solid transparent;
1679
+ border-left: 20px solid #d6e4ff;
1680
+ }
1681
+ .layout-box-container .outer-left-border .next-input,
1682
+ .layout-box-container .inner-left-border .next-input {
1683
+ position: absolute;
1684
+ top: 0;
1685
+ bottom: 0;
1686
+ left: -20px;
1687
+ width: 20px;
1688
+ margin: auto;
1689
+ }
1690
+ .layout-box-container .outer-left-border .next-input input,
1691
+ .layout-box-container .inner-left-border .next-input input {
1692
+ position: absolute;
1693
+ top: 0;
1694
+ bottom: 0;
1695
+ right: 0;
1696
+ margin: auto;
1697
+ width: 20px;
1698
+ }
1699
+ .layout-box-container .outer-left-border {
1700
+ top: 5px;
1701
+ bottom: 5px;
1702
+ left: 0;
1703
+ }
1704
+ .layout-box-container .inner-left-border {
1705
+ top: 30px;
1706
+ bottom: 30px;
1707
+ left: 25px;
1708
+ }
1709
+ .layout-box-container .outer-left-border:hover,
1710
+ .layout-box-container .inner-left-border:hover {
1711
+ border-left: 20px solid #bfd4fb;
1712
+ }
1713
+
1714
+ .background-position-container {
1715
+ display: flex;
1716
+ width: 100%;
1717
+ }
1718
+ .background-position-container .presets-value-list {
1719
+ display: flex;
1720
+ flex-wrap: wrap;
1721
+ width: 80px;
1722
+ height: auto;
1723
+ }
1724
+ .background-position-container .presets-value-list .el-button + .el-button {
1725
+ margin-left: 2px;
1726
+ }
1727
+ .background-position-container .presets-value-list .el-button:nth-child(3n+1) {
1728
+ margin-left: 0 !important;
1729
+ }
1730
+ .background-position-container .presets-value-list .position-icon {
1731
+ position: relative;
1732
+ width: 14px;
1733
+ height: 14px;
1734
+ border: 1px solid #1d1f24;
1735
+ }
1736
+ .background-position-container .presets-value-list .position-icon.active {
1737
+ background-color: var(--el-color-primary);
1738
+ }
1739
+ .background-position-container .presets-value-list .position-icon.active::after {
1740
+ border: 1px solid #fff;
1741
+ }
1742
+ .background-position-container .presets-value-list .position-icon::after {
1743
+ position: absolute;
1744
+ content: "";
1745
+ border: 1px solid #1d1f24;
1746
+ box-sizing: border-box;
1747
+ }
1748
+ .background-position-container .presets-value-list .position-icon.left-top::after {
1749
+ top: 1px;
1750
+ left: 1px;
1751
+ width: 6px;
1752
+ height: 6px;
1753
+ }
1754
+ .background-position-container .presets-value-list .position-icon.center-top::after {
1755
+ top: 1px;
1756
+ left: 1px;
1757
+ width: 12px;
1758
+ height: 6px;
1759
+ }
1760
+ .background-position-container .presets-value-list .position-icon.right-top::after {
1761
+ top: 1px;
1762
+ right: 1px;
1763
+ width: 6px;
1764
+ height: 6px;
1765
+ }
1766
+ .background-position-container .presets-value-list .position-icon.left-center::after {
1767
+ top: 1px;
1768
+ left: 1px;
1769
+ width: 6px;
1770
+ height: 12px;
1771
+ }
1772
+ .background-position-container .presets-value-list .position-icon.center-center::after {
1773
+ top: 1px;
1774
+ left: 1px;
1775
+ width: 12px;
1776
+ height: 12px;
1777
+ }
1778
+ .background-position-container .presets-value-list .position-icon.right-center::after {
1779
+ top: 1px;
1780
+ right: 1px;
1781
+ width: 6px;
1782
+ height: 12px;
1783
+ }
1784
+ .background-position-container .presets-value-list .position-icon.left-bottom::after {
1785
+ bottom: 1px;
1786
+ left: 1px;
1787
+ width: 6px;
1788
+ height: 6px;
1789
+ }
1790
+ .background-position-container .presets-value-list .position-icon.center-bottom::after {
1791
+ bottom: 1px;
1792
+ left: 1px;
1793
+ width: 12px;
1794
+ height: 6px;
1795
+ }
1796
+ .background-position-container .presets-value-list .position-icon.right-bottom::after {
1797
+ bottom: 1px;
1798
+ right: 1px;
1799
+ width: 6px;
1800
+ height: 6px;
1801
+ }
1802
+ .background-position-container .custom-value {
1803
+ position: relative;
1804
+ flex: 1;
1805
+ }
1806
+
1807
+ .m-fields-style-setter {
1808
+ width: 100%;
1809
+ }
1810
+ .m-fields-style-setter .tmagic-design-collapse-item > .el-collapse-item__header {
1811
+ background-color: #f2f3f7;
1812
+ height: 36px;
1813
+ padding: 10px;
1814
+ }
1815
+ .m-fields-style-setter .tmagic-design-collapse-item .el-collapse-item__wrap {
1816
+ padding: 0 10px;
1817
+ }
1818
+
1819
+ .text-align-list {
1820
+ display: flex;
1821
+ height: 100%;
1822
+ }
1823
+ .text-align-list .btn-active {
1824
+ color: var(--el-color-primary) !important;
1825
+ }
1826
+
1467
1827
  .fade-enter-active,
1468
1828
  .fade-leave-active {
1469
1829
  transition: opacity 0.5s;