Files
uai-editor/src/styles/uaieditor.less
T
2025-03-11 21:16:38 +08:00

2553 lines
54 KiB
Plaintext

@import './mixins.less';
@import './variables.less';
@import (less) 'github-markdown-css/github-markdown.css';
.uai-editor-container {
--td-brand-color: var(--uai-primary-color);
--td-warning-color: var(--uai-warning-color);
--td-error-color: var(--uai-error-color);
--td-text-color-primary: var(--uai-text-color);
--td-text-color-disabled: var(--uai-text-color-disabled);
width: 100%;
height: 100%;
display: flex;
flex-direction: column;
color: var(--uai-text-color);
font-family: var(--uai-font-family);
position: relative !important;
.uai-toolbar,
.uai-footer {
background-color: var(--uai-color-white);
}
.katex .katex-html {
display: none;
}
.uai-icon {
display: flex;
}
.uai-menu-disabled {
cursor: not-allowed !important;
}
.uai-menu-enabled {
cursor: pointer !important;
}
.uai-toolbar {
.uai-input.uai-size-s {
--td-comp-paddingLR-s: 5px;
&.uai-input--suffix {
padding-right: 2px !important;
}
&__suffix {
&:not(:empty) {
margin-left: 0 !important;
}
}
}
.uai-toolbar-container {
display: flex;
justify-content: space-between;
user-select: none;
border-bottom: solid 1px var(--uai-border-color);
position: relative;
z-index: 200;
.uai-toolbar-menus {
width: calc(100% - 120px);
position: relative;
z-index: 2;
.uai-ribbon-menu {
.uai-ribbon-tabs {
padding: 10px 10px 0;
display: flex;
&-item {
font-size: var(--uai-font-size-small);
margin-right: 25px;
cursor: pointer;
display: flex;
align-items: center;
flex-direction: column;
&:hover {
font-weight: 600;
&::after {
display: block;
content: '';
height: 3px;
width: 100%;
margin-top: 5px;
background-color: var(--uai-border-color);
}
}
&.active {
color: var(--uai-primary-color);
font-weight: 600;
&::after {
display: block;
content: '';
height: 3px;
width: 100%;
margin-top: 5px;
background-color: var(--uai-primary-color);
transition: width 0.3s;
}
&:hover::after {
width: 120%;
}
}
@media screen and (max-width: 640px) {
margin-right: 10px;
}
}
}
.uai-ribbon-scrollable-container {
padding: 10px 0;
box-sizing: border-box;
align-items: center;
/* 垂直居中子元素 */
justify-content: center;
/* 如果你也想要水平居中 */
vertical-align: middle;
.uai-ribbon-container {
height: 57px;
flex-shrink: 0;
width: 100%;
select {
border: solid 1px var(--uai-border-color-light);
background-color: var(--uai-toolbar-background);
border-radius: var(--uai-radius);
padding: 6px;
outline: none;
}
.uai-ribbon-virtual-group {
padding: 0 20px;
border-left: solid 1px var(--uai-border-color-light);
flex-shrink: 0;
.uai-ribbon-heading-container {
width: 321px;
height: 56px;
display: flex;
position: relative;
z-index: 2;
background-color: var(--uai-container-background);
border: solid 1px var(--uai-border-color);
border-radius: var(--uai-radius);
.uai-ribbon-heading-list {
margin: 5px;
display: flex;
flex-wrap: wrap;
max-width: 300px;
overflow: hidden;
}
.uai-ribbon-heading-arrow {
margin-top: 8px;
margin-right: 5px;
padding-top: 15px;
height: 25px;
width: 16px;
border-radius: var(--uai-radius);
&:hover {
cursor: pointer;
background: #ddd; // var(--uai-content-node-selected-background);
border-radius: var(--uai-radius);
}
}
.uai-ribbon-heading-item {
width: 140px;
height: 42px;
margin: 2px;
padding: 0;
text-align: center;
background-color: #fff;
border: solid 1px var(--uai-border-color);
border-radius: var(--uai-radius);
padding: 5px 10px;
box-sizing: border-box;
cursor: pointer;
flex: 0 0 68px;
&:hover,
&.active {
border-color: var(--uai-primary-color);
}
&-title {
line-height: 18px;
font-weight: 600;
&.text {
font-size: 12px;
font-weight: 400;
}
&.h1 {
font-size: 15px;
}
&.h2 {
font-size: 14px;
}
&.h3 {
font-size: 13px;
}
&.h4 {
font-size: 12px;
}
&.h5 {
font-size: 11px;
}
&.h6 {
font-size: 10px;
}
}
&-subtitle {
font-size: 8px;
color: var(--uai-text-color-light);
text-transform: capitalize;
margin-top: 3px;
line-height: 1;
}
}
}
&:empty {
display: none;
}
&:first-child {
padding-left: 0;
}
&:first-child {
border-left: none;
}
&-row {
display: flex;
align-items: center;
:deep(> *:not(:last-child)) {
margin-right: 5px;
}
&:not(:last-child) {
margin-bottom: 5px;
}
}
}
}
.uai-scrollable-control {
.uai-scrollable-control-button {
padding: 0 10px;
border: 1px solid var(--uai-border-color);
background-color: var(--uai-container-background);
border-radius: var(--uai-radius);
display: flex;
align-items: center;
/* 垂直居中子元素 */
justify-content: center;
/* 如果你也想要水平居中 */
vertical-align: middle;
position: absolute;
height: 56px;
z-index: 2;
&-left {
left: 0;
}
&-right {
right: 0;
}
&:hover {
cursor: pointer;
background-color: var(--uai-primary-color);
}
}
.uai-scrollable-control-content {
flex: 1;
width: calc(100% - 120px);
}
}
}
}
.uai-classic-menu {
display: flex;
align-items: center;
flex: 1;
width: 100%;
select {
border: none;
outline: none;
}
.uai-classic-menu-switch {
border: solid 1px var(--uai-border-color-light);
background-color: var(--uai-toolbar-background);
border-radius: var(--uai-radius);
padding: 6px;
display: flex;
align-items: center;
/* 垂直居中子元素 */
justify-content: center;
/* 如果你也想要水平居中 */
vertical-align: middle;
z-index: 500;
}
.uai-classic-scrollable-container {
height: 30px;
padding: 10px 0;
width: calc(100% - 104px);
.uai-editor-menu-select {
border: solid 1px var(--uai-border-color-light);
background-color: var(--uai-toolbar-background);
border-radius: var(--uai-radius);
margin-left: 3px;
padding: 2px;
}
.uai-classic-virtual-group {
display: flex;
align-items: center;
// border-left: solid 1px #db2323;// var(--uai-border-color-light);
flex-shrink: 0;
&:empty {
display: none;
}
// &:not(:last-child) {
&::before {
content: '';
display: block;
height: 18px;
width: 1px;
background-color: var(--uai-border-color-light);
margin: 0 10px;
}
// }
&:first-child::before {
display: none;
}
:deep(.uai-menu-button .uai-button--shape-square) {
.uai-icon {
font-size: 14px;
}
}
&-row {
display: flex;
}
}
.uai-scrollable-control {
.uai-scrollable-control-button {
padding: 0 10px;
border: 1px solid var(--uai-border-color);
background-color: var(--uai-container-background);
border-radius: var(--uai-radius);
display: flex;
align-items: center;
/* 垂直居中子元素 */
justify-content: center;
/* 如果你也想要水平居中 */
vertical-align: middle;
position: absolute;
height: 28px;
z-index: 2;
&-left {
left: 1;
}
&-right {
right: 0;
}
&:hover {
cursor: pointer;
background-color: var(--uai-primary-color);
}
}
.uai-scrollable-control-content {
width: calc(100%);
}
}
}
}
.uai-source-menu {
height: 30px;
padding: 10px;
display: flex;
align-items: center;
}
}
.uai-toolbar-actions {
padding: 6px 10px;
font-size: small;
width: 100px;
z-index: 500;
background-color: var(--uai-toolbar-background);
&.ribbon {
position: absolute;
right: 0;
top: 1px;
}
&-button {
cursor: pointer;
&.active {
background-color: var(--uai-button-hover-background);
}
&:not(:last-child) {
margin-right: 3px;
}
:deep(.uai-button__text) {
display: flex;
align-items: center;
.uai-icon {
margin-right: 3px;
}
}
}
@media screen and (max-width: 640px) {
padding-left: 0;
.uai-status-online {
margin-right: 0;
}
.uai-button-text {
display: none;
}
}
}
}
}
.uai-menu-button {
--td-comp-paddingLR-s: 5px;
--td-radius-default: var(--uai-radius);
border: none;
margin: 0 3px;
display: flex;
flex-direction: row;
&.show-text {
width: auto;
padding-left: var(--td-comp-paddingLR-s);
padding-right: var(--td-comp-paddingLR-s);
.uai-button-content .uai-button-text {
display: block !important;
margin-left: 3px;
}
}
&[disabled] {
.uai-button-icon {
--uai-primary-color: var(--uai-text-color-disabled);
color: var(--uai-text-color-disabled) !important;
}
.uai-button-text {
color: var(--uai-text-color-disabled) !important;
}
}
&-wrap {
display: inline-flex;
&:not(:last-child) {
margin-right: 5px;
}
}
&:hover,
&.active {
background-color: var(--uai-button-hover-background);
border-radius: var(--uai-radius);
.uai-button-icon-arrow.uai-button-handle {
background-color: rgba(0, 0, 0, 0.05);
}
}
.uai-button-content {
display: flex;
padding: 5px;
align-items: center;
justify-content: center;
.uai-button-icon,
:deep(.uai-icon) {
font-size: 16px;
}
.uai-button-icon-svg {
display: flex;
:deep(svg) {
width: 16px;
height: 16px;
}
}
.uai-button-text {
display: none;
}
}
.uai-button-icon-arrow {
width: 14px;
margin-left: -4px;
padding-top: 4px;
border-top-right-radius: var(--uai-radius);
border-bottom-right-radius: var(--uai-radius);
&:hover {
background-color: #ddd; // var(--td-bg-color-container-active);
}
}
&.huge {
width: auto;
height: 56px;
margin-bottom: 0;
flex-direction: row;
.uai-button-content {
display: flex;
padding: 10px;
align-items: center;
justify-content: center;
flex-direction: column;
min-width: 32px;
.uai-button-icon {
display: block;
font-size: 24px;
margin-top: 3px;
}
.uai-button-icon-svg {
display: flex;
margin-top: 3px;
:deep(svg) {
width: 24px;
height: 24px;
}
}
.uai-button-text {
display: block;
font-size: 12px;
color: var(--uai-text-color);
}
}
.uai-button-icon-arrow {
width: 14px;
margin-left: -10px;
padding-top: 20px;
border-top-right-radius: var(--uai-radius);
border-bottom-right-radius: var(--uai-radius);
&:hover {
background-color: #ddd; // var(--td-bg-color-container-active);
}
}
&.has-arrow {
.uai-button-content {
min-width: 40px;
}
}
}
&.classic-text {
width: auto;
.uai-button-content .uai-button-text {
display: block !important;
font-size: 12px;
color: var(--uai-text-color);
margin-left: 3px;
}
}
}
.uai-emojis-container {
width: 404px;
max-height: var(--uai-popup-max-height);
min-height: 320px;
overflow: auto;
margin: calc(var(--uai-popup-content-padding) * -1);
}
.uai-emojis-group {
position: relative;
&-title {
color: var(--uai-text-color-light);
font-size: 12px;
position: sticky;
line-height: 2.4;
top: 0;
background-color: var(--uai-button-hover-background);
padding-left: calc(var(--uai-popup-content-padding) + 5px);
&:first-child {
margin-top: 0;
}
}
&-container {
display: flex;
flex-wrap: wrap;
background-color: #fff;
padding: 10px var(--uai-popup-content-padding);
overflow: auto;
gap: 2px;
}
&-item {
flex-basis: 32px;
display: flex;
align-items: center;
justify-content: center;
width: 32px;
height: 32px;
line-height: 1em;
border-radius: var(--uai-radius);
cursor: pointer;
font-size: 20px;
margin-bottom: 2px;
color: var(--uai-text-color);
transition: font-size 0.2s;
&:hover {
background-color: var(--uai-button-hover-background);
font-size: 24px;
}
}
}
.tippy-box {
max-width: 1000px !important;
}
.tippy-box[data-animation="fade"][data-state="hidden"] {
opacity: 0;
}
[data-tippy-root] {
max-width: calc(100% - 10px);
}
.tippy-box {
position: relative;
//background-color: #333;
//color: #fff;
border-radius: var(--uai-radius);
font-size: 14px;
line-height: 1.4;
white-space: normal;
outline: 0;
transition-property: transform, visibility, opacity;
}
.tippy-box[data-placement^="top"]>.tippy-arrow {
bottom: 0;
}
.tippy-box[data-placement^="top"]>.tippy-arrow:before {
bottom: -7px;
left: 0;
border-width: 8px 8px 0;
border-top-color: initial;
transform-origin: center top;
}
.tippy-box[data-placement^="bottom"]>.tippy-arrow {
top: 0;
}
.tippy-box[data-placement^="bottom"]>.tippy-arrow:before {
top: -7px;
left: 0;
border-width: 0 8px 8px;
border-bottom-color: initial;
transform-origin: center bottom;
}
.tippy-box[data-placement^="left"]>.tippy-arrow {
right: 0;
}
.tippy-box[data-placement^="left"]>.tippy-arrow:before {
border-width: 8px 0 8px 8px;
border-left-color: initial;
right: -7px;
transform-origin: center left;
}
.tippy-box[data-placement^="right"]>.tippy-arrow {
left: 0;
}
.tippy-box[data-placement^="right"]>.tippy-arrow:before {
left: -7px;
border-width: 8px 8px 8px 0;
border-right-color: initial;
transform-origin: center right;
}
.tippy-box[data-inertia][data-state="visible"] {
transition-timing-function: cubic-bezier(0.54, 1.5, 0.38, 1.11);
}
.tippy-arrow {
width: 16px;
height: 16px;
}
.tippy-arrow:before {
content: "";
position: absolute;
border-color: transparent;
border-style: solid;
}
.tippy-content {
position: relative;
padding: 5px 9px;
z-index: 1;
}
.tippy-box[data-theme~='uai-tips'] {
background-color: var(--uai-menu-tips-bg-color);
color: var(--uai-menu-tips-text-color);
border: solid 1px var(--uai-border-color);
box-shadow: 2px 2px 2px 2px rgba(150, 150, 150, 0.1);
}
.tippy-box[data-theme~='uai-tips'][data-placement^='top']>.tippy-arrow::before {
border-top-color: var(--uai-menu-tips-bg-color);
border: solid 1px var(--uai-border-color);
}
.tippy-box[data-theme~='uai-tips'][data-placement^='bottom']>.tippy-arrow::before {
border-bottom-color: var(--uai-menu-tips-bg-color);
border: solid 1px var(--uai-border-color);
}
.tippy-box[data-theme~='uai-tips'][data-placement^='left']>.tippy-arrow::before {
border-left-color: var(--uai-menu-tips-bg-color);
}
.tippy-box[data-theme~='uai-tips'][data-placement^='right']>.tippy-arrow::before {
border-right-color: var(--uai-menu-tips-bg-color);
}
.uai-color-picker {
width: 260px;
background-color: #fff;
border: solid 1px var(--uai-border-color);
box-shadow: 4px 4px rgba(236, 236, 236, 0.5);
&-container {
width: 236px;
margin: 0 auto;
}
&-default-button {
.uai-button {
height: 30px;
border: solid 1px var(--uai-border-color);
border-radius: var(--uai-radius);
text-align: center;
align-items: center;
vertical-align: middle;
margin-top: 10px;
padding-top: 5px;
&:hover {
color: var(--uai-primary-color);
border: solid 1px var(--uai-primary-color);
cursor: pointer;
}
}
}
&-group {
display: flex;
flex-wrap: wrap;
margin: 8px 0;
gap: 4px;
&-title {
color: var(--uai-text-color-light);
font-size: 12px;
margin: 5px 0 2px;
}
}
&-item {
width: 20px;
height: 20px;
border: solid 1px rgba(0, 0, 0, 0.1);
margin-bottom: 2px;
flex-basis: 20px;
box-sizing: border-box;
transition: all 0.2s;
cursor: pointer;
border-radius: 3px;
&:hover {
transform: scale(1.1);
border-color: rgba(0, 0, 0, 0.3);
}
}
&-divider {
height: 1px;
background-color: var(--uai-border-color-light);
margin: 10px 0;
}
&-more {
display: flex;
justify-content: space-between;
align-items: center;
padding: 5px;
cursor: pointer;
&:hover,
&.active {
background-color: var(--td-bg-color-container-hover);
border-radius: var(--uai-radius);
}
&-menu {
display: flex;
align-items: center;
font-size: 12px;
color: var(--uai-text-color-light);
cursor: pointer;
.uai-icon {
margin-right: 5px;
font-size: 18px;
}
}
&-arrow {
.uai-icon {
transform: rotate(-90deg);
}
}
}
}
.uai-ordered-list {
background-color: #fff;
padding: 10px;
border: solid 1px var(--uai-border-color);
box-shadow: 4px 4px rgba(236, 236, 236, 0.5);
.uai-ordered-list-group {
display: flex;
align-items: center;
justify-content: flex-start;
flex-wrap: wrap;
gap: 8px;
max-width: 248px;
margin-bottom: 10px;
.uai-ordered-list-item {
cursor: pointer;
padding: 5px;
border: solid 1px var(--uai-border-color);
box-sizing: border-box;
&:nth-child(4n) {
margin-right: 0;
}
&:hover {
background-color: var(--uai-button-hover-background);
}
&.active {
border-color: var(--uai-primary-color);
}
}
.uai-icon-ordered-list {
font-size: 44px;
}
}
}
.uai-ordered-list-title {
color: var(--uai-text-color-light);
font-size: 12px;
margin: 7px 0 4px;
}
.uai-ordered-list-divider {
height: 1px;
background-color: var(--uai-border-color-light);
margin: 5px 0 0;
}
.uai-ordered-list-properties {
display: flex;
flex-direction: column;
:deep(.uai-input-number) {
width: 248px;
}
}
.uai-popup-action-list {
background-color: #fff;
padding: 8px;
border: solid 1px var(--uai-border-color);
box-shadow: 4px 4px rgba(236, 236, 236, 0.5);
.uai-popup-action-item {
padding: 5px;
margin: 2px;
display: flex;
align-items: center;
&:hover {
cursor: pointer;
background: var(--uai-button-hover-background);
border-radius: var(--uai-radius);
}
}
hr {
margin: 5px;
color: var(--uai-border-color);
height: 2px;
}
}
.uai-modal {
display: none;
/* 默认隐藏 */
position: relative;
/* 固定位置 */
z-index: 9999;
/* 放在顶部 */
left: 100px;
top: 0px;
width: 500px;
/* 全宽 */
height: 500px;
/* 全高 */
overflow: auto;
/* 如果内容溢出,则可以滚动 */
background-color: rgba(0, 0, 0, 0.4);
/* 半透明 */
}
.uai-pannel-container {
background-color: var(--uai-color-white);
border-right: solid 1px var(--uai-border-color);
width: 500px;
height: 100%;
box-sizing: border-box;
display: flex;
flex-direction: column;
.uai-pannel-title {
border-bottom: solid 1px var(--uai-border-color-light);
display: flex;
align-items: center;
position: relative;
padding: 10px 15px;
.uai-pannel-icon {
margin-right: 5px;
font-size: 20px;
svg {
margin: auto;
width: 8px;
fill: #ccc;
animation: rotate 2s linear infinite;
}
}
.uai-pannel-close {
position: absolute;
right: 15px;
display: flex;
align-items: center;
justify-content: center;
}
}
.uai-container-app-models {
display: flex;
align-items: center;
font-size: 16px;
padding: 10px;
color: var(--uai-text-color);
border-bottom: solid 1px var(--uai-border-color);
.uai-model-select {
height: 32px;
font-size: large;
}
select {
border: solid 1px var(--uai-border-color);
}
}
.uai-toc-content {
list-style: none;
flex: 1;
display: flex;
padding: 10px;
flex-direction: column;
overflow: auto;
.uai-scrollbar();
.uai-toc-item {
border-radius: 3px;
padding: 5px;
box-sizing: border-box;
align-items: center;
position: relative;
margin: 2px 0;
&:hover {
cursor: pointer;
background: var(--uai-content-node-selected-background);
color: var(--uai-primary-color);
&::before {
color: var(--uai-primary-color);
border-color: var(--uai-primary-color);
}
}
&.active {
background: var(--uai-button-hover-background);
color: var(--uai-primary-color);
&::before {
color: var(--uai-primary-color);
border-color: var(--uai-primary-color);
}
}
&.level-1 {
margin-left: 0;
width: 100%;
}
&.level-2 {
margin-left: 15px;
width: calc(100% - 15px);
}
&.level-3 {
margin-left: 30px;
width: calc(100% - 30px);
}
&.level-4 {
margin-left: 45px;
width: calc(100% - 45px);
}
&.level-5 {
margin-left: 60px;
width: calc(100% - 60px);
}
&.level-6 {
padding-left: 75px;
width: calc(100% - 75px);
}
.uai-toc-text {
text-overflow: ellipsis;
word-break: break-all;
white-space: nowrap;
overflow: hidden;
}
}
}
.uai-ai-content {
flex: 1;
display: flex;
flex-direction: column;
overflow: auto;
.uai-scrollbar();
word-break: break-all;
.uai-directory {
margin: 30px 10px;
width: calc(100% - 20px);
overflow: hidden;
z-index: 0;
color: var(--uai-text-color);
h5 {
margin: 15px auto;
text-align: center;
font-size: 16px;
text-indent: 4px;
line-height: 10px;
}
a {
color: var(--uai-text-color);
height: 30px;
font-size: 14px;
line-height: 30px;
text-decoration: none;
width: 100%;
display: inline-block;
margin: 0;
padding: 0;
white-space: nowrap;
overflow: hidden;
-o-text-overflow: ellipsis;
text-overflow: ellipsis;
}
a:hover {
cursor: pointer;
background-color: #334d660f;
border-radius: 4px;
}
}
.user-avatar {
margin-left: 5px;
}
.bot-avatar {
margin-right: 5px;
}
.message {
margin: 10px;
display: flex;
vertical-align: middle;
}
.hidden-content {
cursor: pointer;
display: none;
height: 100%;
width: 40px;
margin: 3px;
border: none;
font-size: large;
}
.message:hover .hidden-content {
display: flex;
}
.message-sent {
justify-content: flex-end;
}
.message-received {
justify-content: flex-start;
}
.bubble {
padding: 10px;
display: inline-block;
min-height: auto !important;
max-width: calc(100% - 120px);
}
.bubble-sent {
border-radius: 10px 0;
background-color: var(--uai-app-bubble-sent-background-color);
align-self: flex-end;
}
.bubble-received {
border-radius: 0 10px;
background-color: var(--uai-app-bubble-reveived-background-color);
align-self: flex-start;
}
}
.uai-container-app-input {
text-align: center;
box-sizing: border-box;
.uai-message-container {
border: 1px solid var(--uai-border-color);
border-radius: var(--uai-radius);
margin: 10px;
text-align: center;
display: flex;
align-items: last baseline;
.uai-message-textarea {
width: calc(100% - 40px);
font-size: 16px;
padding: 5px;
margin: 5px;
outline: none;
min-height: 20px;
max-height: 200px;
height: auto;
overflow: auto;
box-sizing: border-box;
scrollbar-width: none;
border: none;
resize: none;
color: var(--uai-text-color);
::-webkit-scrollbar {
display: none;
}
}
.uai-image-button {
border: none;
margin: 5px 10px;
/* 移除边框 */
background: none;
/* 移除背景 */
padding: 0;
/* 移除内边距 */
cursor: pointer;
/* 鼠标悬停时显示指针 */
}
}
}
}
.uai-loader-placeholder {
width: 50px;
height: 50px;
background: #eee;
display: flex;
svg {
margin: auto;
fill: #ccc;
}
@keyframes rotate {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
}
.uai-resize-wrapper {
position: relative;
display: inline-flex;
img {
position: relative;
}
&:hover .uai-resize {
display: inline-block;
}
.uai-resize {
display: none;
position: absolute;
top: -4px;
left: -4px;
border: 2px solid #609eec;
width: calc(100% + 4px);
height: calc(100% + 4px);
div {
position: absolute;
display: flex;
width: 20px;
height: 20px;
z-index: 1;
}
div::after {
content: "";
display: block;
margin: auto;
width: 10px;
height: 10px;
border: solid 2px #609eec;
background: #fff;
}
.uai-resize-btn-top-left {
left: -10px;
top: -10px;
cursor: nwse-resize;
}
.uai-resize-btn-top-center {
left: calc(50% - 10px);
top: -10px;
cursor: n-resize;
}
.uai-resize-btn-top-right {
right: -10px;
top: -10px;
cursor: nesw-resize;
}
.uai-resize-btn-left-center {
left: -10px;
top: calc(50% - 10px);
cursor: w-resize;
}
.uai-resize-btn-right-center {
right: -10px;
top: calc(50% - 10px);
cursor: e-resize;
}
.uai-resize-btn-bottom-left {
left: -10px;
bottom: -10px;
cursor: nesw-resize;
}
.uai-resize-btn-bottom-center {
left: calc(50% - 10px);
bottom: -10px;
cursor: s-resize;
}
.uai-resize-btn-bottom-right {
right: -10px;
bottom: -10px;
cursor: nwse-resize;
}
}
}
.uai-bubble-menu-container {
display: flex;
align-items: center;
flex: 1;
// width: 100%;
border: solid 1px var(--uai-border-color);
background-color: #fff;
box-shadow: 2px 2px 2px 2px rgba(150, 150, 150, 0.1);
padding: 5px;
select {
border: none;
outline: none;
}
.uai-bubble-menu-virtual-group {
display: flex;
align-items: center;
flex-shrink: 0;
&:empty {
display: none;
}
&::before {
content: '';
display: block;
height: 18px;
width: 1px;
background-color: var(--uai-border-color-light);
margin: 0 10px;
}
&:first-child::before {
display: none;
}
}
}
.uai-main {
flex: 1;
background-color: var(--uai-container-background);
overflow: auto;
.uai-scrollbar();
&.preview-mode {
&.laser-pointer {
.uai-main {
cursor: url('@/assets/images/laser-pointer.svg'), auto;
}
}
}
.uai-page-container {
display: flex;
position: relative;
}
.uai-zoomable-container {
flex: 1;
padding: 20px 20px;
scroll-behavior: smooth;
.uai-zoomable-content {
margin: 0 auto;
width: 21cm;
min-height: 29.7cm;
position: relative;
background-color: white;
padding: 30px 50px;
.uai-page-content {
transform-origin: 0 0;
box-sizing: border-box;
display: flex;
position: relative;
overflow: visible !important;
[contenteditable] {
outline: none;
}
}
}
}
}
.uai-footer {
.uai-status-bar {
padding: 5px;
display: flex;
justify-content: space-between;
font-size: var(--uai-font-size-small);
border-top: solid 1px var(--uai-border-color);
@media screen and (max-width: 640px) {
overflow-x: auto;
&::-webkit-scrollbar {
display: none;
}
}
.uai-status-bar-split {
height: 18px;
width: 1px;
background-color: var(--uai-border-color);
margin-left: 13px;
}
.uai-status-bar-button {
--td-comp-size-xs: 18px;
--td-comp-paddingLR-l: 8px;
--td-radius-default: 2px;
font-size: 14px;
margin: 0 4px;
color: var(--uai-text-color);
cursor: pointer;
&:not(.auto-width) {
width: var(--td-comp-size-xs);
}
&.auto-width {
font-size: var(--uai-font-size-small);
padding-left: 6px;
padding-right: 6px;
}
&.word-count {
padding-left: 2px;
padding-right: 0;
:deep(.uai-button__text) {
display: flex;
align-items: center;
.uai-icon {
margin-left: 3px;
transform: rotate(180deg);
}
}
}
:deep(.uai-button__text) {
padding: 0 5px;
}
&.active {
background-color: var(--uai-button-hover-background);
border-color: var(--uai-button-hover-background);
color: var(--uai-primary-color);
}
}
&-left {
display: flex;
align-items: center;
}
&-right {
display: flex;
align-items: center;
padding-right: 15px;
.uai-zoom-level-bar {
width: 240px;
display: flex;
--td-comp-size-xxxs: 8px;
--td-size-2: 3px;
--td-brand-color: var(--uai-text-color);
.uai-zoom-level-slider {
:deep(.uai-slider__button) {
background: var(--td-brand-color);
border: none;
box-shadow: none;
}
:deep(.uai-slider__track) {
background: none;
}
}
}
.uai-lang-button {
:deep(.uai-button__text) {
display: flex;
align-items: center;
.uai-icon {
font-size: 16px;
margin-right: 3px;
}
}
}
@media screen and (max-width: 720px) {
.uai-zoom-level-bar {
width: auto;
}
.uai-zoom-level-slider,
.uai-lang-button {
display: none !important;
}
}
}
}
}
.uai-source-editor {
width: 100%;
height: 100%;
background-color: #609eec;
}
//******************************/
@media print {
overflow: auto;
height: auto;
}
&.is-empty {
.uai-page-node-content> :first-child {
&::after {
content: var(--uai-editor-placeholder);
color: var(--uai-content-placeholder-color);
position: absolute;
top: 0;
cursor: text;
}
}
}
&.show-line-number {
.uai-page-node-content {
>*:not([data-line-number='false']):not(div):not(.uai-node-focused) {
position: relative;
&::before {
position: absolute;
content: counter(title) '.';
counter-increment: title;
right: 100%;
margin-right: 20px;
color: var(--uai-content-line-number-color);
font-family: var(--uai-font-family);
font-size: 14px;
font-weight: 400;
}
}
}
}
&.format-painter {
cursor: url('@/assets/images/format-painter.svg'), text;
}
.uai-editor {
height: 100%;
width: 100%;
outline: none;
counter-reset: title;
color: var(--uai-content-text-color);
@media print {
height: auto;
width: auto;
}
.uai-page-node-content {
>* {
position: relative;
z-index: 1;
+* {
margin-top: var(--uai-content-node-bottom);
}
&.uai-node-focused {
&:not(hr):not(.tableWrapper):not(table):before {
content: '';
display: block;
position: absolute;
left: -8px;
top: -5px;
right: -8px;
bottom: -5px;
border-radius: var(--uai-radius);
background: var(--uai-content-node-selected-background);
pointer-events: none;
z-index: -1;
}
&:is(div):not(.uai-node-view-empty) {
&::before {
top: -8px !important;
bottom: -8px !important;
}
}
&.uai-node-view-empty {
&::before {
top: 3px !important;
bottom: auto;
height: 2px;
left: 0 !important;
right: 0 !important;
background: var(--uai-primary-color) !important;
}
}
&.uai-page-divider {
border-radius: var(--uai-radius);
background: var(--uai-content-node-selected-background);
margin-left: -8px;
margin-right: -8px;
padding-left: 8px;
padding-right: 8px;
}
.uai-select-outline {
outline: solid 1px var(--uai-primary-color);
}
}
}
}
.is-editor-empty {
&:first-child {
>* {
display: none;
}
&::before {
color: var(--uai-content-placeholder-color);
content: attr(data-placeholder);
float: left;
height: 0;
pointer-events: none;
}
}
}
}
.uai-text-selection {
background-color: var(--uai-text-selection-background);
}
::selection {
background-color: var(--uai-text-selection-background);
}
a {
color: var(--uai-primary-color);
text-decoration: none;
cursor: pointer;
&:hover {
opacity: 0.8;
text-decoration: underline;
}
}
code {
color: var(--uai-content-code-color);
background-color: var(--uai-content-code-background);
font-family: var(--uai-content-code-family);
border-radius: 3px;
padding: 0.1em 0.4em;
margin-left: 0.25em;
margin-right: 0.25em;
}
ul,
ol {
list-style-position: inside;
padding-left: 0;
li {
padding: 0.25em 0 0.25em 3px;
p {
display: inline;
}
}
}
ol li p {
margin-left: 0.25em;
word-break: break-all;
}
blockquote {
border-left: 3px solid var(--uai-primary-color);
padding: 0.5em 1em;
color: #777;
background-color: rgba(0, 0, 0, 0.03);
}
table {
border-collapse: collapse;
table-layout: fixed;
width: 100%;
margin: 0;
overflow: hidden;
page-break-inside: auto;
tr {
page-break-inside: avoid;
page-break-after: auto;
}
// thead {
// display: table-header-group;
// }
td,
th {
min-width: 1em;
border: 1px solid var(--uai-content-table-border-color);
padding: 3px 5px;
vertical-align: middle;
box-sizing: border-box;
position: relative;
>* {
margin-bottom: 0;
}
&[data-align='left-top'] {
vertical-align: top;
text-align: left;
}
&[data-align='center-top'] {
vertical-align: top;
text-align: center;
}
&[data-align='right-top'] {
vertical-align: middle;
text-align: right;
}
&[data-align='justify-top'] {
vertical-align: middle;
text-align: justify;
}
&[data-align='left-middle'] {
vertical-align: middle;
text-align: left;
}
&[data-align='center-middle'] {
vertical-align: middle;
text-align: center;
}
&[data-align='right-middle'] {
vertical-align: middle;
text-align: right;
}
&[data-align='justify-middle'] {
vertical-align: middle;
text-align: justify;
}
&[data-align='left-bottom'] {
vertical-align: bottom;
text-align: left;
}
&[data-align='center-bottom'] {
vertical-align: middle;
text-align: center;
}
&[data-align='right-bottom'] {
vertical-align: bottom;
text-align: right;
}
&[data-align='justify-bottom'] {
vertical-align: bottom;
text-align: justify;
}
}
th {
font-weight: bold;
text-align: left;
background-color: var(--uai-content-table-thead-background);
}
.selectedCell:after {
z-index: 2;
position: absolute;
content: '';
left: 0;
right: 0;
top: 0;
bottom: 0;
background: var(--uai-content-table-selected-background);
pointer-events: none;
}
.column-resize-handle {
position: absolute;
right: -1px;
top: 0;
bottom: -1px;
width: 3px;
background-color: var(--uai-primary-color);
pointer-events: none;
}
p {
margin: 0;
}
}
.indent-1 {
text-indent: 2em;
}
.indent-2 {
text-indent: 4em;
}
.indent-3 {
text-indent: 6em;
}
.indent-4 {
text-indent: 8em;
}
.indent-5 {
text-indent: 10em;
}
.indent-6 {
text-indent: 12em;
}
.indent-7 {
text-indent: 14em;
}
.indent-8 {
text-indent: 16em;
}
.tableWrapper {
max-width: 100%;
overflow-x: auto;
}
.resize-cursor {
cursor: col-resize;
}
.uai-task-list {
list-style: none;
padding: 0;
li {
display: flex;
align-items: first baseline;
&[data-checked='true'] {
p {
opacity: 0.5;
text-decoration: line-through;
&:has([style]) {
text-decoration: inherit;
}
* {
text-decoration: line-through;
}
}
}
>label {
flex: 0 0 auto;
margin-right: 10px;
user-select: none;
input {
transform: translateY(0.2em);
}
}
>div {
flex: 1 1 auto;
}
}
input[type='checkbox'] {
cursor: pointer;
font-family: unset;
color: var(--uai-primary-color);
border: 1px solid var(--uai-primary-color);
border-radius: 0;
margin: 0.25em;
width: 16px;
height: 16px;
padding: 0.1em 0.4em;
background: white;
opacity: 0.5;
}
}
.uai-search-result {
background-color: var(--uai-content-search-result-background);
&-current {
background: var(--uai-content-search-result-current-background);
}
}
.uai-page-divider {
.uai-page-divider();
}
.uai-node-view {
display: flex;
position: relative;
max-height: 100%;
.uai-node-container {
max-height: 100%;
}
.uai-hover-shadow:hover {
box-shadow: var(--uai-shadow);
}
.uai-node-toc {
padding: 35px 20px 20px;
position: relative;
outline: solid 1px var(--uai-content-node-border);
border-radius: var(--uai-content-node-radius);
width: 100%;
&-head {
font-weight: 500;
margin: 0;
position: absolute;
top: 0;
left: 1rem;
padding: 0.25rem 0.5rem;
border-bottom-left-radius: 3px;
border-bottom-right-radius: 3px;
font-size: 12px;
background: rgba(black, 0.05);
}
&-body {
list-style: none;
padding: 0;
}
&-empty {
color: var(--uai-text-color-light);
font-size: 12px;
margin-top: 5px;
}
&-item {
font-weight: bold;
font-size: 14px;
&.level-2 {
text-indent: 20px;
}
&.level-3 {
text-indent: 40px;
}
&.level-4 {
text-indent: 60px;
}
&.level-5 {
text-indent: 80px;
}
&.level-6 {
text-indent: 100px;
}
}
}
}
// 插件样式
.ProseMirror-gapcursor {
height: 24px;
display: flex;
&:after {
width: 1px;
height: 16px;
margin-top: 8px;
background-color: var(--uai-color-black);
}
}
.Tiptap-mathematics {
&-editor {
background: var(--uai-content-node-selected-background);
font-family: monospace;
padding: 0.2em 0.5em;
// outline: solid 1px var(--uai-primary-color);
}
&-render {
cursor: pointer;
padding: 0 0.25em;
transition: background 0.2s;
&:hover {
background: var(--uai-content-node-selected-background);
}
}
&-editor,
&-render {
border-radius: 0.2em;
display: inline-block;
}
}
.uai-color-highlighter {
white-space: nowrap;
&::before {
background-color: var(--color);
border: 1px solid rgba(128, 128, 128, 0.3);
border-radius: 2px;
content: ' ';
display: inline-block;
height: 1em;
margin-bottom: 0.15em;
margin-right: 0.1em;
vertical-align: middle;
width: 1em;
}
}
.uai-table-container {
background-color: #fff;
border: 1px solid var(--uai-border-color);
padding: 10px 5px;
.uai-table-grid {
.row {
display: flex;
gap: 4px;
margin: 0px 5px;
}
.cell {
width: 16px;
height: 16px;
border: 1px solid var(--uai-border-color);
cursor: pointer;
margin-bottom: 4px;
padding: 0;
&.selected {
border-color: var(--uai-primary-color);
background-color: rgba(0, 0, 0, 0.03);
}
}
}
.uai-table-custom {
:deep(.uai-input-number) {
width: 196px;
display: block;
margin-bottom: 8px;
}
&-title {
color: var(--uai-text-color-light);
font-size: 12px;
margin: 8px 5px 5px;
}
&-input {
border: 1px solid var(--uai-border-color);
border-radius: var(--uai-radius);
font-size: 14px;
margin: 5px;
padding: 1px 0 1px 5px;
&:hover {
border-color: var(--uai-primary-color);
}
input {
font-size: 16px;
border: none;
outline: none;
width: 147px;
text-align: right;
}
}
.uai-table-custom-header {
margin: 5px;
display: flex;
}
.uai-table-insert-button {
margin: 5px;
padding: 5px;
text-align: center;
cursor: pointer;
color: var(--uai-primary-color);
border: 1px solid var(--uai-primary-color);
border-radius: var(--uai-radius);
}
}
}
}
.uai-print-iframe {
visibility: hidden;
position: fixed;
width: 0;
height: 0;
border: none;
overflow: auto;
scrollbar-width: 0;
}
.uai-word-count {
margin-right: 0.25em;
&-detail {
padding: 10px 0 8px;
width: 160px;
font-size: 12px;
color: var(--uai-text-color-light);
li {
list-style: none;
cursor: default;
padding: 0 12px;
display: flex;
justify-content: space-between;
line-height: 28px;
color: var(--uai-text-color);
&:hover {
background-color: var(--td-bg-color-container-hover);
}
}
}
&-title {
padding: 0 12px;
margin-bottom: 3px;
}
}
.uai-diagrams-container {
height: 100%;
.uai-diagrams-iframe {
width: 100%;
height: 100%;
border: none;
display: block;
}
}
.uai-background-container {
display: flex;
flex-wrap: wrap;
background-color: var(--uai-color-white);
border: 1px solid var(--uai-border-color);
padding: 10px;
width: 254px;
justify-content: space-between;
gap: 9px;
user-select: none;
.uai-background-item {
width: 70px;
height: 90px;
border: solid 1px rgba(0, 0, 0, 0.1);
border-radius: var(--uai-radius);
display: flex;
align-items: center;
justify-content: center;
font-size: 10px;
color: var(--uai-text-color-light);
text-align: center;
cursor: pointer;
white-space: pre;
line-height: 1.5;
&:hover {
border-color: rgba(0, 0, 0, 0.2);
transform: scale(1.02);
}
&.active {
color: var(--uai-primary-color);
border-color: var(--uai-primary-color);
}
}
}
.uai-background-more {
display: flex;
justify-content: space-between;
align-items: center;
padding: 5px;
cursor: pointer;
margin-top: 10px;
&:hover,
&.active {
background-color: var(--td-bg-color-container-hover);
border-radius: var(--uai-radius);
}
&-menu {
display: flex;
align-items: center;
font-size: 12px;
cursor: pointer;
.uai-icon {
margin-right: 5px;
font-size: 16px;
}
}
&-arrow {
.uai-icon {
transform: rotate(-90deg);
}
}
}
.uai-watermark-container {
background-color: var(--uai-color-white);
border: 1px solid var(--uai-border-color);
padding: 10px;
.uai-watermark-toolbar {
display: flex;
align-items: center;
margin-bottom: 10px;
}
.uai-watermark-type {
display: flex;
&-title {
color: var(--uai-text-color-light);
margin: 10px 0;
font-size: 12px;
}
.item {
cursor: pointer;
&:first-child {
margin-right: 10px;
}
.bg {
width: 70px;
height: 90px;
border: solid 1px var(--uai-border-color);
position: relative;
border-radius: var(--uai-radius);
background-size: cover;
background-position: center center;
background-repeat: no-repeat;
}
span {
display: block;
background-color: rgba(0, 0, 0, 0.05);
border-radius: 12px;
padding: 0 10px;
text-align: center;
margin-top: 8px;
font-size: 12px;
}
&:hover,
&.active {
.bg {
border-color: var(--uai-primary-color);
}
span {
color: var(--uai-primary-color);
}
}
&.compact .bg {
background-image: url('../assets/images/watermark-compact.png');
}
&.spacious .bg {
background-image: url('../assets/images/watermark-spacious.png');
}
}
}
.uai-clear-button {
margin-top: 10px;
padding: 5px;
text-align: center;
cursor: pointer;
color: var(--uai-primary-color);
border: 1px solid var(--uai-primary-color);
border-radius: var(--uai-radius);
}
}
.uai-watermark {
top: 0;
left: 0;
width: 100%;
height: 100%;
color: rgba(100, 100, 100, 0.5); // 水印颜色和透明度
font-size: 20px;
font-family: Arial;
display: flex;
justify-content: center;
align-items: center;
transform: rotate(-30deg); // 旋转水印
}
.uai-editor-page-computed {
width: 100%;
height: 0;
position: absolute;
border: none;
}
.uai-node-view {
.uai-node-file {
display: inline-flex;
align-items: center;
padding: 12px;
outline: solid 1px var(--uai-content-node-border);
overflow: hidden;
background-color: var(--uai-color-white);
border-radius: var(--uai-content-node-radius);
.uai-file-icon {
width: 32px;
height: 32px;
margin-right: 8px;
flex: 1;
.icon-file {
width: 32px;
display: block;
}
}
.uai-file-info {
width: 240px;
.uai-file-name {
font-size: 12px;
font-weight: 500;
line-height: 1.2;
text-overflow: ellipsis;
overflow: hidden;
word-break: break-all;
white-space: nowrap;
width: 100%;
padding-right: 10px;
box-sizing: border-box;
}
.uai-file-meta {
font-size: 12px;
color: var(--uai-text-color-light);
line-height: 1;
margin-top: 6px;
}
}
.uai-file-action {
flex: 1;
display: flex;
align-items: center;
color: var(--uai-text-color-light);
gap: 5px;
.uai-action-item {
font-size: 18px;
display: flex;
align-items: center;
justify-content: center;
height: 32px;
width: 32px;
background-color: var(--uai-color-white);
box-sizing: border-box;
cursor: pointer;
border-radius: 50%;
color: var(--uai-text-color-light);
&:hover {
border: solid 1px var(--uai-primary-color);
color: var(--uai-primary-color);
}
.loading {
animation: turn 1s linear infinite;
}
}
}
}
}
.uai-file-preview-modal {
padding: 0 !important;
&-body {
iframe {
display: block;
width: 100%;
height: calc(100vh - 100px);
border: solid 1px var(--uai-border-color-light);
box-sizing: border-box;
}
}
}